10910 lines
3.6 MiB
10910 lines
3.6 MiB
/**
|
||
* @pattern-x/gemini-viewer-threejs v0.2.23 build Sun Mar 05 2023
|
||
* https://pattern-x.github.io/gemini-viewer-examples/
|
||
* Copyright 2023 gemini
|
||
* @license UNLICENSED
|
||
*/
|
||
var nNe=Object.create;var e1=Object.defineProperty,sNe=Object.defineProperties,aNe=Object.getOwnPropertyDescriptor,oNe=Object.getOwnPropertyDescriptors,lNe=Object.getOwnPropertyNames,_7=Object.getOwnPropertySymbols,R7=Object.getPrototypeOf,M7=Object.prototype.hasOwnProperty,cNe=Object.prototype.propertyIsEnumerable,uNe=Reflect.get;var Gh=Math.pow,w7=(t,r,e)=>r in t?e1(t,r,{enumerable:!0,configurable:!0,writable:!0,value:e}):t[r]=e,Ur=(t,r)=>{for(var e in r||(r={}))M7.call(r,e)&&w7(t,e,r[e]);if(_7)for(var e of _7(r))cNe.call(r,e)&&w7(t,e,r[e]);return t},Mn=(t,r)=>sNe(t,oNe(r));var zP=(t=>typeof require!="undefined"?require:typeof Proxy!="undefined"?new Proxy(t,{get:(r,e)=>(typeof require!="undefined"?require:r)[e]}):t)(function(t){if(typeof require!="undefined")return require.apply(this,arguments);throw new Error('Dynamic require of "'+t+'" is not supported')});var hNe=(t,r)=>()=>(t&&(r=t(t=0)),r);var V=(t,r)=>()=>(r||t((r={exports:{}}).exports,r),r.exports),z_=(t,r)=>{for(var e in r)e1(t,e,{get:r[e],enumerable:!0})},D7=(t,r,e,i)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of lNe(r))!M7.call(t,n)&&n!==e&&e1(t,n,{get:()=>r[n],enumerable:!(i=aNe(r,n))||i.enumerable});return t};var Un=(t,r,e)=>(e=t!=null?nNe(R7(t)):{},D7(r||!t||!t.__esModule?e1(e,"default",{value:t,enumerable:!0}):e,t)),pNe=t=>D7(e1({},"__esModule",{value:!0}),t);var C7=(t,r,e)=>uNe(R7(t),e,r);var ot=(t,r,e)=>new Promise((i,n)=>{var s=l=>{try{o(e.next(l))}catch(c){n(c)}},a=l=>{try{o(e.throw(l))}catch(c){n(c)}},o=l=>l.done?i(l.value):Promise.resolve(l.value).then(s,a);o((e=e.apply(t,r)).next())});var P7={};z_(P7,{default:()=>TNe});function j_(t){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?j_=function(r){return typeof r}:j_=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},j_(t)}function fNe(t,r){if(!(t instanceof r))throw new TypeError("Cannot call a class as a function")}function A7(t,r){for(var e=0;e<r.length;e++){var i=r[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function mNe(t,r,e){return r&&A7(t.prototype,r),e&&A7(t,e),t}function TNe(t,r,e){var i=function(o){do{if(r(o))return o;o=o.replace(/-?[^-]*$/,"")}while(o);return null},n=function(o){for(var l=O7(o),c=0;c<l.length;++c){var u=i(l[c]);if(u)return u}return i(vNe())},s=function(){function a(o){var l=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};fNe(this,a),this._locale=n(o),this._select=r(this._locale),this._type=yNe(l.type),this._nf=new t("en",l)}return mNe(a,[{key:"resolvedOptions",value:function(){var l=this._nf.resolvedOptions(),c=l.minimumIntegerDigits,u=l.minimumFractionDigits,h=l.maximumFractionDigits,p=l.minimumSignificantDigits,d=l.maximumSignificantDigits,f={locale:this._locale,minimumIntegerDigits:c,minimumFractionDigits:u,maximumFractionDigits:h,pluralCategories:e(this._locale,this._type==="ordinal"),type:this._type};return typeof p=="number"&&(f.minimumSignificantDigits=p,f.maximumSignificantDigits=d),f}},{key:"select",value:function(l){if(!(this instanceof a))throw new TypeError("select() called on incompatible ".concat(this));if(typeof l!="number"&&(l=Number(l)),!isFinite(l))return"other";var c=this._nf.format(Math.abs(l));return this._select(c,this._type==="ordinal")}}],[{key:"supportedLocalesOf",value:function(l){return O7(l).filter(i)}}]),a}();return Object.defineProperty(s,"prototype",{writable:!1}),s}var gNe,O7,vNe,yNe,N7=hNe(()=>{gNe=function(r){return r.split("-").every(function(e){return/[a-z0-9]+/i.test(e)})},O7=function(r){if(!r)return[];Array.isArray(r)||(r=[r]);for(var e={},i=0;i<r.length;++i){var n=r[i];if(n&&j_(n)==="object"&&(n=String(n)),typeof n!="string"){var s="Locales should be strings, ".concat(JSON.stringify(n)," isn't.");throw new TypeError(s)}if(n[0]!=="*"){if(!gNe(n)){var a=JSON.stringify(n),o="The locale ".concat(a," is not a structurally valid BCP 47 language tag.");throw new RangeError(o)}e[n]=!0}}return Object.keys(e)},vNe=function(){return typeof navigator!="undefined"&&navigator&&(navigator.userLanguage||navigator.language)||"en-US"},yNe=function(r){if(!r)return"cardinal";if(r==="cardinal"||r==="ordinal")return r;throw new RangeError("Not a valid plural type: "+JSON.stringify(r))}});var H7=V((iLt,F7)=>{"use strict";function ENe(t,r){if(!(t instanceof r))throw new TypeError("Cannot call a class as a function")}function L7(t,r){for(var e=0;e<r.length;e++){var i=r[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function bNe(t,r,e){return r&&L7(t.prototype,r),e&&L7(t,e),t}var xNe=function(){function t(r,e){var i=e.minimumIntegerDigits,n=e.minimumFractionDigits,s=e.maximumFractionDigits,a=e.minimumSignificantDigits,o=e.maximumSignificantDigits;ENe(this,t),this._minID=typeof i=="number"?i:1,this._minFD=typeof n=="number"?n:0,this._maxFD=typeof s=="number"?s:Math.max(this._minFD,3),(typeof a=="number"||typeof o=="number")&&(this._minSD=typeof a=="number"?a:1,this._maxSD=typeof o=="number"?o:21)}return bNe(t,[{key:"resolvedOptions",value:function(){var e={minimumIntegerDigits:this._minID,minimumFractionDigits:this._minFD,maximumFractionDigits:this._maxFD};return typeof this._minSD=="number"&&(e.minimumSignificantDigits=this._minSD,e.maximumSignificantDigits=this._maxSD),e}},{key:"format",value:function(e){if(this._minSD){for(var i=String(e),n=0,s=0;s<i.length;++s){var a=i[s];a>="0"&&a<="9"&&++n}return n<this._minSD?e.toPrecision(this._minSD):n>this._maxSD?e.toPrecision(this._maxSD):i}return this._minFD>0?e.toFixed(this._minFD):this._maxFD===0?e.toFixed(0):String(e)}}]),t}();F7.exports=xNe});var W7=V((nLt,j7)=>{"use strict";var INe=(N7(),pNe(P7)),SNe=H7();function U7(t){return t&&typeof t=="object"&&"default"in t?t:{default:t}}var _Ne=U7(INe),wNe=U7(SNe);function W_(t){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?W_=function(r){return typeof r}:W_=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},W_(t)}var B7=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{};function k7(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var jP={exports:{}};(function(t,r){var e=function(c,u){return u?"other":c==1?"one":"other"},i=function(c,u){return u?"other":c==0||c==1?"one":"other"},n=function(c,u){return u?"other":c>=0&&c<=1?"one":"other"},s=function(c,u){var h=String(c).split("."),p=!h[1];return u?"other":c==1&&p?"one":"other"},a=function(c,u){return"other"},o=function(c,u){return u?"other":c==1?"one":c==2?"two":"other"};(function(l,c){Object.defineProperty(c,"__esModule",{value:!0}),t.exports=c})(B7,{_in:a,af:e,ak:i,am:n,an:e,ar:function(c,u){var h=String(c).split("."),p=Number(h[0])==c,d=p&&h[0].slice(-2);return u?"other":c==0?"zero":c==1?"one":c==2?"two":d>=3&&d<=10?"few":d>=11&&d<=99?"many":"other"},ars:function(c,u){var h=String(c).split("."),p=Number(h[0])==c,d=p&&h[0].slice(-2);return u?"other":c==0?"zero":c==1?"one":c==2?"two":d>=3&&d<=10?"few":d>=11&&d<=99?"many":"other"},as:function(c,u){return u?c==1||c==5||c==7||c==8||c==9||c==10?"one":c==2||c==3?"two":c==4?"few":c==6?"many":"other":c>=0&&c<=1?"one":"other"},asa:e,ast:s,az:function(c,u){var h=String(c).split("."),p=h[0],d=p.slice(-1),f=p.slice(-2),m=p.slice(-3);return u?d==1||d==2||d==5||d==7||d==8||f==20||f==50||f==70||f==80?"one":d==3||d==4||m==100||m==200||m==300||m==400||m==500||m==600||m==700||m==800||m==900?"few":p==0||d==6||f==40||f==60||f==90?"many":"other":c==1?"one":"other"},be:function(c,u){var h=String(c).split("."),p=Number(h[0])==c,d=p&&h[0].slice(-1),f=p&&h[0].slice(-2);return u?(d==2||d==3)&&f!=12&&f!=13?"few":"other":d==1&&f!=11?"one":d>=2&&d<=4&&(f<12||f>14)?"few":p&&d==0||d>=5&&d<=9||f>=11&&f<=14?"many":"other"},bem:e,bez:e,bg:e,bho:i,bm:a,bn:function(c,u){return u?c==1||c==5||c==7||c==8||c==9||c==10?"one":c==2||c==3?"two":c==4?"few":c==6?"many":"other":c>=0&&c<=1?"one":"other"},bo:a,br:function(c,u){var h=String(c).split("."),p=Number(h[0])==c,d=p&&h[0].slice(-1),f=p&&h[0].slice(-2),m=p&&h[0].slice(-6);return u?"other":d==1&&f!=11&&f!=71&&f!=91?"one":d==2&&f!=12&&f!=72&&f!=92?"two":(d==3||d==4||d==9)&&(f<10||f>19)&&(f<70||f>79)&&(f<90||f>99)?"few":c!=0&&p&&m==0?"many":"other"},brx:e,bs:function(c,u){var h=String(c).split("."),p=h[0],d=h[1]||"",f=!h[1],m=p.slice(-1),g=p.slice(-2),y=d.slice(-1),E=d.slice(-2);return u?"other":f&&m==1&&g!=11||y==1&&E!=11?"one":f&&m>=2&&m<=4&&(g<12||g>14)||y>=2&&y<=4&&(E<12||E>14)?"few":"other"},ca:function(c,u){var h=String(c).split("."),p=!h[1];return u?c==1||c==3?"one":c==2?"two":c==4?"few":"other":c==1&&p?"one":"other"},ce:e,ceb:function(c,u){var h=String(c).split("."),p=h[0],d=h[1]||"",f=!h[1],m=p.slice(-1),g=d.slice(-1);return u?"other":f&&(p==1||p==2||p==3)||f&&m!=4&&m!=6&&m!=9||!f&&g!=4&&g!=6&&g!=9?"one":"other"},cgg:e,chr:e,ckb:e,cs:function(c,u){var h=String(c).split("."),p=h[0],d=!h[1];return u?"other":c==1&&d?"one":p>=2&&p<=4&&d?"few":d?"other":"many"},cy:function(c,u){return u?c==0||c==7||c==8||c==9?"zero":c==1?"one":c==2?"two":c==3||c==4?"few":c==5||c==6?"many":"other":c==0?"zero":c==1?"one":c==2?"two":c==3?"few":c==6?"many":"other"},da:function(c,u){var h=String(c).split("."),p=h[0],d=Number(h[0])==c;return u?"other":c==1||!d&&(p==0||p==1)?"one":"other"},de:s,doi:n,dsb:function(c,u){var h=String(c).split("."),p=h[0],d=h[1]||"",f=!h[1],m=p.slice(-2),g=d.slice(-2);return u?"other":f&&m==1||g==1?"one":f&&m==2||g==2?"two":f&&(m==3||m==4)||g==3||g==4?"few":"other"},dv:e,dz:a,ee:e,el:e,en:function(c,u){var h=String(c).split("."),p=!h[1],d=Number(h[0])==c,f=d&&h[0].slice(-1),m=d&&h[0].slice(-2);return u?f==1&&m!=11?"one":f==2&&m!=12?"two":f==3&&m!=13?"few":"other":c==1&&p?"one":"other"},eo:e,es:e,et:s,eu:e,fa:n,ff:function(c,u){return u?"other":c>=0&&c<2?"one":"other"},fi:s,fil:function(c,u){var h=String(c).split("."),p=h[0],d=h[1]||"",f=!h[1],m=p.slice(-1),g=d.slice(-1);return u?c==1?"one":"other":f&&(p==1||p==2||p==3)||f&&m!=4&&m!=6&&m!=9||!f&&g!=4&&g!=6&&g!=9?"one":"other"},fo:e,fr:function(c,u){var h=String(c).split("."),p=h[0],d=!h[1],f=p.slice(-6);return u?c==1?"one":"other":c>=0&&c<2?"one":p!=0&&f==0&&d?"many":"other"},fur:e,fy:s,ga:function(c,u){var h=String(c).split("."),p=Number(h[0])==c;return u?c==1?"one":"other":c==1?"one":c==2?"two":p&&c>=3&&c<=6?"few":p&&c>=7&&c<=10?"many":"other"},gd:function(c,u){var h=String(c).split("."),p=Number(h[0])==c;return u?c==1||c==11?"one":c==2||c==12?"two":c==3||c==13?"few":"other":c==1||c==11?"one":c==2||c==12?"two":p&&c>=3&&c<=10||p&&c>=13&&c<=19?"few":"other"},gl:s,gsw:e,gu:function(c,u){return u?c==1?"one":c==2||c==3?"two":c==4?"few":c==6?"many":"other":c>=0&&c<=1?"one":"other"},guw:i,gv:function(c,u){var h=String(c).split("."),p=h[0],d=!h[1],f=p.slice(-1),m=p.slice(-2);return u?"other":d&&f==1?"one":d&&f==2?"two":d&&(m==0||m==20||m==40||m==60||m==80)?"few":d?"other":"many"},ha:e,haw:e,he:function(c,u){var h=String(c).split("."),p=h[0],d=!h[1],f=Number(h[0])==c,m=f&&h[0].slice(-1);return u?"other":c==1&&d?"one":p==2&&d?"two":d&&(c<0||c>10)&&f&&m==0?"many":"other"},hi:function(c,u){return u?c==1?"one":c==2||c==3?"two":c==4?"few":c==6?"many":"other":c>=0&&c<=1?"one":"other"},hr:function(c,u){var h=String(c).split("."),p=h[0],d=h[1]||"",f=!h[1],m=p.slice(-1),g=p.slice(-2),y=d.slice(-1),E=d.slice(-2);return u?"other":f&&m==1&&g!=11||y==1&&E!=11?"one":f&&m>=2&&m<=4&&(g<12||g>14)||y>=2&&y<=4&&(E<12||E>14)?"few":"other"},hsb:function(c,u){var h=String(c).split("."),p=h[0],d=h[1]||"",f=!h[1],m=p.slice(-2),g=d.slice(-2);return u?"other":f&&m==1||g==1?"one":f&&m==2||g==2?"two":f&&(m==3||m==4)||g==3||g==4?"few":"other"},hu:function(c,u){return u?c==1||c==5?"one":"other":c==1?"one":"other"},hy:function(c,u){return u?c==1?"one":"other":c>=0&&c<2?"one":"other"},ia:s,id:a,ig:a,ii:a,io:s,is:function(c,u){var h=String(c).split("."),p=h[0],d=Number(h[0])==c,f=p.slice(-1),m=p.slice(-2);return u?"other":d&&f==1&&m!=11||!d?"one":"other"},it:function(c,u){var h=String(c).split("."),p=!h[1];return u?c==11||c==8||c==80||c==800?"many":"other":c==1&&p?"one":"other"},iu:o,iw:function(c,u){var h=String(c).split("."),p=h[0],d=!h[1],f=Number(h[0])==c,m=f&&h[0].slice(-1);return u?"other":c==1&&d?"one":p==2&&d?"two":d&&(c<0||c>10)&&f&&m==0?"many":"other"},ja:a,jbo:a,jgo:e,ji:s,jmc:e,jv:a,jw:a,ka:function(c,u){var h=String(c).split("."),p=h[0],d=p.slice(-2);return u?p==1?"one":p==0||d>=2&&d<=20||d==40||d==60||d==80?"many":"other":c==1?"one":"other"},kab:function(c,u){return u?"other":c>=0&&c<2?"one":"other"},kaj:e,kcg:e,kde:a,kea:a,kk:function(c,u){var h=String(c).split("."),p=Number(h[0])==c,d=p&&h[0].slice(-1);return u?d==6||d==9||p&&d==0&&c!=0?"many":"other":c==1?"one":"other"},kkj:e,kl:e,km:a,kn:n,ko:a,ks:e,ksb:e,ksh:function(c,u){return u?"other":c==0?"zero":c==1?"one":"other"},ku:e,kw:function(c,u){var h=String(c).split("."),p=Number(h[0])==c,d=p&&h[0].slice(-2),f=p&&h[0].slice(-3),m=p&&h[0].slice(-5),g=p&&h[0].slice(-6);return u?p&&c>=1&&c<=4||d>=1&&d<=4||d>=21&&d<=24||d>=41&&d<=44||d>=61&&d<=64||d>=81&&d<=84?"one":c==5||d==5?"many":"other":c==0?"zero":c==1?"one":d==2||d==22||d==42||d==62||d==82||p&&f==0&&(m>=1e3&&m<=2e4||m==4e4||m==6e4||m==8e4)||c!=0&&g==1e5?"two":d==3||d==23||d==43||d==63||d==83?"few":c!=1&&(d==1||d==21||d==41||d==61||d==81)?"many":"other"},ky:e,lag:function(c,u){var h=String(c).split("."),p=h[0];return u?"other":c==0?"zero":(p==0||p==1)&&c!=0?"one":"other"},lb:e,lg:e,lij:function(c,u){var h=String(c).split("."),p=!h[1],d=Number(h[0])==c;return u?c==11||c==8||d&&c>=80&&c<=89||d&&c>=800&&c<=899?"many":"other":c==1&&p?"one":"other"},lkt:a,ln:i,lo:function(c,u){return u&&c==1?"one":"other"},lt:function(c,u){var h=String(c).split("."),p=h[1]||"",d=Number(h[0])==c,f=d&&h[0].slice(-1),m=d&&h[0].slice(-2);return u?"other":f==1&&(m<11||m>19)?"one":f>=2&&f<=9&&(m<11||m>19)?"few":p!=0?"many":"other"},lv:function(c,u){var h=String(c).split("."),p=h[1]||"",d=p.length,f=Number(h[0])==c,m=f&&h[0].slice(-1),g=f&&h[0].slice(-2),y=p.slice(-2),E=p.slice(-1);return u?"other":f&&m==0||g>=11&&g<=19||d==2&&y>=11&&y<=19?"zero":m==1&&g!=11||d==2&&E==1&&y!=11||d!=2&&E==1?"one":"other"},mas:e,mg:i,mgo:e,mk:function(c,u){var h=String(c).split("."),p=h[0],d=h[1]||"",f=!h[1],m=p.slice(-1),g=p.slice(-2),y=d.slice(-1),E=d.slice(-2);return u?m==1&&g!=11?"one":m==2&&g!=12?"two":(m==7||m==8)&&g!=17&&g!=18?"many":"other":f&&m==1&&g!=11||y==1&&E!=11?"one":"other"},ml:e,mn:e,mo:function(c,u){var h=String(c).split("."),p=!h[1],d=Number(h[0])==c,f=d&&h[0].slice(-2);return u?c==1?"one":"other":c==1&&p?"one":!p||c==0||f>=2&&f<=19?"few":"other"},mr:function(c,u){return u?c==1?"one":c==2||c==3?"two":c==4?"few":"other":c==1?"one":"other"},ms:function(c,u){return u&&c==1?"one":"other"},mt:function(c,u){var h=String(c).split("."),p=Number(h[0])==c,d=p&&h[0].slice(-2);return u?"other":c==1?"one":c==0||d>=2&&d<=10?"few":d>=11&&d<=19?"many":"other"},my:a,nah:e,naq:o,nb:e,nd:e,ne:function(c,u){var h=String(c).split("."),p=Number(h[0])==c;return u?p&&c>=1&&c<=4?"one":"other":c==1?"one":"other"},nl:s,nn:e,nnh:e,no:e,nqo:a,nr:e,nso:i,ny:e,nyn:e,om:e,or:function(c,u){var h=String(c).split("."),p=Number(h[0])==c;return u?c==1||c==5||p&&c>=7&&c<=9?"one":c==2||c==3?"two":c==4?"few":c==6?"many":"other":c==1?"one":"other"},os:e,osa:a,pa:i,pap:e,pcm:n,pl:function(c,u){var h=String(c).split("."),p=h[0],d=!h[1],f=p.slice(-1),m=p.slice(-2);return u?"other":c==1&&d?"one":d&&f>=2&&f<=4&&(m<12||m>14)?"few":d&&p!=1&&(f==0||f==1)||d&&f>=5&&f<=9||d&&m>=12&&m<=14?"many":"other"},prg:function(c,u){var h=String(c).split("."),p=h[1]||"",d=p.length,f=Number(h[0])==c,m=f&&h[0].slice(-1),g=f&&h[0].slice(-2),y=p.slice(-2),E=p.slice(-1);return u?"other":f&&m==0||g>=11&&g<=19||d==2&&y>=11&&y<=19?"zero":m==1&&g!=11||d==2&&E==1&&y!=11||d!=2&&E==1?"one":"other"},ps:e,pt:function(c,u){var h=String(c).split("."),p=h[0];return u?"other":p==0||p==1?"one":"other"},pt_PT:s,rm:e,ro:function(c,u){var h=String(c).split("."),p=!h[1],d=Number(h[0])==c,f=d&&h[0].slice(-2);return u?c==1?"one":"other":c==1&&p?"one":!p||c==0||f>=2&&f<=19?"few":"other"},rof:e,root:a,ru:function(c,u){var h=String(c).split("."),p=h[0],d=!h[1],f=p.slice(-1),m=p.slice(-2);return u?"other":d&&f==1&&m!=11?"one":d&&f>=2&&f<=4&&(m<12||m>14)?"few":d&&f==0||d&&f>=5&&f<=9||d&&m>=11&&m<=14?"many":"other"},rwk:e,sah:a,saq:e,sat:o,sc:function(c,u){var h=String(c).split("."),p=!h[1];return u?c==11||c==8||c==80||c==800?"many":"other":c==1&&p?"one":"other"},scn:function(c,u){var h=String(c).split("."),p=!h[1];return u?c==11||c==8||c==80||c==800?"many":"other":c==1&&p?"one":"other"},sd:e,sdh:e,se:o,seh:e,ses:a,sg:a,sh:function(c,u){var h=String(c).split("."),p=h[0],d=h[1]||"",f=!h[1],m=p.slice(-1),g=p.slice(-2),y=d.slice(-1),E=d.slice(-2);return u?"other":f&&m==1&&g!=11||y==1&&E!=11?"one":f&&m>=2&&m<=4&&(g<12||g>14)||y>=2&&y<=4&&(E<12||E>14)?"few":"other"},shi:function(c,u){var h=String(c).split("."),p=Number(h[0])==c;return u?"other":c>=0&&c<=1?"one":p&&c>=2&&c<=10?"few":"other"},si:function(c,u){var h=String(c).split("."),p=h[0],d=h[1]||"";return u?"other":c==0||c==1||p==0&&d==1?"one":"other"},sk:function(c,u){var h=String(c).split("."),p=h[0],d=!h[1];return u?"other":c==1&&d?"one":p>=2&&p<=4&&d?"few":d?"other":"many"},sl:function(c,u){var h=String(c).split("."),p=h[0],d=!h[1],f=p.slice(-2);return u?"other":d&&f==1?"one":d&&f==2?"two":d&&(f==3||f==4)||!d?"few":"other"},sma:o,smi:o,smj:o,smn:o,sms:o,sn:e,so:e,sq:function(c,u){var h=String(c).split("."),p=Number(h[0])==c,d=p&&h[0].slice(-1),f=p&&h[0].slice(-2);return u?c==1?"one":d==4&&f!=14?"many":"other":c==1?"one":"other"},sr:function(c,u){var h=String(c).split("."),p=h[0],d=h[1]||"",f=!h[1],m=p.slice(-1),g=p.slice(-2),y=d.slice(-1),E=d.slice(-2);return u?"other":f&&m==1&&g!=11||y==1&&E!=11?"one":f&&m>=2&&m<=4&&(g<12||g>14)||y>=2&&y<=4&&(E<12||E>14)?"few":"other"},ss:e,ssy:e,st:e,su:a,sv:function(c,u){var h=String(c).split("."),p=!h[1],d=Number(h[0])==c,f=d&&h[0].slice(-1),m=d&&h[0].slice(-2);return u?(f==1||f==2)&&m!=11&&m!=12?"one":"other":c==1&&p?"one":"other"},sw:s,syr:e,ta:e,te:e,teo:e,th:a,ti:i,tig:e,tk:function(c,u){var h=String(c).split("."),p=Number(h[0])==c,d=p&&h[0].slice(-1);return u?d==6||d==9||c==10?"few":"other":c==1?"one":"other"},tl:function(c,u){var h=String(c).split("."),p=h[0],d=h[1]||"",f=!h[1],m=p.slice(-1),g=d.slice(-1);return u?c==1?"one":"other":f&&(p==1||p==2||p==3)||f&&m!=4&&m!=6&&m!=9||!f&&g!=4&&g!=6&&g!=9?"one":"other"},tn:e,to:a,tr:e,ts:e,tzm:function(c,u){var h=String(c).split("."),p=Number(h[0])==c;return u?"other":c==0||c==1||p&&c>=11&&c<=99?"one":"other"},ug:e,uk:function(c,u){var h=String(c).split("."),p=h[0],d=!h[1],f=Number(h[0])==c,m=f&&h[0].slice(-1),g=f&&h[0].slice(-2),y=p.slice(-1),E=p.slice(-2);return u?m==3&&g!=13?"few":"other":d&&y==1&&E!=11?"one":d&&y>=2&&y<=4&&(E<12||E>14)?"few":d&&y==0||d&&y>=5&&y<=9||d&&E>=11&&E<=14?"many":"other"},ur:s,uz:e,ve:e,vi:function(c,u){return u&&c==1?"one":"other"},vo:e,vun:e,wa:i,wae:e,wo:a,xh:e,xog:e,yi:s,yo:a,yue:a,zh:a,zu:n})})(jP);var G7=k7(jP.exports),RNe=Object.freeze(Object.assign(Object.create(null),jP.exports,{default:G7})),WP={exports:{}};(function(t,r){var e="zero",i="one",n="two",s="few",a="many",o="other",l={cardinal:[i,o],ordinal:[o]},c={cardinal:[o],ordinal:[o]},u={cardinal:[i,s,a,o],ordinal:[o]},h={cardinal:[i,o],ordinal:[i,o]},p={cardinal:[i,n,o],ordinal:[o]};(function(d,f){Object.defineProperty(f,"__esModule",{value:!0}),t.exports=f})(B7,{_in:c,af:l,ak:l,am:l,an:l,ar:{cardinal:[e,i,n,s,a,o],ordinal:[o]},ars:{cardinal:[e,i,n,s,a,o],ordinal:[o]},as:{cardinal:[i,o],ordinal:[i,n,s,a,o]},asa:l,ast:l,az:{cardinal:[i,o],ordinal:[i,s,a,o]},be:{cardinal:[i,s,a,o],ordinal:[s,o]},bem:l,bez:l,bg:l,bho:l,bm:c,bn:{cardinal:[i,o],ordinal:[i,n,s,a,o]},bo:c,br:{cardinal:[i,n,s,a,o],ordinal:[o]},brx:l,bs:{cardinal:[i,s,o],ordinal:[o]},ca:{cardinal:[i,o],ordinal:[i,n,s,o]},ce:l,ceb:l,cgg:l,chr:l,ckb:l,cs:u,cy:{cardinal:[e,i,n,s,a,o],ordinal:[e,i,n,s,a,o]},da:l,de:l,doi:l,dsb:{cardinal:[i,n,s,o],ordinal:[o]},dv:l,dz:c,ee:l,el:l,en:{cardinal:[i,o],ordinal:[i,n,s,o]},eo:l,es:l,et:l,eu:l,fa:l,ff:l,fi:l,fil:h,fo:l,fr:{cardinal:[i,a,o],ordinal:[i,o]},fur:l,fy:l,ga:{cardinal:[i,n,s,a,o],ordinal:[i,o]},gd:{cardinal:[i,n,s,o],ordinal:[i,n,s,o]},gl:l,gsw:l,gu:{cardinal:[i,o],ordinal:[i,n,s,a,o]},guw:l,gv:{cardinal:[i,n,s,a,o],ordinal:[o]},ha:l,haw:l,he:{cardinal:[i,n,a,o],ordinal:[o]},hi:{cardinal:[i,o],ordinal:[i,n,s,a,o]},hr:{cardinal:[i,s,o],ordinal:[o]},hsb:{cardinal:[i,n,s,o],ordinal:[o]},hu:h,hy:h,ia:l,id:c,ig:c,ii:c,io:l,is:l,it:{cardinal:[i,o],ordinal:[a,o]},iu:p,iw:{cardinal:[i,n,a,o],ordinal:[o]},ja:c,jbo:c,jgo:l,ji:l,jmc:l,jv:c,jw:c,ka:{cardinal:[i,o],ordinal:[i,a,o]},kab:l,kaj:l,kcg:l,kde:c,kea:c,kk:{cardinal:[i,o],ordinal:[a,o]},kkj:l,kl:l,km:c,kn:l,ko:c,ks:l,ksb:l,ksh:{cardinal:[e,i,o],ordinal:[o]},ku:l,kw:{cardinal:[e,i,n,s,a,o],ordinal:[i,a,o]},ky:l,lag:{cardinal:[e,i,o],ordinal:[o]},lb:l,lg:l,lij:{cardinal:[i,o],ordinal:[a,o]},lkt:c,ln:l,lo:{cardinal:[o],ordinal:[i,o]},lt:u,lv:{cardinal:[e,i,o],ordinal:[o]},mas:l,mg:l,mgo:l,mk:{cardinal:[i,o],ordinal:[i,n,a,o]},ml:l,mn:l,mo:{cardinal:[i,s,o],ordinal:[i,o]},mr:{cardinal:[i,o],ordinal:[i,n,s,o]},ms:{cardinal:[o],ordinal:[i,o]},mt:u,my:c,nah:l,naq:p,nb:l,nd:l,ne:h,nl:l,nn:l,nnh:l,no:l,nqo:c,nr:l,nso:l,ny:l,nyn:l,om:l,or:{cardinal:[i,o],ordinal:[i,n,s,a,o]},os:l,osa:c,pa:l,pap:l,pcm:l,pl:u,prg:{cardinal:[e,i,o],ordinal:[o]},ps:l,pt:l,pt_PT:l,rm:l,ro:{cardinal:[i,s,o],ordinal:[i,o]},rof:l,root:c,ru:u,rwk:l,sah:c,saq:l,sat:p,sc:{cardinal:[i,o],ordinal:[a,o]},scn:{cardinal:[i,o],ordinal:[a,o]},sd:l,sdh:l,se:p,seh:l,ses:c,sg:c,sh:{cardinal:[i,s,o],ordinal:[o]},shi:{cardinal:[i,s,o],ordinal:[o]},si:l,sk:u,sl:{cardinal:[i,n,s,o],ordinal:[o]},sma:p,smi:p,smj:p,smn:p,sms:p,sn:l,so:l,sq:{cardinal:[i,o],ordinal:[i,a,o]},sr:{cardinal:[i,s,o],ordinal:[o]},ss:l,ssy:l,st:l,su:c,sv:h,sw:l,syr:l,ta:l,te:l,teo:l,th:c,ti:l,tig:l,tk:{cardinal:[i,o],ordinal:[s,o]},tl:h,tn:l,to:c,tr:l,ts:l,tzm:l,ug:l,uk:{cardinal:[i,s,a,o],ordinal:[s,o]},ur:l,uz:l,ve:l,vi:{cardinal:[o],ordinal:[i,o]},vo:l,vun:l,wa:l,wae:l,wo:c,xh:l,xog:l,yi:l,yo:c,yue:c,zh:c,zu:l})})(WP);var V7=k7(WP.exports),MNe=Object.freeze(Object.assign(Object.create(null),WP.exports,{default:V7})),DNe=G7||RNe,CNe=V7||MNe,ANe=(typeof Intl=="undefined"?"undefined":W_(Intl))==="object"&&Intl.NumberFormat||wNe.default,z7=function(r){return r==="in"?"_in":r==="pt-PT"?"pt_PT":r},ONe=function(r){return DNe[z7(r)]},PNe=function(r,e){return CNe[z7(r)][e?"ordinal":"cardinal"]},NNe=_Ne.default(ANe,ONe,PNe);j7.exports=NNe});var X7=V(Y7=>{"use strict";var LNe=W7();function FNe(t){return t&&typeof t=="object"&&"default"in t?t:{default:t}}var Rd=FNe(LNe);typeof Intl=="undefined"?(typeof global!="undefined"?global.Intl={PluralRules:Rd.default}:typeof window!="undefined"?window.Intl={PluralRules:Rd.default}:Y7.Intl={PluralRules:Rd.default},Rd.default.polyfill=!0):Intl.PluralRules?(qP=["en","es","ru","zh"],q7=Intl.PluralRules.supportedLocalesOf(qP),q7.length<qP.length&&(Intl.PluralRules=Rd.default,Rd.default.polyfill=!0)):(Intl.PluralRules=Rd.default,Rd.default.polyfill=!0);var qP,q7});var ir=V((aLt,$7)=>{var q_=function(t){return t&&t.Math==Math&&t};$7.exports=q_(typeof globalThis=="object"&&globalThis)||q_(typeof window=="object"&&window)||q_(typeof self=="object"&&self)||q_(typeof global=="object"&&global)||function(){return this}()||Function("return this")()});var Rt=V((oLt,Z7)=>{Z7.exports=function(t){try{return!!t()}catch(r){return!0}}});var Pr=V((lLt,K7)=>{var HNe=Rt();K7.exports=!HNe(function(){return Object.defineProperty({},1,{get:function(){return 7}})[1]!=7})});var tv=V((cLt,J7)=>{var UNe=Rt();J7.exports=!UNe(function(){var t=function(){}.bind();return typeof t!="function"||t.hasOwnProperty("prototype")})});var ni=V((uLt,Q7)=>{var BNe=tv(),Y_=Function.prototype.call;Q7.exports=BNe?Y_.bind(Y_):function(){return Y_.apply(Y_,arguments)}});var t1=V(r9=>{"use strict";var e9={}.propertyIsEnumerable,t9=Object.getOwnPropertyDescriptor,kNe=t9&&!e9.call({1:2},1);r9.f=kNe?function(r){var e=t9(this,r);return!!e&&e.enumerable}:e9});var Ao=V((pLt,i9)=>{i9.exports=function(t,r){return{enumerable:!(t&1),configurable:!(t&2),writable:!(t&4),value:r}}});var Bt=V((dLt,a9)=>{var n9=tv(),s9=Function.prototype,YP=s9.call,GNe=n9&&s9.bind.bind(YP,YP);a9.exports=n9?GNe:function(t){return function(){return YP.apply(t,arguments)}}});var fa=V((fLt,l9)=>{var o9=Bt(),VNe=o9({}.toString),zNe=o9("".slice);l9.exports=function(t){return zNe(VNe(t),8,-1)}});var xm=V((mLt,c9)=>{var jNe=Bt(),WNe=Rt(),qNe=fa(),XP=Object,YNe=jNe("".split);c9.exports=WNe(function(){return!XP("z").propertyIsEnumerable(0)})?function(t){return qNe(t)=="String"?YNe(t,""):XP(t)}:XP});var ma=V((gLt,u9)=>{u9.exports=function(t){return t==null}});var ls=V((vLt,h9)=>{var XNe=ma(),$Ne=TypeError;h9.exports=function(t){if(XNe(t))throw $Ne("Can't call method on "+t);return t}});var ga=V((yLt,p9)=>{var ZNe=xm(),KNe=ls();p9.exports=function(t){return ZNe(KNe(t))}});var ZP=V((TLt,d9)=>{var $P=typeof document=="object"&&document.all,JNe=typeof $P=="undefined"&&$P!==void 0;d9.exports={all:$P,IS_HTMLDDA:JNe}});var Ti=V((ELt,m9)=>{var f9=ZP(),QNe=f9.all;m9.exports=f9.IS_HTMLDDA?function(t){return typeof t=="function"||t===QNe}:function(t){return typeof t=="function"}});var si=V((bLt,y9)=>{var g9=Ti(),v9=ZP(),eLe=v9.all;y9.exports=v9.IS_HTMLDDA?function(t){return typeof t=="object"?t!==null:g9(t)||t===eLe}:function(t){return typeof t=="object"?t!==null:g9(t)}});var bn=V((xLt,T9)=>{var KP=ir(),tLe=Ti(),rLe=function(t){return tLe(t)?t:void 0};T9.exports=function(t,r){return arguments.length<2?rLe(KP[t]):KP[t]&&KP[t][r]}});var Oo=V((ILt,E9)=>{var iLe=Bt();E9.exports=iLe({}.isPrototypeOf)});var bu=V((SLt,b9)=>{var nLe=bn();b9.exports=nLe("navigator","userAgent")||""});var xu=V((_Lt,R9)=>{var w9=ir(),JP=bu(),x9=w9.process,I9=w9.Deno,S9=x9&&x9.versions||I9&&I9.version,_9=S9&&S9.v8,dc,X_;_9&&(dc=_9.split("."),X_=dc[0]>0&&dc[0]<4?1:+(dc[0]+dc[1]));!X_&&JP&&(dc=JP.match(/Edge\/(\d+)/),(!dc||dc[1]>=74)&&(dc=JP.match(/Chrome\/(\d+)/),dc&&(X_=+dc[1])));R9.exports=X_});var Im=V((wLt,D9)=>{var M9=xu(),sLe=Rt();D9.exports=!!Object.getOwnPropertySymbols&&!sLe(function(){var t=Symbol();return!String(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&M9&&M9<41})});var QP=V((RLt,C9)=>{var aLe=Im();C9.exports=aLe&&!Symbol.sham&&typeof Symbol.iterator=="symbol"});var Md=V((MLt,A9)=>{var oLe=bn(),lLe=Ti(),cLe=Oo(),uLe=QP(),hLe=Object;A9.exports=uLe?function(t){return typeof t=="symbol"}:function(t){var r=oLe("Symbol");return lLe(r)&&cLe(r.prototype,hLe(t))}});var Dd=V((DLt,O9)=>{var pLe=String;O9.exports=function(t){try{return pLe(t)}catch(r){return"Object"}}});var fs=V((CLt,P9)=>{var dLe=Ti(),fLe=Dd(),mLe=TypeError;P9.exports=function(t){if(dLe(t))return t;throw mLe(fLe(t)+" is not a function")}});var Iu=V((ALt,N9)=>{var gLe=fs(),vLe=ma();N9.exports=function(t,r){var e=t[r];return vLe(e)?void 0:gLe(e)}});var i2=V((OLt,L9)=>{var e2=ni(),t2=Ti(),r2=si(),yLe=TypeError;L9.exports=function(t,r){var e,i;if(r==="string"&&t2(e=t.toString)&&!r2(i=e2(e,t))||t2(e=t.valueOf)&&!r2(i=e2(e,t))||r!=="string"&&t2(e=t.toString)&&!r2(i=e2(e,t)))return i;throw yLe("Can't convert object to primitive value")}});var Bn=V((PLt,F9)=>{F9.exports=!1});var $_=V((NLt,U9)=>{var H9=ir(),TLe=Object.defineProperty;U9.exports=function(t,r){try{TLe(H9,t,{value:r,configurable:!0,writable:!0})}catch(e){H9[t]=r}return r}});var Z_=V((LLt,k9)=>{var ELe=ir(),bLe=$_(),B9="__core-js_shared__",xLe=ELe[B9]||bLe(B9,{});k9.exports=xLe});var Sm=V((FLt,V9)=>{var ILe=Bn(),G9=Z_();(V9.exports=function(t,r){return G9[t]||(G9[t]=r!==void 0?r:{})})("versions",[]).push({version:"3.27.1",mode:ILe?"pure":"global",copyright:"\xA9 2014-2022 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.27.1/LICENSE",source:"https://github.com/zloirock/core-js"})});var Li=V((HLt,z9)=>{var SLe=ls(),_Le=Object;z9.exports=function(t){return _Le(SLe(t))}});var Si=V((ULt,j9)=>{var wLe=Bt(),RLe=Li(),MLe=wLe({}.hasOwnProperty);j9.exports=Object.hasOwn||function(r,e){return MLe(RLe(r),e)}});var _m=V((BLt,W9)=>{var DLe=Bt(),CLe=0,ALe=Math.random(),OLe=DLe(1 .toString);W9.exports=function(t){return"Symbol("+(t===void 0?"":t)+")_"+OLe(++CLe+ALe,36)}});var fi=V((kLt,Z9)=>{var PLe=ir(),NLe=Sm(),q9=Si(),LLe=_m(),Y9=Im(),$9=QP(),rv=NLe("wks"),wm=PLe.Symbol,X9=wm&&wm.for,FLe=$9?wm:wm&&wm.withoutSetter||LLe;Z9.exports=function(t){if(!q9(rv,t)||!(Y9||typeof rv[t]=="string")){var r="Symbol."+t;Y9&&q9(wm,t)?rv[t]=wm[t]:$9&&X9?rv[t]=X9(r):rv[t]=FLe(r)}return rv[t]}});var r1=V((GLt,Q9)=>{var HLe=ni(),K9=si(),J9=Md(),ULe=Iu(),BLe=i2(),kLe=fi(),GLe=TypeError,VLe=kLe("toPrimitive");Q9.exports=function(t,r){if(!K9(t)||J9(t))return t;var e=ULe(t,VLe),i;if(e){if(r===void 0&&(r="default"),i=HLe(e,t,r),!K9(i)||J9(i))return i;throw GLe("Can't convert object to primitive value")}return r===void 0&&(r="number"),BLe(t,r)}});var Vh=V((VLt,ez)=>{var zLe=r1(),jLe=Md();ez.exports=function(t){var r=zLe(t,"string");return jLe(r)?r:r+""}});var i1=V((zLt,rz)=>{var WLe=ir(),tz=si(),n2=WLe.document,qLe=tz(n2)&&tz(n2.createElement);rz.exports=function(t){return qLe?n2.createElement(t):{}}});var s2=V((jLt,iz)=>{var YLe=Pr(),XLe=Rt(),$Le=i1();iz.exports=!YLe&&!XLe(function(){return Object.defineProperty($Le("div"),"a",{get:function(){return 7}}).a!=7})});var Us=V(sz=>{var ZLe=Pr(),KLe=ni(),JLe=t1(),QLe=Ao(),eFe=ga(),tFe=Vh(),rFe=Si(),iFe=s2(),nz=Object.getOwnPropertyDescriptor;sz.f=ZLe?nz:function(r,e){if(r=eFe(r),e=tFe(e),iFe)try{return nz(r,e)}catch(i){}if(rFe(r,e))return QLe(!KLe(JLe.f,r,e),r[e])}});var a2=V((qLt,az)=>{var nFe=Pr(),sFe=Rt();az.exports=nFe&&sFe(function(){return Object.defineProperty(function(){},"prototype",{value:42,writable:!1}).prototype!=42})});var jr=V((YLt,oz)=>{var aFe=si(),oFe=String,lFe=TypeError;oz.exports=function(t){if(aFe(t))return t;throw lFe(oFe(t)+" is not an object")}});var Vi=V(cz=>{var cFe=Pr(),uFe=s2(),hFe=a2(),K_=jr(),lz=Vh(),pFe=TypeError,o2=Object.defineProperty,dFe=Object.getOwnPropertyDescriptor,l2="enumerable",c2="configurable",u2="writable";cz.f=cFe?hFe?function(r,e,i){if(K_(r),e=lz(e),K_(i),typeof r=="function"&&e==="prototype"&&"value"in i&&u2 in i&&!i[u2]){var n=dFe(r,e);n&&n[u2]&&(r[e]=i.value,i={configurable:c2 in i?i[c2]:n[c2],enumerable:l2 in i?i[l2]:n[l2],writable:!1})}return o2(r,e,i)}:o2:function(r,e,i){if(K_(r),e=lz(e),K_(i),uFe)try{return o2(r,e,i)}catch(n){}if("get"in i||"set"in i)throw pFe("Accessors not supported");return"value"in i&&(r[e]=i.value),r}});var va=V(($Lt,uz)=>{var fFe=Pr(),mFe=Vi(),gFe=Ao();uz.exports=fFe?function(t,r,e){return mFe.f(t,r,gFe(1,e))}:function(t,r,e){return t[r]=e,t}});var Rm=V((ZLt,pz)=>{var h2=Pr(),vFe=Si(),hz=Function.prototype,yFe=h2&&Object.getOwnPropertyDescriptor,p2=vFe(hz,"name"),TFe=p2&&function(){}.name==="something",EFe=p2&&(!h2||h2&&yFe(hz,"name").configurable);pz.exports={EXISTS:p2,PROPER:TFe,CONFIGURABLE:EFe}});var J_=V((KLt,dz)=>{var bFe=Bt(),xFe=Ti(),d2=Z_(),IFe=bFe(Function.toString);xFe(d2.inspectSource)||(d2.inspectSource=function(t){return IFe(t)});dz.exports=d2.inspectSource});var f2=V((JLt,mz)=>{var SFe=ir(),_Fe=Ti(),fz=SFe.WeakMap;mz.exports=_Fe(fz)&&/native code/.test(String(fz))});var n1=V((QLt,vz)=>{var wFe=Sm(),RFe=_m(),gz=wFe("keys");vz.exports=function(t){return gz[t]||(gz[t]=RFe(t))}});var iv=V((eFt,yz)=>{yz.exports={}});var cs=V((tFt,bz)=>{var MFe=f2(),Ez=ir(),DFe=si(),CFe=va(),m2=Si(),g2=Z_(),AFe=n1(),OFe=iv(),Tz="Object already initialized",v2=Ez.TypeError,PFe=Ez.WeakMap,Q_,s1,ew,NFe=function(t){return ew(t)?s1(t):Q_(t,{})},LFe=function(t){return function(r){var e;if(!DFe(r)||(e=s1(r)).type!==t)throw v2("Incompatible receiver, "+t+" required");return e}};MFe||g2.state?(fc=g2.state||(g2.state=new PFe),fc.get=fc.get,fc.has=fc.has,fc.set=fc.set,Q_=function(t,r){if(fc.has(t))throw v2(Tz);return r.facade=t,fc.set(t,r),r},s1=function(t){return fc.get(t)||{}},ew=function(t){return fc.has(t)}):(Mm=AFe("state"),OFe[Mm]=!0,Q_=function(t,r){if(m2(t,Mm))throw v2(Tz);return r.facade=t,CFe(t,Mm,r),r},s1=function(t){return m2(t,Mm)?t[Mm]:{}},ew=function(t){return m2(t,Mm)});var fc,Mm;bz.exports={set:Q_,get:s1,has:ew,enforce:NFe,getterFor:LFe}});var iw=V((rFt,Iz)=>{var FFe=Rt(),HFe=Ti(),tw=Si(),y2=Pr(),UFe=Rm().CONFIGURABLE,BFe=J_(),xz=cs(),kFe=xz.enforce,GFe=xz.get,rw=Object.defineProperty,VFe=y2&&!FFe(function(){return rw(function(){},"length",{value:8}).length!==8}),zFe=String(String).split("String"),jFe=Iz.exports=function(t,r,e){String(r).slice(0,7)==="Symbol("&&(r="["+String(r).replace(/^Symbol\(([^)]*)\)/,"$1")+"]"),e&&e.getter&&(r="get "+r),e&&e.setter&&(r="set "+r),(!tw(t,"name")||UFe&&t.name!==r)&&(y2?rw(t,"name",{value:r,configurable:!0}):t.name=r),VFe&&e&&tw(e,"arity")&&t.length!==e.arity&&rw(t,"length",{value:e.arity});try{e&&tw(e,"constructor")&&e.constructor?y2&&rw(t,"prototype",{writable:!1}):t.prototype&&(t.prototype=void 0)}catch(n){}var i=kFe(t);return tw(i,"source")||(i.source=zFe.join(typeof r=="string"?r:"")),t};Function.prototype.toString=jFe(function(){return HFe(this)&&GFe(this).source||BFe(this)},"toString")});var Dn=V((iFt,Sz)=>{var WFe=Ti(),qFe=Vi(),YFe=iw(),XFe=$_();Sz.exports=function(t,r,e,i){i||(i={});var n=i.enumerable,s=i.name!==void 0?i.name:r;if(WFe(e)&&YFe(e,s,i),i.global)n?t[r]=e:XFe(r,e);else{try{i.unsafe?t[r]&&(n=!0):delete t[r]}catch(a){}n?t[r]=e:qFe.f(t,r,{value:e,enumerable:!1,configurable:!i.nonConfigurable,writable:!i.nonWritable})}return t}});var T2=V((nFt,_z)=>{var $Fe=Math.ceil,ZFe=Math.floor;_z.exports=Math.trunc||function(r){var e=+r;return(e>0?ZFe:$Fe)(e)}});var ms=V((sFt,wz)=>{var KFe=T2();wz.exports=function(t){var r=+t;return r!==r||r===0?0:KFe(r)}});var Su=V((aFt,Rz)=>{var JFe=ms(),QFe=Math.max,e5e=Math.min;Rz.exports=function(t,r){var e=JFe(t);return e<0?QFe(e+r,0):e5e(e,r)}});var Wa=V((oFt,Mz)=>{var t5e=ms(),r5e=Math.min;Mz.exports=function(t){return t>0?r5e(t5e(t),9007199254740991):0}});var ln=V((lFt,Dz)=>{var i5e=Wa();Dz.exports=function(t){return i5e(t.length)}});var nv=V((cFt,Az)=>{var n5e=ga(),s5e=Su(),a5e=ln(),Cz=function(t){return function(r,e,i){var n=n5e(r),s=a5e(n),a=s5e(i,s),o;if(t&&e!=e){for(;s>a;)if(o=n[a++],o!=o)return!0}else for(;s>a;a++)if((t||a in n)&&n[a]===e)return t||a||0;return!t&&-1}};Az.exports={includes:Cz(!0),indexOf:Cz(!1)}});var b2=V((uFt,Pz)=>{var o5e=Bt(),E2=Si(),l5e=ga(),c5e=nv().indexOf,u5e=iv(),Oz=o5e([].push);Pz.exports=function(t,r){var e=l5e(t),i=0,n=[],s;for(s in e)!E2(u5e,s)&&E2(e,s)&&Oz(n,s);for(;r.length>i;)E2(e,s=r[i++])&&(~c5e(n,s)||Oz(n,s));return n}});var nw=V((hFt,Nz)=>{Nz.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]});var zh=V(Lz=>{var h5e=b2(),p5e=nw(),d5e=p5e.concat("length","prototype");Lz.f=Object.getOwnPropertyNames||function(r){return h5e(r,d5e)}});var a1=V(Fz=>{Fz.f=Object.getOwnPropertySymbols});var sw=V((fFt,Hz)=>{var f5e=bn(),m5e=Bt(),g5e=zh(),v5e=a1(),y5e=jr(),T5e=m5e([].concat);Hz.exports=f5e("Reflect","ownKeys")||function(r){var e=g5e.f(y5e(r)),i=v5e.f;return i?T5e(e,i(r)):e}});var o1=V((mFt,Bz)=>{var Uz=Si(),E5e=sw(),b5e=Us(),x5e=Vi();Bz.exports=function(t,r,e){for(var i=E5e(r),n=x5e.f,s=b5e.f,a=0;a<i.length;a++){var o=i[a];!Uz(t,o)&&!(e&&Uz(e,o))&&n(t,o,s(r,o))}}});var sv=V((gFt,kz)=>{var I5e=Rt(),S5e=Ti(),_5e=/#|\.prototype\./,l1=function(t,r){var e=R5e[w5e(t)];return e==D5e?!0:e==M5e?!1:S5e(r)?I5e(r):!!r},w5e=l1.normalize=function(t){return String(t).replace(_5e,".").toLowerCase()},R5e=l1.data={},M5e=l1.NATIVE="N",D5e=l1.POLYFILL="P";kz.exports=l1});var Ne=V((vFt,Gz)=>{var x2=ir(),C5e=Us().f,A5e=va(),O5e=Dn(),P5e=$_(),N5e=o1(),L5e=sv();Gz.exports=function(t,r){var e=t.target,i=t.global,n=t.stat,s,a,o,l,c,u;if(i?a=x2:n?a=x2[e]||P5e(e,{}):a=(x2[e]||{}).prototype,a)for(o in r){if(c=r[o],t.dontCallGetSet?(u=C5e(a,o),l=u&&u.value):l=a[o],s=L5e(i?o:e+(n?".":"#")+o,t.forced),!s&&l!==void 0){if(typeof c==typeof l)continue;N5e(c,l)}(t.sham||l&&l.sham)&&A5e(c,"sham",!0),O5e(a,o,c,t)}}});var aw=V((yFt,zz)=>{var F5e=fi(),H5e=F5e("toStringTag"),Vz={};Vz[H5e]="z";zz.exports=String(Vz)==="[object z]"});var mc=V((TFt,jz)=>{var U5e=aw(),B5e=Ti(),ow=fa(),k5e=fi(),G5e=k5e("toStringTag"),V5e=Object,z5e=ow(function(){return arguments}())=="Arguments",j5e=function(t,r){try{return t[r]}catch(e){}};jz.exports=U5e?ow:function(t){var r,e,i;return t===void 0?"Undefined":t===null?"Null":typeof(e=j5e(r=V5e(t),G5e))=="string"?e:z5e?ow(r):(i=ow(r))=="Object"&&B5e(r.callee)?"Arguments":i}});var mi=V((EFt,Wz)=>{var W5e=mc(),q5e=String;Wz.exports=function(t){if(W5e(t)==="Symbol")throw TypeError("Cannot convert a Symbol value to a string");return q5e(t)}});var av=V((bFt,qz)=>{var Y5e=b2(),X5e=nw();qz.exports=Object.keys||function(r){return Y5e(r,X5e)}});var lw=V(Yz=>{var $5e=Pr(),Z5e=a2(),K5e=Vi(),J5e=jr(),Q5e=ga(),e6e=av();Yz.f=$5e&&!Z5e?Object.defineProperties:function(r,e){J5e(r);for(var i=Q5e(e),n=e6e(e),s=n.length,a=0,o;s>a;)K5e.f(r,o=n[a++],i[o]);return r}});var I2=V((IFt,Xz)=>{var t6e=bn();Xz.exports=t6e("document","documentElement")});var qa=V((SFt,tj)=>{var r6e=jr(),i6e=lw(),$z=nw(),n6e=iv(),s6e=I2(),a6e=i1(),o6e=n1(),Zz=">",Kz="<",_2="prototype",w2="script",Qz=o6e("IE_PROTO"),S2=function(){},ej=function(t){return Kz+w2+Zz+t+Kz+"/"+w2+Zz},Jz=function(t){t.write(ej("")),t.close();var r=t.parentWindow.Object;return t=null,r},l6e=function(){var t=a6e("iframe"),r="java"+w2+":",e;return t.style.display="none",s6e.appendChild(t),t.src=String(r),e=t.contentWindow.document,e.open(),e.write(ej("document.F=Object")),e.close(),e.F},cw,uw=function(){try{cw=new ActiveXObject("htmlfile")}catch(r){}uw=typeof document!="undefined"?document.domain&&cw?Jz(cw):l6e():Jz(cw);for(var t=$z.length;t--;)delete uw[_2][$z[t]];return uw()};n6e[Qz]=!0;tj.exports=Object.create||function(r,e){var i;return r!==null?(S2[_2]=r6e(r),i=new S2,S2[_2]=null,i[Qz]=r):i=uw(),e===void 0?i:i6e.f(i,e)}});var _u=V((_Ft,rj)=>{"use strict";var c6e=Vh(),u6e=Vi(),h6e=Ao();rj.exports=function(t,r,e){var i=c6e(r);i in t?u6e.f(t,i,h6e(0,e)):t[i]=e}});var ov=V((wFt,nj)=>{var ij=Su(),p6e=ln(),d6e=_u(),f6e=Array,m6e=Math.max;nj.exports=function(t,r,e){for(var i=p6e(t),n=ij(r,i),s=ij(e===void 0?i:e,i),a=f6e(m6e(s-n,0)),o=0;n<s;n++,o++)d6e(a,o,t[n]);return a.length=o,a}});var hw=V((RFt,oj)=>{var g6e=fa(),v6e=ga(),sj=zh().f,y6e=ov(),aj=typeof window=="object"&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],T6e=function(t){try{return sj(t)}catch(r){return y6e(aj)}};oj.exports.f=function(r){return aj&&g6e(r)=="Window"?T6e(r):sj(v6e(r))}});var R2=V(lj=>{var E6e=fi();lj.f=E6e});var pw=V((DFt,cj)=>{var b6e=ir();cj.exports=b6e});var ya=V((CFt,hj)=>{var uj=pw(),x6e=Si(),I6e=R2(),S6e=Vi().f;hj.exports=function(t){var r=uj.Symbol||(uj.Symbol={});x6e(r,t)||S6e(r,t,{value:I6e.f(t)})}});var M2=V((AFt,pj)=>{var _6e=ni(),w6e=bn(),R6e=fi(),M6e=Dn();pj.exports=function(){var t=w6e("Symbol"),r=t&&t.prototype,e=r&&r.valueOf,i=R6e("toPrimitive");r&&!r[i]&&M6e(r,i,function(n){return _6e(e,this)},{arity:1})}});var Ya=V((OFt,fj)=>{var D6e=Vi().f,C6e=Si(),A6e=fi(),dj=A6e("toStringTag");fj.exports=function(t,r,e){t&&!e&&(t=t.prototype),t&&!C6e(t,dj)&&D6e(t,dj,{configurable:!0,value:r})}});var jh=V((PFt,mj)=>{var O6e=fa(),P6e=Bt();mj.exports=function(t){if(O6e(t)==="Function")return P6e(t)}});var fl=V((NFt,vj)=>{var gj=jh(),N6e=fs(),L6e=tv(),F6e=gj(gj.bind);vj.exports=function(t,r){return N6e(t),r===void 0?t:L6e?F6e(t,r):function(){return t.apply(r,arguments)}}});var Wh=V((LFt,yj)=>{var H6e=fa();yj.exports=Array.isArray||function(r){return H6e(r)=="Array"}});var Dm=V((FFt,Ij)=>{var U6e=Bt(),B6e=Rt(),Tj=Ti(),k6e=mc(),G6e=bn(),V6e=J_(),Ej=function(){},z6e=[],bj=G6e("Reflect","construct"),D2=/^\s*(?:class|function)\b/,j6e=U6e(D2.exec),W6e=!D2.exec(Ej),c1=function(r){if(!Tj(r))return!1;try{return bj(Ej,z6e,r),!0}catch(e){return!1}},xj=function(r){if(!Tj(r))return!1;switch(k6e(r)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return W6e||!!j6e(D2,V6e(r))}catch(e){return!0}};xj.sham=!0;Ij.exports=!bj||B6e(function(){var t;return c1(c1.call)||!c1(Object)||!c1(function(){t=!0})||t})?xj:c1});var Rj=V((HFt,wj)=>{var Sj=Wh(),q6e=Dm(),Y6e=si(),X6e=fi(),$6e=X6e("species"),_j=Array;wj.exports=function(t){var r;return Sj(t)&&(r=t.constructor,q6e(r)&&(r===_j||Sj(r.prototype))?r=void 0:Y6e(r)&&(r=r[$6e],r===null&&(r=void 0))),r===void 0?_j:r}});var lv=V((UFt,Mj)=>{var Z6e=Rj();Mj.exports=function(t,r){return new(Z6e(t))(r===0?0:r)}});var ws=V((BFt,Cj)=>{var K6e=fl(),J6e=Bt(),Q6e=xm(),eHe=Li(),tHe=ln(),rHe=lv(),Dj=J6e([].push),Cd=function(t){var r=t==1,e=t==2,i=t==3,n=t==4,s=t==6,a=t==7,o=t==5||s;return function(l,c,u,h){for(var p=eHe(l),d=Q6e(p),f=K6e(c,u),m=tHe(d),g=0,y=h||rHe,E=r?y(l,m):e||a?y(l,0):void 0,b,x;m>g;g++)if((o||g in d)&&(b=d[g],x=f(b,g,p),t))if(r)E[g]=x;else if(x)switch(t){case 3:return!0;case 5:return b;case 6:return g;case 2:Dj(E,b)}else switch(t){case 4:return!1;case 7:Dj(E,b)}return s?-1:i||n?n:E}};Cj.exports={forEach:Cd(0),map:Cd(1),filter:Cd(2),some:Cd(3),every:Cd(4),find:Cd(5),findIndex:Cd(6),filterReject:Cd(7)}});var qj=V(()=>{"use strict";var dw=Ne(),U2=ir(),B2=ni(),iHe=Bt(),nHe=Bn(),cv=Pr(),uv=Im(),sHe=Rt(),Rs=Si(),aHe=Oo(),P2=jr(),fw=ga(),k2=Vh(),oHe=mi(),N2=Ao(),h1=qa(),Pj=av(),lHe=zh(),Nj=hw(),cHe=a1(),Lj=Us(),Fj=Vi(),uHe=lw(),Hj=t1(),C2=Dn(),G2=Sm(),hHe=n1(),Uj=iv(),Aj=_m(),pHe=fi(),dHe=R2(),fHe=ya(),mHe=M2(),gHe=Ya(),Bj=cs(),mw=ws().forEach,Xa=hHe("hidden"),gw="Symbol",p1="prototype",vHe=Bj.set,Oj=Bj.getterFor(gw),ml=Object[p1],Cm=U2.Symbol,u1=Cm&&Cm[p1],yHe=U2.TypeError,A2=U2.QObject,kj=Lj.f,Ad=Fj.f,Gj=Nj.f,THe=Hj.f,Vj=iHe([].push),qh=G2("symbols"),d1=G2("op-symbols"),EHe=G2("wks"),L2=!A2||!A2[p1]||!A2[p1].findChild,F2=cv&&sHe(function(){return h1(Ad({},"a",{get:function(){return Ad(this,"a",{value:7}).a}})).a!=7})?function(t,r,e){var i=kj(ml,r);i&&delete ml[r],Ad(t,r,e),i&&t!==ml&&Ad(ml,r,i)}:Ad,O2=function(t,r){var e=qh[t]=h1(u1);return vHe(e,{type:gw,tag:t,description:r}),cv||(e.description=r),e},vw=function(r,e,i){r===ml&&vw(d1,e,i),P2(r);var n=k2(e);return P2(i),Rs(qh,n)?(i.enumerable?(Rs(r,Xa)&&r[Xa][n]&&(r[Xa][n]=!1),i=h1(i,{enumerable:N2(0,!1)})):(Rs(r,Xa)||Ad(r,Xa,N2(1,{})),r[Xa][n]=!0),F2(r,n,i)):Ad(r,n,i)},V2=function(r,e){P2(r);var i=fw(e),n=Pj(i).concat(Wj(i));return mw(n,function(s){(!cv||B2(H2,i,s))&&vw(r,s,i[s])}),r},bHe=function(r,e){return e===void 0?h1(r):V2(h1(r),e)},H2=function(r){var e=k2(r),i=B2(THe,this,e);return this===ml&&Rs(qh,e)&&!Rs(d1,e)?!1:i||!Rs(this,e)||!Rs(qh,e)||Rs(this,Xa)&&this[Xa][e]?i:!0},zj=function(r,e){var i=fw(r),n=k2(e);if(!(i===ml&&Rs(qh,n)&&!Rs(d1,n))){var s=kj(i,n);return s&&Rs(qh,n)&&!(Rs(i,Xa)&&i[Xa][n])&&(s.enumerable=!0),s}},jj=function(r){var e=Gj(fw(r)),i=[];return mw(e,function(n){!Rs(qh,n)&&!Rs(Uj,n)&&Vj(i,n)}),i},Wj=function(t){var r=t===ml,e=Gj(r?d1:fw(t)),i=[];return mw(e,function(n){Rs(qh,n)&&(!r||Rs(ml,n))&&Vj(i,qh[n])}),i};uv||(Cm=function(){if(aHe(u1,this))throw yHe("Symbol is not a constructor");var r=!arguments.length||arguments[0]===void 0?void 0:oHe(arguments[0]),e=Aj(r),i=function(n){this===ml&&B2(i,d1,n),Rs(this,Xa)&&Rs(this[Xa],e)&&(this[Xa][e]=!1),F2(this,e,N2(1,n))};return cv&&L2&&F2(ml,e,{configurable:!0,set:i}),O2(e,r)},u1=Cm[p1],C2(u1,"toString",function(){return Oj(this).tag}),C2(Cm,"withoutSetter",function(t){return O2(Aj(t),t)}),Hj.f=H2,Fj.f=vw,uHe.f=V2,Lj.f=zj,lHe.f=Nj.f=jj,cHe.f=Wj,dHe.f=function(t){return O2(pHe(t),t)},cv&&(Ad(u1,"description",{configurable:!0,get:function(){return Oj(this).description}}),nHe||C2(ml,"propertyIsEnumerable",H2,{unsafe:!0})));dw({global:!0,constructor:!0,wrap:!0,forced:!uv,sham:!uv},{Symbol:Cm});mw(Pj(EHe),function(t){fHe(t)});dw({target:gw,stat:!0,forced:!uv},{useSetter:function(){L2=!0},useSimple:function(){L2=!1}});dw({target:"Object",stat:!0,forced:!uv,sham:!cv},{create:bHe,defineProperty:vw,defineProperties:V2,getOwnPropertyDescriptor:zj});dw({target:"Object",stat:!0,forced:!uv},{getOwnPropertyNames:jj});mHe();gHe(Cm,gw);Uj[Xa]=!0});var z2=V((VFt,Yj)=>{var xHe=Im();Yj.exports=xHe&&!!Symbol.for&&!!Symbol.keyFor});var $j=V(()=>{var IHe=Ne(),SHe=bn(),_He=Si(),wHe=mi(),Xj=Sm(),RHe=z2(),j2=Xj("string-to-symbol-registry"),MHe=Xj("symbol-to-string-registry");IHe({target:"Symbol",stat:!0,forced:!RHe},{for:function(t){var r=wHe(t);if(_He(j2,r))return j2[r];var e=SHe("Symbol")(r);return j2[r]=e,MHe[e]=r,e}})});var Kj=V(()=>{var DHe=Ne(),CHe=Si(),AHe=Md(),OHe=Dd(),PHe=Sm(),NHe=z2(),Zj=PHe("symbol-to-string-registry");DHe({target:"Symbol",stat:!0,forced:!NHe},{keyFor:function(r){if(!AHe(r))throw TypeError(OHe(r)+" is not a symbol");if(CHe(Zj,r))return Zj[r]}})});var Po=V((YFt,tW)=>{var LHe=tv(),eW=Function.prototype,Jj=eW.apply,Qj=eW.call;tW.exports=typeof Reflect=="object"&&Reflect.apply||(LHe?Qj.bind(Jj):function(){return Qj.apply(Jj,arguments)})});var Od=V((XFt,rW)=>{var FHe=Bt();rW.exports=FHe([].slice)});var W2=V(()=>{var HHe=Ne(),cW=bn(),uW=Po(),UHe=ni(),f1=Bt(),hW=Rt(),BHe=Wh(),kHe=Ti(),GHe=si(),iW=Md(),pW=Od(),VHe=Im(),Pd=cW("JSON","stringify"),yw=f1(/./.exec),nW=f1("".charAt),zHe=f1("".charCodeAt),jHe=f1("".replace),WHe=f1(1 .toString),qHe=/[\uD800-\uDFFF]/g,sW=/^[\uD800-\uDBFF]$/,aW=/^[\uDC00-\uDFFF]$/,oW=!VHe||hW(function(){var t=cW("Symbol")();return Pd([t])!="[null]"||Pd({a:t})!="{}"||Pd(Object(t))!="{}"}),lW=hW(function(){return Pd("\uDF06\uD834")!=='"\\udf06\\ud834"'||Pd("\uDEAD")!=='"\\udead"'}),YHe=function(t,r){var e=pW(arguments),i=r;if(!(!GHe(r)&&t===void 0||iW(t)))return BHe(r)||(r=function(n,s){if(kHe(i)&&(s=UHe(i,this,n,s)),!iW(s))return s}),e[1]=r,uW(Pd,null,e)},XHe=function(t,r,e){var i=nW(e,r-1),n=nW(e,r+1);return yw(sW,t)&&!yw(aW,n)||yw(aW,t)&&!yw(sW,i)?"\\u"+WHe(zHe(t,0),16):t};Pd&&HHe({target:"JSON",stat:!0,arity:3,forced:oW||lW},{stringify:function(r,e,i){var n=pW(arguments),s=uW(oW?YHe:Pd,null,n);return lW&&typeof s=="string"?jHe(s,qHe,XHe):s}})});var fW=V(()=>{var $He=Ne(),ZHe=Im(),KHe=Rt(),dW=a1(),JHe=Li(),QHe=!ZHe||KHe(function(){dW.f(1)});$He({target:"Object",stat:!0,forced:QHe},{getOwnPropertySymbols:function(r){var e=dW.f;return e?e(JHe(r)):[]}})});var mW=V(()=>{qj();$j();Kj();W2();fW()});var xW=V(()=>{"use strict";var e4e=Ne(),t4e=Pr(),r4e=ir(),Tw=Bt(),i4e=Si(),n4e=Ti(),s4e=Oo(),a4e=mi(),o4e=Vi().f,l4e=o1(),Yh=r4e.Symbol,Am=Yh&&Yh.prototype;t4e&&n4e(Yh)&&(!("description"in Am)||Yh().description!==void 0)&&(q2={},m1=function(){var r=arguments.length<1||arguments[0]===void 0?void 0:a4e(arguments[0]),e=s4e(Am,this)?new Yh(r):r===void 0?Yh():Yh(r);return r===""&&(q2[e]=!0),e},l4e(m1,Yh),m1.prototype=Am,Am.constructor=m1,gW=String(Yh("test"))=="Symbol(test)",vW=Tw(Am.valueOf),yW=Tw(Am.toString),TW=/^Symbol\((.*)\)[^)]+$/,EW=Tw("".replace),bW=Tw("".slice),o4e(Am,"description",{configurable:!0,get:function(){var r=vW(this);if(i4e(q2,r))return"";var e=yW(r),i=gW?bW(e,7,-1):EW(e,TW,"$1");return i===""?void 0:i}}),e4e({global:!0,constructor:!0,forced:!0},{Symbol:m1}));var q2,m1,gW,vW,yW,TW,EW,bW});var IW=V(()=>{var c4e=ya();c4e("asyncIterator")});var SW=V(()=>{var u4e=ya();u4e("hasInstance")});var _W=V(()=>{var h4e=ya();h4e("isConcatSpreadable")});var wW=V(()=>{var p4e=ya();p4e("iterator")});var RW=V(()=>{var d4e=ya();d4e("match")});var MW=V(()=>{var f4e=ya();f4e("matchAll")});var DW=V(()=>{var m4e=ya();m4e("replace")});var CW=V(()=>{var g4e=ya();g4e("search")});var AW=V(()=>{var v4e=ya();v4e("species")});var OW=V(()=>{var y4e=ya();y4e("split")});var PW=V(()=>{var T4e=ya(),E4e=M2();T4e("toPrimitive");E4e()});var NW=V(()=>{var b4e=bn(),x4e=ya(),I4e=Ya();x4e("toStringTag");I4e(b4e("Symbol"),"Symbol")});var LW=V(()=>{var S4e=ya();S4e("unscopables")});var Y2=V((D5t,FW)=>{var _4e=Ti(),w4e=String,R4e=TypeError;FW.exports=function(t){if(typeof t=="object"||_4e(t))return t;throw R4e("Can't set "+w4e(t)+" as a prototype")}});var gc=V((C5t,HW)=>{var M4e=Bt(),D4e=jr(),C4e=Y2();HW.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var t=!1,r={},e;try{e=M4e(Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set),e(r,[]),t=r instanceof Array}catch(i){}return function(n,s){return D4e(n),C4e(s),t?e(n,s):n.__proto__=s,n}}():void 0)});var X2=V((A5t,UW)=>{var A4e=Vi().f;UW.exports=function(t,r,e){e in t||A4e(t,e,{configurable:!0,get:function(){return r[e]},set:function(i){r[e]=i}})}});var Om=V((O5t,kW)=>{var O4e=Ti(),P4e=si(),BW=gc();kW.exports=function(t,r,e){var i,n;return BW&&O4e(i=r.constructor)&&i!==e&&P4e(n=i.prototype)&&n!==e.prototype&&BW(t,n),t}});var hv=V((P5t,GW)=>{var N4e=mi();GW.exports=function(t,r){return t===void 0?arguments.length<2?"":r:N4e(t)}});var $2=V((N5t,VW)=>{var L4e=si(),F4e=va();VW.exports=function(t,r){L4e(r)&&"cause"in r&&F4e(t,"cause",r.cause)}});var g1=V((L5t,WW)=>{var H4e=Bt(),zW=Error,U4e=H4e("".replace),B4e=function(t){return String(zW(t).stack)}("zxcasd"),jW=/\n\s*at [^:]*:[^\n]*/,k4e=jW.test(B4e);WW.exports=function(t,r){if(k4e&&typeof t=="string"&&!zW.prepareStackTrace)for(;r--;)t=U4e(t,jW,"");return t}});var Ew=V((F5t,qW)=>{var G4e=Rt(),V4e=Ao();qW.exports=!G4e(function(){var t=Error("a");return"stack"in t?(Object.defineProperty(t,"stack",V4e(1,7)),t.stack!==7):!0})});var K2=V((H5t,JW)=>{"use strict";var YW=bn(),z4e=Si(),Z2=va(),j4e=Oo(),XW=gc(),$W=o1(),ZW=X2(),W4e=Om(),q4e=hv(),Y4e=$2(),X4e=g1(),$4e=Ew(),Z4e=Pr(),KW=Bn();JW.exports=function(t,r,e,i){var n="stackTraceLimit",s=i?2:1,a=t.split("."),o=a[a.length-1],l=YW.apply(null,a);if(l){var c=l.prototype;if(!KW&&z4e(c,"cause")&&delete c.cause,!e)return l;var u=YW("Error"),h=r(function(p,d){var f=q4e(i?d:p,void 0),m=i?new l(p):new l;return f!==void 0&&Z2(m,"message",f),$4e&&Z2(m,"stack",X4e(m.stack,2)),this&&j4e(c,this)&&W4e(m,this,h),arguments.length>s&&Y4e(m,arguments[s]),m});if(h.prototype=c,o!=="Error"?XW?XW(h,u):$W(h,u,{name:!0}):Z4e&&n in l&&(ZW(h,l,n),ZW(h,l,"prepareStackTrace")),$W(h,l),!KW)try{c.name!==o&&Z2(c,"name",o),c.constructor=h}catch(p){}return h}}});var rq=V(()=>{var eq=Ne(),K4e=ir(),wu=Po(),tq=K2(),J2="WebAssembly",QW=K4e[J2],bw=Error("e",{cause:7}).cause!==7,Pm=function(t,r){var e={};e[t]=tq(t,r,bw),eq({global:!0,constructor:!0,arity:1,forced:bw},e)},Q2=function(t,r){if(QW&&QW[t]){var e={};e[t]=tq(J2+"."+t,r,bw),eq({target:J2,stat:!0,constructor:!0,arity:1,forced:bw},e)}};Pm("Error",function(t){return function(e){return wu(t,this,arguments)}});Pm("EvalError",function(t){return function(e){return wu(t,this,arguments)}});Pm("RangeError",function(t){return function(e){return wu(t,this,arguments)}});Pm("ReferenceError",function(t){return function(e){return wu(t,this,arguments)}});Pm("SyntaxError",function(t){return function(e){return wu(t,this,arguments)}});Pm("TypeError",function(t){return function(e){return wu(t,this,arguments)}});Pm("URIError",function(t){return function(e){return wu(t,this,arguments)}});Q2("CompileError",function(t){return function(e){return wu(t,this,arguments)}});Q2("LinkError",function(t){return function(e){return wu(t,this,arguments)}});Q2("RuntimeError",function(t){return function(e){return wu(t,this,arguments)}})});var eN=V((k5t,nq)=>{"use strict";var J4e=Pr(),Q4e=Rt(),eUe=jr(),tUe=qa(),iq=hv(),xw=Error.prototype.toString,rUe=Q4e(function(){if(J4e){var t=tUe(Object.defineProperty({},"name",{get:function(){return this===t}}));if(xw.call(t)!=="true")return!0}return xw.call({message:1,name:2})!=="2: 1"||xw.call({})!=="Error"});nq.exports=rUe?function(){var r=eUe(this),e=iq(r.name,"Error"),i=iq(r.message);return e?i?e+": "+i:e:i}:xw});var oq=V(()=>{var iUe=Dn(),sq=eN(),aq=Error.prototype;aq.toString!==sq&&iUe(aq,"toString",sq)});var Iw=V((z5t,lq)=>{var nUe=Rt();lq.exports=!nUe(function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype})});var No=V((j5t,uq)=>{var sUe=Si(),aUe=Ti(),oUe=Li(),lUe=n1(),cUe=Iw(),cq=lUe("IE_PROTO"),tN=Object,uUe=tN.prototype;uq.exports=cUe?tN.getPrototypeOf:function(t){var r=oUe(t);if(sUe(r,cq))return r[cq];var e=r.constructor;return aUe(e)&&r instanceof e?e.prototype:r instanceof tN?uUe:null}});var pv=V((W5t,hq)=>{hq.exports={}});var Sw=V((q5t,pq)=>{var hUe=fi(),pUe=pv(),dUe=hUe("iterator"),fUe=Array.prototype;pq.exports=function(t){return t!==void 0&&(pUe.Array===t||fUe[dUe]===t)}});var dv=V((Y5t,fq)=>{var mUe=mc(),dq=Iu(),gUe=ma(),vUe=pv(),yUe=fi(),TUe=yUe("iterator");fq.exports=function(t){if(!gUe(t))return dq(t,TUe)||dq(t,"@@iterator")||vUe[mUe(t)]}});var v1=V((X5t,mq)=>{var EUe=ni(),bUe=fs(),xUe=jr(),IUe=Dd(),SUe=dv(),_Ue=TypeError;mq.exports=function(t,r){var e=arguments.length<2?SUe(t):r;if(bUe(e))return xUe(EUe(e,t));throw _Ue(IUe(t)+" is not iterable")}});var rN=V(($5t,vq)=>{var wUe=ni(),gq=jr(),RUe=Iu();vq.exports=function(t,r,e){var i,n;gq(t);try{if(i=RUe(t,"return"),!i){if(r==="throw")throw e;return e}i=wUe(i,t)}catch(s){n=!0,i=s}if(r==="throw")throw e;if(n)throw i;return gq(i),e}});var vc=V((Z5t,bq)=>{var MUe=fl(),DUe=ni(),CUe=jr(),AUe=Dd(),OUe=Sw(),PUe=ln(),yq=Oo(),NUe=v1(),LUe=dv(),Tq=rN(),FUe=TypeError,_w=function(t,r){this.stopped=t,this.result=r},Eq=_w.prototype;bq.exports=function(t,r,e){var i=e&&e.that,n=!!(e&&e.AS_ENTRIES),s=!!(e&&e.IS_RECORD),a=!!(e&&e.IS_ITERATOR),o=!!(e&&e.INTERRUPTED),l=MUe(r,i),c,u,h,p,d,f,m,g=function(E){return c&&Tq(c,"normal",E),new _w(!0,E)},y=function(E){return n?(CUe(E),o?l(E[0],E[1],g):l(E[0],E[1])):o?l(E,g):l(E)};if(s)c=t.iterator;else if(a)c=t;else{if(u=LUe(t),!u)throw FUe(AUe(t)+" is not iterable");if(OUe(u)){for(h=0,p=PUe(t);p>h;h++)if(d=y(t[h]),d&&yq(Eq,d))return d;return new _w(!1)}c=NUe(t,u)}for(f=s?t.next:c.next;!(m=DUe(f,c)).done;){try{d=y(m.value)}catch(E){Tq(c,"throw",E)}if(typeof d=="object"&&d&&yq(Eq,d))return d}return new _w(!1)}});var Iq=V(()=>{"use strict";var HUe=Ne(),UUe=Oo(),BUe=No(),Rw=gc(),kUe=o1(),xq=qa(),ww=va(),iN=Ao(),GUe=g1(),VUe=$2(),zUe=vc(),jUe=hv(),WUe=fi(),qUe=Ew(),YUe=WUe("toStringTag"),Mw=Error,XUe=[].push,y1=function(r,e){var i=arguments.length>2?arguments[2]:void 0,n=UUe(nN,this),s;Rw?s=Rw(Mw(),n?BUe(this):nN):(s=n?this:xq(nN),ww(s,YUe,"Error")),e!==void 0&&ww(s,"message",jUe(e)),qUe&&ww(s,"stack",GUe(s.stack,1)),VUe(s,i);var a=[];return zUe(r,XUe,{that:a}),ww(s,"errors",a),s};Rw?Rw(y1,Mw):kUe(y1,Mw,{name:!0});var nN=y1.prototype=xq(Mw.prototype,{constructor:iN(1,y1),message:iN(1,""),name:iN(1,"AggregateError")});HUe({global:!0,constructor:!0,arity:2},{AggregateError:y1})});var Sq=V(()=>{Iq()});var Mq=V(()=>{var $Ue=Ne(),ZUe=bn(),KUe=Po(),_q=Rt(),JUe=K2(),sN="AggregateError",wq=ZUe(sN),Rq=!_q(function(){return wq([1]).errors[0]!==1})&&_q(function(){return wq([1],sN,{cause:7}).cause!==7});$Ue({global:!0,constructor:!0,arity:2,forced:Rq},{AggregateError:JUe(sN,function(t){return function(e,i){return KUe(t,this,arguments)}},Rq,!0)})});var gl=V((i6t,Dq)=>{var QUe=fi(),eBe=qa(),tBe=Vi().f,aN=QUe("unscopables"),oN=Array.prototype;oN[aN]==null&&tBe(oN,aN,{configurable:!0,value:eBe(null)});Dq.exports=function(t){oN[aN][t]=!0}});var Cq=V(()=>{"use strict";var rBe=Ne(),iBe=Li(),nBe=ln(),sBe=ms(),aBe=gl();rBe({target:"Array",proto:!0},{at:function(r){var e=iBe(this),i=nBe(e),n=sBe(r),s=n>=0?n:i+n;return s<0||s>=i?void 0:e[s]}});aBe("at")});var fv=V((a6t,Aq)=>{var oBe=TypeError,lBe=9007199254740991;Aq.exports=function(t){if(t>lBe)throw oBe("Maximum allowed index exceeded");return t}});var mv=V((o6t,Oq)=>{var cBe=Rt(),uBe=fi(),hBe=xu(),pBe=uBe("species");Oq.exports=function(t){return hBe>=51||!cBe(function(){var r=[],e=r.constructor={};return e[pBe]=function(){return{foo:1}},r[t](Boolean).foo!==1})}});var Fq=V(()=>{"use strict";var dBe=Ne(),fBe=Rt(),mBe=Wh(),gBe=si(),vBe=Li(),yBe=ln(),Pq=fv(),Nq=_u(),TBe=lv(),EBe=mv(),bBe=fi(),xBe=xu(),Lq=bBe("isConcatSpreadable"),IBe=xBe>=51||!fBe(function(){var t=[];return t[Lq]=!1,t.concat()[0]!==t}),SBe=EBe("concat"),_Be=function(t){if(!gBe(t))return!1;var r=t[Lq];return r!==void 0?!!r:mBe(t)},wBe=!IBe||!SBe;dBe({target:"Array",proto:!0,arity:1,forced:wBe},{concat:function(r){var e=vBe(this),i=TBe(e,0),n=0,s,a,o,l,c;for(s=-1,o=arguments.length;s<o;s++)if(c=s===-1?e:arguments[s],_Be(c))for(l=yBe(c),Pq(n+l),a=0;a<l;a++,n++)a in c&&Nq(i,n,c[a]);else Pq(n+1),Nq(i,n++,c);return i.length=n,i}})});var T1=V((u6t,Uq)=>{"use strict";var Hq=Dd(),RBe=TypeError;Uq.exports=function(t,r){if(!delete t[r])throw RBe("Cannot delete property "+Hq(r)+" of "+Hq(t))}});var cN=V((h6t,Bq)=>{"use strict";var MBe=Li(),lN=Su(),DBe=ln(),CBe=T1(),ABe=Math.min;Bq.exports=[].copyWithin||function(r,e){var i=MBe(this),n=DBe(i),s=lN(r,n),a=lN(e,n),o=arguments.length>2?arguments[2]:void 0,l=ABe((o===void 0?n:lN(o,n))-a,n-s),c=1;for(a<s&&s<a+l&&(c=-1,a+=l-1,s+=l-1);l-- >0;)a in i?i[s]=i[a]:CBe(i,s),s+=c,a+=c;return i}});var kq=V(()=>{var OBe=Ne(),PBe=cN(),NBe=gl();OBe({target:"Array",proto:!0},{copyWithin:PBe});NBe("copyWithin")});var Ru=V((f6t,Gq)=>{"use strict";var LBe=Rt();Gq.exports=function(t,r){var e=[][t];return!!e&&LBe(function(){e.call(null,r||function(){return 1},1)})}});var Vq=V(()=>{"use strict";var FBe=Ne(),HBe=ws().every,UBe=Ru(),BBe=UBe("every");FBe({target:"Array",proto:!0,forced:!BBe},{every:function(r){return HBe(this,r,arguments.length>1?arguments[1]:void 0)}})});var Dw=V((v6t,jq)=>{"use strict";var kBe=Li(),zq=Su(),GBe=ln();jq.exports=function(r){for(var e=kBe(this),i=GBe(e),n=arguments.length,s=zq(n>1?arguments[1]:void 0,i),a=n>2?arguments[2]:void 0,o=a===void 0?i:zq(a,i);o>s;)e[s++]=r;return e}});var Wq=V(()=>{var VBe=Ne(),zBe=Dw(),jBe=gl();VBe({target:"Array",proto:!0},{fill:zBe});jBe("fill")});var qq=V(()=>{"use strict";var WBe=Ne(),qBe=ws().filter,YBe=mv(),XBe=YBe("filter");WBe({target:"Array",proto:!0,forced:!XBe},{filter:function(r){return qBe(this,r,arguments.length>1?arguments[1]:void 0)}})});var Xq=V(()=>{"use strict";var $Be=Ne(),ZBe=ws().find,KBe=gl(),uN="find",Yq=!0;uN in[]&&Array(1)[uN](function(){Yq=!1});$Be({target:"Array",proto:!0,forced:Yq},{find:function(r){return ZBe(this,r,arguments.length>1?arguments[1]:void 0)}});KBe(uN)});var Zq=V(()=>{"use strict";var JBe=Ne(),QBe=ws().findIndex,eke=gl(),hN="findIndex",$q=!0;hN in[]&&Array(1)[hN](function(){$q=!1});JBe({target:"Array",proto:!0,forced:$q},{findIndex:function(r){return QBe(this,r,arguments.length>1?arguments[1]:void 0)}});eke(hN)});var E1=V((w6t,Jq)=>{var tke=fl(),rke=xm(),ike=Li(),nke=ln(),Kq=function(t){var r=t==1;return function(e,i,n){for(var s=ike(e),a=rke(s),o=tke(i,n),l=nke(a),c,u;l-- >0;)if(c=a[l],u=o(c,l,s),u)switch(t){case 0:return c;case 1:return l}return r?-1:void 0}};Jq.exports={findLast:Kq(0),findLastIndex:Kq(1)}});var Qq=V(()=>{"use strict";var ske=Ne(),ake=E1().findLast,oke=gl();ske({target:"Array",proto:!0},{findLast:function(r){return ake(this,r,arguments.length>1?arguments[1]:void 0)}});oke("findLast")});var eY=V(()=>{"use strict";var lke=Ne(),cke=E1().findLastIndex,uke=gl();lke({target:"Array",proto:!0},{findLastIndex:function(r){return cke(this,r,arguments.length>1?arguments[1]:void 0)}});uke("findLastIndex")});var pN=V((A6t,rY)=>{"use strict";var hke=Wh(),pke=ln(),dke=fv(),fke=fl(),tY=function(t,r,e,i,n,s,a,o){for(var l=n,c=0,u=a?fke(a,o):!1,h,p;c<i;)c in e&&(h=u?u(e[c],c,r):e[c],s>0&&hke(h)?(p=pke(h),l=tY(t,r,h,p,l,s-1)-1):(dke(l+1),t[l]=h),l++),c++;return l};rY.exports=tY});var iY=V(()=>{"use strict";var mke=Ne(),gke=pN(),vke=Li(),yke=ln(),Tke=ms(),Eke=lv();mke({target:"Array",proto:!0},{flat:function(){var r=arguments.length?arguments[0]:void 0,e=vke(this),i=yke(e),n=Eke(e,0);return n.length=gke(n,e,e,i,0,r===void 0?1:Tke(r)),n}})});var nY=V(()=>{"use strict";var bke=Ne(),xke=pN(),Ike=fs(),Ske=Li(),_ke=ln(),wke=lv();bke({target:"Array",proto:!0},{flatMap:function(r){var e=Ske(this),i=_ke(e),n;return Ike(r),n=wke(e,0),n.length=xke(n,e,e,i,0,1,r,arguments.length>1?arguments[1]:void 0),n}})});var dN=V((F6t,sY)=>{"use strict";var Rke=ws().forEach,Mke=Ru(),Dke=Mke("forEach");sY.exports=Dke?[].forEach:function(r){return Rke(this,r,arguments.length>1?arguments[1]:void 0)}});var oY=V(()=>{"use strict";var Cke=Ne(),aY=dN();Cke({target:"Array",proto:!0,forced:[].forEach!=aY},{forEach:aY})});var cY=V((B6t,lY)=>{var Ake=jr(),Oke=rN();lY.exports=function(t,r,e,i){try{return i?r(Ake(e)[0],e[1]):r(e)}catch(n){Oke(t,"throw",n)}}});var fN=V((k6t,pY)=>{"use strict";var Pke=fl(),Nke=ni(),Lke=Li(),Fke=cY(),Hke=Sw(),Uke=Dm(),Bke=ln(),uY=_u(),kke=v1(),Gke=dv(),hY=Array;pY.exports=function(r){var e=Lke(r),i=Uke(this),n=arguments.length,s=n>1?arguments[1]:void 0,a=s!==void 0;a&&(s=Pke(s,n>2?arguments[2]:void 0));var o=Gke(e),l=0,c,u,h,p,d,f;if(o&&!(this===hY&&Hke(o)))for(p=kke(e,o),d=p.next,u=i?new this:[];!(h=Nke(d,p)).done;l++)f=a?Fke(p,s,[h.value,l],!0):h.value,uY(u,l,f);else for(c=Bke(e),u=i?new this(c):hY(c);c>l;l++)f=a?s(e[l],l):e[l],uY(u,l,f);return u.length=l,u}});var b1=V((G6t,gY)=>{var Vke=fi(),fY=Vke("iterator"),mY=!1;try{dY=0,mN={next:function(){return{done:!!dY++}},return:function(){mY=!0}},mN[fY]=function(){return this},Array.from(mN,function(){throw 2})}catch(t){}var dY,mN;gY.exports=function(t,r){if(!r&&!mY)return!1;var e=!1;try{var i={};i[fY]=function(){return{next:function(){return{done:e=!0}}}},t(i)}catch(n){}return e}});var vY=V(()=>{var zke=Ne(),jke=fN(),Wke=b1(),qke=!Wke(function(t){Array.from(t)});zke({target:"Array",stat:!0,forced:qke},{from:jke})});var yY=V(()=>{"use strict";var Yke=Ne(),Xke=nv().includes,$ke=Rt(),Zke=gl(),Kke=$ke(function(){return!Array(1).includes()});Yke({target:"Array",proto:!0,forced:Kke},{includes:function(r){return Xke(this,r,arguments.length>1?arguments[1]:void 0)}});Zke("includes")});var EY=V(()=>{"use strict";var Jke=Ne(),Qke=jh(),e8e=nv().indexOf,t8e=Ru(),gN=Qke([].indexOf),TY=!!gN&&1/gN([1],1,-0)<0,r8e=t8e("indexOf");Jke({target:"Array",proto:!0,forced:TY||!r8e},{indexOf:function(r){var e=arguments.length>1?arguments[1]:void 0;return TY?gN(this,r,e)||0:e8e(this,r,e)}})});var bY=V(()=>{var i8e=Ne(),n8e=Wh();i8e({target:"Array",stat:!0},{isArray:n8e})});var EN=V((Z6t,SY)=>{"use strict";var s8e=Rt(),a8e=Ti(),o8e=si(),l8e=qa(),xY=No(),c8e=Dn(),u8e=fi(),h8e=Bn(),TN=u8e("iterator"),IY=!1,Xh,vN,yN;[].keys&&(yN=[].keys(),"next"in yN?(vN=xY(xY(yN)),vN!==Object.prototype&&(Xh=vN)):IY=!0);var p8e=!o8e(Xh)||s8e(function(){var t={};return Xh[TN].call(t)!==t});p8e?Xh={}:h8e&&(Xh=l8e(Xh));a8e(Xh[TN])||c8e(Xh,TN,function(){return this});SY.exports={IteratorPrototype:Xh,BUGGY_SAFARI_ITERATORS:IY}});var Cw=V((K6t,_Y)=>{"use strict";var d8e=EN().IteratorPrototype,f8e=qa(),m8e=Ao(),g8e=Ya(),v8e=pv(),y8e=function(){return this};_Y.exports=function(t,r,e,i){var n=r+" Iterator";return t.prototype=f8e(d8e,{next:m8e(+!i,e)}),g8e(t,n,!1,!0),v8e[n]=y8e,t}});var Pw=V((J6t,LY)=>{"use strict";var T8e=Ne(),E8e=ni(),Aw=Bn(),PY=Rm(),b8e=Ti(),x8e=Cw(),wY=No(),RY=gc(),I8e=Ya(),S8e=va(),bN=Dn(),_8e=fi(),MY=pv(),NY=EN(),w8e=PY.PROPER,R8e=PY.CONFIGURABLE,DY=NY.IteratorPrototype,Ow=NY.BUGGY_SAFARI_ITERATORS,x1=_8e("iterator"),CY="keys",I1="values",AY="entries",OY=function(){return this};LY.exports=function(t,r,e,i,n,s,a){x8e(e,r,i);var o=function(y){if(y===n&&p)return p;if(!Ow&&y in u)return u[y];switch(y){case CY:return function(){return new e(this,y)};case I1:return function(){return new e(this,y)};case AY:return function(){return new e(this,y)}}return function(){return new e(this)}},l=r+" Iterator",c=!1,u=t.prototype,h=u[x1]||u["@@iterator"]||n&&u[n],p=!Ow&&h||o(n),d=r=="Array"&&u.entries||h,f,m,g;if(d&&(f=wY(d.call(new t)),f!==Object.prototype&&f.next&&(!Aw&&wY(f)!==DY&&(RY?RY(f,DY):b8e(f[x1])||bN(f,x1,OY)),I8e(f,l,!0,!0),Aw&&(MY[l]=OY))),w8e&&n==I1&&h&&h.name!==I1&&(!Aw&&R8e?S8e(u,"name",I1):(c=!0,p=function(){return E8e(h,this)})),n)if(m={values:o(I1),keys:s?p:o(CY),entries:o(AY)},a)for(g in m)(Ow||c||!(g in u))&&bN(u,g,m[g]);else T8e({target:r,proto:!0,forced:Ow||c},m);return(!Aw||a)&&u[x1]!==p&&bN(u,x1,p,{name:n}),MY[r]=p,m}});var S1=V((Q6t,FY)=>{FY.exports=function(t,r){return{value:t,done:r}}});var _1=V((eHt,GY)=>{"use strict";var M8e=ga(),xN=gl(),HY=pv(),BY=cs(),D8e=Vi().f,C8e=Pw(),Nw=S1(),A8e=Bn(),O8e=Pr(),kY="Array Iterator",P8e=BY.set,N8e=BY.getterFor(kY);GY.exports=C8e(Array,"Array",function(t,r){P8e(this,{type:kY,target:M8e(t),index:0,kind:r})},function(){var t=N8e(this),r=t.target,e=t.kind,i=t.index++;return!r||i>=r.length?(t.target=void 0,Nw(void 0,!0)):e=="keys"?Nw(i,!1):e=="values"?Nw(r[i],!1):Nw([i,r[i]],!1)},"values");var UY=HY.Arguments=HY.Array;xN("keys");xN("values");xN("entries");if(!A8e&&O8e&&UY.name!=="values")try{D8e(UY,"name",{value:"values"})}catch(t){}});var VY=V(()=>{"use strict";var L8e=Ne(),F8e=Bt(),H8e=xm(),U8e=ga(),B8e=Ru(),k8e=F8e([].join),G8e=H8e!=Object,V8e=B8e("join",",");L8e({target:"Array",proto:!0,forced:G8e||!V8e},{join:function(r){return k8e(U8e(this),r===void 0?",":r)}})});var SN=V((iHt,jY)=>{"use strict";var z8e=Po(),j8e=ga(),W8e=ms(),q8e=ln(),Y8e=Ru(),X8e=Math.min,IN=[].lastIndexOf,zY=!!IN&&1/[1].lastIndexOf(1,-0)<0,$8e=Y8e("lastIndexOf"),Z8e=zY||!$8e;jY.exports=Z8e?function(r){if(zY)return z8e(IN,this,arguments)||0;var e=j8e(this),i=q8e(e),n=i-1;for(arguments.length>1&&(n=X8e(n,W8e(arguments[1]))),n<0&&(n=i+n);n>=0;n--)if(n in e&&e[n]===r)return n||0;return-1}:IN});var qY=V(()=>{var K8e=Ne(),WY=SN();K8e({target:"Array",proto:!0,forced:WY!==[].lastIndexOf},{lastIndexOf:WY})});var YY=V(()=>{"use strict";var J8e=Ne(),Q8e=ws().map,eGe=mv(),tGe=eGe("map");J8e({target:"Array",proto:!0,forced:!tGe},{map:function(r){return Q8e(this,r,arguments.length>1?arguments[1]:void 0)}})});var $Y=V(()=>{"use strict";var rGe=Ne(),iGe=Rt(),nGe=Dm(),sGe=_u(),XY=Array,aGe=iGe(function(){function t(){}return!(XY.of.call(t)instanceof t)});rGe({target:"Array",stat:!0,forced:aGe},{of:function(){for(var r=0,e=arguments.length,i=new(nGe(this)?this:XY)(e);e>r;)sGe(i,r,arguments[r++]);return i.length=e,i}})});var Lw=V((uHt,ZY)=>{"use strict";var oGe=Pr(),lGe=Wh(),cGe=TypeError,uGe=Object.getOwnPropertyDescriptor,hGe=oGe&&!function(){if(this!==void 0)return!0;try{Object.defineProperty([],"length",{writable:!1}).length=1}catch(t){return t instanceof TypeError}}();ZY.exports=hGe?function(t,r){if(lGe(t)&&!uGe(t,"length").writable)throw cGe("Cannot set read only .length");return t.length=r}:function(t,r){return t.length=r}});var KY=V(()=>{"use strict";var pGe=Ne(),dGe=Li(),fGe=ln(),mGe=Lw(),gGe=fv(),vGe=Rt(),yGe=vGe(function(){return[].push.call({length:4294967296},1)!==4294967297}),TGe=!function(){try{Object.defineProperty([],"length",{writable:!1}).push()}catch(t){return t instanceof TypeError}}();pGe({target:"Array",proto:!0,arity:1,forced:yGe||TGe},{push:function(r){var e=dGe(this),i=fGe(e),n=arguments.length;gGe(i+n);for(var s=0;s<n;s++)e[i]=arguments[s],i++;return mGe(e,i),i}})});var w1=V((dHt,QY)=>{var EGe=fs(),bGe=Li(),xGe=xm(),IGe=ln(),SGe=TypeError,JY=function(t){return function(r,e,i,n){EGe(e);var s=bGe(r),a=xGe(s),o=IGe(s),l=t?o-1:0,c=t?-1:1;if(i<2)for(;;){if(l in a){n=a[l],l+=c;break}if(l+=c,t?l<0:o<=l)throw SGe("Reduce of empty array with no initial value")}for(;t?l>=0:o>l;l+=c)l in a&&(n=e(n,a[l],l,s));return n}};QY.exports={left:JY(!1),right:JY(!0)}});var Mu=V((fHt,eX)=>{var _Ge=fa(),wGe=ir();eX.exports=_Ge(wGe.process)=="process"});var rX=V(()=>{"use strict";var RGe=Ne(),MGe=w1().left,DGe=Ru(),tX=xu(),CGe=Mu(),AGe=DGe("reduce"),OGe=!CGe&&tX>79&&tX<83;RGe({target:"Array",proto:!0,forced:!AGe||OGe},{reduce:function(r){var e=arguments.length;return MGe(this,r,e,e>1?arguments[1]:void 0)}})});var nX=V(()=>{"use strict";var PGe=Ne(),NGe=w1().right,LGe=Ru(),iX=xu(),FGe=Mu(),HGe=LGe("reduceRight"),UGe=!FGe&&iX>79&&iX<83;PGe({target:"Array",proto:!0,forced:!HGe||UGe},{reduceRight:function(r){return NGe(this,r,arguments.length,arguments.length>1?arguments[1]:void 0)}})});var aX=V(()=>{"use strict";var BGe=Ne(),kGe=Bt(),GGe=Wh(),VGe=kGe([].reverse),sX=[1,2];BGe({target:"Array",proto:!0,forced:String(sX)===String(sX.reverse())},{reverse:function(){return GGe(this)&&(this.length=this.length),VGe(this)}})});var cX=V(()=>{"use strict";var zGe=Ne(),oX=Wh(),jGe=Dm(),WGe=si(),lX=Su(),qGe=ln(),YGe=ga(),XGe=_u(),$Ge=fi(),ZGe=mv(),KGe=Od(),JGe=ZGe("slice"),QGe=$Ge("species"),_N=Array,eVe=Math.max;zGe({target:"Array",proto:!0,forced:!JGe},{slice:function(r,e){var i=YGe(this),n=qGe(i),s=lX(r,n),a=lX(e===void 0?n:e,n),o,l,c;if(oX(i)&&(o=i.constructor,jGe(o)&&(o===_N||oX(o.prototype))?o=void 0:WGe(o)&&(o=o[QGe],o===null&&(o=void 0)),o===_N||o===void 0))return KGe(i,s,a);for(l=new(o===void 0?_N:o)(eVe(a-s,0)),c=0;s<a;s++,c++)s in i&&XGe(l,c,i[s]);return l.length=c,l}})});var uX=V(()=>{"use strict";var tVe=Ne(),rVe=ws().some,iVe=Ru(),nVe=iVe("some");tVe({target:"Array",proto:!0,forced:!nVe},{some:function(r){return rVe(this,r,arguments.length>1?arguments[1]:void 0)}})});var Fw=V((_Ht,pX)=>{var hX=ov(),sVe=Math.floor,wN=function(t,r){var e=t.length,i=sVe(e/2);return e<8?aVe(t,r):oVe(t,wN(hX(t,0,i),r),wN(hX(t,i),r),r)},aVe=function(t,r){for(var e=t.length,i=1,n,s;i<e;){for(s=i,n=t[i];s&&r(t[s-1],n)>0;)t[s]=t[--s];s!==i++&&(t[s]=n)}return t},oVe=function(t,r,e,i){for(var n=r.length,s=e.length,a=0,o=0;a<n||o<s;)t[a+o]=a<n&&o<s?i(r[a],e[o])<=0?r[a++]:e[o++]:a<n?r[a++]:e[o++];return t};pX.exports=wN});var RN=V((wHt,fX)=>{var lVe=bu(),dX=lVe.match(/firefox\/(\d+)/i);fX.exports=!!dX&&+dX[1]});var MN=V((RHt,mX)=>{var cVe=bu();mX.exports=/MSIE|Trident/.test(cVe)});var Hw=V((MHt,vX)=>{var uVe=bu(),gX=uVe.match(/AppleWebKit\/(\d+)\./);vX.exports=!!gX&&+gX[1]});var wX=V(()=>{"use strict";var hVe=Ne(),SX=Bt(),pVe=fs(),dVe=Li(),yX=ln(),fVe=T1(),TX=mi(),DN=Rt(),mVe=Fw(),gVe=Ru(),EX=RN(),vVe=MN(),bX=xu(),xX=Hw(),Nd=[],IX=SX(Nd.sort),yVe=SX(Nd.push),TVe=DN(function(){Nd.sort(void 0)}),EVe=DN(function(){Nd.sort(null)}),bVe=gVe("sort"),_X=!DN(function(){if(bX)return bX<70;if(!(EX&&EX>3)){if(vVe)return!0;if(xX)return xX<603;var t="",r,e,i,n;for(r=65;r<76;r++){switch(e=String.fromCharCode(r),r){case 66:case 69:case 70:case 72:i=3;break;case 68:case 71:i=4;break;default:i=2}for(n=0;n<47;n++)Nd.push({k:e+n,v:i})}for(Nd.sort(function(s,a){return a.v-s.v}),n=0;n<Nd.length;n++)e=Nd[n].k.charAt(0),t.charAt(t.length-1)!==e&&(t+=e);return t!=="DGBEFHACIJK"}}),xVe=TVe||!EVe||!bVe||!_X,IVe=function(t){return function(r,e){return e===void 0?-1:r===void 0?1:t!==void 0?+t(r,e)||0:TX(r)>TX(e)?1:-1}};hVe({target:"Array",proto:!0,forced:xVe},{sort:function(r){r!==void 0&&pVe(r);var e=dVe(this);if(_X)return r===void 0?IX(e):IX(e,r);var i=[],n=yX(e),s,a;for(a=0;a<n;a++)a in e&&yVe(i,e[a]);for(mVe(i,IVe(r)),s=yX(i),a=0;a<s;)e[a]=i[a++];for(;a<n;)fVe(e,a++);return e}})});var Nm=V((AHt,MX)=>{"use strict";var SVe=bn(),_Ve=Vi(),wVe=fi(),RVe=Pr(),RX=wVe("species");MX.exports=function(t){var r=SVe(t),e=_Ve.f;RVe&&r&&!r[RX]&&e(r,RX,{configurable:!0,get:function(){return this}})}});var DX=V(()=>{var MVe=Nm();MVe("Array")});var CX=V(()=>{"use strict";var DVe=Ne(),CVe=Li(),AVe=Su(),OVe=ms(),PVe=ln(),NVe=Lw(),LVe=fv(),FVe=lv(),HVe=_u(),CN=T1(),UVe=mv(),BVe=UVe("splice"),kVe=Math.max,GVe=Math.min;DVe({target:"Array",proto:!0,forced:!BVe},{splice:function(r,e){var i=CVe(this),n=PVe(i),s=AVe(r,n),a=arguments.length,o,l,c,u,h,p;for(a===0?o=l=0:a===1?(o=0,l=n-s):(o=a-2,l=GVe(kVe(OVe(e),0),n-s)),LVe(n+o-l),c=FVe(i,l),u=0;u<l;u++)h=s+u,h in i&&HVe(c,u,i[h]);if(c.length=l,o<l){for(u=s;u<n-l;u++)h=u+l,p=u+o,h in i?i[p]=i[h]:CN(i,p);for(u=n;u>n-l+o;u--)CN(i,u-1)}else if(o>l)for(u=n-l;u>s;u--)h=u+l-1,p=u+o-1,h in i?i[p]=i[h]:CN(i,p);for(u=0;u<o;u++)i[u+s]=arguments[u+2];return NVe(i,n-l+o),c}})});var AX=V(()=>{var VVe=gl();VVe("flat")});var OX=V(()=>{var zVe=gl();zVe("flatMap")});var PX=V(()=>{"use strict";var jVe=Ne(),WVe=Li(),qVe=ln(),YVe=Lw(),XVe=T1(),$Ve=fv(),ZVe=[].unshift(0)!==1,KVe=!function(){try{Object.defineProperty([],"length",{writable:!1}).unshift()}catch(t){return t instanceof TypeError}}();jVe({target:"Array",proto:!0,arity:1,forced:ZVe||KVe},{unshift:function(r){var e=WVe(this),i=qVe(e),n=arguments.length;if(n){$Ve(i+n);for(var s=i;s--;){var a=s+n;s in e?e[a]=e[s]:XVe(e,a)}for(var o=0;o<n;o++)e[o]=arguments[o]}return YVe(e,i+n)}})});var Uw=V((VHt,NX)=>{NX.exports=typeof ArrayBuffer!="undefined"&&typeof DataView!="undefined"});var gv=V((zHt,LX)=>{var JVe=Dn();LX.exports=function(t,r,e){for(var i in r)JVe(t,i,r[i],e);return t}});var yc=V((jHt,FX)=>{var QVe=Oo(),e7e=TypeError;FX.exports=function(t,r){if(QVe(r,t))return t;throw e7e("Incorrect invocation")}});var AN=V((WHt,HX)=>{var t7e=ms(),r7e=Wa(),i7e=RangeError;HX.exports=function(t){if(t===void 0)return 0;var r=t7e(t),e=r7e(r);if(r!==e)throw i7e("Wrong length or index");return e}});var BX=V((qHt,UX)=>{var n7e=Array,s7e=Math.abs,$h=Math.pow,a7e=Math.floor,o7e=Math.log,l7e=Math.LN2,c7e=function(t,r,e){var i=n7e(e),n=e*8-r-1,s=(1<<n)-1,a=s>>1,o=r===23?$h(2,-24)-$h(2,-77):0,l=t<0||t===0&&1/t<0?1:0,c=0,u,h,p;for(t=s7e(t),t!=t||t===1/0?(h=t!=t?1:0,u=s):(u=a7e(o7e(t)/l7e),p=$h(2,-u),t*p<1&&(u--,p*=2),u+a>=1?t+=o/p:t+=o*$h(2,1-a),t*p>=2&&(u++,p/=2),u+a>=s?(h=0,u=s):u+a>=1?(h=(t*p-1)*$h(2,r),u=u+a):(h=t*$h(2,a-1)*$h(2,r),u=0));r>=8;)i[c++]=h&255,h/=256,r-=8;for(u=u<<r|h,n+=r;n>0;)i[c++]=u&255,u/=256,n-=8;return i[--c]|=l*128,i},u7e=function(t,r){var e=t.length,i=e*8-r-1,n=(1<<i)-1,s=n>>1,a=i-7,o=e-1,l=t[o--],c=l&127,u;for(l>>=7;a>0;)c=c*256+t[o--],a-=8;for(u=c&(1<<-a)-1,c>>=-a,a+=r;a>0;)u=u*256+t[o--],a-=8;if(c===0)c=1-s;else{if(c===n)return u?NaN:l?-1/0:1/0;u=u+$h(2,r),c=c-s}return(l?-1:1)*u*$h(2,c-r)};UX.exports={pack:c7e,unpack:u7e}});var M1=V((YHt,n$)=>{"use strict";var Ww=ir(),UN=Bt(),ON=Pr(),h7e=Uw(),KX=Rm(),kX=va(),GX=gv(),PN=Rt(),Bw=yc(),p7e=ms(),d7e=Wa(),Vw=AN(),JX=BX(),f7e=No(),VX=gc(),m7e=zh().f,g7e=Vi().f,v7e=Dw(),y7e=ov(),QX=Ya(),e$=cs(),T7e=KX.PROPER,zX=KX.CONFIGURABLE,Tv=e$.get,jX=e$.set,zw="ArrayBuffer",t$="DataView",yv="prototype",E7e="Wrong length",r$="Wrong index",vl=Ww[zw],Lo=vl,vv=Lo&&Lo[yv],Du=Ww[t$],Lm=Du&&Du[yv],WX=Object.prototype,b7e=Ww.Array,jw=Ww.RangeError,x7e=UN(v7e),I7e=UN([].reverse),i$=JX.pack,qX=JX.unpack,YX=function(t){return[t&255]},XX=function(t){return[t&255,t>>8&255]},$X=function(t){return[t&255,t>>8&255,t>>16&255,t>>24&255]},ZX=function(t){return t[3]<<24|t[2]<<16|t[1]<<8|t[0]},S7e=function(t){return i$(t,23,4)},_7e=function(t){return i$(t,52,8)},kw=function(t,r){g7e(t[yv],r,{get:function(){return Tv(this)[r]}})},Ld=function(t,r,e,i){var n=Vw(e),s=Tv(t);if(n+r>s.byteLength)throw jw(r$);var a=Tv(s.buffer).bytes,o=n+s.byteOffset,l=y7e(a,o,o+r);return i?l:I7e(l)},Fd=function(t,r,e,i,n,s){var a=Vw(e),o=Tv(t);if(a+r>o.byteLength)throw jw(r$);for(var l=Tv(o.buffer).bytes,c=a+o.byteOffset,u=i(+n),h=0;h<r;h++)l[c+h]=u[s?h:r-h-1]};if(!h7e)Lo=function(r){Bw(this,vv);var e=Vw(r);jX(this,{bytes:x7e(b7e(e),0),byteLength:e}),ON||(this.byteLength=e)},vv=Lo[yv],Du=function(r,e,i){Bw(this,Lm),Bw(r,vv);var n=Tv(r).byteLength,s=p7e(e);if(s<0||s>n)throw jw("Wrong offset");if(i=i===void 0?n-s:d7e(i),s+i>n)throw jw(E7e);jX(this,{buffer:r,byteLength:i,byteOffset:s}),ON||(this.buffer=r,this.byteLength=i,this.byteOffset=s)},Lm=Du[yv],ON&&(kw(Lo,"byteLength"),kw(Du,"buffer"),kw(Du,"byteLength"),kw(Du,"byteOffset")),GX(Lm,{getInt8:function(r){return Ld(this,1,r)[0]<<24>>24},getUint8:function(r){return Ld(this,1,r)[0]},getInt16:function(r){var e=Ld(this,2,r,arguments.length>1?arguments[1]:void 0);return(e[1]<<8|e[0])<<16>>16},getUint16:function(r){var e=Ld(this,2,r,arguments.length>1?arguments[1]:void 0);return e[1]<<8|e[0]},getInt32:function(r){return ZX(Ld(this,4,r,arguments.length>1?arguments[1]:void 0))},getUint32:function(r){return ZX(Ld(this,4,r,arguments.length>1?arguments[1]:void 0))>>>0},getFloat32:function(r){return qX(Ld(this,4,r,arguments.length>1?arguments[1]:void 0),23)},getFloat64:function(r){return qX(Ld(this,8,r,arguments.length>1?arguments[1]:void 0),52)},setInt8:function(r,e){Fd(this,1,r,YX,e)},setUint8:function(r,e){Fd(this,1,r,YX,e)},setInt16:function(r,e){Fd(this,2,r,XX,e,arguments.length>2?arguments[2]:void 0)},setUint16:function(r,e){Fd(this,2,r,XX,e,arguments.length>2?arguments[2]:void 0)},setInt32:function(r,e){Fd(this,4,r,$X,e,arguments.length>2?arguments[2]:void 0)},setUint32:function(r,e){Fd(this,4,r,$X,e,arguments.length>2?arguments[2]:void 0)},setFloat32:function(r,e){Fd(this,4,r,S7e,e,arguments.length>2?arguments[2]:void 0)},setFloat64:function(r,e){Fd(this,8,r,_7e,e,arguments.length>2?arguments[2]:void 0)}});else{if(NN=T7e&&vl.name!==zw,!PN(function(){vl(1)})||!PN(function(){new vl(-1)})||PN(function(){return new vl,new vl(1.5),new vl(NaN),vl.length!=1||NN&&!zX})){for(Lo=function(r){return Bw(this,vv),new vl(Vw(r))},Lo[yv]=vv,LN=m7e(vl),FN=0;LN.length>FN;)(Gw=LN[FN++])in Lo||kX(Lo,Gw,vl[Gw]);vv.constructor=Lo}else NN&&zX&&kX(vl,"name",zw);VX&&f7e(Lm)!==WX&&VX(Lm,WX),R1=new Du(new Lo(2)),HN=UN(Lm.setInt8),R1.setInt8(0,2147483648),R1.setInt8(1,2147483649),(R1.getInt8(0)||!R1.getInt8(1))&&GX(Lm,{setInt8:function(r,e){HN(this,r,e<<24>>24)},setUint8:function(r,e){HN(this,r,e<<24>>24)}},{unsafe:!0})}var NN,LN,FN,Gw,R1,HN;QX(Lo,zw);QX(Du,t$);n$.exports={ArrayBuffer:Lo,DataView:Du}});var a$=V(()=>{"use strict";var w7e=Ne(),R7e=ir(),M7e=M1(),D7e=Nm(),BN="ArrayBuffer",s$=M7e[BN],C7e=R7e[BN];w7e({global:!0,constructor:!0,forced:C7e!==s$},{ArrayBuffer:s$});D7e(BN)});var _i=V((ZHt,g$)=>{"use strict";var A7e=Uw(),zN=Pr(),Ta=ir(),u$=Ti(),Xw=si(),Ud=Si(),jN=mc(),O7e=Dd(),P7e=va(),kN=Dn(),N7e=Vi().f,L7e=Oo(),$w=No(),bv=gc(),F7e=fi(),H7e=_m(),h$=cs(),p$=h$.enforce,U7e=h$.get,qw=Ta.Int8Array,GN=qw&&qw.prototype,o$=Ta.Uint8ClampedArray,l$=o$&&o$.prototype,Cu=qw&&$w(qw),Tc=GN&&$w(GN),B7e=Object.prototype,WN=Ta.TypeError,c$=F7e("toStringTag"),VN=H7e("TYPED_ARRAY_TAG"),Yw="TypedArrayConstructor",Zh=A7e&&!!bv&&jN(Ta.opera)!=="Opera",d$=!1,$a,Hd,Ev,Kh={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},qN={BigInt64Array:8,BigUint64Array:8},k7e=function(r){if(!Xw(r))return!1;var e=jN(r);return e==="DataView"||Ud(Kh,e)||Ud(qN,e)},f$=function(t){var r=$w(t);if(Xw(r)){var e=U7e(r);return e&&Ud(e,Yw)?e[Yw]:f$(r)}},m$=function(t){if(!Xw(t))return!1;var r=jN(t);return Ud(Kh,r)||Ud(qN,r)},G7e=function(t){if(m$(t))return t;throw WN("Target is not a typed array")},V7e=function(t){if(u$(t)&&(!bv||L7e(Cu,t)))return t;throw WN(O7e(t)+" is not a typed array constructor")},z7e=function(t,r,e,i){if(zN){if(e)for(var n in Kh){var s=Ta[n];if(s&&Ud(s.prototype,t))try{delete s.prototype[t]}catch(a){try{s.prototype[t]=r}catch(o){}}}(!Tc[t]||e)&&kN(Tc,t,e?r:Zh&&GN[t]||r,i)}},j7e=function(t,r,e){var i,n;if(zN){if(bv){if(e){for(i in Kh)if(n=Ta[i],n&&Ud(n,t))try{delete n[t]}catch(s){}}if(!Cu[t]||e)try{return kN(Cu,t,e?r:Zh&&Cu[t]||r)}catch(s){}else return}for(i in Kh)n=Ta[i],n&&(!n[t]||e)&&kN(n,t,r)}};for($a in Kh)Hd=Ta[$a],Ev=Hd&&Hd.prototype,Ev?p$(Ev)[Yw]=Hd:Zh=!1;for($a in qN)Hd=Ta[$a],Ev=Hd&&Hd.prototype,Ev&&(p$(Ev)[Yw]=Hd);if((!Zh||!u$(Cu)||Cu===Function.prototype)&&(Cu=function(){throw WN("Incorrect invocation")},Zh))for($a in Kh)Ta[$a]&&bv(Ta[$a],Cu);if((!Zh||!Tc||Tc===B7e)&&(Tc=Cu.prototype,Zh))for($a in Kh)Ta[$a]&&bv(Ta[$a].prototype,Tc);Zh&&$w(l$)!==Tc&&bv(l$,Tc);if(zN&&!Ud(Tc,c$)){d$=!0,N7e(Tc,c$,{get:function(){return Xw(this)?this[VN]:void 0}});for($a in Kh)Ta[$a]&&P7e(Ta[$a],VN,$a)}g$.exports={NATIVE_ARRAY_BUFFER_VIEWS:Zh,TYPED_ARRAY_TAG:d$&&VN,aTypedArray:G7e,aTypedArrayConstructor:V7e,exportTypedArrayMethod:z7e,exportTypedArrayStaticMethod:j7e,getTypedArrayConstructor:f$,isView:k7e,isTypedArray:m$,TypedArray:Cu,TypedArrayPrototype:Tc}});var y$=V(()=>{var W7e=Ne(),v$=_i(),q7e=v$.NATIVE_ARRAY_BUFFER_VIEWS;W7e({target:"ArrayBuffer",stat:!0,forced:!q7e},{isView:v$.isView})});var Zw=V((QHt,T$)=>{var Y7e=Dm(),X7e=Dd(),$7e=TypeError;T$.exports=function(t){if(Y7e(t))return t;throw $7e(X7e(t)+" is not a constructor")}});var Fm=V((e4t,b$)=>{var E$=jr(),Z7e=Zw(),K7e=ma(),J7e=fi(),Q7e=J7e("species");b$.exports=function(t,r){var e=E$(t).constructor,i;return e===void 0||K7e(i=E$(e)[Q7e])?r:Z7e(i)}});var R$=V(()=>{"use strict";var e9e=Ne(),XN=jh(),t9e=Rt(),_$=M1(),x$=jr(),I$=Su(),r9e=Wa(),i9e=Fm(),$N=_$.ArrayBuffer,YN=_$.DataView,w$=YN.prototype,S$=XN($N.prototype.slice),n9e=XN(w$.getUint8),s9e=XN(w$.setUint8),a9e=t9e(function(){return!new $N(2).slice(1,void 0).byteLength});e9e({target:"ArrayBuffer",proto:!0,unsafe:!0,forced:a9e},{slice:function(r,e){if(S$&&e===void 0)return S$(x$(this),r);for(var i=x$(this).byteLength,n=I$(r,i),s=I$(e===void 0?i:e,i),a=new(i9e(this,$N))(r9e(s-n)),o=new YN(this),l=new YN(a),c=0;n<s;)s9e(l,c++,n9e(o,n++));return a}})});var M$=V(()=>{var o9e=Ne(),l9e=M1(),c9e=Uw();o9e({global:!0,constructor:!0,forced:!c9e},{DataView:l9e.DataView})});var D$=V(()=>{M$()});var C$=V(()=>{"use strict";var u9e=Ne(),h9e=Bt(),p9e=Rt(),d9e=p9e(function(){return new Date(16e11).getYear()!==120}),f9e=h9e(Date.prototype.getFullYear);u9e({target:"Date",proto:!0,forced:d9e},{getYear:function(){return f9e(this)-1900}})});var O$=V(()=>{var m9e=Ne(),g9e=Bt(),A$=Date,v9e=g9e(A$.prototype.getTime);m9e({target:"Date",stat:!0},{now:function(){return v9e(new A$)}})});var L$=V(()=>{"use strict";var y9e=Ne(),P$=Bt(),T9e=ms(),N$=Date.prototype,E9e=P$(N$.getTime),b9e=P$(N$.setFullYear);y9e({target:"Date",proto:!0},{setYear:function(r){E9e(this);var e=T9e(r),i=0<=e&&e<=99?e+1900:e;return b9e(this,i)}})});var F$=V(()=>{var x9e=Ne();x9e({target:"Date",proto:!0},{toGMTString:Date.prototype.toUTCString})});var D1=V((m4t,H$)=>{"use strict";var I9e=ms(),S9e=mi(),_9e=ls(),w9e=RangeError;H$.exports=function(r){var e=S9e(_9e(this)),i="",n=I9e(r);if(n<0||n==1/0)throw w9e("Wrong number of repetitions");for(;n>0;(n>>>=1)&&(e+=e))n&1&&(i+=e);return i}});var Kw=V((g4t,G$)=>{var k$=Bt(),R9e=Wa(),U$=mi(),M9e=D1(),D9e=ls(),C9e=k$(M9e),A9e=k$("".slice),O9e=Math.ceil,B$=function(t){return function(r,e,i){var n=U$(D9e(r)),s=R9e(e),a=n.length,o=i===void 0?" ":U$(i),l,c;return s<=a||o==""?n:(l=s-a,c=C9e(o,O9e(l/o.length)),c.length>l&&(c=A9e(c,0,l)),t?n+c:c+n)}};G$.exports={start:B$(!1),end:B$(!0)}});var j$=V((v4t,z$)=>{"use strict";var Bd=Bt(),V$=Rt(),Hm=Kw().start,P9e=RangeError,N9e=isFinite,L9e=Math.abs,Jh=Date.prototype,ZN=Jh.toISOString,F9e=Bd(Jh.getTime),H9e=Bd(Jh.getUTCDate),U9e=Bd(Jh.getUTCFullYear),B9e=Bd(Jh.getUTCHours),k9e=Bd(Jh.getUTCMilliseconds),G9e=Bd(Jh.getUTCMinutes),V9e=Bd(Jh.getUTCMonth),z9e=Bd(Jh.getUTCSeconds);z$.exports=V$(function(){return ZN.call(new Date(-5e13-1))!="0385-07-25T07:06:39.999Z"})||!V$(function(){ZN.call(new Date(NaN))})?function(){if(!N9e(F9e(this)))throw P9e("Invalid time value");var r=this,e=U9e(r),i=k9e(r),n=e<0?"-":e>9999?"+":"";return n+Hm(L9e(e),n?6:4,0)+"-"+Hm(V9e(r)+1,2,0)+"-"+Hm(H9e(r),2,0)+"T"+Hm(B9e(r),2,0)+":"+Hm(G9e(r),2,0)+":"+Hm(z9e(r),2,0)+"."+Hm(i,3,0)+"Z"}:ZN});var q$=V(()=>{var j9e=Ne(),W$=j$();j9e({target:"Date",proto:!0,forced:Date.prototype.toISOString!==W$},{toISOString:W$})});var Y$=V(()=>{"use strict";var W9e=Ne(),q9e=Rt(),Y9e=Li(),X9e=r1(),$9e=q9e(function(){return new Date(NaN).toJSON()!==null||Date.prototype.toJSON.call({toISOString:function(){return 1}})!==1});W9e({target:"Date",proto:!0,arity:1,forced:$9e},{toJSON:function(r){var e=Y9e(this),i=X9e(e,"number");return typeof i=="number"&&!isFinite(i)?null:e.toISOString()}})});var $$=V((x4t,X$)=>{"use strict";var Z9e=jr(),K9e=i2(),J9e=TypeError;X$.exports=function(t){if(Z9e(this),t==="string"||t==="default")t="string";else if(t!=="number")throw J9e("Incorrect hint");return K9e(this,t)}});var J$=V(()=>{var Q9e=Si(),eze=Dn(),tze=$$(),rze=fi(),Z$=rze("toPrimitive"),K$=Date.prototype;Q9e(K$,Z$)||eze(K$,Z$,tze)});var rZ=V(()=>{var eZ=Bt(),ize=Dn(),KN=Date.prototype,Q$="Invalid Date",tZ="toString",nze=eZ(KN[tZ]),sze=eZ(KN.getTime);String(new Date(NaN))!=Q$&&ize(KN,tZ,function(){var r=sze(this);return r===r?nze(this):Q$})});var nZ=V(()=>{"use strict";var aze=Ne(),C1=Bt(),oze=mi(),lze=C1("".charAt),cze=C1("".charCodeAt),uze=C1(/./.exec),hze=C1(1 .toString),pze=C1("".toUpperCase),dze=/[\w*+\-./@]/,iZ=function(t,r){for(var e=hze(t,16);e.length<r;)e="0"+e;return e};aze({global:!0},{escape:function(r){for(var e=oze(r),i="",n=e.length,s=0,a,o;s<n;)a=lze(e,s++),uze(dze,a)?i+=a:(o=cze(a,0),o<256?i+="%"+iZ(o,2):i+="%u"+pze(iZ(o,4)));return i}})});var QN=V((D4t,lZ)=>{"use strict";var aZ=Bt(),fze=fs(),mze=si(),gze=Si(),sZ=Od(),vze=tv(),oZ=Function,yze=aZ([].concat),Tze=aZ([].join),JN={},Eze=function(t,r,e){if(!gze(JN,r)){for(var i=[],n=0;n<r;n++)i[n]="a["+n+"]";JN[r]=oZ("C,a","return new C("+Tze(i,",")+")")}return JN[r](t,e)};lZ.exports=vze?oZ.bind:function(r){var e=fze(this),i=e.prototype,n=sZ(arguments,1),s=function(){var o=yze(n,sZ(arguments));return this instanceof s?Eze(e,o.length,o):e.apply(r,o)};return mze(i)&&(s.prototype=i),s}});var uZ=V(()=>{var bze=Ne(),cZ=QN();bze({target:"Function",proto:!0,forced:Function.bind!==cZ},{bind:cZ})});var dZ=V(()=>{"use strict";var xze=Ti(),hZ=si(),Ize=Vi(),Sze=No(),_ze=fi(),wze=iw(),eL=_ze("hasInstance"),pZ=Function.prototype;eL in pZ||Ize.f(pZ,eL,{value:wze(function(t){if(!xze(this)||!hZ(t))return!1;var r=this.prototype;if(!hZ(r))return t instanceof this;for(;t=Sze(t);)if(r===t)return!0;return!1},eL)})});var vZ=V(()=>{var Rze=Pr(),Mze=Rm().EXISTS,fZ=Bt(),Dze=Vi().f,mZ=Function.prototype,Cze=fZ(mZ.toString),gZ=/function\b(?:\s|\/\*[\S\s]*?\*\/|\/\/[^\n\r]*[\n\r]+)*([^\s(/]*)/,Aze=fZ(gZ.exec),Oze="name";Rze&&!Mze&&Dze(mZ,Oze,{configurable:!0,get:function(){try{return Aze(gZ,Cze(this))[1]}catch(t){return""}}})});var yZ=V(()=>{var Pze=Ne(),tL=ir();Pze({global:!0,forced:tL.globalThis!==tL},{globalThis:tL})});var TZ=V(()=>{var Nze=ir(),Lze=Ya();Lze(Nze.JSON,"JSON",!0)});var Jw=V((k4t,EZ)=>{var Fze=Rt();EZ.exports=Fze(function(){if(typeof ArrayBuffer=="function"){var t=new ArrayBuffer(8);Object.isExtensible(t)&&Object.defineProperty(t,"a",{value:8})}})});var eR=V((G4t,xZ)=>{var Hze=Rt(),Uze=si(),Bze=fa(),bZ=Jw(),Qw=Object.isExtensible,kze=Hze(function(){Qw(1)});xZ.exports=kze||bZ?function(r){return!Uze(r)||bZ&&Bze(r)=="ArrayBuffer"?!1:Qw?Qw(r):!0}:Qw});var Um=V((V4t,IZ)=>{var Gze=Rt();IZ.exports=!Gze(function(){return Object.isExtensible(Object.preventExtensions({}))})});var kd=V((z4t,wZ)=>{var Vze=Ne(),zze=Bt(),jze=iv(),Wze=si(),rL=Si(),qze=Vi().f,SZ=zh(),Yze=hw(),iL=eR(),Xze=_m(),$ze=Um(),_Z=!1,Qh=Xze("meta"),Zze=0,nL=function(t){qze(t,Qh,{value:{objectID:"O"+Zze++,weakData:{}}})},Kze=function(t,r){if(!Wze(t))return typeof t=="symbol"?t:(typeof t=="string"?"S":"P")+t;if(!rL(t,Qh)){if(!iL(t))return"F";if(!r)return"E";nL(t)}return t[Qh].objectID},Jze=function(t,r){if(!rL(t,Qh)){if(!iL(t))return!0;if(!r)return!1;nL(t)}return t[Qh].weakData},Qze=function(t){return $ze&&_Z&&iL(t)&&!rL(t,Qh)&&nL(t),t},eje=function(){tje.enable=function(){},_Z=!0;var t=SZ.f,r=zze([].splice),e={};e[Qh]=1,t(e).length&&(SZ.f=function(i){for(var n=t(i),s=0,a=n.length;s<a;s++)if(n[s]===Qh){r(n,s,1);break}return n},Vze({target:"Object",stat:!0,forced:!0},{getOwnPropertyNames:Yze.f}))},tje=wZ.exports={enable:eje,fastKey:Kze,getWeakData:Jze,onFreeze:Qze};jze[Qh]=!0});var A1=V((j4t,MZ)=>{"use strict";var rje=Ne(),ije=ir(),nje=Bt(),RZ=sv(),sje=Dn(),aje=kd(),oje=vc(),lje=yc(),cje=Ti(),uje=ma(),sL=si(),aL=Rt(),hje=b1(),pje=Ya(),dje=Om();MZ.exports=function(t,r,e){var i=t.indexOf("Map")!==-1,n=t.indexOf("Weak")!==-1,s=i?"set":"add",a=ije[t],o=a&&a.prototype,l=a,c={},u=function(y){var E=nje(o[y]);sje(o,y,y=="add"?function(x){return E(this,x===0?0:x),this}:y=="delete"?function(b){return n&&!sL(b)?!1:E(this,b===0?0:b)}:y=="get"?function(x){return n&&!sL(x)?void 0:E(this,x===0?0:x)}:y=="has"?function(x){return n&&!sL(x)?!1:E(this,x===0?0:x)}:function(x,S){return E(this,x===0?0:x,S),this})},h=RZ(t,!cje(a)||!(n||o.forEach&&!aL(function(){new a().entries().next()})));if(h)l=e.getConstructor(r,t,i,s),aje.enable();else if(RZ(t,!0)){var p=new l,d=p[s](n?{}:-0,1)!=p,f=aL(function(){p.has(1)}),m=hje(function(y){new a(y)}),g=!n&&aL(function(){for(var y=new a,E=5;E--;)y[s](E,E);return!y.has(-0)});m||(l=r(function(y,E){lje(y,o);var b=dje(new a,y,l);return uje(E)||oje(E,b[s],{that:b,AS_ENTRIES:i}),b}),l.prototype=o,o.constructor=l),(f||g)&&(u("delete"),u("has"),i&&u("get")),(g||d)&&u(s),n&&o.clear&&delete o.clear}return c[t]=l,rje({global:!0,constructor:!0,forced:l!=a},c),pje(l,t),n||e.setStrong(l,t,i),l}});var lL=V((W4t,PZ)=>{"use strict";var fje=Vi().f,mje=qa(),DZ=gv(),gje=fl(),vje=yc(),yje=ma(),Tje=vc(),Eje=Pw(),tR=S1(),bje=Nm(),O1=Pr(),CZ=kd().fastKey,OZ=cs(),AZ=OZ.set,oL=OZ.getterFor;PZ.exports={getConstructor:function(t,r,e,i){var n=t(function(c,u){vje(c,s),AZ(c,{type:r,index:mje(null),first:void 0,last:void 0,size:0}),O1||(c.size=0),yje(u)||Tje(u,c[i],{that:c,AS_ENTRIES:e})}),s=n.prototype,a=oL(r),o=function(c,u,h){var p=a(c),d=l(c,u),f,m;return d?d.value=h:(p.last=d={index:m=CZ(u,!0),key:u,value:h,previous:f=p.last,next:void 0,removed:!1},p.first||(p.first=d),f&&(f.next=d),O1?p.size++:c.size++,m!=="F"&&(p.index[m]=d)),c},l=function(c,u){var h=a(c),p=CZ(u),d;if(p!=="F")return h.index[p];for(d=h.first;d;d=d.next)if(d.key==u)return d};return DZ(s,{clear:function(){for(var u=this,h=a(u),p=h.index,d=h.first;d;)d.removed=!0,d.previous&&(d.previous=d.previous.next=void 0),delete p[d.index],d=d.next;h.first=h.last=void 0,O1?h.size=0:u.size=0},delete:function(c){var u=this,h=a(u),p=l(u,c);if(p){var d=p.next,f=p.previous;delete h.index[p.index],p.removed=!0,f&&(f.next=d),d&&(d.previous=f),h.first==p&&(h.first=d),h.last==p&&(h.last=f),O1?h.size--:u.size--}return!!p},forEach:function(u){for(var h=a(this),p=gje(u,arguments.length>1?arguments[1]:void 0),d;d=d?d.next:h.first;)for(p(d.value,d.key,this);d&&d.removed;)d=d.previous},has:function(u){return!!l(this,u)}}),DZ(s,e?{get:function(u){var h=l(this,u);return h&&h.value},set:function(u,h){return o(this,u===0?0:u,h)}}:{add:function(u){return o(this,u=u===0?0:u,u)}}),O1&&fje(s,"size",{get:function(){return a(this).size}}),n},setStrong:function(t,r,e){var i=r+" Iterator",n=oL(r),s=oL(i);Eje(t,r,function(a,o){AZ(this,{type:i,target:a,state:n(a),kind:o,last:void 0})},function(){for(var a=s(this),o=a.kind,l=a.last;l&&l.removed;)l=l.previous;return!a.target||!(a.last=l=l?l.next:a.state.first)?(a.target=void 0,tR(void 0,!0)):o=="keys"?tR(l.key,!1):o=="values"?tR(l.value,!1):tR([l.key,l.value],!1)},e?"entries":"values",!e,!0),bje(r)}}});var NZ=V(()=>{"use strict";var xje=A1(),Ije=lL();xje("Map",function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}},Ije)});var LZ=V(()=>{NZ()});var cL=V((Z4t,FZ)=>{var Sje=Math.log;FZ.exports=Math.log1p||function(r){var e=+r;return e>-1e-8&&e<1e-8?e-e*e/2:Sje(1+e)}});var UZ=V(()=>{var _je=Ne(),wje=cL(),uL=Math.acosh,Rje=Math.log,HZ=Math.sqrt,Mje=Math.LN2,Dje=!uL||Math.floor(uL(Number.MAX_VALUE))!=710||uL(1/0)!=1/0;_je({target:"Math",stat:!0,forced:Dje},{acosh:function(r){var e=+r;return e<1?NaN:e>9490626562425156e-8?Rje(e)+Mje:wje(e-1+HZ(e-1)*HZ(e+1))}})});var GZ=V(()=>{var Cje=Ne(),BZ=Math.asinh,Aje=Math.log,Oje=Math.sqrt;function kZ(t){var r=+t;return!isFinite(r)||r==0?r:r<0?-kZ(-r):Aje(r+Oje(r*r+1))}Cje({target:"Math",stat:!0,forced:!(BZ&&1/BZ(0)>0)},{asinh:kZ})});var zZ=V(()=>{var Pje=Ne(),VZ=Math.atanh,Nje=Math.log;Pje({target:"Math",stat:!0,forced:!(VZ&&1/VZ(-0)<0)},{atanh:function(r){var e=+r;return e==0?e:Nje((1+e)/(1-e))/2}})});var rR=V((iUt,jZ)=>{jZ.exports=Math.sign||function(r){var e=+r;return e==0||e!=e?e:e<0?-1:1}});var WZ=V(()=>{var Lje=Ne(),Fje=rR(),Hje=Math.abs,Uje=Math.pow;Lje({target:"Math",stat:!0},{cbrt:function(r){var e=+r;return Fje(e)*Uje(Hje(e),1/3)}})});var qZ=V(()=>{var Bje=Ne(),kje=Math.floor,Gje=Math.log,Vje=Math.LOG2E;Bje({target:"Math",stat:!0},{clz32:function(r){var e=r>>>0;return e?31-kje(Gje(e+.5)*Vje):32}})});var N1=V((lUt,YZ)=>{var P1=Math.expm1,zje=Math.exp;YZ.exports=!P1||P1(10)>22025.465794806718||P1(10)<22025.465794806718||P1(-2e-17)!=-2e-17?function(r){var e=+r;return e==0?e:e>-1e-6&&e<1e-6?e+e*e/2:zje(e)-1}:P1});var $Z=V(()=>{var jje=Ne(),Wje=N1(),XZ=Math.cosh,qje=Math.abs,hL=Math.E;jje({target:"Math",stat:!0,forced:!XZ||XZ(710)===1/0},{cosh:function(r){var e=Wje(qje(r)-1)+1;return(e+1/(e*hL*hL))*(hL/2)}})});var KZ=V(()=>{var Yje=Ne(),ZZ=N1();Yje({target:"Math",stat:!0,forced:ZZ!=Math.expm1},{expm1:ZZ})});var QZ=V((dUt,JZ)=>{var Xje=rR(),$je=Math.abs,nR=Math.pow,dL=nR(2,-52),iR=nR(2,-23),Zje=nR(2,127)*(2-iR),pL=nR(2,-126),Kje=function(t){return t+1/dL-1/dL};JZ.exports=Math.fround||function(r){var e=+r,i=$je(e),n=Xje(e),s,a;return i<pL?n*Kje(i/pL/iR)*pL*iR:(s=(1+iR/dL)*i,a=s-(s-i),a>Zje||a!=a?n*(1/0):n*a)}});var eK=V(()=>{var Jje=Ne(),Qje=QZ();Jje({target:"Math",stat:!0},{fround:Qje})});var rK=V(()=>{var eWe=Ne(),tK=Math.hypot,tWe=Math.abs,rWe=Math.sqrt,iWe=!!tK&&tK(1/0,NaN)!==1/0;eWe({target:"Math",stat:!0,arity:2,forced:iWe},{hypot:function(r,e){for(var i=0,n=0,s=arguments.length,a=0,o,l;n<s;)o=tWe(arguments[n++]),a<o?(l=a/o,i=i*l*l+1,a=o):o>0?(l=o/a,i+=l*l):i+=o;return a===1/0?1/0:a*rWe(i)}})});var nK=V(()=>{var nWe=Ne(),sWe=Rt(),iK=Math.imul,aWe=sWe(function(){return iK(4294967295,5)!=-5||iK.length!=2});nWe({target:"Math",stat:!0,forced:aWe},{imul:function(r,e){var i=65535,n=+r,s=+e,a=i&n,o=i&s;return 0|a*o+((i&n>>>16)*o+a*(i&s>>>16)<<16>>>0)}})});var fL=V((EUt,sK)=>{var oWe=Math.log,lWe=Math.LOG10E;sK.exports=Math.log10||function(r){return oWe(r)*lWe}});var aK=V(()=>{var cWe=Ne(),uWe=fL();cWe({target:"Math",stat:!0},{log10:uWe})});var oK=V(()=>{var hWe=Ne(),pWe=cL();hWe({target:"Math",stat:!0},{log1p:pWe})});var lK=V(()=>{var dWe=Ne(),fWe=Math.log,mWe=Math.LN2;dWe({target:"Math",stat:!0},{log2:function(r){return fWe(r)/mWe}})});var cK=V(()=>{var gWe=Ne(),vWe=rR();gWe({target:"Math",stat:!0},{sign:vWe})});var pK=V(()=>{var yWe=Ne(),TWe=Rt(),uK=N1(),EWe=Math.abs,hK=Math.exp,bWe=Math.E,xWe=TWe(function(){return Math.sinh(-2e-17)!=-2e-17});yWe({target:"Math",stat:!0,forced:xWe},{sinh:function(r){var e=+r;return EWe(e)<1?(uK(e)-uK(-e))/2:(hK(e-1)-hK(-e-1))*(bWe/2)}})});var mK=V(()=>{var IWe=Ne(),dK=N1(),fK=Math.exp;IWe({target:"Math",stat:!0},{tanh:function(r){var e=+r,i=dK(e),n=dK(-e);return i==1/0?1:n==1/0?-1:(i-n)/(fK(e)+fK(-e))}})});var gK=V(()=>{var SWe=Ya();SWe(Math,"Math",!0)});var vK=V(()=>{var _We=Ne(),wWe=T2();_We({target:"Math",stat:!0},{trunc:wWe})});var L1=V((HUt,yK)=>{var RWe=Bt();yK.exports=RWe(1 .valueOf)});var F1=V((UUt,TK)=>{TK.exports=`
|
||
\v\f\r \xA0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF`});var Bm=V((BUt,bK)=>{var MWe=Bt(),DWe=ls(),CWe=mi(),AWe=F1(),EK=MWe("".replace),sR="["+AWe+"]",OWe=RegExp("^"+sR+sR+"*"),PWe=RegExp(sR+sR+"*$"),mL=function(t){return function(r){var e=CWe(DWe(r));return t&1&&(e=EK(e,OWe,"")),t&2&&(e=EK(e,PWe,"")),e}};bK.exports={start:mL(1),end:mL(2),trim:mL(3)}});var MK=V(()=>{"use strict";var NWe=Ne(),gL=Bn(),LWe=Pr(),SK=ir(),vL=pw(),_K=Bt(),FWe=sv(),xK=Si(),HWe=Om(),UWe=Oo(),BWe=Md(),wK=r1(),kWe=Rt(),GWe=zh().f,VWe=Us().f,zWe=Vi().f,jWe=L1(),WWe=Bm().trim,H1="Number",xv=SK[H1],IK=vL[H1],yL=xv.prototype,qWe=SK.TypeError,YWe=_K("".slice),aR=_K("".charCodeAt),XWe=function(t){var r=wK(t,"number");return typeof r=="bigint"?r:$We(r)},$We=function(t){var r=wK(t,"number"),e,i,n,s,a,o,l,c;if(BWe(r))throw qWe("Cannot convert a Symbol value to a number");if(typeof r=="string"&&r.length>2){if(r=WWe(r),e=aR(r,0),e===43||e===45){if(i=aR(r,2),i===88||i===120)return NaN}else if(e===48){switch(aR(r,1)){case 66:case 98:n=2,s=49;break;case 79:case 111:n=8,s=55;break;default:return+r}for(a=YWe(r,2),o=a.length,l=0;l<o;l++)if(c=aR(a,l),c<48||c>s)return NaN;return parseInt(a,n)}}return+r},TL=FWe(H1,!xv(" 0o1")||!xv("0b1")||xv("+0x1")),ZWe=function(t){return UWe(yL,t)&&kWe(function(){jWe(t)})},oR=function(r){var e=arguments.length<1?0:xv(XWe(r));return ZWe(this)?HWe(Object(e),this,oR):e};oR.prototype=yL;TL&&!gL&&(yL.constructor=oR);NWe({global:!0,constructor:!0,wrap:!0,forced:TL},{Number:oR});var RK=function(t,r){for(var e=LWe?GWe(r):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,fromString,range".split(","),i=0,n;e.length>i;i++)xK(r,n=e[i])&&!xK(t,n)&&zWe(t,n,VWe(r,n))};gL&&IK&&RK(vL[H1],IK);(TL||gL)&&RK(vL[H1],xv)});var DK=V(()=>{var KWe=Ne();KWe({target:"Number",stat:!0,nonConfigurable:!0,nonWritable:!0},{EPSILON:Math.pow(2,-52)})});var AK=V((jUt,CK)=>{var JWe=ir(),QWe=JWe.isFinite;CK.exports=Number.isFinite||function(r){return typeof r=="number"&&QWe(r)}});var OK=V(()=>{var eqe=Ne(),tqe=AK();eqe({target:"Number",stat:!0},{isFinite:tqe})});var lR=V((YUt,PK)=>{var rqe=si(),iqe=Math.floor;PK.exports=Number.isInteger||function(r){return!rqe(r)&&isFinite(r)&&iqe(r)===r}});var NK=V(()=>{var nqe=Ne(),sqe=lR();nqe({target:"Number",stat:!0},{isInteger:sqe})});var LK=V(()=>{var aqe=Ne();aqe({target:"Number",stat:!0},{isNaN:function(r){return r!=r}})});var FK=V(()=>{var oqe=Ne(),lqe=lR(),cqe=Math.abs;oqe({target:"Number",stat:!0},{isSafeInteger:function(r){return lqe(r)&&cqe(r)<=9007199254740991}})});var HK=V(()=>{var uqe=Ne();uqe({target:"Number",stat:!0,nonConfigurable:!0,nonWritable:!0},{MAX_SAFE_INTEGER:9007199254740991})});var UK=V(()=>{var hqe=Ne();hqe({target:"Number",stat:!0,nonConfigurable:!0,nonWritable:!0},{MIN_SAFE_INTEGER:-9007199254740991})});var EL=V((nBt,VK)=>{var GK=ir(),pqe=Rt(),dqe=Bt(),fqe=mi(),mqe=Bm().trim,gqe=F1(),vqe=dqe("".charAt),cR=GK.parseFloat,BK=GK.Symbol,kK=BK&&BK.iterator,yqe=1/cR(gqe+"-0")!==-1/0||kK&&!pqe(function(){cR(Object(kK))});VK.exports=yqe?function(r){var e=mqe(fqe(r)),i=cR(e);return i===0&&vqe(e,0)=="-"?-0:i}:cR});var jK=V(()=>{var Tqe=Ne(),zK=EL();Tqe({target:"Number",stat:!0,forced:Number.parseFloat!=zK},{parseFloat:zK})});var bL=V((oBt,ZK)=>{var XK=ir(),Eqe=Rt(),bqe=Bt(),xqe=mi(),Iqe=Bm().trim,WK=F1(),U1=XK.parseInt,qK=XK.Symbol,YK=qK&&qK.iterator,$K=/^[+-]?0x/i,Sqe=bqe($K.exec),_qe=U1(WK+"08")!==8||U1(WK+"0x16")!==22||YK&&!Eqe(function(){U1(Object(YK))});ZK.exports=_qe?function(r,e){var i=Iqe(xqe(r));return U1(i,e>>>0||(Sqe($K,i)?16:10))}:U1});var JK=V(()=>{var wqe=Ne(),KK=bL();wqe({target:"Number",stat:!0,forced:Number.parseInt!=KK},{parseInt:KK})});var iJ=V(()=>{"use strict";var Rqe=Ne(),xL=Bt(),Mqe=ms(),Dqe=L1(),Cqe=D1(),Aqe=fL(),uR=Rt(),Oqe=RangeError,QK=String,Pqe=isFinite,Nqe=Math.abs,Lqe=Math.floor,eJ=Math.pow,Fqe=Math.round,Au=xL(1 .toExponential),Hqe=xL(Cqe),tJ=xL("".slice),rJ=Au(-69e-12,4)==="-6.9000e-11"&&Au(1.255,2)==="1.25e+0"&&Au(12345,3)==="1.235e+4"&&Au(25,0)==="3e+1",Uqe=uR(function(){Au(1,1/0)})&&uR(function(){Au(1,-1/0)}),Bqe=!uR(function(){Au(1/0,1/0)})&&!uR(function(){Au(NaN,1/0)}),kqe=!rJ||!Uqe||!Bqe;Rqe({target:"Number",proto:!0,forced:kqe},{toExponential:function(r){var e=Dqe(this);if(r===void 0)return Au(e);var i=Mqe(r);if(!Pqe(e))return String(e);if(i<0||i>20)throw Oqe("Incorrect fraction digits");if(rJ)return Au(e,i);var n="",s="",a=0,o="",l="";if(e<0&&(n="-",e=-e),e===0)a=0,s=Hqe("0",i+1);else{var c=Aqe(e);a=Lqe(c);var u=0,h=eJ(10,a-i);u=Fqe(e/h),2*e>=(2*u+1)*h&&(u+=1),u>=eJ(10,i+1)&&(u/=10,a+=1),s=QK(u)}return i!==0&&(s=tJ(s,0,1)+"."+tJ(s,1)),a===0?(o="+",l="0"):(o=a>0?"+":"-",l=QK(Nqe(a))),s+="e"+o+l,n+s}})});var cJ=V(()=>{"use strict";var Gqe=Ne(),_L=Bt(),Vqe=ms(),zqe=L1(),jqe=D1(),nJ=Rt(),Wqe=RangeError,oJ=String,lJ=Math.floor,SL=_L(jqe),sJ=_L("".slice),B1=_L(1 .toFixed),Sv=function(t,r,e){return r===0?e:r%2===1?Sv(t,r-1,e*t):Sv(t*t,r/2,e)},qqe=function(t){for(var r=0,e=t;e>=4096;)r+=12,e/=4096;for(;e>=2;)r+=1,e/=2;return r},Iv=function(t,r,e){for(var i=-1,n=e;++i<6;)n+=r*t[i],t[i]=n%1e7,n=lJ(n/1e7)},IL=function(t,r){for(var e=6,i=0;--e>=0;)i+=t[e],t[e]=lJ(i/r),i=i%r*1e7},aJ=function(t){for(var r=6,e="";--r>=0;)if(e!==""||r===0||t[r]!==0){var i=oJ(t[r]);e=e===""?i:e+SL("0",7-i.length)+i}return e},Yqe=nJ(function(){return B1(8e-5,3)!=="0.000"||B1(.9,0)!=="1"||B1(1.255,2)!=="1.25"||B1(0xde0b6b3a7640080,0)!=="1000000000000000128"})||!nJ(function(){B1({})});Gqe({target:"Number",proto:!0,forced:Yqe},{toFixed:function(r){var e=zqe(this),i=Vqe(r),n=[0,0,0,0,0,0],s="",a="0",o,l,c,u;if(i<0||i>20)throw Wqe("Incorrect fraction digits");if(e!=e)return"NaN";if(e<=-1e21||e>=1e21)return oJ(e);if(e<0&&(s="-",e=-e),e>1e-21)if(o=qqe(e*Sv(2,69,1))-69,l=o<0?e*Sv(2,-o,1):e/Sv(2,o,1),l*=4503599627370496,o=52-o,o>0){for(Iv(n,0,l),c=i;c>=7;)Iv(n,1e7,0),c-=7;for(Iv(n,Sv(10,c,1),0),c=o-1;c>=23;)IL(n,1<<23),c-=23;IL(n,1<<c),Iv(n,1,1),IL(n,2),a=aJ(n)}else Iv(n,0,l),Iv(n,1<<-o,0),a=aJ(n)+SL("0",i);return i>0?(u=a.length,a=s+(u<=i?"0."+SL("0",i-u)+a:sJ(a,0,u-i)+"."+sJ(a,u-i))):a=s+a,a}})});var pJ=V(()=>{"use strict";var Xqe=Ne(),$qe=Bt(),uJ=Rt(),hJ=L1(),hR=$qe(1 .toPrecision),Zqe=uJ(function(){return hR(1,void 0)!=="1"})||!uJ(function(){hR({})});Xqe({target:"Number",proto:!0,forced:Zqe},{toPrecision:function(r){return r===void 0?hR(hJ(this)):hR(hJ(this),r)}})});var RL=V((gBt,mJ)=>{"use strict";var dJ=Pr(),Kqe=Bt(),Jqe=ni(),Qqe=Rt(),wL=av(),eYe=a1(),tYe=t1(),rYe=Li(),iYe=xm(),_v=Object.assign,fJ=Object.defineProperty,nYe=Kqe([].concat);mJ.exports=!_v||Qqe(function(){if(dJ&&_v({b:1},_v(fJ({},"a",{enumerable:!0,get:function(){fJ(this,"b",{value:3,enumerable:!1})}}),{b:2})).b!==1)return!0;var t={},r={},e=Symbol(),i="abcdefghijklmnopqrst";return t[e]=7,i.split("").forEach(function(n){r[n]=n}),_v({},t)[e]!=7||wL(_v({},r)).join("")!=i})?function(r,e){for(var i=rYe(r),n=arguments.length,s=1,a=eYe.f,o=tYe.f;n>s;)for(var l=iYe(arguments[s++]),c=a?nYe(wL(l),a(l)):wL(l),u=c.length,h=0,p;u>h;)p=c[h++],(!dJ||Jqe(o,l,p))&&(i[p]=l[p]);return i}:_v});var vJ=V(()=>{var sYe=Ne(),gJ=RL();sYe({target:"Object",stat:!0,arity:2,forced:Object.assign!==gJ},{assign:gJ})});var yJ=V(()=>{var aYe=Ne(),oYe=Pr(),lYe=qa();aYe({target:"Object",stat:!0,sham:!oYe},{create:lYe})});var k1=V((bBt,EJ)=>{"use strict";var cYe=Bn(),uYe=ir(),hYe=Rt(),TJ=Hw();EJ.exports=cYe||!hYe(function(){if(!(TJ&&TJ<535)){var t=Math.random();__defineSetter__.call(null,t,function(){}),delete uYe[t]}})});var bJ=V(()=>{"use strict";var pYe=Ne(),dYe=Pr(),fYe=k1(),mYe=fs(),gYe=Li(),vYe=Vi();dYe&&pYe({target:"Object",proto:!0,forced:fYe},{__defineGetter__:function(r,e){vYe.f(gYe(this),r,{get:mYe(e),enumerable:!0,configurable:!0})}})});var IJ=V(()=>{var yYe=Ne(),TYe=Pr(),xJ=lw().f;yYe({target:"Object",stat:!0,forced:Object.defineProperties!==xJ,sham:!TYe},{defineProperties:xJ})});var _J=V(()=>{var EYe=Ne(),bYe=Pr(),SJ=Vi().f;EYe({target:"Object",stat:!0,forced:Object.defineProperty!==SJ,sham:!bYe},{defineProperty:SJ})});var wJ=V(()=>{"use strict";var xYe=Ne(),IYe=Pr(),SYe=k1(),_Ye=fs(),wYe=Li(),RYe=Vi();IYe&&xYe({target:"Object",proto:!0,forced:SYe},{__defineSetter__:function(r,e){RYe.f(wYe(this),r,{set:_Ye(e),enumerable:!0,configurable:!0})}})});var ML=V((CBt,DJ)=>{var MYe=Pr(),MJ=Bt(),DYe=av(),CYe=ga(),AYe=t1().f,OYe=MJ(AYe),PYe=MJ([].push),RJ=function(t){return function(r){for(var e=CYe(r),i=DYe(e),n=i.length,s=0,a=[],o;n>s;)o=i[s++],(!MYe||OYe(e,o))&&PYe(a,t?[o,e[o]]:e[o]);return a}};DJ.exports={entries:RJ(!0),values:RJ(!1)}});var CJ=V(()=>{var NYe=Ne(),LYe=ML().entries;NYe({target:"Object",stat:!0},{entries:function(r){return LYe(r)}})});var AJ=V(()=>{var FYe=Ne(),HYe=Um(),UYe=Rt(),BYe=si(),kYe=kd().onFreeze,DL=Object.freeze,GYe=UYe(function(){DL(1)});FYe({target:"Object",stat:!0,forced:GYe,sham:!HYe},{freeze:function(r){return DL&&BYe(r)?DL(kYe(r)):r}})});var OJ=V(()=>{var VYe=Ne(),zYe=vc(),jYe=_u();VYe({target:"Object",stat:!0},{fromEntries:function(r){var e={};return zYe(r,function(i,n){jYe(e,i,n)},{AS_ENTRIES:!0}),e}})});var LJ=V(()=>{var WYe=Ne(),qYe=Rt(),YYe=ga(),PJ=Us().f,NJ=Pr(),XYe=qYe(function(){PJ(1)}),$Ye=!NJ||XYe;WYe({target:"Object",stat:!0,forced:$Ye,sham:!NJ},{getOwnPropertyDescriptor:function(r,e){return PJ(YYe(r),e)}})});var FJ=V(()=>{var ZYe=Ne(),KYe=Pr(),JYe=sw(),QYe=ga(),eXe=Us(),tXe=_u();ZYe({target:"Object",stat:!0,sham:!KYe},{getOwnPropertyDescriptors:function(r){for(var e=QYe(r),i=eXe.f,n=JYe(e),s={},a=0,o,l;n.length>a;)l=i(e,o=n[a++]),l!==void 0&&tXe(s,o,l);return s}})});var HJ=V(()=>{var rXe=Ne(),iXe=Rt(),nXe=hw().f,sXe=iXe(function(){return!Object.getOwnPropertyNames(1)});rXe({target:"Object",stat:!0,forced:sXe},{getOwnPropertyNames:nXe})});var BJ=V(()=>{var aXe=Ne(),oXe=Rt(),lXe=Li(),UJ=No(),cXe=Iw(),uXe=oXe(function(){UJ(1)});aXe({target:"Object",stat:!0,forced:uXe,sham:!cXe},{getPrototypeOf:function(r){return UJ(lXe(r))}})});var kJ=V(()=>{var hXe=Ne(),pXe=Si();hXe({target:"Object",stat:!0},{hasOwn:pXe})});var CL=V((YBt,GJ)=>{GJ.exports=Object.is||function(r,e){return r===e?r!==0||1/r===1/e:r!=r&&e!=e}});var VJ=V(()=>{var dXe=Ne(),fXe=CL();dXe({target:"Object",stat:!0},{is:fXe})});var jJ=V(()=>{var mXe=Ne(),zJ=eR();mXe({target:"Object",stat:!0,forced:Object.isExtensible!==zJ},{isExtensible:zJ})});var qJ=V(()=>{var gXe=Ne(),vXe=Rt(),yXe=si(),TXe=fa(),WJ=Jw(),AL=Object.isFrozen,EXe=vXe(function(){AL(1)});gXe({target:"Object",stat:!0,forced:EXe||WJ},{isFrozen:function(r){return!yXe(r)||WJ&&TXe(r)=="ArrayBuffer"?!0:AL?AL(r):!1}})});var XJ=V(()=>{var bXe=Ne(),xXe=Rt(),IXe=si(),SXe=fa(),YJ=Jw(),OL=Object.isSealed,_Xe=xXe(function(){OL(1)});bXe({target:"Object",stat:!0,forced:_Xe||YJ},{isSealed:function(r){return!IXe(r)||YJ&&SXe(r)=="ArrayBuffer"?!0:OL?OL(r):!1}})});var ZJ=V(()=>{var wXe=Ne(),RXe=Li(),$J=av(),MXe=Rt(),DXe=MXe(function(){$J(1)});wXe({target:"Object",stat:!0,forced:DXe},{keys:function(r){return $J(RXe(r))}})});var KJ=V(()=>{"use strict";var CXe=Ne(),AXe=Pr(),OXe=k1(),PXe=Li(),NXe=Vh(),LXe=No(),FXe=Us().f;AXe&&CXe({target:"Object",proto:!0,forced:OXe},{__lookupGetter__:function(r){var e=PXe(this),i=NXe(r),n;do if(n=FXe(e,i))return n.get;while(e=LXe(e))}})});var JJ=V(()=>{"use strict";var HXe=Ne(),UXe=Pr(),BXe=k1(),kXe=Li(),GXe=Vh(),VXe=No(),zXe=Us().f;UXe&&HXe({target:"Object",proto:!0,forced:BXe},{__lookupSetter__:function(r){var e=kXe(this),i=GXe(r),n;do if(n=zXe(e,i))return n.set;while(e=VXe(e))}})});var QJ=V(()=>{var jXe=Ne(),WXe=si(),qXe=kd().onFreeze,YXe=Um(),XXe=Rt(),PL=Object.preventExtensions,$Xe=XXe(function(){PL(1)});jXe({target:"Object",stat:!0,forced:$Xe,sham:!YXe},{preventExtensions:function(r){return PL&&WXe(r)?PL(qXe(r)):r}})});var Gd=V((ukt,tQ)=>{var eQ=iw(),ZXe=Vi();tQ.exports=function(t,r,e){return e.get&&eQ(e.get,r,{getter:!0}),e.set&&eQ(e.set,r,{setter:!0}),ZXe.f(t,r,e)}});var oQ=V(()=>{"use strict";var KXe=Pr(),JXe=Gd(),rQ=si(),QXe=Li(),e$e=ls(),iQ=Object.getPrototypeOf,nQ=Object.setPrototypeOf,sQ=Object.prototype,aQ="__proto__";if(KXe&&iQ&&nQ&&!(aQ in sQ))try{JXe(sQ,aQ,{configurable:!0,get:function(){return iQ(QXe(this))},set:function(r){var e=e$e(this);!rQ(r)&&r!==null||!rQ(e)||nQ(e,r)}})}catch(t){}});var lQ=V(()=>{var t$e=Ne(),r$e=si(),i$e=kd().onFreeze,n$e=Um(),s$e=Rt(),NL=Object.seal,a$e=s$e(function(){NL(1)});t$e({target:"Object",stat:!0,forced:a$e,sham:!n$e},{seal:function(r){return NL&&r$e(r)?NL(i$e(r)):r}})});var cQ=V(()=>{var o$e=Ne(),l$e=gc();o$e({target:"Object",stat:!0},{setPrototypeOf:l$e})});var hQ=V((vkt,uQ)=>{"use strict";var c$e=aw(),u$e=mc();uQ.exports=c$e?{}.toString:function(){return"[object "+u$e(this)+"]"}});var pQ=V(()=>{var h$e=aw(),p$e=Dn(),d$e=hQ();h$e||p$e(Object.prototype,"toString",d$e,{unsafe:!0})});var dQ=V(()=>{var f$e=Ne(),m$e=ML().values;f$e({target:"Object",stat:!0},{values:function(r){return m$e(r)}})});var mQ=V(()=>{var g$e=Ne(),fQ=EL();g$e({global:!0,forced:parseFloat!=fQ},{parseFloat:fQ})});var vQ=V(()=>{var v$e=Ne(),gQ=bL();v$e({global:!0,forced:parseInt!=gQ},{parseInt:gQ})});var ep=V((wkt,yQ)=>{var y$e=TypeError;yQ.exports=function(t,r){if(t<r)throw y$e("Not enough arguments");return t}});var LL=V((Rkt,TQ)=>{var T$e=bu();TQ.exports=/(?:ipad|iphone|ipod).*applewebkit/i.test(T$e)});var z1=V((Mkt,RQ)=>{var Fo=ir(),E$e=Po(),b$e=fl(),EQ=Ti(),x$e=Si(),I$e=Rt(),bQ=I2(),S$e=Od(),xQ=i1(),_$e=ep(),w$e=LL(),R$e=Mu(),GL=Fo.setImmediate,VL=Fo.clearImmediate,M$e=Fo.process,FL=Fo.Dispatch,D$e=Fo.Function,IQ=Fo.MessageChannel,C$e=Fo.String,HL=0,G1={},SQ="onreadystatechange",V1,km,UL,BL;try{V1=Fo.location}catch(t){}var zL=function(t){if(x$e(G1,t)){var r=G1[t];delete G1[t],r()}},kL=function(t){return function(){zL(t)}},_Q=function(t){zL(t.data)},wQ=function(t){Fo.postMessage(C$e(t),V1.protocol+"//"+V1.host)};(!GL||!VL)&&(GL=function(r){_$e(arguments.length,1);var e=EQ(r)?r:D$e(r),i=S$e(arguments,1);return G1[++HL]=function(){E$e(e,void 0,i)},km(HL),HL},VL=function(r){delete G1[r]},R$e?km=function(t){M$e.nextTick(kL(t))}:FL&&FL.now?km=function(t){FL.now(kL(t))}:IQ&&!w$e?(UL=new IQ,BL=UL.port2,UL.port1.onmessage=_Q,km=b$e(BL.postMessage,BL)):Fo.addEventListener&&EQ(Fo.postMessage)&&!Fo.importScripts&&V1&&V1.protocol!=="file:"&&!I$e(wQ)?(km=wQ,Fo.addEventListener("message",_Q,!1)):SQ in xQ("script")?km=function(t){bQ.appendChild(xQ("script"))[SQ]=function(){bQ.removeChild(this),zL(t)}}:km=function(t){setTimeout(kL(t),0)});RQ.exports={set:GL,clear:VL}});var DQ=V((Dkt,MQ)=>{var A$e=bu(),O$e=ir();MQ.exports=/ipad|iphone|ipod/i.test(A$e)&&O$e.Pebble!==void 0});var AQ=V((Ckt,CQ)=>{var P$e=bu();CQ.exports=/web0s(?!.*chrome)/i.test(P$e)});var XL=V((Akt,BQ)=>{var Vm=ir(),OQ=fl(),N$e=Us().f,jL=z1().set,L$e=LL(),F$e=DQ(),H$e=AQ(),WL=Mu(),PQ=Vm.MutationObserver||Vm.WebKitMutationObserver,NQ=Vm.document,LQ=Vm.process,pR=Vm.Promise,FQ=N$e(Vm,"queueMicrotask"),UQ=FQ&&FQ.value,j1,Gm,W1,wv,qL,YL,dR,HQ;UQ||(j1=function(){var t,r;for(WL&&(t=LQ.domain)&&t.exit();Gm;){r=Gm.fn,Gm=Gm.next;try{r()}catch(e){throw Gm?wv():W1=void 0,e}}W1=void 0,t&&t.enter()},!L$e&&!WL&&!H$e&&PQ&&NQ?(qL=!0,YL=NQ.createTextNode(""),new PQ(j1).observe(YL,{characterData:!0}),wv=function(){YL.data=qL=!qL}):!F$e&&pR&&pR.resolve?(dR=pR.resolve(void 0),dR.constructor=pR,HQ=OQ(dR.then,dR),wv=function(){HQ(j1)}):WL?wv=function(){LQ.nextTick(j1)}:(jL=OQ(jL,Vm),wv=function(){jL(j1)}));BQ.exports=UQ||function(t){var r={fn:t,next:void 0};W1&&(W1.next=r),Gm||(Gm=r,wv()),W1=r}});var GQ=V((Okt,kQ)=>{var U$e=ir();kQ.exports=function(t,r){var e=U$e.console;e&&e.error&&(arguments.length==1?e.error(t):e.error(t,r))}});var Rv=V((Pkt,VQ)=>{VQ.exports=function(t){try{return{error:!1,value:t()}}catch(r){return{error:!0,value:r}}}});var WQ=V((Nkt,jQ)=>{var zQ=function(){this.head=null,this.tail=null};zQ.prototype={add:function(t){var r={item:t,next:null};this.head?this.tail.next=r:this.head=r,this.tail=r},get:function(){var t=this.head;if(t)return this.head=t.next,this.tail===t&&(this.tail=null),t.item}};jQ.exports=zQ});var zm=V((Lkt,qQ)=>{var B$e=ir();qQ.exports=B$e.Promise});var fR=V((Fkt,YQ)=>{YQ.exports=typeof Deno=="object"&&Deno&&typeof Deno.version=="object"});var $L=V((Hkt,XQ)=>{var k$e=fR(),G$e=Mu();XQ.exports=!k$e&&!G$e&&typeof window=="object"&&typeof document=="object"});var Mv=V((Ukt,KQ)=>{var V$e=ir(),q1=zm(),z$e=Ti(),j$e=sv(),W$e=J_(),q$e=fi(),Y$e=$L(),X$e=fR(),$$e=Bn(),ZL=xu(),$Q=q1&&q1.prototype,Z$e=q$e("species"),KL=!1,ZQ=z$e(V$e.PromiseRejectionEvent),K$e=j$e("Promise",function(){var t=W$e(q1),r=t!==String(q1);if(!r&&ZL===66||$$e&&!($Q.catch&&$Q.finally))return!0;if(!ZL||ZL<51||!/native code/.test(t)){var e=new q1(function(s){s(1)}),i=function(s){s(function(){},function(){})},n=e.constructor={};if(n[Z$e]=i,KL=e.then(function(){})instanceof i,!KL)return!0}return!r&&(Y$e||X$e)&&!ZQ});KQ.exports={CONSTRUCTOR:K$e,REJECTION_EVENT:ZQ,SUBCLASSING:KL}});var Vd=V((Bkt,QQ)=>{"use strict";var JQ=fs(),J$e=TypeError,Q$e=function(t){var r,e;this.promise=new t(function(i,n){if(r!==void 0||e!==void 0)throw J$e("Bad Promise constructor");r=i,e=n}),this.resolve=JQ(r),this.reject=JQ(e)};QQ.exports.f=function(t){return new Q$e(t)}});var yee=V(()=>{"use strict";var eZe=Ne(),tZe=Bn(),yR=Mu(),zd=ir(),Ov=ni(),eee=Dn(),tee=gc(),rZe=Ya(),iZe=Nm(),nZe=fs(),vR=Ti(),sZe=si(),aZe=yc(),oZe=Fm(),aee=z1().set,rF=XL(),lZe=GQ(),cZe=Rv(),uZe=WQ(),oee=cs(),TR=zm(),iF=Mv(),lee=Vd(),ER="Promise",cee=iF.CONSTRUCTOR,hZe=iF.REJECTION_EVENT,pZe=iF.SUBCLASSING,JL=oee.getterFor(ER),dZe=oee.set,Dv=TR&&TR.prototype,jm=TR,mR=Dv,uee=zd.TypeError,QL=zd.document,nF=zd.process,eF=lee.f,fZe=eF,mZe=!!(QL&&QL.createEvent&&zd.dispatchEvent),hee="unhandledrejection",gZe="rejectionhandled",ree=0,pee=1,vZe=2,sF=1,dee=2,gR,iee,yZe,nee,fee=function(t){var r;return sZe(t)&&vR(r=t.then)?r:!1},mee=function(t,r){var e=r.value,i=r.state==pee,n=i?t.ok:t.fail,s=t.resolve,a=t.reject,o=t.domain,l,c,u;try{n?(i||(r.rejection===dee&&EZe(r),r.rejection=sF),n===!0?l=e:(o&&o.enter(),l=n(e),o&&(o.exit(),u=!0)),l===t.promise?a(uee("Promise-chain cycle")):(c=fee(l))?Ov(c,l,s,a):s(l)):a(e)}catch(h){o&&!u&&o.exit(),a(h)}},gee=function(t,r){t.notified||(t.notified=!0,rF(function(){for(var e=t.reactions,i;i=e.get();)mee(i,t);t.notified=!1,r&&!t.rejection&&TZe(t)}))},vee=function(t,r,e){var i,n;mZe?(i=QL.createEvent("Event"),i.promise=r,i.reason=e,i.initEvent(t,!1,!0),zd.dispatchEvent(i)):i={promise:r,reason:e},!hZe&&(n=zd["on"+t])?n(i):t===hee&&lZe("Unhandled promise rejection",e)},TZe=function(t){Ov(aee,zd,function(){var r=t.facade,e=t.value,i=see(t),n;if(i&&(n=cZe(function(){yR?nF.emit("unhandledRejection",e,r):vee(hee,r,e)}),t.rejection=yR||see(t)?dee:sF,n.error))throw n.value})},see=function(t){return t.rejection!==sF&&!t.parent},EZe=function(t){Ov(aee,zd,function(){var r=t.facade;yR?nF.emit("rejectionHandled",r):vee(gZe,r,t.value)})},Cv=function(t,r,e){return function(i){t(r,i,e)}},Av=function(t,r,e){t.done||(t.done=!0,e&&(t=e),t.value=r,t.state=vZe,gee(t,!0))},tF=function(t,r,e){if(!t.done){t.done=!0,e&&(t=e);try{if(t.facade===r)throw uee("Promise can't be resolved itself");var i=fee(r);i?rF(function(){var n={done:!1};try{Ov(i,r,Cv(tF,n,t),Cv(Av,n,t))}catch(s){Av(n,s,t)}}):(t.value=r,t.state=pee,gee(t,!1))}catch(n){Av({done:!1},n,t)}}};if(cee&&(jm=function(r){aZe(this,mR),nZe(r),Ov(gR,this);var e=JL(this);try{r(Cv(tF,e),Cv(Av,e))}catch(i){Av(e,i)}},mR=jm.prototype,gR=function(r){dZe(this,{type:ER,done:!1,notified:!1,parent:!1,reactions:new uZe,rejection:!1,state:ree,value:void 0})},gR.prototype=eee(mR,"then",function(r,e){var i=JL(this),n=eF(oZe(this,jm));return i.parent=!0,n.ok=vR(r)?r:!0,n.fail=vR(e)&&e,n.domain=yR?nF.domain:void 0,i.state==ree?i.reactions.add(n):rF(function(){mee(n,i)}),n.promise}),iee=function(){var t=new gR,r=JL(t);this.promise=t,this.resolve=Cv(tF,r),this.reject=Cv(Av,r)},lee.f=eF=function(t){return t===jm||t===yZe?new iee(t):fZe(t)},!tZe&&vR(TR)&&Dv!==Object.prototype)){nee=Dv.then,pZe||eee(Dv,"then",function(r,e){var i=this;return new jm(function(n,s){Ov(nee,i,n,s)}).then(r,e)},{unsafe:!0});try{delete Dv.constructor}catch(t){}tee&&tee(Dv,mR)}eZe({global:!0,constructor:!0,wrap:!0,forced:cee},{Promise:jm});rZe(jm,ER,!1,!0);iZe(ER)});var aF=V((Vkt,Tee)=>{var bZe=zm(),xZe=b1(),IZe=Mv().CONSTRUCTOR;Tee.exports=IZe||!xZe(function(t){bZe.all(t).then(void 0,function(){})})});var Eee=V(()=>{"use strict";var SZe=Ne(),_Ze=ni(),wZe=fs(),RZe=Vd(),MZe=Rv(),DZe=vc(),CZe=aF();SZe({target:"Promise",stat:!0,forced:CZe},{all:function(r){var e=this,i=RZe.f(e),n=i.resolve,s=i.reject,a=MZe(function(){var o=wZe(e.resolve),l=[],c=0,u=1;DZe(r,function(h){var p=c++,d=!1;u++,_Ze(o,e,h).then(function(f){d||(d=!0,l[p]=f,--u||n(l))},s)}),--u||n(l)});return a.error&&s(a.value),i.promise}})});var xee=V(()=>{"use strict";var AZe=Ne(),OZe=Bn(),PZe=Mv().CONSTRUCTOR,lF=zm(),NZe=bn(),LZe=Ti(),FZe=Dn(),bee=lF&&lF.prototype;AZe({target:"Promise",proto:!0,forced:PZe,real:!0},{catch:function(t){return this.then(void 0,t)}});!OZe&&LZe(lF)&&(oF=NZe("Promise").prototype.catch,bee.catch!==oF&&FZe(bee,"catch",oF,{unsafe:!0}));var oF});var Iee=V(()=>{"use strict";var HZe=Ne(),UZe=ni(),BZe=fs(),kZe=Vd(),GZe=Rv(),VZe=vc(),zZe=aF();HZe({target:"Promise",stat:!0,forced:zZe},{race:function(r){var e=this,i=kZe.f(e),n=i.reject,s=GZe(function(){var a=BZe(e.resolve);VZe(r,function(o){UZe(a,e,o).then(i.resolve,n)})});return s.error&&n(s.value),i.promise}})});var See=V(()=>{"use strict";var jZe=Ne(),WZe=ni(),qZe=Vd(),YZe=Mv().CONSTRUCTOR;jZe({target:"Promise",stat:!0,forced:YZe},{reject:function(r){var e=qZe.f(this);return WZe(e.reject,void 0,r),e.promise}})});var cF=V((Kkt,_ee)=>{var XZe=jr(),$Ze=si(),ZZe=Vd();_ee.exports=function(t,r){if(XZe(t),$Ze(r)&&r.constructor===t)return r;var e=ZZe.f(t),i=e.resolve;return i(r),e.promise}});var Mee=V(()=>{"use strict";var KZe=Ne(),JZe=bn(),wee=Bn(),QZe=zm(),Ree=Mv().CONSTRUCTOR,eKe=cF(),tKe=JZe("Promise"),rKe=wee&&!Ree;KZe({target:"Promise",stat:!0,forced:wee||Ree},{resolve:function(r){return eKe(rKe&&this===tKe?QZe:this,r)}})});var Dee=V(()=>{yee();Eee();xee();Iee();See();Mee()});var Cee=V(()=>{"use strict";var iKe=Ne(),nKe=ni(),sKe=fs(),aKe=Vd(),oKe=Rv(),lKe=vc();iKe({target:"Promise",stat:!0},{allSettled:function(r){var e=this,i=aKe.f(e),n=i.resolve,s=i.reject,a=oKe(function(){var o=sKe(e.resolve),l=[],c=0,u=1;lKe(r,function(h){var p=c++,d=!1;u++,nKe(o,e,h).then(function(f){d||(d=!0,l[p]={status:"fulfilled",value:f},--u||n(l))},function(f){d||(d=!0,l[p]={status:"rejected",reason:f},--u||n(l))})}),--u||n(l)});return a.error&&s(a.value),i.promise}})});var Oee=V(()=>{"use strict";var cKe=Ne(),uKe=ni(),hKe=fs(),pKe=bn(),dKe=Vd(),fKe=Rv(),mKe=vc(),Aee="No one promise resolved";cKe({target:"Promise",stat:!0},{any:function(r){var e=this,i=pKe("AggregateError"),n=dKe.f(e),s=n.resolve,a=n.reject,o=fKe(function(){var l=hKe(e.resolve),c=[],u=0,h=1,p=!1;mKe(r,function(d){var f=u++,m=!1;h++,uKe(l,e,d).then(function(g){m||p||(p=!0,s(g))},function(g){m||p||(m=!0,c[f]=g,--h||a(new i(c,Aee)))})}),--h||a(new i(c,Aee))});return o.error&&a(o.value),n.promise}})});var Fee=V(()=>{"use strict";var gKe=Ne(),vKe=Bn(),bR=zm(),yKe=Rt(),Nee=bn(),Lee=Ti(),TKe=Fm(),Pee=cF(),EKe=Dn(),hF=bR&&bR.prototype,bKe=!!bR&&yKe(function(){hF.finally.call({then:function(){}},function(){})});gKe({target:"Promise",proto:!0,real:!0,forced:bKe},{finally:function(t){var r=TKe(this,Nee("Promise")),e=Lee(t);return this.then(e?function(i){return Pee(r,t()).then(function(){return i})}:t,e?function(i){return Pee(r,t()).then(function(){throw i})}:t)}});!vKe&&Lee(bR)&&(uF=Nee("Promise").prototype.finally,hF.finally!==uF&&EKe(hF,"finally",uF,{unsafe:!0}));var uF});var Hee=V(()=>{var xKe=Ne(),IKe=Po(),SKe=fs(),_Ke=jr(),wKe=Rt(),RKe=!wKe(function(){Reflect.apply(function(){})});xKe({target:"Reflect",stat:!0,forced:RKe},{apply:function(r,e,i){return IKe(SKe(r),e,_Ke(i))}})});var jee=V(()=>{var MKe=Ne(),DKe=bn(),pF=Po(),CKe=QN(),Uee=Zw(),AKe=jr(),Bee=si(),OKe=qa(),Gee=Rt(),dF=DKe("Reflect","construct"),PKe=Object.prototype,NKe=[].push,Vee=Gee(function(){function t(){}return!(dF(function(){},[],t)instanceof t)}),zee=!Gee(function(){dF(function(){})}),kee=Vee||zee;MKe({target:"Reflect",stat:!0,forced:kee,sham:kee},{construct:function(r,e){Uee(r),AKe(e);var i=arguments.length<3?r:Uee(arguments[2]);if(zee&&!Vee)return dF(r,e,i);if(r==i){switch(e.length){case 0:return new r;case 1:return new r(e[0]);case 2:return new r(e[0],e[1]);case 3:return new r(e[0],e[1],e[2]);case 4:return new r(e[0],e[1],e[2],e[3])}var n=[null];return pF(NKe,n,e),new(pF(CKe,r,n))}var s=i.prototype,a=OKe(Bee(s)?s:PKe),o=pF(r,a,e);return Bee(o)?o:a}})});var Yee=V(()=>{var LKe=Ne(),FKe=Pr(),Wee=jr(),HKe=Vh(),qee=Vi(),UKe=Rt(),BKe=UKe(function(){Reflect.defineProperty(qee.f({},1,{value:1}),1,{value:2})});LKe({target:"Reflect",stat:!0,forced:BKe,sham:!FKe},{defineProperty:function(r,e,i){Wee(r);var n=HKe(e);Wee(i);try{return qee.f(r,n,i),!0}catch(s){return!1}}})});var Xee=V(()=>{var kKe=Ne(),GKe=jr(),VKe=Us().f;kKe({target:"Reflect",stat:!0},{deleteProperty:function(r,e){var i=VKe(GKe(r),e);return i&&!i.configurable?!1:delete r[e]}})});var fF=V((g8t,Zee)=>{var $ee=Si();Zee.exports=function(t){return t!==void 0&&($ee(t,"value")||$ee(t,"writable"))}});var Jee=V(()=>{var zKe=Ne(),jKe=ni(),WKe=si(),qKe=jr(),YKe=fF(),XKe=Us(),$Ke=No();function Kee(t,r){var e=arguments.length<3?t:arguments[2],i,n;if(qKe(t)===e)return t[r];if(i=XKe.f(t,r),i)return YKe(i)?i.value:i.get===void 0?void 0:jKe(i.get,e);if(WKe(n=$Ke(t)))return Kee(n,r,e)}zKe({target:"Reflect",stat:!0},{get:Kee})});var Qee=V(()=>{var ZKe=Ne(),KKe=Pr(),JKe=jr(),QKe=Us();ZKe({target:"Reflect",stat:!0,sham:!KKe},{getOwnPropertyDescriptor:function(r,e){return QKe.f(JKe(r),e)}})});var ete=V(()=>{var eJe=Ne(),tJe=jr(),rJe=No(),iJe=Iw();eJe({target:"Reflect",stat:!0,sham:!iJe},{getPrototypeOf:function(r){return rJe(tJe(r))}})});var tte=V(()=>{var nJe=Ne();nJe({target:"Reflect",stat:!0},{has:function(r,e){return e in r}})});var rte=V(()=>{var sJe=Ne(),aJe=jr(),oJe=eR();sJe({target:"Reflect",stat:!0},{isExtensible:function(r){return aJe(r),oJe(r)}})});var ite=V(()=>{var lJe=Ne(),cJe=sw();lJe({target:"Reflect",stat:!0},{ownKeys:cJe})});var nte=V(()=>{var uJe=Ne(),hJe=bn(),pJe=jr(),dJe=Um();uJe({target:"Reflect",stat:!0,sham:!dJe},{preventExtensions:function(r){pJe(r);try{var e=hJe("Object","preventExtensions");return e&&e(r),!0}catch(i){return!1}}})});var cte=V(()=>{var fJe=Ne(),mJe=ni(),gJe=jr(),ste=si(),vJe=fF(),yJe=Rt(),mF=Vi(),ate=Us(),TJe=No(),ote=Ao();function lte(t,r,e){var i=arguments.length<4?t:arguments[3],n=ate.f(gJe(t),r),s,a,o;if(!n){if(ste(a=TJe(t)))return lte(a,r,e,i);n=ote(0)}if(vJe(n)){if(n.writable===!1||!ste(i))return!1;if(s=ate.f(i,r)){if(s.get||s.set||s.writable===!1)return!1;s.value=e,mF.f(i,r,s)}else mF.f(i,r,ote(0,e))}else{if(o=n.set,o===void 0)return!1;mJe(o,i,e)}return!0}var EJe=yJe(function(){var t=function(){},r=mF.f(new t,"a",{configurable:!0});return Reflect.set(t.prototype,"a",1,r)!==!1});fJe({target:"Reflect",stat:!0,forced:EJe},{set:lte})});var hte=V(()=>{var bJe=Ne(),xJe=jr(),IJe=Y2(),ute=gc();ute&&bJe({target:"Reflect",stat:!0},{setPrototypeOf:function(r,e){xJe(r),IJe(e);try{return ute(r,e),!0}catch(i){return!1}}})});var pte=V(()=>{var SJe=Ne(),_Je=ir(),wJe=Ya();SJe({global:!0},{Reflect:{}});wJe(_Je.Reflect,"Reflect",!0)});var Pv=V((H8t,dte)=>{var RJe=si(),MJe=fa(),DJe=fi(),CJe=DJe("match");dte.exports=function(t){var r;return RJe(t)&&((r=t[CJe])!==void 0?!!r:MJe(t)=="RegExp")}});var xR=V((U8t,fte)=>{"use strict";var AJe=jr();fte.exports=function(){var t=AJe(this),r="";return t.hasIndices&&(r+="d"),t.global&&(r+="g"),t.ignoreCase&&(r+="i"),t.multiline&&(r+="m"),t.dotAll&&(r+="s"),t.unicode&&(r+="u"),t.unicodeSets&&(r+="v"),t.sticky&&(r+="y"),r}});var Nv=V((B8t,gte)=>{var OJe=ni(),PJe=Si(),NJe=Oo(),LJe=xR(),mte=RegExp.prototype;gte.exports=function(t){var r=t.flags;return r===void 0&&!("flags"in mte)&&!PJe(t,"flags")&&NJe(mte,t)?OJe(LJe,t):r}});var Y1=V((k8t,vte)=>{var gF=Rt(),FJe=ir(),vF=FJe.RegExp,yF=gF(function(){var t=vF("a","y");return t.lastIndex=2,t.exec("abcd")!=null}),HJe=yF||gF(function(){return!vF("a","y").sticky}),UJe=yF||gF(function(){var t=vF("^r","gy");return t.lastIndex=2,t.exec("str")!=null});vte.exports={BROKEN_CARET:UJe,MISSED_STICKY:HJe,UNSUPPORTED_Y:yF}});var IR=V((G8t,yte)=>{var BJe=Rt(),kJe=ir(),GJe=kJe.RegExp;yte.exports=BJe(function(){var t=GJe(".","s");return!(t.dotAll&&t.exec(`
|
||
`)&&t.flags==="s")})});var TF=V((V8t,Tte)=>{var VJe=Rt(),zJe=ir(),jJe=zJe.RegExp;Tte.exports=VJe(function(){var t=jJe("(?<a>b)","g");return t.exec("b").groups.a!=="b"||"b".replace(t,"$<a>c")!=="bc"})});var Mte=V(()=>{var WJe=Pr(),IF=ir(),X1=Bt(),qJe=sv(),YJe=Om(),XJe=va(),$Je=zh().f,Ete=Oo(),ZJe=Pv(),bte=mi(),KJe=Nv(),Ste=Y1(),JJe=X2(),QJe=Dn(),eQe=Rt(),tQe=Si(),rQe=cs().enforce,iQe=Nm(),nQe=fi(),_te=IR(),wte=TF(),sQe=nQe("match"),Wd=IF.RegExp,Lv=Wd.prototype,aQe=IF.SyntaxError,oQe=X1(Lv.exec),SR=X1("".charAt),xte=X1("".replace),Ite=X1("".indexOf),lQe=X1("".slice),cQe=/^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/,Wm=/a/g,EF=/a/g,uQe=new Wd(Wm)!==Wm,Rte=Ste.MISSED_STICKY,hQe=Ste.UNSUPPORTED_Y,pQe=WJe&&(!uQe||Rte||_te||wte||eQe(function(){return EF[sQe]=!1,Wd(Wm)!=Wm||Wd(EF)==EF||Wd(Wm,"i")!="/a/i"})),dQe=function(t){for(var r=t.length,e=0,i="",n=!1,s;e<=r;e++){if(s=SR(t,e),s==="\\"){i+=s+SR(t,++e);continue}!n&&s==="."?i+="[\\s\\S]":(s==="["?n=!0:s==="]"&&(n=!1),i+=s)}return i},fQe=function(t){for(var r=t.length,e=0,i="",n=[],s={},a=!1,o=!1,l=0,c="",u;e<=r;e++){if(u=SR(t,e),u==="\\")u=u+SR(t,++e);else if(u==="]")a=!1;else if(!a)switch(!0){case u==="[":a=!0;break;case u==="(":oQe(cQe,lQe(t,e+1))&&(e+=2,o=!0),i+=u,l++;continue;case(u===">"&&o):if(c===""||tQe(s,c))throw new aQe("Invalid capture group name");s[c]=!0,n[n.length]=[c,l],o=!1,c="";continue}o?c+=u:i+=u}return[i,n]};if(qJe("RegExp",pQe)){for(jd=function(r,e){var i=Ete(Lv,this),n=ZJe(r),s=e===void 0,a=[],o=r,l,c,u,h,p,d;if(!i&&n&&s&&r.constructor===jd)return r;if((n||Ete(Lv,r))&&(r=r.source,s&&(e=KJe(o))),r=r===void 0?"":bte(r),e=e===void 0?"":bte(e),o=r,_te&&"dotAll"in Wm&&(c=!!e&&Ite(e,"s")>-1,c&&(e=xte(e,/s/g,""))),l=e,Rte&&"sticky"in Wm&&(u=!!e&&Ite(e,"y")>-1,u&&hQe&&(e=xte(e,/y/g,""))),wte&&(h=fQe(r),r=h[0],a=h[1]),p=YJe(Wd(r,e),i?this:Lv,jd),(c||u||a.length)&&(d=rQe(p),c&&(d.dotAll=!0,d.raw=jd(dQe(r),l)),u&&(d.sticky=!0),a.length&&(d.groups=a)),r!==o)try{XJe(p,"source",o===""?"(?:)":o)}catch(f){}return p},bF=$Je(Wd),xF=0;bF.length>xF;)JJe(jd,Wd,bF[xF++]);Lv.constructor=jd,jd.prototype=Lv,QJe(IF,"RegExp",jd,{constructor:!0})}var jd,bF,xF;iQe("RegExp")});var Cte=V(()=>{var mQe=Pr(),gQe=IR(),vQe=fa(),yQe=Gd(),TQe=cs().get,Dte=RegExp.prototype,EQe=TypeError;mQe&&gQe&&yQe(Dte,"dotAll",{configurable:!0,get:function(){if(this!==Dte){if(vQe(this)==="RegExp")return!!TQe(this).dotAll;throw EQe("Incompatible receiver, RegExp required")}}})});var $1=V((Y8t,Ote)=>{"use strict";var Fv=ni(),wR=Bt(),bQe=mi(),xQe=xR(),IQe=Y1(),SQe=Sm(),_Qe=qa(),wQe=cs().get,RQe=IR(),MQe=TF(),DQe=SQe("native-string-replace",String.prototype.replace),_R=RegExp.prototype.exec,_F=_R,CQe=wR("".charAt),AQe=wR("".indexOf),OQe=wR("".replace),SF=wR("".slice),wF=function(){var t=/a/,r=/b*/g;return Fv(_R,t,"a"),Fv(_R,r,"a"),t.lastIndex!==0||r.lastIndex!==0}(),Ate=IQe.BROKEN_CARET,RF=/()??/.exec("")[1]!==void 0,PQe=wF||RF||Ate||RQe||MQe;PQe&&(_F=function(r){var e=this,i=wQe(e),n=bQe(r),s=i.raw,a,o,l,c,u,h,p;if(s)return s.lastIndex=e.lastIndex,a=Fv(_F,s,n),e.lastIndex=s.lastIndex,a;var d=i.groups,f=Ate&&e.sticky,m=Fv(xQe,e),g=e.source,y=0,E=n;if(f&&(m=OQe(m,"y",""),AQe(m,"g")===-1&&(m+="g"),E=SF(n,e.lastIndex),e.lastIndex>0&&(!e.multiline||e.multiline&&CQe(n,e.lastIndex-1)!==`
|
||
`)&&(g="(?: "+g+")",E=" "+E,y++),o=new RegExp("^(?:"+g+")",m)),RF&&(o=new RegExp("^"+g+"$(?!\\s)",m)),wF&&(l=e.lastIndex),c=Fv(_R,f?o:e,E),f?c?(c.input=SF(c.input,y),c[0]=SF(c[0],y),c.index=e.lastIndex,e.lastIndex+=c[0].length):e.lastIndex=0:wF&&c&&(e.lastIndex=e.global?c.index+c[0].length:l),RF&&c&&c.length>1&&Fv(DQe,c[0],o,function(){for(u=1;u<arguments.length-2;u++)arguments[u]===void 0&&(c[u]=void 0)}),c&&d)for(c.groups=h=_Qe(null),u=0;u<d.length;u++)p=d[u],h[p[0]]=c[p[1]];return c});Ote.exports=_F});var RR=V(()=>{"use strict";var NQe=Ne(),Pte=$1();NQe({target:"RegExp",proto:!0,forced:/./.exec!==Pte},{exec:Pte})});var Fte=V(()=>{var LQe=ir(),FQe=Pr(),HQe=Gd(),UQe=xR(),BQe=Rt(),Nte=LQe.RegExp,Lte=Nte.prototype,kQe=FQe&&BQe(function(){var t=!0;try{Nte(".","d")}catch(l){t=!1}var r={},e="",i=t?"dgimsy":"gimsy",n=function(l,c){Object.defineProperty(r,l,{get:function(){return e+=c,!0}})},s={dotAll:"s",global:"g",ignoreCase:"i",multiline:"m",sticky:"y"};t&&(s.hasIndices="d");for(var a in s)n(a,s[a]);var o=Object.getOwnPropertyDescriptor(Lte,"flags").get.call(r);return o!==i||e!==i});kQe&&HQe(Lte,"flags",{configurable:!0,get:UQe})});var Ute=V(()=>{var GQe=Pr(),VQe=Y1().MISSED_STICKY,zQe=fa(),jQe=Gd(),WQe=cs().get,Hte=RegExp.prototype,qQe=TypeError;GQe&&VQe&&jQe(Hte,"sticky",{configurable:!0,get:function(){if(this!==Hte){if(zQe(this)==="RegExp")return!!WQe(this).sticky;throw qQe("Incompatible receiver, RegExp required")}}})});var Gte=V(()=>{"use strict";RR();var YQe=Ne(),Bte=ni(),XQe=Ti(),kte=jr(),$Qe=mi(),ZQe=function(){var t=!1,r=/[ac]/;return r.exec=function(){return t=!0,/./.exec.apply(this,arguments)},r.test("abc")===!0&&t}(),KQe=/./.test;YQe({target:"RegExp",proto:!0,forced:!ZQe},{test:function(t){var r=kte(this),e=$Qe(t),i=r.exec;if(!XQe(i))return Bte(KQe,r,e);var n=Bte(i,r,e);return n===null?!1:(kte(n),!0)}})});var jte=V(()=>{"use strict";var JQe=Rm().PROPER,QQe=Dn(),eet=jr(),Vte=mi(),tet=Rt(),ret=Nv(),MF="toString",iet=RegExp.prototype,zte=iet[MF],net=tet(function(){return zte.call({source:"a",flags:"b"})!="/a/b"}),set=JQe&&zte.name!=MF;(net||set)&&QQe(RegExp.prototype,MF,function(){var r=eet(this),e=Vte(r.source),i=Vte(ret(r));return"/"+e+"/"+i},{unsafe:!0})});var Wte=V(()=>{"use strict";var aet=A1(),oet=lL();aet("Set",function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}},oet)});var qte=V(()=>{Wte()});var Yte=V(()=>{"use strict";var cet=Ne(),uet=Bt(),het=ls(),pet=ms(),det=mi(),fet=Rt(),met=uet("".charAt),get=fet(function(){return"\u{20BB7}".at(-2)!=="\uD842"});cet({target:"String",proto:!0,forced:get},{at:function(r){var e=det(het(this)),i=e.length,n=pet(r),s=n>=0?n:i+n;return s<0||s>=i?void 0:met(e,s)}})});var Z1=V((uGt,Zte)=>{var DF=Bt(),vet=ms(),yet=mi(),Tet=ls(),Eet=DF("".charAt),Xte=DF("".charCodeAt),bet=DF("".slice),$te=function(t){return function(r,e){var i=yet(Tet(r)),n=vet(e),s=i.length,a,o;return n<0||n>=s?t?"":void 0:(a=Xte(i,n),a<55296||a>56319||n+1===s||(o=Xte(i,n+1))<56320||o>57343?t?Eet(i,n):a:t?bet(i,n,n+2):(a-55296<<10)+(o-56320)+65536)}};Zte.exports={codeAt:$te(!1),charAt:$te(!0)}});var Kte=V(()=>{"use strict";var xet=Ne(),Iet=Z1().codeAt;xet({target:"String",proto:!0},{codePointAt:function(r){return Iet(this,r)}})});var MR=V((dGt,Jte)=>{var _et=Pv(),wet=TypeError;Jte.exports=function(t){if(_et(t))throw wet("The method doesn't accept regular expressions");return t}});var DR=V((fGt,Qte)=>{var Ret=fi(),Met=Ret("match");Qte.exports=function(t){var r=/./;try{"/./"[t](r)}catch(e){try{return r[Met]=!1,"/./"[t](r)}catch(i){}}return!1}});var nre=V(()=>{"use strict";var Det=Ne(),rre=jh(),Cet=Us().f,Aet=Wa(),ere=mi(),Oet=MR(),Pet=ls(),Net=DR(),Let=Bn(),tre=rre("".endsWith),Fet=rre("".slice),Het=Math.min,ire=Net("endsWith"),Uet=!Let&&!ire&&!!function(){var t=Cet(String.prototype,"endsWith");return t&&!t.writable}();Det({target:"String",proto:!0,forced:!Uet&&!ire},{endsWith:function(r){var e=ere(Pet(this));Oet(r);var i=arguments.length>1?arguments[1]:void 0,n=e.length,s=i===void 0?n:Het(Aet(i),n),a=ere(r);return tre?tre(e,a,s):Fet(e,s-a.length,s)===a}})});var ore=V(()=>{var Bet=Ne(),ket=Bt(),Get=Su(),Vet=RangeError,sre=String.fromCharCode,are=String.fromCodePoint,zet=ket([].join),jet=!!are&&are.length!=1;Bet({target:"String",stat:!0,arity:1,forced:jet},{fromCodePoint:function(r){for(var e=[],i=arguments.length,n=0,s;i>n;){if(s=+arguments[n++],Get(s,1114111)!==s)throw Vet(s+" is not a valid code point");e[n]=s<65536?sre(s):sre(((s-=65536)>>10)+55296,s%1024+56320)}return zet(e,"")}})});var cre=V(()=>{"use strict";var Wet=Ne(),qet=Bt(),Yet=MR(),Xet=ls(),lre=mi(),$et=DR(),Zet=qet("".indexOf);Wet({target:"String",proto:!0,forced:!$et("includes")},{includes:function(r){return!!~Zet(lre(Xet(this)),lre(Yet(r)),arguments.length>1?arguments[1]:void 0)}})});var CF=V(()=>{"use strict";var Ket=Z1().charAt,Jet=mi(),hre=cs(),Qet=Pw(),ure=S1(),pre="String Iterator",ett=hre.set,ttt=hre.getterFor(pre);Qet(String,"String",function(t){ett(this,{type:pre,string:Jet(t),index:0})},function(){var r=ttt(this),e=r.string,i=r.index,n;return i>=e.length?ure(void 0,!0):(n=Ket(e,i),r.index+=n.length,ure(n,!1))})});var K1=V((IGt,vre)=>{"use strict";RR();var dre=jh(),fre=Dn(),rtt=$1(),mre=Rt(),gre=fi(),itt=va(),ntt=gre("species"),AF=RegExp.prototype;vre.exports=function(t,r,e,i){var n=gre(t),s=!mre(function(){var c={};return c[n]=function(){return 7},""[t](c)!=7}),a=s&&!mre(function(){var c=!1,u=/a/;return t==="split"&&(u={},u.constructor={},u.constructor[ntt]=function(){return u},u.flags="",u[n]=/./[n]),u.exec=function(){return c=!0,null},u[n](""),!c});if(!s||!a||e){var o=dre(/./[n]),l=r(n,""[t],function(c,u,h,p,d){var f=dre(c),m=u.exec;return m===rtt||m===AF.exec?s&&!d?{done:!0,value:o(u,h,p)}:{done:!0,value:f(h,u,p)}:{done:!1}});fre(String.prototype,t,l[0]),fre(AF,n,l[1])}i&&itt(AF[n],"sham",!0)}});var J1=V((SGt,yre)=>{"use strict";var stt=Z1().charAt;yre.exports=function(t,r,e){return r+(e?stt(t,r).length:1)}});var Hv=V((_Gt,Ere)=>{var Tre=ni(),att=jr(),ott=Ti(),ltt=fa(),ctt=$1(),utt=TypeError;Ere.exports=function(t,r){var e=t.exec;if(ott(e)){var i=Tre(e,t,r);return i!==null&&att(i),i}if(ltt(t)==="RegExp")return Tre(ctt,t,r);throw utt("RegExp#exec called on incompatible receiver")}});var xre=V(()=>{"use strict";var htt=ni(),ptt=K1(),dtt=jr(),ftt=ma(),mtt=Wa(),OF=mi(),gtt=ls(),vtt=Iu(),ytt=J1(),bre=Hv();ptt("match",function(t,r,e){return[function(n){var s=gtt(this),a=ftt(n)?void 0:vtt(n,t);return a?htt(a,n,s):new RegExp(n)[t](OF(s))},function(i){var n=dtt(this),s=OF(i),a=e(r,n,s);if(a.done)return a.value;if(!n.global)return bre(n,s);var o=n.unicode;n.lastIndex=0;for(var l=[],c=0,u;(u=bre(n,s))!==null;){var h=OF(u[0]);l[c]=h,h===""&&(n.lastIndex=ytt(s,mtt(n.lastIndex),o)),c++}return c===0?null:l}]})});var Ore=V(()=>{"use strict";var Ttt=Ne(),Ire=ni(),wre=jh(),Ett=Cw(),CR=S1(),Sre=ls(),Rre=Wa(),Q1=mi(),btt=jr(),xtt=ma(),Itt=fa(),Stt=Pv(),Mre=Nv(),_tt=Iu(),wtt=Dn(),Rtt=Rt(),Mtt=fi(),Dtt=Fm(),Ctt=J1(),Att=Hv(),Dre=cs(),NF=Bn(),AR=Mtt("matchAll"),Cre="RegExp String",Are=Cre+" Iterator",Ott=Dre.set,Ptt=Dre.getterFor(Are),_re=RegExp.prototype,Ntt=TypeError,LF=wre("".indexOf),OR=wre("".matchAll),PF=!!OR&&!Rtt(function(){OR("a",/./)}),Ltt=Ett(function(r,e,i,n){Ott(this,{type:Are,regexp:r,string:e,global:i,unicode:n,done:!1})},Cre,function(){var r=Ptt(this);if(r.done)return CR(void 0,!0);var e=r.regexp,i=r.string,n=Att(e,i);return n===null?(r.done=!0,CR(void 0,!0)):r.global?(Q1(n[0])===""&&(e.lastIndex=Ctt(i,Rre(e.lastIndex),r.unicode)),CR(n,!1)):(r.done=!0,CR(n,!1))}),FF=function(t){var r=btt(this),e=Q1(t),i=Dtt(r,RegExp),n=Q1(Mre(r)),s,a,o;return s=new i(i===RegExp?r.source:r,n),a=!!~LF(n,"g"),o=!!~LF(n,"u"),s.lastIndex=Rre(r.lastIndex),new Ltt(s,e,a,o)};Ttt({target:"String",proto:!0,forced:PF},{matchAll:function(r){var e=Sre(this),i,n,s,a;if(xtt(r)){if(PF)return OR(e,r)}else{if(Stt(r)&&(i=Q1(Sre(Mre(r))),!~LF(i,"g")))throw Ntt("`.matchAll` does not allow non-global regexes");if(PF)return OR(e,r);if(s=_tt(r,AR),s===void 0&&NF&&Itt(r)=="RegExp"&&(s=FF),s)return Ire(s,r,e)}return n=Q1(e),a=new RegExp(r,"g"),NF?Ire(FF,a,n):a[AR](n)}});NF||AR in _re||wtt(_re,AR,FF)});var HF=V((CGt,Pre)=>{var Ftt=bu();Pre.exports=/Version\/10(?:\.\d+){1,2}(?: [\w./]+)?(?: Mobile\/\w+)? Safari\//.test(Ftt)});var Nre=V(()=>{"use strict";var Htt=Ne(),Utt=Kw().end,Btt=HF();Htt({target:"String",proto:!0,forced:Btt},{padEnd:function(r){return Utt(this,r,arguments.length>1?arguments[1]:void 0)}})});var Lre=V(()=>{"use strict";var ktt=Ne(),Gtt=Kw().start,Vtt=HF();ktt({target:"String",proto:!0,forced:Vtt},{padStart:function(r){return Gtt(this,r,arguments.length>1?arguments[1]:void 0)}})});var Bre=V(()=>{var ztt=Ne(),Ure=Bt(),jtt=ga(),Wtt=Li(),Fre=mi(),qtt=ln(),Hre=Ure([].push),Ytt=Ure([].join);ztt({target:"String",stat:!0},{raw:function(r){for(var e=jtt(Wtt(r).raw),i=qtt(e),n=arguments.length,s=[],a=0;i>a;){if(Hre(s,Fre(e[a++])),a===i)return Ytt(s,"");a<n&&Hre(s,Fre(arguments[a]))}}})});var kre=V(()=>{var Xtt=Ne(),$tt=D1();Xtt({target:"String",proto:!0},{repeat:$tt})});var GF=V((BGt,Gre)=>{var kF=Bt(),Ztt=Li(),Ktt=Math.floor,UF=kF("".charAt),Jtt=kF("".replace),BF=kF("".slice),Qtt=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,ert=/\$([$&'`]|\d{1,2})/g;Gre.exports=function(t,r,e,i,n,s){var a=e+t.length,o=i.length,l=ert;return n!==void 0&&(n=Ztt(n),l=Qtt),Jtt(s,l,function(c,u){var h;switch(UF(u,0)){case"$":return"$";case"&":return t;case"`":return BF(r,0,e);case"'":return BF(r,a);case"<":h=n[BF(u,1,-1)];break;default:var p=+u;if(p===0)return c;if(p>o){var d=Ktt(p/10);return d===0?c:d<=o?i[d-1]===void 0?UF(u,1):i[d-1]+UF(u,1):c}h=i[p-1]}return h===void 0?"":h})}});var qre=V(()=>{"use strict";var trt=Po(),Vre=ni(),PR=Bt(),rrt=K1(),irt=Rt(),nrt=jr(),srt=Ti(),art=ma(),ort=ms(),lrt=Wa(),Uv=mi(),crt=ls(),urt=J1(),hrt=Iu(),prt=GF(),drt=Hv(),frt=fi(),zF=frt("replace"),mrt=Math.max,grt=Math.min,vrt=PR([].concat),VF=PR([].push),zre=PR("".indexOf),jre=PR("".slice),yrt=function(t){return t===void 0?t:String(t)},Trt=function(){return"a".replace(/./,"$0")==="$0"}(),Wre=function(){return/./[zF]?/./[zF]("a","$0")==="":!1}(),Ert=!irt(function(){var t=/./;return t.exec=function(){var r=[];return r.groups={a:"7"},r},"".replace(t,"$<a>")!=="7"});rrt("replace",function(t,r,e){var i=Wre?"$":"$0";return[function(s,a){var o=crt(this),l=art(s)?void 0:hrt(s,zF);return l?Vre(l,s,o,a):Vre(r,Uv(o),s,a)},function(n,s){var a=nrt(this),o=Uv(n);if(typeof s=="string"&&zre(s,i)===-1&&zre(s,"$<")===-1){var l=e(r,a,o,s);if(l.done)return l.value}var c=srt(s);c||(s=Uv(s));var u=a.global;if(u){var h=a.unicode;a.lastIndex=0}for(var p=[];;){var d=drt(a,o);if(d===null||(VF(p,d),!u))break;var f=Uv(d[0]);f===""&&(a.lastIndex=urt(o,lrt(a.lastIndex),h))}for(var m="",g=0,y=0;y<p.length;y++){d=p[y];for(var E=Uv(d[0]),b=mrt(grt(ort(d.index),o.length),0),x=[],S=1;S<d.length;S++)VF(x,yrt(d[S]));var D=d.groups;if(c){var P=vrt([E],x,b,o);D!==void 0&&VF(P,D);var _=Uv(trt(s,void 0,P))}else _=prt(E,o,b,x,D,s);b>=g&&(m+=jre(o,g,b)+_,g=b+E.length)}return m+jre(o,g)}]},!Ert||!Trt||Wre)});var Kre=V(()=>{"use strict";var brt=Ne(),xrt=ni(),jF=Bt(),Yre=ls(),Irt=Ti(),Srt=ma(),_rt=Pv(),Bv=mi(),wrt=Iu(),Rrt=Nv(),Mrt=GF(),Drt=fi(),Crt=Bn(),Art=Drt("replace"),Ort=TypeError,Zre=jF("".indexOf),Prt=jF("".replace),Xre=jF("".slice),Nrt=Math.max,$re=function(t,r,e){return e>t.length?-1:r===""?e:Zre(t,r,e)};brt({target:"String",proto:!0},{replaceAll:function(r,e){var i=Yre(this),n,s,a,o,l,c,u,h,p,d=0,f=0,m="";if(!Srt(r)){if(n=_rt(r),n&&(s=Bv(Yre(Rrt(r))),!~Zre(s,"g")))throw Ort("`.replaceAll` does not allow non-global regexes");if(a=wrt(r,Art),a)return xrt(a,r,i,e);if(Crt&&n)return Prt(Bv(i),r,e)}for(o=Bv(i),l=Bv(r),c=Irt(e),c||(e=Bv(e)),u=l.length,h=Nrt(1,u),d=$re(o,l,0);d!==-1;)p=c?Bv(e(l,d,o)):Mrt(l,o,d,[],void 0,e),m+=Xre(o,f,d)+p,f=d+u,d=$re(o,l,d+h);return f<o.length&&(m+=Xre(o,f)),m}})});var eie=V(()=>{"use strict";var Lrt=ni(),Frt=K1(),Hrt=jr(),Urt=ma(),Brt=ls(),Jre=CL(),Qre=mi(),krt=Iu(),Grt=Hv();Frt("search",function(t,r,e){return[function(n){var s=Brt(this),a=Urt(n)?void 0:krt(n,t);return a?Lrt(a,n,s):new RegExp(n)[t](Qre(s))},function(i){var n=Hrt(this),s=Qre(i),a=e(r,n,s);if(a.done)return a.value;var o=n.lastIndex;Jre(o,0)||(n.lastIndex=0);var l=Grt(n,s);return Jre(n.lastIndex,o)||(n.lastIndex=o),l===null?-1:l.index}]})});var aie=V(()=>{"use strict";var Vrt=Po(),eb=ni(),qF=Bt(),zrt=K1(),jrt=jr(),Wrt=ma(),qrt=Pv(),tie=ls(),Yrt=Fm(),Xrt=J1(),$rt=Wa(),WF=mi(),Zrt=Iu(),rie=ov(),iie=Hv(),Krt=$1(),Jrt=Y1(),Qrt=Rt(),kv=Jrt.UNSUPPORTED_Y,nie=4294967295,eit=Math.min,sie=[].push,tit=qF(/./.exec),Gv=qF(sie),tb=qF("".slice),rit=!Qrt(function(){var t=/(?:)/,r=t.exec;t.exec=function(){return r.apply(this,arguments)};var e="ab".split(t);return e.length!==2||e[0]!=="a"||e[1]!=="b"});zrt("split",function(t,r,e){var i;return"abbc".split(/(b)*/)[1]=="c"||"test".split(/(?:)/,-1).length!=4||"ab".split(/(?:ab)*/).length!=2||".".split(/(.?)(.?)/).length!=4||".".split(/()()/).length>1||"".split(/.?/).length?i=function(n,s){var a=WF(tie(this)),o=s===void 0?nie:s>>>0;if(o===0)return[];if(n===void 0)return[a];if(!qrt(n))return eb(r,a,n,o);for(var l=[],c=(n.ignoreCase?"i":"")+(n.multiline?"m":"")+(n.unicode?"u":"")+(n.sticky?"y":""),u=0,h=new RegExp(n.source,c+"g"),p,d,f;(p=eb(Krt,h,a))&&(d=h.lastIndex,!(d>u&&(Gv(l,tb(a,u,p.index)),p.length>1&&p.index<a.length&&Vrt(sie,l,rie(p,1)),f=p[0].length,u=d,l.length>=o)));)h.lastIndex===p.index&&h.lastIndex++;return u===a.length?(f||!tit(h,""))&&Gv(l,""):Gv(l,tb(a,u)),l.length>o?rie(l,0,o):l}:"0".split(void 0,0).length?i=function(n,s){return n===void 0&&s===0?[]:eb(r,this,n,s)}:i=r,[function(s,a){var o=tie(this),l=Wrt(s)?void 0:Zrt(s,t);return l?eb(l,s,o,a):eb(i,WF(o),s,a)},function(n,s){var a=jrt(this),o=WF(n),l=e(i,a,o,s,i!==r);if(l.done)return l.value;var c=Yrt(a,RegExp),u=a.unicode,h=(a.ignoreCase?"i":"")+(a.multiline?"m":"")+(a.unicode?"u":"")+(kv?"g":"y"),p=new c(kv?"^(?:"+a.source+")":a,h),d=s===void 0?nie:s>>>0;if(d===0)return[];if(o.length===0)return iie(p,o)===null?[o]:[];for(var f=0,m=0,g=[];m<o.length;){p.lastIndex=kv?0:m;var y=iie(p,kv?tb(o,m):o),E;if(y===null||(E=eit($rt(p.lastIndex+(kv?m:0)),o.length))===f)m=Xrt(o,m,u);else{if(Gv(g,tb(o,f,m)),g.length===d)return g;for(var b=1;b<=y.length-1;b++)if(Gv(g,y[b]),g.length===d)return g;m=f=E}}return Gv(g,tb(o,f)),g}]},!rit,kv)});var hie=V(()=>{"use strict";var iit=Ne(),cie=jh(),nit=Us().f,sit=Wa(),oie=mi(),ait=MR(),oit=ls(),lit=DR(),cit=Bn(),lie=cie("".startsWith),uit=cie("".slice),hit=Math.min,uie=lit("startsWith"),pit=!cit&&!uie&&!!function(){var t=nit(String.prototype,"startsWith");return t&&!t.writable}();iit({target:"String",proto:!0,forced:!pit&&!uie},{startsWith:function(r){var e=oie(oit(this));ait(r);var i=sit(hit(arguments.length>1?arguments[1]:void 0,e.length)),n=oie(r);return lie?lie(e,n,i):uit(e,i,i+n.length)===n}})});var die=V(()=>{"use strict";var dit=Ne(),fit=Bt(),mit=ls(),pie=ms(),git=mi(),vit=fit("".slice),yit=Math.max,Tit=Math.min,Eit=!"".substr||"ab".substr(-1)!=="b";dit({target:"String",proto:!0,forced:Eit},{substr:function(r,e){var i=git(mit(this)),n=i.length,s=pie(r),a,o;return s===1/0&&(s=0),s<0&&(s=yit(n+s,0)),a=e===void 0?n:pie(e),a<=0||a===1/0?"":(o=Tit(s+a,n),s>=o?"":vit(i,s,o))}})});var NR=V((JGt,gie)=>{var bit=Rm().PROPER,xit=Rt(),fie=F1(),mie="\u200B\x85\u180E";gie.exports=function(t){return xit(function(){return!!fie[t]()||mie[t]()!==mie||bit&&fie[t].name!==t})}});var vie=V(()=>{"use strict";var Iit=Ne(),Sit=Bm().trim,_it=NR();Iit({target:"String",proto:!0,forced:_it("trim")},{trim:function(){return Sit(this)}})});var YF=V((tVt,yie)=>{"use strict";var wit=Bm().end,Rit=NR();yie.exports=Rit("trimEnd")?function(){return wit(this)}:"".trimEnd});var Eie=V(()=>{var Mit=Ne(),Tie=YF();Mit({target:"String",proto:!0,name:"trimEnd",forced:"".trimRight!==Tie},{trimRight:Tie})});var xie=V(()=>{Eie();var Dit=Ne(),bie=YF();Dit({target:"String",proto:!0,name:"trimEnd",forced:"".trimEnd!==bie},{trimEnd:bie})});var XF=V((aVt,Iie)=>{"use strict";var Cit=Bm().start,Ait=NR();Iie.exports=Ait("trimStart")?function(){return Cit(this)}:"".trimStart});var _ie=V(()=>{var Oit=Ne(),Sie=XF();Oit({target:"String",proto:!0,name:"trimStart",forced:"".trimLeft!==Sie},{trimLeft:Sie})});var Rie=V(()=>{_ie();var Pit=Ne(),wie=XF();Pit({target:"String",proto:!0,name:"trimStart",forced:"".trimStart!==wie},{trimStart:wie})});var Za=V((hVt,Die)=>{var Nit=Bt(),Lit=ls(),Mie=mi(),Fit=/"/g,Hit=Nit("".replace);Die.exports=function(t,r,e,i){var n=Mie(Lit(t)),s="<"+r;return e!==""&&(s+=" "+e+'="'+Hit(Mie(i),Fit,""")+'"'),s+">"+n+"</"+r+">"}});var Ka=V((pVt,Cie)=>{var Uit=Rt();Cie.exports=function(t){return Uit(function(){var r=""[t]('"');return r!==r.toLowerCase()||r.split('"').length>3})}});var Aie=V(()=>{"use strict";var Bit=Ne(),kit=Za(),Git=Ka();Bit({target:"String",proto:!0,forced:Git("anchor")},{anchor:function(r){return kit(this,"a","name",r)}})});var Oie=V(()=>{"use strict";var Vit=Ne(),zit=Za(),jit=Ka();Vit({target:"String",proto:!0,forced:jit("big")},{big:function(){return zit(this,"big","","")}})});var Pie=V(()=>{"use strict";var Wit=Ne(),qit=Za(),Yit=Ka();Wit({target:"String",proto:!0,forced:Yit("blink")},{blink:function(){return qit(this,"blink","","")}})});var Nie=V(()=>{"use strict";var Xit=Ne(),$it=Za(),Zit=Ka();Xit({target:"String",proto:!0,forced:Zit("bold")},{bold:function(){return $it(this,"b","","")}})});var Lie=V(()=>{"use strict";var Kit=Ne(),Jit=Za(),Qit=Ka();Kit({target:"String",proto:!0,forced:Qit("fixed")},{fixed:function(){return Jit(this,"tt","","")}})});var Fie=V(()=>{"use strict";var ent=Ne(),tnt=Za(),rnt=Ka();ent({target:"String",proto:!0,forced:rnt("fontcolor")},{fontcolor:function(r){return tnt(this,"font","color",r)}})});var Hie=V(()=>{"use strict";var int=Ne(),nnt=Za(),snt=Ka();int({target:"String",proto:!0,forced:snt("fontsize")},{fontsize:function(r){return nnt(this,"font","size",r)}})});var Uie=V(()=>{"use strict";var ant=Ne(),ont=Za(),lnt=Ka();ant({target:"String",proto:!0,forced:lnt("italics")},{italics:function(){return ont(this,"i","","")}})});var Bie=V(()=>{"use strict";var cnt=Ne(),unt=Za(),hnt=Ka();cnt({target:"String",proto:!0,forced:hnt("link")},{link:function(r){return unt(this,"a","href",r)}})});var kie=V(()=>{"use strict";var pnt=Ne(),dnt=Za(),fnt=Ka();pnt({target:"String",proto:!0,forced:fnt("small")},{small:function(){return dnt(this,"small","","")}})});var Gie=V(()=>{"use strict";var mnt=Ne(),gnt=Za(),vnt=Ka();mnt({target:"String",proto:!0,forced:vnt("strike")},{strike:function(){return gnt(this,"strike","","")}})});var Vie=V(()=>{"use strict";var ynt=Ne(),Tnt=Za(),Ent=Ka();ynt({target:"String",proto:!0,forced:Ent("sub")},{sub:function(){return Tnt(this,"sub","","")}})});var zie=V(()=>{"use strict";var bnt=Ne(),xnt=Za(),Int=Ka();bnt({target:"String",proto:!0,forced:Int("sup")},{sup:function(){return xnt(this,"sup","","")}})});var LR=V((BVt,Wie)=>{var jie=ir(),$F=Rt(),Snt=b1(),_nt=_i().NATIVE_ARRAY_BUFFER_VIEWS,wnt=jie.ArrayBuffer,qm=jie.Int8Array;Wie.exports=!_nt||!$F(function(){qm(1)})||!$F(function(){new qm(-1)})||!Snt(function(t){new qm,new qm(null),new qm(1.5),new qm(t)},!0)||$F(function(){return new qm(new wnt(2),1,void 0).length!==1})});var Yie=V((kVt,qie)=>{var Rnt=ms(),Mnt=RangeError;qie.exports=function(t){var r=Rnt(t);if(r<0)throw Mnt("The argument can't be less than 0");return r}});var ZF=V((GVt,Xie)=>{var Dnt=Yie(),Cnt=RangeError;Xie.exports=function(t,r){var e=Dnt(t);if(e%r)throw Cnt("Wrong offset");return e}});var Zie=V((VVt,$ie)=>{var Ant=mc(),Ont=Bt(),Pnt=Ont("".slice);$ie.exports=function(t){return Pnt(Ant(t),0,3)==="Big"}});var KF=V((zVt,Kie)=>{var Nnt=r1(),Lnt=TypeError;Kie.exports=function(t){var r=Nnt(t,"number");if(typeof r=="number")throw Lnt("Can't convert number to bigint");return BigInt(r)}});var JF=V((jVt,Jie)=>{var Fnt=fl(),Hnt=ni(),Unt=Zw(),Bnt=Li(),knt=ln(),Gnt=v1(),Vnt=dv(),znt=Sw(),jnt=Zie(),Wnt=_i().aTypedArrayConstructor,qnt=KF();Jie.exports=function(r){var e=Unt(this),i=Bnt(r),n=arguments.length,s=n>1?arguments[1]:void 0,a=s!==void 0,o=Vnt(i),l,c,u,h,p,d,f,m;if(o&&!znt(o))for(f=Gnt(i,o),m=f.next,i=[];!(d=Hnt(m,f)).done;)i.push(d.value);for(a&&n>2&&(s=Fnt(s,arguments[2])),c=knt(i),u=new(Wnt(e))(c),h=jnt(u),l=0;c>l;l++)p=a?s(i[l],l):i[l],u[l]=h?qnt(p):+p;return u}});var Ou=V((WVt,s5)=>{"use strict";var Qie=Ne(),une=ir(),ene=ni(),Ynt=Pr(),Xnt=LR(),Vv=_i(),hne=M1(),tne=yc(),$nt=Ao(),rb=va(),Znt=lR(),Knt=Wa(),rne=AN(),QF=ZF(),pne=Vh(),ib=Si(),Jnt=mc(),r5=si(),Qnt=Md(),est=qa(),tst=Oo(),FR=gc(),rst=zh().f,ine=JF(),ist=ws().forEach,nst=Nm(),dne=Vi(),fne=Us(),a5=cs(),sst=Om(),i5=a5.get,ast=a5.set,ost=a5.enforce,o5=dne.f,lst=fne.f,cst=Math.round,e5=une.RangeError,mne=hne.ArrayBuffer,ust=mne.prototype,hst=hne.DataView,HR=Vv.NATIVE_ARRAY_BUFFER_VIEWS,nne=Vv.TYPED_ARRAY_TAG,sne=Vv.TypedArray,nb=Vv.TypedArrayPrototype,pst=Vv.aTypedArrayConstructor,n5=Vv.isTypedArray,UR="BYTES_PER_ELEMENT",t5="Wrong length",ane=function(t,r){pst(t);for(var e=0,i=r.length,n=new t(i);i>e;)n[e]=r[e++];return n},BR=function(t,r){o5(t,r,{get:function(){return i5(this)[r]}})},one=function(t){var r;return tst(ust,t)||(r=Jnt(t))=="ArrayBuffer"||r=="SharedArrayBuffer"},gne=function(t,r){return n5(t)&&!Qnt(r)&&r in t&&Znt(+r)&&r>=0},lne=function(r,e){return e=pne(e),gne(r,e)?$nt(2,r[e]):lst(r,e)},cne=function(r,e,i){return e=pne(e),gne(r,e)&&r5(i)&&ib(i,"value")&&!ib(i,"get")&&!ib(i,"set")&&!i.configurable&&(!ib(i,"writable")||i.writable)&&(!ib(i,"enumerable")||i.enumerable)?(r[e]=i.value,r):o5(r,e,i)};Ynt?(HR||(fne.f=lne,dne.f=cne,BR(nb,"buffer"),BR(nb,"byteOffset"),BR(nb,"byteLength"),BR(nb,"length")),Qie({target:"Object",stat:!0,forced:!HR},{getOwnPropertyDescriptor:lne,defineProperty:cne}),s5.exports=function(t,r,e){var i=t.match(/\d+$/)[0]/8,n=t+(e?"Clamped":"")+"Array",s="get"+t,a="set"+t,o=une[n],l=o,c=l&&l.prototype,u={},h=function(m,g){var y=i5(m);return y.view[s](g*i+y.byteOffset,!0)},p=function(m,g,y){var E=i5(m);e&&(y=(y=cst(y))<0?0:y>255?255:y&255),E.view[a](g*i+E.byteOffset,y,!0)},d=function(m,g){o5(m,g,{get:function(){return h(this,g)},set:function(y){return p(this,g,y)},enumerable:!0})};HR?Xnt&&(l=r(function(m,g,y,E){return tne(m,c),sst(function(){return r5(g)?one(g)?E!==void 0?new o(g,QF(y,i),E):y!==void 0?new o(g,QF(y,i)):new o(g):n5(g)?ane(l,g):ene(ine,l,g):new o(rne(g))}(),m,l)}),FR&&FR(l,sne),ist(rst(o),function(m){m in l||rb(l,m,o[m])}),l.prototype=c):(l=r(function(m,g,y,E){tne(m,c);var b=0,x=0,S,D,P;if(!r5(g))P=rne(g),D=P*i,S=new mne(D);else if(one(g)){S=g,x=QF(y,i);var _=g.byteLength;if(E===void 0){if(_%i||(D=_-x,D<0))throw e5(t5)}else if(D=Knt(E)*i,D+x>_)throw e5(t5);P=D/i}else return n5(g)?ane(l,g):ene(ine,l,g);for(ast(m,{buffer:S,byteOffset:x,byteLength:D,length:P,view:new hst(S)});b<P;)d(m,b++)}),FR&&FR(l,sne),c=l.prototype=est(nb)),c.constructor!==l&&rb(c,"constructor",l),ost(c).TypedArrayConstructor=l,nne&&rb(c,nne,n);var f=l!=o;u[n]=l,Qie({global:!0,constructor:!0,forced:f,sham:!HR},u),UR in l||rb(l,UR,i),UR in c||rb(c,UR,i),nst(n)}):s5.exports=function(){}});var vne=V(()=>{var dst=Ou();dst("Float32",function(t){return function(e,i,n){return t(this,e,i,n)}})});var yne=V(()=>{var fst=Ou();fst("Float64",function(t){return function(e,i,n){return t(this,e,i,n)}})});var Tne=V(()=>{var mst=Ou();mst("Int8",function(t){return function(e,i,n){return t(this,e,i,n)}})});var Ene=V(()=>{var gst=Ou();gst("Int16",function(t){return function(e,i,n){return t(this,e,i,n)}})});var bne=V(()=>{var vst=Ou();vst("Int32",function(t){return function(e,i,n){return t(this,e,i,n)}})});var xne=V(()=>{var yst=Ou();yst("Uint8",function(t){return function(e,i,n){return t(this,e,i,n)}})});var Ine=V(()=>{var Tst=Ou();Tst("Uint8",function(t){return function(e,i,n){return t(this,e,i,n)}},!0)});var Sne=V(()=>{var Est=Ou();Est("Uint16",function(t){return function(e,i,n){return t(this,e,i,n)}})});var _ne=V(()=>{var bst=Ou();bst("Uint32",function(t){return function(e,i,n){return t(this,e,i,n)}})});var Rne=V(()=>{"use strict";var wne=_i(),xst=ln(),Ist=ms(),Sst=wne.aTypedArray,_st=wne.exportTypedArrayMethod;_st("at",function(r){var e=Sst(this),i=xst(e),n=Ist(r),s=n>=0?n:i+n;return s<0||s>=i?void 0:e[s]})});var Dne=V(()=>{"use strict";var wst=Bt(),Mne=_i(),Rst=cN(),Mst=wst(Rst),Dst=Mne.aTypedArray,Cst=Mne.exportTypedArrayMethod;Cst("copyWithin",function(r,e){return Mst(Dst(this),r,e,arguments.length>2?arguments[2]:void 0)})});var Ane=V(()=>{"use strict";var Cne=_i(),Ast=ws().every,Ost=Cne.aTypedArray,Pst=Cne.exportTypedArrayMethod;Pst("every",function(r){return Ast(Ost(this),r,arguments.length>1?arguments[1]:void 0)})});var Pne=V(()=>{"use strict";var One=_i(),Nst=Dw(),Lst=KF(),Fst=mc(),Hst=ni(),Ust=Bt(),Bst=Rt(),kst=One.aTypedArray,Gst=One.exportTypedArrayMethod,Vst=Ust("".slice),zst=Bst(function(){var t=0;return new Int8Array(2).fill({valueOf:function(){return t++}}),t!==1});Gst("fill",function(r){var e=arguments.length;kst(this);var i=Vst(Fst(this),0,3)==="Big"?Lst(r):+r;return Hst(Nst,this,i,e>1?arguments[1]:void 0,e>2?arguments[2]:void 0)},zst)});var Lne=V((y7t,Nne)=>{var jst=ln();Nne.exports=function(t,r){for(var e=0,i=jst(r),n=new t(i);i>e;)n[e]=r[e++];return n}});var sb=V((T7t,Hne)=>{var Fne=_i(),Wst=Fm(),qst=Fne.aTypedArrayConstructor,Yst=Fne.getTypedArrayConstructor;Hne.exports=function(t){return qst(Wst(t,Yst(t)))}});var Bne=V((E7t,Une)=>{var Xst=Lne(),$st=sb();Une.exports=function(t,r){return Xst($st(t),r)}});var Gne=V(()=>{"use strict";var kne=_i(),Zst=ws().filter,Kst=Bne(),Jst=kne.aTypedArray,Qst=kne.exportTypedArrayMethod;Qst("filter",function(r){var e=Zst(Jst(this),r,arguments.length>1?arguments[1]:void 0);return Kst(this,e)})});var zne=V(()=>{"use strict";var Vne=_i(),eat=ws().find,tat=Vne.aTypedArray,rat=Vne.exportTypedArrayMethod;rat("find",function(r){return eat(tat(this),r,arguments.length>1?arguments[1]:void 0)})});var Wne=V(()=>{"use strict";var jne=_i(),iat=ws().findIndex,nat=jne.aTypedArray,sat=jne.exportTypedArrayMethod;sat("findIndex",function(r){return iat(nat(this),r,arguments.length>1?arguments[1]:void 0)})});var Yne=V(()=>{"use strict";var qne=_i(),aat=E1().findLast,oat=qne.aTypedArray,lat=qne.exportTypedArrayMethod;lat("findLast",function(r){return aat(oat(this),r,arguments.length>1?arguments[1]:void 0)})});var $ne=V(()=>{"use strict";var Xne=_i(),cat=E1().findLastIndex,uat=Xne.aTypedArray,hat=Xne.exportTypedArrayMethod;hat("findLastIndex",function(r){return cat(uat(this),r,arguments.length>1?arguments[1]:void 0)})});var Kne=V(()=>{"use strict";var Zne=_i(),pat=ws().forEach,dat=Zne.aTypedArray,fat=Zne.exportTypedArrayMethod;fat("forEach",function(r){pat(dat(this),r,arguments.length>1?arguments[1]:void 0)})});var Jne=V(()=>{"use strict";var mat=LR(),gat=_i().exportTypedArrayStaticMethod,vat=JF();gat("from",vat,mat)});var ese=V(()=>{"use strict";var Qne=_i(),yat=nv().includes,Tat=Qne.aTypedArray,Eat=Qne.exportTypedArrayMethod;Eat("includes",function(r){return yat(Tat(this),r,arguments.length>1?arguments[1]:void 0)})});var rse=V(()=>{"use strict";var tse=_i(),bat=nv().indexOf,xat=tse.aTypedArray,Iat=tse.exportTypedArrayMethod;Iat("indexOf",function(r){return bat(xat(this),r,arguments.length>1?arguments[1]:void 0)})});var ose=V(()=>{"use strict";var Sat=ir(),_at=Rt(),l5=Bt(),nse=_i(),c5=_1(),wat=fi(),u5=wat("iterator"),ise=Sat.Uint8Array,Rat=l5(c5.values),Mat=l5(c5.keys),Dat=l5(c5.entries),h5=nse.aTypedArray,kR=nse.exportTypedArrayMethod,zv=ise&&ise.prototype,GR=!_at(function(){zv[u5].call([1])}),sse=!!zv&&zv.values&&zv[u5]===zv.values&&zv.values.name==="values",ase=function(){return Rat(h5(this))};kR("entries",function(){return Dat(h5(this))},GR);kR("keys",function(){return Mat(h5(this))},GR);kR("values",ase,GR||!sse,{name:"values"});kR(u5,ase,GR||!sse,{name:"values"})});var cse=V(()=>{"use strict";var lse=_i(),Cat=Bt(),Aat=lse.aTypedArray,Oat=lse.exportTypedArrayMethod,Pat=Cat([].join);Oat("join",function(r){return Pat(Aat(this),r)})});var hse=V(()=>{"use strict";var use=_i(),Nat=Po(),Lat=SN(),Fat=use.aTypedArray,Hat=use.exportTypedArrayMethod;Hat("lastIndexOf",function(r){var e=arguments.length;return Nat(Lat,Fat(this),e>1?[r,arguments[1]]:[r])})});var dse=V(()=>{"use strict";var pse=_i(),Uat=ws().map,Bat=sb(),kat=pse.aTypedArray,Gat=pse.exportTypedArrayMethod;Gat("map",function(r){return Uat(kat(this),r,arguments.length>1?arguments[1]:void 0,function(e,i){return new(Bat(e))(i)})})});var mse=V(()=>{"use strict";var fse=_i(),Vat=LR(),zat=fse.aTypedArrayConstructor,jat=fse.exportTypedArrayStaticMethod;jat("of",function(){for(var r=0,e=arguments.length,i=new(zat(this))(e);e>r;)i[r]=arguments[r++];return i},Vat)});var vse=V(()=>{"use strict";var gse=_i(),Wat=w1().left,qat=gse.aTypedArray,Yat=gse.exportTypedArrayMethod;Yat("reduce",function(r){var e=arguments.length;return Wat(qat(this),r,e,e>1?arguments[1]:void 0)})});var Tse=V(()=>{"use strict";var yse=_i(),Xat=w1().right,$at=yse.aTypedArray,Zat=yse.exportTypedArrayMethod;Zat("reduceRight",function(r){var e=arguments.length;return Xat($at(this),r,e,e>1?arguments[1]:void 0)})});var bse=V(()=>{"use strict";var Ese=_i(),Kat=Ese.aTypedArray,Jat=Ese.exportTypedArrayMethod,Qat=Math.floor;Jat("reverse",function(){for(var r=this,e=Kat(r).length,i=Qat(e/2),n=0,s;n<i;)s=r[n],r[n++]=r[--e],r[e]=s;return r})});var Rse=V(()=>{"use strict";var Ise=ir(),Sse=ni(),f5=_i(),eot=ln(),tot=ZF(),rot=Li(),_se=Rt(),iot=Ise.RangeError,p5=Ise.Int8Array,xse=p5&&p5.prototype,wse=xse&&xse.set,not=f5.aTypedArray,sot=f5.exportTypedArrayMethod,d5=!_se(function(){var t=new Uint8ClampedArray(2);return Sse(wse,t,{length:1,0:3},1),t[1]!==3}),aot=d5&&f5.NATIVE_ARRAY_BUFFER_VIEWS&&_se(function(){var t=new p5(2);return t.set(1),t.set("2",1),t[0]!==0||t[1]!==2});sot("set",function(r){not(this);var e=tot(arguments.length>1?arguments[1]:void 0,1),i=rot(r);if(d5)return Sse(wse,this,i,e);var n=this.length,s=eot(i),a=0;if(s+e>n)throw iot("Wrong length");for(;a<s;)this[e+a]=i[a++]},!d5||aot)});var Dse=V(()=>{"use strict";var Mse=_i(),oot=sb(),lot=Rt(),cot=Od(),uot=Mse.aTypedArray,hot=Mse.exportTypedArrayMethod,pot=lot(function(){new Int8Array(1).slice()});hot("slice",function(r,e){for(var i=cot(uot(this),r,e),n=oot(this),s=0,a=i.length,o=new n(a);a>s;)o[s]=i[s++];return o},pot)});var Ase=V(()=>{"use strict";var Cse=_i(),dot=ws().some,fot=Cse.aTypedArray,mot=Cse.exportTypedArrayMethod;mot("some",function(r){return dot(fot(this),r,arguments.length>1?arguments[1]:void 0)})});var Hse=V(()=>{"use strict";var got=ir(),vot=jh(),m5=Rt(),yot=fs(),Tot=Fw(),Fse=_i(),Ose=RN(),Eot=MN(),Pse=xu(),Nse=Hw(),bot=Fse.aTypedArray,xot=Fse.exportTypedArrayMethod,ab=got.Uint16Array,jv=ab&&vot(ab.prototype.sort),Iot=!!jv&&!(m5(function(){jv(new ab(2),null)})&&m5(function(){jv(new ab(2),{})})),Lse=!!jv&&!m5(function(){if(Pse)return Pse<74;if(Ose)return Ose<67;if(Eot)return!0;if(Nse)return Nse<602;var t=new ab(516),r=Array(516),e,i;for(e=0;e<516;e++)i=e%4,t[e]=515-e,r[e]=e-2*i+3;for(jv(t,function(n,s){return(n/4|0)-(s/4|0)}),e=0;e<516;e++)if(t[e]!==r[e])return!0}),Sot=function(t){return function(r,e){return t!==void 0?+t(r,e)||0:e!==e?-1:r!==r?1:r===0&&e===0?1/r>0&&1/e<0?1:-1:r>e}};xot("sort",function(r){return r!==void 0&&yot(r),Lse?jv(this,r):Tot(bot(this),Sot(r))},!Lse||Iot)});var kse=V(()=>{"use strict";var Bse=_i(),_ot=Wa(),Use=Su(),wot=sb(),Rot=Bse.aTypedArray,Mot=Bse.exportTypedArrayMethod;Mot("subarray",function(r,e){var i=Rot(this),n=i.length,s=Use(r,n),a=wot(i);return new a(i.buffer,i.byteOffset+s*i.BYTES_PER_ELEMENT,_ot((e===void 0?n:Use(e,n))-s))})});var Wse=V(()=>{"use strict";var Dot=ir(),Cot=Po(),zse=_i(),g5=Rt(),Gse=Od(),VR=Dot.Int8Array,Vse=zse.aTypedArray,Aot=zse.exportTypedArrayMethod,jse=[].toLocaleString,Oot=!!VR&&g5(function(){jse.call(new VR(1))}),Pot=g5(function(){return[1,2].toLocaleString()!=new VR([1,2]).toLocaleString()})||!g5(function(){VR.prototype.toLocaleString.call([1,2])});Aot("toLocaleString",function(){return Cot(jse,Oot?Gse(Vse(this)):Vse(this),Gse(arguments))},Pot)});var Yse=V(()=>{"use strict";var Not=_i().exportTypedArrayMethod,Lot=Rt(),Fot=ir(),Hot=Bt(),qse=Fot.Uint8Array,Uot=qse&&qse.prototype||{},zR=[].toString,Bot=Hot([].join);Lot(function(){zR.call({})})&&(zR=function(){return Bot(this)});var kot=Uot.toString!=zR;Not("toString",zR,kot)});var Jse=V(()=>{"use strict";var Got=Ne(),v5=Bt(),Vot=mi(),Xse=String.fromCharCode,$se=v5("".charAt),Zse=v5(/./.exec),Kse=v5("".slice),zot=/^[\da-f]{2}$/i,jot=/^[\da-f]{4}$/i;Got({global:!0},{unescape:function(r){for(var e=Vot(r),i="",n=e.length,s=0,a,o;s<n;){if(a=$se(e,s++),a==="%"){if($se(e,s)==="u"){if(o=Kse(e,s+1,s+5),Zse(jot,o)){i+=Xse(parseInt(o,16)),s+=5;continue}}else if(o=Kse(e,s,s+2),Zse(zot,o)){i+=Xse(parseInt(o,16)),s+=2;continue}}i+=a}return i}})});var E5=V((v9t,nae)=>{"use strict";var Wot=Bt(),Qse=gv(),jR=kd().getWeakData,qot=yc(),Yot=jr(),Xot=ma(),y5=si(),$ot=vc(),tae=ws(),eae=Si(),rae=cs(),Zot=rae.set,Kot=rae.getterFor,Jot=tae.find,Qot=tae.findIndex,elt=Wot([].splice),tlt=0,WR=function(t){return t.frozen||(t.frozen=new iae)},iae=function(){this.entries=[]},T5=function(t,r){return Jot(t.entries,function(e){return e[0]===r})};iae.prototype={get:function(t){var r=T5(this,t);if(r)return r[1]},has:function(t){return!!T5(this,t)},set:function(t,r){var e=T5(this,t);e?e[1]=r:this.entries.push([t,r])},delete:function(t){var r=Qot(this.entries,function(e){return e[0]===t});return~r&&elt(this.entries,r,1),!!~r}};nae.exports={getConstructor:function(t,r,e,i){var n=t(function(l,c){qot(l,s),Zot(l,{type:r,id:tlt++,frozen:void 0}),Xot(c)||$ot(c,l[i],{that:l,AS_ENTRIES:e})}),s=n.prototype,a=Kot(r),o=function(l,c,u){var h=a(l),p=jR(Yot(c),!0);return p===!0?WR(h).set(c,u):p[h.id]=u,l};return Qse(s,{delete:function(l){var c=a(this);if(!y5(l))return!1;var u=jR(l);return u===!0?WR(c).delete(l):u&&eae(u,c.id)&&delete u[c.id]},has:function(c){var u=a(this);if(!y5(c))return!1;var h=jR(c);return h===!0?WR(u).has(c):h&&eae(h,u.id)}}),Qse(s,e?{get:function(c){var u=a(this);if(y5(c)){var h=jR(c);return h===!0?WR(u).get(c):h?h[u.id]:void 0}},set:function(c,u){return o(this,c,u)}}:{add:function(c){return o(this,c,!0)}}),n}}});var fae=V(()=>{"use strict";var rlt=Um(),sae=ir(),$R=Bt(),aae=gv(),ilt=kd(),nlt=A1(),cae=E5(),qR=si(),YR=cs().enforce,slt=Rt(),alt=f2(),cb=Object,olt=Array.isArray,XR=cb.isExtensible,uae=cb.isFrozen,llt=cb.isSealed,hae=cb.freeze,clt=cb.seal,oae={},lae={},ult=!sae.ActiveXObject&&"ActiveXObject"in sae,ob,pae=function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}},dae=nlt("WeakMap",pae,cae),Wv=dae.prototype,ZR=$R(Wv.set),hlt=function(){return rlt&&slt(function(){var t=hae([]);return ZR(new dae,t,1),!uae(t)})};alt&&(ult?(ob=cae.getConstructor(pae,"WeakMap",!0),ilt.enable(),b5=$R(Wv.delete),lb=$R(Wv.has),x5=$R(Wv.get),aae(Wv,{delete:function(t){if(qR(t)&&!XR(t)){var r=YR(this);return r.frozen||(r.frozen=new ob),b5(this,t)||r.frozen.delete(t)}return b5(this,t)},has:function(r){if(qR(r)&&!XR(r)){var e=YR(this);return e.frozen||(e.frozen=new ob),lb(this,r)||e.frozen.has(r)}return lb(this,r)},get:function(r){if(qR(r)&&!XR(r)){var e=YR(this);return e.frozen||(e.frozen=new ob),lb(this,r)?x5(this,r):e.frozen.get(r)}return x5(this,r)},set:function(r,e){if(qR(r)&&!XR(r)){var i=YR(this);i.frozen||(i.frozen=new ob),lb(this,r)?ZR(this,r,e):i.frozen.set(r,e)}else ZR(this,r,e);return this}})):hlt()&&aae(Wv,{set:function(r,e){var i;return olt(r)&&(uae(r)?i=oae:llt(r)&&(i=lae)),ZR(this,r,e),i==oae&&hae(r),i==lae&&clt(r),this}}));var b5,lb,x5});var mae=V(()=>{fae()});var gae=V(()=>{"use strict";var plt=A1(),dlt=E5();plt("WeakSet",function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}},dlt)});var vae=V(()=>{gae()});var I5=V((w9t,Eae)=>{var yae="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",Tae={};for(ub=0;ub<66;ub++)Tae[yae.charAt(ub)]=ub;var ub;Eae.exports={itoc:yae,ctoi:Tae}});var wae=V(()=>{var flt=Ne(),Sae=bn(),_5=Bt(),w5=Rt(),mlt=mi(),glt=Si(),vlt=ep(),S5=I5().ctoi,_ae=/[^\d+/a-z]/i,ylt=/[\t\n\f\r ]+/g,Tlt=/[=]+$/,hb=Sae("atob"),Elt=String.fromCharCode,blt=_5("".charAt),bae=_5("".replace),xlt=_5(_ae.exec),R5=w5(function(){return hb(" ")!==""}),M5=!w5(function(){hb("a")}),xae=!R5&&!M5&&!w5(function(){hb()}),Iae=!R5&&!M5&&hb.length!==1;flt({global:!0,enumerable:!0,forced:R5||M5||xae||Iae},{atob:function(r){if(vlt(arguments.length,1),xae||Iae)return hb(r);var e=bae(mlt(r),ylt,""),i="",n=0,s=0,a,o;if(e.length%4==0&&(e=bae(e,Tlt,"")),e.length%4==1||xlt(_ae,e))throw new(Sae("DOMException"))("The string is not correctly encoded","InvalidCharacterError");for(;a=blt(e,n++);)glt(S5,a)&&(o=s%4?o*64+S5[a]:S5[a],s++%4&&(i+=Elt(255&o>>(-2*s&6))));return i}})});var Lae=V(()=>{var Ilt=Ne(),Oae=bn(),Pae=Bt(),Nae=Rt(),Rae=mi(),Slt=ep(),_lt=I5().itoc,Ym=Oae("btoa"),Mae=Pae("".charAt),wlt=Pae("".charCodeAt),Dae=!!Ym&&!Nae(function(){Ym()}),Cae=!!Ym&&Nae(function(){return Ym(null)!=="bnVsbA=="}),Aae=!!Ym&&Ym.length!==1;Ilt({global:!0,enumerable:!0,forced:Dae||Cae||Aae},{btoa:function(r){if(Slt(arguments.length,1),Dae||Cae||Aae)return Ym(Rae(r));for(var e=Rae(r),i="",n=0,s=_lt,a,o;Mae(e,n)||(s="=",n%1);){if(o=wlt(e,n+=3/4),o>255)throw new(Oae("DOMException"))("The string contains characters outside of the Latin1 range","InvalidCharacterError");a=a<<8|o,i+=Mae(s,63&a>>8-n%1*8)}return i}})});var D5=V((A9t,Fae)=>{Fae.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}});var A5=V((O9t,Uae)=>{var Rlt=i1(),C5=Rlt("span").classList,Hae=C5&&C5.constructor&&C5.constructor.prototype;Uae.exports=Hae===Object.prototype?void 0:Hae});var Vae=V(()=>{var Bae=ir(),kae=D5(),Mlt=A5(),O5=dN(),Dlt=va(),Gae=function(t){if(t&&t.forEach!==O5)try{Dlt(t,"forEach",O5)}catch(r){t.forEach=O5}};for(KR in kae)kae[KR]&&Gae(Bae[KR]&&Bae[KR].prototype);var KR;Gae(Mlt)});var Xae=V(()=>{var zae=ir(),Wae=D5(),Clt=A5(),pb=_1(),P5=va(),qae=fi(),N5=qae("iterator"),jae=qae("toStringTag"),L5=pb.values,Yae=function(t,r){if(t){if(t[N5]!==L5)try{P5(t,N5,L5)}catch(i){t[N5]=L5}if(t[jae]||P5(t,jae,r),Wae[r]){for(var e in pb)if(t[e]!==pb[e])try{P5(t,e,pb[e])}catch(i){t[e]=pb[e]}}}};for(JR in Wae)Yae(zae[JR]&&zae[JR].prototype,JR);var JR;Yae(Clt,"DOMTokenList")});var Zae=V((H9t,$ae)=>{var Alt=Mu();$ae.exports=function(t){try{if(Alt)return Function('return require("'+t+'")')()}catch(r){}}});var F5=V((U9t,Kae)=>{Kae.exports={IndexSizeError:{s:"INDEX_SIZE_ERR",c:1,m:1},DOMStringSizeError:{s:"DOMSTRING_SIZE_ERR",c:2,m:0},HierarchyRequestError:{s:"HIERARCHY_REQUEST_ERR",c:3,m:1},WrongDocumentError:{s:"WRONG_DOCUMENT_ERR",c:4,m:1},InvalidCharacterError:{s:"INVALID_CHARACTER_ERR",c:5,m:1},NoDataAllowedError:{s:"NO_DATA_ALLOWED_ERR",c:6,m:0},NoModificationAllowedError:{s:"NO_MODIFICATION_ALLOWED_ERR",c:7,m:1},NotFoundError:{s:"NOT_FOUND_ERR",c:8,m:1},NotSupportedError:{s:"NOT_SUPPORTED_ERR",c:9,m:1},InUseAttributeError:{s:"INUSE_ATTRIBUTE_ERR",c:10,m:1},InvalidStateError:{s:"INVALID_STATE_ERR",c:11,m:1},SyntaxError:{s:"SYNTAX_ERR",c:12,m:1},InvalidModificationError:{s:"INVALID_MODIFICATION_ERR",c:13,m:1},NamespaceError:{s:"NAMESPACE_ERR",c:14,m:1},InvalidAccessError:{s:"INVALID_ACCESS_ERR",c:15,m:1},ValidationError:{s:"VALIDATION_ERR",c:16,m:0},TypeMismatchError:{s:"TYPE_MISMATCH_ERR",c:17,m:1},SecurityError:{s:"SECURITY_ERR",c:18,m:1},NetworkError:{s:"NETWORK_ERR",c:19,m:1},AbortError:{s:"ABORT_ERR",c:20,m:1},URLMismatchError:{s:"URL_MISMATCH_ERR",c:21,m:1},QuotaExceededError:{s:"QUOTA_EXCEEDED_ERR",c:22,m:1},TimeoutError:{s:"TIMEOUT_ERR",c:23,m:1},InvalidNodeTypeError:{s:"INVALID_NODE_TYPE_ERR",c:24,m:1},DataCloneError:{s:"DATA_CLONE_ERR",c:25,m:1}}});var loe=V(()=>{"use strict";var Olt=Ne(),Plt=Zae(),tM=bn(),V5=Rt(),Nlt=qa(),z5=Ao(),rM=Vi().f,Llt=Dn(),QR=Gd(),eM=Si(),Flt=yc(),Hlt=jr(),eoe=eN(),Jae=hv(),qv=F5(),Ult=g1(),toe=cs(),j5=Pr(),roe=Bn(),Yv="DOMException",G5="DATA_CLONE_ERR",nM=tM("Error"),tp=tM(Yv)||function(){try{var t=tM("MessageChannel")||Plt("worker_threads").MessageChannel;new t().port1.postMessage(new WeakMap)}catch(r){if(r.name==G5&&r.code==25)return r.constructor}}(),Blt=tp&&tp.prototype,ioe=nM.prototype,klt=toe.set,Glt=toe.getterFor(Yv),Vlt="stack"in nM(Yv),noe=function(t){return eM(qv,t)&&qv[t].m?qv[t].c:0},W5=function(){Flt(this,fb);var r=arguments.length,e=Jae(r<1?void 0:arguments[0]),i=Jae(r<2?void 0:arguments[1],"Error"),n=noe(i);if(klt(this,{type:Yv,name:i,message:e,code:n}),j5||(this.name=i,this.message=e,this.code=n),Vlt){var s=nM(e);s.name=Yv,rM(this,"stack",z5(1,Ult(s.stack,1)))}},fb=W5.prototype=Nlt(ioe),soe=function(t){return{enumerable:!0,configurable:!0,get:t}},H5=function(t){return soe(function(){return Glt(this)[t]})};j5&&(QR(fb,"code",H5("code")),QR(fb,"message",H5("message")),QR(fb,"name",H5("name")));rM(fb,"constructor",z5(1,W5));var sM=V5(function(){return!(new tp instanceof nM)}),aoe=sM||V5(function(){return ioe.toString!==eoe||String(new tp(1,2))!=="2: 1"}),ooe=sM||V5(function(){return new tp(1,"DataCloneError").code!==25}),zlt=sM||tp[G5]!==25||Blt[G5]!==25,Qae=roe?aoe||ooe||zlt:sM;Olt({global:!0,constructor:!0,forced:Qae},{DOMException:Qae?W5:tp});var mb=tM(Yv),iM=mb.prototype;aoe&&(roe||tp===mb)&&Llt(iM,"toString",eoe);ooe&&j5&&tp===mb&&QR(iM,"code",soe(function(){return noe(Hlt(this).name)}));for(U5 in qv)eM(qv,U5)&&(B5=qv[U5],db=B5.s,k5=z5(6,B5.c),eM(mb,db)||rM(mb,db,k5),eM(iM,db)||rM(iM,db,k5));var B5,db,k5,U5});var moe=V(()=>{"use strict";var jlt=Ne(),Wlt=ir(),Q5=bn(),K5=Ao(),J5=Vi().f,coe=Si(),qlt=yc(),Ylt=Om(),uoe=hv(),q5=F5(),Xlt=g1(),$lt=Pr(),doe=Bn(),vb="DOMException",foe=Q5("Error"),yb=Q5(vb),e6=function(){qlt(this,Zlt);var r=arguments.length,e=uoe(r<1?void 0:arguments[0]),i=uoe(r<2?void 0:arguments[1],"Error"),n=new yb(e,i),s=foe(e);return s.name=vb,J5(n,"stack",K5(1,Xlt(s.stack,1))),Ylt(n,this,e6),n},Zlt=e6.prototype=yb.prototype,Klt="stack"in foe(vb),Jlt="stack"in new yb(1,2),Y5=yb&&$lt&&Object.getOwnPropertyDescriptor(Wlt,vb),Qlt=!!Y5&&!(Y5.writable&&Y5.configurable),hoe=Klt&&!Qlt&&!Jlt;jlt({global:!0,constructor:!0,forced:doe||hoe},{DOMException:hoe?e6:yb});var gb=Q5(vb),poe=gb.prototype;if(poe.constructor!==gb){doe||J5(poe,"constructor",K5(1,gb));for(X5 in q5)coe(q5,X5)&&($5=q5[X5],Z5=$5.s,coe(gb,Z5)||J5(gb,Z5,K5(6,$5.c)))}var $5,Z5,X5});var voe=V(()=>{var ect=bn(),tct=Ya(),goe="DOMException";tct(ect(goe),goe)});var Toe=V(()=>{var rct=Ne(),ict=ir(),yoe=z1().clear;rct({global:!0,bind:!0,enumerable:!0,forced:ict.clearImmediate!==yoe},{clearImmediate:yoe})});var boe=V((Y9t,Eoe)=>{Eoe.exports=typeof Bun=="function"&&Bun&&typeof Bun.version=="string"});var aM=V((X9t,Ioe)=>{"use strict";var xoe=ir(),nct=Po(),sct=Ti(),act=boe(),oct=bu(),lct=Od(),cct=ep(),uct=xoe.Function,hct=/MSIE .\./.test(oct)||act&&function(){var t=xoe.Bun.version.split(".");return t.length<3||t[0]==0&&(t[1]<3||t[1]==3&&t[2]==0)}();Ioe.exports=function(t,r){var e=r?2:1;return hct?function(i,n){var s=cct(arguments.length,1)>e,a=sct(i)?i:uct(i),o=s?lct(arguments,e):[],l=s?function(){nct(a,this,o)}:a;return r?t(l,n):t(l)}:t}});var Roe=V(()=>{var pct=Ne(),woe=ir(),Soe=z1().set,dct=aM(),_oe=woe.setImmediate?dct(Soe,!1):Soe;pct({global:!0,bind:!0,enumerable:!0,forced:woe.setImmediate!==_oe},{setImmediate:_oe})});var Moe=V(()=>{Toe();Roe()});var Doe=V(()=>{var fct=Ne(),mct=ir(),gct=XL(),vct=fs(),yct=ep(),Tct=Mu(),Ect=mct.process;fct({global:!0,enumerable:!0,dontCallGetSet:!0},{queueMicrotask:function(r){yct(arguments.length,1),vct(r);var e=Tct&&Ect.domain;gct(e?e.bind(r):r)}})});var Aoe=V(()=>{"use strict";var bct=Ne(),qd=ir(),xct=Gd(),Ict=Pr(),Sct=TypeError,_ct=Object.defineProperty,Coe=qd.self!==qd;try{Ict?(oM=Object.getOwnPropertyDescriptor(qd,"self"),(Coe||!oM||!oM.get||!oM.enumerable)&&xct(qd,"self",{get:function(){return qd},set:function(r){if(this!==qd)throw Sct("Illegal invocation");_ct(qd,"self",{value:r,writable:!0,configurable:!0,enumerable:!0})},configurable:!0,enumerable:!0})):bct({global:!0,simple:!0,forced:Coe},{self:qd})}catch(t){}var oM});var Poe=V((izt,Ooe)=>{var lM=Bt(),Tb=Map.prototype;Ooe.exports={Map,set:lM(Tb.set),get:lM(Tb.get),has:lM(Tb.has),remove:lM(Tb.delete),proto:Tb}});var Loe=V((nzt,Noe)=>{var t6=Bt(),Xv=Set.prototype;Noe.exports={Set,add:t6(Xv.add),has:t6(Xv.has),remove:t6(Xv.delete),proto:Xv,$has:Xv.has,$keys:Xv.keys}});var Woe=V(()=>{var wct=Bn(),Rct=Ne(),Cn=ir(),u6=bn(),xb=Bt(),hM=Rt(),Mct=_m(),a6=Ti(),Dct=Dm(),Cct=ma(),o6=si(),Act=Md(),Oct=vc(),Hoe=jr(),Uoe=mc(),Pct=Si(),Nct=_u(),r6=va(),cM=ln(),Lct=ep(),Fct=Nv(),pM=Poe(),Boe=Loe(),Hct=Ew(),i6=xu(),Uct=$L(),Bct=fR(),kct=Mu(),Eb=Cn.Object,Gct=Cn.Array,koe=Cn.Date,Ib=Cn.Error,Vct=Cn.EvalError,zct=Cn.RangeError,jct=Cn.ReferenceError,Wct=Cn.SyntaxError,Goe=Cn.TypeError,qct=Cn.URIError,Yct=Cn.PerformanceMark,$v=Cn.WebAssembly,Xct=$v&&$v.CompileError||Ib,$ct=$v&&$v.LinkError||Ib,Zct=$v&&$v.RuntimeError||Ib,Xm=u6("DOMException"),l6=pM.Map,Voe=pM.has,Kct=pM.get,uM=pM.set,Jct=Boe.Set,Qct=Boe.add,eut=u6("Object","keys"),tut=xb([].push),rut=xb((!0).valueOf),iut=xb(1 .valueOf),nut=xb("".valueOf),sut=xb(koe.prototype.getTime),c6=Mct("structuredClone"),bb="DataCloneError",n6="Transferring",zoe=function(t){return!hM(function(){var r=new Cn.Set([7]),e=t(r),i=t(Eb(7));return e==r||!e.has(7)||typeof i!="object"||i!=7})&&t},Foe=function(t,r){return!hM(function(){var e=new r,i=t({a:e,b:e});return!(i&&i.a===i.b&&i.a instanceof r&&i.a.stack===e.stack)})},aut=function(t){return!hM(function(){var r=t(new Cn.AggregateError([1],c6,{cause:3}));return r.name!="AggregateError"||r.errors[0]!=1||r.message!=c6||r.cause!=3})},Xd=Cn.structuredClone,out=wct||!Foe(Xd,Ib)||!Foe(Xd,Xm)||!aut(Xd),lut=!Xd&&zoe(function(t){return new Yct(c6,{detail:t}).detail}),Yd=zoe(Xd)||lut,s6=function(t){throw new Xm("Uncloneable type: "+t,bb)},Ea=function(t,r){throw new Xm((r||"Cloning")+" of "+t+" cannot be properly polyfilled in this engine",bb)},cut=function(){var t;try{t=new Cn.DataTransfer}catch(r){try{t=new Cn.ClipboardEvent("").clipboardData}catch(e){}}return t&&t.items&&t.files?t:null},qs=function(t,r){if(Act(t)&&s6("Symbol"),!o6(t))return t;if(r){if(Voe(r,t))return Kct(r,t)}else r=new l6;var e=Uoe(t),i=!1,n,s,a,o,l,c,u,h,p,d;switch(e){case"Array":a=Gct(cM(t)),i=!0;break;case"Object":a={},i=!0;break;case"Map":a=new l6,i=!0;break;case"Set":a=new Jct,i=!0;break;case"RegExp":a=new RegExp(t.source,Fct(t));break;case"Error":switch(s=t.name,s){case"AggregateError":a=u6("AggregateError")([]);break;case"EvalError":a=Vct();break;case"RangeError":a=zct();break;case"ReferenceError":a=jct();break;case"SyntaxError":a=Wct();break;case"TypeError":a=Goe();break;case"URIError":a=qct();break;case"CompileError":a=Xct();break;case"LinkError":a=$ct();break;case"RuntimeError":a=Zct();break;default:a=Ib()}i=!0;break;case"DOMException":a=new Xm(t.message,t.name),i=!0;break;case"DataView":case"Int8Array":case"Uint8Array":case"Uint8ClampedArray":case"Int16Array":case"Uint16Array":case"Int32Array":case"Uint32Array":case"Float32Array":case"Float64Array":case"BigInt64Array":case"BigUint64Array":n=Cn[e],o6(n)||Ea(e),a=new n(qs(t.buffer,r),t.byteOffset,e==="DataView"?t.byteLength:t.length);break;case"DOMQuad":try{a=new DOMQuad(qs(t.p1,r),qs(t.p2,r),qs(t.p3,r),qs(t.p4,r))}catch(f){Yd?a=Yd(t):Ea(e)}break;case"FileList":if(o=cut(),o){for(l=0,c=cM(t);l<c;l++)o.items.add(qs(t[l],r));a=o.files}else Yd?a=Yd(t):Ea(e);break;case"ImageData":try{a=new ImageData(qs(t.data,r),t.width,t.height,{colorSpace:t.colorSpace})}catch(f){Yd?a=Yd(t):Ea(e)}break;default:if(Yd)a=Yd(t);else switch(e){case"BigInt":a=Eb(t.valueOf());break;case"Boolean":a=Eb(rut(t));break;case"Number":a=Eb(iut(t));break;case"String":a=Eb(nut(t));break;case"Date":a=new koe(sut(t));break;case"ArrayBuffer":n=Cn.DataView,!n&&typeof t.slice!="function"&&Ea(e);try{if(typeof t.slice=="function")a=t.slice(0);else for(c=t.byteLength,a=new ArrayBuffer(c),p=new n(t),d=new n(a),l=0;l<c;l++)d.setUint8(l,p.getUint8(l))}catch(f){throw new Xm("ArrayBuffer is detached",bb)}break;case"SharedArrayBuffer":a=t;break;case"Blob":try{a=t.slice(0,t.size,t.type)}catch(f){Ea(e)}break;case"DOMPoint":case"DOMPointReadOnly":n=Cn[e];try{a=n.fromPoint?n.fromPoint(t):new n(t.x,t.y,t.z,t.w)}catch(f){Ea(e)}break;case"DOMRect":case"DOMRectReadOnly":n=Cn[e];try{a=n.fromRect?n.fromRect(t):new n(t.x,t.y,t.width,t.height)}catch(f){Ea(e)}break;case"DOMMatrix":case"DOMMatrixReadOnly":n=Cn[e];try{a=n.fromMatrix?n.fromMatrix(t):new n(t)}catch(f){Ea(e)}break;case"AudioData":case"VideoFrame":a6(t.clone)||Ea(e);try{a=t.clone()}catch(f){s6(e)}break;case"File":try{a=new File([t],t.name,t)}catch(f){Ea(e)}break;case"CropTarget":case"CryptoKey":case"FileSystemDirectoryHandle":case"FileSystemFileHandle":case"FileSystemHandle":case"GPUCompilationInfo":case"GPUCompilationMessage":case"ImageBitmap":case"RTCCertificate":case"WebAssembly.Module":Ea(e);default:s6(e)}}if(uM(r,t,a),i)switch(e){case"Array":case"Object":for(u=eut(t),l=0,c=cM(u);l<c;l++)h=u[l],Nct(a,h,qs(t[h],r));break;case"Map":t.forEach(function(f,m){uM(a,qs(m,r),qs(f,r))});break;case"Set":t.forEach(function(f){Qct(a,qs(f,r))});break;case"Error":r6(a,"message",qs(t.message,r)),Pct(t,"cause")&&r6(a,"cause",qs(t.cause,r)),s=="AggregateError"&&(a.errors=qs(t.errors,r));case"DOMException":Hct&&r6(a,"stack",qs(t.stack,r))}return a},joe=Xd&&!hM(function(){if(Bct&&i6>92||kct&&i6>94||Uct&&i6>97)return!1;var t=new ArrayBuffer(8),r=Xd(t,{transfer:[t]});return t.byteLength!=0||r.byteLength!=8}),uut=function(t,r){if(!o6(t))throw Goe("Transfer option cannot be converted to a sequence");var e=[];Oct(t,function(p){tut(e,Hoe(p))});var i=0,n=cM(e),s,a,o,l,c,u,h;if(joe)for(l=Xd(e,{transfer:e});i<n;)uM(r,e[i],l[i++]);else for(;i<n;){if(s=e[i++],Voe(r,s))throw new Xm("Duplicate transferable",bb);switch(a=Uoe(s),a){case"ImageBitmap":o=Cn.OffscreenCanvas,Dct(o)||Ea(a,n6);try{u=new o(s.width,s.height),h=u.getContext("bitmaprenderer"),h.transferFromImageBitmap(s),c=u.transferToImageBitmap()}catch(p){}break;case"AudioData":case"VideoFrame":(!a6(s.clone)||!a6(s.close))&&Ea(a,n6);try{c=s.clone(),s.close()}catch(p){}break;case"ArrayBuffer":case"MediaSourceHandle":case"MessagePort":case"OffscreenCanvas":case"ReadableStream":case"TransformStream":case"WritableStream":Ea(a,n6)}if(c===void 0)throw new Xm("This object cannot be transferred: "+a,bb);uM(r,s,c)}};Rct({global:!0,enumerable:!0,sham:!joe,forced:out},{structuredClone:function(r){var e=Lct(arguments.length,1)>1&&!Cct(arguments[1])?Hoe(arguments[1]):void 0,i=e?e.transfer:void 0,n;return i!==void 0&&(n=new l6,uut(i,n)),qs(r,n)}})});var Xoe=V(()=>{var hut=Ne(),Yoe=ir(),put=aM(),qoe=put(Yoe.setInterval,!0);hut({global:!0,bind:!0,forced:Yoe.setInterval!==qoe},{setInterval:qoe})});var Koe=V(()=>{var dut=Ne(),Zoe=ir(),fut=aM(),$oe=fut(Zoe.setTimeout,!0);dut({global:!0,bind:!0,forced:Zoe.setTimeout!==$oe},{setTimeout:$oe})});var Joe=V(()=>{Xoe();Koe()});var h6=V((dzt,Qoe)=>{var mut=Rt(),gut=fi(),vut=Bn(),yut=gut("iterator");Qoe.exports=!mut(function(){var t=new URL("b?a=1&b=2&c=3","http://a"),r=t.searchParams,e="";return t.pathname="c%20d",r.forEach(function(i,n){r.delete("b"),e+=n+i}),vut&&!t.toJSON||!r.sort||t.href!=="http://a/c%20d?a=1&c=3"||r.get("c")!=="3"||String(new URLSearchParams("?a=1"))!=="a=1"||!r[yut]||new URL("https://a@b").username!=="a"||new URLSearchParams(new URLSearchParams("a=b")).get("a")!=="b"||new URL("http://\u0442\u0435\u0441\u0442").host!=="xn--e1aybc"||new URL("http://a#\u0431").hash!=="#%D0%B1"||e!=="a1c3"||new URL("http://x",void 0).host!=="x"})});var lle=V((fzt,ole)=>{"use strict";var $m=Bt(),p6=2147483647,Sb=36,nle=1,m6=26,Tut=38,Eut=700,but=72,xut=128,Iut="-",Sut=/[^\0-\u007E]/,sle=/[.\u3002\uFF0E\uFF61]/g,ele="Overflow: input needs wider integers to process",d6=Sb-nle,tle=RangeError,_ut=$m(sle.exec),Zv=Math.floor,f6=String.fromCharCode,rle=$m("".charCodeAt),ale=$m([].join),$d=$m([].push),wut=$m("".replace),Rut=$m("".split),Mut=$m("".toLowerCase),Dut=function(t){for(var r=[],e=0,i=t.length;e<i;){var n=rle(t,e++);if(n>=55296&&n<=56319&&e<i){var s=rle(t,e++);(s&64512)==56320?$d(r,((n&1023)<<10)+(s&1023)+65536):($d(r,n),e--)}else $d(r,n)}return r},ile=function(t){return t+22+75*(t<26)},Cut=function(t,r,e){var i=0;for(t=e?Zv(t/Eut):t>>1,t+=Zv(t/r);t>d6*m6>>1;)t=Zv(t/d6),i+=Sb;return Zv(i+(d6+1)*t/(t+Tut))},Aut=function(t){var r=[];t=Dut(t);var e=t.length,i=xut,n=0,s=but,a,o;for(a=0;a<t.length;a++)o=t[a],o<128&&$d(r,f6(o));var l=r.length,c=l;for(l&&$d(r,Iut);c<e;){var u=p6;for(a=0;a<t.length;a++)o=t[a],o>=i&&o<u&&(u=o);var h=c+1;if(u-i>Zv((p6-n)/h))throw tle(ele);for(n+=(u-i)*h,i=u,a=0;a<t.length;a++){if(o=t[a],o<i&&++n>p6)throw tle(ele);if(o==i){for(var p=n,d=Sb;;){var f=d<=s?nle:d>=s+m6?m6:d-s;if(p<f)break;var m=p-f,g=Sb-f;$d(r,f6(ile(f+m%g))),p=Zv(m/g),d+=Sb}$d(r,f6(ile(p))),s=Cut(n,h,c==l),n=0,c++}}n++,i++}return ale(r,"")};ole.exports=function(t){var r=[],e=Rut(wut(Mut(t),sle,"."),"."),i,n;for(i=0;i<e.length;i++)n=e[i],$d(r,_ut(Sut,n)?"xn--"+Aut(n):n);return ale(r,".")}});var _6=V((mzt,Mle)=>{"use strict";_1();var E6=Ne(),Jv=ir(),dM=ni(),Pu=Bt(),Out=Pr(),Ele=h6(),ble=Dn(),Put=gv(),Nut=Ya(),Lut=Cw(),I6=cs(),xle=yc(),g6=Ti(),Fut=Si(),Hut=fl(),Uut=mc(),But=jr(),Ile=si(),Ho=mi(),kut=qa(),cle=Ao(),b6=v1(),Gut=dv(),Kv=ep(),Vut=fi(),zut=Fw(),jut=Vut("iterator"),Rb="URLSearchParams",Sle=Rb+"Iterator",_le=I6.set,Ec=I6.getterFor(Rb),Wut=I6.getterFor(Sle),qut=Object.getOwnPropertyDescriptor,S6=function(t){if(!Out)return Jv[t];var r=qut(Jv,t);return r&&r.value},ule=S6("fetch"),mM=S6("Request"),_b=S6("Headers"),v6=mM&&mM.prototype,hle=_b&&_b.prototype,Yut=Jv.RegExp,Xut=Jv.TypeError,wle=Jv.decodeURIComponent,$ut=Jv.encodeURIComponent,Zut=Pu("".charAt),ple=Pu([].join),Zm=Pu([].push),x6=Pu("".replace),Kut=Pu([].shift),dle=Pu([].splice),fle=Pu("".split),Jut=Pu("".slice),Qut=/\+/g,mle=Array(4),eht=function(t){return mle[t-1]||(mle[t-1]=Yut("((?:%[\\da-f]{2}){"+t+"})","gi"))},tht=function(t){try{return wle(t)}catch(r){return t}},gle=function(t){var r=x6(t,Qut," "),e=4;try{return wle(r)}catch(i){for(;e;)r=x6(r,eht(e--),tht);return r}},rht=/[!'()~]|%20/g,iht={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},nht=function(t){return iht[t]},vle=function(t){return x6($ut(t),rht,nht)},y6=Lut(function(r,e){_le(this,{type:Sle,iterator:b6(Ec(r).entries),kind:e})},"Iterator",function(){var r=Wut(this),e=r.kind,i=r.iterator.next(),n=i.value;return i.done||(i.value=e==="keys"?n.key:e==="values"?n.value:[n.key,n.value]),i},!0),Rle=function(t){this.entries=[],this.url=null,t!==void 0&&(Ile(t)?this.parseObject(t):this.parseQuery(typeof t=="string"?Zut(t,0)==="?"?Jut(t,1):t:Ho(t)))};Rle.prototype={type:Rb,bindURL:function(t){this.url=t,this.update()},parseObject:function(t){var r=Gut(t),e,i,n,s,a,o,l;if(r)for(e=b6(t,r),i=e.next;!(n=dM(i,e)).done;){if(s=b6(But(n.value)),a=s.next,(o=dM(a,s)).done||(l=dM(a,s)).done||!dM(a,s).done)throw Xut("Expected sequence with length 2");Zm(this.entries,{key:Ho(o.value),value:Ho(l.value)})}else for(var c in t)Fut(t,c)&&Zm(this.entries,{key:c,value:Ho(t[c])})},parseQuery:function(t){if(t)for(var r=fle(t,"&"),e=0,i,n;e<r.length;)i=r[e++],i.length&&(n=fle(i,"="),Zm(this.entries,{key:gle(Kut(n)),value:gle(ple(n,"="))}))},serialize:function(){for(var t=this.entries,r=[],e=0,i;e<t.length;)i=t[e++],Zm(r,vle(i.key)+"="+vle(i.value));return ple(r,"&")},update:function(){this.entries.length=0,this.parseQuery(this.url.query)},updateURL:function(){this.url&&this.url.update()}};var gM=function(){xle(this,wb);var r=arguments.length>0?arguments[0]:void 0;_le(this,new Rle(r))},wb=gM.prototype;Put(wb,{append:function(r,e){Kv(arguments.length,2);var i=Ec(this);Zm(i.entries,{key:Ho(r),value:Ho(e)}),i.updateURL()},delete:function(t){Kv(arguments.length,1);for(var r=Ec(this),e=r.entries,i=Ho(t),n=0;n<e.length;)e[n].key===i?dle(e,n,1):n++;r.updateURL()},get:function(r){Kv(arguments.length,1);for(var e=Ec(this).entries,i=Ho(r),n=0;n<e.length;n++)if(e[n].key===i)return e[n].value;return null},getAll:function(r){Kv(arguments.length,1);for(var e=Ec(this).entries,i=Ho(r),n=[],s=0;s<e.length;s++)e[s].key===i&&Zm(n,e[s].value);return n},has:function(r){Kv(arguments.length,1);for(var e=Ec(this).entries,i=Ho(r),n=0;n<e.length;)if(e[n++].key===i)return!0;return!1},set:function(r,e){Kv(arguments.length,1);for(var i=Ec(this),n=i.entries,s=!1,a=Ho(r),o=Ho(e),l=0,c;l<n.length;l++)c=n[l],c.key===a&&(s?dle(n,l--,1):(s=!0,c.value=o));s||Zm(n,{key:a,value:o}),i.updateURL()},sort:function(){var r=Ec(this);zut(r.entries,function(e,i){return e.key>i.key?1:-1}),r.updateURL()},forEach:function(r){for(var e=Ec(this).entries,i=Hut(r,arguments.length>1?arguments[1]:void 0),n=0,s;n<e.length;)s=e[n++],i(s.value,s.key,this)},keys:function(){return new y6(this,"keys")},values:function(){return new y6(this,"values")},entries:function(){return new y6(this,"entries")}},{enumerable:!0});ble(wb,jut,wb.entries,{name:"entries"});ble(wb,"toString",function(){return Ec(this).serialize()},{enumerable:!0});Nut(gM,Rb);E6({global:!0,constructor:!0,forced:!Ele},{URLSearchParams:gM});!Ele&&g6(_b)&&(yle=Pu(hle.has),Tle=Pu(hle.set),T6=function(t){if(Ile(t)){var r=t.body,e;if(Uut(r)===Rb)return e=t.headers?new _b(t.headers):new _b,yle(e,"content-type")||Tle(e,"content-type","application/x-www-form-urlencoded;charset=UTF-8"),kut(t,{body:cle(0,Ho(r)),headers:cle(0,e)})}return t},g6(ule)&&E6({global:!0,enumerable:!0,dontCallGetSet:!0,forced:!0},{fetch:function(r){return ule(r,arguments.length>1?T6(arguments[1]):{})}}),g6(mM)&&(fM=function(r){return xle(this,v6),new mM(r,arguments.length>1?T6(arguments[1]):{})},v6.constructor=fM,fM.prototype=v6,E6({global:!0,constructor:!0,dontCallGetSet:!0,forced:!0},{Request:fM})));var yle,Tle,T6,fM;Mle.exports={URLSearchParams:gM,getState:Ec}});var Yle=V(()=>{"use strict";CF();var sht=Ne(),G6=Pr(),aht=h6(),V6=ir(),Dle=fl(),xl=Bt(),bM=Dn(),yl=Gd(),oht=yc(),U6=Si(),z6=RL(),Qv=fN(),bc=ov(),lht=Z1().codeAt,cht=lle(),ip=mi(),uht=Ya(),hht=ep(),Gle=_6(),Vle=cs(),pht=Vle.set,xM=Vle.getterFor("URL"),dht=Gle.URLSearchParams,fht=Gle.getState,Mb=V6.URL,B6=V6.TypeError,IM=V6.parseInt,mht=Math.floor,Cle=Math.pow,bl=xl("".charAt),xc=xl(/./.exec),Cb=xl([].join),ght=xl(1 .toString),vht=xl([].pop),ty=xl([].push),Ale=xl("".replace),yht=xl([].shift),Tht=xl("".split),Ob=xl("".slice),SM=xl("".toLowerCase),Eht=xl([].unshift),bht="Invalid authority",w6="Invalid scheme",Km="Invalid host",Ole="Invalid port",zle=/[a-z]/i,xht=/[\d+-.a-z]/i,k6=/\d/,Iht=/^0x/i,Sht=/^[0-7]+$/,_ht=/^\d+$/,jle=/^[\da-f]+$/i,wht=/[\0\t\n\r #%/:<>?@[\\\]^|]/,Rht=/[\0\t\n\r #/:<>?@[\\\]^|]/,Mht=/^[\u0000-\u0020]+|[\u0000-\u0020]+$/g,Dht=/[\t\n\r]/g,Tl,Cht=function(t){var r=Tht(t,"."),e,i,n,s,a,o,l;if(r.length&&r[r.length-1]==""&&r.length--,e=r.length,e>4)return t;for(i=[],n=0;n<e;n++){if(s=r[n],s=="")return t;if(a=10,s.length>1&&bl(s,0)=="0"&&(a=xc(Iht,s)?16:8,s=Ob(s,a==8?1:2)),s==="")o=0;else{if(!xc(a==10?_ht:a==8?Sht:jle,s))return t;o=IM(s,a)}ty(i,o)}for(n=0;n<e;n++)if(o=i[n],n==e-1){if(o>=Cle(256,5-e))return null}else if(o>255)return null;for(l=vht(i),n=0;n<i.length;n++)l+=i[n]*Cle(256,3-n);return l},Aht=function(t){var r=[0,0,0,0,0,0,0,0],e=0,i=null,n=0,s,a,o,l,c,u,h,p=function(){return bl(t,n)};if(p()==":"){if(bl(t,1)!=":")return;n+=2,e++,i=e}for(;p();){if(e==8)return;if(p()==":"){if(i!==null)return;n++,e++,i=e;continue}for(s=a=0;a<4&&xc(jle,p());)s=s*16+IM(p(),16),n++,a++;if(p()=="."){if(a==0||(n-=a,e>6))return;for(o=0;p();){if(l=null,o>0)if(p()=="."&&o<4)n++;else return;if(!xc(k6,p()))return;for(;xc(k6,p());){if(c=IM(p(),10),l===null)l=c;else{if(l==0)return;l=l*10+c}if(l>255)return;n++}r[e]=r[e]*256+l,o++,(o==2||o==4)&&e++}if(o!=4)return;break}else if(p()==":"){if(n++,!p())return}else if(p())return;r[e++]=s}if(i!==null)for(u=e-i,e=7;e!=0&&u>0;)h=r[e],r[e--]=r[i+u-1],r[i+--u]=h;else if(e!=8)return;return r},Oht=function(t){for(var r=null,e=1,i=null,n=0,s=0;s<8;s++)t[s]!==0?(n>e&&(r=i,e=n),i=null,n=0):(i===null&&(i=s),++n);return n>e&&(r=i,e=n),r},Db=function(t){var r,e,i,n;if(typeof t=="number"){for(r=[],e=0;e<4;e++)Eht(r,t%256),t=mht(t/256);return Cb(r,".")}else if(typeof t=="object"){for(r="",i=Oht(t),e=0;e<8;e++)n&&t[e]===0||(n&&(n=!1),i===e?(r+=e?":":"::",n=!0):(r+=ght(t[e],16),e<7&&(r+=":")));return"["+r+"]"}return t},EM={},Wle=z6({},EM,{" ":1,'"':1,"<":1,">":1,"`":1}),qle=z6({},Wle,{"#":1,"?":1,"{":1,"}":1}),R6=z6({},qle,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),Zd=function(t,r){var e=lht(t,0);return e>32&&e<127&&!U6(r,t)?t:encodeURIComponent(t)},vM={ftp:21,file:null,http:80,https:443,ws:80,wss:443},Ab=function(t,r){var e;return t.length==2&&xc(zle,bl(t,0))&&((e=bl(t,1))==":"||!r&&e=="|")},Ple=function(t){var r;return t.length>1&&Ab(Ob(t,0,2))&&(t.length==2||(r=bl(t,2))==="/"||r==="\\"||r==="?"||r==="#")},Pht=function(t){return t==="."||SM(t)==="%2e"},Nht=function(t){return t=SM(t),t===".."||t==="%2e."||t===".%2e"||t==="%2e%2e"},M6={},Nle={},D6={},Lle={},Fle={},C6={},Hle={},Ule={},yM={},TM={},A6={},O6={},P6={},N6={},Ble={},L6={},ey={},Nu={},kle={},Jm={},rp={},j6=function(t,r,e){var i=ip(t),n,s,a;if(r){if(s=this.parse(i),s)throw B6(s);this.searchParams=null}else{if(e!==void 0&&(n=new j6(e,!0)),s=this.parse(i,null,n),s)throw B6(s);a=fht(new dht),a.bindURL(this),this.searchParams=a}};j6.prototype={type:"URL",parse:function(t,r,e){var i=this,n=r||M6,s=0,a="",o=!1,l=!1,c=!1,u,h,p,d;for(t=ip(t),r||(i.scheme="",i.username="",i.password="",i.host=null,i.port=null,i.path=[],i.query=null,i.fragment=null,i.cannotBeABaseURL=!1,t=Ale(t,Mht,"")),t=Ale(t,Dht,""),u=Qv(t);s<=u.length;){switch(h=u[s],n){case M6:if(h&&xc(zle,h))a+=SM(h),n=Nle;else{if(r)return w6;n=D6;continue}break;case Nle:if(h&&(xc(xht,h)||h=="+"||h=="-"||h=="."))a+=SM(h);else if(h==":"){if(r&&(i.isSpecial()!=U6(vM,a)||a=="file"&&(i.includesCredentials()||i.port!==null)||i.scheme=="file"&&!i.host))return;if(i.scheme=a,r){i.isSpecial()&&vM[i.scheme]==i.port&&(i.port=null);return}a="",i.scheme=="file"?n=N6:i.isSpecial()&&e&&e.scheme==i.scheme?n=Lle:i.isSpecial()?n=Ule:u[s+1]=="/"?(n=Fle,s++):(i.cannotBeABaseURL=!0,ty(i.path,""),n=kle)}else{if(r)return w6;a="",n=D6,s=0;continue}break;case D6:if(!e||e.cannotBeABaseURL&&h!="#")return w6;if(e.cannotBeABaseURL&&h=="#"){i.scheme=e.scheme,i.path=bc(e.path),i.query=e.query,i.fragment="",i.cannotBeABaseURL=!0,n=rp;break}n=e.scheme=="file"?N6:C6;continue;case Lle:if(h=="/"&&u[s+1]=="/")n=yM,s++;else{n=C6;continue}break;case Fle:if(h=="/"){n=TM;break}else{n=Nu;continue}case C6:if(i.scheme=e.scheme,h==Tl)i.username=e.username,i.password=e.password,i.host=e.host,i.port=e.port,i.path=bc(e.path),i.query=e.query;else if(h=="/"||h=="\\"&&i.isSpecial())n=Hle;else if(h=="?")i.username=e.username,i.password=e.password,i.host=e.host,i.port=e.port,i.path=bc(e.path),i.query="",n=Jm;else if(h=="#")i.username=e.username,i.password=e.password,i.host=e.host,i.port=e.port,i.path=bc(e.path),i.query=e.query,i.fragment="",n=rp;else{i.username=e.username,i.password=e.password,i.host=e.host,i.port=e.port,i.path=bc(e.path),i.path.length--,n=Nu;continue}break;case Hle:if(i.isSpecial()&&(h=="/"||h=="\\"))n=yM;else if(h=="/")n=TM;else{i.username=e.username,i.password=e.password,i.host=e.host,i.port=e.port,n=Nu;continue}break;case Ule:if(n=yM,h!="/"||bl(a,s+1)!="/")continue;s++;break;case yM:if(h!="/"&&h!="\\"){n=TM;continue}break;case TM:if(h=="@"){o&&(a="%40"+a),o=!0,p=Qv(a);for(var f=0;f<p.length;f++){var m=p[f];if(m==":"&&!c){c=!0;continue}var g=Zd(m,R6);c?i.password+=g:i.username+=g}a=""}else if(h==Tl||h=="/"||h=="?"||h=="#"||h=="\\"&&i.isSpecial()){if(o&&a=="")return bht;s-=Qv(a).length+1,a="",n=A6}else a+=h;break;case A6:case O6:if(r&&i.scheme=="file"){n=L6;continue}else if(h==":"&&!l){if(a=="")return Km;if(d=i.parseHost(a),d)return d;if(a="",n=P6,r==O6)return}else if(h==Tl||h=="/"||h=="?"||h=="#"||h=="\\"&&i.isSpecial()){if(i.isSpecial()&&a=="")return Km;if(r&&a==""&&(i.includesCredentials()||i.port!==null))return;if(d=i.parseHost(a),d)return d;if(a="",n=ey,r)return;continue}else h=="["?l=!0:h=="]"&&(l=!1),a+=h;break;case P6:if(xc(k6,h))a+=h;else if(h==Tl||h=="/"||h=="?"||h=="#"||h=="\\"&&i.isSpecial()||r){if(a!=""){var y=IM(a,10);if(y>65535)return Ole;i.port=i.isSpecial()&&y===vM[i.scheme]?null:y,a=""}if(r)return;n=ey;continue}else return Ole;break;case N6:if(i.scheme="file",h=="/"||h=="\\")n=Ble;else if(e&&e.scheme=="file")if(h==Tl)i.host=e.host,i.path=bc(e.path),i.query=e.query;else if(h=="?")i.host=e.host,i.path=bc(e.path),i.query="",n=Jm;else if(h=="#")i.host=e.host,i.path=bc(e.path),i.query=e.query,i.fragment="",n=rp;else{Ple(Cb(bc(u,s),""))||(i.host=e.host,i.path=bc(e.path),i.shortenPath()),n=Nu;continue}else{n=Nu;continue}break;case Ble:if(h=="/"||h=="\\"){n=L6;break}e&&e.scheme=="file"&&!Ple(Cb(bc(u,s),""))&&(Ab(e.path[0],!0)?ty(i.path,e.path[0]):i.host=e.host),n=Nu;continue;case L6:if(h==Tl||h=="/"||h=="\\"||h=="?"||h=="#"){if(!r&&Ab(a))n=Nu;else if(a==""){if(i.host="",r)return;n=ey}else{if(d=i.parseHost(a),d)return d;if(i.host=="localhost"&&(i.host=""),r)return;a="",n=ey}continue}else a+=h;break;case ey:if(i.isSpecial()){if(n=Nu,h!="/"&&h!="\\")continue}else if(!r&&h=="?")i.query="",n=Jm;else if(!r&&h=="#")i.fragment="",n=rp;else if(h!=Tl&&(n=Nu,h!="/"))continue;break;case Nu:if(h==Tl||h=="/"||h=="\\"&&i.isSpecial()||!r&&(h=="?"||h=="#")){if(Nht(a)?(i.shortenPath(),h!="/"&&!(h=="\\"&&i.isSpecial())&&ty(i.path,"")):Pht(a)?h!="/"&&!(h=="\\"&&i.isSpecial())&&ty(i.path,""):(i.scheme=="file"&&!i.path.length&&Ab(a)&&(i.host&&(i.host=""),a=bl(a,0)+":"),ty(i.path,a)),a="",i.scheme=="file"&&(h==Tl||h=="?"||h=="#"))for(;i.path.length>1&&i.path[0]==="";)yht(i.path);h=="?"?(i.query="",n=Jm):h=="#"&&(i.fragment="",n=rp)}else a+=Zd(h,qle);break;case kle:h=="?"?(i.query="",n=Jm):h=="#"?(i.fragment="",n=rp):h!=Tl&&(i.path[0]+=Zd(h,EM));break;case Jm:!r&&h=="#"?(i.fragment="",n=rp):h!=Tl&&(h=="'"&&i.isSpecial()?i.query+="%27":h=="#"?i.query+="%23":i.query+=Zd(h,EM));break;case rp:h!=Tl&&(i.fragment+=Zd(h,Wle));break}s++}},parseHost:function(t){var r,e,i;if(bl(t,0)=="["){if(bl(t,t.length-1)!="]"||(r=Aht(Ob(t,1,-1)),!r))return Km;this.host=r}else if(this.isSpecial()){if(t=cht(t),xc(wht,t)||(r=Cht(t),r===null))return Km;this.host=r}else{if(xc(Rht,t))return Km;for(r="",e=Qv(t),i=0;i<e.length;i++)r+=Zd(e[i],EM);this.host=r}},cannotHaveUsernamePasswordPort:function(){return!this.host||this.cannotBeABaseURL||this.scheme=="file"},includesCredentials:function(){return this.username!=""||this.password!=""},isSpecial:function(){return U6(vM,this.scheme)},shortenPath:function(){var t=this.path,r=t.length;r&&(this.scheme!="file"||r!=1||!Ab(t[0],!0))&&t.length--},serialize:function(){var t=this,r=t.scheme,e=t.username,i=t.password,n=t.host,s=t.port,a=t.path,o=t.query,l=t.fragment,c=r+":";return n!==null?(c+="//",t.includesCredentials()&&(c+=e+(i?":"+i:"")+"@"),c+=Db(n),s!==null&&(c+=":"+s)):r=="file"&&(c+="//"),c+=t.cannotBeABaseURL?a[0]:a.length?"/"+Cb(a,"/"):"",o!==null&&(c+="?"+o),l!==null&&(c+="#"+l),c},setHref:function(t){var r=this.parse(t);if(r)throw B6(r);this.searchParams.update()},getOrigin:function(){var t=this.scheme,r=this.port;if(t=="blob")try{return new ry(t.path[0]).origin}catch(e){return"null"}return t=="file"||!this.isSpecial()?"null":t+"://"+Db(this.host)+(r!==null?":"+r:"")},getProtocol:function(){return this.scheme+":"},setProtocol:function(t){this.parse(ip(t)+":",M6)},getUsername:function(){return this.username},setUsername:function(t){var r=Qv(ip(t));if(!this.cannotHaveUsernamePasswordPort()){this.username="";for(var e=0;e<r.length;e++)this.username+=Zd(r[e],R6)}},getPassword:function(){return this.password},setPassword:function(t){var r=Qv(ip(t));if(!this.cannotHaveUsernamePasswordPort()){this.password="";for(var e=0;e<r.length;e++)this.password+=Zd(r[e],R6)}},getHost:function(){var t=this.host,r=this.port;return t===null?"":r===null?Db(t):Db(t)+":"+r},setHost:function(t){this.cannotBeABaseURL||this.parse(t,A6)},getHostname:function(){var t=this.host;return t===null?"":Db(t)},setHostname:function(t){this.cannotBeABaseURL||this.parse(t,O6)},getPort:function(){var t=this.port;return t===null?"":ip(t)},setPort:function(t){this.cannotHaveUsernamePasswordPort()||(t=ip(t),t==""?this.port=null:this.parse(t,P6))},getPathname:function(){var t=this.path;return this.cannotBeABaseURL?t[0]:t.length?"/"+Cb(t,"/"):""},setPathname:function(t){this.cannotBeABaseURL||(this.path=[],this.parse(t,ey))},getSearch:function(){var t=this.query;return t?"?"+t:""},setSearch:function(t){t=ip(t),t==""?this.query=null:(bl(t,0)=="?"&&(t=Ob(t,1)),this.query="",this.parse(t,Jm)),this.searchParams.update()},getSearchParams:function(){return this.searchParams.facade},getHash:function(){var t=this.fragment;return t?"#"+t:""},setHash:function(t){if(t=ip(t),t==""){this.fragment=null;return}bl(t,0)=="#"&&(t=Ob(t,1)),this.fragment="",this.parse(t,rp)},update:function(){this.query=this.searchParams.serialize()||null}};var ry=function(r){var e=oht(this,ba),i=hht(arguments.length,1)>1?arguments[1]:void 0,n=pht(e,new j6(r,!1,i));G6||(e.href=n.serialize(),e.origin=n.getOrigin(),e.protocol=n.getProtocol(),e.username=n.getUsername(),e.password=n.getPassword(),e.host=n.getHost(),e.hostname=n.getHostname(),e.port=n.getPort(),e.pathname=n.getPathname(),e.search=n.getSearch(),e.searchParams=n.getSearchParams(),e.hash=n.getHash())},ba=ry.prototype,El=function(t,r){return{get:function(){return xM(this)[t]()},set:r&&function(e){return xM(this)[r](e)},configurable:!0,enumerable:!0}};G6&&(yl(ba,"href",El("serialize","setHref")),yl(ba,"origin",El("getOrigin")),yl(ba,"protocol",El("getProtocol","setProtocol")),yl(ba,"username",El("getUsername","setUsername")),yl(ba,"password",El("getPassword","setPassword")),yl(ba,"host",El("getHost","setHost")),yl(ba,"hostname",El("getHostname","setHostname")),yl(ba,"port",El("getPort","setPort")),yl(ba,"pathname",El("getPathname","setPathname")),yl(ba,"search",El("getSearch","setSearch")),yl(ba,"searchParams",El("getSearchParams")),yl(ba,"hash",El("getHash","setHash")));bM(ba,"toJSON",function(){return xM(this).serialize()},{enumerable:!0});bM(ba,"toString",function(){return xM(this).serialize()},{enumerable:!0});Mb&&(F6=Mb.createObjectURL,H6=Mb.revokeObjectURL,F6&&bM(ry,"createObjectURL",Dle(F6,Mb)),H6&&bM(ry,"revokeObjectURL",Dle(H6,Mb)));var F6,H6;uht(ry,"URL");sht({global:!0,constructor:!0,forced:!aht,sham:!G6},{URL:ry})});var Xle=V(()=>{Yle()});var $le=V(()=>{"use strict";var Lht=Ne(),Fht=ni();Lht({target:"URL",proto:!0,enumerable:!0},{toJSON:function(){return Fht(URL.prototype.toString,this)}})});var Zle=V(()=>{_6()});var Jle=V((Szt,Kle)=>{mW();xW();IW();SW();_W();wW();RW();MW();DW();CW();AW();OW();PW();NW();LW();rq();oq();Sq();Mq();Cq();Fq();kq();Vq();Wq();qq();Xq();Zq();Qq();eY();iY();nY();oY();vY();yY();EY();bY();_1();VY();qY();YY();$Y();KY();rX();nX();aX();cX();uX();wX();DX();CX();AX();OX();PX();a$();y$();R$();D$();C$();O$();L$();F$();q$();Y$();J$();rZ();nZ();uZ();dZ();vZ();yZ();W2();TZ();LZ();UZ();GZ();zZ();WZ();qZ();$Z();KZ();eK();rK();nK();aK();oK();lK();cK();pK();mK();gK();vK();MK();DK();OK();NK();LK();FK();HK();UK();jK();JK();iJ();cJ();pJ();vJ();yJ();bJ();IJ();_J();wJ();CJ();AJ();OJ();LJ();FJ();HJ();BJ();kJ();VJ();jJ();qJ();XJ();ZJ();KJ();JJ();QJ();oQ();lQ();cQ();pQ();dQ();mQ();vQ();Dee();Cee();Oee();Fee();Hee();jee();Yee();Xee();Jee();Qee();ete();tte();rte();ite();nte();cte();hte();pte();Mte();Cte();RR();Fte();Ute();Gte();jte();qte();Yte();Kte();nre();ore();cre();CF();xre();Ore();Nre();Lre();Bre();kre();qre();Kre();eie();aie();hie();die();vie();xie();Rie();Aie();Oie();Pie();Nie();Lie();Fie();Hie();Uie();Bie();kie();Gie();Vie();zie();vne();yne();Tne();Ene();bne();xne();Ine();Sne();_ne();Rne();Dne();Ane();Pne();Gne();zne();Wne();Yne();$ne();Kne();Jne();ese();rse();ose();cse();hse();dse();mse();vse();Tse();bse();Rse();Dse();Ase();Hse();kse();Wse();Yse();Jse();mae();vae();wae();Lae();Vae();Xae();loe();moe();voe();Moe();Doe();Aoe();Woe();Joe();Xle();$le();Zle();Kle.exports=pw()});var Qle=V((_zt,q6)=>{var W6=function(t){"use strict";var r=Object.prototype,e=r.hasOwnProperty,i=Object.defineProperty||function(G,U,j){G[U]=j.value},n,s=typeof Symbol=="function"?Symbol:{},a=s.iterator||"@@iterator",o=s.asyncIterator||"@@asyncIterator",l=s.toStringTag||"@@toStringTag";function c(G,U,j){return Object.defineProperty(G,U,{value:j,enumerable:!0,configurable:!0,writable:!0}),G[U]}try{c({},"")}catch(G){c=function(U,j,ee){return U[j]=ee}}function u(G,U,j,ee){var ae=U&&U.prototype instanceof y?U:y,se=Object.create(ae.prototype),ue=new C(ee||[]);return i(se,"_invoke",{value:F(G,j,ue)}),se}t.wrap=u;function h(G,U,j){try{return{type:"normal",arg:G.call(U,j)}}catch(ee){return{type:"throw",arg:ee}}}var p="suspendedStart",d="suspendedYield",f="executing",m="completed",g={};function y(){}function E(){}function b(){}var x={};c(x,a,function(){return this});var S=Object.getPrototypeOf,D=S&&S(S(N([])));D&&D!==r&&e.call(D,a)&&(x=D);var P=b.prototype=y.prototype=Object.create(x);E.prototype=b,i(P,"constructor",{value:b,configurable:!0}),i(b,"constructor",{value:E,configurable:!0}),E.displayName=c(b,l,"GeneratorFunction");function _(G){["next","throw","return"].forEach(function(U){c(G,U,function(j){return this._invoke(U,j)})})}t.isGeneratorFunction=function(G){var U=typeof G=="function"&&G.constructor;return U?U===E||(U.displayName||U.name)==="GeneratorFunction":!1},t.mark=function(G){return Object.setPrototypeOf?Object.setPrototypeOf(G,b):(G.__proto__=b,c(G,l,"GeneratorFunction")),G.prototype=Object.create(P),G},t.awrap=function(G){return{__await:G}};function w(G,U){function j(se,ue,ve,be){var de=h(G[se],G,ue);if(de.type==="throw")be(de.arg);else{var we=de.arg,Fe=we.value;return Fe&&typeof Fe=="object"&&e.call(Fe,"__await")?U.resolve(Fe.__await).then(function(je){j("next",je,ve,be)},function(je){j("throw",je,ve,be)}):U.resolve(Fe).then(function(je){we.value=je,ve(we)},function(je){return j("throw",je,ve,be)})}}var ee;function ae(se,ue){function ve(){return new U(function(be,de){j(se,ue,be,de)})}return ee=ee?ee.then(ve,ve):ve()}i(this,"_invoke",{value:ae})}_(w.prototype),c(w.prototype,o,function(){return this}),t.AsyncIterator=w,t.async=function(G,U,j,ee,ae){ae===void 0&&(ae=Promise);var se=new w(u(G,U,j,ee),ae);return t.isGeneratorFunction(U)?se:se.next().then(function(ue){return ue.done?ue.value:se.next()})};function F(G,U,j){var ee=p;return function(se,ue){if(ee===f)throw new Error("Generator is already running");if(ee===m){if(se==="throw")throw ue;return k()}for(j.method=se,j.arg=ue;;){var ve=j.delegate;if(ve){var be=X(ve,j);if(be){if(be===g)continue;return be}}if(j.method==="next")j.sent=j._sent=j.arg;else if(j.method==="throw"){if(ee===p)throw ee=m,j.arg;j.dispatchException(j.arg)}else j.method==="return"&&j.abrupt("return",j.arg);ee=f;var de=h(G,U,j);if(de.type==="normal"){if(ee=j.done?m:d,de.arg===g)continue;return{value:de.arg,done:j.done}}else de.type==="throw"&&(ee=m,j.method="throw",j.arg=de.arg)}}}function X(G,U){var j=U.method,ee=G.iterator[j];if(ee===n)return U.delegate=null,j==="throw"&&G.iterator.return&&(U.method="return",U.arg=n,X(G,U),U.method==="throw")||j!=="return"&&(U.method="throw",U.arg=new TypeError("The iterator does not provide a '"+j+"' method")),g;var ae=h(ee,G.iterator,U.arg);if(ae.type==="throw")return U.method="throw",U.arg=ae.arg,U.delegate=null,g;var se=ae.arg;if(!se)return U.method="throw",U.arg=new TypeError("iterator result is not an object"),U.delegate=null,g;if(se.done)U[G.resultName]=se.value,U.next=G.nextLoc,U.method!=="return"&&(U.method="next",U.arg=n);else return se;return U.delegate=null,g}_(P),c(P,l,"Generator"),c(P,a,function(){return this}),c(P,"toString",function(){return"[object Generator]"});function H(G){var U={tryLoc:G[0]};1 in G&&(U.catchLoc=G[1]),2 in G&&(U.finallyLoc=G[2],U.afterLoc=G[3]),this.tryEntries.push(U)}function he(G){var U=G.completion||{};U.type="normal",delete U.arg,G.completion=U}function C(G){this.tryEntries=[{tryLoc:"root"}],G.forEach(H,this),this.reset(!0)}t.keys=function(G){var U=Object(G),j=[];for(var ee in U)j.push(ee);return j.reverse(),function ae(){for(;j.length;){var se=j.pop();if(se in U)return ae.value=se,ae.done=!1,ae}return ae.done=!0,ae}};function N(G){if(G){var U=G[a];if(U)return U.call(G);if(typeof G.next=="function")return G;if(!isNaN(G.length)){var j=-1,ee=function ae(){for(;++j<G.length;)if(e.call(G,j))return ae.value=G[j],ae.done=!1,ae;return ae.value=n,ae.done=!0,ae};return ee.next=ee}}return{next:k}}t.values=N;function k(){return{value:n,done:!0}}return C.prototype={constructor:C,reset:function(G){if(this.prev=0,this.next=0,this.sent=this._sent=n,this.done=!1,this.delegate=null,this.method="next",this.arg=n,this.tryEntries.forEach(he),!G)for(var U in this)U.charAt(0)==="t"&&e.call(this,U)&&!isNaN(+U.slice(1))&&(this[U]=n)},stop:function(){this.done=!0;var G=this.tryEntries[0],U=G.completion;if(U.type==="throw")throw U.arg;return this.rval},dispatchException:function(G){if(this.done)throw G;var U=this;function j(be,de){return se.type="throw",se.arg=G,U.next=be,de&&(U.method="next",U.arg=n),!!de}for(var ee=this.tryEntries.length-1;ee>=0;--ee){var ae=this.tryEntries[ee],se=ae.completion;if(ae.tryLoc==="root")return j("end");if(ae.tryLoc<=this.prev){var ue=e.call(ae,"catchLoc"),ve=e.call(ae,"finallyLoc");if(ue&&ve){if(this.prev<ae.catchLoc)return j(ae.catchLoc,!0);if(this.prev<ae.finallyLoc)return j(ae.finallyLoc)}else if(ue){if(this.prev<ae.catchLoc)return j(ae.catchLoc,!0)}else if(ve){if(this.prev<ae.finallyLoc)return j(ae.finallyLoc)}else throw new Error("try statement without catch or finally")}}},abrupt:function(G,U){for(var j=this.tryEntries.length-1;j>=0;--j){var ee=this.tryEntries[j];if(ee.tryLoc<=this.prev&&e.call(ee,"finallyLoc")&&this.prev<ee.finallyLoc){var ae=ee;break}}ae&&(G==="break"||G==="continue")&&ae.tryLoc<=U&&U<=ae.finallyLoc&&(ae=null);var se=ae?ae.completion:{};return se.type=G,se.arg=U,ae?(this.method="next",this.next=ae.finallyLoc,g):this.complete(se)},complete:function(G,U){if(G.type==="throw")throw G.arg;return G.type==="break"||G.type==="continue"?this.next=G.arg:G.type==="return"?(this.rval=this.arg=G.arg,this.method="return",this.next="end"):G.type==="normal"&&U&&(this.next=U),g},finish:function(G){for(var U=this.tryEntries.length-1;U>=0;--U){var j=this.tryEntries[U];if(j.finallyLoc===G)return this.complete(j.completion,j.afterLoc),he(j),g}},catch:function(G){for(var U=this.tryEntries.length-1;U>=0;--U){var j=this.tryEntries[U];if(j.tryLoc===G){var ee=j.completion;if(ee.type==="throw"){var ae=ee.arg;he(j)}return ae}}throw new Error("illegal catch attempt")},delegateYield:function(G,U,j){return this.delegate={iterator:N(G),resultName:U,nextLoc:j},this.method==="next"&&(this.arg=n),g}},t}(typeof q6=="object"?q6.exports:{});try{regeneratorRuntime=W6}catch(t){typeof globalThis=="object"?globalThis.regeneratorRuntime=W6:Function("r","regeneratorRuntime = r")(W6)}});var Khe=V((Zhe,bC)=>{(function(t,r){"use strict";typeof define=="function"&&define.amd?define(r):typeof bC=="object"&&bC.exports?bC.exports=r():t.log=r()})(Zhe,function(){"use strict";var t=function(){},r="undefined",e=typeof window!==r&&typeof window.navigator!==r&&/Trident\/|MSIE /.test(window.navigator.userAgent),i=["trace","debug","info","warn","error"];function n(f,m){var g=f[m];if(typeof g.bind=="function")return g.bind(f);try{return Function.prototype.bind.call(g,f)}catch(y){return function(){return Function.prototype.apply.apply(g,[f,arguments])}}}function s(){console.log&&(console.log.apply?console.log.apply(console,arguments):Function.prototype.apply.apply(console.log,[console,arguments])),console.trace&&console.trace()}function a(f){return f==="debug"&&(f="log"),typeof console===r?!1:f==="trace"&&e?s:console[f]!==void 0?n(console,f):console.log!==void 0?n(console,"log"):t}function o(f,m){for(var g=0;g<i.length;g++){var y=i[g];this[y]=g<f?t:this.methodFactory(y,f,m)}this.log=this.debug}function l(f,m,g){return function(){typeof console!==r&&(o.call(this,m,g),this[f].apply(this,arguments))}}function c(f,m,g){return a(f)||l.apply(this,arguments)}function u(f,m,g){var y=this,E;m=m==null?"WARN":m;var b="loglevel";typeof f=="string"?b+=":"+f:typeof f=="symbol"&&(b=void 0);function x(_){var w=(i[_]||"silent").toUpperCase();if(!(typeof window===r||!b)){try{window.localStorage[b]=w;return}catch(F){}try{window.document.cookie=encodeURIComponent(b)+"="+w+";"}catch(F){}}}function S(){var _;if(!(typeof window===r||!b)){try{_=window.localStorage[b]}catch(X){}if(typeof _===r)try{var w=window.document.cookie,F=w.indexOf(encodeURIComponent(b)+"=");F!==-1&&(_=/^([^;]+)/.exec(w.slice(F))[1])}catch(X){}return y.levels[_]===void 0&&(_=void 0),_}}function D(){if(!(typeof window===r||!b)){try{window.localStorage.removeItem(b);return}catch(_){}try{window.document.cookie=encodeURIComponent(b)+"=; expires=Thu, 01 Jan 1970 00:00:00 UTC"}catch(_){}}}y.name=f,y.levels={TRACE:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,SILENT:5},y.methodFactory=g||c,y.getLevel=function(){return E},y.setLevel=function(_,w){if(typeof _=="string"&&y.levels[_.toUpperCase()]!==void 0&&(_=y.levels[_.toUpperCase()]),typeof _=="number"&&_>=0&&_<=y.levels.SILENT){if(E=_,w!==!1&&x(_),o.call(y,_,f),typeof console===r&&_<y.levels.SILENT)return"No console available for logging"}else throw"log.setLevel() called with invalid level: "+_},y.setDefaultLevel=function(_){m=_,S()||y.setLevel(_,!1)},y.resetLevel=function(){y.setLevel(m,!1),D()},y.enableAll=function(_){y.setLevel(y.levels.TRACE,_)},y.disableAll=function(_){y.setLevel(y.levels.SILENT,_)};var P=S();P==null&&(P=m),y.setLevel(P,!1)}var h=new u,p={};h.getLogger=function(m){if(typeof m!="symbol"&&typeof m!="string"||m==="")throw new TypeError("You must supply a name when creating a logger.");var g=p[m];return g||(g=p[m]=new u(m,h.getLevel(),h.methodFactory)),g};var d=typeof window!==r?window.log:void 0;return h.noConflict=function(){return typeof window!==r&&window.log===h&&(window.log=d),h},h.getLoggers=function(){return p},h.default=h,h})});var lpe=V((pB,dB)=>{(function(t,r){typeof pB=="object"&&typeof dB!="undefined"?dB.exports=r():typeof define=="function"&&define.amd?define(r):(t=typeof globalThis!="undefined"?globalThis:t||self,t.polygonClipping=r())})(pB,function(){"use strict";function t(_e,J){if(!(_e instanceof J))throw new TypeError("Cannot call a class as a function")}function r(_e,J){for(var $=0;$<J.length;$++){var re=J[$];re.enumerable=re.enumerable||!1,re.configurable=!0,"value"in re&&(re.writable=!0),Object.defineProperty(_e,re.key,re)}}function e(_e,J,$){return J&&r(_e.prototype,J),$&&r(_e,$),_e}var i=function(){function _e(J,$){this.next=null,this.key=J,this.data=$,this.left=null,this.right=null}return _e}();function n(_e,J){return _e>J?1:_e<J?-1:0}function s(_e,J,$){for(var re=new i(null,null),me=re,z=re;;){var Y=$(_e,J.key);if(Y<0){if(J.left===null)break;if($(_e,J.left.key)<0){var xe=J.left;if(J.left=xe.right,xe.right=J,J=xe,J.left===null)break}z.left=J,z=J,J=J.left}else if(Y>0){if(J.right===null)break;if($(_e,J.right.key)>0){var xe=J.right;if(J.right=xe.left,xe.left=J,J=xe,J.right===null)break}me.right=J,me=J,J=J.right}else break}return me.right=J.left,z.left=J.right,J.left=re.right,J.right=re.left,J}function a(_e,J,$,re){var me=new i(_e,J);if($===null)return me.left=me.right=null,me;$=s(_e,$,re);var z=re(_e,$.key);return z<0?(me.left=$.left,me.right=$,$.left=null):z>=0&&(me.right=$.right,me.left=$,$.right=null),me}function o(_e,J,$){var re=null,me=null;if(J){J=s(_e,J,$);var z=$(J.key,_e);z===0?(re=J.left,me=J.right):z<0?(me=J.right,J.right=null,re=J):(re=J.left,J.left=null,me=J)}return{left:re,right:me}}function l(_e,J,$){return J===null?_e:(_e===null||(J=s(_e.key,J,$),J.left=_e),J)}function c(_e,J,$,re,me){if(_e){re(""+J+($?"\u2514\u2500\u2500 ":"\u251C\u2500\u2500 ")+me(_e)+`
|
||
`);var z=J+($?" ":"\u2502 ");_e.left&&c(_e.left,z,!1,re,me),_e.right&&c(_e.right,z,!0,re,me)}}var u=function(){function _e(J){J===void 0&&(J=n),this._root=null,this._size=0,this._comparator=J}return _e.prototype.insert=function(J,$){return this._size++,this._root=a(J,$,this._root,this._comparator)},_e.prototype.add=function(J,$){var re=new i(J,$);this._root===null&&(re.left=re.right=null,this._size++,this._root=re);var me=this._comparator,z=s(J,this._root,me),Y=me(J,z.key);return Y===0?this._root=z:(Y<0?(re.left=z.left,re.right=z,z.left=null):Y>0&&(re.right=z.right,re.left=z,z.right=null),this._size++,this._root=re),this._root},_e.prototype.remove=function(J){this._root=this._remove(J,this._root,this._comparator)},_e.prototype._remove=function(J,$,re){var me;if($===null)return null;$=s(J,$,re);var z=re(J,$.key);return z===0?($.left===null?me=$.right:(me=s(J,$.left,re),me.right=$.right),this._size--,me):$},_e.prototype.pop=function(){var J=this._root;if(J){for(;J.left;)J=J.left;return this._root=s(J.key,this._root,this._comparator),this._root=this._remove(J.key,this._root,this._comparator),{key:J.key,data:J.data}}return null},_e.prototype.findStatic=function(J){for(var $=this._root,re=this._comparator;$;){var me=re(J,$.key);if(me===0)return $;me<0?$=$.left:$=$.right}return null},_e.prototype.find=function(J){return this._root&&(this._root=s(J,this._root,this._comparator),this._comparator(J,this._root.key)!==0)?null:this._root},_e.prototype.contains=function(J){for(var $=this._root,re=this._comparator;$;){var me=re(J,$.key);if(me===0)return!0;me<0?$=$.left:$=$.right}return!1},_e.prototype.forEach=function(J,$){for(var re=this._root,me=[],z=!1;!z;)re!==null?(me.push(re),re=re.left):me.length!==0?(re=me.pop(),J.call($,re),re=re.right):z=!0;return this},_e.prototype.range=function(J,$,re,me){for(var z=[],Y=this._comparator,xe=this._root,Ce;z.length!==0||xe;)if(xe)z.push(xe),xe=xe.left;else{if(xe=z.pop(),Ce=Y(xe.key,$),Ce>0)break;if(Y(xe.key,J)>=0&&re.call(me,xe))return this;xe=xe.right}return this},_e.prototype.keys=function(){var J=[];return this.forEach(function($){var re=$.key;return J.push(re)}),J},_e.prototype.values=function(){var J=[];return this.forEach(function($){var re=$.data;return J.push(re)}),J},_e.prototype.min=function(){return this._root?this.minNode(this._root).key:null},_e.prototype.max=function(){return this._root?this.maxNode(this._root).key:null},_e.prototype.minNode=function(J){if(J===void 0&&(J=this._root),J)for(;J.left;)J=J.left;return J},_e.prototype.maxNode=function(J){if(J===void 0&&(J=this._root),J)for(;J.right;)J=J.right;return J},_e.prototype.at=function(J){for(var $=this._root,re=!1,me=0,z=[];!re;)if($)z.push($),$=$.left;else if(z.length>0){if($=z.pop(),me===J)return $;me++,$=$.right}else re=!0;return null},_e.prototype.next=function(J){var $=this._root,re=null;if(J.right){for(re=J.right;re.left;)re=re.left;return re}for(var me=this._comparator;$;){var z=me(J.key,$.key);if(z===0)break;z<0?(re=$,$=$.left):$=$.right}return re},_e.prototype.prev=function(J){var $=this._root,re=null;if(J.left!==null){for(re=J.left;re.right;)re=re.right;return re}for(var me=this._comparator;$;){var z=me(J.key,$.key);if(z===0)break;z<0?$=$.left:(re=$,$=$.right)}return re},_e.prototype.clear=function(){return this._root=null,this._size=0,this},_e.prototype.toList=function(){return d(this._root)},_e.prototype.load=function(J,$,re){$===void 0&&($=[]),re===void 0&&(re=!1);var me=J.length,z=this._comparator;if(re&&g(J,$,0,me-1,z),this._root===null)this._root=h(J,$,0,me),this._size=me;else{var Y=m(this.toList(),p(J,$),z);me=this._size+me,this._root=f({head:Y},0,me)}return this},_e.prototype.isEmpty=function(){return this._root===null},Object.defineProperty(_e.prototype,"size",{get:function(){return this._size},enumerable:!0,configurable:!0}),Object.defineProperty(_e.prototype,"root",{get:function(){return this._root},enumerable:!0,configurable:!0}),_e.prototype.toString=function(J){J===void 0&&(J=function(me){return String(me.key)});var $=[];return c(this._root,"",!0,function(re){return $.push(re)},J),$.join("")},_e.prototype.update=function(J,$,re){var me=this._comparator,z=o(J,this._root,me),Y=z.left,xe=z.right;me(J,$)<0?xe=a($,re,xe,me):Y=a($,re,Y,me),this._root=l(Y,xe,me)},_e.prototype.split=function(J){return o(J,this._root,this._comparator)},_e}();function h(_e,J,$,re){var me=re-$;if(me>0){var z=$+Math.floor(me/2),Y=_e[z],xe=J[z],Ce=new i(Y,xe);return Ce.left=h(_e,J,$,z),Ce.right=h(_e,J,z+1,re),Ce}return null}function p(_e,J){for(var $=new i(null,null),re=$,me=0;me<_e.length;me++)re=re.next=new i(_e[me],J[me]);return re.next=null,$.next}function d(_e){for(var J=_e,$=[],re=!1,me=new i(null,null),z=me;!re;)J?($.push(J),J=J.left):$.length>0?(J=z=z.next=$.pop(),J=J.right):re=!0;return z.next=null,me.next}function f(_e,J,$){var re=$-J;if(re>0){var me=J+Math.floor(re/2),z=f(_e,J,me),Y=_e.head;return Y.left=z,_e.head=_e.head.next,Y.right=f(_e,me+1,$),Y}return null}function m(_e,J,$){for(var re=new i(null,null),me=re,z=_e,Y=J;z!==null&&Y!==null;)$(z.key,Y.key)<0?(me.next=z,z=z.next):(me.next=Y,Y=Y.next),me=me.next;return z!==null?me.next=z:Y!==null&&(me.next=Y),re.next}function g(_e,J,$,re,me){if(!($>=re)){for(var z=_e[$+re>>1],Y=$-1,xe=re+1;;){do Y++;while(me(_e[Y],z)<0);do xe--;while(me(_e[xe],z)>0);if(Y>=xe)break;var Ce=_e[Y];_e[Y]=_e[xe],_e[xe]=Ce,Ce=J[Y],J[Y]=J[xe],J[xe]=Ce}g(_e,J,$,xe,me),g(_e,J,xe+1,re,me)}}var y=function(J,$){return J.ll.x<=$.x&&$.x<=J.ur.x&&J.ll.y<=$.y&&$.y<=J.ur.y},E=function(J,$){if($.ur.x<J.ll.x||J.ur.x<$.ll.x||$.ur.y<J.ll.y||J.ur.y<$.ll.y)return null;var re=J.ll.x<$.ll.x?$.ll.x:J.ll.x,me=J.ur.x<$.ur.x?J.ur.x:$.ur.x,z=J.ll.y<$.ll.y?$.ll.y:J.ll.y,Y=J.ur.y<$.ur.y?J.ur.y:$.ur.y;return{ll:{x:re,y:z},ur:{x:me,y:Y}}},b=Number.EPSILON;b===void 0&&(b=Math.pow(2,-52));var x=b*b,S=function(J,$){if(-b<J&&J<b&&-b<$&&$<b)return 0;var re=J-$;return re*re<x*J*$?0:J<$?-1:1},D=function(){function _e(){t(this,_e),this.reset()}return e(_e,[{key:"reset",value:function(){this.xRounder=new P,this.yRounder=new P}},{key:"round",value:function($,re){return{x:this.xRounder.round($),y:this.yRounder.round(re)}}}]),_e}(),P=function(){function _e(){t(this,_e),this.tree=new u,this.round(0)}return e(_e,[{key:"round",value:function($){var re=this.tree.add($),me=this.tree.prev(re);if(me!==null&&S(re.key,me.key)===0)return this.tree.remove($),me.key;var z=this.tree.next(re);return z!==null&&S(re.key,z.key)===0?(this.tree.remove($),z.key):$}}]),_e}(),_=new D,w=function(J,$){return J.x*$.y-J.y*$.x},F=function(J,$){return J.x*$.x+J.y*$.y},X=function(J,$,re){var me={x:$.x-J.x,y:$.y-J.y},z={x:re.x-J.x,y:re.y-J.y},Y=w(me,z);return S(Y,0)},H=function(J){return Math.sqrt(F(J,J))},he=function(J,$,re){var me={x:$.x-J.x,y:$.y-J.y},z={x:re.x-J.x,y:re.y-J.y};return w(z,me)/H(z)/H(me)},C=function(J,$,re){var me={x:$.x-J.x,y:$.y-J.y},z={x:re.x-J.x,y:re.y-J.y};return F(z,me)/H(z)/H(me)},N=function(J,$,re){return $.y===0?null:{x:J.x+$.x/$.y*(re-J.y),y:re}},k=function(J,$,re){return $.x===0?null:{x:re,y:J.y+$.y/$.x*(re-J.x)}},G=function(J,$,re,me){if($.x===0)return k(re,me,J.x);if(me.x===0)return k(J,$,re.x);if($.y===0)return N(re,me,J.y);if(me.y===0)return N(J,$,re.y);var z=w($,me);if(z==0)return null;var Y={x:re.x-J.x,y:re.y-J.y},xe=w(Y,$)/z,Ce=w(Y,me)/z,Ge=J.x+Ce*$.x,Ze=re.x+xe*me.x,gt=J.y+Ce*$.y,ye=re.y+xe*me.y,Re=(Ge+Ze)/2,ut=(gt+ye)/2;return{x:Re,y:ut}},U=function(){e(_e,null,[{key:"compare",value:function($,re){var me=_e.comparePoints($.point,re.point);return me!==0?me:($.point!==re.point&&$.link(re),$.isLeft!==re.isLeft?$.isLeft?1:-1:ee.compare($.segment,re.segment))}},{key:"comparePoints",value:function($,re){return $.x<re.x?-1:$.x>re.x?1:$.y<re.y?-1:$.y>re.y?1:0}}]);function _e(J,$){t(this,_e),J.events===void 0?J.events=[this]:J.events.push(this),this.point=J,this.isLeft=$}return e(_e,[{key:"link",value:function($){if($.point===this.point)throw new Error("Tried to link already linked events");for(var re=$.point.events,me=0,z=re.length;me<z;me++){var Y=re[me];this.point.events.push(Y),Y.point=this.point}this.checkForConsuming()}},{key:"checkForConsuming",value:function(){for(var $=this.point.events.length,re=0;re<$;re++){var me=this.point.events[re];if(me.segment.consumedBy===void 0)for(var z=re+1;z<$;z++){var Y=this.point.events[z];Y.consumedBy===void 0&&me.otherSE.point.events===Y.otherSE.point.events&&me.segment.consume(Y.segment)}}}},{key:"getAvailableLinkedEvents",value:function(){for(var $=[],re=0,me=this.point.events.length;re<me;re++){var z=this.point.events[re];z!==this&&!z.segment.ringOut&&z.segment.isInResult()&&$.push(z)}return $}},{key:"getLeftmostComparator",value:function($){var re=this,me=new Map,z=function(xe){var Ce=xe.otherSE;me.set(xe,{sine:he(re.point,$.point,Ce.point),cosine:C(re.point,$.point,Ce.point)})};return function(Y,xe){me.has(Y)||z(Y),me.has(xe)||z(xe);var Ce=me.get(Y),Ge=Ce.sine,Ze=Ce.cosine,gt=me.get(xe),ye=gt.sine,Re=gt.cosine;return Ge>=0&&ye>=0?Ze<Re?1:Ze>Re?-1:0:Ge<0&&ye<0?Ze<Re?-1:Ze>Re?1:0:ye<Ge?-1:ye>Ge?1:0}}}]),_e}(),j=0,ee=function(){e(_e,null,[{key:"compare",value:function($,re){var me=$.leftSE.point.x,z=re.leftSE.point.x,Y=$.rightSE.point.x,xe=re.rightSE.point.x;if(xe<me)return 1;if(Y<z)return-1;var Ce=$.leftSE.point.y,Ge=re.leftSE.point.y,Ze=$.rightSE.point.y,gt=re.rightSE.point.y;if(me<z){if(Ge<Ce&&Ge<Ze)return 1;if(Ge>Ce&&Ge>Ze)return-1;var ye=$.comparePoint(re.leftSE.point);if(ye<0)return 1;if(ye>0)return-1;var Re=re.comparePoint($.rightSE.point);return Re!==0?Re:-1}if(me>z){if(Ce<Ge&&Ce<gt)return-1;if(Ce>Ge&&Ce>gt)return 1;var ut=re.comparePoint($.leftSE.point);if(ut!==0)return ut;var vt=$.comparePoint(re.rightSE.point);return vt<0?1:vt>0?-1:1}if(Ce<Ge)return-1;if(Ce>Ge)return 1;if(Y<xe){var Et=re.comparePoint($.rightSE.point);if(Et!==0)return Et}if(Y>xe){var Ct=$.comparePoint(re.rightSE.point);if(Ct<0)return 1;if(Ct>0)return-1}if(Y!==xe){var Dt=Ze-Ce,cr=Y-me,Xt=gt-Ge,gr=xe-z;if(Dt>cr&&Xt<gr)return 1;if(Dt<cr&&Xt>gr)return-1}return Y>xe?1:Y<xe||Ze<gt?-1:Ze>gt?1:$.id<re.id?-1:$.id>re.id?1:0}}]);function _e(J,$,re,me){t(this,_e),this.id=++j,this.leftSE=J,J.segment=this,J.otherSE=$,this.rightSE=$,$.segment=this,$.otherSE=J,this.rings=re,this.windings=me}return e(_e,[{key:"replaceRightSE",value:function($){this.rightSE=$,this.rightSE.segment=this,this.rightSE.otherSE=this.leftSE,this.leftSE.otherSE=this.rightSE}},{key:"bbox",value:function(){var $=this.leftSE.point.y,re=this.rightSE.point.y;return{ll:{x:this.leftSE.point.x,y:$<re?$:re},ur:{x:this.rightSE.point.x,y:$>re?$:re}}}},{key:"vector",value:function(){return{x:this.rightSE.point.x-this.leftSE.point.x,y:this.rightSE.point.y-this.leftSE.point.y}}},{key:"isAnEndpoint",value:function($){return $.x===this.leftSE.point.x&&$.y===this.leftSE.point.y||$.x===this.rightSE.point.x&&$.y===this.rightSE.point.y}},{key:"comparePoint",value:function($){if(this.isAnEndpoint($))return 0;var re=this.leftSE.point,me=this.rightSE.point,z=this.vector();if(re.x===me.x)return $.x===re.x?0:$.x<re.x?1:-1;var Y=($.y-re.y)/z.y,xe=re.x+Y*z.x;if($.x===xe)return 0;var Ce=($.x-re.x)/z.x,Ge=re.y+Ce*z.y;return $.y===Ge?0:$.y<Ge?-1:1}},{key:"getIntersection",value:function($){var re=this.bbox(),me=$.bbox(),z=E(re,me);if(z===null)return null;var Y=this.leftSE.point,xe=this.rightSE.point,Ce=$.leftSE.point,Ge=$.rightSE.point,Ze=y(re,Ce)&&this.comparePoint(Ce)===0,gt=y(me,Y)&&$.comparePoint(Y)===0,ye=y(re,Ge)&&this.comparePoint(Ge)===0,Re=y(me,xe)&&$.comparePoint(xe)===0;if(gt&&Ze)return Re&&!ye?xe:!Re&&ye?Ge:null;if(gt)return ye&&Y.x===Ge.x&&Y.y===Ge.y?null:Y;if(Ze)return Re&&xe.x===Ce.x&&xe.y===Ce.y?null:Ce;if(Re&&ye)return null;if(Re)return xe;if(ye)return Ge;var ut=G(Y,this.vector(),Ce,$.vector());return ut===null||!y(z,ut)?null:_.round(ut.x,ut.y)}},{key:"split",value:function($){var re=[],me=$.events!==void 0,z=new U($,!0),Y=new U($,!1),xe=this.rightSE;this.replaceRightSE(Y),re.push(Y),re.push(z);var Ce=new _e(z,xe,this.rings.slice(),this.windings.slice());return U.comparePoints(Ce.leftSE.point,Ce.rightSE.point)>0&&Ce.swapEvents(),U.comparePoints(this.leftSE.point,this.rightSE.point)>0&&this.swapEvents(),me&&(z.checkForConsuming(),Y.checkForConsuming()),re}},{key:"swapEvents",value:function(){var $=this.rightSE;this.rightSE=this.leftSE,this.leftSE=$,this.leftSE.isLeft=!0,this.rightSE.isLeft=!1;for(var re=0,me=this.windings.length;re<me;re++)this.windings[re]*=-1}},{key:"consume",value:function($){for(var re=this,me=$;re.consumedBy;)re=re.consumedBy;for(;me.consumedBy;)me=me.consumedBy;var z=_e.compare(re,me);if(z!==0){if(z>0){var Y=re;re=me,me=Y}if(re.prev===me){var xe=re;re=me,me=xe}for(var Ce=0,Ge=me.rings.length;Ce<Ge;Ce++){var Ze=me.rings[Ce],gt=me.windings[Ce],ye=re.rings.indexOf(Ze);ye===-1?(re.rings.push(Ze),re.windings.push(gt)):re.windings[ye]+=gt}me.rings=null,me.windings=null,me.consumedBy=re,me.leftSE.consumedBy=re.leftSE,me.rightSE.consumedBy=re.rightSE}}},{key:"prevInResult",value:function(){return this._prevInResult!==void 0?this._prevInResult:(this.prev?this.prev.isInResult()?this._prevInResult=this.prev:this._prevInResult=this.prev.prevInResult():this._prevInResult=null,this._prevInResult)}},{key:"beforeState",value:function(){if(this._beforeState!==void 0)return this._beforeState;if(!this.prev)this._beforeState={rings:[],windings:[],multiPolys:[]};else{var $=this.prev.consumedBy||this.prev;this._beforeState=$.afterState()}return this._beforeState}},{key:"afterState",value:function(){if(this._afterState!==void 0)return this._afterState;var $=this.beforeState();this._afterState={rings:$.rings.slice(0),windings:$.windings.slice(0),multiPolys:[]};for(var re=this._afterState.rings,me=this._afterState.windings,z=this._afterState.multiPolys,Y=0,xe=this.rings.length;Y<xe;Y++){var Ce=this.rings[Y],Ge=this.windings[Y],Ze=re.indexOf(Ce);Ze===-1?(re.push(Ce),me.push(Ge)):me[Ze]+=Ge}for(var gt=[],ye=[],Re=0,ut=re.length;Re<ut;Re++)if(me[Re]!==0){var vt=re[Re],Et=vt.poly;if(ye.indexOf(Et)===-1)if(vt.isExterior)gt.push(Et);else{ye.indexOf(Et)===-1&&ye.push(Et);var Ct=gt.indexOf(vt.poly);Ct!==-1&>.splice(Ct,1)}}for(var Dt=0,cr=gt.length;Dt<cr;Dt++){var Xt=gt[Dt].multiPoly;z.indexOf(Xt)===-1&&z.push(Xt)}return this._afterState}},{key:"isInResult",value:function(){if(this.consumedBy)return!1;if(this._isInResult!==void 0)return this._isInResult;var $=this.beforeState().multiPolys,re=this.afterState().multiPolys;switch(dt.type){case"union":{var me=$.length===0,z=re.length===0;this._isInResult=me!==z;break}case"intersection":{var Y,xe;$.length<re.length?(Y=$.length,xe=re.length):(Y=re.length,xe=$.length),this._isInResult=xe===dt.numMultiPolys&&Y<xe;break}case"xor":{var Ce=Math.abs($.length-re.length);this._isInResult=Ce%2===1;break}case"difference":{var Ge=function(gt){return gt.length===1&>[0].isSubject};this._isInResult=Ge($)!==Ge(re);break}default:throw new Error("Unrecognized operation type found ".concat(dt.type))}return this._isInResult}}],[{key:"fromRing",value:function($,re,me){var z,Y,xe,Ce=U.comparePoints($,re);if(Ce<0)z=$,Y=re,xe=1;else if(Ce>0)z=re,Y=$,xe=-1;else throw new Error("Tried to create degenerate segment at [".concat($.x,", ").concat($.y,"]"));var Ge=new U(z,!0),Ze=new U(Y,!1);return new _e(Ge,Ze,[me],[xe])}}]),_e}(),ae=function(){function _e(J,$,re){if(t(this,_e),!Array.isArray(J)||J.length===0)throw new Error("Input geometry is not a valid Polygon or MultiPolygon");if(this.poly=$,this.isExterior=re,this.segments=[],typeof J[0][0]!="number"||typeof J[0][1]!="number")throw new Error("Input geometry is not a valid Polygon or MultiPolygon");var me=_.round(J[0][0],J[0][1]);this.bbox={ll:{x:me.x,y:me.y},ur:{x:me.x,y:me.y}};for(var z=me,Y=1,xe=J.length;Y<xe;Y++){if(typeof J[Y][0]!="number"||typeof J[Y][1]!="number")throw new Error("Input geometry is not a valid Polygon or MultiPolygon");var Ce=_.round(J[Y][0],J[Y][1]);Ce.x===z.x&&Ce.y===z.y||(this.segments.push(ee.fromRing(z,Ce,this)),Ce.x<this.bbox.ll.x&&(this.bbox.ll.x=Ce.x),Ce.y<this.bbox.ll.y&&(this.bbox.ll.y=Ce.y),Ce.x>this.bbox.ur.x&&(this.bbox.ur.x=Ce.x),Ce.y>this.bbox.ur.y&&(this.bbox.ur.y=Ce.y),z=Ce)}(me.x!==z.x||me.y!==z.y)&&this.segments.push(ee.fromRing(z,me,this))}return e(_e,[{key:"getSweepEvents",value:function(){for(var $=[],re=0,me=this.segments.length;re<me;re++){var z=this.segments[re];$.push(z.leftSE),$.push(z.rightSE)}return $}}]),_e}(),se=function(){function _e(J,$){if(t(this,_e),!Array.isArray(J))throw new Error("Input geometry is not a valid Polygon or MultiPolygon");this.exteriorRing=new ae(J[0],this,!0),this.bbox={ll:{x:this.exteriorRing.bbox.ll.x,y:this.exteriorRing.bbox.ll.y},ur:{x:this.exteriorRing.bbox.ur.x,y:this.exteriorRing.bbox.ur.y}},this.interiorRings=[];for(var re=1,me=J.length;re<me;re++){var z=new ae(J[re],this,!1);z.bbox.ll.x<this.bbox.ll.x&&(this.bbox.ll.x=z.bbox.ll.x),z.bbox.ll.y<this.bbox.ll.y&&(this.bbox.ll.y=z.bbox.ll.y),z.bbox.ur.x>this.bbox.ur.x&&(this.bbox.ur.x=z.bbox.ur.x),z.bbox.ur.y>this.bbox.ur.y&&(this.bbox.ur.y=z.bbox.ur.y),this.interiorRings.push(z)}this.multiPoly=$}return e(_e,[{key:"getSweepEvents",value:function(){for(var $=this.exteriorRing.getSweepEvents(),re=0,me=this.interiorRings.length;re<me;re++)for(var z=this.interiorRings[re].getSweepEvents(),Y=0,xe=z.length;Y<xe;Y++)$.push(z[Y]);return $}}]),_e}(),ue=function(){function _e(J,$){if(t(this,_e),!Array.isArray(J))throw new Error("Input geometry is not a valid Polygon or MultiPolygon");try{typeof J[0][0][0]=="number"&&(J=[J])}catch(Y){}this.polys=[],this.bbox={ll:{x:Number.POSITIVE_INFINITY,y:Number.POSITIVE_INFINITY},ur:{x:Number.NEGATIVE_INFINITY,y:Number.NEGATIVE_INFINITY}};for(var re=0,me=J.length;re<me;re++){var z=new se(J[re],this);z.bbox.ll.x<this.bbox.ll.x&&(this.bbox.ll.x=z.bbox.ll.x),z.bbox.ll.y<this.bbox.ll.y&&(this.bbox.ll.y=z.bbox.ll.y),z.bbox.ur.x>this.bbox.ur.x&&(this.bbox.ur.x=z.bbox.ur.x),z.bbox.ur.y>this.bbox.ur.y&&(this.bbox.ur.y=z.bbox.ur.y),this.polys.push(z)}this.isSubject=$}return e(_e,[{key:"getSweepEvents",value:function(){for(var $=[],re=0,me=this.polys.length;re<me;re++)for(var z=this.polys[re].getSweepEvents(),Y=0,xe=z.length;Y<xe;Y++)$.push(z[Y]);return $}}]),_e}(),ve=function(){e(_e,null,[{key:"factory",value:function($){for(var re=[],me=0,z=$.length;me<z;me++){var Y=$[me];if(!(!Y.isInResult()||Y.ringOut)){for(var xe=null,Ce=Y.leftSE,Ge=Y.rightSE,Ze=[Ce],gt=Ce.point,ye=[];xe=Ce,Ce=Ge,Ze.push(Ce),Ce.point!==gt;)for(;;){var Re=Ce.getAvailableLinkedEvents();if(Re.length===0){var ut=Ze[0].point,vt=Ze[Ze.length-1].point;throw new Error("Unable to complete output ring starting at [".concat(ut.x,",")+" ".concat(ut.y,"]. Last matching segment found ends at")+" [".concat(vt.x,", ").concat(vt.y,"]."))}if(Re.length===1){Ge=Re[0].otherSE;break}for(var Et=null,Ct=0,Dt=ye.length;Ct<Dt;Ct++)if(ye[Ct].point===Ce.point){Et=Ct;break}if(Et!==null){var cr=ye.splice(Et)[0],Xt=Ze.splice(cr.index);Xt.unshift(Xt[0].otherSE),re.push(new _e(Xt.reverse()));continue}ye.push({index:Ze.length,point:Ce.point});var gr=Ce.getLeftmostComparator(xe);Ge=Re.sort(gr)[0].otherSE;break}re.push(new _e(Ze))}}return re}}]);function _e(J){t(this,_e),this.events=J;for(var $=0,re=J.length;$<re;$++)J[$].segment.ringOut=this;this.poly=null}return e(_e,[{key:"getGeom",value:function(){for(var $=this.events[0].point,re=[$],me=1,z=this.events.length-1;me<z;me++){var Y=this.events[me].point,xe=this.events[me+1].point;X(Y,$,xe)!==0&&(re.push(Y),$=Y)}if(re.length===1)return null;var Ce=re[0],Ge=re[1];X(Ce,$,Ge)===0&&re.shift(),re.push(re[0]);for(var Ze=this.isExteriorRing()?1:-1,gt=this.isExteriorRing()?0:re.length-1,ye=this.isExteriorRing()?re.length:-1,Re=[],ut=gt;ut!=ye;ut+=Ze)Re.push([re[ut].x,re[ut].y]);return Re}},{key:"isExteriorRing",value:function(){if(this._isExteriorRing===void 0){var $=this.enclosingRing();this._isExteriorRing=$?!$.isExteriorRing():!0}return this._isExteriorRing}},{key:"enclosingRing",value:function(){return this._enclosingRing===void 0&&(this._enclosingRing=this._calcEnclosingRing()),this._enclosingRing}},{key:"_calcEnclosingRing",value:function(){for(var $=this.events[0],re=1,me=this.events.length;re<me;re++){var z=this.events[re];U.compare($,z)>0&&($=z)}for(var Y=$.segment.prevInResult(),xe=Y?Y.prevInResult():null;;){if(!Y)return null;if(!xe)return Y.ringOut;if(xe.ringOut!==Y.ringOut)return xe.ringOut.enclosingRing()!==Y.ringOut?Y.ringOut:Y.ringOut.enclosingRing();Y=xe.prevInResult(),xe=Y?Y.prevInResult():null}}}]),_e}(),be=function(){function _e(J){t(this,_e),this.exteriorRing=J,J.poly=this,this.interiorRings=[]}return e(_e,[{key:"addInterior",value:function($){this.interiorRings.push($),$.poly=this}},{key:"getGeom",value:function(){var $=[this.exteriorRing.getGeom()];if($[0]===null)return null;for(var re=0,me=this.interiorRings.length;re<me;re++){var z=this.interiorRings[re].getGeom();z!==null&&$.push(z)}return $}}]),_e}(),de=function(){function _e(J){t(this,_e),this.rings=J,this.polys=this._composePolys(J)}return e(_e,[{key:"getGeom",value:function(){for(var $=[],re=0,me=this.polys.length;re<me;re++){var z=this.polys[re].getGeom();z!==null&&$.push(z)}return $}},{key:"_composePolys",value:function($){for(var re=[],me=0,z=$.length;me<z;me++){var Y=$[me];if(!Y.poly)if(Y.isExteriorRing())re.push(new be(Y));else{var xe=Y.enclosingRing();xe.poly||re.push(new be(xe)),xe.poly.addInterior(Y)}}return re}}]),_e}(),we=function(){function _e(J){var $=arguments.length>1&&arguments[1]!==void 0?arguments[1]:ee.compare;t(this,_e),this.queue=J,this.tree=new u($),this.segments=[]}return e(_e,[{key:"process",value:function($){var re=$.segment,me=[];if($.consumedBy)return $.isLeft?this.queue.remove($.otherSE):this.tree.remove(re),me;var z=$.isLeft?this.tree.insert(re):this.tree.find(re);if(!z)throw new Error("Unable to find segment #".concat(re.id," ")+"[".concat(re.leftSE.point.x,", ").concat(re.leftSE.point.y,"] -> ")+"[".concat(re.rightSE.point.x,", ").concat(re.rightSE.point.y,"] ")+"in SweepLine tree. Please submit a bug report.");for(var Y=z,xe=z,Ce=void 0,Ge=void 0;Ce===void 0;)Y=this.tree.prev(Y),Y===null?Ce=null:Y.key.consumedBy===void 0&&(Ce=Y.key);for(;Ge===void 0;)xe=this.tree.next(xe),xe===null?Ge=null:xe.key.consumedBy===void 0&&(Ge=xe.key);if($.isLeft){var Ze=null;if(Ce){var gt=Ce.getIntersection(re);if(gt!==null&&(re.isAnEndpoint(gt)||(Ze=gt),!Ce.isAnEndpoint(gt)))for(var ye=this._splitSafely(Ce,gt),Re=0,ut=ye.length;Re<ut;Re++)me.push(ye[Re])}var vt=null;if(Ge){var Et=Ge.getIntersection(re);if(Et!==null&&(re.isAnEndpoint(Et)||(vt=Et),!Ge.isAnEndpoint(Et)))for(var Ct=this._splitSafely(Ge,Et),Dt=0,cr=Ct.length;Dt<cr;Dt++)me.push(Ct[Dt])}if(Ze!==null||vt!==null){var Xt=null;if(Ze===null)Xt=vt;else if(vt===null)Xt=Ze;else{var gr=U.comparePoints(Ze,vt);Xt=gr<=0?Ze:vt}this.queue.remove(re.rightSE),me.push(re.rightSE);for(var Ae=re.split(Xt),Xe=0,lt=Ae.length;Xe<lt;Xe++)me.push(Ae[Xe])}me.length>0?(this.tree.remove(re),me.push($)):(this.segments.push(re),re.prev=Ce)}else{if(Ce&&Ge){var _t=Ce.getIntersection(Ge);if(_t!==null){if(!Ce.isAnEndpoint(_t))for(var Vt=this._splitSafely(Ce,_t),Rr=0,Ki=Vt.length;Rr<Ki;Rr++)me.push(Vt[Rr]);if(!Ge.isAnEndpoint(_t))for(var Pi=this._splitSafely(Ge,_t),Fn=0,Kt=Pi.length;Fn<Kt;Fn++)me.push(Pi[Fn])}}this.tree.remove(re)}return me}},{key:"_splitSafely",value:function($,re){this.tree.remove($);var me=$.rightSE;this.queue.remove(me);var z=$.split(re);return z.push(me),$.consumedBy===void 0&&this.tree.insert($),z}}]),_e}(),Fe=typeof process!="undefined"&&process.env.POLYGON_CLIPPING_MAX_QUEUE_SIZE||1e6,je=typeof process!="undefined"&&process.env.POLYGON_CLIPPING_MAX_SWEEPLINE_SEGMENTS||1e6,Oe=function(){function _e(){t(this,_e)}return e(_e,[{key:"run",value:function($,re,me){dt.type=$,_.reset();for(var z=[new ue(re,!0)],Y=0,xe=me.length;Y<xe;Y++)z.push(new ue(me[Y],!1));if(dt.numMultiPolys=z.length,dt.type==="difference")for(var Ce=z[0],Ge=1;Ge<z.length;)E(z[Ge].bbox,Ce.bbox)!==null?Ge++:z.splice(Ge,1);if(dt.type==="intersection"){for(var Ze=0,gt=z.length;Ze<gt;Ze++)for(var ye=z[Ze],Re=Ze+1,ut=z.length;Re<ut;Re++)if(E(ye.bbox,z[Re].bbox)===null)return[]}for(var vt=new u(U.compare),Et=0,Ct=z.length;Et<Ct;Et++)for(var Dt=z[Et].getSweepEvents(),cr=0,Xt=Dt.length;cr<Xt;cr++)if(vt.insert(Dt[cr]),vt.size>Fe)throw new Error("Infinite loop when putting segment endpoints in a priority queue (queue size too big). Please file a bug report.");for(var gr=new we(vt),Ae=vt.size,Xe=vt.pop();Xe;){var lt=Xe.key;if(vt.size===Ae){var _t=lt.segment;throw new Error("Unable to pop() ".concat(lt.isLeft?"left":"right"," SweepEvent ")+"[".concat(lt.point.x,", ").concat(lt.point.y,"] from segment #").concat(_t.id," ")+"[".concat(_t.leftSE.point.x,", ").concat(_t.leftSE.point.y,"] -> ")+"[".concat(_t.rightSE.point.x,", ").concat(_t.rightSE.point.y,"] from queue. ")+"Please file a bug report.")}if(vt.size>Fe)throw new Error("Infinite loop when passing sweep line over endpoints (queue size too big). Please file a bug report.");if(gr.segments.length>je)throw new Error("Infinite loop when passing sweep line over endpoints (too many sweep line segments). Please file a bug report.");for(var Vt=gr.process(lt),Rr=0,Ki=Vt.length;Rr<Ki;Rr++){var Pi=Vt[Rr];Pi.consumedBy===void 0&&vt.insert(Pi)}Ae=vt.size,Xe=vt.pop()}_.reset();var Fn=ve.factory(gr.segments),Kt=new de(Fn);return Kt.getGeom()}}]),_e}(),dt=new Oe,Be=function(J){for(var $=arguments.length,re=new Array($>1?$-1:0),me=1;me<$;me++)re[me-1]=arguments[me];return dt.run("union",J,re)},ke=function(J){for(var $=arguments.length,re=new Array($>1?$-1:0),me=1;me<$;me++)re[me-1]=arguments[me];return dt.run("intersection",J,re)},nt=function(J){for(var $=arguments.length,re=new Array($>1?$-1:0),me=1;me<$;me++)re[me-1]=arguments[me];return dt.run("xor",J,re)},bt=function(J){for(var $=arguments.length,re=new Array($>1?$-1:0),me=1;me<$;me++)re[me-1]=arguments[me];return dt.run("difference",J,re)},mt={union:Be,intersection:ke,xor:nt,difference:bt};return mt})});var AC=V((Oqt,bpe)=>{"use strict";bpe.exports=jvt;var Epe=+(Math.pow(2,27)+1);function jvt(t,r,e){var i=t*r,n=Epe*t,s=n-t,a=n-s,o=t-a,l=Epe*r,c=l-r,u=l-c,h=r-u,p=i-a*u,d=p-o*u,f=d-a*h,m=o*h-f;return e?(e[0]=m,e[1]=i,e):[m,i]}});var xB=V((Pqt,xpe)=>{"use strict";xpe.exports=qvt;function Wvt(t,r){var e=t+r,i=e-t,n=e-i,s=r-i,a=t-n,o=a+s;return o?[o,e]:[e]}function qvt(t,r){var e=t.length|0,i=r.length|0;if(e===1&&i===1)return Wvt(t[0],r[0]);var n=e+i,s=new Array(n),a=0,o=0,l=0,c=Math.abs,u=t[o],h=c(u),p=r[l],d=c(p),f,m;h<d?(m=u,o+=1,o<e&&(u=t[o],h=c(u))):(m=p,l+=1,l<i&&(p=r[l],d=c(p))),o<e&&h<d||l>=i?(f=u,o+=1,o<e&&(u=t[o],h=c(u))):(f=p,l+=1,l<i&&(p=r[l],d=c(p)));for(var g=f+m,y=g-f,E=m-y,b=E,x=g,S,D,P,_,w;o<e&&l<i;)h<d?(f=u,o+=1,o<e&&(u=t[o],h=c(u))):(f=p,l+=1,l<i&&(p=r[l],d=c(p))),m=b,g=f+m,y=g-f,E=m-y,E&&(s[a++]=E),S=x+g,D=S-x,P=S-D,_=g-D,w=x-P,b=w+_,x=S;for(;o<e;)f=u,m=b,g=f+m,y=g-f,E=m-y,E&&(s[a++]=E),S=x+g,D=S-x,P=S-D,_=g-D,w=x-P,b=w+_,x=S,o+=1,o<e&&(u=t[o]);for(;l<i;)f=p,m=b,g=f+m,y=g-f,E=m-y,E&&(s[a++]=E),S=x+g,D=S-x,P=S-D,_=g-D,w=x-P,b=w+_,x=S,l+=1,l<i&&(p=r[l]);return b&&(s[a++]=b),x&&(s[a++]=x),a||(s[a++]=0),s.length=a,s}});var Spe=V((Nqt,Ipe)=>{"use strict";Ipe.exports=Yvt;function Yvt(t,r,e){var i=t+r,n=i-t,s=i-n,a=r-n,o=t-s;return e?(e[0]=o+a,e[1]=i,e):[o+a,i]}});var SB=V((Lqt,_pe)=>{"use strict";var IB=AC(),Xvt=Spe();_pe.exports=$vt;function $vt(t,r){var e=t.length;if(e===1){var i=IB(t[0],r);return i[0]?i:[i[1]]}var n=new Array(2*e),s=[.1,.1],a=[.1,.1],o=0;IB(t[0],r,s),s[0]&&(n[o++]=s[0]);for(var l=1;l<e;++l){IB(t[l],r,a);var c=s[1];Xvt(c,a[0],s),s[0]&&(n[o++]=s[0]);var u=a[1],h=s[1],p=u+h,d=p-u,f=h-d;s[1]=p,f&&(n[o++]=f)}return s[1]&&(n[o++]=s[1]),o===0&&(n[o++]=0),n.length=o,n}});var Rpe=V((Fqt,wpe)=>{"use strict";wpe.exports=Zvt;function Zvt(t){for(var r=t.length,e=t[t.length-1],i=r,n=r-2;n>=0;--n){var s=e,a=t[n];e=s+a;var o=e-s,l=a-o;l&&(t[--i]=e,e=l)}for(var c=0,n=i;n<r;++n){var s=t[n],a=e;e=s+a;var o=e-s,l=a-o;l&&(t[c++]=l)}return t[c++]=e,t.length=c,t}});var Dpe=V((Hqt,Mpe)=>{"use strict";Mpe.exports=Jvt;function Kvt(t,r){var e=t+r,i=e-t,n=e-i,s=r-i,a=t-n,o=a+s;return o?[o,e]:[e]}function Jvt(t,r){var e=t.length|0,i=r.length|0;if(e===1&&i===1)return Kvt(t[0],-r[0]);var n=e+i,s=new Array(n),a=0,o=0,l=0,c=Math.abs,u=t[o],h=c(u),p=-r[l],d=c(p),f,m;h<d?(m=u,o+=1,o<e&&(u=t[o],h=c(u))):(m=p,l+=1,l<i&&(p=-r[l],d=c(p))),o<e&&h<d||l>=i?(f=u,o+=1,o<e&&(u=t[o],h=c(u))):(f=p,l+=1,l<i&&(p=-r[l],d=c(p)));for(var g=f+m,y=g-f,E=m-y,b=E,x=g,S,D,P,_,w;o<e&&l<i;)h<d?(f=u,o+=1,o<e&&(u=t[o],h=c(u))):(f=p,l+=1,l<i&&(p=-r[l],d=c(p))),m=b,g=f+m,y=g-f,E=m-y,E&&(s[a++]=E),S=x+g,D=S-x,P=S-D,_=g-D,w=x-P,b=w+_,x=S;for(;o<e;)f=u,m=b,g=f+m,y=g-f,E=m-y,E&&(s[a++]=E),S=x+g,D=S-x,P=S-D,_=g-D,w=x-P,b=w+_,x=S,o+=1,o<e&&(u=t[o]);for(;l<i;)f=p,m=b,g=f+m,y=g-f,E=m-y,E&&(s[a++]=E),S=x+g,D=S-x,P=S-D,_=g-D,w=x-P,b=w+_,x=S,l+=1,l<i&&(p=-r[l]);return b&&(s[a++]=b),x&&(s[a++]=x),a||(s[a++]=0),s.length=a,s}});var Ape=V((Uqt,_B)=>{"use strict";var Qvt=AC(),eyt=xB(),tyt=SB(),ryt=Dpe(),Cpe=5,OC=11102230246251565e-32,iyt=(3+16*OC)*OC,nyt=(7+56*OC)*OC;function syt(t,r,e,i){return function(s,a,o){var l=t(t(r(a[1],o[0]),r(-o[1],a[0])),t(r(s[1],a[0]),r(-a[1],s[0]))),c=t(r(s[1],o[0]),r(-o[1],s[0])),u=i(l,c);return u[u.length-1]}}function ayt(t,r,e,i){return function(s,a,o,l){var c=t(t(e(t(r(o[1],l[0]),r(-l[1],o[0])),a[2]),t(e(t(r(a[1],l[0]),r(-l[1],a[0])),-o[2]),e(t(r(a[1],o[0]),r(-o[1],a[0])),l[2]))),t(e(t(r(a[1],l[0]),r(-l[1],a[0])),s[2]),t(e(t(r(s[1],l[0]),r(-l[1],s[0])),-a[2]),e(t(r(s[1],a[0]),r(-a[1],s[0])),l[2])))),u=t(t(e(t(r(o[1],l[0]),r(-l[1],o[0])),s[2]),t(e(t(r(s[1],l[0]),r(-l[1],s[0])),-o[2]),e(t(r(s[1],o[0]),r(-o[1],s[0])),l[2]))),t(e(t(r(a[1],o[0]),r(-o[1],a[0])),s[2]),t(e(t(r(s[1],o[0]),r(-o[1],s[0])),-a[2]),e(t(r(s[1],a[0]),r(-a[1],s[0])),o[2])))),h=i(c,u);return h[h.length-1]}}function oyt(t,r,e,i){return function(s,a,o,l,c){var u=t(t(t(e(t(e(t(r(l[1],c[0]),r(-c[1],l[0])),o[2]),t(e(t(r(o[1],c[0]),r(-c[1],o[0])),-l[2]),e(t(r(o[1],l[0]),r(-l[1],o[0])),c[2]))),a[3]),t(e(t(e(t(r(l[1],c[0]),r(-c[1],l[0])),a[2]),t(e(t(r(a[1],c[0]),r(-c[1],a[0])),-l[2]),e(t(r(a[1],l[0]),r(-l[1],a[0])),c[2]))),-o[3]),e(t(e(t(r(o[1],c[0]),r(-c[1],o[0])),a[2]),t(e(t(r(a[1],c[0]),r(-c[1],a[0])),-o[2]),e(t(r(a[1],o[0]),r(-o[1],a[0])),c[2]))),l[3]))),t(e(t(e(t(r(o[1],l[0]),r(-l[1],o[0])),a[2]),t(e(t(r(a[1],l[0]),r(-l[1],a[0])),-o[2]),e(t(r(a[1],o[0]),r(-o[1],a[0])),l[2]))),-c[3]),t(e(t(e(t(r(l[1],c[0]),r(-c[1],l[0])),a[2]),t(e(t(r(a[1],c[0]),r(-c[1],a[0])),-l[2]),e(t(r(a[1],l[0]),r(-l[1],a[0])),c[2]))),s[3]),e(t(e(t(r(l[1],c[0]),r(-c[1],l[0])),s[2]),t(e(t(r(s[1],c[0]),r(-c[1],s[0])),-l[2]),e(t(r(s[1],l[0]),r(-l[1],s[0])),c[2]))),-a[3])))),t(t(e(t(e(t(r(a[1],c[0]),r(-c[1],a[0])),s[2]),t(e(t(r(s[1],c[0]),r(-c[1],s[0])),-a[2]),e(t(r(s[1],a[0]),r(-a[1],s[0])),c[2]))),l[3]),t(e(t(e(t(r(a[1],l[0]),r(-l[1],a[0])),s[2]),t(e(t(r(s[1],l[0]),r(-l[1],s[0])),-a[2]),e(t(r(s[1],a[0]),r(-a[1],s[0])),l[2]))),-c[3]),e(t(e(t(r(o[1],l[0]),r(-l[1],o[0])),a[2]),t(e(t(r(a[1],l[0]),r(-l[1],a[0])),-o[2]),e(t(r(a[1],o[0]),r(-o[1],a[0])),l[2]))),s[3]))),t(e(t(e(t(r(o[1],l[0]),r(-l[1],o[0])),s[2]),t(e(t(r(s[1],l[0]),r(-l[1],s[0])),-o[2]),e(t(r(s[1],o[0]),r(-o[1],s[0])),l[2]))),-a[3]),t(e(t(e(t(r(a[1],l[0]),r(-l[1],a[0])),s[2]),t(e(t(r(s[1],l[0]),r(-l[1],s[0])),-a[2]),e(t(r(s[1],a[0]),r(-a[1],s[0])),l[2]))),o[3]),e(t(e(t(r(a[1],o[0]),r(-o[1],a[0])),s[2]),t(e(t(r(s[1],o[0]),r(-o[1],s[0])),-a[2]),e(t(r(s[1],a[0]),r(-a[1],s[0])),o[2]))),-l[3]))))),h=t(t(t(e(t(e(t(r(l[1],c[0]),r(-c[1],l[0])),o[2]),t(e(t(r(o[1],c[0]),r(-c[1],o[0])),-l[2]),e(t(r(o[1],l[0]),r(-l[1],o[0])),c[2]))),s[3]),e(t(e(t(r(l[1],c[0]),r(-c[1],l[0])),s[2]),t(e(t(r(s[1],c[0]),r(-c[1],s[0])),-l[2]),e(t(r(s[1],l[0]),r(-l[1],s[0])),c[2]))),-o[3])),t(e(t(e(t(r(o[1],c[0]),r(-c[1],o[0])),s[2]),t(e(t(r(s[1],c[0]),r(-c[1],s[0])),-o[2]),e(t(r(s[1],o[0]),r(-o[1],s[0])),c[2]))),l[3]),e(t(e(t(r(o[1],l[0]),r(-l[1],o[0])),s[2]),t(e(t(r(s[1],l[0]),r(-l[1],s[0])),-o[2]),e(t(r(s[1],o[0]),r(-o[1],s[0])),l[2]))),-c[3]))),t(t(e(t(e(t(r(o[1],c[0]),r(-c[1],o[0])),a[2]),t(e(t(r(a[1],c[0]),r(-c[1],a[0])),-o[2]),e(t(r(a[1],o[0]),r(-o[1],a[0])),c[2]))),s[3]),e(t(e(t(r(o[1],c[0]),r(-c[1],o[0])),s[2]),t(e(t(r(s[1],c[0]),r(-c[1],s[0])),-o[2]),e(t(r(s[1],o[0]),r(-o[1],s[0])),c[2]))),-a[3])),t(e(t(e(t(r(a[1],c[0]),r(-c[1],a[0])),s[2]),t(e(t(r(s[1],c[0]),r(-c[1],s[0])),-a[2]),e(t(r(s[1],a[0]),r(-a[1],s[0])),c[2]))),o[3]),e(t(e(t(r(a[1],o[0]),r(-o[1],a[0])),s[2]),t(e(t(r(s[1],o[0]),r(-o[1],s[0])),-a[2]),e(t(r(s[1],a[0]),r(-a[1],s[0])),o[2]))),-c[3])))),p=i(u,h);return p[p.length-1]}}function PC(t){var r=t===3?syt:t===4?ayt:oyt;return r(eyt,Qvt,tyt,ryt)}var lyt=PC(3),cyt=PC(4),Wg=[function(){return 0},function(){return 0},function(r,e){return e[0]-r[0]},function(r,e,i){var n=(r[1]-i[1])*(e[0]-i[0]),s=(r[0]-i[0])*(e[1]-i[1]),a=n-s,o;if(n>0){if(s<=0)return a;o=n+s}else if(n<0){if(s>=0)return a;o=-(n+s)}else return a;var l=iyt*o;return a>=l||a<=-l?a:lyt(r,e,i)},function(r,e,i,n){var s=r[0]-n[0],a=e[0]-n[0],o=i[0]-n[0],l=r[1]-n[1],c=e[1]-n[1],u=i[1]-n[1],h=r[2]-n[2],p=e[2]-n[2],d=i[2]-n[2],f=a*u,m=o*c,g=o*l,y=s*u,E=s*c,b=a*l,x=h*(f-m)+p*(g-y)+d*(E-b),S=(Math.abs(f)+Math.abs(m))*Math.abs(h)+(Math.abs(g)+Math.abs(y))*Math.abs(p)+(Math.abs(E)+Math.abs(b))*Math.abs(d),D=nyt*S;return x>D||-x>D?x:cyt(r,e,i,n)}];function uyt(t){var r=Wg[t.length];return r||(r=Wg[t.length]=PC(t.length)),r.apply(void 0,t)}function hyt(t,r,e,i,n,s,a){return function(l,c,u,h,p){switch(arguments.length){case 0:case 1:return 0;case 2:return i(l,c);case 3:return n(l,c,u);case 4:return s(l,c,u,h);case 5:return a(l,c,u,h,p)}for(var d=new Array(arguments.length),f=0;f<arguments.length;++f)d[f]=arguments[f];return t(d)}}function pyt(){for(;Wg.length<=Cpe;)Wg.push(PC(Wg.length));_B.exports=hyt.apply(void 0,[uyt].concat(Wg));for(var t=0;t<=Cpe;++t)_B.exports[t]=Wg[t]}pyt()});var Ppe=V((Bqt,Ope)=>{"use strict";Ope.exports=fyt;var NC=Ape()[3];function dyt(t,r,e,i){for(var n=0;n<2;++n){var s=t[n],a=r[n],o=Math.min(s,a),l=Math.max(s,a),c=e[n],u=i[n],h=Math.min(c,u),p=Math.max(c,u);if(p<o||l<h)return!1}return!0}function fyt(t,r,e,i){var n=NC(t,e,i),s=NC(r,e,i);if(n>0&&s>0||n<0&&s<0)return!1;var a=NC(e,t,r),o=NC(i,t,r);return a>0&&o>0||a<0&&o<0?!1:n===0&&s===0&&a===0&&o===0?dyt(t,r,e,i):!0}});var Lpe=V((kqt,Npe)=>{"use strict";Npe.exports=gyt;var LC=AC(),Yo=xB(),Hl=SB(),wB=Rpe(),myt=Ppe();function gyt(t,r,e,i){if(!myt(t,r,e,i))return[[0],[0],[0]];var n=Yo([e[1]],[-i[1]]),s=Yo([-e[0]],[i[0]]),a=Yo(Yo(Hl(s,t[1]),Hl(s,-r[1])),Yo(Hl(n,t[0]),Hl(n,-r[0]))),o=Yo(LC(-t[0],r[1]),LC(t[1],r[0])),l=Yo(LC(-e[0],i[1]),LC(e[1],i[0])),c=Yo(Yo(Hl(l,t[0]),Hl(l,-r[0])),Yo(Hl(o,-e[0]),Hl(o,i[0]))),u=Yo(Yo(Hl(l,t[1]),Hl(l,-r[1])),Yo(Hl(o,-e[1]),Hl(o,i[1])));return[wB(c),wB(u),wB(a)]}});var Hpe=V((Gqt,Fpe)=>{Fpe.exports=vyt;function vyt(t){var r=0,e=t.length;switch(e){case 1:r=t[0];break;case 2:r=t[0]+t[1];break;case 3:r=t[0]+t[1]+t[2];break;case 4:r=t[0]+t[1]+t[2]+t[3];break;default:for(var i=0;i<e;i++)r+=t[i]}return r}});var Bpe=V((Vqt,Upe)=>{var yyt=Lpe(),RB=Hpe();Upe.exports=Tyt;function Rf(t,r){return t[0]===r[0]&&t[1]===r[1]}var Lx=[0,0],Fx=[0,0],Hx=[0,0],Ux=[0,0];function FC(t,r){Array.isArray(t)?(r[0]=t[0],r[1]=t[1]):(r[0]=t.x,r[1]=t.y)}function Tyt(t,r){for(var e={},i=t.length,n=[],s=0;s<i;s++){var a=t[s],o=t[(s+1)%i];FC(a,Hx),FC(o,Ux);for(var l=0;l<i;l++)if(s!==l){var c=t[l],u=t[(l+1)%i];if(FC(c,Lx),FC(u,Fx),!(Rf(Lx,Hx)||Rf(Lx,Ux)||Rf(Fx,Hx)||Rf(Fx,Ux))){var h=yyt(Hx,Ux,Lx,Fx),p=h[2];if(!(p.length===1&&!p[0])){var d=RB(h[2]);if(h[0]=RB(h[0])/d,h[1]=RB(h[1])/d,h.pop(),!(Rf(h,Hx)||Rf(h,Ux)||Rf(h,Lx)||Rf(h,Fx))){var f=h+"",m=!e[f];m&&(e[f]=!0);var g=m;r&&(g=r(h,s,a,o,l,c,u,m)),g&&n.push(h)}}}}}return n}});var qpe=V((Qqt,kC)=>{(function(){"use strict";function t(a,o){var l=a.x-o.x,c=a.y-o.y;return l*l+c*c}function r(a,o,l){var c=o.x,u=o.y,h=l.x-c,p=l.y-u;if(h!==0||p!==0){var d=((a.x-c)*h+(a.y-u)*p)/(h*h+p*p);d>1?(c=l.x,u=l.y):d>0&&(c+=h*d,u+=p*d)}return h=a.x-c,p=a.y-u,h*h+p*p}function e(a,o){for(var l=a[0],c=[l],u,h=1,p=a.length;h<p;h++)u=a[h],t(u,l)>o&&(c.push(u),l=u);return l!==u&&c.push(u),c}function i(a,o,l,c,u){for(var h=c,p,d=o+1;d<l;d++){var f=r(a[d],a[o],a[l]);f>h&&(p=d,h=f)}h>c&&(p-o>1&&i(a,o,p,c,u),u.push(a[p]),l-p>1&&i(a,p,l,c,u))}function n(a,o){var l=a.length-1,c=[a[0]];return i(a,0,l,o,c),c.push(a[l]),c}function s(a,o,l){if(a.length<=2)return a;var c=o!==void 0?o*o:1;return a=l?a:e(a,c),a=n(a,c),a}typeof define=="function"&&define.amd?define(function(){return s}):typeof kC!="undefined"?(kC.exports=s,kC.exports.default=s):typeof self!="undefined"?self.simplify=s:window.simplify=s})()});var ede=V((jB,WB)=>{(function(t,r){typeof jB=="object"&&typeof WB!="undefined"?WB.exports=r():typeof define=="function"&&define.amd?define(r):(t=t||self,t.JSBI=r())})(jB,function(){"use strict";var t=Math.imul,r=Math.clz32;function e(_){return e=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(w){return typeof w}:function(w){return w&&typeof Symbol=="function"&&w.constructor===Symbol&&w!==Symbol.prototype?"symbol":typeof w},e(_)}function i(_,w){if(!(_ instanceof w))throw new TypeError("Cannot call a class as a function")}function n(_,w){for(var F,X=0;X<w.length;X++)F=w[X],F.enumerable=F.enumerable||!1,F.configurable=!0,"value"in F&&(F.writable=!0),Object.defineProperty(_,F.key,F)}function s(_,w,F){return w&&n(_.prototype,w),F&&n(_,F),Object.defineProperty(_,"prototype",{writable:!1}),_}function a(_,w){if(typeof w!="function"&&w!==null)throw new TypeError("Super expression must either be null or a function");_.prototype=Object.create(w&&w.prototype,{constructor:{value:_,writable:!0,configurable:!0}}),Object.defineProperty(_,"prototype",{writable:!1}),w&&l(_,w)}function o(_){return o=Object.setPrototypeOf?Object.getPrototypeOf:function(w){return w.__proto__||Object.getPrototypeOf(w)},o(_)}function l(_,w){return l=Object.setPrototypeOf||function(F,X){return F.__proto__=X,F},l(_,w)}function c(){if(typeof Reflect=="undefined"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(_){return!1}}function u(){return u=c()?Reflect.construct:function(_,w,F){var X=[null];X.push.apply(X,w);var H=Function.bind.apply(_,X),he=new H;return F&&l(he,F.prototype),he},u.apply(null,arguments)}function h(_){return Function.toString.call(_).indexOf("[native code]")!==-1}function p(_){var w=typeof Map=="function"?new Map:void 0;return p=function(F){function X(){return u(F,arguments,o(this).constructor)}if(F===null||!h(F))return F;if(typeof F!="function")throw new TypeError("Super expression must either be null or a function");if(typeof w!="undefined"){if(w.has(F))return w.get(F);w.set(F,X)}return X.prototype=Object.create(F.prototype,{constructor:{value:X,enumerable:!1,writable:!0,configurable:!0}}),l(X,F)},p(_)}function d(_){if(_===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return _}function f(_,w){if(w&&(typeof w=="object"||typeof w=="function"))return w;if(w!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return d(_)}function m(_){var w=c();return function(){var F,X=o(_);if(w){var H=o(this).constructor;F=Reflect.construct(X,arguments,H)}else F=X.apply(this,arguments);return f(this,F)}}function g(_,w){return y(_)||E(_,w)||b(_,w)||S()}function y(_){if(Array.isArray(_))return _}function E(_,w){var F=_==null?null:typeof Symbol!="undefined"&&_[Symbol.iterator]||_["@@iterator"];if(F!=null){var X,H,he=[],C=!0,N=!1;try{for(F=F.call(_);!(C=(X=F.next()).done)&&(he.push(X.value),!(w&&he.length===w));C=!0);}catch(k){N=!0,H=k}finally{try{C||F.return==null||F.return()}finally{if(N)throw H}}return he}}function b(_,w){if(_){if(typeof _=="string")return x(_,w);var F=Object.prototype.toString.call(_).slice(8,-1);return F==="Object"&&_.constructor&&(F=_.constructor.name),F==="Map"||F==="Set"?Array.from(_):F==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(F)?x(_,w):void 0}}function x(_,w){(w==null||w>_.length)&&(w=_.length);for(var F=0,X=Array(w);F<w;F++)X[F]=_[F];return X}function S(){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 D(_,w){var F=typeof Symbol!="undefined"&&_[Symbol.iterator]||_["@@iterator"];if(!F){if(Array.isArray(_)||(F=b(_))||w&&_&&typeof _.length=="number"){F&&(_=F);var X=0,H=function(){};return{s:H,n:function(){return X>=_.length?{done:!0}:{done:!1,value:_[X++]}},e:function(k){throw k},f:H}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
|
||
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var he,C=!0,N=!1;return{s:function(){F=F.call(_)},n:function(){var k=F.next();return C=k.done,k},e:function(k){N=!0,he=k},f:function(){try{C||F.return==null||F.return()}finally{if(N)throw he}}}}var P=function(_){var w=Math.abs,F=Math.max,X=Math.floor;function H(C,N){var k;if(i(this,H),k=he.call(this,C),k.sign=N,Object.setPrototypeOf(d(k),H.prototype),C>H.__kMaxLength)throw new RangeError("Maximum BigInt size exceeded");return k}a(H,_);var he=m(H);return s(H,[{key:"toDebugString",value:function(){var C,N=["BigInt["],k=D(this);try{for(k.s();!(C=k.n()).done;){var G=C.value;N.push((G&&(G>>>0).toString(16))+", ")}}catch(U){k.e(U)}finally{k.f()}return N.push("]"),N.join("")}},{key:"toString",value:function(){var C=0<arguments.length&&arguments[0]!==void 0?arguments[0]:10;if(2>C||36<C)throw new RangeError("toString() radix argument must be between 2 and 36");return this.length===0?"0":C&C-1?H.__toStringGeneric(this,C,!1):H.__toStringBasePowerOfTwo(this,C)}},{key:"valueOf",value:function(){throw new Error("Convert JSBI instances to native numbers using `toNumber`.")}},{key:"__copy",value:function(){for(var C=new H(this.length,this.sign),N=0;N<this.length;N++)C[N]=this[N];return C}},{key:"__trim",value:function(){for(var C=this.length,N=this[C-1];N===0;)C--,N=this[C-1],this.pop();return C===0&&(this.sign=!1),this}},{key:"__initializeDigits",value:function(){for(var C=0;C<this.length;C++)this[C]=0}},{key:"__clzmsd",value:function(){return H.__clz30(this.__digit(this.length-1))}},{key:"__inplaceMultiplyAdd",value:function(C,N,k){k>this.length&&(k=this.length);for(var G=32767&C,U=C>>>15,j=0,ee=N,ae=0;ae<k;ae++){var se=this.__digit(ae),ue=32767&se,ve=se>>>15,be=H.__imul(ue,G),de=H.__imul(ue,U),we=H.__imul(ve,G),Fe=H.__imul(ve,U),je=ee+be+j;j=je>>>30,je&=1073741823,je+=((32767&de)<<15)+((32767&we)<<15),j+=je>>>30,ee=Fe+(de>>>15)+(we>>>15),this.__setDigit(ae,1073741823&je)}if(j!==0||ee!==0)throw new Error("implementation bug")}},{key:"__inplaceAdd",value:function(C,N,k){for(var G,U=0,j=0;j<k;j++)G=this.__halfDigit(N+j)+C.__halfDigit(j)+U,U=G>>>15,this.__setHalfDigit(N+j,32767&G);return U}},{key:"__inplaceSub",value:function(C,N,k){var G=0;if(1&N){N>>=1;for(var U=this.__digit(N),j=32767&U,ee=0;ee<k-1>>>1;ee++){var ae=C.__digit(ee),se=(U>>>15)-(32767&ae)-G;G=1&se>>>15,this.__setDigit(N+ee,(32767&se)<<15|32767&j),U=this.__digit(N+ee+1),j=(32767&U)-(ae>>>15)-G,G=1&j>>>15}var ue=C.__digit(ee),ve=(U>>>15)-(32767&ue)-G;if(G=1&ve>>>15,this.__setDigit(N+ee,(32767&ve)<<15|32767&j),N+ee+1>=this.length)throw new RangeError("out of bounds");!(1&k)&&(U=this.__digit(N+ee+1),j=(32767&U)-(ue>>>15)-G,G=1&j>>>15,this.__setDigit(N+C.length,1073709056&U|32767&j))}else{N>>=1;for(var be=0;be<C.length-1;be++){var de=this.__digit(N+be),we=C.__digit(be),Fe=(32767&de)-(32767&we)-G;G=1&Fe>>>15;var je=(de>>>15)-(we>>>15)-G;G=1&je>>>15,this.__setDigit(N+be,(32767&je)<<15|32767&Fe)}var Oe=this.__digit(N+be),dt=C.__digit(be),Be=(32767&Oe)-(32767&dt)-G;G=1&Be>>>15;var ke=0;!(1&k)&&(ke=(Oe>>>15)-(dt>>>15)-G,G=1&ke>>>15),this.__setDigit(N+be,(32767&ke)<<15|32767&Be)}return G}},{key:"__inplaceRightShift",value:function(C){if(C!==0){for(var N,k=this.__digit(0)>>>C,G=this.length-1,U=0;U<G;U++)N=this.__digit(U+1),this.__setDigit(U,1073741823&N<<30-C|k),k=N>>>C;this.__setDigit(G,k)}}},{key:"__digit",value:function(C){return this[C]}},{key:"__unsignedDigit",value:function(C){return this[C]>>>0}},{key:"__setDigit",value:function(C,N){this[C]=0|N}},{key:"__setDigitGrow",value:function(C,N){this[C]=0|N}},{key:"__halfDigitLength",value:function(){var C=this.length;return 32767>=this.__unsignedDigit(C-1)?2*C-1:2*C}},{key:"__halfDigit",value:function(C){return 32767&this[C>>>1]>>>15*(1&C)}},{key:"__setHalfDigit",value:function(C,N){var k=C>>>1,G=this.__digit(k),U=1&C?32767&G|N<<15:1073709056&G|32767&N;this.__setDigit(k,U)}}],[{key:"BigInt",value:function(C){var N=Number.isFinite;if(typeof C=="number"){if(C===0)return H.__zero();if(H.__isOneDigitInt(C))return 0>C?H.__oneDigit(-C,!0):H.__oneDigit(C,!1);if(!N(C)||X(C)!==C)throw new RangeError("The number "+C+" cannot be converted to BigInt because it is not an integer");return H.__fromDouble(C)}if(typeof C=="string"){var k=H.__fromString(C);if(k===null)throw new SyntaxError("Cannot convert "+C+" to a BigInt");return k}if(typeof C=="boolean")return C===!0?H.__oneDigit(1,!1):H.__zero();if(e(C)==="object"){if(C.constructor===H)return C;var G=H.__toPrimitive(C);return H.BigInt(G)}throw new TypeError("Cannot convert "+C+" to a BigInt")}},{key:"toNumber",value:function(C){var N=C.length;if(N===0)return 0;if(N===1){var k=C.__unsignedDigit(0);return C.sign?-k:k}var G=C.__digit(N-1),U=H.__clz30(G),j=30*N-U;if(1024<j)return C.sign?-1/0:1/0;var ee=j-1,ae=G,se=N-1,ue=U+3,ve=ue===32?0:ae<<ue;ve>>>=12;var be=ue-12,de=12<=ue?0:ae<<20+ue,we=20+ue;for(0<be&&0<se&&(se--,ae=C.__digit(se),ve|=ae>>>30-be,de=ae<<be+2,we=be+2);0<we&&0<se;)se--,ae=C.__digit(se),de|=30<=we?ae<<we-30:ae>>>30-we,we-=30;var Fe=H.__decideRounding(C,we,se,ae);if((Fe===1||Fe===0&&(1&de)==1)&&(de=de+1>>>0,de===0&&(ve++,ve>>>20!=0&&(ve=0,ee++,1023<ee))))return C.sign?-1/0:1/0;var je=C.sign?-2147483648:0;return ee=ee+1023<<20,H.__kBitConversionInts[1]=je|ee|ve,H.__kBitConversionInts[0]=de,H.__kBitConversionDouble[0]}},{key:"unaryMinus",value:function(C){if(C.length===0)return C;var N=C.__copy();return N.sign=!C.sign,N}},{key:"bitwiseNot",value:function(C){return C.sign?H.__absoluteSubOne(C).__trim():H.__absoluteAddOne(C,!0)}},{key:"exponentiate",value:function(C,N){if(N.sign)throw new RangeError("Exponent must be positive");if(N.length===0)return H.__oneDigit(1,!1);if(C.length===0)return C;if(C.length===1&&C.__digit(0)===1)return C.sign&&!(1&N.__digit(0))?H.unaryMinus(C):C;if(1<N.length)throw new RangeError("BigInt too big");var k=N.__unsignedDigit(0);if(k===1)return C;if(k>=H.__kMaxLengthBits)throw new RangeError("BigInt too big");if(C.length===1&&C.__digit(0)===2){var G=1+(0|k/30),U=C.sign&&(1&k)!=0,j=new H(G,U);j.__initializeDigits();var ee=1<<k%30;return j.__setDigit(G-1,ee),j}var ae=null,se=C;for(1&k&&(ae=C),k>>=1;k!==0;k>>=1)se=H.multiply(se,se),1&k&&(ae===null?ae=se:ae=H.multiply(ae,se));return ae}},{key:"multiply",value:function(C,N){if(C.length===0)return C;if(N.length===0)return N;var k=C.length+N.length;30<=C.__clzmsd()+N.__clzmsd()&&k--;var G=new H(k,C.sign!==N.sign);G.__initializeDigits();for(var U=0;U<C.length;U++)H.__multiplyAccumulate(N,C.__digit(U),G,U);return G.__trim()}},{key:"divide",value:function(C,N){if(N.length===0)throw new RangeError("Division by zero");if(0>H.__absoluteCompare(C,N))return H.__zero();var k,G=C.sign!==N.sign,U=N.__unsignedDigit(0);if(N.length===1&&32767>=U){if(U===1)return G===C.sign?C:H.unaryMinus(C);k=H.__absoluteDivSmall(C,U,null)}else k=H.__absoluteDivLarge(C,N,!0,!1);return k.sign=G,k.__trim()}},{key:"remainder",value:function(N,k){if(k.length===0)throw new RangeError("Division by zero");if(0>H.__absoluteCompare(N,k))return N;var G=k.__unsignedDigit(0);if(k.length===1&&32767>=G){if(G===1)return H.__zero();var U=H.__absoluteModSmall(N,G);return U===0?H.__zero():H.__oneDigit(U,N.sign)}var j=H.__absoluteDivLarge(N,k,!1,!0);return j.sign=N.sign,j.__trim()}},{key:"add",value:function(C,N){var k=C.sign;return k===N.sign?H.__absoluteAdd(C,N,k):0<=H.__absoluteCompare(C,N)?H.__absoluteSub(C,N,k):H.__absoluteSub(N,C,!k)}},{key:"subtract",value:function(C,N){var k=C.sign;return k===N.sign?0<=H.__absoluteCompare(C,N)?H.__absoluteSub(C,N,k):H.__absoluteSub(N,C,!k):H.__absoluteAdd(C,N,k)}},{key:"leftShift",value:function(C,N){return N.length===0||C.length===0?C:N.sign?H.__rightShiftByAbsolute(C,N):H.__leftShiftByAbsolute(C,N)}},{key:"signedRightShift",value:function(C,N){return N.length===0||C.length===0?C:N.sign?H.__leftShiftByAbsolute(C,N):H.__rightShiftByAbsolute(C,N)}},{key:"unsignedRightShift",value:function(){throw new TypeError("BigInts have no unsigned right shift; use >> instead")}},{key:"lessThan",value:function(C,N){return 0>H.__compareToBigInt(C,N)}},{key:"lessThanOrEqual",value:function(C,N){return 0>=H.__compareToBigInt(C,N)}},{key:"greaterThan",value:function(C,N){return 0<H.__compareToBigInt(C,N)}},{key:"greaterThanOrEqual",value:function(C,N){return 0<=H.__compareToBigInt(C,N)}},{key:"equal",value:function(C,N){if(C.sign!==N.sign||C.length!==N.length)return!1;for(var k=0;k<C.length;k++)if(C.__digit(k)!==N.__digit(k))return!1;return!0}},{key:"notEqual",value:function(C,N){return!H.equal(C,N)}},{key:"bitwiseAnd",value:function(C,N){if(!C.sign&&!N.sign)return H.__absoluteAnd(C,N).__trim();if(C.sign&&N.sign){var k=F(C.length,N.length)+1,G=H.__absoluteSubOne(C,k),U=H.__absoluteSubOne(N);return G=H.__absoluteOr(G,U,G),H.__absoluteAddOne(G,!0,G).__trim()}if(C.sign){var j=[N,C];C=j[0],N=j[1]}return H.__absoluteAndNot(C,H.__absoluteSubOne(N)).__trim()}},{key:"bitwiseXor",value:function(C,N){if(!C.sign&&!N.sign)return H.__absoluteXor(C,N).__trim();if(C.sign&&N.sign){var k=F(C.length,N.length),G=H.__absoluteSubOne(C,k),U=H.__absoluteSubOne(N);return H.__absoluteXor(G,U,G).__trim()}var j=F(C.length,N.length)+1;if(C.sign){var ee=[N,C];C=ee[0],N=ee[1]}var ae=H.__absoluteSubOne(N,j);return ae=H.__absoluteXor(ae,C,ae),H.__absoluteAddOne(ae,!0,ae).__trim()}},{key:"bitwiseOr",value:function(C,N){var k=F(C.length,N.length);if(!C.sign&&!N.sign)return H.__absoluteOr(C,N).__trim();if(C.sign&&N.sign){var G=H.__absoluteSubOne(C,k),U=H.__absoluteSubOne(N);return G=H.__absoluteAnd(G,U,G),H.__absoluteAddOne(G,!0,G).__trim()}if(C.sign){var j=[N,C];C=j[0],N=j[1]}var ee=H.__absoluteSubOne(N,k);return ee=H.__absoluteAndNot(ee,C,ee),H.__absoluteAddOne(ee,!0,ee).__trim()}},{key:"asIntN",value:function(C,N){if(N.length===0)return N;if(C=X(C),0>C)throw new RangeError("Invalid value: not (convertible to) a safe integer");if(C===0)return H.__zero();if(C>=H.__kMaxLengthBits)return N;var k=0|(C+29)/30;if(N.length<k)return N;var G=N.__unsignedDigit(k-1),U=1<<(C-1)%30;if(N.length===k&&G<U)return N;if((G&U)!==U)return H.__truncateToNBits(C,N);if(!N.sign)return H.__truncateAndSubFromPowerOfTwo(C,N,!0);if(!(G&U-1)){for(var j=k-2;0<=j;j--)if(N.__digit(j)!==0)return H.__truncateAndSubFromPowerOfTwo(C,N,!1);return N.length===k&&G===U?N:H.__truncateToNBits(C,N)}return H.__truncateAndSubFromPowerOfTwo(C,N,!1)}},{key:"asUintN",value:function(C,N){if(N.length===0)return N;if(C=X(C),0>C)throw new RangeError("Invalid value: not (convertible to) a safe integer");if(C===0)return H.__zero();if(N.sign){if(C>H.__kMaxLengthBits)throw new RangeError("BigInt too big");return H.__truncateAndSubFromPowerOfTwo(C,N,!1)}if(C>=H.__kMaxLengthBits)return N;var k=0|(C+29)/30;if(N.length<k)return N;var G=C%30;if(N.length==k){if(G===0)return N;var U=N.__digit(k-1);if(!(U>>>G))return N}return H.__truncateToNBits(C,N)}},{key:"ADD",value:function(C,N){if(C=H.__toPrimitive(C),N=H.__toPrimitive(N),typeof C=="string")return typeof N!="string"&&(N=N.toString()),C+N;if(typeof N=="string")return C.toString()+N;if(C=H.__toNumeric(C),N=H.__toNumeric(N),H.__isBigInt(C)&&H.__isBigInt(N))return H.add(C,N);if(typeof C=="number"&&typeof N=="number")return C+N;throw new TypeError("Cannot mix BigInt and other types, use explicit conversions")}},{key:"LT",value:function(C,N){return H.__compare(C,N,0)}},{key:"LE",value:function(C,N){return H.__compare(C,N,1)}},{key:"GT",value:function(C,N){return H.__compare(C,N,2)}},{key:"GE",value:function(C,N){return H.__compare(C,N,3)}},{key:"EQ",value:function(C,N){for(;;){if(H.__isBigInt(C))return H.__isBigInt(N)?H.equal(C,N):H.EQ(N,C);if(typeof C=="number"){if(H.__isBigInt(N))return H.__equalToNumber(N,C);if(e(N)!=="object")return C==N;N=H.__toPrimitive(N)}else if(typeof C=="string"){if(H.__isBigInt(N))return C=H.__fromString(C),C!==null&&H.equal(C,N);if(e(N)!=="object")return C==N;N=H.__toPrimitive(N)}else if(typeof C=="boolean"){if(H.__isBigInt(N))return H.__equalToNumber(N,+C);if(e(N)!=="object")return C==N;N=H.__toPrimitive(N)}else if(e(C)==="symbol"){if(H.__isBigInt(N))return!1;if(e(N)!=="object")return C==N;N=H.__toPrimitive(N)}else if(e(C)==="object"){if(e(N)==="object"&&N.constructor!==H)return C==N;C=H.__toPrimitive(C)}else return C==N}}},{key:"NE",value:function(C,N){return!H.EQ(C,N)}},{key:"DataViewGetBigInt64",value:function(C,N){var k=2<arguments.length&&arguments[2]!==void 0&&arguments[2];return H.asIntN(64,H.DataViewGetBigUint64(C,N,k))}},{key:"DataViewGetBigUint64",value:function(C,N){var k=2<arguments.length&&arguments[2]!==void 0&&arguments[2],G=k?[4,0]:[0,4],U=g(G,2),j=U[0],ee=U[1],ae=C.getUint32(N+j,k),se=C.getUint32(N+ee,k),ue=new H(3,!1);return ue.__setDigit(0,1073741823&se),ue.__setDigit(1,(268435455&ae)<<2|se>>>30),ue.__setDigit(2,ae>>>28),ue.__trim()}},{key:"DataViewSetBigInt64",value:function(C,N,k){var G=3<arguments.length&&arguments[3]!==void 0&&arguments[3];H.DataViewSetBigUint64(C,N,k,G)}},{key:"DataViewSetBigUint64",value:function(C,N,k){var G=3<arguments.length&&arguments[3]!==void 0&&arguments[3];k=H.asUintN(64,k);var U=0,j=0;if(0<k.length&&(j=k.__digit(0),1<k.length)){var ee=k.__digit(1);j|=ee<<30,U=ee>>>2,2<k.length&&(U|=k.__digit(2)<<28)}var ae=G?[4,0]:[0,4],se=g(ae,2),ue=se[0],ve=se[1];C.setUint32(N+ue,U,G),C.setUint32(N+ve,j,G)}},{key:"__zero",value:function(){return new H(0,!1)}},{key:"__oneDigit",value:function(C,N){var k=new H(1,N);return k.__setDigit(0,C),k}},{key:"__decideRounding",value:function(C,N,k,G){if(0<N)return-1;var U;if(0>N)U=-N-1;else{if(k===0)return-1;k--,G=C.__digit(k),U=29}var j=1<<U;if(!(G&j))return-1;if(j-=1,(G&j)!=0)return 1;for(;0<k;)if(k--,C.__digit(k)!==0)return 1;return 0}},{key:"__fromDouble",value:function(C){H.__kBitConversionDouble[0]=C;var N,k=2047&H.__kBitConversionInts[1]>>>20,G=k-1023,U=(0|G/30)+1,j=new H(U,0>C),ee=1048575&H.__kBitConversionInts[1]|1048576,ae=H.__kBitConversionInts[0],se=20,ue=G%30,ve=0;if(ue<se){var be=se-ue;ve=be+32,N=ee>>>be,ee=ee<<32-be|ae>>>be,ae<<=32-be}else if(ue===se)ve=32,N=ee,ee=ae,ae=0;else{var de=ue-se;ve=32-de,N=ee<<de|ae>>>32-de,ee=ae<<de,ae=0}j.__setDigit(U-1,N);for(var we=U-2;0<=we;we--)0<ve?(ve-=30,N=ee>>>2,ee=ee<<30|ae>>>2,ae<<=30):N=0,j.__setDigit(we,N);return j.__trim()}},{key:"__isWhitespace",value:function(C){return 13>=C&&9<=C||(159>=C?C==32:131071>=C?C==160||C==5760:196607>=C?(C&=131071,10>=C||C==40||C==41||C==47||C==95||C==4096):C==65279)}},{key:"__fromString",value:function(C){var N=1<arguments.length&&arguments[1]!==void 0?arguments[1]:0,k=0,G=C.length,U=0;if(U===G)return H.__zero();for(var j=C.charCodeAt(U);H.__isWhitespace(j);){if(++U===G)return H.__zero();j=C.charCodeAt(U)}if(j===43){if(++U===G)return null;j=C.charCodeAt(U),k=1}else if(j===45){if(++U===G)return null;j=C.charCodeAt(U),k=-1}if(N===0){if(N=10,j===48){if(++U===G)return H.__zero();if(j=C.charCodeAt(U),j===88||j===120){if(N=16,++U===G)return null;j=C.charCodeAt(U)}else if(j===79||j===111){if(N=8,++U===G)return null;j=C.charCodeAt(U)}else if(j===66||j===98){if(N=2,++U===G)return null;j=C.charCodeAt(U)}}}else if(N===16&&j===48){if(++U===G)return H.__zero();if(j=C.charCodeAt(U),j===88||j===120){if(++U===G)return null;j=C.charCodeAt(U)}}if(k!==0&&N!==10)return null;for(;j===48;){if(++U===G)return H.__zero();j=C.charCodeAt(U)}var ee=G-U,ae=H.__kMaxBitsPerChar[N],se=H.__kBitsPerCharTableMultiplier-1;if(ee>1073741824/ae)return null;var ue=ae*ee+se>>>H.__kBitsPerCharTableShift,ve=new H(0|(ue+29)/30,!1),be=10>N?N:10,de=10<N?N-10:0;if(N&N-1){ve.__initializeDigits();var ke=!1,nt=0;do{for(var bt,mt=0,_e=1;;){if(bt=void 0,j-48>>>0<be)bt=j-48;else if((32|j)-97>>>0<de)bt=(32|j)-87;else{ke=!0;break}var J=_e*N;if(1073741823<J)break;if(_e=J,mt=mt*N+bt,nt++,++U===G){ke=!0;break}j=C.charCodeAt(U)}se=30*H.__kBitsPerCharTableMultiplier-1;var $=0|(ae*nt+se>>>H.__kBitsPerCharTableShift)/30;ve.__inplaceMultiplyAdd(_e,mt,$)}while(!ke)}else{ae>>=H.__kBitsPerCharTableShift;var we=[],Fe=[],je=!1;do{for(var Oe,dt=0,Be=0;;){if(Oe=void 0,j-48>>>0<be)Oe=j-48;else if((32|j)-97>>>0<de)Oe=(32|j)-87;else{je=!0;break}if(Be+=ae,dt=dt<<ae|Oe,++U===G){je=!0;break}if(j=C.charCodeAt(U),30<Be+ae)break}we.push(dt),Fe.push(Be)}while(!je);H.__fillFromParts(ve,we,Fe)}if(U!==G){if(!H.__isWhitespace(j))return null;for(U++;U<G;U++)if(j=C.charCodeAt(U),!H.__isWhitespace(j))return null}return ve.sign=k===-1,ve.__trim()}},{key:"__fillFromParts",value:function(C,N,k){for(var G=0,U=0,j=0,ee=N.length-1;0<=ee;ee--){var ae=N[ee],se=k[ee];U|=ae<<j,j+=se,j===30?(C.__setDigit(G++,U),j=0,U=0):30<j&&(C.__setDigit(G++,1073741823&U),j-=30,U=ae>>>se-j)}if(U!==0){if(G>=C.length)throw new Error("implementation bug");C.__setDigit(G++,U)}for(;G<C.length;G++)C.__setDigit(G,0)}},{key:"__toStringBasePowerOfTwo",value:function(C,N){var k=C.length,G=N-1;G=(85&G>>>1)+(85&G),G=(51&G>>>2)+(51&G),G=(15&G>>>4)+(15&G);var U=G,j=N-1,ee=C.__digit(k-1),ae=H.__clz30(ee),se=0|(30*k-ae+U-1)/U;if(C.sign&&se++,268435456<se)throw new Error("string too long");for(var ue=Array(se),ve=se-1,be=0,de=0,we=0;we<k-1;we++){var Fe=C.__digit(we),je=(be|Fe<<de)&j;ue[ve--]=H.__kConversionChars[je];var Oe=U-de;for(be=Fe>>>Oe,de=30-Oe;de>=U;)ue[ve--]=H.__kConversionChars[be&j],be>>>=U,de-=U}var dt=(be|ee<<de)&j;for(ue[ve--]=H.__kConversionChars[dt],be=ee>>>U-de;be!==0;)ue[ve--]=H.__kConversionChars[be&j],be>>>=U;if(C.sign&&(ue[ve--]="-"),ve!==-1)throw new Error("implementation bug");return ue.join("")}},{key:"__toStringGeneric",value:function(C,N,k){var G=C.length;if(G===0)return"";if(G===1){var U=C.__unsignedDigit(0).toString(N);return k===!1&&C.sign&&(U="-"+U),U}var j=30*G-H.__clz30(C.__digit(G-1)),ee=H.__kMaxBitsPerChar[N],ae=ee-1,se=j*H.__kBitsPerCharTableMultiplier;se+=ae-1,se=0|se/ae;var ue,ve,be=se+1>>1,de=H.exponentiate(H.__oneDigit(N,!1),H.__oneDigit(be,!1)),we=de.__unsignedDigit(0);if(de.length===1&&32767>=we){ue=new H(C.length,!1),ue.__initializeDigits();for(var Fe,je=0,Oe=2*C.length-1;0<=Oe;Oe--)Fe=je<<15|C.__halfDigit(Oe),ue.__setHalfDigit(Oe,0|Fe/we),je=0|Fe%we;ve=je.toString(N)}else{var dt=H.__absoluteDivLarge(C,de,!0,!0);ue=dt.quotient;var Be=dt.remainder.__trim();ve=H.__toStringGeneric(Be,N,!0)}ue.__trim();for(var ke=H.__toStringGeneric(ue,N,!0);ve.length<be;)ve="0"+ve;return k===!1&&C.sign&&(ke="-"+ke),ke+ve}},{key:"__unequalSign",value:function(C){return C?-1:1}},{key:"__absoluteGreater",value:function(C){return C?-1:1}},{key:"__absoluteLess",value:function(C){return C?1:-1}},{key:"__compareToBigInt",value:function(C,N){var k=C.sign;if(k!==N.sign)return H.__unequalSign(k);var G=H.__absoluteCompare(C,N);return 0<G?H.__absoluteGreater(k):0>G?H.__absoluteLess(k):0}},{key:"__compareToNumber",value:function(C,N){if(H.__isOneDigitInt(N)){var k=C.sign,G=0>N;if(k!==G)return H.__unequalSign(k);if(C.length===0){if(G)throw new Error("implementation bug");return N===0?0:-1}if(1<C.length)return H.__absoluteGreater(k);var U=w(N),j=C.__unsignedDigit(0);return j>U?H.__absoluteGreater(k):j<U?H.__absoluteLess(k):0}return H.__compareToDouble(C,N)}},{key:"__compareToDouble",value:function(C,N){if(N!==N)return N;if(N===1/0)return-1;if(N===-1/0)return 1;var k=C.sign;if(k!==0>N)return H.__unequalSign(k);if(N===0)throw new Error("implementation bug: should be handled elsewhere");if(C.length===0)return-1;H.__kBitConversionDouble[0]=N;var G=2047&H.__kBitConversionInts[1]>>>20;if(G==2047)throw new Error("implementation bug: handled elsewhere");var U=G-1023;if(0>U)return H.__absoluteGreater(k);var j=C.length,ee=C.__digit(j-1),ae=H.__clz30(ee),se=30*j-ae,ue=U+1;if(se<ue)return H.__absoluteLess(k);if(se>ue)return H.__absoluteGreater(k);var ve=1048576|1048575&H.__kBitConversionInts[1],be=H.__kBitConversionInts[0],de=20,we=29-ae;if(we!==(0|(se-1)%30))throw new Error("implementation bug");var Fe,je=0;if(we<de){var Oe=de-we;je=Oe+32,Fe=ve>>>Oe,ve=ve<<32-Oe|be>>>Oe,be<<=32-Oe}else if(we===de)je=32,Fe=ve,ve=be,be=0;else{var dt=we-de;je=32-dt,Fe=ve<<dt|be>>>32-dt,ve=be<<dt,be=0}if(ee>>>=0,Fe>>>=0,ee>Fe)return H.__absoluteGreater(k);if(ee<Fe)return H.__absoluteLess(k);for(var Be=j-2;0<=Be;Be--){0<je?(je-=30,Fe=ve>>>2,ve=ve<<30|be>>>2,be<<=30):Fe=0;var ke=C.__unsignedDigit(Be);if(ke>Fe)return H.__absoluteGreater(k);if(ke<Fe)return H.__absoluteLess(k)}if(ve!==0||be!==0){if(je===0)throw new Error("implementation bug");return H.__absoluteLess(k)}return 0}},{key:"__equalToNumber",value:function(C,N){return H.__isOneDigitInt(N)?N===0?C.length===0:C.length===1&&C.sign===0>N&&C.__unsignedDigit(0)===w(N):H.__compareToDouble(C,N)===0}},{key:"__comparisonResultToBool",value:function(C,N){return N===0?0>C:N===1?0>=C:N===2?0<C:N===3?0<=C:void 0}},{key:"__compare",value:function(C,N,k){if(C=H.__toPrimitive(C),N=H.__toPrimitive(N),typeof C=="string"&&typeof N=="string")switch(k){case 0:return C<N;case 1:return C<=N;case 2:return C>N;case 3:return C>=N}if(H.__isBigInt(C)&&typeof N=="string")return N=H.__fromString(N),N!==null&&H.__comparisonResultToBool(H.__compareToBigInt(C,N),k);if(typeof C=="string"&&H.__isBigInt(N))return C=H.__fromString(C),C!==null&&H.__comparisonResultToBool(H.__compareToBigInt(C,N),k);if(C=H.__toNumeric(C),N=H.__toNumeric(N),H.__isBigInt(C)){if(H.__isBigInt(N))return H.__comparisonResultToBool(H.__compareToBigInt(C,N),k);if(typeof N!="number")throw new Error("implementation bug");return H.__comparisonResultToBool(H.__compareToNumber(C,N),k)}if(typeof C!="number")throw new Error("implementation bug");if(H.__isBigInt(N))return H.__comparisonResultToBool(H.__compareToNumber(N,C),2^k);if(typeof N!="number")throw new Error("implementation bug");return k===0?C<N:k===1?C<=N:k===2?C>N:k===3?C>=N:void 0}},{key:"__absoluteAdd",value:function(C,N,k){if(C.length<N.length)return H.__absoluteAdd(N,C,k);if(C.length===0)return C;if(N.length===0)return C.sign===k?C:H.unaryMinus(C);var G=C.length;(C.__clzmsd()===0||N.length===C.length&&N.__clzmsd()===0)&&G++;for(var U,j=new H(G,k),ee=0,ae=0;ae<N.length;ae++)U=C.__digit(ae)+N.__digit(ae)+ee,ee=U>>>30,j.__setDigit(ae,1073741823&U);for(;ae<C.length;ae++){var se=C.__digit(ae)+ee;ee=se>>>30,j.__setDigit(ae,1073741823&se)}return ae<j.length&&j.__setDigit(ae,ee),j.__trim()}},{key:"__absoluteSub",value:function(C,N,k){if(C.length===0)return C;if(N.length===0)return C.sign===k?C:H.unaryMinus(C);for(var G,U=new H(C.length,k),j=0,ee=0;ee<N.length;ee++)G=C.__digit(ee)-N.__digit(ee)-j,j=1&G>>>30,U.__setDigit(ee,1073741823&G);for(;ee<C.length;ee++){var ae=C.__digit(ee)-j;j=1&ae>>>30,U.__setDigit(ee,1073741823&ae)}return U.__trim()}},{key:"__absoluteAddOne",value:function(C,N){var k=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null,G=C.length;k===null?k=new H(G,N):k.sign=N;for(var U,j=1,ee=0;ee<G;ee++)U=C.__digit(ee)+j,j=U>>>30,k.__setDigit(ee,1073741823&U);return j!==0&&k.__setDigitGrow(G,1),k}},{key:"__absoluteSubOne",value:function(C,N){var k=C.length;N=N||k;for(var G,U=new H(N,!1),j=1,ee=0;ee<k;ee++)G=C.__digit(ee)-j,j=1&G>>>30,U.__setDigit(ee,1073741823&G);if(j!==0)throw new Error("implementation bug");for(var ae=k;ae<N;ae++)U.__setDigit(ae,0);return U}},{key:"__absoluteAnd",value:function(C,N){var k=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null,G=C.length,U=N.length,j=U;if(G<U){j=G;var ee=C,ae=G;C=N,G=U,N=ee,U=ae}var se=j;k===null?k=new H(se,!1):se=k.length;for(var ue=0;ue<j;ue++)k.__setDigit(ue,C.__digit(ue)&N.__digit(ue));for(;ue<se;ue++)k.__setDigit(ue,0);return k}},{key:"__absoluteAndNot",value:function(C,N){var k=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null,G=C.length,U=N.length,j=U;G<U&&(j=G);var ee=G;k===null?k=new H(ee,!1):ee=k.length;for(var ae=0;ae<j;ae++)k.__setDigit(ae,C.__digit(ae)&~N.__digit(ae));for(;ae<G;ae++)k.__setDigit(ae,C.__digit(ae));for(;ae<ee;ae++)k.__setDigit(ae,0);return k}},{key:"__absoluteOr",value:function(C,N){var k=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null,G=C.length,U=N.length,j=U;if(G<U){j=G;var ee=C,ae=G;C=N,G=U,N=ee,U=ae}var se=G;k===null?k=new H(se,!1):se=k.length;for(var ue=0;ue<j;ue++)k.__setDigit(ue,C.__digit(ue)|N.__digit(ue));for(;ue<G;ue++)k.__setDigit(ue,C.__digit(ue));for(;ue<se;ue++)k.__setDigit(ue,0);return k}},{key:"__absoluteXor",value:function(C,N){var k=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null,G=C.length,U=N.length,j=U;if(G<U){j=G;var ee=C,ae=G;C=N,G=U,N=ee,U=ae}var se=G;k===null?k=new H(se,!1):se=k.length;for(var ue=0;ue<j;ue++)k.__setDigit(ue,C.__digit(ue)^N.__digit(ue));for(;ue<G;ue++)k.__setDigit(ue,C.__digit(ue));for(;ue<se;ue++)k.__setDigit(ue,0);return k}},{key:"__absoluteCompare",value:function(C,N){var k=C.length-N.length;if(k!=0)return k;for(var G=C.length-1;0<=G&&C.__digit(G)===N.__digit(G);)G--;return 0>G?0:C.__unsignedDigit(G)>N.__unsignedDigit(G)?1:-1}},{key:"__multiplyAccumulate",value:function(C,N,k,G){if(N!==0){for(var U=32767&N,j=N>>>15,ee=0,ae=0,se=0;se<C.length;se++,G++){var ue=k.__digit(G),ve=C.__digit(se),be=32767&ve,de=ve>>>15,we=H.__imul(be,U),Fe=H.__imul(be,j),je=H.__imul(de,U),Oe=H.__imul(de,j);ue+=ae+we+ee,ee=ue>>>30,ue&=1073741823,ue+=((32767&Fe)<<15)+((32767&je)<<15),ee+=ue>>>30,ae=Oe+(Fe>>>15)+(je>>>15),k.__setDigit(G,1073741823&ue)}for(;ee!==0||ae!==0;G++){var dt=k.__digit(G);dt+=ee+ae,ae=0,ee=dt>>>30,k.__setDigit(G,1073741823&dt)}}}},{key:"__internalMultiplyAdd",value:function(C,N,k,G,U){for(var j=k,ee=0,ae=0;ae<G;ae++){var se=C.__digit(ae),ue=H.__imul(32767&se,N),ve=H.__imul(se>>>15,N),be=ue+((32767&ve)<<15)+ee+j;j=be>>>30,ee=ve>>>15,U.__setDigit(ae,1073741823&be)}if(U.length>G)for(U.__setDigit(G++,j+ee);G<U.length;)U.__setDigit(G++,0);else if(j+ee!==0)throw new Error("implementation bug")}},{key:"__absoluteDivSmall",value:function(C,N){var k=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;k===null&&(k=new H(C.length,!1));for(var G=0,U=2*C.length-1;0<=U;U-=2){var j=(G<<15|C.__halfDigit(U))>>>0,ee=0|j/N;G=0|j%N,j=(G<<15|C.__halfDigit(U-1))>>>0;var ae=0|j/N;G=0|j%N,k.__setDigit(U>>>1,ee<<15|ae)}return k}},{key:"__absoluteModSmall",value:function(C,N){for(var k,G=0,U=2*C.length-1;0<=U;U--)k=(G<<15|C.__halfDigit(U))>>>0,G=0|k%N;return G}},{key:"__absoluteDivLarge",value:function(C,N,k,G){var U=N.__halfDigitLength(),j=N.length,ee=C.__halfDigitLength()-U,ae=null;k&&(ae=new H(ee+2>>>1,!1),ae.__initializeDigits());var se=new H(U+2>>>1,!1);se.__initializeDigits();var ue=H.__clz15(N.__halfDigit(U-1));0<ue&&(N=H.__specialLeftShift(N,ue,0));for(var ve=H.__specialLeftShift(C,ue,1),be=N.__halfDigit(U-1),de=0,we=ee;0<=we;we--){var Fe=32767,je=ve.__halfDigit(we+U);if(je!==be){var Oe=(je<<15|ve.__halfDigit(we+U-1))>>>0;Fe=0|Oe/be;for(var dt=0|Oe%be,Be=N.__halfDigit(U-2),ke=ve.__halfDigit(we+U-2);H.__imul(Fe,Be)>>>0>(dt<<16|ke)>>>0&&(Fe--,dt+=be,!(32767<dt)););}H.__internalMultiplyAdd(N,Fe,0,j,se);var nt=ve.__inplaceSub(se,we,U+1);nt!==0&&(nt=ve.__inplaceAdd(N,we,U),ve.__setHalfDigit(we+U,32767&ve.__halfDigit(we+U)+nt),Fe--),k&&(1&we?de=Fe<<15:ae.__setDigit(we>>>1,de|Fe))}if(G)return ve.__inplaceRightShift(ue),k?{quotient:ae,remainder:ve}:ve;if(k)return ae;throw new Error("unreachable")}},{key:"__clz15",value:function(C){return H.__clz30(C)-15}},{key:"__specialLeftShift",value:function(C,N,k){var G=C.length,U=new H(G+k,!1);if(N===0){for(var j=0;j<G;j++)U.__setDigit(j,C.__digit(j));return 0<k&&U.__setDigit(G,0),U}for(var ee,ae=0,se=0;se<G;se++)ee=C.__digit(se),U.__setDigit(se,1073741823&ee<<N|ae),ae=ee>>>30-N;return 0<k&&U.__setDigit(G,ae),U}},{key:"__leftShiftByAbsolute",value:function(C,N){var k=H.__toShiftAmount(N);if(0>k)throw new RangeError("BigInt too big");var G=0|k/30,U=k%30,j=C.length,ee=U!==0&&C.__digit(j-1)>>>30-U!=0,ae=j+G+(ee?1:0),se=new H(ae,C.sign);if(U===0){for(var ue=0;ue<G;ue++)se.__setDigit(ue,0);for(;ue<ae;ue++)se.__setDigit(ue,C.__digit(ue-G))}else{for(var ve=0,be=0;be<G;be++)se.__setDigit(be,0);for(var de,we=0;we<j;we++)de=C.__digit(we),se.__setDigit(we+G,1073741823&de<<U|ve),ve=de>>>30-U;if(ee)se.__setDigit(j+G,ve);else if(ve!==0)throw new Error("implementation bug")}return se.__trim()}},{key:"__rightShiftByAbsolute",value:function(C,N){var k=C.length,G=C.sign,U=H.__toShiftAmount(N);if(0>U)return H.__rightShiftByMaximum(G);var j=0|U/30,ee=U%30,ae=k-j;if(0>=ae)return H.__rightShiftByMaximum(G);var se=!1;if(G){if(C.__digit(j)&(1<<ee)-1)se=!0;else for(var ue=0;ue<j;ue++)if(C.__digit(ue)!==0){se=!0;break}}if(se&&ee===0){var ve=C.__digit(k-1);!~ve&&ae++}var be=new H(ae,G);if(ee===0){be.__setDigit(ae-1,0);for(var de=j;de<k;de++)be.__setDigit(de-j,C.__digit(de))}else{for(var we,Fe=C.__digit(j)>>>ee,je=k-j-1,Oe=0;Oe<je;Oe++)we=C.__digit(Oe+j+1),be.__setDigit(Oe,1073741823&we<<30-ee|Fe),Fe=we>>>ee;be.__setDigit(je,Fe)}return se&&(be=H.__absoluteAddOne(be,!0,be)),be.__trim()}},{key:"__rightShiftByMaximum",value:function(C){return C?H.__oneDigit(1,!0):H.__zero()}},{key:"__toShiftAmount",value:function(C){if(1<C.length)return-1;var N=C.__unsignedDigit(0);return N>H.__kMaxLengthBits?-1:N}},{key:"__toPrimitive",value:function(C){var N=1<arguments.length&&arguments[1]!==void 0?arguments[1]:"default";if(e(C)!=="object"||C.constructor===H)return C;if(typeof Symbol!="undefined"&&e(Symbol.toPrimitive)==="symbol"){var k=C[Symbol.toPrimitive];if(k){var G=k(N);if(e(G)!=="object")return G;throw new TypeError("Cannot convert object to primitive value")}}var U=C.valueOf;if(U){var j=U.call(C);if(e(j)!=="object")return j}var ee=C.toString;if(ee){var ae=ee.call(C);if(e(ae)!=="object")return ae}throw new TypeError("Cannot convert object to primitive value")}},{key:"__toNumeric",value:function(C){return H.__isBigInt(C)?C:+C}},{key:"__isBigInt",value:function(C){return e(C)==="object"&&C!==null&&C.constructor===H}},{key:"__truncateToNBits",value:function(C,N){for(var k=0|(C+29)/30,G=new H(k,N.sign),U=k-1,j=0;j<U;j++)G.__setDigit(j,N.__digit(j));var ee=N.__digit(U);if(C%30!=0){var ae=32-C%30;ee=ee<<ae>>>ae}return G.__setDigit(U,ee),G.__trim()}},{key:"__truncateAndSubFromPowerOfTwo",value:function(C,N,k){for(var G=Math.min,U,j=0|(C+29)/30,ee=new H(j,k),ae=0,se=j-1,ue=0,ve=G(se,N.length);ae<ve;ae++)U=0-N.__digit(ae)-ue,ue=1&U>>>30,ee.__setDigit(ae,1073741823&U);for(;ae<se;ae++)ee.__setDigit(ae,0|1073741823&-ue);var be,de=se<N.length?N.__digit(se):0,we=C%30;if(we===0)be=0-de-ue,be&=1073741823;else{var Fe=32-we;de=de<<Fe>>>Fe;var je=1<<32-Fe;be=je-de-ue,be&=je-1}return ee.__setDigit(se,be),ee.__trim()}},{key:"__digitPow",value:function(C,N){for(var k=1;0<N;)1&N&&(k*=C),N>>>=1,C*=C;return k}},{key:"__isOneDigitInt",value:function(C){return(1073741823&C)===C}}]),H}(p(Array));return P.__kMaxLength=33554432,P.__kMaxLengthBits=P.__kMaxLength<<5,P.__kMaxBitsPerChar=[0,0,32,51,64,75,83,90,96,102,107,111,115,119,122,126,128,131,134,136,139,141,143,145,147,149,151,153,154,156,158,159,160,162,163,165,166],P.__kBitsPerCharTableShift=5,P.__kBitsPerCharTableMultiplier=1<<P.__kBitsPerCharTableShift,P.__kConversionChars=["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"],P.__kBitConversionBuffer=new ArrayBuffer(8),P.__kBitConversionDouble=new Float64Array(P.__kBitConversionBuffer),P.__kBitConversionInts=new Int32Array(P.__kBitConversionBuffer),P.__clz30=r?function(_){return r(_)-2}:function(_){var w=Math.LN2,F=Math.log;return _===0?30:0|29-(0|F(_>>>0)/w)},P.__imul=t||function(_,w){return 0|_*w},P})});var rRe=V((n8,s8)=>{(function(t,r){typeof n8=="object"&&typeof s8!="undefined"?s8.exports=r():typeof define=="function"&&define.amd?define(r):(t=t||self).RBush=r()})(n8,function(){"use strict";function t(g,y,E,b,x){(function S(D,P,_,w,F){for(;w>_;){if(w-_>600){var X=w-_+1,H=P-_+1,he=Math.log(X),C=.5*Math.exp(2*he/3),N=.5*Math.sqrt(he*C*(X-C)/X)*(H-X/2<0?-1:1),k=Math.max(_,Math.floor(P-H*C/X+N)),G=Math.min(w,Math.floor(P+(X-H)*C/X+N));S(D,P,k,G,F)}var U=D[P],j=_,ee=w;for(r(D,_,P),F(D[w],U)>0&&r(D,_,w);j<ee;){for(r(D,j,ee),j++,ee--;F(D[j],U)<0;)j++;for(;F(D[ee],U)>0;)ee--}F(D[_],U)===0?r(D,_,ee):r(D,++ee,w),ee<=P&&(_=ee+1),P<=ee&&(w=ee-1)}})(g,y,E||0,b||g.length-1,x||e)}function r(g,y,E){var b=g[y];g[y]=g[E],g[E]=b}function e(g,y){return g<y?-1:g>y?1:0}var i=function(g){g===void 0&&(g=9),this._maxEntries=Math.max(4,g),this._minEntries=Math.max(2,Math.ceil(.4*this._maxEntries)),this.clear()};function n(g,y,E){if(!E)return y.indexOf(g);for(var b=0;b<y.length;b++)if(E(g,y[b]))return b;return-1}function s(g,y){a(g,0,g.children.length,y,g)}function a(g,y,E,b,x){x||(x=f(null)),x.minX=1/0,x.minY=1/0,x.maxX=-1/0,x.maxY=-1/0;for(var S=y;S<E;S++){var D=g.children[S];o(x,g.leaf?b(D):D)}return x}function o(g,y){return g.minX=Math.min(g.minX,y.minX),g.minY=Math.min(g.minY,y.minY),g.maxX=Math.max(g.maxX,y.maxX),g.maxY=Math.max(g.maxY,y.maxY),g}function l(g,y){return g.minX-y.minX}function c(g,y){return g.minY-y.minY}function u(g){return(g.maxX-g.minX)*(g.maxY-g.minY)}function h(g){return g.maxX-g.minX+(g.maxY-g.minY)}function p(g,y){return g.minX<=y.minX&&g.minY<=y.minY&&y.maxX<=g.maxX&&y.maxY<=g.maxY}function d(g,y){return y.minX<=g.maxX&&y.minY<=g.maxY&&y.maxX>=g.minX&&y.maxY>=g.minY}function f(g){return{children:g,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function m(g,y,E,b,x){for(var S=[y,E];S.length;)if(!((E=S.pop())-(y=S.pop())<=b)){var D=y+Math.ceil((E-y)/b/2)*b;t(g,D,y,E,x),S.push(y,D,D,E)}}return i.prototype.all=function(){return this._all(this.data,[])},i.prototype.search=function(g){var y=this.data,E=[];if(!d(g,y))return E;for(var b=this.toBBox,x=[];y;){for(var S=0;S<y.children.length;S++){var D=y.children[S],P=y.leaf?b(D):D;d(g,P)&&(y.leaf?E.push(D):p(g,P)?this._all(D,E):x.push(D))}y=x.pop()}return E},i.prototype.collides=function(g){var y=this.data;if(!d(g,y))return!1;for(var E=[];y;){for(var b=0;b<y.children.length;b++){var x=y.children[b],S=y.leaf?this.toBBox(x):x;if(d(g,S)){if(y.leaf||p(g,S))return!0;E.push(x)}}y=E.pop()}return!1},i.prototype.load=function(g){if(!g||!g.length)return this;if(g.length<this._minEntries){for(var y=0;y<g.length;y++)this.insert(g[y]);return this}var E=this._build(g.slice(),0,g.length-1,0);if(this.data.children.length)if(this.data.height===E.height)this._splitRoot(this.data,E);else{if(this.data.height<E.height){var b=this.data;this.data=E,E=b}this._insert(E,this.data.height-E.height-1,!0)}else this.data=E;return this},i.prototype.insert=function(g){return g&&this._insert(g,this.data.height-1),this},i.prototype.clear=function(){return this.data=f([]),this},i.prototype.remove=function(g,y){if(!g)return this;for(var E,b,x,S=this.data,D=this.toBBox(g),P=[],_=[];S||P.length;){if(S||(S=P.pop(),b=P[P.length-1],E=_.pop(),x=!0),S.leaf){var w=n(g,S.children,y);if(w!==-1)return S.children.splice(w,1),P.push(S),this._condense(P),this}x||S.leaf||!p(S,D)?b?(E++,S=b.children[E],x=!1):S=null:(P.push(S),_.push(E),E=0,b=S,S=S.children[0])}return this},i.prototype.toBBox=function(g){return g},i.prototype.compareMinX=function(g,y){return g.minX-y.minX},i.prototype.compareMinY=function(g,y){return g.minY-y.minY},i.prototype.toJSON=function(){return this.data},i.prototype.fromJSON=function(g){return this.data=g,this},i.prototype._all=function(g,y){for(var E=[];g;)g.leaf?y.push.apply(y,g.children):E.push.apply(E,g.children),g=E.pop();return y},i.prototype._build=function(g,y,E,b){var x,S=E-y+1,D=this._maxEntries;if(S<=D)return s(x=f(g.slice(y,E+1)),this.toBBox),x;b||(b=Math.ceil(Math.log(S)/Math.log(D)),D=Math.ceil(S/Math.pow(D,b-1))),(x=f([])).leaf=!1,x.height=b;var P=Math.ceil(S/D),_=P*Math.ceil(Math.sqrt(D));m(g,y,E,_,this.compareMinX);for(var w=y;w<=E;w+=_){var F=Math.min(w+_-1,E);m(g,w,F,P,this.compareMinY);for(var X=w;X<=F;X+=P){var H=Math.min(X+P-1,F);x.children.push(this._build(g,X,H,b-1))}}return s(x,this.toBBox),x},i.prototype._chooseSubtree=function(g,y,E,b){for(;b.push(y),!y.leaf&&b.length-1!==E;){for(var x=1/0,S=1/0,D=void 0,P=0;P<y.children.length;P++){var _=y.children[P],w=u(_),F=(X=g,H=_,(Math.max(H.maxX,X.maxX)-Math.min(H.minX,X.minX))*(Math.max(H.maxY,X.maxY)-Math.min(H.minY,X.minY))-w);F<S?(S=F,x=w<x?w:x,D=_):F===S&&w<x&&(x=w,D=_)}y=D||y.children[0]}var X,H;return y},i.prototype._insert=function(g,y,E){var b=E?g:this.toBBox(g),x=[],S=this._chooseSubtree(b,this.data,y,x);for(S.children.push(g),o(S,b);y>=0&&x[y].children.length>this._maxEntries;)this._split(x,y),y--;this._adjustParentBBoxes(b,x,y)},i.prototype._split=function(g,y){var E=g[y],b=E.children.length,x=this._minEntries;this._chooseSplitAxis(E,x,b);var S=this._chooseSplitIndex(E,x,b),D=f(E.children.splice(S,E.children.length-S));D.height=E.height,D.leaf=E.leaf,s(E,this.toBBox),s(D,this.toBBox),y?g[y-1].children.push(D):this._splitRoot(E,D)},i.prototype._splitRoot=function(g,y){this.data=f([g,y]),this.data.height=g.height+1,this.data.leaf=!1,s(this.data,this.toBBox)},i.prototype._chooseSplitIndex=function(g,y,E){for(var b,x,S,D,P,_,w,F=1/0,X=1/0,H=y;H<=E-y;H++){var he=a(g,0,H,this.toBBox),C=a(g,H,E,this.toBBox),N=(x=he,S=C,D=void 0,P=void 0,_=void 0,w=void 0,D=Math.max(x.minX,S.minX),P=Math.max(x.minY,S.minY),_=Math.min(x.maxX,S.maxX),w=Math.min(x.maxY,S.maxY),Math.max(0,_-D)*Math.max(0,w-P)),k=u(he)+u(C);N<F?(F=N,b=H,X=k<X?k:X):N===F&&k<X&&(X=k,b=H)}return b||E-y},i.prototype._chooseSplitAxis=function(g,y,E){var b=g.leaf?this.compareMinX:l,x=g.leaf?this.compareMinY:c;this._allDistMargin(g,y,E,b)<this._allDistMargin(g,y,E,x)&&g.children.sort(b)},i.prototype._allDistMargin=function(g,y,E,b){g.children.sort(b);for(var x=this.toBBox,S=a(g,0,y,x),D=a(g,E-y,E,x),P=h(S)+h(D),_=y;_<E-y;_++){var w=g.children[_];o(S,g.leaf?x(w):w),P+=h(S)}for(var F=E-y-1;F>=y;F--){var X=g.children[F];o(D,g.leaf?x(X):X),P+=h(D)}return P},i.prototype._adjustParentBBoxes=function(g,y,E){for(var b=E;b>=0;b--)o(y[b],g)},i.prototype._condense=function(g){for(var y=g.length-1,E=void 0;y>=0;y--)g[y].children.length===0?y>0?(E=g[y-1].children).splice(E.indexOf(g[y]),1):this.clear():s(g[y],this.toBBox)},i})});var iRe=V((a8,o8)=>{(function(t,r){typeof a8=="object"&&typeof o8!="undefined"?o8.exports=r():typeof define=="function"&&define.amd?define(r):(t=t||self,t.TinyQueue=r())})(a8,function(){"use strict";var t=function(i,n){if(i===void 0&&(i=[]),n===void 0&&(n=r),this.data=i,this.length=this.data.length,this.compare=n,this.length>0)for(var s=(this.length>>1)-1;s>=0;s--)this._down(s)};t.prototype.push=function(i){this.data.push(i),this.length++,this._up(this.length-1)},t.prototype.pop=function(){if(this.length!==0){var i=this.data[0],n=this.data.pop();return this.length--,this.length>0&&(this.data[0]=n,this._down(0)),i}},t.prototype.peek=function(){return this.data[0]},t.prototype._up=function(i){for(var n=this,s=n.data,a=n.compare,o=s[i];i>0;){var l=i-1>>1,c=s[l];if(a(o,c)>=0)break;s[i]=c,i=l}s[i]=o},t.prototype._down=function(i){for(var n=this,s=n.data,a=n.compare,o=this.length>>1,l=s[i];i<o;){var c=(i<<1)+1,u=s[c],h=c+1;if(h<this.length&&a(s[h],u)<0&&(c=h,u=s[h]),a(u,l)>=0)break;s[i]=u,i=c}s[i]=l};function r(e,i){return e<i?-1:e>i?1:0}return t})});var sRe=V((rmr,nRe)=>{nRe.exports=function(r,e,i,n){var s=r[0],a=r[1],o=!1;i===void 0&&(i=0),n===void 0&&(n=e.length);for(var l=(n-i)/2,c=0,u=l-1;c<l;u=c++){var h=e[i+c*2+0],p=e[i+c*2+1],d=e[i+u*2+0],f=e[i+u*2+1],m=p>a!=f>a&&s<(d-h)*(a-p)/(f-p)+h;m&&(o=!o)}return o}});var oRe=V((imr,aRe)=>{aRe.exports=function(r,e,i,n){var s=r[0],a=r[1],o=!1;i===void 0&&(i=0),n===void 0&&(n=e.length);for(var l=n-i,c=0,u=l-1;c<l;u=c++){var h=e[c+i][0],p=e[c+i][1],d=e[u+i][0],f=e[u+i][1],m=p>a!=f>a&&s<(d-h)*(a-p)/(f-p)+h;m&&(o=!o)}return o}});var uRe=V((nmr,LA)=>{var lRe=sRe(),cRe=oRe();LA.exports=function(r,e,i,n){return e.length>0&&Array.isArray(e[0])?cRe(r,e,i,n):lRe(r,e,i,n)};LA.exports.nested=cRe;LA.exports.flat=lRe});var pRe=V((FA,hRe)=>{(function(t,r){typeof FA=="object"&&typeof hRe!="undefined"?r(FA):typeof define=="function"&&define.amd?define(["exports"],r):r((t=t||self).predicates={})})(FA,function(t){"use strict";let e=33306690738754706e-32;function i(d,f,m,g,y){let E,b,x,S,D=f[0],P=g[0],_=0,w=0;P>D==P>-D?(E=D,D=f[++_]):(E=P,P=g[++w]);let F=0;if(_<d&&w<m)for(P>D==P>-D?(x=E-((b=D+E)-D),D=f[++_]):(x=E-((b=P+E)-P),P=g[++w]),E=b,x!==0&&(y[F++]=x);_<d&&w<m;)P>D==P>-D?(x=E-((b=E+D)-(S=b-E))+(D-S),D=f[++_]):(x=E-((b=E+P)-(S=b-E))+(P-S),P=g[++w]),E=b,x!==0&&(y[F++]=x);for(;_<d;)x=E-((b=E+D)-(S=b-E))+(D-S),D=f[++_],E=b,x!==0&&(y[F++]=x);for(;w<m;)x=E-((b=E+P)-(S=b-E))+(P-S),P=g[++w],E=b,x!==0&&(y[F++]=x);return E===0&&F!==0||(y[F++]=E),F}function n(d){return new Float64Array(d)}let s=33306690738754716e-32,a=22204460492503146e-32,o=11093356479670487e-47,l=n(4),c=n(8),u=n(12),h=n(16),p=n(4);t.orient2d=function(d,f,m,g,y,E){let b=(f-E)*(m-y),x=(d-y)*(g-E),S=b-x;if(b===0||x===0||b>0!=x>0)return S;let D=Math.abs(b+x);return Math.abs(S)>=s*D?S:-function(P,_,w,F,X,H,he){let C,N,k,G,U,j,ee,ae,se,ue,ve,be,de,we,Fe,je,Oe,dt,Be=P-X,ke=w-X,nt=_-H,bt=F-H;U=(Fe=(ae=Be-(ee=(j=134217729*Be)-(j-Be)))*(ue=bt-(se=(j=134217729*bt)-(j-bt)))-((we=Be*bt)-ee*se-ae*se-ee*ue))-(ve=Fe-(Oe=(ae=nt-(ee=(j=134217729*nt)-(j-nt)))*(ue=ke-(se=(j=134217729*ke)-(j-ke)))-((je=nt*ke)-ee*se-ae*se-ee*ue))),l[0]=Fe-(ve+U)+(U-Oe),U=(de=we-((be=we+ve)-(U=be-we))+(ve-U))-(ve=de-je),l[1]=de-(ve+U)+(U-je),U=(dt=be+ve)-be,l[2]=be-(dt-U)+(ve-U),l[3]=dt;let mt=function(me,z){let Y=z[0];for(let xe=1;xe<me;xe++)Y+=z[xe];return Y}(4,l),_e=a*he;if(mt>=_e||-mt>=_e||(C=P-(Be+(U=P-Be))+(U-X),k=w-(ke+(U=w-ke))+(U-X),N=_-(nt+(U=_-nt))+(U-H),G=F-(bt+(U=F-bt))+(U-H),C===0&&N===0&&k===0&&G===0)||(_e=o*he+e*Math.abs(mt),(mt+=Be*G+bt*C-(nt*k+ke*N))>=_e||-mt>=_e))return mt;U=(Fe=(ae=C-(ee=(j=134217729*C)-(j-C)))*(ue=bt-(se=(j=134217729*bt)-(j-bt)))-((we=C*bt)-ee*se-ae*se-ee*ue))-(ve=Fe-(Oe=(ae=N-(ee=(j=134217729*N)-(j-N)))*(ue=ke-(se=(j=134217729*ke)-(j-ke)))-((je=N*ke)-ee*se-ae*se-ee*ue))),p[0]=Fe-(ve+U)+(U-Oe),U=(de=we-((be=we+ve)-(U=be-we))+(ve-U))-(ve=de-je),p[1]=de-(ve+U)+(U-je),U=(dt=be+ve)-be,p[2]=be-(dt-U)+(ve-U),p[3]=dt;let J=i(4,l,4,p,c);U=(Fe=(ae=Be-(ee=(j=134217729*Be)-(j-Be)))*(ue=G-(se=(j=134217729*G)-(j-G)))-((we=Be*G)-ee*se-ae*se-ee*ue))-(ve=Fe-(Oe=(ae=nt-(ee=(j=134217729*nt)-(j-nt)))*(ue=k-(se=(j=134217729*k)-(j-k)))-((je=nt*k)-ee*se-ae*se-ee*ue))),p[0]=Fe-(ve+U)+(U-Oe),U=(de=we-((be=we+ve)-(U=be-we))+(ve-U))-(ve=de-je),p[1]=de-(ve+U)+(U-je),U=(dt=be+ve)-be,p[2]=be-(dt-U)+(ve-U),p[3]=dt;let $=i(J,c,4,p,u);U=(Fe=(ae=C-(ee=(j=134217729*C)-(j-C)))*(ue=G-(se=(j=134217729*G)-(j-G)))-((we=C*G)-ee*se-ae*se-ee*ue))-(ve=Fe-(Oe=(ae=N-(ee=(j=134217729*N)-(j-N)))*(ue=k-(se=(j=134217729*k)-(j-k)))-((je=N*k)-ee*se-ae*se-ee*ue))),p[0]=Fe-(ve+U)+(U-Oe),U=(de=we-((be=we+ve)-(U=be-we))+(ve-U))-(ve=de-je),p[1]=de-(ve+U)+(U-je),U=(dt=be+ve)-be,p[2]=be-(dt-U)+(ve-U),p[3]=dt;let re=i($,u,4,p,h);return h[re-1]}(d,f,m,g,y,E,D)},t.orient2dfast=function(d,f,m,g,y,E){return(f-E)*(m-y)-(d-y)*(g-E)},Object.defineProperty(t,"__esModule",{value:!0})})});var yRe=V((smr,h8)=>{"use strict";var dRe=rRe(),UA=iRe(),Y3t=uRe(),X3t=pRe().orient2d;UA.default&&(UA=UA.default);h8.exports=vRe;h8.exports.default=vRe;function vRe(t,r,e){r=Math.max(0,r===void 0?2:r),e=e||0;var i=Q3t(t),n=new dRe(16);n.toBBox=function(E){return{minX:E[0],minY:E[1],maxX:E[0],maxY:E[1]}},n.compareMinX=function(E,b){return E[0]-b[0]},n.compareMinY=function(E,b){return E[1]-b[1]},n.load(t);for(var s=[],a=0,o;a<i.length;a++){var l=i[a];n.remove(l),o=gRe(l,o),s.push(o)}var c=new dRe(16);for(a=0;a<s.length;a++)c.insert(l8(s[a]));for(var u=r*r,h=e*e;s.length;){var p=s.shift(),d=p.p,f=p.next.p,m=c8(d,f);if(!(m<h)){var g=m/u;l=$3t(n,p.prev.p,d,f,p.next.next.p,g,c),l&&Math.min(c8(l,d),c8(l,f))<=g&&(s.push(p),s.push(gRe(l,p)),n.remove(l),c.remove(p),c.insert(l8(p)),c.insert(l8(p.next)))}}p=o;var y=[];do y.push(p.p),p=p.next;while(p!==o);return y.push(p.p),y}function $3t(t,r,e,i,n,s,a){for(var o=new UA([],Z3t),l=t.data;l;){for(var c=0;c<l.children.length;c++){var u=l.children[c],h=l.leaf?u8(u,e,i):K3t(e,i,u);h>s||o.push({node:u,dist:h})}for(;o.length&&!o.peek().node.children;){var p=o.pop(),d=p.node,f=u8(d,r,e),m=u8(d,i,n);if(p.dist<f&&p.dist<m&&mRe(e,d,a)&&mRe(i,d,a))return d}l=o.pop(),l&&(l=l.node)}return null}function Z3t(t,r){return t.dist-r.dist}function K3t(t,r,e){if(fRe(t,e)||fRe(r,e))return 0;var i=HA(t[0],t[1],r[0],r[1],e.minX,e.minY,e.maxX,e.minY);if(i===0)return 0;var n=HA(t[0],t[1],r[0],r[1],e.minX,e.minY,e.minX,e.maxY);if(n===0)return 0;var s=HA(t[0],t[1],r[0],r[1],e.maxX,e.minY,e.maxX,e.maxY);if(s===0)return 0;var a=HA(t[0],t[1],r[0],r[1],e.minX,e.maxY,e.maxX,e.maxY);return a===0?0:Math.min(i,n,s,a)}function fRe(t,r){return t[0]>=r.minX&&t[0]<=r.maxX&&t[1]>=r.minY&&t[1]<=r.maxY}function mRe(t,r,e){for(var i=Math.min(t[0],r[0]),n=Math.min(t[1],r[1]),s=Math.max(t[0],r[0]),a=Math.max(t[1],r[1]),o=e.search({minX:i,minY:n,maxX:s,maxY:a}),l=0;l<o.length;l++)if(J3t(o[l].p,o[l].next.p,t,r))return!1;return!0}function BT(t,r,e){return X3t(t[0],t[1],r[0],r[1],e[0],e[1])}function J3t(t,r,e,i){return t!==i&&r!==e&&BT(t,r,e)>0!=BT(t,r,i)>0&&BT(e,i,t)>0!=BT(e,i,r)>0}function l8(t){var r=t.p,e=t.next.p;return t.minX=Math.min(r[0],e[0]),t.minY=Math.min(r[1],e[1]),t.maxX=Math.max(r[0],e[0]),t.maxY=Math.max(r[1],e[1]),t}function Q3t(t){for(var r=t[0],e=t[0],i=t[0],n=t[0],s=0;s<t.length;s++){var a=t[s];a[0]<r[0]&&(r=a),a[0]>i[0]&&(i=a),a[1]<e[1]&&(e=a),a[1]>n[1]&&(n=a)}var o=[r,e,i,n],l=o.slice();for(s=0;s<t.length;s++)Y3t(t[s],o)||l.push(t[s]);return tPt(l)}function gRe(t,r){var e={p:t,prev:null,next:null,minX:0,minY:0,maxX:0,maxY:0};return r?(e.next=r.next,e.prev=r,r.next.prev=e,r.next=e):(e.prev=e,e.next=e),e}function c8(t,r){var e=t[0]-r[0],i=t[1]-r[1];return e*e+i*i}function u8(t,r,e){var i=r[0],n=r[1],s=e[0]-i,a=e[1]-n;if(s!==0||a!==0){var o=((t[0]-i)*s+(t[1]-n)*a)/(s*s+a*a);o>1?(i=e[0],n=e[1]):o>0&&(i+=s*o,n+=a*o)}return s=t[0]-i,a=t[1]-n,s*s+a*a}function HA(t,r,e,i,n,s,a,o){var l=e-t,c=i-r,u=a-n,h=o-s,p=t-n,d=r-s,f=l*l+c*c,m=l*u+c*h,g=u*u+h*h,y=l*p+c*d,E=u*p+h*d,b=f*g-m*m,x,S,D,P,_=b,w=b;b===0?(S=0,_=1,P=E,w=g):(S=m*E-g*y,P=f*E-m*y,S<0?(S=0,P=E,w=g):S>_&&(S=_,P=E+m,w=g)),P<0?(P=0,-y<0?S=0:-y>f?S=_:(S=-y,_=f)):P>w&&(P=w,-y+m<0?S=0:-y+m>f?S=_:(S=-y+m,_=f)),x=S===0?0:S/_,D=P===0?0:P/w;var F=(1-x)*t+x*e,X=(1-x)*r+x*i,H=(1-D)*n+D*a,he=(1-D)*s+D*o,C=H-F,N=he-X;return C*C+N*N}function ePt(t,r){return t[0]===r[0]?t[1]-r[1]:t[0]-r[0]}function tPt(t){t.sort(ePt);for(var r=[],e=0;e<t.length;e++){for(;r.length>=2&&BT(r[r.length-2],r[r.length-1],t[e])<=0;)r.pop();r.push(t[e])}for(var i=[],n=t.length-1;n>=0;n--){for(;i.length>=2&&BT(i[i.length-2],i[i.length-1],t[n])<=0;)i.pop();i.push(t[n])}return i.pop(),r.pop(),r.concat(i)}});var BRe=V((omr,URe)=>{function fPt(){var t,r=0,e=!1;function i(n,s){return t.list.push({type:n,data:s?JSON.parse(JSON.stringify(s)):void 0}),t}return t={list:[],segmentId:function(){return r++},checkIntersection:function(n,s){return i("check",{seg1:n,seg2:s})},segmentChop:function(n,s){return i("div_seg",{seg:n,pt:s}),i("chop",{seg:n,pt:s})},statusRemove:function(n){return i("pop_seg",{seg:n})},segmentUpdate:function(n){return i("seg_update",{seg:n})},segmentNew:function(n,s){return i("new_seg",{seg:n,primary:s})},segmentRemove:function(n){return i("rem_seg",{seg:n})},tempStatus:function(n,s,a){return i("temp_status",{seg:n,above:s,below:a})},rewind:function(n){return i("rewind",{seg:n})},status:function(n,s,a){return i("status",{seg:n,above:s,below:a})},vert:function(n){return n===e?t:(e=n,i("vert",{x:n}))},log:function(n){return typeof n!="string"&&(n=JSON.stringify(n,!1," ")),i("log",{txt:n})},reset:function(){return i("reset")},selected:function(n){return i("selected",{segs:n})},chainStart:function(n){return i("chain_start",{seg:n})},chainRemoveHead:function(n,s){return i("chain_rem_head",{index:n,pt:s})},chainRemoveTail:function(n,s){return i("chain_rem_tail",{index:n,pt:s})},chainNew:function(n,s){return i("chain_new",{pt1:n,pt2:s})},chainMatch:function(n){return i("chain_match",{index:n})},chainClose:function(n){return i("chain_close",{index:n})},chainAddHead:function(n,s){return i("chain_add_head",{index:n,pt:s})},chainAddTail:function(n,s){return i("chain_add_tail",{index:n,pt:s})},chainConnect:function(n,s){return i("chain_con",{index1:n,index2:s})},chainReverse:function(n){return i("chain_rev",{index:n})},chainJoin:function(n,s){return i("chain_join",{index1:n,index2:s})},done:function(){return i("done")}},t}URe.exports=fPt});var GRe=V((lmr,kRe)=>{function mPt(t){typeof t!="number"&&(t=1e-10);var r={epsilon:function(e){return typeof e=="number"&&(t=e),t},pointAboveOrOnLine:function(e,i,n){var s=i[0],a=i[1],o=n[0],l=n[1],c=e[0],u=e[1];return(o-s)*(u-a)-(l-a)*(c-s)>=-t},pointBetween:function(e,i,n){var s=e[1]-i[1],a=n[0]-i[0],o=e[0]-i[0],l=n[1]-i[1],c=o*a+s*l;if(c<t)return!1;var u=a*a+l*l;return!(c-u>-t)},pointsSameX:function(e,i){return Math.abs(e[0]-i[0])<t},pointsSameY:function(e,i){return Math.abs(e[1]-i[1])<t},pointsSame:function(e,i){return r.pointsSameX(e,i)&&r.pointsSameY(e,i)},pointsCompare:function(e,i){return r.pointsSameX(e,i)?r.pointsSameY(e,i)?0:e[1]<i[1]?-1:1:e[0]<i[0]?-1:1},pointsCollinear:function(e,i,n){var s=e[0]-i[0],a=e[1]-i[1],o=i[0]-n[0],l=i[1]-n[1];return Math.abs(s*l-o*a)<t},linesIntersect:function(e,i,n,s){var a=i[0]-e[0],o=i[1]-e[1],l=s[0]-n[0],c=s[1]-n[1],u=a*c-o*l;if(Math.abs(u)<t)return!1;var h=e[0]-n[0],p=e[1]-n[1],d=(l*p-c*h)/u,f=(a*p-o*h)/u,m={alongA:0,alongB:0,pt:[e[0]+d*a,e[1]+d*o]};return d<=-t?m.alongA=-2:d<t?m.alongA=-1:d-1<=-t?m.alongA=0:d-1<t?m.alongA=1:m.alongA=2,f<=-t?m.alongB=-2:f<t?m.alongB=-1:f-1<=-t?m.alongB=0:f-1<t?m.alongB=1:m.alongB=2,m},pointInsideRegion:function(e,i){for(var n=e[0],s=e[1],a=i[i.length-1][0],o=i[i.length-1][1],l=!1,c=0;c<i.length;c++){var u=i[c][0],h=i[c][1];h-s>t!=o-s>t&&(a-u)*(s-h)/(o-h)+u-n>t&&(l=!l),a=u,o=h}return l}};return r}kRe.exports=mPt});var zRe=V((cmr,VRe)=>{var gPt={create:function(){var t={root:{root:!0,next:null},exists:function(r){return!(r===null||r===t.root)},isEmpty:function(){return t.root.next===null},getHead:function(){return t.root.next},insertBefore:function(r,e){for(var i=t.root,n=t.root.next;n!==null;){if(e(n)){r.prev=n.prev,r.next=n,n.prev.next=r,n.prev=r;return}i=n,n=n.next}i.next=r,r.prev=i,r.next=null},findTransition:function(r){for(var e=t.root,i=t.root.next;i!==null&&!r(i);)e=i,i=i.next;return{before:e===t.root?null:e,after:i,insert:function(n){return n.prev=e,n.next=i,e.next=n,i!==null&&(i.prev=n),n}}}};return t},node:function(t){return t.prev=null,t.next=null,t.remove=function(){t.prev.next=t.next,t.next&&(t.next.prev=t.prev),t.prev=null,t.next=null},t}};VRe.exports=gPt});var WRe=V((umr,jRe)=>{var PI=zRe();function vPt(t,r,e){function i(f,m){return{id:e?e.segmentId():-1,start:f,end:m,myFill:{above:null,below:null},otherFill:null}}function n(f,m,g){return{id:e?e.segmentId():-1,start:f,end:m,myFill:{above:g.myFill.above,below:g.myFill.below},otherFill:null}}var s=PI.create();function a(f,m,g,y,E,b){var x=r.pointsCompare(m,E);return x!==0?x:r.pointsSame(g,b)?0:f!==y?f?1:-1:r.pointAboveOrOnLine(g,y?E:b,y?b:E)?1:-1}function o(f,m){s.insertBefore(f,function(g){var y=a(f.isStart,f.pt,m,g.isStart,g.pt,g.other.pt);return y<0})}function l(f,m){var g=PI.node({isStart:!0,pt:f.start,seg:f,primary:m,other:null,status:null});return o(g,f.end),g}function c(f,m,g){var y=PI.node({isStart:!1,pt:m.end,seg:m,primary:g,other:f,status:null});f.other=y,o(y,f.pt)}function u(f,m){var g=l(f,m);return c(g,f,m),g}function h(f,m){e&&e.segmentChop(f.seg,m),f.other.remove(),f.seg.end=m,f.other.pt=m,o(f.other,f.pt)}function p(f,m){var g=n(m,f.seg.end,f.seg);return h(f,m),u(g,f.primary)}function d(f,m){var g=PI.create();function y(N,k){var G=N.seg.start,U=N.seg.end,j=k.seg.start,ee=k.seg.end;return r.pointsCollinear(G,j,ee)?r.pointsCollinear(U,j,ee)||r.pointAboveOrOnLine(U,j,ee)?1:-1:r.pointAboveOrOnLine(G,j,ee)?1:-1}function E(N){return g.findTransition(function(k){var G=y(N,k.ev);return G>0})}function b(N,k){var G=N.seg,U=k.seg,j=G.start,ee=G.end,ae=U.start,se=U.end;e&&e.checkIntersection(G,U);var ue=r.linesIntersect(j,ee,ae,se);if(ue===!1){if(!r.pointsCollinear(j,ee,ae)||r.pointsSame(j,se)||r.pointsSame(ee,ae))return!1;var ve=r.pointsSame(j,ae),be=r.pointsSame(ee,se);if(ve&&be)return k;var de=!ve&&r.pointBetween(j,ae,se),we=!be&&r.pointBetween(ee,ae,se);if(ve)return we?p(k,ee):p(N,se),k;de&&(be||(we?p(k,ee):p(N,se)),p(k,j))}else ue.alongA===0&&(ue.alongB===-1?p(N,ae):ue.alongB===0?p(N,ue.pt):ue.alongB===1&&p(N,se)),ue.alongB===0&&(ue.alongA===-1?p(k,j):ue.alongA===0?p(k,ue.pt):ue.alongA===1&&p(k,ee));return!1}for(var x=[];!s.isEmpty();){var S=s.getHead();if(e&&e.vert(S.pt[0]),S.isStart){let N=function(){if(P){var k=b(S,P);if(k)return k}return _?b(S,_):!1};var C=N;e&&e.segmentNew(S.seg,S.primary);var D=E(S),P=D.before?D.before.ev:null,_=D.after?D.after.ev:null;e&&e.tempStatus(S.seg,P?P.seg:!1,_?_.seg:!1);var w=N();if(w){if(t){var F;S.seg.myFill.below===null?F=!0:F=S.seg.myFill.above!==S.seg.myFill.below,F&&(w.seg.myFill.above=!w.seg.myFill.above)}else w.seg.otherFill=S.seg.myFill;e&&e.segmentUpdate(w.seg),S.other.remove(),S.remove()}if(s.getHead()!==S){e&&e.rewind(S.seg);continue}if(t){var F;S.seg.myFill.below===null?F=!0:F=S.seg.myFill.above!==S.seg.myFill.below,_?S.seg.myFill.below=_.seg.myFill.above:S.seg.myFill.below=f,F?S.seg.myFill.above=!S.seg.myFill.below:S.seg.myFill.above=S.seg.myFill.below}else if(S.seg.otherFill===null){var X;_?S.primary===_.primary?X=_.seg.otherFill.above:X=_.seg.myFill.above:X=S.primary?m:f,S.seg.otherFill={above:X,below:X}}e&&e.status(S.seg,P?P.seg:!1,_?_.seg:!1),S.other.status=D.insert(PI.node({ev:S}))}else{var H=S.status;if(H===null)throw new Error("PolyBool: Zero-length segment detected; your epsilon is probably too small or too large");if(g.exists(H.prev)&&g.exists(H.next)&&b(H.prev.ev,H.next.ev),e&&e.statusRemove(H.ev.seg),H.remove(),!S.primary){var he=S.seg.myFill;S.seg.myFill=S.seg.otherFill,S.seg.otherFill=he}x.push(S.seg)}s.getHead().remove()}return e&&e.done(),x}return t?{addRegion:function(f){for(var m,g=f[f.length-1],y=0;y<f.length;y++){m=g,g=f[y];var E=r.pointsCompare(m,g);E!==0&&u(i(E<0?m:g,E<0?g:m),!0)}},calculate:function(f){return d(f,!1)}}:{calculate:function(f,m,g,y){return f.forEach(function(E){u(n(E.start,E.end,E),!0)}),g.forEach(function(E){u(n(E.start,E.end,E),!1)}),d(m,y)}}}jRe.exports=vPt});var YRe=V((hmr,qRe)=>{function yPt(t,r,e){var i=[],n=[];return t.forEach(function(s){var a=s.start,o=s.end;if(r.pointsSame(a,o)){console.warn("PolyBool: Warning: Zero-length segment detected; your epsilon is probably too small or too large");return}e&&e.chainStart(s);var l={index:0,matches_head:!1,matches_pt1:!1},c={index:0,matches_head:!1,matches_pt1:!1},u=l;function h(C,N,k){return u.index=C,u.matches_head=N,u.matches_pt1=k,u===l?(u=c,!1):(u=null,!0)}for(var p=0;p<i.length;p++){var d=i[p],f=d[0],m=d[1],g=d[d.length-1],y=d[d.length-2];if(r.pointsSame(f,a)){if(h(p,!0,!0))break}else if(r.pointsSame(f,o)){if(h(p,!0,!1))break}else if(r.pointsSame(g,a)){if(h(p,!1,!0))break}else if(r.pointsSame(g,o)&&h(p,!1,!1))break}if(u===l){i.push([a,o]),e&&e.chainNew(a,o);return}if(u===c){e&&e.chainMatch(l.index);var E=l.index,b=l.matches_pt1?o:a,x=l.matches_head,d=i[E],S=x?d[0]:d[d.length-1],D=x?d[1]:d[d.length-2],P=x?d[d.length-1]:d[0],_=x?d[d.length-2]:d[1];if(r.pointsCollinear(D,S,b)&&(x?(e&&e.chainRemoveHead(l.index,b),d.shift()):(e&&e.chainRemoveTail(l.index,b),d.pop()),S=D),r.pointsSame(P,b)){i.splice(E,1),r.pointsCollinear(_,P,S)&&(x?(e&&e.chainRemoveTail(l.index,S),d.pop()):(e&&e.chainRemoveHead(l.index,S),d.shift())),e&&e.chainClose(l.index),n.push(d);return}x?(e&&e.chainAddHead(l.index,b),d.unshift(b)):(e&&e.chainAddTail(l.index,b),d.push(b));return}function w(C){e&&e.chainReverse(C),i[C].reverse()}function F(C,N){var k=i[C],G=i[N],U=k[k.length-1],j=k[k.length-2],ee=G[0],ae=G[1];r.pointsCollinear(j,U,ee)&&(e&&e.chainRemoveTail(C,U),k.pop(),U=j),r.pointsCollinear(U,ee,ae)&&(e&&e.chainRemoveHead(N,ee),G.shift()),e&&e.chainJoin(C,N),i[C]=k.concat(G),i.splice(N,1)}var X=l.index,H=c.index;e&&e.chainConnect(X,H);var he=i[X].length<i[H].length;l.matches_head?c.matches_head?he?(w(X),F(X,H)):(w(H),F(H,X)):F(H,X):c.matches_head?F(X,H):he?(w(X),F(H,X)):(w(H),F(X,H))}),n}qRe.exports=yPt});var $Re=V((pmr,XRe)=>{function NI(t,r,e){var i=[];return t.forEach(function(n){var s=(n.myFill.above?8:0)+(n.myFill.below?4:0)+(n.otherFill&&n.otherFill.above?2:0)+(n.otherFill&&n.otherFill.below?1:0);r[s]!==0&&i.push({id:e?e.segmentId():-1,start:n.start,end:n.end,myFill:{above:r[s]===1,below:r[s]===2},otherFill:null})}),e&&e.selected(i),i}var TPt={union:function(t,r){return NI(t,[0,2,1,0,2,2,0,0,1,0,1,0,0,0,0,0],r)},intersect:function(t,r){return NI(t,[0,0,0,0,0,2,0,2,0,0,1,1,0,2,1,0],r)},difference:function(t,r){return NI(t,[0,0,0,0,2,0,2,0,1,1,0,0,0,1,2,0],r)},differenceRev:function(t,r){return NI(t,[0,2,1,0,0,0,1,1,0,2,0,2,0,0,0,0],r)},xor:function(t,r){return NI(t,[0,2,1,0,2,0,0,1,1,0,0,2,0,1,2,0],r)}};XRe.exports=TPt});var KRe=V((dmr,ZRe)=>{var EPt={toPolygon:function(t,r){function e(s){if(s.length<=0)return t.segments({inverted:!1,regions:[]});function a(c){var u=c.slice(0,c.length-1);return t.segments({inverted:!1,regions:[u]})}for(var o=a(s[0]),l=1;l<s.length;l++)o=t.selectDifference(t.combine(o,a(s[l])));return o}if(r.type==="Polygon")return t.polygon(e(r.coordinates));if(r.type==="MultiPolygon"){for(var i=t.segments({inverted:!1,regions:[]}),n=0;n<r.coordinates.length;n++)i=t.selectUnion(t.combine(i,e(r.coordinates[n])));return t.polygon(i)}throw new Error("PolyBool: Cannot convert GeoJSON object to PolyBool polygon")},fromPolygon:function(t,r,e){e=t.polygon(t.segments(e));function i(d,f){return r.pointInsideRegion([(d[0][0]+d[1][0])*.5,(d[0][1]+d[1][1])*.5],f)}function n(d){return{region:d,children:[]}}var s=n(null);function a(d,f){for(var m=0;m<d.children.length;m++){var g=d.children[m];if(i(f,g.region)){a(g,f);return}}for(var y=n(f),m=0;m<d.children.length;m++){var g=d.children[m];i(g.region,f)&&(y.children.push(g),d.children.splice(m,1),m--)}d.children.push(y)}for(var o=0;o<e.regions.length;o++){var l=e.regions[o];l.length<3||a(s,l)}function c(d,f){for(var m=0,g=d[d.length-1][0],y=d[d.length-1][1],E=[],b=0;b<d.length;b++){var x=d[b][0],S=d[b][1];E.push([x,S]),m+=S*g-x*y,g=x,y=S}var D=m<0;return D!==f&&E.reverse(),E.push([E[0][0],E[0][1]]),E}var u=[];function h(d){var f=[c(d.region,!1)];u.push(f);for(var m=0;m<d.children.length;m++)f.push(p(d.children[m]))}function p(d){for(var f=0;f<d.children.length;f++)h(d.children[f]);return c(d.region,!0)}for(var o=0;o<s.children.length;o++)h(s.children[o]);return u.length<=0?{type:"Polygon",coordinates:[]}:u.length==1?{type:"Polygon",coordinates:u[0]}:{type:"MultiPolygon",coordinates:u}}};ZRe.exports=EPt});var tMe=V((fmr,eMe)=>{var bPt=BRe(),xPt=GRe(),JRe=WRe(),IPt=YRe(),LI=$Re(),QRe=KRe(),ql=!1,FI=xPt(),Eo;Eo={buildLog:function(t){return t===!0?ql=bPt():t===!1&&(ql=!1),ql===!1?!1:ql.list},epsilon:function(t){return FI.epsilon(t)},segments:function(t){var r=JRe(!0,FI,ql);return t.regions.forEach(r.addRegion),{segments:r.calculate(t.inverted),inverted:t.inverted}},combine:function(t,r){var e=JRe(!1,FI,ql);return{combined:e.calculate(t.segments,t.inverted,r.segments,r.inverted),inverted1:t.inverted,inverted2:r.inverted}},selectUnion:function(t){return{segments:LI.union(t.combined,ql),inverted:t.inverted1||t.inverted2}},selectIntersect:function(t){return{segments:LI.intersect(t.combined,ql),inverted:t.inverted1&&t.inverted2}},selectDifference:function(t){return{segments:LI.difference(t.combined,ql),inverted:t.inverted1&&!t.inverted2}},selectDifferenceRev:function(t){return{segments:LI.differenceRev(t.combined,ql),inverted:!t.inverted1&&t.inverted2}},selectXor:function(t){return{segments:LI.xor(t.combined,ql),inverted:t.inverted1!==t.inverted2}},polygon:function(t){return{regions:IPt(t.segments,FI,ql),inverted:t.inverted}},polygonFromGeoJSON:function(t){return QRe.toPolygon(Eo,t)},polygonToGeoJSON:function(t){return QRe.fromPolygon(Eo,FI,t)},union:function(t,r){return HI(t,r,Eo.selectUnion)},intersect:function(t,r){return HI(t,r,Eo.selectIntersect)},difference:function(t,r){return HI(t,r,Eo.selectDifference)},differenceRev:function(t,r){return HI(t,r,Eo.selectDifferenceRev)},xor:function(t,r){return HI(t,r,Eo.selectXor)}};function HI(t,r,e){var i=Eo.segments(t),n=Eo.segments(r),s=Eo.combine(i,n),a=e(s);return Eo.polygon(a)}typeof window=="object"&&(window.PolyBool=Eo);eMe.exports=Eo});var iMe=V((ymr,rMe)=>{rMe.exports=el;function el(t){if(t)return SPt(t)}function SPt(t){for(var r in el.prototype)t[r]=el.prototype[r];return t}el.prototype.on=el.prototype.addEventListener=function(t,r){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(r),this};el.prototype.once=function(t,r){var e=this;this._callbacks=this._callbacks||{};function i(){e.off(t,i),r.apply(this,arguments)}return i.fn=r,this.on(t,i),this};el.prototype.off=el.prototype.removeListener=el.prototype.removeAllListeners=el.prototype.removeEventListener=function(t,r){if(this._callbacks=this._callbacks||{},arguments.length==0)return this._callbacks={},this;var e=this._callbacks[t];if(!e)return this;if(arguments.length==1)return delete this._callbacks[t],this;for(var i,n=0;n<e.length;n++)if(i=e[n],i===r||i.fn===r){e.splice(n,1);break}return this};el.prototype.emit=function(t){this._callbacks=this._callbacks||{};var r=[].slice.call(arguments,1),e=this._callbacks[t];if(e){e=e.slice(0);for(var i=0,n=e.length;i<n;++i)e[i].apply(this,r)}return this};el.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks[t]||[]};el.prototype.hasListeners=function(t){return!!this.listeners(t).length}});var aMe=V((Tmr,sMe)=>{var nMe=iMe();function UI(){nMe.call(this)}UI.prototype=new nMe;sMe.exports=UI;UI.Stream=UI;UI.prototype.pipe=function(t,r){var e=this;function i(u){t.writable&&t.write(u)===!1&&e.pause&&e.pause()}e.on("data",i);function n(){e.readable&&e.resume&&e.resume()}t.on("drain",n),!t._isStdio&&(!r||r.end!==!1)&&(e.on("end",a),e.on("close",o));var s=!1;function a(){s||(s=!0,t.end())}function o(){s||(s=!0,typeof t.destroy=="function"&&t.destroy())}function l(u){if(c(),!this.hasListeners("error"))throw u}e.on("error",l),t.on("error",l);function c(){e.off("data",i),t.off("drain",n),e.off("end",a),e.off("close",o),e.off("error",l),t.off("error",l),e.off("end",c),e.off("close",c),t.off("end",c),t.off("close",c)}return e.on("end",c),e.on("close",c),t.on("end",c),t.on("close",c),t.emit("pipe",e),t}});var Yl=V((jT,kI)=>{(function(){var t,r="4.17.21",e=200,i="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",n="Expected a function",s="Invalid `variable` option passed into `_.template`",a="__lodash_hash_undefined__",o=500,l="__lodash_placeholder__",c=1,u=2,h=4,p=1,d=2,f=1,m=2,g=4,y=8,E=16,b=32,x=64,S=128,D=256,P=512,_=30,w="...",F=800,X=16,H=1,he=2,C=3,N=1/0,k=9007199254740991,G=17976931348623157e292,U=0/0,j=4294967295,ee=j-1,ae=j>>>1,se=[["ary",S],["bind",f],["bindKey",m],["curry",y],["curryRight",E],["flip",P],["partial",b],["partialRight",x],["rearg",D]],ue="[object Arguments]",ve="[object Array]",be="[object AsyncFunction]",de="[object Boolean]",we="[object Date]",Fe="[object DOMException]",je="[object Error]",Oe="[object Function]",dt="[object GeneratorFunction]",Be="[object Map]",ke="[object Number]",nt="[object Null]",bt="[object Object]",mt="[object Promise]",_e="[object Proxy]",J="[object RegExp]",$="[object Set]",re="[object String]",me="[object Symbol]",z="[object Undefined]",Y="[object WeakMap]",xe="[object WeakSet]",Ce="[object ArrayBuffer]",Ge="[object DataView]",Ze="[object Float32Array]",gt="[object Float64Array]",ye="[object Int8Array]",Re="[object Int16Array]",ut="[object Int32Array]",vt="[object Uint8Array]",Et="[object Uint8ClampedArray]",Ct="[object Uint16Array]",Dt="[object Uint32Array]",cr=/\b__p \+= '';/g,Xt=/\b(__p \+=) '' \+/g,gr=/(__e\(.*?\)|\b__t\)) \+\n'';/g,Ae=/&(?:amp|lt|gt|quot|#39);/g,Xe=/[&<>"']/g,lt=RegExp(Ae.source),_t=RegExp(Xe.source),Vt=/<%-([\s\S]+?)%>/g,Rr=/<%([\s\S]+?)%>/g,Ki=/<%=([\s\S]+?)%>/g,Pi=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Fn=/^\w*$/,Kt=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ds=/[\\^$.*+?()[\]{}|]/g,Is=RegExp(ds.source),ic=/^\s+/,um=/\s/,fd=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,js=/\{\n\/\* \[wrapped with (.+)\] \*/,Te=/,? & /,ze=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,Qe=/[()=,{}\[\]\/\s]/,Le=/\\(\\)?/g,Ke=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,Jt=/\w*$/,Ir=/^[-+]0x[0-9a-f]+$/i,Nr=/^0b[01]+$/i,Fr=/^\[object .+?Constructor\]$/,Yr=/^0o[0-7]+$/i,kt=/^(?:0|[1-9]\d*)$/,Vr=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,ei=/($^)/,dn=/['\n\r\u2028\u2029\\]/g,ki="\\ud800-\\udfff",nr="\\u0300-\\u036f",q="\\ufe20-\\ufe2f",er="\\u20d0-\\u20ff",cu=nr+q+er,fn="\\u2700-\\u27bf",Ha="a-z\\xdf-\\xf6\\xf8-\\xff",nc="\\xac\\xb1\\xd7\\xf7",aa="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",oa="\\u2000-\\u206f",on=" \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",En="A-Z\\xc0-\\xd6\\xd8-\\xde",Io="\\ufe0e\\ufe0f",Xn=nc+aa+oa+on,sc="['\u2019]",uu="["+ki+"]",ac="["+Xn+"]",hu="["+cu+"]",hm="\\d+",bh="["+fn+"]",Ni="["+Ha+"]",md="[^"+ki+Xn+hm+fn+Ha+En+"]",pu="\\ud83c[\\udffb-\\udfff]",L0="(?:"+hu+"|"+pu+")",xh="[^"+ki+"]",Ih="(?:\\ud83c[\\udde6-\\uddff]){2}",oc="[\\ud800-\\udbff][\\udc00-\\udfff]",Xi="["+En+"]",al="\\u200d",Zr="(?:"+Ni+"|"+md+")",Qt="(?:"+Xi+"|"+md+")",Sh="(?:"+sc+"(?:d|ll|m|re|s|t|ve))?",K="(?:"+sc+"(?:D|LL|M|RE|S|T|VE))?",Z=L0+"?",ce="["+Io+"]?",oe="(?:"+al+"(?:"+[xh,Ih,oc].join("|")+")"+ce+Z+")*",pe="\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",qe="\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])",et=ce+Z+oe,Ht="(?:"+[bh,Ih,oc].join("|")+")"+et,Mt="(?:"+[xh+hu+"?",hu,Ih,oc,uu].join("|")+")",Ft=RegExp(sc,"g"),$t=RegExp(hu,"g"),pt=RegExp(pu+"(?="+pu+")|"+Mt+et,"g"),qt=RegExp([Xi+"?"+Ni+"+"+Sh+"(?="+[ac,Xi,"$"].join("|")+")",Qt+"+"+K+"(?="+[ac,Xi+Zr,"$"].join("|")+")",Xi+"?"+Zr+"+"+Sh,Xi+"+"+K,qe,pe,hm,Ht].join("|"),"g"),zt=RegExp("["+al+ki+cu+Io+"]"),ur=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,sr=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],xi=-1,ar={};ar[Ze]=ar[gt]=ar[ye]=ar[Re]=ar[ut]=ar[vt]=ar[Et]=ar[Ct]=ar[Dt]=!0,ar[ue]=ar[ve]=ar[Ce]=ar[de]=ar[Ge]=ar[we]=ar[je]=ar[Oe]=ar[Be]=ar[ke]=ar[bt]=ar[J]=ar[$]=ar[re]=ar[Y]=!1;var Zt={};Zt[ue]=Zt[ve]=Zt[Ce]=Zt[Ge]=Zt[de]=Zt[we]=Zt[Ze]=Zt[gt]=Zt[ye]=Zt[Re]=Zt[ut]=Zt[Be]=Zt[ke]=Zt[bt]=Zt[J]=Zt[$]=Zt[re]=Zt[me]=Zt[vt]=Zt[Et]=Zt[Ct]=Zt[Dt]=!0,Zt[je]=Zt[Oe]=Zt[Y]=!1;var ti={\u00C0:"A",\u00C1:"A",\u00C2:"A",\u00C3:"A",\u00C4:"A",\u00C5:"A",\u00E0:"a",\u00E1:"a",\u00E2:"a",\u00E3:"a",\u00E4:"a",\u00E5:"a",\u00C7:"C",\u00E7:"c",\u00D0:"D",\u00F0:"d",\u00C8:"E",\u00C9:"E",\u00CA:"E",\u00CB:"E",\u00E8:"e",\u00E9:"e",\u00EA:"e",\u00EB:"e",\u00CC:"I",\u00CD:"I",\u00CE:"I",\u00CF:"I",\u00EC:"i",\u00ED:"i",\u00EE:"i",\u00EF:"i",\u00D1:"N",\u00F1:"n",\u00D2:"O",\u00D3:"O",\u00D4:"O",\u00D5:"O",\u00D6:"O",\u00D8:"O",\u00F2:"o",\u00F3:"o",\u00F4:"o",\u00F5:"o",\u00F6:"o",\u00F8:"o",\u00D9:"U",\u00DA:"U",\u00DB:"U",\u00DC:"U",\u00F9:"u",\u00FA:"u",\u00FB:"u",\u00FC:"u",\u00DD:"Y",\u00FD:"y",\u00FF:"y",\u00C6:"Ae",\u00E6:"ae",\u00DE:"Th",\u00FE:"th",\u00DF:"ss",\u0100:"A",\u0102:"A",\u0104:"A",\u0101:"a",\u0103:"a",\u0105:"a",\u0106:"C",\u0108:"C",\u010A:"C",\u010C:"C",\u0107:"c",\u0109:"c",\u010B:"c",\u010D:"c",\u010E:"D",\u0110:"D",\u010F:"d",\u0111:"d",\u0112:"E",\u0114:"E",\u0116:"E",\u0118:"E",\u011A:"E",\u0113:"e",\u0115:"e",\u0117:"e",\u0119:"e",\u011B:"e",\u011C:"G",\u011E:"G",\u0120:"G",\u0122:"G",\u011D:"g",\u011F:"g",\u0121:"g",\u0123:"g",\u0124:"H",\u0126:"H",\u0125:"h",\u0127:"h",\u0128:"I",\u012A:"I",\u012C:"I",\u012E:"I",\u0130:"I",\u0129:"i",\u012B:"i",\u012D:"i",\u012F:"i",\u0131:"i",\u0134:"J",\u0135:"j",\u0136:"K",\u0137:"k",\u0138:"k",\u0139:"L",\u013B:"L",\u013D:"L",\u013F:"L",\u0141:"L",\u013A:"l",\u013C:"l",\u013E:"l",\u0140:"l",\u0142:"l",\u0143:"N",\u0145:"N",\u0147:"N",\u014A:"N",\u0144:"n",\u0146:"n",\u0148:"n",\u014B:"n",\u014C:"O",\u014E:"O",\u0150:"O",\u014D:"o",\u014F:"o",\u0151:"o",\u0154:"R",\u0156:"R",\u0158:"R",\u0155:"r",\u0157:"r",\u0159:"r",\u015A:"S",\u015C:"S",\u015E:"S",\u0160:"S",\u015B:"s",\u015D:"s",\u015F:"s",\u0161:"s",\u0162:"T",\u0164:"T",\u0166:"T",\u0163:"t",\u0165:"t",\u0167:"t",\u0168:"U",\u016A:"U",\u016C:"U",\u016E:"U",\u0170:"U",\u0172:"U",\u0169:"u",\u016B:"u",\u016D:"u",\u016F:"u",\u0171:"u",\u0173:"u",\u0174:"W",\u0175:"w",\u0176:"Y",\u0177:"y",\u0178:"Y",\u0179:"Z",\u017B:"Z",\u017D:"Z",\u017A:"z",\u017C:"z",\u017E:"z",\u0132:"IJ",\u0133:"ij",\u0152:"Oe",\u0153:"oe",\u0149:"'n",\u017F:"s"},So={"&":"&","<":"<",">":">",'"':""","'":"'"},as={"&":"&","<":"<",">":">",""":'"',"'":"'"},du={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},SE=parseFloat,F0=parseInt,e_=typeof global=="object"&&global&&global.Object===Object&&global,P3=typeof self=="object"&&self&&self.Object===Object&&self,os=e_||P3||Function("return this")(),H0=typeof jT=="object"&&jT&&!jT.nodeType&&jT,_h=H0&&typeof kI=="object"&&kI&&!kI.nodeType&&kI,t_=_h&&_h.exports===H0,_E=t_&&e_.process,Ua=function(){try{var Pe=_h&&_h.require&&_h.require("util").types;return Pe||_E&&_E.binding&&_E.binding("util")}catch(tt){}}(),gd=Ua&&Ua.isArrayBuffer,r_=Ua&&Ua.isDate,i_=Ua&&Ua.isMap,pm=Ua&&Ua.isRegExp,n_=Ua&&Ua.isSet,s_=Ua&&Ua.isTypedArray;function wn(Pe,tt,Ye){switch(Ye.length){case 0:return Pe.call(tt);case 1:return Pe.call(tt,Ye[0]);case 2:return Pe.call(tt,Ye[0],Ye[1]);case 3:return Pe.call(tt,Ye[0],Ye[1],Ye[2])}return Pe.apply(tt,Ye)}function a_(Pe,tt,Ye,Gt){for(var Ar=-1,ri=Pe==null?0:Pe.length;++Ar<ri;){var $n=Pe[Ar];tt(Gt,$n,Ye($n),Pe)}return Gt}function Ba(Pe,tt){for(var Ye=-1,Gt=Pe==null?0:Pe.length;++Ye<Gt&&tt(Pe[Ye],Ye,Pe)!==!1;);return Pe}function Fs(Pe,tt){for(var Ye=Pe==null?0:Pe.length;Ye--&&tt(Pe[Ye],Ye,Pe)!==!1;);return Pe}function wE(Pe,tt){for(var Ye=-1,Gt=Pe==null?0:Pe.length;++Ye<Gt;)if(!tt(Pe[Ye],Ye,Pe))return!1;return!0}function lc(Pe,tt){for(var Ye=-1,Gt=Pe==null?0:Pe.length,Ar=0,ri=[];++Ye<Gt;){var $n=Pe[Ye];tt($n,Ye,Pe)&&(ri[Ar++]=$n)}return ri}function wh(Pe,tt){var Ye=Pe==null?0:Pe.length;return!!Ye&&vd(Pe,tt,0)>-1}function RE(Pe,tt,Ye){for(var Gt=-1,Ar=Pe==null?0:Pe.length;++Gt<Ar;)if(Ye(tt,Pe[Gt]))return!0;return!1}function Ji(Pe,tt){for(var Ye=-1,Gt=Pe==null?0:Pe.length,Ar=Array(Gt);++Ye<Gt;)Ar[Ye]=tt(Pe[Ye],Ye,Pe);return Ar}function fu(Pe,tt){for(var Ye=-1,Gt=tt.length,Ar=Pe.length;++Ye<Gt;)Pe[Ar+Ye]=tt[Ye];return Pe}function ME(Pe,tt,Ye,Gt){var Ar=-1,ri=Pe==null?0:Pe.length;for(Gt&&ri&&(Ye=Pe[++Ar]);++Ar<ri;)Ye=tt(Ye,Pe[Ar],Ar,Pe);return Ye}function o_(Pe,tt,Ye,Gt){var Ar=Pe==null?0:Pe.length;for(Gt&&Ar&&(Ye=Pe[--Ar]);Ar--;)Ye=tt(Ye,Pe[Ar],Ar,Pe);return Ye}function DE(Pe,tt){for(var Ye=-1,Gt=Pe==null?0:Pe.length;++Ye<Gt;)if(tt(Pe[Ye],Ye,Pe))return!0;return!1}var CE=OE("length");function la(Pe){return Pe.split("")}function AE(Pe){return Pe.match(ze)||[]}function l_(Pe,tt,Ye){var Gt;return Ye(Pe,function(Ar,ri,$n){if(tt(Ar,ri,$n))return Gt=ri,!1}),Gt}function U0(Pe,tt,Ye,Gt){for(var Ar=Pe.length,ri=Ye+(Gt?1:-1);Gt?ri--:++ri<Ar;)if(tt(Pe[ri],ri,Pe))return ri;return-1}function vd(Pe,tt,Ye){return tt===tt?k3(Pe,tt,Ye):U0(Pe,c_,Ye)}function _o(Pe,tt,Ye,Gt){for(var Ar=Ye-1,ri=Pe.length;++Ar<ri;)if(Gt(Pe[Ar],tt))return Ar;return-1}function c_(Pe){return Pe!==Pe}function Rh(Pe,tt){var Ye=Pe==null?0:Pe.length;return Ye?NE(Pe,tt)/Ye:U}function OE(Pe){return function(tt){return tt==null?t:tt[Pe]}}function PE(Pe){return function(tt){return Pe==null?t:Pe[tt]}}function u_(Pe,tt,Ye,Gt,Ar){return Ar(Pe,function(ri,$n,$i){Ye=Gt?(Gt=!1,ri):tt(Ye,ri,$n,$i)}),Ye}function N3(Pe,tt){var Ye=Pe.length;for(Pe.sort(tt);Ye--;)Pe[Ye]=Pe[Ye].value;return Pe}function NE(Pe,tt){for(var Ye,Gt=-1,Ar=Pe.length;++Gt<Ar;){var ri=tt(Pe[Gt]);ri!==t&&(Ye=Ye===t?ri:Ye+ri)}return Ye}function LE(Pe,tt){for(var Ye=-1,Gt=Array(Pe);++Ye<Pe;)Gt[Ye]=tt(Ye);return Gt}function L3(Pe,tt){return Ji(tt,function(Ye){return[Ye,Pe[Ye]]})}function h_(Pe){return Pe&&Pe.slice(0,v_(Pe)+1).replace(ic,"")}function ca(Pe){return function(tt){return Pe(tt)}}function FE(Pe,tt){return Ji(tt,function(Ye){return Pe[Ye]})}function dm(Pe,tt){return Pe.has(tt)}function p_(Pe,tt){for(var Ye=-1,Gt=Pe.length;++Ye<Gt&&vd(tt,Pe[Ye],0)>-1;);return Ye}function d_(Pe,tt){for(var Ye=Pe.length;Ye--&&vd(tt,Pe[Ye],0)>-1;);return Ye}function ol(Pe,tt){for(var Ye=Pe.length,Gt=0;Ye--;)Pe[Ye]===tt&&++Gt;return Gt}var HE=PE(ti),F3=PE(So);function H3(Pe){return"\\"+du[Pe]}function U3(Pe,tt){return Pe==null?t:Pe[tt]}function yd(Pe){return zt.test(Pe)}function f_(Pe){return ur.test(Pe)}function m_(Pe){for(var tt,Ye=[];!(tt=Pe.next()).done;)Ye.push(tt.value);return Ye}function UE(Pe){var tt=-1,Ye=Array(Pe.size);return Pe.forEach(function(Gt,Ar){Ye[++tt]=[Ar,Gt]}),Ye}function g_(Pe,tt){return function(Ye){return Pe(tt(Ye))}}function mu(Pe,tt){for(var Ye=-1,Gt=Pe.length,Ar=0,ri=[];++Ye<Gt;){var $n=Pe[Ye];($n===tt||$n===l)&&(Pe[Ye]=l,ri[Ar++]=Ye)}return ri}function B0(Pe){var tt=-1,Ye=Array(Pe.size);return Pe.forEach(function(Gt){Ye[++tt]=Gt}),Ye}function B3(Pe){var tt=-1,Ye=Array(Pe.size);return Pe.forEach(function(Gt){Ye[++tt]=[Gt,Gt]}),Ye}function k3(Pe,tt,Ye){for(var Gt=Ye-1,Ar=Pe.length;++Gt<Ar;)if(Pe[Gt]===tt)return Gt;return-1}function G3(Pe,tt,Ye){for(var Gt=Ye+1;Gt--;)if(Pe[Gt]===tt)return Gt;return Gt}function Td(Pe){return yd(Pe)?z3(Pe):CE(Pe)}function wo(Pe){return yd(Pe)?k0(Pe):la(Pe)}function v_(Pe){for(var tt=Pe.length;tt--&&um.test(Pe.charAt(tt)););return tt}var V3=PE(as);function z3(Pe){for(var tt=pt.lastIndex=0;pt.test(Pe);)++tt;return tt}function k0(Pe){return Pe.match(pt)||[]}function j3(Pe){return Pe.match(qt)||[]}var W3=function Pe(tt){tt=tt==null?os:gu.defaults(os.Object(),tt,gu.pick(os,sr));var Ye=tt.Array,Gt=tt.Date,Ar=tt.Error,ri=tt.Function,$n=tt.Math,$i=tt.Object,BE=tt.RegExp,q3=tt.String,ka=tt.TypeError,G0=Ye.prototype,Y3=ri.prototype,cc=$i.prototype,Ed=tt["__core-js_shared__"],Mh=Y3.toString,Ii=cc.hasOwnProperty,V0=0,y_=function(){var v=/[^.]+$/.exec(Ed&&Ed.keys&&Ed.keys.IE_PROTO||"");return v?"Symbol(src)_1."+v:""}(),z0=cc.toString,T_=Mh.call($i),j0=os._,W0=BE("^"+Mh.call(Ii).replace(ds,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Dh=t_?tt.Buffer:t,vu=tt.Symbol,kE=tt.Uint8Array,GE=Dh?Dh.allocUnsafe:t,q0=g_($i.getPrototypeOf,$i),fm=$i.create,VE=cc.propertyIsEnumerable,Y0=G0.splice,zE=vu?vu.isConcatSpreadable:t,ua=vu?vu.iterator:t,Ch=vu?vu.toStringTag:t,X0=function(){try{var v=Tm($i,"defineProperty");return v({},"",{}),v}catch(T){}}(),X3=tt.clearTimeout!==os.clearTimeout&&tt.clearTimeout,$3=Gt&&Gt.now!==os.Date.now&&Gt.now,Z3=tt.setTimeout!==os.setTimeout&&tt.setTimeout,Ah=$n.ceil,bd=$n.floor,jE=$i.getOwnPropertySymbols,K3=Dh?Dh.isBuffer:t,$0=tt.isFinite,J3=G0.join,E_=g_($i.keys,$i),I=$n.max,M=$n.min,L=Gt.now,W=tt.parseInt,te=$n.random,ge=G0.reverse,Ee=Tm(tt,"DataView"),Ie=Tm(tt,"Map"),De=Tm(tt,"Promise"),$e=Tm(tt,"Set"),rt=Tm(tt,"WeakMap"),It=Tm($i,"create"),xt=rt&&new rt,wt={},tr=Em(Ee),vi=Em(Ie),Mi=Em(De),Ai=Em($e),yt=Em(rt),Lt=vu?vu.prototype:t,Kr=Lt?Lt.valueOf:t,Xr=Lt?Lt.toString:t;function ie(v){if(Hn(v)&&!Hr(v)&&!(v instanceof di)){if(v instanceof cl)return v;if(Ii.call(v,"__wrapped__"))return jV(v)}return new cl(v)}var Ss=function(){function v(){}return function(T){if(!Rn(T))return{};if(fm)return fm(T);v.prototype=T;var R=new v;return v.prototype=t,R}}();function ll(){}function cl(v,T){this.__wrapped__=v,this.__actions__=[],this.__chain__=!!T,this.__index__=0,this.__values__=t}ie.templateSettings={escape:Vt,evaluate:Rr,interpolate:Ki,variable:"",imports:{_:ie}},ie.prototype=ll.prototype,ie.prototype.constructor=ie,cl.prototype=Ss(ll.prototype),cl.prototype.constructor=cl;function di(v){this.__wrapped__=v,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=j,this.__views__=[]}function vCe(){var v=new di(this.__wrapped__);return v.__actions__=Ga(this.__actions__),v.__dir__=this.__dir__,v.__filtered__=this.__filtered__,v.__iteratees__=Ga(this.__iteratees__),v.__takeCount__=this.__takeCount__,v.__views__=Ga(this.__views__),v}function yCe(){if(this.__filtered__){var v=new di(this);v.__dir__=-1,v.__filtered__=!0}else v=this.clone(),v.__dir__*=-1;return v}function TCe(){var v=this.__wrapped__.value(),T=this.__dir__,R=Hr(v),B=T<0,Q=R?v.length:0,fe=AAe(0,Q,this.__views__),Se=fe.start,Me=fe.end,He=Me-Se,st=B?Me:Se-1,at=this.__iteratees__,Tt=at.length,Ut=0,rr=M(He,this.__takeCount__);if(!R||!B&&Q==He&&rr==He)return dV(v,this.__actions__);var Er=[];e:for(;He--&&Ut<rr;){st+=T;for(var zr=-1,br=v[st];++zr<Tt;){var ii=at[zr],yi=ii.iteratee,Do=ii.type,da=yi(br);if(Do==he)br=da;else if(!da){if(Do==H)continue e;break e}}Er[Ut++]=br}return Er}di.prototype=Ss(ll.prototype),di.prototype.constructor=di;function mm(v){var T=-1,R=v==null?0:v.length;for(this.clear();++T<R;){var B=v[T];this.set(B[0],B[1])}}function ECe(){this.__data__=It?It(null):{},this.size=0}function bCe(v){var T=this.has(v)&&delete this.__data__[v];return this.size-=T?1:0,T}function xCe(v){var T=this.__data__;if(It){var R=T[v];return R===a?t:R}return Ii.call(T,v)?T[v]:t}function ICe(v){var T=this.__data__;return It?T[v]!==t:Ii.call(T,v)}function SCe(v,T){var R=this.__data__;return this.size+=this.has(v)?0:1,R[v]=It&&T===t?a:T,this}mm.prototype.clear=ECe,mm.prototype.delete=bCe,mm.prototype.get=xCe,mm.prototype.has=ICe,mm.prototype.set=SCe;function Oh(v){var T=-1,R=v==null?0:v.length;for(this.clear();++T<R;){var B=v[T];this.set(B[0],B[1])}}function _Ce(){this.__data__=[],this.size=0}function wCe(v){var T=this.__data__,R=b_(T,v);if(R<0)return!1;var B=T.length-1;return R==B?T.pop():Y0.call(T,R,1),--this.size,!0}function RCe(v){var T=this.__data__,R=b_(T,v);return R<0?t:T[R][1]}function MCe(v){return b_(this.__data__,v)>-1}function DCe(v,T){var R=this.__data__,B=b_(R,v);return B<0?(++this.size,R.push([v,T])):R[B][1]=T,this}Oh.prototype.clear=_Ce,Oh.prototype.delete=wCe,Oh.prototype.get=RCe,Oh.prototype.has=MCe,Oh.prototype.set=DCe;function Ph(v){var T=-1,R=v==null?0:v.length;for(this.clear();++T<R;){var B=v[T];this.set(B[0],B[1])}}function CCe(){this.size=0,this.__data__={hash:new mm,map:new(Ie||Oh),string:new mm}}function ACe(v){var T=P_(this,v).delete(v);return this.size-=T?1:0,T}function OCe(v){return P_(this,v).get(v)}function PCe(v){return P_(this,v).has(v)}function NCe(v,T){var R=P_(this,v),B=R.size;return R.set(v,T),this.size+=R.size==B?0:1,this}Ph.prototype.clear=CCe,Ph.prototype.delete=ACe,Ph.prototype.get=OCe,Ph.prototype.has=PCe,Ph.prototype.set=NCe;function gm(v){var T=-1,R=v==null?0:v.length;for(this.__data__=new Ph;++T<R;)this.add(v[T])}function LCe(v){return this.__data__.set(v,a),this}function FCe(v){return this.__data__.has(v)}gm.prototype.add=gm.prototype.push=LCe,gm.prototype.has=FCe;function uc(v){var T=this.__data__=new Oh(v);this.size=T.size}function HCe(){this.__data__=new Oh,this.size=0}function UCe(v){var T=this.__data__,R=T.delete(v);return this.size=T.size,R}function BCe(v){return this.__data__.get(v)}function kCe(v){return this.__data__.has(v)}function GCe(v,T){var R=this.__data__;if(R instanceof Oh){var B=R.__data__;if(!Ie||B.length<e-1)return B.push([v,T]),this.size=++R.size,this;R=this.__data__=new Ph(B)}return R.set(v,T),this.size=R.size,this}uc.prototype.clear=HCe,uc.prototype.delete=UCe,uc.prototype.get=BCe,uc.prototype.has=kCe,uc.prototype.set=GCe;function jG(v,T){var R=Hr(v),B=!R&&bm(v),Q=!R&&!B&&wd(v),fe=!R&&!B&&!Q&&Q0(v),Se=R||B||Q||fe,Me=Se?LE(v.length,q3):[],He=Me.length;for(var st in v)(T||Ii.call(v,st))&&!(Se&&(st=="length"||Q&&(st=="offset"||st=="parent")||fe&&(st=="buffer"||st=="byteLength"||st=="byteOffset")||Hh(st,He)))&&Me.push(st);return Me}function WG(v){var T=v.length;return T?v[cP(0,T-1)]:t}function VCe(v,T){return N_(Ga(v),vm(T,0,v.length))}function zCe(v){return N_(Ga(v))}function Q3(v,T,R){(R!==t&&!hc(v[T],R)||R===t&&!(T in v))&&Nh(v,T,R)}function WE(v,T,R){var B=v[T];(!(Ii.call(v,T)&&hc(B,R))||R===t&&!(T in v))&&Nh(v,T,R)}function b_(v,T){for(var R=v.length;R--;)if(hc(v[R][0],T))return R;return-1}function jCe(v,T,R,B){return xd(v,function(Q,fe,Se){T(B,Q,R(Q),Se)}),B}function qG(v,T){return v&&Tu(T,_s(T),v)}function WCe(v,T){return v&&Tu(T,za(T),v)}function Nh(v,T,R){T=="__proto__"&&X0?X0(v,T,{configurable:!0,enumerable:!0,value:R,writable:!0}):v[T]=R}function eP(v,T){for(var R=-1,B=T.length,Q=Ye(B),fe=v==null;++R<B;)Q[R]=fe?t:NP(v,T[R]);return Q}function vm(v,T,R){return v===v&&(R!==t&&(v=v<=R?v:R),T!==t&&(v=v>=T?v:T)),v}function ul(v,T,R,B,Q,fe){var Se,Me=T&c,He=T&u,st=T&h;if(R&&(Se=Q?R(v,B,Q,fe):R(v)),Se!==t)return Se;if(!Rn(v))return v;var at=Hr(v);if(at){if(Se=PAe(v),!Me)return Ga(v,Se)}else{var Tt=Ws(v),Ut=Tt==Oe||Tt==dt;if(wd(v))return gV(v,Me);if(Tt==bt||Tt==ue||Ut&&!Q){if(Se=He||Ut?{}:LV(v),!Me)return He?xAe(v,WCe(Se,v)):bAe(v,qG(Se,v))}else{if(!Zt[Tt])return Q?v:{};Se=NAe(v,Tt,Me)}}fe||(fe=new uc);var rr=fe.get(v);if(rr)return rr;fe.set(v,Se),u7(v)?v.forEach(function(br){Se.add(ul(br,T,R,br,v,fe))}):l7(v)&&v.forEach(function(br,ii){Se.set(ii,ul(br,T,R,ii,v,fe))});var Er=st?He?EP:TP:He?za:_s,zr=at?t:Er(v);return Ba(zr||v,function(br,ii){zr&&(ii=br,br=v[ii]),WE(Se,ii,ul(br,T,R,ii,v,fe))}),Se}function qCe(v){var T=_s(v);return function(R){return YG(R,v,T)}}function YG(v,T,R){var B=R.length;if(v==null)return!B;for(v=$i(v);B--;){var Q=R[B],fe=T[Q],Se=v[Q];if(Se===t&&!(Q in v)||!fe(Se))return!1}return!0}function XG(v,T,R){if(typeof v!="function")throw new ka(n);return JE(function(){v.apply(t,R)},T)}function qE(v,T,R,B){var Q=-1,fe=wh,Se=!0,Me=v.length,He=[],st=T.length;if(!Me)return He;R&&(T=Ji(T,ca(R))),B?(fe=RE,Se=!1):T.length>=e&&(fe=dm,Se=!1,T=new gm(T));e:for(;++Q<Me;){var at=v[Q],Tt=R==null?at:R(at);if(at=B||at!==0?at:0,Se&&Tt===Tt){for(var Ut=st;Ut--;)if(T[Ut]===Tt)continue e;He.push(at)}else fe(T,Tt,B)||He.push(at)}return He}var xd=bV(yu),$G=bV(rP,!0);function YCe(v,T){var R=!0;return xd(v,function(B,Q,fe){return R=!!T(B,Q,fe),R}),R}function x_(v,T,R){for(var B=-1,Q=v.length;++B<Q;){var fe=v[B],Se=T(fe);if(Se!=null&&(Me===t?Se===Se&&!Mo(Se):R(Se,Me)))var Me=Se,He=fe}return He}function XCe(v,T,R,B){var Q=v.length;for(R=Br(R),R<0&&(R=-R>Q?0:Q+R),B=B===t||B>Q?Q:Br(B),B<0&&(B+=Q),B=R>B?0:p7(B);R<B;)v[R++]=T;return v}function ZG(v,T){var R=[];return xd(v,function(B,Q,fe){T(B,Q,fe)&&R.push(B)}),R}function Hs(v,T,R,B,Q){var fe=-1,Se=v.length;for(R||(R=FAe),Q||(Q=[]);++fe<Se;){var Me=v[fe];T>0&&R(Me)?T>1?Hs(Me,T-1,R,B,Q):fu(Q,Me):B||(Q[Q.length]=Me)}return Q}var tP=xV(),KG=xV(!0);function yu(v,T){return v&&tP(v,T,_s)}function rP(v,T){return v&&KG(v,T,_s)}function I_(v,T){return lc(T,function(R){return Uh(v[R])})}function ym(v,T){T=Sd(T,v);for(var R=0,B=T.length;v!=null&&R<B;)v=v[Eu(T[R++])];return R&&R==B?v:t}function JG(v,T,R){var B=T(v);return Hr(v)?B:fu(B,R(v))}function ha(v){return v==null?v===t?z:nt:Ch&&Ch in $i(v)?CAe(v):zAe(v)}function iP(v,T){return v>T}function $Ce(v,T){return v!=null&&Ii.call(v,T)}function ZCe(v,T){return v!=null&&T in $i(v)}function KCe(v,T,R){return v>=M(T,R)&&v<I(T,R)}function nP(v,T,R){for(var B=R?RE:wh,Q=v[0].length,fe=v.length,Se=fe,Me=Ye(fe),He=1/0,st=[];Se--;){var at=v[Se];Se&&T&&(at=Ji(at,ca(T))),He=M(at.length,He),Me[Se]=!R&&(T||Q>=120&&at.length>=120)?new gm(Se&&at):t}at=v[0];var Tt=-1,Ut=Me[0];e:for(;++Tt<Q&&st.length<He;){var rr=at[Tt],Er=T?T(rr):rr;if(rr=R||rr!==0?rr:0,!(Ut?dm(Ut,Er):B(st,Er,R))){for(Se=fe;--Se;){var zr=Me[Se];if(!(zr?dm(zr,Er):B(v[Se],Er,R)))continue e}Ut&&Ut.push(Er),st.push(rr)}}return st}function JCe(v,T,R,B){return yu(v,function(Q,fe,Se){T(B,R(Q),fe,Se)}),B}function YE(v,T,R){T=Sd(T,v),v=BV(v,T);var B=v==null?v:v[Eu(pl(T))];return B==null?t:wn(B,v,R)}function QG(v){return Hn(v)&&ha(v)==ue}function QCe(v){return Hn(v)&&ha(v)==Ce}function eAe(v){return Hn(v)&&ha(v)==we}function XE(v,T,R,B,Q){return v===T?!0:v==null||T==null||!Hn(v)&&!Hn(T)?v!==v&&T!==T:tAe(v,T,R,B,XE,Q)}function tAe(v,T,R,B,Q,fe){var Se=Hr(v),Me=Hr(T),He=Se?ve:Ws(v),st=Me?ve:Ws(T);He=He==ue?bt:He,st=st==ue?bt:st;var at=He==bt,Tt=st==bt,Ut=He==st;if(Ut&&wd(v)){if(!wd(T))return!1;Se=!0,at=!1}if(Ut&&!at)return fe||(fe=new uc),Se||Q0(v)?OV(v,T,R,B,Q,fe):MAe(v,T,He,R,B,Q,fe);if(!(R&p)){var rr=at&&Ii.call(v,"__wrapped__"),Er=Tt&&Ii.call(T,"__wrapped__");if(rr||Er){var zr=rr?v.value():v,br=Er?T.value():T;return fe||(fe=new uc),Q(zr,br,R,B,fe)}}return Ut?(fe||(fe=new uc),DAe(v,T,R,B,Q,fe)):!1}function rAe(v){return Hn(v)&&Ws(v)==Be}function sP(v,T,R,B){var Q=R.length,fe=Q,Se=!B;if(v==null)return!fe;for(v=$i(v);Q--;){var Me=R[Q];if(Se&&Me[2]?Me[1]!==v[Me[0]]:!(Me[0]in v))return!1}for(;++Q<fe;){Me=R[Q];var He=Me[0],st=v[He],at=Me[1];if(Se&&Me[2]){if(st===t&&!(He in v))return!1}else{var Tt=new uc;if(B)var Ut=B(st,at,He,v,T,Tt);if(!(Ut===t?XE(at,st,p|d,B,Tt):Ut))return!1}}return!0}function eV(v){if(!Rn(v)||UAe(v))return!1;var T=Uh(v)?W0:Fr;return T.test(Em(v))}function iAe(v){return Hn(v)&&ha(v)==J}function nAe(v){return Hn(v)&&Ws(v)==$}function sAe(v){return Hn(v)&&k_(v.length)&&!!ar[ha(v)]}function tV(v){return typeof v=="function"?v:v==null?ja:typeof v=="object"?Hr(v)?nV(v[0],v[1]):iV(v):I7(v)}function aP(v){if(!KE(v))return E_(v);var T=[];for(var R in $i(v))Ii.call(v,R)&&R!="constructor"&&T.push(R);return T}function aAe(v){if(!Rn(v))return VAe(v);var T=KE(v),R=[];for(var B in v)B=="constructor"&&(T||!Ii.call(v,B))||R.push(B);return R}function oP(v,T){return v<T}function rV(v,T){var R=-1,B=Va(v)?Ye(v.length):[];return xd(v,function(Q,fe,Se){B[++R]=T(Q,fe,Se)}),B}function iV(v){var T=xP(v);return T.length==1&&T[0][2]?HV(T[0][0],T[0][1]):function(R){return R===v||sP(R,v,T)}}function nV(v,T){return SP(v)&&FV(T)?HV(Eu(v),T):function(R){var B=NP(R,v);return B===t&&B===T?LP(R,v):XE(T,B,p|d)}}function S_(v,T,R,B,Q){v!==T&&tP(T,function(fe,Se){if(Q||(Q=new uc),Rn(fe))oAe(v,T,Se,R,S_,B,Q);else{var Me=B?B(wP(v,Se),fe,Se+"",v,T,Q):t;Me===t&&(Me=fe),Q3(v,Se,Me)}},za)}function oAe(v,T,R,B,Q,fe,Se){var Me=wP(v,R),He=wP(T,R),st=Se.get(He);if(st){Q3(v,R,st);return}var at=fe?fe(Me,He,R+"",v,T,Se):t,Tt=at===t;if(Tt){var Ut=Hr(He),rr=!Ut&&wd(He),Er=!Ut&&!rr&&Q0(He);at=He,Ut||rr||Er?Hr(Me)?at=Me:Zn(Me)?at=Ga(Me):rr?(Tt=!1,at=gV(He,!0)):Er?(Tt=!1,at=vV(He,!0)):at=[]:QE(He)||bm(He)?(at=Me,bm(Me)?at=d7(Me):(!Rn(Me)||Uh(Me))&&(at=LV(He))):Tt=!1}Tt&&(Se.set(He,at),Q(at,He,B,fe,Se),Se.delete(He)),Q3(v,R,at)}function sV(v,T){var R=v.length;if(R)return T+=T<0?R:0,Hh(T,R)?v[T]:t}function aV(v,T,R){T.length?T=Ji(T,function(fe){return Hr(fe)?function(Se){return ym(Se,fe.length===1?fe[0]:fe)}:fe}):T=[ja];var B=-1;T=Ji(T,ca(vr()));var Q=rV(v,function(fe,Se,Me){var He=Ji(T,function(st){return st(fe)});return{criteria:He,index:++B,value:fe}});return N3(Q,function(fe,Se){return EAe(fe,Se,R)})}function lAe(v,T){return oV(v,T,function(R,B){return LP(v,B)})}function oV(v,T,R){for(var B=-1,Q=T.length,fe={};++B<Q;){var Se=T[B],Me=ym(v,Se);R(Me,Se)&&$E(fe,Sd(Se,v),Me)}return fe}function cAe(v){return function(T){return ym(T,v)}}function lP(v,T,R,B){var Q=B?_o:vd,fe=-1,Se=T.length,Me=v;for(v===T&&(T=Ga(T)),R&&(Me=Ji(v,ca(R)));++fe<Se;)for(var He=0,st=T[fe],at=R?R(st):st;(He=Q(Me,at,He,B))>-1;)Me!==v&&Y0.call(Me,He,1),Y0.call(v,He,1);return v}function lV(v,T){for(var R=v?T.length:0,B=R-1;R--;){var Q=T[R];if(R==B||Q!==fe){var fe=Q;Hh(Q)?Y0.call(v,Q,1):pP(v,Q)}}return v}function cP(v,T){return v+bd(te()*(T-v+1))}function uAe(v,T,R,B){for(var Q=-1,fe=I(Ah((T-v)/(R||1)),0),Se=Ye(fe);fe--;)Se[B?fe:++Q]=v,v+=R;return Se}function uP(v,T){var R="";if(!v||T<1||T>k)return R;do T%2&&(R+=v),T=bd(T/2),T&&(v+=v);while(T);return R}function $r(v,T){return RP(UV(v,T,ja),v+"")}function hAe(v){return WG(ev(v))}function pAe(v,T){var R=ev(v);return N_(R,vm(T,0,R.length))}function $E(v,T,R,B){if(!Rn(v))return v;T=Sd(T,v);for(var Q=-1,fe=T.length,Se=fe-1,Me=v;Me!=null&&++Q<fe;){var He=Eu(T[Q]),st=R;if(He==="__proto__"||He==="constructor"||He==="prototype")return v;if(Q!=Se){var at=Me[He];st=B?B(at,He,Me):t,st===t&&(st=Rn(at)?at:Hh(T[Q+1])?[]:{})}WE(Me,He,st),Me=Me[He]}return v}var cV=xt?function(v,T){return xt.set(v,T),v}:ja,dAe=X0?function(v,T){return X0(v,"toString",{configurable:!0,enumerable:!1,value:HP(T),writable:!0})}:ja;function fAe(v){return N_(ev(v))}function hl(v,T,R){var B=-1,Q=v.length;T<0&&(T=-T>Q?0:Q+T),R=R>Q?Q:R,R<0&&(R+=Q),Q=T>R?0:R-T>>>0,T>>>=0;for(var fe=Ye(Q);++B<Q;)fe[B]=v[B+T];return fe}function mAe(v,T){var R;return xd(v,function(B,Q,fe){return R=T(B,Q,fe),!R}),!!R}function __(v,T,R){var B=0,Q=v==null?B:v.length;if(typeof T=="number"&&T===T&&Q<=ae){for(;B<Q;){var fe=B+Q>>>1,Se=v[fe];Se!==null&&!Mo(Se)&&(R?Se<=T:Se<T)?B=fe+1:Q=fe}return Q}return hP(v,T,ja,R)}function hP(v,T,R,B){var Q=0,fe=v==null?0:v.length;if(fe===0)return 0;T=R(T);for(var Se=T!==T,Me=T===null,He=Mo(T),st=T===t;Q<fe;){var at=bd((Q+fe)/2),Tt=R(v[at]),Ut=Tt!==t,rr=Tt===null,Er=Tt===Tt,zr=Mo(Tt);if(Se)var br=B||Er;else st?br=Er&&(B||Ut):Me?br=Er&&Ut&&(B||!rr):He?br=Er&&Ut&&!rr&&(B||!zr):rr||zr?br=!1:br=B?Tt<=T:Tt<T;br?Q=at+1:fe=at}return M(fe,ee)}function uV(v,T){for(var R=-1,B=v.length,Q=0,fe=[];++R<B;){var Se=v[R],Me=T?T(Se):Se;if(!R||!hc(Me,He)){var He=Me;fe[Q++]=Se===0?0:Se}}return fe}function hV(v){return typeof v=="number"?v:Mo(v)?U:+v}function Ro(v){if(typeof v=="string")return v;if(Hr(v))return Ji(v,Ro)+"";if(Mo(v))return Xr?Xr.call(v):"";var T=v+"";return T=="0"&&1/v==-N?"-0":T}function Id(v,T,R){var B=-1,Q=wh,fe=v.length,Se=!0,Me=[],He=Me;if(R)Se=!1,Q=RE;else if(fe>=e){var st=T?null:wAe(v);if(st)return B0(st);Se=!1,Q=dm,He=new gm}else He=T?[]:Me;e:for(;++B<fe;){var at=v[B],Tt=T?T(at):at;if(at=R||at!==0?at:0,Se&&Tt===Tt){for(var Ut=He.length;Ut--;)if(He[Ut]===Tt)continue e;T&&He.push(Tt),Me.push(at)}else Q(He,Tt,R)||(He!==Me&&He.push(Tt),Me.push(at))}return Me}function pP(v,T){return T=Sd(T,v),v=BV(v,T),v==null||delete v[Eu(pl(T))]}function pV(v,T,R,B){return $E(v,T,R(ym(v,T)),B)}function w_(v,T,R,B){for(var Q=v.length,fe=B?Q:-1;(B?fe--:++fe<Q)&&T(v[fe],fe,v););return R?hl(v,B?0:fe,B?fe+1:Q):hl(v,B?fe+1:0,B?Q:fe)}function dV(v,T){var R=v;return R instanceof di&&(R=R.value()),ME(T,function(B,Q){return Q.func.apply(Q.thisArg,fu([B],Q.args))},R)}function dP(v,T,R){var B=v.length;if(B<2)return B?Id(v[0]):[];for(var Q=-1,fe=Ye(B);++Q<B;)for(var Se=v[Q],Me=-1;++Me<B;)Me!=Q&&(fe[Q]=qE(fe[Q]||Se,v[Me],T,R));return Id(Hs(fe,1),T,R)}function fV(v,T,R){for(var B=-1,Q=v.length,fe=T.length,Se={};++B<Q;){var Me=B<fe?T[B]:t;R(Se,v[B],Me)}return Se}function fP(v){return Zn(v)?v:[]}function mP(v){return typeof v=="function"?v:ja}function Sd(v,T){return Hr(v)?v:SP(v,T)?[v]:zV(Gi(v))}var gAe=$r;function _d(v,T,R){var B=v.length;return R=R===t?B:R,!T&&R>=B?v:hl(v,T,R)}var mV=X3||function(v){return os.clearTimeout(v)};function gV(v,T){if(T)return v.slice();var R=v.length,B=GE?GE(R):new v.constructor(R);return v.copy(B),B}function gP(v){var T=new v.constructor(v.byteLength);return new kE(T).set(new kE(v)),T}function vAe(v,T){var R=T?gP(v.buffer):v.buffer;return new v.constructor(R,v.byteOffset,v.byteLength)}function yAe(v){var T=new v.constructor(v.source,Jt.exec(v));return T.lastIndex=v.lastIndex,T}function TAe(v){return Kr?$i(Kr.call(v)):{}}function vV(v,T){var R=T?gP(v.buffer):v.buffer;return new v.constructor(R,v.byteOffset,v.length)}function yV(v,T){if(v!==T){var R=v!==t,B=v===null,Q=v===v,fe=Mo(v),Se=T!==t,Me=T===null,He=T===T,st=Mo(T);if(!Me&&!st&&!fe&&v>T||fe&&Se&&He&&!Me&&!st||B&&Se&&He||!R&&He||!Q)return 1;if(!B&&!fe&&!st&&v<T||st&&R&&Q&&!B&&!fe||Me&&R&&Q||!Se&&Q||!He)return-1}return 0}function EAe(v,T,R){for(var B=-1,Q=v.criteria,fe=T.criteria,Se=Q.length,Me=R.length;++B<Se;){var He=yV(Q[B],fe[B]);if(He){if(B>=Me)return He;var st=R[B];return He*(st=="desc"?-1:1)}}return v.index-T.index}function TV(v,T,R,B){for(var Q=-1,fe=v.length,Se=R.length,Me=-1,He=T.length,st=I(fe-Se,0),at=Ye(He+st),Tt=!B;++Me<He;)at[Me]=T[Me];for(;++Q<Se;)(Tt||Q<fe)&&(at[R[Q]]=v[Q]);for(;st--;)at[Me++]=v[Q++];return at}function EV(v,T,R,B){for(var Q=-1,fe=v.length,Se=-1,Me=R.length,He=-1,st=T.length,at=I(fe-Me,0),Tt=Ye(at+st),Ut=!B;++Q<at;)Tt[Q]=v[Q];for(var rr=Q;++He<st;)Tt[rr+He]=T[He];for(;++Se<Me;)(Ut||Q<fe)&&(Tt[rr+R[Se]]=v[Q++]);return Tt}function Ga(v,T){var R=-1,B=v.length;for(T||(T=Ye(B));++R<B;)T[R]=v[R];return T}function Tu(v,T,R,B){var Q=!R;R||(R={});for(var fe=-1,Se=T.length;++fe<Se;){var Me=T[fe],He=B?B(R[Me],v[Me],Me,R,v):t;He===t&&(He=v[Me]),Q?Nh(R,Me,He):WE(R,Me,He)}return R}function bAe(v,T){return Tu(v,IP(v),T)}function xAe(v,T){return Tu(v,PV(v),T)}function R_(v,T){return function(R,B){var Q=Hr(R)?a_:jCe,fe=T?T():{};return Q(R,v,vr(B,2),fe)}}function Z0(v){return $r(function(T,R){var B=-1,Q=R.length,fe=Q>1?R[Q-1]:t,Se=Q>2?R[2]:t;for(fe=v.length>3&&typeof fe=="function"?(Q--,fe):t,Se&&pa(R[0],R[1],Se)&&(fe=Q<3?t:fe,Q=1),T=$i(T);++B<Q;){var Me=R[B];Me&&v(T,Me,B,fe)}return T})}function bV(v,T){return function(R,B){if(R==null)return R;if(!Va(R))return v(R,B);for(var Q=R.length,fe=T?Q:-1,Se=$i(R);(T?fe--:++fe<Q)&&B(Se[fe],fe,Se)!==!1;);return R}}function xV(v){return function(T,R,B){for(var Q=-1,fe=$i(T),Se=B(T),Me=Se.length;Me--;){var He=Se[v?Me:++Q];if(R(fe[He],He,fe)===!1)break}return T}}function IAe(v,T,R){var B=T&f,Q=ZE(v);function fe(){var Se=this&&this!==os&&this instanceof fe?Q:v;return Se.apply(B?R:this,arguments)}return fe}function IV(v){return function(T){T=Gi(T);var R=yd(T)?wo(T):t,B=R?R[0]:T.charAt(0),Q=R?_d(R,1).join(""):T.slice(1);return B[v]()+Q}}function K0(v){return function(T){return ME(b7(E7(T).replace(Ft,"")),v,"")}}function ZE(v){return function(){var T=arguments;switch(T.length){case 0:return new v;case 1:return new v(T[0]);case 2:return new v(T[0],T[1]);case 3:return new v(T[0],T[1],T[2]);case 4:return new v(T[0],T[1],T[2],T[3]);case 5:return new v(T[0],T[1],T[2],T[3],T[4]);case 6:return new v(T[0],T[1],T[2],T[3],T[4],T[5]);case 7:return new v(T[0],T[1],T[2],T[3],T[4],T[5],T[6])}var R=Ss(v.prototype),B=v.apply(R,T);return Rn(B)?B:R}}function SAe(v,T,R){var B=ZE(v);function Q(){for(var fe=arguments.length,Se=Ye(fe),Me=fe,He=J0(Q);Me--;)Se[Me]=arguments[Me];var st=fe<3&&Se[0]!==He&&Se[fe-1]!==He?[]:mu(Se,He);if(fe-=st.length,fe<R)return MV(v,T,M_,Q.placeholder,t,Se,st,t,t,R-fe);var at=this&&this!==os&&this instanceof Q?B:v;return wn(at,this,Se)}return Q}function SV(v){return function(T,R,B){var Q=$i(T);if(!Va(T)){var fe=vr(R,3);T=_s(T),R=function(Me){return fe(Q[Me],Me,Q)}}var Se=v(T,R,B);return Se>-1?Q[fe?T[Se]:Se]:t}}function _V(v){return Fh(function(T){var R=T.length,B=R,Q=cl.prototype.thru;for(v&&T.reverse();B--;){var fe=T[B];if(typeof fe!="function")throw new ka(n);if(Q&&!Se&&O_(fe)=="wrapper")var Se=new cl([],!0)}for(B=Se?B:R;++B<R;){fe=T[B];var Me=O_(fe),He=Me=="wrapper"?bP(fe):t;He&&_P(He[0])&&He[1]==(S|y|b|D)&&!He[4].length&&He[9]==1?Se=Se[O_(He[0])].apply(Se,He[3]):Se=fe.length==1&&_P(fe)?Se[Me]():Se.thru(fe)}return function(){var st=arguments,at=st[0];if(Se&&st.length==1&&Hr(at))return Se.plant(at).value();for(var Tt=0,Ut=R?T[Tt].apply(this,st):at;++Tt<R;)Ut=T[Tt].call(this,Ut);return Ut}})}function M_(v,T,R,B,Q,fe,Se,Me,He,st){var at=T&S,Tt=T&f,Ut=T&m,rr=T&(y|E),Er=T&P,zr=Ut?t:ZE(v);function br(){for(var ii=arguments.length,yi=Ye(ii),Do=ii;Do--;)yi[Do]=arguments[Do];if(rr)var da=J0(br),Co=ol(yi,da);if(B&&(yi=TV(yi,B,Q,rr)),fe&&(yi=EV(yi,fe,Se,rr)),ii-=Co,rr&&ii<st){var Kn=mu(yi,da);return MV(v,T,M_,br.placeholder,R,yi,Kn,Me,He,st-ii)}var pc=Tt?R:this,kh=Ut?pc[v]:v;return ii=yi.length,Me?yi=jAe(yi,Me):Er&&ii>1&&yi.reverse(),at&&He<ii&&(yi.length=He),this&&this!==os&&this instanceof br&&(kh=zr||ZE(kh)),kh.apply(pc,yi)}return br}function wV(v,T){return function(R,B){return JCe(R,v,T(B),{})}}function D_(v,T){return function(R,B){var Q;if(R===t&&B===t)return T;if(R!==t&&(Q=R),B!==t){if(Q===t)return B;typeof R=="string"||typeof B=="string"?(R=Ro(R),B=Ro(B)):(R=hV(R),B=hV(B)),Q=v(R,B)}return Q}}function vP(v){return Fh(function(T){return T=Ji(T,ca(vr())),$r(function(R){var B=this;return v(T,function(Q){return wn(Q,B,R)})})})}function C_(v,T){T=T===t?" ":Ro(T);var R=T.length;if(R<2)return R?uP(T,v):T;var B=uP(T,Ah(v/Td(T)));return yd(T)?_d(wo(B),0,v).join(""):B.slice(0,v)}function _Ae(v,T,R,B){var Q=T&f,fe=ZE(v);function Se(){for(var Me=-1,He=arguments.length,st=-1,at=B.length,Tt=Ye(at+He),Ut=this&&this!==os&&this instanceof Se?fe:v;++st<at;)Tt[st]=B[st];for(;He--;)Tt[st++]=arguments[++Me];return wn(Ut,Q?R:this,Tt)}return Se}function RV(v){return function(T,R,B){return B&&typeof B!="number"&&pa(T,R,B)&&(R=B=t),T=Bh(T),R===t?(R=T,T=0):R=Bh(R),B=B===t?T<R?1:-1:Bh(B),uAe(T,R,B,v)}}function A_(v){return function(T,R){return typeof T=="string"&&typeof R=="string"||(T=dl(T),R=dl(R)),v(T,R)}}function MV(v,T,R,B,Q,fe,Se,Me,He,st){var at=T&y,Tt=at?Se:t,Ut=at?t:Se,rr=at?fe:t,Er=at?t:fe;T|=at?b:x,T&=~(at?x:b),T&g||(T&=~(f|m));var zr=[v,T,Q,rr,Tt,Er,Ut,Me,He,st],br=R.apply(t,zr);return _P(v)&&kV(br,zr),br.placeholder=B,GV(br,v,T)}function yP(v){var T=$n[v];return function(R,B){if(R=dl(R),B=B==null?0:M(Br(B),292),B&&$0(R)){var Q=(Gi(R)+"e").split("e"),fe=T(Q[0]+"e"+(+Q[1]+B));return Q=(Gi(fe)+"e").split("e"),+(Q[0]+"e"+(+Q[1]-B))}return T(R)}}var wAe=$e&&1/B0(new $e([,-0]))[1]==N?function(v){return new $e(v)}:kP;function DV(v){return function(T){var R=Ws(T);return R==Be?UE(T):R==$?B3(T):L3(T,v(T))}}function Lh(v,T,R,B,Q,fe,Se,Me){var He=T&m;if(!He&&typeof v!="function")throw new ka(n);var st=B?B.length:0;if(st||(T&=~(b|x),B=Q=t),Se=Se===t?Se:I(Br(Se),0),Me=Me===t?Me:Br(Me),st-=Q?Q.length:0,T&x){var at=B,Tt=Q;B=Q=t}var Ut=He?t:bP(v),rr=[v,T,R,B,Q,at,Tt,fe,Se,Me];if(Ut&&GAe(rr,Ut),v=rr[0],T=rr[1],R=rr[2],B=rr[3],Q=rr[4],Me=rr[9]=rr[9]===t?He?0:v.length:I(rr[9]-st,0),!Me&&T&(y|E)&&(T&=~(y|E)),!T||T==f)var Er=IAe(v,T,R);else T==y||T==E?Er=SAe(v,T,Me):(T==b||T==(f|b))&&!Q.length?Er=_Ae(v,T,R,B):Er=M_.apply(t,rr);var zr=Ut?cV:kV;return GV(zr(Er,rr),v,T)}function CV(v,T,R,B){return v===t||hc(v,cc[R])&&!Ii.call(B,R)?T:v}function AV(v,T,R,B,Q,fe){return Rn(v)&&Rn(T)&&(fe.set(T,v),S_(v,T,t,AV,fe),fe.delete(T)),v}function RAe(v){return QE(v)?t:v}function OV(v,T,R,B,Q,fe){var Se=R&p,Me=v.length,He=T.length;if(Me!=He&&!(Se&&He>Me))return!1;var st=fe.get(v),at=fe.get(T);if(st&&at)return st==T&&at==v;var Tt=-1,Ut=!0,rr=R&d?new gm:t;for(fe.set(v,T),fe.set(T,v);++Tt<Me;){var Er=v[Tt],zr=T[Tt];if(B)var br=Se?B(zr,Er,Tt,T,v,fe):B(Er,zr,Tt,v,T,fe);if(br!==t){if(br)continue;Ut=!1;break}if(rr){if(!DE(T,function(ii,yi){if(!dm(rr,yi)&&(Er===ii||Q(Er,ii,R,B,fe)))return rr.push(yi)})){Ut=!1;break}}else if(!(Er===zr||Q(Er,zr,R,B,fe))){Ut=!1;break}}return fe.delete(v),fe.delete(T),Ut}function MAe(v,T,R,B,Q,fe,Se){switch(R){case Ge:if(v.byteLength!=T.byteLength||v.byteOffset!=T.byteOffset)return!1;v=v.buffer,T=T.buffer;case Ce:return!(v.byteLength!=T.byteLength||!fe(new kE(v),new kE(T)));case de:case we:case ke:return hc(+v,+T);case je:return v.name==T.name&&v.message==T.message;case J:case re:return v==T+"";case Be:var Me=UE;case $:var He=B&p;if(Me||(Me=B0),v.size!=T.size&&!He)return!1;var st=Se.get(v);if(st)return st==T;B|=d,Se.set(v,T);var at=OV(Me(v),Me(T),B,Q,fe,Se);return Se.delete(v),at;case me:if(Kr)return Kr.call(v)==Kr.call(T)}return!1}function DAe(v,T,R,B,Q,fe){var Se=R&p,Me=TP(v),He=Me.length,st=TP(T),at=st.length;if(He!=at&&!Se)return!1;for(var Tt=He;Tt--;){var Ut=Me[Tt];if(!(Se?Ut in T:Ii.call(T,Ut)))return!1}var rr=fe.get(v),Er=fe.get(T);if(rr&&Er)return rr==T&&Er==v;var zr=!0;fe.set(v,T),fe.set(T,v);for(var br=Se;++Tt<He;){Ut=Me[Tt];var ii=v[Ut],yi=T[Ut];if(B)var Do=Se?B(yi,ii,Ut,T,v,fe):B(ii,yi,Ut,v,T,fe);if(!(Do===t?ii===yi||Q(ii,yi,R,B,fe):Do)){zr=!1;break}br||(br=Ut=="constructor")}if(zr&&!br){var da=v.constructor,Co=T.constructor;da!=Co&&"constructor"in v&&"constructor"in T&&!(typeof da=="function"&&da instanceof da&&typeof Co=="function"&&Co instanceof Co)&&(zr=!1)}return fe.delete(v),fe.delete(T),zr}function Fh(v){return RP(UV(v,t,YV),v+"")}function TP(v){return JG(v,_s,IP)}function EP(v){return JG(v,za,PV)}var bP=xt?function(v){return xt.get(v)}:kP;function O_(v){for(var T=v.name+"",R=wt[T],B=Ii.call(wt,T)?R.length:0;B--;){var Q=R[B],fe=Q.func;if(fe==null||fe==v)return Q.name}return T}function J0(v){var T=Ii.call(ie,"placeholder")?ie:v;return T.placeholder}function vr(){var v=ie.iteratee||UP;return v=v===UP?tV:v,arguments.length?v(arguments[0],arguments[1]):v}function P_(v,T){var R=v.__data__;return HAe(T)?R[typeof T=="string"?"string":"hash"]:R.map}function xP(v){for(var T=_s(v),R=T.length;R--;){var B=T[R],Q=v[B];T[R]=[B,Q,FV(Q)]}return T}function Tm(v,T){var R=U3(v,T);return eV(R)?R:t}function CAe(v){var T=Ii.call(v,Ch),R=v[Ch];try{v[Ch]=t;var B=!0}catch(fe){}var Q=z0.call(v);return B&&(T?v[Ch]=R:delete v[Ch]),Q}var IP=jE?function(v){return v==null?[]:(v=$i(v),lc(jE(v),function(T){return VE.call(v,T)}))}:GP,PV=jE?function(v){for(var T=[];v;)fu(T,IP(v)),v=q0(v);return T}:GP,Ws=ha;(Ee&&Ws(new Ee(new ArrayBuffer(1)))!=Ge||Ie&&Ws(new Ie)!=Be||De&&Ws(De.resolve())!=mt||$e&&Ws(new $e)!=$||rt&&Ws(new rt)!=Y)&&(Ws=function(v){var T=ha(v),R=T==bt?v.constructor:t,B=R?Em(R):"";if(B)switch(B){case tr:return Ge;case vi:return Be;case Mi:return mt;case Ai:return $;case yt:return Y}return T});function AAe(v,T,R){for(var B=-1,Q=R.length;++B<Q;){var fe=R[B],Se=fe.size;switch(fe.type){case"drop":v+=Se;break;case"dropRight":T-=Se;break;case"take":T=M(T,v+Se);break;case"takeRight":v=I(v,T-Se);break}}return{start:v,end:T}}function OAe(v){var T=v.match(js);return T?T[1].split(Te):[]}function NV(v,T,R){T=Sd(T,v);for(var B=-1,Q=T.length,fe=!1;++B<Q;){var Se=Eu(T[B]);if(!(fe=v!=null&&R(v,Se)))break;v=v[Se]}return fe||++B!=Q?fe:(Q=v==null?0:v.length,!!Q&&k_(Q)&&Hh(Se,Q)&&(Hr(v)||bm(v)))}function PAe(v){var T=v.length,R=new v.constructor(T);return T&&typeof v[0]=="string"&&Ii.call(v,"index")&&(R.index=v.index,R.input=v.input),R}function LV(v){return typeof v.constructor=="function"&&!KE(v)?Ss(q0(v)):{}}function NAe(v,T,R){var B=v.constructor;switch(T){case Ce:return gP(v);case de:case we:return new B(+v);case Ge:return vAe(v,R);case Ze:case gt:case ye:case Re:case ut:case vt:case Et:case Ct:case Dt:return vV(v,R);case Be:return new B;case ke:case re:return new B(v);case J:return yAe(v);case $:return new B;case me:return TAe(v)}}function LAe(v,T){var R=T.length;if(!R)return v;var B=R-1;return T[B]=(R>1?"& ":"")+T[B],T=T.join(R>2?", ":" "),v.replace(fd,`{
|
||
/* [wrapped with `+T+`] */
|
||
`)}function FAe(v){return Hr(v)||bm(v)||!!(zE&&v&&v[zE])}function Hh(v,T){var R=typeof v;return T=T==null?k:T,!!T&&(R=="number"||R!="symbol"&&kt.test(v))&&v>-1&&v%1==0&&v<T}function pa(v,T,R){if(!Rn(R))return!1;var B=typeof T;return(B=="number"?Va(R)&&Hh(T,R.length):B=="string"&&T in R)?hc(R[T],v):!1}function SP(v,T){if(Hr(v))return!1;var R=typeof v;return R=="number"||R=="symbol"||R=="boolean"||v==null||Mo(v)?!0:Fn.test(v)||!Pi.test(v)||T!=null&&v in $i(T)}function HAe(v){var T=typeof v;return T=="string"||T=="number"||T=="symbol"||T=="boolean"?v!=="__proto__":v===null}function _P(v){var T=O_(v),R=ie[T];if(typeof R!="function"||!(T in di.prototype))return!1;if(v===R)return!0;var B=bP(R);return!!B&&v===B[0]}function UAe(v){return!!y_&&y_ in v}var BAe=Ed?Uh:VP;function KE(v){var T=v&&v.constructor,R=typeof T=="function"&&T.prototype||cc;return v===R}function FV(v){return v===v&&!Rn(v)}function HV(v,T){return function(R){return R==null?!1:R[v]===T&&(T!==t||v in $i(R))}}function kAe(v){var T=U_(v,function(B){return R.size===o&&R.clear(),B}),R=T.cache;return T}function GAe(v,T){var R=v[1],B=T[1],Q=R|B,fe=Q<(f|m|S),Se=B==S&&R==y||B==S&&R==D&&v[7].length<=T[8]||B==(S|D)&&T[7].length<=T[8]&&R==y;if(!(fe||Se))return v;B&f&&(v[2]=T[2],Q|=R&f?0:g);var Me=T[3];if(Me){var He=v[3];v[3]=He?TV(He,Me,T[4]):Me,v[4]=He?mu(v[3],l):T[4]}return Me=T[5],Me&&(He=v[5],v[5]=He?EV(He,Me,T[6]):Me,v[6]=He?mu(v[5],l):T[6]),Me=T[7],Me&&(v[7]=Me),B&S&&(v[8]=v[8]==null?T[8]:M(v[8],T[8])),v[9]==null&&(v[9]=T[9]),v[0]=T[0],v[1]=Q,v}function VAe(v){var T=[];if(v!=null)for(var R in $i(v))T.push(R);return T}function zAe(v){return z0.call(v)}function UV(v,T,R){return T=I(T===t?v.length-1:T,0),function(){for(var B=arguments,Q=-1,fe=I(B.length-T,0),Se=Ye(fe);++Q<fe;)Se[Q]=B[T+Q];Q=-1;for(var Me=Ye(T+1);++Q<T;)Me[Q]=B[Q];return Me[T]=R(Se),wn(v,this,Me)}}function BV(v,T){return T.length<2?v:ym(v,hl(T,0,-1))}function jAe(v,T){for(var R=v.length,B=M(T.length,R),Q=Ga(v);B--;){var fe=T[B];v[B]=Hh(fe,R)?Q[fe]:t}return v}function wP(v,T){if(!(T==="constructor"&&typeof v[T]=="function")&&T!="__proto__")return v[T]}var kV=VV(cV),JE=Z3||function(v,T){return os.setTimeout(v,T)},RP=VV(dAe);function GV(v,T,R){var B=T+"";return RP(v,LAe(B,WAe(OAe(B),R)))}function VV(v){var T=0,R=0;return function(){var B=L(),Q=X-(B-R);if(R=B,Q>0){if(++T>=F)return arguments[0]}else T=0;return v.apply(t,arguments)}}function N_(v,T){var R=-1,B=v.length,Q=B-1;for(T=T===t?B:T;++R<T;){var fe=cP(R,Q),Se=v[fe];v[fe]=v[R],v[R]=Se}return v.length=T,v}var zV=kAe(function(v){var T=[];return v.charCodeAt(0)===46&&T.push(""),v.replace(Kt,function(R,B,Q,fe){T.push(Q?fe.replace(Le,"$1"):B||R)}),T});function Eu(v){if(typeof v=="string"||Mo(v))return v;var T=v+"";return T=="0"&&1/v==-N?"-0":T}function Em(v){if(v!=null){try{return Mh.call(v)}catch(T){}try{return v+""}catch(T){}}return""}function WAe(v,T){return Ba(se,function(R){var B="_."+R[0];T&R[1]&&!wh(v,B)&&v.push(B)}),v.sort()}function jV(v){if(v instanceof di)return v.clone();var T=new cl(v.__wrapped__,v.__chain__);return T.__actions__=Ga(v.__actions__),T.__index__=v.__index__,T.__values__=v.__values__,T}function qAe(v,T,R){(R?pa(v,T,R):T===t)?T=1:T=I(Br(T),0);var B=v==null?0:v.length;if(!B||T<1)return[];for(var Q=0,fe=0,Se=Ye(Ah(B/T));Q<B;)Se[fe++]=hl(v,Q,Q+=T);return Se}function YAe(v){for(var T=-1,R=v==null?0:v.length,B=0,Q=[];++T<R;){var fe=v[T];fe&&(Q[B++]=fe)}return Q}function XAe(){var v=arguments.length;if(!v)return[];for(var T=Ye(v-1),R=arguments[0],B=v;B--;)T[B-1]=arguments[B];return fu(Hr(R)?Ga(R):[R],Hs(T,1))}var $Ae=$r(function(v,T){return Zn(v)?qE(v,Hs(T,1,Zn,!0)):[]}),ZAe=$r(function(v,T){var R=pl(T);return Zn(R)&&(R=t),Zn(v)?qE(v,Hs(T,1,Zn,!0),vr(R,2)):[]}),KAe=$r(function(v,T){var R=pl(T);return Zn(R)&&(R=t),Zn(v)?qE(v,Hs(T,1,Zn,!0),t,R):[]});function JAe(v,T,R){var B=v==null?0:v.length;return B?(T=R||T===t?1:Br(T),hl(v,T<0?0:T,B)):[]}function QAe(v,T,R){var B=v==null?0:v.length;return B?(T=R||T===t?1:Br(T),T=B-T,hl(v,0,T<0?0:T)):[]}function eOe(v,T){return v&&v.length?w_(v,vr(T,3),!0,!0):[]}function tOe(v,T){return v&&v.length?w_(v,vr(T,3),!0):[]}function rOe(v,T,R,B){var Q=v==null?0:v.length;return Q?(R&&typeof R!="number"&&pa(v,T,R)&&(R=0,B=Q),XCe(v,T,R,B)):[]}function WV(v,T,R){var B=v==null?0:v.length;if(!B)return-1;var Q=R==null?0:Br(R);return Q<0&&(Q=I(B+Q,0)),U0(v,vr(T,3),Q)}function qV(v,T,R){var B=v==null?0:v.length;if(!B)return-1;var Q=B-1;return R!==t&&(Q=Br(R),Q=R<0?I(B+Q,0):M(Q,B-1)),U0(v,vr(T,3),Q,!0)}function YV(v){var T=v==null?0:v.length;return T?Hs(v,1):[]}function iOe(v){var T=v==null?0:v.length;return T?Hs(v,N):[]}function nOe(v,T){var R=v==null?0:v.length;return R?(T=T===t?1:Br(T),Hs(v,T)):[]}function sOe(v){for(var T=-1,R=v==null?0:v.length,B={};++T<R;){var Q=v[T];B[Q[0]]=Q[1]}return B}function XV(v){return v&&v.length?v[0]:t}function aOe(v,T,R){var B=v==null?0:v.length;if(!B)return-1;var Q=R==null?0:Br(R);return Q<0&&(Q=I(B+Q,0)),vd(v,T,Q)}function oOe(v){var T=v==null?0:v.length;return T?hl(v,0,-1):[]}var lOe=$r(function(v){var T=Ji(v,fP);return T.length&&T[0]===v[0]?nP(T):[]}),cOe=$r(function(v){var T=pl(v),R=Ji(v,fP);return T===pl(R)?T=t:R.pop(),R.length&&R[0]===v[0]?nP(R,vr(T,2)):[]}),uOe=$r(function(v){var T=pl(v),R=Ji(v,fP);return T=typeof T=="function"?T:t,T&&R.pop(),R.length&&R[0]===v[0]?nP(R,t,T):[]});function hOe(v,T){return v==null?"":J3.call(v,T)}function pl(v){var T=v==null?0:v.length;return T?v[T-1]:t}function pOe(v,T,R){var B=v==null?0:v.length;if(!B)return-1;var Q=B;return R!==t&&(Q=Br(R),Q=Q<0?I(B+Q,0):M(Q,B-1)),T===T?G3(v,T,Q):U0(v,c_,Q,!0)}function dOe(v,T){return v&&v.length?sV(v,Br(T)):t}var fOe=$r($V);function $V(v,T){return v&&v.length&&T&&T.length?lP(v,T):v}function mOe(v,T,R){return v&&v.length&&T&&T.length?lP(v,T,vr(R,2)):v}function gOe(v,T,R){return v&&v.length&&T&&T.length?lP(v,T,t,R):v}var vOe=Fh(function(v,T){var R=v==null?0:v.length,B=eP(v,T);return lV(v,Ji(T,function(Q){return Hh(Q,R)?+Q:Q}).sort(yV)),B});function yOe(v,T){var R=[];if(!(v&&v.length))return R;var B=-1,Q=[],fe=v.length;for(T=vr(T,3);++B<fe;){var Se=v[B];T(Se,B,v)&&(R.push(Se),Q.push(B))}return lV(v,Q),R}function MP(v){return v==null?v:ge.call(v)}function TOe(v,T,R){var B=v==null?0:v.length;return B?(R&&typeof R!="number"&&pa(v,T,R)?(T=0,R=B):(T=T==null?0:Br(T),R=R===t?B:Br(R)),hl(v,T,R)):[]}function EOe(v,T){return __(v,T)}function bOe(v,T,R){return hP(v,T,vr(R,2))}function xOe(v,T){var R=v==null?0:v.length;if(R){var B=__(v,T);if(B<R&&hc(v[B],T))return B}return-1}function IOe(v,T){return __(v,T,!0)}function SOe(v,T,R){return hP(v,T,vr(R,2),!0)}function _Oe(v,T){var R=v==null?0:v.length;if(R){var B=__(v,T,!0)-1;if(hc(v[B],T))return B}return-1}function wOe(v){return v&&v.length?uV(v):[]}function ROe(v,T){return v&&v.length?uV(v,vr(T,2)):[]}function MOe(v){var T=v==null?0:v.length;return T?hl(v,1,T):[]}function DOe(v,T,R){return v&&v.length?(T=R||T===t?1:Br(T),hl(v,0,T<0?0:T)):[]}function COe(v,T,R){var B=v==null?0:v.length;return B?(T=R||T===t?1:Br(T),T=B-T,hl(v,T<0?0:T,B)):[]}function AOe(v,T){return v&&v.length?w_(v,vr(T,3),!1,!0):[]}function OOe(v,T){return v&&v.length?w_(v,vr(T,3)):[]}var POe=$r(function(v){return Id(Hs(v,1,Zn,!0))}),NOe=$r(function(v){var T=pl(v);return Zn(T)&&(T=t),Id(Hs(v,1,Zn,!0),vr(T,2))}),LOe=$r(function(v){var T=pl(v);return T=typeof T=="function"?T:t,Id(Hs(v,1,Zn,!0),t,T)});function FOe(v){return v&&v.length?Id(v):[]}function HOe(v,T){return v&&v.length?Id(v,vr(T,2)):[]}function UOe(v,T){return T=typeof T=="function"?T:t,v&&v.length?Id(v,t,T):[]}function DP(v){if(!(v&&v.length))return[];var T=0;return v=lc(v,function(R){if(Zn(R))return T=I(R.length,T),!0}),LE(T,function(R){return Ji(v,OE(R))})}function ZV(v,T){if(!(v&&v.length))return[];var R=DP(v);return T==null?R:Ji(R,function(B){return wn(T,t,B)})}var BOe=$r(function(v,T){return Zn(v)?qE(v,T):[]}),kOe=$r(function(v){return dP(lc(v,Zn))}),GOe=$r(function(v){var T=pl(v);return Zn(T)&&(T=t),dP(lc(v,Zn),vr(T,2))}),VOe=$r(function(v){var T=pl(v);return T=typeof T=="function"?T:t,dP(lc(v,Zn),t,T)}),zOe=$r(DP);function jOe(v,T){return fV(v||[],T||[],WE)}function WOe(v,T){return fV(v||[],T||[],$E)}var qOe=$r(function(v){var T=v.length,R=T>1?v[T-1]:t;return R=typeof R=="function"?(v.pop(),R):t,ZV(v,R)});function KV(v){var T=ie(v);return T.__chain__=!0,T}function YOe(v,T){return T(v),v}function L_(v,T){return T(v)}var XOe=Fh(function(v){var T=v.length,R=T?v[0]:0,B=this.__wrapped__,Q=function(fe){return eP(fe,v)};return T>1||this.__actions__.length||!(B instanceof di)||!Hh(R)?this.thru(Q):(B=B.slice(R,+R+(T?1:0)),B.__actions__.push({func:L_,args:[Q],thisArg:t}),new cl(B,this.__chain__).thru(function(fe){return T&&!fe.length&&fe.push(t),fe}))});function $Oe(){return KV(this)}function ZOe(){return new cl(this.value(),this.__chain__)}function KOe(){this.__values__===t&&(this.__values__=h7(this.value()));var v=this.__index__>=this.__values__.length,T=v?t:this.__values__[this.__index__++];return{done:v,value:T}}function JOe(){return this}function QOe(v){for(var T,R=this;R instanceof ll;){var B=jV(R);B.__index__=0,B.__values__=t,T?Q.__wrapped__=B:T=B;var Q=B;R=R.__wrapped__}return Q.__wrapped__=v,T}function e3e(){var v=this.__wrapped__;if(v instanceof di){var T=v;return this.__actions__.length&&(T=new di(this)),T=T.reverse(),T.__actions__.push({func:L_,args:[MP],thisArg:t}),new cl(T,this.__chain__)}return this.thru(MP)}function t3e(){return dV(this.__wrapped__,this.__actions__)}var r3e=R_(function(v,T,R){Ii.call(v,R)?++v[R]:Nh(v,R,1)});function i3e(v,T,R){var B=Hr(v)?wE:YCe;return R&&pa(v,T,R)&&(T=t),B(v,vr(T,3))}function n3e(v,T){var R=Hr(v)?lc:ZG;return R(v,vr(T,3))}var s3e=SV(WV),a3e=SV(qV);function o3e(v,T){return Hs(F_(v,T),1)}function l3e(v,T){return Hs(F_(v,T),N)}function c3e(v,T,R){return R=R===t?1:Br(R),Hs(F_(v,T),R)}function JV(v,T){var R=Hr(v)?Ba:xd;return R(v,vr(T,3))}function QV(v,T){var R=Hr(v)?Fs:$G;return R(v,vr(T,3))}var u3e=R_(function(v,T,R){Ii.call(v,R)?v[R].push(T):Nh(v,R,[T])});function h3e(v,T,R,B){v=Va(v)?v:ev(v),R=R&&!B?Br(R):0;var Q=v.length;return R<0&&(R=I(Q+R,0)),G_(v)?R<=Q&&v.indexOf(T,R)>-1:!!Q&&vd(v,T,R)>-1}var p3e=$r(function(v,T,R){var B=-1,Q=typeof T=="function",fe=Va(v)?Ye(v.length):[];return xd(v,function(Se){fe[++B]=Q?wn(T,Se,R):YE(Se,T,R)}),fe}),d3e=R_(function(v,T,R){Nh(v,R,T)});function F_(v,T){var R=Hr(v)?Ji:rV;return R(v,vr(T,3))}function f3e(v,T,R,B){return v==null?[]:(Hr(T)||(T=T==null?[]:[T]),R=B?t:R,Hr(R)||(R=R==null?[]:[R]),aV(v,T,R))}var m3e=R_(function(v,T,R){v[R?0:1].push(T)},function(){return[[],[]]});function g3e(v,T,R){var B=Hr(v)?ME:u_,Q=arguments.length<3;return B(v,vr(T,4),R,Q,xd)}function v3e(v,T,R){var B=Hr(v)?o_:u_,Q=arguments.length<3;return B(v,vr(T,4),R,Q,$G)}function y3e(v,T){var R=Hr(v)?lc:ZG;return R(v,B_(vr(T,3)))}function T3e(v){var T=Hr(v)?WG:hAe;return T(v)}function E3e(v,T,R){(R?pa(v,T,R):T===t)?T=1:T=Br(T);var B=Hr(v)?VCe:pAe;return B(v,T)}function b3e(v){var T=Hr(v)?zCe:fAe;return T(v)}function x3e(v){if(v==null)return 0;if(Va(v))return G_(v)?Td(v):v.length;var T=Ws(v);return T==Be||T==$?v.size:aP(v).length}function I3e(v,T,R){var B=Hr(v)?DE:mAe;return R&&pa(v,T,R)&&(T=t),B(v,vr(T,3))}var S3e=$r(function(v,T){if(v==null)return[];var R=T.length;return R>1&&pa(v,T[0],T[1])?T=[]:R>2&&pa(T[0],T[1],T[2])&&(T=[T[0]]),aV(v,Hs(T,1),[])}),H_=$3||function(){return os.Date.now()};function _3e(v,T){if(typeof T!="function")throw new ka(n);return v=Br(v),function(){if(--v<1)return T.apply(this,arguments)}}function e7(v,T,R){return T=R?t:T,T=v&&T==null?v.length:T,Lh(v,S,t,t,t,t,T)}function t7(v,T){var R;if(typeof T!="function")throw new ka(n);return v=Br(v),function(){return--v>0&&(R=T.apply(this,arguments)),v<=1&&(T=t),R}}var CP=$r(function(v,T,R){var B=f;if(R.length){var Q=mu(R,J0(CP));B|=b}return Lh(v,B,T,R,Q)}),r7=$r(function(v,T,R){var B=f|m;if(R.length){var Q=mu(R,J0(r7));B|=b}return Lh(T,B,v,R,Q)});function i7(v,T,R){T=R?t:T;var B=Lh(v,y,t,t,t,t,t,T);return B.placeholder=i7.placeholder,B}function n7(v,T,R){T=R?t:T;var B=Lh(v,E,t,t,t,t,t,T);return B.placeholder=n7.placeholder,B}function s7(v,T,R){var B,Q,fe,Se,Me,He,st=0,at=!1,Tt=!1,Ut=!0;if(typeof v!="function")throw new ka(n);T=dl(T)||0,Rn(R)&&(at=!!R.leading,Tt="maxWait"in R,fe=Tt?I(dl(R.maxWait)||0,T):fe,Ut="trailing"in R?!!R.trailing:Ut);function rr(Kn){var pc=B,kh=Q;return B=Q=t,st=Kn,Se=v.apply(kh,pc),Se}function Er(Kn){return st=Kn,Me=JE(ii,T),at?rr(Kn):Se}function zr(Kn){var pc=Kn-He,kh=Kn-st,S7=T-pc;return Tt?M(S7,fe-kh):S7}function br(Kn){var pc=Kn-He,kh=Kn-st;return He===t||pc>=T||pc<0||Tt&&kh>=fe}function ii(){var Kn=H_();if(br(Kn))return yi(Kn);Me=JE(ii,zr(Kn))}function yi(Kn){return Me=t,Ut&&B?rr(Kn):(B=Q=t,Se)}function Do(){Me!==t&&mV(Me),st=0,B=He=Q=Me=t}function da(){return Me===t?Se:yi(H_())}function Co(){var Kn=H_(),pc=br(Kn);if(B=arguments,Q=this,He=Kn,pc){if(Me===t)return Er(He);if(Tt)return mV(Me),Me=JE(ii,T),rr(He)}return Me===t&&(Me=JE(ii,T)),Se}return Co.cancel=Do,Co.flush=da,Co}var w3e=$r(function(v,T){return XG(v,1,T)}),R3e=$r(function(v,T,R){return XG(v,dl(T)||0,R)});function M3e(v){return Lh(v,P)}function U_(v,T){if(typeof v!="function"||T!=null&&typeof T!="function")throw new ka(n);var R=function(){var B=arguments,Q=T?T.apply(this,B):B[0],fe=R.cache;if(fe.has(Q))return fe.get(Q);var Se=v.apply(this,B);return R.cache=fe.set(Q,Se)||fe,Se};return R.cache=new(U_.Cache||Ph),R}U_.Cache=Ph;function B_(v){if(typeof v!="function")throw new ka(n);return function(){var T=arguments;switch(T.length){case 0:return!v.call(this);case 1:return!v.call(this,T[0]);case 2:return!v.call(this,T[0],T[1]);case 3:return!v.call(this,T[0],T[1],T[2])}return!v.apply(this,T)}}function D3e(v){return t7(2,v)}var C3e=gAe(function(v,T){T=T.length==1&&Hr(T[0])?Ji(T[0],ca(vr())):Ji(Hs(T,1),ca(vr()));var R=T.length;return $r(function(B){for(var Q=-1,fe=M(B.length,R);++Q<fe;)B[Q]=T[Q].call(this,B[Q]);return wn(v,this,B)})}),AP=$r(function(v,T){var R=mu(T,J0(AP));return Lh(v,b,t,T,R)}),a7=$r(function(v,T){var R=mu(T,J0(a7));return Lh(v,x,t,T,R)}),A3e=Fh(function(v,T){return Lh(v,D,t,t,t,T)});function O3e(v,T){if(typeof v!="function")throw new ka(n);return T=T===t?T:Br(T),$r(v,T)}function P3e(v,T){if(typeof v!="function")throw new ka(n);return T=T==null?0:I(Br(T),0),$r(function(R){var B=R[T],Q=_d(R,0,T);return B&&fu(Q,B),wn(v,this,Q)})}function N3e(v,T,R){var B=!0,Q=!0;if(typeof v!="function")throw new ka(n);return Rn(R)&&(B="leading"in R?!!R.leading:B,Q="trailing"in R?!!R.trailing:Q),s7(v,T,{leading:B,maxWait:T,trailing:Q})}function L3e(v){return e7(v,1)}function F3e(v,T){return AP(mP(T),v)}function H3e(){if(!arguments.length)return[];var v=arguments[0];return Hr(v)?v:[v]}function U3e(v){return ul(v,h)}function B3e(v,T){return T=typeof T=="function"?T:t,ul(v,h,T)}function k3e(v){return ul(v,c|h)}function G3e(v,T){return T=typeof T=="function"?T:t,ul(v,c|h,T)}function V3e(v,T){return T==null||YG(v,T,_s(T))}function hc(v,T){return v===T||v!==v&&T!==T}var z3e=A_(iP),j3e=A_(function(v,T){return v>=T}),bm=QG(function(){return arguments}())?QG:function(v){return Hn(v)&&Ii.call(v,"callee")&&!VE.call(v,"callee")},Hr=Ye.isArray,W3e=gd?ca(gd):QCe;function Va(v){return v!=null&&k_(v.length)&&!Uh(v)}function Zn(v){return Hn(v)&&Va(v)}function q3e(v){return v===!0||v===!1||Hn(v)&&ha(v)==de}var wd=K3||VP,Y3e=r_?ca(r_):eAe;function X3e(v){return Hn(v)&&v.nodeType===1&&!QE(v)}function $3e(v){if(v==null)return!0;if(Va(v)&&(Hr(v)||typeof v=="string"||typeof v.splice=="function"||wd(v)||Q0(v)||bm(v)))return!v.length;var T=Ws(v);if(T==Be||T==$)return!v.size;if(KE(v))return!aP(v).length;for(var R in v)if(Ii.call(v,R))return!1;return!0}function Z3e(v,T){return XE(v,T)}function K3e(v,T,R){R=typeof R=="function"?R:t;var B=R?R(v,T):t;return B===t?XE(v,T,t,R):!!B}function OP(v){if(!Hn(v))return!1;var T=ha(v);return T==je||T==Fe||typeof v.message=="string"&&typeof v.name=="string"&&!QE(v)}function J3e(v){return typeof v=="number"&&$0(v)}function Uh(v){if(!Rn(v))return!1;var T=ha(v);return T==Oe||T==dt||T==be||T==_e}function o7(v){return typeof v=="number"&&v==Br(v)}function k_(v){return typeof v=="number"&&v>-1&&v%1==0&&v<=k}function Rn(v){var T=typeof v;return v!=null&&(T=="object"||T=="function")}function Hn(v){return v!=null&&typeof v=="object"}var l7=i_?ca(i_):rAe;function Q3e(v,T){return v===T||sP(v,T,xP(T))}function ePe(v,T,R){return R=typeof R=="function"?R:t,sP(v,T,xP(T),R)}function tPe(v){return c7(v)&&v!=+v}function rPe(v){if(BAe(v))throw new Ar(i);return eV(v)}function iPe(v){return v===null}function nPe(v){return v==null}function c7(v){return typeof v=="number"||Hn(v)&&ha(v)==ke}function QE(v){if(!Hn(v)||ha(v)!=bt)return!1;var T=q0(v);if(T===null)return!0;var R=Ii.call(T,"constructor")&&T.constructor;return typeof R=="function"&&R instanceof R&&Mh.call(R)==T_}var PP=pm?ca(pm):iAe;function sPe(v){return o7(v)&&v>=-k&&v<=k}var u7=n_?ca(n_):nAe;function G_(v){return typeof v=="string"||!Hr(v)&&Hn(v)&&ha(v)==re}function Mo(v){return typeof v=="symbol"||Hn(v)&&ha(v)==me}var Q0=s_?ca(s_):sAe;function aPe(v){return v===t}function oPe(v){return Hn(v)&&Ws(v)==Y}function lPe(v){return Hn(v)&&ha(v)==xe}var cPe=A_(oP),uPe=A_(function(v,T){return v<=T});function h7(v){if(!v)return[];if(Va(v))return G_(v)?wo(v):Ga(v);if(ua&&v[ua])return m_(v[ua]());var T=Ws(v),R=T==Be?UE:T==$?B0:ev;return R(v)}function Bh(v){if(!v)return v===0?v:0;if(v=dl(v),v===N||v===-N){var T=v<0?-1:1;return T*G}return v===v?v:0}function Br(v){var T=Bh(v),R=T%1;return T===T?R?T-R:T:0}function p7(v){return v?vm(Br(v),0,j):0}function dl(v){if(typeof v=="number")return v;if(Mo(v))return U;if(Rn(v)){var T=typeof v.valueOf=="function"?v.valueOf():v;v=Rn(T)?T+"":T}if(typeof v!="string")return v===0?v:+v;v=h_(v);var R=Nr.test(v);return R||Yr.test(v)?F0(v.slice(2),R?2:8):Ir.test(v)?U:+v}function d7(v){return Tu(v,za(v))}function hPe(v){return v?vm(Br(v),-k,k):v===0?v:0}function Gi(v){return v==null?"":Ro(v)}var pPe=Z0(function(v,T){if(KE(T)||Va(T)){Tu(T,_s(T),v);return}for(var R in T)Ii.call(T,R)&&WE(v,R,T[R])}),f7=Z0(function(v,T){Tu(T,za(T),v)}),V_=Z0(function(v,T,R,B){Tu(T,za(T),v,B)}),dPe=Z0(function(v,T,R,B){Tu(T,_s(T),v,B)}),fPe=Fh(eP);function mPe(v,T){var R=Ss(v);return T==null?R:qG(R,T)}var gPe=$r(function(v,T){v=$i(v);var R=-1,B=T.length,Q=B>2?T[2]:t;for(Q&&pa(T[0],T[1],Q)&&(B=1);++R<B;)for(var fe=T[R],Se=za(fe),Me=-1,He=Se.length;++Me<He;){var st=Se[Me],at=v[st];(at===t||hc(at,cc[st])&&!Ii.call(v,st))&&(v[st]=fe[st])}return v}),vPe=$r(function(v){return v.push(t,AV),wn(m7,t,v)});function yPe(v,T){return l_(v,vr(T,3),yu)}function TPe(v,T){return l_(v,vr(T,3),rP)}function EPe(v,T){return v==null?v:tP(v,vr(T,3),za)}function bPe(v,T){return v==null?v:KG(v,vr(T,3),za)}function xPe(v,T){return v&&yu(v,vr(T,3))}function IPe(v,T){return v&&rP(v,vr(T,3))}function SPe(v){return v==null?[]:I_(v,_s(v))}function _Pe(v){return v==null?[]:I_(v,za(v))}function NP(v,T,R){var B=v==null?t:ym(v,T);return B===t?R:B}function wPe(v,T){return v!=null&&NV(v,T,$Ce)}function LP(v,T){return v!=null&&NV(v,T,ZCe)}var RPe=wV(function(v,T,R){T!=null&&typeof T.toString!="function"&&(T=z0.call(T)),v[T]=R},HP(ja)),MPe=wV(function(v,T,R){T!=null&&typeof T.toString!="function"&&(T=z0.call(T)),Ii.call(v,T)?v[T].push(R):v[T]=[R]},vr),DPe=$r(YE);function _s(v){return Va(v)?jG(v):aP(v)}function za(v){return Va(v)?jG(v,!0):aAe(v)}function CPe(v,T){var R={};return T=vr(T,3),yu(v,function(B,Q,fe){Nh(R,T(B,Q,fe),B)}),R}function APe(v,T){var R={};return T=vr(T,3),yu(v,function(B,Q,fe){Nh(R,Q,T(B,Q,fe))}),R}var OPe=Z0(function(v,T,R){S_(v,T,R)}),m7=Z0(function(v,T,R,B){S_(v,T,R,B)}),PPe=Fh(function(v,T){var R={};if(v==null)return R;var B=!1;T=Ji(T,function(fe){return fe=Sd(fe,v),B||(B=fe.length>1),fe}),Tu(v,EP(v),R),B&&(R=ul(R,c|u|h,RAe));for(var Q=T.length;Q--;)pP(R,T[Q]);return R});function NPe(v,T){return g7(v,B_(vr(T)))}var LPe=Fh(function(v,T){return v==null?{}:lAe(v,T)});function g7(v,T){if(v==null)return{};var R=Ji(EP(v),function(B){return[B]});return T=vr(T),oV(v,R,function(B,Q){return T(B,Q[0])})}function FPe(v,T,R){T=Sd(T,v);var B=-1,Q=T.length;for(Q||(Q=1,v=t);++B<Q;){var fe=v==null?t:v[Eu(T[B])];fe===t&&(B=Q,fe=R),v=Uh(fe)?fe.call(v):fe}return v}function HPe(v,T,R){return v==null?v:$E(v,T,R)}function UPe(v,T,R,B){return B=typeof B=="function"?B:t,v==null?v:$E(v,T,R,B)}var v7=DV(_s),y7=DV(za);function BPe(v,T,R){var B=Hr(v),Q=B||wd(v)||Q0(v);if(T=vr(T,4),R==null){var fe=v&&v.constructor;Q?R=B?new fe:[]:Rn(v)?R=Uh(fe)?Ss(q0(v)):{}:R={}}return(Q?Ba:yu)(v,function(Se,Me,He){return T(R,Se,Me,He)}),R}function kPe(v,T){return v==null?!0:pP(v,T)}function GPe(v,T,R){return v==null?v:pV(v,T,mP(R))}function VPe(v,T,R,B){return B=typeof B=="function"?B:t,v==null?v:pV(v,T,mP(R),B)}function ev(v){return v==null?[]:FE(v,_s(v))}function zPe(v){return v==null?[]:FE(v,za(v))}function jPe(v,T,R){return R===t&&(R=T,T=t),R!==t&&(R=dl(R),R=R===R?R:0),T!==t&&(T=dl(T),T=T===T?T:0),vm(dl(v),T,R)}function WPe(v,T,R){return T=Bh(T),R===t?(R=T,T=0):R=Bh(R),v=dl(v),KCe(v,T,R)}function qPe(v,T,R){if(R&&typeof R!="boolean"&&pa(v,T,R)&&(T=R=t),R===t&&(typeof T=="boolean"?(R=T,T=t):typeof v=="boolean"&&(R=v,v=t)),v===t&&T===t?(v=0,T=1):(v=Bh(v),T===t?(T=v,v=0):T=Bh(T)),v>T){var B=v;v=T,T=B}if(R||v%1||T%1){var Q=te();return M(v+Q*(T-v+SE("1e-"+((Q+"").length-1))),T)}return cP(v,T)}var YPe=K0(function(v,T,R){return T=T.toLowerCase(),v+(R?T7(T):T)});function T7(v){return FP(Gi(v).toLowerCase())}function E7(v){return v=Gi(v),v&&v.replace(Vr,HE).replace($t,"")}function XPe(v,T,R){v=Gi(v),T=Ro(T);var B=v.length;R=R===t?B:vm(Br(R),0,B);var Q=R;return R-=T.length,R>=0&&v.slice(R,Q)==T}function $Pe(v){return v=Gi(v),v&&_t.test(v)?v.replace(Xe,F3):v}function ZPe(v){return v=Gi(v),v&&Is.test(v)?v.replace(ds,"\\$&"):v}var KPe=K0(function(v,T,R){return v+(R?"-":"")+T.toLowerCase()}),JPe=K0(function(v,T,R){return v+(R?" ":"")+T.toLowerCase()}),QPe=IV("toLowerCase");function e2e(v,T,R){v=Gi(v),T=Br(T);var B=T?Td(v):0;if(!T||B>=T)return v;var Q=(T-B)/2;return C_(bd(Q),R)+v+C_(Ah(Q),R)}function t2e(v,T,R){v=Gi(v),T=Br(T);var B=T?Td(v):0;return T&&B<T?v+C_(T-B,R):v}function r2e(v,T,R){v=Gi(v),T=Br(T);var B=T?Td(v):0;return T&&B<T?C_(T-B,R)+v:v}function i2e(v,T,R){return R||T==null?T=0:T&&(T=+T),W(Gi(v).replace(ic,""),T||0)}function n2e(v,T,R){return(R?pa(v,T,R):T===t)?T=1:T=Br(T),uP(Gi(v),T)}function s2e(){var v=arguments,T=Gi(v[0]);return v.length<3?T:T.replace(v[1],v[2])}var a2e=K0(function(v,T,R){return v+(R?"_":"")+T.toLowerCase()});function o2e(v,T,R){return R&&typeof R!="number"&&pa(v,T,R)&&(T=R=t),R=R===t?j:R>>>0,R?(v=Gi(v),v&&(typeof T=="string"||T!=null&&!PP(T))&&(T=Ro(T),!T&&yd(v))?_d(wo(v),0,R):v.split(T,R)):[]}var l2e=K0(function(v,T,R){return v+(R?" ":"")+FP(T)});function c2e(v,T,R){return v=Gi(v),R=R==null?0:vm(Br(R),0,v.length),T=Ro(T),v.slice(R,R+T.length)==T}function u2e(v,T,R){var B=ie.templateSettings;R&&pa(v,T,R)&&(T=t),v=Gi(v),T=V_({},T,B,CV);var Q=V_({},T.imports,B.imports,CV),fe=_s(Q),Se=FE(Q,fe),Me,He,st=0,at=T.interpolate||ei,Tt="__p += '",Ut=BE((T.escape||ei).source+"|"+at.source+"|"+(at===Ki?Ke:ei).source+"|"+(T.evaluate||ei).source+"|$","g"),rr="//# sourceURL="+(Ii.call(T,"sourceURL")?(T.sourceURL+"").replace(/\s/g," "):"lodash.templateSources["+ ++xi+"]")+`
|
||
`;v.replace(Ut,function(br,ii,yi,Do,da,Co){return yi||(yi=Do),Tt+=v.slice(st,Co).replace(dn,H3),ii&&(Me=!0,Tt+=`' +
|
||
__e(`+ii+`) +
|
||
'`),da&&(He=!0,Tt+=`';
|
||
`+da+`;
|
||
__p += '`),yi&&(Tt+=`' +
|
||
((__t = (`+yi+`)) == null ? '' : __t) +
|
||
'`),st=Co+br.length,br}),Tt+=`';
|
||
`;var Er=Ii.call(T,"variable")&&T.variable;if(!Er)Tt=`with (obj) {
|
||
`+Tt+`
|
||
}
|
||
`;else if(Qe.test(Er))throw new Ar(s);Tt=(He?Tt.replace(cr,""):Tt).replace(Xt,"$1").replace(gr,"$1;"),Tt="function("+(Er||"obj")+`) {
|
||
`+(Er?"":`obj || (obj = {});
|
||
`)+"var __t, __p = ''"+(Me?", __e = _.escape":"")+(He?`, __j = Array.prototype.join;
|
||
function print() { __p += __j.call(arguments, '') }
|
||
`:`;
|
||
`)+Tt+`return __p
|
||
}`;var zr=x7(function(){return ri(fe,rr+"return "+Tt).apply(t,Se)});if(zr.source=Tt,OP(zr))throw zr;return zr}function h2e(v){return Gi(v).toLowerCase()}function p2e(v){return Gi(v).toUpperCase()}function d2e(v,T,R){if(v=Gi(v),v&&(R||T===t))return h_(v);if(!v||!(T=Ro(T)))return v;var B=wo(v),Q=wo(T),fe=p_(B,Q),Se=d_(B,Q)+1;return _d(B,fe,Se).join("")}function f2e(v,T,R){if(v=Gi(v),v&&(R||T===t))return v.slice(0,v_(v)+1);if(!v||!(T=Ro(T)))return v;var B=wo(v),Q=d_(B,wo(T))+1;return _d(B,0,Q).join("")}function m2e(v,T,R){if(v=Gi(v),v&&(R||T===t))return v.replace(ic,"");if(!v||!(T=Ro(T)))return v;var B=wo(v),Q=p_(B,wo(T));return _d(B,Q).join("")}function g2e(v,T){var R=_,B=w;if(Rn(T)){var Q="separator"in T?T.separator:Q;R="length"in T?Br(T.length):R,B="omission"in T?Ro(T.omission):B}v=Gi(v);var fe=v.length;if(yd(v)){var Se=wo(v);fe=Se.length}if(R>=fe)return v;var Me=R-Td(B);if(Me<1)return B;var He=Se?_d(Se,0,Me).join(""):v.slice(0,Me);if(Q===t)return He+B;if(Se&&(Me+=He.length-Me),PP(Q)){if(v.slice(Me).search(Q)){var st,at=He;for(Q.global||(Q=BE(Q.source,Gi(Jt.exec(Q))+"g")),Q.lastIndex=0;st=Q.exec(at);)var Tt=st.index;He=He.slice(0,Tt===t?Me:Tt)}}else if(v.indexOf(Ro(Q),Me)!=Me){var Ut=He.lastIndexOf(Q);Ut>-1&&(He=He.slice(0,Ut))}return He+B}function v2e(v){return v=Gi(v),v&<.test(v)?v.replace(Ae,V3):v}var y2e=K0(function(v,T,R){return v+(R?" ":"")+T.toUpperCase()}),FP=IV("toUpperCase");function b7(v,T,R){return v=Gi(v),T=R?t:T,T===t?f_(v)?j3(v):AE(v):v.match(T)||[]}var x7=$r(function(v,T){try{return wn(v,t,T)}catch(R){return OP(R)?R:new Ar(R)}}),T2e=Fh(function(v,T){return Ba(T,function(R){R=Eu(R),Nh(v,R,CP(v[R],v))}),v});function E2e(v){var T=v==null?0:v.length,R=vr();return v=T?Ji(v,function(B){if(typeof B[1]!="function")throw new ka(n);return[R(B[0]),B[1]]}):[],$r(function(B){for(var Q=-1;++Q<T;){var fe=v[Q];if(wn(fe[0],this,B))return wn(fe[1],this,B)}})}function b2e(v){return qCe(ul(v,c))}function HP(v){return function(){return v}}function x2e(v,T){return v==null||v!==v?T:v}var I2e=_V(),S2e=_V(!0);function ja(v){return v}function UP(v){return tV(typeof v=="function"?v:ul(v,c))}function _2e(v){return iV(ul(v,c))}function w2e(v,T){return nV(v,ul(T,c))}var R2e=$r(function(v,T){return function(R){return YE(R,v,T)}}),M2e=$r(function(v,T){return function(R){return YE(v,R,T)}});function BP(v,T,R){var B=_s(T),Q=I_(T,B);R==null&&!(Rn(T)&&(Q.length||!B.length))&&(R=T,T=v,v=this,Q=I_(T,_s(T)));var fe=!(Rn(R)&&"chain"in R)||!!R.chain,Se=Uh(v);return Ba(Q,function(Me){var He=T[Me];v[Me]=He,Se&&(v.prototype[Me]=function(){var st=this.__chain__;if(fe||st){var at=v(this.__wrapped__),Tt=at.__actions__=Ga(this.__actions__);return Tt.push({func:He,args:arguments,thisArg:v}),at.__chain__=st,at}return He.apply(v,fu([this.value()],arguments))})}),v}function D2e(){return os._===this&&(os._=j0),this}function kP(){}function C2e(v){return v=Br(v),$r(function(T){return sV(T,v)})}var A2e=vP(Ji),O2e=vP(wE),P2e=vP(DE);function I7(v){return SP(v)?OE(Eu(v)):cAe(v)}function N2e(v){return function(T){return v==null?t:ym(v,T)}}var L2e=RV(),F2e=RV(!0);function GP(){return[]}function VP(){return!1}function H2e(){return{}}function U2e(){return""}function B2e(){return!0}function k2e(v,T){if(v=Br(v),v<1||v>k)return[];var R=j,B=M(v,j);T=vr(T),v-=j;for(var Q=LE(B,T);++R<v;)T(R);return Q}function G2e(v){return Hr(v)?Ji(v,Eu):Mo(v)?[v]:Ga(zV(Gi(v)))}function V2e(v){var T=++V0;return Gi(v)+T}var z2e=D_(function(v,T){return v+T},0),j2e=yP("ceil"),W2e=D_(function(v,T){return v/T},1),q2e=yP("floor");function Y2e(v){return v&&v.length?x_(v,ja,iP):t}function X2e(v,T){return v&&v.length?x_(v,vr(T,2),iP):t}function $2e(v){return Rh(v,ja)}function Z2e(v,T){return Rh(v,vr(T,2))}function K2e(v){return v&&v.length?x_(v,ja,oP):t}function J2e(v,T){return v&&v.length?x_(v,vr(T,2),oP):t}var Q2e=D_(function(v,T){return v*T},1),eNe=yP("round"),tNe=D_(function(v,T){return v-T},0);function rNe(v){return v&&v.length?NE(v,ja):0}function iNe(v,T){return v&&v.length?NE(v,vr(T,2)):0}return ie.after=_3e,ie.ary=e7,ie.assign=pPe,ie.assignIn=f7,ie.assignInWith=V_,ie.assignWith=dPe,ie.at=fPe,ie.before=t7,ie.bind=CP,ie.bindAll=T2e,ie.bindKey=r7,ie.castArray=H3e,ie.chain=KV,ie.chunk=qAe,ie.compact=YAe,ie.concat=XAe,ie.cond=E2e,ie.conforms=b2e,ie.constant=HP,ie.countBy=r3e,ie.create=mPe,ie.curry=i7,ie.curryRight=n7,ie.debounce=s7,ie.defaults=gPe,ie.defaultsDeep=vPe,ie.defer=w3e,ie.delay=R3e,ie.difference=$Ae,ie.differenceBy=ZAe,ie.differenceWith=KAe,ie.drop=JAe,ie.dropRight=QAe,ie.dropRightWhile=eOe,ie.dropWhile=tOe,ie.fill=rOe,ie.filter=n3e,ie.flatMap=o3e,ie.flatMapDeep=l3e,ie.flatMapDepth=c3e,ie.flatten=YV,ie.flattenDeep=iOe,ie.flattenDepth=nOe,ie.flip=M3e,ie.flow=I2e,ie.flowRight=S2e,ie.fromPairs=sOe,ie.functions=SPe,ie.functionsIn=_Pe,ie.groupBy=u3e,ie.initial=oOe,ie.intersection=lOe,ie.intersectionBy=cOe,ie.intersectionWith=uOe,ie.invert=RPe,ie.invertBy=MPe,ie.invokeMap=p3e,ie.iteratee=UP,ie.keyBy=d3e,ie.keys=_s,ie.keysIn=za,ie.map=F_,ie.mapKeys=CPe,ie.mapValues=APe,ie.matches=_2e,ie.matchesProperty=w2e,ie.memoize=U_,ie.merge=OPe,ie.mergeWith=m7,ie.method=R2e,ie.methodOf=M2e,ie.mixin=BP,ie.negate=B_,ie.nthArg=C2e,ie.omit=PPe,ie.omitBy=NPe,ie.once=D3e,ie.orderBy=f3e,ie.over=A2e,ie.overArgs=C3e,ie.overEvery=O2e,ie.overSome=P2e,ie.partial=AP,ie.partialRight=a7,ie.partition=m3e,ie.pick=LPe,ie.pickBy=g7,ie.property=I7,ie.propertyOf=N2e,ie.pull=fOe,ie.pullAll=$V,ie.pullAllBy=mOe,ie.pullAllWith=gOe,ie.pullAt=vOe,ie.range=L2e,ie.rangeRight=F2e,ie.rearg=A3e,ie.reject=y3e,ie.remove=yOe,ie.rest=O3e,ie.reverse=MP,ie.sampleSize=E3e,ie.set=HPe,ie.setWith=UPe,ie.shuffle=b3e,ie.slice=TOe,ie.sortBy=S3e,ie.sortedUniq=wOe,ie.sortedUniqBy=ROe,ie.split=o2e,ie.spread=P3e,ie.tail=MOe,ie.take=DOe,ie.takeRight=COe,ie.takeRightWhile=AOe,ie.takeWhile=OOe,ie.tap=YOe,ie.throttle=N3e,ie.thru=L_,ie.toArray=h7,ie.toPairs=v7,ie.toPairsIn=y7,ie.toPath=G2e,ie.toPlainObject=d7,ie.transform=BPe,ie.unary=L3e,ie.union=POe,ie.unionBy=NOe,ie.unionWith=LOe,ie.uniq=FOe,ie.uniqBy=HOe,ie.uniqWith=UOe,ie.unset=kPe,ie.unzip=DP,ie.unzipWith=ZV,ie.update=GPe,ie.updateWith=VPe,ie.values=ev,ie.valuesIn=zPe,ie.without=BOe,ie.words=b7,ie.wrap=F3e,ie.xor=kOe,ie.xorBy=GOe,ie.xorWith=VOe,ie.zip=zOe,ie.zipObject=jOe,ie.zipObjectDeep=WOe,ie.zipWith=qOe,ie.entries=v7,ie.entriesIn=y7,ie.extend=f7,ie.extendWith=V_,BP(ie,ie),ie.add=z2e,ie.attempt=x7,ie.camelCase=YPe,ie.capitalize=T7,ie.ceil=j2e,ie.clamp=jPe,ie.clone=U3e,ie.cloneDeep=k3e,ie.cloneDeepWith=G3e,ie.cloneWith=B3e,ie.conformsTo=V3e,ie.deburr=E7,ie.defaultTo=x2e,ie.divide=W2e,ie.endsWith=XPe,ie.eq=hc,ie.escape=$Pe,ie.escapeRegExp=ZPe,ie.every=i3e,ie.find=s3e,ie.findIndex=WV,ie.findKey=yPe,ie.findLast=a3e,ie.findLastIndex=qV,ie.findLastKey=TPe,ie.floor=q2e,ie.forEach=JV,ie.forEachRight=QV,ie.forIn=EPe,ie.forInRight=bPe,ie.forOwn=xPe,ie.forOwnRight=IPe,ie.get=NP,ie.gt=z3e,ie.gte=j3e,ie.has=wPe,ie.hasIn=LP,ie.head=XV,ie.identity=ja,ie.includes=h3e,ie.indexOf=aOe,ie.inRange=WPe,ie.invoke=DPe,ie.isArguments=bm,ie.isArray=Hr,ie.isArrayBuffer=W3e,ie.isArrayLike=Va,ie.isArrayLikeObject=Zn,ie.isBoolean=q3e,ie.isBuffer=wd,ie.isDate=Y3e,ie.isElement=X3e,ie.isEmpty=$3e,ie.isEqual=Z3e,ie.isEqualWith=K3e,ie.isError=OP,ie.isFinite=J3e,ie.isFunction=Uh,ie.isInteger=o7,ie.isLength=k_,ie.isMap=l7,ie.isMatch=Q3e,ie.isMatchWith=ePe,ie.isNaN=tPe,ie.isNative=rPe,ie.isNil=nPe,ie.isNull=iPe,ie.isNumber=c7,ie.isObject=Rn,ie.isObjectLike=Hn,ie.isPlainObject=QE,ie.isRegExp=PP,ie.isSafeInteger=sPe,ie.isSet=u7,ie.isString=G_,ie.isSymbol=Mo,ie.isTypedArray=Q0,ie.isUndefined=aPe,ie.isWeakMap=oPe,ie.isWeakSet=lPe,ie.join=hOe,ie.kebabCase=KPe,ie.last=pl,ie.lastIndexOf=pOe,ie.lowerCase=JPe,ie.lowerFirst=QPe,ie.lt=cPe,ie.lte=uPe,ie.max=Y2e,ie.maxBy=X2e,ie.mean=$2e,ie.meanBy=Z2e,ie.min=K2e,ie.minBy=J2e,ie.stubArray=GP,ie.stubFalse=VP,ie.stubObject=H2e,ie.stubString=U2e,ie.stubTrue=B2e,ie.multiply=Q2e,ie.nth=dOe,ie.noConflict=D2e,ie.noop=kP,ie.now=H_,ie.pad=e2e,ie.padEnd=t2e,ie.padStart=r2e,ie.parseInt=i2e,ie.random=qPe,ie.reduce=g3e,ie.reduceRight=v3e,ie.repeat=n2e,ie.replace=s2e,ie.result=FPe,ie.round=eNe,ie.runInContext=Pe,ie.sample=T3e,ie.size=x3e,ie.snakeCase=a2e,ie.some=I3e,ie.sortedIndex=EOe,ie.sortedIndexBy=bOe,ie.sortedIndexOf=xOe,ie.sortedLastIndex=IOe,ie.sortedLastIndexBy=SOe,ie.sortedLastIndexOf=_Oe,ie.startCase=l2e,ie.startsWith=c2e,ie.subtract=tNe,ie.sum=rNe,ie.sumBy=iNe,ie.template=u2e,ie.times=k2e,ie.toFinite=Bh,ie.toInteger=Br,ie.toLength=p7,ie.toLower=h2e,ie.toNumber=dl,ie.toSafeInteger=hPe,ie.toString=Gi,ie.toUpper=p2e,ie.trim=d2e,ie.trimEnd=f2e,ie.trimStart=m2e,ie.truncate=g2e,ie.unescape=v2e,ie.uniqueId=V2e,ie.upperCase=y2e,ie.upperFirst=FP,ie.each=JV,ie.eachRight=QV,ie.first=XV,BP(ie,function(){var v={};return yu(ie,function(T,R){Ii.call(ie.prototype,R)||(v[R]=T)}),v}(),{chain:!1}),ie.VERSION=r,Ba(["bind","bindKey","curry","curryRight","partial","partialRight"],function(v){ie[v].placeholder=ie}),Ba(["drop","take"],function(v,T){di.prototype[v]=function(R){R=R===t?1:I(Br(R),0);var B=this.__filtered__&&!T?new di(this):this.clone();return B.__filtered__?B.__takeCount__=M(R,B.__takeCount__):B.__views__.push({size:M(R,j),type:v+(B.__dir__<0?"Right":"")}),B},di.prototype[v+"Right"]=function(R){return this.reverse()[v](R).reverse()}}),Ba(["filter","map","takeWhile"],function(v,T){var R=T+1,B=R==H||R==C;di.prototype[v]=function(Q){var fe=this.clone();return fe.__iteratees__.push({iteratee:vr(Q,3),type:R}),fe.__filtered__=fe.__filtered__||B,fe}}),Ba(["head","last"],function(v,T){var R="take"+(T?"Right":"");di.prototype[v]=function(){return this[R](1).value()[0]}}),Ba(["initial","tail"],function(v,T){var R="drop"+(T?"":"Right");di.prototype[v]=function(){return this.__filtered__?new di(this):this[R](1)}}),di.prototype.compact=function(){return this.filter(ja)},di.prototype.find=function(v){return this.filter(v).head()},di.prototype.findLast=function(v){return this.reverse().find(v)},di.prototype.invokeMap=$r(function(v,T){return typeof v=="function"?new di(this):this.map(function(R){return YE(R,v,T)})}),di.prototype.reject=function(v){return this.filter(B_(vr(v)))},di.prototype.slice=function(v,T){v=Br(v);var R=this;return R.__filtered__&&(v>0||T<0)?new di(R):(v<0?R=R.takeRight(-v):v&&(R=R.drop(v)),T!==t&&(T=Br(T),R=T<0?R.dropRight(-T):R.take(T-v)),R)},di.prototype.takeRightWhile=function(v){return this.reverse().takeWhile(v).reverse()},di.prototype.toArray=function(){return this.take(j)},yu(di.prototype,function(v,T){var R=/^(?:filter|find|map|reject)|While$/.test(T),B=/^(?:head|last)$/.test(T),Q=ie[B?"take"+(T=="last"?"Right":""):T],fe=B||/^find/.test(T);Q&&(ie.prototype[T]=function(){var Se=this.__wrapped__,Me=B?[1]:arguments,He=Se instanceof di,st=Me[0],at=He||Hr(Se),Tt=function(ii){var yi=Q.apply(ie,fu([ii],Me));return B&&Ut?yi[0]:yi};at&&R&&typeof st=="function"&&st.length!=1&&(He=at=!1);var Ut=this.__chain__,rr=!!this.__actions__.length,Er=fe&&!Ut,zr=He&&!rr;if(!fe&&at){Se=zr?Se:new di(this);var br=v.apply(Se,Me);return br.__actions__.push({func:L_,args:[Tt],thisArg:t}),new cl(br,Ut)}return Er&&zr?v.apply(this,Me):(br=this.thru(Tt),Er?B?br.value()[0]:br.value():br)})}),Ba(["pop","push","shift","sort","splice","unshift"],function(v){var T=G0[v],R=/^(?:push|sort|unshift)$/.test(v)?"tap":"thru",B=/^(?:pop|shift)$/.test(v);ie.prototype[v]=function(){var Q=arguments;if(B&&!this.__chain__){var fe=this.value();return T.apply(Hr(fe)?fe:[],Q)}return this[R](function(Se){return T.apply(Hr(Se)?Se:[],Q)})}}),yu(di.prototype,function(v,T){var R=ie[T];if(R){var B=R.name+"";Ii.call(wt,B)||(wt[B]=[]),wt[B].push({name:T,func:R})}}),wt[M_(t,m).name]=[{name:"wrapper",func:t}],di.prototype.clone=vCe,di.prototype.reverse=yCe,di.prototype.value=TCe,ie.prototype.at=XOe,ie.prototype.chain=$Oe,ie.prototype.commit=ZOe,ie.prototype.next=KOe,ie.prototype.plant=QOe,ie.prototype.reverse=e3e,ie.prototype.toJSON=ie.prototype.valueOf=ie.prototype.value=t3e,ie.prototype.first=ie.prototype.head,ua&&(ie.prototype[ua]=JOe),ie},gu=W3();typeof define=="function"&&typeof define.amd=="object"&&define.amd?(os._=gu,define(function(){return gu})):_h?((_h.exports=gu)._=gu,H0._=gu):os._=gu}).call(jT)});(function(){if(!document.getElementById("3e9889bc77866f2718605a78878686cd050621630450736d1211402bd06b6b09")){var t=document.createElement("style");t.id="3e9889bc77866f2718605a78878686cd050621630450736d1211402bd06b6b09",t.textContent=`@import"https://at.alicdn.com/t/font_2809422_tyv73h24h8.css";@import"https://at.alicdn.com/t/c/font_2802048_la37g7yevws.css";.axesRenderer{width:100px;height:100px;position:absolute;display:block;bottom:1px;left:10px;background:#ffffff00}.overview-map{width:200px;height:200px;top:10px;left:10px;position:absolute;z-index:1;border:1px #50505090 solid;background-color:#80808030}.statsOutput{position:absolute;opacity:.6;top:1px;left:1px}#navCube{position:absolute;bottom:10px;right:10px;z-index:1;pointer-events:none;cursor:pointer}#navCube:hover{opacity:1}.css3d-navcube .navcube-plane{backface-visibility:hidden;z-index:1;transition:all .2s}.css3d-navcube .navcube-plane.outer{opacity:.7;background:linear-gradient(-45deg,transparent 15px,#efefef 0) bottom right,linear-gradient(-135deg,transparent 15px,#efefef 0) top right,linear-gradient(135deg,transparent 15px,#efefef 0) top left,linear-gradient(45deg,transparent 15px,#efefef 0) bottom left;background-size:70% 70%;background-repeat:no-repeat}.css3d-navcube .navcube-plane.inner{margin:2px;font-size:30px;text-align:center;line-height:100px;background:linear-gradient(-45deg,transparent 14px,#2c7be5 0) bottom right,linear-gradient(-135deg,transparent 14px,#2c7be5 0) top right,linear-gradient(135deg,transparent 14px,#2c7be5 0) top left,linear-gradient(45deg,transparent 14px,#2c7be5 0) bottom left;background-size:70% 70%;background-repeat:no-repeat}.css3d-navcube .navcube-plane:hover{opacity:1!important}.css3d-navcube .navcube-edge{opacity:0;z-index:2;transition:all .2s}.css3d-navcube .navcube-edge:hover{opacity:1!important}.css3d-navcube .navcube-corner{opacity:.7;backface-visibility:hidden;box-sizing:content-box;transform-origin:50% 33%;top:4px;z-index:3;transition:all .2s}.css3d-navcube .navcube-corner-plane{opacity:0;backface-visibility:hidden;transform-origin:bottom;top:-6.5px;z-index:3;transition:all .2s}.css3d-navcube .highlight{opacity:1}.progress-bar{z-index:3;bottom:20%;left:25%;position:absolute;color:#ffffffa0;width:50%;user-select:none}.progress-bar.hidden{display:none}.progress-bar .progress-bar-item{width:100%;text-align:center;padding:2px}.pop-panel{z-index:99999999;top:calc(70% - 100px);left:calc(90% - 160px);position:absolute;background:#ffffff;color:#333;border-radius:4px;width:160px;box-shadow:0 12px 48px 16px #00000008,0 9px 28px #0000000d,0 6px 16px -8px #00000014}.pop-panel .pop-panel-header{font-size:16px;font-weight:bolder;padding:16px 24px 8px;color:#333;border-bottom:1px solid #EFEFEF;cursor:move;user-select:none}.pop-panel .pop-panel-body{display:flex;flex-direction:row;justify-content:space-between;align-items:center;padding:16px 24px}.pop-panel .pop-panel-body .pop-panel-item{display:inline-block;cursor:pointer;margin-right:16px;font-size:16px}.pop-panel .pop-panel-body .pop-panel-item .gemini-viewer-icon{font-size:24px}.pop-panel .pop-panel-body .pop-panel-item:last-child{margin-right:0}.pop-panel .pop-panel-body .pop-panel-item:hover,.pop-panel .pop-panel-body .pop-panel-item.active{color:#2c7be5}.pop-panel .pop-panel-body .pop-panel-item.disable{color:#999;cursor:not-allowed}.model-layout-switch-bar{position:absolute;bottom:0;width:100%;height:24px;background:#ffffff;opacity:.7;display:flex;font-size:12px;line-height:1;overflow-x:scroll;z-index:1}.model-layout-switch-bar .model-layout-switch-bar-content{white-space:nowrap}.model-layout-switch-bar .model-layout-switch-bar-content .model-layout-switch-item{position:relative;display:inline-block;padding:4px 16px 0;color:#000;height:22px;margin-left:8px;cursor:pointer;transform:translate(0)}.model-layout-switch-bar .model-layout-switch-bar-content .model-layout-switch-item:before{content:"";position:absolute;inset:0;z-index:-1;background:#fff;border:1px solid #000;border-radius:0 0 5px 5px;border-top:0px;transform:perspective(8px) rotateX(-5deg) scaleY(.8);transform-origin:bottom}.model-layout-switch-bar .model-layout-switch-bar-content .model-layout-switch-item:hover{color:#8080f0}.model-layout-switch-bar .model-layout-switch-bar-content .model-layout-switch-item:nth-child(n+2){margin-left:15px}.model-layout-switch-bar .model-layout-switch-bar-content .model-layout-switch-item.activate{color:#fff!important}.model-layout-switch-bar .model-layout-switch-bar-content .model-layout-switch-item.activate:before{background:#000!important}.model-layout-switch-bar.hidden{display:none}.follow-tooltip{z-index:99999999;position:absolute;left:-500px;padding:6px;background:rgba(25,25,25,.3);color:#fffc;font-size:12px;border-radius:2px}.context-menu{position:absolute;box-sizing:border-box;background-color:#fff;width:200px;padding:2px;border-radius:2px;box-shadow:0 4px 8px #0003,0 6px 20px #00000030;cursor:pointer;z-index:2}.context-menu ul{list-style:none;padding:0}.context-menu ul:last-child li{border-bottom:0px}.context-menu li{height:2rem;padding:.5rem;box-sizing:border-box}.context-menu li:hover{background-color:#d3d3d3}.context-menu li.disabled{color:#ccc;cursor:not-allowed}.context-menu li:last-child{border-bottom:1px solid #000}.toolbar{position:absolute;display:flex;box-sizing:border-box;height:68px;left:50%;bottom:40px;padding:8px 20px;border:rgba(153,153,153,.8) 1px solid;border-radius:4px;background:rgba(255,255,255,.8);transform:translate(-50%);align-items:center;z-index:10;user-select:none}.toolbar .toolbar-group{display:flex;padding:0 2px;box-sizing:border-box}.toolbar .toolbar-group-division{width:1px;background-color:#999c;height:60%}.toolbar .toolbar-menu{display:flex;box-sizing:border-box;flex-direction:column;width:50px;height:50px;padding:3px 0;margin:0 2px;transition:all .3s;cursor:pointer;color:#666;border-radius:4px}.toolbar .toolbar-menu.active{color:#2c7be5}.toolbar .toolbar-menu .icon{width:24px;height:24px;margin:auto;font-size:24px;line-height:normal}.toolbar .toolbar-menu span{display:block;width:100%;margin:auto;font-size:.75em;text-align:center;user-select:none}.toolbar .toolbar-menu:hover{color:#2c7be5;background-color:#fffc}.toolbar .toolbar-parent-menu{position:relative}.toolbar .toolbar-parent-menu:hover .toolbar-sub-menu{display:block}.toolbar .toolbar-parent-menu:hover .toolbar-sub-menu-list{background:rgba(255,255,255,.8)}.toolbar .toolbar-parent-menu:after{content:"";position:absolute;box-sizing:border-box;width:0;height:0;right:2px;top:2px;border-width:4px;border-style:solid;border-top-color:#666;border-right-color:#666;border-bottom-color:transparent;border-left-color:transparent;border-radius:1px}.toolbar .toolbar-sub-menu{display:none;position:absolute;width:50px;bottom:100%}.toolbar .toolbar-sub-menu .toolbar-sub-menu-list{margin-bottom:2px;border-radius:4px}.toolbar .toolbar-sub-menu .toolbar-sub-menu-list .toolbar-menu{margin:0}.bottom-bar{position:absolute;bottom:0;right:0;display:flex;color:#666;z-index:3;overflow:hidden;user-select:none}.bottom-bar i{font-size:18px;padding:3px;align-self:center;opacity:.4;cursor:pointer;line-height:1}.bottom-bar i:hover,.bottom-bar i.active{color:#2c7be5;opacity:1}.bottom-bar .fps{width:4rem}.bottom-bar span{align-self:center;padding:4px;font-size:14px}#statistics-tooltip,#tips-tooltip,#cameraInfo-tooltip{position:absolute;right:5px;bottom:30px;background:#666666;color:#fff;padding:8px 8px 5px;font-size:.8rem;border-radius:4px;z-index:3;opacity:.9;user-select:none}#statistics-tooltip p,#tips-tooltip p,#cameraInfo-tooltip p{padding-bottom:3px;margin:3px}#statistics-tooltip p span,#tips-tooltip p span,#cameraInfo-tooltip p span{float:left;margin-right:10px}.hide{display:none}.bim-viewer-spinner{position:absolute;display:flex;top:calc(50% - 20px);left:calc(50% - 20px);opacity:.8;justify-content:center;align-items:center;z-index:10}.bim-viewer-spinner>div{font-size:3rem;animation:spin 1s infinite linear;color:#2c7be5}.bim-viewer-spinner.hidden{display:none}.svg-renderer{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none}.spinner{position:absolute;display:flex;width:100%;height:100%;opacity:.8;background-color:#fff;justify-content:center;align-items:center;z-index:10}.spinner>div{font-size:3rem;animation:spin 1s infinite linear;color:#2c7be5}.spinner.hidden{display:none}.compare-markups-canvas{position:absolute;top:0;left:0;pointer-events:none;user-select:none}.anchor{position:absolute;top:0;left:0;opacity:0;width:20px;height:20px;transform:translate(-50%,-50%);pointer-events:none;user-select:none;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAADjRJREFUeF7tXQnQttUYvq4Zxr5MqBgaihRlKakUU7SYSBQljUhaxijtso2MTCrRn8YoldKIUlIIJRplSyKyqzGyJDSDLGHmMtfvvOb19n7fe7Zn+/7nnnnn+/7/O8t9zrne+5xzn3sh1hCS9GUA20UO9xqS20eWHXQxDpr7BOZHAMyfrBEA8+dllAAJX65BFB0lwCgBxjPAHAyMW8C4BQxCghczOW4B4xYwbgHjFjDqAWYxMJ4BxjNA8fY6iAbGM8B4BhjPAGvKGUDSYwA8FcAmAJ4EYOPw8/6R4upvAH4I4Efh580AbiJ5W2T9wRRbEWcASTuFBX/a1KLfq/Iq/HsKDN8NgLiych+tNzdYAEh6JoAXAdgtLHrrkwfAkuEyAJeTvL4LBkr7HBQAJK0fFtwLH/u0WzpHsfWvMRAMCJK3xlbqutwgACDplVMLf++uJ21B//+aAsL5PecVvQaApB0BHA3AP4dIVwE4maR/9pJ6CYBwij8GwOt7OWvpTJ0O4KQ+3iJ6BwBJXnQvvq9yK4l8hTQIDIbeUG8AsALEfeyi9mpb6AUAJL0bwBtjZ3CFlDuR5LFdj6VzAEi6EMCeXU9ER/1fRHKvjvpe3W1nAJC0NoDPAnhGwxNwF4DbZz6/m/q3u183fNaZ+n3yfw9smL8bALyA5B0N9zO3+U4AIMmL/gUAazU0aKtor/CH5M9K+pD0BAC7hI9Vzk3QnQB2JmkwtEqtA0DS7gAuqTxKn7C96F8EcBXJP1Zuf3Vzkh4WdBI7ADAYat9U9iD5ySZ4X6rNVgEg6TAA76s4wKsBnBa+6X6saY0k+bHJkuFQAM+r2PHhJE+t2N6yTbUGAEkHADiz0sBu8sKTPKdSe0XNSHpNAIKfoGvQgSQ/VKOhRW20AoDwcvfNRcxE/P034Rvvxf97RPnWiki6XwCBJcKjKnS8ZRsvjI0DILzg3VI4IX5gsahf1Ud16vTYghr7DQEMpQ9XGzT9stgoACQ9BMD3Cw9LlhyvI3ljIYharS5pMwAfALBlQcc+3G5K8k8FbXR3BpDkE+1LCpj3+/o+JH2XHxxJsg7ho8FwJZf/S0n65tQINSYBJH0QwEEFXJ9F0gfHwZMkH+heWzCQM0geXFB/yaqNAEDS8QDeUsDwsSRPLKjfu6qS/NbhN49cehfJt+ZWXqpedQCEV70SY8ltSX619kD70J6kbQBcV8DLTrWNS5oAgBc/y4KHZHV+Cia7saqSlNm4tZxV1dFVJzwYc7w/c3BPJPnTzLqDqiZpQwA/yWT6kJpGJdUAEO6/Ft05+vFdSX4mc0IGWU3SCwF8OoN5Xw23qaUPqQkAf/NzbPiOJPnejIkYfBVJRwA4JWMgp5M8JKPePapUAUDBwa+x602NyWmjjYLrcpUDYS0A5Bz87Ky5C8l/tDHRs31IesTUdnUbyd93xMd9g+1CalzCKgfCYgAEp42PJE6edftbtaXeDWrZ59ryJiz6owHcZ4bnuwH8CoD3WFsqfall/r4BIPXtYF+SRc4nNQBwMYA9EgFwCsmjEuskFZe0c7A1tAuZXcpyyC5edvmy7Z4tmBojSe8BcGRiB5eQfGlinf8rXgSA8NL340Tk+knX3/5GXK0l+U3ehievLpmYOXXPBXAqSdsiVKdwi7IUSHlKtiTdqOTFsBQAhwNIPcE3ouaVZN9/q0q9+H6bb4Jsg2BrneNJOoZAVcpUFx9BMtvKqhQAKVE3PFn+9mxd25hD0tMB+PHJLuNtkF3BDyb5nZqdBaOSr4dYB7FNF4W1zQZAppXP/rXNuCS9HMDHYmercrm9SX68ZpvBvOzsxDazrYdKAJD64nc1SVvTViNJbwdwXLUG8xo6juQ78qrOryXJ1s0phqbZL4UlALClj2PwxNJuJG3gUYXCKf/zVRorb+RZJC26q5AkB8Bw5JFYupnkprGFp8tlASBD8/dbAOuRrGK6XeFZNWeuFtV5HMlfLCoU8/dgcv5LAI+MKR/KZGkGcwHg+6rvrbF0Acl9YgsvVy5c8+z1k3JdqtH1ojasDfWj1j8XFYz5uySbkr0ipmwocxTJ5HeFXAD4TvyqBOaq2blL8jaya0LfbRY9geSba3SY4UdxHslk3UcuAL4NwFavsbRODefHgifUWD5Ly1lP4GtusbIoOM/aiTWWbiS5eWzhSblkAEiy6PVeF6u3vpbkc1IZm1e+59/+Ccvnktyv0ni/AuDZkW1ZK/hYkta0RlMOAGySlKIXr6L5G8C3f3rSn1/j7SBDM2gP4yR7zBwApKp/Nybp94IiknQBgL2LGmmvctZ+PMuepI1CuNpYzpPVwjkAsJbKzpAxdBfJB8UUXK6MJLfxawDFbZXyElnf9gXrRZZdtpikvwCIDVJxDsn9U/rNAYBdtWJ17j8n6QALRSRpXwDnFTXSfuUqyiFJDnDx+Ej2ryeZ5IrGEEc/sv3VxbYA8IDICteRjD3ELNlkBRezSHarFnsbSavLi0jStQC2jWzkrwC+FVl2dTEDINdGPaafi0m+LKbggi2gSR5L2VuqftEr3aRRSZ8AUGT0sdwAmwZAsfWqpAcDaMw7tqnVB3ALyVjRvZz0y7W2jhpa0wAoFoOSbL/XiPVQ1AzlF7qbpA0+i0iSjVzeWdTIMpWbBsABJM8qYV6SM378oKSNDuuuXWptLMlexY2Fi2kaAMUeP5K2BvC1DhexpOvNSy2Lm1aAjQAoWd7Fddd4AIxbQKHDydC3gPEQuFhKLFti6IfA8RpYDoBBXwNHRVA5ABpXBNm2P4X8DhCbgLGWKjjVPCplPE2VPZpkitncXD4SVcF2VklKX5fzGGRdc2yI91qPQQ4112oQ5QqoKL4BmIfEx6AbSPqtJppyAGBPYKdxi6Faz8F+DrXnrgNPDoFuJblBDUYTn4PPJ+mX02jKAYDTnJwQ3QOwYWnM/vBNSAFeAnuNFE1+l5/HRchVkBI36U0kk0LR5QAgNbbNYSRXlU5z0xqxUv5m6tcyCXPM4ZTQ8cma1xwAOAiU/eZjkzNfSdK++sW0BhqF2vYyNiycnW7WT3W7TwZAEMc2e35Kwoo+vEYWjwFIgZpm4c5O8oeEOf4eyeR8BbkASL2WVfOi7bkUqOkYkur1nOV9lQsA5/M9KQGdZ5MsCZb8v64kbQXgcwAemtB/G0V9/96+VuAISX5GTzHwPIbkyakDzQVAqm+ADTq8P9VyDrXPnKVQn2izWgEjgnOoz1kpQTeTfQI8eVkACOeArt3DHSjRWUT6QNW2uDC3/XYPD0yOASL+C701NkCE3wRSE0E1ESLGV8yuAkVUue9Pi7DBhIgJUqAvQaIch/+iFmMG2AFzz9p5DQYVJCoAINVP0NWqOIvObvwhcIStZ5uOHeAI3zZ0KXYBnzOGnKwiyf6A0/1mHwIDAByBs2+BIq2qPrABIHjhz2wqrP0gA0UGEPQ1VKyB4Ouif+Y6ldox03kMrGRpNJ/BIEPFBgD4abi3waKDZ7HtCV6ckMLuUgCfAuCUbQZBoxSCWQ8zWHQAQU64eN8gdmg7J2BwNbO7mT8T+wK7nv3ZH5L+2RqF3IKOC5jk1RuypMc+FC05nqIzwKTVjLBxk6qXk9yttdnuYUeSHA/Qip9UygoLN9tJFQAEKZBrvbpiEkSmrmBBQslia+sJrzUBYL11btKoRq6GqQvSZvmM+D8T9vqZNCpIASeNyk0bt2ITRs6575ckkOxn2rip80DOgXB19TFx5EIZVCVP0HQv1baACgfCSRMrNoFkYcJIz0+Vg1+jAAhbgS1TrdbMpWTjxtyO2qpXwZztRJK2yK5K1SXAlCS4MCRtymV4xSSULEgQOZk7J63aK3cil6vXGACCJEjxIprH5xnOAdRVbsHSCZfkEDE26z6ooK1kb5+UvpoGwNoh0uVaKUzNlPWTs0Oh31jQRutVg3rXvoGpCSGneb0TgCOt3tHUABoFQJAC9iNMil03Z7AOhGzzr1Wpdu9NTdxS7YZXPTt0HJoQUHup5rYgeUOTY2gcAAEEuwO4pMJAbIhhIJxWO/NYKW/BmMOL7k+NZBZ7kGzcIbYVAAQQOJ9fdn67mQWyMYZBcE7pwtWoH8y4vPDJjhlL9H84yRSXsOxhtAaAAIIDbFSRze09K14dJMIVtUzOY3kLptu7hG98SoavRV1Uy66yqCP/vVUABBDkGJMuGouTUvmw6Dy/lzV1aApZPPx66XzEPtylJHVaNAb/PTv/X0zj88q0DoAAApuSebFSHB9SxugAy84AbjAU5SoIMfu96M48Xhz4eolB+IFnu5IcwCmTM122EwAEENgY48MJVjq5Y7wLwO0zH+fimfyf2103fNaZ+n3yf7Gx+nP5s/XRfiQ7iYfcGQAmsyXJOX9LFCW5E9+HemeQPLhLRjoHQJAGqV5GXc5Zrb6z073WYqCTQ+BSzAezMnsd71hzgD1s6yoAJ5P0z86pFxJgehYk2ajkmAYPiF1Nug96J5E8vSsGenMLWDQBQZ1qEBgMK4G86F783uU96J0EmJEG3g6GvC30StwPRgLMMirJzie+i9t8OjZjaVeSww9Xzm9sHcT5XTER22+vJcAcIFiBNAGCtXF9Iiu2Jgvv6B6DoEEBYGZ7sErZEsGA2KSj2b7Z33QvPMmkGL0d8XuPbgcLgDlnBYet23TqU3ursGh3WJzJx2HZenGVKwHTigDAnK3C7/GWCk8OPye/xya8dAJGJ6ryN9yf1b+nZuYuWZi26q5IAMybvJAhNfbcUCXpY1uLWNLPCID5szcCoARVfaw7SoD5qzJKgFEC9PH7Wp+nUQKMEiAlpN14Bqj/Hey2xVECjBJglABzMDAeAsdDYLeiua3exy1g3ALGLWDcAlY7dMTQGnML+A8qtnUcTFYqYAAAAABJRU5ErkJggg==) no-repeat center center;background-size:100% 100%;background-blend-mode:lighten;filter:invert(61%) sepia(87%) saturate(845%) hue-rotate(120deg) brightness(94%) contrast(101%);transition:opacity .5s ease-in-out}.anchor.active{opacity:1}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(360deg)}}
|
||
`,document.head.appendChild(t)}})();var dNe=fetch;window.fetch=(...t)=>Promise.resolve(dNe(...t));var bLr=Un(X7(),1),xLr=Un(Jle(),1),ILr=Un(Qle(),1);var Pt={};z_(Pt,{ACESFilmicToneMapping:()=>Gue,AddEquation:()=>Sa,AddOperation:()=>Hue,AdditiveAnimationBlendMode:()=>_U,AdditiveBlending:()=>fp,AlphaFormat:()=>Xue,AlwaysDepth:()=>Cue,AlwaysStencilFunc:()=>ohe,AmbientLight:()=>Ol,AmbientLightProbe:()=>F4,AnimationClip:()=>so,AnimationLoader:()=>M4,AnimationMixer:()=>j4,AnimationObjectGroup:()=>V4,AnimationUtils:()=>z0t,ArcCurve:()=>Eg,ArrayCamera:()=>ID,ArrowHelper:()=>Fg,Audio:()=>zD,AudioAnalyser:()=>k4,AudioContext:()=>vx,AudioListener:()=>U4,AudioLoader:()=>N4,AxesHelper:()=>iU,BackSide:()=>Gn,BasicDepthPacking:()=>she,BasicShadowMap:()=>Uht,Bone:()=>Rl,BooleanKeyframeTrack:()=>Dp,Box2:()=>Ds,Box3:()=>Ot,Box3Helper:()=>tU,BoxBufferGeometry:()=>nU,BoxGeometry:()=>Qa,BoxHelper:()=>Lg,BufferAttribute:()=>jt,BufferGeometry:()=>it,BufferGeometryLoader:()=>VD,ByteType:()=>zue,Cache:()=>Og,Camera:()=>vg,CameraHelper:()=>bx,CanvasTexture:()=>I4,CapsuleBufferGeometry:()=>sU,CapsuleGeometry:()=>xg,CatmullRomCurve3:()=>RD,CineonToneMapping:()=>kue,CircleBufferGeometry:()=>aU,CircleGeometry:()=>Ig,ClampToEdgeWrapping:()=>mn,Clock:()=>df,Color:()=>Ve,ColorKeyframeTrack:()=>dx,ColorManagement:()=>Xs,CompressedArrayTexture:()=>x4,CompressedTexture:()=>sx,CompressedTextureLoader:()=>D4,ConeBufferGeometry:()=>oU,ConeGeometry:()=>Sg,CubeCamera:()=>bD,CubeReflectionMapping:()=>sf,CubeRefractionMapping:()=>af,CubeTexture:()=>yg,CubeTextureLoader:()=>fx,CubeUVReflectionMapping:()=>By,CubicBezierCurve:()=>ax,CubicBezierCurve3:()=>MD,CubicInterpolant:()=>FD,CullFaceBack:()=>wH,CullFaceFront:()=>bue,CullFaceFrontBack:()=>Hht,CullFaceNone:()=>Eue,Curve:()=>Ma,CurvePath:()=>CD,CustomBlending:()=>Op,CustomToneMapping:()=>Vue,CylinderBufferGeometry:()=>lU,CylinderGeometry:()=>Dl,Cylindrical:()=>$4,Data3DTexture:()=>rx,DataArrayTexture:()=>Ry,DataTexture:()=>_l,DataTextureLoader:()=>Ng,DataUtils:()=>zy,DecrementStencilOp:()=>Xht,DecrementWrapStencilOp:()=>Zht,DefaultLoadingManager:()=>oo,DepthFormat:()=>nf,DepthStencilFormat:()=>gp,DepthTexture:()=>lf,DirectionalLight:()=>$s,DirectionalLightHelper:()=>Ex,DiscreteInterpolant:()=>HD,DodecahedronBufferGeometry:()=>cU,DodecahedronGeometry:()=>_g,DoubleSide:()=>wi,DstAlphaFactor:()=>Hy,DstColorFactor:()=>Uy,DynamicCopyUsage:()=>hpt,DynamicDrawUsage:()=>spt,DynamicReadUsage:()=>lpt,EdgesGeometry:()=>Ip,EllipseCurve:()=>xp,EqualDepth:()=>Oue,EqualStencilFunc:()=>ept,EquirectangularReflectionMapping:()=>mg,EquirectangularRefractionMapping:()=>Zb,Euler:()=>Sr,EventDispatcher:()=>Ra,ExtrudeBufferGeometry:()=>uU,ExtrudeGeometry:()=>Sp,FileLoader:()=>ci,Float16BufferAttribute:()=>u4,Float32BufferAttribute:()=>ct,Float64BufferAttribute:()=>h4,FloatType:()=>_a,Fog:()=>Uu,FogExp2:()=>Cy,FramebufferTexture:()=>b4,FrontSide:()=>en,Frustum:()=>eo,GLBufferAttribute:()=>Y4,GLSL1:()=>dpt,GLSL3:()=>e4,GreaterDepth:()=>Nue,GreaterEqualDepth:()=>Pue,GreaterEqualStencilFunc:()=>npt,GreaterStencilFunc:()=>rpt,GridHelper:()=>Tx,Group:()=>hr,HalfFloatType:()=>Go,HemisphereLight:()=>pf,HemisphereLightHelper:()=>Q4,HemisphereLightProbe:()=>L4,IcosahedronBufferGeometry:()=>hU,IcosahedronGeometry:()=>Rg,ImageBitmapLoader:()=>gx,ImageLoader:()=>Pg,ImageUtils:()=>tx,IncrementStencilOp:()=>Yht,IncrementWrapStencilOp:()=>$ht,InstancedBufferAttribute:()=>bp,InstancedBufferGeometry:()=>GD,InstancedInterleavedBuffer:()=>q4,InstancedMesh:()=>tn,Int16BufferAttribute:()=>l4,Int32BufferAttribute:()=>c4,Int8BufferAttribute:()=>s4,IntType:()=>Wue,InterleavedBuffer:()=>Ep,InterleavedBufferAttribute:()=>to,Interpolant:()=>Mp,InterpolateDiscrete:()=>vp,InterpolateLinear:()=>Hu,InterpolateSmooth:()=>mD,InvertStencilOp:()=>Kht,KeepStencilOp:()=>gD,KeyframeTrack:()=>zo,LOD:()=>wD,LatheBufferGeometry:()=>pU,LatheGeometry:()=>cf,Layers:()=>My,LessDepth:()=>Aue,LessEqualDepth:()=>yD,LessEqualStencilFunc:()=>tpt,LessStencilFunc:()=>Qht,Light:()=>Al,LightProbe:()=>Py,Line:()=>_r,Line3:()=>Ca,LineBasicMaterial:()=>Tr,LineCurve:()=>Oy,LineCurve3:()=>DD,LineDashedMaterial:()=>Rp,LineLoop:()=>Ay,LineSegments:()=>oi,LinearEncoding:()=>wl,LinearFilter:()=>ai,LinearInterpolant:()=>px,LinearMipMapLinearFilter:()=>zht,LinearMipMapNearestFilter:()=>Vht,LinearMipmapLinearFilter:()=>wa,LinearMipmapNearestFilter:()=>Hg,LinearSRGBColorSpace:()=>wy,LinearToneMapping:()=>Uue,Loader:()=>li,LoaderUtils:()=>ks,LoadingManager:()=>Ap,LoopOnce:()=>rhe,LoopPingPong:()=>nhe,LoopRepeat:()=>ihe,LuminanceAlphaFormat:()=>$ue,LuminanceFormat:()=>YD,MOUSE:()=>bi,Material:()=>Gr,MaterialLoader:()=>Ny,MathUtils:()=>wr,Matrix3:()=>Qi,Matrix4:()=>Ue,MaxEquation:()=>CH,Mesh:()=>Je,MeshBasicMaterial:()=>or,MeshDepthMaterial:()=>Tp,MeshDistanceMaterial:()=>nx,MeshLambertMaterial:()=>io,MeshMatcapMaterial:()=>LD,MeshNormalMaterial:()=>hf,MeshPhongMaterial:()=>Ts,MeshPhysicalMaterial:()=>Cl,MeshStandardMaterial:()=>Gu,MeshToonMaterial:()=>ND,MinEquation:()=>DH,MirroredRepeatWrapping:()=>mp,MixOperation:()=>Fue,MultiplyBlending:()=>MH,MultiplyOperation:()=>Sx,NearestFilter:()=>Di,NearestMipMapLinearFilter:()=>Ght,NearestMipMapNearestFilter:()=>kht,NearestMipmapLinearFilter:()=>pp,NearestMipmapNearestFilter:()=>of,NeverDepth:()=>Due,NeverStencilFunc:()=>Jht,NoBlending:()=>Fi,NoColorSpace:()=>jht,NoToneMapping:()=>Lu,NormalAnimationBlendMode:()=>$D,NormalBlending:()=>pg,NotEqualDepth:()=>Lue,NotEqualStencilFunc:()=>ipt,NumberKeyframeTrack:()=>Cc,Object3D:()=>pr,ObjectLoader:()=>P4,ObjectSpaceNormalMap:()=>ahe,OctahedronBufferGeometry:()=>dU,OctahedronGeometry:()=>uf,OneFactor:()=>Fy,OneMinusDstAlphaFactor:()=>wue,OneMinusDstColorFactor:()=>Rue,OneMinusSrcAlphaFactor:()=>SU,OneMinusSrcColorFactor:()=>_ue,OrthographicCamera:()=>Zi,PCFShadowMap:()=>IU,PCFSoftShadowMap:()=>Ly,PMREMGenerator:()=>yp,Path:()=>ku,PerspectiveCamera:()=>qr,Plane:()=>Ei,PlaneBufferGeometry:()=>fU,PlaneGeometry:()=>ts,PlaneHelper:()=>rU,PointLight:()=>Ac,PointLightHelper:()=>J4,Points:()=>rn,PointsMaterial:()=>Vn,PolarGridHelper:()=>eU,PolyhedronBufferGeometry:()=>mU,PolyhedronGeometry:()=>Dc,PositionalAudio:()=>B4,PropertyBinding:()=>Cr,PropertyMixer:()=>jD,QuadraticBezierCurve:()=>ox,QuadraticBezierCurve3:()=>lx,Quaternion:()=>Or,QuaternionKeyframeTrack:()=>Da,QuaternionLinearInterpolant:()=>UD,RED_GREEN_RGTC2_Format:()=>JH,RED_RGTC1_Format:()=>the,REVISION:()=>WD,RGBADepthPacking:()=>Gy,RGBAFormat:()=>Bs,RGBAIntegerFormat:()=>Que,RGBA_ASTC_10x10_Format:()=>XH,RGBA_ASTC_10x5_Format:()=>WH,RGBA_ASTC_10x6_Format:()=>qH,RGBA_ASTC_10x8_Format:()=>YH,RGBA_ASTC_12x10_Format:()=>$H,RGBA_ASTC_12x12_Format:()=>ZH,RGBA_ASTC_4x4_Format:()=>HH,RGBA_ASTC_5x4_Format:()=>UH,RGBA_ASTC_5x5_Format:()=>BH,RGBA_ASTC_6x5_Format:()=>kH,RGBA_ASTC_6x6_Format:()=>GH,RGBA_ASTC_8x5_Format:()=>VH,RGBA_ASTC_8x6_Format:()=>zH,RGBA_ASTC_8x8_Format:()=>jH,RGBA_BPTC_Format:()=>fD,RGBA_ETC2_EAC_Format:()=>FH,RGBA_PVRTC_2BPPV1_Format:()=>NH,RGBA_PVRTC_4BPPV1_Format:()=>PH,RGBA_S3TC_DXT1_Format:()=>hD,RGBA_S3TC_DXT3_Format:()=>pD,RGBA_S3TC_DXT5_Format:()=>dD,RGB_ETC1_Format:()=>ehe,RGB_ETC2_Format:()=>LH,RGB_PVRTC_2BPPV1_Format:()=>OH,RGB_PVRTC_4BPPV1_Format:()=>AH,RGB_S3TC_DXT1_Format:()=>uD,RGFormat:()=>Kue,RGIntegerFormat:()=>Jue,RawShaderMaterial:()=>PD,Ray:()=>Vo,Raycaster:()=>Oc,RectAreaLight:()=>BD,RedFormat:()=>XD,RedIntegerFormat:()=>Zue,ReinhardToneMapping:()=>Bue,RepeatWrapping:()=>gn,ReplaceStencilOp:()=>qht,ReverseSubtractEquation:()=>Iue,RingBufferGeometry:()=>gU,RingGeometry:()=>Mg,SIGNED_RED_GREEN_RGTC2_Format:()=>QH,SIGNED_RED_RGTC1_Format:()=>KH,SRGBColorSpace:()=>wc,Scene:()=>On,ShaderChunk:()=>Wr,ShaderLib:()=>Rc,ShaderMaterial:()=>Yt,ShadowMaterial:()=>OD,Shape:()=>Ja,ShapeBufferGeometry:()=>vU,ShapeGeometry:()=>_p,ShapePath:()=>xx,ShapeUtils:()=>es,ShortType:()=>jue,Skeleton:()=>Ml,SkeletonHelper:()=>K4,SkinnedMesh:()=>Bu,Source:()=>Mc,Sphere:()=>zi,SphereBufferGeometry:()=>yU,SphereGeometry:()=>ro,Spherical:()=>Pc,SphericalHarmonics3:()=>kD,SplineCurve:()=>bg,SpotLight:()=>Vu,SpotLightHelper:()=>Z4,Sprite:()=>_D,SpriteMaterial:()=>Tg,SrcAlphaFactor:()=>Ix,SrcAlphaSaturateFactor:()=>Mue,SrcColorFactor:()=>Sue,StaticCopyUsage:()=>upt,StaticDrawUsage:()=>Jb,StaticReadUsage:()=>opt,StereoCamera:()=>H4,StreamCopyUsage:()=>ppt,StreamDrawUsage:()=>apt,StreamReadUsage:()=>cpt,StringKeyframeTrack:()=>Cp,SubtractEquation:()=>xue,SubtractiveBlending:()=>RH,TOUCH:()=>ao,TangentSpaceNormalMap:()=>mf,TetrahedronBufferGeometry:()=>TU,TetrahedronGeometry:()=>Dg,Texture:()=>Hi,TextureLoader:()=>Es,TorusBufferGeometry:()=>EU,TorusGeometry:()=>wp,TorusKnotBufferGeometry:()=>bU,TorusKnotGeometry:()=>Cg,Triangle:()=>un,TriangleFanDrawMode:()=>ky,TriangleStripDrawMode:()=>wx,TrianglesDrawMode:()=>wU,TubeBufferGeometry:()=>xU,TubeGeometry:()=>Ag,TwoPassDoubleSide:()=>Bht,UVMapping:()=>qD,Uint16BufferAttribute:()=>gg,Uint32BufferAttribute:()=>ix,Uint8BufferAttribute:()=>a4,Uint8ClampedBufferAttribute:()=>o4,Uniform:()=>yx,UniformsGroup:()=>W4,UniformsLib:()=>At,UniformsUtils:()=>hn,UnsignedByteType:()=>Fu,UnsignedInt248Type:()=>dp,UnsignedIntType:()=>rf,UnsignedShort4444Type:()=>que,UnsignedShort5551Type:()=>Yue,UnsignedShortType:()=>_x,VSMShadowMap:()=>by,Vector2:()=>le,Vector3:()=>A,Vector4:()=>Jr,VectorKeyframeTrack:()=>no,VideoTexture:()=>E4,WebGL1Renderer:()=>SD,WebGL3DRenderTarget:()=>i4,WebGLArrayRenderTarget:()=>r4,WebGLCubeRenderTarget:()=>xD,WebGLMultipleRenderTargets:()=>n4,WebGLRenderTarget:()=>kr,WebGLRenderer:()=>Pl,WebGLUtils:()=>vhe,WireframeGeometry:()=>AD,WrapAroundEnding:()=>Kb,ZeroCurvatureEnding:()=>cg,ZeroFactor:()=>ff,ZeroSlopeEnding:()=>ug,ZeroStencilOp:()=>Wht,_SRGBAFormat:()=>TD,sRGBEncoding:()=>yr});var WD="149",bi={LEFT:0,MIDDLE:1,RIGHT:2,ROTATE:0,DOLLY:1,PAN:2},ao={ROTATE:0,PAN:1,DOLLY_PAN:2,DOLLY_ROTATE:3},Eue=0,wH=1,bue=2,Hht=3,Uht=0,IU=1,Ly=2,by=3,en=0,Gn=1,wi=2,Bht=2,Fi=0,pg=1,fp=2,RH=3,MH=4,Op=5,Sa=100,xue=101,Iue=102,DH=103,CH=104,ff=200,Fy=201,Sue=202,_ue=203,Ix=204,SU=205,Hy=206,wue=207,Uy=208,Rue=209,Mue=210,Due=0,Cue=1,Aue=2,yD=3,Oue=4,Pue=5,Nue=6,Lue=7,Sx=0,Fue=1,Hue=2,Lu=0,Uue=1,Bue=2,kue=3,Gue=4,Vue=5,qD=300,sf=301,af=302,mg=303,Zb=304,By=306,gn=1e3,mn=1001,mp=1002,Di=1003,of=1004,kht=1004,pp=1005,Ght=1005,ai=1006,Hg=1007,Vht=1007,wa=1008,zht=1008,Fu=1009,zue=1010,jue=1011,_x=1012,Wue=1013,rf=1014,_a=1015,Go=1016,que=1017,Yue=1018,dp=1020,Xue=1021,Bs=1023,YD=1024,$ue=1025,nf=1026,gp=1027,XD=1028,Zue=1029,Kue=1030,Jue=1031,Que=1033,uD=33776,hD=33777,pD=33778,dD=33779,AH=35840,OH=35841,PH=35842,NH=35843,ehe=36196,LH=37492,FH=37496,HH=37808,UH=37809,BH=37810,kH=37811,GH=37812,VH=37813,zH=37814,jH=37815,WH=37816,qH=37817,YH=37818,XH=37819,$H=37820,ZH=37821,fD=36492,the=36283,KH=36284,JH=36285,QH=36286,rhe=2200,ihe=2201,nhe=2202,vp=2300,Hu=2301,mD=2302,cg=2400,ug=2401,Kb=2402,$D=2500,_U=2501,wU=0,wx=1,ky=2,wl=3e3,yr=3001,she=3200,Gy=3201,mf=0,ahe=1,jht="",wc="srgb",wy="srgb-linear",Wht=0,gD=7680,qht=7681,Yht=7682,Xht=7683,$ht=34055,Zht=34056,Kht=5386,Jht=512,Qht=513,ept=514,tpt=515,rpt=516,ipt=517,npt=518,ohe=519,Jb=35044,spt=35048,apt=35040,opt=35045,lpt=35049,cpt=35041,upt=35046,hpt=35050,ppt=35042,dpt="100",e4="300 es",TD=1035,Ra=class{addEventListener(r,e){this._listeners===void 0&&(this._listeners={});let i=this._listeners;i[r]===void 0&&(i[r]=[]),i[r].indexOf(e)===-1&&i[r].push(e)}hasEventListener(r,e){if(this._listeners===void 0)return!1;let i=this._listeners;return i[r]!==void 0&&i[r].indexOf(e)!==-1}removeEventListener(r,e){if(this._listeners===void 0)return;let n=this._listeners[r];if(n!==void 0){let s=n.indexOf(e);s!==-1&&n.splice(s,1)}}dispatchEvent(r){if(this._listeners===void 0)return;let i=this._listeners[r.type];if(i!==void 0){r.target=this;let n=i.slice(0);for(let s=0,a=n.length;s<a;s++)n[s].call(this,r);r.target=null}}},Ys=["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"],ece=1234567,dg=Math.PI/180,Qb=180/Math.PI;function ko(){let t=Math.random()*4294967295|0,r=Math.random()*4294967295|0,e=Math.random()*4294967295|0,i=Math.random()*4294967295|0;return(Ys[t&255]+Ys[t>>8&255]+Ys[t>>16&255]+Ys[t>>24&255]+"-"+Ys[r&255]+Ys[r>>8&255]+"-"+Ys[r>>16&15|64]+Ys[r>>24&255]+"-"+Ys[e&63|128]+Ys[e>>8&255]+"-"+Ys[e>>16&255]+Ys[e>>24&255]+Ys[i&255]+Ys[i>>8&255]+Ys[i>>16&255]+Ys[i>>24&255]).toLowerCase()}function Qn(t,r,e){return Math.max(r,Math.min(e,t))}function RU(t,r){return(t%r+r)%r}function fpt(t,r,e,i,n){return i+(t-r)*(n-i)/(e-r)}function mpt(t,r,e){return t!==r?(e-t)/(r-t):0}function qb(t,r,e){return(1-e)*t+e*r}function gpt(t,r,e,i){return qb(t,r,1-Math.exp(-e*i))}function vpt(t,r=1){return r-Math.abs(RU(t,r*2)-r)}function ypt(t,r,e){return t<=r?0:t>=e?1:(t=(t-r)/(e-r),t*t*(3-2*t))}function Tpt(t,r,e){return t<=r?0:t>=e?1:(t=(t-r)/(e-r),t*t*t*(t*(t*6-15)+10))}function Ept(t,r){return t+Math.floor(Math.random()*(r-t+1))}function bpt(t,r){return t+Math.random()*(r-t)}function xpt(t){return t*(.5-Math.random())}function Ipt(t){t!==void 0&&(ece=t);let r=ece+=1831565813;return r=Math.imul(r^r>>>15,r|1),r^=r+Math.imul(r^r>>>7,r|61),((r^r>>>14)>>>0)/4294967296}function Spt(t){return t*dg}function _pt(t){return t*Qb}function t4(t){return(t&t-1)===0&&t!==0}function lhe(t){return Math.pow(2,Math.ceil(Math.log(t)/Math.LN2))}function ED(t){return Math.pow(2,Math.floor(Math.log(t)/Math.LN2))}function wpt(t,r,e,i,n){let s=Math.cos,a=Math.sin,o=s(e/2),l=a(e/2),c=s((r+i)/2),u=a((r+i)/2),h=s((r-i)/2),p=a((r-i)/2),d=s((i-r)/2),f=a((i-r)/2);switch(n){case"XYX":t.set(o*u,l*h,l*p,o*c);break;case"YZY":t.set(l*p,o*u,l*h,o*c);break;case"ZXZ":t.set(l*h,l*p,o*u,o*c);break;case"XZX":t.set(o*u,l*f,l*d,o*c);break;case"YXY":t.set(l*d,o*u,l*f,o*c);break;case"ZYZ":t.set(l*f,l*d,o*u,o*c);break;default:console.warn("THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+n)}}function hp(t,r){switch(r.constructor){case Float32Array:return t;case Uint16Array:return t/65535;case Uint8Array:return t/255;case Int16Array:return Math.max(t/32767,-1);case Int8Array:return Math.max(t/127,-1);default:throw new Error("Invalid component type.")}}function cn(t,r){switch(r.constructor){case Float32Array:return t;case Uint16Array:return Math.round(t*65535);case Uint8Array:return Math.round(t*255);case Int16Array:return Math.round(t*32767);case Int8Array:return Math.round(t*127);default:throw new Error("Invalid component type.")}}var wr=Object.freeze({__proto__:null,DEG2RAD:dg,RAD2DEG:Qb,ceilPowerOfTwo:lhe,clamp:Qn,damp:gpt,degToRad:Spt,denormalize:hp,euclideanModulo:RU,floorPowerOfTwo:ED,generateUUID:ko,inverseLerp:mpt,isPowerOfTwo:t4,lerp:qb,mapLinear:fpt,normalize:cn,pingpong:vpt,radToDeg:_pt,randFloat:bpt,randFloatSpread:xpt,randInt:Ept,seededRandom:Ipt,setQuaternionFromProperEuler:wpt,smootherstep:Tpt,smoothstep:ypt}),le=class{constructor(r=0,e=0){le.prototype.isVector2=!0,this.x=r,this.y=e}get width(){return this.x}set width(r){this.x=r}get height(){return this.y}set height(r){this.y=r}set(r,e){return this.x=r,this.y=e,this}setScalar(r){return this.x=r,this.y=r,this}setX(r){return this.x=r,this}setY(r){return this.y=r,this}setComponent(r,e){switch(r){case 0:this.x=e;break;case 1:this.y=e;break;default:throw new Error("index is out of range: "+r)}return this}getComponent(r){switch(r){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+r)}}clone(){return new this.constructor(this.x,this.y)}copy(r){return this.x=r.x,this.y=r.y,this}add(r){return this.x+=r.x,this.y+=r.y,this}addScalar(r){return this.x+=r,this.y+=r,this}addVectors(r,e){return this.x=r.x+e.x,this.y=r.y+e.y,this}addScaledVector(r,e){return this.x+=r.x*e,this.y+=r.y*e,this}sub(r){return this.x-=r.x,this.y-=r.y,this}subScalar(r){return this.x-=r,this.y-=r,this}subVectors(r,e){return this.x=r.x-e.x,this.y=r.y-e.y,this}multiply(r){return this.x*=r.x,this.y*=r.y,this}multiplyScalar(r){return this.x*=r,this.y*=r,this}divide(r){return this.x/=r.x,this.y/=r.y,this}divideScalar(r){return this.multiplyScalar(1/r)}applyMatrix3(r){let e=this.x,i=this.y,n=r.elements;return this.x=n[0]*e+n[3]*i+n[6],this.y=n[1]*e+n[4]*i+n[7],this}min(r){return this.x=Math.min(this.x,r.x),this.y=Math.min(this.y,r.y),this}max(r){return this.x=Math.max(this.x,r.x),this.y=Math.max(this.y,r.y),this}clamp(r,e){return this.x=Math.max(r.x,Math.min(e.x,this.x)),this.y=Math.max(r.y,Math.min(e.y,this.y)),this}clampScalar(r,e){return this.x=Math.max(r,Math.min(e,this.x)),this.y=Math.max(r,Math.min(e,this.y)),this}clampLength(r,e){let i=this.length();return this.divideScalar(i||1).multiplyScalar(Math.max(r,Math.min(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=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(r){return this.x*r.x+this.y*r.y}cross(r){return this.x*r.y-this.y*r.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}distanceTo(r){return Math.sqrt(this.distanceToSquared(r))}distanceToSquared(r){let e=this.x-r.x,i=this.y-r.y;return e*e+i*i}manhattanDistanceTo(r){return Math.abs(this.x-r.x)+Math.abs(this.y-r.y)}setLength(r){return this.normalize().multiplyScalar(r)}lerp(r,e){return this.x+=(r.x-this.x)*e,this.y+=(r.y-this.y)*e,this}lerpVectors(r,e,i){return this.x=r.x+(e.x-r.x)*i,this.y=r.y+(e.y-r.y)*i,this}equals(r){return r.x===this.x&&r.y===this.y}fromArray(r,e=0){return this.x=r[e],this.y=r[e+1],this}toArray(r=[],e=0){return r[e]=this.x,r[e+1]=this.y,r}fromBufferAttribute(r,e){return this.x=r.getX(e),this.y=r.getY(e),this}rotateAround(r,e){let i=Math.cos(e),n=Math.sin(e),s=this.x-r.x,a=this.y-r.y;return this.x=s*i-a*n+r.x,this.y=s*n+a*i+r.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}},Qi=class{constructor(){Qi.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1]}set(r,e,i,n,s,a,o,l,c){let u=this.elements;return u[0]=r,u[1]=n,u[2]=o,u[3]=e,u[4]=s,u[5]=l,u[6]=i,u[7]=a,u[8]=c,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(r){let e=this.elements,i=r.elements;return e[0]=i[0],e[1]=i[1],e[2]=i[2],e[3]=i[3],e[4]=i[4],e[5]=i[5],e[6]=i[6],e[7]=i[7],e[8]=i[8],this}extractBasis(r,e,i){return r.setFromMatrix3Column(this,0),e.setFromMatrix3Column(this,1),i.setFromMatrix3Column(this,2),this}setFromMatrix4(r){let e=r.elements;return this.set(e[0],e[4],e[8],e[1],e[5],e[9],e[2],e[6],e[10]),this}multiply(r){return this.multiplyMatrices(this,r)}premultiply(r){return this.multiplyMatrices(r,this)}multiplyMatrices(r,e){let i=r.elements,n=e.elements,s=this.elements,a=i[0],o=i[3],l=i[6],c=i[1],u=i[4],h=i[7],p=i[2],d=i[5],f=i[8],m=n[0],g=n[3],y=n[6],E=n[1],b=n[4],x=n[7],S=n[2],D=n[5],P=n[8];return s[0]=a*m+o*E+l*S,s[3]=a*g+o*b+l*D,s[6]=a*y+o*x+l*P,s[1]=c*m+u*E+h*S,s[4]=c*g+u*b+h*D,s[7]=c*y+u*x+h*P,s[2]=p*m+d*E+f*S,s[5]=p*g+d*b+f*D,s[8]=p*y+d*x+f*P,this}multiplyScalar(r){let e=this.elements;return e[0]*=r,e[3]*=r,e[6]*=r,e[1]*=r,e[4]*=r,e[7]*=r,e[2]*=r,e[5]*=r,e[8]*=r,this}determinant(){let r=this.elements,e=r[0],i=r[1],n=r[2],s=r[3],a=r[4],o=r[5],l=r[6],c=r[7],u=r[8];return e*a*u-e*o*c-i*s*u+i*o*l+n*s*c-n*a*l}invert(){let r=this.elements,e=r[0],i=r[1],n=r[2],s=r[3],a=r[4],o=r[5],l=r[6],c=r[7],u=r[8],h=u*a-o*c,p=o*l-u*s,d=c*s-a*l,f=e*h+i*p+n*d;if(f===0)return this.set(0,0,0,0,0,0,0,0,0);let m=1/f;return r[0]=h*m,r[1]=(n*c-u*i)*m,r[2]=(o*i-n*a)*m,r[3]=p*m,r[4]=(u*e-n*l)*m,r[5]=(n*s-o*e)*m,r[6]=d*m,r[7]=(i*l-c*e)*m,r[8]=(a*e-i*s)*m,this}transpose(){let r,e=this.elements;return r=e[1],e[1]=e[3],e[3]=r,r=e[2],e[2]=e[6],e[6]=r,r=e[5],e[5]=e[7],e[7]=r,this}getNormalMatrix(r){return this.setFromMatrix4(r).invert().transpose()}transposeIntoArray(r){let e=this.elements;return r[0]=e[0],r[1]=e[3],r[2]=e[6],r[3]=e[1],r[4]=e[4],r[5]=e[7],r[6]=e[2],r[7]=e[5],r[8]=e[8],this}setUvTransform(r,e,i,n,s,a,o){let l=Math.cos(s),c=Math.sin(s);return this.set(i*l,i*c,-i*(l*a+c*o)+a+r,-n*c,n*l,-n*(-c*a+l*o)+o+e,0,0,1),this}scale(r,e){return this.premultiply(Y6.makeScale(r,e)),this}rotate(r){return this.premultiply(Y6.makeRotation(-r)),this}translate(r,e){return this.premultiply(Y6.makeTranslation(r,e)),this}makeTranslation(r,e){return this.set(1,0,r,0,1,e,0,0,1),this}makeRotation(r){let e=Math.cos(r),i=Math.sin(r);return this.set(e,-i,0,i,e,0,0,0,1),this}makeScale(r,e){return this.set(r,0,0,0,e,0,0,0,1),this}equals(r){let e=this.elements,i=r.elements;for(let n=0;n<9;n++)if(e[n]!==i[n])return!1;return!0}fromArray(r,e=0){for(let i=0;i<9;i++)this.elements[i]=r[i+e];return this}toArray(r=[],e=0){let i=this.elements;return r[e]=i[0],r[e+1]=i[1],r[e+2]=i[2],r[e+3]=i[3],r[e+4]=i[4],r[e+5]=i[5],r[e+6]=i[6],r[e+7]=i[7],r[e+8]=i[8],r}clone(){return new this.constructor().fromArray(this.elements)}},Y6=new Qi;function che(t){for(let r=t.length-1;r>=0;--r)if(t[r]>=65535)return!0;return!1}var Rpt={Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array};function xy(t,r){return new Rpt[t](r)}function ex(t){return document.createElementNS("http://www.w3.org/1999/xhtml",t)}function fg(t){return t<.04045?t*.0773993808:Math.pow(t*.9478672986+.0521327014,2.4)}function vD(t){return t<.0031308?t*12.92:1.055*Math.pow(t,.41666)-.055}var X6={[wc]:{[wy]:fg},[wy]:{[wc]:vD}},Xs={legacyMode:!0,get workingColorSpace(){return wy},set workingColorSpace(t){console.warn("THREE.ColorManagement: .workingColorSpace is readonly.")},convert:function(t,r,e){if(this.legacyMode||r===e||!r||!e)return t;if(X6[r]&&X6[r][e]!==void 0){let i=X6[r][e];return t.r=i(t.r),t.g=i(t.g),t.b=i(t.b),t}throw new Error("Unsupported color space conversion.")},fromWorkingColorSpace:function(t,r){return this.convert(t,this.workingColorSpace,r)},toWorkingColorSpace:function(t,r){return this.convert(t,r,this.workingColorSpace)}},uhe={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},gs={r:0,g:0,b:0},Ic={h:0,s:0,l:0},_M={h:0,s:0,l:0};function $6(t,r,e){return e<0&&(e+=1),e>1&&(e-=1),e<1/6?t+(r-t)*6*e:e<1/2?r:e<2/3?t+(r-t)*6*(2/3-e):t}function wM(t,r){return r.r=t.r,r.g=t.g,r.b=t.b,r}var Ve=class{constructor(r,e,i){return this.isColor=!0,this.r=1,this.g=1,this.b=1,e===void 0&&i===void 0?this.set(r):this.setRGB(r,e,i)}set(r){return r&&r.isColor?this.copy(r):typeof r=="number"?this.setHex(r):typeof r=="string"&&this.setStyle(r),this}setScalar(r){return this.r=r,this.g=r,this.b=r,this}setHex(r,e=wc){return r=Math.floor(r),this.r=(r>>16&255)/255,this.g=(r>>8&255)/255,this.b=(r&255)/255,Xs.toWorkingColorSpace(this,e),this}setRGB(r,e,i,n=Xs.workingColorSpace){return this.r=r,this.g=e,this.b=i,Xs.toWorkingColorSpace(this,n),this}setHSL(r,e,i,n=Xs.workingColorSpace){if(r=RU(r,1),e=Qn(e,0,1),i=Qn(i,0,1),e===0)this.r=this.g=this.b=i;else{let s=i<=.5?i*(1+e):i+e-i*e,a=2*i-s;this.r=$6(a,s,r+1/3),this.g=$6(a,s,r),this.b=$6(a,s,r-1/3)}return Xs.toWorkingColorSpace(this,n),this}setStyle(r,e=wc){function i(s){s!==void 0&&parseFloat(s)<1&&console.warn("THREE.Color: Alpha component of "+r+" will be ignored.")}let n;if(n=/^((?:rgb|hsl)a?)\(([^\)]*)\)/.exec(r)){let s,a=n[1],o=n[2];switch(a){case"rgb":case"rgba":if(s=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return this.r=Math.min(255,parseInt(s[1],10))/255,this.g=Math.min(255,parseInt(s[2],10))/255,this.b=Math.min(255,parseInt(s[3],10))/255,Xs.toWorkingColorSpace(this,e),i(s[4]),this;if(s=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return this.r=Math.min(100,parseInt(s[1],10))/100,this.g=Math.min(100,parseInt(s[2],10))/100,this.b=Math.min(100,parseInt(s[3],10))/100,Xs.toWorkingColorSpace(this,e),i(s[4]),this;break;case"hsl":case"hsla":if(s=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o)){let l=parseFloat(s[1])/360,c=parseFloat(s[2])/100,u=parseFloat(s[3])/100;return i(s[4]),this.setHSL(l,c,u,e)}break}}else if(n=/^\#([A-Fa-f\d]+)$/.exec(r)){let s=n[1],a=s.length;if(a===3)return this.r=parseInt(s.charAt(0)+s.charAt(0),16)/255,this.g=parseInt(s.charAt(1)+s.charAt(1),16)/255,this.b=parseInt(s.charAt(2)+s.charAt(2),16)/255,Xs.toWorkingColorSpace(this,e),this;if(a===6)return this.r=parseInt(s.charAt(0)+s.charAt(1),16)/255,this.g=parseInt(s.charAt(2)+s.charAt(3),16)/255,this.b=parseInt(s.charAt(4)+s.charAt(5),16)/255,Xs.toWorkingColorSpace(this,e),this}return r&&r.length>0?this.setColorName(r,e):this}setColorName(r,e=wc){let i=uhe[r.toLowerCase()];return i!==void 0?this.setHex(i,e):console.warn("THREE.Color: Unknown color "+r),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(r){return this.r=r.r,this.g=r.g,this.b=r.b,this}copySRGBToLinear(r){return this.r=fg(r.r),this.g=fg(r.g),this.b=fg(r.b),this}copyLinearToSRGB(r){return this.r=vD(r.r),this.g=vD(r.g),this.b=vD(r.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(r=wc){return Xs.fromWorkingColorSpace(wM(this,gs),r),Qn(gs.r*255,0,255)<<16^Qn(gs.g*255,0,255)<<8^Qn(gs.b*255,0,255)<<0}getHexString(r=wc){return("000000"+this.getHex(r).toString(16)).slice(-6)}getHSL(r,e=Xs.workingColorSpace){Xs.fromWorkingColorSpace(wM(this,gs),e);let i=gs.r,n=gs.g,s=gs.b,a=Math.max(i,n,s),o=Math.min(i,n,s),l,c,u=(o+a)/2;if(o===a)l=0,c=0;else{let h=a-o;switch(c=u<=.5?h/(a+o):h/(2-a-o),a){case i:l=(n-s)/h+(n<s?6:0);break;case n:l=(s-i)/h+2;break;case s:l=(i-n)/h+4;break}l/=6}return r.h=l,r.s=c,r.l=u,r}getRGB(r,e=Xs.workingColorSpace){return Xs.fromWorkingColorSpace(wM(this,gs),e),r.r=gs.r,r.g=gs.g,r.b=gs.b,r}getStyle(r=wc){return Xs.fromWorkingColorSpace(wM(this,gs),r),r!==wc?`color(${r} ${gs.r} ${gs.g} ${gs.b})`:`rgb(${gs.r*255|0},${gs.g*255|0},${gs.b*255|0})`}offsetHSL(r,e,i){return this.getHSL(Ic),Ic.h+=r,Ic.s+=e,Ic.l+=i,this.setHSL(Ic.h,Ic.s,Ic.l),this}add(r){return this.r+=r.r,this.g+=r.g,this.b+=r.b,this}addColors(r,e){return this.r=r.r+e.r,this.g=r.g+e.g,this.b=r.b+e.b,this}addScalar(r){return this.r+=r,this.g+=r,this.b+=r,this}sub(r){return this.r=Math.max(0,this.r-r.r),this.g=Math.max(0,this.g-r.g),this.b=Math.max(0,this.b-r.b),this}multiply(r){return this.r*=r.r,this.g*=r.g,this.b*=r.b,this}multiplyScalar(r){return this.r*=r,this.g*=r,this.b*=r,this}lerp(r,e){return this.r+=(r.r-this.r)*e,this.g+=(r.g-this.g)*e,this.b+=(r.b-this.b)*e,this}lerpColors(r,e,i){return this.r=r.r+(e.r-r.r)*i,this.g=r.g+(e.g-r.g)*i,this.b=r.b+(e.b-r.b)*i,this}lerpHSL(r,e){this.getHSL(Ic),r.getHSL(_M);let i=qb(Ic.h,_M.h,e),n=qb(Ic.s,_M.s,e),s=qb(Ic.l,_M.l,e);return this.setHSL(i,n,s),this}equals(r){return r.r===this.r&&r.g===this.g&&r.b===this.b}fromArray(r,e=0){return this.r=r[e],this.g=r[e+1],this.b=r[e+2],this}toArray(r=[],e=0){return r[e]=this.r,r[e+1]=this.g,r[e+2]=this.b,r}fromBufferAttribute(r,e){return this.r=r.getX(e),this.g=r.getY(e),this.b=r.getZ(e),this}toJSON(){return this.getHex()}*[Symbol.iterator](){yield this.r,yield this.g,yield this.b}};Ve.NAMES=uhe;var iy,tx=class{static getDataURL(r){if(/^data:/i.test(r.src)||typeof HTMLCanvasElement=="undefined")return r.src;let e;if(r instanceof HTMLCanvasElement)e=r;else{iy===void 0&&(iy=ex("canvas")),iy.width=r.width,iy.height=r.height;let i=iy.getContext("2d");r instanceof ImageData?i.putImageData(r,0,0):i.drawImage(r,0,0,r.width,r.height),e=iy}return e.width>2048||e.height>2048?(console.warn("THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons",r),e.toDataURL("image/jpeg",.6)):e.toDataURL("image/png")}static sRGBToLinear(r){if(typeof HTMLImageElement!="undefined"&&r instanceof HTMLImageElement||typeof HTMLCanvasElement!="undefined"&&r instanceof HTMLCanvasElement||typeof ImageBitmap!="undefined"&&r instanceof ImageBitmap){let e=ex("canvas");e.width=r.width,e.height=r.height;let i=e.getContext("2d");i.drawImage(r,0,0,r.width,r.height);let n=i.getImageData(0,0,r.width,r.height),s=n.data;for(let a=0;a<s.length;a++)s[a]=fg(s[a]/255)*255;return i.putImageData(n,0,0),e}else if(r.data){let e=r.data.slice(0);for(let i=0;i<e.length;i++)e instanceof Uint8Array||e instanceof Uint8ClampedArray?e[i]=Math.floor(fg(e[i]/255)*255):e[i]=fg(e[i]);return{data:e,width:r.width,height:r.height}}else return console.warn("THREE.ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied."),r}},Mc=class{constructor(r=null){this.isSource=!0,this.uuid=ko(),this.data=r,this.version=0}set needsUpdate(r){r===!0&&this.version++}toJSON(r){let e=r===void 0||typeof r=="string";if(!e&&r.images[this.uuid]!==void 0)return r.images[this.uuid];let i={uuid:this.uuid,url:""},n=this.data;if(n!==null){let s;if(Array.isArray(n)){s=[];for(let a=0,o=n.length;a<o;a++)n[a].isDataTexture?s.push(Z6(n[a].image)):s.push(Z6(n[a]))}else s=Z6(n);i.url=s}return e||(r.images[this.uuid]=i),i}};function Z6(t){return typeof HTMLImageElement!="undefined"&&t instanceof HTMLImageElement||typeof HTMLCanvasElement!="undefined"&&t instanceof HTMLCanvasElement||typeof ImageBitmap!="undefined"&&t instanceof ImageBitmap?tx.getDataURL(t):t.data?{data:Array.from(t.data),width:t.width,height:t.height,type:t.data.constructor.name}:(console.warn("THREE.Texture: Unable to serialize Texture."),{})}var Mpt=0,Hi=class extends Ra{constructor(r=Hi.DEFAULT_IMAGE,e=Hi.DEFAULT_MAPPING,i=mn,n=mn,s=ai,a=wa,o=Bs,l=Fu,c=Hi.DEFAULT_ANISOTROPY,u=wl){super(),this.isTexture=!0,Object.defineProperty(this,"id",{value:Mpt++}),this.uuid=ko(),this.name="",this.source=new Mc(r),this.mipmaps=[],this.mapping=e,this.wrapS=i,this.wrapT=n,this.magFilter=s,this.minFilter=a,this.anisotropy=c,this.format=o,this.internalFormat=null,this.type=l,this.offset=new le(0,0),this.repeat=new le(1,1),this.center=new le(0,0),this.rotation=0,this.matrixAutoUpdate=!0,this.matrix=new Qi,this.generateMipmaps=!0,this.premultiplyAlpha=!1,this.flipY=!0,this.unpackAlignment=4,this.encoding=u,this.userData={},this.version=0,this.onUpdate=null,this.isRenderTargetTexture=!1,this.needsPMREMUpdate=!1}get image(){return this.source.data}set image(r){this.source.data=r}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(r){return this.name=r.name,this.source=r.source,this.mipmaps=r.mipmaps.slice(0),this.mapping=r.mapping,this.wrapS=r.wrapS,this.wrapT=r.wrapT,this.magFilter=r.magFilter,this.minFilter=r.minFilter,this.anisotropy=r.anisotropy,this.format=r.format,this.internalFormat=r.internalFormat,this.type=r.type,this.offset.copy(r.offset),this.repeat.copy(r.repeat),this.center.copy(r.center),this.rotation=r.rotation,this.matrixAutoUpdate=r.matrixAutoUpdate,this.matrix.copy(r.matrix),this.generateMipmaps=r.generateMipmaps,this.premultiplyAlpha=r.premultiplyAlpha,this.flipY=r.flipY,this.unpackAlignment=r.unpackAlignment,this.encoding=r.encoding,this.userData=JSON.parse(JSON.stringify(r.userData)),this.needsUpdate=!0,this}toJSON(r){let e=r===void 0||typeof r=="string";if(!e&&r.textures[this.uuid]!==void 0)return r.textures[this.uuid];let i={metadata:{version:4.5,type:"Texture",generator:"Texture.toJSON"},uuid:this.uuid,name:this.name,image:this.source.toJSON(r).uuid,mapping:this.mapping,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,type:this.type,encoding:this.encoding,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&&(i.userData=this.userData),e||(r.textures[this.uuid]=i),i}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(r){if(this.mapping!==qD)return r;if(r.applyMatrix3(this.matrix),r.x<0||r.x>1)switch(this.wrapS){case gn:r.x=r.x-Math.floor(r.x);break;case mn:r.x=r.x<0?0:1;break;case mp:Math.abs(Math.floor(r.x)%2)===1?r.x=Math.ceil(r.x)-r.x:r.x=r.x-Math.floor(r.x);break}if(r.y<0||r.y>1)switch(this.wrapT){case gn:r.y=r.y-Math.floor(r.y);break;case mn:r.y=r.y<0?0:1;break;case mp:Math.abs(Math.floor(r.y)%2)===1?r.y=Math.ceil(r.y)-r.y:r.y=r.y-Math.floor(r.y);break}return this.flipY&&(r.y=1-r.y),r}set needsUpdate(r){r===!0&&(this.version++,this.source.needsUpdate=!0)}};Hi.DEFAULT_IMAGE=null;Hi.DEFAULT_MAPPING=qD;Hi.DEFAULT_ANISOTROPY=1;var Jr=class{constructor(r=0,e=0,i=0,n=1){Jr.prototype.isVector4=!0,this.x=r,this.y=e,this.z=i,this.w=n}get width(){return this.z}set width(r){this.z=r}get height(){return this.w}set height(r){this.w=r}set(r,e,i,n){return this.x=r,this.y=e,this.z=i,this.w=n,this}setScalar(r){return this.x=r,this.y=r,this.z=r,this.w=r,this}setX(r){return this.x=r,this}setY(r){return this.y=r,this}setZ(r){return this.z=r,this}setW(r){return this.w=r,this}setComponent(r,e){switch(r){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;case 3:this.w=e;break;default:throw new Error("index is out of range: "+r)}return this}getComponent(r){switch(r){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: "+r)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(r){return this.x=r.x,this.y=r.y,this.z=r.z,this.w=r.w!==void 0?r.w:1,this}add(r){return this.x+=r.x,this.y+=r.y,this.z+=r.z,this.w+=r.w,this}addScalar(r){return this.x+=r,this.y+=r,this.z+=r,this.w+=r,this}addVectors(r,e){return this.x=r.x+e.x,this.y=r.y+e.y,this.z=r.z+e.z,this.w=r.w+e.w,this}addScaledVector(r,e){return this.x+=r.x*e,this.y+=r.y*e,this.z+=r.z*e,this.w+=r.w*e,this}sub(r){return this.x-=r.x,this.y-=r.y,this.z-=r.z,this.w-=r.w,this}subScalar(r){return this.x-=r,this.y-=r,this.z-=r,this.w-=r,this}subVectors(r,e){return this.x=r.x-e.x,this.y=r.y-e.y,this.z=r.z-e.z,this.w=r.w-e.w,this}multiply(r){return this.x*=r.x,this.y*=r.y,this.z*=r.z,this.w*=r.w,this}multiplyScalar(r){return this.x*=r,this.y*=r,this.z*=r,this.w*=r,this}applyMatrix4(r){let e=this.x,i=this.y,n=this.z,s=this.w,a=r.elements;return this.x=a[0]*e+a[4]*i+a[8]*n+a[12]*s,this.y=a[1]*e+a[5]*i+a[9]*n+a[13]*s,this.z=a[2]*e+a[6]*i+a[10]*n+a[14]*s,this.w=a[3]*e+a[7]*i+a[11]*n+a[15]*s,this}divideScalar(r){return this.multiplyScalar(1/r)}setAxisAngleFromQuaternion(r){this.w=2*Math.acos(r.w);let e=Math.sqrt(1-r.w*r.w);return e<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=r.x/e,this.y=r.y/e,this.z=r.z/e),this}setAxisAngleFromRotationMatrix(r){let e,i,n,s,l=r.elements,c=l[0],u=l[4],h=l[8],p=l[1],d=l[5],f=l[9],m=l[2],g=l[6],y=l[10];if(Math.abs(u-p)<.01&&Math.abs(h-m)<.01&&Math.abs(f-g)<.01){if(Math.abs(u+p)<.1&&Math.abs(h+m)<.1&&Math.abs(f+g)<.1&&Math.abs(c+d+y-3)<.1)return this.set(1,0,0,0),this;e=Math.PI;let b=(c+1)/2,x=(d+1)/2,S=(y+1)/2,D=(u+p)/4,P=(h+m)/4,_=(f+g)/4;return b>x&&b>S?b<.01?(i=0,n=.707106781,s=.707106781):(i=Math.sqrt(b),n=D/i,s=P/i):x>S?x<.01?(i=.707106781,n=0,s=.707106781):(n=Math.sqrt(x),i=D/n,s=_/n):S<.01?(i=.707106781,n=.707106781,s=0):(s=Math.sqrt(S),i=P/s,n=_/s),this.set(i,n,s,e),this}let E=Math.sqrt((g-f)*(g-f)+(h-m)*(h-m)+(p-u)*(p-u));return Math.abs(E)<.001&&(E=1),this.x=(g-f)/E,this.y=(h-m)/E,this.z=(p-u)/E,this.w=Math.acos((c+d+y-1)/2),this}min(r){return this.x=Math.min(this.x,r.x),this.y=Math.min(this.y,r.y),this.z=Math.min(this.z,r.z),this.w=Math.min(this.w,r.w),this}max(r){return this.x=Math.max(this.x,r.x),this.y=Math.max(this.y,r.y),this.z=Math.max(this.z,r.z),this.w=Math.max(this.w,r.w),this}clamp(r,e){return this.x=Math.max(r.x,Math.min(e.x,this.x)),this.y=Math.max(r.y,Math.min(e.y,this.y)),this.z=Math.max(r.z,Math.min(e.z,this.z)),this.w=Math.max(r.w,Math.min(e.w,this.w)),this}clampScalar(r,e){return this.x=Math.max(r,Math.min(e,this.x)),this.y=Math.max(r,Math.min(e,this.y)),this.z=Math.max(r,Math.min(e,this.z)),this.w=Math.max(r,Math.min(e,this.w)),this}clampLength(r,e){let i=this.length();return this.divideScalar(i||1).multiplyScalar(Math.max(r,Math.min(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=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this.w=this.w<0?Math.ceil(this.w):Math.floor(this.w),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(r){return this.x*r.x+this.y*r.y+this.z*r.z+this.w*r.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(r){return this.normalize().multiplyScalar(r)}lerp(r,e){return this.x+=(r.x-this.x)*e,this.y+=(r.y-this.y)*e,this.z+=(r.z-this.z)*e,this.w+=(r.w-this.w)*e,this}lerpVectors(r,e,i){return this.x=r.x+(e.x-r.x)*i,this.y=r.y+(e.y-r.y)*i,this.z=r.z+(e.z-r.z)*i,this.w=r.w+(e.w-r.w)*i,this}equals(r){return r.x===this.x&&r.y===this.y&&r.z===this.z&&r.w===this.w}fromArray(r,e=0){return this.x=r[e],this.y=r[e+1],this.z=r[e+2],this.w=r[e+3],this}toArray(r=[],e=0){return r[e]=this.x,r[e+1]=this.y,r[e+2]=this.z,r[e+3]=this.w,r}fromBufferAttribute(r,e){return this.x=r.getX(e),this.y=r.getY(e),this.z=r.getZ(e),this.w=r.getW(e),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}},kr=class extends Ra{constructor(r=1,e=1,i={}){super(),this.isWebGLRenderTarget=!0,this.width=r,this.height=e,this.depth=1,this.scissor=new Jr(0,0,r,e),this.scissorTest=!1,this.viewport=new Jr(0,0,r,e);let n={width:r,height:e,depth:1};this.texture=new Hi(n,i.mapping,i.wrapS,i.wrapT,i.magFilter,i.minFilter,i.format,i.type,i.anisotropy,i.encoding),this.texture.isRenderTargetTexture=!0,this.texture.flipY=!1,this.texture.generateMipmaps=i.generateMipmaps!==void 0?i.generateMipmaps:!1,this.texture.internalFormat=i.internalFormat!==void 0?i.internalFormat:null,this.texture.minFilter=i.minFilter!==void 0?i.minFilter:ai,this.depthBuffer=i.depthBuffer!==void 0?i.depthBuffer:!0,this.stencilBuffer=i.stencilBuffer!==void 0?i.stencilBuffer:!1,this.depthTexture=i.depthTexture!==void 0?i.depthTexture:null,this.samples=i.samples!==void 0?i.samples:0}setSize(r,e,i=1){(this.width!==r||this.height!==e||this.depth!==i)&&(this.width=r,this.height=e,this.depth=i,this.texture.image.width=r,this.texture.image.height=e,this.texture.image.depth=i,this.dispose()),this.viewport.set(0,0,r,e),this.scissor.set(0,0,r,e)}clone(){return new this.constructor().copy(this)}copy(r){this.width=r.width,this.height=r.height,this.depth=r.depth,this.viewport.copy(r.viewport),this.texture=r.texture.clone(),this.texture.isRenderTargetTexture=!0;let e=Object.assign({},r.texture.image);return this.texture.source=new Mc(e),this.depthBuffer=r.depthBuffer,this.stencilBuffer=r.stencilBuffer,r.depthTexture!==null&&(this.depthTexture=r.depthTexture.clone()),this.samples=r.samples,this}dispose(){this.dispatchEvent({type:"dispose"})}},Ry=class extends Hi{constructor(r=null,e=1,i=1,n=1){super(null),this.isDataArrayTexture=!0,this.image={data:r,width:e,height:i,depth:n},this.magFilter=Di,this.minFilter=Di,this.wrapR=mn,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}},r4=class extends kr{constructor(r=1,e=1,i=1){super(r,e),this.isWebGLArrayRenderTarget=!0,this.depth=i,this.texture=new Ry(null,r,e,i),this.texture.isRenderTargetTexture=!0}},rx=class extends Hi{constructor(r=null,e=1,i=1,n=1){super(null),this.isData3DTexture=!0,this.image={data:r,width:e,height:i,depth:n},this.magFilter=Di,this.minFilter=Di,this.wrapR=mn,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}},i4=class extends kr{constructor(r=1,e=1,i=1){super(r,e),this.isWebGL3DRenderTarget=!0,this.depth=i,this.texture=new rx(null,r,e,i),this.texture.isRenderTargetTexture=!0}},n4=class extends kr{constructor(r=1,e=1,i=1,n={}){super(r,e,n),this.isWebGLMultipleRenderTargets=!0;let s=this.texture;this.texture=[];for(let a=0;a<i;a++)this.texture[a]=s.clone(),this.texture[a].isRenderTargetTexture=!0}setSize(r,e,i=1){if(this.width!==r||this.height!==e||this.depth!==i){this.width=r,this.height=e,this.depth=i;for(let n=0,s=this.texture.length;n<s;n++)this.texture[n].image.width=r,this.texture[n].image.height=e,this.texture[n].image.depth=i;this.dispose()}return this.viewport.set(0,0,r,e),this.scissor.set(0,0,r,e),this}copy(r){this.dispose(),this.width=r.width,this.height=r.height,this.depth=r.depth,this.viewport.set(0,0,this.width,this.height),this.scissor.set(0,0,this.width,this.height),this.depthBuffer=r.depthBuffer,this.stencilBuffer=r.stencilBuffer,r.depthTexture!==null&&(this.depthTexture=r.depthTexture.clone()),this.texture.length=0;for(let e=0,i=r.texture.length;e<i;e++)this.texture[e]=r.texture[e].clone(),this.texture[e].isRenderTargetTexture=!0;return this}},Or=class{constructor(r=0,e=0,i=0,n=1){this.isQuaternion=!0,this._x=r,this._y=e,this._z=i,this._w=n}static slerpFlat(r,e,i,n,s,a,o){let l=i[n+0],c=i[n+1],u=i[n+2],h=i[n+3],p=s[a+0],d=s[a+1],f=s[a+2],m=s[a+3];if(o===0){r[e+0]=l,r[e+1]=c,r[e+2]=u,r[e+3]=h;return}if(o===1){r[e+0]=p,r[e+1]=d,r[e+2]=f,r[e+3]=m;return}if(h!==m||l!==p||c!==d||u!==f){let g=1-o,y=l*p+c*d+u*f+h*m,E=y>=0?1:-1,b=1-y*y;if(b>Number.EPSILON){let S=Math.sqrt(b),D=Math.atan2(S,y*E);g=Math.sin(g*D)/S,o=Math.sin(o*D)/S}let x=o*E;if(l=l*g+p*x,c=c*g+d*x,u=u*g+f*x,h=h*g+m*x,g===1-o){let S=1/Math.sqrt(l*l+c*c+u*u+h*h);l*=S,c*=S,u*=S,h*=S}}r[e]=l,r[e+1]=c,r[e+2]=u,r[e+3]=h}static multiplyQuaternionsFlat(r,e,i,n,s,a){let o=i[n],l=i[n+1],c=i[n+2],u=i[n+3],h=s[a],p=s[a+1],d=s[a+2],f=s[a+3];return r[e]=o*f+u*h+l*d-c*p,r[e+1]=l*f+u*p+c*h-o*d,r[e+2]=c*f+u*d+o*p-l*h,r[e+3]=u*f-o*h-l*p-c*d,r}get x(){return this._x}set x(r){this._x=r,this._onChangeCallback()}get y(){return this._y}set y(r){this._y=r,this._onChangeCallback()}get z(){return this._z}set z(r){this._z=r,this._onChangeCallback()}get w(){return this._w}set w(r){this._w=r,this._onChangeCallback()}set(r,e,i,n){return this._x=r,this._y=e,this._z=i,this._w=n,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(r){return this._x=r.x,this._y=r.y,this._z=r.z,this._w=r.w,this._onChangeCallback(),this}setFromEuler(r,e){let i=r._x,n=r._y,s=r._z,a=r._order,o=Math.cos,l=Math.sin,c=o(i/2),u=o(n/2),h=o(s/2),p=l(i/2),d=l(n/2),f=l(s/2);switch(a){case"XYZ":this._x=p*u*h+c*d*f,this._y=c*d*h-p*u*f,this._z=c*u*f+p*d*h,this._w=c*u*h-p*d*f;break;case"YXZ":this._x=p*u*h+c*d*f,this._y=c*d*h-p*u*f,this._z=c*u*f-p*d*h,this._w=c*u*h+p*d*f;break;case"ZXY":this._x=p*u*h-c*d*f,this._y=c*d*h+p*u*f,this._z=c*u*f+p*d*h,this._w=c*u*h-p*d*f;break;case"ZYX":this._x=p*u*h-c*d*f,this._y=c*d*h+p*u*f,this._z=c*u*f-p*d*h,this._w=c*u*h+p*d*f;break;case"YZX":this._x=p*u*h+c*d*f,this._y=c*d*h+p*u*f,this._z=c*u*f-p*d*h,this._w=c*u*h-p*d*f;break;case"XZY":this._x=p*u*h-c*d*f,this._y=c*d*h-p*u*f,this._z=c*u*f+p*d*h,this._w=c*u*h+p*d*f;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+a)}return e!==!1&&this._onChangeCallback(),this}setFromAxisAngle(r,e){let i=e/2,n=Math.sin(i);return this._x=r.x*n,this._y=r.y*n,this._z=r.z*n,this._w=Math.cos(i),this._onChangeCallback(),this}setFromRotationMatrix(r){let e=r.elements,i=e[0],n=e[4],s=e[8],a=e[1],o=e[5],l=e[9],c=e[2],u=e[6],h=e[10],p=i+o+h;if(p>0){let d=.5/Math.sqrt(p+1);this._w=.25/d,this._x=(u-l)*d,this._y=(s-c)*d,this._z=(a-n)*d}else if(i>o&&i>h){let d=2*Math.sqrt(1+i-o-h);this._w=(u-l)/d,this._x=.25*d,this._y=(n+a)/d,this._z=(s+c)/d}else if(o>h){let d=2*Math.sqrt(1+o-i-h);this._w=(s-c)/d,this._x=(n+a)/d,this._y=.25*d,this._z=(l+u)/d}else{let d=2*Math.sqrt(1+h-i-o);this._w=(a-n)/d,this._x=(s+c)/d,this._y=(l+u)/d,this._z=.25*d}return this._onChangeCallback(),this}setFromUnitVectors(r,e){let i=r.dot(e)+1;return i<Number.EPSILON?(i=0,Math.abs(r.x)>Math.abs(r.z)?(this._x=-r.y,this._y=r.x,this._z=0,this._w=i):(this._x=0,this._y=-r.z,this._z=r.y,this._w=i)):(this._x=r.y*e.z-r.z*e.y,this._y=r.z*e.x-r.x*e.z,this._z=r.x*e.y-r.y*e.x,this._w=i),this.normalize()}angleTo(r){return 2*Math.acos(Math.abs(Qn(this.dot(r),-1,1)))}rotateTowards(r,e){let i=this.angleTo(r);if(i===0)return this;let n=Math.min(1,e/i);return this.slerp(r,n),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(r){return this._x*r._x+this._y*r._y+this._z*r._z+this._w*r._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 r=this.length();return r===0?(this._x=0,this._y=0,this._z=0,this._w=1):(r=1/r,this._x=this._x*r,this._y=this._y*r,this._z=this._z*r,this._w=this._w*r),this._onChangeCallback(),this}multiply(r){return this.multiplyQuaternions(this,r)}premultiply(r){return this.multiplyQuaternions(r,this)}multiplyQuaternions(r,e){let i=r._x,n=r._y,s=r._z,a=r._w,o=e._x,l=e._y,c=e._z,u=e._w;return this._x=i*u+a*o+n*c-s*l,this._y=n*u+a*l+s*o-i*c,this._z=s*u+a*c+i*l-n*o,this._w=a*u-i*o-n*l-s*c,this._onChangeCallback(),this}slerp(r,e){if(e===0)return this;if(e===1)return this.copy(r);let i=this._x,n=this._y,s=this._z,a=this._w,o=a*r._w+i*r._x+n*r._y+s*r._z;if(o<0?(this._w=-r._w,this._x=-r._x,this._y=-r._y,this._z=-r._z,o=-o):this.copy(r),o>=1)return this._w=a,this._x=i,this._y=n,this._z=s,this;let l=1-o*o;if(l<=Number.EPSILON){let d=1-e;return this._w=d*a+e*this._w,this._x=d*i+e*this._x,this._y=d*n+e*this._y,this._z=d*s+e*this._z,this.normalize(),this._onChangeCallback(),this}let c=Math.sqrt(l),u=Math.atan2(c,o),h=Math.sin((1-e)*u)/c,p=Math.sin(e*u)/c;return this._w=a*h+this._w*p,this._x=i*h+this._x*p,this._y=n*h+this._y*p,this._z=s*h+this._z*p,this._onChangeCallback(),this}slerpQuaternions(r,e,i){return this.copy(r).slerp(e,i)}random(){let r=Math.random(),e=Math.sqrt(1-r),i=Math.sqrt(r),n=2*Math.PI*Math.random(),s=2*Math.PI*Math.random();return this.set(e*Math.cos(n),i*Math.sin(s),i*Math.cos(s),e*Math.sin(n))}equals(r){return r._x===this._x&&r._y===this._y&&r._z===this._z&&r._w===this._w}fromArray(r,e=0){return this._x=r[e],this._y=r[e+1],this._z=r[e+2],this._w=r[e+3],this._onChangeCallback(),this}toArray(r=[],e=0){return r[e]=this._x,r[e+1]=this._y,r[e+2]=this._z,r[e+3]=this._w,r}fromBufferAttribute(r,e){return this._x=r.getX(e),this._y=r.getY(e),this._z=r.getZ(e),this._w=r.getW(e),this}_onChange(r){return this._onChangeCallback=r,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}},A=class{constructor(r=0,e=0,i=0){A.prototype.isVector3=!0,this.x=r,this.y=e,this.z=i}set(r,e,i){return i===void 0&&(i=this.z),this.x=r,this.y=e,this.z=i,this}setScalar(r){return this.x=r,this.y=r,this.z=r,this}setX(r){return this.x=r,this}setY(r){return this.y=r,this}setZ(r){return this.z=r,this}setComponent(r,e){switch(r){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;default:throw new Error("index is out of range: "+r)}return this}getComponent(r){switch(r){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+r)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(r){return this.x=r.x,this.y=r.y,this.z=r.z,this}add(r){return this.x+=r.x,this.y+=r.y,this.z+=r.z,this}addScalar(r){return this.x+=r,this.y+=r,this.z+=r,this}addVectors(r,e){return this.x=r.x+e.x,this.y=r.y+e.y,this.z=r.z+e.z,this}addScaledVector(r,e){return this.x+=r.x*e,this.y+=r.y*e,this.z+=r.z*e,this}sub(r){return this.x-=r.x,this.y-=r.y,this.z-=r.z,this}subScalar(r){return this.x-=r,this.y-=r,this.z-=r,this}subVectors(r,e){return this.x=r.x-e.x,this.y=r.y-e.y,this.z=r.z-e.z,this}multiply(r){return this.x*=r.x,this.y*=r.y,this.z*=r.z,this}multiplyScalar(r){return this.x*=r,this.y*=r,this.z*=r,this}multiplyVectors(r,e){return this.x=r.x*e.x,this.y=r.y*e.y,this.z=r.z*e.z,this}applyEuler(r){return this.applyQuaternion(tce.setFromEuler(r))}applyAxisAngle(r,e){return this.applyQuaternion(tce.setFromAxisAngle(r,e))}applyMatrix3(r){let e=this.x,i=this.y,n=this.z,s=r.elements;return this.x=s[0]*e+s[3]*i+s[6]*n,this.y=s[1]*e+s[4]*i+s[7]*n,this.z=s[2]*e+s[5]*i+s[8]*n,this}applyNormalMatrix(r){return this.applyMatrix3(r).normalize()}applyMatrix4(r){let e=this.x,i=this.y,n=this.z,s=r.elements,a=1/(s[3]*e+s[7]*i+s[11]*n+s[15]);return this.x=(s[0]*e+s[4]*i+s[8]*n+s[12])*a,this.y=(s[1]*e+s[5]*i+s[9]*n+s[13])*a,this.z=(s[2]*e+s[6]*i+s[10]*n+s[14])*a,this}applyQuaternion(r){let e=this.x,i=this.y,n=this.z,s=r.x,a=r.y,o=r.z,l=r.w,c=l*e+a*n-o*i,u=l*i+o*e-s*n,h=l*n+s*i-a*e,p=-s*e-a*i-o*n;return this.x=c*l+p*-s+u*-o-h*-a,this.y=u*l+p*-a+h*-s-c*-o,this.z=h*l+p*-o+c*-a-u*-s,this}project(r){return this.applyMatrix4(r.matrixWorldInverse).applyMatrix4(r.projectionMatrix)}unproject(r){return this.applyMatrix4(r.projectionMatrixInverse).applyMatrix4(r.matrixWorld)}transformDirection(r){let e=this.x,i=this.y,n=this.z,s=r.elements;return this.x=s[0]*e+s[4]*i+s[8]*n,this.y=s[1]*e+s[5]*i+s[9]*n,this.z=s[2]*e+s[6]*i+s[10]*n,this.normalize()}divide(r){return this.x/=r.x,this.y/=r.y,this.z/=r.z,this}divideScalar(r){return this.multiplyScalar(1/r)}min(r){return this.x=Math.min(this.x,r.x),this.y=Math.min(this.y,r.y),this.z=Math.min(this.z,r.z),this}max(r){return this.x=Math.max(this.x,r.x),this.y=Math.max(this.y,r.y),this.z=Math.max(this.z,r.z),this}clamp(r,e){return this.x=Math.max(r.x,Math.min(e.x,this.x)),this.y=Math.max(r.y,Math.min(e.y,this.y)),this.z=Math.max(r.z,Math.min(e.z,this.z)),this}clampScalar(r,e){return this.x=Math.max(r,Math.min(e,this.x)),this.y=Math.max(r,Math.min(e,this.y)),this.z=Math.max(r,Math.min(e,this.z)),this}clampLength(r,e){let i=this.length();return this.divideScalar(i||1).multiplyScalar(Math.max(r,Math.min(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=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(r){return this.x*r.x+this.y*r.y+this.z*r.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(r){return this.normalize().multiplyScalar(r)}lerp(r,e){return this.x+=(r.x-this.x)*e,this.y+=(r.y-this.y)*e,this.z+=(r.z-this.z)*e,this}lerpVectors(r,e,i){return this.x=r.x+(e.x-r.x)*i,this.y=r.y+(e.y-r.y)*i,this.z=r.z+(e.z-r.z)*i,this}cross(r){return this.crossVectors(this,r)}crossVectors(r,e){let i=r.x,n=r.y,s=r.z,a=e.x,o=e.y,l=e.z;return this.x=n*l-s*o,this.y=s*a-i*l,this.z=i*o-n*a,this}projectOnVector(r){let e=r.lengthSq();if(e===0)return this.set(0,0,0);let i=r.dot(this)/e;return this.copy(r).multiplyScalar(i)}projectOnPlane(r){return K6.copy(this).projectOnVector(r),this.sub(K6)}reflect(r){return this.sub(K6.copy(r).multiplyScalar(2*this.dot(r)))}angleTo(r){let e=Math.sqrt(this.lengthSq()*r.lengthSq());if(e===0)return Math.PI/2;let i=this.dot(r)/e;return Math.acos(Qn(i,-1,1))}distanceTo(r){return Math.sqrt(this.distanceToSquared(r))}distanceToSquared(r){let e=this.x-r.x,i=this.y-r.y,n=this.z-r.z;return e*e+i*i+n*n}manhattanDistanceTo(r){return Math.abs(this.x-r.x)+Math.abs(this.y-r.y)+Math.abs(this.z-r.z)}setFromSpherical(r){return this.setFromSphericalCoords(r.radius,r.phi,r.theta)}setFromSphericalCoords(r,e,i){let n=Math.sin(e)*r;return this.x=n*Math.sin(i),this.y=Math.cos(e)*r,this.z=n*Math.cos(i),this}setFromCylindrical(r){return this.setFromCylindricalCoords(r.radius,r.theta,r.y)}setFromCylindricalCoords(r,e,i){return this.x=r*Math.sin(e),this.y=i,this.z=r*Math.cos(e),this}setFromMatrixPosition(r){let e=r.elements;return this.x=e[12],this.y=e[13],this.z=e[14],this}setFromMatrixScale(r){let e=this.setFromMatrixColumn(r,0).length(),i=this.setFromMatrixColumn(r,1).length(),n=this.setFromMatrixColumn(r,2).length();return this.x=e,this.y=i,this.z=n,this}setFromMatrixColumn(r,e){return this.fromArray(r.elements,e*4)}setFromMatrix3Column(r,e){return this.fromArray(r.elements,e*3)}setFromEuler(r){return this.x=r._x,this.y=r._y,this.z=r._z,this}equals(r){return r.x===this.x&&r.y===this.y&&r.z===this.z}fromArray(r,e=0){return this.x=r[e],this.y=r[e+1],this.z=r[e+2],this}toArray(r=[],e=0){return r[e]=this.x,r[e+1]=this.y,r[e+2]=this.z,r}fromBufferAttribute(r,e){return this.x=r.getX(e),this.y=r.getY(e),this.z=r.getZ(e),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){let r=(Math.random()-.5)*2,e=Math.random()*Math.PI*2,i=Math.sqrt(1-Gh(r,2));return this.x=i*Math.cos(e),this.y=i*Math.sin(e),this.z=r,this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}},K6=new A,tce=new Or,Ot=class{constructor(r=new A(1/0,1/0,1/0),e=new A(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=r,this.max=e}set(r,e){return this.min.copy(r),this.max.copy(e),this}setFromArray(r){let e=1/0,i=1/0,n=1/0,s=-1/0,a=-1/0,o=-1/0;for(let l=0,c=r.length;l<c;l+=3){let u=r[l],h=r[l+1],p=r[l+2];u<e&&(e=u),h<i&&(i=h),p<n&&(n=p),u>s&&(s=u),h>a&&(a=h),p>o&&(o=p)}return this.min.set(e,i,n),this.max.set(s,a,o),this}setFromBufferAttribute(r){let e=1/0,i=1/0,n=1/0,s=-1/0,a=-1/0,o=-1/0;for(let l=0,c=r.count;l<c;l++){let u=r.getX(l),h=r.getY(l),p=r.getZ(l);u<e&&(e=u),h<i&&(i=h),p<n&&(n=p),u>s&&(s=u),h>a&&(a=h),p>o&&(o=p)}return this.min.set(e,i,n),this.max.set(s,a,o),this}setFromPoints(r){this.makeEmpty();for(let e=0,i=r.length;e<i;e++)this.expandByPoint(r[e]);return this}setFromCenterAndSize(r,e){let i=Qm.copy(e).multiplyScalar(.5);return this.min.copy(r).sub(i),this.max.copy(r).add(i),this}setFromObject(r,e=!1){return this.makeEmpty(),this.expandByObject(r,e)}clone(){return new this.constructor().copy(this)}copy(r){return this.min.copy(r.min),this.max.copy(r.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(r){return this.isEmpty()?r.set(0,0,0):r.addVectors(this.min,this.max).multiplyScalar(.5)}getSize(r){return this.isEmpty()?r.set(0,0,0):r.subVectors(this.max,this.min)}expandByPoint(r){return this.min.min(r),this.max.max(r),this}expandByVector(r){return this.min.sub(r),this.max.add(r),this}expandByScalar(r){return this.min.addScalar(-r),this.max.addScalar(r),this}expandByObject(r,e=!1){r.updateWorldMatrix(!1,!1);let i=r.geometry;if(i!==void 0)if(e&&i.attributes!=null&&i.attributes.position!==void 0){let s=i.attributes.position;for(let a=0,o=s.count;a<o;a++)Qm.fromBufferAttribute(s,a).applyMatrix4(r.matrixWorld),this.expandByPoint(Qm)}else i.boundingBox===null&&i.computeBoundingBox(),J6.copy(i.boundingBox),J6.applyMatrix4(r.matrixWorld),this.union(J6);let n=r.children;for(let s=0,a=n.length;s<a;s++)this.expandByObject(n[s],e);return this}containsPoint(r){return!(r.x<this.min.x||r.x>this.max.x||r.y<this.min.y||r.y>this.max.y||r.z<this.min.z||r.z>this.max.z)}containsBox(r){return this.min.x<=r.min.x&&r.max.x<=this.max.x&&this.min.y<=r.min.y&&r.max.y<=this.max.y&&this.min.z<=r.min.z&&r.max.z<=this.max.z}getParameter(r,e){return e.set((r.x-this.min.x)/(this.max.x-this.min.x),(r.y-this.min.y)/(this.max.y-this.min.y),(r.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(r){return!(r.max.x<this.min.x||r.min.x>this.max.x||r.max.y<this.min.y||r.min.y>this.max.y||r.max.z<this.min.z||r.min.z>this.max.z)}intersectsSphere(r){return this.clampPoint(r.center,Qm),Qm.distanceToSquared(r.center)<=r.radius*r.radius}intersectsPlane(r){let e,i;return r.normal.x>0?(e=r.normal.x*this.min.x,i=r.normal.x*this.max.x):(e=r.normal.x*this.max.x,i=r.normal.x*this.min.x),r.normal.y>0?(e+=r.normal.y*this.min.y,i+=r.normal.y*this.max.y):(e+=r.normal.y*this.max.y,i+=r.normal.y*this.min.y),r.normal.z>0?(e+=r.normal.z*this.min.z,i+=r.normal.z*this.max.z):(e+=r.normal.z*this.max.z,i+=r.normal.z*this.min.z),e<=-r.constant&&i>=-r.constant}intersectsTriangle(r){if(this.isEmpty())return!1;this.getCenter(Pb),RM.subVectors(this.max,Pb),ny.subVectors(r.a,Pb),sy.subVectors(r.b,Pb),ay.subVectors(r.c,Pb),Kd.subVectors(sy,ny),Jd.subVectors(ay,sy),eg.subVectors(ny,ay);let e=[0,-Kd.z,Kd.y,0,-Jd.z,Jd.y,0,-eg.z,eg.y,Kd.z,0,-Kd.x,Jd.z,0,-Jd.x,eg.z,0,-eg.x,-Kd.y,Kd.x,0,-Jd.y,Jd.x,0,-eg.y,eg.x,0];return!Q6(e,ny,sy,ay,RM)||(e=[1,0,0,0,1,0,0,0,1],!Q6(e,ny,sy,ay,RM))?!1:(MM.crossVectors(Kd,Jd),e=[MM.x,MM.y,MM.z],Q6(e,ny,sy,ay,RM))}clampPoint(r,e){return e.copy(r).clamp(this.min,this.max)}distanceToPoint(r){return Qm.copy(r).clamp(this.min,this.max).sub(r).length()}getBoundingSphere(r){return this.getCenter(r.center),r.radius=this.getSize(Qm).length()*.5,r}intersect(r){return this.min.max(r.min),this.max.min(r.max),this.isEmpty()&&this.makeEmpty(),this}union(r){return this.min.min(r.min),this.max.max(r.max),this}applyMatrix4(r){return this.isEmpty()?this:(np[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(r),np[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(r),np[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(r),np[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(r),np[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(r),np[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(r),np[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(r),np[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(r),this.setFromPoints(np),this)}translate(r){return this.min.add(r),this.max.add(r),this}equals(r){return r.min.equals(this.min)&&r.max.equals(this.max)}},np=[new A,new A,new A,new A,new A,new A,new A,new A],Qm=new A,J6=new Ot,ny=new A,sy=new A,ay=new A,Kd=new A,Jd=new A,eg=new A,Pb=new A,RM=new A,MM=new A,tg=new A;function Q6(t,r,e,i,n){for(let s=0,a=t.length-3;s<=a;s+=3){tg.fromArray(t,s);let o=n.x*Math.abs(tg.x)+n.y*Math.abs(tg.y)+n.z*Math.abs(tg.z),l=r.dot(tg),c=e.dot(tg),u=i.dot(tg);if(Math.max(-Math.max(l,c,u),Math.min(l,c,u))>o)return!1}return!0}var Dpt=new Ot,Nb=new A,eH=new A,zi=class{constructor(r=new A,e=-1){this.center=r,this.radius=e}set(r,e){return this.center.copy(r),this.radius=e,this}setFromPoints(r,e){let i=this.center;e!==void 0?i.copy(e):Dpt.setFromPoints(r).getCenter(i);let n=0;for(let s=0,a=r.length;s<a;s++)n=Math.max(n,i.distanceToSquared(r[s]));return this.radius=Math.sqrt(n),this}copy(r){return this.center.copy(r.center),this.radius=r.radius,this}isEmpty(){return this.radius<0}makeEmpty(){return this.center.set(0,0,0),this.radius=-1,this}containsPoint(r){return r.distanceToSquared(this.center)<=this.radius*this.radius}distanceToPoint(r){return r.distanceTo(this.center)-this.radius}intersectsSphere(r){let e=this.radius+r.radius;return r.center.distanceToSquared(this.center)<=e*e}intersectsBox(r){return r.intersectsSphere(this)}intersectsPlane(r){return Math.abs(r.distanceToPoint(this.center))<=this.radius}clampPoint(r,e){let i=this.center.distanceToSquared(r);return e.copy(r),i>this.radius*this.radius&&(e.sub(this.center).normalize(),e.multiplyScalar(this.radius).add(this.center)),e}getBoundingBox(r){return this.isEmpty()?(r.makeEmpty(),r):(r.set(this.center,this.center),r.expandByScalar(this.radius),r)}applyMatrix4(r){return this.center.applyMatrix4(r),this.radius=this.radius*r.getMaxScaleOnAxis(),this}translate(r){return this.center.add(r),this}expandByPoint(r){if(this.isEmpty())return this.center.copy(r),this.radius=0,this;Nb.subVectors(r,this.center);let e=Nb.lengthSq();if(e>this.radius*this.radius){let i=Math.sqrt(e),n=(i-this.radius)*.5;this.center.addScaledVector(Nb,n/i),this.radius+=n}return this}union(r){return r.isEmpty()?this:this.isEmpty()?(this.copy(r),this):(this.center.equals(r.center)===!0?this.radius=Math.max(this.radius,r.radius):(eH.subVectors(r.center,this.center).setLength(r.radius),this.expandByPoint(Nb.copy(r.center).add(eH)),this.expandByPoint(Nb.copy(r.center).sub(eH))),this)}equals(r){return r.center.equals(this.center)&&r.radius===this.radius}clone(){return new this.constructor().copy(this)}},sp=new A,tH=new A,DM=new A,Qd=new A,rH=new A,CM=new A,iH=new A,Vo=class{constructor(r=new A,e=new A(0,0,-1)){this.origin=r,this.direction=e}set(r,e){return this.origin.copy(r),this.direction.copy(e),this}copy(r){return this.origin.copy(r.origin),this.direction.copy(r.direction),this}at(r,e){return e.copy(this.direction).multiplyScalar(r).add(this.origin)}lookAt(r){return this.direction.copy(r).sub(this.origin).normalize(),this}recast(r){return this.origin.copy(this.at(r,sp)),this}closestPointToPoint(r,e){e.subVectors(r,this.origin);let i=e.dot(this.direction);return i<0?e.copy(this.origin):e.copy(this.direction).multiplyScalar(i).add(this.origin)}distanceToPoint(r){return Math.sqrt(this.distanceSqToPoint(r))}distanceSqToPoint(r){let e=sp.subVectors(r,this.origin).dot(this.direction);return e<0?this.origin.distanceToSquared(r):(sp.copy(this.direction).multiplyScalar(e).add(this.origin),sp.distanceToSquared(r))}distanceSqToSegment(r,e,i,n){tH.copy(r).add(e).multiplyScalar(.5),DM.copy(e).sub(r).normalize(),Qd.copy(this.origin).sub(tH);let s=r.distanceTo(e)*.5,a=-this.direction.dot(DM),o=Qd.dot(this.direction),l=-Qd.dot(DM),c=Qd.lengthSq(),u=Math.abs(1-a*a),h,p,d,f;if(u>0)if(h=a*l-o,p=a*o-l,f=s*u,h>=0)if(p>=-f)if(p<=f){let m=1/u;h*=m,p*=m,d=h*(h+a*p+2*o)+p*(a*h+p+2*l)+c}else p=s,h=Math.max(0,-(a*p+o)),d=-h*h+p*(p+2*l)+c;else p=-s,h=Math.max(0,-(a*p+o)),d=-h*h+p*(p+2*l)+c;else p<=-f?(h=Math.max(0,-(-a*s+o)),p=h>0?-s:Math.min(Math.max(-s,-l),s),d=-h*h+p*(p+2*l)+c):p<=f?(h=0,p=Math.min(Math.max(-s,-l),s),d=p*(p+2*l)+c):(h=Math.max(0,-(a*s+o)),p=h>0?s:Math.min(Math.max(-s,-l),s),d=-h*h+p*(p+2*l)+c);else p=a>0?-s:s,h=Math.max(0,-(a*p+o)),d=-h*h+p*(p+2*l)+c;return i&&i.copy(this.direction).multiplyScalar(h).add(this.origin),n&&n.copy(DM).multiplyScalar(p).add(tH),d}intersectSphere(r,e){sp.subVectors(r.center,this.origin);let i=sp.dot(this.direction),n=sp.dot(sp)-i*i,s=r.radius*r.radius;if(n>s)return null;let a=Math.sqrt(s-n),o=i-a,l=i+a;return o<0&&l<0?null:o<0?this.at(l,e):this.at(o,e)}intersectsSphere(r){return this.distanceSqToPoint(r.center)<=r.radius*r.radius}distanceToPlane(r){let e=r.normal.dot(this.direction);if(e===0)return r.distanceToPoint(this.origin)===0?0:null;let i=-(this.origin.dot(r.normal)+r.constant)/e;return i>=0?i:null}intersectPlane(r,e){let i=this.distanceToPlane(r);return i===null?null:this.at(i,e)}intersectsPlane(r){let e=r.distanceToPoint(this.origin);return e===0||r.normal.dot(this.direction)*e<0}intersectBox(r,e){let i,n,s,a,o,l,c=1/this.direction.x,u=1/this.direction.y,h=1/this.direction.z,p=this.origin;return c>=0?(i=(r.min.x-p.x)*c,n=(r.max.x-p.x)*c):(i=(r.max.x-p.x)*c,n=(r.min.x-p.x)*c),u>=0?(s=(r.min.y-p.y)*u,a=(r.max.y-p.y)*u):(s=(r.max.y-p.y)*u,a=(r.min.y-p.y)*u),i>a||s>n||((s>i||isNaN(i))&&(i=s),(a<n||isNaN(n))&&(n=a),h>=0?(o=(r.min.z-p.z)*h,l=(r.max.z-p.z)*h):(o=(r.max.z-p.z)*h,l=(r.min.z-p.z)*h),i>l||o>n)||((o>i||i!==i)&&(i=o),(l<n||n!==n)&&(n=l),n<0)?null:this.at(i>=0?i:n,e)}intersectsBox(r){return this.intersectBox(r,sp)!==null}intersectTriangle(r,e,i,n,s){rH.subVectors(e,r),CM.subVectors(i,r),iH.crossVectors(rH,CM);let a=this.direction.dot(iH),o;if(a>0){if(n)return null;o=1}else if(a<0)o=-1,a=-a;else return null;Qd.subVectors(this.origin,r);let l=o*this.direction.dot(CM.crossVectors(Qd,CM));if(l<0)return null;let c=o*this.direction.dot(rH.cross(Qd));if(c<0||l+c>a)return null;let u=-o*Qd.dot(iH);return u<0?null:this.at(u/a,s)}applyMatrix4(r){return this.origin.applyMatrix4(r),this.direction.transformDirection(r),this}equals(r){return r.origin.equals(this.origin)&&r.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}},Ue=class{constructor(){Ue.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}set(r,e,i,n,s,a,o,l,c,u,h,p,d,f,m,g){let y=this.elements;return y[0]=r,y[4]=e,y[8]=i,y[12]=n,y[1]=s,y[5]=a,y[9]=o,y[13]=l,y[2]=c,y[6]=u,y[10]=h,y[14]=p,y[3]=d,y[7]=f,y[11]=m,y[15]=g,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 Ue().fromArray(this.elements)}copy(r){let e=this.elements,i=r.elements;return e[0]=i[0],e[1]=i[1],e[2]=i[2],e[3]=i[3],e[4]=i[4],e[5]=i[5],e[6]=i[6],e[7]=i[7],e[8]=i[8],e[9]=i[9],e[10]=i[10],e[11]=i[11],e[12]=i[12],e[13]=i[13],e[14]=i[14],e[15]=i[15],this}copyPosition(r){let e=this.elements,i=r.elements;return e[12]=i[12],e[13]=i[13],e[14]=i[14],this}setFromMatrix3(r){let e=r.elements;return this.set(e[0],e[3],e[6],0,e[1],e[4],e[7],0,e[2],e[5],e[8],0,0,0,0,1),this}extractBasis(r,e,i){return r.setFromMatrixColumn(this,0),e.setFromMatrixColumn(this,1),i.setFromMatrixColumn(this,2),this}makeBasis(r,e,i){return this.set(r.x,e.x,i.x,0,r.y,e.y,i.y,0,r.z,e.z,i.z,0,0,0,0,1),this}extractRotation(r){let e=this.elements,i=r.elements,n=1/oy.setFromMatrixColumn(r,0).length(),s=1/oy.setFromMatrixColumn(r,1).length(),a=1/oy.setFromMatrixColumn(r,2).length();return e[0]=i[0]*n,e[1]=i[1]*n,e[2]=i[2]*n,e[3]=0,e[4]=i[4]*s,e[5]=i[5]*s,e[6]=i[6]*s,e[7]=0,e[8]=i[8]*a,e[9]=i[9]*a,e[10]=i[10]*a,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}makeRotationFromEuler(r){let e=this.elements,i=r.x,n=r.y,s=r.z,a=Math.cos(i),o=Math.sin(i),l=Math.cos(n),c=Math.sin(n),u=Math.cos(s),h=Math.sin(s);if(r.order==="XYZ"){let p=a*u,d=a*h,f=o*u,m=o*h;e[0]=l*u,e[4]=-l*h,e[8]=c,e[1]=d+f*c,e[5]=p-m*c,e[9]=-o*l,e[2]=m-p*c,e[6]=f+d*c,e[10]=a*l}else if(r.order==="YXZ"){let p=l*u,d=l*h,f=c*u,m=c*h;e[0]=p+m*o,e[4]=f*o-d,e[8]=a*c,e[1]=a*h,e[5]=a*u,e[9]=-o,e[2]=d*o-f,e[6]=m+p*o,e[10]=a*l}else if(r.order==="ZXY"){let p=l*u,d=l*h,f=c*u,m=c*h;e[0]=p-m*o,e[4]=-a*h,e[8]=f+d*o,e[1]=d+f*o,e[5]=a*u,e[9]=m-p*o,e[2]=-a*c,e[6]=o,e[10]=a*l}else if(r.order==="ZYX"){let p=a*u,d=a*h,f=o*u,m=o*h;e[0]=l*u,e[4]=f*c-d,e[8]=p*c+m,e[1]=l*h,e[5]=m*c+p,e[9]=d*c-f,e[2]=-c,e[6]=o*l,e[10]=a*l}else if(r.order==="YZX"){let p=a*l,d=a*c,f=o*l,m=o*c;e[0]=l*u,e[4]=m-p*h,e[8]=f*h+d,e[1]=h,e[5]=a*u,e[9]=-o*u,e[2]=-c*u,e[6]=d*h+f,e[10]=p-m*h}else if(r.order==="XZY"){let p=a*l,d=a*c,f=o*l,m=o*c;e[0]=l*u,e[4]=-h,e[8]=c*u,e[1]=p*h+m,e[5]=a*u,e[9]=d*h-f,e[2]=f*h-d,e[6]=o*u,e[10]=m*h+p}return e[3]=0,e[7]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}makeRotationFromQuaternion(r){return this.compose(Cpt,r,Apt)}lookAt(r,e,i){let n=this.elements;return Uo.subVectors(r,e),Uo.lengthSq()===0&&(Uo.z=1),Uo.normalize(),ef.crossVectors(i,Uo),ef.lengthSq()===0&&(Math.abs(i.z)===1?Uo.x+=1e-4:Uo.z+=1e-4,Uo.normalize(),ef.crossVectors(i,Uo)),ef.normalize(),AM.crossVectors(Uo,ef),n[0]=ef.x,n[4]=AM.x,n[8]=Uo.x,n[1]=ef.y,n[5]=AM.y,n[9]=Uo.y,n[2]=ef.z,n[6]=AM.z,n[10]=Uo.z,this}multiply(r){return this.multiplyMatrices(this,r)}premultiply(r){return this.multiplyMatrices(r,this)}multiplyMatrices(r,e){let i=r.elements,n=e.elements,s=this.elements,a=i[0],o=i[4],l=i[8],c=i[12],u=i[1],h=i[5],p=i[9],d=i[13],f=i[2],m=i[6],g=i[10],y=i[14],E=i[3],b=i[7],x=i[11],S=i[15],D=n[0],P=n[4],_=n[8],w=n[12],F=n[1],X=n[5],H=n[9],he=n[13],C=n[2],N=n[6],k=n[10],G=n[14],U=n[3],j=n[7],ee=n[11],ae=n[15];return s[0]=a*D+o*F+l*C+c*U,s[4]=a*P+o*X+l*N+c*j,s[8]=a*_+o*H+l*k+c*ee,s[12]=a*w+o*he+l*G+c*ae,s[1]=u*D+h*F+p*C+d*U,s[5]=u*P+h*X+p*N+d*j,s[9]=u*_+h*H+p*k+d*ee,s[13]=u*w+h*he+p*G+d*ae,s[2]=f*D+m*F+g*C+y*U,s[6]=f*P+m*X+g*N+y*j,s[10]=f*_+m*H+g*k+y*ee,s[14]=f*w+m*he+g*G+y*ae,s[3]=E*D+b*F+x*C+S*U,s[7]=E*P+b*X+x*N+S*j,s[11]=E*_+b*H+x*k+S*ee,s[15]=E*w+b*he+x*G+S*ae,this}multiplyScalar(r){let e=this.elements;return e[0]*=r,e[4]*=r,e[8]*=r,e[12]*=r,e[1]*=r,e[5]*=r,e[9]*=r,e[13]*=r,e[2]*=r,e[6]*=r,e[10]*=r,e[14]*=r,e[3]*=r,e[7]*=r,e[11]*=r,e[15]*=r,this}determinant(){let r=this.elements,e=r[0],i=r[4],n=r[8],s=r[12],a=r[1],o=r[5],l=r[9],c=r[13],u=r[2],h=r[6],p=r[10],d=r[14],f=r[3],m=r[7],g=r[11],y=r[15];return f*(+s*l*h-n*c*h-s*o*p+i*c*p+n*o*d-i*l*d)+m*(+e*l*d-e*c*p+s*a*p-n*a*d+n*c*u-s*l*u)+g*(+e*c*h-e*o*d-s*a*h+i*a*d+s*o*u-i*c*u)+y*(-n*o*u-e*l*h+e*o*p+n*a*h-i*a*p+i*l*u)}transpose(){let r=this.elements,e;return e=r[1],r[1]=r[4],r[4]=e,e=r[2],r[2]=r[8],r[8]=e,e=r[6],r[6]=r[9],r[9]=e,e=r[3],r[3]=r[12],r[12]=e,e=r[7],r[7]=r[13],r[13]=e,e=r[11],r[11]=r[14],r[14]=e,this}setPosition(r,e,i){let n=this.elements;return r.isVector3?(n[12]=r.x,n[13]=r.y,n[14]=r.z):(n[12]=r,n[13]=e,n[14]=i),this}invert(){let r=this.elements,e=r[0],i=r[1],n=r[2],s=r[3],a=r[4],o=r[5],l=r[6],c=r[7],u=r[8],h=r[9],p=r[10],d=r[11],f=r[12],m=r[13],g=r[14],y=r[15],E=h*g*c-m*p*c+m*l*d-o*g*d-h*l*y+o*p*y,b=f*p*c-u*g*c-f*l*d+a*g*d+u*l*y-a*p*y,x=u*m*c-f*h*c+f*o*d-a*m*d-u*o*y+a*h*y,S=f*h*l-u*m*l-f*o*p+a*m*p+u*o*g-a*h*g,D=e*E+i*b+n*x+s*S;if(D===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);let P=1/D;return r[0]=E*P,r[1]=(m*p*s-h*g*s-m*n*d+i*g*d+h*n*y-i*p*y)*P,r[2]=(o*g*s-m*l*s+m*n*c-i*g*c-o*n*y+i*l*y)*P,r[3]=(h*l*s-o*p*s-h*n*c+i*p*c+o*n*d-i*l*d)*P,r[4]=b*P,r[5]=(u*g*s-f*p*s+f*n*d-e*g*d-u*n*y+e*p*y)*P,r[6]=(f*l*s-a*g*s-f*n*c+e*g*c+a*n*y-e*l*y)*P,r[7]=(a*p*s-u*l*s+u*n*c-e*p*c-a*n*d+e*l*d)*P,r[8]=x*P,r[9]=(f*h*s-u*m*s-f*i*d+e*m*d+u*i*y-e*h*y)*P,r[10]=(a*m*s-f*o*s+f*i*c-e*m*c-a*i*y+e*o*y)*P,r[11]=(u*o*s-a*h*s-u*i*c+e*h*c+a*i*d-e*o*d)*P,r[12]=S*P,r[13]=(u*m*n-f*h*n+f*i*p-e*m*p-u*i*g+e*h*g)*P,r[14]=(f*o*n-a*m*n-f*i*l+e*m*l+a*i*g-e*o*g)*P,r[15]=(a*h*n-u*o*n+u*i*l-e*h*l-a*i*p+e*o*p)*P,this}scale(r){let e=this.elements,i=r.x,n=r.y,s=r.z;return e[0]*=i,e[4]*=n,e[8]*=s,e[1]*=i,e[5]*=n,e[9]*=s,e[2]*=i,e[6]*=n,e[10]*=s,e[3]*=i,e[7]*=n,e[11]*=s,this}getMaxScaleOnAxis(){let r=this.elements,e=r[0]*r[0]+r[1]*r[1]+r[2]*r[2],i=r[4]*r[4]+r[5]*r[5]+r[6]*r[6],n=r[8]*r[8]+r[9]*r[9]+r[10]*r[10];return Math.sqrt(Math.max(e,i,n))}makeTranslation(r,e,i){return this.set(1,0,0,r,0,1,0,e,0,0,1,i,0,0,0,1),this}makeRotationX(r){let e=Math.cos(r),i=Math.sin(r);return this.set(1,0,0,0,0,e,-i,0,0,i,e,0,0,0,0,1),this}makeRotationY(r){let e=Math.cos(r),i=Math.sin(r);return this.set(e,0,i,0,0,1,0,0,-i,0,e,0,0,0,0,1),this}makeRotationZ(r){let e=Math.cos(r),i=Math.sin(r);return this.set(e,-i,0,0,i,e,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(r,e){let i=Math.cos(e),n=Math.sin(e),s=1-i,a=r.x,o=r.y,l=r.z,c=s*a,u=s*o;return this.set(c*a+i,c*o-n*l,c*l+n*o,0,c*o+n*l,u*o+i,u*l-n*a,0,c*l-n*o,u*l+n*a,s*l*l+i,0,0,0,0,1),this}makeScale(r,e,i){return this.set(r,0,0,0,0,e,0,0,0,0,i,0,0,0,0,1),this}makeShear(r,e,i,n,s,a){return this.set(1,i,s,0,r,1,a,0,e,n,1,0,0,0,0,1),this}compose(r,e,i){let n=this.elements,s=e._x,a=e._y,o=e._z,l=e._w,c=s+s,u=a+a,h=o+o,p=s*c,d=s*u,f=s*h,m=a*u,g=a*h,y=o*h,E=l*c,b=l*u,x=l*h,S=i.x,D=i.y,P=i.z;return n[0]=(1-(m+y))*S,n[1]=(d+x)*S,n[2]=(f-b)*S,n[3]=0,n[4]=(d-x)*D,n[5]=(1-(p+y))*D,n[6]=(g+E)*D,n[7]=0,n[8]=(f+b)*P,n[9]=(g-E)*P,n[10]=(1-(p+m))*P,n[11]=0,n[12]=r.x,n[13]=r.y,n[14]=r.z,n[15]=1,this}decompose(r,e,i){let n=this.elements,s=oy.set(n[0],n[1],n[2]).length(),a=oy.set(n[4],n[5],n[6]).length(),o=oy.set(n[8],n[9],n[10]).length();this.determinant()<0&&(s=-s),r.x=n[12],r.y=n[13],r.z=n[14],Sc.copy(this);let c=1/s,u=1/a,h=1/o;return Sc.elements[0]*=c,Sc.elements[1]*=c,Sc.elements[2]*=c,Sc.elements[4]*=u,Sc.elements[5]*=u,Sc.elements[6]*=u,Sc.elements[8]*=h,Sc.elements[9]*=h,Sc.elements[10]*=h,e.setFromRotationMatrix(Sc),i.x=s,i.y=a,i.z=o,this}makePerspective(r,e,i,n,s,a){let o=this.elements,l=2*s/(e-r),c=2*s/(i-n),u=(e+r)/(e-r),h=(i+n)/(i-n),p=-(a+s)/(a-s),d=-2*a*s/(a-s);return o[0]=l,o[4]=0,o[8]=u,o[12]=0,o[1]=0,o[5]=c,o[9]=h,o[13]=0,o[2]=0,o[6]=0,o[10]=p,o[14]=d,o[3]=0,o[7]=0,o[11]=-1,o[15]=0,this}makeOrthographic(r,e,i,n,s,a){let o=this.elements,l=1/(e-r),c=1/(i-n),u=1/(a-s),h=(e+r)*l,p=(i+n)*c,d=(a+s)*u;return o[0]=2*l,o[4]=0,o[8]=0,o[12]=-h,o[1]=0,o[5]=2*c,o[9]=0,o[13]=-p,o[2]=0,o[6]=0,o[10]=-2*u,o[14]=-d,o[3]=0,o[7]=0,o[11]=0,o[15]=1,this}equals(r){let e=this.elements,i=r.elements;for(let n=0;n<16;n++)if(e[n]!==i[n])return!1;return!0}fromArray(r,e=0){for(let i=0;i<16;i++)this.elements[i]=r[i+e];return this}toArray(r=[],e=0){let i=this.elements;return r[e]=i[0],r[e+1]=i[1],r[e+2]=i[2],r[e+3]=i[3],r[e+4]=i[4],r[e+5]=i[5],r[e+6]=i[6],r[e+7]=i[7],r[e+8]=i[8],r[e+9]=i[9],r[e+10]=i[10],r[e+11]=i[11],r[e+12]=i[12],r[e+13]=i[13],r[e+14]=i[14],r[e+15]=i[15],r}},oy=new A,Sc=new Ue,Cpt=new A(0,0,0),Apt=new A(1,1,1),ef=new A,AM=new A,Uo=new A,rce=new Ue,ice=new Or,Sr=class{constructor(r=0,e=0,i=0,n=Sr.DEFAULT_ORDER){this.isEuler=!0,this._x=r,this._y=e,this._z=i,this._order=n}get x(){return this._x}set x(r){this._x=r,this._onChangeCallback()}get y(){return this._y}set y(r){this._y=r,this._onChangeCallback()}get z(){return this._z}set z(r){this._z=r,this._onChangeCallback()}get order(){return this._order}set order(r){this._order=r,this._onChangeCallback()}set(r,e,i,n=this._order){return this._x=r,this._y=e,this._z=i,this._order=n,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(r){return this._x=r._x,this._y=r._y,this._z=r._z,this._order=r._order,this._onChangeCallback(),this}setFromRotationMatrix(r,e=this._order,i=!0){let n=r.elements,s=n[0],a=n[4],o=n[8],l=n[1],c=n[5],u=n[9],h=n[2],p=n[6],d=n[10];switch(e){case"XYZ":this._y=Math.asin(Qn(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(-u,d),this._z=Math.atan2(-a,s)):(this._x=Math.atan2(p,c),this._z=0);break;case"YXZ":this._x=Math.asin(-Qn(u,-1,1)),Math.abs(u)<.9999999?(this._y=Math.atan2(o,d),this._z=Math.atan2(l,c)):(this._y=Math.atan2(-h,s),this._z=0);break;case"ZXY":this._x=Math.asin(Qn(p,-1,1)),Math.abs(p)<.9999999?(this._y=Math.atan2(-h,d),this._z=Math.atan2(-a,c)):(this._y=0,this._z=Math.atan2(l,s));break;case"ZYX":this._y=Math.asin(-Qn(h,-1,1)),Math.abs(h)<.9999999?(this._x=Math.atan2(p,d),this._z=Math.atan2(l,s)):(this._x=0,this._z=Math.atan2(-a,c));break;case"YZX":this._z=Math.asin(Qn(l,-1,1)),Math.abs(l)<.9999999?(this._x=Math.atan2(-u,c),this._y=Math.atan2(-h,s)):(this._x=0,this._y=Math.atan2(o,d));break;case"XZY":this._z=Math.asin(-Qn(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(p,c),this._y=Math.atan2(o,s)):(this._x=Math.atan2(-u,d),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+e)}return this._order=e,i===!0&&this._onChangeCallback(),this}setFromQuaternion(r,e,i){return rce.makeRotationFromQuaternion(r),this.setFromRotationMatrix(rce,e,i)}setFromVector3(r,e=this._order){return this.set(r.x,r.y,r.z,e)}reorder(r){return ice.setFromEuler(this),this.setFromQuaternion(ice,r)}equals(r){return r._x===this._x&&r._y===this._y&&r._z===this._z&&r._order===this._order}fromArray(r){return this._x=r[0],this._y=r[1],this._z=r[2],r[3]!==void 0&&(this._order=r[3]),this._onChangeCallback(),this}toArray(r=[],e=0){return r[e]=this._x,r[e+1]=this._y,r[e+2]=this._z,r[e+3]=this._order,r}_onChange(r){return this._onChangeCallback=r,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}};Sr.DEFAULT_ORDER="XYZ";var My=class{constructor(){this.mask=1}set(r){this.mask=(1<<r|0)>>>0}enable(r){this.mask|=1<<r|0}enableAll(){this.mask=-1}toggle(r){this.mask^=1<<r|0}disable(r){this.mask&=~(1<<r|0)}disableAll(){this.mask=0}test(r){return(this.mask&r.mask)!==0}isEnabled(r){return(this.mask&(1<<r|0))!==0}},Opt=0,nce=new A,ly=new Or,ap=new Ue,OM=new A,Lb=new A,Ppt=new A,Npt=new Or,sce=new A(1,0,0),ace=new A(0,1,0),oce=new A(0,0,1),Lpt={type:"added"},lce={type:"removed"},pr=class extends Ra{constructor(){super(),this.isObject3D=!0,Object.defineProperty(this,"id",{value:Opt++}),this.uuid=ko(),this.name="",this.type="Object3D",this.parent=null,this.children=[],this.up=pr.DEFAULT_UP.clone();let r=new A,e=new Sr,i=new Or,n=new A(1,1,1);function s(){i.setFromEuler(e,!1)}function a(){e.setFromQuaternion(i,void 0,!1)}e._onChange(s),i._onChange(a),Object.defineProperties(this,{position:{configurable:!0,enumerable:!0,value:r},rotation:{configurable:!0,enumerable:!0,value:e},quaternion:{configurable:!0,enumerable:!0,value:i},scale:{configurable:!0,enumerable:!0,value:n},modelViewMatrix:{value:new Ue},normalMatrix:{value:new Qi}}),this.matrix=new Ue,this.matrixWorld=new Ue,this.matrixAutoUpdate=pr.DEFAULT_MATRIX_AUTO_UPDATE,this.matrixWorldNeedsUpdate=!1,this.matrixWorldAutoUpdate=pr.DEFAULT_MATRIX_WORLD_AUTO_UPDATE,this.layers=new My,this.visible=!0,this.castShadow=!1,this.receiveShadow=!1,this.frustumCulled=!0,this.renderOrder=0,this.animations=[],this.userData={}}onBeforeRender(){}onAfterRender(){}applyMatrix4(r){this.matrixAutoUpdate&&this.updateMatrix(),this.matrix.premultiply(r),this.matrix.decompose(this.position,this.quaternion,this.scale)}applyQuaternion(r){return this.quaternion.premultiply(r),this}setRotationFromAxisAngle(r,e){this.quaternion.setFromAxisAngle(r,e)}setRotationFromEuler(r){this.quaternion.setFromEuler(r,!0)}setRotationFromMatrix(r){this.quaternion.setFromRotationMatrix(r)}setRotationFromQuaternion(r){this.quaternion.copy(r)}rotateOnAxis(r,e){return ly.setFromAxisAngle(r,e),this.quaternion.multiply(ly),this}rotateOnWorldAxis(r,e){return ly.setFromAxisAngle(r,e),this.quaternion.premultiply(ly),this}rotateX(r){return this.rotateOnAxis(sce,r)}rotateY(r){return this.rotateOnAxis(ace,r)}rotateZ(r){return this.rotateOnAxis(oce,r)}translateOnAxis(r,e){return nce.copy(r).applyQuaternion(this.quaternion),this.position.add(nce.multiplyScalar(e)),this}translateX(r){return this.translateOnAxis(sce,r)}translateY(r){return this.translateOnAxis(ace,r)}translateZ(r){return this.translateOnAxis(oce,r)}localToWorld(r){return this.updateWorldMatrix(!0,!1),r.applyMatrix4(this.matrixWorld)}worldToLocal(r){return this.updateWorldMatrix(!0,!1),r.applyMatrix4(ap.copy(this.matrixWorld).invert())}lookAt(r,e,i){r.isVector3?OM.copy(r):OM.set(r,e,i);let n=this.parent;this.updateWorldMatrix(!0,!1),Lb.setFromMatrixPosition(this.matrixWorld),this.isCamera||this.isLight?ap.lookAt(Lb,OM,this.up):ap.lookAt(OM,Lb,this.up),this.quaternion.setFromRotationMatrix(ap),n&&(ap.extractRotation(n.matrixWorld),ly.setFromRotationMatrix(ap),this.quaternion.premultiply(ly.invert()))}add(r){if(arguments.length>1){for(let e=0;e<arguments.length;e++)this.add(arguments[e]);return this}return r===this?(console.error("THREE.Object3D.add: object can't be added as a child of itself.",r),this):(r&&r.isObject3D?(r.parent!==null&&r.parent.remove(r),r.parent=this,this.children.push(r),r.dispatchEvent(Lpt)):console.error("THREE.Object3D.add: object not an instance of THREE.Object3D.",r),this)}remove(r){if(arguments.length>1){for(let i=0;i<arguments.length;i++)this.remove(arguments[i]);return this}let e=this.children.indexOf(r);return e!==-1&&(r.parent=null,this.children.splice(e,1),r.dispatchEvent(lce)),this}removeFromParent(){let r=this.parent;return r!==null&&r.remove(this),this}clear(){for(let r=0;r<this.children.length;r++){let e=this.children[r];e.parent=null,e.dispatchEvent(lce)}return this.children.length=0,this}attach(r){return this.updateWorldMatrix(!0,!1),ap.copy(this.matrixWorld).invert(),r.parent!==null&&(r.parent.updateWorldMatrix(!0,!1),ap.multiply(r.parent.matrixWorld)),r.applyMatrix4(ap),this.add(r),r.updateWorldMatrix(!1,!0),this}getObjectById(r){return this.getObjectByProperty("id",r)}getObjectByName(r){return this.getObjectByProperty("name",r)}getObjectByProperty(r,e){if(this[r]===e)return this;for(let i=0,n=this.children.length;i<n;i++){let a=this.children[i].getObjectByProperty(r,e);if(a!==void 0)return a}}getObjectsByProperty(r,e){let i=[];this[r]===e&&i.push(this);for(let n=0,s=this.children.length;n<s;n++){let a=this.children[n].getObjectsByProperty(r,e);a.length>0&&(i=i.concat(a))}return i}getWorldPosition(r){return this.updateWorldMatrix(!0,!1),r.setFromMatrixPosition(this.matrixWorld)}getWorldQuaternion(r){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(Lb,r,Ppt),r}getWorldScale(r){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(Lb,Npt,r),r}getWorldDirection(r){this.updateWorldMatrix(!0,!1);let e=this.matrixWorld.elements;return r.set(e[8],e[9],e[10]).normalize()}raycast(){}traverse(r){r(this);let e=this.children;for(let i=0,n=e.length;i<n;i++)e[i].traverse(r)}traverseVisible(r){if(this.visible===!1)return;r(this);let e=this.children;for(let i=0,n=e.length;i<n;i++)e[i].traverseVisible(r)}traverseAncestors(r){let e=this.parent;e!==null&&(r(e),e.traverseAncestors(r))}updateMatrix(){this.matrix.compose(this.position,this.quaternion,this.scale),this.matrixWorldNeedsUpdate=!0}updateMatrixWorld(r){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||r)&&(this.parent===null?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix),this.matrixWorldNeedsUpdate=!1,r=!0);let e=this.children;for(let i=0,n=e.length;i<n;i++){let s=e[i];(s.matrixWorldAutoUpdate===!0||r===!0)&&s.updateMatrixWorld(r)}}updateWorldMatrix(r,e){let i=this.parent;if(r===!0&&i!==null&&i.matrixWorldAutoUpdate===!0&&i.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),this.parent===null?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix),e===!0){let n=this.children;for(let s=0,a=n.length;s<a;s++){let o=n[s];o.matrixWorldAutoUpdate===!0&&o.updateWorldMatrix(!1,!0)}}}toJSON(r){let e=r===void 0||typeof r=="string",i={};e&&(r={geometries:{},materials:{},textures:{},images:{},shapes:{},skeletons:{},animations:{},nodes:{}},i.metadata={version:4.5,type:"Object",generator:"Object3D.toJSON"});let n={};n.uuid=this.uuid,n.type=this.type,this.name!==""&&(n.name=this.name),this.castShadow===!0&&(n.castShadow=!0),this.receiveShadow===!0&&(n.receiveShadow=!0),this.visible===!1&&(n.visible=!1),this.frustumCulled===!1&&(n.frustumCulled=!1),this.renderOrder!==0&&(n.renderOrder=this.renderOrder),Object.keys(this.userData).length>0&&(n.userData=this.userData),n.layers=this.layers.mask,n.matrix=this.matrix.toArray(),this.matrixAutoUpdate===!1&&(n.matrixAutoUpdate=!1),this.isInstancedMesh&&(n.type="InstancedMesh",n.count=this.count,n.instanceMatrix=this.instanceMatrix.toJSON(),this.instanceColor!==null&&(n.instanceColor=this.instanceColor.toJSON()));function s(o,l){return o[l.uuid]===void 0&&(o[l.uuid]=l.toJSON(r)),l.uuid}if(this.isScene)this.background&&(this.background.isColor?n.background=this.background.toJSON():this.background.isTexture&&(n.background=this.background.toJSON(r).uuid)),this.environment&&this.environment.isTexture&&this.environment.isRenderTargetTexture!==!0&&(n.environment=this.environment.toJSON(r).uuid);else if(this.isMesh||this.isLine||this.isPoints){n.geometry=s(r.geometries,this.geometry);let o=this.geometry.parameters;if(o!==void 0&&o.shapes!==void 0){let l=o.shapes;if(Array.isArray(l))for(let c=0,u=l.length;c<u;c++){let h=l[c];s(r.shapes,h)}else s(r.shapes,l)}}if(this.isSkinnedMesh&&(n.bindMode=this.bindMode,n.bindMatrix=this.bindMatrix.toArray(),this.skeleton!==void 0&&(s(r.skeletons,this.skeleton),n.skeleton=this.skeleton.uuid)),this.material!==void 0)if(Array.isArray(this.material)){let o=[];for(let l=0,c=this.material.length;l<c;l++)o.push(s(r.materials,this.material[l]));n.material=o}else n.material=s(r.materials,this.material);if(this.children.length>0){n.children=[];for(let o=0;o<this.children.length;o++)n.children.push(this.children[o].toJSON(r).object)}if(this.animations.length>0){n.animations=[];for(let o=0;o<this.animations.length;o++){let l=this.animations[o];n.animations.push(s(r.animations,l))}}if(e){let o=a(r.geometries),l=a(r.materials),c=a(r.textures),u=a(r.images),h=a(r.shapes),p=a(r.skeletons),d=a(r.animations),f=a(r.nodes);o.length>0&&(i.geometries=o),l.length>0&&(i.materials=l),c.length>0&&(i.textures=c),u.length>0&&(i.images=u),h.length>0&&(i.shapes=h),p.length>0&&(i.skeletons=p),d.length>0&&(i.animations=d),f.length>0&&(i.nodes=f)}return i.object=n,i;function a(o){let l=[];for(let c in o){let u=o[c];delete u.metadata,l.push(u)}return l}}clone(r){return new this.constructor().copy(this,r)}copy(r,e=!0){if(this.name=r.name,this.up.copy(r.up),this.position.copy(r.position),this.rotation.order=r.rotation.order,this.quaternion.copy(r.quaternion),this.scale.copy(r.scale),this.matrix.copy(r.matrix),this.matrixWorld.copy(r.matrixWorld),this.matrixAutoUpdate=r.matrixAutoUpdate,this.matrixWorldNeedsUpdate=r.matrixWorldNeedsUpdate,this.matrixWorldAutoUpdate=r.matrixWorldAutoUpdate,this.layers.mask=r.layers.mask,this.visible=r.visible,this.castShadow=r.castShadow,this.receiveShadow=r.receiveShadow,this.frustumCulled=r.frustumCulled,this.renderOrder=r.renderOrder,this.userData=JSON.parse(JSON.stringify(r.userData)),e===!0)for(let i=0;i<r.children.length;i++){let n=r.children[i];this.add(n.clone())}return this}};pr.DEFAULT_UP=new A(0,1,0);pr.DEFAULT_MATRIX_AUTO_UPDATE=!0;pr.DEFAULT_MATRIX_WORLD_AUTO_UPDATE=!0;var _c=new A,op=new A,nH=new A,lp=new A,cy=new A,uy=new A,cce=new A,sH=new A,aH=new A,oH=new A,un=class{constructor(r=new A,e=new A,i=new A){this.a=r,this.b=e,this.c=i}static getNormal(r,e,i,n){n.subVectors(i,e),_c.subVectors(r,e),n.cross(_c);let s=n.lengthSq();return s>0?n.multiplyScalar(1/Math.sqrt(s)):n.set(0,0,0)}static getBarycoord(r,e,i,n,s){_c.subVectors(n,e),op.subVectors(i,e),nH.subVectors(r,e);let a=_c.dot(_c),o=_c.dot(op),l=_c.dot(nH),c=op.dot(op),u=op.dot(nH),h=a*c-o*o;if(h===0)return s.set(-2,-1,-1);let p=1/h,d=(c*l-o*u)*p,f=(a*u-o*l)*p;return s.set(1-d-f,f,d)}static containsPoint(r,e,i,n){return this.getBarycoord(r,e,i,n,lp),lp.x>=0&&lp.y>=0&&lp.x+lp.y<=1}static getUV(r,e,i,n,s,a,o,l){return this.getBarycoord(r,e,i,n,lp),l.set(0,0),l.addScaledVector(s,lp.x),l.addScaledVector(a,lp.y),l.addScaledVector(o,lp.z),l}static isFrontFacing(r,e,i,n){return _c.subVectors(i,e),op.subVectors(r,e),_c.cross(op).dot(n)<0}set(r,e,i){return this.a.copy(r),this.b.copy(e),this.c.copy(i),this}setFromPointsAndIndices(r,e,i,n){return this.a.copy(r[e]),this.b.copy(r[i]),this.c.copy(r[n]),this}setFromAttributeAndIndices(r,e,i,n){return this.a.fromBufferAttribute(r,e),this.b.fromBufferAttribute(r,i),this.c.fromBufferAttribute(r,n),this}clone(){return new this.constructor().copy(this)}copy(r){return this.a.copy(r.a),this.b.copy(r.b),this.c.copy(r.c),this}getArea(){return _c.subVectors(this.c,this.b),op.subVectors(this.a,this.b),_c.cross(op).length()*.5}getMidpoint(r){return r.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(r){return un.getNormal(this.a,this.b,this.c,r)}getPlane(r){return r.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(r,e){return un.getBarycoord(r,this.a,this.b,this.c,e)}getUV(r,e,i,n,s){return un.getUV(r,this.a,this.b,this.c,e,i,n,s)}containsPoint(r){return un.containsPoint(r,this.a,this.b,this.c)}isFrontFacing(r){return un.isFrontFacing(this.a,this.b,this.c,r)}intersectsBox(r){return r.intersectsTriangle(this)}closestPointToPoint(r,e){let i=this.a,n=this.b,s=this.c,a,o;cy.subVectors(n,i),uy.subVectors(s,i),sH.subVectors(r,i);let l=cy.dot(sH),c=uy.dot(sH);if(l<=0&&c<=0)return e.copy(i);aH.subVectors(r,n);let u=cy.dot(aH),h=uy.dot(aH);if(u>=0&&h<=u)return e.copy(n);let p=l*h-u*c;if(p<=0&&l>=0&&u<=0)return a=l/(l-u),e.copy(i).addScaledVector(cy,a);oH.subVectors(r,s);let d=cy.dot(oH),f=uy.dot(oH);if(f>=0&&d<=f)return e.copy(s);let m=d*c-l*f;if(m<=0&&c>=0&&f<=0)return o=c/(c-f),e.copy(i).addScaledVector(uy,o);let g=u*f-d*h;if(g<=0&&h-u>=0&&d-f>=0)return cce.subVectors(s,n),o=(h-u)/(h-u+(d-f)),e.copy(n).addScaledVector(cce,o);let y=1/(g+m+p);return a=m*y,o=p*y,e.copy(i).addScaledVector(cy,a).addScaledVector(uy,o)}equals(r){return r.a.equals(this.a)&&r.b.equals(this.b)&&r.c.equals(this.c)}},Fpt=0,Gr=class extends Ra{constructor(){super(),this.isMaterial=!0,Object.defineProperty(this,"id",{value:Fpt++}),this.uuid=ko(),this.name="",this.type="Material",this.blending=pg,this.side=en,this.vertexColors=!1,this.opacity=1,this.transparent=!1,this.blendSrc=Ix,this.blendDst=SU,this.blendEquation=Sa,this.blendSrcAlpha=null,this.blendDstAlpha=null,this.blendEquationAlpha=null,this.depthFunc=yD,this.depthTest=!0,this.depthWrite=!0,this.stencilWriteMask=255,this.stencilFunc=ohe,this.stencilRef=0,this.stencilFuncMask=255,this.stencilFail=gD,this.stencilZFail=gD,this.stencilZPass=gD,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(r){this._alphaTest>0!=r>0&&this.version++,this._alphaTest=r}onBuild(){}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(r){if(r!==void 0)for(let e in r){let i=r[e];if(i===void 0){console.warn("THREE.Material: '"+e+"' parameter is undefined.");continue}let n=this[e];if(n===void 0){console.warn("THREE."+this.type+": '"+e+"' is not a property of this material.");continue}n&&n.isColor?n.set(i):n&&n.isVector3&&i&&i.isVector3?n.copy(i):this[e]=i}}toJSON(r){let e=r===void 0||typeof r=="string";e&&(r={textures:{},images:{}});let i={metadata:{version:4.5,type:"Material",generator:"Material.toJSON"}};i.uuid=this.uuid,i.type=this.type,this.name!==""&&(i.name=this.name),this.color&&this.color.isColor&&(i.color=this.color.getHex()),this.roughness!==void 0&&(i.roughness=this.roughness),this.metalness!==void 0&&(i.metalness=this.metalness),this.sheen!==void 0&&(i.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(i.sheenColor=this.sheenColor.getHex()),this.sheenRoughness!==void 0&&(i.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(i.emissive=this.emissive.getHex()),this.emissiveIntensity&&this.emissiveIntensity!==1&&(i.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(i.specular=this.specular.getHex()),this.specularIntensity!==void 0&&(i.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(i.specularColor=this.specularColor.getHex()),this.shininess!==void 0&&(i.shininess=this.shininess),this.clearcoat!==void 0&&(i.clearcoat=this.clearcoat),this.clearcoatRoughness!==void 0&&(i.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(i.clearcoatMap=this.clearcoatMap.toJSON(r).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(i.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(r).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(i.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(r).uuid,i.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.iridescence!==void 0&&(i.iridescence=this.iridescence),this.iridescenceIOR!==void 0&&(i.iridescenceIOR=this.iridescenceIOR),this.iridescenceThicknessRange!==void 0&&(i.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(i.iridescenceMap=this.iridescenceMap.toJSON(r).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(i.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(r).uuid),this.map&&this.map.isTexture&&(i.map=this.map.toJSON(r).uuid),this.matcap&&this.matcap.isTexture&&(i.matcap=this.matcap.toJSON(r).uuid),this.alphaMap&&this.alphaMap.isTexture&&(i.alphaMap=this.alphaMap.toJSON(r).uuid),this.lightMap&&this.lightMap.isTexture&&(i.lightMap=this.lightMap.toJSON(r).uuid,i.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(i.aoMap=this.aoMap.toJSON(r).uuid,i.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(i.bumpMap=this.bumpMap.toJSON(r).uuid,i.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(i.normalMap=this.normalMap.toJSON(r).uuid,i.normalMapType=this.normalMapType,i.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(i.displacementMap=this.displacementMap.toJSON(r).uuid,i.displacementScale=this.displacementScale,i.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(i.roughnessMap=this.roughnessMap.toJSON(r).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(i.metalnessMap=this.metalnessMap.toJSON(r).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(i.emissiveMap=this.emissiveMap.toJSON(r).uuid),this.specularMap&&this.specularMap.isTexture&&(i.specularMap=this.specularMap.toJSON(r).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(i.specularIntensityMap=this.specularIntensityMap.toJSON(r).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(i.specularColorMap=this.specularColorMap.toJSON(r).uuid),this.envMap&&this.envMap.isTexture&&(i.envMap=this.envMap.toJSON(r).uuid,this.combine!==void 0&&(i.combine=this.combine)),this.envMapIntensity!==void 0&&(i.envMapIntensity=this.envMapIntensity),this.reflectivity!==void 0&&(i.reflectivity=this.reflectivity),this.refractionRatio!==void 0&&(i.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(i.gradientMap=this.gradientMap.toJSON(r).uuid),this.transmission!==void 0&&(i.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(i.transmissionMap=this.transmissionMap.toJSON(r).uuid),this.thickness!==void 0&&(i.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(i.thicknessMap=this.thicknessMap.toJSON(r).uuid),this.attenuationDistance!==void 0&&this.attenuationDistance!==1/0&&(i.attenuationDistance=this.attenuationDistance),this.attenuationColor!==void 0&&(i.attenuationColor=this.attenuationColor.getHex()),this.size!==void 0&&(i.size=this.size),this.shadowSide!==null&&(i.shadowSide=this.shadowSide),this.sizeAttenuation!==void 0&&(i.sizeAttenuation=this.sizeAttenuation),this.blending!==pg&&(i.blending=this.blending),this.side!==en&&(i.side=this.side),this.vertexColors&&(i.vertexColors=!0),this.opacity<1&&(i.opacity=this.opacity),this.transparent===!0&&(i.transparent=this.transparent),i.depthFunc=this.depthFunc,i.depthTest=this.depthTest,i.depthWrite=this.depthWrite,i.colorWrite=this.colorWrite,i.stencilWrite=this.stencilWrite,i.stencilWriteMask=this.stencilWriteMask,i.stencilFunc=this.stencilFunc,i.stencilRef=this.stencilRef,i.stencilFuncMask=this.stencilFuncMask,i.stencilFail=this.stencilFail,i.stencilZFail=this.stencilZFail,i.stencilZPass=this.stencilZPass,this.rotation!==void 0&&this.rotation!==0&&(i.rotation=this.rotation),this.polygonOffset===!0&&(i.polygonOffset=!0),this.polygonOffsetFactor!==0&&(i.polygonOffsetFactor=this.polygonOffsetFactor),this.polygonOffsetUnits!==0&&(i.polygonOffsetUnits=this.polygonOffsetUnits),this.linewidth!==void 0&&this.linewidth!==1&&(i.linewidth=this.linewidth),this.dashSize!==void 0&&(i.dashSize=this.dashSize),this.gapSize!==void 0&&(i.gapSize=this.gapSize),this.scale!==void 0&&(i.scale=this.scale),this.dithering===!0&&(i.dithering=!0),this.alphaTest>0&&(i.alphaTest=this.alphaTest),this.alphaToCoverage===!0&&(i.alphaToCoverage=this.alphaToCoverage),this.premultipliedAlpha===!0&&(i.premultipliedAlpha=this.premultipliedAlpha),this.forceSinglePass===!0&&(i.forceSinglePass=this.forceSinglePass),this.wireframe===!0&&(i.wireframe=this.wireframe),this.wireframeLinewidth>1&&(i.wireframeLinewidth=this.wireframeLinewidth),this.wireframeLinecap!=="round"&&(i.wireframeLinecap=this.wireframeLinecap),this.wireframeLinejoin!=="round"&&(i.wireframeLinejoin=this.wireframeLinejoin),this.flatShading===!0&&(i.flatShading=this.flatShading),this.visible===!1&&(i.visible=!1),this.toneMapped===!1&&(i.toneMapped=!1),this.fog===!1&&(i.fog=!1),Object.keys(this.userData).length>0&&(i.userData=this.userData);function n(s){let a=[];for(let o in s){let l=s[o];delete l.metadata,a.push(l)}return a}if(e){let s=n(r.textures),a=n(r.images);s.length>0&&(i.textures=s),a.length>0&&(i.images=a)}return i}clone(){return new this.constructor().copy(this)}copy(r){this.name=r.name,this.blending=r.blending,this.side=r.side,this.vertexColors=r.vertexColors,this.opacity=r.opacity,this.transparent=r.transparent,this.blendSrc=r.blendSrc,this.blendDst=r.blendDst,this.blendEquation=r.blendEquation,this.blendSrcAlpha=r.blendSrcAlpha,this.blendDstAlpha=r.blendDstAlpha,this.blendEquationAlpha=r.blendEquationAlpha,this.depthFunc=r.depthFunc,this.depthTest=r.depthTest,this.depthWrite=r.depthWrite,this.stencilWriteMask=r.stencilWriteMask,this.stencilFunc=r.stencilFunc,this.stencilRef=r.stencilRef,this.stencilFuncMask=r.stencilFuncMask,this.stencilFail=r.stencilFail,this.stencilZFail=r.stencilZFail,this.stencilZPass=r.stencilZPass,this.stencilWrite=r.stencilWrite;let e=r.clippingPlanes,i=null;if(e!==null){let n=e.length;i=new Array(n);for(let s=0;s!==n;++s)i[s]=e[s].clone()}return this.clippingPlanes=i,this.clipIntersection=r.clipIntersection,this.clipShadows=r.clipShadows,this.shadowSide=r.shadowSide,this.colorWrite=r.colorWrite,this.precision=r.precision,this.polygonOffset=r.polygonOffset,this.polygonOffsetFactor=r.polygonOffsetFactor,this.polygonOffsetUnits=r.polygonOffsetUnits,this.dithering=r.dithering,this.alphaTest=r.alphaTest,this.alphaToCoverage=r.alphaToCoverage,this.premultipliedAlpha=r.premultipliedAlpha,this.forceSinglePass=r.forceSinglePass,this.visible=r.visible,this.toneMapped=r.toneMapped,this.userData=JSON.parse(JSON.stringify(r.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(r){r===!0&&this.version++}},or=class extends Gr{constructor(r){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.combine=Sx,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(r)}copy(r){return super.copy(r),this.color.copy(r.color),this.map=r.map,this.lightMap=r.lightMap,this.lightMapIntensity=r.lightMapIntensity,this.aoMap=r.aoMap,this.aoMapIntensity=r.aoMapIntensity,this.specularMap=r.specularMap,this.alphaMap=r.alphaMap,this.envMap=r.envMap,this.combine=r.combine,this.reflectivity=r.reflectivity,this.refractionRatio=r.refractionRatio,this.wireframe=r.wireframe,this.wireframeLinewidth=r.wireframeLinewidth,this.wireframeLinecap=r.wireframeLinecap,this.wireframeLinejoin=r.wireframeLinejoin,this.fog=r.fog,this}},us=new A,PM=new le,jt=class{constructor(r,e,i=!1){if(Array.isArray(r))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,this.name="",this.array=r,this.itemSize=e,this.count=r!==void 0?r.length/e:0,this.normalized=i,this.usage=Jb,this.updateRange={offset:0,count:-1},this.version=0}onUploadCallback(){}set needsUpdate(r){r===!0&&this.version++}setUsage(r){return this.usage=r,this}copy(r){return this.name=r.name,this.array=new r.array.constructor(r.array),this.itemSize=r.itemSize,this.count=r.count,this.normalized=r.normalized,this.usage=r.usage,this}copyAt(r,e,i){r*=this.itemSize,i*=e.itemSize;for(let n=0,s=this.itemSize;n<s;n++)this.array[r+n]=e.array[i+n];return this}copyArray(r){return this.array.set(r),this}applyMatrix3(r){if(this.itemSize===2)for(let e=0,i=this.count;e<i;e++)PM.fromBufferAttribute(this,e),PM.applyMatrix3(r),this.setXY(e,PM.x,PM.y);else if(this.itemSize===3)for(let e=0,i=this.count;e<i;e++)us.fromBufferAttribute(this,e),us.applyMatrix3(r),this.setXYZ(e,us.x,us.y,us.z);return this}applyMatrix4(r){for(let e=0,i=this.count;e<i;e++)us.fromBufferAttribute(this,e),us.applyMatrix4(r),this.setXYZ(e,us.x,us.y,us.z);return this}applyNormalMatrix(r){for(let e=0,i=this.count;e<i;e++)us.fromBufferAttribute(this,e),us.applyNormalMatrix(r),this.setXYZ(e,us.x,us.y,us.z);return this}transformDirection(r){for(let e=0,i=this.count;e<i;e++)us.fromBufferAttribute(this,e),us.transformDirection(r),this.setXYZ(e,us.x,us.y,us.z);return this}set(r,e=0){return this.array.set(r,e),this}getX(r){let e=this.array[r*this.itemSize];return this.normalized&&(e=hp(e,this.array)),e}setX(r,e){return this.normalized&&(e=cn(e,this.array)),this.array[r*this.itemSize]=e,this}getY(r){let e=this.array[r*this.itemSize+1];return this.normalized&&(e=hp(e,this.array)),e}setY(r,e){return this.normalized&&(e=cn(e,this.array)),this.array[r*this.itemSize+1]=e,this}getZ(r){let e=this.array[r*this.itemSize+2];return this.normalized&&(e=hp(e,this.array)),e}setZ(r,e){return this.normalized&&(e=cn(e,this.array)),this.array[r*this.itemSize+2]=e,this}getW(r){let e=this.array[r*this.itemSize+3];return this.normalized&&(e=hp(e,this.array)),e}setW(r,e){return this.normalized&&(e=cn(e,this.array)),this.array[r*this.itemSize+3]=e,this}setXY(r,e,i){return r*=this.itemSize,this.normalized&&(e=cn(e,this.array),i=cn(i,this.array)),this.array[r+0]=e,this.array[r+1]=i,this}setXYZ(r,e,i,n){return r*=this.itemSize,this.normalized&&(e=cn(e,this.array),i=cn(i,this.array),n=cn(n,this.array)),this.array[r+0]=e,this.array[r+1]=i,this.array[r+2]=n,this}setXYZW(r,e,i,n,s){return r*=this.itemSize,this.normalized&&(e=cn(e,this.array),i=cn(i,this.array),n=cn(n,this.array),s=cn(s,this.array)),this.array[r+0]=e,this.array[r+1]=i,this.array[r+2]=n,this.array[r+3]=s,this}onUpload(r){return this.onUploadCallback=r,this}clone(){return new this.constructor(this.array,this.itemSize).copy(this)}toJSON(){let r={itemSize:this.itemSize,type:this.array.constructor.name,array:Array.from(this.array),normalized:this.normalized};return this.name!==""&&(r.name=this.name),this.usage!==Jb&&(r.usage=this.usage),(this.updateRange.offset!==0||this.updateRange.count!==-1)&&(r.updateRange=this.updateRange),r}copyColorsArray(){console.error("THREE.BufferAttribute: copyColorsArray() was removed in r144.")}copyVector2sArray(){console.error("THREE.BufferAttribute: copyVector2sArray() was removed in r144.")}copyVector3sArray(){console.error("THREE.BufferAttribute: copyVector3sArray() was removed in r144.")}copyVector4sArray(){console.error("THREE.BufferAttribute: copyVector4sArray() was removed in r144.")}},s4=class extends jt{constructor(r,e,i){super(new Int8Array(r),e,i)}},a4=class extends jt{constructor(r,e,i){super(new Uint8Array(r),e,i)}},o4=class extends jt{constructor(r,e,i){super(new Uint8ClampedArray(r),e,i)}},l4=class extends jt{constructor(r,e,i){super(new Int16Array(r),e,i)}},gg=class extends jt{constructor(r,e,i){super(new Uint16Array(r),e,i)}},c4=class extends jt{constructor(r,e,i){super(new Int32Array(r),e,i)}},ix=class extends jt{constructor(r,e,i){super(new Uint32Array(r),e,i)}},u4=class extends jt{constructor(r,e,i){super(new Uint16Array(r),e,i),this.isFloat16BufferAttribute=!0}},ct=class extends jt{constructor(r,e,i){super(new Float32Array(r),e,i)}},h4=class extends jt{constructor(r,e,i){super(new Float64Array(r),e,i)}},Hpt=0,Il=new Ue,lH=new pr,hy=new A,Bo=new Ot,Fb=new Ot,Ms=new A,it=class extends Ra{constructor(){super(),this.isBufferGeometry=!0,Object.defineProperty(this,"id",{value:Hpt++}),this.uuid=ko(),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(r){return Array.isArray(r)?this.index=new(che(r)?ix:gg)(r,1):this.index=r,this}getAttribute(r){return this.attributes[r]}setAttribute(r,e){return this.attributes[r]=e,this}deleteAttribute(r){return delete this.attributes[r],this}hasAttribute(r){return this.attributes[r]!==void 0}addGroup(r,e,i=0){this.groups.push({start:r,count:e,materialIndex:i})}clearGroups(){this.groups=[]}setDrawRange(r,e){this.drawRange.start=r,this.drawRange.count=e}applyMatrix4(r){let e=this.attributes.position;e!==void 0&&(e.applyMatrix4(r),e.needsUpdate=!0);let i=this.attributes.normal;if(i!==void 0){let s=new Qi().getNormalMatrix(r);i.applyNormalMatrix(s),i.needsUpdate=!0}let n=this.attributes.tangent;return n!==void 0&&(n.transformDirection(r),n.needsUpdate=!0),this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this}applyQuaternion(r){return Il.makeRotationFromQuaternion(r),this.applyMatrix4(Il),this}rotateX(r){return Il.makeRotationX(r),this.applyMatrix4(Il),this}rotateY(r){return Il.makeRotationY(r),this.applyMatrix4(Il),this}rotateZ(r){return Il.makeRotationZ(r),this.applyMatrix4(Il),this}translate(r,e,i){return Il.makeTranslation(r,e,i),this.applyMatrix4(Il),this}scale(r,e,i){return Il.makeScale(r,e,i),this.applyMatrix4(Il),this}lookAt(r){return lH.lookAt(r),lH.updateMatrix(),this.applyMatrix4(lH.matrix),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(hy).negate(),this.translate(hy.x,hy.y,hy.z),this}setFromPoints(r){let e=[];for(let i=0,n=r.length;i<n;i++){let s=r[i];e.push(s.x,s.y,s.z||0)}return this.setAttribute("position",new ct(e,3)),this}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new Ot);let r=this.attributes.position,e=this.morphAttributes.position;if(r&&r.isGLBufferAttribute){console.error('THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box. Alternatively set "mesh.frustumCulled" to "false".',this),this.boundingBox.set(new A(-1/0,-1/0,-1/0),new A(1/0,1/0,1/0));return}if(r!==void 0){if(this.boundingBox.setFromBufferAttribute(r),e)for(let i=0,n=e.length;i<n;i++){let s=e[i];Bo.setFromBufferAttribute(s),this.morphTargetsRelative?(Ms.addVectors(this.boundingBox.min,Bo.min),this.boundingBox.expandByPoint(Ms),Ms.addVectors(this.boundingBox.max,Bo.max),this.boundingBox.expandByPoint(Ms)):(this.boundingBox.expandByPoint(Bo.min),this.boundingBox.expandByPoint(Bo.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 zi);let r=this.attributes.position,e=this.morphAttributes.position;if(r&&r.isGLBufferAttribute){console.error('THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere. Alternatively set "mesh.frustumCulled" to "false".',this),this.boundingSphere.set(new A,1/0);return}if(r){let i=this.boundingSphere.center;if(Bo.setFromBufferAttribute(r),e)for(let s=0,a=e.length;s<a;s++){let o=e[s];Fb.setFromBufferAttribute(o),this.morphTargetsRelative?(Ms.addVectors(Bo.min,Fb.min),Bo.expandByPoint(Ms),Ms.addVectors(Bo.max,Fb.max),Bo.expandByPoint(Ms)):(Bo.expandByPoint(Fb.min),Bo.expandByPoint(Fb.max))}Bo.getCenter(i);let n=0;for(let s=0,a=r.count;s<a;s++)Ms.fromBufferAttribute(r,s),n=Math.max(n,i.distanceToSquared(Ms));if(e)for(let s=0,a=e.length;s<a;s++){let o=e[s],l=this.morphTargetsRelative;for(let c=0,u=o.count;c<u;c++)Ms.fromBufferAttribute(o,c),l&&(hy.fromBufferAttribute(r,c),Ms.add(hy)),n=Math.max(n,i.distanceToSquared(Ms))}this.boundingSphere.radius=Math.sqrt(n),isNaN(this.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this)}}computeTangents(){let r=this.index,e=this.attributes;if(r===null||e.position===void 0||e.normal===void 0||e.uv===void 0){console.error("THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)");return}let i=r.array,n=e.position.array,s=e.normal.array,a=e.uv.array,o=n.length/3;this.hasAttribute("tangent")===!1&&this.setAttribute("tangent",new jt(new Float32Array(4*o),4));let l=this.getAttribute("tangent").array,c=[],u=[];for(let F=0;F<o;F++)c[F]=new A,u[F]=new A;let h=new A,p=new A,d=new A,f=new le,m=new le,g=new le,y=new A,E=new A;function b(F,X,H){h.fromArray(n,F*3),p.fromArray(n,X*3),d.fromArray(n,H*3),f.fromArray(a,F*2),m.fromArray(a,X*2),g.fromArray(a,H*2),p.sub(h),d.sub(h),m.sub(f),g.sub(f);let he=1/(m.x*g.y-g.x*m.y);isFinite(he)&&(y.copy(p).multiplyScalar(g.y).addScaledVector(d,-m.y).multiplyScalar(he),E.copy(d).multiplyScalar(m.x).addScaledVector(p,-g.x).multiplyScalar(he),c[F].add(y),c[X].add(y),c[H].add(y),u[F].add(E),u[X].add(E),u[H].add(E))}let x=this.groups;x.length===0&&(x=[{start:0,count:i.length}]);for(let F=0,X=x.length;F<X;++F){let H=x[F],he=H.start,C=H.count;for(let N=he,k=he+C;N<k;N+=3)b(i[N+0],i[N+1],i[N+2])}let S=new A,D=new A,P=new A,_=new A;function w(F){P.fromArray(s,F*3),_.copy(P);let X=c[F];S.copy(X),S.sub(P.multiplyScalar(P.dot(X))).normalize(),D.crossVectors(_,X);let he=D.dot(u[F])<0?-1:1;l[F*4]=S.x,l[F*4+1]=S.y,l[F*4+2]=S.z,l[F*4+3]=he}for(let F=0,X=x.length;F<X;++F){let H=x[F],he=H.start,C=H.count;for(let N=he,k=he+C;N<k;N+=3)w(i[N+0]),w(i[N+1]),w(i[N+2])}}computeVertexNormals(){let r=this.index,e=this.getAttribute("position");if(e!==void 0){let i=this.getAttribute("normal");if(i===void 0)i=new jt(new Float32Array(e.count*3),3),this.setAttribute("normal",i);else for(let p=0,d=i.count;p<d;p++)i.setXYZ(p,0,0,0);let n=new A,s=new A,a=new A,o=new A,l=new A,c=new A,u=new A,h=new A;if(r)for(let p=0,d=r.count;p<d;p+=3){let f=r.getX(p+0),m=r.getX(p+1),g=r.getX(p+2);n.fromBufferAttribute(e,f),s.fromBufferAttribute(e,m),a.fromBufferAttribute(e,g),u.subVectors(a,s),h.subVectors(n,s),u.cross(h),o.fromBufferAttribute(i,f),l.fromBufferAttribute(i,m),c.fromBufferAttribute(i,g),o.add(u),l.add(u),c.add(u),i.setXYZ(f,o.x,o.y,o.z),i.setXYZ(m,l.x,l.y,l.z),i.setXYZ(g,c.x,c.y,c.z)}else for(let p=0,d=e.count;p<d;p+=3)n.fromBufferAttribute(e,p+0),s.fromBufferAttribute(e,p+1),a.fromBufferAttribute(e,p+2),u.subVectors(a,s),h.subVectors(n,s),u.cross(h),i.setXYZ(p+0,u.x,u.y,u.z),i.setXYZ(p+1,u.x,u.y,u.z),i.setXYZ(p+2,u.x,u.y,u.z);this.normalizeNormals(),i.needsUpdate=!0}}merge(){return console.error("THREE.BufferGeometry.merge() has been removed. Use THREE.BufferGeometryUtils.mergeBufferGeometries() instead."),this}normalizeNormals(){let r=this.attributes.normal;for(let e=0,i=r.count;e<i;e++)Ms.fromBufferAttribute(r,e),Ms.normalize(),r.setXYZ(e,Ms.x,Ms.y,Ms.z)}toNonIndexed(){function r(o,l){let c=o.array,u=o.itemSize,h=o.normalized,p=new c.constructor(l.length*u),d=0,f=0;for(let m=0,g=l.length;m<g;m++){o.isInterleavedBufferAttribute?d=l[m]*o.data.stride+o.offset:d=l[m]*u;for(let y=0;y<u;y++)p[f++]=c[d++]}return new jt(p,u,h)}if(this.index===null)return console.warn("THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed."),this;let e=new it,i=this.index.array,n=this.attributes;for(let o in n){let l=n[o],c=r(l,i);e.setAttribute(o,c)}let s=this.morphAttributes;for(let o in s){let l=[],c=s[o];for(let u=0,h=c.length;u<h;u++){let p=c[u],d=r(p,i);l.push(d)}e.morphAttributes[o]=l}e.morphTargetsRelative=this.morphTargetsRelative;let a=this.groups;for(let o=0,l=a.length;o<l;o++){let c=a[o];e.addGroup(c.start,c.count,c.materialIndex)}return e}toJSON(){let r={metadata:{version:4.5,type:"BufferGeometry",generator:"BufferGeometry.toJSON"}};if(r.uuid=this.uuid,r.type=this.type,this.name!==""&&(r.name=this.name),Object.keys(this.userData).length>0&&(r.userData=this.userData),this.parameters!==void 0){let l=this.parameters;for(let c in l)l[c]!==void 0&&(r[c]=l[c]);return r}r.data={attributes:{}};let e=this.index;e!==null&&(r.data.index={type:e.array.constructor.name,array:Array.prototype.slice.call(e.array)});let i=this.attributes;for(let l in i){let c=i[l];r.data.attributes[l]=c.toJSON(r.data)}let n={},s=!1;for(let l in this.morphAttributes){let c=this.morphAttributes[l],u=[];for(let h=0,p=c.length;h<p;h++){let d=c[h];u.push(d.toJSON(r.data))}u.length>0&&(n[l]=u,s=!0)}s&&(r.data.morphAttributes=n,r.data.morphTargetsRelative=this.morphTargetsRelative);let a=this.groups;a.length>0&&(r.data.groups=JSON.parse(JSON.stringify(a)));let o=this.boundingSphere;return o!==null&&(r.data.boundingSphere={center:o.center.toArray(),radius:o.radius}),r}clone(){return new this.constructor().copy(this)}copy(r){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;let e={};this.name=r.name;let i=r.index;i!==null&&this.setIndex(i.clone(e));let n=r.attributes;for(let c in n){let u=n[c];this.setAttribute(c,u.clone(e))}let s=r.morphAttributes;for(let c in s){let u=[],h=s[c];for(let p=0,d=h.length;p<d;p++)u.push(h[p].clone(e));this.morphAttributes[c]=u}this.morphTargetsRelative=r.morphTargetsRelative;let a=r.groups;for(let c=0,u=a.length;c<u;c++){let h=a[c];this.addGroup(h.start,h.count,h.materialIndex)}let o=r.boundingBox;o!==null&&(this.boundingBox=o.clone());let l=r.boundingSphere;return l!==null&&(this.boundingSphere=l.clone()),this.drawRange.start=r.drawRange.start,this.drawRange.count=r.drawRange.count,this.userData=r.userData,r.parameters!==void 0&&(this.parameters=Object.assign({},r.parameters)),this}dispose(){this.dispatchEvent({type:"dispose"})}},uce=new Ue,py=new Vo,cH=new zi,Hb=new A,Ub=new A,Bb=new A,uH=new A,NM=new A,LM=new le,FM=new le,HM=new le,hH=new A,UM=new A,Je=class extends pr{constructor(r=new it,e=new or){super(),this.isMesh=!0,this.type="Mesh",this.geometry=r,this.material=e,this.updateMorphTargets()}copy(r,e){return super.copy(r,e),r.morphTargetInfluences!==void 0&&(this.morphTargetInfluences=r.morphTargetInfluences.slice()),r.morphTargetDictionary!==void 0&&(this.morphTargetDictionary=Object.assign({},r.morphTargetDictionary)),this.material=r.material,this.geometry=r.geometry,this}updateMorphTargets(){let e=this.geometry.morphAttributes,i=Object.keys(e);if(i.length>0){let n=e[i[0]];if(n!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,a=n.length;s<a;s++){let o=n[s].name||String(s);this.morphTargetInfluences.push(0),this.morphTargetDictionary[o]=s}}}}getVertexPosition(r,e){let i=this.geometry,n=i.attributes.position,s=i.morphAttributes.position,a=i.morphTargetsRelative;e.fromBufferAttribute(n,r);let o=this.morphTargetInfluences;if(s&&o){NM.set(0,0,0);for(let l=0,c=s.length;l<c;l++){let u=o[l],h=s[l];u!==0&&(uH.fromBufferAttribute(h,r),a?NM.addScaledVector(uH,u):NM.addScaledVector(uH.sub(e),u))}e.add(NM)}return this.isSkinnedMesh&&this.boneTransform(r,e),e}raycast(r,e){let i=this.geometry,n=this.material,s=this.matrixWorld;if(n===void 0||(i.boundingSphere===null&&i.computeBoundingSphere(),cH.copy(i.boundingSphere),cH.applyMatrix4(s),r.ray.intersectsSphere(cH)===!1)||(uce.copy(s).invert(),py.copy(r.ray).applyMatrix4(uce),i.boundingBox!==null&&py.intersectsBox(i.boundingBox)===!1))return;let a,o=i.index,l=i.attributes.position,c=i.attributes.uv,u=i.attributes.uv2,h=i.groups,p=i.drawRange;if(o!==null)if(Array.isArray(n))for(let d=0,f=h.length;d<f;d++){let m=h[d],g=n[m.materialIndex],y=Math.max(m.start,p.start),E=Math.min(o.count,Math.min(m.start+m.count,p.start+p.count));for(let b=y,x=E;b<x;b+=3){let S=o.getX(b),D=o.getX(b+1),P=o.getX(b+2);a=BM(this,g,r,py,c,u,S,D,P),a&&(a.faceIndex=Math.floor(b/3),a.face.materialIndex=m.materialIndex,e.push(a))}}else{let d=Math.max(0,p.start),f=Math.min(o.count,p.start+p.count);for(let m=d,g=f;m<g;m+=3){let y=o.getX(m),E=o.getX(m+1),b=o.getX(m+2);a=BM(this,n,r,py,c,u,y,E,b),a&&(a.faceIndex=Math.floor(m/3),e.push(a))}}else if(l!==void 0)if(Array.isArray(n))for(let d=0,f=h.length;d<f;d++){let m=h[d],g=n[m.materialIndex],y=Math.max(m.start,p.start),E=Math.min(l.count,Math.min(m.start+m.count,p.start+p.count));for(let b=y,x=E;b<x;b+=3){let S=b,D=b+1,P=b+2;a=BM(this,g,r,py,c,u,S,D,P),a&&(a.faceIndex=Math.floor(b/3),a.face.materialIndex=m.materialIndex,e.push(a))}}else{let d=Math.max(0,p.start),f=Math.min(l.count,p.start+p.count);for(let m=d,g=f;m<g;m+=3){let y=m,E=m+1,b=m+2;a=BM(this,n,r,py,c,u,y,E,b),a&&(a.faceIndex=Math.floor(m/3),e.push(a))}}}};function Upt(t,r,e,i,n,s,a,o){let l;if(r.side===Gn?l=i.intersectTriangle(a,s,n,!0,o):l=i.intersectTriangle(n,s,a,r.side===en,o),l===null)return null;UM.copy(o),UM.applyMatrix4(t.matrixWorld);let c=e.ray.origin.distanceTo(UM);return c<e.near||c>e.far?null:{distance:c,point:UM.clone(),object:t}}function BM(t,r,e,i,n,s,a,o,l){t.getVertexPosition(a,Hb),t.getVertexPosition(o,Ub),t.getVertexPosition(l,Bb);let c=Upt(t,r,e,i,Hb,Ub,Bb,hH);if(c){n&&(LM.fromBufferAttribute(n,a),FM.fromBufferAttribute(n,o),HM.fromBufferAttribute(n,l),c.uv=un.getUV(hH,Hb,Ub,Bb,LM,FM,HM,new le)),s&&(LM.fromBufferAttribute(s,a),FM.fromBufferAttribute(s,o),HM.fromBufferAttribute(s,l),c.uv2=un.getUV(hH,Hb,Ub,Bb,LM,FM,HM,new le));let u={a,b:o,c:l,normal:new A,materialIndex:0};un.getNormal(Hb,Ub,Bb,u.normal),c.face=u}return c}var Qa=class extends it{constructor(r=1,e=1,i=1,n=1,s=1,a=1){super(),this.type="BoxGeometry",this.parameters={width:r,height:e,depth:i,widthSegments:n,heightSegments:s,depthSegments:a};let o=this;n=Math.floor(n),s=Math.floor(s),a=Math.floor(a);let l=[],c=[],u=[],h=[],p=0,d=0;f("z","y","x",-1,-1,i,e,r,a,s,0),f("z","y","x",1,-1,i,e,-r,a,s,1),f("x","z","y",1,1,r,i,e,n,a,2),f("x","z","y",1,-1,r,i,-e,n,a,3),f("x","y","z",1,-1,r,e,i,n,s,4),f("x","y","z",-1,-1,r,e,-i,n,s,5),this.setIndex(l),this.setAttribute("position",new ct(c,3)),this.setAttribute("normal",new ct(u,3)),this.setAttribute("uv",new ct(h,2));function f(m,g,y,E,b,x,S,D,P,_,w){let F=x/P,X=S/_,H=x/2,he=S/2,C=D/2,N=P+1,k=_+1,G=0,U=0,j=new A;for(let ee=0;ee<k;ee++){let ae=ee*X-he;for(let se=0;se<N;se++){let ue=se*F-H;j[m]=ue*E,j[g]=ae*b,j[y]=C,c.push(j.x,j.y,j.z),j[m]=0,j[g]=0,j[y]=D>0?1:-1,u.push(j.x,j.y,j.z),h.push(se/P),h.push(1-ee/_),G+=1}}for(let ee=0;ee<_;ee++)for(let ae=0;ae<P;ae++){let se=p+ae+N*ee,ue=p+ae+N*(ee+1),ve=p+(ae+1)+N*(ee+1),be=p+(ae+1)+N*ee;l.push(se,ue,be),l.push(ue,ve,be),U+=6}o.addGroup(d,U,w),d+=U,p+=G}}static fromJSON(r){return new Qa(r.width,r.height,r.depth,r.widthSegments,r.heightSegments,r.depthSegments)}};function Dy(t){let r={};for(let e in t){r[e]={};for(let i in t[e]){let n=t[e][i];n&&(n.isColor||n.isMatrix3||n.isMatrix4||n.isVector2||n.isVector3||n.isVector4||n.isTexture||n.isQuaternion)?r[e][i]=n.clone():Array.isArray(n)?r[e][i]=n.slice():r[e][i]=n}}return r}function Ia(t){let r={};for(let e=0;e<t.length;e++){let i=Dy(t[e]);for(let n in i)r[n]=i[n]}return r}function Bpt(t){let r=[];for(let e=0;e<t.length;e++)r.push(t[e].clone());return r}function hhe(t){return t.getRenderTarget()===null&&t.outputEncoding===yr?wc:wy}var hn={clone:Dy,merge:Ia},kpt=`void main() {
|
||
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
|
||
}`,Gpt=`void main() {
|
||
gl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );
|
||
}`,Yt=class extends Gr{constructor(r){super(),this.isShaderMaterial=!0,this.type="ShaderMaterial",this.defines={},this.uniforms={},this.uniformsGroups=[],this.vertexShader=kpt,this.fragmentShader=Gpt,this.linewidth=1,this.wireframe=!1,this.wireframeLinewidth=1,this.fog=!1,this.lights=!1,this.clipping=!1,this.extensions={derivatives:!1,fragDepth:!1,drawBuffers:!1,shaderTextureLOD:!1},this.defaultAttributeValues={color:[1,1,1],uv:[0,0],uv2:[0,0]},this.index0AttributeName=void 0,this.uniformsNeedUpdate=!1,this.glslVersion=null,r!==void 0&&this.setValues(r)}copy(r){return super.copy(r),this.fragmentShader=r.fragmentShader,this.vertexShader=r.vertexShader,this.uniforms=Dy(r.uniforms),this.uniformsGroups=Bpt(r.uniformsGroups),this.defines=Object.assign({},r.defines),this.wireframe=r.wireframe,this.wireframeLinewidth=r.wireframeLinewidth,this.fog=r.fog,this.lights=r.lights,this.clipping=r.clipping,this.extensions=Object.assign({},r.extensions),this.glslVersion=r.glslVersion,this}toJSON(r){let e=super.toJSON(r);e.glslVersion=this.glslVersion,e.uniforms={};for(let n in this.uniforms){let a=this.uniforms[n].value;a&&a.isTexture?e.uniforms[n]={type:"t",value:a.toJSON(r).uuid}:a&&a.isColor?e.uniforms[n]={type:"c",value:a.getHex()}:a&&a.isVector2?e.uniforms[n]={type:"v2",value:a.toArray()}:a&&a.isVector3?e.uniforms[n]={type:"v3",value:a.toArray()}:a&&a.isVector4?e.uniforms[n]={type:"v4",value:a.toArray()}:a&&a.isMatrix3?e.uniforms[n]={type:"m3",value:a.toArray()}:a&&a.isMatrix4?e.uniforms[n]={type:"m4",value:a.toArray()}:e.uniforms[n]={value:a}}Object.keys(this.defines).length>0&&(e.defines=this.defines),e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader;let i={};for(let n in this.extensions)this.extensions[n]===!0&&(i[n]=!0);return Object.keys(i).length>0&&(e.extensions=i),e}},vg=class extends pr{constructor(){super(),this.isCamera=!0,this.type="Camera",this.matrixWorldInverse=new Ue,this.projectionMatrix=new Ue,this.projectionMatrixInverse=new Ue}copy(r,e){return super.copy(r,e),this.matrixWorldInverse.copy(r.matrixWorldInverse),this.projectionMatrix.copy(r.projectionMatrix),this.projectionMatrixInverse.copy(r.projectionMatrixInverse),this}getWorldDirection(r){this.updateWorldMatrix(!0,!1);let e=this.matrixWorld.elements;return r.set(-e[8],-e[9],-e[10]).normalize()}updateMatrixWorld(r){super.updateMatrixWorld(r),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(r,e){super.updateWorldMatrix(r,e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return new this.constructor().copy(this)}},qr=class extends vg{constructor(r=50,e=1,i=.1,n=2e3){super(),this.isPerspectiveCamera=!0,this.type="PerspectiveCamera",this.fov=r,this.zoom=1,this.near=i,this.far=n,this.focus=10,this.aspect=e,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(r,e){return super.copy(r,e),this.fov=r.fov,this.zoom=r.zoom,this.near=r.near,this.far=r.far,this.focus=r.focus,this.aspect=r.aspect,this.view=r.view===null?null:Object.assign({},r.view),this.filmGauge=r.filmGauge,this.filmOffset=r.filmOffset,this}setFocalLength(r){let e=.5*this.getFilmHeight()/r;this.fov=Qb*2*Math.atan(e),this.updateProjectionMatrix()}getFocalLength(){let r=Math.tan(dg*.5*this.fov);return .5*this.getFilmHeight()/r}getEffectiveFOV(){return Qb*2*Math.atan(Math.tan(dg*.5*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}setViewOffset(r,e,i,n,s,a){this.aspect=r/e,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=r,this.view.fullHeight=e,this.view.offsetX=i,this.view.offsetY=n,this.view.width=s,this.view.height=a,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){let r=this.near,e=r*Math.tan(dg*.5*this.fov)/this.zoom,i=2*e,n=this.aspect*i,s=-.5*n,a=this.view;if(this.view!==null&&this.view.enabled){let l=a.fullWidth,c=a.fullHeight;s+=a.offsetX*n/l,e-=a.offsetY*i/c,n*=a.width/l,i*=a.height/c}let o=this.filmOffset;o!==0&&(s+=r*o/this.getFilmWidth()),this.projectionMatrix.makePerspective(s,s+n,e,e-i,r,this.far),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(r){let e=super.toJSON(r);return e.object.fov=this.fov,e.object.zoom=this.zoom,e.object.near=this.near,e.object.far=this.far,e.object.focus=this.focus,e.object.aspect=this.aspect,this.view!==null&&(e.object.view=Object.assign({},this.view)),e.object.filmGauge=this.filmGauge,e.object.filmOffset=this.filmOffset,e}},dy=-90,fy=1,bD=class extends pr{constructor(r,e,i){super(),this.type="CubeCamera",this.renderTarget=i;let n=new qr(dy,fy,r,e);n.layers=this.layers,n.up.set(0,1,0),n.lookAt(1,0,0),this.add(n);let s=new qr(dy,fy,r,e);s.layers=this.layers,s.up.set(0,1,0),s.lookAt(-1,0,0),this.add(s);let a=new qr(dy,fy,r,e);a.layers=this.layers,a.up.set(0,0,-1),a.lookAt(0,1,0),this.add(a);let o=new qr(dy,fy,r,e);o.layers=this.layers,o.up.set(0,0,1),o.lookAt(0,-1,0),this.add(o);let l=new qr(dy,fy,r,e);l.layers=this.layers,l.up.set(0,1,0),l.lookAt(0,0,1),this.add(l);let c=new qr(dy,fy,r,e);c.layers=this.layers,c.up.set(0,1,0),c.lookAt(0,0,-1),this.add(c)}update(r,e){this.parent===null&&this.updateMatrixWorld();let i=this.renderTarget,[n,s,a,o,l,c]=this.children,u=r.getRenderTarget(),h=r.toneMapping,p=r.xr.enabled;r.toneMapping=Lu,r.xr.enabled=!1;let d=i.texture.generateMipmaps;i.texture.generateMipmaps=!1,r.setRenderTarget(i,0),r.render(e,n),r.setRenderTarget(i,1),r.render(e,s),r.setRenderTarget(i,2),r.render(e,a),r.setRenderTarget(i,3),r.render(e,o),r.setRenderTarget(i,4),r.render(e,l),i.texture.generateMipmaps=d,r.setRenderTarget(i,5),r.render(e,c),r.setRenderTarget(u),r.toneMapping=h,r.xr.enabled=p,i.texture.needsPMREMUpdate=!0}},yg=class extends Hi{constructor(r,e,i,n,s,a,o,l,c,u){r=r!==void 0?r:[],e=e!==void 0?e:sf,super(r,e,i,n,s,a,o,l,c,u),this.isCubeTexture=!0,this.flipY=!1}get images(){return this.image}set images(r){this.image=r}},xD=class extends kr{constructor(r=1,e={}){super(r,r,e),this.isWebGLCubeRenderTarget=!0;let i={width:r,height:r,depth:1},n=[i,i,i,i,i,i];this.texture=new yg(n,e.mapping,e.wrapS,e.wrapT,e.magFilter,e.minFilter,e.format,e.type,e.anisotropy,e.encoding),this.texture.isRenderTargetTexture=!0,this.texture.generateMipmaps=e.generateMipmaps!==void 0?e.generateMipmaps:!1,this.texture.minFilter=e.minFilter!==void 0?e.minFilter:ai}fromEquirectangularTexture(r,e){this.texture.type=e.type,this.texture.encoding=e.encoding,this.texture.generateMipmaps=e.generateMipmaps,this.texture.minFilter=e.minFilter,this.texture.magFilter=e.magFilter;let i={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 );
|
||
|
||
}
|
||
`},n=new Qa(5,5,5),s=new Yt({name:"CubemapFromEquirect",uniforms:Dy(i.uniforms),vertexShader:i.vertexShader,fragmentShader:i.fragmentShader,side:Gn,blending:Fi});s.uniforms.tEquirect.value=e;let a=new Je(n,s),o=e.minFilter;return e.minFilter===wa&&(e.minFilter=ai),new bD(1,10,this).update(r,a),e.minFilter=o,a.geometry.dispose(),a.material.dispose(),this}clear(r,e,i,n){let s=r.getRenderTarget();for(let a=0;a<6;a++)r.setRenderTarget(this,a),r.clear(e,i,n);r.setRenderTarget(s)}},pH=new A,Vpt=new A,zpt=new Qi,Ei=class{constructor(r=new A(1,0,0),e=0){this.isPlane=!0,this.normal=r,this.constant=e}set(r,e){return this.normal.copy(r),this.constant=e,this}setComponents(r,e,i,n){return this.normal.set(r,e,i),this.constant=n,this}setFromNormalAndCoplanarPoint(r,e){return this.normal.copy(r),this.constant=-e.dot(this.normal),this}setFromCoplanarPoints(r,e,i){let n=pH.subVectors(i,e).cross(Vpt.subVectors(r,e)).normalize();return this.setFromNormalAndCoplanarPoint(n,r),this}copy(r){return this.normal.copy(r.normal),this.constant=r.constant,this}normalize(){let r=1/this.normal.length();return this.normal.multiplyScalar(r),this.constant*=r,this}negate(){return this.constant*=-1,this.normal.negate(),this}distanceToPoint(r){return this.normal.dot(r)+this.constant}distanceToSphere(r){return this.distanceToPoint(r.center)-r.radius}projectPoint(r,e){return e.copy(this.normal).multiplyScalar(-this.distanceToPoint(r)).add(r)}intersectLine(r,e){let i=r.delta(pH),n=this.normal.dot(i);if(n===0)return this.distanceToPoint(r.start)===0?e.copy(r.start):null;let s=-(r.start.dot(this.normal)+this.constant)/n;return s<0||s>1?null:e.copy(i).multiplyScalar(s).add(r.start)}intersectsLine(r){let e=this.distanceToPoint(r.start),i=this.distanceToPoint(r.end);return e<0&&i>0||i<0&&e>0}intersectsBox(r){return r.intersectsPlane(this)}intersectsSphere(r){return r.intersectsPlane(this)}coplanarPoint(r){return r.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(r,e){let i=e||zpt.getNormalMatrix(r),n=this.coplanarPoint(pH).applyMatrix4(r),s=this.normal.applyMatrix3(i).normalize();return this.constant=-n.dot(s),this}translate(r){return this.constant-=r.dot(this.normal),this}equals(r){return r.normal.equals(this.normal)&&r.constant===this.constant}clone(){return new this.constructor().copy(this)}},my=new zi,kM=new A,eo=class{constructor(r=new Ei,e=new Ei,i=new Ei,n=new Ei,s=new Ei,a=new Ei){this.planes=[r,e,i,n,s,a]}set(r,e,i,n,s,a){let o=this.planes;return o[0].copy(r),o[1].copy(e),o[2].copy(i),o[3].copy(n),o[4].copy(s),o[5].copy(a),this}copy(r){let e=this.planes;for(let i=0;i<6;i++)e[i].copy(r.planes[i]);return this}setFromProjectionMatrix(r){let e=this.planes,i=r.elements,n=i[0],s=i[1],a=i[2],o=i[3],l=i[4],c=i[5],u=i[6],h=i[7],p=i[8],d=i[9],f=i[10],m=i[11],g=i[12],y=i[13],E=i[14],b=i[15];return e[0].setComponents(o-n,h-l,m-p,b-g).normalize(),e[1].setComponents(o+n,h+l,m+p,b+g).normalize(),e[2].setComponents(o+s,h+c,m+d,b+y).normalize(),e[3].setComponents(o-s,h-c,m-d,b-y).normalize(),e[4].setComponents(o-a,h-u,m-f,b-E).normalize(),e[5].setComponents(o+a,h+u,m+f,b+E).normalize(),this}intersectsObject(r){let e=r.geometry;return e.boundingSphere===null&&e.computeBoundingSphere(),my.copy(e.boundingSphere).applyMatrix4(r.matrixWorld),this.intersectsSphere(my)}intersectsSprite(r){return my.center.set(0,0,0),my.radius=.7071067811865476,my.applyMatrix4(r.matrixWorld),this.intersectsSphere(my)}intersectsSphere(r){let e=this.planes,i=r.center,n=-r.radius;for(let s=0;s<6;s++)if(e[s].distanceToPoint(i)<n)return!1;return!0}intersectsBox(r){let e=this.planes;for(let i=0;i<6;i++){let n=e[i];if(kM.x=n.normal.x>0?r.max.x:r.min.x,kM.y=n.normal.y>0?r.max.y:r.min.y,kM.z=n.normal.z>0?r.max.z:r.min.z,n.distanceToPoint(kM)<0)return!1}return!0}containsPoint(r){let e=this.planes;for(let i=0;i<6;i++)if(e[i].distanceToPoint(r)<0)return!1;return!0}clone(){return new this.constructor().copy(this)}};function phe(){let t=null,r=!1,e=null,i=null;function n(s,a){e(s,a),i=t.requestAnimationFrame(n)}return{start:function(){r!==!0&&e!==null&&(i=t.requestAnimationFrame(n),r=!0)},stop:function(){t.cancelAnimationFrame(i),r=!1},setAnimationLoop:function(s){e=s},setContext:function(s){t=s}}}function jpt(t,r){let e=r.isWebGL2,i=new WeakMap;function n(c,u){let h=c.array,p=c.usage,d=t.createBuffer();t.bindBuffer(u,d),t.bufferData(u,h,p),c.onUploadCallback();let f;if(h instanceof Float32Array)f=5126;else if(h instanceof Uint16Array)if(c.isFloat16BufferAttribute)if(e)f=5131;else throw new Error("THREE.WebGLAttributes: Usage of Float16BufferAttribute requires WebGL2.");else f=5123;else if(h instanceof Int16Array)f=5122;else if(h instanceof Uint32Array)f=5125;else if(h instanceof Int32Array)f=5124;else if(h instanceof Int8Array)f=5120;else if(h instanceof Uint8Array)f=5121;else if(h instanceof Uint8ClampedArray)f=5121;else throw new Error("THREE.WebGLAttributes: Unsupported buffer data format: "+h);return{buffer:d,type:f,bytesPerElement:h.BYTES_PER_ELEMENT,version:c.version}}function s(c,u,h){let p=u.array,d=u.updateRange;t.bindBuffer(h,c),d.count===-1?t.bufferSubData(h,0,p):(e?t.bufferSubData(h,d.offset*p.BYTES_PER_ELEMENT,p,d.offset,d.count):t.bufferSubData(h,d.offset*p.BYTES_PER_ELEMENT,p.subarray(d.offset,d.offset+d.count)),d.count=-1),u.onUploadCallback()}function a(c){return c.isInterleavedBufferAttribute&&(c=c.data),i.get(c)}function o(c){c.isInterleavedBufferAttribute&&(c=c.data);let u=i.get(c);u&&(t.deleteBuffer(u.buffer),i.delete(c))}function l(c,u){if(c.isGLBufferAttribute){let p=i.get(c);(!p||p.version<c.version)&&i.set(c,{buffer:c.buffer,type:c.type,bytesPerElement:c.elementSize,version:c.version});return}c.isInterleavedBufferAttribute&&(c=c.data);let h=i.get(c);h===void 0?i.set(c,n(c,u)):h.version<c.version&&(s(h.buffer,c,u),h.version=c.version)}return{get:a,remove:o,update:l}}var ts=class extends it{constructor(r=1,e=1,i=1,n=1){super(),this.type="PlaneGeometry",this.parameters={width:r,height:e,widthSegments:i,heightSegments:n};let s=r/2,a=e/2,o=Math.floor(i),l=Math.floor(n),c=o+1,u=l+1,h=r/o,p=e/l,d=[],f=[],m=[],g=[];for(let y=0;y<u;y++){let E=y*p-a;for(let b=0;b<c;b++){let x=b*h-s;f.push(x,-E,0),m.push(0,0,1),g.push(b/o),g.push(1-y/l)}}for(let y=0;y<l;y++)for(let E=0;E<o;E++){let b=E+c*y,x=E+c*(y+1),S=E+1+c*(y+1),D=E+1+c*y;d.push(b,x,D),d.push(x,S,D)}this.setIndex(d),this.setAttribute("position",new ct(f,3)),this.setAttribute("normal",new ct(m,3)),this.setAttribute("uv",new ct(g,2))}static fromJSON(r){return new ts(r.width,r.height,r.widthSegments,r.heightSegments)}},Wpt=`#ifdef USE_ALPHAMAP
|
||
diffuseColor.a *= texture2D( alphaMap, vUv ).g;
|
||
#endif`,qpt=`#ifdef USE_ALPHAMAP
|
||
uniform sampler2D alphaMap;
|
||
#endif`,Ypt=`#ifdef USE_ALPHATEST
|
||
if ( diffuseColor.a < alphaTest ) discard;
|
||
#endif`,Xpt=`#ifdef USE_ALPHATEST
|
||
uniform float alphaTest;
|
||
#endif`,$pt=`#ifdef USE_AOMAP
|
||
float ambientOcclusion = ( texture2D( aoMap, vUv2 ).r - 1.0 ) * aoMapIntensity + 1.0;
|
||
reflectedLight.indirectDiffuse *= ambientOcclusion;
|
||
#if defined( USE_ENVMAP ) && defined( STANDARD )
|
||
float dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );
|
||
reflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.roughness );
|
||
#endif
|
||
#endif`,Zpt=`#ifdef USE_AOMAP
|
||
uniform sampler2D aoMap;
|
||
uniform float aoMapIntensity;
|
||
#endif`,Kpt="vec3 transformed = vec3( position );",Jpt=`vec3 objectNormal = vec3( normal );
|
||
#ifdef USE_TANGENT
|
||
vec3 objectTangent = vec3( tangent.xyz );
|
||
#endif`,Qpt=`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 );
|
||
}
|
||
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 );
|
||
}
|
||
vec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 f0, const in float f90, const in float 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 );
|
||
float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );
|
||
float D = D_GGX( alpha, dotNH );
|
||
return F * ( V * D );
|
||
}
|
||
#ifdef USE_IRIDESCENCE
|
||
vec3 BRDF_GGX_Iridescence( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 f0, const in float f90, const in float iridescence, const in vec3 iridescenceFresnel, const in float 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 = mix( F_Schlick( f0, f90, dotVH ), iridescenceFresnel, iridescence );
|
||
float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );
|
||
float D = D_GGX( alpha, dotNH );
|
||
return F * ( V * D );
|
||
}
|
||
#endif
|
||
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 );
|
||
}
|
||
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 );
|
||
}
|
||
#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`,edt=`#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 R21 = R12;
|
||
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`,tdt=`#ifdef USE_BUMPMAP
|
||
uniform sampler2D bumpMap;
|
||
uniform float bumpScale;
|
||
vec2 dHdxy_fwd() {
|
||
vec2 dSTdx = dFdx( vUv );
|
||
vec2 dSTdy = dFdy( vUv );
|
||
float Hll = bumpScale * texture2D( bumpMap, vUv ).x;
|
||
float dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;
|
||
float dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;
|
||
return vec2( dBx, dBy );
|
||
}
|
||
vec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) {
|
||
vec3 vSigmaX = dFdx( surf_pos.xyz );
|
||
vec3 vSigmaY = 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`,rdt=`#if NUM_CLIPPING_PLANES > 0
|
||
vec4 plane;
|
||
#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`,idt=`#if NUM_CLIPPING_PLANES > 0
|
||
varying vec3 vClipPosition;
|
||
uniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];
|
||
#endif`,ndt=`#if NUM_CLIPPING_PLANES > 0
|
||
varying vec3 vClipPosition;
|
||
#endif`,sdt=`#if NUM_CLIPPING_PLANES > 0
|
||
vClipPosition = - mvPosition.xyz;
|
||
#endif`,adt=`#if defined( USE_COLOR_ALPHA )
|
||
diffuseColor *= vColor;
|
||
#elif defined( USE_COLOR )
|
||
diffuseColor.rgb *= vColor;
|
||
#endif`,odt=`#if defined( USE_COLOR_ALPHA )
|
||
varying vec4 vColor;
|
||
#elif defined( USE_COLOR )
|
||
varying vec3 vColor;
|
||
#endif`,ldt=`#if defined( USE_COLOR_ALPHA )
|
||
varying vec4 vColor;
|
||
#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )
|
||
varying vec3 vColor;
|
||
#endif`,cdt=`#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`,udt=`#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;
|
||
};
|
||
struct GeometricContext {
|
||
vec3 position;
|
||
vec3 normal;
|
||
vec3 viewDir;
|
||
#ifdef USE_CLEARCOAT
|
||
vec3 clearcoatNormal;
|
||
#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 );
|
||
}`,hdt=`#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_v0 0.339
|
||
#define cubeUV_m0 - 2.0
|
||
#define cubeUV_r1 0.8
|
||
#define cubeUV_v1 0.276
|
||
#define cubeUV_m1 - 1.0
|
||
#define cubeUV_r4 0.4
|
||
#define cubeUV_v4 0.046
|
||
#define cubeUV_m4 2.0
|
||
#define cubeUV_r5 0.305
|
||
#define cubeUV_v5 0.016
|
||
#define cubeUV_m5 3.0
|
||
#define cubeUV_r6 0.21
|
||
#define cubeUV_v6 0.0038
|
||
#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`,pdt=`vec3 transformedNormal = objectNormal;
|
||
#ifdef USE_INSTANCING
|
||
mat3 m = mat3( instanceMatrix );
|
||
transformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) );
|
||
transformedNormal = m * transformedNormal;
|
||
#endif
|
||
transformedNormal = normalMatrix * transformedNormal;
|
||
#ifdef FLIP_SIDED
|
||
transformedNormal = - transformedNormal;
|
||
#endif
|
||
#ifdef USE_TANGENT
|
||
vec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz;
|
||
#ifdef FLIP_SIDED
|
||
transformedTangent = - transformedTangent;
|
||
#endif
|
||
#endif`,ddt=`#ifdef USE_DISPLACEMENTMAP
|
||
uniform sampler2D displacementMap;
|
||
uniform float displacementScale;
|
||
uniform float displacementBias;
|
||
#endif`,fdt=`#ifdef USE_DISPLACEMENTMAP
|
||
transformed += normalize( objectNormal ) * ( texture2D( displacementMap, vUv ).x * displacementScale + displacementBias );
|
||
#endif`,mdt=`#ifdef USE_EMISSIVEMAP
|
||
vec4 emissiveColor = texture2D( emissiveMap, vUv );
|
||
totalEmissiveRadiance *= emissiveColor.rgb;
|
||
#endif`,gdt=`#ifdef USE_EMISSIVEMAP
|
||
uniform sampler2D emissiveMap;
|
||
#endif`,vdt="gl_FragColor = linearToOutputTexel( gl_FragColor );",ydt=`vec4 LinearToLinear( in vec4 value ) {
|
||
return value;
|
||
}
|
||
vec4 LinearTosRGB( in vec4 value ) {
|
||
return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );
|
||
}`,Tdt=`#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, 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`,Edt=`#ifdef USE_ENVMAP
|
||
uniform float envMapIntensity;
|
||
uniform float flipEnvMap;
|
||
#ifdef ENVMAP_TYPE_CUBE
|
||
uniform samplerCube envMap;
|
||
#else
|
||
uniform sampler2D envMap;
|
||
#endif
|
||
|
||
#endif`,bdt=`#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`,xdt=`#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`,Idt=`#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`,Sdt=`#ifdef USE_FOG
|
||
vFogDepth = - mvPosition.z;
|
||
#endif`,_dt=`#ifdef USE_FOG
|
||
varying float vFogDepth;
|
||
#endif`,wdt=`#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`,Rdt=`#ifdef USE_FOG
|
||
uniform vec3 fogColor;
|
||
varying float vFogDepth;
|
||
#ifdef FOG_EXP2
|
||
uniform float fogDensity;
|
||
#else
|
||
uniform float fogNear;
|
||
uniform float fogFar;
|
||
#endif
|
||
#endif`,Mdt=`#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
|
||
}`,Ddt=`#ifdef USE_LIGHTMAP
|
||
vec4 lightMapTexel = texture2D( lightMap, vUv2 );
|
||
vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;
|
||
reflectedLight.indirectDiffuse += lightMapIrradiance;
|
||
#endif`,Cdt=`#ifdef USE_LIGHTMAP
|
||
uniform sampler2D lightMap;
|
||
uniform float lightMapIntensity;
|
||
#endif`,Adt=`LambertMaterial material;
|
||
material.diffuseColor = diffuseColor.rgb;
|
||
material.specularStrength = specularStrength;`,Odt=`varying vec3 vViewPosition;
|
||
struct LambertMaterial {
|
||
vec3 diffuseColor;
|
||
float specularStrength;
|
||
};
|
||
void RE_Direct_Lambert( const in IncidentLight directLight, const in GeometricContext geometry, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {
|
||
float dotNL = saturate( dot( geometry.normal, directLight.direction ) );
|
||
vec3 irradiance = dotNL * directLight.color;
|
||
reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
|
||
}
|
||
void RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in GeometricContext geometry, 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`,Pdt=`uniform bool receiveShadow;
|
||
uniform vec3 ambientLightColor;
|
||
uniform vec3 lightProbe[ 9 ];
|
||
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 ( PHYSICALLY_CORRECT_LIGHTS )
|
||
float distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );
|
||
if ( cutoffDistance > 0.0 ) {
|
||
distanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );
|
||
}
|
||
return distanceFalloff;
|
||
#else
|
||
if ( cutoffDistance > 0.0 && decayExponent > 0.0 ) {
|
||
return pow( saturate( - lightDistance / cutoffDistance + 1.0 ), decayExponent );
|
||
}
|
||
return 1.0;
|
||
#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, const in GeometricContext geometry, 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 GeometricContext geometry, out IncidentLight light ) {
|
||
vec3 lVector = pointLight.position - geometry.position;
|
||
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 GeometricContext geometry, out IncidentLight light ) {
|
||
vec3 lVector = spotLight.position - geometry.position;
|
||
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`,Ndt=`#if defined( USE_ENVMAP )
|
||
vec3 getIBLIrradiance( const in vec3 normal ) {
|
||
#if defined( ENVMAP_TYPE_CUBE_UV )
|
||
vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );
|
||
vec4 envMapColor = textureCubeUV( envMap, 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 ) {
|
||
#if defined( ENVMAP_TYPE_CUBE_UV )
|
||
vec3 reflectVec = reflect( - viewDir, normal );
|
||
reflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );
|
||
reflectVec = inverseTransformDirection( reflectVec, viewMatrix );
|
||
vec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );
|
||
return envMapColor.rgb * envMapIntensity;
|
||
#else
|
||
return vec3( 0.0 );
|
||
#endif
|
||
}
|
||
#endif`,Ldt=`ToonMaterial material;
|
||
material.diffuseColor = diffuseColor.rgb;`,Fdt=`varying vec3 vViewPosition;
|
||
struct ToonMaterial {
|
||
vec3 diffuseColor;
|
||
};
|
||
void RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {
|
||
vec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;
|
||
reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
|
||
}
|
||
void RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, 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`,Hdt=`BlinnPhongMaterial material;
|
||
material.diffuseColor = diffuseColor.rgb;
|
||
material.specularColor = specular;
|
||
material.specularShininess = shininess;
|
||
material.specularStrength = specularStrength;`,Udt=`varying vec3 vViewPosition;
|
||
struct BlinnPhongMaterial {
|
||
vec3 diffuseColor;
|
||
vec3 specularColor;
|
||
float specularShininess;
|
||
float specularStrength;
|
||
};
|
||
void RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {
|
||
float dotNL = saturate( dot( geometry.normal, directLight.direction ) );
|
||
vec3 irradiance = dotNL * directLight.color;
|
||
reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
|
||
reflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularShininess ) * material.specularStrength;
|
||
}
|
||
void RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, 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`,Bdt=`PhysicalMaterial material;
|
||
material.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );
|
||
vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );
|
||
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 SPECULAR
|
||
float specularIntensityFactor = specularIntensity;
|
||
vec3 specularColorFactor = specularColor;
|
||
#ifdef USE_SPECULARINTENSITYMAP
|
||
specularIntensityFactor *= texture2D( specularIntensityMap, vUv ).a;
|
||
#endif
|
||
#ifdef USE_SPECULARCOLORMAP
|
||
specularColorFactor *= texture2D( specularColorMap, vUv ).rgb;
|
||
#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, vUv ).x;
|
||
#endif
|
||
#ifdef USE_CLEARCOAT_ROUGHNESSMAP
|
||
material.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vUv ).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_IRIDESCENCE
|
||
material.iridescence = iridescence;
|
||
material.iridescenceIOR = iridescenceIOR;
|
||
#ifdef USE_IRIDESCENCEMAP
|
||
material.iridescence *= texture2D( iridescenceMap, vUv ).r;
|
||
#endif
|
||
#ifdef USE_IRIDESCENCE_THICKNESSMAP
|
||
material.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vUv ).g + iridescenceThicknessMinimum;
|
||
#else
|
||
material.iridescenceThickness = iridescenceThicknessMaximum;
|
||
#endif
|
||
#endif
|
||
#ifdef USE_SHEEN
|
||
material.sheenColor = sheenColor;
|
||
#ifdef USE_SHEENCOLORMAP
|
||
material.sheenColor *= texture2D( sheenColorMap, vUv ).rgb;
|
||
#endif
|
||
material.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 );
|
||
#ifdef USE_SHEENROUGHNESSMAP
|
||
material.sheenRoughness *= texture2D( sheenRoughnessMap, vUv ).a;
|
||
#endif
|
||
#endif`,kdt=`struct PhysicalMaterial {
|
||
vec3 diffuseColor;
|
||
float roughness;
|
||
vec3 specularColor;
|
||
float specularF90;
|
||
#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
|
||
};
|
||
vec3 clearcoatSpecular = vec3( 0.0 );
|
||
vec3 sheenSpecular = vec3( 0.0 );
|
||
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 GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {
|
||
vec3 normal = geometry.normal;
|
||
vec3 viewDir = geometry.viewDir;
|
||
vec3 position = geometry.position;
|
||
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 GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {
|
||
float dotNL = saturate( dot( geometry.normal, directLight.direction ) );
|
||
vec3 irradiance = dotNL * directLight.color;
|
||
#ifdef USE_CLEARCOAT
|
||
float dotNLcc = saturate( dot( geometry.clearcoatNormal, directLight.direction ) );
|
||
vec3 ccIrradiance = dotNLcc * directLight.color;
|
||
clearcoatSpecular += ccIrradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.clearcoatNormal, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );
|
||
#endif
|
||
#ifdef USE_SHEEN
|
||
sheenSpecular += irradiance * BRDF_Sheen( directLight.direction, geometry.viewDir, geometry.normal, material.sheenColor, material.sheenRoughness );
|
||
#endif
|
||
#ifdef USE_IRIDESCENCE
|
||
reflectedLight.directSpecular += irradiance * BRDF_GGX_Iridescence( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness );
|
||
#else
|
||
reflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularF90, material.roughness );
|
||
#endif
|
||
reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
|
||
}
|
||
void RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, 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 GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {
|
||
#ifdef USE_CLEARCOAT
|
||
clearcoatSpecular += clearcoatRadiance * EnvironmentBRDF( geometry.clearcoatNormal, geometry.viewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );
|
||
#endif
|
||
#ifdef USE_SHEEN
|
||
sheenSpecular += irradiance * material.sheenColor * IBLSheenBRDF( geometry.normal, geometry.viewDir, material.sheenRoughness );
|
||
#endif
|
||
vec3 singleScattering = vec3( 0.0 );
|
||
vec3 multiScattering = vec3( 0.0 );
|
||
vec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;
|
||
#ifdef USE_IRIDESCENCE
|
||
computeMultiscatteringIridescence( geometry.normal, geometry.viewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness, singleScattering, multiScattering );
|
||
#else
|
||
computeMultiscattering( geometry.normal, geometry.viewDir, 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 );
|
||
}`,Gdt=`
|
||
GeometricContext geometry;
|
||
geometry.position = - vViewPosition;
|
||
geometry.normal = normal;
|
||
geometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );
|
||
#ifdef USE_CLEARCOAT
|
||
geometry.clearcoatNormal = clearcoatNormal;
|
||
#endif
|
||
#ifdef USE_IRIDESCENCE
|
||
float dotNVi = saturate( dot( normal, geometry.viewDir ) );
|
||
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, geometry, 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, geometry, 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, geometry, 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, geometry, 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, geometry, 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, geometry, 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, geometry, material, reflectedLight );
|
||
}
|
||
#pragma unroll_loop_end
|
||
#endif
|
||
#if defined( RE_IndirectDiffuse )
|
||
vec3 iblIrradiance = vec3( 0.0 );
|
||
vec3 irradiance = getAmbientLightIrradiance( ambientLightColor );
|
||
irradiance += getLightProbeIrradiance( lightProbe, geometry.normal );
|
||
#if ( NUM_HEMI_LIGHTS > 0 )
|
||
#pragma unroll_loop_start
|
||
for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {
|
||
irradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal );
|
||
}
|
||
#pragma unroll_loop_end
|
||
#endif
|
||
#endif
|
||
#if defined( RE_IndirectSpecular )
|
||
vec3 radiance = vec3( 0.0 );
|
||
vec3 clearcoatRadiance = vec3( 0.0 );
|
||
#endif`,Vdt=`#if defined( RE_IndirectDiffuse )
|
||
#ifdef USE_LIGHTMAP
|
||
vec4 lightMapTexel = texture2D( lightMap, vUv2 );
|
||
vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;
|
||
irradiance += lightMapIrradiance;
|
||
#endif
|
||
#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )
|
||
iblIrradiance += getIBLIrradiance( geometry.normal );
|
||
#endif
|
||
#endif
|
||
#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )
|
||
radiance += getIBLRadiance( geometry.viewDir, geometry.normal, material.roughness );
|
||
#ifdef USE_CLEARCOAT
|
||
clearcoatRadiance += getIBLRadiance( geometry.viewDir, geometry.clearcoatNormal, material.clearcoatRoughness );
|
||
#endif
|
||
#endif`,zdt=`#if defined( RE_IndirectDiffuse )
|
||
RE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );
|
||
#endif
|
||
#if defined( RE_IndirectSpecular )
|
||
RE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometry, material, reflectedLight );
|
||
#endif`,jdt=`#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )
|
||
gl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;
|
||
#endif`,Wdt=`#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )
|
||
uniform float logDepthBufFC;
|
||
varying float vFragDepth;
|
||
varying float vIsPerspective;
|
||
#endif`,qdt=`#ifdef USE_LOGDEPTHBUF
|
||
#ifdef USE_LOGDEPTHBUF_EXT
|
||
varying float vFragDepth;
|
||
varying float vIsPerspective;
|
||
#else
|
||
uniform float logDepthBufFC;
|
||
#endif
|
||
#endif`,Ydt=`#ifdef USE_LOGDEPTHBUF
|
||
#ifdef USE_LOGDEPTHBUF_EXT
|
||
vFragDepth = 1.0 + gl_Position.w;
|
||
vIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );
|
||
#else
|
||
if ( isPerspectiveMatrix( projectionMatrix ) ) {
|
||
gl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;
|
||
gl_Position.z *= gl_Position.w;
|
||
}
|
||
#endif
|
||
#endif`,Xdt=`#ifdef USE_MAP
|
||
vec4 sampledDiffuseColor = texture2D( map, vUv );
|
||
#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`,$dt=`#ifdef USE_MAP
|
||
uniform sampler2D map;
|
||
#endif`,Zdt=`#if defined( USE_MAP ) || defined( USE_ALPHAMAP )
|
||
vec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;
|
||
#endif
|
||
#ifdef USE_MAP
|
||
diffuseColor *= texture2D( map, uv );
|
||
#endif
|
||
#ifdef USE_ALPHAMAP
|
||
diffuseColor.a *= texture2D( alphaMap, uv ).g;
|
||
#endif`,Kdt=`#if defined( USE_MAP ) || defined( USE_ALPHAMAP )
|
||
uniform mat3 uvTransform;
|
||
#endif
|
||
#ifdef USE_MAP
|
||
uniform sampler2D map;
|
||
#endif
|
||
#ifdef USE_ALPHAMAP
|
||
uniform sampler2D alphaMap;
|
||
#endif`,Jdt=`float metalnessFactor = metalness;
|
||
#ifdef USE_METALNESSMAP
|
||
vec4 texelMetalness = texture2D( metalnessMap, vUv );
|
||
metalnessFactor *= texelMetalness.b;
|
||
#endif`,Qdt=`#ifdef USE_METALNESSMAP
|
||
uniform sampler2D metalnessMap;
|
||
#endif`,eft=`#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`,tft=`#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`,rft=`#ifdef USE_MORPHTARGETS
|
||
uniform float morphTargetBaseInfluence;
|
||
#ifdef MORPHTARGETS_TEXTURE
|
||
uniform float morphTargetInfluences[ MORPHTARGETS_COUNT ];
|
||
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`,ift=`#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`,nft=`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 = normal * faceDirection;
|
||
#endif
|
||
#ifdef USE_TANGENT
|
||
vec3 tangent = normalize( vTangent );
|
||
vec3 bitangent = normalize( vBitangent );
|
||
#ifdef DOUBLE_SIDED
|
||
tangent = tangent * faceDirection;
|
||
bitangent = bitangent * faceDirection;
|
||
#endif
|
||
#if defined( TANGENTSPACE_NORMALMAP ) || defined( USE_CLEARCOAT_NORMALMAP )
|
||
mat3 vTBN = mat3( tangent, bitangent, normal );
|
||
#endif
|
||
#endif
|
||
#endif
|
||
vec3 geometryNormal = normal;`,sft=`#ifdef OBJECTSPACE_NORMALMAP
|
||
normal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;
|
||
#ifdef FLIP_SIDED
|
||
normal = - normal;
|
||
#endif
|
||
#ifdef DOUBLE_SIDED
|
||
normal = normal * faceDirection;
|
||
#endif
|
||
normal = normalize( normalMatrix * normal );
|
||
#elif defined( TANGENTSPACE_NORMALMAP )
|
||
vec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;
|
||
mapN.xy *= normalScale;
|
||
#ifdef USE_TANGENT
|
||
normal = normalize( vTBN * mapN );
|
||
#else
|
||
normal = perturbNormal2Arb( - vViewPosition, normal, mapN, faceDirection );
|
||
#endif
|
||
#elif defined( USE_BUMPMAP )
|
||
normal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection );
|
||
#endif`,aft=`#ifndef FLAT_SHADED
|
||
varying vec3 vNormal;
|
||
#ifdef USE_TANGENT
|
||
varying vec3 vTangent;
|
||
varying vec3 vBitangent;
|
||
#endif
|
||
#endif`,oft=`#ifndef FLAT_SHADED
|
||
varying vec3 vNormal;
|
||
#ifdef USE_TANGENT
|
||
varying vec3 vTangent;
|
||
varying vec3 vBitangent;
|
||
#endif
|
||
#endif`,lft=`#ifndef FLAT_SHADED
|
||
vNormal = normalize( transformedNormal );
|
||
#ifdef USE_TANGENT
|
||
vTangent = normalize( transformedTangent );
|
||
vBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );
|
||
#endif
|
||
#endif`,cft=`#ifdef USE_NORMALMAP
|
||
uniform sampler2D normalMap;
|
||
uniform vec2 normalScale;
|
||
#endif
|
||
#ifdef OBJECTSPACE_NORMALMAP
|
||
uniform mat3 normalMatrix;
|
||
#endif
|
||
#if ! defined ( USE_TANGENT ) && ( defined ( TANGENTSPACE_NORMALMAP ) || defined ( USE_CLEARCOAT_NORMALMAP ) )
|
||
vec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm, vec3 mapN, float faceDirection ) {
|
||
vec3 q0 = dFdx( eye_pos.xyz );
|
||
vec3 q1 = dFdy( eye_pos.xyz );
|
||
vec2 st0 = dFdx( vUv.st );
|
||
vec2 st1 = dFdy( vUv.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 : faceDirection * inversesqrt( det );
|
||
return normalize( T * ( mapN.x * scale ) + B * ( mapN.y * scale ) + N * mapN.z );
|
||
}
|
||
#endif`,uft=`#ifdef USE_CLEARCOAT
|
||
vec3 clearcoatNormal = geometryNormal;
|
||
#endif`,hft=`#ifdef USE_CLEARCOAT_NORMALMAP
|
||
vec3 clearcoatMapN = texture2D( clearcoatNormalMap, vUv ).xyz * 2.0 - 1.0;
|
||
clearcoatMapN.xy *= clearcoatNormalScale;
|
||
#ifdef USE_TANGENT
|
||
clearcoatNormal = normalize( vTBN * clearcoatMapN );
|
||
#else
|
||
clearcoatNormal = perturbNormal2Arb( - vViewPosition, clearcoatNormal, clearcoatMapN, faceDirection );
|
||
#endif
|
||
#endif`,pft=`#ifdef USE_CLEARCOATMAP
|
||
uniform sampler2D clearcoatMap;
|
||
#endif
|
||
#ifdef USE_CLEARCOAT_ROUGHNESSMAP
|
||
uniform sampler2D clearcoatRoughnessMap;
|
||
#endif
|
||
#ifdef USE_CLEARCOAT_NORMALMAP
|
||
uniform sampler2D clearcoatNormalMap;
|
||
uniform vec2 clearcoatNormalScale;
|
||
#endif`,dft=`#ifdef USE_IRIDESCENCEMAP
|
||
uniform sampler2D iridescenceMap;
|
||
#endif
|
||
#ifdef USE_IRIDESCENCE_THICKNESSMAP
|
||
uniform sampler2D iridescenceThicknessMap;
|
||
#endif`,fft=`#ifdef OPAQUE
|
||
diffuseColor.a = 1.0;
|
||
#endif
|
||
#ifdef USE_TRANSMISSION
|
||
diffuseColor.a *= material.transmissionAlpha + 0.1;
|
||
#endif
|
||
gl_FragColor = vec4( outgoingLight, diffuseColor.a );`,mft=`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 linearClipZ, const in float near, const in float far ) {
|
||
return linearClipZ * ( 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 invClipZ, const in float near, const in float far ) {
|
||
return ( near * far ) / ( ( far - near ) * invClipZ - far );
|
||
}`,gft=`#ifdef PREMULTIPLIED_ALPHA
|
||
gl_FragColor.rgb *= gl_FragColor.a;
|
||
#endif`,vft=`vec4 mvPosition = vec4( transformed, 1.0 );
|
||
#ifdef USE_INSTANCING
|
||
mvPosition = instanceMatrix * mvPosition;
|
||
#endif
|
||
mvPosition = modelViewMatrix * mvPosition;
|
||
gl_Position = projectionMatrix * mvPosition;`,yft=`#ifdef DITHERING
|
||
gl_FragColor.rgb = dithering( gl_FragColor.rgb );
|
||
#endif`,Tft=`#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`,Eft=`float roughnessFactor = roughness;
|
||
#ifdef USE_ROUGHNESSMAP
|
||
vec4 texelRoughness = texture2D( roughnessMap, vUv );
|
||
roughnessFactor *= texelRoughness.g;
|
||
#endif`,bft=`#ifdef USE_ROUGHNESSMAP
|
||
uniform sampler2D roughnessMap;
|
||
#endif`,xft=`#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 ) {
|
||
vec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );
|
||
vec3 lightToPosition = shadowCoord.xyz;
|
||
float dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear ); dp += shadowBias;
|
||
vec3 bd3D = normalize( lightToPosition );
|
||
#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )
|
||
vec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;
|
||
return (
|
||
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
|
||
return texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );
|
||
#endif
|
||
}
|
||
#endif`,Ift=`#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`,Sft=`#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`,_ft=`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;
|
||
}`,wft=`#ifdef USE_SKINNING
|
||
mat4 boneMatX = getBoneMatrix( skinIndex.x );
|
||
mat4 boneMatY = getBoneMatrix( skinIndex.y );
|
||
mat4 boneMatZ = getBoneMatrix( skinIndex.z );
|
||
mat4 boneMatW = getBoneMatrix( skinIndex.w );
|
||
#endif`,Rft=`#ifdef USE_SKINNING
|
||
uniform mat4 bindMatrix;
|
||
uniform mat4 bindMatrixInverse;
|
||
uniform highp sampler2D boneTexture;
|
||
uniform int boneTextureSize;
|
||
mat4 getBoneMatrix( const in float i ) {
|
||
float j = i * 4.0;
|
||
float x = mod( j, float( boneTextureSize ) );
|
||
float y = floor( j / float( boneTextureSize ) );
|
||
float dx = 1.0 / float( boneTextureSize );
|
||
float dy = 1.0 / float( boneTextureSize );
|
||
y = dy * ( y + 0.5 );
|
||
vec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );
|
||
vec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );
|
||
vec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );
|
||
vec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );
|
||
mat4 bone = mat4( v1, v2, v3, v4 );
|
||
return bone;
|
||
}
|
||
#endif`,Mft=`#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`,Dft=`#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`,Cft=`float specularStrength;
|
||
#ifdef USE_SPECULARMAP
|
||
vec4 texelSpecular = texture2D( specularMap, vUv );
|
||
specularStrength = texelSpecular.r;
|
||
#else
|
||
specularStrength = 1.0;
|
||
#endif`,Aft=`#ifdef USE_SPECULARMAP
|
||
uniform sampler2D specularMap;
|
||
#endif`,Oft=`#if defined( TONE_MAPPING )
|
||
gl_FragColor.rgb = toneMapping( gl_FragColor.rgb );
|
||
#endif`,Pft=`#ifndef saturate
|
||
#define saturate( a ) clamp( a, 0.0, 1.0 )
|
||
#endif
|
||
uniform float toneMappingExposure;
|
||
vec3 LinearToneMapping( vec3 color ) {
|
||
return 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 );
|
||
}
|
||
vec3 CustomToneMapping( vec3 color ) { return color; }`,Nft=`#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, vUv ).r;
|
||
#endif
|
||
#ifdef USE_THICKNESSMAP
|
||
material.thickness *= texture2D( thicknessMap, vUv ).g;
|
||
#endif
|
||
vec3 pos = vWorldPosition;
|
||
vec3 v = normalize( cameraPosition - pos );
|
||
vec3 n = inverseTransformDirection( normal, viewMatrix );
|
||
vec4 transmission = getIBLVolumeRefraction(
|
||
n, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90,
|
||
pos, modelMatrix, viewMatrix, projectionMatrix, material.ior, material.thickness,
|
||
material.attenuationColor, material.attenuationDistance );
|
||
material.transmissionAlpha = mix( material.transmissionAlpha, transmission.a, material.transmission );
|
||
totalDiffuse = mix( totalDiffuse, transmission.rgb, material.transmission );
|
||
#endif`,Lft=`#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;
|
||
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 framebufferLod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );
|
||
#ifdef texture2DLodEXT
|
||
return texture2DLodEXT( transmissionSamplerMap, fragCoord.xy, framebufferLod );
|
||
#else
|
||
return texture2D( transmissionSamplerMap, fragCoord.xy, framebufferLod );
|
||
#endif
|
||
}
|
||
vec3 applyVolumeAttenuation( const in vec3 radiance, const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) {
|
||
if ( isinf( attenuationDistance ) ) {
|
||
return radiance;
|
||
} else {
|
||
vec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;
|
||
vec3 transmittance = exp( - attenuationCoefficient * transmissionDistance ); return transmittance * radiance;
|
||
}
|
||
}
|
||
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 ior, const in float thickness,
|
||
const in vec3 attenuationColor, const in float attenuationDistance ) {
|
||
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;
|
||
vec4 transmittedLight = getTransmissionSample( refractionCoords, roughness, ior );
|
||
vec3 attenuatedColor = applyVolumeAttenuation( transmittedLight.rgb, length( transmissionRay ), attenuationColor, attenuationDistance );
|
||
vec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );
|
||
return vec4( ( 1.0 - F ) * attenuatedColor * diffuseColor, transmittedLight.a );
|
||
}
|
||
#endif`,Fft=`#if ( defined( USE_UV ) && ! defined( UVS_VERTEX_ONLY ) )
|
||
varying vec2 vUv;
|
||
#endif`,Hft=`#ifdef USE_UV
|
||
#ifdef UVS_VERTEX_ONLY
|
||
vec2 vUv;
|
||
#else
|
||
varying vec2 vUv;
|
||
#endif
|
||
uniform mat3 uvTransform;
|
||
#endif`,Uft=`#ifdef USE_UV
|
||
vUv = ( uvTransform * vec3( uv, 1 ) ).xy;
|
||
#endif`,Bft=`#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )
|
||
varying vec2 vUv2;
|
||
#endif`,kft=`#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )
|
||
attribute vec2 uv2;
|
||
varying vec2 vUv2;
|
||
uniform mat3 uv2Transform;
|
||
#endif`,Gft=`#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )
|
||
vUv2 = ( uv2Transform * vec3( uv2, 1 ) ).xy;
|
||
#endif`,Vft=`#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_INSTANCING
|
||
worldPosition = instanceMatrix * worldPosition;
|
||
#endif
|
||
worldPosition = modelMatrix * worldPosition;
|
||
#endif`,zft=`varying vec2 vUv;
|
||
uniform mat3 uvTransform;
|
||
void main() {
|
||
vUv = ( uvTransform * vec3( uv, 1 ) ).xy;
|
||
gl_Position = vec4( position.xy, 1.0, 1.0 );
|
||
}`,jft=`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 <encodings_fragment>
|
||
}`,Wft=`varying vec3 vWorldDirection;
|
||
#include <common>
|
||
void main() {
|
||
vWorldDirection = transformDirection( position, modelMatrix );
|
||
#include <begin_vertex>
|
||
#include <project_vertex>
|
||
gl_Position.z = gl_Position.w;
|
||
}`,qft=`#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;
|
||
varying vec3 vWorldDirection;
|
||
#include <cube_uv_reflection_fragment>
|
||
void main() {
|
||
#ifdef ENVMAP_TYPE_CUBE
|
||
vec4 texColor = textureCube( envMap, vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) );
|
||
#elif defined( ENVMAP_TYPE_CUBE_UV )
|
||
vec4 texColor = textureCubeUV( envMap, 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 <encodings_fragment>
|
||
}`,Yft=`varying vec3 vWorldDirection;
|
||
#include <common>
|
||
void main() {
|
||
vWorldDirection = transformDirection( position, modelMatrix );
|
||
#include <begin_vertex>
|
||
#include <project_vertex>
|
||
gl_Position.z = gl_Position.w;
|
||
}`,Xft=`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 <encodings_fragment>
|
||
}`,$ft=`#include <common>
|
||
#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 <skinbase_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;
|
||
}`,Zft=`#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 <logdepthbuf_pars_fragment>
|
||
#include <clipping_planes_pars_fragment>
|
||
varying vec2 vHighPrecisionZW;
|
||
void main() {
|
||
#include <clipping_planes_fragment>
|
||
vec4 diffuseColor = vec4( 1.0 );
|
||
#if DEPTH_PACKING == 3200
|
||
diffuseColor.a = opacity;
|
||
#endif
|
||
#include <map_fragment>
|
||
#include <alphamap_fragment>
|
||
#include <alphatest_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
|
||
}`,Kft=`#define DISTANCE
|
||
varying vec3 vWorldPosition;
|
||
#include <common>
|
||
#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 <skinbase_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;
|
||
}`,Jft=`#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 <clipping_planes_pars_fragment>
|
||
void main () {
|
||
#include <clipping_planes_fragment>
|
||
vec4 diffuseColor = vec4( 1.0 );
|
||
#include <map_fragment>
|
||
#include <alphamap_fragment>
|
||
#include <alphatest_fragment>
|
||
float dist = length( vWorldPosition - referencePosition );
|
||
dist = ( dist - nearDistance ) / ( farDistance - nearDistance );
|
||
dist = saturate( dist );
|
||
gl_FragColor = packDepthToRGBA( dist );
|
||
}`,Qft=`varying vec3 vWorldDirection;
|
||
#include <common>
|
||
void main() {
|
||
vWorldDirection = transformDirection( position, modelMatrix );
|
||
#include <begin_vertex>
|
||
#include <project_vertex>
|
||
}`,emt=`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 <encodings_fragment>
|
||
}`,tmt=`uniform float scale;
|
||
attribute float lineDistance;
|
||
varying float vLineDistance;
|
||
#include <common>
|
||
#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 <color_vertex>
|
||
#include <morphcolor_vertex>
|
||
#include <begin_vertex>
|
||
#include <morphtarget_vertex>
|
||
#include <project_vertex>
|
||
#include <logdepthbuf_vertex>
|
||
#include <clipping_planes_vertex>
|
||
#include <fog_vertex>
|
||
}`,rmt=`uniform vec3 diffuse;
|
||
uniform float opacity;
|
||
uniform float dashSize;
|
||
uniform float totalSize;
|
||
varying float vLineDistance;
|
||
#include <common>
|
||
#include <color_pars_fragment>
|
||
#include <fog_pars_fragment>
|
||
#include <logdepthbuf_pars_fragment>
|
||
#include <clipping_planes_pars_fragment>
|
||
void main() {
|
||
#include <clipping_planes_fragment>
|
||
if ( mod( vLineDistance, totalSize ) > dashSize ) {
|
||
discard;
|
||
}
|
||
vec3 outgoingLight = vec3( 0.0 );
|
||
vec4 diffuseColor = vec4( diffuse, opacity );
|
||
#include <logdepthbuf_fragment>
|
||
#include <color_fragment>
|
||
outgoingLight = diffuseColor.rgb;
|
||
#include <output_fragment>
|
||
#include <tonemapping_fragment>
|
||
#include <encodings_fragment>
|
||
#include <fog_fragment>
|
||
#include <premultiplied_alpha_fragment>
|
||
}`,imt=`#include <common>
|
||
#include <uv_pars_vertex>
|
||
#include <uv2_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 <uv2_vertex>
|
||
#include <color_vertex>
|
||
#include <morphcolor_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>
|
||
}`,nmt=`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 <uv2_pars_fragment>
|
||
#include <map_pars_fragment>
|
||
#include <alphamap_pars_fragment>
|
||
#include <alphatest_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() {
|
||
#include <clipping_planes_fragment>
|
||
vec4 diffuseColor = vec4( diffuse, opacity );
|
||
#include <logdepthbuf_fragment>
|
||
#include <map_fragment>
|
||
#include <color_fragment>
|
||
#include <alphamap_fragment>
|
||
#include <alphatest_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, vUv2 );
|
||
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 <output_fragment>
|
||
#include <tonemapping_fragment>
|
||
#include <encodings_fragment>
|
||
#include <fog_fragment>
|
||
#include <premultiplied_alpha_fragment>
|
||
#include <dithering_fragment>
|
||
}`,smt=`#define LAMBERT
|
||
varying vec3 vViewPosition;
|
||
#include <common>
|
||
#include <uv_pars_vertex>
|
||
#include <uv2_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 <uv2_vertex>
|
||
#include <color_vertex>
|
||
#include <morphcolor_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>
|
||
}`,amt=`#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 <uv2_pars_fragment>
|
||
#include <map_pars_fragment>
|
||
#include <alphamap_pars_fragment>
|
||
#include <alphatest_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() {
|
||
#include <clipping_planes_fragment>
|
||
vec4 diffuseColor = vec4( diffuse, opacity );
|
||
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 <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 <output_fragment>
|
||
#include <tonemapping_fragment>
|
||
#include <encodings_fragment>
|
||
#include <fog_fragment>
|
||
#include <premultiplied_alpha_fragment>
|
||
#include <dithering_fragment>
|
||
}`,omt=`#define MATCAP
|
||
varying vec3 vViewPosition;
|
||
#include <common>
|
||
#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 <morphcolor_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;
|
||
}`,lmt=`#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 <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() {
|
||
#include <clipping_planes_fragment>
|
||
vec4 diffuseColor = vec4( diffuse, opacity );
|
||
#include <logdepthbuf_fragment>
|
||
#include <map_fragment>
|
||
#include <color_fragment>
|
||
#include <alphamap_fragment>
|
||
#include <alphatest_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 <output_fragment>
|
||
#include <tonemapping_fragment>
|
||
#include <encodings_fragment>
|
||
#include <fog_fragment>
|
||
#include <premultiplied_alpha_fragment>
|
||
#include <dithering_fragment>
|
||
}`,cmt=`#define NORMAL
|
||
#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )
|
||
varying vec3 vViewPosition;
|
||
#endif
|
||
#include <common>
|
||
#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 <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>
|
||
#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )
|
||
vViewPosition = - mvPosition.xyz;
|
||
#endif
|
||
}`,umt=`#define NORMAL
|
||
uniform float opacity;
|
||
#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )
|
||
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() {
|
||
#include <clipping_planes_fragment>
|
||
#include <logdepthbuf_fragment>
|
||
#include <normal_fragment_begin>
|
||
#include <normal_fragment_maps>
|
||
gl_FragColor = vec4( packNormalToRGB( normal ), opacity );
|
||
#ifdef OPAQUE
|
||
gl_FragColor.a = 1.0;
|
||
#endif
|
||
}`,hmt=`#define PHONG
|
||
varying vec3 vViewPosition;
|
||
#include <common>
|
||
#include <uv_pars_vertex>
|
||
#include <uv2_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 <uv2_vertex>
|
||
#include <color_vertex>
|
||
#include <morphcolor_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>
|
||
}`,pmt=`#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 <uv2_pars_fragment>
|
||
#include <map_pars_fragment>
|
||
#include <alphamap_pars_fragment>
|
||
#include <alphatest_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() {
|
||
#include <clipping_planes_fragment>
|
||
vec4 diffuseColor = vec4( diffuse, opacity );
|
||
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 <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 <output_fragment>
|
||
#include <tonemapping_fragment>
|
||
#include <encodings_fragment>
|
||
#include <fog_fragment>
|
||
#include <premultiplied_alpha_fragment>
|
||
#include <dithering_fragment>
|
||
}`,dmt=`#define STANDARD
|
||
varying vec3 vViewPosition;
|
||
#ifdef USE_TRANSMISSION
|
||
varying vec3 vWorldPosition;
|
||
#endif
|
||
#include <common>
|
||
#include <uv_pars_vertex>
|
||
#include <uv2_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 <uv2_vertex>
|
||
#include <color_vertex>
|
||
#include <morphcolor_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
|
||
}`,fmt=`#define STANDARD
|
||
#ifdef PHYSICAL
|
||
#define IOR
|
||
#define SPECULAR
|
||
#endif
|
||
uniform vec3 diffuse;
|
||
uniform vec3 emissive;
|
||
uniform float roughness;
|
||
uniform float metalness;
|
||
uniform float opacity;
|
||
#ifdef IOR
|
||
uniform float ior;
|
||
#endif
|
||
#ifdef SPECULAR
|
||
uniform float specularIntensity;
|
||
uniform vec3 specularColor;
|
||
#ifdef USE_SPECULARINTENSITYMAP
|
||
uniform sampler2D specularIntensityMap;
|
||
#endif
|
||
#ifdef USE_SPECULARCOLORMAP
|
||
uniform sampler2D specularColorMap;
|
||
#endif
|
||
#endif
|
||
#ifdef USE_CLEARCOAT
|
||
uniform float clearcoat;
|
||
uniform float clearcoatRoughness;
|
||
#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_SHEENCOLORMAP
|
||
uniform sampler2D sheenColorMap;
|
||
#endif
|
||
#ifdef USE_SHEENROUGHNESSMAP
|
||
uniform sampler2D sheenRoughnessMap;
|
||
#endif
|
||
#endif
|
||
varying vec3 vViewPosition;
|
||
#include <common>
|
||
#include <packing>
|
||
#include <dithering_pars_fragment>
|
||
#include <color_pars_fragment>
|
||
#include <uv_pars_fragment>
|
||
#include <uv2_pars_fragment>
|
||
#include <map_pars_fragment>
|
||
#include <alphamap_pars_fragment>
|
||
#include <alphatest_pars_fragment>
|
||
#include <aomap_pars_fragment>
|
||
#include <lightmap_pars_fragment>
|
||
#include <emissivemap_pars_fragment>
|
||
#include <bsdfs>
|
||
#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() {
|
||
#include <clipping_planes_fragment>
|
||
vec4 diffuseColor = vec4( diffuse, opacity );
|
||
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 <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 + sheenSpecular;
|
||
#endif
|
||
#ifdef USE_CLEARCOAT
|
||
float dotNVcc = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) );
|
||
vec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );
|
||
outgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + clearcoatSpecular * material.clearcoat;
|
||
#endif
|
||
#include <output_fragment>
|
||
#include <tonemapping_fragment>
|
||
#include <encodings_fragment>
|
||
#include <fog_fragment>
|
||
#include <premultiplied_alpha_fragment>
|
||
#include <dithering_fragment>
|
||
}`,mmt=`#define TOON
|
||
varying vec3 vViewPosition;
|
||
#include <common>
|
||
#include <uv_pars_vertex>
|
||
#include <uv2_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 <uv2_vertex>
|
||
#include <color_vertex>
|
||
#include <morphcolor_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>
|
||
}`,gmt=`#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 <uv2_pars_fragment>
|
||
#include <map_pars_fragment>
|
||
#include <alphamap_pars_fragment>
|
||
#include <alphatest_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() {
|
||
#include <clipping_planes_fragment>
|
||
vec4 diffuseColor = vec4( diffuse, opacity );
|
||
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 <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 <output_fragment>
|
||
#include <tonemapping_fragment>
|
||
#include <encodings_fragment>
|
||
#include <fog_fragment>
|
||
#include <premultiplied_alpha_fragment>
|
||
#include <dithering_fragment>
|
||
}`,vmt=`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>
|
||
void main() {
|
||
#include <color_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>
|
||
}`,ymt=`uniform vec3 diffuse;
|
||
uniform float opacity;
|
||
#include <common>
|
||
#include <color_pars_fragment>
|
||
#include <map_particle_pars_fragment>
|
||
#include <alphatest_pars_fragment>
|
||
#include <fog_pars_fragment>
|
||
#include <logdepthbuf_pars_fragment>
|
||
#include <clipping_planes_pars_fragment>
|
||
void main() {
|
||
#include <clipping_planes_fragment>
|
||
vec3 outgoingLight = vec3( 0.0 );
|
||
vec4 diffuseColor = vec4( diffuse, opacity );
|
||
#include <logdepthbuf_fragment>
|
||
#include <map_particle_fragment>
|
||
#include <color_fragment>
|
||
#include <alphatest_fragment>
|
||
outgoingLight = diffuseColor.rgb;
|
||
#include <output_fragment>
|
||
#include <tonemapping_fragment>
|
||
#include <encodings_fragment>
|
||
#include <fog_fragment>
|
||
#include <premultiplied_alpha_fragment>
|
||
}`,Tmt=`#include <common>
|
||
#include <fog_pars_vertex>
|
||
#include <morphtarget_pars_vertex>
|
||
#include <skinning_pars_vertex>
|
||
#include <shadowmap_pars_vertex>
|
||
void main() {
|
||
#include <beginnormal_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 <worldpos_vertex>
|
||
#include <shadowmap_vertex>
|
||
#include <fog_vertex>
|
||
}`,Emt=`uniform vec3 color;
|
||
uniform float opacity;
|
||
#include <common>
|
||
#include <packing>
|
||
#include <fog_pars_fragment>
|
||
#include <bsdfs>
|
||
#include <lights_pars_begin>
|
||
#include <shadowmap_pars_fragment>
|
||
#include <shadowmask_pars_fragment>
|
||
void main() {
|
||
gl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );
|
||
#include <tonemapping_fragment>
|
||
#include <encodings_fragment>
|
||
#include <fog_fragment>
|
||
}`,bmt=`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>
|
||
}`,xmt=`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 <fog_pars_fragment>
|
||
#include <logdepthbuf_pars_fragment>
|
||
#include <clipping_planes_pars_fragment>
|
||
void main() {
|
||
#include <clipping_planes_fragment>
|
||
vec3 outgoingLight = vec3( 0.0 );
|
||
vec4 diffuseColor = vec4( diffuse, opacity );
|
||
#include <logdepthbuf_fragment>
|
||
#include <map_fragment>
|
||
#include <alphamap_fragment>
|
||
#include <alphatest_fragment>
|
||
outgoingLight = diffuseColor.rgb;
|
||
#include <output_fragment>
|
||
#include <tonemapping_fragment>
|
||
#include <encodings_fragment>
|
||
#include <fog_fragment>
|
||
}`,Wr={alphamap_fragment:Wpt,alphamap_pars_fragment:qpt,alphatest_fragment:Ypt,alphatest_pars_fragment:Xpt,aomap_fragment:$pt,aomap_pars_fragment:Zpt,begin_vertex:Kpt,beginnormal_vertex:Jpt,bsdfs:Qpt,iridescence_fragment:edt,bumpmap_pars_fragment:tdt,clipping_planes_fragment:rdt,clipping_planes_pars_fragment:idt,clipping_planes_pars_vertex:ndt,clipping_planes_vertex:sdt,color_fragment:adt,color_pars_fragment:odt,color_pars_vertex:ldt,color_vertex:cdt,common:udt,cube_uv_reflection_fragment:hdt,defaultnormal_vertex:pdt,displacementmap_pars_vertex:ddt,displacementmap_vertex:fdt,emissivemap_fragment:mdt,emissivemap_pars_fragment:gdt,encodings_fragment:vdt,encodings_pars_fragment:ydt,envmap_fragment:Tdt,envmap_common_pars_fragment:Edt,envmap_pars_fragment:bdt,envmap_pars_vertex:xdt,envmap_physical_pars_fragment:Ndt,envmap_vertex:Idt,fog_vertex:Sdt,fog_pars_vertex:_dt,fog_fragment:wdt,fog_pars_fragment:Rdt,gradientmap_pars_fragment:Mdt,lightmap_fragment:Ddt,lightmap_pars_fragment:Cdt,lights_lambert_fragment:Adt,lights_lambert_pars_fragment:Odt,lights_pars_begin:Pdt,lights_toon_fragment:Ldt,lights_toon_pars_fragment:Fdt,lights_phong_fragment:Hdt,lights_phong_pars_fragment:Udt,lights_physical_fragment:Bdt,lights_physical_pars_fragment:kdt,lights_fragment_begin:Gdt,lights_fragment_maps:Vdt,lights_fragment_end:zdt,logdepthbuf_fragment:jdt,logdepthbuf_pars_fragment:Wdt,logdepthbuf_pars_vertex:qdt,logdepthbuf_vertex:Ydt,map_fragment:Xdt,map_pars_fragment:$dt,map_particle_fragment:Zdt,map_particle_pars_fragment:Kdt,metalnessmap_fragment:Jdt,metalnessmap_pars_fragment:Qdt,morphcolor_vertex:eft,morphnormal_vertex:tft,morphtarget_pars_vertex:rft,morphtarget_vertex:ift,normal_fragment_begin:nft,normal_fragment_maps:sft,normal_pars_fragment:aft,normal_pars_vertex:oft,normal_vertex:lft,normalmap_pars_fragment:cft,clearcoat_normal_fragment_begin:uft,clearcoat_normal_fragment_maps:hft,clearcoat_pars_fragment:pft,iridescence_pars_fragment:dft,output_fragment:fft,packing:mft,premultiplied_alpha_fragment:gft,project_vertex:vft,dithering_fragment:yft,dithering_pars_fragment:Tft,roughnessmap_fragment:Eft,roughnessmap_pars_fragment:bft,shadowmap_pars_fragment:xft,shadowmap_pars_vertex:Ift,shadowmap_vertex:Sft,shadowmask_pars_fragment:_ft,skinbase_vertex:wft,skinning_pars_vertex:Rft,skinning_vertex:Mft,skinnormal_vertex:Dft,specularmap_fragment:Cft,specularmap_pars_fragment:Aft,tonemapping_fragment:Oft,tonemapping_pars_fragment:Pft,transmission_fragment:Nft,transmission_pars_fragment:Lft,uv_pars_fragment:Fft,uv_pars_vertex:Hft,uv_vertex:Uft,uv2_pars_fragment:Bft,uv2_pars_vertex:kft,uv2_vertex:Gft,worldpos_vertex:Vft,background_vert:zft,background_frag:jft,backgroundCube_vert:Wft,backgroundCube_frag:qft,cube_vert:Yft,cube_frag:Xft,depth_vert:$ft,depth_frag:Zft,distanceRGBA_vert:Kft,distanceRGBA_frag:Jft,equirect_vert:Qft,equirect_frag:emt,linedashed_vert:tmt,linedashed_frag:rmt,meshbasic_vert:imt,meshbasic_frag:nmt,meshlambert_vert:smt,meshlambert_frag:amt,meshmatcap_vert:omt,meshmatcap_frag:lmt,meshnormal_vert:cmt,meshnormal_frag:umt,meshphong_vert:hmt,meshphong_frag:pmt,meshphysical_vert:dmt,meshphysical_frag:fmt,meshtoon_vert:mmt,meshtoon_frag:gmt,points_vert:vmt,points_frag:ymt,shadow_vert:Tmt,shadow_frag:Emt,sprite_vert:bmt,sprite_frag:xmt},At={common:{diffuse:{value:new Ve(16777215)},opacity:{value:1},map:{value:null},uvTransform:{value:new Qi},uv2Transform:{value:new Qi},alphaMap:{value:null},alphaTest:{value:0}},specularmap:{specularMap:{value:null}},envmap:{envMap:{value:null},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1}},emissivemap:{emissiveMap:{value:null}},bumpmap:{bumpMap:{value:null},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalScale:{value:new le(1,1)}},displacementmap:{displacementMap:{value:null},displacementScale:{value:1},displacementBias:{value:0}},roughnessmap:{roughnessMap:{value:null}},metalnessmap:{metalnessMap:{value:null}},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},alphaTest:{value:0},uvTransform:{value:new Qi}},sprite:{diffuse:{value:new Ve(16777215)},opacity:{value:1},center:{value:new le(.5,.5)},rotation:{value:0},map:{value:null},alphaMap:{value:null},alphaTest:{value:0},uvTransform:{value:new Qi}}},Rc={basic:{uniforms:Ia([At.common,At.specularmap,At.envmap,At.aomap,At.lightmap,At.fog]),vertexShader:Wr.meshbasic_vert,fragmentShader:Wr.meshbasic_frag},lambert:{uniforms:Ia([At.common,At.specularmap,At.envmap,At.aomap,At.lightmap,At.emissivemap,At.bumpmap,At.normalmap,At.displacementmap,At.fog,At.lights,{emissive:{value:new Ve(0)}}]),vertexShader:Wr.meshlambert_vert,fragmentShader:Wr.meshlambert_frag},phong:{uniforms:Ia([At.common,At.specularmap,At.envmap,At.aomap,At.lightmap,At.emissivemap,At.bumpmap,At.normalmap,At.displacementmap,At.fog,At.lights,{emissive:{value:new Ve(0)},specular:{value:new Ve(1118481)},shininess:{value:30}}]),vertexShader:Wr.meshphong_vert,fragmentShader:Wr.meshphong_frag},standard:{uniforms:Ia([At.common,At.envmap,At.aomap,At.lightmap,At.emissivemap,At.bumpmap,At.normalmap,At.displacementmap,At.roughnessmap,At.metalnessmap,At.fog,At.lights,{emissive:{value:new Ve(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:Wr.meshphysical_vert,fragmentShader:Wr.meshphysical_frag},toon:{uniforms:Ia([At.common,At.aomap,At.lightmap,At.emissivemap,At.bumpmap,At.normalmap,At.displacementmap,At.gradientmap,At.fog,At.lights,{emissive:{value:new Ve(0)}}]),vertexShader:Wr.meshtoon_vert,fragmentShader:Wr.meshtoon_frag},matcap:{uniforms:Ia([At.common,At.bumpmap,At.normalmap,At.displacementmap,At.fog,{matcap:{value:null}}]),vertexShader:Wr.meshmatcap_vert,fragmentShader:Wr.meshmatcap_frag},points:{uniforms:Ia([At.points,At.fog]),vertexShader:Wr.points_vert,fragmentShader:Wr.points_frag},dashed:{uniforms:Ia([At.common,At.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:Wr.linedashed_vert,fragmentShader:Wr.linedashed_frag},depth:{uniforms:Ia([At.common,At.displacementmap]),vertexShader:Wr.depth_vert,fragmentShader:Wr.depth_frag},normal:{uniforms:Ia([At.common,At.bumpmap,At.normalmap,At.displacementmap,{opacity:{value:1}}]),vertexShader:Wr.meshnormal_vert,fragmentShader:Wr.meshnormal_frag},sprite:{uniforms:Ia([At.sprite,At.fog]),vertexShader:Wr.sprite_vert,fragmentShader:Wr.sprite_frag},background:{uniforms:{uvTransform:{value:new Qi},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:Wr.background_vert,fragmentShader:Wr.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1}},vertexShader:Wr.backgroundCube_vert,fragmentShader:Wr.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:Wr.cube_vert,fragmentShader:Wr.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:Wr.equirect_vert,fragmentShader:Wr.equirect_frag},distanceRGBA:{uniforms:Ia([At.common,At.displacementmap,{referencePosition:{value:new A},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:Wr.distanceRGBA_vert,fragmentShader:Wr.distanceRGBA_frag},shadow:{uniforms:Ia([At.lights,At.fog,{color:{value:new Ve(0)},opacity:{value:1}}]),vertexShader:Wr.shadow_vert,fragmentShader:Wr.shadow_frag}};Rc.physical={uniforms:Ia([Rc.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatNormalScale:{value:new le(1,1)},clearcoatNormalMap:{value:null},iridescence:{value:0},iridescenceMap:{value:null},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},sheen:{value:0},sheenColor:{value:new Ve(0)},sheenColorMap:{value:null},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},transmission:{value:0},transmissionMap:{value:null},transmissionSamplerSize:{value:new le},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},attenuationDistance:{value:0},attenuationColor:{value:new Ve(0)},specularIntensity:{value:1},specularIntensityMap:{value:null},specularColor:{value:new Ve(1,1,1)},specularColorMap:{value:null}}]),vertexShader:Wr.meshphysical_vert,fragmentShader:Wr.meshphysical_frag};var GM={r:0,b:0,g:0};function Imt(t,r,e,i,n,s,a){let o=new Ve(0),l=s===!0?0:1,c,u,h=null,p=0,d=null;function f(g,y){let E=!1,b=y.isScene===!0?y.background:null;b&&b.isTexture&&(b=(y.backgroundBlurriness>0?e:r).get(b));let x=t.xr,S=x.getSession&&x.getSession();S&&S.environmentBlendMode==="additive"&&(b=null),b===null?m(o,l):b&&b.isColor&&(m(b,1),E=!0),(t.autoClear||E)&&t.clear(t.autoClearColor,t.autoClearDepth,t.autoClearStencil),b&&(b.isCubeTexture||b.mapping===By)?(u===void 0&&(u=new Je(new Qa(1,1,1),new Yt({name:"BackgroundCubeMaterial",uniforms:Dy(Rc.backgroundCube.uniforms),vertexShader:Rc.backgroundCube.vertexShader,fragmentShader:Rc.backgroundCube.fragmentShader,side:Gn,depthTest:!1,depthWrite:!1,fog:!1})),u.geometry.deleteAttribute("normal"),u.geometry.deleteAttribute("uv"),u.onBeforeRender=function(D,P,_){this.matrixWorld.copyPosition(_.matrixWorld)},Object.defineProperty(u.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),n.update(u)),u.material.uniforms.envMap.value=b,u.material.uniforms.flipEnvMap.value=b.isCubeTexture&&b.isRenderTargetTexture===!1?-1:1,u.material.uniforms.backgroundBlurriness.value=y.backgroundBlurriness,u.material.uniforms.backgroundIntensity.value=y.backgroundIntensity,u.material.toneMapped=b.encoding!==yr,(h!==b||p!==b.version||d!==t.toneMapping)&&(u.material.needsUpdate=!0,h=b,p=b.version,d=t.toneMapping),u.layers.enableAll(),g.unshift(u,u.geometry,u.material,0,0,null)):b&&b.isTexture&&(c===void 0&&(c=new Je(new ts(2,2),new Yt({name:"BackgroundMaterial",uniforms:Dy(Rc.background.uniforms),vertexShader:Rc.background.vertexShader,fragmentShader:Rc.background.fragmentShader,side:en,depthTest:!1,depthWrite:!1,fog:!1})),c.geometry.deleteAttribute("normal"),Object.defineProperty(c.material,"map",{get:function(){return this.uniforms.t2D.value}}),n.update(c)),c.material.uniforms.t2D.value=b,c.material.uniforms.backgroundIntensity.value=y.backgroundIntensity,c.material.toneMapped=b.encoding!==yr,b.matrixAutoUpdate===!0&&b.updateMatrix(),c.material.uniforms.uvTransform.value.copy(b.matrix),(h!==b||p!==b.version||d!==t.toneMapping)&&(c.material.needsUpdate=!0,h=b,p=b.version,d=t.toneMapping),c.layers.enableAll(),g.unshift(c,c.geometry,c.material,0,0,null))}function m(g,y){g.getRGB(GM,hhe(t)),i.buffers.color.setClear(GM.r,GM.g,GM.b,y,a)}return{getClearColor:function(){return o},setClearColor:function(g,y=1){o.set(g),l=y,m(o,l)},getClearAlpha:function(){return l},setClearAlpha:function(g){l=g,m(o,l)},render:f}}function Smt(t,r,e,i){let n=t.getParameter(34921),s=i.isWebGL2?null:r.get("OES_vertex_array_object"),a=i.isWebGL2||s!==null,o={},l=g(null),c=l,u=!1;function h(C,N,k,G,U){let j=!1;if(a){let ee=m(G,k,N);c!==ee&&(c=ee,d(c.object)),j=y(C,G,k,U),j&&E(C,G,k,U)}else{let ee=N.wireframe===!0;(c.geometry!==G.id||c.program!==k.id||c.wireframe!==ee)&&(c.geometry=G.id,c.program=k.id,c.wireframe=ee,j=!0)}U!==null&&e.update(U,34963),(j||u)&&(u=!1,_(C,N,k,G),U!==null&&t.bindBuffer(34963,e.get(U).buffer))}function p(){return i.isWebGL2?t.createVertexArray():s.createVertexArrayOES()}function d(C){return i.isWebGL2?t.bindVertexArray(C):s.bindVertexArrayOES(C)}function f(C){return i.isWebGL2?t.deleteVertexArray(C):s.deleteVertexArrayOES(C)}function m(C,N,k){let G=k.wireframe===!0,U=o[C.id];U===void 0&&(U={},o[C.id]=U);let j=U[N.id];j===void 0&&(j={},U[N.id]=j);let ee=j[G];return ee===void 0&&(ee=g(p()),j[G]=ee),ee}function g(C){let N=[],k=[],G=[];for(let U=0;U<n;U++)N[U]=0,k[U]=0,G[U]=0;return{geometry:null,program:null,wireframe:!1,newAttributes:N,enabledAttributes:k,attributeDivisors:G,object:C,attributes:{},index:null}}function y(C,N,k,G){let U=c.attributes,j=N.attributes,ee=0,ae=k.getAttributes();for(let se in ae)if(ae[se].location>=0){let ve=U[se],be=j[se];if(be===void 0&&(se==="instanceMatrix"&&C.instanceMatrix&&(be=C.instanceMatrix),se==="instanceColor"&&C.instanceColor&&(be=C.instanceColor)),ve===void 0||ve.attribute!==be||be&&ve.data!==be.data)return!0;ee++}return c.attributesNum!==ee||c.index!==G}function E(C,N,k,G){let U={},j=N.attributes,ee=0,ae=k.getAttributes();for(let se in ae)if(ae[se].location>=0){let ve=j[se];ve===void 0&&(se==="instanceMatrix"&&C.instanceMatrix&&(ve=C.instanceMatrix),se==="instanceColor"&&C.instanceColor&&(ve=C.instanceColor));let be={};be.attribute=ve,ve&&ve.data&&(be.data=ve.data),U[se]=be,ee++}c.attributes=U,c.attributesNum=ee,c.index=G}function b(){let C=c.newAttributes;for(let N=0,k=C.length;N<k;N++)C[N]=0}function x(C){S(C,0)}function S(C,N){let k=c.newAttributes,G=c.enabledAttributes,U=c.attributeDivisors;k[C]=1,G[C]===0&&(t.enableVertexAttribArray(C),G[C]=1),U[C]!==N&&((i.isWebGL2?t:r.get("ANGLE_instanced_arrays"))[i.isWebGL2?"vertexAttribDivisor":"vertexAttribDivisorANGLE"](C,N),U[C]=N)}function D(){let C=c.newAttributes,N=c.enabledAttributes;for(let k=0,G=N.length;k<G;k++)N[k]!==C[k]&&(t.disableVertexAttribArray(k),N[k]=0)}function P(C,N,k,G,U,j){i.isWebGL2===!0&&(k===5124||k===5125)?t.vertexAttribIPointer(C,N,k,U,j):t.vertexAttribPointer(C,N,k,G,U,j)}function _(C,N,k,G){if(i.isWebGL2===!1&&(C.isInstancedMesh||G.isInstancedBufferGeometry)&&r.get("ANGLE_instanced_arrays")===null)return;b();let U=G.attributes,j=k.getAttributes(),ee=N.defaultAttributeValues;for(let ae in j){let se=j[ae];if(se.location>=0){let ue=U[ae];if(ue===void 0&&(ae==="instanceMatrix"&&C.instanceMatrix&&(ue=C.instanceMatrix),ae==="instanceColor"&&C.instanceColor&&(ue=C.instanceColor)),ue!==void 0){let ve=ue.normalized,be=ue.itemSize,de=e.get(ue);if(de===void 0)continue;let we=de.buffer,Fe=de.type,je=de.bytesPerElement;if(ue.isInterleavedBufferAttribute){let Oe=ue.data,dt=Oe.stride,Be=ue.offset;if(Oe.isInstancedInterleavedBuffer){for(let ke=0;ke<se.locationSize;ke++)S(se.location+ke,Oe.meshPerAttribute);C.isInstancedMesh!==!0&&G._maxInstanceCount===void 0&&(G._maxInstanceCount=Oe.meshPerAttribute*Oe.count)}else for(let ke=0;ke<se.locationSize;ke++)x(se.location+ke);t.bindBuffer(34962,we);for(let ke=0;ke<se.locationSize;ke++)P(se.location+ke,be/se.locationSize,Fe,ve,dt*je,(Be+be/se.locationSize*ke)*je)}else{if(ue.isInstancedBufferAttribute){for(let Oe=0;Oe<se.locationSize;Oe++)S(se.location+Oe,ue.meshPerAttribute);C.isInstancedMesh!==!0&&G._maxInstanceCount===void 0&&(G._maxInstanceCount=ue.meshPerAttribute*ue.count)}else for(let Oe=0;Oe<se.locationSize;Oe++)x(se.location+Oe);t.bindBuffer(34962,we);for(let Oe=0;Oe<se.locationSize;Oe++)P(se.location+Oe,be/se.locationSize,Fe,ve,be*je,be/se.locationSize*Oe*je)}}else if(ee!==void 0){let ve=ee[ae];if(ve!==void 0)switch(ve.length){case 2:t.vertexAttrib2fv(se.location,ve);break;case 3:t.vertexAttrib3fv(se.location,ve);break;case 4:t.vertexAttrib4fv(se.location,ve);break;default:t.vertexAttrib1fv(se.location,ve)}}}}D()}function w(){H();for(let C in o){let N=o[C];for(let k in N){let G=N[k];for(let U in G)f(G[U].object),delete G[U];delete N[k]}delete o[C]}}function F(C){if(o[C.id]===void 0)return;let N=o[C.id];for(let k in N){let G=N[k];for(let U in G)f(G[U].object),delete G[U];delete N[k]}delete o[C.id]}function X(C){for(let N in o){let k=o[N];if(k[C.id]===void 0)continue;let G=k[C.id];for(let U in G)f(G[U].object),delete G[U];delete k[C.id]}}function H(){he(),u=!0,c!==l&&(c=l,d(c.object))}function he(){l.geometry=null,l.program=null,l.wireframe=!1}return{setup:h,reset:H,resetDefaultState:he,dispose:w,releaseStatesOfGeometry:F,releaseStatesOfProgram:X,initAttributes:b,enableAttribute:x,disableUnusedAttributes:D}}function _mt(t,r,e,i){let n=i.isWebGL2,s;function a(c){s=c}function o(c,u){t.drawArrays(s,c,u),e.update(u,s,1)}function l(c,u,h){if(h===0)return;let p,d;if(n)p=t,d="drawArraysInstanced";else if(p=r.get("ANGLE_instanced_arrays"),d="drawArraysInstancedANGLE",p===null){console.error("THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");return}p[d](s,c,u,h),e.update(u,s,h)}this.setMode=a,this.render=o,this.renderInstances=l}function wmt(t,r,e){let i;function n(){if(i!==void 0)return i;if(r.has("EXT_texture_filter_anisotropic")===!0){let P=r.get("EXT_texture_filter_anisotropic");i=t.getParameter(P.MAX_TEXTURE_MAX_ANISOTROPY_EXT)}else i=0;return i}function s(P){if(P==="highp"){if(t.getShaderPrecisionFormat(35633,36338).precision>0&&t.getShaderPrecisionFormat(35632,36338).precision>0)return"highp";P="mediump"}return P==="mediump"&&t.getShaderPrecisionFormat(35633,36337).precision>0&&t.getShaderPrecisionFormat(35632,36337).precision>0?"mediump":"lowp"}let a=typeof WebGL2RenderingContext!="undefined"&&t instanceof WebGL2RenderingContext,o=e.precision!==void 0?e.precision:"highp",l=s(o);l!==o&&(console.warn("THREE.WebGLRenderer:",o,"not supported, using",l,"instead."),o=l);let c=a||r.has("WEBGL_draw_buffers"),u=e.logarithmicDepthBuffer===!0,h=t.getParameter(34930),p=t.getParameter(35660),d=t.getParameter(3379),f=t.getParameter(34076),m=t.getParameter(34921),g=t.getParameter(36347),y=t.getParameter(36348),E=t.getParameter(36349),b=p>0,x=a||r.has("OES_texture_float"),S=b&&x,D=a?t.getParameter(36183):0;return{isWebGL2:a,drawBuffers:c,getMaxAnisotropy:n,getMaxPrecision:s,precision:o,logarithmicDepthBuffer:u,maxTextures:h,maxVertexTextures:p,maxTextureSize:d,maxCubemapSize:f,maxAttributes:m,maxVertexUniforms:g,maxVaryings:y,maxFragmentUniforms:E,vertexTextures:b,floatFragmentTextures:x,floatVertexTextures:S,maxSamples:D}}function Rmt(t){let r=this,e=null,i=0,n=!1,s=!1,a=new Ei,o=new Qi,l={value:null,needsUpdate:!1};this.uniform=l,this.numPlanes=0,this.numIntersection=0,this.init=function(h,p){let d=h.length!==0||p||i!==0||n;return n=p,i=h.length,d},this.beginShadows=function(){s=!0,u(null)},this.endShadows=function(){s=!1},this.setGlobalState=function(h,p){e=u(h,p,0)},this.setState=function(h,p,d){let f=h.clippingPlanes,m=h.clipIntersection,g=h.clipShadows,y=t.get(h);if(!n||f===null||f.length===0||s&&!g)s?u(null):c();else{let E=s?0:i,b=E*4,x=y.clippingState||null;l.value=x,x=u(f,p,b,d);for(let S=0;S!==b;++S)x[S]=e[S];y.clippingState=x,this.numIntersection=m?this.numPlanes:0,this.numPlanes+=E}};function c(){l.value!==e&&(l.value=e,l.needsUpdate=i>0),r.numPlanes=i,r.numIntersection=0}function u(h,p,d,f){let m=h!==null?h.length:0,g=null;if(m!==0){if(g=l.value,f!==!0||g===null){let y=d+m*4,E=p.matrixWorldInverse;o.getNormalMatrix(E),(g===null||g.length<y)&&(g=new Float32Array(y));for(let b=0,x=d;b!==m;++b,x+=4)a.copy(h[b]).applyMatrix4(E,o),a.normal.toArray(g,x),g[x+3]=a.constant}l.value=g,l.needsUpdate=!0}return r.numPlanes=m,r.numIntersection=0,g}}function Mmt(t){let r=new WeakMap;function e(a,o){return o===mg?a.mapping=sf:o===Zb&&(a.mapping=af),a}function i(a){if(a&&a.isTexture&&a.isRenderTargetTexture===!1){let o=a.mapping;if(o===mg||o===Zb)if(r.has(a)){let l=r.get(a).texture;return e(l,a.mapping)}else{let l=a.image;if(l&&l.height>0){let c=new xD(l.height/2);return c.fromEquirectangularTexture(t,a),r.set(a,c),a.addEventListener("dispose",n),e(c.texture,a.mapping)}else return null}}return a}function n(a){let o=a.target;o.removeEventListener("dispose",n);let l=r.get(o);l!==void 0&&(r.delete(o),l.dispose())}function s(){r=new WeakMap}return{get:i,dispose:s}}var Zi=class extends vg{constructor(r=-1,e=1,i=1,n=-1,s=.1,a=2e3){super(),this.isOrthographicCamera=!0,this.type="OrthographicCamera",this.zoom=1,this.view=null,this.left=r,this.right=e,this.top=i,this.bottom=n,this.near=s,this.far=a,this.updateProjectionMatrix()}copy(r,e){return super.copy(r,e),this.left=r.left,this.right=r.right,this.top=r.top,this.bottom=r.bottom,this.near=r.near,this.far=r.far,this.zoom=r.zoom,this.view=r.view===null?null:Object.assign({},r.view),this}setViewOffset(r,e,i,n,s,a){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=r,this.view.fullHeight=e,this.view.offsetX=i,this.view.offsetY=n,this.view.width=s,this.view.height=a,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){let r=(this.right-this.left)/(2*this.zoom),e=(this.top-this.bottom)/(2*this.zoom),i=(this.right+this.left)/2,n=(this.top+this.bottom)/2,s=i-r,a=i+r,o=n+e,l=n-e;if(this.view!==null&&this.view.enabled){let c=(this.right-this.left)/this.view.fullWidth/this.zoom,u=(this.top-this.bottom)/this.view.fullHeight/this.zoom;s+=c*this.view.offsetX,a=s+c*this.view.width,o-=u*this.view.offsetY,l=o-u*this.view.height}this.projectionMatrix.makeOrthographic(s,a,o,l,this.near,this.far),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(r){let e=super.toJSON(r);return e.object.zoom=this.zoom,e.object.left=this.left,e.object.right=this.right,e.object.top=this.top,e.object.bottom=this.bottom,e.object.near=this.near,e.object.far=this.far,this.view!==null&&(e.object.view=Object.assign({},this.view)),e}},Iy=4,hce=[.125,.215,.35,.446,.526,.582],lg=20,dH=new Zi,pce=new Ve,fH=null,og=(1+Math.sqrt(5))/2,gy=1/og,dce=[new A(1,1,1),new A(-1,1,1),new A(1,1,-1),new A(-1,1,-1),new A(0,og,gy),new A(0,og,-gy),new A(gy,0,og),new A(-gy,0,og),new A(og,gy,0),new A(-og,gy,0)],yp=class{constructor(r){this._renderer=r,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(r,e=0,i=.1,n=100){fH=this._renderer.getRenderTarget(),this._setSize(256);let s=this._allocateTargets();return s.depthBuffer=!0,this._sceneToCubeUV(r,i,n,s),e>0&&this._blur(s,0,0,e),this._applyPMREM(s),this._cleanup(s),s}fromEquirectangular(r,e=null){return this._fromTexture(r,e)}fromCubemap(r,e=null){return this._fromTexture(r,e)}compileCubemapShader(){this._cubemapMaterial===null&&(this._cubemapMaterial=gce(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){this._equirectMaterial===null&&(this._equirectMaterial=mce(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),this._cubemapMaterial!==null&&this._cubemapMaterial.dispose(),this._equirectMaterial!==null&&this._equirectMaterial.dispose()}_setSize(r){this._lodMax=Math.floor(Math.log2(r)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){this._blurMaterial!==null&&this._blurMaterial.dispose(),this._pingPongRenderTarget!==null&&this._pingPongRenderTarget.dispose();for(let r=0;r<this._lodPlanes.length;r++)this._lodPlanes[r].dispose()}_cleanup(r){this._renderer.setRenderTarget(fH),r.scissorTest=!1,VM(r,0,0,r.width,r.height)}_fromTexture(r,e){r.mapping===sf||r.mapping===af?this._setSize(r.image.length===0?16:r.image[0].width||r.image[0].image.width):this._setSize(r.image.width/4),fH=this._renderer.getRenderTarget();let i=e||this._allocateTargets();return this._textureToCubeUV(r,i),this._applyPMREM(i),this._cleanup(i),i}_allocateTargets(){let r=3*Math.max(this._cubeSize,112),e=4*this._cubeSize,i={magFilter:ai,minFilter:ai,generateMipmaps:!1,type:Go,format:Bs,encoding:wl,depthBuffer:!1},n=fce(r,e,i);if(this._pingPongRenderTarget===null||this._pingPongRenderTarget.width!==r||this._pingPongRenderTarget.height!==e){this._pingPongRenderTarget!==null&&this._dispose(),this._pingPongRenderTarget=fce(r,e,i);let{_lodMax:s}=this;({sizeLods:this._sizeLods,lodPlanes:this._lodPlanes,sigmas:this._sigmas}=Dmt(s)),this._blurMaterial=Cmt(s,r,e)}return n}_compileMaterial(r){let e=new Je(this._lodPlanes[0],r);this._renderer.compile(e,dH)}_sceneToCubeUV(r,e,i,n){let o=new qr(90,1,e,i),l=[1,-1,1,1,1,1],c=[1,1,1,-1,-1,-1],u=this._renderer,h=u.autoClear,p=u.toneMapping;u.getClearColor(pce),u.toneMapping=Lu,u.autoClear=!1;let d=new or({name:"PMREM.Background",side:Gn,depthWrite:!1,depthTest:!1}),f=new Je(new Qa,d),m=!1,g=r.background;g?g.isColor&&(d.color.copy(g),r.background=null,m=!0):(d.color.copy(pce),m=!0);for(let y=0;y<6;y++){let E=y%3;E===0?(o.up.set(0,l[y],0),o.lookAt(c[y],0,0)):E===1?(o.up.set(0,0,l[y]),o.lookAt(0,c[y],0)):(o.up.set(0,l[y],0),o.lookAt(0,0,c[y]));let b=this._cubeSize;VM(n,E*b,y>2?b:0,b,b),u.setRenderTarget(n),m&&u.render(f,o),u.render(r,o)}f.geometry.dispose(),f.material.dispose(),u.toneMapping=p,u.autoClear=h,r.background=g}_textureToCubeUV(r,e){let i=this._renderer,n=r.mapping===sf||r.mapping===af;n?(this._cubemapMaterial===null&&(this._cubemapMaterial=gce()),this._cubemapMaterial.uniforms.flipEnvMap.value=r.isRenderTargetTexture===!1?-1:1):this._equirectMaterial===null&&(this._equirectMaterial=mce());let s=n?this._cubemapMaterial:this._equirectMaterial,a=new Je(this._lodPlanes[0],s),o=s.uniforms;o.envMap.value=r;let l=this._cubeSize;VM(e,0,0,3*l,2*l),i.setRenderTarget(e),i.render(a,dH)}_applyPMREM(r){let e=this._renderer,i=e.autoClear;e.autoClear=!1;for(let n=1;n<this._lodPlanes.length;n++){let s=Math.sqrt(this._sigmas[n]*this._sigmas[n]-this._sigmas[n-1]*this._sigmas[n-1]),a=dce[(n-1)%dce.length];this._blur(r,n-1,n,s,a)}e.autoClear=i}_blur(r,e,i,n,s){let a=this._pingPongRenderTarget;this._halfBlur(r,a,e,i,n,"latitudinal",s),this._halfBlur(a,r,i,i,n,"longitudinal",s)}_halfBlur(r,e,i,n,s,a,o){let l=this._renderer,c=this._blurMaterial;a!=="latitudinal"&&a!=="longitudinal"&&console.error("blur direction must be either latitudinal or longitudinal!");let u=3,h=new Je(this._lodPlanes[n],c),p=c.uniforms,d=this._sizeLods[i]-1,f=isFinite(s)?Math.PI/(2*d):2*Math.PI/(2*lg-1),m=s/f,g=isFinite(s)?1+Math.floor(u*m):lg;g>lg&&console.warn(`sigmaRadians, ${s}, is too large and will clip, as it requested ${g} samples when the maximum is set to ${lg}`);let y=[],E=0;for(let P=0;P<lg;++P){let _=P/m,w=Math.exp(-_*_/2);y.push(w),P===0?E+=w:P<g&&(E+=2*w)}for(let P=0;P<y.length;P++)y[P]=y[P]/E;p.envMap.value=r.texture,p.samples.value=g,p.weights.value=y,p.latitudinal.value=a==="latitudinal",o&&(p.poleAxis.value=o);let{_lodMax:b}=this;p.dTheta.value=f,p.mipInt.value=b-i;let x=this._sizeLods[n],S=3*x*(n>b-Iy?n-b+Iy:0),D=4*(this._cubeSize-x);VM(e,S,D,3*x,2*x),l.setRenderTarget(e),l.render(h,dH)}};function Dmt(t){let r=[],e=[],i=[],n=t,s=t-Iy+1+hce.length;for(let a=0;a<s;a++){let o=Math.pow(2,n);e.push(o);let l=1/o;a>t-Iy?l=hce[a-t+Iy-1]:a===0&&(l=0),i.push(l);let c=1/(o-2),u=-c,h=1+c,p=[u,u,h,u,h,h,u,u,h,h,u,h],d=6,f=6,m=3,g=2,y=1,E=new Float32Array(m*f*d),b=new Float32Array(g*f*d),x=new Float32Array(y*f*d);for(let D=0;D<d;D++){let P=D%3*2/3-1,_=D>2?0:-1,w=[P,_,0,P+2/3,_,0,P+2/3,_+1,0,P,_,0,P+2/3,_+1,0,P,_+1,0];E.set(w,m*f*D),b.set(p,g*f*D);let F=[D,D,D,D,D,D];x.set(F,y*f*D)}let S=new it;S.setAttribute("position",new jt(E,m)),S.setAttribute("uv",new jt(b,g)),S.setAttribute("faceIndex",new jt(x,y)),r.push(S),n>Iy&&n--}return{lodPlanes:r,sizeLods:e,sigmas:i}}function fce(t,r,e){let i=new kr(t,r,e);return i.texture.mapping=By,i.texture.name="PMREM.cubeUv",i.scissorTest=!0,i}function VM(t,r,e,i,n){t.viewport.set(r,e,i,n),t.scissor.set(r,e,i,n)}function Cmt(t,r,e){let i=new Float32Array(lg),n=new A(0,1,0);return new Yt({name:"SphericalGaussianBlur",defines:{n:lg,CUBEUV_TEXEL_WIDTH:1/r,CUBEUV_TEXEL_HEIGHT:1/e,CUBEUV_MAX_MIP:`${t}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:i},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:n}},vertexShader:MU(),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:Fi,depthTest:!1,depthWrite:!1})}function mce(){return new Yt({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null}},vertexShader:MU(),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:Fi,depthTest:!1,depthWrite:!1})}function gce(){return new Yt({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:MU(),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:Fi,depthTest:!1,depthWrite:!1})}function MU(){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 Amt(t){let r=new WeakMap,e=null;function i(o){if(o&&o.isTexture){let l=o.mapping,c=l===mg||l===Zb,u=l===sf||l===af;if(c||u)if(o.isRenderTargetTexture&&o.needsPMREMUpdate===!0){o.needsPMREMUpdate=!1;let h=r.get(o);return e===null&&(e=new yp(t)),h=c?e.fromEquirectangular(o,h):e.fromCubemap(o,h),r.set(o,h),h.texture}else{if(r.has(o))return r.get(o).texture;{let h=o.image;if(c&&h&&h.height>0||u&&h&&n(h)){e===null&&(e=new yp(t));let p=c?e.fromEquirectangular(o):e.fromCubemap(o);return r.set(o,p),o.addEventListener("dispose",s),p.texture}else return null}}}return o}function n(o){let l=0,c=6;for(let u=0;u<c;u++)o[u]!==void 0&&l++;return l===c}function s(o){let l=o.target;l.removeEventListener("dispose",s);let c=r.get(l);c!==void 0&&(r.delete(l),c.dispose())}function a(){r=new WeakMap,e!==null&&(e.dispose(),e=null)}return{get:i,dispose:a}}function Omt(t){let r={};function e(i){if(r[i]!==void 0)return r[i];let n;switch(i){case"WEBGL_depth_texture":n=t.getExtension("WEBGL_depth_texture")||t.getExtension("MOZ_WEBGL_depth_texture")||t.getExtension("WEBKIT_WEBGL_depth_texture");break;case"EXT_texture_filter_anisotropic":n=t.getExtension("EXT_texture_filter_anisotropic")||t.getExtension("MOZ_EXT_texture_filter_anisotropic")||t.getExtension("WEBKIT_EXT_texture_filter_anisotropic");break;case"WEBGL_compressed_texture_s3tc":n=t.getExtension("WEBGL_compressed_texture_s3tc")||t.getExtension("MOZ_WEBGL_compressed_texture_s3tc")||t.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");break;case"WEBGL_compressed_texture_pvrtc":n=t.getExtension("WEBGL_compressed_texture_pvrtc")||t.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc");break;default:n=t.getExtension(i)}return r[i]=n,n}return{has:function(i){return e(i)!==null},init:function(i){i.isWebGL2?e("EXT_color_buffer_float"):(e("WEBGL_depth_texture"),e("OES_texture_float"),e("OES_texture_half_float"),e("OES_texture_half_float_linear"),e("OES_standard_derivatives"),e("OES_element_index_uint"),e("OES_vertex_array_object"),e("ANGLE_instanced_arrays")),e("OES_texture_float_linear"),e("EXT_color_buffer_half_float"),e("WEBGL_multisampled_render_to_texture")},get:function(i){let n=e(i);return n===null&&console.warn("THREE.WebGLRenderer: "+i+" extension not supported."),n}}}function Pmt(t,r,e,i){let n={},s=new WeakMap;function a(h){let p=h.target;p.index!==null&&r.remove(p.index);for(let f in p.attributes)r.remove(p.attributes[f]);p.removeEventListener("dispose",a),delete n[p.id];let d=s.get(p);d&&(r.remove(d),s.delete(p)),i.releaseStatesOfGeometry(p),p.isInstancedBufferGeometry===!0&&delete p._maxInstanceCount,e.memory.geometries--}function o(h,p){return n[p.id]===!0||(p.addEventListener("dispose",a),n[p.id]=!0,e.memory.geometries++),p}function l(h){let p=h.attributes;for(let f in p)r.update(p[f],34962);let d=h.morphAttributes;for(let f in d){let m=d[f];for(let g=0,y=m.length;g<y;g++)r.update(m[g],34962)}}function c(h){let p=[],d=h.index,f=h.attributes.position,m=0;if(d!==null){let E=d.array;m=d.version;for(let b=0,x=E.length;b<x;b+=3){let S=E[b+0],D=E[b+1],P=E[b+2];p.push(S,D,D,P,P,S)}}else{let E=f.array;m=f.version;for(let b=0,x=E.length/3-1;b<x;b+=3){let S=b+0,D=b+1,P=b+2;p.push(S,D,D,P,P,S)}}let g=new(che(p)?ix:gg)(p,1);g.version=m;let y=s.get(h);y&&r.remove(y),s.set(h,g)}function u(h){let p=s.get(h);if(p){let d=h.index;d!==null&&p.version<d.version&&c(h)}else c(h);return s.get(h)}return{get:o,update:l,getWireframeAttribute:u}}function Nmt(t,r,e,i){let n=i.isWebGL2,s;function a(p){s=p}let o,l;function c(p){o=p.type,l=p.bytesPerElement}function u(p,d){t.drawElements(s,d,o,p*l),e.update(d,s,1)}function h(p,d,f){if(f===0)return;let m,g;if(n)m=t,g="drawElementsInstanced";else if(m=r.get("ANGLE_instanced_arrays"),g="drawElementsInstancedANGLE",m===null){console.error("THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");return}m[g](s,d,o,p*l,f),e.update(d,s,f)}this.setMode=a,this.setIndex=c,this.render=u,this.renderInstances=h}function Lmt(t){let r={geometries:0,textures:0},e={frame:0,calls:0,triangles:0,points:0,lines:0};function i(s,a,o){switch(e.calls++,a){case 4:e.triangles+=o*(s/3);break;case 1:e.lines+=o*(s/2);break;case 3:e.lines+=o*(s-1);break;case 2:e.lines+=o*s;break;case 0:e.points+=o*s;break;default:console.error("THREE.WebGLInfo: Unknown draw mode:",a);break}}function n(){e.frame++,e.calls=0,e.triangles=0,e.points=0,e.lines=0}return{memory:r,render:e,programs:null,autoReset:!0,reset:n,update:i}}function Fmt(t,r){return t[0]-r[0]}function Hmt(t,r){return Math.abs(r[1])-Math.abs(t[1])}function Umt(t,r,e){let i={},n=new Float32Array(8),s=new WeakMap,a=new Jr,o=[];for(let c=0;c<8;c++)o[c]=[c,0];function l(c,u,h,p){let d=c.morphTargetInfluences;if(r.isWebGL2===!0){let f=u.morphAttributes.position||u.morphAttributes.normal||u.morphAttributes.color,m=f!==void 0?f.length:0,g=s.get(u);if(g===void 0||g.count!==m){let N=function(){he.dispose(),s.delete(u),u.removeEventListener("dispose",N)};g!==void 0&&g.texture.dispose();let b=u.morphAttributes.position!==void 0,x=u.morphAttributes.normal!==void 0,S=u.morphAttributes.color!==void 0,D=u.morphAttributes.position||[],P=u.morphAttributes.normal||[],_=u.morphAttributes.color||[],w=0;b===!0&&(w=1),x===!0&&(w=2),S===!0&&(w=3);let F=u.attributes.position.count*w,X=1;F>r.maxTextureSize&&(X=Math.ceil(F/r.maxTextureSize),F=r.maxTextureSize);let H=new Float32Array(F*X*4*m),he=new Ry(H,F,X,m);he.type=_a,he.needsUpdate=!0;let C=w*4;for(let k=0;k<m;k++){let G=D[k],U=P[k],j=_[k],ee=F*X*4*k;for(let ae=0;ae<G.count;ae++){let se=ae*C;b===!0&&(a.fromBufferAttribute(G,ae),H[ee+se+0]=a.x,H[ee+se+1]=a.y,H[ee+se+2]=a.z,H[ee+se+3]=0),x===!0&&(a.fromBufferAttribute(U,ae),H[ee+se+4]=a.x,H[ee+se+5]=a.y,H[ee+se+6]=a.z,H[ee+se+7]=0),S===!0&&(a.fromBufferAttribute(j,ae),H[ee+se+8]=a.x,H[ee+se+9]=a.y,H[ee+se+10]=a.z,H[ee+se+11]=j.itemSize===4?a.w:1)}}g={count:m,texture:he,size:new le(F,X)},s.set(u,g),u.addEventListener("dispose",N)}let y=0;for(let b=0;b<d.length;b++)y+=d[b];let E=u.morphTargetsRelative?1:1-y;p.getUniforms().setValue(t,"morphTargetBaseInfluence",E),p.getUniforms().setValue(t,"morphTargetInfluences",d),p.getUniforms().setValue(t,"morphTargetsTexture",g.texture,e),p.getUniforms().setValue(t,"morphTargetsTextureSize",g.size)}else{let f=d===void 0?0:d.length,m=i[u.id];if(m===void 0||m.length!==f){m=[];for(let x=0;x<f;x++)m[x]=[x,0];i[u.id]=m}for(let x=0;x<f;x++){let S=m[x];S[0]=x,S[1]=d[x]}m.sort(Hmt);for(let x=0;x<8;x++)x<f&&m[x][1]?(o[x][0]=m[x][0],o[x][1]=m[x][1]):(o[x][0]=Number.MAX_SAFE_INTEGER,o[x][1]=0);o.sort(Fmt);let g=u.morphAttributes.position,y=u.morphAttributes.normal,E=0;for(let x=0;x<8;x++){let S=o[x],D=S[0],P=S[1];D!==Number.MAX_SAFE_INTEGER&&P?(g&&u.getAttribute("morphTarget"+x)!==g[D]&&u.setAttribute("morphTarget"+x,g[D]),y&&u.getAttribute("morphNormal"+x)!==y[D]&&u.setAttribute("morphNormal"+x,y[D]),n[x]=P,E+=P):(g&&u.hasAttribute("morphTarget"+x)===!0&&u.deleteAttribute("morphTarget"+x),y&&u.hasAttribute("morphNormal"+x)===!0&&u.deleteAttribute("morphNormal"+x),n[x]=0)}let b=u.morphTargetsRelative?1:1-E;p.getUniforms().setValue(t,"morphTargetBaseInfluence",b),p.getUniforms().setValue(t,"morphTargetInfluences",n)}}return{update:l}}function Bmt(t,r,e,i){let n=new WeakMap;function s(l){let c=i.render.frame,u=l.geometry,h=r.get(l,u);return n.get(h)!==c&&(r.update(h),n.set(h,c)),l.isInstancedMesh&&(l.hasEventListener("dispose",o)===!1&&l.addEventListener("dispose",o),e.update(l.instanceMatrix,34962),l.instanceColor!==null&&e.update(l.instanceColor,34962)),h}function a(){n=new WeakMap}function o(l){let c=l.target;c.removeEventListener("dispose",o),e.remove(c.instanceMatrix),c.instanceColor!==null&&e.remove(c.instanceColor)}return{update:s,dispose:a}}var dhe=new Hi,fhe=new Ry,mhe=new rx,ghe=new yg,vce=[],yce=[],Tce=new Float32Array(16),Ece=new Float32Array(9),bce=new Float32Array(4);function Vy(t,r,e){let i=t[0];if(i<=0||i>0)return t;let n=r*e,s=vce[n];if(s===void 0&&(s=new Float32Array(n),vce[n]=s),r!==0){i.toArray(s,0);for(let a=1,o=0;a!==r;++a)o+=e,t[a].toArray(s,o)}return s}function vs(t,r){if(t.length!==r.length)return!1;for(let e=0,i=t.length;e<i;e++)if(t[e]!==r[e])return!1;return!0}function ys(t,r){for(let e=0,i=r.length;e<i;e++)t[e]=r[e]}function ZD(t,r){let e=yce[r];e===void 0&&(e=new Int32Array(r),yce[r]=e);for(let i=0;i!==r;++i)e[i]=t.allocateTextureUnit();return e}function kmt(t,r){let e=this.cache;e[0]!==r&&(t.uniform1f(this.addr,r),e[0]=r)}function Gmt(t,r){let e=this.cache;if(r.x!==void 0)(e[0]!==r.x||e[1]!==r.y)&&(t.uniform2f(this.addr,r.x,r.y),e[0]=r.x,e[1]=r.y);else{if(vs(e,r))return;t.uniform2fv(this.addr,r),ys(e,r)}}function Vmt(t,r){let e=this.cache;if(r.x!==void 0)(e[0]!==r.x||e[1]!==r.y||e[2]!==r.z)&&(t.uniform3f(this.addr,r.x,r.y,r.z),e[0]=r.x,e[1]=r.y,e[2]=r.z);else if(r.r!==void 0)(e[0]!==r.r||e[1]!==r.g||e[2]!==r.b)&&(t.uniform3f(this.addr,r.r,r.g,r.b),e[0]=r.r,e[1]=r.g,e[2]=r.b);else{if(vs(e,r))return;t.uniform3fv(this.addr,r),ys(e,r)}}function zmt(t,r){let e=this.cache;if(r.x!==void 0)(e[0]!==r.x||e[1]!==r.y||e[2]!==r.z||e[3]!==r.w)&&(t.uniform4f(this.addr,r.x,r.y,r.z,r.w),e[0]=r.x,e[1]=r.y,e[2]=r.z,e[3]=r.w);else{if(vs(e,r))return;t.uniform4fv(this.addr,r),ys(e,r)}}function jmt(t,r){let e=this.cache,i=r.elements;if(i===void 0){if(vs(e,r))return;t.uniformMatrix2fv(this.addr,!1,r),ys(e,r)}else{if(vs(e,i))return;bce.set(i),t.uniformMatrix2fv(this.addr,!1,bce),ys(e,i)}}function Wmt(t,r){let e=this.cache,i=r.elements;if(i===void 0){if(vs(e,r))return;t.uniformMatrix3fv(this.addr,!1,r),ys(e,r)}else{if(vs(e,i))return;Ece.set(i),t.uniformMatrix3fv(this.addr,!1,Ece),ys(e,i)}}function qmt(t,r){let e=this.cache,i=r.elements;if(i===void 0){if(vs(e,r))return;t.uniformMatrix4fv(this.addr,!1,r),ys(e,r)}else{if(vs(e,i))return;Tce.set(i),t.uniformMatrix4fv(this.addr,!1,Tce),ys(e,i)}}function Ymt(t,r){let e=this.cache;e[0]!==r&&(t.uniform1i(this.addr,r),e[0]=r)}function Xmt(t,r){let e=this.cache;if(r.x!==void 0)(e[0]!==r.x||e[1]!==r.y)&&(t.uniform2i(this.addr,r.x,r.y),e[0]=r.x,e[1]=r.y);else{if(vs(e,r))return;t.uniform2iv(this.addr,r),ys(e,r)}}function $mt(t,r){let e=this.cache;if(r.x!==void 0)(e[0]!==r.x||e[1]!==r.y||e[2]!==r.z)&&(t.uniform3i(this.addr,r.x,r.y,r.z),e[0]=r.x,e[1]=r.y,e[2]=r.z);else{if(vs(e,r))return;t.uniform3iv(this.addr,r),ys(e,r)}}function Zmt(t,r){let e=this.cache;if(r.x!==void 0)(e[0]!==r.x||e[1]!==r.y||e[2]!==r.z||e[3]!==r.w)&&(t.uniform4i(this.addr,r.x,r.y,r.z,r.w),e[0]=r.x,e[1]=r.y,e[2]=r.z,e[3]=r.w);else{if(vs(e,r))return;t.uniform4iv(this.addr,r),ys(e,r)}}function Kmt(t,r){let e=this.cache;e[0]!==r&&(t.uniform1ui(this.addr,r),e[0]=r)}function Jmt(t,r){let e=this.cache;if(r.x!==void 0)(e[0]!==r.x||e[1]!==r.y)&&(t.uniform2ui(this.addr,r.x,r.y),e[0]=r.x,e[1]=r.y);else{if(vs(e,r))return;t.uniform2uiv(this.addr,r),ys(e,r)}}function Qmt(t,r){let e=this.cache;if(r.x!==void 0)(e[0]!==r.x||e[1]!==r.y||e[2]!==r.z)&&(t.uniform3ui(this.addr,r.x,r.y,r.z),e[0]=r.x,e[1]=r.y,e[2]=r.z);else{if(vs(e,r))return;t.uniform3uiv(this.addr,r),ys(e,r)}}function egt(t,r){let e=this.cache;if(r.x!==void 0)(e[0]!==r.x||e[1]!==r.y||e[2]!==r.z||e[3]!==r.w)&&(t.uniform4ui(this.addr,r.x,r.y,r.z,r.w),e[0]=r.x,e[1]=r.y,e[2]=r.z,e[3]=r.w);else{if(vs(e,r))return;t.uniform4uiv(this.addr,r),ys(e,r)}}function tgt(t,r,e){let i=this.cache,n=e.allocateTextureUnit();i[0]!==n&&(t.uniform1i(this.addr,n),i[0]=n),e.setTexture2D(r||dhe,n)}function rgt(t,r,e){let i=this.cache,n=e.allocateTextureUnit();i[0]!==n&&(t.uniform1i(this.addr,n),i[0]=n),e.setTexture3D(r||mhe,n)}function igt(t,r,e){let i=this.cache,n=e.allocateTextureUnit();i[0]!==n&&(t.uniform1i(this.addr,n),i[0]=n),e.setTextureCube(r||ghe,n)}function ngt(t,r,e){let i=this.cache,n=e.allocateTextureUnit();i[0]!==n&&(t.uniform1i(this.addr,n),i[0]=n),e.setTexture2DArray(r||fhe,n)}function sgt(t){switch(t){case 5126:return kmt;case 35664:return Gmt;case 35665:return Vmt;case 35666:return zmt;case 35674:return jmt;case 35675:return Wmt;case 35676:return qmt;case 5124:case 35670:return Ymt;case 35667:case 35671:return Xmt;case 35668:case 35672:return $mt;case 35669:case 35673:return Zmt;case 5125:return Kmt;case 36294:return Jmt;case 36295:return Qmt;case 36296:return egt;case 35678:case 36198:case 36298:case 36306:case 35682:return tgt;case 35679:case 36299:case 36307:return rgt;case 35680:case 36300:case 36308:case 36293:return igt;case 36289:case 36303:case 36311:case 36292:return ngt}}function agt(t,r){t.uniform1fv(this.addr,r)}function ogt(t,r){let e=Vy(r,this.size,2);t.uniform2fv(this.addr,e)}function lgt(t,r){let e=Vy(r,this.size,3);t.uniform3fv(this.addr,e)}function cgt(t,r){let e=Vy(r,this.size,4);t.uniform4fv(this.addr,e)}function ugt(t,r){let e=Vy(r,this.size,4);t.uniformMatrix2fv(this.addr,!1,e)}function hgt(t,r){let e=Vy(r,this.size,9);t.uniformMatrix3fv(this.addr,!1,e)}function pgt(t,r){let e=Vy(r,this.size,16);t.uniformMatrix4fv(this.addr,!1,e)}function dgt(t,r){t.uniform1iv(this.addr,r)}function fgt(t,r){t.uniform2iv(this.addr,r)}function mgt(t,r){t.uniform3iv(this.addr,r)}function ggt(t,r){t.uniform4iv(this.addr,r)}function vgt(t,r){t.uniform1uiv(this.addr,r)}function ygt(t,r){t.uniform2uiv(this.addr,r)}function Tgt(t,r){t.uniform3uiv(this.addr,r)}function Egt(t,r){t.uniform4uiv(this.addr,r)}function bgt(t,r,e){let i=this.cache,n=r.length,s=ZD(e,n);vs(i,s)||(t.uniform1iv(this.addr,s),ys(i,s));for(let a=0;a!==n;++a)e.setTexture2D(r[a]||dhe,s[a])}function xgt(t,r,e){let i=this.cache,n=r.length,s=ZD(e,n);vs(i,s)||(t.uniform1iv(this.addr,s),ys(i,s));for(let a=0;a!==n;++a)e.setTexture3D(r[a]||mhe,s[a])}function Igt(t,r,e){let i=this.cache,n=r.length,s=ZD(e,n);vs(i,s)||(t.uniform1iv(this.addr,s),ys(i,s));for(let a=0;a!==n;++a)e.setTextureCube(r[a]||ghe,s[a])}function Sgt(t,r,e){let i=this.cache,n=r.length,s=ZD(e,n);vs(i,s)||(t.uniform1iv(this.addr,s),ys(i,s));for(let a=0;a!==n;++a)e.setTexture2DArray(r[a]||fhe,s[a])}function _gt(t){switch(t){case 5126:return agt;case 35664:return ogt;case 35665:return lgt;case 35666:return cgt;case 35674:return ugt;case 35675:return hgt;case 35676:return pgt;case 5124:case 35670:return dgt;case 35667:case 35671:return fgt;case 35668:case 35672:return mgt;case 35669:case 35673:return ggt;case 5125:return vgt;case 36294:return ygt;case 36295:return Tgt;case 36296:return Egt;case 35678:case 36198:case 36298:case 36306:case 35682:return bgt;case 35679:case 36299:case 36307:return xgt;case 35680:case 36300:case 36308:case 36293:return Igt;case 36289:case 36303:case 36311:case 36292:return Sgt}}var p4=class{constructor(r,e,i){this.id=r,this.addr=i,this.cache=[],this.setValue=sgt(e.type)}},d4=class{constructor(r,e,i){this.id=r,this.addr=i,this.cache=[],this.size=e.size,this.setValue=_gt(e.type)}},f4=class{constructor(r){this.id=r,this.seq=[],this.map={}}setValue(r,e,i){let n=this.seq;for(let s=0,a=n.length;s!==a;++s){let o=n[s];o.setValue(r,e[o.id],i)}}},mH=/(\w+)(\])?(\[|\.)?/g;function xce(t,r){t.seq.push(r),t.map[r.id]=r}function wgt(t,r,e){let i=t.name,n=i.length;for(mH.lastIndex=0;;){let s=mH.exec(i),a=mH.lastIndex,o=s[1],l=s[2]==="]",c=s[3];if(l&&(o=o|0),c===void 0||c==="["&&a+2===n){xce(e,c===void 0?new p4(o,t,r):new d4(o,t,r));break}else{let h=e.map[o];h===void 0&&(h=new f4(o),xce(e,h)),e=h}}}var _y=class{constructor(r,e){this.seq=[],this.map={};let i=r.getProgramParameter(e,35718);for(let n=0;n<i;++n){let s=r.getActiveUniform(e,n),a=r.getUniformLocation(e,s.name);wgt(s,a,this)}}setValue(r,e,i,n){let s=this.map[e];s!==void 0&&s.setValue(r,i,n)}setOptional(r,e,i){let n=e[i];n!==void 0&&this.setValue(r,i,n)}static upload(r,e,i,n){for(let s=0,a=e.length;s!==a;++s){let o=e[s],l=i[o.id];l.needsUpdate!==!1&&o.setValue(r,l.value,n)}}static seqWithValue(r,e){let i=[];for(let n=0,s=r.length;n!==s;++n){let a=r[n];a.id in e&&i.push(a)}return i}};function Ice(t,r,e){let i=t.createShader(r);return t.shaderSource(i,e),t.compileShader(i),i}var Rgt=0;function Mgt(t,r){let e=t.split(`
|
||
`),i=[],n=Math.max(r-6,0),s=Math.min(r+6,e.length);for(let a=n;a<s;a++){let o=a+1;i.push(`${o===r?">":" "} ${o}: ${e[a]}`)}return i.join(`
|
||
`)}function Dgt(t){switch(t){case wl:return["Linear","( value )"];case yr:return["sRGB","( value )"];default:return console.warn("THREE.WebGLProgram: Unsupported encoding:",t),["Linear","( value )"]}}function Sce(t,r,e){let i=t.getShaderParameter(r,35713),n=t.getShaderInfoLog(r).trim();if(i&&n==="")return"";let s=/ERROR: 0:(\d+)/.exec(n);if(s){let a=parseInt(s[1]);return e.toUpperCase()+`
|
||
|
||
`+n+`
|
||
|
||
`+Mgt(t.getShaderSource(r),a)}else return n}function Cgt(t,r){let e=Dgt(r);return"vec4 "+t+"( vec4 value ) { return LinearTo"+e[0]+e[1]+"; }"}function Agt(t,r){let e;switch(r){case Uue:e="Linear";break;case Bue:e="Reinhard";break;case kue:e="OptimizedCineon";break;case Gue:e="ACESFilmic";break;case Vue:e="Custom";break;default:console.warn("THREE.WebGLProgram: Unsupported toneMapping:",r),e="Linear"}return"vec3 "+t+"( vec3 color ) { return "+e+"ToneMapping( color ); }"}function Ogt(t){return[t.extensionDerivatives||t.envMapCubeUVHeight||t.bumpMap||t.tangentSpaceNormalMap||t.clearcoatNormalMap||t.flatShading||t.shaderID==="physical"?"#extension GL_OES_standard_derivatives : enable":"",(t.extensionFragDepth||t.logarithmicDepthBuffer)&&t.rendererExtensionFragDepth?"#extension GL_EXT_frag_depth : enable":"",t.extensionDrawBuffers&&t.rendererExtensionDrawBuffers?"#extension GL_EXT_draw_buffers : require":"",(t.extensionShaderTextureLOD||t.envMap||t.transmission)&&t.rendererExtensionShaderTextureLod?"#extension GL_EXT_shader_texture_lod : enable":""].filter(Wb).join(`
|
||
`)}function Pgt(t){let r=[];for(let e in t){let i=t[e];i!==!1&&r.push("#define "+e+" "+i)}return r.join(`
|
||
`)}function Ngt(t,r){let e={},i=t.getProgramParameter(r,35721);for(let n=0;n<i;n++){let s=t.getActiveAttrib(r,n),a=s.name,o=1;s.type===35674&&(o=2),s.type===35675&&(o=3),s.type===35676&&(o=4),e[a]={type:s.type,location:t.getAttribLocation(r,a),locationSize:o}}return e}function Wb(t){return t!==""}function _ce(t,r){let e=r.numSpotLightShadows+r.numSpotLightMaps-r.numSpotLightShadowsWithMaps;return t.replace(/NUM_DIR_LIGHTS/g,r.numDirLights).replace(/NUM_SPOT_LIGHTS/g,r.numSpotLights).replace(/NUM_SPOT_LIGHT_MAPS/g,r.numSpotLightMaps).replace(/NUM_SPOT_LIGHT_COORDS/g,e).replace(/NUM_RECT_AREA_LIGHTS/g,r.numRectAreaLights).replace(/NUM_POINT_LIGHTS/g,r.numPointLights).replace(/NUM_HEMI_LIGHTS/g,r.numHemiLights).replace(/NUM_DIR_LIGHT_SHADOWS/g,r.numDirLightShadows).replace(/NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS/g,r.numSpotLightShadowsWithMaps).replace(/NUM_SPOT_LIGHT_SHADOWS/g,r.numSpotLightShadows).replace(/NUM_POINT_LIGHT_SHADOWS/g,r.numPointLightShadows)}function wce(t,r){return t.replace(/NUM_CLIPPING_PLANES/g,r.numClippingPlanes).replace(/UNION_CLIPPING_PLANES/g,r.numClippingPlanes-r.numClipIntersection)}var Lgt=/^[ \t]*#include +<([\w\d./]+)>/gm;function m4(t){return t.replace(Lgt,Fgt)}function Fgt(t,r){let e=Wr[r];if(e===void 0)throw new Error("Can not resolve #include <"+r+">");return m4(e)}var Hgt=/#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 Rce(t){return t.replace(Hgt,Ugt)}function Ugt(t,r,e,i){let n="";for(let s=parseInt(r);s<parseInt(e);s++)n+=i.replace(/\[\s*i\s*\]/g,"[ "+s+" ]").replace(/UNROLLED_LOOP_INDEX/g,s);return n}function Mce(t){let r="precision "+t.precision+` float;
|
||
precision `+t.precision+" int;";return t.precision==="highp"?r+=`
|
||
#define HIGH_PRECISION`:t.precision==="mediump"?r+=`
|
||
#define MEDIUM_PRECISION`:t.precision==="lowp"&&(r+=`
|
||
#define LOW_PRECISION`),r}function Bgt(t){let r="SHADOWMAP_TYPE_BASIC";return t.shadowMapType===IU?r="SHADOWMAP_TYPE_PCF":t.shadowMapType===Ly?r="SHADOWMAP_TYPE_PCF_SOFT":t.shadowMapType===by&&(r="SHADOWMAP_TYPE_VSM"),r}function kgt(t){let r="ENVMAP_TYPE_CUBE";if(t.envMap)switch(t.envMapMode){case sf:case af:r="ENVMAP_TYPE_CUBE";break;case By:r="ENVMAP_TYPE_CUBE_UV";break}return r}function Ggt(t){let r="ENVMAP_MODE_REFLECTION";if(t.envMap)switch(t.envMapMode){case af:r="ENVMAP_MODE_REFRACTION";break}return r}function Vgt(t){let r="ENVMAP_BLENDING_NONE";if(t.envMap)switch(t.combine){case Sx:r="ENVMAP_BLENDING_MULTIPLY";break;case Fue:r="ENVMAP_BLENDING_MIX";break;case Hue:r="ENVMAP_BLENDING_ADD";break}return r}function zgt(t){let r=t.envMapCubeUVHeight;if(r===null)return null;let e=Math.log2(r)-2,i=1/r;return{texelWidth:1/(3*Math.max(Math.pow(2,e),7*16)),texelHeight:i,maxMip:e}}function jgt(t,r,e,i){let n=t.getContext(),s=e.defines,a=e.vertexShader,o=e.fragmentShader,l=Bgt(e),c=kgt(e),u=Ggt(e),h=Vgt(e),p=zgt(e),d=e.isWebGL2?"":Ogt(e),f=Pgt(s),m=n.createProgram(),g,y,E=e.glslVersion?"#version "+e.glslVersion+`
|
||
`:"";e.isRawShaderMaterial?(g=[f].filter(Wb).join(`
|
||
`),g.length>0&&(g+=`
|
||
`),y=[d,f].filter(Wb).join(`
|
||
`),y.length>0&&(y+=`
|
||
`)):(g=[Mce(e),"#define SHADER_NAME "+e.shaderName,f,e.instancing?"#define USE_INSTANCING":"",e.instancingColor?"#define USE_INSTANCING_COLOR":"",e.supportsVertexTextures?"#define VERTEX_TEXTURES":"",e.useFog&&e.fog?"#define USE_FOG":"",e.useFog&&e.fogExp2?"#define FOG_EXP2":"",e.map?"#define USE_MAP":"",e.envMap?"#define USE_ENVMAP":"",e.envMap?"#define "+u:"",e.lightMap?"#define USE_LIGHTMAP":"",e.aoMap?"#define USE_AOMAP":"",e.emissiveMap?"#define USE_EMISSIVEMAP":"",e.bumpMap?"#define USE_BUMPMAP":"",e.normalMap?"#define USE_NORMALMAP":"",e.normalMap&&e.objectSpaceNormalMap?"#define OBJECTSPACE_NORMALMAP":"",e.normalMap&&e.tangentSpaceNormalMap?"#define TANGENTSPACE_NORMALMAP":"",e.clearcoatMap?"#define USE_CLEARCOATMAP":"",e.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",e.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",e.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",e.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",e.displacementMap&&e.supportsVertexTextures?"#define USE_DISPLACEMENTMAP":"",e.specularMap?"#define USE_SPECULARMAP":"",e.specularIntensityMap?"#define USE_SPECULARINTENSITYMAP":"",e.specularColorMap?"#define USE_SPECULARCOLORMAP":"",e.roughnessMap?"#define USE_ROUGHNESSMAP":"",e.metalnessMap?"#define USE_METALNESSMAP":"",e.alphaMap?"#define USE_ALPHAMAP":"",e.transmission?"#define USE_TRANSMISSION":"",e.transmissionMap?"#define USE_TRANSMISSIONMAP":"",e.thicknessMap?"#define USE_THICKNESSMAP":"",e.sheenColorMap?"#define USE_SHEENCOLORMAP":"",e.sheenRoughnessMap?"#define USE_SHEENROUGHNESSMAP":"",e.vertexTangents?"#define USE_TANGENT":"",e.vertexColors?"#define USE_COLOR":"",e.vertexAlphas?"#define USE_COLOR_ALPHA":"",e.vertexUvs?"#define USE_UV":"",e.uvsVertexOnly?"#define UVS_VERTEX_ONLY":"",e.flatShading?"#define FLAT_SHADED":"",e.skinning?"#define USE_SKINNING":"",e.morphTargets?"#define USE_MORPHTARGETS":"",e.morphNormals&&e.flatShading===!1?"#define USE_MORPHNORMALS":"",e.morphColors&&e.isWebGL2?"#define USE_MORPHCOLORS":"",e.morphTargetsCount>0&&e.isWebGL2?"#define MORPHTARGETS_TEXTURE":"",e.morphTargetsCount>0&&e.isWebGL2?"#define MORPHTARGETS_TEXTURE_STRIDE "+e.morphTextureStride:"",e.morphTargetsCount>0&&e.isWebGL2?"#define MORPHTARGETS_COUNT "+e.morphTargetsCount:"",e.doubleSided?"#define DOUBLE_SIDED":"",e.flipSided?"#define FLIP_SIDED":"",e.shadowMapEnabled?"#define USE_SHADOWMAP":"",e.shadowMapEnabled?"#define "+l:"",e.sizeAttenuation?"#define USE_SIZEATTENUATION":"",e.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",e.logarithmicDepthBuffer&&e.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"","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","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#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(Wb).join(`
|
||
`),y=[d,Mce(e),"#define SHADER_NAME "+e.shaderName,f,e.useFog&&e.fog?"#define USE_FOG":"",e.useFog&&e.fogExp2?"#define FOG_EXP2":"",e.map?"#define USE_MAP":"",e.matcap?"#define USE_MATCAP":"",e.envMap?"#define USE_ENVMAP":"",e.envMap?"#define "+c:"",e.envMap?"#define "+u:"",e.envMap?"#define "+h:"",p?"#define CUBEUV_TEXEL_WIDTH "+p.texelWidth:"",p?"#define CUBEUV_TEXEL_HEIGHT "+p.texelHeight:"",p?"#define CUBEUV_MAX_MIP "+p.maxMip+".0":"",e.lightMap?"#define USE_LIGHTMAP":"",e.aoMap?"#define USE_AOMAP":"",e.emissiveMap?"#define USE_EMISSIVEMAP":"",e.bumpMap?"#define USE_BUMPMAP":"",e.normalMap?"#define USE_NORMALMAP":"",e.normalMap&&e.objectSpaceNormalMap?"#define OBJECTSPACE_NORMALMAP":"",e.normalMap&&e.tangentSpaceNormalMap?"#define TANGENTSPACE_NORMALMAP":"",e.clearcoat?"#define USE_CLEARCOAT":"",e.clearcoatMap?"#define USE_CLEARCOATMAP":"",e.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",e.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",e.iridescence?"#define USE_IRIDESCENCE":"",e.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",e.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",e.specularMap?"#define USE_SPECULARMAP":"",e.specularIntensityMap?"#define USE_SPECULARINTENSITYMAP":"",e.specularColorMap?"#define USE_SPECULARCOLORMAP":"",e.roughnessMap?"#define USE_ROUGHNESSMAP":"",e.metalnessMap?"#define USE_METALNESSMAP":"",e.alphaMap?"#define USE_ALPHAMAP":"",e.alphaTest?"#define USE_ALPHATEST":"",e.sheen?"#define USE_SHEEN":"",e.sheenColorMap?"#define USE_SHEENCOLORMAP":"",e.sheenRoughnessMap?"#define USE_SHEENROUGHNESSMAP":"",e.transmission?"#define USE_TRANSMISSION":"",e.transmissionMap?"#define USE_TRANSMISSIONMAP":"",e.thicknessMap?"#define USE_THICKNESSMAP":"",e.decodeVideoTexture?"#define DECODE_VIDEO_TEXTURE":"",e.vertexTangents?"#define USE_TANGENT":"",e.vertexColors||e.instancingColor?"#define USE_COLOR":"",e.vertexAlphas?"#define USE_COLOR_ALPHA":"",e.vertexUvs?"#define USE_UV":"",e.uvsVertexOnly?"#define UVS_VERTEX_ONLY":"",e.gradientMap?"#define USE_GRADIENTMAP":"",e.flatShading?"#define FLAT_SHADED":"",e.doubleSided?"#define DOUBLE_SIDED":"",e.flipSided?"#define FLIP_SIDED":"",e.shadowMapEnabled?"#define USE_SHADOWMAP":"",e.shadowMapEnabled?"#define "+l:"",e.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",e.physicallyCorrectLights?"#define PHYSICALLY_CORRECT_LIGHTS":"",e.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",e.logarithmicDepthBuffer&&e.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",e.toneMapping!==Lu?"#define TONE_MAPPING":"",e.toneMapping!==Lu?Wr.tonemapping_pars_fragment:"",e.toneMapping!==Lu?Agt("toneMapping",e.toneMapping):"",e.dithering?"#define DITHERING":"",e.opaque?"#define OPAQUE":"",Wr.encodings_pars_fragment,Cgt("linearToOutputTexel",e.outputEncoding),e.useDepthPacking?"#define DEPTH_PACKING "+e.depthPacking:"",`
|
||
`].filter(Wb).join(`
|
||
`)),a=m4(a),a=_ce(a,e),a=wce(a,e),o=m4(o),o=_ce(o,e),o=wce(o,e),a=Rce(a),o=Rce(o),e.isWebGL2&&e.isRawShaderMaterial!==!0&&(E=`#version 300 es
|
||
`,g=["precision mediump sampler2DArray;","#define attribute in","#define varying out","#define texture2D texture"].join(`
|
||
`)+`
|
||
`+g,y=["#define varying in",e.glslVersion===e4?"":"layout(location = 0) out highp vec4 pc_fragColor;",e.glslVersion===e4?"":"#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(`
|
||
`)+`
|
||
`+y);let b=E+g+a,x=E+y+o,S=Ice(n,35633,b),D=Ice(n,35632,x);if(n.attachShader(m,S),n.attachShader(m,D),e.index0AttributeName!==void 0?n.bindAttribLocation(m,0,e.index0AttributeName):e.morphTargets===!0&&n.bindAttribLocation(m,0,"position"),n.linkProgram(m),t.debug.checkShaderErrors){let w=n.getProgramInfoLog(m).trim(),F=n.getShaderInfoLog(S).trim(),X=n.getShaderInfoLog(D).trim(),H=!0,he=!0;if(n.getProgramParameter(m,35714)===!1){H=!1;let C=Sce(n,S,"vertex"),N=Sce(n,D,"fragment");console.error("THREE.WebGLProgram: Shader Error "+n.getError()+" - VALIDATE_STATUS "+n.getProgramParameter(m,35715)+`
|
||
|
||
Program Info Log: `+w+`
|
||
`+C+`
|
||
`+N)}else w!==""?console.warn("THREE.WebGLProgram: Program Info Log:",w):(F===""||X==="")&&(he=!1);he&&(this.diagnostics={runnable:H,programLog:w,vertexShader:{log:F,prefix:g},fragmentShader:{log:X,prefix:y}})}n.deleteShader(S),n.deleteShader(D);let P;this.getUniforms=function(){return P===void 0&&(P=new _y(n,m)),P};let _;return this.getAttributes=function(){return _===void 0&&(_=Ngt(n,m)),_},this.destroy=function(){i.releaseStatesOfProgram(this),n.deleteProgram(m),this.program=void 0},this.name=e.shaderName,this.id=Rgt++,this.cacheKey=r,this.usedTimes=1,this.program=m,this.vertexShader=S,this.fragmentShader=D,this}var Wgt=0,g4=class{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(r){let e=r.vertexShader,i=r.fragmentShader,n=this._getShaderStage(e),s=this._getShaderStage(i),a=this._getShaderCacheForMaterial(r);return a.has(n)===!1&&(a.add(n),n.usedTimes++),a.has(s)===!1&&(a.add(s),s.usedTimes++),this}remove(r){let e=this.materialCache.get(r);for(let i of e)i.usedTimes--,i.usedTimes===0&&this.shaderCache.delete(i.code);return this.materialCache.delete(r),this}getVertexShaderID(r){return this._getShaderStage(r.vertexShader).id}getFragmentShaderID(r){return this._getShaderStage(r.fragmentShader).id}dispose(){this.shaderCache.clear(),this.materialCache.clear()}_getShaderCacheForMaterial(r){let e=this.materialCache,i=e.get(r);return i===void 0&&(i=new Set,e.set(r,i)),i}_getShaderStage(r){let e=this.shaderCache,i=e.get(r);return i===void 0&&(i=new v4(r),e.set(r,i)),i}},v4=class{constructor(r){this.id=Wgt++,this.code=r,this.usedTimes=0}};function qgt(t,r,e,i,n,s,a){let o=new My,l=new g4,c=[],u=n.isWebGL2,h=n.logarithmicDepthBuffer,p=n.vertexTextures,d=n.precision,f={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 m(_,w,F,X,H){let he=X.fog,C=H.geometry,N=_.isMeshStandardMaterial?X.environment:null,k=(_.isMeshStandardMaterial?e:r).get(_.envMap||N),G=k&&k.mapping===By?k.image.height:null,U=f[_.type];_.precision!==null&&(d=n.getMaxPrecision(_.precision),d!==_.precision&&console.warn("THREE.WebGLProgram.getParameters:",_.precision,"not supported, using",d,"instead."));let j=C.morphAttributes.position||C.morphAttributes.normal||C.morphAttributes.color,ee=j!==void 0?j.length:0,ae=0;C.morphAttributes.position!==void 0&&(ae=1),C.morphAttributes.normal!==void 0&&(ae=2),C.morphAttributes.color!==void 0&&(ae=3);let se,ue,ve,be;if(U){let dt=Rc[U];se=dt.vertexShader,ue=dt.fragmentShader}else se=_.vertexShader,ue=_.fragmentShader,l.update(_),ve=l.getVertexShaderID(_),be=l.getFragmentShaderID(_);let de=t.getRenderTarget(),we=_.alphaTest>0,Fe=_.clearcoat>0,je=_.iridescence>0;return{isWebGL2:u,shaderID:U,shaderName:_.type,vertexShader:se,fragmentShader:ue,defines:_.defines,customVertexShaderID:ve,customFragmentShaderID:be,isRawShaderMaterial:_.isRawShaderMaterial===!0,glslVersion:_.glslVersion,precision:d,instancing:H.isInstancedMesh===!0,instancingColor:H.isInstancedMesh===!0&&H.instanceColor!==null,supportsVertexTextures:p,outputEncoding:de===null?t.outputEncoding:de.isXRRenderTarget===!0?de.texture.encoding:wl,map:!!_.map,matcap:!!_.matcap,envMap:!!k,envMapMode:k&&k.mapping,envMapCubeUVHeight:G,lightMap:!!_.lightMap,aoMap:!!_.aoMap,emissiveMap:!!_.emissiveMap,bumpMap:!!_.bumpMap,normalMap:!!_.normalMap,objectSpaceNormalMap:_.normalMapType===ahe,tangentSpaceNormalMap:_.normalMapType===mf,decodeVideoTexture:!!_.map&&_.map.isVideoTexture===!0&&_.map.encoding===yr,clearcoat:Fe,clearcoatMap:Fe&&!!_.clearcoatMap,clearcoatRoughnessMap:Fe&&!!_.clearcoatRoughnessMap,clearcoatNormalMap:Fe&&!!_.clearcoatNormalMap,iridescence:je,iridescenceMap:je&&!!_.iridescenceMap,iridescenceThicknessMap:je&&!!_.iridescenceThicknessMap,displacementMap:!!_.displacementMap,roughnessMap:!!_.roughnessMap,metalnessMap:!!_.metalnessMap,specularMap:!!_.specularMap,specularIntensityMap:!!_.specularIntensityMap,specularColorMap:!!_.specularColorMap,opaque:_.transparent===!1&&_.blending===pg,alphaMap:!!_.alphaMap,alphaTest:we,gradientMap:!!_.gradientMap,sheen:_.sheen>0,sheenColorMap:!!_.sheenColorMap,sheenRoughnessMap:!!_.sheenRoughnessMap,transmission:_.transmission>0,transmissionMap:!!_.transmissionMap,thicknessMap:!!_.thicknessMap,combine:_.combine,vertexTangents:!!_.normalMap&&!!C.attributes.tangent,vertexColors:_.vertexColors,vertexAlphas:_.vertexColors===!0&&!!C.attributes.color&&C.attributes.color.itemSize===4,vertexUvs:!!_.map||!!_.bumpMap||!!_.normalMap||!!_.specularMap||!!_.alphaMap||!!_.emissiveMap||!!_.roughnessMap||!!_.metalnessMap||!!_.clearcoatMap||!!_.clearcoatRoughnessMap||!!_.clearcoatNormalMap||!!_.iridescenceMap||!!_.iridescenceThicknessMap||!!_.displacementMap||!!_.transmissionMap||!!_.thicknessMap||!!_.specularIntensityMap||!!_.specularColorMap||!!_.sheenColorMap||!!_.sheenRoughnessMap,uvsVertexOnly:!(_.map||_.bumpMap||_.normalMap||_.specularMap||_.alphaMap||_.emissiveMap||_.roughnessMap||_.metalnessMap||_.clearcoatNormalMap||_.iridescenceMap||_.iridescenceThicknessMap||_.transmission>0||_.transmissionMap||_.thicknessMap||_.specularIntensityMap||_.specularColorMap||_.sheen>0||_.sheenColorMap||_.sheenRoughnessMap)&&!!_.displacementMap,fog:!!he,useFog:_.fog===!0,fogExp2:he&&he.isFogExp2,flatShading:!!_.flatShading,sizeAttenuation:_.sizeAttenuation,logarithmicDepthBuffer:h,skinning:H.isSkinnedMesh===!0,morphTargets:C.morphAttributes.position!==void 0,morphNormals:C.morphAttributes.normal!==void 0,morphColors:C.morphAttributes.color!==void 0,morphTargetsCount:ee,morphTextureStride:ae,numDirLights:w.directional.length,numPointLights:w.point.length,numSpotLights:w.spot.length,numSpotLightMaps:w.spotLightMap.length,numRectAreaLights:w.rectArea.length,numHemiLights:w.hemi.length,numDirLightShadows:w.directionalShadowMap.length,numPointLightShadows:w.pointShadowMap.length,numSpotLightShadows:w.spotShadowMap.length,numSpotLightShadowsWithMaps:w.numSpotLightShadowsWithMaps,numClippingPlanes:a.numPlanes,numClipIntersection:a.numIntersection,dithering:_.dithering,shadowMapEnabled:t.shadowMap.enabled&&F.length>0,shadowMapType:t.shadowMap.type,toneMapping:_.toneMapped?t.toneMapping:Lu,physicallyCorrectLights:t.physicallyCorrectLights,premultipliedAlpha:_.premultipliedAlpha,doubleSided:_.side===wi,flipSided:_.side===Gn,useDepthPacking:!!_.depthPacking,depthPacking:_.depthPacking||0,index0AttributeName:_.index0AttributeName,extensionDerivatives:_.extensions&&_.extensions.derivatives,extensionFragDepth:_.extensions&&_.extensions.fragDepth,extensionDrawBuffers:_.extensions&&_.extensions.drawBuffers,extensionShaderTextureLOD:_.extensions&&_.extensions.shaderTextureLOD,rendererExtensionFragDepth:u||i.has("EXT_frag_depth"),rendererExtensionDrawBuffers:u||i.has("WEBGL_draw_buffers"),rendererExtensionShaderTextureLod:u||i.has("EXT_shader_texture_lod"),customProgramCacheKey:_.customProgramCacheKey()}}function g(_){let w=[];if(_.shaderID?w.push(_.shaderID):(w.push(_.customVertexShaderID),w.push(_.customFragmentShaderID)),_.defines!==void 0)for(let F in _.defines)w.push(F),w.push(_.defines[F]);return _.isRawShaderMaterial===!1&&(y(w,_),E(w,_),w.push(t.outputEncoding)),w.push(_.customProgramCacheKey),w.join()}function y(_,w){_.push(w.precision),_.push(w.outputEncoding),_.push(w.envMapMode),_.push(w.envMapCubeUVHeight),_.push(w.combine),_.push(w.vertexUvs),_.push(w.fogExp2),_.push(w.sizeAttenuation),_.push(w.morphTargetsCount),_.push(w.morphAttributeCount),_.push(w.numDirLights),_.push(w.numPointLights),_.push(w.numSpotLights),_.push(w.numSpotLightMaps),_.push(w.numHemiLights),_.push(w.numRectAreaLights),_.push(w.numDirLightShadows),_.push(w.numPointLightShadows),_.push(w.numSpotLightShadows),_.push(w.numSpotLightShadowsWithMaps),_.push(w.shadowMapType),_.push(w.toneMapping),_.push(w.numClippingPlanes),_.push(w.numClipIntersection),_.push(w.depthPacking)}function E(_,w){o.disableAll(),w.isWebGL2&&o.enable(0),w.supportsVertexTextures&&o.enable(1),w.instancing&&o.enable(2),w.instancingColor&&o.enable(3),w.map&&o.enable(4),w.matcap&&o.enable(5),w.envMap&&o.enable(6),w.lightMap&&o.enable(7),w.aoMap&&o.enable(8),w.emissiveMap&&o.enable(9),w.bumpMap&&o.enable(10),w.normalMap&&o.enable(11),w.objectSpaceNormalMap&&o.enable(12),w.tangentSpaceNormalMap&&o.enable(13),w.clearcoat&&o.enable(14),w.clearcoatMap&&o.enable(15),w.clearcoatRoughnessMap&&o.enable(16),w.clearcoatNormalMap&&o.enable(17),w.iridescence&&o.enable(18),w.iridescenceMap&&o.enable(19),w.iridescenceThicknessMap&&o.enable(20),w.displacementMap&&o.enable(21),w.specularMap&&o.enable(22),w.roughnessMap&&o.enable(23),w.metalnessMap&&o.enable(24),w.gradientMap&&o.enable(25),w.alphaMap&&o.enable(26),w.alphaTest&&o.enable(27),w.vertexColors&&o.enable(28),w.vertexAlphas&&o.enable(29),w.vertexUvs&&o.enable(30),w.vertexTangents&&o.enable(31),w.uvsVertexOnly&&o.enable(32),_.push(o.mask),o.disableAll(),w.fog&&o.enable(0),w.useFog&&o.enable(1),w.flatShading&&o.enable(2),w.logarithmicDepthBuffer&&o.enable(3),w.skinning&&o.enable(4),w.morphTargets&&o.enable(5),w.morphNormals&&o.enable(6),w.morphColors&&o.enable(7),w.premultipliedAlpha&&o.enable(8),w.shadowMapEnabled&&o.enable(9),w.physicallyCorrectLights&&o.enable(10),w.doubleSided&&o.enable(11),w.flipSided&&o.enable(12),w.useDepthPacking&&o.enable(13),w.dithering&&o.enable(14),w.specularIntensityMap&&o.enable(15),w.specularColorMap&&o.enable(16),w.transmission&&o.enable(17),w.transmissionMap&&o.enable(18),w.thicknessMap&&o.enable(19),w.sheen&&o.enable(20),w.sheenColorMap&&o.enable(21),w.sheenRoughnessMap&&o.enable(22),w.decodeVideoTexture&&o.enable(23),w.opaque&&o.enable(24),_.push(o.mask)}function b(_){let w=f[_.type],F;if(w){let X=Rc[w];F=hn.clone(X.uniforms)}else F=_.uniforms;return F}function x(_,w){let F;for(let X=0,H=c.length;X<H;X++){let he=c[X];if(he.cacheKey===w){F=he,++F.usedTimes;break}}return F===void 0&&(F=new jgt(t,w,_,s),c.push(F)),F}function S(_){if(--_.usedTimes===0){let w=c.indexOf(_);c[w]=c[c.length-1],c.pop(),_.destroy()}}function D(_){l.remove(_)}function P(){l.dispose()}return{getParameters:m,getProgramCacheKey:g,getUniforms:b,acquireProgram:x,releaseProgram:S,releaseShaderCache:D,programs:c,dispose:P}}function Ygt(){let t=new WeakMap;function r(s){let a=t.get(s);return a===void 0&&(a={},t.set(s,a)),a}function e(s){t.delete(s)}function i(s,a,o){t.get(s)[a]=o}function n(){t=new WeakMap}return{get:r,remove:e,update:i,dispose:n}}function Xgt(t,r){return t.groupOrder!==r.groupOrder?t.groupOrder-r.groupOrder:t.renderOrder!==r.renderOrder?t.renderOrder-r.renderOrder:t.material.id!==r.material.id?t.material.id-r.material.id:t.z!==r.z?t.z-r.z:t.id-r.id}function Dce(t,r){return t.groupOrder!==r.groupOrder?t.groupOrder-r.groupOrder:t.renderOrder!==r.renderOrder?t.renderOrder-r.renderOrder:t.z!==r.z?r.z-t.z:t.id-r.id}function Cce(){let t=[],r=0,e=[],i=[],n=[];function s(){r=0,e.length=0,i.length=0,n.length=0}function a(h,p,d,f,m,g){let y=t[r];return y===void 0?(y={id:h.id,object:h,geometry:p,material:d,groupOrder:f,renderOrder:h.renderOrder,z:m,group:g},t[r]=y):(y.id=h.id,y.object=h,y.geometry=p,y.material=d,y.groupOrder=f,y.renderOrder=h.renderOrder,y.z=m,y.group=g),r++,y}function o(h,p,d,f,m,g){let y=a(h,p,d,f,m,g);d.transmission>0?i.push(y):d.transparent===!0?n.push(y):e.push(y)}function l(h,p,d,f,m,g){let y=a(h,p,d,f,m,g);d.transmission>0?i.unshift(y):d.transparent===!0?n.unshift(y):e.unshift(y)}function c(h,p){e.length>1&&e.sort(h||Xgt),i.length>1&&i.sort(p||Dce),n.length>1&&n.sort(p||Dce)}function u(){for(let h=r,p=t.length;h<p;h++){let d=t[h];if(d.id===null)break;d.id=null,d.object=null,d.geometry=null,d.material=null,d.group=null}}return{opaque:e,transmissive:i,transparent:n,init:s,push:o,unshift:l,finish:u,sort:c}}function $gt(){let t=new WeakMap;function r(i,n){let s=t.get(i),a;return s===void 0?(a=new Cce,t.set(i,[a])):n>=s.length?(a=new Cce,s.push(a)):a=s[n],a}function e(){t=new WeakMap}return{get:r,dispose:e}}function Zgt(){let t={};return{get:function(r){if(t[r.id]!==void 0)return t[r.id];let e;switch(r.type){case"DirectionalLight":e={direction:new A,color:new Ve};break;case"SpotLight":e={position:new A,direction:new A,color:new Ve,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":e={position:new A,color:new Ve,distance:0,decay:0};break;case"HemisphereLight":e={direction:new A,skyColor:new Ve,groundColor:new Ve};break;case"RectAreaLight":e={color:new Ve,position:new A,halfWidth:new A,halfHeight:new A};break}return t[r.id]=e,e}}}function Kgt(){let t={};return{get:function(r){if(t[r.id]!==void 0)return t[r.id];let e;switch(r.type){case"DirectionalLight":e={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new le};break;case"SpotLight":e={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new le};break;case"PointLight":e={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new le,shadowCameraNear:1,shadowCameraFar:1e3};break}return t[r.id]=e,e}}}var Jgt=0;function Qgt(t,r){return(r.castShadow?2:0)-(t.castShadow?2:0)+(r.map?1:0)-(t.map?1:0)}function e0t(t,r){let e=new Zgt,i=Kgt(),n={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1,numSpotMaps:-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};for(let u=0;u<9;u++)n.probe.push(new A);let s=new A,a=new Ue,o=new Ue;function l(u,h){let p=0,d=0,f=0;for(let X=0;X<9;X++)n.probe[X].set(0,0,0);let m=0,g=0,y=0,E=0,b=0,x=0,S=0,D=0,P=0,_=0;u.sort(Qgt);let w=h!==!0?Math.PI:1;for(let X=0,H=u.length;X<H;X++){let he=u[X],C=he.color,N=he.intensity,k=he.distance,G=he.shadow&&he.shadow.map?he.shadow.map.texture:null;if(he.isAmbientLight)p+=C.r*N*w,d+=C.g*N*w,f+=C.b*N*w;else if(he.isLightProbe)for(let U=0;U<9;U++)n.probe[U].addScaledVector(he.sh.coefficients[U],N);else if(he.isDirectionalLight){let U=e.get(he);if(U.color.copy(he.color).multiplyScalar(he.intensity*w),he.castShadow){let j=he.shadow,ee=i.get(he);ee.shadowBias=j.bias,ee.shadowNormalBias=j.normalBias,ee.shadowRadius=j.radius,ee.shadowMapSize=j.mapSize,n.directionalShadow[m]=ee,n.directionalShadowMap[m]=G,n.directionalShadowMatrix[m]=he.shadow.matrix,x++}n.directional[m]=U,m++}else if(he.isSpotLight){let U=e.get(he);U.position.setFromMatrixPosition(he.matrixWorld),U.color.copy(C).multiplyScalar(N*w),U.distance=k,U.coneCos=Math.cos(he.angle),U.penumbraCos=Math.cos(he.angle*(1-he.penumbra)),U.decay=he.decay,n.spot[y]=U;let j=he.shadow;if(he.map&&(n.spotLightMap[P]=he.map,P++,j.updateMatrices(he),he.castShadow&&_++),n.spotLightMatrix[y]=j.matrix,he.castShadow){let ee=i.get(he);ee.shadowBias=j.bias,ee.shadowNormalBias=j.normalBias,ee.shadowRadius=j.radius,ee.shadowMapSize=j.mapSize,n.spotShadow[y]=ee,n.spotShadowMap[y]=G,D++}y++}else if(he.isRectAreaLight){let U=e.get(he);U.color.copy(C).multiplyScalar(N),U.halfWidth.set(he.width*.5,0,0),U.halfHeight.set(0,he.height*.5,0),n.rectArea[E]=U,E++}else if(he.isPointLight){let U=e.get(he);if(U.color.copy(he.color).multiplyScalar(he.intensity*w),U.distance=he.distance,U.decay=he.decay,he.castShadow){let j=he.shadow,ee=i.get(he);ee.shadowBias=j.bias,ee.shadowNormalBias=j.normalBias,ee.shadowRadius=j.radius,ee.shadowMapSize=j.mapSize,ee.shadowCameraNear=j.camera.near,ee.shadowCameraFar=j.camera.far,n.pointShadow[g]=ee,n.pointShadowMap[g]=G,n.pointShadowMatrix[g]=he.shadow.matrix,S++}n.point[g]=U,g++}else if(he.isHemisphereLight){let U=e.get(he);U.skyColor.copy(he.color).multiplyScalar(N*w),U.groundColor.copy(he.groundColor).multiplyScalar(N*w),n.hemi[b]=U,b++}}E>0&&(r.isWebGL2||t.has("OES_texture_float_linear")===!0?(n.rectAreaLTC1=At.LTC_FLOAT_1,n.rectAreaLTC2=At.LTC_FLOAT_2):t.has("OES_texture_half_float_linear")===!0?(n.rectAreaLTC1=At.LTC_HALF_1,n.rectAreaLTC2=At.LTC_HALF_2):console.error("THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.")),n.ambient[0]=p,n.ambient[1]=d,n.ambient[2]=f;let F=n.hash;(F.directionalLength!==m||F.pointLength!==g||F.spotLength!==y||F.rectAreaLength!==E||F.hemiLength!==b||F.numDirectionalShadows!==x||F.numPointShadows!==S||F.numSpotShadows!==D||F.numSpotMaps!==P)&&(n.directional.length=m,n.spot.length=y,n.rectArea.length=E,n.point.length=g,n.hemi.length=b,n.directionalShadow.length=x,n.directionalShadowMap.length=x,n.pointShadow.length=S,n.pointShadowMap.length=S,n.spotShadow.length=D,n.spotShadowMap.length=D,n.directionalShadowMatrix.length=x,n.pointShadowMatrix.length=S,n.spotLightMatrix.length=D+P-_,n.spotLightMap.length=P,n.numSpotLightShadowsWithMaps=_,F.directionalLength=m,F.pointLength=g,F.spotLength=y,F.rectAreaLength=E,F.hemiLength=b,F.numDirectionalShadows=x,F.numPointShadows=S,F.numSpotShadows=D,F.numSpotMaps=P,n.version=Jgt++)}function c(u,h){let p=0,d=0,f=0,m=0,g=0,y=h.matrixWorldInverse;for(let E=0,b=u.length;E<b;E++){let x=u[E];if(x.isDirectionalLight){let S=n.directional[p];S.direction.setFromMatrixPosition(x.matrixWorld),s.setFromMatrixPosition(x.target.matrixWorld),S.direction.sub(s),S.direction.transformDirection(y),p++}else if(x.isSpotLight){let S=n.spot[f];S.position.setFromMatrixPosition(x.matrixWorld),S.position.applyMatrix4(y),S.direction.setFromMatrixPosition(x.matrixWorld),s.setFromMatrixPosition(x.target.matrixWorld),S.direction.sub(s),S.direction.transformDirection(y),f++}else if(x.isRectAreaLight){let S=n.rectArea[m];S.position.setFromMatrixPosition(x.matrixWorld),S.position.applyMatrix4(y),o.identity(),a.copy(x.matrixWorld),a.premultiply(y),o.extractRotation(a),S.halfWidth.set(x.width*.5,0,0),S.halfHeight.set(0,x.height*.5,0),S.halfWidth.applyMatrix4(o),S.halfHeight.applyMatrix4(o),m++}else if(x.isPointLight){let S=n.point[d];S.position.setFromMatrixPosition(x.matrixWorld),S.position.applyMatrix4(y),d++}else if(x.isHemisphereLight){let S=n.hemi[g];S.direction.setFromMatrixPosition(x.matrixWorld),S.direction.transformDirection(y),g++}}}return{setup:l,setupView:c,state:n}}function Ace(t,r){let e=new e0t(t,r),i=[],n=[];function s(){i.length=0,n.length=0}function a(h){i.push(h)}function o(h){n.push(h)}function l(h){e.setup(i,h)}function c(h){e.setupView(i,h)}return{init:s,state:{lightsArray:i,shadowsArray:n,lights:e},setupLights:l,setupLightsView:c,pushLight:a,pushShadow:o}}function t0t(t,r){let e=new WeakMap;function i(s,a=0){let o=e.get(s),l;return o===void 0?(l=new Ace(t,r),e.set(s,[l])):a>=o.length?(l=new Ace(t,r),o.push(l)):l=o[a],l}function n(){e=new WeakMap}return{get:i,dispose:n}}var Tp=class extends Gr{constructor(r){super(),this.isMeshDepthMaterial=!0,this.type="MeshDepthMaterial",this.depthPacking=she,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.setValues(r)}copy(r){return super.copy(r),this.depthPacking=r.depthPacking,this.map=r.map,this.alphaMap=r.alphaMap,this.displacementMap=r.displacementMap,this.displacementScale=r.displacementScale,this.displacementBias=r.displacementBias,this.wireframe=r.wireframe,this.wireframeLinewidth=r.wireframeLinewidth,this}},nx=class extends Gr{constructor(r){super(),this.isMeshDistanceMaterial=!0,this.type="MeshDistanceMaterial",this.referencePosition=new A,this.nearDistance=1,this.farDistance=1e3,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.setValues(r)}copy(r){return super.copy(r),this.referencePosition.copy(r.referencePosition),this.nearDistance=r.nearDistance,this.farDistance=r.farDistance,this.map=r.map,this.alphaMap=r.alphaMap,this.displacementMap=r.displacementMap,this.displacementScale=r.displacementScale,this.displacementBias=r.displacementBias,this}},r0t=`void main() {
|
||
gl_Position = vec4( position, 1.0 );
|
||
}`,i0t=`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 n0t(t,r,e){let i=new eo,n=new le,s=new le,a=new Jr,o=new Tp({depthPacking:Gy}),l=new nx,c={},u=e.maxTextureSize,h={[en]:Gn,[Gn]:en,[wi]:wi},p=new Yt({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new le},radius:{value:4}},vertexShader:r0t,fragmentShader:i0t}),d=p.clone();d.defines.HORIZONTAL_PASS=1;let f=new it;f.setAttribute("position",new jt(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));let m=new Je(f,p),g=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=IU,this.render=function(x,S,D){if(g.enabled===!1||g.autoUpdate===!1&&g.needsUpdate===!1||x.length===0)return;let P=t.getRenderTarget(),_=t.getActiveCubeFace(),w=t.getActiveMipmapLevel(),F=t.state;F.setBlending(Fi),F.buffers.color.setClear(1,1,1,1),F.buffers.depth.setTest(!0),F.setScissorTest(!1);for(let X=0,H=x.length;X<H;X++){let he=x[X],C=he.shadow;if(C===void 0){console.warn("THREE.WebGLShadowMap:",he,"has no shadow.");continue}if(C.autoUpdate===!1&&C.needsUpdate===!1)continue;n.copy(C.mapSize);let N=C.getFrameExtents();if(n.multiply(N),s.copy(C.mapSize),(n.x>u||n.y>u)&&(n.x>u&&(s.x=Math.floor(u/N.x),n.x=s.x*N.x,C.mapSize.x=s.x),n.y>u&&(s.y=Math.floor(u/N.y),n.y=s.y*N.y,C.mapSize.y=s.y)),C.map===null){let G=this.type!==by?{minFilter:Di,magFilter:Di}:{};C.map=new kr(n.x,n.y,G),C.map.texture.name=he.name+".shadowMap",C.camera.updateProjectionMatrix()}t.setRenderTarget(C.map),t.clear();let k=C.getViewportCount();for(let G=0;G<k;G++){let U=C.getViewport(G);a.set(s.x*U.x,s.y*U.y,s.x*U.z,s.y*U.w),F.viewport(a),C.updateMatrices(he,G),i=C.getFrustum(),b(S,D,C.camera,he,this.type)}C.isPointLightShadow!==!0&&this.type===by&&y(C,D),C.needsUpdate=!1}g.needsUpdate=!1,t.setRenderTarget(P,_,w)};function y(x,S){let D=r.update(m);p.defines.VSM_SAMPLES!==x.blurSamples&&(p.defines.VSM_SAMPLES=x.blurSamples,d.defines.VSM_SAMPLES=x.blurSamples,p.needsUpdate=!0,d.needsUpdate=!0),x.mapPass===null&&(x.mapPass=new kr(n.x,n.y)),p.uniforms.shadow_pass.value=x.map.texture,p.uniforms.resolution.value=x.mapSize,p.uniforms.radius.value=x.radius,t.setRenderTarget(x.mapPass),t.clear(),t.renderBufferDirect(S,null,D,p,m,null),d.uniforms.shadow_pass.value=x.mapPass.texture,d.uniforms.resolution.value=x.mapSize,d.uniforms.radius.value=x.radius,t.setRenderTarget(x.map),t.clear(),t.renderBufferDirect(S,null,D,d,m,null)}function E(x,S,D,P,_,w){let F=null,X=D.isPointLight===!0?x.customDistanceMaterial:x.customDepthMaterial;if(X!==void 0)F=X;else if(F=D.isPointLight===!0?l:o,t.localClippingEnabled&&S.clipShadows===!0&&Array.isArray(S.clippingPlanes)&&S.clippingPlanes.length!==0||S.displacementMap&&S.displacementScale!==0||S.alphaMap&&S.alphaTest>0||S.map&&S.alphaTest>0){let H=F.uuid,he=S.uuid,C=c[H];C===void 0&&(C={},c[H]=C);let N=C[he];N===void 0&&(N=F.clone(),C[he]=N),F=N}return F.visible=S.visible,F.wireframe=S.wireframe,w===by?F.side=S.shadowSide!==null?S.shadowSide:S.side:F.side=S.shadowSide!==null?S.shadowSide:h[S.side],F.alphaMap=S.alphaMap,F.alphaTest=S.alphaTest,F.map=S.map,F.clipShadows=S.clipShadows,F.clippingPlanes=S.clippingPlanes,F.clipIntersection=S.clipIntersection,F.displacementMap=S.displacementMap,F.displacementScale=S.displacementScale,F.displacementBias=S.displacementBias,F.wireframeLinewidth=S.wireframeLinewidth,F.linewidth=S.linewidth,D.isPointLight===!0&&F.isMeshDistanceMaterial===!0&&(F.referencePosition.setFromMatrixPosition(D.matrixWorld),F.nearDistance=P,F.farDistance=_),F}function b(x,S,D,P,_){if(x.visible===!1)return;if(x.layers.test(S.layers)&&(x.isMesh||x.isLine||x.isPoints)&&(x.castShadow||x.receiveShadow&&_===by)&&(!x.frustumCulled||i.intersectsObject(x))){x.modelViewMatrix.multiplyMatrices(D.matrixWorldInverse,x.matrixWorld);let X=r.update(x),H=x.material;if(Array.isArray(H)){let he=X.groups;for(let C=0,N=he.length;C<N;C++){let k=he[C],G=H[k.materialIndex];if(G&&G.visible){let U=E(x,G,P,D.near,D.far,_);t.renderBufferDirect(D,null,X,U,x,k)}}}else if(H.visible){let he=E(x,H,P,D.near,D.far,_);t.renderBufferDirect(D,null,X,he,x,null)}}let F=x.children;for(let X=0,H=F.length;X<H;X++)b(F[X],S,D,P,_)}}function s0t(t,r,e){let i=e.isWebGL2;function n(){let Ae=!1,Xe=new Jr,lt=null,_t=new Jr(0,0,0,0);return{setMask:function(Vt){lt!==Vt&&!Ae&&(t.colorMask(Vt,Vt,Vt,Vt),lt=Vt)},setLocked:function(Vt){Ae=Vt},setClear:function(Vt,Rr,Ki,Pi,Fn){Fn===!0&&(Vt*=Pi,Rr*=Pi,Ki*=Pi),Xe.set(Vt,Rr,Ki,Pi),_t.equals(Xe)===!1&&(t.clearColor(Vt,Rr,Ki,Pi),_t.copy(Xe))},reset:function(){Ae=!1,lt=null,_t.set(-1,0,0,0)}}}function s(){let Ae=!1,Xe=null,lt=null,_t=null;return{setTest:function(Vt){Vt?we(2929):Fe(2929)},setMask:function(Vt){Xe!==Vt&&!Ae&&(t.depthMask(Vt),Xe=Vt)},setFunc:function(Vt){if(lt!==Vt){switch(Vt){case Due:t.depthFunc(512);break;case Cue:t.depthFunc(519);break;case Aue:t.depthFunc(513);break;case yD:t.depthFunc(515);break;case Oue:t.depthFunc(514);break;case Pue:t.depthFunc(518);break;case Nue:t.depthFunc(516);break;case Lue:t.depthFunc(517);break;default:t.depthFunc(515)}lt=Vt}},setLocked:function(Vt){Ae=Vt},setClear:function(Vt){_t!==Vt&&(t.clearDepth(Vt),_t=Vt)},reset:function(){Ae=!1,Xe=null,lt=null,_t=null}}}function a(){let Ae=!1,Xe=null,lt=null,_t=null,Vt=null,Rr=null,Ki=null,Pi=null,Fn=null;return{setTest:function(Kt){Ae||(Kt?we(2960):Fe(2960))},setMask:function(Kt){Xe!==Kt&&!Ae&&(t.stencilMask(Kt),Xe=Kt)},setFunc:function(Kt,ds,Is){(lt!==Kt||_t!==ds||Vt!==Is)&&(t.stencilFunc(Kt,ds,Is),lt=Kt,_t=ds,Vt=Is)},setOp:function(Kt,ds,Is){(Rr!==Kt||Ki!==ds||Pi!==Is)&&(t.stencilOp(Kt,ds,Is),Rr=Kt,Ki=ds,Pi=Is)},setLocked:function(Kt){Ae=Kt},setClear:function(Kt){Fn!==Kt&&(t.clearStencil(Kt),Fn=Kt)},reset:function(){Ae=!1,Xe=null,lt=null,_t=null,Vt=null,Rr=null,Ki=null,Pi=null,Fn=null}}}let o=new n,l=new s,c=new a,u=new WeakMap,h=new WeakMap,p={},d={},f=new WeakMap,m=[],g=null,y=!1,E=null,b=null,x=null,S=null,D=null,P=null,_=null,w=!1,F=null,X=null,H=null,he=null,C=null,N=t.getParameter(35661),k=!1,G=0,U=t.getParameter(7938);U.indexOf("WebGL")!==-1?(G=parseFloat(/^WebGL (\d)/.exec(U)[1]),k=G>=1):U.indexOf("OpenGL ES")!==-1&&(G=parseFloat(/^OpenGL ES (\d)/.exec(U)[1]),k=G>=2);let j=null,ee={},ae=t.getParameter(3088),se=t.getParameter(2978),ue=new Jr().fromArray(ae),ve=new Jr().fromArray(se);function be(Ae,Xe,lt){let _t=new Uint8Array(4),Vt=t.createTexture();t.bindTexture(Ae,Vt),t.texParameteri(Ae,10241,9728),t.texParameteri(Ae,10240,9728);for(let Rr=0;Rr<lt;Rr++)t.texImage2D(Xe+Rr,0,6408,1,1,0,6408,5121,_t);return Vt}let de={};de[3553]=be(3553,3553,1),de[34067]=be(34067,34069,6),o.setClear(0,0,0,1),l.setClear(1),c.setClear(0),we(2929),l.setFunc(yD),mt(!1),_e(wH),we(2884),nt(Fi);function we(Ae){p[Ae]!==!0&&(t.enable(Ae),p[Ae]=!0)}function Fe(Ae){p[Ae]!==!1&&(t.disable(Ae),p[Ae]=!1)}function je(Ae,Xe){return d[Ae]!==Xe?(t.bindFramebuffer(Ae,Xe),d[Ae]=Xe,i&&(Ae===36009&&(d[36160]=Xe),Ae===36160&&(d[36009]=Xe)),!0):!1}function Oe(Ae,Xe){let lt=m,_t=!1;if(Ae)if(lt=f.get(Xe),lt===void 0&&(lt=[],f.set(Xe,lt)),Ae.isWebGLMultipleRenderTargets){let Vt=Ae.texture;if(lt.length!==Vt.length||lt[0]!==36064){for(let Rr=0,Ki=Vt.length;Rr<Ki;Rr++)lt[Rr]=36064+Rr;lt.length=Vt.length,_t=!0}}else lt[0]!==36064&&(lt[0]=36064,_t=!0);else lt[0]!==1029&&(lt[0]=1029,_t=!0);_t&&(e.isWebGL2?t.drawBuffers(lt):r.get("WEBGL_draw_buffers").drawBuffersWEBGL(lt))}function dt(Ae){return g!==Ae?(t.useProgram(Ae),g=Ae,!0):!1}let Be={[Sa]:32774,[xue]:32778,[Iue]:32779};if(i)Be[DH]=32775,Be[CH]=32776;else{let Ae=r.get("EXT_blend_minmax");Ae!==null&&(Be[DH]=Ae.MIN_EXT,Be[CH]=Ae.MAX_EXT)}let ke={[ff]:0,[Fy]:1,[Sue]:768,[Ix]:770,[Mue]:776,[Uy]:774,[Hy]:772,[_ue]:769,[SU]:771,[Rue]:775,[wue]:773};function nt(Ae,Xe,lt,_t,Vt,Rr,Ki,Pi){if(Ae===Fi){y===!0&&(Fe(3042),y=!1);return}if(y===!1&&(we(3042),y=!0),Ae!==Op){if(Ae!==E||Pi!==w){if((b!==Sa||D!==Sa)&&(t.blendEquation(32774),b=Sa,D=Sa),Pi)switch(Ae){case pg:t.blendFuncSeparate(1,771,1,771);break;case fp:t.blendFunc(1,1);break;case RH:t.blendFuncSeparate(0,769,0,1);break;case MH:t.blendFuncSeparate(0,768,0,770);break;default:console.error("THREE.WebGLState: Invalid blending: ",Ae);break}else switch(Ae){case pg:t.blendFuncSeparate(770,771,1,771);break;case fp:t.blendFunc(770,1);break;case RH:t.blendFuncSeparate(0,769,0,1);break;case MH:t.blendFunc(0,768);break;default:console.error("THREE.WebGLState: Invalid blending: ",Ae);break}x=null,S=null,P=null,_=null,E=Ae,w=Pi}return}Vt=Vt||Xe,Rr=Rr||lt,Ki=Ki||_t,(Xe!==b||Vt!==D)&&(t.blendEquationSeparate(Be[Xe],Be[Vt]),b=Xe,D=Vt),(lt!==x||_t!==S||Rr!==P||Ki!==_)&&(t.blendFuncSeparate(ke[lt],ke[_t],ke[Rr],ke[Ki]),x=lt,S=_t,P=Rr,_=Ki),E=Ae,w=!1}function bt(Ae,Xe){Ae.side===wi?Fe(2884):we(2884);let lt=Ae.side===Gn;Xe&&(lt=!lt),mt(lt),Ae.blending===pg&&Ae.transparent===!1?nt(Fi):nt(Ae.blending,Ae.blendEquation,Ae.blendSrc,Ae.blendDst,Ae.blendEquationAlpha,Ae.blendSrcAlpha,Ae.blendDstAlpha,Ae.premultipliedAlpha),l.setFunc(Ae.depthFunc),l.setTest(Ae.depthTest),l.setMask(Ae.depthWrite),o.setMask(Ae.colorWrite);let _t=Ae.stencilWrite;c.setTest(_t),_t&&(c.setMask(Ae.stencilWriteMask),c.setFunc(Ae.stencilFunc,Ae.stencilRef,Ae.stencilFuncMask),c.setOp(Ae.stencilFail,Ae.stencilZFail,Ae.stencilZPass)),$(Ae.polygonOffset,Ae.polygonOffsetFactor,Ae.polygonOffsetUnits),Ae.alphaToCoverage===!0?we(32926):Fe(32926)}function mt(Ae){F!==Ae&&(Ae?t.frontFace(2304):t.frontFace(2305),F=Ae)}function _e(Ae){Ae!==Eue?(we(2884),Ae!==X&&(Ae===wH?t.cullFace(1029):Ae===bue?t.cullFace(1028):t.cullFace(1032))):Fe(2884),X=Ae}function J(Ae){Ae!==H&&(k&&t.lineWidth(Ae),H=Ae)}function $(Ae,Xe,lt){Ae?(we(32823),(he!==Xe||C!==lt)&&(t.polygonOffset(Xe,lt),he=Xe,C=lt)):Fe(32823)}function re(Ae){Ae?we(3089):Fe(3089)}function me(Ae){Ae===void 0&&(Ae=33984+N-1),j!==Ae&&(t.activeTexture(Ae),j=Ae)}function z(Ae,Xe,lt){lt===void 0&&(j===null?lt=33984+N-1:lt=j);let _t=ee[lt];_t===void 0&&(_t={type:void 0,texture:void 0},ee[lt]=_t),(_t.type!==Ae||_t.texture!==Xe)&&(j!==lt&&(t.activeTexture(lt),j=lt),t.bindTexture(Ae,Xe||de[Ae]),_t.type=Ae,_t.texture=Xe)}function Y(){let Ae=ee[j];Ae!==void 0&&Ae.type!==void 0&&(t.bindTexture(Ae.type,null),Ae.type=void 0,Ae.texture=void 0)}function xe(){try{t.compressedTexImage2D.apply(t,arguments)}catch(Ae){console.error("THREE.WebGLState:",Ae)}}function Ce(){try{t.compressedTexImage3D.apply(t,arguments)}catch(Ae){console.error("THREE.WebGLState:",Ae)}}function Ge(){try{t.texSubImage2D.apply(t,arguments)}catch(Ae){console.error("THREE.WebGLState:",Ae)}}function Ze(){try{t.texSubImage3D.apply(t,arguments)}catch(Ae){console.error("THREE.WebGLState:",Ae)}}function gt(){try{t.compressedTexSubImage2D.apply(t,arguments)}catch(Ae){console.error("THREE.WebGLState:",Ae)}}function ye(){try{t.compressedTexSubImage3D.apply(t,arguments)}catch(Ae){console.error("THREE.WebGLState:",Ae)}}function Re(){try{t.texStorage2D.apply(t,arguments)}catch(Ae){console.error("THREE.WebGLState:",Ae)}}function ut(){try{t.texStorage3D.apply(t,arguments)}catch(Ae){console.error("THREE.WebGLState:",Ae)}}function vt(){try{t.texImage2D.apply(t,arguments)}catch(Ae){console.error("THREE.WebGLState:",Ae)}}function Et(){try{t.texImage3D.apply(t,arguments)}catch(Ae){console.error("THREE.WebGLState:",Ae)}}function Ct(Ae){ue.equals(Ae)===!1&&(t.scissor(Ae.x,Ae.y,Ae.z,Ae.w),ue.copy(Ae))}function Dt(Ae){ve.equals(Ae)===!1&&(t.viewport(Ae.x,Ae.y,Ae.z,Ae.w),ve.copy(Ae))}function cr(Ae,Xe){let lt=h.get(Xe);lt===void 0&&(lt=new WeakMap,h.set(Xe,lt));let _t=lt.get(Ae);_t===void 0&&(_t=t.getUniformBlockIndex(Xe,Ae.name),lt.set(Ae,_t))}function Xt(Ae,Xe){let _t=h.get(Xe).get(Ae);u.get(Xe)!==_t&&(t.uniformBlockBinding(Xe,_t,Ae.__bindingPointIndex),u.set(Xe,_t))}function gr(){t.disable(3042),t.disable(2884),t.disable(2929),t.disable(32823),t.disable(3089),t.disable(2960),t.disable(32926),t.blendEquation(32774),t.blendFunc(1,0),t.blendFuncSeparate(1,0,1,0),t.colorMask(!0,!0,!0,!0),t.clearColor(0,0,0,0),t.depthMask(!0),t.depthFunc(513),t.clearDepth(1),t.stencilMask(4294967295),t.stencilFunc(519,0,4294967295),t.stencilOp(7680,7680,7680),t.clearStencil(0),t.cullFace(1029),t.frontFace(2305),t.polygonOffset(0,0),t.activeTexture(33984),t.bindFramebuffer(36160,null),i===!0&&(t.bindFramebuffer(36009,null),t.bindFramebuffer(36008,null)),t.useProgram(null),t.lineWidth(1),t.scissor(0,0,t.canvas.width,t.canvas.height),t.viewport(0,0,t.canvas.width,t.canvas.height),p={},j=null,ee={},d={},f=new WeakMap,m=[],g=null,y=!1,E=null,b=null,x=null,S=null,D=null,P=null,_=null,w=!1,F=null,X=null,H=null,he=null,C=null,ue.set(0,0,t.canvas.width,t.canvas.height),ve.set(0,0,t.canvas.width,t.canvas.height),o.reset(),l.reset(),c.reset()}return{buffers:{color:o,depth:l,stencil:c},enable:we,disable:Fe,bindFramebuffer:je,drawBuffers:Oe,useProgram:dt,setBlending:nt,setMaterial:bt,setFlipSided:mt,setCullFace:_e,setLineWidth:J,setPolygonOffset:$,setScissorTest:re,activeTexture:me,bindTexture:z,unbindTexture:Y,compressedTexImage2D:xe,compressedTexImage3D:Ce,texImage2D:vt,texImage3D:Et,updateUBOMapping:cr,uniformBlockBinding:Xt,texStorage2D:Re,texStorage3D:ut,texSubImage2D:Ge,texSubImage3D:Ze,compressedTexSubImage2D:gt,compressedTexSubImage3D:ye,scissor:Ct,viewport:Dt,reset:gr}}function a0t(t,r,e,i,n,s,a){let o=n.isWebGL2,l=n.maxTextures,c=n.maxCubemapSize,u=n.maxTextureSize,h=n.maxSamples,p=r.has("WEBGL_multisampled_render_to_texture")?r.get("WEBGL_multisampled_render_to_texture"):null,d=typeof navigator=="undefined"?!1:/OculusBrowser/g.test(navigator.userAgent),f=new WeakMap,m,g=new WeakMap,y=!1;try{y=typeof OffscreenCanvas!="undefined"&&new OffscreenCanvas(1,1).getContext("2d")!==null}catch(z){}function E(z,Y){return y?new OffscreenCanvas(z,Y):ex("canvas")}function b(z,Y,xe,Ce){let Ge=1;if((z.width>Ce||z.height>Ce)&&(Ge=Ce/Math.max(z.width,z.height)),Ge<1||Y===!0)if(typeof HTMLImageElement!="undefined"&&z instanceof HTMLImageElement||typeof HTMLCanvasElement!="undefined"&&z instanceof HTMLCanvasElement||typeof ImageBitmap!="undefined"&&z instanceof ImageBitmap){let Ze=Y?ED:Math.floor,gt=Ze(Ge*z.width),ye=Ze(Ge*z.height);m===void 0&&(m=E(gt,ye));let Re=xe?E(gt,ye):m;return Re.width=gt,Re.height=ye,Re.getContext("2d").drawImage(z,0,0,gt,ye),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+z.width+"x"+z.height+") to ("+gt+"x"+ye+")."),Re}else return"data"in z&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+z.width+"x"+z.height+")."),z;return z}function x(z){return t4(z.width)&&t4(z.height)}function S(z){return o?!1:z.wrapS!==mn||z.wrapT!==mn||z.minFilter!==Di&&z.minFilter!==ai}function D(z,Y){return z.generateMipmaps&&Y&&z.minFilter!==Di&&z.minFilter!==ai}function P(z){t.generateMipmap(z)}function _(z,Y,xe,Ce,Ge=!1){if(o===!1)return Y;if(z!==null){if(t[z]!==void 0)return t[z];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+z+"'")}let Ze=Y;return Y===6403&&(xe===5126&&(Ze=33326),xe===5131&&(Ze=33325),xe===5121&&(Ze=33321)),Y===33319&&(xe===5126&&(Ze=33328),xe===5131&&(Ze=33327),xe===5121&&(Ze=33323)),Y===6408&&(xe===5126&&(Ze=34836),xe===5131&&(Ze=34842),xe===5121&&(Ze=Ce===yr&&Ge===!1?35907:32856),xe===32819&&(Ze=32854),xe===32820&&(Ze=32855)),(Ze===33325||Ze===33326||Ze===33327||Ze===33328||Ze===34842||Ze===34836)&&r.get("EXT_color_buffer_float"),Ze}function w(z,Y,xe){return D(z,xe)===!0||z.isFramebufferTexture&&z.minFilter!==Di&&z.minFilter!==ai?Math.log2(Math.max(Y.width,Y.height))+1:z.mipmaps!==void 0&&z.mipmaps.length>0?z.mipmaps.length:z.isCompressedTexture&&Array.isArray(z.image)?Y.mipmaps.length:1}function F(z){return z===Di||z===of||z===pp?9728:9729}function X(z){let Y=z.target;Y.removeEventListener("dispose",X),he(Y),Y.isVideoTexture&&f.delete(Y)}function H(z){let Y=z.target;Y.removeEventListener("dispose",H),N(Y)}function he(z){let Y=i.get(z);if(Y.__webglInit===void 0)return;let xe=z.source,Ce=g.get(xe);if(Ce){let Ge=Ce[Y.__cacheKey];Ge.usedTimes--,Ge.usedTimes===0&&C(z),Object.keys(Ce).length===0&&g.delete(xe)}i.remove(z)}function C(z){let Y=i.get(z);t.deleteTexture(Y.__webglTexture);let xe=z.source,Ce=g.get(xe);delete Ce[Y.__cacheKey],a.memory.textures--}function N(z){let Y=z.texture,xe=i.get(z),Ce=i.get(Y);if(Ce.__webglTexture!==void 0&&(t.deleteTexture(Ce.__webglTexture),a.memory.textures--),z.depthTexture&&z.depthTexture.dispose(),z.isWebGLCubeRenderTarget)for(let Ge=0;Ge<6;Ge++)t.deleteFramebuffer(xe.__webglFramebuffer[Ge]),xe.__webglDepthbuffer&&t.deleteRenderbuffer(xe.__webglDepthbuffer[Ge]);else{if(t.deleteFramebuffer(xe.__webglFramebuffer),xe.__webglDepthbuffer&&t.deleteRenderbuffer(xe.__webglDepthbuffer),xe.__webglMultisampledFramebuffer&&t.deleteFramebuffer(xe.__webglMultisampledFramebuffer),xe.__webglColorRenderbuffer)for(let Ge=0;Ge<xe.__webglColorRenderbuffer.length;Ge++)xe.__webglColorRenderbuffer[Ge]&&t.deleteRenderbuffer(xe.__webglColorRenderbuffer[Ge]);xe.__webglDepthRenderbuffer&&t.deleteRenderbuffer(xe.__webglDepthRenderbuffer)}if(z.isWebGLMultipleRenderTargets)for(let Ge=0,Ze=Y.length;Ge<Ze;Ge++){let gt=i.get(Y[Ge]);gt.__webglTexture&&(t.deleteTexture(gt.__webglTexture),a.memory.textures--),i.remove(Y[Ge])}i.remove(Y),i.remove(z)}let k=0;function G(){k=0}function U(){let z=k;return z>=l&&console.warn("THREE.WebGLTextures: Trying to use "+z+" texture units while this GPU supports only "+l),k+=1,z}function j(z){let Y=[];return Y.push(z.wrapS),Y.push(z.wrapT),Y.push(z.wrapR||0),Y.push(z.magFilter),Y.push(z.minFilter),Y.push(z.anisotropy),Y.push(z.internalFormat),Y.push(z.format),Y.push(z.type),Y.push(z.generateMipmaps),Y.push(z.premultiplyAlpha),Y.push(z.flipY),Y.push(z.unpackAlignment),Y.push(z.encoding),Y.join()}function ee(z,Y){let xe=i.get(z);if(z.isVideoTexture&&re(z),z.isRenderTargetTexture===!1&&z.version>0&&xe.__version!==z.version){let Ce=z.image;if(Ce===null)console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");else if(Ce.complete===!1)console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete");else{Fe(xe,z,Y);return}}e.bindTexture(3553,xe.__webglTexture,33984+Y)}function ae(z,Y){let xe=i.get(z);if(z.version>0&&xe.__version!==z.version){Fe(xe,z,Y);return}e.bindTexture(35866,xe.__webglTexture,33984+Y)}function se(z,Y){let xe=i.get(z);if(z.version>0&&xe.__version!==z.version){Fe(xe,z,Y);return}e.bindTexture(32879,xe.__webglTexture,33984+Y)}function ue(z,Y){let xe=i.get(z);if(z.version>0&&xe.__version!==z.version){je(xe,z,Y);return}e.bindTexture(34067,xe.__webglTexture,33984+Y)}let ve={[gn]:10497,[mn]:33071,[mp]:33648},be={[Di]:9728,[of]:9984,[pp]:9986,[ai]:9729,[Hg]:9985,[wa]:9987};function de(z,Y,xe){if(xe?(t.texParameteri(z,10242,ve[Y.wrapS]),t.texParameteri(z,10243,ve[Y.wrapT]),(z===32879||z===35866)&&t.texParameteri(z,32882,ve[Y.wrapR]),t.texParameteri(z,10240,be[Y.magFilter]),t.texParameteri(z,10241,be[Y.minFilter])):(t.texParameteri(z,10242,33071),t.texParameteri(z,10243,33071),(z===32879||z===35866)&&t.texParameteri(z,32882,33071),(Y.wrapS!==mn||Y.wrapT!==mn)&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping."),t.texParameteri(z,10240,F(Y.magFilter)),t.texParameteri(z,10241,F(Y.minFilter)),Y.minFilter!==Di&&Y.minFilter!==ai&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.")),r.has("EXT_texture_filter_anisotropic")===!0){let Ce=r.get("EXT_texture_filter_anisotropic");if(Y.magFilter===Di||Y.minFilter!==pp&&Y.minFilter!==wa||Y.type===_a&&r.has("OES_texture_float_linear")===!1||o===!1&&Y.type===Go&&r.has("OES_texture_half_float_linear")===!1)return;(Y.anisotropy>1||i.get(Y).__currentAnisotropy)&&(t.texParameterf(z,Ce.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(Y.anisotropy,n.getMaxAnisotropy())),i.get(Y).__currentAnisotropy=Y.anisotropy)}}function we(z,Y){let xe=!1;z.__webglInit===void 0&&(z.__webglInit=!0,Y.addEventListener("dispose",X));let Ce=Y.source,Ge=g.get(Ce);Ge===void 0&&(Ge={},g.set(Ce,Ge));let Ze=j(Y);if(Ze!==z.__cacheKey){Ge[Ze]===void 0&&(Ge[Ze]={texture:t.createTexture(),usedTimes:0},a.memory.textures++,xe=!0),Ge[Ze].usedTimes++;let gt=Ge[z.__cacheKey];gt!==void 0&&(Ge[z.__cacheKey].usedTimes--,gt.usedTimes===0&&C(Y)),z.__cacheKey=Ze,z.__webglTexture=Ge[Ze].texture}return xe}function Fe(z,Y,xe){let Ce=3553;(Y.isDataArrayTexture||Y.isCompressedArrayTexture)&&(Ce=35866),Y.isData3DTexture&&(Ce=32879);let Ge=we(z,Y),Ze=Y.source;e.bindTexture(Ce,z.__webglTexture,33984+xe);let gt=i.get(Ze);if(Ze.version!==gt.__version||Ge===!0){e.activeTexture(33984+xe),t.pixelStorei(37440,Y.flipY),t.pixelStorei(37441,Y.premultiplyAlpha),t.pixelStorei(3317,Y.unpackAlignment),t.pixelStorei(37443,0);let ye=S(Y)&&x(Y.image)===!1,Re=b(Y.image,ye,!1,u);Re=me(Y,Re);let ut=x(Re)||o,vt=s.convert(Y.format,Y.encoding),Et=s.convert(Y.type),Ct=_(Y.internalFormat,vt,Et,Y.encoding,Y.isVideoTexture);de(Ce,Y,ut);let Dt,cr=Y.mipmaps,Xt=o&&Y.isVideoTexture!==!0,gr=gt.__version===void 0||Ge===!0,Ae=w(Y,Re,ut);if(Y.isDepthTexture)Ct=6402,o?Y.type===_a?Ct=36012:Y.type===rf?Ct=33190:Y.type===dp?Ct=35056:Ct=33189:Y.type===_a&&console.error("WebGLRenderer: Floating point depth texture requires WebGL2."),Y.format===nf&&Ct===6402&&Y.type!==_x&&Y.type!==rf&&(console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."),Y.type=rf,Et=s.convert(Y.type)),Y.format===gp&&Ct===6402&&(Ct=34041,Y.type!==dp&&(console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."),Y.type=dp,Et=s.convert(Y.type))),gr&&(Xt?e.texStorage2D(3553,1,Ct,Re.width,Re.height):e.texImage2D(3553,0,Ct,Re.width,Re.height,0,vt,Et,null));else if(Y.isDataTexture)if(cr.length>0&&ut){Xt&&gr&&e.texStorage2D(3553,Ae,Ct,cr[0].width,cr[0].height);for(let Xe=0,lt=cr.length;Xe<lt;Xe++)Dt=cr[Xe],Xt?e.texSubImage2D(3553,Xe,0,0,Dt.width,Dt.height,vt,Et,Dt.data):e.texImage2D(3553,Xe,Ct,Dt.width,Dt.height,0,vt,Et,Dt.data);Y.generateMipmaps=!1}else Xt?(gr&&e.texStorage2D(3553,Ae,Ct,Re.width,Re.height),e.texSubImage2D(3553,0,0,0,Re.width,Re.height,vt,Et,Re.data)):e.texImage2D(3553,0,Ct,Re.width,Re.height,0,vt,Et,Re.data);else if(Y.isCompressedTexture)if(Y.isCompressedArrayTexture){Xt&&gr&&e.texStorage3D(35866,Ae,Ct,cr[0].width,cr[0].height,Re.depth);for(let Xe=0,lt=cr.length;Xe<lt;Xe++)Dt=cr[Xe],Y.format!==Bs?vt!==null?Xt?e.compressedTexSubImage3D(35866,Xe,0,0,0,Dt.width,Dt.height,Re.depth,vt,Dt.data,0,0):e.compressedTexImage3D(35866,Xe,Ct,Dt.width,Dt.height,Re.depth,0,Dt.data,0,0):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):Xt?e.texSubImage3D(35866,Xe,0,0,0,Dt.width,Dt.height,Re.depth,vt,Et,Dt.data):e.texImage3D(35866,Xe,Ct,Dt.width,Dt.height,Re.depth,0,vt,Et,Dt.data)}else{Xt&&gr&&e.texStorage2D(3553,Ae,Ct,cr[0].width,cr[0].height);for(let Xe=0,lt=cr.length;Xe<lt;Xe++)Dt=cr[Xe],Y.format!==Bs?vt!==null?Xt?e.compressedTexSubImage2D(3553,Xe,0,0,Dt.width,Dt.height,vt,Dt.data):e.compressedTexImage2D(3553,Xe,Ct,Dt.width,Dt.height,0,Dt.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):Xt?e.texSubImage2D(3553,Xe,0,0,Dt.width,Dt.height,vt,Et,Dt.data):e.texImage2D(3553,Xe,Ct,Dt.width,Dt.height,0,vt,Et,Dt.data)}else if(Y.isDataArrayTexture)Xt?(gr&&e.texStorage3D(35866,Ae,Ct,Re.width,Re.height,Re.depth),e.texSubImage3D(35866,0,0,0,0,Re.width,Re.height,Re.depth,vt,Et,Re.data)):e.texImage3D(35866,0,Ct,Re.width,Re.height,Re.depth,0,vt,Et,Re.data);else if(Y.isData3DTexture)Xt?(gr&&e.texStorage3D(32879,Ae,Ct,Re.width,Re.height,Re.depth),e.texSubImage3D(32879,0,0,0,0,Re.width,Re.height,Re.depth,vt,Et,Re.data)):e.texImage3D(32879,0,Ct,Re.width,Re.height,Re.depth,0,vt,Et,Re.data);else if(Y.isFramebufferTexture){if(gr)if(Xt)e.texStorage2D(3553,Ae,Ct,Re.width,Re.height);else{let Xe=Re.width,lt=Re.height;for(let _t=0;_t<Ae;_t++)e.texImage2D(3553,_t,Ct,Xe,lt,0,vt,Et,null),Xe>>=1,lt>>=1}}else if(cr.length>0&&ut){Xt&&gr&&e.texStorage2D(3553,Ae,Ct,cr[0].width,cr[0].height);for(let Xe=0,lt=cr.length;Xe<lt;Xe++)Dt=cr[Xe],Xt?e.texSubImage2D(3553,Xe,0,0,vt,Et,Dt):e.texImage2D(3553,Xe,Ct,vt,Et,Dt);Y.generateMipmaps=!1}else Xt?(gr&&e.texStorage2D(3553,Ae,Ct,Re.width,Re.height),e.texSubImage2D(3553,0,0,0,vt,Et,Re)):e.texImage2D(3553,0,Ct,vt,Et,Re);D(Y,ut)&&P(Ce),gt.__version=Ze.version,Y.onUpdate&&Y.onUpdate(Y)}z.__version=Y.version}function je(z,Y,xe){if(Y.image.length!==6)return;let Ce=we(z,Y),Ge=Y.source;e.bindTexture(34067,z.__webglTexture,33984+xe);let Ze=i.get(Ge);if(Ge.version!==Ze.__version||Ce===!0){e.activeTexture(33984+xe),t.pixelStorei(37440,Y.flipY),t.pixelStorei(37441,Y.premultiplyAlpha),t.pixelStorei(3317,Y.unpackAlignment),t.pixelStorei(37443,0);let gt=Y.isCompressedTexture||Y.image[0].isCompressedTexture,ye=Y.image[0]&&Y.image[0].isDataTexture,Re=[];for(let Xe=0;Xe<6;Xe++)!gt&&!ye?Re[Xe]=b(Y.image[Xe],!1,!0,c):Re[Xe]=ye?Y.image[Xe].image:Y.image[Xe],Re[Xe]=me(Y,Re[Xe]);let ut=Re[0],vt=x(ut)||o,Et=s.convert(Y.format,Y.encoding),Ct=s.convert(Y.type),Dt=_(Y.internalFormat,Et,Ct,Y.encoding),cr=o&&Y.isVideoTexture!==!0,Xt=Ze.__version===void 0||Ce===!0,gr=w(Y,ut,vt);de(34067,Y,vt);let Ae;if(gt){cr&&Xt&&e.texStorage2D(34067,gr,Dt,ut.width,ut.height);for(let Xe=0;Xe<6;Xe++){Ae=Re[Xe].mipmaps;for(let lt=0;lt<Ae.length;lt++){let _t=Ae[lt];Y.format!==Bs?Et!==null?cr?e.compressedTexSubImage2D(34069+Xe,lt,0,0,_t.width,_t.height,Et,_t.data):e.compressedTexImage2D(34069+Xe,lt,Dt,_t.width,_t.height,0,_t.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()"):cr?e.texSubImage2D(34069+Xe,lt,0,0,_t.width,_t.height,Et,Ct,_t.data):e.texImage2D(34069+Xe,lt,Dt,_t.width,_t.height,0,Et,Ct,_t.data)}}}else{Ae=Y.mipmaps,cr&&Xt&&(Ae.length>0&&gr++,e.texStorage2D(34067,gr,Dt,Re[0].width,Re[0].height));for(let Xe=0;Xe<6;Xe++)if(ye){cr?e.texSubImage2D(34069+Xe,0,0,0,Re[Xe].width,Re[Xe].height,Et,Ct,Re[Xe].data):e.texImage2D(34069+Xe,0,Dt,Re[Xe].width,Re[Xe].height,0,Et,Ct,Re[Xe].data);for(let lt=0;lt<Ae.length;lt++){let Vt=Ae[lt].image[Xe].image;cr?e.texSubImage2D(34069+Xe,lt+1,0,0,Vt.width,Vt.height,Et,Ct,Vt.data):e.texImage2D(34069+Xe,lt+1,Dt,Vt.width,Vt.height,0,Et,Ct,Vt.data)}}else{cr?e.texSubImage2D(34069+Xe,0,0,0,Et,Ct,Re[Xe]):e.texImage2D(34069+Xe,0,Dt,Et,Ct,Re[Xe]);for(let lt=0;lt<Ae.length;lt++){let _t=Ae[lt];cr?e.texSubImage2D(34069+Xe,lt+1,0,0,Et,Ct,_t.image[Xe]):e.texImage2D(34069+Xe,lt+1,Dt,Et,Ct,_t.image[Xe])}}}D(Y,vt)&&P(34067),Ze.__version=Ge.version,Y.onUpdate&&Y.onUpdate(Y)}z.__version=Y.version}function Oe(z,Y,xe,Ce,Ge){let Ze=s.convert(xe.format,xe.encoding),gt=s.convert(xe.type),ye=_(xe.internalFormat,Ze,gt,xe.encoding);i.get(Y).__hasExternalTextures||(Ge===32879||Ge===35866?e.texImage3D(Ge,0,ye,Y.width,Y.height,Y.depth,0,Ze,gt,null):e.texImage2D(Ge,0,ye,Y.width,Y.height,0,Ze,gt,null)),e.bindFramebuffer(36160,z),$(Y)?p.framebufferTexture2DMultisampleEXT(36160,Ce,Ge,i.get(xe).__webglTexture,0,J(Y)):(Ge===3553||Ge>=34069&&Ge<=34074)&&t.framebufferTexture2D(36160,Ce,Ge,i.get(xe).__webglTexture,0),e.bindFramebuffer(36160,null)}function dt(z,Y,xe){if(t.bindRenderbuffer(36161,z),Y.depthBuffer&&!Y.stencilBuffer){let Ce=33189;if(xe||$(Y)){let Ge=Y.depthTexture;Ge&&Ge.isDepthTexture&&(Ge.type===_a?Ce=36012:Ge.type===rf&&(Ce=33190));let Ze=J(Y);$(Y)?p.renderbufferStorageMultisampleEXT(36161,Ze,Ce,Y.width,Y.height):t.renderbufferStorageMultisample(36161,Ze,Ce,Y.width,Y.height)}else t.renderbufferStorage(36161,Ce,Y.width,Y.height);t.framebufferRenderbuffer(36160,36096,36161,z)}else if(Y.depthBuffer&&Y.stencilBuffer){let Ce=J(Y);xe&&$(Y)===!1?t.renderbufferStorageMultisample(36161,Ce,35056,Y.width,Y.height):$(Y)?p.renderbufferStorageMultisampleEXT(36161,Ce,35056,Y.width,Y.height):t.renderbufferStorage(36161,34041,Y.width,Y.height),t.framebufferRenderbuffer(36160,33306,36161,z)}else{let Ce=Y.isWebGLMultipleRenderTargets===!0?Y.texture:[Y.texture];for(let Ge=0;Ge<Ce.length;Ge++){let Ze=Ce[Ge],gt=s.convert(Ze.format,Ze.encoding),ye=s.convert(Ze.type),Re=_(Ze.internalFormat,gt,ye,Ze.encoding),ut=J(Y);xe&&$(Y)===!1?t.renderbufferStorageMultisample(36161,ut,Re,Y.width,Y.height):$(Y)?p.renderbufferStorageMultisampleEXT(36161,ut,Re,Y.width,Y.height):t.renderbufferStorage(36161,Re,Y.width,Y.height)}}t.bindRenderbuffer(36161,null)}function Be(z,Y){if(Y&&Y.isWebGLCubeRenderTarget)throw new Error("Depth Texture with cube render targets is not supported");if(e.bindFramebuffer(36160,z),!(Y.depthTexture&&Y.depthTexture.isDepthTexture))throw new Error("renderTarget.depthTexture must be an instance of THREE.DepthTexture");(!i.get(Y.depthTexture).__webglTexture||Y.depthTexture.image.width!==Y.width||Y.depthTexture.image.height!==Y.height)&&(Y.depthTexture.image.width=Y.width,Y.depthTexture.image.height=Y.height,Y.depthTexture.needsUpdate=!0),ee(Y.depthTexture,0);let Ce=i.get(Y.depthTexture).__webglTexture,Ge=J(Y);if(Y.depthTexture.format===nf)$(Y)?p.framebufferTexture2DMultisampleEXT(36160,36096,3553,Ce,0,Ge):t.framebufferTexture2D(36160,36096,3553,Ce,0);else if(Y.depthTexture.format===gp)$(Y)?p.framebufferTexture2DMultisampleEXT(36160,33306,3553,Ce,0,Ge):t.framebufferTexture2D(36160,33306,3553,Ce,0);else throw new Error("Unknown depthTexture format")}function ke(z){let Y=i.get(z),xe=z.isWebGLCubeRenderTarget===!0;if(z.depthTexture&&!Y.__autoAllocateDepthBuffer){if(xe)throw new Error("target.depthTexture not supported in Cube render targets");Be(Y.__webglFramebuffer,z)}else if(xe){Y.__webglDepthbuffer=[];for(let Ce=0;Ce<6;Ce++)e.bindFramebuffer(36160,Y.__webglFramebuffer[Ce]),Y.__webglDepthbuffer[Ce]=t.createRenderbuffer(),dt(Y.__webglDepthbuffer[Ce],z,!1)}else e.bindFramebuffer(36160,Y.__webglFramebuffer),Y.__webglDepthbuffer=t.createRenderbuffer(),dt(Y.__webglDepthbuffer,z,!1);e.bindFramebuffer(36160,null)}function nt(z,Y,xe){let Ce=i.get(z);Y!==void 0&&Oe(Ce.__webglFramebuffer,z,z.texture,36064,3553),xe!==void 0&&ke(z)}function bt(z){let Y=z.texture,xe=i.get(z),Ce=i.get(Y);z.addEventListener("dispose",H),z.isWebGLMultipleRenderTargets!==!0&&(Ce.__webglTexture===void 0&&(Ce.__webglTexture=t.createTexture()),Ce.__version=Y.version,a.memory.textures++);let Ge=z.isWebGLCubeRenderTarget===!0,Ze=z.isWebGLMultipleRenderTargets===!0,gt=x(z)||o;if(Ge){xe.__webglFramebuffer=[];for(let ye=0;ye<6;ye++)xe.__webglFramebuffer[ye]=t.createFramebuffer()}else{if(xe.__webglFramebuffer=t.createFramebuffer(),Ze)if(n.drawBuffers){let ye=z.texture;for(let Re=0,ut=ye.length;Re<ut;Re++){let vt=i.get(ye[Re]);vt.__webglTexture===void 0&&(vt.__webglTexture=t.createTexture(),a.memory.textures++)}}else console.warn("THREE.WebGLRenderer: WebGLMultipleRenderTargets can only be used with WebGL2 or WEBGL_draw_buffers extension.");if(o&&z.samples>0&&$(z)===!1){let ye=Ze?Y:[Y];xe.__webglMultisampledFramebuffer=t.createFramebuffer(),xe.__webglColorRenderbuffer=[],e.bindFramebuffer(36160,xe.__webglMultisampledFramebuffer);for(let Re=0;Re<ye.length;Re++){let ut=ye[Re];xe.__webglColorRenderbuffer[Re]=t.createRenderbuffer(),t.bindRenderbuffer(36161,xe.__webglColorRenderbuffer[Re]);let vt=s.convert(ut.format,ut.encoding),Et=s.convert(ut.type),Ct=_(ut.internalFormat,vt,Et,ut.encoding,z.isXRRenderTarget===!0),Dt=J(z);t.renderbufferStorageMultisample(36161,Dt,Ct,z.width,z.height),t.framebufferRenderbuffer(36160,36064+Re,36161,xe.__webglColorRenderbuffer[Re])}t.bindRenderbuffer(36161,null),z.depthBuffer&&(xe.__webglDepthRenderbuffer=t.createRenderbuffer(),dt(xe.__webglDepthRenderbuffer,z,!0)),e.bindFramebuffer(36160,null)}}if(Ge){e.bindTexture(34067,Ce.__webglTexture),de(34067,Y,gt);for(let ye=0;ye<6;ye++)Oe(xe.__webglFramebuffer[ye],z,Y,36064,34069+ye);D(Y,gt)&&P(34067),e.unbindTexture()}else if(Ze){let ye=z.texture;for(let Re=0,ut=ye.length;Re<ut;Re++){let vt=ye[Re],Et=i.get(vt);e.bindTexture(3553,Et.__webglTexture),de(3553,vt,gt),Oe(xe.__webglFramebuffer,z,vt,36064+Re,3553),D(vt,gt)&&P(3553)}e.unbindTexture()}else{let ye=3553;(z.isWebGL3DRenderTarget||z.isWebGLArrayRenderTarget)&&(o?ye=z.isWebGL3DRenderTarget?32879:35866:console.error("THREE.WebGLTextures: THREE.Data3DTexture and THREE.DataArrayTexture only supported with WebGL2.")),e.bindTexture(ye,Ce.__webglTexture),de(ye,Y,gt),Oe(xe.__webglFramebuffer,z,Y,36064,ye),D(Y,gt)&&P(ye),e.unbindTexture()}z.depthBuffer&&ke(z)}function mt(z){let Y=x(z)||o,xe=z.isWebGLMultipleRenderTargets===!0?z.texture:[z.texture];for(let Ce=0,Ge=xe.length;Ce<Ge;Ce++){let Ze=xe[Ce];if(D(Ze,Y)){let gt=z.isWebGLCubeRenderTarget?34067:3553,ye=i.get(Ze).__webglTexture;e.bindTexture(gt,ye),P(gt),e.unbindTexture()}}}function _e(z){if(o&&z.samples>0&&$(z)===!1){let Y=z.isWebGLMultipleRenderTargets?z.texture:[z.texture],xe=z.width,Ce=z.height,Ge=16384,Ze=[],gt=z.stencilBuffer?33306:36096,ye=i.get(z),Re=z.isWebGLMultipleRenderTargets===!0;if(Re)for(let ut=0;ut<Y.length;ut++)e.bindFramebuffer(36160,ye.__webglMultisampledFramebuffer),t.framebufferRenderbuffer(36160,36064+ut,36161,null),e.bindFramebuffer(36160,ye.__webglFramebuffer),t.framebufferTexture2D(36009,36064+ut,3553,null,0);e.bindFramebuffer(36008,ye.__webglMultisampledFramebuffer),e.bindFramebuffer(36009,ye.__webglFramebuffer);for(let ut=0;ut<Y.length;ut++){Ze.push(36064+ut),z.depthBuffer&&Ze.push(gt);let vt=ye.__ignoreDepthValues!==void 0?ye.__ignoreDepthValues:!1;if(vt===!1&&(z.depthBuffer&&(Ge|=256),z.stencilBuffer&&(Ge|=1024)),Re&&t.framebufferRenderbuffer(36008,36064,36161,ye.__webglColorRenderbuffer[ut]),vt===!0&&(t.invalidateFramebuffer(36008,[gt]),t.invalidateFramebuffer(36009,[gt])),Re){let Et=i.get(Y[ut]).__webglTexture;t.framebufferTexture2D(36009,36064,3553,Et,0)}t.blitFramebuffer(0,0,xe,Ce,0,0,xe,Ce,Ge,9728),d&&t.invalidateFramebuffer(36008,Ze)}if(e.bindFramebuffer(36008,null),e.bindFramebuffer(36009,null),Re)for(let ut=0;ut<Y.length;ut++){e.bindFramebuffer(36160,ye.__webglMultisampledFramebuffer),t.framebufferRenderbuffer(36160,36064+ut,36161,ye.__webglColorRenderbuffer[ut]);let vt=i.get(Y[ut]).__webglTexture;e.bindFramebuffer(36160,ye.__webglFramebuffer),t.framebufferTexture2D(36009,36064+ut,3553,vt,0)}e.bindFramebuffer(36009,ye.__webglMultisampledFramebuffer)}}function J(z){return Math.min(h,z.samples)}function $(z){let Y=i.get(z);return o&&z.samples>0&&r.has("WEBGL_multisampled_render_to_texture")===!0&&Y.__useRenderToTexture!==!1}function re(z){let Y=a.render.frame;f.get(z)!==Y&&(f.set(z,Y),z.update())}function me(z,Y){let xe=z.encoding,Ce=z.format,Ge=z.type;return z.isCompressedTexture===!0||z.isVideoTexture===!0||z.format===TD||xe!==wl&&(xe===yr?o===!1?r.has("EXT_sRGB")===!0&&Ce===Bs?(z.format=TD,z.minFilter=ai,z.generateMipmaps=!1):Y=tx.sRGBToLinear(Y):(Ce!==Bs||Ge!==Fu)&&console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture encoding:",xe)),Y}this.allocateTextureUnit=U,this.resetTextureUnits=G,this.setTexture2D=ee,this.setTexture2DArray=ae,this.setTexture3D=se,this.setTextureCube=ue,this.rebindTextures=nt,this.setupRenderTarget=bt,this.updateRenderTargetMipmap=mt,this.updateMultisampleRenderTarget=_e,this.setupDepthRenderbuffer=ke,this.setupFrameBufferTexture=Oe,this.useMultisampledRTT=$}function vhe(t,r,e){let i=e.isWebGL2;function n(s,a=null){let o;if(s===Fu)return 5121;if(s===que)return 32819;if(s===Yue)return 32820;if(s===zue)return 5120;if(s===jue)return 5122;if(s===_x)return 5123;if(s===Wue)return 5124;if(s===rf)return 5125;if(s===_a)return 5126;if(s===Go)return i?5131:(o=r.get("OES_texture_half_float"),o!==null?o.HALF_FLOAT_OES:null);if(s===Xue)return 6406;if(s===Bs)return 6408;if(s===YD)return 6409;if(s===$ue)return 6410;if(s===nf)return 6402;if(s===gp)return 34041;if(s===TD)return o=r.get("EXT_sRGB"),o!==null?o.SRGB_ALPHA_EXT:null;if(s===XD)return 6403;if(s===Zue)return 36244;if(s===Kue)return 33319;if(s===Jue)return 33320;if(s===Que)return 36249;if(s===uD||s===hD||s===pD||s===dD)if(a===yr)if(o=r.get("WEBGL_compressed_texture_s3tc_srgb"),o!==null){if(s===uD)return o.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(s===hD)return o.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(s===pD)return o.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(s===dD)return o.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(o=r.get("WEBGL_compressed_texture_s3tc"),o!==null){if(s===uD)return o.COMPRESSED_RGB_S3TC_DXT1_EXT;if(s===hD)return o.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(s===pD)return o.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(s===dD)return o.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(s===AH||s===OH||s===PH||s===NH)if(o=r.get("WEBGL_compressed_texture_pvrtc"),o!==null){if(s===AH)return o.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(s===OH)return o.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(s===PH)return o.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(s===NH)return o.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(s===ehe)return o=r.get("WEBGL_compressed_texture_etc1"),o!==null?o.COMPRESSED_RGB_ETC1_WEBGL:null;if(s===LH||s===FH)if(o=r.get("WEBGL_compressed_texture_etc"),o!==null){if(s===LH)return a===yr?o.COMPRESSED_SRGB8_ETC2:o.COMPRESSED_RGB8_ETC2;if(s===FH)return a===yr?o.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:o.COMPRESSED_RGBA8_ETC2_EAC}else return null;if(s===HH||s===UH||s===BH||s===kH||s===GH||s===VH||s===zH||s===jH||s===WH||s===qH||s===YH||s===XH||s===$H||s===ZH)if(o=r.get("WEBGL_compressed_texture_astc"),o!==null){if(s===HH)return a===yr?o.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:o.COMPRESSED_RGBA_ASTC_4x4_KHR;if(s===UH)return a===yr?o.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:o.COMPRESSED_RGBA_ASTC_5x4_KHR;if(s===BH)return a===yr?o.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:o.COMPRESSED_RGBA_ASTC_5x5_KHR;if(s===kH)return a===yr?o.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:o.COMPRESSED_RGBA_ASTC_6x5_KHR;if(s===GH)return a===yr?o.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:o.COMPRESSED_RGBA_ASTC_6x6_KHR;if(s===VH)return a===yr?o.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:o.COMPRESSED_RGBA_ASTC_8x5_KHR;if(s===zH)return a===yr?o.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:o.COMPRESSED_RGBA_ASTC_8x6_KHR;if(s===jH)return a===yr?o.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:o.COMPRESSED_RGBA_ASTC_8x8_KHR;if(s===WH)return a===yr?o.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:o.COMPRESSED_RGBA_ASTC_10x5_KHR;if(s===qH)return a===yr?o.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:o.COMPRESSED_RGBA_ASTC_10x6_KHR;if(s===YH)return a===yr?o.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:o.COMPRESSED_RGBA_ASTC_10x8_KHR;if(s===XH)return a===yr?o.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:o.COMPRESSED_RGBA_ASTC_10x10_KHR;if(s===$H)return a===yr?o.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:o.COMPRESSED_RGBA_ASTC_12x10_KHR;if(s===ZH)return a===yr?o.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:o.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(s===fD)if(o=r.get("EXT_texture_compression_bptc"),o!==null){if(s===fD)return a===yr?o.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:o.COMPRESSED_RGBA_BPTC_UNORM_EXT}else return null;if(s===the||s===KH||s===JH||s===QH)if(o=r.get("EXT_texture_compression_rgtc"),o!==null){if(s===fD)return o.COMPRESSED_RED_RGTC1_EXT;if(s===KH)return o.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(s===JH)return o.COMPRESSED_RED_GREEN_RGTC2_EXT;if(s===QH)return o.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}else return null;return s===dp?i?34042:(o=r.get("WEBGL_depth_texture"),o!==null?o.UNSIGNED_INT_24_8_WEBGL:null):t[s]!==void 0?t[s]:null}return{convert:n}}var ID=class extends qr{constructor(r=[]){super(),this.isArrayCamera=!0,this.cameras=r}},hr=class extends pr{constructor(){super(),this.isGroup=!0,this.type="Group"}},o0t={type:"move"},Yb=class{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return this._hand===null&&(this._hand=new hr,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 hr,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new A,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new A),this._targetRay}getGripSpace(){return this._grip===null&&(this._grip=new hr,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new A,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new A),this._grip}dispatchEvent(r){return this._targetRay!==null&&this._targetRay.dispatchEvent(r),this._grip!==null&&this._grip.dispatchEvent(r),this._hand!==null&&this._hand.dispatchEvent(r),this}connect(r){if(r&&r.hand){let e=this._hand;if(e)for(let i of r.hand.values())this._getHandJoint(e,i)}return this.dispatchEvent({type:"connected",data:r}),this}disconnect(r){return this.dispatchEvent({type:"disconnected",data:r}),this._targetRay!==null&&(this._targetRay.visible=!1),this._grip!==null&&(this._grip.visible=!1),this._hand!==null&&(this._hand.visible=!1),this}update(r,e,i){let n=null,s=null,a=null,o=this._targetRay,l=this._grip,c=this._hand;if(r&&e.session.visibilityState!=="visible-blurred"){if(c&&r.hand){a=!0;for(let m of r.hand.values()){let g=e.getJointPose(m,i),y=this._getHandJoint(c,m);g!==null&&(y.matrix.fromArray(g.transform.matrix),y.matrix.decompose(y.position,y.rotation,y.scale),y.jointRadius=g.radius),y.visible=g!==null}let u=c.joints["index-finger-tip"],h=c.joints["thumb-tip"],p=u.position.distanceTo(h.position),d=.02,f=.005;c.inputState.pinching&&p>d+f?(c.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:r.handedness,target:this})):!c.inputState.pinching&&p<=d-f&&(c.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:r.handedness,target:this}))}else l!==null&&r.gripSpace&&(s=e.getPose(r.gripSpace,i),s!==null&&(l.matrix.fromArray(s.transform.matrix),l.matrix.decompose(l.position,l.rotation,l.scale),s.linearVelocity?(l.hasLinearVelocity=!0,l.linearVelocity.copy(s.linearVelocity)):l.hasLinearVelocity=!1,s.angularVelocity?(l.hasAngularVelocity=!0,l.angularVelocity.copy(s.angularVelocity)):l.hasAngularVelocity=!1));o!==null&&(n=e.getPose(r.targetRaySpace,i),n===null&&s!==null&&(n=s),n!==null&&(o.matrix.fromArray(n.transform.matrix),o.matrix.decompose(o.position,o.rotation,o.scale),n.linearVelocity?(o.hasLinearVelocity=!0,o.linearVelocity.copy(n.linearVelocity)):o.hasLinearVelocity=!1,n.angularVelocity?(o.hasAngularVelocity=!0,o.angularVelocity.copy(n.angularVelocity)):o.hasAngularVelocity=!1,this.dispatchEvent(o0t)))}return o!==null&&(o.visible=n!==null),l!==null&&(l.visible=s!==null),c!==null&&(c.visible=a!==null),this}_getHandJoint(r,e){if(r.joints[e.jointName]===void 0){let i=new hr;i.matrixAutoUpdate=!1,i.visible=!1,r.joints[e.jointName]=i,r.add(i)}return r.joints[e.jointName]}},lf=class extends Hi{constructor(r,e,i,n,s,a,o,l,c,u){if(u=u!==void 0?u:nf,u!==nf&&u!==gp)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");i===void 0&&u===nf&&(i=rf),i===void 0&&u===gp&&(i=dp),super(null,n,s,a,o,l,u,i,c),this.isDepthTexture=!0,this.image={width:r,height:e},this.magFilter=o!==void 0?o:Di,this.minFilter=l!==void 0?l:Di,this.flipY=!1,this.generateMipmaps=!1}},y4=class extends Ra{constructor(r,e){super();let i=this,n=null,s=1,a=null,o="local-floor",l=1,c=null,u=null,h=null,p=null,d=null,f=null,m=e.getContextAttributes(),g=null,y=null,E=[],b=[],x=new Set,S=new Map,D=new qr;D.layers.enable(1),D.viewport=new Jr;let P=new qr;P.layers.enable(2),P.viewport=new Jr;let _=[D,P],w=new ID;w.layers.enable(1),w.layers.enable(2);let F=null,X=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(se){let ue=E[se];return ue===void 0&&(ue=new Yb,E[se]=ue),ue.getTargetRaySpace()},this.getControllerGrip=function(se){let ue=E[se];return ue===void 0&&(ue=new Yb,E[se]=ue),ue.getGripSpace()},this.getHand=function(se){let ue=E[se];return ue===void 0&&(ue=new Yb,E[se]=ue),ue.getHandSpace()};function H(se){let ue=b.indexOf(se.inputSource);if(ue===-1)return;let ve=E[ue];ve!==void 0&&ve.dispatchEvent({type:se.type,data:se.inputSource})}function he(){n.removeEventListener("select",H),n.removeEventListener("selectstart",H),n.removeEventListener("selectend",H),n.removeEventListener("squeeze",H),n.removeEventListener("squeezestart",H),n.removeEventListener("squeezeend",H),n.removeEventListener("end",he),n.removeEventListener("inputsourceschange",C);for(let se=0;se<E.length;se++){let ue=b[se];ue!==null&&(b[se]=null,E[se].disconnect(ue))}F=null,X=null,r.setRenderTarget(g),d=null,p=null,h=null,n=null,y=null,ae.stop(),i.isPresenting=!1,i.dispatchEvent({type:"sessionend"})}this.setFramebufferScaleFactor=function(se){s=se,i.isPresenting===!0&&console.warn("THREE.WebXRManager: Cannot change framebuffer scale while presenting.")},this.setReferenceSpaceType=function(se){o=se,i.isPresenting===!0&&console.warn("THREE.WebXRManager: Cannot change reference space type while presenting.")},this.getReferenceSpace=function(){return c||a},this.setReferenceSpace=function(se){c=se},this.getBaseLayer=function(){return p!==null?p:d},this.getBinding=function(){return h},this.getFrame=function(){return f},this.getSession=function(){return n},this.setSession=function(se){return ot(this,null,function*(){if(n=se,n!==null){if(g=r.getRenderTarget(),n.addEventListener("select",H),n.addEventListener("selectstart",H),n.addEventListener("selectend",H),n.addEventListener("squeeze",H),n.addEventListener("squeezestart",H),n.addEventListener("squeezeend",H),n.addEventListener("end",he),n.addEventListener("inputsourceschange",C),m.xrCompatible!==!0&&(yield e.makeXRCompatible()),n.renderState.layers===void 0||r.capabilities.isWebGL2===!1){let ue={antialias:n.renderState.layers===void 0?m.antialias:!0,alpha:m.alpha,depth:m.depth,stencil:m.stencil,framebufferScaleFactor:s};d=new XRWebGLLayer(n,e,ue),n.updateRenderState({baseLayer:d}),y=new kr(d.framebufferWidth,d.framebufferHeight,{format:Bs,type:Fu,encoding:r.outputEncoding,stencilBuffer:m.stencil})}else{let ue=null,ve=null,be=null;m.depth&&(be=m.stencil?35056:33190,ue=m.stencil?gp:nf,ve=m.stencil?dp:rf);let de={colorFormat:32856,depthFormat:be,scaleFactor:s};h=new XRWebGLBinding(n,e),p=h.createProjectionLayer(de),n.updateRenderState({layers:[p]}),y=new kr(p.textureWidth,p.textureHeight,{format:Bs,type:Fu,depthTexture:new lf(p.textureWidth,p.textureHeight,ve,void 0,void 0,void 0,void 0,void 0,void 0,ue),stencilBuffer:m.stencil,encoding:r.outputEncoding,samples:m.antialias?4:0});let we=r.properties.get(y);we.__ignoreDepthValues=p.ignoreDepthValues}y.isXRRenderTarget=!0,this.setFoveation(l),c=null,a=yield n.requestReferenceSpace(o),ae.setContext(n),ae.start(),i.isPresenting=!0,i.dispatchEvent({type:"sessionstart"})}})};function C(se){for(let ue=0;ue<se.removed.length;ue++){let ve=se.removed[ue],be=b.indexOf(ve);be>=0&&(b[be]=null,E[be].disconnect(ve))}for(let ue=0;ue<se.added.length;ue++){let ve=se.added[ue],be=b.indexOf(ve);if(be===-1){for(let we=0;we<E.length;we++)if(we>=b.length){b.push(ve),be=we;break}else if(b[we]===null){b[we]=ve,be=we;break}if(be===-1)break}let de=E[be];de&&de.connect(ve)}}let N=new A,k=new A;function G(se,ue,ve){N.setFromMatrixPosition(ue.matrixWorld),k.setFromMatrixPosition(ve.matrixWorld);let be=N.distanceTo(k),de=ue.projectionMatrix.elements,we=ve.projectionMatrix.elements,Fe=de[14]/(de[10]-1),je=de[14]/(de[10]+1),Oe=(de[9]+1)/de[5],dt=(de[9]-1)/de[5],Be=(de[8]-1)/de[0],ke=(we[8]+1)/we[0],nt=Fe*Be,bt=Fe*ke,mt=be/(-Be+ke),_e=mt*-Be;ue.matrixWorld.decompose(se.position,se.quaternion,se.scale),se.translateX(_e),se.translateZ(mt),se.matrixWorld.compose(se.position,se.quaternion,se.scale),se.matrixWorldInverse.copy(se.matrixWorld).invert();let J=Fe+mt,$=je+mt,re=nt-_e,me=bt+(be-_e),z=Oe*je/$*J,Y=dt*je/$*J;se.projectionMatrix.makePerspective(re,me,z,Y,J,$)}function U(se,ue){ue===null?se.matrixWorld.copy(se.matrix):se.matrixWorld.multiplyMatrices(ue.matrixWorld,se.matrix),se.matrixWorldInverse.copy(se.matrixWorld).invert()}this.updateCamera=function(se){if(n===null)return;w.near=P.near=D.near=se.near,w.far=P.far=D.far=se.far,(F!==w.near||X!==w.far)&&(n.updateRenderState({depthNear:w.near,depthFar:w.far}),F=w.near,X=w.far);let ue=se.parent,ve=w.cameras;U(w,ue);for(let de=0;de<ve.length;de++)U(ve[de],ue);w.matrixWorld.decompose(w.position,w.quaternion,w.scale),se.matrix.copy(w.matrix),se.matrix.decompose(se.position,se.quaternion,se.scale);let be=se.children;for(let de=0,we=be.length;de<we;de++)be[de].updateMatrixWorld(!0);ve.length===2?G(w,D,P):w.projectionMatrix.copy(D.projectionMatrix)},this.getCamera=function(){return w},this.getFoveation=function(){if(!(p===null&&d===null))return l},this.setFoveation=function(se){l=se,p!==null&&(p.fixedFoveation=se),d!==null&&d.fixedFoveation!==void 0&&(d.fixedFoveation=se)},this.getPlanes=function(){return x};let j=null;function ee(se,ue){if(u=ue.getViewerPose(c||a),f=ue,u!==null){let ve=u.views;d!==null&&(r.setRenderTargetFramebuffer(y,d.framebuffer),r.setRenderTarget(y));let be=!1;ve.length!==w.cameras.length&&(w.cameras.length=0,be=!0);for(let de=0;de<ve.length;de++){let we=ve[de],Fe=null;if(d!==null)Fe=d.getViewport(we);else{let Oe=h.getViewSubImage(p,we);Fe=Oe.viewport,de===0&&(r.setRenderTargetTextures(y,Oe.colorTexture,p.ignoreDepthValues?void 0:Oe.depthStencilTexture),r.setRenderTarget(y))}let je=_[de];je===void 0&&(je=new qr,je.layers.enable(de),je.viewport=new Jr,_[de]=je),je.matrix.fromArray(we.transform.matrix),je.projectionMatrix.fromArray(we.projectionMatrix),je.viewport.set(Fe.x,Fe.y,Fe.width,Fe.height),de===0&&w.matrix.copy(je.matrix),be===!0&&w.cameras.push(je)}}for(let ve=0;ve<E.length;ve++){let be=b[ve],de=E[ve];be!==null&&de!==void 0&&de.update(be,ue,c||a)}if(j&&j(se,ue),ue.detectedPlanes){i.dispatchEvent({type:"planesdetected",data:ue.detectedPlanes});let ve=null;for(let be of x)ue.detectedPlanes.has(be)||(ve===null&&(ve=[]),ve.push(be));if(ve!==null)for(let be of ve)x.delete(be),S.delete(be),i.dispatchEvent({type:"planeremoved",data:be});for(let be of ue.detectedPlanes)if(!x.has(be))x.add(be),S.set(be,ue.lastChangedTime),i.dispatchEvent({type:"planeadded",data:be});else{let de=S.get(be);be.lastChangedTime>de&&(S.set(be,be.lastChangedTime),i.dispatchEvent({type:"planechanged",data:be}))}}f=null}let ae=new phe;ae.setAnimationLoop(ee),this.setAnimationLoop=function(se){j=se},this.dispose=function(){}}};function l0t(t,r){function e(m,g){g.color.getRGB(m.fogColor.value,hhe(t)),g.isFog?(m.fogNear.value=g.near,m.fogFar.value=g.far):g.isFogExp2&&(m.fogDensity.value=g.density)}function i(m,g,y,E,b){g.isMeshBasicMaterial||g.isMeshLambertMaterial?n(m,g):g.isMeshToonMaterial?(n(m,g),u(m,g)):g.isMeshPhongMaterial?(n(m,g),c(m,g)):g.isMeshStandardMaterial?(n(m,g),h(m,g),g.isMeshPhysicalMaterial&&p(m,g,b)):g.isMeshMatcapMaterial?(n(m,g),d(m,g)):g.isMeshDepthMaterial?n(m,g):g.isMeshDistanceMaterial?(n(m,g),f(m,g)):g.isMeshNormalMaterial?n(m,g):g.isLineBasicMaterial?(s(m,g),g.isLineDashedMaterial&&a(m,g)):g.isPointsMaterial?o(m,g,y,E):g.isSpriteMaterial?l(m,g):g.isShadowMaterial?(m.color.value.copy(g.color),m.opacity.value=g.opacity):g.isShaderMaterial&&(g.uniformsNeedUpdate=!1)}function n(m,g){m.opacity.value=g.opacity,g.color&&m.diffuse.value.copy(g.color),g.emissive&&m.emissive.value.copy(g.emissive).multiplyScalar(g.emissiveIntensity),g.map&&(m.map.value=g.map),g.alphaMap&&(m.alphaMap.value=g.alphaMap),g.bumpMap&&(m.bumpMap.value=g.bumpMap,m.bumpScale.value=g.bumpScale,g.side===Gn&&(m.bumpScale.value*=-1)),g.displacementMap&&(m.displacementMap.value=g.displacementMap,m.displacementScale.value=g.displacementScale,m.displacementBias.value=g.displacementBias),g.emissiveMap&&(m.emissiveMap.value=g.emissiveMap),g.normalMap&&(m.normalMap.value=g.normalMap,m.normalScale.value.copy(g.normalScale),g.side===Gn&&m.normalScale.value.negate()),g.specularMap&&(m.specularMap.value=g.specularMap),g.alphaTest>0&&(m.alphaTest.value=g.alphaTest);let y=r.get(g).envMap;if(y&&(m.envMap.value=y,m.flipEnvMap.value=y.isCubeTexture&&y.isRenderTargetTexture===!1?-1:1,m.reflectivity.value=g.reflectivity,m.ior.value=g.ior,m.refractionRatio.value=g.refractionRatio),g.lightMap){m.lightMap.value=g.lightMap;let x=t.physicallyCorrectLights!==!0?Math.PI:1;m.lightMapIntensity.value=g.lightMapIntensity*x}g.aoMap&&(m.aoMap.value=g.aoMap,m.aoMapIntensity.value=g.aoMapIntensity);let E;g.map?E=g.map:g.specularMap?E=g.specularMap:g.displacementMap?E=g.displacementMap:g.normalMap?E=g.normalMap:g.bumpMap?E=g.bumpMap:g.roughnessMap?E=g.roughnessMap:g.metalnessMap?E=g.metalnessMap:g.alphaMap?E=g.alphaMap:g.emissiveMap?E=g.emissiveMap:g.clearcoatMap?E=g.clearcoatMap:g.clearcoatNormalMap?E=g.clearcoatNormalMap:g.clearcoatRoughnessMap?E=g.clearcoatRoughnessMap:g.iridescenceMap?E=g.iridescenceMap:g.iridescenceThicknessMap?E=g.iridescenceThicknessMap:g.specularIntensityMap?E=g.specularIntensityMap:g.specularColorMap?E=g.specularColorMap:g.transmissionMap?E=g.transmissionMap:g.thicknessMap?E=g.thicknessMap:g.sheenColorMap?E=g.sheenColorMap:g.sheenRoughnessMap&&(E=g.sheenRoughnessMap),E!==void 0&&(E.isWebGLRenderTarget&&(E=E.texture),E.matrixAutoUpdate===!0&&E.updateMatrix(),m.uvTransform.value.copy(E.matrix));let b;g.aoMap?b=g.aoMap:g.lightMap&&(b=g.lightMap),b!==void 0&&(b.isWebGLRenderTarget&&(b=b.texture),b.matrixAutoUpdate===!0&&b.updateMatrix(),m.uv2Transform.value.copy(b.matrix))}function s(m,g){m.diffuse.value.copy(g.color),m.opacity.value=g.opacity}function a(m,g){m.dashSize.value=g.dashSize,m.totalSize.value=g.dashSize+g.gapSize,m.scale.value=g.scale}function o(m,g,y,E){m.diffuse.value.copy(g.color),m.opacity.value=g.opacity,m.size.value=g.size*y,m.scale.value=E*.5,g.map&&(m.map.value=g.map),g.alphaMap&&(m.alphaMap.value=g.alphaMap),g.alphaTest>0&&(m.alphaTest.value=g.alphaTest);let b;g.map?b=g.map:g.alphaMap&&(b=g.alphaMap),b!==void 0&&(b.matrixAutoUpdate===!0&&b.updateMatrix(),m.uvTransform.value.copy(b.matrix))}function l(m,g){m.diffuse.value.copy(g.color),m.opacity.value=g.opacity,m.rotation.value=g.rotation,g.map&&(m.map.value=g.map),g.alphaMap&&(m.alphaMap.value=g.alphaMap),g.alphaTest>0&&(m.alphaTest.value=g.alphaTest);let y;g.map?y=g.map:g.alphaMap&&(y=g.alphaMap),y!==void 0&&(y.matrixAutoUpdate===!0&&y.updateMatrix(),m.uvTransform.value.copy(y.matrix))}function c(m,g){m.specular.value.copy(g.specular),m.shininess.value=Math.max(g.shininess,1e-4)}function u(m,g){g.gradientMap&&(m.gradientMap.value=g.gradientMap)}function h(m,g){m.roughness.value=g.roughness,m.metalness.value=g.metalness,g.roughnessMap&&(m.roughnessMap.value=g.roughnessMap),g.metalnessMap&&(m.metalnessMap.value=g.metalnessMap),r.get(g).envMap&&(m.envMapIntensity.value=g.envMapIntensity)}function p(m,g,y){m.ior.value=g.ior,g.sheen>0&&(m.sheenColor.value.copy(g.sheenColor).multiplyScalar(g.sheen),m.sheenRoughness.value=g.sheenRoughness,g.sheenColorMap&&(m.sheenColorMap.value=g.sheenColorMap),g.sheenRoughnessMap&&(m.sheenRoughnessMap.value=g.sheenRoughnessMap)),g.clearcoat>0&&(m.clearcoat.value=g.clearcoat,m.clearcoatRoughness.value=g.clearcoatRoughness,g.clearcoatMap&&(m.clearcoatMap.value=g.clearcoatMap),g.clearcoatRoughnessMap&&(m.clearcoatRoughnessMap.value=g.clearcoatRoughnessMap),g.clearcoatNormalMap&&(m.clearcoatNormalScale.value.copy(g.clearcoatNormalScale),m.clearcoatNormalMap.value=g.clearcoatNormalMap,g.side===Gn&&m.clearcoatNormalScale.value.negate())),g.iridescence>0&&(m.iridescence.value=g.iridescence,m.iridescenceIOR.value=g.iridescenceIOR,m.iridescenceThicknessMinimum.value=g.iridescenceThicknessRange[0],m.iridescenceThicknessMaximum.value=g.iridescenceThicknessRange[1],g.iridescenceMap&&(m.iridescenceMap.value=g.iridescenceMap),g.iridescenceThicknessMap&&(m.iridescenceThicknessMap.value=g.iridescenceThicknessMap)),g.transmission>0&&(m.transmission.value=g.transmission,m.transmissionSamplerMap.value=y.texture,m.transmissionSamplerSize.value.set(y.width,y.height),g.transmissionMap&&(m.transmissionMap.value=g.transmissionMap),m.thickness.value=g.thickness,g.thicknessMap&&(m.thicknessMap.value=g.thicknessMap),m.attenuationDistance.value=g.attenuationDistance,m.attenuationColor.value.copy(g.attenuationColor)),m.specularIntensity.value=g.specularIntensity,m.specularColor.value.copy(g.specularColor),g.specularIntensityMap&&(m.specularIntensityMap.value=g.specularIntensityMap),g.specularColorMap&&(m.specularColorMap.value=g.specularColorMap)}function d(m,g){g.matcap&&(m.matcap.value=g.matcap)}function f(m,g){m.referencePosition.value.copy(g.referencePosition),m.nearDistance.value=g.nearDistance,m.farDistance.value=g.farDistance}return{refreshFogUniforms:e,refreshMaterialUniforms:i}}function c0t(t,r,e,i){let n={},s={},a=[],o=e.isWebGL2?t.getParameter(35375):0;function l(E,b){let x=b.program;i.uniformBlockBinding(E,x)}function c(E,b){let x=n[E.id];x===void 0&&(f(E),x=u(E),n[E.id]=x,E.addEventListener("dispose",g));let S=b.program;i.updateUBOMapping(E,S);let D=r.render.frame;s[E.id]!==D&&(p(E),s[E.id]=D)}function u(E){let b=h();E.__bindingPointIndex=b;let x=t.createBuffer(),S=E.__size,D=E.usage;return t.bindBuffer(35345,x),t.bufferData(35345,S,D),t.bindBuffer(35345,null),t.bindBufferBase(35345,b,x),x}function h(){for(let E=0;E<o;E++)if(a.indexOf(E)===-1)return a.push(E),E;return console.error("THREE.WebGLRenderer: Maximum number of simultaneously usable uniforms groups reached."),0}function p(E){let b=n[E.id],x=E.uniforms,S=E.__cache;t.bindBuffer(35345,b);for(let D=0,P=x.length;D<P;D++){let _=x[D];if(d(_,D,S)===!0){let w=_.__offset,F=Array.isArray(_.value)?_.value:[_.value],X=0;for(let H=0;H<F.length;H++){let he=F[H],C=m(he);typeof he=="number"?(_.__data[0]=he,t.bufferSubData(35345,w+X,_.__data)):he.isMatrix3?(_.__data[0]=he.elements[0],_.__data[1]=he.elements[1],_.__data[2]=he.elements[2],_.__data[3]=he.elements[0],_.__data[4]=he.elements[3],_.__data[5]=he.elements[4],_.__data[6]=he.elements[5],_.__data[7]=he.elements[0],_.__data[8]=he.elements[6],_.__data[9]=he.elements[7],_.__data[10]=he.elements[8],_.__data[11]=he.elements[0]):(he.toArray(_.__data,X),X+=C.storage/Float32Array.BYTES_PER_ELEMENT)}t.bufferSubData(35345,w,_.__data)}}t.bindBuffer(35345,null)}function d(E,b,x){let S=E.value;if(x[b]===void 0){if(typeof S=="number")x[b]=S;else{let D=Array.isArray(S)?S:[S],P=[];for(let _=0;_<D.length;_++)P.push(D[_].clone());x[b]=P}return!0}else if(typeof S=="number"){if(x[b]!==S)return x[b]=S,!0}else{let D=Array.isArray(x[b])?x[b]:[x[b]],P=Array.isArray(S)?S:[S];for(let _=0;_<D.length;_++){let w=D[_];if(w.equals(P[_])===!1)return w.copy(P[_]),!0}}return!1}function f(E){let b=E.uniforms,x=0,S=16,D=0;for(let P=0,_=b.length;P<_;P++){let w=b[P],F={boundary:0,storage:0},X=Array.isArray(w.value)?w.value:[w.value];for(let H=0,he=X.length;H<he;H++){let C=X[H],N=m(C);F.boundary+=N.boundary,F.storage+=N.storage}if(w.__data=new Float32Array(F.storage/Float32Array.BYTES_PER_ELEMENT),w.__offset=x,P>0){D=x%S;let H=S-D;D!==0&&H-F.boundary<0&&(x+=S-D,w.__offset=x)}x+=F.storage}return D=x%S,D>0&&(x+=S-D),E.__size=x,E.__cache={},this}function m(E){let b={boundary:0,storage:0};return typeof E=="number"?(b.boundary=4,b.storage=4):E.isVector2?(b.boundary=8,b.storage=8):E.isVector3||E.isColor?(b.boundary=16,b.storage=12):E.isVector4?(b.boundary=16,b.storage=16):E.isMatrix3?(b.boundary=48,b.storage=48):E.isMatrix4?(b.boundary=64,b.storage=64):E.isTexture?console.warn("THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group."):console.warn("THREE.WebGLRenderer: Unsupported uniform value type.",E),b}function g(E){let b=E.target;b.removeEventListener("dispose",g);let x=a.indexOf(b.__bindingPointIndex);a.splice(x,1),t.deleteBuffer(n[b.id]),delete n[b.id],delete s[b.id]}function y(){for(let E in n)t.deleteBuffer(n[E]);a=[],n={},s={}}return{bind:l,update:c,dispose:y}}function u0t(){let t=ex("canvas");return t.style.display="block",t}function Pl(t={}){this.isWebGLRenderer=!0;let r=t.canvas!==void 0?t.canvas:u0t(),e=t.context!==void 0?t.context:null,i=t.depth!==void 0?t.depth:!0,n=t.stencil!==void 0?t.stencil:!0,s=t.antialias!==void 0?t.antialias:!1,a=t.premultipliedAlpha!==void 0?t.premultipliedAlpha:!0,o=t.preserveDrawingBuffer!==void 0?t.preserveDrawingBuffer:!1,l=t.powerPreference!==void 0?t.powerPreference:"default",c=t.failIfMajorPerformanceCaveat!==void 0?t.failIfMajorPerformanceCaveat:!1,u;e!==null?u=e.getContextAttributes().alpha:u=t.alpha!==void 0?t.alpha:!1;let h=null,p=null,d=[],f=[];this.domElement=r,this.debug={checkShaderErrors:!0},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this.outputEncoding=wl,this.physicallyCorrectLights=!1,this.toneMapping=Lu,this.toneMappingExposure=1;let m=this,g=!1,y=0,E=0,b=null,x=-1,S=null,D=new Jr,P=new Jr,_=null,w=r.width,F=r.height,X=1,H=null,he=null,C=new Jr(0,0,w,F),N=new Jr(0,0,w,F),k=!1,G=new eo,U=!1,j=!1,ee=null,ae=new Ue,se=new le,ue=new A,ve={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};function be(){return b===null?X:1}let de=e;function we(Te,ze){for(let Qe=0;Qe<Te.length;Qe++){let Le=Te[Qe],Ke=r.getContext(Le,ze);if(Ke!==null)return Ke}return null}try{let Te={alpha:!0,depth:i,stencil:n,antialias:s,premultipliedAlpha:a,preserveDrawingBuffer:o,powerPreference:l,failIfMajorPerformanceCaveat:c};if("setAttribute"in r&&r.setAttribute("data-engine",`three.js r${WD}`),r.addEventListener("webglcontextlost",Ct,!1),r.addEventListener("webglcontextrestored",Dt,!1),r.addEventListener("webglcontextcreationerror",cr,!1),de===null){let ze=["webgl2","webgl","experimental-webgl"];if(m.isWebGL1Renderer===!0&&ze.shift(),de=we(ze,Te),de===null)throw we(ze)?new Error("Error creating WebGL context with your selected attributes."):new Error("Error creating WebGL context.")}de.getShaderPrecisionFormat===void 0&&(de.getShaderPrecisionFormat=function(){return{rangeMin:1,rangeMax:1,precision:1}})}catch(Te){throw console.error("THREE.WebGLRenderer: "+Te.message),Te}let Fe,je,Oe,dt,Be,ke,nt,bt,mt,_e,J,$,re,me,z,Y,xe,Ce,Ge,Ze,gt,ye,Re,ut;function vt(){Fe=new Omt(de),je=new wmt(de,Fe,t),Fe.init(je),ye=new vhe(de,Fe,je),Oe=new s0t(de,Fe,je),dt=new Lmt,Be=new Ygt,ke=new a0t(de,Fe,Oe,Be,je,ye,dt),nt=new Mmt(m),bt=new Amt(m),mt=new jpt(de,je),Re=new Smt(de,Fe,mt,je),_e=new Pmt(de,mt,dt,Re),J=new Bmt(de,_e,mt,dt),Ge=new Umt(de,je,ke),Y=new Rmt(Be),$=new qgt(m,nt,bt,Fe,je,Re,Y),re=new l0t(m,Be),me=new $gt,z=new t0t(Fe,je),Ce=new Imt(m,nt,bt,Oe,J,u,a),xe=new n0t(m,J,je),ut=new c0t(de,dt,je,Oe),Ze=new _mt(de,Fe,dt,je),gt=new Nmt(de,Fe,dt,je),dt.programs=$.programs,m.capabilities=je,m.extensions=Fe,m.properties=Be,m.renderLists=me,m.shadowMap=xe,m.state=Oe,m.info=dt}vt();let Et=new y4(m,de);this.xr=Et,this.getContext=function(){return de},this.getContextAttributes=function(){return de.getContextAttributes()},this.forceContextLoss=function(){let Te=Fe.get("WEBGL_lose_context");Te&&Te.loseContext()},this.forceContextRestore=function(){let Te=Fe.get("WEBGL_lose_context");Te&&Te.restoreContext()},this.getPixelRatio=function(){return X},this.setPixelRatio=function(Te){Te!==void 0&&(X=Te,this.setSize(w,F,!1))},this.getSize=function(Te){return Te.set(w,F)},this.setSize=function(Te,ze,Qe){if(Et.isPresenting){console.warn("THREE.WebGLRenderer: Can't change size while VR device is presenting.");return}w=Te,F=ze,r.width=Math.floor(Te*X),r.height=Math.floor(ze*X),Qe!==!1&&(r.style.width=Te+"px",r.style.height=ze+"px"),this.setViewport(0,0,Te,ze)},this.getDrawingBufferSize=function(Te){return Te.set(w*X,F*X).floor()},this.setDrawingBufferSize=function(Te,ze,Qe){w=Te,F=ze,X=Qe,r.width=Math.floor(Te*Qe),r.height=Math.floor(ze*Qe),this.setViewport(0,0,Te,ze)},this.getCurrentViewport=function(Te){return Te.copy(D)},this.getViewport=function(Te){return Te.copy(C)},this.setViewport=function(Te,ze,Qe,Le){Te.isVector4?C.set(Te.x,Te.y,Te.z,Te.w):C.set(Te,ze,Qe,Le),Oe.viewport(D.copy(C).multiplyScalar(X).floor())},this.getScissor=function(Te){return Te.copy(N)},this.setScissor=function(Te,ze,Qe,Le){Te.isVector4?N.set(Te.x,Te.y,Te.z,Te.w):N.set(Te,ze,Qe,Le),Oe.scissor(P.copy(N).multiplyScalar(X).floor())},this.getScissorTest=function(){return k},this.setScissorTest=function(Te){Oe.setScissorTest(k=Te)},this.setOpaqueSort=function(Te){H=Te},this.setTransparentSort=function(Te){he=Te},this.getClearColor=function(Te){return Te.copy(Ce.getClearColor())},this.setClearColor=function(){Ce.setClearColor.apply(Ce,arguments)},this.getClearAlpha=function(){return Ce.getClearAlpha()},this.setClearAlpha=function(){Ce.setClearAlpha.apply(Ce,arguments)},this.clear=function(Te=!0,ze=!0,Qe=!0){let Le=0;Te&&(Le|=16384),ze&&(Le|=256),Qe&&(Le|=1024),de.clear(Le)},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(){r.removeEventListener("webglcontextlost",Ct,!1),r.removeEventListener("webglcontextrestored",Dt,!1),r.removeEventListener("webglcontextcreationerror",cr,!1),me.dispose(),z.dispose(),Be.dispose(),nt.dispose(),bt.dispose(),J.dispose(),Re.dispose(),ut.dispose(),$.dispose(),Et.dispose(),Et.removeEventListener("sessionstart",_t),Et.removeEventListener("sessionend",Vt),ee&&(ee.dispose(),ee=null),Rr.stop()};function Ct(Te){Te.preventDefault(),console.log("THREE.WebGLRenderer: Context Lost."),g=!0}function Dt(){console.log("THREE.WebGLRenderer: Context Restored."),g=!1;let Te=dt.autoReset,ze=xe.enabled,Qe=xe.autoUpdate,Le=xe.needsUpdate,Ke=xe.type;vt(),dt.autoReset=Te,xe.enabled=ze,xe.autoUpdate=Qe,xe.needsUpdate=Le,xe.type=Ke}function cr(Te){console.error("THREE.WebGLRenderer: A WebGL context could not be created. Reason: ",Te.statusMessage)}function Xt(Te){let ze=Te.target;ze.removeEventListener("dispose",Xt),gr(ze)}function gr(Te){Ae(Te),Be.remove(Te)}function Ae(Te){let ze=Be.get(Te).programs;ze!==void 0&&(ze.forEach(function(Qe){$.releaseProgram(Qe)}),Te.isShaderMaterial&&$.releaseShaderCache(Te))}this.renderBufferDirect=function(Te,ze,Qe,Le,Ke,Jt){ze===null&&(ze=ve);let Ir=Ke.isMesh&&Ke.matrixWorld.determinant()<0,Nr=um(Te,ze,Qe,Le,Ke);Oe.setMaterial(Le,Ir);let Fr=Qe.index,Yr=1;Le.wireframe===!0&&(Fr=_e.getWireframeAttribute(Qe),Yr=2);let kt=Qe.drawRange,Vr=Qe.attributes.position,ei=kt.start*Yr,dn=(kt.start+kt.count)*Yr;Jt!==null&&(ei=Math.max(ei,Jt.start*Yr),dn=Math.min(dn,(Jt.start+Jt.count)*Yr)),Fr!==null?(ei=Math.max(ei,0),dn=Math.min(dn,Fr.count)):Vr!=null&&(ei=Math.max(ei,0),dn=Math.min(dn,Vr.count));let ki=dn-ei;if(ki<0||ki===1/0)return;Re.setup(Ke,Le,Nr,Qe,Fr);let nr,q=Ze;if(Fr!==null&&(nr=mt.get(Fr),q=gt,q.setIndex(nr)),Ke.isMesh)Le.wireframe===!0?(Oe.setLineWidth(Le.wireframeLinewidth*be()),q.setMode(1)):q.setMode(4);else if(Ke.isLine){let er=Le.linewidth;er===void 0&&(er=1),Oe.setLineWidth(er*be()),Ke.isLineSegments?q.setMode(1):Ke.isLineLoop?q.setMode(2):q.setMode(3)}else Ke.isPoints?q.setMode(0):Ke.isSprite&&q.setMode(4);if(Ke.isInstancedMesh)q.renderInstances(ei,ki,Ke.count);else if(Qe.isInstancedBufferGeometry){let er=Qe._maxInstanceCount!==void 0?Qe._maxInstanceCount:1/0,cu=Math.min(Qe.instanceCount,er);q.renderInstances(ei,ki,cu)}else q.render(ei,ki)},this.compile=function(Te,ze){function Qe(Le,Ke,Jt){Le.transparent===!0&&Le.side===wi&&Le.forceSinglePass===!1?(Le.side=Gn,Le.needsUpdate=!0,Is(Le,Ke,Jt),Le.side=en,Le.needsUpdate=!0,Is(Le,Ke,Jt),Le.side=wi):Is(Le,Ke,Jt)}p=z.get(Te),p.init(),f.push(p),Te.traverseVisible(function(Le){Le.isLight&&Le.layers.test(ze.layers)&&(p.pushLight(Le),Le.castShadow&&p.pushShadow(Le))}),p.setupLights(m.physicallyCorrectLights),Te.traverse(function(Le){let Ke=Le.material;if(Ke)if(Array.isArray(Ke))for(let Jt=0;Jt<Ke.length;Jt++){let Ir=Ke[Jt];Qe(Ir,Te,Le)}else Qe(Ke,Te,Le)}),f.pop(),p=null};let Xe=null;function lt(Te){Xe&&Xe(Te)}function _t(){Rr.stop()}function Vt(){Rr.start()}let Rr=new phe;Rr.setAnimationLoop(lt),typeof self!="undefined"&&Rr.setContext(self),this.setAnimationLoop=function(Te){Xe=Te,Et.setAnimationLoop(Te),Te===null?Rr.stop():Rr.start()},Et.addEventListener("sessionstart",_t),Et.addEventListener("sessionend",Vt),this.render=function(Te,ze){if(ze!==void 0&&ze.isCamera!==!0){console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");return}if(g===!0)return;Te.matrixWorldAutoUpdate===!0&&Te.updateMatrixWorld(),ze.parent===null&&ze.matrixWorldAutoUpdate===!0&&ze.updateMatrixWorld(),Et.enabled===!0&&Et.isPresenting===!0&&(Et.cameraAutoUpdate===!0&&Et.updateCamera(ze),ze=Et.getCamera()),Te.isScene===!0&&Te.onBeforeRender(m,Te,ze,b),p=z.get(Te,f.length),p.init(),f.push(p),ae.multiplyMatrices(ze.projectionMatrix,ze.matrixWorldInverse),G.setFromProjectionMatrix(ae),j=this.localClippingEnabled,U=Y.init(this.clippingPlanes,j),h=me.get(Te,d.length),h.init(),d.push(h),Ki(Te,ze,0,m.sortObjects),h.finish(),m.sortObjects===!0&&h.sort(H,he),U===!0&&Y.beginShadows();let Qe=p.state.shadowsArray;if(xe.render(Qe,Te,ze),U===!0&&Y.endShadows(),this.info.autoReset===!0&&this.info.reset(),Ce.render(h,Te),p.setupLights(m.physicallyCorrectLights),ze.isArrayCamera){let Le=ze.cameras;for(let Ke=0,Jt=Le.length;Ke<Jt;Ke++){let Ir=Le[Ke];Pi(h,Te,Ir,Ir.viewport)}}else Pi(h,Te,ze);b!==null&&(ke.updateMultisampleRenderTarget(b),ke.updateRenderTargetMipmap(b)),Te.isScene===!0&&Te.onAfterRender(m,Te,ze),Re.resetDefaultState(),x=-1,S=null,f.pop(),f.length>0?p=f[f.length-1]:p=null,d.pop(),d.length>0?h=d[d.length-1]:h=null};function Ki(Te,ze,Qe,Le){if(Te.visible===!1)return;if(Te.layers.test(ze.layers)){if(Te.isGroup)Qe=Te.renderOrder;else if(Te.isLOD)Te.autoUpdate===!0&&Te.update(ze);else if(Te.isLight)p.pushLight(Te),Te.castShadow&&p.pushShadow(Te);else if(Te.isSprite){if(!Te.frustumCulled||G.intersectsSprite(Te)){Le&&ue.setFromMatrixPosition(Te.matrixWorld).applyMatrix4(ae);let Ir=J.update(Te),Nr=Te.material;Nr.visible&&h.push(Te,Ir,Nr,Qe,ue.z,null)}}else if((Te.isMesh||Te.isLine||Te.isPoints)&&(Te.isSkinnedMesh&&Te.skeleton.frame!==dt.render.frame&&(Te.skeleton.update(),Te.skeleton.frame=dt.render.frame),!Te.frustumCulled||G.intersectsObject(Te))){Le&&ue.setFromMatrixPosition(Te.matrixWorld).applyMatrix4(ae);let Ir=J.update(Te),Nr=Te.material;if(Array.isArray(Nr)){let Fr=Ir.groups;for(let Yr=0,kt=Fr.length;Yr<kt;Yr++){let Vr=Fr[Yr],ei=Nr[Vr.materialIndex];ei&&ei.visible&&h.push(Te,Ir,ei,Qe,ue.z,Vr)}}else Nr.visible&&h.push(Te,Ir,Nr,Qe,ue.z,null)}}let Jt=Te.children;for(let Ir=0,Nr=Jt.length;Ir<Nr;Ir++)Ki(Jt[Ir],ze,Qe,Le)}function Pi(Te,ze,Qe,Le){let Ke=Te.opaque,Jt=Te.transmissive,Ir=Te.transparent;p.setupLightsView(Qe),U===!0&&Y.setGlobalState(m.clippingPlanes,Qe),Jt.length>0&&Fn(Ke,ze,Qe),Le&&Oe.viewport(D.copy(Le)),Ke.length>0&&Kt(Ke,ze,Qe),Jt.length>0&&Kt(Jt,ze,Qe),Ir.length>0&&Kt(Ir,ze,Qe),Oe.buffers.depth.setTest(!0),Oe.buffers.depth.setMask(!0),Oe.buffers.color.setMask(!0),Oe.setPolygonOffset(!1)}function Fn(Te,ze,Qe){let Le=je.isWebGL2;ee===null&&(ee=new kr(1,1,{generateMipmaps:!0,type:Fe.has("EXT_color_buffer_half_float")?Go:Fu,minFilter:wa,samples:Le&&s===!0?4:0})),m.getDrawingBufferSize(se),Le?ee.setSize(se.x,se.y):ee.setSize(ED(se.x),ED(se.y));let Ke=m.getRenderTarget();m.setRenderTarget(ee),m.clear();let Jt=m.toneMapping;m.toneMapping=Lu,Kt(Te,ze,Qe),m.toneMapping=Jt,ke.updateMultisampleRenderTarget(ee),ke.updateRenderTargetMipmap(ee),m.setRenderTarget(Ke)}function Kt(Te,ze,Qe){let Le=ze.isScene===!0?ze.overrideMaterial:null;for(let Ke=0,Jt=Te.length;Ke<Jt;Ke++){let Ir=Te[Ke],Nr=Ir.object,Fr=Ir.geometry,Yr=Le===null?Ir.material:Le,kt=Ir.group;Nr.layers.test(Qe.layers)&&ds(Nr,ze,Qe,Fr,Yr,kt)}}function ds(Te,ze,Qe,Le,Ke,Jt){Te.onBeforeRender(m,ze,Qe,Le,Ke,Jt),Te.modelViewMatrix.multiplyMatrices(Qe.matrixWorldInverse,Te.matrixWorld),Te.normalMatrix.getNormalMatrix(Te.modelViewMatrix),Ke.onBeforeRender(m,ze,Qe,Le,Te,Jt),Ke.transparent===!0&&Ke.side===wi&&Ke.forceSinglePass===!1?(Ke.side=Gn,Ke.needsUpdate=!0,m.renderBufferDirect(Qe,ze,Le,Ke,Te,Jt),Ke.side=en,Ke.needsUpdate=!0,m.renderBufferDirect(Qe,ze,Le,Ke,Te,Jt),Ke.side=wi):m.renderBufferDirect(Qe,ze,Le,Ke,Te,Jt),Te.onAfterRender(m,ze,Qe,Le,Ke,Jt)}function Is(Te,ze,Qe){ze.isScene!==!0&&(ze=ve);let Le=Be.get(Te),Ke=p.state.lights,Jt=p.state.shadowsArray,Ir=Ke.state.version,Nr=$.getParameters(Te,Ke.state,Jt,ze,Qe),Fr=$.getProgramCacheKey(Nr),Yr=Le.programs;Le.environment=Te.isMeshStandardMaterial?ze.environment:null,Le.fog=ze.fog,Le.envMap=(Te.isMeshStandardMaterial?bt:nt).get(Te.envMap||Le.environment),Yr===void 0&&(Te.addEventListener("dispose",Xt),Yr=new Map,Le.programs=Yr);let kt=Yr.get(Fr);if(kt!==void 0){if(Le.currentProgram===kt&&Le.lightsStateVersion===Ir)return ic(Te,Nr),kt}else Nr.uniforms=$.getUniforms(Te),Te.onBuild(Qe,Nr,m),Te.onBeforeCompile(Nr,m),kt=$.acquireProgram(Nr,Fr),Yr.set(Fr,kt),Le.uniforms=Nr.uniforms;let Vr=Le.uniforms;(!Te.isShaderMaterial&&!Te.isRawShaderMaterial||Te.clipping===!0)&&(Vr.clippingPlanes=Y.uniform),ic(Te,Nr),Le.needsLights=js(Te),Le.lightsStateVersion=Ir,Le.needsLights&&(Vr.ambientLightColor.value=Ke.state.ambient,Vr.lightProbe.value=Ke.state.probe,Vr.directionalLights.value=Ke.state.directional,Vr.directionalLightShadows.value=Ke.state.directionalShadow,Vr.spotLights.value=Ke.state.spot,Vr.spotLightShadows.value=Ke.state.spotShadow,Vr.rectAreaLights.value=Ke.state.rectArea,Vr.ltc_1.value=Ke.state.rectAreaLTC1,Vr.ltc_2.value=Ke.state.rectAreaLTC2,Vr.pointLights.value=Ke.state.point,Vr.pointLightShadows.value=Ke.state.pointShadow,Vr.hemisphereLights.value=Ke.state.hemi,Vr.directionalShadowMap.value=Ke.state.directionalShadowMap,Vr.directionalShadowMatrix.value=Ke.state.directionalShadowMatrix,Vr.spotShadowMap.value=Ke.state.spotShadowMap,Vr.spotLightMatrix.value=Ke.state.spotLightMatrix,Vr.spotLightMap.value=Ke.state.spotLightMap,Vr.pointShadowMap.value=Ke.state.pointShadowMap,Vr.pointShadowMatrix.value=Ke.state.pointShadowMatrix);let ei=kt.getUniforms(),dn=_y.seqWithValue(ei.seq,Vr);return Le.currentProgram=kt,Le.uniformsList=dn,kt}function ic(Te,ze){let Qe=Be.get(Te);Qe.outputEncoding=ze.outputEncoding,Qe.instancing=ze.instancing,Qe.skinning=ze.skinning,Qe.morphTargets=ze.morphTargets,Qe.morphNormals=ze.morphNormals,Qe.morphColors=ze.morphColors,Qe.morphTargetsCount=ze.morphTargetsCount,Qe.numClippingPlanes=ze.numClippingPlanes,Qe.numIntersection=ze.numClipIntersection,Qe.vertexAlphas=ze.vertexAlphas,Qe.vertexTangents=ze.vertexTangents,Qe.toneMapping=ze.toneMapping}function um(Te,ze,Qe,Le,Ke){ze.isScene!==!0&&(ze=ve),ke.resetTextureUnits();let Jt=ze.fog,Ir=Le.isMeshStandardMaterial?ze.environment:null,Nr=b===null?m.outputEncoding:b.isXRRenderTarget===!0?b.texture.encoding:wl,Fr=(Le.isMeshStandardMaterial?bt:nt).get(Le.envMap||Ir),Yr=Le.vertexColors===!0&&!!Qe.attributes.color&&Qe.attributes.color.itemSize===4,kt=!!Le.normalMap&&!!Qe.attributes.tangent,Vr=!!Qe.morphAttributes.position,ei=!!Qe.morphAttributes.normal,dn=!!Qe.morphAttributes.color,ki=Le.toneMapped?m.toneMapping:Lu,nr=Qe.morphAttributes.position||Qe.morphAttributes.normal||Qe.morphAttributes.color,q=nr!==void 0?nr.length:0,er=Be.get(Le),cu=p.state.lights;if(U===!0&&(j===!0||Te!==S)){let Xn=Te===S&&Le.id===x;Y.setState(Le,Te,Xn)}let fn=!1;Le.version===er.__version?(er.needsLights&&er.lightsStateVersion!==cu.state.version||er.outputEncoding!==Nr||Ke.isInstancedMesh&&er.instancing===!1||!Ke.isInstancedMesh&&er.instancing===!0||Ke.isSkinnedMesh&&er.skinning===!1||!Ke.isSkinnedMesh&&er.skinning===!0||er.envMap!==Fr||Le.fog===!0&&er.fog!==Jt||er.numClippingPlanes!==void 0&&(er.numClippingPlanes!==Y.numPlanes||er.numIntersection!==Y.numIntersection)||er.vertexAlphas!==Yr||er.vertexTangents!==kt||er.morphTargets!==Vr||er.morphNormals!==ei||er.morphColors!==dn||er.toneMapping!==ki||je.isWebGL2===!0&&er.morphTargetsCount!==q)&&(fn=!0):(fn=!0,er.__version=Le.version);let Ha=er.currentProgram;fn===!0&&(Ha=Is(Le,ze,Ke));let nc=!1,aa=!1,oa=!1,on=Ha.getUniforms(),En=er.uniforms;if(Oe.useProgram(Ha.program)&&(nc=!0,aa=!0,oa=!0),Le.id!==x&&(x=Le.id,aa=!0),nc||S!==Te){if(on.setValue(de,"projectionMatrix",Te.projectionMatrix),je.logarithmicDepthBuffer&&on.setValue(de,"logDepthBufFC",2/(Math.log(Te.far+1)/Math.LN2)),S!==Te&&(S=Te,aa=!0,oa=!0),Le.isShaderMaterial||Le.isMeshPhongMaterial||Le.isMeshToonMaterial||Le.isMeshStandardMaterial||Le.envMap){let Xn=on.map.cameraPosition;Xn!==void 0&&Xn.setValue(de,ue.setFromMatrixPosition(Te.matrixWorld))}(Le.isMeshPhongMaterial||Le.isMeshToonMaterial||Le.isMeshLambertMaterial||Le.isMeshBasicMaterial||Le.isMeshStandardMaterial||Le.isShaderMaterial)&&on.setValue(de,"isOrthographic",Te.isOrthographicCamera===!0),(Le.isMeshPhongMaterial||Le.isMeshToonMaterial||Le.isMeshLambertMaterial||Le.isMeshBasicMaterial||Le.isMeshStandardMaterial||Le.isShaderMaterial||Le.isShadowMaterial||Ke.isSkinnedMesh)&&on.setValue(de,"viewMatrix",Te.matrixWorldInverse)}if(Ke.isSkinnedMesh){on.setOptional(de,Ke,"bindMatrix"),on.setOptional(de,Ke,"bindMatrixInverse");let Xn=Ke.skeleton;Xn&&(je.floatVertexTextures?(Xn.boneTexture===null&&Xn.computeBoneTexture(),on.setValue(de,"boneTexture",Xn.boneTexture,ke),on.setValue(de,"boneTextureSize",Xn.boneTextureSize)):console.warn("THREE.WebGLRenderer: SkinnedMesh can only be used with WebGL 2. With WebGL 1 OES_texture_float and vertex textures support is required."))}let Io=Qe.morphAttributes;if((Io.position!==void 0||Io.normal!==void 0||Io.color!==void 0&&je.isWebGL2===!0)&&Ge.update(Ke,Qe,Le,Ha),(aa||er.receiveShadow!==Ke.receiveShadow)&&(er.receiveShadow=Ke.receiveShadow,on.setValue(de,"receiveShadow",Ke.receiveShadow)),Le.isMeshGouraudMaterial&&Le.envMap!==null&&(En.envMap.value=Fr,En.flipEnvMap.value=Fr.isCubeTexture&&Fr.isRenderTargetTexture===!1?-1:1),aa&&(on.setValue(de,"toneMappingExposure",m.toneMappingExposure),er.needsLights&&fd(En,oa),Jt&&Le.fog===!0&&re.refreshFogUniforms(En,Jt),re.refreshMaterialUniforms(En,Le,X,F,ee),_y.upload(de,er.uniformsList,En,ke)),Le.isShaderMaterial&&Le.uniformsNeedUpdate===!0&&(_y.upload(de,er.uniformsList,En,ke),Le.uniformsNeedUpdate=!1),Le.isSpriteMaterial&&on.setValue(de,"center",Ke.center),on.setValue(de,"modelViewMatrix",Ke.modelViewMatrix),on.setValue(de,"normalMatrix",Ke.normalMatrix),on.setValue(de,"modelMatrix",Ke.matrixWorld),Le.isShaderMaterial||Le.isRawShaderMaterial){let Xn=Le.uniformsGroups;for(let sc=0,uu=Xn.length;sc<uu;sc++)if(je.isWebGL2){let ac=Xn[sc];ut.update(ac,Ha),ut.bind(ac,Ha)}else console.warn("THREE.WebGLRenderer: Uniform Buffer Objects can only be used with WebGL 2.")}return Ha}function fd(Te,ze){Te.ambientLightColor.needsUpdate=ze,Te.lightProbe.needsUpdate=ze,Te.directionalLights.needsUpdate=ze,Te.directionalLightShadows.needsUpdate=ze,Te.pointLights.needsUpdate=ze,Te.pointLightShadows.needsUpdate=ze,Te.spotLights.needsUpdate=ze,Te.spotLightShadows.needsUpdate=ze,Te.rectAreaLights.needsUpdate=ze,Te.hemisphereLights.needsUpdate=ze}function js(Te){return Te.isMeshLambertMaterial||Te.isMeshToonMaterial||Te.isMeshPhongMaterial||Te.isMeshStandardMaterial||Te.isShadowMaterial||Te.isShaderMaterial&&Te.lights===!0}this.getActiveCubeFace=function(){return y},this.getActiveMipmapLevel=function(){return E},this.getRenderTarget=function(){return b},this.setRenderTargetTextures=function(Te,ze,Qe){Be.get(Te.texture).__webglTexture=ze,Be.get(Te.depthTexture).__webglTexture=Qe;let Le=Be.get(Te);Le.__hasExternalTextures=!0,Le.__hasExternalTextures&&(Le.__autoAllocateDepthBuffer=Qe===void 0,Le.__autoAllocateDepthBuffer||Fe.has("WEBGL_multisampled_render_to_texture")===!0&&(console.warn("THREE.WebGLRenderer: Render-to-texture extension was disabled because an external texture was provided"),Le.__useRenderToTexture=!1))},this.setRenderTargetFramebuffer=function(Te,ze){let Qe=Be.get(Te);Qe.__webglFramebuffer=ze,Qe.__useDefaultFramebuffer=ze===void 0},this.setRenderTarget=function(Te,ze=0,Qe=0){b=Te,y=ze,E=Qe;let Le=!0,Ke=null,Jt=!1,Ir=!1;if(Te){let Fr=Be.get(Te);Fr.__useDefaultFramebuffer!==void 0?(Oe.bindFramebuffer(36160,null),Le=!1):Fr.__webglFramebuffer===void 0?ke.setupRenderTarget(Te):Fr.__hasExternalTextures&&ke.rebindTextures(Te,Be.get(Te.texture).__webglTexture,Be.get(Te.depthTexture).__webglTexture);let Yr=Te.texture;(Yr.isData3DTexture||Yr.isDataArrayTexture||Yr.isCompressedArrayTexture)&&(Ir=!0);let kt=Be.get(Te).__webglFramebuffer;Te.isWebGLCubeRenderTarget?(Ke=kt[ze],Jt=!0):je.isWebGL2&&Te.samples>0&&ke.useMultisampledRTT(Te)===!1?Ke=Be.get(Te).__webglMultisampledFramebuffer:Ke=kt,D.copy(Te.viewport),P.copy(Te.scissor),_=Te.scissorTest}else D.copy(C).multiplyScalar(X).floor(),P.copy(N).multiplyScalar(X).floor(),_=k;if(Oe.bindFramebuffer(36160,Ke)&&je.drawBuffers&&Le&&Oe.drawBuffers(Te,Ke),Oe.viewport(D),Oe.scissor(P),Oe.setScissorTest(_),Jt){let Fr=Be.get(Te.texture);de.framebufferTexture2D(36160,36064,34069+ze,Fr.__webglTexture,Qe)}else if(Ir){let Fr=Be.get(Te.texture),Yr=ze||0;de.framebufferTextureLayer(36160,36064,Fr.__webglTexture,Qe||0,Yr)}x=-1},this.readRenderTargetPixels=function(Te,ze,Qe,Le,Ke,Jt,Ir){if(!(Te&&Te.isWebGLRenderTarget)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");return}let Nr=Be.get(Te).__webglFramebuffer;if(Te.isWebGLCubeRenderTarget&&Ir!==void 0&&(Nr=Nr[Ir]),Nr){Oe.bindFramebuffer(36160,Nr);try{let Fr=Te.texture,Yr=Fr.format,kt=Fr.type;if(Yr!==Bs&&ye.convert(Yr)!==de.getParameter(35739)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");return}let Vr=kt===Go&&(Fe.has("EXT_color_buffer_half_float")||je.isWebGL2&&Fe.has("EXT_color_buffer_float"));if(kt!==Fu&&ye.convert(kt)!==de.getParameter(35738)&&!(kt===_a&&(je.isWebGL2||Fe.has("OES_texture_float")||Fe.has("WEBGL_color_buffer_float")))&&!Vr){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");return}ze>=0&&ze<=Te.width-Le&&Qe>=0&&Qe<=Te.height-Ke&&de.readPixels(ze,Qe,Le,Ke,ye.convert(Yr),ye.convert(kt),Jt)}finally{let Fr=b!==null?Be.get(b).__webglFramebuffer:null;Oe.bindFramebuffer(36160,Fr)}}},this.copyFramebufferToTexture=function(Te,ze,Qe=0){let Le=Math.pow(2,-Qe),Ke=Math.floor(ze.image.width*Le),Jt=Math.floor(ze.image.height*Le);ke.setTexture2D(ze,0),de.copyTexSubImage2D(3553,Qe,0,0,Te.x,Te.y,Ke,Jt),Oe.unbindTexture()},this.copyTextureToTexture=function(Te,ze,Qe,Le=0){let Ke=ze.image.width,Jt=ze.image.height,Ir=ye.convert(Qe.format),Nr=ye.convert(Qe.type);ke.setTexture2D(Qe,0),de.pixelStorei(37440,Qe.flipY),de.pixelStorei(37441,Qe.premultiplyAlpha),de.pixelStorei(3317,Qe.unpackAlignment),ze.isDataTexture?de.texSubImage2D(3553,Le,Te.x,Te.y,Ke,Jt,Ir,Nr,ze.image.data):ze.isCompressedTexture?de.compressedTexSubImage2D(3553,Le,Te.x,Te.y,ze.mipmaps[0].width,ze.mipmaps[0].height,Ir,ze.mipmaps[0].data):de.texSubImage2D(3553,Le,Te.x,Te.y,Ir,Nr,ze.image),Le===0&&Qe.generateMipmaps&&de.generateMipmap(3553),Oe.unbindTexture()},this.copyTextureToTexture3D=function(Te,ze,Qe,Le,Ke=0){if(m.isWebGL1Renderer){console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.");return}let Jt=Te.max.x-Te.min.x+1,Ir=Te.max.y-Te.min.y+1,Nr=Te.max.z-Te.min.z+1,Fr=ye.convert(Le.format),Yr=ye.convert(Le.type),kt;if(Le.isData3DTexture)ke.setTexture3D(Le,0),kt=32879;else if(Le.isDataArrayTexture)ke.setTexture2DArray(Le,0),kt=35866;else{console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.");return}de.pixelStorei(37440,Le.flipY),de.pixelStorei(37441,Le.premultiplyAlpha),de.pixelStorei(3317,Le.unpackAlignment);let Vr=de.getParameter(3314),ei=de.getParameter(32878),dn=de.getParameter(3316),ki=de.getParameter(3315),nr=de.getParameter(32877),q=Qe.isCompressedTexture?Qe.mipmaps[0]:Qe.image;de.pixelStorei(3314,q.width),de.pixelStorei(32878,q.height),de.pixelStorei(3316,Te.min.x),de.pixelStorei(3315,Te.min.y),de.pixelStorei(32877,Te.min.z),Qe.isDataTexture||Qe.isData3DTexture?de.texSubImage3D(kt,Ke,ze.x,ze.y,ze.z,Jt,Ir,Nr,Fr,Yr,q.data):Qe.isCompressedArrayTexture?(console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture."),de.compressedTexSubImage3D(kt,Ke,ze.x,ze.y,ze.z,Jt,Ir,Nr,Fr,q.data)):de.texSubImage3D(kt,Ke,ze.x,ze.y,ze.z,Jt,Ir,Nr,Fr,Yr,q),de.pixelStorei(3314,Vr),de.pixelStorei(32878,ei),de.pixelStorei(3316,dn),de.pixelStorei(3315,ki),de.pixelStorei(32877,nr),Ke===0&&Le.generateMipmaps&&de.generateMipmap(kt),Oe.unbindTexture()},this.initTexture=function(Te){Te.isCubeTexture?ke.setTextureCube(Te,0):Te.isData3DTexture?ke.setTexture3D(Te,0):Te.isDataArrayTexture||Te.isCompressedArrayTexture?ke.setTexture2DArray(Te,0):ke.setTexture2D(Te,0),Oe.unbindTexture()},this.resetState=function(){y=0,E=0,b=null,Oe.reset(),Re.reset()},typeof __THREE_DEVTOOLS__!="undefined"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}var SD=class extends Pl{};SD.prototype.isWebGL1Renderer=!0;var Cy=class{constructor(r,e=25e-5){this.isFogExp2=!0,this.name="",this.color=new Ve(r),this.density=e}clone(){return new Cy(this.color,this.density)}toJSON(){return{type:"FogExp2",color:this.color.getHex(),density:this.density}}},Uu=class{constructor(r,e=1,i=1e3){this.isFog=!0,this.name="",this.color=new Ve(r),this.near=e,this.far=i}clone(){return new Uu(this.color,this.near,this.far)}toJSON(){return{type:"Fog",color:this.color.getHex(),near:this.near,far:this.far}}},On=class extends pr{constructor(){super(),this.isScene=!0,this.type="Scene",this.background=null,this.environment=null,this.fog=null,this.backgroundBlurriness=0,this.backgroundIntensity=1,this.overrideMaterial=null,typeof __THREE_DEVTOOLS__!="undefined"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(r,e){return super.copy(r,e),r.background!==null&&(this.background=r.background.clone()),r.environment!==null&&(this.environment=r.environment.clone()),r.fog!==null&&(this.fog=r.fog.clone()),this.backgroundBlurriness=r.backgroundBlurriness,this.backgroundIntensity=r.backgroundIntensity,r.overrideMaterial!==null&&(this.overrideMaterial=r.overrideMaterial.clone()),this.matrixAutoUpdate=r.matrixAutoUpdate,this}toJSON(r){let e=super.toJSON(r);return this.fog!==null&&(e.object.fog=this.fog.toJSON()),this.backgroundBlurriness>0&&(e.object.backgroundBlurriness=this.backgroundBlurriness),this.backgroundIntensity!==1&&(e.object.backgroundIntensity=this.backgroundIntensity),e}get autoUpdate(){return console.warn("THREE.Scene: autoUpdate was renamed to matrixWorldAutoUpdate in r144."),this.matrixWorldAutoUpdate}set autoUpdate(r){console.warn("THREE.Scene: autoUpdate was renamed to matrixWorldAutoUpdate in r144."),this.matrixWorldAutoUpdate=r}},Ep=class{constructor(r,e){this.isInterleavedBuffer=!0,this.array=r,this.stride=e,this.count=r!==void 0?r.length/e:0,this.usage=Jb,this.updateRange={offset:0,count:-1},this.version=0,this.uuid=ko()}onUploadCallback(){}set needsUpdate(r){r===!0&&this.version++}setUsage(r){return this.usage=r,this}copy(r){return this.array=new r.array.constructor(r.array),this.count=r.count,this.stride=r.stride,this.usage=r.usage,this}copyAt(r,e,i){r*=this.stride,i*=e.stride;for(let n=0,s=this.stride;n<s;n++)this.array[r+n]=e.array[i+n];return this}set(r,e=0){return this.array.set(r,e),this}clone(r){r.arrayBuffers===void 0&&(r.arrayBuffers={}),this.array.buffer._uuid===void 0&&(this.array.buffer._uuid=ko()),r.arrayBuffers[this.array.buffer._uuid]===void 0&&(r.arrayBuffers[this.array.buffer._uuid]=this.array.slice(0).buffer);let e=new this.array.constructor(r.arrayBuffers[this.array.buffer._uuid]),i=new this.constructor(e,this.stride);return i.setUsage(this.usage),i}onUpload(r){return this.onUploadCallback=r,this}toJSON(r){return r.arrayBuffers===void 0&&(r.arrayBuffers={}),this.array.buffer._uuid===void 0&&(this.array.buffer._uuid=ko()),r.arrayBuffers[this.array.buffer._uuid]===void 0&&(r.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}}},xa=new A,to=class{constructor(r,e,i,n=!1){this.isInterleavedBufferAttribute=!0,this.name="",this.data=r,this.itemSize=e,this.offset=i,this.normalized=n}get count(){return this.data.count}get array(){return this.data.array}set needsUpdate(r){this.data.needsUpdate=r}applyMatrix4(r){for(let e=0,i=this.data.count;e<i;e++)xa.fromBufferAttribute(this,e),xa.applyMatrix4(r),this.setXYZ(e,xa.x,xa.y,xa.z);return this}applyNormalMatrix(r){for(let e=0,i=this.count;e<i;e++)xa.fromBufferAttribute(this,e),xa.applyNormalMatrix(r),this.setXYZ(e,xa.x,xa.y,xa.z);return this}transformDirection(r){for(let e=0,i=this.count;e<i;e++)xa.fromBufferAttribute(this,e),xa.transformDirection(r),this.setXYZ(e,xa.x,xa.y,xa.z);return this}setX(r,e){return this.normalized&&(e=cn(e,this.array)),this.data.array[r*this.data.stride+this.offset]=e,this}setY(r,e){return this.normalized&&(e=cn(e,this.array)),this.data.array[r*this.data.stride+this.offset+1]=e,this}setZ(r,e){return this.normalized&&(e=cn(e,this.array)),this.data.array[r*this.data.stride+this.offset+2]=e,this}setW(r,e){return this.normalized&&(e=cn(e,this.array)),this.data.array[r*this.data.stride+this.offset+3]=e,this}getX(r){let e=this.data.array[r*this.data.stride+this.offset];return this.normalized&&(e=hp(e,this.array)),e}getY(r){let e=this.data.array[r*this.data.stride+this.offset+1];return this.normalized&&(e=hp(e,this.array)),e}getZ(r){let e=this.data.array[r*this.data.stride+this.offset+2];return this.normalized&&(e=hp(e,this.array)),e}getW(r){let e=this.data.array[r*this.data.stride+this.offset+3];return this.normalized&&(e=hp(e,this.array)),e}setXY(r,e,i){return r=r*this.data.stride+this.offset,this.normalized&&(e=cn(e,this.array),i=cn(i,this.array)),this.data.array[r+0]=e,this.data.array[r+1]=i,this}setXYZ(r,e,i,n){return r=r*this.data.stride+this.offset,this.normalized&&(e=cn(e,this.array),i=cn(i,this.array),n=cn(n,this.array)),this.data.array[r+0]=e,this.data.array[r+1]=i,this.data.array[r+2]=n,this}setXYZW(r,e,i,n,s){return r=r*this.data.stride+this.offset,this.normalized&&(e=cn(e,this.array),i=cn(i,this.array),n=cn(n,this.array),s=cn(s,this.array)),this.data.array[r+0]=e,this.data.array[r+1]=i,this.data.array[r+2]=n,this.data.array[r+3]=s,this}clone(r){if(r===void 0){console.log("THREE.InterleavedBufferAttribute.clone(): Cloning an interleaved buffer attribute will de-interleave buffer data.");let e=[];for(let i=0;i<this.count;i++){let n=i*this.data.stride+this.offset;for(let s=0;s<this.itemSize;s++)e.push(this.data.array[n+s])}return new jt(new this.array.constructor(e),this.itemSize,this.normalized)}else return r.interleavedBuffers===void 0&&(r.interleavedBuffers={}),r.interleavedBuffers[this.data.uuid]===void 0&&(r.interleavedBuffers[this.data.uuid]=this.data.clone(r)),new to(r.interleavedBuffers[this.data.uuid],this.itemSize,this.offset,this.normalized)}toJSON(r){if(r===void 0){console.log("THREE.InterleavedBufferAttribute.toJSON(): Serializing an interleaved buffer attribute will de-interleave buffer data.");let e=[];for(let i=0;i<this.count;i++){let n=i*this.data.stride+this.offset;for(let s=0;s<this.itemSize;s++)e.push(this.data.array[n+s])}return{itemSize:this.itemSize,type:this.array.constructor.name,array:e,normalized:this.normalized}}else return r.interleavedBuffers===void 0&&(r.interleavedBuffers={}),r.interleavedBuffers[this.data.uuid]===void 0&&(r.interleavedBuffers[this.data.uuid]=this.data.toJSON(r)),{isInterleavedBufferAttribute:!0,itemSize:this.itemSize,data:this.data.uuid,offset:this.offset,normalized:this.normalized}}},Tg=class extends Gr{constructor(r){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(r)}copy(r){return super.copy(r),this.color.copy(r.color),this.map=r.map,this.alphaMap=r.alphaMap,this.rotation=r.rotation,this.sizeAttenuation=r.sizeAttenuation,this.fog=r.fog,this}},vy,kb=new A,yy=new A,Ty=new A,Ey=new le,Gb=new le,yhe=new Ue,zM=new A,Vb=new A,jM=new A,Oce=new le,gH=new le,Pce=new le,_D=class extends pr{constructor(r){if(super(),this.isSprite=!0,this.type="Sprite",vy===void 0){vy=new it;let e=new Float32Array([-.5,-.5,0,0,0,.5,-.5,0,1,0,.5,.5,0,1,1,-.5,.5,0,0,1]),i=new Ep(e,5);vy.setIndex([0,1,2,0,2,3]),vy.setAttribute("position",new to(i,3,0,!1)),vy.setAttribute("uv",new to(i,2,3,!1))}this.geometry=vy,this.material=r!==void 0?r:new Tg,this.center=new le(.5,.5)}raycast(r,e){r.camera===null&&console.error('THREE.Sprite: "Raycaster.camera" needs to be set in order to raycast against sprites.'),yy.setFromMatrixScale(this.matrixWorld),yhe.copy(r.camera.matrixWorld),this.modelViewMatrix.multiplyMatrices(r.camera.matrixWorldInverse,this.matrixWorld),Ty.setFromMatrixPosition(this.modelViewMatrix),r.camera.isPerspectiveCamera&&this.material.sizeAttenuation===!1&&yy.multiplyScalar(-Ty.z);let i=this.material.rotation,n,s;i!==0&&(s=Math.cos(i),n=Math.sin(i));let a=this.center;WM(zM.set(-.5,-.5,0),Ty,a,yy,n,s),WM(Vb.set(.5,-.5,0),Ty,a,yy,n,s),WM(jM.set(.5,.5,0),Ty,a,yy,n,s),Oce.set(0,0),gH.set(1,0),Pce.set(1,1);let o=r.ray.intersectTriangle(zM,Vb,jM,!1,kb);if(o===null&&(WM(Vb.set(-.5,.5,0),Ty,a,yy,n,s),gH.set(0,1),o=r.ray.intersectTriangle(zM,jM,Vb,!1,kb),o===null))return;let l=r.ray.origin.distanceTo(kb);l<r.near||l>r.far||e.push({distance:l,point:kb.clone(),uv:un.getUV(kb,zM,Vb,jM,Oce,gH,Pce,new le),face:null,object:this})}copy(r,e){return super.copy(r,e),r.center!==void 0&&this.center.copy(r.center),this.material=r.material,this}};function WM(t,r,e,i,n,s){Ey.subVectors(t,e).addScalar(.5).multiply(i),n!==void 0?(Gb.x=s*Ey.x-n*Ey.y,Gb.y=n*Ey.x+s*Ey.y):Gb.copy(Ey),t.copy(r),t.x+=Gb.x,t.y+=Gb.y,t.applyMatrix4(yhe)}var qM=new A,Nce=new A,wD=class extends pr{constructor(){super(),this._currentLevel=0,this.type="LOD",Object.defineProperties(this,{levels:{enumerable:!0,value:[]},isLOD:{value:!0}}),this.autoUpdate=!0}copy(r){super.copy(r,!1);let e=r.levels;for(let i=0,n=e.length;i<n;i++){let s=e[i];this.addLevel(s.object.clone(),s.distance,s.hysteresis)}return this.autoUpdate=r.autoUpdate,this}addLevel(r,e=0,i=0){e=Math.abs(e);let n=this.levels,s;for(s=0;s<n.length&&!(e<n[s].distance);s++);return n.splice(s,0,{distance:e,hysteresis:i,object:r}),this.add(r),this}getCurrentLevel(){return this._currentLevel}getObjectForDistance(r){let e=this.levels;if(e.length>0){let i,n;for(i=1,n=e.length;i<n;i++){let s=e[i].distance;if(e[i].object.visible&&(s-=s*e[i].hysteresis),r<s)break}return e[i-1].object}return null}raycast(r,e){if(this.levels.length>0){qM.setFromMatrixPosition(this.matrixWorld);let n=r.ray.origin.distanceTo(qM);this.getObjectForDistance(n).raycast(r,e)}}update(r){let e=this.levels;if(e.length>1){qM.setFromMatrixPosition(r.matrixWorld),Nce.setFromMatrixPosition(this.matrixWorld);let i=qM.distanceTo(Nce)/r.zoom;e[0].object.visible=!0;let n,s;for(n=1,s=e.length;n<s;n++){let a=e[n].distance;if(e[n].object.visible&&(a-=a*e[n].hysteresis),i>=a)e[n-1].object.visible=!1,e[n].object.visible=!0;else break}for(this._currentLevel=n-1;n<s;n++)e[n].object.visible=!1}}toJSON(r){let e=super.toJSON(r);this.autoUpdate===!1&&(e.object.autoUpdate=!1),e.object.levels=[];let i=this.levels;for(let n=0,s=i.length;n<s;n++){let a=i[n];e.object.levels.push({object:a.object.uuid,distance:a.distance,hysteresis:a.hysteresis})}return e}},Lce=new A,Fce=new Jr,Hce=new Jr,h0t=new A,Uce=new Ue,Bu=class extends Je{constructor(r,e){super(r,e),this.isSkinnedMesh=!0,this.type="SkinnedMesh",this.bindMode="attached",this.bindMatrix=new Ue,this.bindMatrixInverse=new Ue}copy(r,e){return super.copy(r,e),this.bindMode=r.bindMode,this.bindMatrix.copy(r.bindMatrix),this.bindMatrixInverse.copy(r.bindMatrixInverse),this.skeleton=r.skeleton,this}bind(r,e){this.skeleton=r,e===void 0&&(this.updateMatrixWorld(!0),this.skeleton.calculateInverses(),e=this.matrixWorld),this.bindMatrix.copy(e),this.bindMatrixInverse.copy(e).invert()}pose(){this.skeleton.pose()}normalizeSkinWeights(){let r=new Jr,e=this.geometry.attributes.skinWeight;for(let i=0,n=e.count;i<n;i++){r.fromBufferAttribute(e,i);let s=1/r.manhattanLength();s!==1/0?r.multiplyScalar(s):r.set(1,0,0,0),e.setXYZW(i,r.x,r.y,r.z,r.w)}}updateMatrixWorld(r){super.updateMatrixWorld(r),this.bindMode==="attached"?this.bindMatrixInverse.copy(this.matrixWorld).invert():this.bindMode==="detached"?this.bindMatrixInverse.copy(this.bindMatrix).invert():console.warn("THREE.SkinnedMesh: Unrecognized bindMode: "+this.bindMode)}boneTransform(r,e){let i=this.skeleton,n=this.geometry;Fce.fromBufferAttribute(n.attributes.skinIndex,r),Hce.fromBufferAttribute(n.attributes.skinWeight,r),Lce.copy(e).applyMatrix4(this.bindMatrix),e.set(0,0,0);for(let s=0;s<4;s++){let a=Hce.getComponent(s);if(a!==0){let o=Fce.getComponent(s);Uce.multiplyMatrices(i.bones[o].matrixWorld,i.boneInverses[o]),e.addScaledVector(h0t.copy(Lce).applyMatrix4(Uce),a)}}return e.applyMatrix4(this.bindMatrixInverse)}},Rl=class extends pr{constructor(){super(),this.isBone=!0,this.type="Bone"}},_l=class extends Hi{constructor(r=null,e=1,i=1,n,s,a,o,l,c=Di,u=Di,h,p){super(null,a,o,l,c,u,n,s,h,p),this.isDataTexture=!0,this.image={data:r,width:e,height:i},this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}},Bce=new Ue,p0t=new Ue,Ml=class{constructor(r=[],e=[]){this.uuid=ko(),this.bones=r.slice(0),this.boneInverses=e,this.boneMatrices=null,this.boneTexture=null,this.boneTextureSize=0,this.frame=-1,this.init()}init(){let r=this.bones,e=this.boneInverses;if(this.boneMatrices=new Float32Array(r.length*16),e.length===0)this.calculateInverses();else if(r.length!==e.length){console.warn("THREE.Skeleton: Number of inverse bone matrices does not match amount of bones."),this.boneInverses=[];for(let i=0,n=this.bones.length;i<n;i++)this.boneInverses.push(new Ue)}}calculateInverses(){this.boneInverses.length=0;for(let r=0,e=this.bones.length;r<e;r++){let i=new Ue;this.bones[r]&&i.copy(this.bones[r].matrixWorld).invert(),this.boneInverses.push(i)}}pose(){for(let r=0,e=this.bones.length;r<e;r++){let i=this.bones[r];i&&i.matrixWorld.copy(this.boneInverses[r]).invert()}for(let r=0,e=this.bones.length;r<e;r++){let i=this.bones[r];i&&(i.parent&&i.parent.isBone?(i.matrix.copy(i.parent.matrixWorld).invert(),i.matrix.multiply(i.matrixWorld)):i.matrix.copy(i.matrixWorld),i.matrix.decompose(i.position,i.quaternion,i.scale))}}update(){let r=this.bones,e=this.boneInverses,i=this.boneMatrices,n=this.boneTexture;for(let s=0,a=r.length;s<a;s++){let o=r[s]?r[s].matrixWorld:p0t;Bce.multiplyMatrices(o,e[s]),Bce.toArray(i,s*16)}n!==null&&(n.needsUpdate=!0)}clone(){return new Ml(this.bones,this.boneInverses)}computeBoneTexture(){let r=Math.sqrt(this.bones.length*4);r=lhe(r),r=Math.max(r,4);let e=new Float32Array(r*r*4);e.set(this.boneMatrices);let i=new _l(e,r,r,Bs,_a);return i.needsUpdate=!0,this.boneMatrices=e,this.boneTexture=i,this.boneTextureSize=r,this}getBoneByName(r){for(let e=0,i=this.bones.length;e<i;e++){let n=this.bones[e];if(n.name===r)return n}}dispose(){this.boneTexture!==null&&(this.boneTexture.dispose(),this.boneTexture=null)}fromJSON(r,e){this.uuid=r.uuid;for(let i=0,n=r.bones.length;i<n;i++){let s=r.bones[i],a=e[s];a===void 0&&(console.warn("THREE.Skeleton: No bone found with UUID:",s),a=new Rl),this.bones.push(a),this.boneInverses.push(new Ue().fromArray(r.boneInverses[i]))}return this.init(),this}toJSON(){let r={metadata:{version:4.5,type:"Skeleton",generator:"Skeleton.toJSON"},bones:[],boneInverses:[]};r.uuid=this.uuid;let e=this.bones,i=this.boneInverses;for(let n=0,s=e.length;n<s;n++){let a=e[n];r.bones.push(a.uuid);let o=i[n];r.boneInverses.push(o.toArray())}return r}},bp=class extends jt{constructor(r,e,i,n=1){super(r,e,i),this.isInstancedBufferAttribute=!0,this.meshPerAttribute=n}copy(r){return super.copy(r),this.meshPerAttribute=r.meshPerAttribute,this}toJSON(){let r=super.toJSON();return r.meshPerAttribute=this.meshPerAttribute,r.isInstancedBufferAttribute=!0,r}},kce=new Ue,Gce=new Ue,YM=[],d0t=new Ue,zb=new Je,tn=class extends Je{constructor(r,e,i){super(r,e),this.isInstancedMesh=!0,this.instanceMatrix=new bp(new Float32Array(i*16),16),this.instanceColor=null,this.count=i,this.frustumCulled=!1;for(let n=0;n<i;n++)this.setMatrixAt(n,d0t)}copy(r,e){return super.copy(r,e),this.instanceMatrix.copy(r.instanceMatrix),r.instanceColor!==null&&(this.instanceColor=r.instanceColor.clone()),this.count=r.count,this}getColorAt(r,e){e.fromArray(this.instanceColor.array,r*3)}getMatrixAt(r,e){e.fromArray(this.instanceMatrix.array,r*16)}raycast(r,e){let i=this.matrixWorld,n=this.count;if(zb.geometry=this.geometry,zb.material=this.material,zb.material!==void 0)for(let s=0;s<n;s++){this.getMatrixAt(s,kce),Gce.multiplyMatrices(i,kce),zb.matrixWorld=Gce,zb.raycast(r,YM);for(let a=0,o=YM.length;a<o;a++){let l=YM[a];l.instanceId=s,l.object=this,e.push(l)}YM.length=0}}setColorAt(r,e){this.instanceColor===null&&(this.instanceColor=new bp(new Float32Array(this.instanceMatrix.count*3),3)),e.toArray(this.instanceColor.array,r*3)}setMatrixAt(r,e){e.toArray(this.instanceMatrix.array,r*16)}updateMorphTargets(){}dispose(){this.dispatchEvent({type:"dispose"})}},Tr=class extends Gr{constructor(r){super(),this.isLineBasicMaterial=!0,this.type="LineBasicMaterial",this.color=new Ve(16777215),this.linewidth=1,this.linecap="round",this.linejoin="round",this.fog=!0,this.setValues(r)}copy(r){return super.copy(r),this.color.copy(r.color),this.linewidth=r.linewidth,this.linecap=r.linecap,this.linejoin=r.linejoin,this.fog=r.fog,this}},Vce=new A,zce=new A,jce=new Ue,vH=new Vo,XM=new zi,_r=class extends pr{constructor(r=new it,e=new Tr){super(),this.isLine=!0,this.type="Line",this.geometry=r,this.material=e,this.updateMorphTargets()}copy(r,e){return super.copy(r,e),this.material=r.material,this.geometry=r.geometry,this}computeLineDistances(){let r=this.geometry;if(r.index===null){let e=r.attributes.position,i=[0];for(let n=1,s=e.count;n<s;n++)Vce.fromBufferAttribute(e,n-1),zce.fromBufferAttribute(e,n),i[n]=i[n-1],i[n]+=Vce.distanceTo(zce);r.setAttribute("lineDistance",new ct(i,1))}else console.warn("THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");return this}raycast(r,e){let i=this.geometry,n=this.matrixWorld,s=r.params.Line.threshold,a=i.drawRange;if(i.boundingSphere===null&&i.computeBoundingSphere(),XM.copy(i.boundingSphere),XM.applyMatrix4(n),XM.radius+=s,r.ray.intersectsSphere(XM)===!1)return;jce.copy(n).invert(),vH.copy(r.ray).applyMatrix4(jce);let o=s/((this.scale.x+this.scale.y+this.scale.z)/3),l=o*o,c=new A,u=new A,h=new A,p=new A,d=this.isLineSegments?2:1,f=i.index,g=i.attributes.position;if(f!==null){let y=Math.max(0,a.start),E=Math.min(f.count,a.start+a.count);for(let b=y,x=E-1;b<x;b+=d){let S=f.getX(b),D=f.getX(b+1);if(c.fromBufferAttribute(g,S),u.fromBufferAttribute(g,D),vH.distanceSqToSegment(c,u,p,h)>l)continue;p.applyMatrix4(this.matrixWorld);let _=r.ray.origin.distanceTo(p);_<r.near||_>r.far||e.push({distance:_,point:h.clone().applyMatrix4(this.matrixWorld),index:b,face:null,faceIndex:null,object:this})}}else{let y=Math.max(0,a.start),E=Math.min(g.count,a.start+a.count);for(let b=y,x=E-1;b<x;b+=d){if(c.fromBufferAttribute(g,b),u.fromBufferAttribute(g,b+1),vH.distanceSqToSegment(c,u,p,h)>l)continue;p.applyMatrix4(this.matrixWorld);let D=r.ray.origin.distanceTo(p);D<r.near||D>r.far||e.push({distance:D,point:h.clone().applyMatrix4(this.matrixWorld),index:b,face:null,faceIndex:null,object:this})}}}updateMorphTargets(){let e=this.geometry.morphAttributes,i=Object.keys(e);if(i.length>0){let n=e[i[0]];if(n!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,a=n.length;s<a;s++){let o=n[s].name||String(s);this.morphTargetInfluences.push(0),this.morphTargetDictionary[o]=s}}}}},Wce=new A,qce=new A,oi=class extends _r{constructor(r,e){super(r,e),this.isLineSegments=!0,this.type="LineSegments"}computeLineDistances(){let r=this.geometry;if(r.index===null){let e=r.attributes.position,i=[];for(let n=0,s=e.count;n<s;n+=2)Wce.fromBufferAttribute(e,n),qce.fromBufferAttribute(e,n+1),i[n]=n===0?0:i[n-1],i[n+1]=i[n]+Wce.distanceTo(qce);r.setAttribute("lineDistance",new ct(i,1))}else console.warn("THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");return this}},Ay=class extends _r{constructor(r,e){super(r,e),this.isLineLoop=!0,this.type="LineLoop"}},Vn=class extends Gr{constructor(r){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(r)}copy(r){return super.copy(r),this.color.copy(r.color),this.map=r.map,this.alphaMap=r.alphaMap,this.size=r.size,this.sizeAttenuation=r.sizeAttenuation,this.fog=r.fog,this}},Yce=new Ue,T4=new Vo,$M=new zi,ZM=new A,rn=class extends pr{constructor(r=new it,e=new Vn){super(),this.isPoints=!0,this.type="Points",this.geometry=r,this.material=e,this.updateMorphTargets()}copy(r,e){return super.copy(r,e),this.material=r.material,this.geometry=r.geometry,this}raycast(r,e){let i=this.geometry,n=this.matrixWorld,s=r.params.Points.threshold,a=i.drawRange;if(i.boundingSphere===null&&i.computeBoundingSphere(),$M.copy(i.boundingSphere),$M.applyMatrix4(n),$M.radius+=s,r.ray.intersectsSphere($M)===!1)return;Yce.copy(n).invert(),T4.copy(r.ray).applyMatrix4(Yce);let o=s/((this.scale.x+this.scale.y+this.scale.z)/3),l=o*o,c=i.index,h=i.attributes.position;if(c!==null){let p=Math.max(0,a.start),d=Math.min(c.count,a.start+a.count);for(let f=p,m=d;f<m;f++){let g=c.getX(f);ZM.fromBufferAttribute(h,g),Xce(ZM,g,l,n,r,e,this)}}else{let p=Math.max(0,a.start),d=Math.min(h.count,a.start+a.count);for(let f=p,m=d;f<m;f++)ZM.fromBufferAttribute(h,f),Xce(ZM,f,l,n,r,e,this)}}updateMorphTargets(){let e=this.geometry.morphAttributes,i=Object.keys(e);if(i.length>0){let n=e[i[0]];if(n!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,a=n.length;s<a;s++){let o=n[s].name||String(s);this.morphTargetInfluences.push(0),this.morphTargetDictionary[o]=s}}}}};function Xce(t,r,e,i,n,s,a){let o=T4.distanceSqToPoint(t);if(o<e){let l=new A;T4.closestPointToPoint(t,l),l.applyMatrix4(i);let c=n.ray.origin.distanceTo(l);if(c<n.near||c>n.far)return;s.push({distance:c,distanceToRay:Math.sqrt(o),point:l,index:r,face:null,object:a})}}var E4=class extends Hi{constructor(r,e,i,n,s,a,o,l,c){super(r,e,i,n,s,a,o,l,c),this.isVideoTexture=!0,this.minFilter=a!==void 0?a:ai,this.magFilter=s!==void 0?s:ai,this.generateMipmaps=!1;let u=this;function h(){u.needsUpdate=!0,r.requestVideoFrameCallback(h)}"requestVideoFrameCallback"in r&&r.requestVideoFrameCallback(h)}clone(){return new this.constructor(this.image).copy(this)}update(){let r=this.image;"requestVideoFrameCallback"in r===!1&&r.readyState>=r.HAVE_CURRENT_DATA&&(this.needsUpdate=!0)}},b4=class extends Hi{constructor(r,e,i){super({width:r,height:e}),this.isFramebufferTexture=!0,this.format=i,this.magFilter=Di,this.minFilter=Di,this.generateMipmaps=!1,this.needsUpdate=!0}},sx=class extends Hi{constructor(r,e,i,n,s,a,o,l,c,u,h,p){super(null,a,o,l,c,u,n,s,h,p),this.isCompressedTexture=!0,this.image={width:e,height:i},this.mipmaps=r,this.flipY=!1,this.generateMipmaps=!1}},x4=class extends sx{constructor(r,e,i,n,s,a){super(r,e,i,s,a),this.isCompressedArrayTexture=!0,this.image.depth=n,this.wrapR=mn}},I4=class extends Hi{constructor(r,e,i,n,s,a,o,l,c){super(r,e,i,n,s,a,o,l,c),this.isCanvasTexture=!0,this.needsUpdate=!0}},Ma=class{constructor(){this.type="Curve",this.arcLengthDivisions=200}getPoint(){return console.warn("THREE.Curve: .getPoint() not implemented."),null}getPointAt(r,e){let i=this.getUtoTmapping(r);return this.getPoint(i,e)}getPoints(r=5){let e=[];for(let i=0;i<=r;i++)e.push(this.getPoint(i/r));return e}getSpacedPoints(r=5){let e=[];for(let i=0;i<=r;i++)e.push(this.getPointAt(i/r));return e}getLength(){let r=this.getLengths();return r[r.length-1]}getLengths(r=this.arcLengthDivisions){if(this.cacheArcLengths&&this.cacheArcLengths.length===r+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;let e=[],i,n=this.getPoint(0),s=0;e.push(0);for(let a=1;a<=r;a++)i=this.getPoint(a/r),s+=i.distanceTo(n),e.push(s),n=i;return this.cacheArcLengths=e,e}updateArcLengths(){this.needsUpdate=!0,this.getLengths()}getUtoTmapping(r,e){let i=this.getLengths(),n=0,s=i.length,a;e?a=e:a=r*i[s-1];let o=0,l=s-1,c;for(;o<=l;)if(n=Math.floor(o+(l-o)/2),c=i[n]-a,c<0)o=n+1;else if(c>0)l=n-1;else{l=n;break}if(n=l,i[n]===a)return n/(s-1);let u=i[n],p=i[n+1]-u,d=(a-u)/p;return(n+d)/(s-1)}getTangent(r,e){let n=r-1e-4,s=r+1e-4;n<0&&(n=0),s>1&&(s=1);let a=this.getPoint(n),o=this.getPoint(s),l=e||(a.isVector2?new le:new A);return l.copy(o).sub(a).normalize(),l}getTangentAt(r,e){let i=this.getUtoTmapping(r);return this.getTangent(i,e)}computeFrenetFrames(r,e){let i=new A,n=[],s=[],a=[],o=new A,l=new Ue;for(let d=0;d<=r;d++){let f=d/r;n[d]=this.getTangentAt(f,new A)}s[0]=new A,a[0]=new A;let c=Number.MAX_VALUE,u=Math.abs(n[0].x),h=Math.abs(n[0].y),p=Math.abs(n[0].z);u<=c&&(c=u,i.set(1,0,0)),h<=c&&(c=h,i.set(0,1,0)),p<=c&&i.set(0,0,1),o.crossVectors(n[0],i).normalize(),s[0].crossVectors(n[0],o),a[0].crossVectors(n[0],s[0]);for(let d=1;d<=r;d++){if(s[d]=s[d-1].clone(),a[d]=a[d-1].clone(),o.crossVectors(n[d-1],n[d]),o.length()>Number.EPSILON){o.normalize();let f=Math.acos(Qn(n[d-1].dot(n[d]),-1,1));s[d].applyMatrix4(l.makeRotationAxis(o,f))}a[d].crossVectors(n[d],s[d])}if(e===!0){let d=Math.acos(Qn(s[0].dot(s[r]),-1,1));d/=r,n[0].dot(o.crossVectors(s[0],s[r]))>0&&(d=-d);for(let f=1;f<=r;f++)s[f].applyMatrix4(l.makeRotationAxis(n[f],d*f)),a[f].crossVectors(n[f],s[f])}return{tangents:n,normals:s,binormals:a}}clone(){return new this.constructor().copy(this)}copy(r){return this.arcLengthDivisions=r.arcLengthDivisions,this}toJSON(){let r={metadata:{version:4.5,type:"Curve",generator:"Curve.toJSON"}};return r.arcLengthDivisions=this.arcLengthDivisions,r.type=this.type,r}fromJSON(r){return this.arcLengthDivisions=r.arcLengthDivisions,this}},xp=class extends Ma{constructor(r=0,e=0,i=1,n=1,s=0,a=Math.PI*2,o=!1,l=0){super(),this.isEllipseCurve=!0,this.type="EllipseCurve",this.aX=r,this.aY=e,this.xRadius=i,this.yRadius=n,this.aStartAngle=s,this.aEndAngle=a,this.aClockwise=o,this.aRotation=l}getPoint(r,e){let i=e||new le,n=Math.PI*2,s=this.aEndAngle-this.aStartAngle,a=Math.abs(s)<Number.EPSILON;for(;s<0;)s+=n;for(;s>n;)s-=n;s<Number.EPSILON&&(a?s=0:s=n),this.aClockwise===!0&&!a&&(s===n?s=-n:s=s-n);let o=this.aStartAngle+r*s,l=this.aX+this.xRadius*Math.cos(o),c=this.aY+this.yRadius*Math.sin(o);if(this.aRotation!==0){let u=Math.cos(this.aRotation),h=Math.sin(this.aRotation),p=l-this.aX,d=c-this.aY;l=p*u-d*h+this.aX,c=p*h+d*u+this.aY}return i.set(l,c)}copy(r){return super.copy(r),this.aX=r.aX,this.aY=r.aY,this.xRadius=r.xRadius,this.yRadius=r.yRadius,this.aStartAngle=r.aStartAngle,this.aEndAngle=r.aEndAngle,this.aClockwise=r.aClockwise,this.aRotation=r.aRotation,this}toJSON(){let r=super.toJSON();return r.aX=this.aX,r.aY=this.aY,r.xRadius=this.xRadius,r.yRadius=this.yRadius,r.aStartAngle=this.aStartAngle,r.aEndAngle=this.aEndAngle,r.aClockwise=this.aClockwise,r.aRotation=this.aRotation,r}fromJSON(r){return super.fromJSON(r),this.aX=r.aX,this.aY=r.aY,this.xRadius=r.xRadius,this.yRadius=r.yRadius,this.aStartAngle=r.aStartAngle,this.aEndAngle=r.aEndAngle,this.aClockwise=r.aClockwise,this.aRotation=r.aRotation,this}},Eg=class extends xp{constructor(r,e,i,n,s,a){super(r,e,i,i,n,s,a),this.isArcCurve=!0,this.type="ArcCurve"}};function DU(){let t=0,r=0,e=0,i=0;function n(s,a,o,l){t=s,r=o,e=-3*s+3*a-2*o-l,i=2*s-2*a+o+l}return{initCatmullRom:function(s,a,o,l,c){n(a,o,c*(o-s),c*(l-a))},initNonuniformCatmullRom:function(s,a,o,l,c,u,h){let p=(a-s)/c-(o-s)/(c+u)+(o-a)/u,d=(o-a)/u-(l-a)/(u+h)+(l-o)/h;p*=u,d*=u,n(a,o,p,d)},calc:function(s){let a=s*s,o=a*s;return t+r*s+e*a+i*o}}}var KM=new A,yH=new DU,TH=new DU,EH=new DU,RD=class extends Ma{constructor(r=[],e=!1,i="centripetal",n=.5){super(),this.isCatmullRomCurve3=!0,this.type="CatmullRomCurve3",this.points=r,this.closed=e,this.curveType=i,this.tension=n}getPoint(r,e=new A){let i=e,n=this.points,s=n.length,a=(s-(this.closed?0:1))*r,o=Math.floor(a),l=a-o;this.closed?o+=o>0?0:(Math.floor(Math.abs(o)/s)+1)*s:l===0&&o===s-1&&(o=s-2,l=1);let c,u;this.closed||o>0?c=n[(o-1)%s]:(KM.subVectors(n[0],n[1]).add(n[0]),c=KM);let h=n[o%s],p=n[(o+1)%s];if(this.closed||o+2<s?u=n[(o+2)%s]:(KM.subVectors(n[s-1],n[s-2]).add(n[s-1]),u=KM),this.curveType==="centripetal"||this.curveType==="chordal"){let d=this.curveType==="chordal"?.5:.25,f=Math.pow(c.distanceToSquared(h),d),m=Math.pow(h.distanceToSquared(p),d),g=Math.pow(p.distanceToSquared(u),d);m<1e-4&&(m=1),f<1e-4&&(f=m),g<1e-4&&(g=m),yH.initNonuniformCatmullRom(c.x,h.x,p.x,u.x,f,m,g),TH.initNonuniformCatmullRom(c.y,h.y,p.y,u.y,f,m,g),EH.initNonuniformCatmullRom(c.z,h.z,p.z,u.z,f,m,g)}else this.curveType==="catmullrom"&&(yH.initCatmullRom(c.x,h.x,p.x,u.x,this.tension),TH.initCatmullRom(c.y,h.y,p.y,u.y,this.tension),EH.initCatmullRom(c.z,h.z,p.z,u.z,this.tension));return i.set(yH.calc(l),TH.calc(l),EH.calc(l)),i}copy(r){super.copy(r),this.points=[];for(let e=0,i=r.points.length;e<i;e++){let n=r.points[e];this.points.push(n.clone())}return this.closed=r.closed,this.curveType=r.curveType,this.tension=r.tension,this}toJSON(){let r=super.toJSON();r.points=[];for(let e=0,i=this.points.length;e<i;e++){let n=this.points[e];r.points.push(n.toArray())}return r.closed=this.closed,r.curveType=this.curveType,r.tension=this.tension,r}fromJSON(r){super.fromJSON(r),this.points=[];for(let e=0,i=r.points.length;e<i;e++){let n=r.points[e];this.points.push(new A().fromArray(n))}return this.closed=r.closed,this.curveType=r.curveType,this.tension=r.tension,this}};function $ce(t,r,e,i,n){let s=(i-r)*.5,a=(n-e)*.5,o=t*t,l=t*o;return(2*e-2*i+s+a)*l+(-3*e+3*i-2*s-a)*o+s*t+e}function f0t(t,r){let e=1-t;return e*e*r}function m0t(t,r){return 2*(1-t)*t*r}function g0t(t,r){return t*t*r}function Xb(t,r,e,i){return f0t(t,r)+m0t(t,e)+g0t(t,i)}function v0t(t,r){let e=1-t;return e*e*e*r}function y0t(t,r){let e=1-t;return 3*e*e*t*r}function T0t(t,r){return 3*(1-t)*t*t*r}function E0t(t,r){return t*t*t*r}function $b(t,r,e,i,n){return v0t(t,r)+y0t(t,e)+T0t(t,i)+E0t(t,n)}var ax=class extends Ma{constructor(r=new le,e=new le,i=new le,n=new le){super(),this.isCubicBezierCurve=!0,this.type="CubicBezierCurve",this.v0=r,this.v1=e,this.v2=i,this.v3=n}getPoint(r,e=new le){let i=e,n=this.v0,s=this.v1,a=this.v2,o=this.v3;return i.set($b(r,n.x,s.x,a.x,o.x),$b(r,n.y,s.y,a.y,o.y)),i}copy(r){return super.copy(r),this.v0.copy(r.v0),this.v1.copy(r.v1),this.v2.copy(r.v2),this.v3.copy(r.v3),this}toJSON(){let r=super.toJSON();return r.v0=this.v0.toArray(),r.v1=this.v1.toArray(),r.v2=this.v2.toArray(),r.v3=this.v3.toArray(),r}fromJSON(r){return super.fromJSON(r),this.v0.fromArray(r.v0),this.v1.fromArray(r.v1),this.v2.fromArray(r.v2),this.v3.fromArray(r.v3),this}},MD=class extends Ma{constructor(r=new A,e=new A,i=new A,n=new A){super(),this.isCubicBezierCurve3=!0,this.type="CubicBezierCurve3",this.v0=r,this.v1=e,this.v2=i,this.v3=n}getPoint(r,e=new A){let i=e,n=this.v0,s=this.v1,a=this.v2,o=this.v3;return i.set($b(r,n.x,s.x,a.x,o.x),$b(r,n.y,s.y,a.y,o.y),$b(r,n.z,s.z,a.z,o.z)),i}copy(r){return super.copy(r),this.v0.copy(r.v0),this.v1.copy(r.v1),this.v2.copy(r.v2),this.v3.copy(r.v3),this}toJSON(){let r=super.toJSON();return r.v0=this.v0.toArray(),r.v1=this.v1.toArray(),r.v2=this.v2.toArray(),r.v3=this.v3.toArray(),r}fromJSON(r){return super.fromJSON(r),this.v0.fromArray(r.v0),this.v1.fromArray(r.v1),this.v2.fromArray(r.v2),this.v3.fromArray(r.v3),this}},Oy=class extends Ma{constructor(r=new le,e=new le){super(),this.isLineCurve=!0,this.type="LineCurve",this.v1=r,this.v2=e}getPoint(r,e=new le){let i=e;return r===1?i.copy(this.v2):(i.copy(this.v2).sub(this.v1),i.multiplyScalar(r).add(this.v1)),i}getPointAt(r,e){return this.getPoint(r,e)}getTangent(r,e){let i=e||new le;return i.copy(this.v2).sub(this.v1).normalize(),i}copy(r){return super.copy(r),this.v1.copy(r.v1),this.v2.copy(r.v2),this}toJSON(){let r=super.toJSON();return r.v1=this.v1.toArray(),r.v2=this.v2.toArray(),r}fromJSON(r){return super.fromJSON(r),this.v1.fromArray(r.v1),this.v2.fromArray(r.v2),this}},DD=class extends Ma{constructor(r=new A,e=new A){super(),this.isLineCurve3=!0,this.type="LineCurve3",this.v1=r,this.v2=e}getPoint(r,e=new A){let i=e;return r===1?i.copy(this.v2):(i.copy(this.v2).sub(this.v1),i.multiplyScalar(r).add(this.v1)),i}getPointAt(r,e){return this.getPoint(r,e)}copy(r){return super.copy(r),this.v1.copy(r.v1),this.v2.copy(r.v2),this}toJSON(){let r=super.toJSON();return r.v1=this.v1.toArray(),r.v2=this.v2.toArray(),r}fromJSON(r){return super.fromJSON(r),this.v1.fromArray(r.v1),this.v2.fromArray(r.v2),this}},ox=class extends Ma{constructor(r=new le,e=new le,i=new le){super(),this.isQuadraticBezierCurve=!0,this.type="QuadraticBezierCurve",this.v0=r,this.v1=e,this.v2=i}getPoint(r,e=new le){let i=e,n=this.v0,s=this.v1,a=this.v2;return i.set(Xb(r,n.x,s.x,a.x),Xb(r,n.y,s.y,a.y)),i}copy(r){return super.copy(r),this.v0.copy(r.v0),this.v1.copy(r.v1),this.v2.copy(r.v2),this}toJSON(){let r=super.toJSON();return r.v0=this.v0.toArray(),r.v1=this.v1.toArray(),r.v2=this.v2.toArray(),r}fromJSON(r){return super.fromJSON(r),this.v0.fromArray(r.v0),this.v1.fromArray(r.v1),this.v2.fromArray(r.v2),this}},lx=class extends Ma{constructor(r=new A,e=new A,i=new A){super(),this.isQuadraticBezierCurve3=!0,this.type="QuadraticBezierCurve3",this.v0=r,this.v1=e,this.v2=i}getPoint(r,e=new A){let i=e,n=this.v0,s=this.v1,a=this.v2;return i.set(Xb(r,n.x,s.x,a.x),Xb(r,n.y,s.y,a.y),Xb(r,n.z,s.z,a.z)),i}copy(r){return super.copy(r),this.v0.copy(r.v0),this.v1.copy(r.v1),this.v2.copy(r.v2),this}toJSON(){let r=super.toJSON();return r.v0=this.v0.toArray(),r.v1=this.v1.toArray(),r.v2=this.v2.toArray(),r}fromJSON(r){return super.fromJSON(r),this.v0.fromArray(r.v0),this.v1.fromArray(r.v1),this.v2.fromArray(r.v2),this}},bg=class extends Ma{constructor(r=[]){super(),this.isSplineCurve=!0,this.type="SplineCurve",this.points=r}getPoint(r,e=new le){let i=e,n=this.points,s=(n.length-1)*r,a=Math.floor(s),o=s-a,l=n[a===0?a:a-1],c=n[a],u=n[a>n.length-2?n.length-1:a+1],h=n[a>n.length-3?n.length-1:a+2];return i.set($ce(o,l.x,c.x,u.x,h.x),$ce(o,l.y,c.y,u.y,h.y)),i}copy(r){super.copy(r),this.points=[];for(let e=0,i=r.points.length;e<i;e++){let n=r.points[e];this.points.push(n.clone())}return this}toJSON(){let r=super.toJSON();r.points=[];for(let e=0,i=this.points.length;e<i;e++){let n=this.points[e];r.points.push(n.toArray())}return r}fromJSON(r){super.fromJSON(r),this.points=[];for(let e=0,i=r.points.length;e<i;e++){let n=r.points[e];this.points.push(new le().fromArray(n))}return this}},CU=Object.freeze({__proto__:null,ArcCurve:Eg,CatmullRomCurve3:RD,CubicBezierCurve:ax,CubicBezierCurve3:MD,EllipseCurve:xp,LineCurve:Oy,LineCurve3:DD,QuadraticBezierCurve:ox,QuadraticBezierCurve3:lx,SplineCurve:bg}),CD=class extends Ma{constructor(){super(),this.type="CurvePath",this.curves=[],this.autoClose=!1}add(r){this.curves.push(r)}closePath(){let r=this.curves[0].getPoint(0),e=this.curves[this.curves.length-1].getPoint(1);r.equals(e)||this.curves.push(new Oy(e,r))}getPoint(r,e){let i=r*this.getLength(),n=this.getCurveLengths(),s=0;for(;s<n.length;){if(n[s]>=i){let a=n[s]-i,o=this.curves[s],l=o.getLength(),c=l===0?0:1-a/l;return o.getPointAt(c,e)}s++}return null}getLength(){let r=this.getCurveLengths();return r[r.length-1]}updateArcLengths(){this.needsUpdate=!0,this.cacheLengths=null,this.getCurveLengths()}getCurveLengths(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length)return this.cacheLengths;let r=[],e=0;for(let i=0,n=this.curves.length;i<n;i++)e+=this.curves[i].getLength(),r.push(e);return this.cacheLengths=r,r}getSpacedPoints(r=40){let e=[];for(let i=0;i<=r;i++)e.push(this.getPoint(i/r));return this.autoClose&&e.push(e[0]),e}getPoints(r=12){let e=[],i;for(let n=0,s=this.curves;n<s.length;n++){let a=s[n],o=a.isEllipseCurve?r*2:a.isLineCurve||a.isLineCurve3?1:a.isSplineCurve?r*a.points.length:r,l=a.getPoints(o);for(let c=0;c<l.length;c++){let u=l[c];i&&i.equals(u)||(e.push(u),i=u)}}return this.autoClose&&e.length>1&&!e[e.length-1].equals(e[0])&&e.push(e[0]),e}copy(r){super.copy(r),this.curves=[];for(let e=0,i=r.curves.length;e<i;e++){let n=r.curves[e];this.curves.push(n.clone())}return this.autoClose=r.autoClose,this}toJSON(){let r=super.toJSON();r.autoClose=this.autoClose,r.curves=[];for(let e=0,i=this.curves.length;e<i;e++){let n=this.curves[e];r.curves.push(n.toJSON())}return r}fromJSON(r){super.fromJSON(r),this.autoClose=r.autoClose,this.curves=[];for(let e=0,i=r.curves.length;e<i;e++){let n=r.curves[e];this.curves.push(new CU[n.type]().fromJSON(n))}return this}},ku=class extends CD{constructor(r){super(),this.type="Path",this.currentPoint=new le,r&&this.setFromPoints(r)}setFromPoints(r){this.moveTo(r[0].x,r[0].y);for(let e=1,i=r.length;e<i;e++)this.lineTo(r[e].x,r[e].y);return this}moveTo(r,e){return this.currentPoint.set(r,e),this}lineTo(r,e){let i=new Oy(this.currentPoint.clone(),new le(r,e));return this.curves.push(i),this.currentPoint.set(r,e),this}quadraticCurveTo(r,e,i,n){let s=new ox(this.currentPoint.clone(),new le(r,e),new le(i,n));return this.curves.push(s),this.currentPoint.set(i,n),this}bezierCurveTo(r,e,i,n,s,a){let o=new ax(this.currentPoint.clone(),new le(r,e),new le(i,n),new le(s,a));return this.curves.push(o),this.currentPoint.set(s,a),this}splineThru(r){let e=[this.currentPoint.clone()].concat(r),i=new bg(e);return this.curves.push(i),this.currentPoint.copy(r[r.length-1]),this}arc(r,e,i,n,s,a){let o=this.currentPoint.x,l=this.currentPoint.y;return this.absarc(r+o,e+l,i,n,s,a),this}absarc(r,e,i,n,s,a){return this.absellipse(r,e,i,i,n,s,a),this}ellipse(r,e,i,n,s,a,o,l){let c=this.currentPoint.x,u=this.currentPoint.y;return this.absellipse(r+c,e+u,i,n,s,a,o,l),this}absellipse(r,e,i,n,s,a,o,l){let c=new xp(r,e,i,n,s,a,o,l);if(this.curves.length>0){let h=c.getPoint(0);h.equals(this.currentPoint)||this.lineTo(h.x,h.y)}this.curves.push(c);let u=c.getPoint(1);return this.currentPoint.copy(u),this}copy(r){return super.copy(r),this.currentPoint.copy(r.currentPoint),this}toJSON(){let r=super.toJSON();return r.currentPoint=this.currentPoint.toArray(),r}fromJSON(r){return super.fromJSON(r),this.currentPoint.fromArray(r.currentPoint),this}},cf=class extends it{constructor(r=[new le(0,-.5),new le(.5,0),new le(0,.5)],e=12,i=0,n=Math.PI*2){super(),this.type="LatheGeometry",this.parameters={points:r,segments:e,phiStart:i,phiLength:n},e=Math.floor(e),n=Qn(n,0,Math.PI*2);let s=[],a=[],o=[],l=[],c=[],u=1/e,h=new A,p=new le,d=new A,f=new A,m=new A,g=0,y=0;for(let E=0;E<=r.length-1;E++)switch(E){case 0:g=r[E+1].x-r[E].x,y=r[E+1].y-r[E].y,d.x=y*1,d.y=-g,d.z=y*0,m.copy(d),d.normalize(),l.push(d.x,d.y,d.z);break;case r.length-1:l.push(m.x,m.y,m.z);break;default:g=r[E+1].x-r[E].x,y=r[E+1].y-r[E].y,d.x=y*1,d.y=-g,d.z=y*0,f.copy(d),d.x+=m.x,d.y+=m.y,d.z+=m.z,d.normalize(),l.push(d.x,d.y,d.z),m.copy(f)}for(let E=0;E<=e;E++){let b=i+E*u*n,x=Math.sin(b),S=Math.cos(b);for(let D=0;D<=r.length-1;D++){h.x=r[D].x*x,h.y=r[D].y,h.z=r[D].x*S,a.push(h.x,h.y,h.z),p.x=E/e,p.y=D/(r.length-1),o.push(p.x,p.y);let P=l[3*D+0]*x,_=l[3*D+1],w=l[3*D+0]*S;c.push(P,_,w)}}for(let E=0;E<e;E++)for(let b=0;b<r.length-1;b++){let x=b+E*r.length,S=x,D=x+r.length,P=x+r.length+1,_=x+1;s.push(S,D,_),s.push(P,_,D)}this.setIndex(s),this.setAttribute("position",new ct(a,3)),this.setAttribute("uv",new ct(o,2)),this.setAttribute("normal",new ct(c,3))}static fromJSON(r){return new cf(r.points,r.segments,r.phiStart,r.phiLength)}},xg=class extends cf{constructor(r=1,e=1,i=4,n=8){let s=new ku;s.absarc(0,-e/2,r,Math.PI*1.5,0),s.absarc(0,e/2,r,0,Math.PI*.5),super(s.getPoints(i),n),this.type="CapsuleGeometry",this.parameters={radius:r,height:e,capSegments:i,radialSegments:n}}static fromJSON(r){return new xg(r.radius,r.length,r.capSegments,r.radialSegments)}},Ig=class extends it{constructor(r=1,e=32,i=0,n=Math.PI*2){super(),this.type="CircleGeometry",this.parameters={radius:r,segments:e,thetaStart:i,thetaLength:n},e=Math.max(3,e);let s=[],a=[],o=[],l=[],c=new A,u=new le;a.push(0,0,0),o.push(0,0,1),l.push(.5,.5);for(let h=0,p=3;h<=e;h++,p+=3){let d=i+h/e*n;c.x=r*Math.cos(d),c.y=r*Math.sin(d),a.push(c.x,c.y,c.z),o.push(0,0,1),u.x=(a[p]/r+1)/2,u.y=(a[p+1]/r+1)/2,l.push(u.x,u.y)}for(let h=1;h<=e;h++)s.push(h,h+1,0);this.setIndex(s),this.setAttribute("position",new ct(a,3)),this.setAttribute("normal",new ct(o,3)),this.setAttribute("uv",new ct(l,2))}static fromJSON(r){return new Ig(r.radius,r.segments,r.thetaStart,r.thetaLength)}},Dl=class extends it{constructor(r=1,e=1,i=1,n=32,s=1,a=!1,o=0,l=Math.PI*2){super(),this.type="CylinderGeometry",this.parameters={radiusTop:r,radiusBottom:e,height:i,radialSegments:n,heightSegments:s,openEnded:a,thetaStart:o,thetaLength:l};let c=this;n=Math.floor(n),s=Math.floor(s);let u=[],h=[],p=[],d=[],f=0,m=[],g=i/2,y=0;E(),a===!1&&(r>0&&b(!0),e>0&&b(!1)),this.setIndex(u),this.setAttribute("position",new ct(h,3)),this.setAttribute("normal",new ct(p,3)),this.setAttribute("uv",new ct(d,2));function E(){let x=new A,S=new A,D=0,P=(e-r)/i;for(let _=0;_<=s;_++){let w=[],F=_/s,X=F*(e-r)+r;for(let H=0;H<=n;H++){let he=H/n,C=he*l+o,N=Math.sin(C),k=Math.cos(C);S.x=X*N,S.y=-F*i+g,S.z=X*k,h.push(S.x,S.y,S.z),x.set(N,P,k).normalize(),p.push(x.x,x.y,x.z),d.push(he,1-F),w.push(f++)}m.push(w)}for(let _=0;_<n;_++)for(let w=0;w<s;w++){let F=m[w][_],X=m[w+1][_],H=m[w+1][_+1],he=m[w][_+1];u.push(F,X,he),u.push(X,H,he),D+=6}c.addGroup(y,D,0),y+=D}function b(x){let S=f,D=new le,P=new A,_=0,w=x===!0?r:e,F=x===!0?1:-1;for(let H=1;H<=n;H++)h.push(0,g*F,0),p.push(0,F,0),d.push(.5,.5),f++;let X=f;for(let H=0;H<=n;H++){let C=H/n*l+o,N=Math.cos(C),k=Math.sin(C);P.x=w*k,P.y=g*F,P.z=w*N,h.push(P.x,P.y,P.z),p.push(0,F,0),D.x=N*.5+.5,D.y=k*.5*F+.5,d.push(D.x,D.y),f++}for(let H=0;H<n;H++){let he=S+H,C=X+H;x===!0?u.push(C,C+1,he):u.push(C+1,C,he),_+=3}c.addGroup(y,_,x===!0?1:2),y+=_}}static fromJSON(r){return new Dl(r.radiusTop,r.radiusBottom,r.height,r.radialSegments,r.heightSegments,r.openEnded,r.thetaStart,r.thetaLength)}},Sg=class extends Dl{constructor(r=1,e=1,i=32,n=1,s=!1,a=0,o=Math.PI*2){super(0,r,e,i,n,s,a,o),this.type="ConeGeometry",this.parameters={radius:r,height:e,radialSegments:i,heightSegments:n,openEnded:s,thetaStart:a,thetaLength:o}}static fromJSON(r){return new Sg(r.radius,r.height,r.radialSegments,r.heightSegments,r.openEnded,r.thetaStart,r.thetaLength)}},Dc=class extends it{constructor(r=[],e=[],i=1,n=0){super(),this.type="PolyhedronGeometry",this.parameters={vertices:r,indices:e,radius:i,detail:n};let s=[],a=[];o(n),c(i),u(),this.setAttribute("position",new ct(s,3)),this.setAttribute("normal",new ct(s.slice(),3)),this.setAttribute("uv",new ct(a,2)),n===0?this.computeVertexNormals():this.normalizeNormals();function o(E){let b=new A,x=new A,S=new A;for(let D=0;D<e.length;D+=3)d(e[D+0],b),d(e[D+1],x),d(e[D+2],S),l(b,x,S,E)}function l(E,b,x,S){let D=S+1,P=[];for(let _=0;_<=D;_++){P[_]=[];let w=E.clone().lerp(x,_/D),F=b.clone().lerp(x,_/D),X=D-_;for(let H=0;H<=X;H++)H===0&&_===D?P[_][H]=w:P[_][H]=w.clone().lerp(F,H/X)}for(let _=0;_<D;_++)for(let w=0;w<2*(D-_)-1;w++){let F=Math.floor(w/2);w%2===0?(p(P[_][F+1]),p(P[_+1][F]),p(P[_][F])):(p(P[_][F+1]),p(P[_+1][F+1]),p(P[_+1][F]))}}function c(E){let b=new A;for(let x=0;x<s.length;x+=3)b.x=s[x+0],b.y=s[x+1],b.z=s[x+2],b.normalize().multiplyScalar(E),s[x+0]=b.x,s[x+1]=b.y,s[x+2]=b.z}function u(){let E=new A;for(let b=0;b<s.length;b+=3){E.x=s[b+0],E.y=s[b+1],E.z=s[b+2];let x=g(E)/2/Math.PI+.5,S=y(E)/Math.PI+.5;a.push(x,1-S)}f(),h()}function h(){for(let E=0;E<a.length;E+=6){let b=a[E+0],x=a[E+2],S=a[E+4],D=Math.max(b,x,S),P=Math.min(b,x,S);D>.9&&P<.1&&(b<.2&&(a[E+0]+=1),x<.2&&(a[E+2]+=1),S<.2&&(a[E+4]+=1))}}function p(E){s.push(E.x,E.y,E.z)}function d(E,b){let x=E*3;b.x=r[x+0],b.y=r[x+1],b.z=r[x+2]}function f(){let E=new A,b=new A,x=new A,S=new A,D=new le,P=new le,_=new le;for(let w=0,F=0;w<s.length;w+=9,F+=6){E.set(s[w+0],s[w+1],s[w+2]),b.set(s[w+3],s[w+4],s[w+5]),x.set(s[w+6],s[w+7],s[w+8]),D.set(a[F+0],a[F+1]),P.set(a[F+2],a[F+3]),_.set(a[F+4],a[F+5]),S.copy(E).add(b).add(x).divideScalar(3);let X=g(S);m(D,F+0,E,X),m(P,F+2,b,X),m(_,F+4,x,X)}}function m(E,b,x,S){S<0&&E.x===1&&(a[b]=E.x-1),x.x===0&&x.z===0&&(a[b]=S/2/Math.PI+.5)}function g(E){return Math.atan2(E.z,-E.x)}function y(E){return Math.atan2(-E.y,Math.sqrt(E.x*E.x+E.z*E.z))}}static fromJSON(r){return new Dc(r.vertices,r.indices,r.radius,r.details)}},_g=class extends Dc{constructor(r=1,e=0){let i=(1+Math.sqrt(5))/2,n=1/i,s=[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-n,-i,0,-n,i,0,n,-i,0,n,i,-n,-i,0,-n,i,0,n,-i,0,n,i,0,-i,0,-n,i,0,-n,-i,0,n,i,0,n],a=[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9];super(s,a,r,e),this.type="DodecahedronGeometry",this.parameters={radius:r,detail:e}}static fromJSON(r){return new _g(r.radius,r.detail)}},JM=new A,QM=new A,bH=new A,eD=new un,Ip=class extends it{constructor(r=null,e=1){if(super(),this.type="EdgesGeometry",this.parameters={geometry:r,thresholdAngle:e},r!==null){let n=Math.pow(10,4),s=Math.cos(dg*e),a=r.getIndex(),o=r.getAttribute("position"),l=a?a.count:o.count,c=[0,0,0],u=["a","b","c"],h=new Array(3),p={},d=[];for(let f=0;f<l;f+=3){a?(c[0]=a.getX(f),c[1]=a.getX(f+1),c[2]=a.getX(f+2)):(c[0]=f,c[1]=f+1,c[2]=f+2);let{a:m,b:g,c:y}=eD;if(m.fromBufferAttribute(o,c[0]),g.fromBufferAttribute(o,c[1]),y.fromBufferAttribute(o,c[2]),eD.getNormal(bH),h[0]=`${Math.round(m.x*n)},${Math.round(m.y*n)},${Math.round(m.z*n)}`,h[1]=`${Math.round(g.x*n)},${Math.round(g.y*n)},${Math.round(g.z*n)}`,h[2]=`${Math.round(y.x*n)},${Math.round(y.y*n)},${Math.round(y.z*n)}`,!(h[0]===h[1]||h[1]===h[2]||h[2]===h[0]))for(let E=0;E<3;E++){let b=(E+1)%3,x=h[E],S=h[b],D=eD[u[E]],P=eD[u[b]],_=`${x}_${S}`,w=`${S}_${x}`;w in p&&p[w]?(bH.dot(p[w].normal)<=s&&(d.push(D.x,D.y,D.z),d.push(P.x,P.y,P.z)),p[w]=null):_ in p||(p[_]={index0:c[E],index1:c[b],normal:bH.clone()})}}for(let f in p)if(p[f]){let{index0:m,index1:g}=p[f];JM.fromBufferAttribute(o,m),QM.fromBufferAttribute(o,g),d.push(JM.x,JM.y,JM.z),d.push(QM.x,QM.y,QM.z)}this.setAttribute("position",new ct(d,3))}}},Ja=class extends ku{constructor(r){super(r),this.uuid=ko(),this.type="Shape",this.holes=[]}getPointsHoles(r){let e=[];for(let i=0,n=this.holes.length;i<n;i++)e[i]=this.holes[i].getPoints(r);return e}extractPoints(r){return{shape:this.getPoints(r),holes:this.getPointsHoles(r)}}copy(r){super.copy(r),this.holes=[];for(let e=0,i=r.holes.length;e<i;e++){let n=r.holes[e];this.holes.push(n.clone())}return this}toJSON(){let r=super.toJSON();r.uuid=this.uuid,r.holes=[];for(let e=0,i=this.holes.length;e<i;e++){let n=this.holes[e];r.holes.push(n.toJSON())}return r}fromJSON(r){super.fromJSON(r),this.uuid=r.uuid,this.holes=[];for(let e=0,i=r.holes.length;e<i;e++){let n=r.holes[e];this.holes.push(new ku().fromJSON(n))}return this}},b0t={triangulate:function(t,r,e=2){let i=r&&r.length,n=i?r[0]*e:t.length,s=The(t,0,n,e,!0),a=[];if(!s||s.next===s.prev)return a;let o,l,c,u,h,p,d;if(i&&(s=w0t(t,r,s,e)),t.length>80*e){o=c=t[0],l=u=t[1];for(let f=e;f<n;f+=e)h=t[f],p=t[f+1],h<o&&(o=h),p<l&&(l=p),h>c&&(c=h),p>u&&(u=p);d=Math.max(c-o,u-l),d=d!==0?32767/d:0}return cx(s,a,e,o,l,d,0),a}};function The(t,r,e,i,n){let s,a;if(n===H0t(t,r,e,i)>0)for(s=r;s<e;s+=i)a=Zce(s,t[s],t[s+1],a);else for(s=e-i;s>=r;s-=i)a=Zce(s,t[s],t[s+1],a);return a&&KD(a,a.next)&&(hx(a),a=a.next),a}function wg(t,r){if(!t)return t;r||(r=t);let e=t,i;do if(i=!1,!e.steiner&&(KD(e,e.next)||An(e.prev,e,e.next)===0)){if(hx(e),e=r=e.prev,e===e.next)break;i=!0}else e=e.next;while(i||e!==r);return r}function cx(t,r,e,i,n,s,a){if(!t)return;!a&&s&&A0t(t,i,n,s);let o=t,l,c;for(;t.prev!==t.next;){if(l=t.prev,c=t.next,s?I0t(t,i,n,s):x0t(t)){r.push(l.i/e|0),r.push(t.i/e|0),r.push(c.i/e|0),hx(t),t=c.next,o=c.next;continue}if(t=c,t===o){a?a===1?(t=S0t(wg(t),r,e),cx(t,r,e,i,n,s,2)):a===2&&_0t(t,r,e,i,n,s):cx(wg(t),r,e,i,n,s,1);break}}}function x0t(t){let r=t.prev,e=t,i=t.next;if(An(r,e,i)>=0)return!1;let n=r.x,s=e.x,a=i.x,o=r.y,l=e.y,c=i.y,u=n<s?n<a?n:a:s<a?s:a,h=o<l?o<c?o:c:l<c?l:c,p=n>s?n>a?n:a:s>a?s:a,d=o>l?o>c?o:c:l>c?l:c,f=i.next;for(;f!==r;){if(f.x>=u&&f.x<=p&&f.y>=h&&f.y<=d&&Sy(n,o,s,l,a,c,f.x,f.y)&&An(f.prev,f,f.next)>=0)return!1;f=f.next}return!0}function I0t(t,r,e,i){let n=t.prev,s=t,a=t.next;if(An(n,s,a)>=0)return!1;let o=n.x,l=s.x,c=a.x,u=n.y,h=s.y,p=a.y,d=o<l?o<c?o:c:l<c?l:c,f=u<h?u<p?u:p:h<p?h:p,m=o>l?o>c?o:c:l>c?l:c,g=u>h?u>p?u:p:h>p?h:p,y=S4(d,f,r,e,i),E=S4(m,g,r,e,i),b=t.prevZ,x=t.nextZ;for(;b&&b.z>=y&&x&&x.z<=E;){if(b.x>=d&&b.x<=m&&b.y>=f&&b.y<=g&&b!==n&&b!==a&&Sy(o,u,l,h,c,p,b.x,b.y)&&An(b.prev,b,b.next)>=0||(b=b.prevZ,x.x>=d&&x.x<=m&&x.y>=f&&x.y<=g&&x!==n&&x!==a&&Sy(o,u,l,h,c,p,x.x,x.y)&&An(x.prev,x,x.next)>=0))return!1;x=x.nextZ}for(;b&&b.z>=y;){if(b.x>=d&&b.x<=m&&b.y>=f&&b.y<=g&&b!==n&&b!==a&&Sy(o,u,l,h,c,p,b.x,b.y)&&An(b.prev,b,b.next)>=0)return!1;b=b.prevZ}for(;x&&x.z<=E;){if(x.x>=d&&x.x<=m&&x.y>=f&&x.y<=g&&x!==n&&x!==a&&Sy(o,u,l,h,c,p,x.x,x.y)&&An(x.prev,x,x.next)>=0)return!1;x=x.nextZ}return!0}function S0t(t,r,e){let i=t;do{let n=i.prev,s=i.next.next;!KD(n,s)&&Ehe(n,i,i.next,s)&&ux(n,s)&&ux(s,n)&&(r.push(n.i/e|0),r.push(i.i/e|0),r.push(s.i/e|0),hx(i),hx(i.next),i=t=s),i=i.next}while(i!==t);return wg(i)}function _0t(t,r,e,i,n,s){let a=t;do{let o=a.next.next;for(;o!==a.prev;){if(a.i!==o.i&&N0t(a,o)){let l=bhe(a,o);a=wg(a,a.next),l=wg(l,l.next),cx(a,r,e,i,n,s,0),cx(l,r,e,i,n,s,0);return}o=o.next}a=a.next}while(a!==t)}function w0t(t,r,e,i){let n=[],s,a,o,l,c;for(s=0,a=r.length;s<a;s++)o=r[s]*i,l=s<a-1?r[s+1]*i:t.length,c=The(t,o,l,i,!1),c===c.next&&(c.steiner=!0),n.push(P0t(c));for(n.sort(R0t),s=0;s<n.length;s++)e=M0t(n[s],e);return e}function R0t(t,r){return t.x-r.x}function M0t(t,r){let e=D0t(t,r);if(!e)return r;let i=bhe(e,t);return wg(i,i.next),wg(e,e.next)}function D0t(t,r){let e=r,i=-1/0,n,s=t.x,a=t.y;do{if(a<=e.y&&a>=e.next.y&&e.next.y!==e.y){let p=e.x+(a-e.y)*(e.next.x-e.x)/(e.next.y-e.y);if(p<=s&&p>i&&(i=p,n=e.x<e.next.x?e:e.next,p===s))return n}e=e.next}while(e!==r);if(!n)return null;let o=n,l=n.x,c=n.y,u=1/0,h;e=n;do s>=e.x&&e.x>=l&&s!==e.x&&Sy(a<c?s:i,a,l,c,a<c?i:s,a,e.x,e.y)&&(h=Math.abs(a-e.y)/(s-e.x),ux(e,t)&&(h<u||h===u&&(e.x>n.x||e.x===n.x&&C0t(n,e)))&&(n=e,u=h)),e=e.next;while(e!==o);return n}function C0t(t,r){return An(t.prev,t,r.prev)<0&&An(r.next,t,t.next)<0}function A0t(t,r,e,i){let n=t;do n.z===0&&(n.z=S4(n.x,n.y,r,e,i)),n.prevZ=n.prev,n.nextZ=n.next,n=n.next;while(n!==t);n.prevZ.nextZ=null,n.prevZ=null,O0t(n)}function O0t(t){let r,e,i,n,s,a,o,l,c=1;do{for(e=t,t=null,s=null,a=0;e;){for(a++,i=e,o=0,r=0;r<c&&(o++,i=i.nextZ,!!i);r++);for(l=c;o>0||l>0&&i;)o!==0&&(l===0||!i||e.z<=i.z)?(n=e,e=e.nextZ,o--):(n=i,i=i.nextZ,l--),s?s.nextZ=n:t=n,n.prevZ=s,s=n;e=i}s.nextZ=null,c*=2}while(a>1);return t}function S4(t,r,e,i,n){return t=(t-e)*n|0,r=(r-i)*n|0,t=(t|t<<8)&16711935,t=(t|t<<4)&252645135,t=(t|t<<2)&858993459,t=(t|t<<1)&1431655765,r=(r|r<<8)&16711935,r=(r|r<<4)&252645135,r=(r|r<<2)&858993459,r=(r|r<<1)&1431655765,t|r<<1}function P0t(t){let r=t,e=t;do(r.x<e.x||r.x===e.x&&r.y<e.y)&&(e=r),r=r.next;while(r!==t);return e}function Sy(t,r,e,i,n,s,a,o){return(n-a)*(r-o)>=(t-a)*(s-o)&&(t-a)*(i-o)>=(e-a)*(r-o)&&(e-a)*(s-o)>=(n-a)*(i-o)}function N0t(t,r){return t.next.i!==r.i&&t.prev.i!==r.i&&!L0t(t,r)&&(ux(t,r)&&ux(r,t)&&F0t(t,r)&&(An(t.prev,t,r.prev)||An(t,r.prev,r))||KD(t,r)&&An(t.prev,t,t.next)>0&&An(r.prev,r,r.next)>0)}function An(t,r,e){return(r.y-t.y)*(e.x-r.x)-(r.x-t.x)*(e.y-r.y)}function KD(t,r){return t.x===r.x&&t.y===r.y}function Ehe(t,r,e,i){let n=rD(An(t,r,e)),s=rD(An(t,r,i)),a=rD(An(e,i,t)),o=rD(An(e,i,r));return!!(n!==s&&a!==o||n===0&&tD(t,e,r)||s===0&&tD(t,i,r)||a===0&&tD(e,t,i)||o===0&&tD(e,r,i))}function tD(t,r,e){return r.x<=Math.max(t.x,e.x)&&r.x>=Math.min(t.x,e.x)&&r.y<=Math.max(t.y,e.y)&&r.y>=Math.min(t.y,e.y)}function rD(t){return t>0?1:t<0?-1:0}function L0t(t,r){let e=t;do{if(e.i!==t.i&&e.next.i!==t.i&&e.i!==r.i&&e.next.i!==r.i&&Ehe(e,e.next,t,r))return!0;e=e.next}while(e!==t);return!1}function ux(t,r){return An(t.prev,t,t.next)<0?An(t,r,t.next)>=0&&An(t,t.prev,r)>=0:An(t,r,t.prev)<0||An(t,t.next,r)<0}function F0t(t,r){let e=t,i=!1,n=(t.x+r.x)/2,s=(t.y+r.y)/2;do e.y>s!=e.next.y>s&&e.next.y!==e.y&&n<(e.next.x-e.x)*(s-e.y)/(e.next.y-e.y)+e.x&&(i=!i),e=e.next;while(e!==t);return i}function bhe(t,r){let e=new _4(t.i,t.x,t.y),i=new _4(r.i,r.x,r.y),n=t.next,s=r.prev;return t.next=r,r.prev=t,e.next=n,n.prev=e,i.next=e,e.prev=i,s.next=i,i.prev=s,i}function Zce(t,r,e,i){let n=new _4(t,r,e);return i?(n.next=i.next,n.prev=i,i.next.prev=n,i.next=n):(n.prev=n,n.next=n),n}function hx(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ)}function _4(t,r,e){this.i=t,this.x=r,this.y=e,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}function H0t(t,r,e,i){let n=0;for(let s=r,a=e-i;s<e;s+=i)n+=(t[a]-t[s])*(t[s+1]+t[a+1]),a=s;return n}var es=class{static area(r){let e=r.length,i=0;for(let n=e-1,s=0;s<e;n=s++)i+=r[n].x*r[s].y-r[s].x*r[n].y;return i*.5}static isClockWise(r){return es.area(r)<0}static triangulateShape(r,e){let i=[],n=[],s=[];Kce(r),Jce(i,r);let a=r.length;e.forEach(Kce);for(let l=0;l<e.length;l++)n.push(a),a+=e[l].length,Jce(i,e[l]);let o=b0t.triangulate(i,n);for(let l=0;l<o.length;l+=3)s.push(o.slice(l,l+3));return s}};function Kce(t){let r=t.length;r>2&&t[r-1].equals(t[0])&&t.pop()}function Jce(t,r){for(let e=0;e<r.length;e++)t.push(r[e].x),t.push(r[e].y)}var Sp=class extends it{constructor(r=new Ja([new le(.5,.5),new le(-.5,.5),new le(-.5,-.5),new le(.5,-.5)]),e={}){super(),this.type="ExtrudeGeometry",this.parameters={shapes:r,options:e},r=Array.isArray(r)?r:[r];let i=this,n=[],s=[];for(let o=0,l=r.length;o<l;o++){let c=r[o];a(c)}this.setAttribute("position",new ct(n,3)),this.setAttribute("uv",new ct(s,2)),this.computeVertexNormals();function a(o){let l=[],c=e.curveSegments!==void 0?e.curveSegments:12,u=e.steps!==void 0?e.steps:1,h=e.depth!==void 0?e.depth:1,p=e.bevelEnabled!==void 0?e.bevelEnabled:!0,d=e.bevelThickness!==void 0?e.bevelThickness:.2,f=e.bevelSize!==void 0?e.bevelSize:d-.1,m=e.bevelOffset!==void 0?e.bevelOffset:0,g=e.bevelSegments!==void 0?e.bevelSegments:3,y=e.extrudePath,E=e.UVGenerator!==void 0?e.UVGenerator:U0t,b,x=!1,S,D,P,_;y&&(b=y.getSpacedPoints(u),x=!0,p=!1,S=y.computeFrenetFrames(u,!1),D=new A,P=new A,_=new A),p||(g=0,d=0,f=0,m=0);let w=o.extractPoints(c),F=w.shape,X=w.holes;if(!es.isClockWise(F)){F=F.reverse();for(let Be=0,ke=X.length;Be<ke;Be++){let nt=X[Be];es.isClockWise(nt)&&(X[Be]=nt.reverse())}}let he=es.triangulateShape(F,X),C=F;for(let Be=0,ke=X.length;Be<ke;Be++){let nt=X[Be];F=F.concat(nt)}function N(Be,ke,nt){return ke||console.error("THREE.ExtrudeGeometry: vec does not exist"),ke.clone().multiplyScalar(nt).add(Be)}let k=F.length,G=he.length;function U(Be,ke,nt){let bt,mt,_e,J=Be.x-ke.x,$=Be.y-ke.y,re=nt.x-Be.x,me=nt.y-Be.y,z=J*J+$*$,Y=J*me-$*re;if(Math.abs(Y)>Number.EPSILON){let xe=Math.sqrt(z),Ce=Math.sqrt(re*re+me*me),Ge=ke.x-$/xe,Ze=ke.y+J/xe,gt=nt.x-me/Ce,ye=nt.y+re/Ce,Re=((gt-Ge)*me-(ye-Ze)*re)/(J*me-$*re);bt=Ge+J*Re-Be.x,mt=Ze+$*Re-Be.y;let ut=bt*bt+mt*mt;if(ut<=2)return new le(bt,mt);_e=Math.sqrt(ut/2)}else{let xe=!1;J>Number.EPSILON?re>Number.EPSILON&&(xe=!0):J<-Number.EPSILON?re<-Number.EPSILON&&(xe=!0):Math.sign($)===Math.sign(me)&&(xe=!0),xe?(bt=-$,mt=J,_e=Math.sqrt(z)):(bt=J,mt=$,_e=Math.sqrt(z/2))}return new le(bt/_e,mt/_e)}let j=[];for(let Be=0,ke=C.length,nt=ke-1,bt=Be+1;Be<ke;Be++,nt++,bt++)nt===ke&&(nt=0),bt===ke&&(bt=0),j[Be]=U(C[Be],C[nt],C[bt]);let ee=[],ae,se=j.concat();for(let Be=0,ke=X.length;Be<ke;Be++){let nt=X[Be];ae=[];for(let bt=0,mt=nt.length,_e=mt-1,J=bt+1;bt<mt;bt++,_e++,J++)_e===mt&&(_e=0),J===mt&&(J=0),ae[bt]=U(nt[bt],nt[_e],nt[J]);ee.push(ae),se=se.concat(ae)}for(let Be=0;Be<g;Be++){let ke=Be/g,nt=d*Math.cos(ke*Math.PI/2),bt=f*Math.sin(ke*Math.PI/2)+m;for(let mt=0,_e=C.length;mt<_e;mt++){let J=N(C[mt],j[mt],bt);we(J.x,J.y,-nt)}for(let mt=0,_e=X.length;mt<_e;mt++){let J=X[mt];ae=ee[mt];for(let $=0,re=J.length;$<re;$++){let me=N(J[$],ae[$],bt);we(me.x,me.y,-nt)}}}let ue=f+m;for(let Be=0;Be<k;Be++){let ke=p?N(F[Be],se[Be],ue):F[Be];x?(P.copy(S.normals[0]).multiplyScalar(ke.x),D.copy(S.binormals[0]).multiplyScalar(ke.y),_.copy(b[0]).add(P).add(D),we(_.x,_.y,_.z)):we(ke.x,ke.y,0)}for(let Be=1;Be<=u;Be++)for(let ke=0;ke<k;ke++){let nt=p?N(F[ke],se[ke],ue):F[ke];x?(P.copy(S.normals[Be]).multiplyScalar(nt.x),D.copy(S.binormals[Be]).multiplyScalar(nt.y),_.copy(b[Be]).add(P).add(D),we(_.x,_.y,_.z)):we(nt.x,nt.y,h/u*Be)}for(let Be=g-1;Be>=0;Be--){let ke=Be/g,nt=d*Math.cos(ke*Math.PI/2),bt=f*Math.sin(ke*Math.PI/2)+m;for(let mt=0,_e=C.length;mt<_e;mt++){let J=N(C[mt],j[mt],bt);we(J.x,J.y,h+nt)}for(let mt=0,_e=X.length;mt<_e;mt++){let J=X[mt];ae=ee[mt];for(let $=0,re=J.length;$<re;$++){let me=N(J[$],ae[$],bt);x?we(me.x,me.y+b[u-1].y,b[u-1].x+nt):we(me.x,me.y,h+nt)}}}ve(),be();function ve(){let Be=n.length/3;if(p){let ke=0,nt=k*ke;for(let bt=0;bt<G;bt++){let mt=he[bt];Fe(mt[2]+nt,mt[1]+nt,mt[0]+nt)}ke=u+g*2,nt=k*ke;for(let bt=0;bt<G;bt++){let mt=he[bt];Fe(mt[0]+nt,mt[1]+nt,mt[2]+nt)}}else{for(let ke=0;ke<G;ke++){let nt=he[ke];Fe(nt[2],nt[1],nt[0])}for(let ke=0;ke<G;ke++){let nt=he[ke];Fe(nt[0]+k*u,nt[1]+k*u,nt[2]+k*u)}}i.addGroup(Be,n.length/3-Be,0)}function be(){let Be=n.length/3,ke=0;de(C,ke),ke+=C.length;for(let nt=0,bt=X.length;nt<bt;nt++){let mt=X[nt];de(mt,ke),ke+=mt.length}i.addGroup(Be,n.length/3-Be,1)}function de(Be,ke){let nt=Be.length;for(;--nt>=0;){let bt=nt,mt=nt-1;mt<0&&(mt=Be.length-1);for(let _e=0,J=u+g*2;_e<J;_e++){let $=k*_e,re=k*(_e+1),me=ke+bt+$,z=ke+mt+$,Y=ke+mt+re,xe=ke+bt+re;je(me,z,Y,xe)}}}function we(Be,ke,nt){l.push(Be),l.push(ke),l.push(nt)}function Fe(Be,ke,nt){Oe(Be),Oe(ke),Oe(nt);let bt=n.length/3,mt=E.generateTopUV(i,n,bt-3,bt-2,bt-1);dt(mt[0]),dt(mt[1]),dt(mt[2])}function je(Be,ke,nt,bt){Oe(Be),Oe(ke),Oe(bt),Oe(ke),Oe(nt),Oe(bt);let mt=n.length/3,_e=E.generateSideWallUV(i,n,mt-6,mt-3,mt-2,mt-1);dt(_e[0]),dt(_e[1]),dt(_e[3]),dt(_e[1]),dt(_e[2]),dt(_e[3])}function Oe(Be){n.push(l[Be*3+0]),n.push(l[Be*3+1]),n.push(l[Be*3+2])}function dt(Be){s.push(Be.x),s.push(Be.y)}}}toJSON(){let r=super.toJSON(),e=this.parameters.shapes,i=this.parameters.options;return B0t(e,i,r)}static fromJSON(r,e){let i=[];for(let s=0,a=r.shapes.length;s<a;s++){let o=e[r.shapes[s]];i.push(o)}let n=r.options.extrudePath;return n!==void 0&&(r.options.extrudePath=new CU[n.type]().fromJSON(n)),new Sp(i,r.options)}},U0t={generateTopUV:function(t,r,e,i,n){let s=r[e*3],a=r[e*3+1],o=r[i*3],l=r[i*3+1],c=r[n*3],u=r[n*3+1];return[new le(s,a),new le(o,l),new le(c,u)]},generateSideWallUV:function(t,r,e,i,n,s){let a=r[e*3],o=r[e*3+1],l=r[e*3+2],c=r[i*3],u=r[i*3+1],h=r[i*3+2],p=r[n*3],d=r[n*3+1],f=r[n*3+2],m=r[s*3],g=r[s*3+1],y=r[s*3+2];return Math.abs(o-u)<Math.abs(a-c)?[new le(a,1-l),new le(c,1-h),new le(p,1-f),new le(m,1-y)]:[new le(o,1-l),new le(u,1-h),new le(d,1-f),new le(g,1-y)]}};function B0t(t,r,e){if(e.shapes=[],Array.isArray(t))for(let i=0,n=t.length;i<n;i++){let s=t[i];e.shapes.push(s.uuid)}else e.shapes.push(t.uuid);return e.options=Object.assign({},r),r.extrudePath!==void 0&&(e.options.extrudePath=r.extrudePath.toJSON()),e}var Rg=class extends Dc{constructor(r=1,e=0){let i=(1+Math.sqrt(5))/2,n=[-1,i,0,1,i,0,-1,-i,0,1,-i,0,0,-1,i,0,1,i,0,-1,-i,0,1,-i,i,0,-1,i,0,1,-i,0,-1,-i,0,1],s=[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1];super(n,s,r,e),this.type="IcosahedronGeometry",this.parameters={radius:r,detail:e}}static fromJSON(r){return new Rg(r.radius,r.detail)}},uf=class extends Dc{constructor(r=1,e=0){let i=[1,0,0,-1,0,0,0,1,0,0,-1,0,0,0,1,0,0,-1],n=[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(i,n,r,e),this.type="OctahedronGeometry",this.parameters={radius:r,detail:e}}static fromJSON(r){return new uf(r.radius,r.detail)}},Mg=class extends it{constructor(r=.5,e=1,i=32,n=1,s=0,a=Math.PI*2){super(),this.type="RingGeometry",this.parameters={innerRadius:r,outerRadius:e,thetaSegments:i,phiSegments:n,thetaStart:s,thetaLength:a},i=Math.max(3,i),n=Math.max(1,n);let o=[],l=[],c=[],u=[],h=r,p=(e-r)/n,d=new A,f=new le;for(let m=0;m<=n;m++){for(let g=0;g<=i;g++){let y=s+g/i*a;d.x=h*Math.cos(y),d.y=h*Math.sin(y),l.push(d.x,d.y,d.z),c.push(0,0,1),f.x=(d.x/e+1)/2,f.y=(d.y/e+1)/2,u.push(f.x,f.y)}h+=p}for(let m=0;m<n;m++){let g=m*(i+1);for(let y=0;y<i;y++){let E=y+g,b=E,x=E+i+1,S=E+i+2,D=E+1;o.push(b,x,D),o.push(x,S,D)}}this.setIndex(o),this.setAttribute("position",new ct(l,3)),this.setAttribute("normal",new ct(c,3)),this.setAttribute("uv",new ct(u,2))}static fromJSON(r){return new Mg(r.innerRadius,r.outerRadius,r.thetaSegments,r.phiSegments,r.thetaStart,r.thetaLength)}},_p=class extends it{constructor(r=new Ja([new le(0,.5),new le(-.5,-.5),new le(.5,-.5)]),e=12){super(),this.type="ShapeGeometry",this.parameters={shapes:r,curveSegments:e};let i=[],n=[],s=[],a=[],o=0,l=0;if(Array.isArray(r)===!1)c(r);else for(let u=0;u<r.length;u++)c(r[u]),this.addGroup(o,l,u),o+=l,l=0;this.setIndex(i),this.setAttribute("position",new ct(n,3)),this.setAttribute("normal",new ct(s,3)),this.setAttribute("uv",new ct(a,2));function c(u){let h=n.length/3,p=u.extractPoints(e),d=p.shape,f=p.holes;es.isClockWise(d)===!1&&(d=d.reverse());for(let g=0,y=f.length;g<y;g++){let E=f[g];es.isClockWise(E)===!0&&(f[g]=E.reverse())}let m=es.triangulateShape(d,f);for(let g=0,y=f.length;g<y;g++){let E=f[g];d=d.concat(E)}for(let g=0,y=d.length;g<y;g++){let E=d[g];n.push(E.x,E.y,0),s.push(0,0,1),a.push(E.x,E.y)}for(let g=0,y=m.length;g<y;g++){let E=m[g],b=E[0]+h,x=E[1]+h,S=E[2]+h;i.push(b,x,S),l+=3}}}toJSON(){let r=super.toJSON(),e=this.parameters.shapes;return k0t(e,r)}static fromJSON(r,e){let i=[];for(let n=0,s=r.shapes.length;n<s;n++){let a=e[r.shapes[n]];i.push(a)}return new _p(i,r.curveSegments)}};function k0t(t,r){if(r.shapes=[],Array.isArray(t))for(let e=0,i=t.length;e<i;e++){let n=t[e];r.shapes.push(n.uuid)}else r.shapes.push(t.uuid);return r}var ro=class extends it{constructor(r=1,e=32,i=16,n=0,s=Math.PI*2,a=0,o=Math.PI){super(),this.type="SphereGeometry",this.parameters={radius:r,widthSegments:e,heightSegments:i,phiStart:n,phiLength:s,thetaStart:a,thetaLength:o},e=Math.max(3,Math.floor(e)),i=Math.max(2,Math.floor(i));let l=Math.min(a+o,Math.PI),c=0,u=[],h=new A,p=new A,d=[],f=[],m=[],g=[];for(let y=0;y<=i;y++){let E=[],b=y/i,x=0;y==0&&a==0?x=.5/e:y==i&&l==Math.PI&&(x=-.5/e);for(let S=0;S<=e;S++){let D=S/e;h.x=-r*Math.cos(n+D*s)*Math.sin(a+b*o),h.y=r*Math.cos(a+b*o),h.z=r*Math.sin(n+D*s)*Math.sin(a+b*o),f.push(h.x,h.y,h.z),p.copy(h).normalize(),m.push(p.x,p.y,p.z),g.push(D+x,1-b),E.push(c++)}u.push(E)}for(let y=0;y<i;y++)for(let E=0;E<e;E++){let b=u[y][E+1],x=u[y][E],S=u[y+1][E],D=u[y+1][E+1];(y!==0||a>0)&&d.push(b,x,D),(y!==i-1||l<Math.PI)&&d.push(x,S,D)}this.setIndex(d),this.setAttribute("position",new ct(f,3)),this.setAttribute("normal",new ct(m,3)),this.setAttribute("uv",new ct(g,2))}static fromJSON(r){return new ro(r.radius,r.widthSegments,r.heightSegments,r.phiStart,r.phiLength,r.thetaStart,r.thetaLength)}},Dg=class extends Dc{constructor(r=1,e=0){let i=[1,1,1,-1,-1,1,-1,1,-1,1,-1,-1],n=[2,1,0,0,3,2,1,3,0,2,3,1];super(i,n,r,e),this.type="TetrahedronGeometry",this.parameters={radius:r,detail:e}}static fromJSON(r){return new Dg(r.radius,r.detail)}},wp=class extends it{constructor(r=1,e=.4,i=12,n=48,s=Math.PI*2){super(),this.type="TorusGeometry",this.parameters={radius:r,tube:e,radialSegments:i,tubularSegments:n,arc:s},i=Math.floor(i),n=Math.floor(n);let a=[],o=[],l=[],c=[],u=new A,h=new A,p=new A;for(let d=0;d<=i;d++)for(let f=0;f<=n;f++){let m=f/n*s,g=d/i*Math.PI*2;h.x=(r+e*Math.cos(g))*Math.cos(m),h.y=(r+e*Math.cos(g))*Math.sin(m),h.z=e*Math.sin(g),o.push(h.x,h.y,h.z),u.x=r*Math.cos(m),u.y=r*Math.sin(m),p.subVectors(h,u).normalize(),l.push(p.x,p.y,p.z),c.push(f/n),c.push(d/i)}for(let d=1;d<=i;d++)for(let f=1;f<=n;f++){let m=(n+1)*d+f-1,g=(n+1)*(d-1)+f-1,y=(n+1)*(d-1)+f,E=(n+1)*d+f;a.push(m,g,E),a.push(g,y,E)}this.setIndex(a),this.setAttribute("position",new ct(o,3)),this.setAttribute("normal",new ct(l,3)),this.setAttribute("uv",new ct(c,2))}static fromJSON(r){return new wp(r.radius,r.tube,r.radialSegments,r.tubularSegments,r.arc)}},Cg=class extends it{constructor(r=1,e=.4,i=64,n=8,s=2,a=3){super(),this.type="TorusKnotGeometry",this.parameters={radius:r,tube:e,tubularSegments:i,radialSegments:n,p:s,q:a},i=Math.floor(i),n=Math.floor(n);let o=[],l=[],c=[],u=[],h=new A,p=new A,d=new A,f=new A,m=new A,g=new A,y=new A;for(let b=0;b<=i;++b){let x=b/i*s*Math.PI*2;E(x,s,a,r,d),E(x+.01,s,a,r,f),g.subVectors(f,d),y.addVectors(f,d),m.crossVectors(g,y),y.crossVectors(m,g),m.normalize(),y.normalize();for(let S=0;S<=n;++S){let D=S/n*Math.PI*2,P=-e*Math.cos(D),_=e*Math.sin(D);h.x=d.x+(P*y.x+_*m.x),h.y=d.y+(P*y.y+_*m.y),h.z=d.z+(P*y.z+_*m.z),l.push(h.x,h.y,h.z),p.subVectors(h,d).normalize(),c.push(p.x,p.y,p.z),u.push(b/i),u.push(S/n)}}for(let b=1;b<=i;b++)for(let x=1;x<=n;x++){let S=(n+1)*(b-1)+(x-1),D=(n+1)*b+(x-1),P=(n+1)*b+x,_=(n+1)*(b-1)+x;o.push(S,D,_),o.push(D,P,_)}this.setIndex(o),this.setAttribute("position",new ct(l,3)),this.setAttribute("normal",new ct(c,3)),this.setAttribute("uv",new ct(u,2));function E(b,x,S,D,P){let _=Math.cos(b),w=Math.sin(b),F=S/x*b,X=Math.cos(F);P.x=D*(2+X)*.5*_,P.y=D*(2+X)*w*.5,P.z=D*Math.sin(F)*.5}}static fromJSON(r){return new Cg(r.radius,r.tube,r.tubularSegments,r.radialSegments,r.p,r.q)}},Ag=class extends it{constructor(r=new lx(new A(-1,-1,0),new A(-1,1,0),new A(1,1,0)),e=64,i=1,n=8,s=!1){super(),this.type="TubeGeometry",this.parameters={path:r,tubularSegments:e,radius:i,radialSegments:n,closed:s};let a=r.computeFrenetFrames(e,s);this.tangents=a.tangents,this.normals=a.normals,this.binormals=a.binormals;let o=new A,l=new A,c=new le,u=new A,h=[],p=[],d=[],f=[];m(),this.setIndex(f),this.setAttribute("position",new ct(h,3)),this.setAttribute("normal",new ct(p,3)),this.setAttribute("uv",new ct(d,2));function m(){for(let b=0;b<e;b++)g(b);g(s===!1?e:0),E(),y()}function g(b){u=r.getPointAt(b/e,u);let x=a.normals[b],S=a.binormals[b];for(let D=0;D<=n;D++){let P=D/n*Math.PI*2,_=Math.sin(P),w=-Math.cos(P);l.x=w*x.x+_*S.x,l.y=w*x.y+_*S.y,l.z=w*x.z+_*S.z,l.normalize(),p.push(l.x,l.y,l.z),o.x=u.x+i*l.x,o.y=u.y+i*l.y,o.z=u.z+i*l.z,h.push(o.x,o.y,o.z)}}function y(){for(let b=1;b<=e;b++)for(let x=1;x<=n;x++){let S=(n+1)*(b-1)+(x-1),D=(n+1)*b+(x-1),P=(n+1)*b+x,_=(n+1)*(b-1)+x;f.push(S,D,_),f.push(D,P,_)}}function E(){for(let b=0;b<=e;b++)for(let x=0;x<=n;x++)c.x=b/e,c.y=x/n,d.push(c.x,c.y)}}toJSON(){let r=super.toJSON();return r.path=this.parameters.path.toJSON(),r}static fromJSON(r){return new Ag(new CU[r.path.type]().fromJSON(r.path),r.tubularSegments,r.radius,r.radialSegments,r.closed)}},AD=class extends it{constructor(r=null){if(super(),this.type="WireframeGeometry",this.parameters={geometry:r},r!==null){let e=[],i=new Set,n=new A,s=new A;if(r.index!==null){let a=r.attributes.position,o=r.index,l=r.groups;l.length===0&&(l=[{start:0,count:o.count,materialIndex:0}]);for(let c=0,u=l.length;c<u;++c){let h=l[c],p=h.start,d=h.count;for(let f=p,m=p+d;f<m;f+=3)for(let g=0;g<3;g++){let y=o.getX(f+g),E=o.getX(f+(g+1)%3);n.fromBufferAttribute(a,y),s.fromBufferAttribute(a,E),Qce(n,s,i)===!0&&(e.push(n.x,n.y,n.z),e.push(s.x,s.y,s.z))}}}else{let a=r.attributes.position;for(let o=0,l=a.count/3;o<l;o++)for(let c=0;c<3;c++){let u=3*o+c,h=3*o+(c+1)%3;n.fromBufferAttribute(a,u),s.fromBufferAttribute(a,h),Qce(n,s,i)===!0&&(e.push(n.x,n.y,n.z),e.push(s.x,s.y,s.z))}}this.setAttribute("position",new ct(e,3))}}};function Qce(t,r,e){let i=`${t.x},${t.y},${t.z}-${r.x},${r.y},${r.z}`,n=`${r.x},${r.y},${r.z}-${t.x},${t.y},${t.z}`;return e.has(i)===!0||e.has(n)===!0?!1:(e.add(i),e.add(n),!0)}var eue=Object.freeze({__proto__:null,BoxGeometry:Qa,CapsuleGeometry:xg,CircleGeometry:Ig,ConeGeometry:Sg,CylinderGeometry:Dl,DodecahedronGeometry:_g,EdgesGeometry:Ip,ExtrudeGeometry:Sp,IcosahedronGeometry:Rg,LatheGeometry:cf,OctahedronGeometry:uf,PlaneGeometry:ts,PolyhedronGeometry:Dc,RingGeometry:Mg,ShapeGeometry:_p,SphereGeometry:ro,TetrahedronGeometry:Dg,TorusGeometry:wp,TorusKnotGeometry:Cg,TubeGeometry:Ag,WireframeGeometry:AD}),OD=class extends Gr{constructor(r){super(),this.isShadowMaterial=!0,this.type="ShadowMaterial",this.color=new Ve(0),this.transparent=!0,this.fog=!0,this.setValues(r)}copy(r){return super.copy(r),this.color.copy(r.color),this.fog=r.fog,this}},PD=class extends Yt{constructor(r){super(r),this.isRawShaderMaterial=!0,this.type="RawShaderMaterial"}},Gu=class extends Gr{constructor(r){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=mf,this.normalScale=new le(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.roughnessMap=null,this.metalnessMap=null,this.alphaMap=null,this.envMap=null,this.envMapIntensity=1,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(r)}copy(r){return super.copy(r),this.defines={STANDARD:""},this.color.copy(r.color),this.roughness=r.roughness,this.metalness=r.metalness,this.map=r.map,this.lightMap=r.lightMap,this.lightMapIntensity=r.lightMapIntensity,this.aoMap=r.aoMap,this.aoMapIntensity=r.aoMapIntensity,this.emissive.copy(r.emissive),this.emissiveMap=r.emissiveMap,this.emissiveIntensity=r.emissiveIntensity,this.bumpMap=r.bumpMap,this.bumpScale=r.bumpScale,this.normalMap=r.normalMap,this.normalMapType=r.normalMapType,this.normalScale.copy(r.normalScale),this.displacementMap=r.displacementMap,this.displacementScale=r.displacementScale,this.displacementBias=r.displacementBias,this.roughnessMap=r.roughnessMap,this.metalnessMap=r.metalnessMap,this.alphaMap=r.alphaMap,this.envMap=r.envMap,this.envMapIntensity=r.envMapIntensity,this.wireframe=r.wireframe,this.wireframeLinewidth=r.wireframeLinewidth,this.wireframeLinecap=r.wireframeLinecap,this.wireframeLinejoin=r.wireframeLinejoin,this.flatShading=r.flatShading,this.fog=r.fog,this}},Cl=class extends Gu{constructor(r){super(),this.isMeshPhysicalMaterial=!0,this.defines={STANDARD:"",PHYSICAL:""},this.type="MeshPhysicalMaterial",this.clearcoatMap=null,this.clearcoatRoughness=0,this.clearcoatRoughnessMap=null,this.clearcoatNormalScale=new le(1,1),this.clearcoatNormalMap=null,this.ior=1.5,Object.defineProperty(this,"reflectivity",{get:function(){return Qn(2.5*(this.ior-1)/(this.ior+1),0,1)},set:function(e){this.ior=(1+.4*e)/(1-.4*e)}}),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._sheen=0,this._clearcoat=0,this._iridescence=0,this._transmission=0,this.setValues(r)}get sheen(){return this._sheen}set sheen(r){this._sheen>0!=r>0&&this.version++,this._sheen=r}get clearcoat(){return this._clearcoat}set clearcoat(r){this._clearcoat>0!=r>0&&this.version++,this._clearcoat=r}get iridescence(){return this._iridescence}set iridescence(r){this._iridescence>0!=r>0&&this.version++,this._iridescence=r}get transmission(){return this._transmission}set transmission(r){this._transmission>0!=r>0&&this.version++,this._transmission=r}copy(r){return super.copy(r),this.defines={STANDARD:"",PHYSICAL:""},this.clearcoat=r.clearcoat,this.clearcoatMap=r.clearcoatMap,this.clearcoatRoughness=r.clearcoatRoughness,this.clearcoatRoughnessMap=r.clearcoatRoughnessMap,this.clearcoatNormalMap=r.clearcoatNormalMap,this.clearcoatNormalScale.copy(r.clearcoatNormalScale),this.ior=r.ior,this.iridescence=r.iridescence,this.iridescenceMap=r.iridescenceMap,this.iridescenceIOR=r.iridescenceIOR,this.iridescenceThicknessRange=[...r.iridescenceThicknessRange],this.iridescenceThicknessMap=r.iridescenceThicknessMap,this.sheen=r.sheen,this.sheenColor.copy(r.sheenColor),this.sheenColorMap=r.sheenColorMap,this.sheenRoughness=r.sheenRoughness,this.sheenRoughnessMap=r.sheenRoughnessMap,this.transmission=r.transmission,this.transmissionMap=r.transmissionMap,this.thickness=r.thickness,this.thicknessMap=r.thicknessMap,this.attenuationDistance=r.attenuationDistance,this.attenuationColor.copy(r.attenuationColor),this.specularIntensity=r.specularIntensity,this.specularIntensityMap=r.specularIntensityMap,this.specularColor.copy(r.specularColor),this.specularColorMap=r.specularColorMap,this}},Ts=class extends Gr{constructor(r){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=mf,this.normalScale=new le(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=Sx,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(r)}copy(r){return super.copy(r),this.color.copy(r.color),this.specular.copy(r.specular),this.shininess=r.shininess,this.map=r.map,this.lightMap=r.lightMap,this.lightMapIntensity=r.lightMapIntensity,this.aoMap=r.aoMap,this.aoMapIntensity=r.aoMapIntensity,this.emissive.copy(r.emissive),this.emissiveMap=r.emissiveMap,this.emissiveIntensity=r.emissiveIntensity,this.bumpMap=r.bumpMap,this.bumpScale=r.bumpScale,this.normalMap=r.normalMap,this.normalMapType=r.normalMapType,this.normalScale.copy(r.normalScale),this.displacementMap=r.displacementMap,this.displacementScale=r.displacementScale,this.displacementBias=r.displacementBias,this.specularMap=r.specularMap,this.alphaMap=r.alphaMap,this.envMap=r.envMap,this.combine=r.combine,this.reflectivity=r.reflectivity,this.refractionRatio=r.refractionRatio,this.wireframe=r.wireframe,this.wireframeLinewidth=r.wireframeLinewidth,this.wireframeLinecap=r.wireframeLinecap,this.wireframeLinejoin=r.wireframeLinejoin,this.flatShading=r.flatShading,this.fog=r.fog,this}},ND=class extends Gr{constructor(r){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=mf,this.normalScale=new le(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(r)}copy(r){return super.copy(r),this.color.copy(r.color),this.map=r.map,this.gradientMap=r.gradientMap,this.lightMap=r.lightMap,this.lightMapIntensity=r.lightMapIntensity,this.aoMap=r.aoMap,this.aoMapIntensity=r.aoMapIntensity,this.emissive.copy(r.emissive),this.emissiveMap=r.emissiveMap,this.emissiveIntensity=r.emissiveIntensity,this.bumpMap=r.bumpMap,this.bumpScale=r.bumpScale,this.normalMap=r.normalMap,this.normalMapType=r.normalMapType,this.normalScale.copy(r.normalScale),this.displacementMap=r.displacementMap,this.displacementScale=r.displacementScale,this.displacementBias=r.displacementBias,this.alphaMap=r.alphaMap,this.wireframe=r.wireframe,this.wireframeLinewidth=r.wireframeLinewidth,this.wireframeLinecap=r.wireframeLinecap,this.wireframeLinejoin=r.wireframeLinejoin,this.fog=r.fog,this}},hf=class extends Gr{constructor(r){super(),this.isMeshNormalMaterial=!0,this.type="MeshNormalMaterial",this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=mf,this.normalScale=new le(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.flatShading=!1,this.setValues(r)}copy(r){return super.copy(r),this.bumpMap=r.bumpMap,this.bumpScale=r.bumpScale,this.normalMap=r.normalMap,this.normalMapType=r.normalMapType,this.normalScale.copy(r.normalScale),this.displacementMap=r.displacementMap,this.displacementScale=r.displacementScale,this.displacementBias=r.displacementBias,this.wireframe=r.wireframe,this.wireframeLinewidth=r.wireframeLinewidth,this.flatShading=r.flatShading,this}},io=class extends Gr{constructor(r){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=mf,this.normalScale=new le(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=Sx,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(r)}copy(r){return super.copy(r),this.color.copy(r.color),this.map=r.map,this.lightMap=r.lightMap,this.lightMapIntensity=r.lightMapIntensity,this.aoMap=r.aoMap,this.aoMapIntensity=r.aoMapIntensity,this.emissive.copy(r.emissive),this.emissiveMap=r.emissiveMap,this.emissiveIntensity=r.emissiveIntensity,this.bumpMap=r.bumpMap,this.bumpScale=r.bumpScale,this.normalMap=r.normalMap,this.normalMapType=r.normalMapType,this.normalScale.copy(r.normalScale),this.displacementMap=r.displacementMap,this.displacementScale=r.displacementScale,this.displacementBias=r.displacementBias,this.specularMap=r.specularMap,this.alphaMap=r.alphaMap,this.envMap=r.envMap,this.combine=r.combine,this.reflectivity=r.reflectivity,this.refractionRatio=r.refractionRatio,this.wireframe=r.wireframe,this.wireframeLinewidth=r.wireframeLinewidth,this.wireframeLinecap=r.wireframeLinecap,this.wireframeLinejoin=r.wireframeLinejoin,this.flatShading=r.flatShading,this.fog=r.fog,this}},LD=class extends Gr{constructor(r){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=mf,this.normalScale=new le(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.flatShading=!1,this.fog=!0,this.setValues(r)}copy(r){return super.copy(r),this.defines={MATCAP:""},this.color.copy(r.color),this.matcap=r.matcap,this.map=r.map,this.bumpMap=r.bumpMap,this.bumpScale=r.bumpScale,this.normalMap=r.normalMap,this.normalMapType=r.normalMapType,this.normalScale.copy(r.normalScale),this.displacementMap=r.displacementMap,this.displacementScale=r.displacementScale,this.displacementBias=r.displacementBias,this.alphaMap=r.alphaMap,this.flatShading=r.flatShading,this.fog=r.fog,this}},Rp=class extends Tr{constructor(r){super(),this.isLineDashedMaterial=!0,this.type="LineDashedMaterial",this.scale=1,this.dashSize=3,this.gapSize=1,this.setValues(r)}copy(r){return super.copy(r),this.scale=r.scale,this.dashSize=r.dashSize,this.gapSize=r.gapSize,this}};function Sl(t,r,e){return AU(t)?new t.constructor(t.subarray(r,e!==void 0?e:t.length)):t.slice(r,e)}function hg(t,r,e){return!t||!e&&t.constructor===r?t:typeof r.BYTES_PER_ELEMENT=="number"?new r(t):Array.prototype.slice.call(t)}function AU(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}function xhe(t){function r(n,s){return t[n]-t[s]}let e=t.length,i=new Array(e);for(let n=0;n!==e;++n)i[n]=n;return i.sort(r),i}function w4(t,r,e){let i=t.length,n=new t.constructor(i);for(let s=0,a=0;a!==i;++s){let o=e[s]*r;for(let l=0;l!==r;++l)n[a++]=t[o+l]}return n}function OU(t,r,e,i){let n=1,s=t[0];for(;s!==void 0&&s[i]===void 0;)s=t[n++];if(s===void 0)return;let a=s[i];if(a!==void 0)if(Array.isArray(a))do a=s[i],a!==void 0&&(r.push(s.time),e.push.apply(e,a)),s=t[n++];while(s!==void 0);else if(a.toArray!==void 0)do a=s[i],a!==void 0&&(r.push(s.time),a.toArray(e,e.length)),s=t[n++];while(s!==void 0);else do a=s[i],a!==void 0&&(r.push(s.time),e.push(a)),s=t[n++];while(s!==void 0)}function G0t(t,r,e,i,n=30){let s=t.clone();s.name=r;let a=[];for(let l=0;l<s.tracks.length;++l){let c=s.tracks[l],u=c.getValueSize(),h=[],p=[];for(let d=0;d<c.times.length;++d){let f=c.times[d]*n;if(!(f<e||f>=i)){h.push(c.times[d]);for(let m=0;m<u;++m)p.push(c.values[d*u+m])}}h.length!==0&&(c.times=hg(h,c.times.constructor),c.values=hg(p,c.values.constructor),a.push(c))}s.tracks=a;let o=1/0;for(let l=0;l<s.tracks.length;++l)o>s.tracks[l].times[0]&&(o=s.tracks[l].times[0]);for(let l=0;l<s.tracks.length;++l)s.tracks[l].shift(-1*o);return s.resetDuration(),s}function V0t(t,r=0,e=t,i=30){i<=0&&(i=30);let n=e.tracks.length,s=r/i;for(let a=0;a<n;++a){let o=e.tracks[a],l=o.ValueTypeName;if(l==="bool"||l==="string")continue;let c=t.tracks.find(function(y){return y.name===o.name&&y.ValueTypeName===l});if(c===void 0)continue;let u=0,h=o.getValueSize();o.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline&&(u=h/3);let p=0,d=c.getValueSize();c.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline&&(p=d/3);let f=o.times.length-1,m;if(s<=o.times[0]){let y=u,E=h-u;m=Sl(o.values,y,E)}else if(s>=o.times[f]){let y=f*h+u,E=y+h-u;m=Sl(o.values,y,E)}else{let y=o.createInterpolant(),E=u,b=h-u;y.evaluate(s),m=Sl(y.resultBuffer,E,b)}l==="quaternion"&&new Or().fromArray(m).normalize().conjugate().toArray(m);let g=c.times.length;for(let y=0;y<g;++y){let E=y*d+p;if(l==="quaternion")Or.multiplyQuaternionsFlat(c.values,E,m,0,c.values,E);else{let b=d-p*2;for(let x=0;x<b;++x)c.values[E+x]-=m[x]}}}return t.blendMode=_U,t}var z0t=Object.freeze({__proto__:null,arraySlice:Sl,convertArray:hg,flattenJSON:OU,getKeyframeOrder:xhe,isTypedArray:AU,makeClipAdditive:V0t,sortedArray:w4,subclip:G0t}),Mp=class{constructor(r,e,i,n){this.parameterPositions=r,this._cachedIndex=0,this.resultBuffer=n!==void 0?n:new e.constructor(i),this.sampleValues=e,this.valueSize=i,this.settings=null,this.DefaultSettings_={}}evaluate(r){let e=this.parameterPositions,i=this._cachedIndex,n=e[i],s=e[i-1];e:{t:{let a;r:{i:if(!(r<n)){for(let o=i+2;;){if(n===void 0){if(r<s)break i;return i=e.length,this._cachedIndex=i,this.copySampleValue_(i-1)}if(i===o)break;if(s=n,n=e[++i],r<n)break t}a=e.length;break r}if(!(r>=s)){let o=e[1];r<o&&(i=2,s=o);for(let l=i-2;;){if(s===void 0)return this._cachedIndex=0,this.copySampleValue_(0);if(i===l)break;if(n=s,s=e[--i-1],r>=s)break t}a=i,i=0;break r}break e}for(;i<a;){let o=i+a>>>1;r<e[o]?a=o:i=o+1}if(n=e[i],s=e[i-1],s===void 0)return this._cachedIndex=0,this.copySampleValue_(0);if(n===void 0)return i=e.length,this._cachedIndex=i,this.copySampleValue_(i-1)}this._cachedIndex=i,this.intervalChanged_(i,s,n)}return this.interpolate_(i,s,r,n)}getSettings_(){return this.settings||this.DefaultSettings_}copySampleValue_(r){let e=this.resultBuffer,i=this.sampleValues,n=this.valueSize,s=r*n;for(let a=0;a!==n;++a)e[a]=i[s+a];return e}interpolate_(){throw new Error("call to abstract method")}intervalChanged_(){}},FD=class extends Mp{constructor(r,e,i,n){super(r,e,i,n),this._weightPrev=-0,this._offsetPrev=-0,this._weightNext=-0,this._offsetNext=-0,this.DefaultSettings_={endingStart:cg,endingEnd:cg}}intervalChanged_(r,e,i){let n=this.parameterPositions,s=r-2,a=r+1,o=n[s],l=n[a];if(o===void 0)switch(this.getSettings_().endingStart){case ug:s=r,o=2*e-i;break;case Kb:s=n.length-2,o=e+n[s]-n[s+1];break;default:s=r,o=i}if(l===void 0)switch(this.getSettings_().endingEnd){case ug:a=r,l=2*i-e;break;case Kb:a=1,l=i+n[1]-n[0];break;default:a=r-1,l=e}let c=(i-e)*.5,u=this.valueSize;this._weightPrev=c/(e-o),this._weightNext=c/(l-i),this._offsetPrev=s*u,this._offsetNext=a*u}interpolate_(r,e,i,n){let s=this.resultBuffer,a=this.sampleValues,o=this.valueSize,l=r*o,c=l-o,u=this._offsetPrev,h=this._offsetNext,p=this._weightPrev,d=this._weightNext,f=(i-e)/(n-e),m=f*f,g=m*f,y=-p*g+2*p*m-p*f,E=(1+p)*g+(-1.5-2*p)*m+(-.5+p)*f+1,b=(-1-d)*g+(1.5+d)*m+.5*f,x=d*g-d*m;for(let S=0;S!==o;++S)s[S]=y*a[u+S]+E*a[c+S]+b*a[l+S]+x*a[h+S];return s}},px=class extends Mp{constructor(r,e,i,n){super(r,e,i,n)}interpolate_(r,e,i,n){let s=this.resultBuffer,a=this.sampleValues,o=this.valueSize,l=r*o,c=l-o,u=(i-e)/(n-e),h=1-u;for(let p=0;p!==o;++p)s[p]=a[c+p]*h+a[l+p]*u;return s}},HD=class extends Mp{constructor(r,e,i,n){super(r,e,i,n)}interpolate_(r){return this.copySampleValue_(r-1)}},zo=class{constructor(r,e,i,n){if(r===void 0)throw new Error("THREE.KeyframeTrack: track name is undefined");if(e===void 0||e.length===0)throw new Error("THREE.KeyframeTrack: no keyframes in track named "+r);this.name=r,this.times=hg(e,this.TimeBufferType),this.values=hg(i,this.ValueBufferType),this.setInterpolation(n||this.DefaultInterpolation)}static toJSON(r){let e=r.constructor,i;if(e.toJSON!==this.toJSON)i=e.toJSON(r);else{i={name:r.name,times:hg(r.times,Array),values:hg(r.values,Array)};let n=r.getInterpolation();n!==r.DefaultInterpolation&&(i.interpolation=n)}return i.type=r.ValueTypeName,i}InterpolantFactoryMethodDiscrete(r){return new HD(this.times,this.values,this.getValueSize(),r)}InterpolantFactoryMethodLinear(r){return new px(this.times,this.values,this.getValueSize(),r)}InterpolantFactoryMethodSmooth(r){return new FD(this.times,this.values,this.getValueSize(),r)}setInterpolation(r){let e;switch(r){case vp:e=this.InterpolantFactoryMethodDiscrete;break;case Hu:e=this.InterpolantFactoryMethodLinear;break;case mD:e=this.InterpolantFactoryMethodSmooth;break}if(e===void 0){let i="unsupported interpolation for "+this.ValueTypeName+" keyframe track named "+this.name;if(this.createInterpolant===void 0)if(r!==this.DefaultInterpolation)this.setInterpolation(this.DefaultInterpolation);else throw new Error(i);return console.warn("THREE.KeyframeTrack:",i),this}return this.createInterpolant=e,this}getInterpolation(){switch(this.createInterpolant){case this.InterpolantFactoryMethodDiscrete:return vp;case this.InterpolantFactoryMethodLinear:return Hu;case this.InterpolantFactoryMethodSmooth:return mD}}getValueSize(){return this.values.length/this.times.length}shift(r){if(r!==0){let e=this.times;for(let i=0,n=e.length;i!==n;++i)e[i]+=r}return this}scale(r){if(r!==1){let e=this.times;for(let i=0,n=e.length;i!==n;++i)e[i]*=r}return this}trim(r,e){let i=this.times,n=i.length,s=0,a=n-1;for(;s!==n&&i[s]<r;)++s;for(;a!==-1&&i[a]>e;)--a;if(++a,s!==0||a!==n){s>=a&&(a=Math.max(a,1),s=a-1);let o=this.getValueSize();this.times=Sl(i,s,a),this.values=Sl(this.values,s*o,a*o)}return this}validate(){let r=!0,e=this.getValueSize();e-Math.floor(e)!==0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),r=!1);let i=this.times,n=this.values,s=i.length;s===0&&(console.error("THREE.KeyframeTrack: Track is empty.",this),r=!1);let a=null;for(let o=0;o!==s;o++){let l=i[o];if(typeof l=="number"&&isNaN(l)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,o,l),r=!1;break}if(a!==null&&a>l){console.error("THREE.KeyframeTrack: Out of order keys.",this,o,l,a),r=!1;break}a=l}if(n!==void 0&&AU(n))for(let o=0,l=n.length;o!==l;++o){let c=n[o];if(isNaN(c)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,o,c),r=!1;break}}return r}optimize(){let r=Sl(this.times),e=Sl(this.values),i=this.getValueSize(),n=this.getInterpolation()===mD,s=r.length-1,a=1;for(let o=1;o<s;++o){let l=!1,c=r[o],u=r[o+1];if(c!==u&&(o!==1||c!==r[0]))if(n)l=!0;else{let h=o*i,p=h-i,d=h+i;for(let f=0;f!==i;++f){let m=e[h+f];if(m!==e[p+f]||m!==e[d+f]){l=!0;break}}}if(l){if(o!==a){r[a]=r[o];let h=o*i,p=a*i;for(let d=0;d!==i;++d)e[p+d]=e[h+d]}++a}}if(s>0){r[a]=r[s];for(let o=s*i,l=a*i,c=0;c!==i;++c)e[l+c]=e[o+c];++a}return a!==r.length?(this.times=Sl(r,0,a),this.values=Sl(e,0,a*i)):(this.times=r,this.values=e),this}clone(){let r=Sl(this.times,0),e=Sl(this.values,0),i=this.constructor,n=new i(this.name,r,e);return n.createInterpolant=this.createInterpolant,n}};zo.prototype.TimeBufferType=Float32Array;zo.prototype.ValueBufferType=Float32Array;zo.prototype.DefaultInterpolation=Hu;var Dp=class extends zo{};Dp.prototype.ValueTypeName="bool";Dp.prototype.ValueBufferType=Array;Dp.prototype.DefaultInterpolation=vp;Dp.prototype.InterpolantFactoryMethodLinear=void 0;Dp.prototype.InterpolantFactoryMethodSmooth=void 0;var dx=class extends zo{};dx.prototype.ValueTypeName="color";var Cc=class extends zo{};Cc.prototype.ValueTypeName="number";var UD=class extends Mp{constructor(r,e,i,n){super(r,e,i,n)}interpolate_(r,e,i,n){let s=this.resultBuffer,a=this.sampleValues,o=this.valueSize,l=(i-e)/(n-e),c=r*o;for(let u=c+o;c!==u;c+=4)Or.slerpFlat(s,0,a,c-o,a,c,l);return s}},Da=class extends zo{InterpolantFactoryMethodLinear(r){return new UD(this.times,this.values,this.getValueSize(),r)}};Da.prototype.ValueTypeName="quaternion";Da.prototype.DefaultInterpolation=Hu;Da.prototype.InterpolantFactoryMethodSmooth=void 0;var Cp=class extends zo{};Cp.prototype.ValueTypeName="string";Cp.prototype.ValueBufferType=Array;Cp.prototype.DefaultInterpolation=vp;Cp.prototype.InterpolantFactoryMethodLinear=void 0;Cp.prototype.InterpolantFactoryMethodSmooth=void 0;var no=class extends zo{};no.prototype.ValueTypeName="vector";var so=class{constructor(r,e=-1,i,n=$D){this.name=r,this.tracks=i,this.duration=e,this.blendMode=n,this.uuid=ko(),this.duration<0&&this.resetDuration()}static parse(r){let e=[],i=r.tracks,n=1/(r.fps||1);for(let a=0,o=i.length;a!==o;++a)e.push(W0t(i[a]).scale(n));let s=new this(r.name,r.duration,e,r.blendMode);return s.uuid=r.uuid,s}static toJSON(r){let e=[],i=r.tracks,n={name:r.name,duration:r.duration,tracks:e,uuid:r.uuid,blendMode:r.blendMode};for(let s=0,a=i.length;s!==a;++s)e.push(zo.toJSON(i[s]));return n}static CreateFromMorphTargetSequence(r,e,i,n){let s=e.length,a=[];for(let o=0;o<s;o++){let l=[],c=[];l.push((o+s-1)%s,o,(o+1)%s),c.push(0,1,0);let u=xhe(l);l=w4(l,1,u),c=w4(c,1,u),!n&&l[0]===0&&(l.push(s),c.push(c[0])),a.push(new Cc(".morphTargetInfluences["+e[o].name+"]",l,c).scale(1/i))}return new this(r,-1,a)}static findByName(r,e){let i=r;if(!Array.isArray(r)){let n=r;i=n.geometry&&n.geometry.animations||n.animations}for(let n=0;n<i.length;n++)if(i[n].name===e)return i[n];return null}static CreateClipsFromMorphTargetSequences(r,e,i){let n={},s=/^([\w-]*?)([\d]+)$/;for(let o=0,l=r.length;o<l;o++){let c=r[o],u=c.name.match(s);if(u&&u.length>1){let h=u[1],p=n[h];p||(n[h]=p=[]),p.push(c)}}let a=[];for(let o in n)a.push(this.CreateFromMorphTargetSequence(o,n[o],e,i));return a}static parseAnimation(r,e){if(!r)return console.error("THREE.AnimationClip: No animation in JSONLoader data."),null;let i=function(h,p,d,f,m){if(d.length!==0){let g=[],y=[];OU(d,g,y,f),g.length!==0&&m.push(new h(p,g,y))}},n=[],s=r.name||"default",a=r.fps||30,o=r.blendMode,l=r.length||-1,c=r.hierarchy||[];for(let h=0;h<c.length;h++){let p=c[h].keys;if(!(!p||p.length===0))if(p[0].morphTargets){let d={},f;for(f=0;f<p.length;f++)if(p[f].morphTargets)for(let m=0;m<p[f].morphTargets.length;m++)d[p[f].morphTargets[m]]=-1;for(let m in d){let g=[],y=[];for(let E=0;E!==p[f].morphTargets.length;++E){let b=p[f];g.push(b.time),y.push(b.morphTarget===m?1:0)}n.push(new Cc(".morphTargetInfluence["+m+"]",g,y))}l=d.length*a}else{let d=".bones["+e[h].name+"]";i(no,d+".position",p,"pos",n),i(Da,d+".quaternion",p,"rot",n),i(no,d+".scale",p,"scl",n)}}return n.length===0?null:new this(s,l,n,o)}resetDuration(){let r=this.tracks,e=0;for(let i=0,n=r.length;i!==n;++i){let s=this.tracks[i];e=Math.max(e,s.times[s.times.length-1])}return this.duration=e,this}trim(){for(let r=0;r<this.tracks.length;r++)this.tracks[r].trim(0,this.duration);return this}validate(){let r=!0;for(let e=0;e<this.tracks.length;e++)r=r&&this.tracks[e].validate();return r}optimize(){for(let r=0;r<this.tracks.length;r++)this.tracks[r].optimize();return this}clone(){let r=[];for(let e=0;e<this.tracks.length;e++)r.push(this.tracks[e].clone());return new this.constructor(this.name,this.duration,r,this.blendMode)}toJSON(){return this.constructor.toJSON(this)}};function j0t(t){switch(t.toLowerCase()){case"scalar":case"double":case"float":case"number":case"integer":return Cc;case"vector":case"vector2":case"vector3":case"vector4":return no;case"color":return dx;case"quaternion":return Da;case"bool":case"boolean":return Dp;case"string":return Cp}throw new Error("THREE.KeyframeTrack: Unsupported typeName: "+t)}function W0t(t){if(t.type===void 0)throw new Error("THREE.KeyframeTrack: track type undefined, can not parse");let r=j0t(t.type);if(t.times===void 0){let e=[],i=[];OU(t.keys,e,i,"value"),t.times=e,t.values=i}return r.parse!==void 0?r.parse(t):new r(t.name,t.times,t.values,t.interpolation)}var Og={enabled:!1,files:{},add:function(t,r){this.enabled!==!1&&(this.files[t]=r)},get:function(t){if(this.enabled!==!1)return this.files[t]},remove:function(t){delete this.files[t]},clear:function(){this.files={}}},Ap=class{constructor(r,e,i){let n=this,s=!1,a=0,o=0,l,c=[];this.onStart=void 0,this.onLoad=r,this.onProgress=e,this.onError=i,this.itemStart=function(u){o++,s===!1&&n.onStart!==void 0&&n.onStart(u,a,o),s=!0},this.itemEnd=function(u){a++,n.onProgress!==void 0&&n.onProgress(u,a,o),a===o&&(s=!1,n.onLoad!==void 0&&n.onLoad())},this.itemError=function(u){n.onError!==void 0&&n.onError(u)},this.resolveURL=function(u){return l?l(u):u},this.setURLModifier=function(u){return l=u,this},this.addHandler=function(u,h){return c.push(u,h),this},this.removeHandler=function(u){let h=c.indexOf(u);return h!==-1&&c.splice(h,2),this},this.getHandler=function(u){for(let h=0,p=c.length;h<p;h+=2){let d=c[h],f=c[h+1];if(d.global&&(d.lastIndex=0),d.test(u))return f}return null}}},oo=new Ap,li=class{constructor(r){this.manager=r!==void 0?r:oo,this.crossOrigin="anonymous",this.withCredentials=!1,this.path="",this.resourcePath="",this.requestHeader={}}load(){}loadAsync(r,e){let i=this;return new Promise(function(n,s){i.load(r,n,e,s)})}parse(){}setCrossOrigin(r){return this.crossOrigin=r,this}setWithCredentials(r){return this.withCredentials=r,this}setPath(r){return this.path=r,this}setResourcePath(r){return this.resourcePath=r,this}setRequestHeader(r){return this.requestHeader=r,this}},cp={},R4=class extends Error{constructor(r,e){super(r),this.response=e}},ci=class extends li{constructor(r){super(r)}load(r,e,i,n){r===void 0&&(r=""),this.path!==void 0&&(r=this.path+r),r=this.manager.resolveURL(r);let s=Og.get(r);if(s!==void 0)return this.manager.itemStart(r),setTimeout(()=>{e&&e(s),this.manager.itemEnd(r)},0),s;if(cp[r]!==void 0){cp[r].push({onLoad:e,onProgress:i,onError:n});return}cp[r]=[],cp[r].push({onLoad:e,onProgress:i,onError:n});let a=new Request(r,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?"include":"same-origin"}),o=this.mimeType,l=this.responseType;fetch(a).then(c=>{if(c.status===200||c.status===0){if(c.status===0&&console.warn("THREE.FileLoader: HTTP Status 0 received."),typeof ReadableStream=="undefined"||c.body===void 0||c.body.getReader===void 0)return c;let u=cp[r],h=c.body.getReader(),p=c.headers.get("Content-Length")||c.headers.get("X-File-Size"),d=p?parseInt(p):0,f=d!==0,m=0,g=new ReadableStream({start(y){E();function E(){h.read().then(({done:b,value:x})=>{if(b)y.close();else{m+=x.byteLength;let S=new ProgressEvent("progress",{lengthComputable:f,loaded:m,total:d});for(let D=0,P=u.length;D<P;D++){let _=u[D];_.onProgress&&_.onProgress(S)}y.enqueue(x),E()}})}}});return new Response(g)}else throw new R4(`fetch for "${c.url}" responded with ${c.status}: ${c.statusText}`,c)}).then(c=>{switch(l){case"arraybuffer":return c.arrayBuffer();case"blob":return c.blob();case"document":return c.text().then(u=>new DOMParser().parseFromString(u,o));case"json":return c.json();default:if(o===void 0)return c.text();{let h=/charset="?([^;"\s]*)"?/i.exec(o),p=h&&h[1]?h[1].toLowerCase():void 0,d=new TextDecoder(p);return c.arrayBuffer().then(f=>d.decode(f))}}}).then(c=>{Og.add(r,c);let u=cp[r];delete cp[r];for(let h=0,p=u.length;h<p;h++){let d=u[h];d.onLoad&&d.onLoad(c)}}).catch(c=>{let u=cp[r];if(u===void 0)throw this.manager.itemError(r),c;delete cp[r];for(let h=0,p=u.length;h<p;h++){let d=u[h];d.onError&&d.onError(c)}this.manager.itemError(r)}).finally(()=>{this.manager.itemEnd(r)}),this.manager.itemStart(r)}setResponseType(r){return this.responseType=r,this}setMimeType(r){return this.mimeType=r,this}},M4=class extends li{constructor(r){super(r)}load(r,e,i,n){let s=this,a=new ci(this.manager);a.setPath(this.path),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials),a.load(r,function(o){try{e(s.parse(JSON.parse(o)))}catch(l){n?n(l):console.error(l),s.manager.itemError(r)}},i,n)}parse(r){let e=[];for(let i=0;i<r.length;i++){let n=so.parse(r[i]);e.push(n)}return e}},D4=class extends li{constructor(r){super(r)}load(r,e,i,n){let s=this,a=[],o=new sx,l=new ci(this.manager);l.setPath(this.path),l.setResponseType("arraybuffer"),l.setRequestHeader(this.requestHeader),l.setWithCredentials(s.withCredentials);let c=0;function u(h){l.load(r[h],function(p){let d=s.parse(p,!0);a[h]={width:d.width,height:d.height,format:d.format,mipmaps:d.mipmaps},c+=1,c===6&&(d.mipmapCount===1&&(o.minFilter=ai),o.image=a,o.format=d.format,o.needsUpdate=!0,e&&e(o))},i,n)}if(Array.isArray(r))for(let h=0,p=r.length;h<p;++h)u(h);else l.load(r,function(h){let p=s.parse(h,!0);if(p.isCubemap){let d=p.mipmaps.length/p.mipmapCount;for(let f=0;f<d;f++){a[f]={mipmaps:[]};for(let m=0;m<p.mipmapCount;m++)a[f].mipmaps.push(p.mipmaps[f*p.mipmapCount+m]),a[f].format=p.format,a[f].width=p.width,a[f].height=p.height}o.image=a}else o.image.width=p.width,o.image.height=p.height,o.mipmaps=p.mipmaps;p.mipmapCount===1&&(o.minFilter=ai),o.format=p.format,o.needsUpdate=!0,e&&e(o)},i,n);return o}},Pg=class extends li{constructor(r){super(r)}load(r,e,i,n){this.path!==void 0&&(r=this.path+r),r=this.manager.resolveURL(r);let s=this,a=Og.get(r);if(a!==void 0)return s.manager.itemStart(r),setTimeout(function(){e&&e(a),s.manager.itemEnd(r)},0),a;let o=ex("img");function l(){u(),Og.add(r,this),e&&e(this),s.manager.itemEnd(r)}function c(h){u(),n&&n(h),s.manager.itemError(r),s.manager.itemEnd(r)}function u(){o.removeEventListener("load",l,!1),o.removeEventListener("error",c,!1)}return o.addEventListener("load",l,!1),o.addEventListener("error",c,!1),r.slice(0,5)!=="data:"&&this.crossOrigin!==void 0&&(o.crossOrigin=this.crossOrigin),s.manager.itemStart(r),o.src=r,o}},fx=class extends li{constructor(r){super(r)}load(r,e,i,n){let s=new yg,a=new Pg(this.manager);a.setCrossOrigin(this.crossOrigin),a.setPath(this.path);let o=0;function l(c){a.load(r[c],function(u){s.images[c]=u,o++,o===6&&(s.needsUpdate=!0,e&&e(s))},void 0,n)}for(let c=0;c<r.length;++c)l(c);return s}},Ng=class extends li{constructor(r){super(r)}load(r,e,i,n){let s=this,a=new _l,o=new ci(this.manager);return o.setResponseType("arraybuffer"),o.setRequestHeader(this.requestHeader),o.setPath(this.path),o.setWithCredentials(s.withCredentials),o.load(r,function(l){let c=s.parse(l);c&&(c.image!==void 0?a.image=c.image:c.data!==void 0&&(a.image.width=c.width,a.image.height=c.height,a.image.data=c.data),a.wrapS=c.wrapS!==void 0?c.wrapS:mn,a.wrapT=c.wrapT!==void 0?c.wrapT:mn,a.magFilter=c.magFilter!==void 0?c.magFilter:ai,a.minFilter=c.minFilter!==void 0?c.minFilter:ai,a.anisotropy=c.anisotropy!==void 0?c.anisotropy:1,c.encoding!==void 0&&(a.encoding=c.encoding),c.flipY!==void 0&&(a.flipY=c.flipY),c.format!==void 0&&(a.format=c.format),c.type!==void 0&&(a.type=c.type),c.mipmaps!==void 0&&(a.mipmaps=c.mipmaps,a.minFilter=wa),c.mipmapCount===1&&(a.minFilter=ai),c.generateMipmaps!==void 0&&(a.generateMipmaps=c.generateMipmaps),a.needsUpdate=!0,e&&e(a,c))},i,n),a}},Es=class extends li{constructor(r){super(r)}load(r,e,i,n){let s=new Hi,a=new Pg(this.manager);return a.setCrossOrigin(this.crossOrigin),a.setPath(this.path),a.load(r,function(o){s.image=o,s.needsUpdate=!0,e!==void 0&&e(s)},i,n),s}},Al=class extends pr{constructor(r,e=1){super(),this.isLight=!0,this.type="Light",this.color=new Ve(r),this.intensity=e}dispose(){}copy(r,e){return super.copy(r,e),this.color.copy(r.color),this.intensity=r.intensity,this}toJSON(r){let e=super.toJSON(r);return e.object.color=this.color.getHex(),e.object.intensity=this.intensity,this.groundColor!==void 0&&(e.object.groundColor=this.groundColor.getHex()),this.distance!==void 0&&(e.object.distance=this.distance),this.angle!==void 0&&(e.object.angle=this.angle),this.decay!==void 0&&(e.object.decay=this.decay),this.penumbra!==void 0&&(e.object.penumbra=this.penumbra),this.shadow!==void 0&&(e.object.shadow=this.shadow.toJSON()),e}},pf=class extends Al{constructor(r,e,i){super(r,i),this.isHemisphereLight=!0,this.type="HemisphereLight",this.position.copy(pr.DEFAULT_UP),this.updateMatrix(),this.groundColor=new Ve(e)}copy(r,e){return super.copy(r,e),this.groundColor.copy(r.groundColor),this}},xH=new Ue,tue=new A,rue=new A,mx=class{constructor(r){this.camera=r,this.bias=0,this.normalBias=0,this.radius=1,this.blurSamples=8,this.mapSize=new le(512,512),this.map=null,this.mapPass=null,this.matrix=new Ue,this.autoUpdate=!0,this.needsUpdate=!1,this._frustum=new eo,this._frameExtents=new le(1,1),this._viewportCount=1,this._viewports=[new Jr(0,0,1,1)]}getViewportCount(){return this._viewportCount}getFrustum(){return this._frustum}updateMatrices(r){let e=this.camera,i=this.matrix;tue.setFromMatrixPosition(r.matrixWorld),e.position.copy(tue),rue.setFromMatrixPosition(r.target.matrixWorld),e.lookAt(rue),e.updateMatrixWorld(),xH.multiplyMatrices(e.projectionMatrix,e.matrixWorldInverse),this._frustum.setFromProjectionMatrix(xH),i.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1),i.multiply(xH)}getViewport(r){return this._viewports[r]}getFrameExtents(){return this._frameExtents}dispose(){this.map&&this.map.dispose(),this.mapPass&&this.mapPass.dispose()}copy(r){return this.camera=r.camera.clone(),this.bias=r.bias,this.radius=r.radius,this.mapSize.copy(r.mapSize),this}clone(){return new this.constructor().copy(this)}toJSON(){let r={};return this.bias!==0&&(r.bias=this.bias),this.normalBias!==0&&(r.normalBias=this.normalBias),this.radius!==1&&(r.radius=this.radius),(this.mapSize.x!==512||this.mapSize.y!==512)&&(r.mapSize=this.mapSize.toArray()),r.camera=this.camera.toJSON(!1).object,delete r.camera.matrix,r}},C4=class extends mx{constructor(){super(new qr(50,1,.5,500)),this.isSpotLightShadow=!0,this.focus=1}updateMatrices(r){let e=this.camera,i=Qb*2*r.angle*this.focus,n=this.mapSize.width/this.mapSize.height,s=r.distance||e.far;(i!==e.fov||n!==e.aspect||s!==e.far)&&(e.fov=i,e.aspect=n,e.far=s,e.updateProjectionMatrix()),super.updateMatrices(r)}copy(r){return super.copy(r),this.focus=r.focus,this}},Vu=class extends Al{constructor(r,e,i=0,n=Math.PI/3,s=0,a=2){super(r,e),this.isSpotLight=!0,this.type="SpotLight",this.position.copy(pr.DEFAULT_UP),this.updateMatrix(),this.target=new pr,this.distance=i,this.angle=n,this.penumbra=s,this.decay=a,this.map=null,this.shadow=new C4}get power(){return this.intensity*Math.PI}set power(r){this.intensity=r/Math.PI}dispose(){this.shadow.dispose()}copy(r,e){return super.copy(r,e),this.distance=r.distance,this.angle=r.angle,this.penumbra=r.penumbra,this.decay=r.decay,this.target=r.target.clone(),this.shadow=r.shadow.clone(),this}},iue=new Ue,jb=new A,IH=new A,A4=class extends mx{constructor(){super(new qr(90,1,.5,500)),this.isPointLightShadow=!0,this._frameExtents=new le(4,2),this._viewportCount=6,this._viewports=[new Jr(2,1,1,1),new Jr(0,1,1,1),new Jr(3,1,1,1),new Jr(1,1,1,1),new Jr(3,0,1,1),new Jr(1,0,1,1)],this._cubeDirections=[new A(1,0,0),new A(-1,0,0),new A(0,0,1),new A(0,0,-1),new A(0,1,0),new A(0,-1,0)],this._cubeUps=[new A(0,1,0),new A(0,1,0),new A(0,1,0),new A(0,1,0),new A(0,0,1),new A(0,0,-1)]}updateMatrices(r,e=0){let i=this.camera,n=this.matrix,s=r.distance||i.far;s!==i.far&&(i.far=s,i.updateProjectionMatrix()),jb.setFromMatrixPosition(r.matrixWorld),i.position.copy(jb),IH.copy(i.position),IH.add(this._cubeDirections[e]),i.up.copy(this._cubeUps[e]),i.lookAt(IH),i.updateMatrixWorld(),n.makeTranslation(-jb.x,-jb.y,-jb.z),iue.multiplyMatrices(i.projectionMatrix,i.matrixWorldInverse),this._frustum.setFromProjectionMatrix(iue)}},Ac=class extends Al{constructor(r,e,i=0,n=2){super(r,e),this.isPointLight=!0,this.type="PointLight",this.distance=i,this.decay=n,this.shadow=new A4}get power(){return this.intensity*4*Math.PI}set power(r){this.intensity=r/(4*Math.PI)}dispose(){this.shadow.dispose()}copy(r,e){return super.copy(r,e),this.distance=r.distance,this.decay=r.decay,this.shadow=r.shadow.clone(),this}},O4=class extends mx{constructor(){super(new Zi(-5,5,5,-5,.5,500)),this.isDirectionalLightShadow=!0}},$s=class extends Al{constructor(r,e){super(r,e),this.isDirectionalLight=!0,this.type="DirectionalLight",this.position.copy(pr.DEFAULT_UP),this.updateMatrix(),this.target=new pr,this.shadow=new O4}dispose(){this.shadow.dispose()}copy(r){return super.copy(r),this.target=r.target.clone(),this.shadow=r.shadow.clone(),this}},Ol=class extends Al{constructor(r,e){super(r,e),this.isAmbientLight=!0,this.type="AmbientLight"}},BD=class extends Al{constructor(r,e,i=10,n=10){super(r,e),this.isRectAreaLight=!0,this.type="RectAreaLight",this.width=i,this.height=n}get power(){return this.intensity*this.width*this.height*Math.PI}set power(r){this.intensity=r/(this.width*this.height*Math.PI)}copy(r){return super.copy(r),this.width=r.width,this.height=r.height,this}toJSON(r){let e=super.toJSON(r);return e.object.width=this.width,e.object.height=this.height,e}},kD=class{constructor(){this.isSphericalHarmonics3=!0,this.coefficients=[];for(let r=0;r<9;r++)this.coefficients.push(new A)}set(r){for(let e=0;e<9;e++)this.coefficients[e].copy(r[e]);return this}zero(){for(let r=0;r<9;r++)this.coefficients[r].set(0,0,0);return this}getAt(r,e){let i=r.x,n=r.y,s=r.z,a=this.coefficients;return e.copy(a[0]).multiplyScalar(.282095),e.addScaledVector(a[1],.488603*n),e.addScaledVector(a[2],.488603*s),e.addScaledVector(a[3],.488603*i),e.addScaledVector(a[4],1.092548*(i*n)),e.addScaledVector(a[5],1.092548*(n*s)),e.addScaledVector(a[6],.315392*(3*s*s-1)),e.addScaledVector(a[7],1.092548*(i*s)),e.addScaledVector(a[8],.546274*(i*i-n*n)),e}getIrradianceAt(r,e){let i=r.x,n=r.y,s=r.z,a=this.coefficients;return e.copy(a[0]).multiplyScalar(.886227),e.addScaledVector(a[1],2*.511664*n),e.addScaledVector(a[2],2*.511664*s),e.addScaledVector(a[3],2*.511664*i),e.addScaledVector(a[4],2*.429043*i*n),e.addScaledVector(a[5],2*.429043*n*s),e.addScaledVector(a[6],.743125*s*s-.247708),e.addScaledVector(a[7],2*.429043*i*s),e.addScaledVector(a[8],.429043*(i*i-n*n)),e}add(r){for(let e=0;e<9;e++)this.coefficients[e].add(r.coefficients[e]);return this}addScaledSH(r,e){for(let i=0;i<9;i++)this.coefficients[i].addScaledVector(r.coefficients[i],e);return this}scale(r){for(let e=0;e<9;e++)this.coefficients[e].multiplyScalar(r);return this}lerp(r,e){for(let i=0;i<9;i++)this.coefficients[i].lerp(r.coefficients[i],e);return this}equals(r){for(let e=0;e<9;e++)if(!this.coefficients[e].equals(r.coefficients[e]))return!1;return!0}copy(r){return this.set(r.coefficients)}clone(){return new this.constructor().copy(this)}fromArray(r,e=0){let i=this.coefficients;for(let n=0;n<9;n++)i[n].fromArray(r,e+n*3);return this}toArray(r=[],e=0){let i=this.coefficients;for(let n=0;n<9;n++)i[n].toArray(r,e+n*3);return r}static getBasisAt(r,e){let i=r.x,n=r.y,s=r.z;e[0]=.282095,e[1]=.488603*n,e[2]=.488603*s,e[3]=.488603*i,e[4]=1.092548*i*n,e[5]=1.092548*n*s,e[6]=.315392*(3*s*s-1),e[7]=1.092548*i*s,e[8]=.546274*(i*i-n*n)}},Py=class extends Al{constructor(r=new kD,e=1){super(void 0,e),this.isLightProbe=!0,this.sh=r}copy(r){return super.copy(r),this.sh.copy(r.sh),this}fromJSON(r){return this.intensity=r.intensity,this.sh.fromArray(r.sh),this}toJSON(r){let e=super.toJSON(r);return e.object.sh=this.sh.toArray(),e}},Ny=class extends li{constructor(r){super(r),this.textures={}}load(r,e,i,n){let s=this,a=new ci(s.manager);a.setPath(s.path),a.setRequestHeader(s.requestHeader),a.setWithCredentials(s.withCredentials),a.load(r,function(o){try{e(s.parse(JSON.parse(o)))}catch(l){n?n(l):console.error(l),s.manager.itemError(r)}},i,n)}parse(r){let e=this.textures;function i(s){return e[s]===void 0&&console.warn("THREE.MaterialLoader: Undefined texture",s),e[s]}let n=Ny.createMaterialFromType(r.type);if(r.uuid!==void 0&&(n.uuid=r.uuid),r.name!==void 0&&(n.name=r.name),r.color!==void 0&&n.color!==void 0&&n.color.setHex(r.color),r.roughness!==void 0&&(n.roughness=r.roughness),r.metalness!==void 0&&(n.metalness=r.metalness),r.sheen!==void 0&&(n.sheen=r.sheen),r.sheenColor!==void 0&&(n.sheenColor=new Ve().setHex(r.sheenColor)),r.sheenRoughness!==void 0&&(n.sheenRoughness=r.sheenRoughness),r.emissive!==void 0&&n.emissive!==void 0&&n.emissive.setHex(r.emissive),r.specular!==void 0&&n.specular!==void 0&&n.specular.setHex(r.specular),r.specularIntensity!==void 0&&(n.specularIntensity=r.specularIntensity),r.specularColor!==void 0&&n.specularColor!==void 0&&n.specularColor.setHex(r.specularColor),r.shininess!==void 0&&(n.shininess=r.shininess),r.clearcoat!==void 0&&(n.clearcoat=r.clearcoat),r.clearcoatRoughness!==void 0&&(n.clearcoatRoughness=r.clearcoatRoughness),r.iridescence!==void 0&&(n.iridescence=r.iridescence),r.iridescenceIOR!==void 0&&(n.iridescenceIOR=r.iridescenceIOR),r.iridescenceThicknessRange!==void 0&&(n.iridescenceThicknessRange=r.iridescenceThicknessRange),r.transmission!==void 0&&(n.transmission=r.transmission),r.thickness!==void 0&&(n.thickness=r.thickness),r.attenuationDistance!==void 0&&(n.attenuationDistance=r.attenuationDistance),r.attenuationColor!==void 0&&n.attenuationColor!==void 0&&n.attenuationColor.setHex(r.attenuationColor),r.fog!==void 0&&(n.fog=r.fog),r.flatShading!==void 0&&(n.flatShading=r.flatShading),r.blending!==void 0&&(n.blending=r.blending),r.combine!==void 0&&(n.combine=r.combine),r.side!==void 0&&(n.side=r.side),r.shadowSide!==void 0&&(n.shadowSide=r.shadowSide),r.opacity!==void 0&&(n.opacity=r.opacity),r.transparent!==void 0&&(n.transparent=r.transparent),r.alphaTest!==void 0&&(n.alphaTest=r.alphaTest),r.depthTest!==void 0&&(n.depthTest=r.depthTest),r.depthWrite!==void 0&&(n.depthWrite=r.depthWrite),r.colorWrite!==void 0&&(n.colorWrite=r.colorWrite),r.stencilWrite!==void 0&&(n.stencilWrite=r.stencilWrite),r.stencilWriteMask!==void 0&&(n.stencilWriteMask=r.stencilWriteMask),r.stencilFunc!==void 0&&(n.stencilFunc=r.stencilFunc),r.stencilRef!==void 0&&(n.stencilRef=r.stencilRef),r.stencilFuncMask!==void 0&&(n.stencilFuncMask=r.stencilFuncMask),r.stencilFail!==void 0&&(n.stencilFail=r.stencilFail),r.stencilZFail!==void 0&&(n.stencilZFail=r.stencilZFail),r.stencilZPass!==void 0&&(n.stencilZPass=r.stencilZPass),r.wireframe!==void 0&&(n.wireframe=r.wireframe),r.wireframeLinewidth!==void 0&&(n.wireframeLinewidth=r.wireframeLinewidth),r.wireframeLinecap!==void 0&&(n.wireframeLinecap=r.wireframeLinecap),r.wireframeLinejoin!==void 0&&(n.wireframeLinejoin=r.wireframeLinejoin),r.rotation!==void 0&&(n.rotation=r.rotation),r.linewidth!==1&&(n.linewidth=r.linewidth),r.dashSize!==void 0&&(n.dashSize=r.dashSize),r.gapSize!==void 0&&(n.gapSize=r.gapSize),r.scale!==void 0&&(n.scale=r.scale),r.polygonOffset!==void 0&&(n.polygonOffset=r.polygonOffset),r.polygonOffsetFactor!==void 0&&(n.polygonOffsetFactor=r.polygonOffsetFactor),r.polygonOffsetUnits!==void 0&&(n.polygonOffsetUnits=r.polygonOffsetUnits),r.dithering!==void 0&&(n.dithering=r.dithering),r.alphaToCoverage!==void 0&&(n.alphaToCoverage=r.alphaToCoverage),r.premultipliedAlpha!==void 0&&(n.premultipliedAlpha=r.premultipliedAlpha),r.forceSinglePass!==void 0&&(n.forceSinglePass=r.forceSinglePass),r.visible!==void 0&&(n.visible=r.visible),r.toneMapped!==void 0&&(n.toneMapped=r.toneMapped),r.userData!==void 0&&(n.userData=r.userData),r.vertexColors!==void 0&&(typeof r.vertexColors=="number"?n.vertexColors=r.vertexColors>0:n.vertexColors=r.vertexColors),r.uniforms!==void 0)for(let s in r.uniforms){let a=r.uniforms[s];switch(n.uniforms[s]={},a.type){case"t":n.uniforms[s].value=i(a.value);break;case"c":n.uniforms[s].value=new Ve().setHex(a.value);break;case"v2":n.uniforms[s].value=new le().fromArray(a.value);break;case"v3":n.uniforms[s].value=new A().fromArray(a.value);break;case"v4":n.uniforms[s].value=new Jr().fromArray(a.value);break;case"m3":n.uniforms[s].value=new Qi().fromArray(a.value);break;case"m4":n.uniforms[s].value=new Ue().fromArray(a.value);break;default:n.uniforms[s].value=a.value}}if(r.defines!==void 0&&(n.defines=r.defines),r.vertexShader!==void 0&&(n.vertexShader=r.vertexShader),r.fragmentShader!==void 0&&(n.fragmentShader=r.fragmentShader),r.glslVersion!==void 0&&(n.glslVersion=r.glslVersion),r.extensions!==void 0)for(let s in r.extensions)n.extensions[s]=r.extensions[s];if(r.size!==void 0&&(n.size=r.size),r.sizeAttenuation!==void 0&&(n.sizeAttenuation=r.sizeAttenuation),r.map!==void 0&&(n.map=i(r.map)),r.matcap!==void 0&&(n.matcap=i(r.matcap)),r.alphaMap!==void 0&&(n.alphaMap=i(r.alphaMap)),r.bumpMap!==void 0&&(n.bumpMap=i(r.bumpMap)),r.bumpScale!==void 0&&(n.bumpScale=r.bumpScale),r.normalMap!==void 0&&(n.normalMap=i(r.normalMap)),r.normalMapType!==void 0&&(n.normalMapType=r.normalMapType),r.normalScale!==void 0){let s=r.normalScale;Array.isArray(s)===!1&&(s=[s,s]),n.normalScale=new le().fromArray(s)}return r.displacementMap!==void 0&&(n.displacementMap=i(r.displacementMap)),r.displacementScale!==void 0&&(n.displacementScale=r.displacementScale),r.displacementBias!==void 0&&(n.displacementBias=r.displacementBias),r.roughnessMap!==void 0&&(n.roughnessMap=i(r.roughnessMap)),r.metalnessMap!==void 0&&(n.metalnessMap=i(r.metalnessMap)),r.emissiveMap!==void 0&&(n.emissiveMap=i(r.emissiveMap)),r.emissiveIntensity!==void 0&&(n.emissiveIntensity=r.emissiveIntensity),r.specularMap!==void 0&&(n.specularMap=i(r.specularMap)),r.specularIntensityMap!==void 0&&(n.specularIntensityMap=i(r.specularIntensityMap)),r.specularColorMap!==void 0&&(n.specularColorMap=i(r.specularColorMap)),r.envMap!==void 0&&(n.envMap=i(r.envMap)),r.envMapIntensity!==void 0&&(n.envMapIntensity=r.envMapIntensity),r.reflectivity!==void 0&&(n.reflectivity=r.reflectivity),r.refractionRatio!==void 0&&(n.refractionRatio=r.refractionRatio),r.lightMap!==void 0&&(n.lightMap=i(r.lightMap)),r.lightMapIntensity!==void 0&&(n.lightMapIntensity=r.lightMapIntensity),r.aoMap!==void 0&&(n.aoMap=i(r.aoMap)),r.aoMapIntensity!==void 0&&(n.aoMapIntensity=r.aoMapIntensity),r.gradientMap!==void 0&&(n.gradientMap=i(r.gradientMap)),r.clearcoatMap!==void 0&&(n.clearcoatMap=i(r.clearcoatMap)),r.clearcoatRoughnessMap!==void 0&&(n.clearcoatRoughnessMap=i(r.clearcoatRoughnessMap)),r.clearcoatNormalMap!==void 0&&(n.clearcoatNormalMap=i(r.clearcoatNormalMap)),r.clearcoatNormalScale!==void 0&&(n.clearcoatNormalScale=new le().fromArray(r.clearcoatNormalScale)),r.iridescenceMap!==void 0&&(n.iridescenceMap=i(r.iridescenceMap)),r.iridescenceThicknessMap!==void 0&&(n.iridescenceThicknessMap=i(r.iridescenceThicknessMap)),r.transmissionMap!==void 0&&(n.transmissionMap=i(r.transmissionMap)),r.thicknessMap!==void 0&&(n.thicknessMap=i(r.thicknessMap)),r.sheenColorMap!==void 0&&(n.sheenColorMap=i(r.sheenColorMap)),r.sheenRoughnessMap!==void 0&&(n.sheenRoughnessMap=i(r.sheenRoughnessMap)),n}setTextures(r){return this.textures=r,this}static createMaterialFromType(r){let e={ShadowMaterial:OD,SpriteMaterial:Tg,RawShaderMaterial:PD,ShaderMaterial:Yt,PointsMaterial:Vn,MeshPhysicalMaterial:Cl,MeshStandardMaterial:Gu,MeshPhongMaterial:Ts,MeshToonMaterial:ND,MeshNormalMaterial:hf,MeshLambertMaterial:io,MeshDepthMaterial:Tp,MeshDistanceMaterial:nx,MeshBasicMaterial:or,MeshMatcapMaterial:LD,LineDashedMaterial:Rp,LineBasicMaterial:Tr,Material:Gr};return new e[r]}},ks=class{static decodeText(r){if(typeof TextDecoder!="undefined")return new TextDecoder().decode(r);let e="";for(let i=0,n=r.length;i<n;i++)e+=String.fromCharCode(r[i]);try{return decodeURIComponent(escape(e))}catch(i){return e}}static extractUrlBase(r){let e=r.lastIndexOf("/");return e===-1?"./":r.slice(0,e+1)}static resolveURL(r,e){return typeof r!="string"||r===""?"":(/^https?:\/\//i.test(e)&&/^\//.test(r)&&(e=e.replace(/(^https?:\/\/[^\/]+).*/i,"$1")),/^(https?:)?\/\//i.test(r)||/^data:.*,.*$/i.test(r)||/^blob:.*$/i.test(r)?r:e+r)}},GD=class extends it{constructor(){super(),this.isInstancedBufferGeometry=!0,this.type="InstancedBufferGeometry",this.instanceCount=1/0}copy(r){return super.copy(r),this.instanceCount=r.instanceCount,this}toJSON(){let r=super.toJSON();return r.instanceCount=this.instanceCount,r.isInstancedBufferGeometry=!0,r}},VD=class extends li{constructor(r){super(r)}load(r,e,i,n){let s=this,a=new ci(s.manager);a.setPath(s.path),a.setRequestHeader(s.requestHeader),a.setWithCredentials(s.withCredentials),a.load(r,function(o){try{e(s.parse(JSON.parse(o)))}catch(l){n?n(l):console.error(l),s.manager.itemError(r)}},i,n)}parse(r){let e={},i={};function n(d,f){if(e[f]!==void 0)return e[f];let g=d.interleavedBuffers[f],y=s(d,g.buffer),E=xy(g.type,y),b=new Ep(E,g.stride);return b.uuid=g.uuid,e[f]=b,b}function s(d,f){if(i[f]!==void 0)return i[f];let g=d.arrayBuffers[f],y=new Uint32Array(g).buffer;return i[f]=y,y}let a=r.isInstancedBufferGeometry?new GD:new it,o=r.data.index;if(o!==void 0){let d=xy(o.type,o.array);a.setIndex(new jt(d,1))}let l=r.data.attributes;for(let d in l){let f=l[d],m;if(f.isInterleavedBufferAttribute){let g=n(r.data,f.data);m=new to(g,f.itemSize,f.offset,f.normalized)}else{let g=xy(f.type,f.array),y=f.isInstancedBufferAttribute?bp:jt;m=new y(g,f.itemSize,f.normalized)}f.name!==void 0&&(m.name=f.name),f.usage!==void 0&&m.setUsage(f.usage),f.updateRange!==void 0&&(m.updateRange.offset=f.updateRange.offset,m.updateRange.count=f.updateRange.count),a.setAttribute(d,m)}let c=r.data.morphAttributes;if(c)for(let d in c){let f=c[d],m=[];for(let g=0,y=f.length;g<y;g++){let E=f[g],b;if(E.isInterleavedBufferAttribute){let x=n(r.data,E.data);b=new to(x,E.itemSize,E.offset,E.normalized)}else{let x=xy(E.type,E.array);b=new jt(x,E.itemSize,E.normalized)}E.name!==void 0&&(b.name=E.name),m.push(b)}a.morphAttributes[d]=m}r.data.morphTargetsRelative&&(a.morphTargetsRelative=!0);let h=r.data.groups||r.data.drawcalls||r.data.offsets;if(h!==void 0)for(let d=0,f=h.length;d!==f;++d){let m=h[d];a.addGroup(m.start,m.count,m.materialIndex)}let p=r.data.boundingSphere;if(p!==void 0){let d=new A;p.center!==void 0&&d.fromArray(p.center),a.boundingSphere=new zi(d,p.radius)}return r.name&&(a.name=r.name),r.userData&&(a.userData=r.userData),a}},P4=class extends li{constructor(r){super(r)}load(r,e,i,n){let s=this,a=this.path===""?ks.extractUrlBase(r):this.path;this.resourcePath=this.resourcePath||a;let o=new ci(this.manager);o.setPath(this.path),o.setRequestHeader(this.requestHeader),o.setWithCredentials(this.withCredentials),o.load(r,function(l){let c=null;try{c=JSON.parse(l)}catch(h){n!==void 0&&n(h),console.error("THREE:ObjectLoader: Can't parse "+r+".",h.message);return}let u=c.metadata;if(u===void 0||u.type===void 0||u.type.toLowerCase()==="geometry"){n!==void 0&&n(new Error("THREE.ObjectLoader: Can't load "+r)),console.error("THREE.ObjectLoader: Can't load "+r);return}s.parse(c,e)},i,n)}loadAsync(r,e){return ot(this,null,function*(){let i=this,n=this.path===""?ks.extractUrlBase(r):this.path;this.resourcePath=this.resourcePath||n;let s=new ci(this.manager);s.setPath(this.path),s.setRequestHeader(this.requestHeader),s.setWithCredentials(this.withCredentials);let a=yield s.loadAsync(r,e),o=JSON.parse(a),l=o.metadata;if(l===void 0||l.type===void 0||l.type.toLowerCase()==="geometry")throw new Error("THREE.ObjectLoader: Can't load "+r);return yield i.parseAsync(o)})}parse(r,e){let i=this.parseAnimations(r.animations),n=this.parseShapes(r.shapes),s=this.parseGeometries(r.geometries,n),a=this.parseImages(r.images,function(){e!==void 0&&e(c)}),o=this.parseTextures(r.textures,a),l=this.parseMaterials(r.materials,o),c=this.parseObject(r.object,s,l,o,i),u=this.parseSkeletons(r.skeletons,c);if(this.bindSkeletons(c,u),e!==void 0){let h=!1;for(let p in a)if(a[p].data instanceof HTMLImageElement){h=!0;break}h===!1&&e(c)}return c}parseAsync(r){return ot(this,null,function*(){let e=this.parseAnimations(r.animations),i=this.parseShapes(r.shapes),n=this.parseGeometries(r.geometries,i),s=yield this.parseImagesAsync(r.images),a=this.parseTextures(r.textures,s),o=this.parseMaterials(r.materials,a),l=this.parseObject(r.object,n,o,a,e),c=this.parseSkeletons(r.skeletons,l);return this.bindSkeletons(l,c),l})}parseShapes(r){let e={};if(r!==void 0)for(let i=0,n=r.length;i<n;i++){let s=new Ja().fromJSON(r[i]);e[s.uuid]=s}return e}parseSkeletons(r,e){let i={},n={};if(e.traverse(function(s){s.isBone&&(n[s.uuid]=s)}),r!==void 0)for(let s=0,a=r.length;s<a;s++){let o=new Ml().fromJSON(r[s],n);i[o.uuid]=o}return i}parseGeometries(r,e){let i={};if(r!==void 0){let n=new VD;for(let s=0,a=r.length;s<a;s++){let o,l=r[s];switch(l.type){case"BufferGeometry":case"InstancedBufferGeometry":o=n.parse(l);break;default:l.type in eue?o=eue[l.type].fromJSON(l,e):console.warn(`THREE.ObjectLoader: Unsupported geometry type "${l.type}"`)}o.uuid=l.uuid,l.name!==void 0&&(o.name=l.name),o.isBufferGeometry===!0&&l.userData!==void 0&&(o.userData=l.userData),i[l.uuid]=o}}return i}parseMaterials(r,e){let i={},n={};if(r!==void 0){let s=new Ny;s.setTextures(e);for(let a=0,o=r.length;a<o;a++){let l=r[a];i[l.uuid]===void 0&&(i[l.uuid]=s.parse(l)),n[l.uuid]=i[l.uuid]}}return n}parseAnimations(r){let e={};if(r!==void 0)for(let i=0;i<r.length;i++){let n=r[i],s=so.parse(n);e[s.uuid]=s}return e}parseImages(r,e){let i=this,n={},s;function a(l){return i.manager.itemStart(l),s.load(l,function(){i.manager.itemEnd(l)},void 0,function(){i.manager.itemError(l),i.manager.itemEnd(l)})}function o(l){if(typeof l=="string"){let c=l,u=/^(\/\/)|([a-z]+:(\/\/)?)/i.test(c)?c:i.resourcePath+c;return a(u)}else return l.data?{data:xy(l.type,l.data),width:l.width,height:l.height}:null}if(r!==void 0&&r.length>0){let l=new Ap(e);s=new Pg(l),s.setCrossOrigin(this.crossOrigin);for(let c=0,u=r.length;c<u;c++){let h=r[c],p=h.url;if(Array.isArray(p)){let d=[];for(let f=0,m=p.length;f<m;f++){let g=p[f],y=o(g);y!==null&&(y instanceof HTMLImageElement?d.push(y):d.push(new _l(y.data,y.width,y.height)))}n[h.uuid]=new Mc(d)}else{let d=o(h.url);n[h.uuid]=new Mc(d)}}}return n}parseImagesAsync(r){return ot(this,null,function*(){let e=this,i={},n;function s(a){return ot(this,null,function*(){if(typeof a=="string"){let o=a,l=/^(\/\/)|([a-z]+:(\/\/)?)/i.test(o)?o:e.resourcePath+o;return yield n.loadAsync(l)}else return a.data?{data:xy(a.type,a.data),width:a.width,height:a.height}:null})}if(r!==void 0&&r.length>0){n=new Pg(this.manager),n.setCrossOrigin(this.crossOrigin);for(let a=0,o=r.length;a<o;a++){let l=r[a],c=l.url;if(Array.isArray(c)){let u=[];for(let h=0,p=c.length;h<p;h++){let d=c[h],f=yield s(d);f!==null&&(f instanceof HTMLImageElement?u.push(f):u.push(new _l(f.data,f.width,f.height)))}i[l.uuid]=new Mc(u)}else{let u=yield s(l.url);i[l.uuid]=new Mc(u)}}}return i})}parseTextures(r,e){function i(s,a){return typeof s=="number"?s:(console.warn("THREE.ObjectLoader.parseTexture: Constant should be in numeric form.",s),a[s])}let n={};if(r!==void 0)for(let s=0,a=r.length;s<a;s++){let o=r[s];o.image===void 0&&console.warn('THREE.ObjectLoader: No "image" specified for',o.uuid),e[o.image]===void 0&&console.warn("THREE.ObjectLoader: Undefined image",o.image);let l=e[o.image],c=l.data,u;Array.isArray(c)?(u=new yg,c.length===6&&(u.needsUpdate=!0)):(c&&c.data?u=new _l:u=new Hi,c&&(u.needsUpdate=!0)),u.source=l,u.uuid=o.uuid,o.name!==void 0&&(u.name=o.name),o.mapping!==void 0&&(u.mapping=i(o.mapping,q0t)),o.offset!==void 0&&u.offset.fromArray(o.offset),o.repeat!==void 0&&u.repeat.fromArray(o.repeat),o.center!==void 0&&u.center.fromArray(o.center),o.rotation!==void 0&&(u.rotation=o.rotation),o.wrap!==void 0&&(u.wrapS=i(o.wrap[0],nue),u.wrapT=i(o.wrap[1],nue)),o.format!==void 0&&(u.format=o.format),o.type!==void 0&&(u.type=o.type),o.encoding!==void 0&&(u.encoding=o.encoding),o.minFilter!==void 0&&(u.minFilter=i(o.minFilter,sue)),o.magFilter!==void 0&&(u.magFilter=i(o.magFilter,sue)),o.anisotropy!==void 0&&(u.anisotropy=o.anisotropy),o.flipY!==void 0&&(u.flipY=o.flipY),o.generateMipmaps!==void 0&&(u.generateMipmaps=o.generateMipmaps),o.premultiplyAlpha!==void 0&&(u.premultiplyAlpha=o.premultiplyAlpha),o.unpackAlignment!==void 0&&(u.unpackAlignment=o.unpackAlignment),o.userData!==void 0&&(u.userData=o.userData),n[o.uuid]=u}return n}parseObject(r,e,i,n,s){let a;function o(p){return e[p]===void 0&&console.warn("THREE.ObjectLoader: Undefined geometry",p),e[p]}function l(p){if(p!==void 0){if(Array.isArray(p)){let d=[];for(let f=0,m=p.length;f<m;f++){let g=p[f];i[g]===void 0&&console.warn("THREE.ObjectLoader: Undefined material",g),d.push(i[g])}return d}return i[p]===void 0&&console.warn("THREE.ObjectLoader: Undefined material",p),i[p]}}function c(p){return n[p]===void 0&&console.warn("THREE.ObjectLoader: Undefined texture",p),n[p]}let u,h;switch(r.type){case"Scene":a=new On,r.background!==void 0&&(Number.isInteger(r.background)?a.background=new Ve(r.background):a.background=c(r.background)),r.environment!==void 0&&(a.environment=c(r.environment)),r.fog!==void 0&&(r.fog.type==="Fog"?a.fog=new Uu(r.fog.color,r.fog.near,r.fog.far):r.fog.type==="FogExp2"&&(a.fog=new Cy(r.fog.color,r.fog.density))),r.backgroundBlurriness!==void 0&&(a.backgroundBlurriness=r.backgroundBlurriness),r.backgroundIntensity!==void 0&&(a.backgroundIntensity=r.backgroundIntensity);break;case"PerspectiveCamera":a=new qr(r.fov,r.aspect,r.near,r.far),r.focus!==void 0&&(a.focus=r.focus),r.zoom!==void 0&&(a.zoom=r.zoom),r.filmGauge!==void 0&&(a.filmGauge=r.filmGauge),r.filmOffset!==void 0&&(a.filmOffset=r.filmOffset),r.view!==void 0&&(a.view=Object.assign({},r.view));break;case"OrthographicCamera":a=new Zi(r.left,r.right,r.top,r.bottom,r.near,r.far),r.zoom!==void 0&&(a.zoom=r.zoom),r.view!==void 0&&(a.view=Object.assign({},r.view));break;case"AmbientLight":a=new Ol(r.color,r.intensity);break;case"DirectionalLight":a=new $s(r.color,r.intensity);break;case"PointLight":a=new Ac(r.color,r.intensity,r.distance,r.decay);break;case"RectAreaLight":a=new BD(r.color,r.intensity,r.width,r.height);break;case"SpotLight":a=new Vu(r.color,r.intensity,r.distance,r.angle,r.penumbra,r.decay);break;case"HemisphereLight":a=new pf(r.color,r.groundColor,r.intensity);break;case"LightProbe":a=new Py().fromJSON(r);break;case"SkinnedMesh":u=o(r.geometry),h=l(r.material),a=new Bu(u,h),r.bindMode!==void 0&&(a.bindMode=r.bindMode),r.bindMatrix!==void 0&&a.bindMatrix.fromArray(r.bindMatrix),r.skeleton!==void 0&&(a.skeleton=r.skeleton);break;case"Mesh":u=o(r.geometry),h=l(r.material),a=new Je(u,h);break;case"InstancedMesh":u=o(r.geometry),h=l(r.material);let p=r.count,d=r.instanceMatrix,f=r.instanceColor;a=new tn(u,h,p),a.instanceMatrix=new bp(new Float32Array(d.array),16),f!==void 0&&(a.instanceColor=new bp(new Float32Array(f.array),f.itemSize));break;case"LOD":a=new wD;break;case"Line":a=new _r(o(r.geometry),l(r.material));break;case"LineLoop":a=new Ay(o(r.geometry),l(r.material));break;case"LineSegments":a=new oi(o(r.geometry),l(r.material));break;case"PointCloud":case"Points":a=new rn(o(r.geometry),l(r.material));break;case"Sprite":a=new _D(l(r.material));break;case"Group":a=new hr;break;case"Bone":a=new Rl;break;default:a=new pr}if(a.uuid=r.uuid,r.name!==void 0&&(a.name=r.name),r.matrix!==void 0?(a.matrix.fromArray(r.matrix),r.matrixAutoUpdate!==void 0&&(a.matrixAutoUpdate=r.matrixAutoUpdate),a.matrixAutoUpdate&&a.matrix.decompose(a.position,a.quaternion,a.scale)):(r.position!==void 0&&a.position.fromArray(r.position),r.rotation!==void 0&&a.rotation.fromArray(r.rotation),r.quaternion!==void 0&&a.quaternion.fromArray(r.quaternion),r.scale!==void 0&&a.scale.fromArray(r.scale)),r.castShadow!==void 0&&(a.castShadow=r.castShadow),r.receiveShadow!==void 0&&(a.receiveShadow=r.receiveShadow),r.shadow&&(r.shadow.bias!==void 0&&(a.shadow.bias=r.shadow.bias),r.shadow.normalBias!==void 0&&(a.shadow.normalBias=r.shadow.normalBias),r.shadow.radius!==void 0&&(a.shadow.radius=r.shadow.radius),r.shadow.mapSize!==void 0&&a.shadow.mapSize.fromArray(r.shadow.mapSize),r.shadow.camera!==void 0&&(a.shadow.camera=this.parseObject(r.shadow.camera))),r.visible!==void 0&&(a.visible=r.visible),r.frustumCulled!==void 0&&(a.frustumCulled=r.frustumCulled),r.renderOrder!==void 0&&(a.renderOrder=r.renderOrder),r.userData!==void 0&&(a.userData=r.userData),r.layers!==void 0&&(a.layers.mask=r.layers),r.children!==void 0){let p=r.children;for(let d=0;d<p.length;d++)a.add(this.parseObject(p[d],e,i,n,s))}if(r.animations!==void 0){let p=r.animations;for(let d=0;d<p.length;d++){let f=p[d];a.animations.push(s[f])}}if(r.type==="LOD"){r.autoUpdate!==void 0&&(a.autoUpdate=r.autoUpdate);let p=r.levels;for(let d=0;d<p.length;d++){let f=p[d],m=a.getObjectByProperty("uuid",f.object);m!==void 0&&a.addLevel(m,f.distance,f.hysteresis)}}return a}bindSkeletons(r,e){Object.keys(e).length!==0&&r.traverse(function(i){if(i.isSkinnedMesh===!0&&i.skeleton!==void 0){let n=e[i.skeleton];n===void 0?console.warn("THREE.ObjectLoader: No skeleton found with UUID:",i.skeleton):i.bind(n,i.bindMatrix)}})}},q0t={UVMapping:qD,CubeReflectionMapping:sf,CubeRefractionMapping:af,EquirectangularReflectionMapping:mg,EquirectangularRefractionMapping:Zb,CubeUVReflectionMapping:By},nue={RepeatWrapping:gn,ClampToEdgeWrapping:mn,MirroredRepeatWrapping:mp},sue={NearestFilter:Di,NearestMipmapNearestFilter:of,NearestMipmapLinearFilter:pp,LinearFilter:ai,LinearMipmapNearestFilter:Hg,LinearMipmapLinearFilter:wa},gx=class extends li{constructor(r){super(r),this.isImageBitmapLoader=!0,typeof createImageBitmap=="undefined"&&console.warn("THREE.ImageBitmapLoader: createImageBitmap() not supported."),typeof fetch=="undefined"&&console.warn("THREE.ImageBitmapLoader: fetch() not supported."),this.options={premultiplyAlpha:"none"}}setOptions(r){return this.options=r,this}load(r,e,i,n){r===void 0&&(r=""),this.path!==void 0&&(r=this.path+r),r=this.manager.resolveURL(r);let s=this,a=Og.get(r);if(a!==void 0)return s.manager.itemStart(r),setTimeout(function(){e&&e(a),s.manager.itemEnd(r)},0),a;let o={};o.credentials=this.crossOrigin==="anonymous"?"same-origin":"include",o.headers=this.requestHeader,fetch(r,o).then(function(l){return l.blob()}).then(function(l){return createImageBitmap(l,Object.assign(s.options,{colorSpaceConversion:"none"}))}).then(function(l){Og.add(r,l),e&&e(l),s.manager.itemEnd(r)}).catch(function(l){n&&n(l),s.manager.itemError(r),s.manager.itemEnd(r)}),s.manager.itemStart(r)}},iD,vx=class{static getContext(){return iD===void 0&&(iD=new(window.AudioContext||window.webkitAudioContext)),iD}static setContext(r){iD=r}},N4=class extends li{constructor(r){super(r)}load(r,e,i,n){let s=this,a=new ci(this.manager);a.setResponseType("arraybuffer"),a.setPath(this.path),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials),a.load(r,function(o){try{let l=o.slice(0);vx.getContext().decodeAudioData(l,function(u){e(u)})}catch(l){n?n(l):console.error(l),s.manager.itemError(r)}},i,n)}},L4=class extends Py{constructor(r,e,i=1){super(void 0,i),this.isHemisphereLightProbe=!0;let n=new Ve().set(r),s=new Ve().set(e),a=new A(n.r,n.g,n.b),o=new A(s.r,s.g,s.b),l=Math.sqrt(Math.PI),c=l*Math.sqrt(.75);this.sh.coefficients[0].copy(a).add(o).multiplyScalar(l),this.sh.coefficients[1].copy(a).sub(o).multiplyScalar(c)}},F4=class extends Py{constructor(r,e=1){super(void 0,e),this.isAmbientLightProbe=!0;let i=new Ve().set(r);this.sh.coefficients[0].set(i.r,i.g,i.b).multiplyScalar(2*Math.sqrt(Math.PI))}},aue=new Ue,oue=new Ue,rg=new Ue,H4=class{constructor(){this.type="StereoCamera",this.aspect=1,this.eyeSep=.064,this.cameraL=new qr,this.cameraL.layers.enable(1),this.cameraL.matrixAutoUpdate=!1,this.cameraR=new qr,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(r){let e=this._cache;if(e.focus!==r.focus||e.fov!==r.fov||e.aspect!==r.aspect*this.aspect||e.near!==r.near||e.far!==r.far||e.zoom!==r.zoom||e.eyeSep!==this.eyeSep){e.focus=r.focus,e.fov=r.fov,e.aspect=r.aspect*this.aspect,e.near=r.near,e.far=r.far,e.zoom=r.zoom,e.eyeSep=this.eyeSep,rg.copy(r.projectionMatrix);let n=e.eyeSep/2,s=n*e.near/e.focus,a=e.near*Math.tan(dg*e.fov*.5)/e.zoom,o,l;oue.elements[12]=-n,aue.elements[12]=n,o=-a*e.aspect+s,l=a*e.aspect+s,rg.elements[0]=2*e.near/(l-o),rg.elements[8]=(l+o)/(l-o),this.cameraL.projectionMatrix.copy(rg),o=-a*e.aspect-s,l=a*e.aspect-s,rg.elements[0]=2*e.near/(l-o),rg.elements[8]=(l+o)/(l-o),this.cameraR.projectionMatrix.copy(rg)}this.cameraL.matrixWorld.copy(r.matrixWorld).multiply(oue),this.cameraR.matrixWorld.copy(r.matrixWorld).multiply(aue)}},df=class{constructor(r=!0){this.autoStart=r,this.startTime=0,this.oldTime=0,this.elapsedTime=0,this.running=!1}start(){this.startTime=lue(),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 r=0;if(this.autoStart&&!this.running)return this.start(),0;if(this.running){let e=lue();r=(e-this.oldTime)/1e3,this.oldTime=e,this.elapsedTime+=r}return r}};function lue(){return(typeof performance=="undefined"?Date:performance).now()}var ig=new A,cue=new Or,Y0t=new A,ng=new A,U4=class extends pr{constructor(){super(),this.type="AudioListener",this.context=vx.getContext(),this.gain=this.context.createGain(),this.gain.connect(this.context.destination),this.filter=null,this.timeDelta=0,this._clock=new df}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(r){return this.filter!==null?(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination)):this.gain.disconnect(this.context.destination),this.filter=r,this.gain.connect(this.filter),this.filter.connect(this.context.destination),this}getMasterVolume(){return this.gain.gain.value}setMasterVolume(r){return this.gain.gain.setTargetAtTime(r,this.context.currentTime,.01),this}updateMatrixWorld(r){super.updateMatrixWorld(r);let e=this.context.listener,i=this.up;if(this.timeDelta=this._clock.getDelta(),this.matrixWorld.decompose(ig,cue,Y0t),ng.set(0,0,-1).applyQuaternion(cue),e.positionX){let n=this.context.currentTime+this.timeDelta;e.positionX.linearRampToValueAtTime(ig.x,n),e.positionY.linearRampToValueAtTime(ig.y,n),e.positionZ.linearRampToValueAtTime(ig.z,n),e.forwardX.linearRampToValueAtTime(ng.x,n),e.forwardY.linearRampToValueAtTime(ng.y,n),e.forwardZ.linearRampToValueAtTime(ng.z,n),e.upX.linearRampToValueAtTime(i.x,n),e.upY.linearRampToValueAtTime(i.y,n),e.upZ.linearRampToValueAtTime(i.z,n)}else e.setPosition(ig.x,ig.y,ig.z),e.setOrientation(ng.x,ng.y,ng.z,i.x,i.y,i.z)}},zD=class extends pr{constructor(r){super(),this.type="Audio",this.listener=r,this.context=r.context,this.gain=this.context.createGain(),this.gain.connect(r.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(r){return this.hasPlaybackControl=!1,this.sourceType="audioNode",this.source=r,this.connect(),this}setMediaElementSource(r){return this.hasPlaybackControl=!1,this.sourceType="mediaNode",this.source=this.context.createMediaElementSource(r),this.connect(),this}setMediaStreamSource(r){return this.hasPlaybackControl=!1,this.sourceType="mediaStreamNode",this.source=this.context.createMediaStreamSource(r),this.connect(),this}setBuffer(r){return this.buffer=r,this.sourceType="buffer",this.autoplay&&this.play(),this}play(r=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+r;let e=this.context.createBufferSource();return e.buffer=this.buffer,e.loop=this.loop,e.loopStart=this.loopStart,e.loopEnd=this.loopEnd,e.onended=this.onEnded.bind(this),e.start(this._startedAt,this._progress+this.offset,this.duration),this.isPlaying=!0,this.source=e,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.stop(),this.source.onended=null,this.isPlaying=!1,this}connect(){if(this.filters.length>0){this.source.connect(this.filters[0]);for(let r=1,e=this.filters.length;r<e;r++)this.filters[r-1].connect(this.filters[r]);this.filters[this.filters.length-1].connect(this.getOutput())}else this.source.connect(this.getOutput());return this._connected=!0,this}disconnect(){if(this.filters.length>0){this.source.disconnect(this.filters[0]);for(let r=1,e=this.filters.length;r<e;r++)this.filters[r-1].disconnect(this.filters[r]);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(r){return r||(r=[]),this._connected===!0?(this.disconnect(),this.filters=r.slice(),this.connect()):this.filters=r.slice(),this}setDetune(r){if(this.detune=r,this.source.detune!==void 0)return this.isPlaying===!0&&this.source.detune.setTargetAtTime(this.detune,this.context.currentTime,.01),this}getDetune(){return this.detune}getFilter(){return this.getFilters()[0]}setFilter(r){return this.setFilters(r?[r]:[])}setPlaybackRate(r){if(this.hasPlaybackControl===!1){console.warn("THREE.Audio: this Audio has no playback control.");return}return this.playbackRate=r,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(r){if(this.hasPlaybackControl===!1){console.warn("THREE.Audio: this Audio has no playback control.");return}return this.loop=r,this.isPlaying===!0&&(this.source.loop=this.loop),this}setLoopStart(r){return this.loopStart=r,this}setLoopEnd(r){return this.loopEnd=r,this}getVolume(){return this.gain.gain.value}setVolume(r){return this.gain.gain.setTargetAtTime(r,this.context.currentTime,.01),this}},sg=new A,uue=new Or,X0t=new A,ag=new A,B4=class extends zD{constructor(r){super(r),this.panner=this.context.createPanner(),this.panner.panningModel="HRTF",this.panner.connect(this.gain)}disconnect(){super.disconnect(),this.panner.disconnect(this.gain)}getOutput(){return this.panner}getRefDistance(){return this.panner.refDistance}setRefDistance(r){return this.panner.refDistance=r,this}getRolloffFactor(){return this.panner.rolloffFactor}setRolloffFactor(r){return this.panner.rolloffFactor=r,this}getDistanceModel(){return this.panner.distanceModel}setDistanceModel(r){return this.panner.distanceModel=r,this}getMaxDistance(){return this.panner.maxDistance}setMaxDistance(r){return this.panner.maxDistance=r,this}setDirectionalCone(r,e,i){return this.panner.coneInnerAngle=r,this.panner.coneOuterAngle=e,this.panner.coneOuterGain=i,this}updateMatrixWorld(r){if(super.updateMatrixWorld(r),this.hasPlaybackControl===!0&&this.isPlaying===!1)return;this.matrixWorld.decompose(sg,uue,X0t),ag.set(0,0,1).applyQuaternion(uue);let e=this.panner;if(e.positionX){let i=this.context.currentTime+this.listener.timeDelta;e.positionX.linearRampToValueAtTime(sg.x,i),e.positionY.linearRampToValueAtTime(sg.y,i),e.positionZ.linearRampToValueAtTime(sg.z,i),e.orientationX.linearRampToValueAtTime(ag.x,i),e.orientationY.linearRampToValueAtTime(ag.y,i),e.orientationZ.linearRampToValueAtTime(ag.z,i)}else e.setPosition(sg.x,sg.y,sg.z),e.setOrientation(ag.x,ag.y,ag.z)}},k4=class{constructor(r,e=2048){this.analyser=r.context.createAnalyser(),this.analyser.fftSize=e,this.data=new Uint8Array(this.analyser.frequencyBinCount),r.getOutput().connect(this.analyser)}getFrequencyData(){return this.analyser.getByteFrequencyData(this.data),this.data}getAverageFrequency(){let r=0,e=this.getFrequencyData();for(let i=0;i<e.length;i++)r+=e[i];return r/e.length}},jD=class{constructor(r,e,i){this.binding=r,this.valueSize=i;let n,s,a;switch(e){case"quaternion":n=this._slerp,s=this._slerpAdditive,a=this._setAdditiveIdentityQuaternion,this.buffer=new Float64Array(i*6),this._workIndex=5;break;case"string":case"bool":n=this._select,s=this._select,a=this._setAdditiveIdentityOther,this.buffer=new Array(i*5);break;default:n=this._lerp,s=this._lerpAdditive,a=this._setAdditiveIdentityNumeric,this.buffer=new Float64Array(i*5)}this._mixBufferRegion=n,this._mixBufferRegionAdditive=s,this._setIdentity=a,this._origIndex=3,this._addIndex=4,this.cumulativeWeight=0,this.cumulativeWeightAdditive=0,this.useCount=0,this.referenceCount=0}accumulate(r,e){let i=this.buffer,n=this.valueSize,s=r*n+n,a=this.cumulativeWeight;if(a===0){for(let o=0;o!==n;++o)i[s+o]=i[o];a=e}else{a+=e;let o=e/a;this._mixBufferRegion(i,s,0,o,n)}this.cumulativeWeight=a}accumulateAdditive(r){let e=this.buffer,i=this.valueSize,n=i*this._addIndex;this.cumulativeWeightAdditive===0&&this._setIdentity(),this._mixBufferRegionAdditive(e,n,0,r,i),this.cumulativeWeightAdditive+=r}apply(r){let e=this.valueSize,i=this.buffer,n=r*e+e,s=this.cumulativeWeight,a=this.cumulativeWeightAdditive,o=this.binding;if(this.cumulativeWeight=0,this.cumulativeWeightAdditive=0,s<1){let l=e*this._origIndex;this._mixBufferRegion(i,n,l,1-s,e)}a>0&&this._mixBufferRegionAdditive(i,n,this._addIndex*e,1,e);for(let l=e,c=e+e;l!==c;++l)if(i[l]!==i[l+e]){o.setValue(i,n);break}}saveOriginalState(){let r=this.binding,e=this.buffer,i=this.valueSize,n=i*this._origIndex;r.getValue(e,n);for(let s=i,a=n;s!==a;++s)e[s]=e[n+s%i];this._setIdentity(),this.cumulativeWeight=0,this.cumulativeWeightAdditive=0}restoreOriginalState(){let r=this.valueSize*3;this.binding.setValue(this.buffer,r)}_setAdditiveIdentityNumeric(){let r=this._addIndex*this.valueSize,e=r+this.valueSize;for(let i=r;i<e;i++)this.buffer[i]=0}_setAdditiveIdentityQuaternion(){this._setAdditiveIdentityNumeric(),this.buffer[this._addIndex*this.valueSize+3]=1}_setAdditiveIdentityOther(){let r=this._origIndex*this.valueSize,e=this._addIndex*this.valueSize;for(let i=0;i<this.valueSize;i++)this.buffer[e+i]=this.buffer[r+i]}_select(r,e,i,n,s){if(n>=.5)for(let a=0;a!==s;++a)r[e+a]=r[i+a]}_slerp(r,e,i,n){Or.slerpFlat(r,e,r,e,r,i,n)}_slerpAdditive(r,e,i,n,s){let a=this._workIndex*s;Or.multiplyQuaternionsFlat(r,a,r,e,r,i),Or.slerpFlat(r,e,r,e,r,a,n)}_lerp(r,e,i,n,s){let a=1-n;for(let o=0;o!==s;++o){let l=e+o;r[l]=r[l]*a+r[i+o]*n}}_lerpAdditive(r,e,i,n,s){for(let a=0;a!==s;++a){let o=e+a;r[o]=r[o]+r[i+a]*n}}},PU="\\[\\]\\.:\\/",$0t=new RegExp("["+PU+"]","g"),NU="[^"+PU+"]",Z0t="[^"+PU.replace("\\.","")+"]",K0t=/((?:WC+[\/:])*)/.source.replace("WC",NU),J0t=/(WCOD+)?/.source.replace("WCOD",Z0t),Q0t=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",NU),evt=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",NU),tvt=new RegExp("^"+K0t+J0t+Q0t+evt+"$"),rvt=["material","materials","bones","map"],G4=class{constructor(r,e,i){let n=i||Cr.parseTrackName(e);this._targetGroup=r,this._bindings=r.subscribe_(e,n)}getValue(r,e){this.bind();let i=this._targetGroup.nCachedObjects_,n=this._bindings[i];n!==void 0&&n.getValue(r,e)}setValue(r,e){let i=this._bindings;for(let n=this._targetGroup.nCachedObjects_,s=i.length;n!==s;++n)i[n].setValue(r,e)}bind(){let r=this._bindings;for(let e=this._targetGroup.nCachedObjects_,i=r.length;e!==i;++e)r[e].bind()}unbind(){let r=this._bindings;for(let e=this._targetGroup.nCachedObjects_,i=r.length;e!==i;++e)r[e].unbind()}},Cr=class{constructor(r,e,i){this.path=e,this.parsedPath=i||Cr.parseTrackName(e),this.node=Cr.findNode(r,this.parsedPath.nodeName)||r,this.rootNode=r,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(r,e,i){return r&&r.isAnimationObjectGroup?new Cr.Composite(r,e,i):new Cr(r,e,i)}static sanitizeNodeName(r){return r.replace(/\s/g,"_").replace($0t,"")}static parseTrackName(r){let e=tvt.exec(r);if(e===null)throw new Error("PropertyBinding: Cannot parse trackName: "+r);let i={nodeName:e[2],objectName:e[3],objectIndex:e[4],propertyName:e[5],propertyIndex:e[6]},n=i.nodeName&&i.nodeName.lastIndexOf(".");if(n!==void 0&&n!==-1){let s=i.nodeName.substring(n+1);rvt.indexOf(s)!==-1&&(i.nodeName=i.nodeName.substring(0,n),i.objectName=s)}if(i.propertyName===null||i.propertyName.length===0)throw new Error("PropertyBinding: can not parse propertyName from trackName: "+r);return i}static findNode(r,e){if(e===void 0||e===""||e==="."||e===-1||e===r.name||e===r.uuid)return r;if(r.skeleton){let i=r.skeleton.getBoneByName(e);if(i!==void 0)return i}if(r.children){let i=function(s){for(let a=0;a<s.length;a++){let o=s[a];if(o.name===e||o.uuid===e)return o;let l=i(o.children);if(l)return l}return null},n=i(r.children);if(n)return n}return null}_getValue_unavailable(){}_setValue_unavailable(){}_getValue_direct(r,e){r[e]=this.targetObject[this.propertyName]}_getValue_array(r,e){let i=this.resolvedProperty;for(let n=0,s=i.length;n!==s;++n)r[e++]=i[n]}_getValue_arrayElement(r,e){r[e]=this.resolvedProperty[this.propertyIndex]}_getValue_toArray(r,e){this.resolvedProperty.toArray(r,e)}_setValue_direct(r,e){this.targetObject[this.propertyName]=r[e]}_setValue_direct_setNeedsUpdate(r,e){this.targetObject[this.propertyName]=r[e],this.targetObject.needsUpdate=!0}_setValue_direct_setMatrixWorldNeedsUpdate(r,e){this.targetObject[this.propertyName]=r[e],this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_array(r,e){let i=this.resolvedProperty;for(let n=0,s=i.length;n!==s;++n)i[n]=r[e++]}_setValue_array_setNeedsUpdate(r,e){let i=this.resolvedProperty;for(let n=0,s=i.length;n!==s;++n)i[n]=r[e++];this.targetObject.needsUpdate=!0}_setValue_array_setMatrixWorldNeedsUpdate(r,e){let i=this.resolvedProperty;for(let n=0,s=i.length;n!==s;++n)i[n]=r[e++];this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_arrayElement(r,e){this.resolvedProperty[this.propertyIndex]=r[e]}_setValue_arrayElement_setNeedsUpdate(r,e){this.resolvedProperty[this.propertyIndex]=r[e],this.targetObject.needsUpdate=!0}_setValue_arrayElement_setMatrixWorldNeedsUpdate(r,e){this.resolvedProperty[this.propertyIndex]=r[e],this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_fromArray(r,e){this.resolvedProperty.fromArray(r,e)}_setValue_fromArray_setNeedsUpdate(r,e){this.resolvedProperty.fromArray(r,e),this.targetObject.needsUpdate=!0}_setValue_fromArray_setMatrixWorldNeedsUpdate(r,e){this.resolvedProperty.fromArray(r,e),this.targetObject.matrixWorldNeedsUpdate=!0}_getValue_unbound(r,e){this.bind(),this.getValue(r,e)}_setValue_unbound(r,e){this.bind(),this.setValue(r,e)}bind(){let r=this.node,e=this.parsedPath,i=e.objectName,n=e.propertyName,s=e.propertyIndex;if(r||(r=Cr.findNode(this.rootNode,e.nodeName)||this.rootNode,this.node=r),this.getValue=this._getValue_unavailable,this.setValue=this._setValue_unavailable,!r){console.error("THREE.PropertyBinding: Trying to update node for track: "+this.path+" but it wasn't found.");return}if(i){let c=e.objectIndex;switch(i){case"materials":if(!r.material){console.error("THREE.PropertyBinding: Can not bind to material as node does not have a material.",this);return}if(!r.material.materials){console.error("THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.",this);return}r=r.material.materials;break;case"bones":if(!r.skeleton){console.error("THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.",this);return}r=r.skeleton.bones;for(let u=0;u<r.length;u++)if(r[u].name===c){c=u;break}break;case"map":if("map"in r){r=r.map;break}if(!r.material){console.error("THREE.PropertyBinding: Can not bind to material as node does not have a material.",this);return}if(!r.material.map){console.error("THREE.PropertyBinding: Can not bind to material.map as node.material does not have a map.",this);return}r=r.material.map;break;default:if(r[i]===void 0){console.error("THREE.PropertyBinding: Can not bind to objectName of node undefined.",this);return}r=r[i]}if(c!==void 0){if(r[c]===void 0){console.error("THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.",this,r);return}r=r[c]}}let a=r[n];if(a===void 0){let c=e.nodeName;console.error("THREE.PropertyBinding: Trying to update property for track: "+c+"."+n+" but it wasn't found.",r);return}let o=this.Versioning.None;this.targetObject=r,r.needsUpdate!==void 0?o=this.Versioning.NeedsUpdate:r.matrixWorldNeedsUpdate!==void 0&&(o=this.Versioning.MatrixWorldNeedsUpdate);let l=this.BindingType.Direct;if(s!==void 0){if(n==="morphTargetInfluences"){if(!r.geometry){console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.",this);return}if(!r.geometry.morphAttributes){console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.",this);return}r.morphTargetDictionary[s]!==void 0&&(s=r.morphTargetDictionary[s])}l=this.BindingType.ArrayElement,this.resolvedProperty=a,this.propertyIndex=s}else a.fromArray!==void 0&&a.toArray!==void 0?(l=this.BindingType.HasFromToArray,this.resolvedProperty=a):Array.isArray(a)?(l=this.BindingType.EntireArray,this.resolvedProperty=a):this.propertyName=n;this.getValue=this.GetterByBindingType[l],this.setValue=this.SetterByBindingTypeAndVersioning[l][o]}unbind(){this.node=null,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}};Cr.Composite=G4;Cr.prototype.BindingType={Direct:0,EntireArray:1,ArrayElement:2,HasFromToArray:3};Cr.prototype.Versioning={None:0,NeedsUpdate:1,MatrixWorldNeedsUpdate:2};Cr.prototype.GetterByBindingType=[Cr.prototype._getValue_direct,Cr.prototype._getValue_array,Cr.prototype._getValue_arrayElement,Cr.prototype._getValue_toArray];Cr.prototype.SetterByBindingTypeAndVersioning=[[Cr.prototype._setValue_direct,Cr.prototype._setValue_direct_setNeedsUpdate,Cr.prototype._setValue_direct_setMatrixWorldNeedsUpdate],[Cr.prototype._setValue_array,Cr.prototype._setValue_array_setNeedsUpdate,Cr.prototype._setValue_array_setMatrixWorldNeedsUpdate],[Cr.prototype._setValue_arrayElement,Cr.prototype._setValue_arrayElement_setNeedsUpdate,Cr.prototype._setValue_arrayElement_setMatrixWorldNeedsUpdate],[Cr.prototype._setValue_fromArray,Cr.prototype._setValue_fromArray_setNeedsUpdate,Cr.prototype._setValue_fromArray_setMatrixWorldNeedsUpdate]];var V4=class{constructor(){this.isAnimationObjectGroup=!0,this.uuid=ko(),this._objects=Array.prototype.slice.call(arguments),this.nCachedObjects_=0;let r={};this._indicesByUUID=r;for(let i=0,n=arguments.length;i!==n;++i)r[arguments[i].uuid]=i;this._paths=[],this._parsedPaths=[],this._bindings=[],this._bindingsIndicesByPath={};let e=this;this.stats={objects:{get total(){return e._objects.length},get inUse(){return this.total-e.nCachedObjects_}},get bindingsPerObject(){return e._bindings.length}}}add(){let r=this._objects,e=this._indicesByUUID,i=this._paths,n=this._parsedPaths,s=this._bindings,a=s.length,o,l=r.length,c=this.nCachedObjects_;for(let u=0,h=arguments.length;u!==h;++u){let p=arguments[u],d=p.uuid,f=e[d];if(f===void 0){f=l++,e[d]=f,r.push(p);for(let m=0,g=a;m!==g;++m)s[m].push(new Cr(p,i[m],n[m]))}else if(f<c){o=r[f];let m=--c,g=r[m];e[g.uuid]=f,r[f]=g,e[d]=m,r[m]=p;for(let y=0,E=a;y!==E;++y){let b=s[y],x=b[m],S=b[f];b[f]=x,S===void 0&&(S=new Cr(p,i[y],n[y])),b[m]=S}}else r[f]!==o&&console.error("THREE.AnimationObjectGroup: Different objects with the same UUID detected. Clean the caches or recreate your infrastructure when reloading scenes.")}this.nCachedObjects_=c}remove(){let r=this._objects,e=this._indicesByUUID,i=this._bindings,n=i.length,s=this.nCachedObjects_;for(let a=0,o=arguments.length;a!==o;++a){let l=arguments[a],c=l.uuid,u=e[c];if(u!==void 0&&u>=s){let h=s++,p=r[h];e[p.uuid]=u,r[u]=p,e[c]=h,r[h]=l;for(let d=0,f=n;d!==f;++d){let m=i[d],g=m[h],y=m[u];m[u]=g,m[h]=y}}}this.nCachedObjects_=s}uncache(){let r=this._objects,e=this._indicesByUUID,i=this._bindings,n=i.length,s=this.nCachedObjects_,a=r.length;for(let o=0,l=arguments.length;o!==l;++o){let c=arguments[o],u=c.uuid,h=e[u];if(h!==void 0)if(delete e[u],h<s){let p=--s,d=r[p],f=--a,m=r[f];e[d.uuid]=h,r[h]=d,e[m.uuid]=p,r[p]=m,r.pop();for(let g=0,y=n;g!==y;++g){let E=i[g],b=E[p],x=E[f];E[h]=b,E[p]=x,E.pop()}}else{let p=--a,d=r[p];p>0&&(e[d.uuid]=h),r[h]=d,r.pop();for(let f=0,m=n;f!==m;++f){let g=i[f];g[h]=g[p],g.pop()}}}this.nCachedObjects_=s}subscribe_(r,e){let i=this._bindingsIndicesByPath,n=i[r],s=this._bindings;if(n!==void 0)return s[n];let a=this._paths,o=this._parsedPaths,l=this._objects,c=l.length,u=this.nCachedObjects_,h=new Array(c);n=s.length,i[r]=n,a.push(r),o.push(e),s.push(h);for(let p=u,d=l.length;p!==d;++p){let f=l[p];h[p]=new Cr(f,r,e)}return h}unsubscribe_(r){let e=this._bindingsIndicesByPath,i=e[r];if(i!==void 0){let n=this._paths,s=this._parsedPaths,a=this._bindings,o=a.length-1,l=a[o],c=r[o];e[c]=i,a[i]=l,a.pop(),s[i]=s[o],s.pop(),n[i]=n[o],n.pop()}}},z4=class{constructor(r,e,i=null,n=e.blendMode){this._mixer=r,this._clip=e,this._localRoot=i,this.blendMode=n;let s=e.tracks,a=s.length,o=new Array(a),l={endingStart:cg,endingEnd:cg};for(let c=0;c!==a;++c){let u=s[c].createInterpolant(null);o[c]=u,u.settings=l}this._interpolantSettings=l,this._interpolants=o,this._propertyBindings=new Array(a),this._cacheIndex=null,this._byClipCacheIndex=null,this._timeScaleInterpolant=null,this._weightInterpolant=null,this.loop=ihe,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(r){return this._startTime=r,this}setLoop(r,e){return this.loop=r,this.repetitions=e,this}setEffectiveWeight(r){return this.weight=r,this._effectiveWeight=this.enabled?r:0,this.stopFading()}getEffectiveWeight(){return this._effectiveWeight}fadeIn(r){return this._scheduleFading(r,0,1)}fadeOut(r){return this._scheduleFading(r,1,0)}crossFadeFrom(r,e,i){if(r.fadeOut(e),this.fadeIn(e),i){let n=this._clip.duration,s=r._clip.duration,a=s/n,o=n/s;r.warp(1,a,e),this.warp(o,1,e)}return this}crossFadeTo(r,e,i){return r.crossFadeFrom(this,e,i)}stopFading(){let r=this._weightInterpolant;return r!==null&&(this._weightInterpolant=null,this._mixer._takeBackControlInterpolant(r)),this}setEffectiveTimeScale(r){return this.timeScale=r,this._effectiveTimeScale=this.paused?0:r,this.stopWarping()}getEffectiveTimeScale(){return this._effectiveTimeScale}setDuration(r){return this.timeScale=this._clip.duration/r,this.stopWarping()}syncWith(r){return this.time=r.time,this.timeScale=r.timeScale,this.stopWarping()}halt(r){return this.warp(this._effectiveTimeScale,0,r)}warp(r,e,i){let n=this._mixer,s=n.time,a=this.timeScale,o=this._timeScaleInterpolant;o===null&&(o=n._lendControlInterpolant(),this._timeScaleInterpolant=o);let l=o.parameterPositions,c=o.sampleValues;return l[0]=s,l[1]=s+i,c[0]=r/a,c[1]=e/a,this}stopWarping(){let r=this._timeScaleInterpolant;return r!==null&&(this._timeScaleInterpolant=null,this._mixer._takeBackControlInterpolant(r)),this}getMixer(){return this._mixer}getClip(){return this._clip}getRoot(){return this._localRoot||this._mixer._root}_update(r,e,i,n){if(!this.enabled){this._updateWeight(r);return}let s=this._startTime;if(s!==null){let l=(r-s)*i;l<0||i===0?e=0:(this._startTime=null,e=i*l)}e*=this._updateTimeScale(r);let a=this._updateTime(e),o=this._updateWeight(r);if(o>0){let l=this._interpolants,c=this._propertyBindings;switch(this.blendMode){case _U:for(let u=0,h=l.length;u!==h;++u)l[u].evaluate(a),c[u].accumulateAdditive(o);break;case $D:default:for(let u=0,h=l.length;u!==h;++u)l[u].evaluate(a),c[u].accumulate(n,o)}}}_updateWeight(r){let e=0;if(this.enabled){e=this.weight;let i=this._weightInterpolant;if(i!==null){let n=i.evaluate(r)[0];e*=n,r>i.parameterPositions[1]&&(this.stopFading(),n===0&&(this.enabled=!1))}}return this._effectiveWeight=e,e}_updateTimeScale(r){let e=0;if(!this.paused){e=this.timeScale;let i=this._timeScaleInterpolant;if(i!==null){let n=i.evaluate(r)[0];e*=n,r>i.parameterPositions[1]&&(this.stopWarping(),e===0?this.paused=!0:this.timeScale=e)}}return this._effectiveTimeScale=e,e}_updateTime(r){let e=this._clip.duration,i=this.loop,n=this.time+r,s=this._loopCount,a=i===nhe;if(r===0)return s===-1?n:a&&(s&1)===1?e-n:n;if(i===rhe){s===-1&&(this._loopCount=0,this._setEndings(!0,!0,!1));e:{if(n>=e)n=e;else if(n<0)n=0;else{this.time=n;break e}this.clampWhenFinished?this.paused=!0:this.enabled=!1,this.time=n,this._mixer.dispatchEvent({type:"finished",action:this,direction:r<0?-1:1})}}else{if(s===-1&&(r>=0?(s=0,this._setEndings(!0,this.repetitions===0,a)):this._setEndings(this.repetitions===0,!0,a)),n>=e||n<0){let o=Math.floor(n/e);n-=e*o,s+=Math.abs(o);let l=this.repetitions-s;if(l<=0)this.clampWhenFinished?this.paused=!0:this.enabled=!1,n=r>0?e:0,this.time=n,this._mixer.dispatchEvent({type:"finished",action:this,direction:r>0?1:-1});else{if(l===1){let c=r<0;this._setEndings(c,!c,a)}else this._setEndings(!1,!1,a);this._loopCount=s,this.time=n,this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:o})}}else this.time=n;if(a&&(s&1)===1)return e-n}return n}_setEndings(r,e,i){let n=this._interpolantSettings;i?(n.endingStart=ug,n.endingEnd=ug):(r?n.endingStart=this.zeroSlopeAtStart?ug:cg:n.endingStart=Kb,e?n.endingEnd=this.zeroSlopeAtEnd?ug:cg:n.endingEnd=Kb)}_scheduleFading(r,e,i){let n=this._mixer,s=n.time,a=this._weightInterpolant;a===null&&(a=n._lendControlInterpolant(),this._weightInterpolant=a);let o=a.parameterPositions,l=a.sampleValues;return o[0]=s,l[0]=e,o[1]=s+r,l[1]=i,this}},ivt=new Float32Array(1),j4=class extends Ra{constructor(r){super(),this._root=r,this._initMemoryManager(),this._accuIndex=0,this.time=0,this.timeScale=1}_bindAction(r,e){let i=r._localRoot||this._root,n=r._clip.tracks,s=n.length,a=r._propertyBindings,o=r._interpolants,l=i.uuid,c=this._bindingsByRootAndName,u=c[l];u===void 0&&(u={},c[l]=u);for(let h=0;h!==s;++h){let p=n[h],d=p.name,f=u[d];if(f!==void 0)++f.referenceCount,a[h]=f;else{if(f=a[h],f!==void 0){f._cacheIndex===null&&(++f.referenceCount,this._addInactiveBinding(f,l,d));continue}let m=e&&e._propertyBindings[h].binding.parsedPath;f=new jD(Cr.create(i,d,m),p.ValueTypeName,p.getValueSize()),++f.referenceCount,this._addInactiveBinding(f,l,d),a[h]=f}o[h].resultBuffer=f.buffer}}_activateAction(r){if(!this._isActiveAction(r)){if(r._cacheIndex===null){let i=(r._localRoot||this._root).uuid,n=r._clip.uuid,s=this._actionsByClip[n];this._bindAction(r,s&&s.knownActions[0]),this._addInactiveAction(r,n,i)}let e=r._propertyBindings;for(let i=0,n=e.length;i!==n;++i){let s=e[i];s.useCount++===0&&(this._lendBinding(s),s.saveOriginalState())}this._lendAction(r)}}_deactivateAction(r){if(this._isActiveAction(r)){let e=r._propertyBindings;for(let i=0,n=e.length;i!==n;++i){let s=e[i];--s.useCount===0&&(s.restoreOriginalState(),this._takeBackBinding(s))}this._takeBackAction(r)}}_initMemoryManager(){this._actions=[],this._nActiveActions=0,this._actionsByClip={},this._bindings=[],this._nActiveBindings=0,this._bindingsByRootAndName={},this._controlInterpolants=[],this._nActiveControlInterpolants=0;let r=this;this.stats={actions:{get total(){return r._actions.length},get inUse(){return r._nActiveActions}},bindings:{get total(){return r._bindings.length},get inUse(){return r._nActiveBindings}},controlInterpolants:{get total(){return r._controlInterpolants.length},get inUse(){return r._nActiveControlInterpolants}}}}_isActiveAction(r){let e=r._cacheIndex;return e!==null&&e<this._nActiveActions}_addInactiveAction(r,e,i){let n=this._actions,s=this._actionsByClip,a=s[e];if(a===void 0)a={knownActions:[r],actionByRoot:{}},r._byClipCacheIndex=0,s[e]=a;else{let o=a.knownActions;r._byClipCacheIndex=o.length,o.push(r)}r._cacheIndex=n.length,n.push(r),a.actionByRoot[i]=r}_removeInactiveAction(r){let e=this._actions,i=e[e.length-1],n=r._cacheIndex;i._cacheIndex=n,e[n]=i,e.pop(),r._cacheIndex=null;let s=r._clip.uuid,a=this._actionsByClip,o=a[s],l=o.knownActions,c=l[l.length-1],u=r._byClipCacheIndex;c._byClipCacheIndex=u,l[u]=c,l.pop(),r._byClipCacheIndex=null;let h=o.actionByRoot,p=(r._localRoot||this._root).uuid;delete h[p],l.length===0&&delete a[s],this._removeInactiveBindingsForAction(r)}_removeInactiveBindingsForAction(r){let e=r._propertyBindings;for(let i=0,n=e.length;i!==n;++i){let s=e[i];--s.referenceCount===0&&this._removeInactiveBinding(s)}}_lendAction(r){let e=this._actions,i=r._cacheIndex,n=this._nActiveActions++,s=e[n];r._cacheIndex=n,e[n]=r,s._cacheIndex=i,e[i]=s}_takeBackAction(r){let e=this._actions,i=r._cacheIndex,n=--this._nActiveActions,s=e[n];r._cacheIndex=n,e[n]=r,s._cacheIndex=i,e[i]=s}_addInactiveBinding(r,e,i){let n=this._bindingsByRootAndName,s=this._bindings,a=n[e];a===void 0&&(a={},n[e]=a),a[i]=r,r._cacheIndex=s.length,s.push(r)}_removeInactiveBinding(r){let e=this._bindings,i=r.binding,n=i.rootNode.uuid,s=i.path,a=this._bindingsByRootAndName,o=a[n],l=e[e.length-1],c=r._cacheIndex;l._cacheIndex=c,e[c]=l,e.pop(),delete o[s],Object.keys(o).length===0&&delete a[n]}_lendBinding(r){let e=this._bindings,i=r._cacheIndex,n=this._nActiveBindings++,s=e[n];r._cacheIndex=n,e[n]=r,s._cacheIndex=i,e[i]=s}_takeBackBinding(r){let e=this._bindings,i=r._cacheIndex,n=--this._nActiveBindings,s=e[n];r._cacheIndex=n,e[n]=r,s._cacheIndex=i,e[i]=s}_lendControlInterpolant(){let r=this._controlInterpolants,e=this._nActiveControlInterpolants++,i=r[e];return i===void 0&&(i=new px(new Float32Array(2),new Float32Array(2),1,ivt),i.__cacheIndex=e,r[e]=i),i}_takeBackControlInterpolant(r){let e=this._controlInterpolants,i=r.__cacheIndex,n=--this._nActiveControlInterpolants,s=e[n];r.__cacheIndex=n,e[n]=r,s.__cacheIndex=i,e[i]=s}clipAction(r,e,i){let n=e||this._root,s=n.uuid,a=typeof r=="string"?so.findByName(n,r):r,o=a!==null?a.uuid:r,l=this._actionsByClip[o],c=null;if(i===void 0&&(a!==null?i=a.blendMode:i=$D),l!==void 0){let h=l.actionByRoot[s];if(h!==void 0&&h.blendMode===i)return h;c=l.knownActions[0],a===null&&(a=c._clip)}if(a===null)return null;let u=new z4(this,a,e,i);return this._bindAction(u,c),this._addInactiveAction(u,o,s),u}existingAction(r,e){let i=e||this._root,n=i.uuid,s=typeof r=="string"?so.findByName(i,r):r,a=s?s.uuid:r,o=this._actionsByClip[a];return o!==void 0&&o.actionByRoot[n]||null}stopAllAction(){let r=this._actions,e=this._nActiveActions;for(let i=e-1;i>=0;--i)r[i].stop();return this}update(r){r*=this.timeScale;let e=this._actions,i=this._nActiveActions,n=this.time+=r,s=Math.sign(r),a=this._accuIndex^=1;for(let c=0;c!==i;++c)e[c]._update(n,r,s,a);let o=this._bindings,l=this._nActiveBindings;for(let c=0;c!==l;++c)o[c].apply(a);return this}setTime(r){this.time=0;for(let e=0;e<this._actions.length;e++)this._actions[e].time=0;return this.update(r)}getRoot(){return this._root}uncacheClip(r){let e=this._actions,i=r.uuid,n=this._actionsByClip,s=n[i];if(s!==void 0){let a=s.knownActions;for(let o=0,l=a.length;o!==l;++o){let c=a[o];this._deactivateAction(c);let u=c._cacheIndex,h=e[e.length-1];c._cacheIndex=null,c._byClipCacheIndex=null,h._cacheIndex=u,e[u]=h,e.pop(),this._removeInactiveBindingsForAction(c)}delete n[i]}}uncacheRoot(r){let e=r.uuid,i=this._actionsByClip;for(let a in i){let o=i[a].actionByRoot,l=o[e];l!==void 0&&(this._deactivateAction(l),this._removeInactiveAction(l))}let n=this._bindingsByRootAndName,s=n[e];if(s!==void 0)for(let a in s){let o=s[a];o.restoreOriginalState(),this._removeInactiveBinding(o)}}uncacheAction(r,e){let i=this.existingAction(r,e);i!==null&&(this._deactivateAction(i),this._removeInactiveAction(i))}},yx=class{constructor(r){this.value=r}clone(){return new yx(this.value.clone===void 0?this.value:this.value.clone())}},nvt=0,W4=class extends Ra{constructor(){super(),this.isUniformsGroup=!0,Object.defineProperty(this,"id",{value:nvt++}),this.name="",this.usage=Jb,this.uniforms=[]}add(r){return this.uniforms.push(r),this}remove(r){let e=this.uniforms.indexOf(r);return e!==-1&&this.uniforms.splice(e,1),this}setName(r){return this.name=r,this}setUsage(r){return this.usage=r,this}dispose(){return this.dispatchEvent({type:"dispose"}),this}copy(r){this.name=r.name,this.usage=r.usage;let e=r.uniforms;this.uniforms.length=0;for(let i=0,n=e.length;i<n;i++)this.uniforms.push(e[i].clone());return this}clone(){return new this.constructor().copy(this)}},q4=class extends Ep{constructor(r,e,i=1){super(r,e),this.isInstancedInterleavedBuffer=!0,this.meshPerAttribute=i}copy(r){return super.copy(r),this.meshPerAttribute=r.meshPerAttribute,this}clone(r){let e=super.clone(r);return e.meshPerAttribute=this.meshPerAttribute,e}toJSON(r){let e=super.toJSON(r);return e.isInstancedInterleavedBuffer=!0,e.meshPerAttribute=this.meshPerAttribute,e}},Y4=class{constructor(r,e,i,n,s){this.isGLBufferAttribute=!0,this.name="",this.buffer=r,this.type=e,this.itemSize=i,this.elementSize=n,this.count=s,this.version=0}set needsUpdate(r){r===!0&&this.version++}setBuffer(r){return this.buffer=r,this}setType(r,e){return this.type=r,this.elementSize=e,this}setItemSize(r){return this.itemSize=r,this}setCount(r){return this.count=r,this}},Oc=class{constructor(r,e,i=0,n=1/0){this.ray=new Vo(r,e),this.near=i,this.far=n,this.camera=null,this.layers=new My,this.params={Mesh:{},Line:{threshold:1},LOD:{},Points:{threshold:1},Sprite:{}}}set(r,e){this.ray.set(r,e)}setFromCamera(r,e){e.isPerspectiveCamera?(this.ray.origin.setFromMatrixPosition(e.matrixWorld),this.ray.direction.set(r.x,r.y,.5).unproject(e).sub(this.ray.origin).normalize(),this.camera=e):e.isOrthographicCamera?(this.ray.origin.set(r.x,r.y,(e.near+e.far)/(e.near-e.far)).unproject(e),this.ray.direction.set(0,0,-1).transformDirection(e.matrixWorld),this.camera=e):console.error("THREE.Raycaster: Unsupported camera type: "+e.type)}intersectObject(r,e=!0,i=[]){return X4(r,this,i,e),i.sort(hue),i}intersectObjects(r,e=!0,i=[]){for(let n=0,s=r.length;n<s;n++)X4(r[n],this,i,e);return i.sort(hue),i}};function hue(t,r){return t.distance-r.distance}function X4(t,r,e,i){if(t.layers.test(r.layers)&&t.raycast(r,e),i===!0){let n=t.children;for(let s=0,a=n.length;s<a;s++)X4(n[s],r,e,!0)}}var Pc=class{constructor(r=1,e=0,i=0){return this.radius=r,this.phi=e,this.theta=i,this}set(r,e,i){return this.radius=r,this.phi=e,this.theta=i,this}copy(r){return this.radius=r.radius,this.phi=r.phi,this.theta=r.theta,this}makeSafe(){return this.phi=Math.max(1e-6,Math.min(Math.PI-1e-6,this.phi)),this}setFromVector3(r){return this.setFromCartesianCoords(r.x,r.y,r.z)}setFromCartesianCoords(r,e,i){return this.radius=Math.sqrt(r*r+e*e+i*i),this.radius===0?(this.theta=0,this.phi=0):(this.theta=Math.atan2(r,i),this.phi=Math.acos(Qn(e/this.radius,-1,1))),this}clone(){return new this.constructor().copy(this)}},$4=class{constructor(r=1,e=0,i=0){return this.radius=r,this.theta=e,this.y=i,this}set(r,e,i){return this.radius=r,this.theta=e,this.y=i,this}copy(r){return this.radius=r.radius,this.theta=r.theta,this.y=r.y,this}setFromVector3(r){return this.setFromCartesianCoords(r.x,r.y,r.z)}setFromCartesianCoords(r,e,i){return this.radius=Math.sqrt(r*r+i*i),this.theta=Math.atan2(r,i),this.y=e,this}clone(){return new this.constructor().copy(this)}},pue=new le,Ds=class{constructor(r=new le(1/0,1/0),e=new le(-1/0,-1/0)){this.isBox2=!0,this.min=r,this.max=e}set(r,e){return this.min.copy(r),this.max.copy(e),this}setFromPoints(r){this.makeEmpty();for(let e=0,i=r.length;e<i;e++)this.expandByPoint(r[e]);return this}setFromCenterAndSize(r,e){let i=pue.copy(e).multiplyScalar(.5);return this.min.copy(r).sub(i),this.max.copy(r).add(i),this}clone(){return new this.constructor().copy(this)}copy(r){return this.min.copy(r.min),this.max.copy(r.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(r){return this.isEmpty()?r.set(0,0):r.addVectors(this.min,this.max).multiplyScalar(.5)}getSize(r){return this.isEmpty()?r.set(0,0):r.subVectors(this.max,this.min)}expandByPoint(r){return this.min.min(r),this.max.max(r),this}expandByVector(r){return this.min.sub(r),this.max.add(r),this}expandByScalar(r){return this.min.addScalar(-r),this.max.addScalar(r),this}containsPoint(r){return!(r.x<this.min.x||r.x>this.max.x||r.y<this.min.y||r.y>this.max.y)}containsBox(r){return this.min.x<=r.min.x&&r.max.x<=this.max.x&&this.min.y<=r.min.y&&r.max.y<=this.max.y}getParameter(r,e){return e.set((r.x-this.min.x)/(this.max.x-this.min.x),(r.y-this.min.y)/(this.max.y-this.min.y))}intersectsBox(r){return!(r.max.x<this.min.x||r.min.x>this.max.x||r.max.y<this.min.y||r.min.y>this.max.y)}clampPoint(r,e){return e.copy(r).clamp(this.min,this.max)}distanceToPoint(r){return pue.copy(r).clamp(this.min,this.max).sub(r).length()}intersect(r){return this.min.max(r.min),this.max.min(r.max),this}union(r){return this.min.min(r.min),this.max.max(r.max),this}translate(r){return this.min.add(r),this.max.add(r),this}equals(r){return r.min.equals(this.min)&&r.max.equals(this.max)}},due=new A,nD=new A,Ca=class{constructor(r=new A,e=new A){this.start=r,this.end=e}set(r,e){return this.start.copy(r),this.end.copy(e),this}copy(r){return this.start.copy(r.start),this.end.copy(r.end),this}getCenter(r){return r.addVectors(this.start,this.end).multiplyScalar(.5)}delta(r){return r.subVectors(this.end,this.start)}distanceSq(){return this.start.distanceToSquared(this.end)}distance(){return this.start.distanceTo(this.end)}at(r,e){return this.delta(e).multiplyScalar(r).add(this.start)}closestPointToPointParameter(r,e){due.subVectors(r,this.start),nD.subVectors(this.end,this.start);let i=nD.dot(nD),s=nD.dot(due)/i;return e&&(s=Qn(s,0,1)),s}closestPointToPoint(r,e,i){let n=this.closestPointToPointParameter(r,e);return this.delta(i).multiplyScalar(n).add(this.start)}applyMatrix4(r){return this.start.applyMatrix4(r),this.end.applyMatrix4(r),this}equals(r){return r.start.equals(this.start)&&r.end.equals(this.end)}clone(){return new this.constructor().copy(this)}},fue=new A,Z4=class extends pr{constructor(r,e){super(),this.light=r,this.matrix=r.matrixWorld,this.matrixAutoUpdate=!1,this.color=e,this.type="SpotLightHelper";let i=new it,n=[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 a=0,o=1,l=32;a<l;a++,o++){let c=a/l*Math.PI*2,u=o/l*Math.PI*2;n.push(Math.cos(c),Math.sin(c),1,Math.cos(u),Math.sin(u),1)}i.setAttribute("position",new ct(n,3));let s=new Tr({fog:!1,toneMapped:!1});this.cone=new oi(i,s),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);let r=this.light.distance?this.light.distance:1e3,e=r*Math.tan(this.light.angle);this.cone.scale.set(e,e,r),fue.setFromMatrixPosition(this.light.target.matrixWorld),this.cone.lookAt(fue),this.color!==void 0?this.cone.material.color.set(this.color):this.cone.material.color.copy(this.light.color)}},tf=new A,sD=new Ue,SH=new Ue,K4=class extends oi{constructor(r){let e=Ihe(r),i=new it,n=[],s=[],a=new Ve(0,0,1),o=new Ve(0,1,0);for(let c=0;c<e.length;c++){let u=e[c];u.parent&&u.parent.isBone&&(n.push(0,0,0),n.push(0,0,0),s.push(a.r,a.g,a.b),s.push(o.r,o.g,o.b))}i.setAttribute("position",new ct(n,3)),i.setAttribute("color",new ct(s,3));let l=new Tr({vertexColors:!0,depthTest:!1,depthWrite:!1,toneMapped:!1,transparent:!0});super(i,l),this.isSkeletonHelper=!0,this.type="SkeletonHelper",this.root=r,this.bones=e,this.matrix=r.matrixWorld,this.matrixAutoUpdate=!1}updateMatrixWorld(r){let e=this.bones,i=this.geometry,n=i.getAttribute("position");SH.copy(this.root.matrixWorld).invert();for(let s=0,a=0;s<e.length;s++){let o=e[s];o.parent&&o.parent.isBone&&(sD.multiplyMatrices(SH,o.matrixWorld),tf.setFromMatrixPosition(sD),n.setXYZ(a,tf.x,tf.y,tf.z),sD.multiplyMatrices(SH,o.parent.matrixWorld),tf.setFromMatrixPosition(sD),n.setXYZ(a+1,tf.x,tf.y,tf.z),a+=2)}i.getAttribute("position").needsUpdate=!0,super.updateMatrixWorld(r)}dispose(){this.geometry.dispose(),this.material.dispose()}};function Ihe(t){let r=[];t.isBone===!0&&r.push(t);for(let e=0;e<t.children.length;e++)r.push.apply(r,Ihe(t.children[e]));return r}var J4=class extends Je{constructor(r,e,i){let n=new ro(e,4,2),s=new or({wireframe:!0,fog:!1,toneMapped:!1});super(n,s),this.light=r,this.color=i,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)}},svt=new A,mue=new Ve,gue=new Ve,Q4=class extends pr{constructor(r,e,i){super(),this.light=r,this.matrix=r.matrixWorld,this.matrixAutoUpdate=!1,this.color=i,this.type="HemisphereLightHelper";let n=new uf(e);n.rotateY(Math.PI*.5),this.material=new or({wireframe:!0,fog:!1,toneMapped:!1}),this.color===void 0&&(this.material.vertexColors=!0);let s=n.getAttribute("position"),a=new Float32Array(s.count*3);n.setAttribute("color",new jt(a,3)),this.add(new Je(n,this.material)),this.update()}dispose(){this.children[0].geometry.dispose(),this.children[0].material.dispose()}update(){let r=this.children[0];if(this.color!==void 0)this.material.color.set(this.color);else{let e=r.geometry.getAttribute("color");mue.copy(this.light.color),gue.copy(this.light.groundColor);for(let i=0,n=e.count;i<n;i++){let s=i<n/2?mue:gue;e.setXYZ(i,s.r,s.g,s.b)}e.needsUpdate=!0}this.light.updateWorldMatrix(!0,!1),r.lookAt(svt.setFromMatrixPosition(this.light.matrixWorld).negate())}},Tx=class extends oi{constructor(r=10,e=10,i=4473924,n=8947848){i=new Ve(i),n=new Ve(n);let s=e/2,a=r/e,o=r/2,l=[],c=[];for(let p=0,d=0,f=-o;p<=e;p++,f+=a){l.push(-o,0,f,o,0,f),l.push(f,0,-o,f,0,o);let m=p===s?i:n;m.toArray(c,d),d+=3,m.toArray(c,d),d+=3,m.toArray(c,d),d+=3,m.toArray(c,d),d+=3}let u=new it;u.setAttribute("position",new ct(l,3)),u.setAttribute("color",new ct(c,3));let h=new Tr({vertexColors:!0,toneMapped:!1});super(u,h),this.type="GridHelper"}dispose(){this.geometry.dispose(),this.material.dispose()}},eU=class extends oi{constructor(r=10,e=16,i=8,n=64,s=4473924,a=8947848){s=new Ve(s),a=new Ve(a);let o=[],l=[];if(e>1)for(let h=0;h<e;h++){let p=h/e*(Math.PI*2),d=Math.sin(p)*r,f=Math.cos(p)*r;o.push(0,0,0),o.push(d,0,f);let m=h&1?s:a;l.push(m.r,m.g,m.b),l.push(m.r,m.g,m.b)}for(let h=0;h<i;h++){let p=h&1?s:a,d=r-r/i*h;for(let f=0;f<n;f++){let m=f/n*(Math.PI*2),g=Math.sin(m)*d,y=Math.cos(m)*d;o.push(g,0,y),l.push(p.r,p.g,p.b),m=(f+1)/n*(Math.PI*2),g=Math.sin(m)*d,y=Math.cos(m)*d,o.push(g,0,y),l.push(p.r,p.g,p.b)}}let c=new it;c.setAttribute("position",new ct(o,3)),c.setAttribute("color",new ct(l,3));let u=new Tr({vertexColors:!0,toneMapped:!1});super(c,u),this.type="PolarGridHelper"}dispose(){this.geometry.dispose(),this.material.dispose()}},vue=new A,aD=new A,yue=new A,Ex=class extends pr{constructor(r,e,i){super(),this.light=r,this.matrix=r.matrixWorld,this.matrixAutoUpdate=!1,this.color=i,this.type="DirectionalLightHelper",e===void 0&&(e=1);let n=new it;n.setAttribute("position",new ct([-e,e,0,e,e,0,e,-e,0,-e,-e,0,-e,e,0],3));let s=new Tr({fog:!1,toneMapped:!1});this.lightPlane=new _r(n,s),this.add(this.lightPlane),n=new it,n.setAttribute("position",new ct([0,0,0,0,0,1],3)),this.targetLine=new _r(n,s),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),vue.setFromMatrixPosition(this.light.matrixWorld),aD.setFromMatrixPosition(this.light.target.matrixWorld),yue.subVectors(aD,vue),this.lightPlane.lookAt(aD),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(aD),this.targetLine.scale.z=yue.length()}},oD=new A,kn=new vg,bx=class extends oi{constructor(r){let e=new it,i=new Tr({color:16777215,vertexColors:!0,toneMapped:!1}),n=[],s=[],a={};o("n1","n2"),o("n2","n4"),o("n4","n3"),o("n3","n1"),o("f1","f2"),o("f2","f4"),o("f4","f3"),o("f3","f1"),o("n1","f1"),o("n2","f2"),o("n3","f3"),o("n4","f4"),o("p","n1"),o("p","n2"),o("p","n3"),o("p","n4"),o("u1","u2"),o("u2","u3"),o("u3","u1"),o("c","t"),o("p","c"),o("cn1","cn2"),o("cn3","cn4"),o("cf1","cf2"),o("cf3","cf4");function o(f,m){l(f),l(m)}function l(f){n.push(0,0,0),s.push(0,0,0),a[f]===void 0&&(a[f]=[]),a[f].push(n.length/3-1)}e.setAttribute("position",new ct(n,3)),e.setAttribute("color",new ct(s,3)),super(e,i),this.type="CameraHelper",this.camera=r,this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix(),this.matrix=r.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=a,this.update();let c=new Ve(16755200),u=new Ve(16711680),h=new Ve(43775),p=new Ve(16777215),d=new Ve(3355443);this.setColors(c,u,h,p,d)}setColors(r,e,i,n,s){let o=this.geometry.getAttribute("color");o.setXYZ(0,r.r,r.g,r.b),o.setXYZ(1,r.r,r.g,r.b),o.setXYZ(2,r.r,r.g,r.b),o.setXYZ(3,r.r,r.g,r.b),o.setXYZ(4,r.r,r.g,r.b),o.setXYZ(5,r.r,r.g,r.b),o.setXYZ(6,r.r,r.g,r.b),o.setXYZ(7,r.r,r.g,r.b),o.setXYZ(8,r.r,r.g,r.b),o.setXYZ(9,r.r,r.g,r.b),o.setXYZ(10,r.r,r.g,r.b),o.setXYZ(11,r.r,r.g,r.b),o.setXYZ(12,r.r,r.g,r.b),o.setXYZ(13,r.r,r.g,r.b),o.setXYZ(14,r.r,r.g,r.b),o.setXYZ(15,r.r,r.g,r.b),o.setXYZ(16,r.r,r.g,r.b),o.setXYZ(17,r.r,r.g,r.b),o.setXYZ(18,r.r,r.g,r.b),o.setXYZ(19,r.r,r.g,r.b),o.setXYZ(20,r.r,r.g,r.b),o.setXYZ(21,r.r,r.g,r.b),o.setXYZ(22,r.r,r.g,r.b),o.setXYZ(23,r.r,r.g,r.b),o.setXYZ(24,e.r,e.g,e.b),o.setXYZ(25,e.r,e.g,e.b),o.setXYZ(26,e.r,e.g,e.b),o.setXYZ(27,e.r,e.g,e.b),o.setXYZ(28,e.r,e.g,e.b),o.setXYZ(29,e.r,e.g,e.b),o.setXYZ(30,e.r,e.g,e.b),o.setXYZ(31,e.r,e.g,e.b),o.setXYZ(32,i.r,i.g,i.b),o.setXYZ(33,i.r,i.g,i.b),o.setXYZ(34,i.r,i.g,i.b),o.setXYZ(35,i.r,i.g,i.b),o.setXYZ(36,i.r,i.g,i.b),o.setXYZ(37,i.r,i.g,i.b),o.setXYZ(38,n.r,n.g,n.b),o.setXYZ(39,n.r,n.g,n.b),o.setXYZ(40,s.r,s.g,s.b),o.setXYZ(41,s.r,s.g,s.b),o.setXYZ(42,s.r,s.g,s.b),o.setXYZ(43,s.r,s.g,s.b),o.setXYZ(44,s.r,s.g,s.b),o.setXYZ(45,s.r,s.g,s.b),o.setXYZ(46,s.r,s.g,s.b),o.setXYZ(47,s.r,s.g,s.b),o.setXYZ(48,s.r,s.g,s.b),o.setXYZ(49,s.r,s.g,s.b),o.needsUpdate=!0}update(){let r=this.geometry,e=this.pointMap,i=1,n=1;kn.projectionMatrixInverse.copy(this.camera.projectionMatrixInverse),Jn("c",e,r,kn,0,0,-1),Jn("t",e,r,kn,0,0,1),Jn("n1",e,r,kn,-i,-n,-1),Jn("n2",e,r,kn,i,-n,-1),Jn("n3",e,r,kn,-i,n,-1),Jn("n4",e,r,kn,i,n,-1),Jn("f1",e,r,kn,-i,-n,1),Jn("f2",e,r,kn,i,-n,1),Jn("f3",e,r,kn,-i,n,1),Jn("f4",e,r,kn,i,n,1),Jn("u1",e,r,kn,i*.7,n*1.1,-1),Jn("u2",e,r,kn,-i*.7,n*1.1,-1),Jn("u3",e,r,kn,0,n*2,-1),Jn("cf1",e,r,kn,-i,0,1),Jn("cf2",e,r,kn,i,0,1),Jn("cf3",e,r,kn,0,-n,1),Jn("cf4",e,r,kn,0,n,1),Jn("cn1",e,r,kn,-i,0,-1),Jn("cn2",e,r,kn,i,0,-1),Jn("cn3",e,r,kn,0,-n,-1),Jn("cn4",e,r,kn,0,n,-1),r.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};function Jn(t,r,e,i,n,s,a){oD.set(n,s,a).unproject(i);let o=r[t];if(o!==void 0){let l=e.getAttribute("position");for(let c=0,u=o.length;c<u;c++)l.setXYZ(o[c],oD.x,oD.y,oD.z)}}var lD=new Ot,Lg=class extends oi{constructor(r,e=16776960){let i=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]),n=new Float32Array(8*3),s=new it;s.setIndex(new jt(i,1)),s.setAttribute("position",new jt(n,3)),super(s,new Tr({color:e,toneMapped:!1})),this.object=r,this.type="BoxHelper",this.matrixAutoUpdate=!1,this.update()}update(r){if(r!==void 0&&console.warn("THREE.BoxHelper: .update() has no longer arguments."),this.object!==void 0&&lD.setFromObject(this.object),lD.isEmpty())return;let e=lD.min,i=lD.max,n=this.geometry.attributes.position,s=n.array;s[0]=i.x,s[1]=i.y,s[2]=i.z,s[3]=e.x,s[4]=i.y,s[5]=i.z,s[6]=e.x,s[7]=e.y,s[8]=i.z,s[9]=i.x,s[10]=e.y,s[11]=i.z,s[12]=i.x,s[13]=i.y,s[14]=e.z,s[15]=e.x,s[16]=i.y,s[17]=e.z,s[18]=e.x,s[19]=e.y,s[20]=e.z,s[21]=i.x,s[22]=e.y,s[23]=e.z,n.needsUpdate=!0,this.geometry.computeBoundingSphere()}setFromObject(r){return this.object=r,this.update(),this}copy(r,e){return super.copy(r,e),this.object=r.object,this}dispose(){this.geometry.dispose(),this.material.dispose()}},tU=class extends oi{constructor(r,e=16776960){let i=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]),n=[1,1,1,-1,1,1,-1,-1,1,1,-1,1,1,1,-1,-1,1,-1,-1,-1,-1,1,-1,-1],s=new it;s.setIndex(new jt(i,1)),s.setAttribute("position",new ct(n,3)),super(s,new Tr({color:e,toneMapped:!1})),this.box=r,this.type="Box3Helper",this.geometry.computeBoundingSphere()}updateMatrixWorld(r){let e=this.box;e.isEmpty()||(e.getCenter(this.position),e.getSize(this.scale),this.scale.multiplyScalar(.5),super.updateMatrixWorld(r))}dispose(){this.geometry.dispose(),this.material.dispose()}},rU=class extends _r{constructor(r,e=1,i=16776960){let n=i,s=[1,-1,0,-1,1,0,-1,-1,0,1,1,0,-1,1,0,-1,-1,0,1,-1,0,1,1,0],a=new it;a.setAttribute("position",new ct(s,3)),a.computeBoundingSphere(),super(a,new Tr({color:n,toneMapped:!1})),this.type="PlaneHelper",this.plane=r,this.size=e;let o=[1,1,0,-1,1,0,-1,-1,0,1,1,0,-1,-1,0,1,-1,0],l=new it;l.setAttribute("position",new ct(o,3)),l.computeBoundingSphere(),this.add(new Je(l,new or({color:n,opacity:.2,transparent:!0,depthWrite:!1,toneMapped:!1})))}updateMatrixWorld(r){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(r)}dispose(){this.geometry.dispose(),this.material.dispose(),this.children[0].geometry.dispose(),this.children[0].material.dispose()}},Tue=new A,cD,_H,Fg=class extends pr{constructor(r=new A(0,0,1),e=new A(0,0,0),i=1,n=16776960,s=i*.2,a=s*.2){super(),this.type="ArrowHelper",cD===void 0&&(cD=new it,cD.setAttribute("position",new ct([0,0,0,0,1,0],3)),_H=new Dl(0,.5,1,5,1),_H.translate(0,-.5,0)),this.position.copy(e),this.line=new _r(cD,new Tr({color:n,toneMapped:!1})),this.line.matrixAutoUpdate=!1,this.add(this.line),this.cone=new Je(_H,new or({color:n,toneMapped:!1})),this.cone.matrixAutoUpdate=!1,this.add(this.cone),this.setDirection(r),this.setLength(i,s,a)}setDirection(r){if(r.y>.99999)this.quaternion.set(0,0,0,1);else if(r.y<-.99999)this.quaternion.set(1,0,0,0);else{Tue.set(r.z,0,-r.x).normalize();let e=Math.acos(r.y);this.quaternion.setFromAxisAngle(Tue,e)}}setLength(r,e=r*.2,i=e*.2){this.line.scale.set(1,Math.max(1e-4,r-e),1),this.line.updateMatrix(),this.cone.scale.set(i,e,i),this.cone.position.y=r,this.cone.updateMatrix()}setColor(r){this.line.material.color.set(r),this.cone.material.color.set(r)}copy(r){return super.copy(r,!1),this.line.copy(r.line),this.cone.copy(r.cone),this}dispose(){this.line.geometry.dispose(),this.line.material.dispose(),this.cone.geometry.dispose(),this.cone.material.dispose()}},iU=class extends oi{constructor(r=1){let e=[0,0,0,r,0,0,0,0,0,0,r,0,0,0,0,0,0,r],i=[1,0,0,1,.6,0,0,1,0,.6,1,0,0,0,1,0,.6,1],n=new it;n.setAttribute("position",new ct(e,3)),n.setAttribute("color",new ct(i,3));let s=new Tr({vertexColors:!0,toneMapped:!1});super(n,s),this.type="AxesHelper"}setColors(r,e,i){let n=new Ve,s=this.geometry.attributes.color.array;return n.set(r),n.toArray(s,0),n.toArray(s,3),n.set(e),n.toArray(s,6),n.toArray(s,9),n.set(i),n.toArray(s,12),n.toArray(s,15),this.geometry.attributes.color.needsUpdate=!0,this}dispose(){this.geometry.dispose(),this.material.dispose()}},xx=class{constructor(){this.type="ShapePath",this.color=new Ve,this.subPaths=[],this.currentPath=null}moveTo(r,e){return this.currentPath=new ku,this.subPaths.push(this.currentPath),this.currentPath.moveTo(r,e),this}lineTo(r,e){return this.currentPath.lineTo(r,e),this}quadraticCurveTo(r,e,i,n){return this.currentPath.quadraticCurveTo(r,e,i,n),this}bezierCurveTo(r,e,i,n,s,a){return this.currentPath.bezierCurveTo(r,e,i,n,s,a),this}splineThru(r){return this.currentPath.splineThru(r),this}toShapes(r){function e(y){let E=[];for(let b=0,x=y.length;b<x;b++){let S=y[b],D=new Ja;D.curves=S.curves,E.push(D)}return E}function i(y,E){let b=E.length,x=!1;for(let S=b-1,D=0;D<b;S=D++){let P=E[S],_=E[D],w=_.x-P.x,F=_.y-P.y;if(Math.abs(F)>Number.EPSILON){if(F<0&&(P=E[D],w=-w,_=E[S],F=-F),y.y<P.y||y.y>_.y)continue;if(y.y===P.y){if(y.x===P.x)return!0}else{let X=F*(y.x-P.x)-w*(y.y-P.y);if(X===0)return!0;if(X<0)continue;x=!x}}else{if(y.y!==P.y)continue;if(_.x<=y.x&&y.x<=P.x||P.x<=y.x&&y.x<=_.x)return!0}}return x}let n=es.isClockWise,s=this.subPaths;if(s.length===0)return[];let a,o,l,c=[];if(s.length===1)return o=s[0],l=new Ja,l.curves=o.curves,c.push(l),c;let u=!n(s[0].getPoints());u=r?!u:u;let h=[],p=[],d=[],f=0,m;p[f]=void 0,d[f]=[];for(let y=0,E=s.length;y<E;y++)o=s[y],m=o.getPoints(),a=n(m),a=r?!a:a,a?(!u&&p[f]&&f++,p[f]={s:new Ja,p:m},p[f].s.curves=o.curves,u&&f++,d[f]=[]):d[f].push({h:o,p:m[0]});if(!p[0])return e(s);if(p.length>1){let y=!1,E=0;for(let b=0,x=p.length;b<x;b++)h[b]=[];for(let b=0,x=p.length;b<x;b++){let S=d[b];for(let D=0;D<S.length;D++){let P=S[D],_=!0;for(let w=0;w<p.length;w++)i(P.p,p[w].p)&&(b!==w&&E++,_?(_=!1,h[w].push(P)):y=!0);_&&h[b].push(P)}}E>0&&y===!1&&(d=h)}let g;for(let y=0,E=p.length;y<E;y++){l=p[y].s,c.push(l),g=d[y];for(let b=0,x=g.length;b<x;b++)l.holes.push(g[b].h)}return c}},up=avt();function avt(){let t=new ArrayBuffer(4),r=new Float32Array(t),e=new Uint32Array(t),i=new Uint32Array(512),n=new Uint32Array(512);for(let l=0;l<256;++l){let c=l-127;c<-27?(i[l]=0,i[l|256]=32768,n[l]=24,n[l|256]=24):c<-14?(i[l]=1024>>-c-14,i[l|256]=1024>>-c-14|32768,n[l]=-c-1,n[l|256]=-c-1):c<=15?(i[l]=c+15<<10,i[l|256]=c+15<<10|32768,n[l]=13,n[l|256]=13):c<128?(i[l]=31744,i[l|256]=64512,n[l]=24,n[l|256]=24):(i[l]=31744,i[l|256]=64512,n[l]=13,n[l|256]=13)}let s=new Uint32Array(2048),a=new Uint32Array(64),o=new Uint32Array(64);for(let l=1;l<1024;++l){let c=l<<13,u=0;for(;!(c&8388608);)c<<=1,u-=8388608;c&=-8388609,u+=947912704,s[l]=c|u}for(let l=1024;l<2048;++l)s[l]=939524096+(l-1024<<13);for(let l=1;l<31;++l)a[l]=l<<23;a[31]=1199570944,a[32]=2147483648;for(let l=33;l<63;++l)a[l]=2147483648+(l-32<<23);a[63]=3347054592;for(let l=1;l<64;++l)l!==32&&(o[l]=1024);return{floatView:r,uint32View:e,baseTable:i,shiftTable:n,mantissaTable:s,exponentTable:a,offsetTable:o}}function ovt(t){Math.abs(t)>65504&&console.warn("THREE.DataUtils.toHalfFloat(): Value out of range."),t=Qn(t,-65504,65504),up.floatView[0]=t;let r=up.uint32View[0],e=r>>23&511;return up.baseTable[e]+((r&8388607)>>up.shiftTable[e])}function lvt(t){let r=t>>10;return up.uint32View[0]=up.mantissaTable[up.offsetTable[r]+(t&1023)]+up.exponentTable[r],up.floatView[0]}var zy=Object.freeze({__proto__:null,fromHalfFloat:lvt,toHalfFloat:ovt}),nU=class extends Qa{constructor(r,e,i,n,s,a){console.warn("THREE.BoxBufferGeometry has been renamed to THREE.BoxGeometry."),super(r,e,i,n,s,a)}},sU=class extends xg{constructor(r,e,i,n){console.warn("THREE.CapsuleBufferGeometry has been renamed to THREE.CapsuleGeometry."),super(r,e,i,n)}},aU=class extends Ig{constructor(r,e,i,n){console.warn("THREE.CircleBufferGeometry has been renamed to THREE.CircleGeometry."),super(r,e,i,n)}},oU=class extends Sg{constructor(r,e,i,n,s,a,o){console.warn("THREE.ConeBufferGeometry has been renamed to THREE.ConeGeometry."),super(r,e,i,n,s,a,o)}},lU=class extends Dl{constructor(r,e,i,n,s,a,o,l){console.warn("THREE.CylinderBufferGeometry has been renamed to THREE.CylinderGeometry."),super(r,e,i,n,s,a,o,l)}},cU=class extends _g{constructor(r,e){console.warn("THREE.DodecahedronBufferGeometry has been renamed to THREE.DodecahedronGeometry."),super(r,e)}},uU=class extends Sp{constructor(r,e){console.warn("THREE.ExtrudeBufferGeometry has been renamed to THREE.ExtrudeGeometry."),super(r,e)}},hU=class extends Rg{constructor(r,e){console.warn("THREE.IcosahedronBufferGeometry has been renamed to THREE.IcosahedronGeometry."),super(r,e)}},pU=class extends cf{constructor(r,e,i,n){console.warn("THREE.LatheBufferGeometry has been renamed to THREE.LatheGeometry."),super(r,e,i,n)}},dU=class extends uf{constructor(r,e){console.warn("THREE.OctahedronBufferGeometry has been renamed to THREE.OctahedronGeometry."),super(r,e)}},fU=class extends ts{constructor(r,e,i,n){console.warn("THREE.PlaneBufferGeometry has been renamed to THREE.PlaneGeometry."),super(r,e,i,n)}},mU=class extends Dc{constructor(r,e,i,n){console.warn("THREE.PolyhedronBufferGeometry has been renamed to THREE.PolyhedronGeometry."),super(r,e,i,n)}},gU=class extends Mg{constructor(r,e,i,n,s,a){console.warn("THREE.RingBufferGeometry has been renamed to THREE.RingGeometry."),super(r,e,i,n,s,a)}},vU=class extends _p{constructor(r,e){console.warn("THREE.ShapeBufferGeometry has been renamed to THREE.ShapeGeometry."),super(r,e)}},yU=class extends ro{constructor(r,e,i,n,s,a,o){console.warn("THREE.SphereBufferGeometry has been renamed to THREE.SphereGeometry."),super(r,e,i,n,s,a,o)}},TU=class extends Dg{constructor(r,e){console.warn("THREE.TetrahedronBufferGeometry has been renamed to THREE.TetrahedronGeometry."),super(r,e)}},EU=class extends wp{constructor(r,e,i,n,s){console.warn("THREE.TorusBufferGeometry has been renamed to THREE.TorusGeometry."),super(r,e,i,n,s)}},bU=class extends Cg{constructor(r,e,i,n,s,a){console.warn("THREE.TorusKnotBufferGeometry has been renamed to THREE.TorusKnotGeometry."),super(r,e,i,n,s,a)}},xU=class extends Ag{constructor(r,e,i,n,s){console.warn("THREE.TubeBufferGeometry has been renamed to THREE.TubeGeometry."),super(r,e,i,n,s)}};typeof __THREE_DEVTOOLS__!="undefined"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register",{detail:{revision:WD}}));typeof window!="undefined"&&(window.__THREE__?console.warn("WARNING: Multiple instances of Three.js being imported."):window.__THREE__=WD);var zu=new zi,She=new A,_he=new A,whe=new A,Rhe=new A;_r.prototype.raycast=function(t,r){let e=this.geometry,i=this.matrixWorld,n=t.params.Line.threshold,s=e.drawRange;if(e.boundingSphere===null&&e.computeBoundingSphere(),zu.copy(e.boundingSphere),zu.applyMatrix4(i),zu.radius+=n,t.ray.intersectsSphere(zu)===!1)return;let a=n*n,o=this.isLineSegments?2:1,l=e.index,u=e.attributes.position,h=r.length;if(l!==null){let p=this.userData.batches;if(p&&p.length>0&&p[0].boundingSphere)for(let d=0;d<p.length;d++){let f=p[d];if(zu.copy(f.boundingSphere),zu.applyMatrix4(i),t.ray.intersectsSphere(zu)!==!1)for(let m=f.indexStart,g=f.indexStart+f.indexCount;m<g;m+=o){let y=l.getX(m),E=l.getX(m+1);if(JD(this,u,t,y,E,a,r)&&(r[r.length-1].index=m,r.length-h>=1))return}}else{let d=Math.max(0,s.start),f=Math.min(l.count,s.start+s.count);for(let m=d,g=f-1;m<g;m+=o){let y=l.getX(m),E=l.getX(m+1);if(JD(this,u,t,y,E,a,r)&&(r[r.length-1].index=m,r.length-h>=1))return}}}else{let p=this.userData.batches;if(p&&p.length>0&&p[0].boundingSphere)for(let d=0;d<p.length;d++){let f=p[d];if(zu.copy(f.boundingSphere),zu.applyMatrix4(i),t.ray.intersectsSphere(zu)!==!1){for(let m=f.positionStart,g=f.positionStart+f.positionCount;m<g;m+=o)if(JD(this,u,t,m,m+1,a,r)&&r.length-h>=1)return}}else{let d=Math.max(0,s.start),f=Math.min(u.count,s.start+s.count);for(let m=d,g=f-1;m<g;m+=o)if(JD(this,u,t,m,m+1,a,r)&&r.length-h>=1)return}}};function JD(t,r,e,i,n,s,a){if(She.fromBufferAttribute(r,i).applyMatrix4(t.matrixWorld),_he.fromBufferAttribute(r,n).applyMatrix4(t.matrixWorld),e.ray.distanceSqToSegment(She,_he,Rhe,whe)>s)return!1;let l=e.ray.origin.distanceTo(Rhe);return l<e.near||l>e.far?!1:(a.push({distance:l,point:whe.clone(),index:i,object:t}),!0)}var Mhe=Math.pow(2,-24);var Ug=class{constructor(){}};function Ll(t,r,e){return e.min.x=r[t],e.min.y=r[t+1],e.min.z=r[t+2],e.max.x=r[t+3],e.max.y=r[t+4],e.max.z=r[t+5],e}function LU(t){let r=-1,e=-1/0;for(let i=0;i<3;i++){let n=t[i+3]-t[i];n>e&&(e=n,r=i)}return r}function FU(t,r){r.set(t)}function HU(t,r,e){let i,n;for(let s=0;s<3;s++){let a=s+3;i=t[s],n=r[s],e[s]=i<n?i:n,i=t[a],n=r[a],e[a]=i>n?i:n}}function Rx(t,r,e){for(let i=0;i<3;i++){let n=r[t+2*i],s=r[t+2*i+1],a=n-s,o=n+s;a<e[i]&&(e[i]=a),o>e[i+3]&&(e[i+3]=o)}}function jy(t){let r=t[3]-t[0],e=t[4]-t[1],i=t[5]-t[2];return 2*(r*e+e*i+i*r)}function hvt(t,r){if(!t.index){let e=t.attributes.position.count,i=r.useSharedArrayBuffer?SharedArrayBuffer:ArrayBuffer,n;e>65535?n=new Uint32Array(new i(4*e)):n=new Uint16Array(new i(2*e)),t.setIndex(new jt(n,1));for(let s=0;s<e;s++)n[s]=s}}function pvt(t){if(!t.groups||!t.groups.length)return[{offset:0,count:t.index.count/3}];let r=[],e=new Set;for(let n of t.groups)e.add(n.start),e.add(n.start+n.count);let i=Array.from(e.values()).sort((n,s)=>n-s);for(let n=0;n<i.length-1;n++){let s=i[n],a=i[n+1];r.push({offset:s/3,count:(a-s)/3})}return r}function BU(t,r,e,i,n=null){let s=1/0,a=1/0,o=1/0,l=-1/0,c=-1/0,u=-1/0,h=1/0,p=1/0,d=1/0,f=-1/0,m=-1/0,g=-1/0,y=n!==null;for(let E=r*6,b=(r+e)*6;E<b;E+=6){let x=t[E+0],S=t[E+1],D=x-S,P=x+S;D<s&&(s=D),P>l&&(l=P),y&&x<h&&(h=x),y&&x>f&&(f=x);let _=t[E+2],w=t[E+3],F=_-w,X=_+w;F<a&&(a=F),X>c&&(c=X),y&&_<p&&(p=_),y&&_>m&&(m=_);let H=t[E+4],he=t[E+5],C=H-he,N=H+he;C<o&&(o=C),N>u&&(u=N),y&&H<d&&(d=H),y&&H>g&&(g=H)}i[0]=s,i[1]=a,i[2]=o,i[3]=l,i[4]=c,i[5]=u,y&&(n[0]=h,n[1]=p,n[2]=d,n[3]=f,n[4]=m,n[5]=g)}function dvt(t,r,e,i){let n=1/0,s=1/0,a=1/0,o=-1/0,l=-1/0,c=-1/0;for(let u=r*6,h=(r+e)*6;u<h;u+=6){let p=t[u+0];p<n&&(n=p),p>o&&(o=p);let d=t[u+2];d<s&&(s=d),d>l&&(l=d);let f=t[u+4];f<a&&(a=f),f>c&&(c=f)}i[0]=n,i[1]=s,i[2]=a,i[3]=o,i[4]=l,i[5]=c}function fvt(t,r,e,i,n){let s=e,a=e+i-1,o=n.pos,l=n.axis*2;for(;;){for(;s<=a&&r[s*6+l]<o;)s++;for(;s<=a&&r[a*6+l]>=o;)a--;if(s<a){for(let c=0;c<3;c++){let u=t[s*3+c];t[s*3+c]=t[a*3+c],t[a*3+c]=u;let h=r[s*6+c*2+0];r[s*6+c*2+0]=r[a*6+c*2+0],r[a*6+c*2+0]=h;let p=r[s*6+c*2+1];r[s*6+c*2+1]=r[a*6+c*2+1],r[a*6+c*2+1]=p}s++,a--}else return s}}var Pp=32,mvt=(t,r)=>t.candidate-r.candidate,gf=new Array(Pp).fill().map(()=>({count:0,bounds:new Float32Array(6),rightCacheBounds:new Float32Array(6),leftCacheBounds:new Float32Array(6),candidate:0})),QD=new Float32Array(6);function gvt(t,r,e,i,n,s){let a=-1,o=0;if(s===0)a=LU(r),a!==-1&&(o=(r[a]+r[a+3])/2);else if(s===1)a=LU(t),a!==-1&&(o=vvt(e,i,n,a));else if(s===2){let l=jy(t),c=1.25*n,u=i*6,h=(i+n)*6;for(let p=0;p<3;p++){let d=r[p],g=(r[p+3]-d)/Pp;if(n<Pp/4){let y=[...gf];y.length=n;let E=0;for(let x=u;x<h;x+=6,E++){let S=y[E];S.candidate=e[x+2*p],S.count=0;let{bounds:D,leftCacheBounds:P,rightCacheBounds:_}=S;for(let w=0;w<3;w++)_[w]=1/0,_[w+3]=-1/0,P[w]=1/0,P[w+3]=-1/0,D[w]=1/0,D[w+3]=-1/0;Rx(x,e,D)}y.sort(mvt);let b=n;for(let x=0;x<b;x++){let S=y[x];for(;x+1<b&&y[x+1].candidate===S.candidate;)y.splice(x+1,1),b--}for(let x=u;x<h;x+=6){let S=e[x+2*p];for(let D=0;D<b;D++){let P=y[D];S>=P.candidate?Rx(x,e,P.rightCacheBounds):(Rx(x,e,P.leftCacheBounds),P.count++)}}for(let x=0;x<b;x++){let S=y[x],D=S.count,P=n-S.count,_=S.leftCacheBounds,w=S.rightCacheBounds,F=0;D!==0&&(F=jy(_)/l);let X=0;P!==0&&(X=jy(w)/l);let H=1+1.25*(F*D+X*P);H<c&&(a=p,c=H,o=S.candidate)}}else{for(let b=0;b<Pp;b++){let x=gf[b];x.count=0,x.candidate=d+g+b*g;let S=x.bounds;for(let D=0;D<3;D++)S[D]=1/0,S[D+3]=-1/0}for(let b=u;b<h;b+=6){let D=~~((e[b+2*p]-d)/g);D>=Pp&&(D=Pp-1);let P=gf[D];P.count++,Rx(b,e,P.bounds)}let y=gf[Pp-1];FU(y.bounds,y.rightCacheBounds);for(let b=Pp-2;b>=0;b--){let x=gf[b],S=gf[b+1];HU(x.bounds,S.rightCacheBounds,x.rightCacheBounds)}let E=0;for(let b=0;b<Pp-1;b++){let x=gf[b],S=x.count,D=x.bounds,_=gf[b+1].rightCacheBounds;S!==0&&(E===0?FU(D,QD):HU(D,QD,QD)),E+=S;let w=0,F=0;E!==0&&(w=jy(QD)/l);let X=n-E;X!==0&&(F=jy(_)/l);let H=1+1.25*(w*E+F*X);H<c&&(a=p,c=H,o=x.candidate)}}}}else console.warn(`MeshBVH: Invalid build strategy value ${s} used.`);return{axis:a,pos:o}}function vvt(t,r,e,i){let n=0;for(let s=r,a=r+e;s<a;s++)n+=t[s*6+i*2];return n/e}function yvt(t,r){let e=t.attributes.position,i=t.index.array,n=i.length/3,s=new Float32Array(n*6),a=e.normalized,o=e.array,l=e.offset||0,c=3;e.isInterleavedBufferAttribute&&(c=e.data.stride);let u=["getX","getY","getZ"];for(let h=0;h<n;h++){let p=h*3,d=h*6,f,m,g;a?(f=i[p+0],m=i[p+1],g=i[p+2]):(f=i[p+0]*c+l,m=i[p+1]*c+l,g=i[p+2]*c+l);for(let y=0;y<3;y++){let E,b,x;a?(E=e[u[y]](f),b=e[u[y]](m),x=e[u[y]](g)):(E=o[f+y],b=o[m+y],x=o[g+y]);let S=E;b<S&&(S=b),x<S&&(S=x);let D=E;b>D&&(D=b),x>D&&(D=x);let P=(D-S)/2,_=y*2;s[d+_+0]=S+P,s[d+_+1]=P+(Math.abs(S)+P)*Mhe,S<r[y]&&(r[y]=S),D>r[y+3]&&(r[y+3]=D)}}return s}function Tvt(t,r){function e(y){p&&p(y/d)}function i(y,E,b,x=null,S=0){if(!f&&S>=l&&(f=!0,c&&(console.warn(`MeshBVH: Max depth of ${l} reached when generating BVH. Consider increasing maxDepth.`),console.warn(t))),b<=u||S>=l)return e(E+b),y.offset=E,y.count=b,y;let D=gvt(y.boundingData,x,a,E,b,h);if(D.axis===-1)return e(E+b),y.offset=E,y.count=b,y;let P=fvt(o,a,E,b,D);if(P===E||P===E+b)e(E+b),y.offset=E,y.count=b;else{y.splitAxis=D.axis;let _=new Ug,w=E,F=P-E;y.left=_,_.boundingData=new Float32Array(6),BU(a,w,F,_.boundingData,s),i(_,w,F,s,S+1);let X=new Ug,H=P,he=b-F;y.right=X,X.boundingData=new Float32Array(6),BU(a,H,he,X.boundingData,s),i(X,H,he,s,S+1)}return y}hvt(t,r);let n=new Float32Array(6),s=new Float32Array(6),a=yvt(t,n),o=t.index.array,l=r.maxDepth,c=r.verbose,u=r.maxLeafTris,h=r.strategy,p=r.onProgress,d=t.index.count/3,f=!1,m=[],g=pvt(t);if(g.length===1){let y=g[0],E=new Ug;E.boundingData=n,dvt(a,y.offset,y.count,s),i(E,y.offset,y.count,s),m.push(E)}else for(let y of g){let E=new Ug;E.boundingData=new Float32Array(6),BU(a,y.offset,y.count,E.boundingData,s),i(E,y.offset,y.count,s),m.push(E)}return m}function Ahe(t,r){let e=Tvt(t,r),i,n,s,a=[],o=r.useSharedArrayBuffer?SharedArrayBuffer:ArrayBuffer;for(let u=0;u<e.length;u++){let h=e[u],p=l(h),d=new o(32*p);i=new Float32Array(d),n=new Uint32Array(d),s=new Uint16Array(d),c(0,h),a.push(d)}return a;function l(u){return u.count?1:1+l(u.left)+l(u.right)}function c(u,h){let p=u/4,d=u/2,f=!!h.count,m=h.boundingData;for(let g=0;g<6;g++)i[p+g]=m[g];if(f){let g=h.offset,y=h.count;return n[p+6]=g,s[d+14]=y,s[d+15]=65535,u+32}else{let g=h.left,y=h.right,E=h.splitAxis,b;if(b=c(u+32,g),b/4>Math.pow(2,32))throw new Error("MeshBVH: Cannot store child pointer greater than 32 bits.");return n[p+6]=b/4,b=c(b,y),n[p+7]=E,b}}}var lo=class{constructor(){this.min=1/0,this.max=-1/0}setFromPointsField(r,e){let i=1/0,n=-1/0;for(let s=0,a=r.length;s<a;s++){let l=r[s][e];i=l<i?l:i,n=l>n?l:n}this.min=i,this.max=n}setFromPoints(r,e){let i=1/0,n=-1/0;for(let s=0,a=e.length;s<a;s++){let o=e[s],l=r.dot(o);i=l<i?l:i,n=l>n?l:n}this.min=i,this.max=n}isSeparated(r){return this.min>r.max||r.min>this.max}};lo.prototype.setFromBox=function(){let t=new A;return function(e,i){let n=i.min,s=i.max,a=1/0,o=-1/0;for(let l=0;l<=1;l++)for(let c=0;c<=1;c++)for(let u=0;u<=1;u++){t.x=n.x*l+s.x*(1-l),t.y=n.y*c+s.y*(1-c),t.z=n.z*u+s.z*(1-u);let h=e.dot(t);a=Math.min(h,a),o=Math.max(h,o)}this.min=a,this.max=o}}();var kzt=function(){let t=new lo;return function(e,i){let n=e.points,s=e.satAxes,a=e.satBounds,o=i.points,l=i.satAxes,c=i.satBounds;for(let u=0;u<3;u++){let h=a[u],p=s[u];if(t.setFromPoints(p,o),h.isSeparated(t))return!1}for(let u=0;u<3;u++){let h=c[u],p=l[u];if(t.setFromPoints(p,n),h.isSeparated(t))return!1}}}();var Evt=function(){let t=new A,r=new A,e=new A;return function(n,s,a){let o=n.start,l=t,c=s.start,u=r;e.subVectors(o,c),t.subVectors(n.end,n.start),r.subVectors(s.end,s.start);let h=e.dot(u),p=u.dot(l),d=u.dot(u),f=e.dot(l),g=l.dot(l)*d-p*p,y,E;g!==0?y=(h*p-f*d)/g:y=0,E=(h+y*p)/d,a.x=y,a.y=E}}(),Mx=function(){let t=new le,r=new A,e=new A;return function(n,s,a,o){Evt(n,s,t);let l=t.x,c=t.y;if(l>=0&&l<=1&&c>=0&&c<=1){n.at(l,a),s.at(c,o);return}else if(l>=0&&l<=1){c<0?s.at(0,o):s.at(1,o),n.closestPointToPoint(o,!0,a);return}else if(c>=0&&c<=1){l<0?n.at(0,a):n.at(1,a),s.closestPointToPoint(a,!0,o);return}else{let u;l<0?u=n.start:u=n.end;let h;c<0?h=s.start:h=s.end;let p=r,d=e;if(n.closestPointToPoint(h,!0,r),s.closestPointToPoint(u,!0,e),p.distanceToSquared(h)<=d.distanceToSquared(u)){a.copy(p),o.copy(h);return}else{a.copy(u),o.copy(d);return}}}}(),Ohe=function(){let t=new A,r=new A,e=new Ei,i=new Ca;return function(s,a){let{radius:o,center:l}=s,{a:c,b:u,c:h}=a;if(i.start=c,i.end=u,i.closestPointToPoint(l,!0,t).distanceTo(l)<=o||(i.start=c,i.end=h,i.closestPointToPoint(l,!0,t).distanceTo(l)<=o)||(i.start=u,i.end=h,i.closestPointToPoint(l,!0,t).distanceTo(l)<=o))return!0;let m=a.getPlane(e);if(Math.abs(m.distanceToPoint(l))<=o){let y=m.projectPoint(l,r);if(a.containsPoint(y))return!0}return!1}}();var bvt=1e-15;function Wy(t){return Math.abs(t)<bvt}var co=class extends un{constructor(...r){super(...r),this.isExtendedTriangle=!0,this.satAxes=new Array(4).fill().map(()=>new A),this.satBounds=new Array(4).fill().map(()=>new lo),this.points=[this.a,this.b,this.c],this.sphere=new zi,this.plane=new Ei,this.needsUpdate=!0}intersectsSphere(r){return Ohe(r,this)}update(){let r=this.a,e=this.b,i=this.c,n=this.points,s=this.satAxes,a=this.satBounds,o=s[0],l=a[0];this.getNormal(o),l.setFromPoints(o,n);let c=s[1],u=a[1];c.subVectors(r,e),u.setFromPoints(c,n);let h=s[2],p=a[2];h.subVectors(e,i),p.setFromPoints(h,n);let d=s[3],f=a[3];d.subVectors(i,r),f.setFromPoints(d,n),this.sphere.setFromPoints(this.points),this.plane.setFromNormalAndCoplanarPoint(o,r),this.needsUpdate=!1}};co.prototype.closestPointToSegment=function(){let t=new A,r=new A,e=new Ca;return function(n,s=null,a=null){let{start:o,end:l}=n,c=this.points,u,h=1/0;for(let p=0;p<3;p++){let d=(p+1)%3;e.start.copy(c[p]),e.end.copy(c[d]),Mx(e,n,t,r),u=t.distanceToSquared(r),u<h&&(h=u,s&&s.copy(t),a&&a.copy(r))}return this.closestPointToPoint(o,t),u=o.distanceToSquared(t),u<h&&(h=u,s&&s.copy(t),a&&a.copy(o)),this.closestPointToPoint(l,t),u=l.distanceToSquared(t),u<h&&(h=u,s&&s.copy(t),a&&a.copy(l)),Math.sqrt(h)}}();co.prototype.intersectsTriangle=function(){let t=new co,r=new Array(3),e=new Array(3),i=new lo,n=new lo,s=new A,a=new A,o=new A,l=new A,c=new Ca,u=new Ca,h=new Ca;return function(d,f=null,m=!1){this.needsUpdate&&this.update(),d.isExtendedTriangle?d.needsUpdate&&d.update():(t.copy(d),t.update(),d=t);let g=this.plane,y=d.plane;if(Math.abs(g.normal.dot(y.normal))>1-1e-10){let E=this.satBounds,b=this.satAxes;e[0]=d.a,e[1]=d.b,e[2]=d.c;for(let D=0;D<4;D++){let P=E[D],_=b[D];if(i.setFromPoints(_,e),P.isSeparated(i))return!1}let x=d.satBounds,S=d.satAxes;r[0]=this.a,r[1]=this.b,r[2]=this.c;for(let D=0;D<4;D++){let P=x[D],_=S[D];if(i.setFromPoints(_,r),P.isSeparated(i))return!1}for(let D=0;D<4;D++){let P=b[D];for(let _=0;_<4;_++){let w=S[_];if(s.crossVectors(P,w),i.setFromPoints(s,r),n.setFromPoints(s,e),i.isSeparated(n))return!1}}return f&&(m||console.warn("ExtendedTriangle.intersectsTriangle: Triangles are coplanar which does not support an output edge. Setting edge to 0, 0, 0."),f.start.set(0,0,0),f.end.set(0,0,0)),!0}else{let E=this.points,b=!1,x=0;for(let C=0;C<3;C++){let N=E[C],k=E[(C+1)%3];c.start.copy(N),c.end.copy(k),c.delta(a);let G=b?u.start:u.end,U=Wy(y.distanceToPoint(N));if(Wy(y.normal.dot(a))&&U){u.copy(c),x=2;break}if((y.intersectLine(c,G)||U)&&!Wy(G.distanceTo(k))){if(x++,b)break;b=!0}}if(x===1&&d.containsPoint(u.end))return f&&(f.start.copy(u.end),f.end.copy(u.end)),!0;if(x!==2)return!1;let S=d.points,D=!1,P=0;for(let C=0;C<3;C++){let N=S[C],k=S[(C+1)%3];c.start.copy(N),c.end.copy(k),c.delta(o);let G=D?h.start:h.end,U=Wy(g.distanceToPoint(N));if(Wy(g.normal.dot(o))&&U){h.copy(c),P=2;break}if((g.intersectLine(c,G)||U)&&!Wy(G.distanceTo(k))){if(P++,D)break;D=!0}}if(P===1&&this.containsPoint(h.end))return f&&(f.start.copy(h.end),f.end.copy(h.end)),!0;if(P!==2)return!1;if(u.delta(a),h.delta(o),a.dot(o)<0){let C=h.start;h.start=h.end,h.end=C}let _=u.start.dot(a),w=u.end.dot(a),F=h.start.dot(a),X=h.end.dot(a),H=w<F,he=_<X;return _!==X&&F!==w&&H===he?!1:(f&&(l.subVectors(u.start,h.start),l.dot(a)>0?f.start.copy(u.start):f.start.copy(h.start),l.subVectors(u.end,h.end),l.dot(a)<0?f.end.copy(u.end):f.end.copy(h.end)),!0)}}}();co.prototype.distanceToPoint=function(){let t=new A;return function(e){return this.closestPointToPoint(e,t),e.distanceTo(t)}}();co.prototype.distanceToTriangle=function(){let t=new A,r=new A,e=["a","b","c"],i=new Ca,n=new Ca;return function(a,o=null,l=null){let c=o||l?i:null;if(this.intersectsTriangle(a,c))return(o||l)&&(o&&c.getCenter(o),l&&c.getCenter(l)),0;let u=1/0;for(let h=0;h<3;h++){let p,d=e[h],f=a[d];this.closestPointToPoint(f,t),p=f.distanceToSquared(t),p<u&&(u=p,o&&o.copy(t),l&&l.copy(f));let m=this[d];a.closestPointToPoint(m,t),p=m.distanceToSquared(t),p<u&&(u=p,o&&o.copy(m),l&&l.copy(t))}for(let h=0;h<3;h++){let p=e[h],d=e[(h+1)%3];i.set(this[p],this[d]);for(let f=0;f<3;f++){let m=e[f],g=e[(f+1)%3];n.set(a[m],a[g]),Mx(i,n,t,r);let y=t.distanceToSquared(r);y<u&&(u=y,o&&o.copy(t),l&&l.copy(r))}}return Math.sqrt(u)}}();var uo=class{constructor(r,e,i){this.isOrientedBox=!0,this.min=new A,this.max=new A,this.matrix=new Ue,this.invMatrix=new Ue,this.points=new Array(8).fill().map(()=>new A),this.satAxes=new Array(3).fill().map(()=>new A),this.satBounds=new Array(3).fill().map(()=>new lo),this.alignedSatBounds=new Array(3).fill().map(()=>new lo),this.needsUpdate=!1,r&&this.min.copy(r),e&&this.max.copy(e),i&&this.matrix.copy(i)}set(r,e,i){this.min.copy(r),this.max.copy(e),this.matrix.copy(i),this.needsUpdate=!0}copy(r){this.min.copy(r.min),this.max.copy(r.max),this.matrix.copy(r.matrix),this.needsUpdate=!0}};uo.prototype.update=function(){return function(){let r=this.matrix,e=this.min,i=this.max,n=this.points;for(let c=0;c<=1;c++)for(let u=0;u<=1;u++)for(let h=0;h<=1;h++){let p=1*c|2*u|4*h,d=n[p];d.x=c?i.x:e.x,d.y=u?i.y:e.y,d.z=h?i.z:e.z,d.applyMatrix4(r)}let s=this.satBounds,a=this.satAxes,o=n[0];for(let c=0;c<3;c++){let u=a[c],h=s[c],p=1<<c,d=n[p];u.subVectors(o,d),h.setFromPoints(u,n)}let l=this.alignedSatBounds;l[0].setFromPointsField(n,"x"),l[1].setFromPointsField(n,"y"),l[2].setFromPointsField(n,"z"),this.invMatrix.copy(this.matrix).invert(),this.needsUpdate=!1}}();uo.prototype.intersectsBox=function(){let t=new lo;return function(e){this.needsUpdate&&this.update();let i=e.min,n=e.max,s=this.satBounds,a=this.satAxes,o=this.alignedSatBounds;if(t.min=i.x,t.max=n.x,o[0].isSeparated(t)||(t.min=i.y,t.max=n.y,o[1].isSeparated(t))||(t.min=i.z,t.max=n.z,o[2].isSeparated(t)))return!1;for(let l=0;l<3;l++){let c=a[l],u=s[l];if(t.setFromBox(c,e),u.isSeparated(t))return!1}return!0}}();uo.prototype.intersectsTriangle=function(){let t=new co,r=new Array(3),e=new lo,i=new lo,n=new A;return function(a){this.needsUpdate&&this.update(),a.isExtendedTriangle?a.needsUpdate&&a.update():(t.copy(a),t.update(),a=t);let o=this.satBounds,l=this.satAxes;r[0]=a.a,r[1]=a.b,r[2]=a.c;for(let p=0;p<3;p++){let d=o[p],f=l[p];if(e.setFromPoints(f,r),d.isSeparated(e))return!1}let c=a.satBounds,u=a.satAxes,h=this.points;for(let p=0;p<3;p++){let d=c[p],f=u[p];if(e.setFromPoints(f,h),d.isSeparated(e))return!1}for(let p=0;p<3;p++){let d=l[p];for(let f=0;f<4;f++){let m=u[f];if(n.crossVectors(d,m),e.setFromPoints(n,r),i.setFromPoints(n,h),e.isSeparated(i))return!1}}return!0}}();uo.prototype.closestPointToPoint=function(){return function(r,e){return this.needsUpdate&&this.update(),e.copy(r).applyMatrix4(this.invMatrix).clamp(this.min,this.max).applyMatrix4(this.matrix),e}}();uo.prototype.distanceToPoint=function(){let t=new A;return function(e){return this.closestPointToPoint(e,t),e.distanceTo(t)}}();uo.prototype.distanceToBox=function(){let t=["x","y","z"],r=new Array(12).fill().map(()=>new Ca),e=new Array(12).fill().map(()=>new Ca),i=new A,n=new A;return function(a,o=0,l=null,c=null){if(this.needsUpdate&&this.update(),this.intersectsBox(a))return(l||c)&&(a.getCenter(n),this.closestPointToPoint(n,i),a.closestPointToPoint(i,n),l&&l.copy(i),c&&c.copy(n)),0;let u=o*o,h=a.min,p=a.max,d=this.points,f=1/0;for(let g=0;g<8;g++){let y=d[g];n.copy(y).clamp(h,p);let E=y.distanceToSquared(n);if(E<f&&(f=E,l&&l.copy(y),c&&c.copy(n),E<u))return Math.sqrt(E)}let m=0;for(let g=0;g<3;g++)for(let y=0;y<=1;y++)for(let E=0;E<=1;E++){let b=(g+1)%3,x=(g+2)%3,S=y<<b|E<<x,D=1<<g|y<<b|E<<x,P=d[S],_=d[D];r[m].set(P,_);let F=t[g],X=t[b],H=t[x],he=e[m],C=he.start,N=he.end;C[F]=h[F],C[X]=y?h[X]:p[X],C[H]=E?h[H]:p[X],N[F]=p[F],N[X]=y?h[X]:p[X],N[H]=E?h[H]:p[X],m++}for(let g=0;g<=1;g++)for(let y=0;y<=1;y++)for(let E=0;E<=1;E++){n.x=g?p.x:h.x,n.y=y?p.y:h.y,n.z=E?p.z:h.z,this.closestPointToPoint(n,i);let b=n.distanceToSquared(i);if(b<f&&(f=b,l&&l.copy(i),c&&c.copy(n),b<u))return Math.sqrt(b)}for(let g=0;g<12;g++){let y=r[g];for(let E=0;E<12;E++){let b=e[E];Mx(y,b,i,n);let x=i.distanceToSquared(n);if(x<f&&(f=x,l&&l.copy(i),c&&c.copy(n),x<u))return Math.sqrt(x)}}return Math.sqrt(f)}}();var tC=new A,rC=new A,iC=new A,Phe=new le,Nhe=new le,Lhe=new le,Fhe=new A;function xvt(t,r,e,i,n,s){let a;return s===Gn?a=t.intersectTriangle(i,e,r,!0,n):a=t.intersectTriangle(r,e,i,s!==wi,n),a===null?null:{distance:t.origin.distanceTo(n),point:n.clone()}}function Ivt(t,r,e,i,n,s,a){tC.fromBufferAttribute(r,i),rC.fromBufferAttribute(r,n),iC.fromBufferAttribute(r,s);let o=xvt(t,tC,rC,iC,Fhe,a);if(o){e&&(Phe.fromBufferAttribute(e,i),Nhe.fromBufferAttribute(e,n),Lhe.fromBufferAttribute(e,s),o.uv=un.getUV(Fhe,tC,rC,iC,Phe,Nhe,Lhe,new le));let l={a:i,b:n,c:s,normal:new A,materialIndex:0};un.getNormal(tC,rC,iC,l.normal),o.face=l,o.faceIndex=i}return o}function GU(t,r,e,i,n){let s=i*3,a=t.index.getX(s),o=t.index.getX(s+1),l=t.index.getX(s+2),c=Ivt(e,t.attributes.position,t.attributes.uv,a,o,l,r);return c?(c.faceIndex=i,n&&n.push(c),c):null}function Hhe(t,r,e,i,n,s){for(let a=i,o=i+n;a<o;a++)GU(t,r,e,a,s)}function Uhe(t,r,e,i,n){let s=1/0,a=null;for(let o=i,l=i+n;o<l;o++){let c=GU(t,r,e,o);c&&c.distance<s&&(a=c,s=c.distance)}return a}function VU(t,r,e){return t===null||(t.point.applyMatrix4(r.matrixWorld),t.distance=t.point.distanceTo(e.ray.origin),t.object=r,t.distance<e.near||t.distance>e.far)?null:t}function Fl(t,r,e,i){let n=t.a,s=t.b,a=t.c,o=r,l=r+1,c=r+2;e&&(o=e.getX(r),l=e.getX(r+1),c=e.getX(r+2)),n.x=i.getX(o),n.y=i.getY(o),n.z=i.getZ(o),s.x=i.getX(l),s.y=i.getY(l),s.z=i.getZ(l),a.x=i.getX(c),a.y=i.getY(c),a.z=i.getZ(c)}function zU(t,r,e,i,n,s,a){let o=e.index,l=e.attributes.position;for(let c=t,u=r+t;c<u;c++)if(Fl(a,c*3,o,l),a.needsUpdate=!0,i(a,c,n,s))return!0;return!1}var qy=class{constructor(r){this._getNewPrimitive=r,this._primitives=[]}getPrimitive(){let r=this._primitives;return r.length===0?this._getNewPrimitive():r.pop()}releasePrimitive(r){this._primitives.push(r)}};function Np(t,r){return r[t+15]===65535}function Bg(t,r){return r[t+6]}function Yy(t,r){return r[t+14]}function Xy(t){return t+8}function $y(t,r){return r[t+6]}function Bhe(t,r){return r[t+7]}var Zy=new Ot,sC=new A,_vt=["x","y","z"];function aC(t,r,e,i,n){let s=t*2,a=Ky,o=vf,l=yf;if(Np(s,o)){let u=Bg(t,l),h=Yy(s,o);Hhe(r,e,i,u,h,n)}else{let u=Xy(t);lC(u,a,i,sC)&&aC(u,r,e,i,n);let h=$y(t,l);lC(h,a,i,sC)&&aC(h,r,e,i,n)}}function oC(t,r,e,i){let n=t*2,s=Ky,a=vf,o=yf;if(Np(n,a)){let c=Bg(t,o),u=Yy(n,a);return Uhe(r,e,i,c,u)}else{let c=Bhe(t,o),u=_vt[c],p=i.direction[u]>=0,d,f;p?(d=Xy(t),f=$y(t,o)):(d=$y(t,o),f=Xy(t));let g=lC(d,s,i,sC)?oC(d,r,e,i):null;if(g){let b=g.point[u];if(p?b<=s[f+c]:b>=s[f+c+3])return g}let E=lC(f,s,i,sC)?oC(f,r,e,i):null;return g&&E?g.distance<=E.distance?g:E:g||E||null}}var khe=function(){let t,r,e=[],i=new qy(()=>new Ot);return function(...a){t=i.getPrimitive(),r=i.getPrimitive(),e.push(t,r);let o=n(...a);i.releasePrimitive(t),i.releasePrimitive(r),e.pop(),e.pop();let l=e.length;return l>0&&(r=e[l-1],t=e[l-2]),o};function n(s,a,o,l,c=null,u=0,h=0){function p(b){let x=b*2,S=vf,D=yf;for(;!Np(x,S);)b=Xy(b),x=b*2;return Bg(b,D)}function d(b){let x=b*2,S=vf,D=yf;for(;!Np(x,S);)b=$y(b,D),x=b*2;return Bg(b,D)+Yy(x,S)}let f=s*2,m=Ky,g=vf,y=yf;if(Np(f,g)){let b=Bg(s,y),x=Yy(f,g);return Ll(s,m,t),l(b,x,!1,h,u+s,t)}else{let b=Xy(s),x=$y(s,y),S=b,D=x,P,_,w,F;if(c&&(w=t,F=r,Ll(S,m,w),Ll(D,m,F),P=c(w),_=c(F),_<P)){S=x,D=b;let G=P;P=_,_=G,w=F}w||(w=t,Ll(S,m,w));let X=Np(S*2,g),H=o(w,X,P,h+1,u+S),he;if(H===2){let G=p(S),j=d(S)-G;he=l(G,j,!0,h+1,u+S,w)}else he=H&&n(S,a,o,l,c,u,h+1);if(he)return!0;F=r,Ll(D,m,F);let C=Np(D*2,g),N=o(F,C,_,h+1,u+D),k;if(N===2){let G=p(D),j=d(D)-G;k=l(G,j,!0,h+1,u+D,F)}else k=N&&n(D,a,o,l,c,u,h+1);return!!k}}}(),Ghe=function(){let t=new co,r=new co,e=new Ue,i=new uo,n=new uo;return function s(a,o,l,c,u=null){let h=a*2,p=Ky,d=vf,f=yf;if(u===null&&(l.boundingBox||l.computeBoundingBox(),i.set(l.boundingBox.min,l.boundingBox.max,c),u=i),Np(h,d)){let g=o,y=g.index,E=g.attributes.position,b=l.index,x=l.attributes.position,S=Bg(a,f),D=Yy(h,d);if(e.copy(c).invert(),l.boundsTree)return Ll(a,p,n),n.matrix.copy(e),n.needsUpdate=!0,l.boundsTree.shapecast({intersectsBounds:_=>n.intersectsBox(_),intersectsTriangle:_=>{_.a.applyMatrix4(c),_.b.applyMatrix4(c),_.c.applyMatrix4(c),_.needsUpdate=!0;for(let w=S*3,F=(D+S)*3;w<F;w+=3)if(Fl(r,w,y,E),r.needsUpdate=!0,_.intersectsTriangle(r))return!0;return!1}});for(let P=S*3,_=D+S*3;P<_;P+=3){Fl(t,P,y,E),t.a.applyMatrix4(e),t.b.applyMatrix4(e),t.c.applyMatrix4(e),t.needsUpdate=!0;for(let w=0,F=b.count;w<F;w+=3)if(Fl(r,w,b,x),r.needsUpdate=!0,t.intersectsTriangle(r))return!0}}else{let g=a+8,y=f[a+6];return Ll(g,p,Zy),!!(u.intersectsBox(Zy)&&s(g,o,l,c,u)||(Ll(y,p,Zy),u.intersectsBox(Zy)&&s(y,o,l,c,u)))}}}();function lC(t,r,e,i){return Ll(t,r,Zy),e.intersectBox(Zy,i)}var jU=[],nC,Ky,vf,yf;function Jy(t){nC&&jU.push(nC),nC=t,Ky=new Float32Array(t),vf=new Uint16Array(t),yf=new Uint32Array(t)}function Dx(){nC=null,Ky=null,vf=null,yf=null,jU.length&&Jy(jU.pop())}var WU=Symbol("skip tree generation"),qU=new Ot,YU=new Ot,Qy=new Ue,kg=new uo,Cx=new uo,Ax=new A,cC=new A,wvt=new A,Rvt=new A,Mvt=new A,Vhe=new Ot,ju=new qy(()=>new co),Nc=class{static serialize(r,e={}){if(e.isBufferGeometry)return console.warn("MeshBVH.serialize: The arguments for the function have changed. See documentation for new signature."),Nc.serialize(arguments[0],{cloneBuffers:arguments[2]===void 0?!0:arguments[2]});e=Ur({cloneBuffers:!0},e);let i=r.geometry,n=r._roots,s=i.getIndex(),a;return e.cloneBuffers?a={roots:n.map(o=>o.slice()),index:s.array.slice()}:a={roots:n,index:s.array},a}static deserialize(r,e,i={}){if(typeof i=="boolean")return console.warn("MeshBVH.deserialize: The arguments for the function have changed. See documentation for new signature."),Nc.deserialize(arguments[0],arguments[1],{setIndex:arguments[2]===void 0?!0:arguments[2]});i=Ur({setIndex:!0},i);let{index:n,roots:s}=r,a=new Nc(e,Mn(Ur({},i),{[WU]:!0}));if(a._roots=s,i.setIndex){let o=e.getIndex();if(o===null){let l=new jt(r.index,1,!1);e.setIndex(l)}else o.array!==n&&(o.array.set(n),o.needsUpdate=!0)}return a}constructor(r,e={}){if(r.isBufferGeometry){if(r.index&&r.index.isInterleavedBufferAttribute)throw new Error("MeshBVH: InterleavedBufferAttribute is not supported for the index attribute.")}else throw new Error("MeshBVH: Only BufferGeometries are supported.");if(e=Object.assign({strategy:0,maxDepth:40,maxLeafTris:10,verbose:!0,useSharedArrayBuffer:!1,setBoundingBox:!0,onProgress:null,[WU]:!1},e),e.useSharedArrayBuffer&&typeof SharedArrayBuffer=="undefined")throw new Error("MeshBVH: SharedArrayBuffer is not available.");this._roots=null,e[WU]||(this._roots=Ahe(r,e),!r.boundingBox&&e.setBoundingBox&&(r.boundingBox=this.getBoundingBox(new Ot))),this.geometry=r}refit(r=null){r&&Array.isArray(r)&&(r=new Set(r));let e=this.geometry,i=e.index.array,n=e.attributes.position,s,a,o,l,c=0,u=this._roots;for(let p=0,d=u.length;p<d;p++)s=u[p],a=new Uint32Array(s),o=new Uint16Array(s),l=new Float32Array(s),h(0,c),c+=s.byteLength;function h(p,d,f=!1){let m=p*2;if(o[m+15]===65535){let y=a[p+6],E=o[m+14],b=1/0,x=1/0,S=1/0,D=-1/0,P=-1/0,_=-1/0;for(let w=3*y,F=3*(y+E);w<F;w++){let X=i[w],H=n.getX(X),he=n.getY(X),C=n.getZ(X);H<b&&(b=H),H>D&&(D=H),he<x&&(x=he),he>P&&(P=he),C<S&&(S=C),C>_&&(_=C)}return l[p+0]!==b||l[p+1]!==x||l[p+2]!==S||l[p+3]!==D||l[p+4]!==P||l[p+5]!==_?(l[p+0]=b,l[p+1]=x,l[p+2]=S,l[p+3]=D,l[p+4]=P,l[p+5]=_,!0):!1}else{let y=p+8,E=a[p+6],b=y+d,x=E+d,S=f,D=!1,P=!1;r?S||(D=r.has(b),P=r.has(x),S=!D&&!P):(D=!0,P=!0);let _=S||D,w=S||P,F=!1;_&&(F=h(y,d,S));let X=!1;w&&(X=h(E,d,S));let H=F||X;if(H)for(let he=0;he<3;he++){let C=y+he,N=E+he,k=l[C],G=l[C+3],U=l[N],j=l[N+3];l[p+he]=k<U?k:U,l[p+he+3]=G>j?G:j}return H}}}traverse(r,e=0){let i=this._roots[e],n=new Uint32Array(i),s=new Uint16Array(i);a(0);function a(o,l=0){let c=o*2,u=s[c+15]===65535;if(u){let h=n[o+6],p=s[c+14];r(l,u,new Float32Array(i,o*4,6),h,p)}else{let h=o+32/4,p=n[o+6],d=n[o+7];r(l,u,new Float32Array(i,o*4,6),d)||(a(h,l+1),a(p,l+1))}}}raycast(r,e=en){let i=this._roots,n=this.geometry,s=[],a=e.isMaterial,o=Array.isArray(e),l=n.groups,c=a?e.side:e;for(let u=0,h=i.length;u<h;u++){let p=o?e[l[u].materialIndex].side:c,d=s.length;if(Jy(i[u]),aC(0,n,p,r,s),Dx(),o){let f=l[u].materialIndex;for(let m=d,g=s.length;m<g;m++)s[m].face.materialIndex=f}}return s}raycastFirst(r,e=en){let i=this._roots,n=this.geometry,s=e.isMaterial,a=Array.isArray(e),o=null,l=n.groups,c=s?e.side:e;for(let u=0,h=i.length;u<h;u++){let p=a?e[l[u].materialIndex].side:c;Jy(i[u]);let d=oC(0,n,p,r);Dx(),d!=null&&(o==null||d.distance<o.distance)&&(o=d,a&&(d.face.materialIndex=l[u].materialIndex))}return o}intersectsGeometry(r,e){let i=this.geometry,n=!1;for(let s of this._roots)if(Jy(s),n=Ghe(0,i,r,e),Dx(),n)break;return n}shapecast(r,e,i){let n=this.geometry;if(r instanceof Function){if(e){let p=e;e=(d,f,m,g)=>{let y=f*3;return p(d,y,y+1,y+2,m,g)}}r={boundsTraverseOrder:i,intersectsBounds:r,intersectsTriangle:e,intersectsRange:null},console.warn("MeshBVH: Shapecast function signature has changed and now takes an object of callbacks as a second argument. See docs for new signature.")}let s=ju.getPrimitive(),{boundsTraverseOrder:a,intersectsBounds:o,intersectsRange:l,intersectsTriangle:c}=r;if(l&&c){let p=l;l=(d,f,m,g,y)=>p(d,f,m,g,y)?!0:zU(d,f,n,c,m,g,s)}else l||(c?l=(p,d,f,m)=>zU(p,d,n,c,f,m,s):l=(p,d,f)=>f);let u=!1,h=0;for(let p of this._roots){if(Jy(p),u=khe(0,n,o,l,a,h),Dx(),u)break;h+=p.byteLength}return ju.releasePrimitive(s),u}bvhcast(r,e,i){let{intersectsRanges:n,intersectsTriangles:s}=i,a=this.geometry.index,o=this.geometry.attributes.position,l=r.geometry.index,c=r.geometry.attributes.position;Qy.copy(e).invert();let u=ju.getPrimitive(),h=ju.getPrimitive();if(s){let d=function(f,m,g,y,E,b,x,S){for(let D=g,P=g+y;D<P;D++){Fl(h,D*3,l,c),h.a.applyMatrix4(e),h.b.applyMatrix4(e),h.c.applyMatrix4(e),h.needsUpdate=!0;for(let _=f,w=f+m;_<w;_++)if(Fl(u,_*3,a,o),u.needsUpdate=!0,s(u,h,_,D,E,b,x,S))return!0}return!1};if(n){let f=n;n=function(m,g,y,E,b,x,S,D){return f(m,g,y,E,b,x,S,D)?!0:d(m,g,y,E,b,x,S,D)}}else n=d}r.getBoundingBox(YU),YU.applyMatrix4(e);let p=this.shapecast({intersectsBounds:d=>YU.intersectsBox(d),intersectsRange:(d,f,m,g,y,E)=>(qU.copy(E),qU.applyMatrix4(Qy),r.shapecast({intersectsBounds:b=>qU.intersectsBox(b),intersectsRange:(b,x,S,D,P)=>n(d,f,b,x,g,y,D,P)}))});return ju.releasePrimitive(u),ju.releasePrimitive(h),p}intersectsBox(r,e){return kg.set(r.min,r.max,e),kg.needsUpdate=!0,this.shapecast({intersectsBounds:i=>kg.intersectsBox(i),intersectsTriangle:i=>kg.intersectsTriangle(i)})}intersectsSphere(r){return this.shapecast({intersectsBounds:e=>r.intersectsBox(e),intersectsTriangle:e=>e.intersectsSphere(r)})}closestPointToGeometry(r,e,i={},n={},s=0,a=1/0){r.boundingBox||r.computeBoundingBox(),kg.set(r.boundingBox.min,r.boundingBox.max,e),kg.needsUpdate=!0;let o=this.geometry,l=o.attributes.position,c=o.index,u=r.attributes.position,h=r.index,p=ju.getPrimitive(),d=ju.getPrimitive(),f=cC,m=wvt,g=null,y=null;n&&(g=Rvt,y=Mvt);let E=1/0,b=null,x=null;return Qy.copy(e).invert(),Cx.matrix.copy(Qy),this.shapecast({boundsTraverseOrder:S=>kg.distanceToBox(S),intersectsBounds:(S,D,P)=>P<E&&P<a?(D&&(Cx.min.copy(S.min),Cx.max.copy(S.max),Cx.needsUpdate=!0),!0):!1,intersectsRange:(S,D)=>{if(r.boundsTree)return r.boundsTree.shapecast({boundsTraverseOrder:P=>Cx.distanceToBox(P),intersectsBounds:(P,_,w)=>w<E&&w<a,intersectsRange:(P,_)=>{for(let w=P*3,F=(P+_)*3;w<F;w+=3){Fl(d,w,h,u),d.a.applyMatrix4(e),d.b.applyMatrix4(e),d.c.applyMatrix4(e),d.needsUpdate=!0;for(let X=S*3,H=(S+D)*3;X<H;X+=3){Fl(p,X,c,l),p.needsUpdate=!0;let he=p.distanceToTriangle(d,f,g);if(he<E&&(m.copy(f),y&&y.copy(g),E=he,b=X/3,x=w/3),he<s)return!0}}}});{let P=h?h.count:u.count;for(let _=0,w=P;_<w;_+=3){Fl(d,_,h,u),d.a.applyMatrix4(e),d.b.applyMatrix4(e),d.c.applyMatrix4(e),d.needsUpdate=!0;for(let F=S*3,X=(S+D)*3;F<X;F+=3){Fl(p,F,c,l),p.needsUpdate=!0;let H=p.distanceToTriangle(d,f,g);if(H<E&&(m.copy(f),y&&y.copy(g),E=H,b=F/3,x=_/3),H<s)return!0}}}}}),ju.releasePrimitive(p),ju.releasePrimitive(d),E===1/0?null:(i.point?i.point.copy(m):i.point=m.clone(),i.distance=E,i.faceIndex=b,n&&(n.point?n.point.copy(y):n.point=y.clone(),n.point.applyMatrix4(Qy),m.applyMatrix4(Qy),n.distance=m.sub(n.point).length(),n.faceIndex=x),i)}closestPointToPoint(r,e={},i=0,n=1/0){let s=i*i,a=n*n,o=1/0,l=null;if(this.shapecast({boundsTraverseOrder:u=>(Ax.copy(r).clamp(u.min,u.max),Ax.distanceToSquared(r)),intersectsBounds:(u,h,p)=>p<o&&p<a,intersectsTriangle:(u,h)=>{u.closestPointToPoint(r,Ax);let p=r.distanceToSquared(Ax);return p<o&&(cC.copy(Ax),o=p,l=h),p<s}}),o===1/0)return null;let c=Math.sqrt(o);return e.point?e.point.copy(cC):e.point=cC.clone(),e.distance=c,e.faceIndex=l,e}getBoundingBox(r){return r.makeEmpty(),this._roots.forEach(i=>{Ll(0,new Float32Array(i),Vhe),r.union(Vhe)}),r}};var XU=new Vo,zhe=new Ue,Dvt=Je.prototype.raycast;function $U(t,r){if(this.geometry.boundsTree){if(this.material===void 0)return;zhe.copy(this.matrixWorld).invert(),XU.copy(t.ray).applyMatrix4(zhe);let e=this.geometry.boundsTree;if(t.firstHitOnly===!0){let i=VU(e.raycastFirst(XU,this.material),this,t);i&&r.push(i)}else{let i=e.raycast(XU,this.material);for(let n=0,s=i.length;n<s;n++){let a=VU(i[n],this,t);a&&r.push(a)}}}else Dvt.call(this,t,r)}var jhe=new Ue,eT=new Vo,ZU=new zi,Tf=new A,Ef=new A,bf=new A,KU=new A,JU=new A,QU=new A,uC=new A,hC=new A,pC=new A,dC=new le,fC=new le,mC=new le,eB=new A,gC=new A;Je.prototype.raycast=function(t,r){let e=this.geometry,i=this.material,n=this.matrixWorld;if(i===void 0||(e.boundingSphere===null&&e.computeBoundingSphere(),ZU.copy(e.boundingSphere),ZU.applyMatrix4(n),t.ray.intersectsSphere(ZU)===!1)||(jhe.copy(n).invert(),eT.copy(t.ray).applyMatrix4(jhe),e.boundingBox!==null&&eT.intersectsBox(e.boundingBox)===!1))return;let s,a=e.index,o=e.attributes.position,l=e.morphAttributes.position,c=e.morphTargetsRelative,u=e.attributes.uv,h=e.attributes.uv2,p=e.groups,d=e.drawRange,f=r.length;if(a!==null)if(Array.isArray(i))for(let m=0,g=p.length;m<g;m++){let y=p[m],E=i[y.materialIndex],b=Math.max(y.start,d.start),x=Math.min(a.count,Math.min(y.start+y.count,d.start+d.count));for(let S=b,D=x;S<D;S+=3){let P=a.getX(S),_=a.getX(S+1),w=a.getX(S+2);if(s=vC(this,E,t,eT,o,l,c,u,h,P,_,w),s&&(s.faceIndex=Math.floor(S/3),s.face.materialIndex=y.materialIndex,r.push(s)),r.length-f>=1)return}}else{let m=Math.max(0,d.start),g=Math.min(a.count,d.start+d.count);for(let y=m,E=g;y<E;y+=3){let b=a.getX(y),x=a.getX(y+1),S=a.getX(y+2);if(s=vC(this,i,t,eT,o,l,c,u,h,b,x,S),s&&(s.faceIndex=Math.floor(y/3),r.push(s)),r.length-f>=1)return}}else if(o!==void 0)if(Array.isArray(i))for(let m=0,g=p.length;m<g;m++){let y=p[m],E=i[y.materialIndex],b=Math.max(y.start,d.start),x=Math.min(o.count,Math.min(y.start+y.count,d.start+d.count));for(let S=b,D=x;S<D;S+=3){let P=S,_=S+1,w=S+2;if(s=vC(this,E,t,eT,o,l,c,u,h,P,_,w),s&&(s.faceIndex=Math.floor(S/3),s.face.materialIndex=y.materialIndex,r.push(s)),r.length-f>=1)return}}else{let m=Math.max(0,d.start),g=Math.min(o.count,d.start+d.count);for(let y=m,E=g;y<E;y+=3){let b=y,x=y+1,S=y+2;if(s=vC(this,i,t,eT,o,l,c,u,h,b,x,S),s&&(s.faceIndex=Math.floor(y/3),r.push(s)),r.length-f>=1)return}}};Je.prototype.raycast=$U;function Cvt(t,r,e,i,n,s,a,o){let l;if(r.side===Gn?l=i.intersectTriangle(a,s,n,!0,o):l=i.intersectTriangle(n,s,a,r.side!==wi,o),l===null)return null;gC.copy(o),gC.applyMatrix4(t.matrixWorld);let c=e.ray.origin.distanceTo(gC);return c<e.near||c>e.far?null:{distance:c,point:gC.clone(),object:t}}function vC(t,r,e,i,n,s,a,o,l,c,u,h){Tf.fromBufferAttribute(n,c),Ef.fromBufferAttribute(n,u),bf.fromBufferAttribute(n,h);let p=t.morphTargetInfluences;if(s&&p){uC.set(0,0,0),hC.set(0,0,0),pC.set(0,0,0);for(let f=0,m=s.length;f<m;f++){let g=p[f],y=s[f];g!==0&&(KU.fromBufferAttribute(y,c),JU.fromBufferAttribute(y,u),QU.fromBufferAttribute(y,h),a?(uC.addScaledVector(KU,g),hC.addScaledVector(JU,g),pC.addScaledVector(QU,g)):(uC.addScaledVector(KU.sub(Tf),g),hC.addScaledVector(JU.sub(Ef),g),pC.addScaledVector(QU.sub(bf),g)))}Tf.add(uC),Ef.add(hC),bf.add(pC)}t.isSkinnedMesh&&(t.boneTransform(c,Tf),t.boneTransform(u,Ef),t.boneTransform(h,bf));let d=Cvt(t,r,e,i,Tf,Ef,bf,eB);if(d){o&&(dC.fromBufferAttribute(o,c),fC.fromBufferAttribute(o,u),mC.fromBufferAttribute(o,h),d.uv=un.getUV(eB,Tf,Ef,bf,dC,fC,mC,new le)),l&&(dC.fromBufferAttribute(l,c),fC.fromBufferAttribute(l,u),mC.fromBufferAttribute(l,h),d.uv2=un.getUV(eB,Tf,Ef,bf,dC,fC,mC,new le));let f={a:c,b:u,c:h,normal:new A,materialIndex:0};un.getNormal(Tf,Ef,bf,f.normal),d.face=f}return d}var yC=new zi,TC=new A;rn.prototype.raycast=function(t,r){let e=this.geometry,i=this.matrixWorld,n=t.params.Points.threshold,s=e.drawRange;if(e.boundingSphere===null&&e.computeBoundingSphere(),yC.copy(e.boundingSphere),yC.applyMatrix4(i),yC.radius+=n,t.ray.intersectsSphere(yC)===!1)return;let a=n*n,o=e.index,c=e.attributes.position,u=r.length;if(o!==null){let h=Math.max(0,s.start),p=Math.min(o.count,s.start+s.count);for(let d=h,f=p;d<f;d++){let m=o.getX(d);if(TC.fromBufferAttribute(c,m).applyMatrix4(i),Whe(TC,m,a,t,r,this),r.length-u>=1)return}}else{let h=Math.max(0,s.start),p=Math.min(c.count,s.start+s.count);for(let d=h,f=p;d<f;d++)if(TC.fromBufferAttribute(c,d).applyMatrix4(i),Whe(TC,d,a,t,r,this),r.length-u>=1)return}};function Whe(t,r,e,i,n,s){let a=i.ray.distanceSqToPoint(t);if(a<e){let o=new A;i.ray.closestPointToPoint(t,o);let l=i.ray.origin.distanceTo(o);if(l<i.near||l>i.far)return;n.push({distance:l,distanceToRay:Math.sqrt(a),point:o,index:r,face:null,object:s})}}var rT=class extends pr{constructor(r=document.createElement("div")){super(),this.isCSS2DObject=!0,this.element=r,this.element.style.position="absolute",this.element.style.userSelect="none",this.element.setAttribute("draggable",!1),this.addEventListener("removed",function(){this.traverse(function(e){e.element instanceof Element&&e.element.parentNode!==null&&e.element.parentNode.removeChild(e.element)})})}copy(r,e){return super.copy(r,e),this.element=r.element.cloneNode(!0),this}},tT=new A,qhe=new Ue,Yhe=new Ue,Xhe=new A,$he=new A,xf=class{constructor(r={}){let e=this,i,n,s,a,o={objects:new WeakMap},l=r.element!==void 0?r.element:document.createElement("div");l.style.overflow="hidden",this.domElement=l,this.getSize=function(){return{width:i,height:n}},this.render=function(d,f){d.matrixWorldAutoUpdate===!0&&d.updateMatrixWorld(),f.parent===null&&f.matrixWorldAutoUpdate===!0&&f.updateMatrixWorld(),qhe.copy(f.matrixWorldInverse),Yhe.multiplyMatrices(f.projectionMatrix,qhe),c(d,d,f),p(d)},this.setSize=function(d,f){i=d,n=f,s=i/2,a=n/2,l.style.width=d+"px",l.style.height=f+"px"};function c(d,f,m){if(d.isCSS2DObject){tT.setFromMatrixPosition(d.matrixWorld),tT.applyMatrix4(Yhe);let g=d.visible===!0&&tT.z>=-1&&tT.z<=1&&d.layers.test(m.layers)===!0;if(d.element.style.display=g===!0?"":"none",g===!0){d.onBeforeRender(e,f,m);let E=d.element;E.style.transform="translate(-50%,-50%) translate("+(tT.x*s+s)+"px,"+(-tT.y*a+a)+"px)",E.parentNode!==l&&l.appendChild(E),d.onAfterRender(e,f,m)}let y={distanceToCameraSquared:u(m,d)};o.objects.set(d,y)}for(let g=0,y=d.children.length;g<y;g++)c(d.children[g],f,m)}function u(d,f){return Xhe.setFromMatrixPosition(d.matrixWorld),$he.setFromMatrixPosition(f.matrixWorld),Xhe.distanceToSquared($he)}function h(d){let f=[];return d.traverse(function(m){m.isCSS2DObject&&f.push(m)}),f}function p(d){let f=h(d).sort(function(g,y){if(g.renderOrder!==y.renderOrder)return y.renderOrder-g.renderOrder;let E=o.objects.get(g).distanceToCameraSquared,b=o.objects.get(y).distanceToCameraSquared;return E-b}),m=f.length;for(let g=0,y=f.length;g<y;g++)f[g].element.style.zIndex=m-g}}};var iT=class extends pr{constructor(e=!0,i=!1){super();this.name="COORDINATE_AXES";this.AXIS_LENGTH=1;this.AXIS_COLOR_X=16711680;this.AXIS_COLOR_Y=65280;this.AXIS_COLOR_Z=255;let n=new A(0,0,0),s=new A(1,0,0),a=new A(0,1,0),o=0,l=0,c=new Fg(s,n,this.AXIS_LENGTH,this.AXIS_COLOR_X,o,l),u=new Fg(a,n,this.AXIS_LENGTH,this.AXIS_COLOR_Y,o,l);if(this.add(c,u),!i){let h=new A(0,0,1),p=new Fg(h,n,this.AXIS_LENGTH,this.AXIS_COLOR_Z,o,l);this.add(p)}e&&this.addTexts(i)}addTexts(e=!1){let i=this.createText("X","#ff0000"),n=this.createText("Y","#00ff00");if(i.position.set(this.AXIS_LENGTH+.1,0,0),n.position.set(.1,this.AXIS_LENGTH,.1),this.add(i,n),!e){let s=this.createText("Z","#0000ff");s.position.set(0,0,this.AXIS_LENGTH+.1),this.add(s)}}createText(e,i,n=14){let s=document.createElement("div");s.innerHTML=e;let a=s.style;return a.color=i,a.width=`${n}px`,a.height=`${n}px`,a.textAlign="center",a.top="0px",a.left="0px",new rT(s)}};var If=class{constructor(r,e,i=!1){this.ignoreZAxis=!1;this.height=100;this.width=100;this.container=r,this.hostCamera=e,this.width=r.clientWidth||this.width,this.height=r.clientHeight||this.height,this.ignoreZAxis=i,this.init()}init(){this.initRenderer(),this.initScene(),this.animate()}initRenderer(){this.renderer=new Pl({antialias:!0,alpha:!0}),this.renderer.setSize(this.width,this.height),this.container.appendChild(this.renderer.domElement),this.css2dRenderer=new xf,this.css2dRenderer.setSize(this.width,this.height),this.css2dRenderer.domElement.style.height="0",this.css2dRenderer.domElement.style.width="0",this.container.appendChild(this.css2dRenderer.domElement)}initScene(){this.scene=new On,this.camera=new Zi(-1,1,1,-1,.1,100),this.scene.add(this.camera),this.coordinateAxes=new iT(!0,this.ignoreZAxis),this.scene.add(this.coordinateAxes)}setHostCamera(r){this.hostCamera=r}render(){var r;!this.scene||!this.camera||(this.renderer&&(this.update(),this.renderer.render(this.scene,this.camera)),(r=this.css2dRenderer)==null||r.render(this.scene,this.camera))}animate(){requestAnimationFrame(this.animate.bind(this)),this.render()}update(){if(!this.hostCamera)return;let r=this.hostCamera;if(r){let e=new A;r.getWorldDirection(e);let i=r.up;this.updateCameraDirection(e,i)}}updateCameraDirection(r,e){if(!this.camera||!r)return;r.normalize();let i=2,n=.3;this.camera.position.set(-r.x*i+n,-r.y*i+n,-r.z*i+n),this.camera.lookAt(n,n,n),this.camera.up=e}dispose(){!this.scene||!this.camera||!this.coordinateAxes||(this.scene.clear(),this.scene=void 0,this.css2dRenderer&&(this.container.removeChild(this.css2dRenderer.domElement),this.css2dRenderer=void 0),this.renderer&&(this.container.removeChild(this.renderer.domElement),this.renderer.dispose(),this.renderer.forceContextLoss(),this.renderer=void 0),this.hostCamera=void 0,this.camera=void 0,this.coordinateAxes=void 0)}};var EC=class{constructor(r){this.isCanceled=!1;let e=new Promise((i,n)=>{this.cancelReject=n});this.promise=Promise.race([e,r])}cancel(){this.cancelReject&&this.cancelReject({type:"cancel"})}};var Avt=Un(Khe(),1),ne=Avt;ne.setLevel("info");var xC=class extends pr{constructor(r){super(),this.isSVGObject=!0,this.node=r}};var Jhe="#7fffbf",Qhe=10,epe=14,Ovt=2.5;var nT=class{static createSVGObject(r){return new xC(r)}static createPointMarker(r=Qhe){return nT.createSnapIcon("Dot",Jhe,r,"#ffffff","2")}static createSnapIcon(r,e="none",i=Qhe,n=Jhe,s="2"){let a=document.createElementNS("http://www.w3.org/2000/svg","path"),o=i,l="";switch(r){case"Dot":o=i/3,l=`
|
||
M ${-o}, 0
|
||
a ${o}, ${o} 0 1, 0 ${2*o}, 0
|
||
a ${o}, ${o} 0 1, 0 -${2*o}, 0
|
||
`;break;case"Square":o=i/1.2,l=`
|
||
M ${-o/2}, ${-o/2}
|
||
h ${o}
|
||
v ${o}
|
||
h ${-o}
|
||
z
|
||
`;break;case"Triangle":o=i/2,l=`
|
||
M 0, ${-o}
|
||
L ${-.87*o}, ${o/2}
|
||
L ${.87*o}, ${o/2}
|
||
z
|
||
`;break;case"Cross":o=i/1.2,l=`
|
||
M ${-o/2}, ${-o/2}
|
||
L ${o/2}, ${o/2}
|
||
M ${o/2}, ${-o/2}
|
||
L ${-o/2}, ${o/2}
|
||
`;break;case"Perpendicular":o=i,l=`
|
||
M 0, 0
|
||
L ${-o/2}, 0
|
||
M 0, 0
|
||
L 0, ${o/2}
|
||
M ${o/2}, ${o/2}
|
||
L ${-o/2}, ${o/2}
|
||
M ${-o/2}, ${o/2}
|
||
L ${-o/2}, ${-o/2}
|
||
`;break;default:break}a.setAttribute("d",l);let c=`fill: ${e}; stroke: ${n}; stroke-width: ${s};`;return a.setAttribute("style",c),this.createSVGObject(a)}static createLine(r=6,e="#fff000",i=Ovt){let n=document.createElementNS("http://www.w3.org/2000/svg","line");n.setAttribute("x1",`${-r}`),n.setAttribute("y1","0"),n.setAttribute("x2",`${r}`),n.setAttribute("y2","0");let s=`stroke: ${e}; stroke-width: ${i};`;return n.setAttribute("style",s),this.createSVGObject(n)}static createLabel(r,e="#ffffff",i=epe,n=epe/2){let s=document.createElementNS("http://www.w3.org/2000/svg","text");s.innerHTML=r,s.setAttribute("x","0"),s.setAttribute("y",`${n}`);let a=`font-size: ${i}; text-anchor: middle; fill: ${e};`;return s.setAttribute("style",a),this.createSVGObject(s)}};var St=class{static isFullScreen(){return!!(document.fullscreenElement||document.mozFullScreenElement)}static fullScreen(r=document.documentElement){(r.requestFullscreen||r.mozRequestFullScreen||r.webkitRequestFullscreen||r.msRequestFullscreen).call(r)}static exitFullscreen(){(document.exitFullscreen||document.mozCancelFullscreen||document.webkitExitFullscreen||document.msExitFullscreen).call(document)}static displayPointMarker(r,e,i=1e3,n=10){let s=nT.createPointMarker(n);return s.position.set(e.x,e.y,e.z),r.add(s),i&&setTimeout(()=>{r.remove(s)},i),s}static joinStrings(...r){return r.join("")}static numberToString(r){let e=2;return Math.abs(r)<1e-6?e=2:Math.abs(r)<1e-5?e=7:Math.abs(r)<1e-4?e=6:Math.abs(r)<.001?e=5:Math.abs(r)<.01?e=4:Math.abs(r)<.1&&(e=3),r.toFixed(e)}static hexToBase64(r){return btoa((r.match(/\w{2}/g)||[]).map(function(e){return String.fromCharCode(parseInt(e,16))}).join(""))}static vectorToString(r){return r instanceof A?`(${this.numberToString(r.x)}, ${this.numberToString(r.y)}, ${this.numberToString(r.z)})`:`(${this.numberToString(r.x)}, ${this.numberToString(r.y)})`}static arrayToVector2(r){if(r){if(r instanceof le)return r;if(Array.isArray(r)&&r.length>=2)return new le(r[0],r[1])}else return r}static arrayToVector3(r){if(r){if(r instanceof A)return r;if(Array.isArray(r)&&r.length>=2)return new A(r[0],r[1],r.length>2?r[2]:0)}else return r}static arrayToEuler(r){if(r){if(r instanceof Sr)return r;if(Array.isArray(r)&&r.length>=3)return new Sr(r[0],r[1],r[2])}else return r}static arrayOrObjectToVector3(r){if(r){if(r instanceof A)return r;if(r instanceof le)return new A(r.x,r.y,0);if(Array.isArray(r)&&r.length>=2)return new A(r[0],r[1],r[2]||0)}else return r;let e=r;if(e.x!=null&&e.y!=null)return new A(e.x,e.y,e.z||0)}static isVectorValid(r){let e=r&&!isNaN(r.x)&&!isNaN(r.y)&&isFinite(r.x)&&isFinite(r.y);return e&&r instanceof A&&(e=!isNaN(r.z)&&isFinite(r.z)),e}static isBoxValid(r){return r&&!r.isEmpty()&&this.isVectorValid(r.min)&&this.isVectorValid(r.max)}static isMatrixValid(r){let e=r&&r.elements;if(!e||e.length<16)return!1;for(let i=0;i<16;++i){let n=e[i];if(Number.isNaN(n))return!1}return!0}static guid(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,r=>{let e=Math.random()*16|0;return(r=="x"?e:e&3|8).toString(16)})}static expandBoxByScale(r,e){let i=new A;r.getCenter(i);let n=(r.max.x-r.min.x)*e,s=(r.max.y-r.min.y)*e,a=(r.max.z-r.min.z)*e,o=new A(i.x-n/2,i.y-s/2,i.z-a/2),l=new A(i.x+n/2,i.y+s/2,i.z+a/2);r.set(o,l)}static expandBoxByMinSize(r,e){let i=new A;r.getCenter(i);let n=r.max.x-r.min.x,s=r.max.y-r.min.y,a=r.max.z-r.min.z;n<e&&(r.min.setX(i.x-e/2),r.max.setX(i.x+e/2)),s<e&&(r.min.setY(i.y-e/2),r.max.setY(i.y+e/2)),a<e&&(r.min.setZ(i.z-e/2),r.max.setZ(i.z+e/2))}static generateRandomInt(r,e){return Math.floor(Math.random()*(e-r+1))+r}static roundNumber(r,e){return Math.round(r*Math.pow(10,e))/Math.pow(10,e)}static convertDecimalToHex(r){return r==null?"#ffffff":`#${r.toString(16).padStart(6,"0")}`}static canvasToImage(r){let e=r.toDataURL(),i=new Image;return i.src=e,new Promise(n=>{i.onload=function(){n(i)}})}static renderingContextToImage(r,e,i="image/png",n=.8){if(e){let s=Math.max(e.min.x,0),a=Math.max(e.min.y,0),o=Math.max(e.max.x-s,0),l=Math.max(e.max.y-a,0),c=r.getImageData(s,a,o,l),u=document.createElement("canvas");return u.width=o,u.height=l,u.getContext("2d").putImageData(c,0,0),u.toDataURL(i,n)}return r.canvas.toDataURL(i,n)}static printMemory(r){let e=performance.memory;if(!e){ne.warn("[CommonUtils] performance.memory is not available in this browser");return}let i=(e.jsHeapSizeLimit/(1024*1024)).toFixed(2),n=(e.totalJSHeapSize/(1024*1024)).toFixed(2),s=(e.usedJSHeapSize/(1024*1024)).toFixed(2);ne.info(`[CommonUtils] ${r}. jsHeapSizeLimit: ${i}M , totalJSHeapSize: ${n}M , usedJSHeapSize: ${s}M `)}static printGpuInfo(r){let e=r.getExtension("webgl_debug_renderer_info"),i=r.getParameter(e.UNMASKED_RENDERER_WEBGL);ne.info("[CommonUtils] gpu:",i)}},IC=(t,r,e)=>{let{default:i,active:n}=r;e?(t.remove(i),t.add(n||i)):(n&&t.remove(n),t.add(i))};var Mr=class{static getScreenPointByEvent(r,e){let i=new le,{left:n,top:s}=e.getBoundingClientRect();return i.x=r.clientX-n,i.y=r.clientY-s,i}static getScreenPointByTouchEvent(r,e){let i=new le,{left:n,top:s}=e.getBoundingClientRect();return i.x=r.touches[0].clientX-n,i.y=r.touches[0].clientY-s,i}static worldPosition2ScreenPoint(r,e,i){let{clientWidth:n,clientHeight:s}=i,a=r.clone(),o=new le;return a.project(e),o.x=Math.round((.5+a.x/2)*n),o.y=Math.round((.5-a.y/2)*s),o}static screenPoint2worldPosition(r,e,i){let n=Mr.screenPoint2NdcPoint(r,e,i);return new A(n.x,n.y,1).unproject(e)}static screenPoint2NdcPoint(r,e,i){let{clientWidth:n,clientHeight:s}=i,a=new le;return a.x=r.x/n*2-1,a.y=-(r.y/s)*2+1,a}};var Sf=class{static createCSS2DObject(r){let e=new rT(r);return r.dataset.objectId=e.id.toString(),e}static createDefaultHotpoint(r=12){let e=document.createElement("div"),i=e.style;return i.width=`${r}px`,i.height=`${r}px`,i.opacity="0.8",i.cursor="pointer",i.top=`${-r/2}px`,i.left=`${-r/2}px`,i.backgroundColor="#ffffff",i.border="2px solid #00DAB7",i.borderRadius="50%",this.createCSS2DObject(e)}static createHotpoint(r){if(r){let e=document.createElement("div"),i=e.style;return i.top="0px",i.left="0px",e.innerHTML=r,this.createCSS2DObject(e)}return this.createDefaultHotpoint()}static createLabel(r,e=""){let i=document.createElement("div");if(i.innerHTML=r,e)i.classList.add(e);else{let n=i.style;n.padding="5px 9px",n.color="#ffffffdd",n.fontSize="12px",n.position="absolute",n.backgroundColor="rgba(0, 0, 0, 0.3)",n.borderRadius="12px",n.cursor="pointer",n.top="0px",n.left="0px"}return this.createCSS2DObject(i)}static tryFindObjectId(r){if(r.dataset.objectId!=null)return parseInt(r.dataset.objectId);let e=r.parentElement;if(e&&!(e instanceof HTMLBodyElement))return this.tryFindObjectId(e)}};var sT={unit:"file",decimalPrecision:99,camera:{near:.1,far:3e4},mouse:{sensitivity:3},keyboard:{sensitivity:3}};var tpe={"Precision from file":99,"0(1)":0,"0.1(1/2)":1,"0.01(1/4)":2,"0.001(1/8)":3,"0.0001(1/16)":4,"0.00001(1/32)":5,"0.000001(1/64)":6};var Wu=(t,r)=>t.toFixed(r===tpe["Precision from file"]?2:r);var aT=class{static isTouchScreenDevice(){return"ontouchstart"in window}static printDeviceInfo(){let r=navigator.userAgent,e=/(?:Android)/.test(r),i=/(?:Firefox)/.test(r),n=/(?:Chrome|CriOS)/.test(r),s=/(?:iPad|PlayBook)/.test(r)||e&&!/(?:Mobile)/.test(r)||i&&/(?:Tablet)/.test(r),a=/(?:iPhone)/.test(r)&&!s,o=!a&&!e,l=aT.isTouchScreenDevice();e&&ne.debug("[DI] is android"),i&&ne.debug("[DI] is fireFox"),n&&ne.debug("[DI] is chrome"),s&&ne.debug("[DI] is tablet"),a&&ne.debug("[DI] is iPhone"),o&&ne.debug("[DI] is PC"),l&&ne.debug("[DI] is touch device")}};var jo=class{constructor(){this.eventList=new Map}addEventListener(r,e){let i=this.eventList.get(r);i?i.push(e):this.eventList.set(r,[e])}dispatchEvent(r,e){let i=this.eventList.get(r);i&&i.forEach(n=>n(e))}removeEventListener(r,e){let i=this.eventList.get(r);if(i){let n=i.indexOf(e);n>-1&&i.splice(n,1)}}clearEventListeners(r){this.eventList.delete(r)}clearAllEventListener(){this.eventList.clear()}};var Zs=class{parse(r,e={}){if(e=Object.assign({decodeSpeed:5,encodeSpeed:5,encoderMethod:Zs.MESH_EDGEBREAKER_ENCODING,quantization:[16,8,8,8,8],exportUvs:!0,exportNormals:!0,exportColor:!1},e),DracoEncoderModule===void 0)throw new Error("THREE.DRACOExporter: required the draco_encoder to work.");let i=r.geometry,n=DracoEncoderModule(),s=new n.Encoder,a,o;if(r.isMesh===!0){a=new n.MeshBuilder,o=new n.Mesh;let d=i.getAttribute("position");a.AddFloatAttributeToMesh(o,n.POSITION,d.count,d.itemSize,d.array);let f=i.getIndex();if(f!==null)a.AddFacesToMesh(o,f.count/3,f.array);else{let m=new(d.count>65535?Uint32Array:Uint16Array)(d.count);for(let g=0;g<m.length;g++)m[g]=g;a.AddFacesToMesh(o,d.count,m)}if(e.exportNormals===!0){let m=i.getAttribute("normal");m!==void 0&&a.AddFloatAttributeToMesh(o,n.NORMAL,m.count,m.itemSize,m.array)}if(e.exportUvs===!0){let m=i.getAttribute("uv");m!==void 0&&a.AddFloatAttributeToMesh(o,n.TEX_COORD,m.count,m.itemSize,m.array)}if(e.exportColor===!0){let m=i.getAttribute("color");m!==void 0&&a.AddFloatAttributeToMesh(o,n.COLOR,m.count,m.itemSize,m.array)}}else if(r.isPoints===!0){a=new n.PointCloudBuilder,o=new n.PointCloud;let d=i.getAttribute("position");if(a.AddFloatAttribute(o,n.POSITION,d.count,d.itemSize,d.array),e.exportColor===!0){let f=i.getAttribute("color");f!==void 0&&a.AddFloatAttribute(o,n.COLOR,f.count,f.itemSize,f.array)}}else throw new Error("DRACOExporter: Unsupported object type.");let l=new n.DracoInt8Array,c=e.encodeSpeed!==void 0?e.encodeSpeed:5,u=e.decodeSpeed!==void 0?e.decodeSpeed:5;if(s.SetSpeedOptions(c,u),e.encoderMethod!==void 0&&s.SetEncodingMethod(e.encoderMethod),e.quantization!==void 0)for(let d=0;d<5;d++)e.quantization[d]!==void 0&&s.SetAttributeQuantization(d,e.quantization[d]);let h;if(r.isMesh===!0?h=s.EncodeMeshToDracoBuffer(o,l):h=s.EncodePointCloudToDracoBuffer(o,!0,l),n.destroy(o),h===0)throw new Error("THREE.DRACOExporter: Draco encoding failed.");let p=new Int8Array(new ArrayBuffer(h));for(let d=0;d<h;d++)p[d]=l.GetValue(d);return n.destroy(l),n.destroy(s),n.destroy(a),p}};Zs.MESH_EDGEBREAKER_ENCODING=1;Zs.MESH_SEQUENTIAL_ENCODING=0;Zs.POINT_CLOUD=0;Zs.TRIANGULAR_MESH=1;Zs.INVALID=-1;Zs.POSITION=0;Zs.NORMAL=1;Zs.COLOR=2;Zs.TEX_COORD=3;Zs.GENERIC=4;var oT=class{constructor(){this.pluginCallbacks=[],this.register(function(r){return new iB(r)}),this.register(function(r){return new nB(r)}),this.register(function(r){return new oB(r)}),this.register(function(r){return new lB(r)}),this.register(function(r){return new cB(r)}),this.register(function(r){return new uB(r)}),this.register(function(r){return new sB(r)}),this.register(function(r){return new aB(r)})}register(r){return this.pluginCallbacks.indexOf(r)===-1&&this.pluginCallbacks.push(r),this}unregister(r){return this.pluginCallbacks.indexOf(r)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(r),1),this}parse(r,e,i,n){let s=new rB,a=[];for(let o=0,l=this.pluginCallbacks.length;o<l;o++)a.push(this.pluginCallbacks[o](s));s.setPlugins(a),s.write(r,e,n).catch(i)}parseAsync(r,e){let i=this;return new Promise(function(n,s){i.parse(r,n,s,e)})}},nn={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123,FLOAT:5126,UNSIGNED_INT:5125,ARRAY_BUFFER:34962,ELEMENT_ARRAY_BUFFER:34963,NEAREST:9728,LINEAR:9729,NEAREST_MIPMAP_NEAREST:9984,LINEAR_MIPMAP_NEAREST:9985,NEAREST_MIPMAP_LINEAR:9986,LINEAR_MIPMAP_LINEAR:9987,CLAMP_TO_EDGE:33071,MIRRORED_REPEAT:33648,REPEAT:10497},Wo={};Wo[Di]=nn.NEAREST;Wo[of]=nn.NEAREST_MIPMAP_NEAREST;Wo[pp]=nn.NEAREST_MIPMAP_LINEAR;Wo[ai]=nn.LINEAR;Wo[Hg]=nn.LINEAR_MIPMAP_NEAREST;Wo[wa]=nn.LINEAR_MIPMAP_LINEAR;Wo[mn]=nn.CLAMP_TO_EDGE;Wo[gn]=nn.REPEAT;Wo[mp]=nn.MIRRORED_REPEAT;var rpe={scale:"scale",position:"translation",quaternion:"rotation",morphTargetInfluences:"weights"},Pvt=new Ve,ipe=12,Nvt=1179937895,Lvt=2,npe=8,Fvt=1313821514,Hvt=5130562;function Ox(t,r){return t.length===r.length&&t.every(function(e,i){return e===r[i]})}function Uvt(t){return new TextEncoder().encode(t).buffer}function Bvt(t){return Ox(t.elements,[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])}function kvt(t,r,e){let i={min:new Array(t.itemSize).fill(Number.POSITIVE_INFINITY),max:new Array(t.itemSize).fill(Number.NEGATIVE_INFINITY)};for(let n=r;n<r+e;n++)for(let s=0;s<t.itemSize;s++){let a;t.itemSize>4?a=t.array[n*t.itemSize+s]:(s===0?a=t.getX(n):s===1?a=t.getY(n):s===2?a=t.getZ(n):s===3&&(a=t.getW(n)),t.normalized===!0&&(a=wr.normalize(a,t.array))),i.min[s]=Math.min(i.min[s],a),i.max[s]=Math.max(i.max[s],a)}return i}function ope(t){return Math.ceil(t/4)*4}function tB(t,r=0){let e=ope(t.byteLength);if(e!==t.byteLength){let i=new Uint8Array(e);if(i.set(new Uint8Array(t)),r!==0)for(let n=t.byteLength;n<e;n++)i[n]=r;return i.buffer}return t}function spe(){return typeof document=="undefined"&&typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(1,1):document.createElement("canvas")}function ape(t,r){if(t.toBlob!==void 0)return new Promise(i=>t.toBlob(i,r));let e;return r==="image/jpeg"?e=.92:r==="image/webp"&&(e=.8),t.convertToBlob({type:r,quality:e})}var rB=class{constructor(){this.plugins=[],this.options={},this.pending=[],this.buffers=[],this.byteOffset=0,this.buffers=[],this.nodeMap=new Map,this.skins=[],this.extensionsUsed={},this.uids=new Map,this.uid=0,this.json={asset:{version:"2.0",generator:"THREE.GLTFExporter"}},this.cache={meshes:new Map,attributes:new Map,attributesNormalized:new Map,materials:new Map,textures:new Map,images:new Map}}setPlugins(r){this.plugins=r}write(n,s){return ot(this,arguments,function*(r,e,i={}){this.options=Object.assign({binary:!1,trs:!1,onlyVisible:!0,maxTextureSize:1/0,animations:[],includeCustomExtensions:!1},i),this.options.animations.length>0&&(this.options.trs=!0),this.processInput(r),yield Promise.all(this.pending);let a=this,o=a.buffers,l=a.json;i=a.options;let c=a.extensionsUsed,u=new Blob(o,{type:"application/octet-stream"}),h=Object.keys(c);if(h.length>0&&(l.extensionsUsed=h),l.buffers&&l.buffers.length>0&&(l.buffers[0].byteLength=u.size),i.binary===!0){let p=new FileReader;p.readAsArrayBuffer(u),p.onloadend=function(){let d=tB(p.result),f=new DataView(new ArrayBuffer(npe));f.setUint32(0,d.byteLength,!0),f.setUint32(4,Hvt,!0);let m=tB(Uvt(JSON.stringify(l)),32),g=new DataView(new ArrayBuffer(npe));g.setUint32(0,m.byteLength,!0),g.setUint32(4,Fvt,!0);let y=new ArrayBuffer(ipe),E=new DataView(y);E.setUint32(0,Nvt,!0),E.setUint32(4,Lvt,!0);let b=ipe+g.byteLength+m.byteLength+f.byteLength+d.byteLength;E.setUint32(8,b,!0);let x=new Blob([y,g,m,f,d],{type:"application/octet-stream"}),S=new FileReader;S.readAsArrayBuffer(x),S.onloadend=function(){e(S.result)}}}else if(l.buffers&&l.buffers.length>0){let p=new FileReader;p.readAsDataURL(u),p.onloadend=function(){let d=p.result;l.buffers[0].uri=d,e(l)}}else e(l)})}serializeUserData(r,e){if(Object.keys(r.userData).length===0)return;let i=this.options,n=this.extensionsUsed;try{let s=JSON.parse(JSON.stringify(r.userData));if(i.includeCustomExtensions&&s.gltfExtensions){e.extensions===void 0&&(e.extensions={});for(let a in s.gltfExtensions)e.extensions[a]=s.gltfExtensions[a],n[a]=!0;delete s.gltfExtensions}Object.keys(s).length>0&&(e.extras=s)}catch(s){console.warn("THREE.GLTFExporter: userData of '"+r.name+"' won't be serialized because of JSON.stringify error - "+s.message)}}getUID(r,e=!1){if(this.uids.has(r)===!1){let n=new Map;n.set(!0,this.uid++),n.set(!1,this.uid++),this.uids.set(r,n)}return this.uids.get(r).get(e)}isNormalizedNormalAttribute(r){if(this.cache.attributesNormalized.has(r))return!1;let i=new A;for(let n=0,s=r.count;n<s;n++)if(Math.abs(i.fromBufferAttribute(r,n).length()-1)>5e-4)return!1;return!0}createNormalizedNormalAttribute(r){let e=this.cache;if(e.attributesNormalized.has(r))return e.attributesNormalized.get(r);let i=r.clone(),n=new A;for(let s=0,a=i.count;s<a;s++)n.fromBufferAttribute(i,s),n.x===0&&n.y===0&&n.z===0?n.setX(1):n.normalize(),i.setXYZ(s,n.x,n.y,n.z);return e.attributesNormalized.set(r,i),i}applyTextureTransform(r,e){let i=!1,n={};(e.offset.x!==0||e.offset.y!==0)&&(n.offset=e.offset.toArray(),i=!0),e.rotation!==0&&(n.rotation=e.rotation,i=!0),(e.repeat.x!==1||e.repeat.y!==1)&&(n.scale=e.repeat.toArray(),i=!0),i&&(r.extensions=r.extensions||{},r.extensions.KHR_texture_transform=n,this.extensionsUsed.KHR_texture_transform=!0)}buildMetalRoughTexture(r,e){if(r===e)return r;function i(d){return d.encoding===yr?function(m){return m<.04045?m*.0773993808:Math.pow(m*.9478672986+.0521327014,2.4)}:function(m){return m}}console.warn("THREE.GLTFExporter: Merged metalnessMap and roughnessMap textures.");let n=r?r.image:null,s=e?e.image:null,a=Math.max(n?n.width:0,s?s.width:0),o=Math.max(n?n.height:0,s?s.height:0),l=spe();l.width=a,l.height=o;let c=l.getContext("2d");c.fillStyle="#00ffff",c.fillRect(0,0,a,o);let u=c.getImageData(0,0,a,o);if(n){c.drawImage(n,0,0,a,o);let d=i(r),f=c.getImageData(0,0,a,o).data;for(let m=2;m<f.length;m+=4)u.data[m]=d(f[m]/256)*256}if(s){c.drawImage(s,0,0,a,o);let d=i(e),f=c.getImageData(0,0,a,o).data;for(let m=1;m<f.length;m+=4)u.data[m]=d(f[m]/256)*256}c.putImageData(u,0,0);let p=(r||e).clone();return p.source=new Mc(l),p.encoding=wl,p}processBuffer(r){let e=this.json,i=this.buffers;return e.buffers||(e.buffers=[{byteLength:0}]),i.push(r),0}processBufferView(r,e,i,n,s){let a=this.json;a.bufferViews||(a.bufferViews=[]);let o;e===nn.UNSIGNED_BYTE?o=1:e===nn.UNSIGNED_SHORT?o=2:o=4;let l=ope(n*r.itemSize*o),c=new DataView(new ArrayBuffer(l)),u=0;for(let d=i;d<i+n;d++)for(let f=0;f<r.itemSize;f++){let m;r.itemSize>4?m=r.array[d*r.itemSize+f]:(f===0?m=r.getX(d):f===1?m=r.getY(d):f===2?m=r.getZ(d):f===3&&(m=r.getW(d)),r.normalized===!0&&(m=wr.normalize(m,r.array))),e===nn.FLOAT?c.setFloat32(u,m,!0):e===nn.UNSIGNED_INT?c.setUint32(u,m,!0):e===nn.UNSIGNED_SHORT?c.setUint16(u,m,!0):e===nn.UNSIGNED_BYTE&&c.setUint8(u,m),u+=o}let h={buffer:this.processBuffer(c.buffer),byteOffset:this.byteOffset,byteLength:l};return s!==void 0&&(h.target=s),s===nn.ARRAY_BUFFER&&(h.byteStride=r.itemSize*o),this.byteOffset+=l,a.bufferViews.push(h),{id:a.bufferViews.length-1,byteLength:0}}processBufferViewImage(r){let e=this,i=e.json;return i.bufferViews||(i.bufferViews=[]),new Promise(function(n){let s=new FileReader;s.readAsArrayBuffer(r),s.onloadend=function(){let a=tB(s.result),o={buffer:e.processBuffer(a),byteOffset:e.byteOffset,byteLength:a.byteLength};e.byteOffset+=a.byteLength,n(i.bufferViews.push(o)-1)}})}processAccessor(r,e,i,n){let s=this.json,a={1:"SCALAR",2:"VEC2",3:"VEC3",4:"VEC4",16:"MAT4"},o;if(r.array.constructor===Float32Array)o=nn.FLOAT;else if(r.array.constructor===Uint32Array)o=nn.UNSIGNED_INT;else if(r.array.constructor===Uint16Array)o=nn.UNSIGNED_SHORT;else if(r.array.constructor===Uint8Array)o=nn.UNSIGNED_BYTE;else throw new Error("THREE.GLTFExporter: Unsupported bufferAttribute component type.");if(i===void 0&&(i=0),n===void 0&&(n=r.count),n===0)return null;let l=kvt(r,i,n),c;e!==void 0&&(c=r===e.index?nn.ELEMENT_ARRAY_BUFFER:nn.ARRAY_BUFFER);let u=this.processBufferView(r,o,i,n,c),h={bufferView:u.id,byteOffset:u.byteOffset,componentType:o,count:n,max:l.max,min:l.min,type:a[r.itemSize]};return r.normalized===!0&&(h.normalized=!0),s.accessors||(s.accessors=[]),s.accessors.push(h)-1}processImage(r,e,i,n="image/png"){if(r!==null){let s=this,a=s.cache,o=s.json,l=s.options,c=s.pending;a.images.has(r)||a.images.set(r,{});let u=a.images.get(r),h=n+":flipY/"+i.toString();if(u[h]!==void 0)return u[h];o.images||(o.images=[]);let p={mimeType:n},d=spe();d.width=Math.min(r.width,l.maxTextureSize),d.height=Math.min(r.height,l.maxTextureSize);let f=d.getContext("2d");if(i===!0&&(f.translate(0,d.height),f.scale(1,-1)),r.data!==void 0){e!==Bs&&console.error("GLTFExporter: Only RGBAFormat is supported."),(r.width>l.maxTextureSize||r.height>l.maxTextureSize)&&console.warn("GLTFExporter: Image size is bigger than maxTextureSize",r);let g=new Uint8ClampedArray(r.height*r.width*4);for(let y=0;y<g.length;y+=4)g[y+0]=r.data[y+0],g[y+1]=r.data[y+1],g[y+2]=r.data[y+2],g[y+3]=r.data[y+3];f.putImageData(new ImageData(g,r.width,r.height),0,0)}else f.drawImage(r,0,0,d.width,d.height);l.binary===!0?c.push(ape(d,n).then(g=>s.processBufferViewImage(g)).then(g=>{p.bufferView=g})):d.toDataURL!==void 0?p.uri=d.toDataURL(n):c.push(ape(d,n).then(g=>new FileReader().readAsDataURL(g)).then(g=>{p.uri=g}));let m=o.images.push(p)-1;return u[h]=m,m}else throw new Error("THREE.GLTFExporter: No valid image data found. Unable to process texture.")}processSampler(r){let e=this.json;e.samplers||(e.samplers=[]);let i={magFilter:Wo[r.magFilter],minFilter:Wo[r.minFilter],wrapS:Wo[r.wrapS],wrapT:Wo[r.wrapT]};return e.samplers.push(i)-1}processTexture(r){let e=this.cache,i=this.json;if(e.textures.has(r))return e.textures.get(r);i.textures||(i.textures=[]);let n=r.userData.mimeType;n==="image/webp"&&(n="image/png");let s={sampler:this.processSampler(r),source:this.processImage(r.image,r.format,r.flipY,n)};r.name&&(s.name=r.name),this._invokeAll(function(o){o.writeTexture&&o.writeTexture(r,s)});let a=i.textures.push(s)-1;return e.textures.set(r,a),a}processMaterial(r){let e=this.cache,i=this.json;if(e.materials.has(r))return e.materials.get(r);if(r.isShaderMaterial)return console.warn("GLTFExporter: THREE.ShaderMaterial not supported."),null;i.materials||(i.materials=[]);let n={pbrMetallicRoughness:{}};r.isMeshStandardMaterial!==!0&&r.isMeshBasicMaterial!==!0&&console.warn("GLTFExporter: Use MeshStandardMaterial or MeshBasicMaterial for best results.");let s=r.color.toArray().concat([r.opacity]);if(Ox(s,[1,1,1,1])||(n.pbrMetallicRoughness.baseColorFactor=s),r.isMeshStandardMaterial?(n.pbrMetallicRoughness.metallicFactor=r.metalness,n.pbrMetallicRoughness.roughnessFactor=r.roughness):(n.pbrMetallicRoughness.metallicFactor=.5,n.pbrMetallicRoughness.roughnessFactor=.5),r.metalnessMap||r.roughnessMap){let o=this.buildMetalRoughTexture(r.metalnessMap,r.roughnessMap),l={index:this.processTexture(o)};this.applyTextureTransform(l,o),n.pbrMetallicRoughness.metallicRoughnessTexture=l}if(r.map){let o={index:this.processTexture(r.map)};this.applyTextureTransform(o,r.map),n.pbrMetallicRoughness.baseColorTexture=o}if(r.emissive){let o=r.emissive.clone().multiplyScalar(r.emissiveIntensity),l=Math.max(o.r,o.g,o.b);if(l>1&&(o.multiplyScalar(1/l),console.warn("THREE.GLTFExporter: Some emissive components exceed 1; emissive has been limited")),l>0&&(n.emissiveFactor=o.toArray()),r.emissiveMap){let c={index:this.processTexture(r.emissiveMap)};this.applyTextureTransform(c,r.emissiveMap),n.emissiveTexture=c}}if(r.normalMap){let o={index:this.processTexture(r.normalMap)};r.normalScale&&r.normalScale.x!==1&&(o.scale=r.normalScale.x),this.applyTextureTransform(o,r.normalMap),n.normalTexture=o}if(r.aoMap){let o={index:this.processTexture(r.aoMap),texCoord:1};r.aoMapIntensity!==1&&(o.strength=r.aoMapIntensity),this.applyTextureTransform(o,r.aoMap),n.occlusionTexture=o}r.transparent?n.alphaMode="BLEND":r.alphaTest>0&&(n.alphaMode="MASK",n.alphaCutoff=r.alphaTest),r.side===wi&&(n.doubleSided=!0),r.name!==""&&(n.name=r.name),this.serializeUserData(r,n),this._invokeAll(function(o){o.writeMaterial&&o.writeMaterial(r,n)});let a=i.materials.push(n)-1;return e.materials.set(r,a),a}processMesh(r){let e=this.cache,i=this.json,n=[r.geometry.uuid];if(Array.isArray(r.material))for(let b=0,x=r.material.length;b<x;b++)n.push(r.material[b].uuid);else n.push(r.material.uuid);let s=n.join(":");if(e.meshes.has(s))return e.meshes.get(s);let a=r.geometry,o;r.isLineSegments?o=nn.LINES:r.isLineLoop?o=nn.LINE_LOOP:r.isLine?o=nn.LINE_STRIP:r.isPoints?o=nn.POINTS:o=r.material.wireframe?nn.LINES:nn.TRIANGLES;let l={},c={},u=[],h=[],p={uv:"TEXCOORD_0",uv2:"TEXCOORD_1",color:"COLOR_0",skinWeight:"WEIGHTS_0",skinIndex:"JOINTS_0"},d=a.getAttribute("normal");d!==void 0&&!this.isNormalizedNormalAttribute(d)&&(console.warn("THREE.GLTFExporter: Creating normalized normal attribute from the non-normalized one."),a.setAttribute("normal",this.createNormalizedNormalAttribute(d)));let f=null;for(let b in a.attributes){if(b.slice(0,5)==="morph")continue;let x=a.attributes[b];if(b=p[b]||b.toUpperCase(),/^(POSITION|NORMAL|TANGENT|TEXCOORD_\d+|COLOR_\d+|JOINTS_\d+|WEIGHTS_\d+)$/.test(b)||(b="_"+b),e.attributes.has(this.getUID(x))){c[b]=e.attributes.get(this.getUID(x));continue}f=null;let D=x.array;b==="JOINTS_0"&&!(D instanceof Uint16Array)&&!(D instanceof Uint8Array)&&(console.warn('GLTFExporter: Attribute "skinIndex" converted to type UNSIGNED_SHORT.'),f=new jt(new Uint16Array(D),x.itemSize,x.normalized));let P=this.processAccessor(f||x,a);P!==null&&(c[b]=P,e.attributes.set(this.getUID(x),P))}if(d!==void 0&&a.setAttribute("normal",d),Object.keys(c).length===0)return null;if(r.morphTargetInfluences!==void 0&&r.morphTargetInfluences.length>0){let b=[],x=[],S={};if(r.morphTargetDictionary!==void 0)for(let D in r.morphTargetDictionary)S[r.morphTargetDictionary[D]]=D;for(let D=0;D<r.morphTargetInfluences.length;++D){let P={},_=!1;for(let w in a.morphAttributes){if(w!=="position"&&w!=="normal"){_||(console.warn("GLTFExporter: Only POSITION and NORMAL morph are supported."),_=!0);continue}let F=a.morphAttributes[w][D],X=w.toUpperCase(),H=a.attributes[w];if(e.attributes.has(this.getUID(F,!0))){P[X]=e.attributes.get(this.getUID(F,!0));continue}let he=F.clone();if(!a.morphTargetsRelative)for(let C=0,N=F.count;C<N;C++)for(let k=0;k<F.itemSize;k++)k===0&&he.setX(C,F.getX(C)-H.getX(C)),k===1&&he.setY(C,F.getY(C)-H.getY(C)),k===2&&he.setZ(C,F.getZ(C)-H.getZ(C)),k===3&&he.setW(C,F.getW(C)-H.getW(C));P[X]=this.processAccessor(he,a),e.attributes.set(this.getUID(H,!0),P[X])}h.push(P),b.push(r.morphTargetInfluences[D]),r.morphTargetDictionary!==void 0&&x.push(S[D])}l.weights=b,x.length>0&&(l.extras={},l.extras.targetNames=x)}let m=Array.isArray(r.material);if(m&&a.groups.length===0)return null;let g=m?r.material:[r.material],y=m?a.groups:[{materialIndex:0,start:void 0,count:void 0}];for(let b=0,x=y.length;b<x;b++){let S={mode:o,attributes:c};if(this.serializeUserData(a,S),h.length>0&&(S.targets=h),a.index!==null){let P=this.getUID(a.index);(y[b].start!==void 0||y[b].count!==void 0)&&(P+=":"+y[b].start+":"+y[b].count),e.attributes.has(P)?S.indices=e.attributes.get(P):(S.indices=this.processAccessor(a.index,a,y[b].start,y[b].count),e.attributes.set(P,S.indices)),S.indices===null&&delete S.indices}let D=this.processMaterial(g[y[b].materialIndex]);D!==null&&(S.material=D),u.push(S)}l.primitives=u,i.meshes||(i.meshes=[]),this._invokeAll(function(b){b.writeMesh&&b.writeMesh(r,l)});let E=i.meshes.push(l)-1;return e.meshes.set(s,E),E}processCamera(r){let e=this.json;e.cameras||(e.cameras=[]);let i=r.isOrthographicCamera,n={type:i?"orthographic":"perspective"};return i?n.orthographic={xmag:r.right*2,ymag:r.top*2,zfar:r.far<=0?.001:r.far,znear:r.near<0?0:r.near}:n.perspective={aspectRatio:r.aspect,yfov:wr.degToRad(r.fov),zfar:r.far<=0?.001:r.far,znear:r.near<0?0:r.near},r.name!==""&&(n.name=r.type),e.cameras.push(n)-1}processAnimation(r,e){let i=this.json,n=this.nodeMap;i.animations||(i.animations=[]),r=oT.Utils.mergeMorphTargetTracks(r.clone(),e);let s=r.tracks,a=[],o=[];for(let l=0;l<s.length;++l){let c=s[l],u=Cr.parseTrackName(c.name),h=Cr.findNode(e,u.nodeName),p=rpe[u.propertyName];if(u.objectName==="bones"&&(h.isSkinnedMesh===!0?h=h.skeleton.getBoneByName(u.objectIndex):h=void 0),!h||!p)return console.warn('THREE.GLTFExporter: Could not export animation track "%s".',c.name),null;let d=1,f=c.values.length/c.times.length;p===rpe.morphTargetInfluences&&(f/=h.morphTargetInfluences.length);let m;c.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline===!0?(m="CUBICSPLINE",f/=3):c.getInterpolation()===vp?m="STEP":m="LINEAR",o.push({input:this.processAccessor(new jt(c.times,d)),output:this.processAccessor(new jt(c.values,f)),interpolation:m}),a.push({sampler:o.length-1,target:{node:n.get(h),path:p}})}return i.animations.push({name:r.name||"clip_"+i.animations.length,samplers:o,channels:a}),i.animations.length-1}processSkin(r){let e=this.json,i=this.nodeMap,n=e.nodes[i.get(r)],s=r.skeleton;if(s===void 0)return null;let a=r.skeleton.bones[0];if(a===void 0)return null;let o=[],l=new Float32Array(s.bones.length*16),c=new Ue;for(let h=0;h<s.bones.length;++h)o.push(i.get(s.bones[h])),c.copy(s.boneInverses[h]),c.multiply(r.bindMatrix).toArray(l,h*16);return e.skins===void 0&&(e.skins=[]),e.skins.push({inverseBindMatrices:this.processAccessor(new jt(l,16)),joints:o,skeleton:i.get(a)}),n.skin=e.skins.length-1}processNode(r){let e=this.json,i=this.options,n=this.nodeMap;e.nodes||(e.nodes=[]);let s={};if(i.trs){let o=r.quaternion.toArray(),l=r.position.toArray(),c=r.scale.toArray();Ox(o,[0,0,0,1])||(s.rotation=o),Ox(l,[0,0,0])||(s.translation=l),Ox(c,[1,1,1])||(s.scale=c)}else r.matrixAutoUpdate&&r.updateMatrix(),Bvt(r.matrix)===!1&&(s.matrix=r.matrix.elements);if(r.name!==""&&(s.name=String(r.name)),this.serializeUserData(r,s),r.isMesh||r.isLine||r.isPoints){let o=this.processMesh(r);o!==null&&(s.mesh=o)}else r.isCamera&&(s.camera=this.processCamera(r));if(r.isSkinnedMesh&&this.skins.push(r),r.children.length>0){let o=[];for(let l=0,c=r.children.length;l<c;l++){let u=r.children[l];if(u.visible||i.onlyVisible===!1){let h=this.processNode(u);h!==null&&o.push(h)}}o.length>0&&(s.children=o)}this._invokeAll(function(o){o.writeNode&&o.writeNode(r,s)});let a=e.nodes.push(s)-1;return n.set(r,a),a}processScene(r){let e=this.json,i=this.options;e.scenes||(e.scenes=[],e.scene=0);let n={};r.name!==""&&(n.name=r.name),e.scenes.push(n);let s=[];for(let a=0,o=r.children.length;a<o;a++){let l=r.children[a];if(l.visible||i.onlyVisible===!1){let c=this.processNode(l);c!==null&&s.push(c)}}s.length>0&&(n.nodes=s),this.serializeUserData(r,n)}processObjects(r){let e=new On;e.name="AuxScene";for(let i=0;i<r.length;i++)e.children.push(r[i]);this.processScene(e)}processInput(r){let e=this.options;r=r instanceof Array?r:[r],this._invokeAll(function(n){n.beforeParse&&n.beforeParse(r)});let i=[];for(let n=0;n<r.length;n++)r[n]instanceof On?this.processScene(r[n]):i.push(r[n]);i.length>0&&this.processObjects(i);for(let n=0;n<this.skins.length;++n)this.processSkin(this.skins[n]);for(let n=0;n<e.animations.length;++n)this.processAnimation(e.animations[n],r[0]);this._invokeAll(function(n){n.afterParse&&n.afterParse(r)})}_invokeAll(r){for(let e=0,i=this.plugins.length;e<i;e++)r(this.plugins[e])}},iB=class{constructor(r){this.writer=r,this.name="KHR_lights_punctual"}writeNode(r,e){if(!r.isLight)return;if(!r.isDirectionalLight&&!r.isPointLight&&!r.isSpotLight){console.warn("THREE.GLTFExporter: Only directional, point, and spot lights are supported.",r);return}let i=this.writer,n=i.json,s=i.extensionsUsed,a={};r.name&&(a.name=r.name),a.color=r.color.toArray(),a.intensity=r.intensity,r.isDirectionalLight?a.type="directional":r.isPointLight?(a.type="point",r.distance>0&&(a.range=r.distance)):r.isSpotLight&&(a.type="spot",r.distance>0&&(a.range=r.distance),a.spot={},a.spot.innerConeAngle=(r.penumbra-1)*r.angle*-1,a.spot.outerConeAngle=r.angle),r.decay!==void 0&&r.decay!==2&&console.warn("THREE.GLTFExporter: Light decay may be lost. glTF is physically-based, and expects light.decay=2."),r.target&&(r.target.parent!==r||r.target.position.x!==0||r.target.position.y!==0||r.target.position.z!==-1)&&console.warn("THREE.GLTFExporter: Light direction may be lost. For best results, make light.target a child of the light with position 0,0,-1."),s[this.name]||(n.extensions=n.extensions||{},n.extensions[this.name]={lights:[]},s[this.name]=!0);let o=n.extensions[this.name].lights;o.push(a),e.extensions=e.extensions||{},e.extensions[this.name]={light:o.length-1}}},nB=class{constructor(r){this.writer=r,this.name="KHR_materials_unlit"}writeMaterial(r,e){if(!r.isMeshBasicMaterial)return;let n=this.writer.extensionsUsed;e.extensions=e.extensions||{},e.extensions[this.name]={},n[this.name]=!0,e.pbrMetallicRoughness.metallicFactor=0,e.pbrMetallicRoughness.roughnessFactor=.9}},sB=class{constructor(r){this.writer=r,this.name="KHR_materials_clearcoat"}writeMaterial(r,e){if(!r.isMeshPhysicalMaterial||r.clearcoat===0)return;let i=this.writer,n=i.extensionsUsed,s={};if(s.clearcoatFactor=r.clearcoat,r.clearcoatMap){let a={index:i.processTexture(r.clearcoatMap)};i.applyTextureTransform(a,r.clearcoatMap),s.clearcoatTexture=a}if(s.clearcoatRoughnessFactor=r.clearcoatRoughness,r.clearcoatRoughnessMap){let a={index:i.processTexture(r.clearcoatRoughnessMap)};i.applyTextureTransform(a,r.clearcoatRoughnessMap),s.clearcoatRoughnessTexture=a}if(r.clearcoatNormalMap){let a={index:i.processTexture(r.clearcoatNormalMap)};i.applyTextureTransform(a,r.clearcoatNormalMap),s.clearcoatNormalTexture=a}e.extensions=e.extensions||{},e.extensions[this.name]=s,n[this.name]=!0}},aB=class{constructor(r){this.writer=r,this.name="KHR_materials_iridescence"}writeMaterial(r,e){if(!r.isMeshPhysicalMaterial||r.iridescence===0)return;let i=this.writer,n=i.extensionsUsed,s={};if(s.iridescenceFactor=r.iridescence,r.iridescenceMap){let a={index:i.processTexture(r.iridescenceMap)};i.applyTextureTransform(a,r.iridescenceMap),s.iridescenceTexture=a}if(s.iridescenceIor=r.iridescenceIOR,s.iridescenceThicknessMinimum=r.iridescenceThicknessRange[0],s.iridescenceThicknessMaximum=r.iridescenceThicknessRange[1],r.iridescenceThicknessMap){let a={index:i.processTexture(r.iridescenceThicknessMap)};i.applyTextureTransform(a,r.iridescenceThicknessMap),s.iridescenceThicknessTexture=a}e.extensions=e.extensions||{},e.extensions[this.name]=s,n[this.name]=!0}},oB=class{constructor(r){this.writer=r,this.name="KHR_materials_transmission"}writeMaterial(r,e){if(!r.isMeshPhysicalMaterial||r.transmission===0)return;let i=this.writer,n=i.extensionsUsed,s={};if(s.transmissionFactor=r.transmission,r.transmissionMap){let a={index:i.processTexture(r.transmissionMap)};i.applyTextureTransform(a,r.transmissionMap),s.transmissionTexture=a}e.extensions=e.extensions||{},e.extensions[this.name]=s,n[this.name]=!0}},lB=class{constructor(r){this.writer=r,this.name="KHR_materials_volume"}writeMaterial(r,e){if(!r.isMeshPhysicalMaterial||r.transmission===0)return;let i=this.writer,n=i.extensionsUsed,s={};if(s.thicknessFactor=r.thickness,r.thicknessMap){let a={index:i.processTexture(r.thicknessMap)};i.applyTextureTransform(a,r.thicknessMap),s.thicknessTexture=a}s.attenuationDistance=r.attenuationDistance,s.attenuationColor=r.attenuationColor.toArray(),e.extensions=e.extensions||{},e.extensions[this.name]=s,n[this.name]=!0}},cB=class{constructor(r){this.writer=r,this.name="KHR_materials_ior"}writeMaterial(r,e){if(!r.isMeshPhysicalMaterial||r.ior===1.5)return;let n=this.writer.extensionsUsed,s={};s.ior=r.ior,e.extensions=e.extensions||{},e.extensions[this.name]=s,n[this.name]=!0}},uB=class{constructor(r){this.writer=r,this.name="KHR_materials_specular"}writeMaterial(r,e){if(!r.isMeshPhysicalMaterial||r.specularIntensity===1&&r.specularColor.equals(Pvt)&&!r.specularIntensityMap&&!r.specularColorTexture)return;let i=this.writer,n=i.extensionsUsed,s={};if(r.specularIntensityMap){let a={index:i.processTexture(r.specularIntensityMap)};i.applyTextureTransform(a,r.specularIntensityMap),s.specularTexture=a}if(r.specularColorMap){let a={index:i.processTexture(r.specularColorMap)};i.applyTextureTransform(a,r.specularColorMap),s.specularColorTexture=a}s.specularFactor=r.specularIntensity,s.specularColorFactor=r.specularColor.toArray(),e.extensions=e.extensions||{},e.extensions[this.name]=s,n[this.name]=!0}};oT.Utils={insertKeyframe:function(t,r){let i=t.getValueSize(),n=new t.TimeBufferType(t.times.length+1),s=new t.ValueBufferType(t.values.length+i),a=t.createInterpolant(new t.ValueBufferType(i)),o;if(t.times.length===0){n[0]=r;for(let l=0;l<i;l++)s[l]=0;o=0}else if(r<t.times[0]){if(Math.abs(t.times[0]-r)<.001)return 0;n[0]=r,n.set(t.times,1),s.set(a.evaluate(r),0),s.set(t.values,i),o=0}else if(r>t.times[t.times.length-1]){if(Math.abs(t.times[t.times.length-1]-r)<.001)return t.times.length-1;n[n.length-1]=r,n.set(t.times,0),s.set(t.values,0),s.set(a.evaluate(r),t.values.length),o=n.length-1}else for(let l=0;l<t.times.length;l++){if(Math.abs(t.times[l]-r)<.001)return l;if(t.times[l]<r&&t.times[l+1]>r){n.set(t.times.slice(0,l+1),0),n[l+1]=r,n.set(t.times.slice(l+1),l+2),s.set(t.values.slice(0,(l+1)*i),0),s.set(a.evaluate(r),(l+1)*i),s.set(t.values.slice((l+1)*i),(l+2)*i),o=l+1;break}}return t.times=n,t.values=s,o},mergeMorphTargetTracks:function(t,r){let e=[],i={},n=t.tracks;for(let s=0;s<n.length;++s){let a=n[s],o=Cr.parseTrackName(a.name),l=Cr.findNode(r,o.nodeName);if(o.propertyName!=="morphTargetInfluences"||o.propertyIndex===void 0){e.push(a);continue}if(a.createInterpolant!==a.InterpolantFactoryMethodDiscrete&&a.createInterpolant!==a.InterpolantFactoryMethodLinear){if(a.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline)throw new Error("THREE.GLTFExporter: Cannot merge tracks with glTF CUBICSPLINE interpolation.");console.warn("THREE.GLTFExporter: Morph target interpolation mode not yet supported. Using LINEAR instead."),a=a.clone(),a.setInterpolation(Hu)}let c=l.morphTargetInfluences.length,u=l.morphTargetDictionary[o.propertyIndex];if(u===void 0)throw new Error("THREE.GLTFExporter: Morph target name not found: "+o.propertyIndex);let h;if(i[l.uuid]===void 0){h=a.clone();let d=new h.ValueBufferType(c*h.times.length);for(let f=0;f<h.times.length;f++)d[f*c+u]=h.values[f];h.name=(o.nodeName||"")+".morphTargetInfluences",h.values=d,i[l.uuid]=h,e.push(h);continue}let p=a.createInterpolant(new a.ValueBufferType(1));h=i[l.uuid];for(let d=0;d<h.times.length;d++)h.values[d*c+u]=p.evaluate(h.times[d]);for(let d=0;d<a.times.length;d++){let f=this.insertKeyframe(h,a.times[d]);h.values[f*c+u]=a.values[d]}}return t.tracks=e,t}};var SC=class{parse(r){let e="",i=0,n=0,s=0,a=new A,o=new Ve,l=new A,c=new le,u=[];function h(f){let m=0,g=0,y=0,E=f.geometry,b=new Qi,x=E.getAttribute("position"),S=E.getAttribute("normal"),D=E.getAttribute("uv"),P=E.getIndex();if(e+="o "+f.name+`
|
||
`,f.material&&f.material.name&&(e+="usemtl "+f.material.name+`
|
||
`),x!==void 0)for(let _=0,w=x.count;_<w;_++,m++)a.fromBufferAttribute(x,_),a.applyMatrix4(f.matrixWorld),e+="v "+a.x+" "+a.y+" "+a.z+`
|
||
`;if(D!==void 0)for(let _=0,w=D.count;_<w;_++,y++)c.fromBufferAttribute(D,_),e+="vt "+c.x+" "+c.y+`
|
||
`;if(S!==void 0){b.getNormalMatrix(f.matrixWorld);for(let _=0,w=S.count;_<w;_++,g++)l.fromBufferAttribute(S,_),l.applyMatrix3(b).normalize(),e+="vn "+l.x+" "+l.y+" "+l.z+`
|
||
`}if(P!==null)for(let _=0,w=P.count;_<w;_+=3){for(let F=0;F<3;F++){let X=P.getX(_+F)+1;u[F]=i+X+(S||D?"/"+(D?n+X:"")+(S?"/"+(s+X):""):"")}e+="f "+u.join(" ")+`
|
||
`}else for(let _=0,w=x.count;_<w;_+=3){for(let F=0;F<3;F++){let X=_+F+1;u[F]=i+X+(S||D?"/"+(D?n+X:"")+(S?"/"+(s+X):""):"")}e+="f "+u.join(" ")+`
|
||
`}i+=m,n+=y,s+=g}function p(f){let m=0,g=f.geometry,y=f.type,E=g.getAttribute("position");if(e+="o "+f.name+`
|
||
`,E!==void 0)for(let b=0,x=E.count;b<x;b++,m++)a.fromBufferAttribute(E,b),a.applyMatrix4(f.matrixWorld),e+="v "+a.x+" "+a.y+" "+a.z+`
|
||
`;if(y==="Line"){e+="l ";for(let b=1,x=E.count;b<=x;b++)e+=i+b+" ";e+=`
|
||
`}if(y==="LineSegments")for(let b=1,x=b+1,S=E.count;b<S;b+=2,x=b+1)e+="l "+(i+b)+" "+(i+x)+`
|
||
`;i+=m}function d(f){let m=0,g=f.geometry,y=g.getAttribute("position"),E=g.getAttribute("color");if(e+="o "+f.name+`
|
||
`,y!==void 0){for(let b=0,x=y.count;b<x;b++,m++)a.fromBufferAttribute(y,b),a.applyMatrix4(f.matrixWorld),e+="v "+a.x+" "+a.y+" "+a.z,E!==void 0&&(o.fromBufferAttribute(E,b).convertLinearToSRGB(),e+=" "+o.r+" "+o.g+" "+o.b),e+=`
|
||
`;e+="p ";for(let b=1,x=y.count;b<=x;b++)e+=i+b+" ";e+=`
|
||
`}i+=m}return r.traverse(function(f){f.isMesh===!0&&h(f),f.isLine===!0&&p(f),f.isPoints===!0&&d(f)}),e}};var xn=class{static exportToGltf(r,e){xn.exportToGltfOrGlb(r,e,{binary:!1})}static exportToGlb(r,e){xn.exportToGltfOrGlb(r,e,{binary:!0})}static exportToGltfOrGlb(r,e,i={}){if(!r||!e)throw new Error("Invalid input or filename!");let n=new oT;i=Object.assign({},{binary:!0,onlyVisible:!1,includeCustomExtensions:!1},i),n.parse(r,a=>{if(i.binary){e=xn.addExtention(e,xn.EXTENSION_GLB);let o=a;xn.saveArrayBuffer(o,e)}else e=xn.addExtention(e,xn.EXTENSION_GLTF),xn.saveJson(a,e)},a=>console.log(a),i)}static exportToObj(r,e){if(!r||!e)throw new Error("Invalid input or filename!");e=xn.addExtention(e,xn.EXTENSION_OBJ);let n=new SC().parse(r);xn.saveString(n,e)}static exportToDraco(r,e,i={}){if(!r||!e)throw new Error("Invalid input or filename!");e=xn.addExtention(e,xn.EXTENSION_DRACO);let n=new Zs;i=Object.assign({},{encodeSpeed:5},i);let a=n.parse(r,i);xn.saveArrayBuffer(a,e)}static exportToThreeJsJson(r,e){let i=r.toJSON();e.toLowerCase().endsWith(xn.EXTENSION_JSON)||(e+=xn.EXTENSION_JSON),xn.saveJson(i,e)}static save(r,e){let i=xn.downloadLink;i||(i=document.createElement("a"),i.style.display="none",document.body.appendChild(i),xn.downloadLink=i),i.href=URL.createObjectURL(r),i.download=e,i.click()}static saveArrayBuffer(r,e){xn.save(new Blob([r],{type:"application/octet-stream"}),e)}static saveJson(r,e){xn.saveJsonString(JSON.stringify(r),e)}static saveJsonString(r,e){xn.save(new Blob([r],{type:"application/json"}),e)}static saveString(r,e){xn.save(new Blob([r],{type:"text/csv"}),e)}static addExtention(r,e){return r.toLowerCase().endsWith(e.toLowerCase())||(r+=e),r}},Gg=xn;Gg.EXTENSION_GLTF=".gltf",Gg.EXTENSION_GLB=".glb",Gg.EXTENSION_OBJ=".obj",Gg.EXTENSION_DRACO=".drc",Gg.EXTENSION_JSON=".json";var _C=class{constructor(){this.prevTime=(performance||Date).now();this.beginTime=(performance||Date).now();this.frames=0;this.fps=Number.NaN}begin(){this.beginTime=(performance||Date).now()}end(){this.frames++;let r=(performance||Date).now();return r>=this.prevTime+1e3&&(this.fps=Math.round(this.frames*1e3/(r-this.prevTime)),this.frames=0,this.prevTime=r),r}update(){this.beginTime=this.end()}};var hB=1e-15,lr=class{static roundNumber(r,e){return Math.round(r*Math.pow(10,e))/Math.pow(10,e)}static floorNumber(r,e){return Math.floor(r*Math.pow(10,e))/Math.pow(10,e)}static areNumbersEqual(r,e,i=1e-7){return Math.abs(r-e)<i*Math.max(1,Math.abs(r),Math.abs(e))}static areVector2sEqual(r,e,i=1e-7){return lr.areNumbersEqual(r.x,e.x,i)&&lr.areNumbersEqual(r.y,e.y,i)}static areVector3sEqual(r,e,i=1e-7){return lr.areNumbersEqual(r.x,e.x,i)&&lr.areNumbersEqual(r.y,e.y,i)&&lr.areNumbersEqual(r.z,e.z,i)}static areNumbersClose(r,e,i=1e-9,n=1e-12){return Math.abs(r-e)<=Math.max(i*Math.max(Math.abs(r),Math.abs(e)),n)}static areVector2sClose(r,e,i=1e-9,n=1e-12){return this.areNumbersClose(r.x,e.x,i,n)&&this.areNumbersClose(r.y,e.y,i,n)}static areVectorsClose(r,e,i=1e-9,n=1e-12){return this.areNumbersClose(r.x,e.x,i,n)&&this.areNumbersClose(r.y,e.y,i,n)&&this.areNumbersClose(r.z,e.z,i,n)}static getArcAngleSpanRad(r,e){let i=Math.PI*2;return lr.areNumbersClose(r,e,hB)?0:(r%=i,lr.areNumbersClose(r,e%i,hB)?i:(lr.areNumbersClose(e,i,hB)&&(e%=i),e<r&&(e+=i),e-r))}static getIntegerPartLength(r){return r=Math.abs(r),r<1?0:Math.ceil(Math.log10(Math.abs(r)+1))}static getRelativeEps(r,e=1e-7){let i=lr.getIntegerPartLength(r);return Math.max(Math.pow(10,i)*e,e)}static getVector2RelativeEps(r,e=1e-7){return Math.min(lr.getRelativeEps(r.x,e),lr.getRelativeEps(r.y,e))}static getControlPointByTwoPoints(r,e){let i=new le().subVectors(e,r),n=i.angle(),s=i.length(),a=wr.degToRad(45),o=s/2/Math.cos(a);return new le(r.x+o*Math.cos(a-n),r.y-o*Math.sin(a-n))}};var Vg=Un(lpe(),1);var Lp=class{constructor(r,e){this.current=r,this.next=e,this.inNormal=this.inwardsNormal(),this.outNormal=this.outwardsNormal()}outwardsNormal(){let r=this.inwardsNormal();return[-r[0],-r[1]]}inwardsNormal(){let r=this.next[0]-this.current[0],e=this.next[1]-this.current[1],i=Math.sqrt(r*r+e*e);if(i===0)throw new Error("Vertices overlap");return[-e/i,r/i]}offset(r,e){return Lp.offsetEdge(this.current,this.next,r,e)}inverseOffset(r,e){return Lp.offsetEdge(this.next,this.current,r,e)}inverse(){return new Lp(this.next,this.current)}static offsetEdge(r,e,i,n){return new Lp([r[0]+i,r[1]+n],[e[0]+i,e[1]+n])}};var Px=Array.isArray,cpe=(t,r)=>t[0]===r[0]&&t[1]===r[1],fB=t=>Array.isArray(t)&&t.length,upe=(t,r=0,e=!1)=>{let i,n;if(fB(t)&&typeof t[0][0]=="number"){let s=0,a=t;for(i=0,n=a.length;i<n;i++){let o=a[i],l=a[(i+1)%n];s+=o[0]*l[1],s-=l[0]*o[1]}(!e&&s>0||e&&s<0)&&a.reverse()}else for(i=0,n=t.length;i<n;i++)upe(t[i],r+1,i>0);if(r===0&&fB(t)&&fB(t[0])&&typeof t[0][0][0]=="number"){let s=t[0].slice(0,1)[0];t[0].pop(),t[0].push([s[0],s[1]])}return t},wC=class{constructor(r,e=5){if(this.distance=0,this.arcSegments=e,!Px(r))throw new Error("Offset requires at least one coodinate to work with");this.edges=[],Px(r)&&typeof r[0]=="number"?this.vertices=r:(this.vertices=upe(r),this.processContour(this.vertices,this.edges))}processContour(r,e){let i,n;if(Px(r[0])&&typeof r[0][0]=="number")for(r=r,e=e,n=r.length,cpe(r[0],r[n-1])&&(n-=1),i=0;i<n;i++)e.push(new Lp(r[i],r[(i+1)%n]));else for(r=r,e=e,i=0,n=r.length;i<n;i++)e.push([]),this.processContour(r[i],e[e.length-1])}setArcSegments(r){return this.arcSegments=r,this}createArc(r,e,i,n,s,a,o){let l=Math.PI*2,c=Math.atan2(n[1]-e[1],n[0]-e[0]),u=Math.atan2(s[1]-e[1],s[0]-e[0]);a%2===0&&(a-=1),c<0&&(c+=l),u<0&&(u+=l);let h=c>u?c-u:c+l-u,p=(o?-h:l-h)/a;r.push(n);for(let d=1;d<a;++d)h=c+p*d,r.push([e[0]+Math.cos(h)*i,e[1]+Math.sin(h)*i]);return r.push(s),r}setDistance(r){return this.distance=r,this}ensureLastPoint(r){return cpe(r[0],r[r.length-1])||r.push([r[0][0],r[0][1]]),r}offset(r){return this.setDistance(r),this.distance===0?this.vertices:this.distance>0?this.margin(this.distance):this.padding(-this.distance)}offsetSegment(r,e,i,n){let s=[i.offset(i.inNormal[0]*n,i.inNormal[1]*n),i.inverseOffset(i.outNormal[0]*n,i.outNormal[1]*n)],a=[];for(let o=0,l=2;o<l;o++){let c=s[o],u=s[(o+l-1)%l];this.createArc(a,o===0?r:e,n,u.next,c.current,this.arcSegments,!0)}return a}margin(r){if(this.setDistance(r),typeof this.vertices[0]=="number")return this.offsetPoint(this.distance);if(r===0)return this.vertices;let e=this.offsetLines(this.distance);return e=(0,Vg.union)(this.vertices,e),e}padding(r){if(this.setDistance(r),this.distance===0)return this.vertices;if(this.vertices.length===2&&typeof this.vertices[0]=="number")return this.vertices;let e=this.offsetLines(this.distance);return(0,Vg.difference)(this.vertices,e)}offsetLine(r){return r===0?this.vertices:this.offsetLines(r)}offsetLines(r){if(r<0)throw new Error("Cannot apply negative margin to the line");this.setDistance(r);let e=[];if(Px(this.vertices[0])&&typeof this.vertices[0][0]!="number"){let i=[];for(let n=0,s=this.edges.length;n<s;n++){let a=this.offsetContour(this.vertices[n],this.edges[n]);a.length>0&&i.push(a)}i.length>0&&(e=i.length===1?i[0]:(0,Vg.union)(i[0],...i.slice(1)))}else e=this.vertices.length===1?this.offsetPoint(r):this.offsetContour(this.vertices,this.edges);return e}offsetContour(r,e){let i=[],n=0,s=0;if(Px(r[0])&&typeof r[0][0]=="number"){for(n=0,s=r.length-1;n<s;n++){let o=[this.ensureLastPoint(this.offsetSegment(r[n],r[n+1],e[n],this.distance))];i.push(o)}i.length>0&&(i=i.length===1?[i[0]]:(0,Vg.union)(i[0],i.slice(1)))}else{let a=[];for(n=0,s=e.length;n<s;n++){let o=this.offsetContour(r[n],e[n]);o.length>0&&a.push(o)}a.length>0&&(i=a.length===1?a[0]:(0,Vg.union)(a[0],...a.slice(1)))}return i}offsetPoint(r){this.setDistance(r);let e=this.arcSegments*2,i=[],n=this.vertices,s=this.distance,a=0;e%2===0&&e++;for(let o=0;o<e;o++)a+=2*Math.PI/e,i.push([n[0]+s*Math.cos(a),n[1]+s*Math.sin(a)]);return[[this.ensureLastPoint(i)]]}};var mB=1e7,hpe=new Ds,ppe=new Ds,dpe=new A,fpe=new A,mpe=new A,_f=new un,Wt=class{static geometryEquals(r,e){return r===e?!0:r.type===e.type&&r.name===e.name&&r.morphTargetsRelative===e.morphTargetsRelative&&this.equals(r.boundingBox,e.boundingBox)&&this.equals(r.boundingSphere,e.boundingSphere)&&this.attributesEqual(r.attributes,e.attributes)&&this.bufferAttributeEqual(r.index,e.index)}static equals(r,e){return r===e||!r&&!e?!0:r&&e?r.equals(e):!1}static attributesEqual(r,e){if(r===e)return!0;let i=Object.keys(r).sort(),n=Object.keys(e).sort();if(i.length!==n.length)return!1;for(let s=0;s<i.length;++s){if(i[s]!==n[s])return!1;let a=r[i[s]],o=e[n[s]];if(!this.bufferAttributeEqual(a,o))return!1}return!0}static bufferAttributeEqual(r,e){if(r===e)return!0;if(!r||!e||!(r.name===e.name&&r.itemSize===e.itemSize&&r.count===e.count&&r.normalized===e.normalized))return!1;if(r.array&&e.array){if(r.array.length!==e.array.length)return!1;for(let a=0;a<r.array.length;++a)if(r.array[a]!==e.array[a])return!1}else if(r.array||e.array)return!1;let n=r.data,s=e.data;if(n&&s){if(n.length!==s.length)return!1;for(let a=0;a<n.length;++a)if(n[a]!==s[a])return!1}else if(n||s)return!1;return!0}static tryConvertInterleavedBufferAttributes(r){!r||!r.attributes||Object.keys(r.attributes).forEach(e=>{let i=r.attributes[e];if(i instanceof to){let n=i.clone();r.attributes[e]=n}})}static isPointInPolygon(r,e,i=!1){let n=r.x,s=r.y,a=!1,o=e.length;for(let l=0,c=o-1;l<o;c=l++){let u=e[l].x,h=e[l].y,p=e[c].x,d=e[c].y,f=h>s!=d>s;i&&(f=h>=s!=d>=s),f&&n<(p-u)*(s-h)/(d-h)+u&&(a=!a)}return a}static caculateGeometryCenter(r){if(!r.hasAttribute("position"))return null;let e=r.getAttribute("position");if(e.count===0)return null;let i=new A,n=e.itemSize,s=e.array,a=[0,0,0];for(let o=0;o<e.count;o++)for(let l=0;l<n;l++)a[l]+=s[o*n+l];for(let o=0;o<n;o++)i.setComponent(o,a[o]/e.count);return i}static isConvex(r){let e=r.length,i=0,n=0,s=new le,a=new le;for(let o=0;o<e;++o){let l=r[o],c=r[(o+1)%e],u=r[(o+2)%e];if(s.subVectors(c,l),a.subVectors(u,c),n=s.cross(a),n!=0){if(n>0&&i<0||n<0&&i>0)return!1;i=n}}return!0}static areLineSegmentsIntersecting(r,e){let{start:i,end:n}=r,{start:s,end:a}=e,o=s.clone().sub(i),l=n.clone().sub(i),c=a.clone().sub(i),u=o.cross(l).dot(c.cross(l)),h=i.clone().sub(s),p=a.clone().sub(s),d=n.clone().sub(s),f=h.cross(p).dot(d.cross(p));return u<0&&f<0}static getLineSegmentsIntersectingPoint(r,e){let{start:i,end:n}=r,{start:s,end:a}=e,o=dpe.subVectors(n,i).normalize(),l=fpe.subVectors(a,s).normalize();if(o.dot(l)===1)return null;let c=mpe.subVectors(s,i),u=o.clone().cross(l),h=c.clone().cross(l),p=c.clone().dot(u);if(p>=1e-5||p<=-1e-5)return null;let d=u.lengthSq();if(lr.areNumbersEqual(0,d))return;let f=h.clone().dot(u)/d,m=i.clone().add(o.multiplyScalar(f));return m.equals(i)||m.equals(n)?null:m}static isPointOnLineSegment(r,e,i=.001){let{start:n,end:s}=e,a=dpe.subVectors(n,s).length(),o=fpe.subVectors(r,n).length(),l=mpe.subVectors(r,s).length();return Math.abs(a-(o+l))<=i}static isPointOnLineSegments(r,e,i=.001){let n=!1;for(let s=0;s<e.length-1;s+=2){let a=e[s],o=e[s+1];if(n=this.isPointOnLineSegment(r,{start:a,end:o},i),n)break}return n}static checkAndRebasePositionsOnRTC(r,e){if(r.length===0)return!1;let i=r[0]instanceof A;r.forEach(s=>{i?e.add(s):(e.x+=s.x,e.y+=s.y)}),e.divideScalar(r.length);let n=!1;if(Wt.shouldRebasePositionOnRTC(e)){n=!0;for(let s=0;s<r.length;s++){let a=r[s].x-e.x,o=r[s].y-e.y;i?r[s]=new A(a,o,r[s].z-e.z):r[s]=new le(a,o)}}else e.setScalar(0);return n}static shouldRebasePositionOnRTC(r){return Math.abs(r.x)>mB||Math.abs(r.y)>mB||r instanceof A&&Math.abs(r.z)>mB}static calculateSurfaceArea(r){let e=0,i=r.getAttribute("position"),n=r.index;if(n)for(let s=0;s<n.count;s+=3)_f.a.fromBufferAttribute(i,n.getX(s)),_f.b.fromBufferAttribute(i,n.getX(s+1)),_f.c.fromBufferAttribute(i,n.getX(s+2)),e+=_f.getArea();else for(let s=0;s<i.count;s+=3)_f.a.fromBufferAttribute(i,s),_f.b.fromBufferAttribute(i,s+1),_f.c.fromBufferAttribute(i,s+2),e+=_f.getArea();return e}static convertLineStripToLine(r,e=!1){let i=r.getIndex();if(!i)return;let n=i.array.constructor,s=i.count,a=s;s>2&&(a=e?s*2:s*2-2);let o=new n(a),l=0;for(let c=0;c<s;c++){let u=i.getX(c);o[l++]=u,c>0&&c<s-1&&(o[l++]=u)}e&&(o[l++]=i.getX(s-1),o[l++]=i.getX(0)),r.setIndex(o)}static convertGeometryWithIndexedToNonIndexed(r){if(!r.index)return r;let e=new it,i=r.index;for(let n in r.attributes)e.setAttribute(n,Wt.createGeometryAttributeByIndex(r.attributes[n],i));return e}static createGeometryAttributeByIndex(r,e){let i=e.count,n=r.itemSize,s=r.array.constructor,a=new s(i*n);for(let o=0;o<i;o++){let c=e.getX(o)*n;for(let u=0;u<n;u++)a[o*n+u]=r.array[c+u]}return new jt(a,n,r.normalized)}static getLineEndPointsByIndex(r,e){var c,u,h;let i=p=>{let f=r.geometry.attributes.position.array;return r.localToWorld(new A(f[3*p],f[3*p+1],f[3*p+2]))};r.updateWorldMatrix(!0,!1);let n=((c=r.geometry.getIndex())==null?void 0:c.array)||[],s=(u=n[e])!=null?u:e,a=(h=n[e+1])!=null?h:e+1,o=i(s),l=i(a);return[o,l]}static arePolygonsIntersect(r,e){if(r.length===0||e.length===0||(hpe.setFromPoints(r),ppe.setFromPoints(e),!hpe.intersectsBox(ppe)))return!1;for(let i=0;i<r.length;){if(this.isPointInPolygon(r[i],e,!0))return!0;i<r.length-1&&lr.areVector2sEqual(r[i+1],r[i])&&++i,++i}return!1}static getLineLineIntersectionPoint(r,e,i,n,s=.001){let a=e.clone().sub(r).normalize(),o=n.clone().sub(i).normalize();if(Math.abs(a.dot(o))>1-s)return;let l=e.y-r.y,c=r.x-e.x,u=l*r.x+c*r.y,h=n.y-i.y,p=i.x-n.x,d=h*i.x+p*i.y,f=l*p-h*c;if(Math.abs(f)<s)return;let m=(p*u-c*d)/f,g=(l*d-h*u)/f;return new le(m,g)}static getOffsetPoint(r,e,i){let n=e.x-r.x,s=e.y-r.y,a=Math.sqrt(n*n+s*s),o=i/a;return new le(-o*s,o*n)}static convertSimpleWidthLineToMeshGeometry(r,e){let i,n=!1,s=!1,a=[],o=[],l,c,u=new le,h=new le,p=new le,d=new le,f=[],m=e/2;for(let b=0,x=r.length-1;b<x;b++)n=!b,s=b===r.length-2,i=this.getOffsetPoint(r[b],r[b+1],m),u=new le(r[b].x+i.x,r[b].y+i.y),h=new le(r[b+1].x+i.x,r[b+1].y+i.y),p=new le(r[b].x-i.x,r[b].y-i.y),d=new le(r[b+1].x-i.x,r[b+1].y-i.y),n||(l=this.getLineLineIntersectionPoint(a[0],a[1],u,h),l!==void 0?f.unshift(l):f.unshift(u),c=this.getLineLineIntersectionPoint(o[0],o[1],p,d),c!==void 0?f.push(c):f.push(p)),n&&(f.unshift(u),f.push(p)),s&&(f.unshift(h),f.push(d)),s||(a=[u,h],o=[p,d]);if(f.length<3)return;let g=es.triangulateShape(f,[]),y=[];for(let b=0;b<g.length;b++)y.push(...g[b]);let E=new it().setFromPoints(f);return E.setIndex(y),E}static convertWidthLineToMeshGeometry(r,e){if(r.length<2)return;let i=[];r.forEach(u=>{i.push([u.x,u.y])});let n;try{n=new wC(i).setArcSegments(2).offsetLine(e/2)}catch(u){return}if(!n||n.length===0)return;n=n[0];let s=[],a=[];for(let u=0;u<n.length;u++)if(u===0)n[u].forEach(h=>{s.push(new le(h[0],h[1]))}),es.isClockWise(s)||s.reverse();else{let h=[];n[u].forEach(p=>{h.push(new le(p[0],p[1]))}),es.isClockWise(h)&&h.reverse(),a.push(h)}let o=es.triangulateShape(s,a),l=[];for(let u=0;u<o.length;u++)l.push(...o[u]);a.forEach(u=>s.push(...u));let c=new it().setFromPoints(s);return c.setIndex(l),c}static releaseGeometryManually(r){r.index=null,r.attributes={}}static getAdjacentNonRepeatPoints(r,e=1e-7){let i=[],n=r.length;for(let s=0;s<n-1;s++)lr.areVector3sEqual(r[s],r[s+1],e)||i.push(r[s]);return i.push(r[n-1]),i}static mergeBBoxes(r){let e=[...r];if(e.length<2)return e;let i=[],n=[];for(let s=0;s<e.length;s++){let a=e[s];if(!n.includes(s)){for(let o=0;o<e.length;o++){let l=e[o];a.equals(l)||a.intersectsBox(l)&&(a.union(l),n.push(o))}i.push(a)}}return i}};var ho="gemini-viewer-icon";var wf="mousemove",gB="mouseup",vB="mousedown";var yB="plane-section-boxface";var zg=(i=>(i.ObjectsBoxSection="ObjectsBoxSection",i.PickPlaneSection="PickPlaneSection",i.AxisPlaneSection="AxisPlaneSection",i))(zg||{});var Ks=class{static createGroundGrid(r,e,i){r=r||this.DEFAULT_WIDTH,e=e||this.DEFAULT_WIDTH_SEGS;let n=new Tx(r,e);i?n.position.set(i.x,i.y,i.z):n.position.y=0;let s=n.material;return Array.isArray(s)||(s.opacity=this.DEFAULT_MAT_PARAMS.opacity,s.transparent=this.DEFAULT_MAT_PARAMS.transparent),n.name=this.GROUND_GRID_NAME,n.layers.set(11),n.matrixAutoUpdate=!1,n.updateMatrix(),n}static createGrassGround(r,e,i,n,s){return ot(this,null,function*(){return e=e||this.DEFAULT_WIDTH,i=i||this.DEFAULT_HEIGHT,new Promise(a=>{new Es().load(r||"images/terrain/grass.jpg",l=>{l.wrapS=l.wrapT=gn,l.repeat.set(n||this.DEFAULT_WIDTH_SEGS/5,s||this.DEFAULT_HEIGHT_SETS/5),l.anisotropy=16,l.encoding=yr;let c=new io({map:l});c.side=en;let u=new Je(new ts(e,i),c);return u.rotation.x=-Math.PI/2,u.position.y=0,u.receiveShadow=!0,u.name=this.GRASS_GROUND_NAME,u.layers.set(11),u.matrixAutoUpdate=!1,u.updateMatrix(),a(u)})})})}};Ks.GROUND_GRID_NAME="GROUND_GRID",Ks.GRASS_GROUND_NAME="GRASS_GROUND",Ks.DEFAULT_WIDTH=1e3,Ks.DEFAULT_HEIGHT=1e3,Ks.DEFAULT_WIDTH_SEGS=100,Ks.DEFAULT_HEIGHT_SETS=100,Ks.DEFAULT_MAT_PARAMS={color:12829635,transparent:!0,opacity:.5,wireframeLinewidth:.5};var gpe={NavCube:{front:"Front",back:"Back",top:"Top",bottom:"Bottom",left:"Left",right:"Right"},ContextMenu:{viewFitAll:"View Fit All",hideAll:"Hide All",showAll:"Show All",xRayAll:"X-Ray",xRayNone:"X-Ray None",selectNone:"Select None",resetView:"Reset View",viewFitEntity:"View Fit",hideEntity:"Hide",hideOthers:"Hide Others",xRayEntity:"X-Ray",xRayOthers:"X-Ray Others",select:"Select",deselect:"Undo Select",showSectionPlane:"Show Section Plane",showSectionBox:"Show Section Box",showAxisSection:"Show Axis Section",hideSectionPlane:"Hide Section Plane",hideSectionBox:"Hide Section Box",hideAxisSection:"Hide Axis Section",undoSection:"Undo Section"},ProgressBar:{Loading:"Loading",Comparing:"Comparing"},Toolbar:{homeView:"Home",orthoView:"Ortho View",measurement:"Measure",distanceMeasurement:"Distance",areaMeasurement:"Area",angleMeasurement:"Angle",coordinateMeasurement:"Coordinate",clearMeasurement:"Clear",markup:"Markup",markupArrow:"Arrow",markupRect:"Rect",markupCloudRect:"CloudRect",markupPolyLine:"PolyLine",markupCloudLine:"CloudLine",markupEllipse:"Ellipse",markupCircle:"Circle",markupDot:"Dot",markupText:"Text",markupX:"X",markupStroke:"Stroke Style",markupLineWidth:"Line Width",markupLineWidth2:"Line Width 2",markupLineWidth5:"Line Width 5",markupLineWidth10:"Line Width 10",markupFontSize:"Font Size",markupFontSize14:"14",markupFontSize18:"18",markupFontSize24:"24",clearMarkup:"Clear Markup",quitMarkup:"Quit markup",section:"Section",axisSection:"Axis Section",pickSectionPlane:"Pick Section Plane",sectionBox:"Section Box",bimTree:"BIM Tree",viewpoint:"Viewpoint",annotation:"Annotation",property:"Property",settings:"Settings",compared:"Compared",quitCompare:"Quit compare",fullscreen:"Full Screen",layers:"Layers",zoomToRectangle:"Zoom",screenshot:"Screenshot"},Tooltip:{measure:"Pick a point to continue, pressing ESC to exit",areaMeasurement:"Pick a point to continue, pressing ESC to exit, right click to finish",section:"Click to pick a section plane",boxSelect:"Box select an area"},PopPanel:{reset:"Reset"}},vpe={NavCube:{front:"\u524D",back:"\u540E",top:"\u4E0A",bottom:"\u4E0B",left:"\u5DE6",right:"\u53F3"},ContextMenu:{viewFitAll:"\u7F29\u653E\u89C6\u53E3\u5230\u6240\u6709\u6A21\u578B",hideAll:"\u5168\u90E8\u9690\u85CF",showAll:"\u5168\u90E8\u663E\u793A",xRayAll:"\u5168\u90E8\u5E94\u7528 X \u5149\u6A21\u5F0F",xRayNone:"\u6E05\u9664 X \u5149\u6A21\u5F0F",selectNone:"\u6E05\u7A7A\u9009\u62E9",resetView:"\u91CD\u7F6E\u89C6\u56FE",viewFitEntity:"\u7F29\u653E\u89C6\u53E3\u5230\u5B9E\u4F53",hideEntity:"\u9690\u85CF",hideOthers:"\u9690\u85CF\u5176\u4ED6 (\u9694\u79BB)",xRayEntity:"\u5E94\u7528 X \u5149\u6A21\u5F0F",xRayOthers:"\u5BF9\u5176\u4ED6\u5B9E\u4F53\u5E94\u7528 X \u5149\u6A21\u5F0F",select:"\u9009\u62E9",deselect:"\u53D6\u6D88\u9009\u62E9",showSectionPlane:"\u663E\u793A\u5256\u5207\u9762",showSectionBox:"\u663E\u793A\u5256\u5207\u76D2",showAxisSection:"\u663E\u793A\u8F74\u5411\u5256\u5207",hideSectionPlane:"\u9690\u85CF\u5256\u5207\u9762",hideSectionBox:"\u9690\u85CF\u5256\u5207\u76D2",hideAxisSection:"\u9690\u85CF\u8F74\u5411\u5256\u5207",undoSection:"\u53D6\u6D88\u5256\u5207"},ProgressBar:{Loading:"\u6B63\u5728\u52A0\u8F7D",Comparing:"\u6B63\u5728\u5BF9\u6BD4"},Toolbar:{homeView:"\u4E3B\u89C6\u56FE",orthoView:"\u6B63\u4EA4\u89C6\u56FE",measurement:"\u6D4B\u91CF",distanceMeasurement:"\u8DDD\u79BB\u6D4B\u91CF",areaMeasurement:"\u9762\u79EF\u6D4B\u91CF",angleMeasurement:"\u89D2\u5EA6\u6D4B\u91CF",coordinateMeasurement:"\u5750\u6807\u6D4B\u91CF",clearMeasurement:"\u6E05\u9664\u6D4B\u91CF",markup:"\u6279\u6CE8",markupArrow:"\u7BAD\u5934",markupRect:"\u77E9\u5F62\u6846",markupCloudRect:"\u4E91\u7EBF\u6846",markupPolyLine:"\u591A\u6BB5\u7EBF",markupCloudLine:"\u4E91\u7EBF",markupEllipse:"\u692D\u5706",markupCircle:"\u5706",markupDot:"\u70B9",markupText:"\u6587\u5B57",markupX:"\u53C9\u53F7",markupStroke:"\u753B\u7B14\u989C\u8272",markupLineWidth:"\u7EBF\u5BBD",markupLineWidth2:"\u7EBF\u5BBD 2",markupLineWidth5:"\u7EBF\u5BBD 5",markupLineWidth10:"\u7EBF\u5BBD 10",markupFontSize:"\u5B57\u53F7",markupFontSize14:"14",markupFontSize18:"18",markupFontSize24:"24",clearMarkup:"\u6E05\u9664\u6279\u6CE8",quitMarkup:"\u9000\u51FA\u6279\u6CE8",section:"\u5256\u5207",axisSection:"\u8F74\u5411\u5256\u5207",pickSectionPlane:"\u9762\u5256\u5207",sectionBox:"\u5256\u5207\u76D2",bimTree:"BIM\u6811",viewpoint:"\u89C6\u70B9",annotation:"\u6279\u6CE8",property:"\u5C5E\u6027",settings:"\u8BBE\u7F6E",compared:"\u56FE\u7EB8\u5BF9\u6BD4",quitCompare:"\u9000\u51FA\u56FE\u7EB8\u5BF9\u6BD4",fullscreen:"\u5168\u5C4F",layers:"\u56FE\u5C42",zoomToRectangle:"\u6846\u9009\u653E\u5927",screenshot:"\u622A\u5C4F"},Tooltip:{measure:"\u70B9\u51FB\u7EE7\u7EED\u6D4B\u91CF, ESC \u53D6\u6D88\u6D4B\u91CF",areaMeasurement:"\u70B9\u51FB\u7EE7\u7EED\u6D4B\u91CF, ESC \u53D6\u6D88\u6D4B\u91CF\uFF0C\u53F3\u952E\u5B8C\u6210\u6D4B\u91CF",section:"\u70B9\u51FB\u786E\u5B9A\u5256\u5207\u9762",boxSelect:"\u6846\u9009\u4E00\u4E2A\u533A\u57DF"},PopPanel:{reset:"\u91CD\u7F6E"}};var Cs=class{static materialEquals(r,e){if(r===e)return!0;if(r.type!==e.type)return!1;if(r instanceof Gr&&e instanceof Gr){let i=r,n=e;return r.alphaTest===e.alphaTest&&r.opacity===e.opacity&&r.side===e.side&&r.visible===e.visible&&r.name===e.name&&r.transparent===e.transparent&&this.colorEquals(i.color,n.color)&&this.colorEquals(i.emissive,n.emissive)&&i.roughness===n.roughness&&i.metalness===n.metalness&&i.alphaMap===n.alphaMap&&i.uniforms===n.uniforms&&i.defines===n.defines&&i.vertexShader===n.vertexShader&&i.fragmentShader===n.fragmentShader&&i.clippingPlanes===n.clippingPlanes&&i.map===n.map&&i.clipIntersection===n.clipIntersection}return!1}static materialsEquals(r,e){if(r===e)return!0;if(Array.isArray(r)&&Array.isArray(e)&&r.length===e.length){for(let i=0;i<r.length;++i)if(!this.materialEquals(r[i],e[i]))return!1;return!0}else if(r instanceof Gr&&e instanceof Gr)return this.materialEquals(r,e);return!1}static colorEquals(r,e){return r===e?!0:r instanceof Ve&&e instanceof Ve?r.equals(e):!1}static clonedHighlightMaterials(r,e={}){if(!r||!r.material)return;let i=r.material;if(Array.isArray(i)&&i.length>0){let n=[];return i.forEach(s=>{n.push(this.clonedHighlightMaterial(s,e))}),n}else{if(i instanceof Gr)return this.clonedHighlightMaterial(i,e);console.warn(`[MaterialUtils] Invalid material: ${i}`)}}static clonedHighlightMaterial(r,e={}){var o;let{depthTest:i=void 0,highlightColor:n=new Ve(583902),opacity:s=.7}=e,a=r.clone();return a instanceof Gu||a instanceof Ts?(a.emissive.set(n),a.color.set(n)):a instanceof or||a instanceof io||a instanceof Tr||a instanceof Rp?a.color.set(n):a instanceof Yt?(o=a.uniforms.u_color)==null||o.value.set(n):a instanceof Tg?a.color.set(n):console.warn("[MaterialUtils] Unsupported Material:",a.type),a.opacity=s,a.transparent=!0,i!==void 0&&(a.depthTest=!1,a.side=wi),a}static cloneMaterial(r){if(!r)return r;if(Array.isArray(r)){let e=[];return r.forEach(i=>{e.push(i.clone())}),e}return r.clone()}static getMaterialColor(r){let e=new Ve(16777215);return r instanceof Vn||r instanceof Tr||r instanceof or?e=r.color:r instanceof Yt&&r.uniforms.u_color&&(e=r.uniforms.u_color.value),e}static setMaterialColor(r,e){r instanceof Vn||r instanceof Tr||r instanceof or?r.color=e:r instanceof Yt&&r.uniforms.u_color&&(r.uniforms.u_color.value=e)}static cloneMaterials(r){let e=new Map,i=n=>{let s;return Array.isArray(n)?(s=[],n.forEach(a=>{if(e.has(a))s.push(e.get(a));else{let o=a.clone();e.set(a,o),s.push(o)}})):n&&(e.has(n)?s=e.get(n):(s=n.clone(),e.set(n,s))),s};r.traverse(n=>{n.material&&(n.material=i(n.material))})}};function qo(t,r=!1){let e=t[0].index!==null,i=new Set(Object.keys(t[0].attributes)),n=new Set(Object.keys(t[0].morphAttributes)),s={},a={},o=t[0].morphTargetsRelative,l=new it,c=0;for(let u=0;u<t.length;++u){let h=t[u],p=0;if(e!==(h.index!==null))return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index "+u+". All geometries must have compatible attributes; make sure index attribute exists among all geometries, or in none of them."),null;for(let d in h.attributes){if(!i.has(d))return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index "+u+'. All geometries must have compatible attributes; make sure "'+d+'" attribute exists among all geometries, or in none of them.'),null;s[d]===void 0&&(s[d]=[]),s[d].push(h.attributes[d]),p++}if(p!==i.size)return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index "+u+". Make sure all geometries have the same number of attributes."),null;if(o!==h.morphTargetsRelative)return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index "+u+". .morphTargetsRelative must be consistent throughout all geometries."),null;for(let d in h.morphAttributes){if(!n.has(d))return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index "+u+". .morphAttributes must be consistent throughout all geometries."),null;a[d]===void 0&&(a[d]=[]),a[d].push(h.morphAttributes[d])}if(r){let d;if(e)d=h.index.count;else if(h.attributes.position!==void 0)d=h.attributes.position.count;else return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed with geometry at index "+u+". The geometry must have either an index or a position attribute"),null;l.addGroup(c,d,u),c+=d}}if(e){let u=0,h=[];for(let p=0;p<t.length;++p){let d=t[p].index;for(let f=0;f<d.count;++f)h.push(d.getX(f)+u);u+=t[p].attributes.position.count}l.setIndex(h)}for(let u in s){let h=ype(s[u]);if(!h)return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed while trying to merge the "+u+" attribute."),null;l.setAttribute(u,h)}for(let u in a){let h=a[u][0].length;if(h===0)break;l.morphAttributes=l.morphAttributes||{},l.morphAttributes[u]=[];for(let p=0;p<h;++p){let d=[];for(let m=0;m<a[u].length;++m)d.push(a[u][m][p]);let f=ype(d);if(!f)return console.error("THREE.BufferGeometryUtils: .mergeBufferGeometries() failed while trying to merge the "+u+" morphAttribute."),null;l.morphAttributes[u].push(f)}}return l}function ype(t){let r,e,i,n=0;for(let o=0;o<t.length;++o){let l=t[o];if(l.isInterleavedBufferAttribute)return console.error("THREE.BufferGeometryUtils: .mergeBufferAttributes() failed. InterleavedBufferAttributes are not supported."),null;if(r===void 0&&(r=l.array.constructor),r!==l.array.constructor)return console.error("THREE.BufferGeometryUtils: .mergeBufferAttributes() failed. BufferAttribute.array must be of consistent array types across matching attributes."),null;if(e===void 0&&(e=l.itemSize),e!==l.itemSize)return console.error("THREE.BufferGeometryUtils: .mergeBufferAttributes() failed. BufferAttribute.itemSize must be consistent across matching attributes."),null;if(i===void 0&&(i=l.normalized),i!==l.normalized)return console.error("THREE.BufferGeometryUtils: .mergeBufferAttributes() failed. BufferAttribute.normalized must be consistent across matching attributes."),null;n+=l.array.length}let s=new r(n),a=0;for(let o=0;o<t.length;++o)s.set(t[o].array,a),a+=t[o].array.length;return new jt(s,e,i)}function Tpe(t,r=1e-4){r=Math.max(r,Number.EPSILON);let e={},i=t.getIndex(),n=t.getAttribute("position"),s=i?i.count:n.count,a=0,o=Object.keys(t.attributes),l={},c={},u=[],h=["getX","getY","getZ","getW"],p=["setX","setY","setZ","setW"];for(let g=0,y=o.length;g<y;g++){let E=o[g],b=t.attributes[E];l[E]=new jt(new b.array.constructor(b.count*b.itemSize),b.itemSize,b.normalized);let x=t.morphAttributes[E];x&&(c[E]=new jt(new x.array.constructor(x.count*x.itemSize),x.itemSize,x.normalized))}let d=Math.log10(1/r),f=Math.pow(10,d);for(let g=0;g<s;g++){let y=i?i.getX(g):g,E="";for(let b=0,x=o.length;b<x;b++){let S=o[b],D=t.getAttribute(S),P=D.itemSize;for(let _=0;_<P;_++)E+=`${~~(D[h[_]](y)*f)},`}if(E in e)u.push(e[E]);else{for(let b=0,x=o.length;b<x;b++){let S=o[b],D=t.getAttribute(S),P=t.morphAttributes[S],_=D.itemSize,w=l[S],F=c[S];for(let X=0;X<_;X++){let H=h[X],he=p[X];if(w[he](a,D[H](y)),P)for(let C=0,N=P.length;C<N;C++)F[C][he](a,P[C][H](y))}}e[E]=a,u.push(a),a++}}let m=t.clone();for(let g in t.attributes){let y=l[g];if(m.setAttribute(g,new jt(y.array.slice(0,a*y.itemSize),y.itemSize,y.normalized)),g in c)for(let E=0;E<c[g].length;E++){let b=c[g][E];m.morphAttributes[g][E]=new jt(b.array.slice(0,a*b.itemSize),b.itemSize,b.normalized)}}return m.setIndex(u),m}function TB(t,r){if(r===wU)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),t;if(r===ky||r===wx){let e=t.getIndex();if(e===null){let a=[],o=t.getAttribute("position");if(o!==void 0){for(let l=0;l<o.count;l++)a.push(l);t.setIndex(a),e=t.getIndex()}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),t}let i=e.count-2,n=[];if(r===ky)for(let a=1;a<=i;a++)n.push(e.getX(0)),n.push(e.getX(a)),n.push(e.getX(a+1));else for(let a=0;a<i;a++)a%2===0?(n.push(e.getX(a)),n.push(e.getX(a+1)),n.push(e.getX(a+2))):(n.push(e.getX(a+2)),n.push(e.getX(a+1)),n.push(e.getX(a)));n.length/3!==i&&console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");let s=t.clone();return s.setIndex(n),s.clearGroups(),s}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:",r),t}function Nx(t){let r=new Blob([t],{type:"text/javascript"}),e=URL.createObjectURL(r),i=new Worker(e);return URL.revokeObjectURL(e),i}function EB(){return Nx(`var Sc=Object.defineProperty,Tc=Object.defineProperties;var Ac=Object.getOwnPropertyDescriptors;var Ao=Object.getOwnPropertySymbols;var Ec=Object.prototype.hasOwnProperty,Cc=Object.prototype.propertyIsEnumerable;var Eo=(r,t,e)=>t in r?Sc(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,Zi=(r,t)=>{for(var e in t||(t={}))Ec.call(t,e)&&Eo(r,e,t[e]);if(Ao)for(var e of Ao(t))Cc.call(t,e)&&Eo(r,e,t[e]);return r},Co=(r,t)=>Tc(r,Ac(t));var ro="149";var Pc=0,Po=1,Rc=2;var Wa=1,Lc=2,Ni=3,Ue=0,he=1,We=2;var pn=0,ri=1,Ro=2,Lo=3,Io=4,Ic=5,ni=100,Dc=101,Nc=102,Do=103,No=104,Fc=200,zc=201,Oc=202,Bc=203,qa=204,Xa=205,Uc=206,kc=207,Vc=208,Gc=209,Hc=210,Wc=0,qc=1,Xc=2,Er=3,Yc=4,Zc=5,Jc=6,$c=7,Ya=0,Kc=1,jc=2,nn=0,Qc=1,tl=2,el=3,nl=4,il=5,Za=300,ci=301,li=302,Cr=303,Pr=304,Ls=306,Rr=1e3,Oe=1001,Lr=1002,ce=1003,Fo=1004;var Zs=1005;var Re=1006,sl=1007;var Oi=1008;var Dn=1009,rl=1010,ol=1011,Ja=1012,al=1013,Pn=1014,Rn=1015,Bi=1016,cl=1017,ll=1018,oi=1020,hl=1021,Be=1023,ul=1024,fl=1025,Ln=1026,hi=1027,dl=1028,pl=1029,ml=1030,gl=1031,xl=1033,Js=33776,$s=33777,Ks=33778,js=33779,zo=35840,Oo=35841,Bo=35842,Uo=35843,_l=36196,ko=37492,Vo=37496,Go=37808,Ho=37809,Wo=37810,qo=37811,Xo=37812,Yo=37813,Zo=37814,Jo=37815,$o=37816,Ko=37817,jo=37818,Qo=37819,ta=37820,ea=37821,Qs=36492,yl=36283,na=36284,ia=36285,sa=36286;var xs=2300,_s=2301,tr=2302,ra=2400,oa=2401,aa=2402;var Nn=3e3,Ot=3001,vl=3200,Ml=3201,bl=0,wl=1;var Ge="srgb",Ui="srgb-linear";var er=7680;var Sl=519,ca=35044;var la="300 es",Ir=1035,mn=class{addEventListener(t,e){this._listeners===void 0&&(this._listeners={});let n=this._listeners;n[t]===void 0&&(n[t]=[]),n[t].indexOf(e)===-1&&n[t].push(e)}hasEventListener(t,e){if(this._listeners===void 0)return!1;let n=this._listeners;return n[t]!==void 0&&n[t].indexOf(e)!==-1}removeEventListener(t,e){if(this._listeners===void 0)return;let i=this._listeners[t];if(i!==void 0){let s=i.indexOf(e);s!==-1&&i.splice(s,1)}}dispatchEvent(t){if(this._listeners===void 0)return;let n=this._listeners[t.type];if(n!==void 0){t.target=this;let i=n.slice(0);for(let s=0,a=i.length;s<a;s++)i[s].call(this,t);t.target=null}}},ne=["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"];var nr=Math.PI/180,ha=180/Math.PI;function Gi(){let r=Math.random()*4294967295|0,t=Math.random()*4294967295|0,e=Math.random()*4294967295|0,n=Math.random()*4294967295|0;return(ne[r&255]+ne[r>>8&255]+ne[r>>16&255]+ne[r>>24&255]+"-"+ne[t&255]+ne[t>>8&255]+"-"+ne[t>>16&15|64]+ne[t>>24&255]+"-"+ne[e&63|128]+ne[e>>8&255]+"-"+ne[e>>16&255]+ne[e>>24&255]+ne[n&255]+ne[n>>8&255]+ne[n>>16&255]+ne[n>>24&255]).toLowerCase()}function de(r,t,e){return Math.max(t,Math.min(e,r))}function Tl(r,t){return(r%t+t)%t}function ir(r,t,e){return(1-e)*r+e*t}function ua(r){return(r&r-1)===0&&r!==0}function Dr(r){return Math.pow(2,Math.floor(Math.log(r)/Math.LN2))}function Ji(r,t){switch(t.constructor){case Float32Array:return r;case Uint16Array:return r/65535;case Uint8Array:return r/255;case Int16Array:return Math.max(r/32767,-1);case Int8Array:return Math.max(r/127,-1);default:throw new Error("Invalid component type.")}}function Me(r,t){switch(t.constructor){case Float32Array:return r;case Uint16Array:return Math.round(r*65535);case Uint8Array:return Math.round(r*255);case Int16Array:return Math.round(r*32767);case Int8Array:return Math.round(r*127);default:throw new Error("Invalid component type.")}}var At=class{constructor(t=0,e=0){At.prototype.isVector2=!0,this.x=t,this.y=e}get width(){return this.x}set width(t){this.x=t}get height(){return this.y}set height(t){this.y=t}set(t,e){return this.x=t,this.y=e,this}setScalar(t){return this.x=t,this.y=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+t)}}clone(){return new this.constructor(this.x,this.y)}copy(t){return this.x=t.x,this.y=t.y,this}add(t){return this.x+=t.x,this.y+=t.y,this}addScalar(t){return this.x+=t,this.y+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this}subScalar(t){return this.x-=t,this.y-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this}multiply(t){return this.x*=t.x,this.y*=t.y,this}multiplyScalar(t){return this.x*=t,this.y*=t,this}divide(t){return this.x/=t.x,this.y/=t.y,this}divideScalar(t){return this.multiplyScalar(1/t)}applyMatrix3(t){let e=this.x,n=this.y,i=t.elements;return this.x=i[0]*e+i[3]*n+i[6],this.y=i[1]*e+i[4]*n+i[7],this}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this}clamp(t,e){return this.x=Math.max(t.x,Math.min(e.x,this.x)),this.y=Math.max(t.y,Math.min(e.y,this.y)),this}clampScalar(t,e){return this.x=Math.max(t,Math.min(e,this.x)),this.y=Math.max(t,Math.min(e,this.y)),this}clampLength(t,e){let n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(t,Math.min(e,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=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(t){return this.x*t.x+this.y*t.y}cross(t){return this.x*t.y-this.y*t.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}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){let e=this.x-t.x,n=this.y-t.y;return e*e+n*n}manhattanDistanceTo(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)}setLength(t){return this.normalize().multiplyScalar(t)}lerp(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this}lerpVectors(t,e,n){return this.x=t.x+(e.x-t.x)*n,this.y=t.y+(e.y-t.y)*n,this}equals(t){return t.x===this.x&&t.y===this.y}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t}fromBufferAttribute(t,e){return this.x=t.getX(e),this.y=t.getY(e),this}rotateAround(t,e){let n=Math.cos(e),i=Math.sin(e),s=this.x-t.x,a=this.y-t.y;return this.x=s*n-a*i+t.x,this.y=s*i+a*n+t.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}},le=class{constructor(){le.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1]}set(t,e,n,i,s,a,o,c,l){let h=this.elements;return h[0]=t,h[1]=i,h[2]=o,h[3]=e,h[4]=s,h[5]=c,h[6]=n,h[7]=a,h[8]=l,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(t){let e=this.elements,n=t.elements;return e[0]=n[0],e[1]=n[1],e[2]=n[2],e[3]=n[3],e[4]=n[4],e[5]=n[5],e[6]=n[6],e[7]=n[7],e[8]=n[8],this}extractBasis(t,e,n){return t.setFromMatrix3Column(this,0),e.setFromMatrix3Column(this,1),n.setFromMatrix3Column(this,2),this}setFromMatrix4(t){let e=t.elements;return this.set(e[0],e[4],e[8],e[1],e[5],e[9],e[2],e[6],e[10]),this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,e){let n=t.elements,i=e.elements,s=this.elements,a=n[0],o=n[3],c=n[6],l=n[1],h=n[4],f=n[7],u=n[2],m=n[5],x=n[8],p=i[0],d=i[3],g=i[6],M=i[1],_=i[4],v=i[7],b=i[2],A=i[5],C=i[8];return s[0]=a*p+o*M+c*b,s[3]=a*d+o*_+c*A,s[6]=a*g+o*v+c*C,s[1]=l*p+h*M+f*b,s[4]=l*d+h*_+f*A,s[7]=l*g+h*v+f*C,s[2]=u*p+m*M+x*b,s[5]=u*d+m*_+x*A,s[8]=u*g+m*v+x*C,this}multiplyScalar(t){let e=this.elements;return e[0]*=t,e[3]*=t,e[6]*=t,e[1]*=t,e[4]*=t,e[7]*=t,e[2]*=t,e[5]*=t,e[8]*=t,this}determinant(){let t=this.elements,e=t[0],n=t[1],i=t[2],s=t[3],a=t[4],o=t[5],c=t[6],l=t[7],h=t[8];return e*a*h-e*o*l-n*s*h+n*o*c+i*s*l-i*a*c}invert(){let t=this.elements,e=t[0],n=t[1],i=t[2],s=t[3],a=t[4],o=t[5],c=t[6],l=t[7],h=t[8],f=h*a-o*l,u=o*c-h*s,m=l*s-a*c,x=e*f+n*u+i*m;if(x===0)return this.set(0,0,0,0,0,0,0,0,0);let p=1/x;return t[0]=f*p,t[1]=(i*l-h*n)*p,t[2]=(o*n-i*a)*p,t[3]=u*p,t[4]=(h*e-i*c)*p,t[5]=(i*s-o*e)*p,t[6]=m*p,t[7]=(n*c-l*e)*p,t[8]=(a*e-n*s)*p,this}transpose(){let t,e=this.elements;return t=e[1],e[1]=e[3],e[3]=t,t=e[2],e[2]=e[6],e[6]=t,t=e[5],e[5]=e[7],e[7]=t,this}getNormalMatrix(t){return this.setFromMatrix4(t).invert().transpose()}transposeIntoArray(t){let e=this.elements;return t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8],this}setUvTransform(t,e,n,i,s,a,o){let c=Math.cos(s),l=Math.sin(s);return this.set(n*c,n*l,-n*(c*a+l*o)+a+t,-i*l,i*c,-i*(-l*a+c*o)+o+e,0,0,1),this}scale(t,e){return this.premultiply(sr.makeScale(t,e)),this}rotate(t){return this.premultiply(sr.makeRotation(-t)),this}translate(t,e){return this.premultiply(sr.makeTranslation(t,e)),this}makeTranslation(t,e){return this.set(1,0,t,0,1,e,0,0,1),this}makeRotation(t){let e=Math.cos(t),n=Math.sin(t);return this.set(e,-n,0,n,e,0,0,0,1),this}makeScale(t,e){return this.set(t,0,0,0,e,0,0,0,1),this}equals(t){let e=this.elements,n=t.elements;for(let i=0;i<9;i++)if(e[i]!==n[i])return!1;return!0}fromArray(t,e=0){for(let n=0;n<9;n++)this.elements[n]=t[n+e];return this}toArray(t=[],e=0){let n=this.elements;return t[e]=n[0],t[e+1]=n[1],t[e+2]=n[2],t[e+3]=n[3],t[e+4]=n[4],t[e+5]=n[5],t[e+6]=n[6],t[e+7]=n[7],t[e+8]=n[8],t}clone(){return new this.constructor().fromArray(this.elements)}},sr=new le;function $a(r){for(let t=r.length-1;t>=0;--t)if(r[t]>=65535)return!0;return!1}function ys(r){return document.createElementNS("http://www.w3.org/1999/xhtml",r)}function In(r){return r<.04045?r*.0773993808:Math.pow(r*.9478672986+.0521327014,2.4)}function gs(r){return r<.0031308?r*12.92:1.055*Math.pow(r,.41666)-.055}var rr={[Ge]:{[Ui]:In},[Ui]:{[Ge]:gs}},oe={legacyMode:!0,get workingColorSpace(){return Ui},set workingColorSpace(r){console.warn("THREE.ColorManagement: .workingColorSpace is readonly.")},convert:function(r,t,e){if(this.legacyMode||t===e||!t||!e)return r;if(rr[t]&&rr[t][e]!==void 0){let n=rr[t][e];return r.r=n(r.r),r.g=n(r.g),r.b=n(r.b),r}throw new Error("Unsupported color space conversion.")},fromWorkingColorSpace:function(r,t){return this.convert(r,this.workingColorSpace,t)},toWorkingColorSpace:function(r,t){return this.convert(r,t,this.workingColorSpace)}},Ka={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},qt={r:0,g:0,b:0},Ne={h:0,s:0,l:0},$i={h:0,s:0,l:0};function or(r,t,e){return e<0&&(e+=1),e>1&&(e-=1),e<1/6?r+(t-r)*6*e:e<1/2?t:e<2/3?r+(t-r)*6*(2/3-e):r}function Ki(r,t){return t.r=r.r,t.g=r.g,t.b=r.b,t}var Bt=class{constructor(t,e,n){return this.isColor=!0,this.r=1,this.g=1,this.b=1,e===void 0&&n===void 0?this.set(t):this.setRGB(t,e,n)}set(t){return t&&t.isColor?this.copy(t):typeof t=="number"?this.setHex(t):typeof t=="string"&&this.setStyle(t),this}setScalar(t){return this.r=t,this.g=t,this.b=t,this}setHex(t,e=Ge){return t=Math.floor(t),this.r=(t>>16&255)/255,this.g=(t>>8&255)/255,this.b=(t&255)/255,oe.toWorkingColorSpace(this,e),this}setRGB(t,e,n,i=oe.workingColorSpace){return this.r=t,this.g=e,this.b=n,oe.toWorkingColorSpace(this,i),this}setHSL(t,e,n,i=oe.workingColorSpace){if(t=Tl(t,1),e=de(e,0,1),n=de(n,0,1),e===0)this.r=this.g=this.b=n;else{let s=n<=.5?n*(1+e):n+e-n*e,a=2*n-s;this.r=or(a,s,t+1/3),this.g=or(a,s,t),this.b=or(a,s,t-1/3)}return oe.toWorkingColorSpace(this,i),this}setStyle(t,e=Ge){function n(s){s!==void 0&&parseFloat(s)<1&&console.warn("THREE.Color: Alpha component of "+t+" will be ignored.")}let i;if(i=/^((?:rgb|hsl)a?)\\(([^\\)]*)\\)/.exec(t)){let s,a=i[1],o=i[2];switch(a){case"rgb":case"rgba":if(s=/^\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(o))return this.r=Math.min(255,parseInt(s[1],10))/255,this.g=Math.min(255,parseInt(s[2],10))/255,this.b=Math.min(255,parseInt(s[3],10))/255,oe.toWorkingColorSpace(this,e),n(s[4]),this;if(s=/^\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(o))return this.r=Math.min(100,parseInt(s[1],10))/100,this.g=Math.min(100,parseInt(s[2],10))/100,this.b=Math.min(100,parseInt(s[3],10))/100,oe.toWorkingColorSpace(this,e),n(s[4]),this;break;case"hsl":case"hsla":if(s=/^\\s*(\\d*\\.?\\d+)\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(o)){let c=parseFloat(s[1])/360,l=parseFloat(s[2])/100,h=parseFloat(s[3])/100;return n(s[4]),this.setHSL(c,l,h,e)}break}}else if(i=/^\\#([A-Fa-f\\d]+)$/.exec(t)){let s=i[1],a=s.length;if(a===3)return this.r=parseInt(s.charAt(0)+s.charAt(0),16)/255,this.g=parseInt(s.charAt(1)+s.charAt(1),16)/255,this.b=parseInt(s.charAt(2)+s.charAt(2),16)/255,oe.toWorkingColorSpace(this,e),this;if(a===6)return this.r=parseInt(s.charAt(0)+s.charAt(1),16)/255,this.g=parseInt(s.charAt(2)+s.charAt(3),16)/255,this.b=parseInt(s.charAt(4)+s.charAt(5),16)/255,oe.toWorkingColorSpace(this,e),this}return t&&t.length>0?this.setColorName(t,e):this}setColorName(t,e=Ge){let n=Ka[t.toLowerCase()];return n!==void 0?this.setHex(n,e):console.warn("THREE.Color: Unknown color "+t),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(t){return this.r=t.r,this.g=t.g,this.b=t.b,this}copySRGBToLinear(t){return this.r=In(t.r),this.g=In(t.g),this.b=In(t.b),this}copyLinearToSRGB(t){return this.r=gs(t.r),this.g=gs(t.g),this.b=gs(t.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(t=Ge){return oe.fromWorkingColorSpace(Ki(this,qt),t),de(qt.r*255,0,255)<<16^de(qt.g*255,0,255)<<8^de(qt.b*255,0,255)<<0}getHexString(t=Ge){return("000000"+this.getHex(t).toString(16)).slice(-6)}getHSL(t,e=oe.workingColorSpace){oe.fromWorkingColorSpace(Ki(this,qt),e);let n=qt.r,i=qt.g,s=qt.b,a=Math.max(n,i,s),o=Math.min(n,i,s),c,l,h=(o+a)/2;if(o===a)c=0,l=0;else{let f=a-o;switch(l=h<=.5?f/(a+o):f/(2-a-o),a){case n:c=(i-s)/f+(i<s?6:0);break;case i:c=(s-n)/f+2;break;case s:c=(n-i)/f+4;break}c/=6}return t.h=c,t.s=l,t.l=h,t}getRGB(t,e=oe.workingColorSpace){return oe.fromWorkingColorSpace(Ki(this,qt),e),t.r=qt.r,t.g=qt.g,t.b=qt.b,t}getStyle(t=Ge){return oe.fromWorkingColorSpace(Ki(this,qt),t),t!==Ge?\`color(\${t} \${qt.r} \${qt.g} \${qt.b})\`:\`rgb(\${qt.r*255|0},\${qt.g*255|0},\${qt.b*255|0})\`}offsetHSL(t,e,n){return this.getHSL(Ne),Ne.h+=t,Ne.s+=e,Ne.l+=n,this.setHSL(Ne.h,Ne.s,Ne.l),this}add(t){return this.r+=t.r,this.g+=t.g,this.b+=t.b,this}addColors(t,e){return this.r=t.r+e.r,this.g=t.g+e.g,this.b=t.b+e.b,this}addScalar(t){return this.r+=t,this.g+=t,this.b+=t,this}sub(t){return this.r=Math.max(0,this.r-t.r),this.g=Math.max(0,this.g-t.g),this.b=Math.max(0,this.b-t.b),this}multiply(t){return this.r*=t.r,this.g*=t.g,this.b*=t.b,this}multiplyScalar(t){return this.r*=t,this.g*=t,this.b*=t,this}lerp(t,e){return this.r+=(t.r-this.r)*e,this.g+=(t.g-this.g)*e,this.b+=(t.b-this.b)*e,this}lerpColors(t,e,n){return this.r=t.r+(e.r-t.r)*n,this.g=t.g+(e.g-t.g)*n,this.b=t.b+(e.b-t.b)*n,this}lerpHSL(t,e){this.getHSL(Ne),t.getHSL($i);let n=ir(Ne.h,$i.h,e),i=ir(Ne.s,$i.s,e),s=ir(Ne.l,$i.l,e);return this.setHSL(n,i,s),this}equals(t){return t.r===this.r&&t.g===this.g&&t.b===this.b}fromArray(t,e=0){return this.r=t[e],this.g=t[e+1],this.b=t[e+2],this}toArray(t=[],e=0){return t[e]=this.r,t[e+1]=this.g,t[e+2]=this.b,t}fromBufferAttribute(t,e){return this.r=t.getX(e),this.g=t.getY(e),this.b=t.getZ(e),this}toJSON(){return this.getHex()}*[Symbol.iterator](){yield this.r,yield this.g,yield this.b}};Bt.NAMES=Ka;var Gn,vs=class{static getDataURL(t){if(/^data:/i.test(t.src)||typeof HTMLCanvasElement=="undefined")return t.src;let e;if(t instanceof HTMLCanvasElement)e=t;else{Gn===void 0&&(Gn=ys("canvas")),Gn.width=t.width,Gn.height=t.height;let n=Gn.getContext("2d");t instanceof ImageData?n.putImageData(t,0,0):n.drawImage(t,0,0,t.width,t.height),e=Gn}return e.width>2048||e.height>2048?(console.warn("THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons",t),e.toDataURL("image/jpeg",.6)):e.toDataURL("image/png")}static sRGBToLinear(t){if(typeof HTMLImageElement!="undefined"&&t instanceof HTMLImageElement||typeof HTMLCanvasElement!="undefined"&&t instanceof HTMLCanvasElement||typeof ImageBitmap!="undefined"&&t instanceof ImageBitmap){let e=ys("canvas");e.width=t.width,e.height=t.height;let n=e.getContext("2d");n.drawImage(t,0,0,t.width,t.height);let i=n.getImageData(0,0,t.width,t.height),s=i.data;for(let a=0;a<s.length;a++)s[a]=In(s[a]/255)*255;return n.putImageData(i,0,0),e}else if(t.data){let e=t.data.slice(0);for(let n=0;n<e.length;n++)e instanceof Uint8Array||e instanceof Uint8ClampedArray?e[n]=Math.floor(In(e[n]/255)*255):e[n]=In(e[n]);return{data:e,width:t.width,height:t.height}}else return console.warn("THREE.ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied."),t}},Ms=class{constructor(t=null){this.isSource=!0,this.uuid=Gi(),this.data=t,this.version=0}set needsUpdate(t){t===!0&&this.version++}toJSON(t){let e=t===void 0||typeof t=="string";if(!e&&t.images[this.uuid]!==void 0)return t.images[this.uuid];let n={uuid:this.uuid,url:""},i=this.data;if(i!==null){let s;if(Array.isArray(i)){s=[];for(let a=0,o=i.length;a<o;a++)i[a].isDataTexture?s.push(ar(i[a].image)):s.push(ar(i[a]))}else s=ar(i);n.url=s}return e||(t.images[this.uuid]=n),n}};function ar(r){return typeof HTMLImageElement!="undefined"&&r instanceof HTMLImageElement||typeof HTMLCanvasElement!="undefined"&&r instanceof HTMLCanvasElement||typeof ImageBitmap!="undefined"&&r instanceof ImageBitmap?vs.getDataURL(r):r.data?{data:Array.from(r.data),width:r.width,height:r.height,type:r.data.constructor.name}:(console.warn("THREE.Texture: Unable to serialize Texture."),{})}var Al=0,ue=class extends mn{constructor(t=ue.DEFAULT_IMAGE,e=ue.DEFAULT_MAPPING,n=Oe,i=Oe,s=Re,a=Oi,o=Be,c=Dn,l=ue.DEFAULT_ANISOTROPY,h=Nn){super(),this.isTexture=!0,Object.defineProperty(this,"id",{value:Al++}),this.uuid=Gi(),this.name="",this.source=new Ms(t),this.mipmaps=[],this.mapping=e,this.wrapS=n,this.wrapT=i,this.magFilter=s,this.minFilter=a,this.anisotropy=l,this.format=o,this.internalFormat=null,this.type=c,this.offset=new At(0,0),this.repeat=new At(1,1),this.center=new At(0,0),this.rotation=0,this.matrixAutoUpdate=!0,this.matrix=new le,this.generateMipmaps=!0,this.premultiplyAlpha=!1,this.flipY=!0,this.unpackAlignment=4,this.encoding=h,this.userData={},this.version=0,this.onUpdate=null,this.isRenderTargetTexture=!1,this.needsPMREMUpdate=!1}get image(){return this.source.data}set image(t){this.source.data=t}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(t){return this.name=t.name,this.source=t.source,this.mipmaps=t.mipmaps.slice(0),this.mapping=t.mapping,this.wrapS=t.wrapS,this.wrapT=t.wrapT,this.magFilter=t.magFilter,this.minFilter=t.minFilter,this.anisotropy=t.anisotropy,this.format=t.format,this.internalFormat=t.internalFormat,this.type=t.type,this.offset.copy(t.offset),this.repeat.copy(t.repeat),this.center.copy(t.center),this.rotation=t.rotation,this.matrixAutoUpdate=t.matrixAutoUpdate,this.matrix.copy(t.matrix),this.generateMipmaps=t.generateMipmaps,this.premultiplyAlpha=t.premultiplyAlpha,this.flipY=t.flipY,this.unpackAlignment=t.unpackAlignment,this.encoding=t.encoding,this.userData=JSON.parse(JSON.stringify(t.userData)),this.needsUpdate=!0,this}toJSON(t){let e=t===void 0||typeof t=="string";if(!e&&t.textures[this.uuid]!==void 0)return t.textures[this.uuid];let n={metadata:{version:4.5,type:"Texture",generator:"Texture.toJSON"},uuid:this.uuid,name:this.name,image:this.source.toJSON(t).uuid,mapping:this.mapping,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,type:this.type,encoding:this.encoding,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),e||(t.textures[this.uuid]=n),n}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(t){if(this.mapping!==Za)return t;if(t.applyMatrix3(this.matrix),t.x<0||t.x>1)switch(this.wrapS){case Rr:t.x=t.x-Math.floor(t.x);break;case Oe:t.x=t.x<0?0:1;break;case Lr:Math.abs(Math.floor(t.x)%2)===1?t.x=Math.ceil(t.x)-t.x:t.x=t.x-Math.floor(t.x);break}if(t.y<0||t.y>1)switch(this.wrapT){case Rr:t.y=t.y-Math.floor(t.y);break;case Oe:t.y=t.y<0?0:1;break;case Lr:Math.abs(Math.floor(t.y)%2)===1?t.y=Math.ceil(t.y)-t.y:t.y=t.y-Math.floor(t.y);break}return this.flipY&&(t.y=1-t.y),t}set needsUpdate(t){t===!0&&(this.version++,this.source.needsUpdate=!0)}};ue.DEFAULT_IMAGE=null;ue.DEFAULT_MAPPING=Za;ue.DEFAULT_ANISOTROPY=1;var Xt=class{constructor(t=0,e=0,n=0,i=1){Xt.prototype.isVector4=!0,this.x=t,this.y=e,this.z=n,this.w=i}get width(){return this.z}set width(t){this.z=t}get height(){return this.w}set height(t){this.w=t}set(t,e,n,i){return this.x=t,this.y=e,this.z=n,this.w=i,this}setScalar(t){return this.x=t,this.y=t,this.z=t,this.w=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setZ(t){return this.z=t,this}setW(t){return this.w=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;case 3:this.w=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){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: "+t)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(t){return this.x=t.x,this.y=t.y,this.z=t.z,this.w=t.w!==void 0?t.w:1,this}add(t){return this.x+=t.x,this.y+=t.y,this.z+=t.z,this.w+=t.w,this}addScalar(t){return this.x+=t,this.y+=t,this.z+=t,this.w+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this.w=t.w+e.w,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this.w+=t.w*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this.z-=t.z,this.w-=t.w,this}subScalar(t){return this.x-=t,this.y-=t,this.z-=t,this.w-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this.w=t.w-e.w,this}multiply(t){return this.x*=t.x,this.y*=t.y,this.z*=t.z,this.w*=t.w,this}multiplyScalar(t){return this.x*=t,this.y*=t,this.z*=t,this.w*=t,this}applyMatrix4(t){let e=this.x,n=this.y,i=this.z,s=this.w,a=t.elements;return this.x=a[0]*e+a[4]*n+a[8]*i+a[12]*s,this.y=a[1]*e+a[5]*n+a[9]*i+a[13]*s,this.z=a[2]*e+a[6]*n+a[10]*i+a[14]*s,this.w=a[3]*e+a[7]*n+a[11]*i+a[15]*s,this}divideScalar(t){return this.multiplyScalar(1/t)}setAxisAngleFromQuaternion(t){this.w=2*Math.acos(t.w);let e=Math.sqrt(1-t.w*t.w);return e<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=t.x/e,this.y=t.y/e,this.z=t.z/e),this}setAxisAngleFromRotationMatrix(t){let e,n,i,s,c=t.elements,l=c[0],h=c[4],f=c[8],u=c[1],m=c[5],x=c[9],p=c[2],d=c[6],g=c[10];if(Math.abs(h-u)<.01&&Math.abs(f-p)<.01&&Math.abs(x-d)<.01){if(Math.abs(h+u)<.1&&Math.abs(f+p)<.1&&Math.abs(x+d)<.1&&Math.abs(l+m+g-3)<.1)return this.set(1,0,0,0),this;e=Math.PI;let _=(l+1)/2,v=(m+1)/2,b=(g+1)/2,A=(h+u)/4,C=(f+p)/4,y=(x+d)/4;return _>v&&_>b?_<.01?(n=0,i=.707106781,s=.707106781):(n=Math.sqrt(_),i=A/n,s=C/n):v>b?v<.01?(n=.707106781,i=0,s=.707106781):(i=Math.sqrt(v),n=A/i,s=y/i):b<.01?(n=.707106781,i=.707106781,s=0):(s=Math.sqrt(b),n=C/s,i=y/s),this.set(n,i,s,e),this}let M=Math.sqrt((d-x)*(d-x)+(f-p)*(f-p)+(u-h)*(u-h));return Math.abs(M)<.001&&(M=1),this.x=(d-x)/M,this.y=(f-p)/M,this.z=(u-h)/M,this.w=Math.acos((l+m+g-1)/2),this}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this.z=Math.min(this.z,t.z),this.w=Math.min(this.w,t.w),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this.z=Math.max(this.z,t.z),this.w=Math.max(this.w,t.w),this}clamp(t,e){return this.x=Math.max(t.x,Math.min(e.x,this.x)),this.y=Math.max(t.y,Math.min(e.y,this.y)),this.z=Math.max(t.z,Math.min(e.z,this.z)),this.w=Math.max(t.w,Math.min(e.w,this.w)),this}clampScalar(t,e){return this.x=Math.max(t,Math.min(e,this.x)),this.y=Math.max(t,Math.min(e,this.y)),this.z=Math.max(t,Math.min(e,this.z)),this.w=Math.max(t,Math.min(e,this.w)),this}clampLength(t,e){let n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(t,Math.min(e,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=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this.w=this.w<0?Math.ceil(this.w):Math.floor(this.w),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(t){return this.x*t.x+this.y*t.y+this.z*t.z+this.w*t.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(t){return this.normalize().multiplyScalar(t)}lerp(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this.z+=(t.z-this.z)*e,this.w+=(t.w-this.w)*e,this}lerpVectors(t,e,n){return this.x=t.x+(e.x-t.x)*n,this.y=t.y+(e.y-t.y)*n,this.z=t.z+(e.z-t.z)*n,this.w=t.w+(e.w-t.w)*n,this}equals(t){return t.x===this.x&&t.y===this.y&&t.z===this.z&&t.w===this.w}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this.z=t[e+2],this.w=t[e+3],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t[e+2]=this.z,t[e+3]=this.w,t}fromBufferAttribute(t,e){return this.x=t.getX(e),this.y=t.getY(e),this.z=t.getZ(e),this.w=t.getW(e),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}},rn=class extends mn{constructor(t=1,e=1,n={}){super(),this.isWebGLRenderTarget=!0,this.width=t,this.height=e,this.depth=1,this.scissor=new Xt(0,0,t,e),this.scissorTest=!1,this.viewport=new Xt(0,0,t,e);let i={width:t,height:e,depth:1};this.texture=new ue(i,n.mapping,n.wrapS,n.wrapT,n.magFilter,n.minFilter,n.format,n.type,n.anisotropy,n.encoding),this.texture.isRenderTargetTexture=!0,this.texture.flipY=!1,this.texture.generateMipmaps=n.generateMipmaps!==void 0?n.generateMipmaps:!1,this.texture.internalFormat=n.internalFormat!==void 0?n.internalFormat:null,this.texture.minFilter=n.minFilter!==void 0?n.minFilter:Re,this.depthBuffer=n.depthBuffer!==void 0?n.depthBuffer:!0,this.stencilBuffer=n.stencilBuffer!==void 0?n.stencilBuffer:!1,this.depthTexture=n.depthTexture!==void 0?n.depthTexture:null,this.samples=n.samples!==void 0?n.samples:0}setSize(t,e,n=1){(this.width!==t||this.height!==e||this.depth!==n)&&(this.width=t,this.height=e,this.depth=n,this.texture.image.width=t,this.texture.image.height=e,this.texture.image.depth=n,this.dispose()),this.viewport.set(0,0,t,e),this.scissor.set(0,0,t,e)}clone(){return new this.constructor().copy(this)}copy(t){this.width=t.width,this.height=t.height,this.depth=t.depth,this.viewport.copy(t.viewport),this.texture=t.texture.clone(),this.texture.isRenderTargetTexture=!0;let e=Object.assign({},t.texture.image);return this.texture.source=new Ms(e),this.depthBuffer=t.depthBuffer,this.stencilBuffer=t.stencilBuffer,t.depthTexture!==null&&(this.depthTexture=t.depthTexture.clone()),this.samples=t.samples,this}dispose(){this.dispatchEvent({type:"dispose"})}},bs=class extends ue{constructor(t=null,e=1,n=1,i=1){super(null),this.isDataArrayTexture=!0,this.image={data:t,width:e,height:n,depth:i},this.magFilter=ce,this.minFilter=ce,this.wrapR=Oe,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}};var Nr=class extends ue{constructor(t=null,e=1,n=1,i=1){super(null),this.isData3DTexture=!0,this.image={data:t,width:e,height:n,depth:i},this.magFilter=ce,this.minFilter=ce,this.wrapR=Oe,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}};var gn=class{constructor(t=0,e=0,n=0,i=1){this.isQuaternion=!0,this._x=t,this._y=e,this._z=n,this._w=i}static slerpFlat(t,e,n,i,s,a,o){let c=n[i+0],l=n[i+1],h=n[i+2],f=n[i+3],u=s[a+0],m=s[a+1],x=s[a+2],p=s[a+3];if(o===0){t[e+0]=c,t[e+1]=l,t[e+2]=h,t[e+3]=f;return}if(o===1){t[e+0]=u,t[e+1]=m,t[e+2]=x,t[e+3]=p;return}if(f!==p||c!==u||l!==m||h!==x){let d=1-o,g=c*u+l*m+h*x+f*p,M=g>=0?1:-1,_=1-g*g;if(_>Number.EPSILON){let b=Math.sqrt(_),A=Math.atan2(b,g*M);d=Math.sin(d*A)/b,o=Math.sin(o*A)/b}let v=o*M;if(c=c*d+u*v,l=l*d+m*v,h=h*d+x*v,f=f*d+p*v,d===1-o){let b=1/Math.sqrt(c*c+l*l+h*h+f*f);c*=b,l*=b,h*=b,f*=b}}t[e]=c,t[e+1]=l,t[e+2]=h,t[e+3]=f}static multiplyQuaternionsFlat(t,e,n,i,s,a){let o=n[i],c=n[i+1],l=n[i+2],h=n[i+3],f=s[a],u=s[a+1],m=s[a+2],x=s[a+3];return t[e]=o*x+h*f+c*m-l*u,t[e+1]=c*x+h*u+l*f-o*m,t[e+2]=l*x+h*m+o*u-c*f,t[e+3]=h*x-o*f-c*u-l*m,t}get x(){return this._x}set x(t){this._x=t,this._onChangeCallback()}get y(){return this._y}set y(t){this._y=t,this._onChangeCallback()}get z(){return this._z}set z(t){this._z=t,this._onChangeCallback()}get w(){return this._w}set w(t){this._w=t,this._onChangeCallback()}set(t,e,n,i){return this._x=t,this._y=e,this._z=n,this._w=i,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(t){return this._x=t.x,this._y=t.y,this._z=t.z,this._w=t.w,this._onChangeCallback(),this}setFromEuler(t,e){let n=t._x,i=t._y,s=t._z,a=t._order,o=Math.cos,c=Math.sin,l=o(n/2),h=o(i/2),f=o(s/2),u=c(n/2),m=c(i/2),x=c(s/2);switch(a){case"XYZ":this._x=u*h*f+l*m*x,this._y=l*m*f-u*h*x,this._z=l*h*x+u*m*f,this._w=l*h*f-u*m*x;break;case"YXZ":this._x=u*h*f+l*m*x,this._y=l*m*f-u*h*x,this._z=l*h*x-u*m*f,this._w=l*h*f+u*m*x;break;case"ZXY":this._x=u*h*f-l*m*x,this._y=l*m*f+u*h*x,this._z=l*h*x+u*m*f,this._w=l*h*f-u*m*x;break;case"ZYX":this._x=u*h*f-l*m*x,this._y=l*m*f+u*h*x,this._z=l*h*x-u*m*f,this._w=l*h*f+u*m*x;break;case"YZX":this._x=u*h*f+l*m*x,this._y=l*m*f+u*h*x,this._z=l*h*x-u*m*f,this._w=l*h*f-u*m*x;break;case"XZY":this._x=u*h*f-l*m*x,this._y=l*m*f-u*h*x,this._z=l*h*x+u*m*f,this._w=l*h*f+u*m*x;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+a)}return e!==!1&&this._onChangeCallback(),this}setFromAxisAngle(t,e){let n=e/2,i=Math.sin(n);return this._x=t.x*i,this._y=t.y*i,this._z=t.z*i,this._w=Math.cos(n),this._onChangeCallback(),this}setFromRotationMatrix(t){let e=t.elements,n=e[0],i=e[4],s=e[8],a=e[1],o=e[5],c=e[9],l=e[2],h=e[6],f=e[10],u=n+o+f;if(u>0){let m=.5/Math.sqrt(u+1);this._w=.25/m,this._x=(h-c)*m,this._y=(s-l)*m,this._z=(a-i)*m}else if(n>o&&n>f){let m=2*Math.sqrt(1+n-o-f);this._w=(h-c)/m,this._x=.25*m,this._y=(i+a)/m,this._z=(s+l)/m}else if(o>f){let m=2*Math.sqrt(1+o-n-f);this._w=(s-l)/m,this._x=(i+a)/m,this._y=.25*m,this._z=(c+h)/m}else{let m=2*Math.sqrt(1+f-n-o);this._w=(a-i)/m,this._x=(s+l)/m,this._y=(c+h)/m,this._z=.25*m}return this._onChangeCallback(),this}setFromUnitVectors(t,e){let n=t.dot(e)+1;return n<Number.EPSILON?(n=0,Math.abs(t.x)>Math.abs(t.z)?(this._x=-t.y,this._y=t.x,this._z=0,this._w=n):(this._x=0,this._y=-t.z,this._z=t.y,this._w=n)):(this._x=t.y*e.z-t.z*e.y,this._y=t.z*e.x-t.x*e.z,this._z=t.x*e.y-t.y*e.x,this._w=n),this.normalize()}angleTo(t){return 2*Math.acos(Math.abs(de(this.dot(t),-1,1)))}rotateTowards(t,e){let n=this.angleTo(t);if(n===0)return this;let i=Math.min(1,e/n);return this.slerp(t,i),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(t){return this._x*t._x+this._y*t._y+this._z*t._z+this._w*t._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 t=this.length();return t===0?(this._x=0,this._y=0,this._z=0,this._w=1):(t=1/t,this._x=this._x*t,this._y=this._y*t,this._z=this._z*t,this._w=this._w*t),this._onChangeCallback(),this}multiply(t){return this.multiplyQuaternions(this,t)}premultiply(t){return this.multiplyQuaternions(t,this)}multiplyQuaternions(t,e){let n=t._x,i=t._y,s=t._z,a=t._w,o=e._x,c=e._y,l=e._z,h=e._w;return this._x=n*h+a*o+i*l-s*c,this._y=i*h+a*c+s*o-n*l,this._z=s*h+a*l+n*c-i*o,this._w=a*h-n*o-i*c-s*l,this._onChangeCallback(),this}slerp(t,e){if(e===0)return this;if(e===1)return this.copy(t);let n=this._x,i=this._y,s=this._z,a=this._w,o=a*t._w+n*t._x+i*t._y+s*t._z;if(o<0?(this._w=-t._w,this._x=-t._x,this._y=-t._y,this._z=-t._z,o=-o):this.copy(t),o>=1)return this._w=a,this._x=n,this._y=i,this._z=s,this;let c=1-o*o;if(c<=Number.EPSILON){let m=1-e;return this._w=m*a+e*this._w,this._x=m*n+e*this._x,this._y=m*i+e*this._y,this._z=m*s+e*this._z,this.normalize(),this._onChangeCallback(),this}let l=Math.sqrt(c),h=Math.atan2(l,o),f=Math.sin((1-e)*h)/l,u=Math.sin(e*h)/l;return this._w=a*f+this._w*u,this._x=n*f+this._x*u,this._y=i*f+this._y*u,this._z=s*f+this._z*u,this._onChangeCallback(),this}slerpQuaternions(t,e,n){return this.copy(t).slerp(e,n)}random(){let t=Math.random(),e=Math.sqrt(1-t),n=Math.sqrt(t),i=2*Math.PI*Math.random(),s=2*Math.PI*Math.random();return this.set(e*Math.cos(i),n*Math.sin(s),n*Math.cos(s),e*Math.sin(i))}equals(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._w===this._w}fromArray(t,e=0){return this._x=t[e],this._y=t[e+1],this._z=t[e+2],this._w=t[e+3],this._onChangeCallback(),this}toArray(t=[],e=0){return t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._w,t}fromBufferAttribute(t,e){return this._x=t.getX(e),this._y=t.getY(e),this._z=t.getZ(e),this._w=t.getW(e),this}_onChange(t){return this._onChangeCallback=t,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}},R=class{constructor(t=0,e=0,n=0){R.prototype.isVector3=!0,this.x=t,this.y=e,this.z=n}set(t,e,n){return n===void 0&&(n=this.z),this.x=t,this.y=e,this.z=n,this}setScalar(t){return this.x=t,this.y=t,this.z=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setZ(t){return this.z=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+t)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(t){return this.x=t.x,this.y=t.y,this.z=t.z,this}add(t){return this.x+=t.x,this.y+=t.y,this.z+=t.z,this}addScalar(t){return this.x+=t,this.y+=t,this.z+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this.z-=t.z,this}subScalar(t){return this.x-=t,this.y-=t,this.z-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this}multiply(t){return this.x*=t.x,this.y*=t.y,this.z*=t.z,this}multiplyScalar(t){return this.x*=t,this.y*=t,this.z*=t,this}multiplyVectors(t,e){return this.x=t.x*e.x,this.y=t.y*e.y,this.z=t.z*e.z,this}applyEuler(t){return this.applyQuaternion(fa.setFromEuler(t))}applyAxisAngle(t,e){return this.applyQuaternion(fa.setFromAxisAngle(t,e))}applyMatrix3(t){let e=this.x,n=this.y,i=this.z,s=t.elements;return this.x=s[0]*e+s[3]*n+s[6]*i,this.y=s[1]*e+s[4]*n+s[7]*i,this.z=s[2]*e+s[5]*n+s[8]*i,this}applyNormalMatrix(t){return this.applyMatrix3(t).normalize()}applyMatrix4(t){let e=this.x,n=this.y,i=this.z,s=t.elements,a=1/(s[3]*e+s[7]*n+s[11]*i+s[15]);return this.x=(s[0]*e+s[4]*n+s[8]*i+s[12])*a,this.y=(s[1]*e+s[5]*n+s[9]*i+s[13])*a,this.z=(s[2]*e+s[6]*n+s[10]*i+s[14])*a,this}applyQuaternion(t){let e=this.x,n=this.y,i=this.z,s=t.x,a=t.y,o=t.z,c=t.w,l=c*e+a*i-o*n,h=c*n+o*e-s*i,f=c*i+s*n-a*e,u=-s*e-a*n-o*i;return this.x=l*c+u*-s+h*-o-f*-a,this.y=h*c+u*-a+f*-s-l*-o,this.z=f*c+u*-o+l*-a-h*-s,this}project(t){return this.applyMatrix4(t.matrixWorldInverse).applyMatrix4(t.projectionMatrix)}unproject(t){return this.applyMatrix4(t.projectionMatrixInverse).applyMatrix4(t.matrixWorld)}transformDirection(t){let e=this.x,n=this.y,i=this.z,s=t.elements;return this.x=s[0]*e+s[4]*n+s[8]*i,this.y=s[1]*e+s[5]*n+s[9]*i,this.z=s[2]*e+s[6]*n+s[10]*i,this.normalize()}divide(t){return this.x/=t.x,this.y/=t.y,this.z/=t.z,this}divideScalar(t){return this.multiplyScalar(1/t)}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this.z=Math.min(this.z,t.z),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this.z=Math.max(this.z,t.z),this}clamp(t,e){return this.x=Math.max(t.x,Math.min(e.x,this.x)),this.y=Math.max(t.y,Math.min(e.y,this.y)),this.z=Math.max(t.z,Math.min(e.z,this.z)),this}clampScalar(t,e){return this.x=Math.max(t,Math.min(e,this.x)),this.y=Math.max(t,Math.min(e,this.y)),this.z=Math.max(t,Math.min(e,this.z)),this}clampLength(t,e){let n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(t,Math.min(e,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=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(t){return this.x*t.x+this.y*t.y+this.z*t.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(t){return this.normalize().multiplyScalar(t)}lerp(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this.z+=(t.z-this.z)*e,this}lerpVectors(t,e,n){return this.x=t.x+(e.x-t.x)*n,this.y=t.y+(e.y-t.y)*n,this.z=t.z+(e.z-t.z)*n,this}cross(t){return this.crossVectors(this,t)}crossVectors(t,e){let n=t.x,i=t.y,s=t.z,a=e.x,o=e.y,c=e.z;return this.x=i*c-s*o,this.y=s*a-n*c,this.z=n*o-i*a,this}projectOnVector(t){let e=t.lengthSq();if(e===0)return this.set(0,0,0);let n=t.dot(this)/e;return this.copy(t).multiplyScalar(n)}projectOnPlane(t){return cr.copy(this).projectOnVector(t),this.sub(cr)}reflect(t){return this.sub(cr.copy(t).multiplyScalar(2*this.dot(t)))}angleTo(t){let e=Math.sqrt(this.lengthSq()*t.lengthSq());if(e===0)return Math.PI/2;let n=this.dot(t)/e;return Math.acos(de(n,-1,1))}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){let e=this.x-t.x,n=this.y-t.y,i=this.z-t.z;return e*e+n*n+i*i}manhattanDistanceTo(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)+Math.abs(this.z-t.z)}setFromSpherical(t){return this.setFromSphericalCoords(t.radius,t.phi,t.theta)}setFromSphericalCoords(t,e,n){let i=Math.sin(e)*t;return this.x=i*Math.sin(n),this.y=Math.cos(e)*t,this.z=i*Math.cos(n),this}setFromCylindrical(t){return this.setFromCylindricalCoords(t.radius,t.theta,t.y)}setFromCylindricalCoords(t,e,n){return this.x=t*Math.sin(e),this.y=n,this.z=t*Math.cos(e),this}setFromMatrixPosition(t){let e=t.elements;return this.x=e[12],this.y=e[13],this.z=e[14],this}setFromMatrixScale(t){let e=this.setFromMatrixColumn(t,0).length(),n=this.setFromMatrixColumn(t,1).length(),i=this.setFromMatrixColumn(t,2).length();return this.x=e,this.y=n,this.z=i,this}setFromMatrixColumn(t,e){return this.fromArray(t.elements,e*4)}setFromMatrix3Column(t,e){return this.fromArray(t.elements,e*3)}setFromEuler(t){return this.x=t._x,this.y=t._y,this.z=t._z,this}equals(t){return t.x===this.x&&t.y===this.y&&t.z===this.z}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this.z=t[e+2],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t[e+2]=this.z,t}fromBufferAttribute(t,e){return this.x=t.getX(e),this.y=t.getY(e),this.z=t.getZ(e),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){let t=(Math.random()-.5)*2,e=Math.random()*Math.PI*2,n=Math.sqrt(1-t**2);return this.x=n*Math.cos(e),this.y=n*Math.sin(e),this.z=t,this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}},cr=new R,fa=new gn,fe=class{constructor(t=new R(1/0,1/0,1/0),e=new R(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=t,this.max=e}set(t,e){return this.min.copy(t),this.max.copy(e),this}setFromArray(t){let e=1/0,n=1/0,i=1/0,s=-1/0,a=-1/0,o=-1/0;for(let c=0,l=t.length;c<l;c+=3){let h=t[c],f=t[c+1],u=t[c+2];h<e&&(e=h),f<n&&(n=f),u<i&&(i=u),h>s&&(s=h),f>a&&(a=f),u>o&&(o=u)}return this.min.set(e,n,i),this.max.set(s,a,o),this}setFromBufferAttribute(t){let e=1/0,n=1/0,i=1/0,s=-1/0,a=-1/0,o=-1/0;for(let c=0,l=t.count;c<l;c++){let h=t.getX(c),f=t.getY(c),u=t.getZ(c);h<e&&(e=h),f<n&&(n=f),u<i&&(i=u),h>s&&(s=h),f>a&&(a=f),u>o&&(o=u)}return this.min.set(e,n,i),this.max.set(s,a,o),this}setFromPoints(t){this.makeEmpty();for(let e=0,n=t.length;e<n;e++)this.expandByPoint(t[e]);return this}setFromCenterAndSize(t,e){let n=Sn.copy(e).multiplyScalar(.5);return this.min.copy(t).sub(n),this.max.copy(t).add(n),this}setFromObject(t,e=!1){return this.makeEmpty(),this.expandByObject(t,e)}clone(){return new this.constructor().copy(this)}copy(t){return this.min.copy(t.min),this.max.copy(t.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(t){return this.isEmpty()?t.set(0,0,0):t.addVectors(this.min,this.max).multiplyScalar(.5)}getSize(t){return this.isEmpty()?t.set(0,0,0):t.subVectors(this.max,this.min)}expandByPoint(t){return this.min.min(t),this.max.max(t),this}expandByVector(t){return this.min.sub(t),this.max.add(t),this}expandByScalar(t){return this.min.addScalar(-t),this.max.addScalar(t),this}expandByObject(t,e=!1){t.updateWorldMatrix(!1,!1);let n=t.geometry;if(n!==void 0)if(e&&n.attributes!=null&&n.attributes.position!==void 0){let s=n.attributes.position;for(let a=0,o=s.count;a<o;a++)Sn.fromBufferAttribute(s,a).applyMatrix4(t.matrixWorld),this.expandByPoint(Sn)}else n.boundingBox===null&&n.computeBoundingBox(),lr.copy(n.boundingBox),lr.applyMatrix4(t.matrixWorld),this.union(lr);let i=t.children;for(let s=0,a=i.length;s<a;s++)this.expandByObject(i[s],e);return this}containsPoint(t){return!(t.x<this.min.x||t.x>this.max.x||t.y<this.min.y||t.y>this.max.y||t.z<this.min.z||t.z>this.max.z)}containsBox(t){return this.min.x<=t.min.x&&t.max.x<=this.max.x&&this.min.y<=t.min.y&&t.max.y<=this.max.y&&this.min.z<=t.min.z&&t.max.z<=this.max.z}getParameter(t,e){return e.set((t.x-this.min.x)/(this.max.x-this.min.x),(t.y-this.min.y)/(this.max.y-this.min.y),(t.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(t){return!(t.max.x<this.min.x||t.min.x>this.max.x||t.max.y<this.min.y||t.min.y>this.max.y||t.max.z<this.min.z||t.min.z>this.max.z)}intersectsSphere(t){return this.clampPoint(t.center,Sn),Sn.distanceToSquared(t.center)<=t.radius*t.radius}intersectsPlane(t){let e,n;return t.normal.x>0?(e=t.normal.x*this.min.x,n=t.normal.x*this.max.x):(e=t.normal.x*this.max.x,n=t.normal.x*this.min.x),t.normal.y>0?(e+=t.normal.y*this.min.y,n+=t.normal.y*this.max.y):(e+=t.normal.y*this.max.y,n+=t.normal.y*this.min.y),t.normal.z>0?(e+=t.normal.z*this.min.z,n+=t.normal.z*this.max.z):(e+=t.normal.z*this.max.z,n+=t.normal.z*this.min.z),e<=-t.constant&&n>=-t.constant}intersectsTriangle(t){if(this.isEmpty())return!1;this.getCenter(Ei),ji.subVectors(this.max,Ei),Hn.subVectors(t.a,Ei),Wn.subVectors(t.b,Ei),qn.subVectors(t.c,Ei),ln.subVectors(Wn,Hn),hn.subVectors(qn,Wn),Tn.subVectors(Hn,qn);let e=[0,-ln.z,ln.y,0,-hn.z,hn.y,0,-Tn.z,Tn.y,ln.z,0,-ln.x,hn.z,0,-hn.x,Tn.z,0,-Tn.x,-ln.y,ln.x,0,-hn.y,hn.x,0,-Tn.y,Tn.x,0];return!hr(e,Hn,Wn,qn,ji)||(e=[1,0,0,0,1,0,0,0,1],!hr(e,Hn,Wn,qn,ji))?!1:(Qi.crossVectors(ln,hn),e=[Qi.x,Qi.y,Qi.z],hr(e,Hn,Wn,qn,ji))}clampPoint(t,e){return e.copy(t).clamp(this.min,this.max)}distanceToPoint(t){return Sn.copy(t).clamp(this.min,this.max).sub(t).length()}getBoundingSphere(t){return this.getCenter(t.center),t.radius=this.getSize(Sn).length()*.5,t}intersect(t){return this.min.max(t.min),this.max.min(t.max),this.isEmpty()&&this.makeEmpty(),this}union(t){return this.min.min(t.min),this.max.max(t.max),this}applyMatrix4(t){return this.isEmpty()?this:(Ke[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(t),Ke[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(t),Ke[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(t),Ke[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(t),Ke[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(t),Ke[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(t),Ke[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(t),Ke[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(t),this.setFromPoints(Ke),this)}translate(t){return this.min.add(t),this.max.add(t),this}equals(t){return t.min.equals(this.min)&&t.max.equals(this.max)}},Ke=[new R,new R,new R,new R,new R,new R,new R,new R],Sn=new R,lr=new fe,Hn=new R,Wn=new R,qn=new R,ln=new R,hn=new R,Tn=new R,Ei=new R,ji=new R,Qi=new R,An=new R;function hr(r,t,e,n,i){for(let s=0,a=r.length-3;s<=a;s+=3){An.fromArray(r,s);let o=i.x*Math.abs(An.x)+i.y*Math.abs(An.y)+i.z*Math.abs(An.z),c=t.dot(An),l=e.dot(An),h=n.dot(An);if(Math.max(-Math.max(c,l,h),Math.min(c,l,h))>o)return!1}return!0}var El=new fe,Ci=new R,ur=new R,Fn=class{constructor(t=new R,e=-1){this.center=t,this.radius=e}set(t,e){return this.center.copy(t),this.radius=e,this}setFromPoints(t,e){let n=this.center;e!==void 0?n.copy(e):El.setFromPoints(t).getCenter(n);let i=0;for(let s=0,a=t.length;s<a;s++)i=Math.max(i,n.distanceToSquared(t[s]));return this.radius=Math.sqrt(i),this}copy(t){return this.center.copy(t.center),this.radius=t.radius,this}isEmpty(){return this.radius<0}makeEmpty(){return this.center.set(0,0,0),this.radius=-1,this}containsPoint(t){return t.distanceToSquared(this.center)<=this.radius*this.radius}distanceToPoint(t){return t.distanceTo(this.center)-this.radius}intersectsSphere(t){let e=this.radius+t.radius;return t.center.distanceToSquared(this.center)<=e*e}intersectsBox(t){return t.intersectsSphere(this)}intersectsPlane(t){return Math.abs(t.distanceToPoint(this.center))<=this.radius}clampPoint(t,e){let n=this.center.distanceToSquared(t);return e.copy(t),n>this.radius*this.radius&&(e.sub(this.center).normalize(),e.multiplyScalar(this.radius).add(this.center)),e}getBoundingBox(t){return this.isEmpty()?(t.makeEmpty(),t):(t.set(this.center,this.center),t.expandByScalar(this.radius),t)}applyMatrix4(t){return this.center.applyMatrix4(t),this.radius=this.radius*t.getMaxScaleOnAxis(),this}translate(t){return this.center.add(t),this}expandByPoint(t){if(this.isEmpty())return this.center.copy(t),this.radius=0,this;Ci.subVectors(t,this.center);let e=Ci.lengthSq();if(e>this.radius*this.radius){let n=Math.sqrt(e),i=(n-this.radius)*.5;this.center.addScaledVector(Ci,i/n),this.radius+=i}return this}union(t){return t.isEmpty()?this:this.isEmpty()?(this.copy(t),this):(this.center.equals(t.center)===!0?this.radius=Math.max(this.radius,t.radius):(ur.subVectors(t.center,this.center).setLength(t.radius),this.expandByPoint(Ci.copy(t.center).add(ur)),this.expandByPoint(Ci.copy(t.center).sub(ur))),this)}equals(t){return t.center.equals(this.center)&&t.radius===this.radius}clone(){return new this.constructor().copy(this)}},je=new R,fr=new R,ts=new R,un=new R,dr=new R,es=new R,pr=new R,Fr=class{constructor(t=new R,e=new R(0,0,-1)){this.origin=t,this.direction=e}set(t,e){return this.origin.copy(t),this.direction.copy(e),this}copy(t){return this.origin.copy(t.origin),this.direction.copy(t.direction),this}at(t,e){return e.copy(this.direction).multiplyScalar(t).add(this.origin)}lookAt(t){return this.direction.copy(t).sub(this.origin).normalize(),this}recast(t){return this.origin.copy(this.at(t,je)),this}closestPointToPoint(t,e){e.subVectors(t,this.origin);let n=e.dot(this.direction);return n<0?e.copy(this.origin):e.copy(this.direction).multiplyScalar(n).add(this.origin)}distanceToPoint(t){return Math.sqrt(this.distanceSqToPoint(t))}distanceSqToPoint(t){let e=je.subVectors(t,this.origin).dot(this.direction);return e<0?this.origin.distanceToSquared(t):(je.copy(this.direction).multiplyScalar(e).add(this.origin),je.distanceToSquared(t))}distanceSqToSegment(t,e,n,i){fr.copy(t).add(e).multiplyScalar(.5),ts.copy(e).sub(t).normalize(),un.copy(this.origin).sub(fr);let s=t.distanceTo(e)*.5,a=-this.direction.dot(ts),o=un.dot(this.direction),c=-un.dot(ts),l=un.lengthSq(),h=Math.abs(1-a*a),f,u,m,x;if(h>0)if(f=a*c-o,u=a*o-c,x=s*h,f>=0)if(u>=-x)if(u<=x){let p=1/h;f*=p,u*=p,m=f*(f+a*u+2*o)+u*(a*f+u+2*c)+l}else u=s,f=Math.max(0,-(a*u+o)),m=-f*f+u*(u+2*c)+l;else u=-s,f=Math.max(0,-(a*u+o)),m=-f*f+u*(u+2*c)+l;else u<=-x?(f=Math.max(0,-(-a*s+o)),u=f>0?-s:Math.min(Math.max(-s,-c),s),m=-f*f+u*(u+2*c)+l):u<=x?(f=0,u=Math.min(Math.max(-s,-c),s),m=u*(u+2*c)+l):(f=Math.max(0,-(a*s+o)),u=f>0?s:Math.min(Math.max(-s,-c),s),m=-f*f+u*(u+2*c)+l);else u=a>0?-s:s,f=Math.max(0,-(a*u+o)),m=-f*f+u*(u+2*c)+l;return n&&n.copy(this.direction).multiplyScalar(f).add(this.origin),i&&i.copy(ts).multiplyScalar(u).add(fr),m}intersectSphere(t,e){je.subVectors(t.center,this.origin);let n=je.dot(this.direction),i=je.dot(je)-n*n,s=t.radius*t.radius;if(i>s)return null;let a=Math.sqrt(s-i),o=n-a,c=n+a;return o<0&&c<0?null:o<0?this.at(c,e):this.at(o,e)}intersectsSphere(t){return this.distanceSqToPoint(t.center)<=t.radius*t.radius}distanceToPlane(t){let e=t.normal.dot(this.direction);if(e===0)return t.distanceToPoint(this.origin)===0?0:null;let n=-(this.origin.dot(t.normal)+t.constant)/e;return n>=0?n:null}intersectPlane(t,e){let n=this.distanceToPlane(t);return n===null?null:this.at(n,e)}intersectsPlane(t){let e=t.distanceToPoint(this.origin);return e===0||t.normal.dot(this.direction)*e<0}intersectBox(t,e){let n,i,s,a,o,c,l=1/this.direction.x,h=1/this.direction.y,f=1/this.direction.z,u=this.origin;return l>=0?(n=(t.min.x-u.x)*l,i=(t.max.x-u.x)*l):(n=(t.max.x-u.x)*l,i=(t.min.x-u.x)*l),h>=0?(s=(t.min.y-u.y)*h,a=(t.max.y-u.y)*h):(s=(t.max.y-u.y)*h,a=(t.min.y-u.y)*h),n>a||s>i||((s>n||isNaN(n))&&(n=s),(a<i||isNaN(i))&&(i=a),f>=0?(o=(t.min.z-u.z)*f,c=(t.max.z-u.z)*f):(o=(t.max.z-u.z)*f,c=(t.min.z-u.z)*f),n>c||o>i)||((o>n||n!==n)&&(n=o),(c<i||i!==i)&&(i=c),i<0)?null:this.at(n>=0?n:i,e)}intersectsBox(t){return this.intersectBox(t,je)!==null}intersectTriangle(t,e,n,i,s){dr.subVectors(e,t),es.subVectors(n,t),pr.crossVectors(dr,es);let a=this.direction.dot(pr),o;if(a>0){if(i)return null;o=1}else if(a<0)o=-1,a=-a;else return null;un.subVectors(this.origin,t);let c=o*this.direction.dot(es.crossVectors(un,es));if(c<0)return null;let l=o*this.direction.dot(dr.cross(un));if(l<0||c+l>a)return null;let h=-o*un.dot(pr);return h<0?null:this.at(h/a,s)}applyMatrix4(t){return this.origin.applyMatrix4(t),this.direction.transformDirection(t),this}equals(t){return t.origin.equals(this.origin)&&t.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}},zt=class{constructor(){zt.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}set(t,e,n,i,s,a,o,c,l,h,f,u,m,x,p,d){let g=this.elements;return g[0]=t,g[4]=e,g[8]=n,g[12]=i,g[1]=s,g[5]=a,g[9]=o,g[13]=c,g[2]=l,g[6]=h,g[10]=f,g[14]=u,g[3]=m,g[7]=x,g[11]=p,g[15]=d,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 zt().fromArray(this.elements)}copy(t){let e=this.elements,n=t.elements;return e[0]=n[0],e[1]=n[1],e[2]=n[2],e[3]=n[3],e[4]=n[4],e[5]=n[5],e[6]=n[6],e[7]=n[7],e[8]=n[8],e[9]=n[9],e[10]=n[10],e[11]=n[11],e[12]=n[12],e[13]=n[13],e[14]=n[14],e[15]=n[15],this}copyPosition(t){let e=this.elements,n=t.elements;return e[12]=n[12],e[13]=n[13],e[14]=n[14],this}setFromMatrix3(t){let e=t.elements;return this.set(e[0],e[3],e[6],0,e[1],e[4],e[7],0,e[2],e[5],e[8],0,0,0,0,1),this}extractBasis(t,e,n){return t.setFromMatrixColumn(this,0),e.setFromMatrixColumn(this,1),n.setFromMatrixColumn(this,2),this}makeBasis(t,e,n){return this.set(t.x,e.x,n.x,0,t.y,e.y,n.y,0,t.z,e.z,n.z,0,0,0,0,1),this}extractRotation(t){let e=this.elements,n=t.elements,i=1/Xn.setFromMatrixColumn(t,0).length(),s=1/Xn.setFromMatrixColumn(t,1).length(),a=1/Xn.setFromMatrixColumn(t,2).length();return e[0]=n[0]*i,e[1]=n[1]*i,e[2]=n[2]*i,e[3]=0,e[4]=n[4]*s,e[5]=n[5]*s,e[6]=n[6]*s,e[7]=0,e[8]=n[8]*a,e[9]=n[9]*a,e[10]=n[10]*a,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}makeRotationFromEuler(t){let e=this.elements,n=t.x,i=t.y,s=t.z,a=Math.cos(n),o=Math.sin(n),c=Math.cos(i),l=Math.sin(i),h=Math.cos(s),f=Math.sin(s);if(t.order==="XYZ"){let u=a*h,m=a*f,x=o*h,p=o*f;e[0]=c*h,e[4]=-c*f,e[8]=l,e[1]=m+x*l,e[5]=u-p*l,e[9]=-o*c,e[2]=p-u*l,e[6]=x+m*l,e[10]=a*c}else if(t.order==="YXZ"){let u=c*h,m=c*f,x=l*h,p=l*f;e[0]=u+p*o,e[4]=x*o-m,e[8]=a*l,e[1]=a*f,e[5]=a*h,e[9]=-o,e[2]=m*o-x,e[6]=p+u*o,e[10]=a*c}else if(t.order==="ZXY"){let u=c*h,m=c*f,x=l*h,p=l*f;e[0]=u-p*o,e[4]=-a*f,e[8]=x+m*o,e[1]=m+x*o,e[5]=a*h,e[9]=p-u*o,e[2]=-a*l,e[6]=o,e[10]=a*c}else if(t.order==="ZYX"){let u=a*h,m=a*f,x=o*h,p=o*f;e[0]=c*h,e[4]=x*l-m,e[8]=u*l+p,e[1]=c*f,e[5]=p*l+u,e[9]=m*l-x,e[2]=-l,e[6]=o*c,e[10]=a*c}else if(t.order==="YZX"){let u=a*c,m=a*l,x=o*c,p=o*l;e[0]=c*h,e[4]=p-u*f,e[8]=x*f+m,e[1]=f,e[5]=a*h,e[9]=-o*h,e[2]=-l*h,e[6]=m*f+x,e[10]=u-p*f}else if(t.order==="XZY"){let u=a*c,m=a*l,x=o*c,p=o*l;e[0]=c*h,e[4]=-f,e[8]=l*h,e[1]=u*f+p,e[5]=a*h,e[9]=m*f-x,e[2]=x*f-m,e[6]=o*h,e[10]=p*f+u}return e[3]=0,e[7]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}makeRotationFromQuaternion(t){return this.compose(Cl,t,Pl)}lookAt(t,e,n){let i=this.elements;return be.subVectors(t,e),be.lengthSq()===0&&(be.z=1),be.normalize(),fn.crossVectors(n,be),fn.lengthSq()===0&&(Math.abs(n.z)===1?be.x+=1e-4:be.z+=1e-4,be.normalize(),fn.crossVectors(n,be)),fn.normalize(),ns.crossVectors(be,fn),i[0]=fn.x,i[4]=ns.x,i[8]=be.x,i[1]=fn.y,i[5]=ns.y,i[9]=be.y,i[2]=fn.z,i[6]=ns.z,i[10]=be.z,this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,e){let n=t.elements,i=e.elements,s=this.elements,a=n[0],o=n[4],c=n[8],l=n[12],h=n[1],f=n[5],u=n[9],m=n[13],x=n[2],p=n[6],d=n[10],g=n[14],M=n[3],_=n[7],v=n[11],b=n[15],A=i[0],C=i[4],y=i[8],S=i[12],P=i[1],O=i[5],B=i[9],D=i[13],I=i[2],k=i[6],Y=i[10],Z=i[14],H=i[3],$=i[7],J=i[11],dt=i[15];return s[0]=a*A+o*P+c*I+l*H,s[4]=a*C+o*O+c*k+l*$,s[8]=a*y+o*B+c*Y+l*J,s[12]=a*S+o*D+c*Z+l*dt,s[1]=h*A+f*P+u*I+m*H,s[5]=h*C+f*O+u*k+m*$,s[9]=h*y+f*B+u*Y+m*J,s[13]=h*S+f*D+u*Z+m*dt,s[2]=x*A+p*P+d*I+g*H,s[6]=x*C+p*O+d*k+g*$,s[10]=x*y+p*B+d*Y+g*J,s[14]=x*S+p*D+d*Z+g*dt,s[3]=M*A+_*P+v*I+b*H,s[7]=M*C+_*O+v*k+b*$,s[11]=M*y+_*B+v*Y+b*J,s[15]=M*S+_*D+v*Z+b*dt,this}multiplyScalar(t){let e=this.elements;return e[0]*=t,e[4]*=t,e[8]*=t,e[12]*=t,e[1]*=t,e[5]*=t,e[9]*=t,e[13]*=t,e[2]*=t,e[6]*=t,e[10]*=t,e[14]*=t,e[3]*=t,e[7]*=t,e[11]*=t,e[15]*=t,this}determinant(){let t=this.elements,e=t[0],n=t[4],i=t[8],s=t[12],a=t[1],o=t[5],c=t[9],l=t[13],h=t[2],f=t[6],u=t[10],m=t[14],x=t[3],p=t[7],d=t[11],g=t[15];return x*(+s*c*f-i*l*f-s*o*u+n*l*u+i*o*m-n*c*m)+p*(+e*c*m-e*l*u+s*a*u-i*a*m+i*l*h-s*c*h)+d*(+e*l*f-e*o*m-s*a*f+n*a*m+s*o*h-n*l*h)+g*(-i*o*h-e*c*f+e*o*u+i*a*f-n*a*u+n*c*h)}transpose(){let t=this.elements,e;return e=t[1],t[1]=t[4],t[4]=e,e=t[2],t[2]=t[8],t[8]=e,e=t[6],t[6]=t[9],t[9]=e,e=t[3],t[3]=t[12],t[12]=e,e=t[7],t[7]=t[13],t[13]=e,e=t[11],t[11]=t[14],t[14]=e,this}setPosition(t,e,n){let i=this.elements;return t.isVector3?(i[12]=t.x,i[13]=t.y,i[14]=t.z):(i[12]=t,i[13]=e,i[14]=n),this}invert(){let t=this.elements,e=t[0],n=t[1],i=t[2],s=t[3],a=t[4],o=t[5],c=t[6],l=t[7],h=t[8],f=t[9],u=t[10],m=t[11],x=t[12],p=t[13],d=t[14],g=t[15],M=f*d*l-p*u*l+p*c*m-o*d*m-f*c*g+o*u*g,_=x*u*l-h*d*l-x*c*m+a*d*m+h*c*g-a*u*g,v=h*p*l-x*f*l+x*o*m-a*p*m-h*o*g+a*f*g,b=x*f*c-h*p*c-x*o*u+a*p*u+h*o*d-a*f*d,A=e*M+n*_+i*v+s*b;if(A===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);let C=1/A;return t[0]=M*C,t[1]=(p*u*s-f*d*s-p*i*m+n*d*m+f*i*g-n*u*g)*C,t[2]=(o*d*s-p*c*s+p*i*l-n*d*l-o*i*g+n*c*g)*C,t[3]=(f*c*s-o*u*s-f*i*l+n*u*l+o*i*m-n*c*m)*C,t[4]=_*C,t[5]=(h*d*s-x*u*s+x*i*m-e*d*m-h*i*g+e*u*g)*C,t[6]=(x*c*s-a*d*s-x*i*l+e*d*l+a*i*g-e*c*g)*C,t[7]=(a*u*s-h*c*s+h*i*l-e*u*l-a*i*m+e*c*m)*C,t[8]=v*C,t[9]=(x*f*s-h*p*s-x*n*m+e*p*m+h*n*g-e*f*g)*C,t[10]=(a*p*s-x*o*s+x*n*l-e*p*l-a*n*g+e*o*g)*C,t[11]=(h*o*s-a*f*s-h*n*l+e*f*l+a*n*m-e*o*m)*C,t[12]=b*C,t[13]=(h*p*i-x*f*i+x*n*u-e*p*u-h*n*d+e*f*d)*C,t[14]=(x*o*i-a*p*i-x*n*c+e*p*c+a*n*d-e*o*d)*C,t[15]=(a*f*i-h*o*i+h*n*c-e*f*c-a*n*u+e*o*u)*C,this}scale(t){let e=this.elements,n=t.x,i=t.y,s=t.z;return e[0]*=n,e[4]*=i,e[8]*=s,e[1]*=n,e[5]*=i,e[9]*=s,e[2]*=n,e[6]*=i,e[10]*=s,e[3]*=n,e[7]*=i,e[11]*=s,this}getMaxScaleOnAxis(){let t=this.elements,e=t[0]*t[0]+t[1]*t[1]+t[2]*t[2],n=t[4]*t[4]+t[5]*t[5]+t[6]*t[6],i=t[8]*t[8]+t[9]*t[9]+t[10]*t[10];return Math.sqrt(Math.max(e,n,i))}makeTranslation(t,e,n){return this.set(1,0,0,t,0,1,0,e,0,0,1,n,0,0,0,1),this}makeRotationX(t){let e=Math.cos(t),n=Math.sin(t);return this.set(1,0,0,0,0,e,-n,0,0,n,e,0,0,0,0,1),this}makeRotationY(t){let e=Math.cos(t),n=Math.sin(t);return this.set(e,0,n,0,0,1,0,0,-n,0,e,0,0,0,0,1),this}makeRotationZ(t){let e=Math.cos(t),n=Math.sin(t);return this.set(e,-n,0,0,n,e,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(t,e){let n=Math.cos(e),i=Math.sin(e),s=1-n,a=t.x,o=t.y,c=t.z,l=s*a,h=s*o;return this.set(l*a+n,l*o-i*c,l*c+i*o,0,l*o+i*c,h*o+n,h*c-i*a,0,l*c-i*o,h*c+i*a,s*c*c+n,0,0,0,0,1),this}makeScale(t,e,n){return this.set(t,0,0,0,0,e,0,0,0,0,n,0,0,0,0,1),this}makeShear(t,e,n,i,s,a){return this.set(1,n,s,0,t,1,a,0,e,i,1,0,0,0,0,1),this}compose(t,e,n){let i=this.elements,s=e._x,a=e._y,o=e._z,c=e._w,l=s+s,h=a+a,f=o+o,u=s*l,m=s*h,x=s*f,p=a*h,d=a*f,g=o*f,M=c*l,_=c*h,v=c*f,b=n.x,A=n.y,C=n.z;return i[0]=(1-(p+g))*b,i[1]=(m+v)*b,i[2]=(x-_)*b,i[3]=0,i[4]=(m-v)*A,i[5]=(1-(u+g))*A,i[6]=(d+M)*A,i[7]=0,i[8]=(x+_)*C,i[9]=(d-M)*C,i[10]=(1-(u+p))*C,i[11]=0,i[12]=t.x,i[13]=t.y,i[14]=t.z,i[15]=1,this}decompose(t,e,n){let i=this.elements,s=Xn.set(i[0],i[1],i[2]).length(),a=Xn.set(i[4],i[5],i[6]).length(),o=Xn.set(i[8],i[9],i[10]).length();this.determinant()<0&&(s=-s),t.x=i[12],t.y=i[13],t.z=i[14],Fe.copy(this);let l=1/s,h=1/a,f=1/o;return Fe.elements[0]*=l,Fe.elements[1]*=l,Fe.elements[2]*=l,Fe.elements[4]*=h,Fe.elements[5]*=h,Fe.elements[6]*=h,Fe.elements[8]*=f,Fe.elements[9]*=f,Fe.elements[10]*=f,e.setFromRotationMatrix(Fe),n.x=s,n.y=a,n.z=o,this}makePerspective(t,e,n,i,s,a){let o=this.elements,c=2*s/(e-t),l=2*s/(n-i),h=(e+t)/(e-t),f=(n+i)/(n-i),u=-(a+s)/(a-s),m=-2*a*s/(a-s);return o[0]=c,o[4]=0,o[8]=h,o[12]=0,o[1]=0,o[5]=l,o[9]=f,o[13]=0,o[2]=0,o[6]=0,o[10]=u,o[14]=m,o[3]=0,o[7]=0,o[11]=-1,o[15]=0,this}makeOrthographic(t,e,n,i,s,a){let o=this.elements,c=1/(e-t),l=1/(n-i),h=1/(a-s),f=(e+t)*c,u=(n+i)*l,m=(a+s)*h;return o[0]=2*c,o[4]=0,o[8]=0,o[12]=-f,o[1]=0,o[5]=2*l,o[9]=0,o[13]=-u,o[2]=0,o[6]=0,o[10]=-2*h,o[14]=-m,o[3]=0,o[7]=0,o[11]=0,o[15]=1,this}equals(t){let e=this.elements,n=t.elements;for(let i=0;i<16;i++)if(e[i]!==n[i])return!1;return!0}fromArray(t,e=0){for(let n=0;n<16;n++)this.elements[n]=t[n+e];return this}toArray(t=[],e=0){let n=this.elements;return t[e]=n[0],t[e+1]=n[1],t[e+2]=n[2],t[e+3]=n[3],t[e+4]=n[4],t[e+5]=n[5],t[e+6]=n[6],t[e+7]=n[7],t[e+8]=n[8],t[e+9]=n[9],t[e+10]=n[10],t[e+11]=n[11],t[e+12]=n[12],t[e+13]=n[13],t[e+14]=n[14],t[e+15]=n[15],t}},Xn=new R,Fe=new zt,Cl=new R(0,0,0),Pl=new R(1,1,1),fn=new R,ns=new R,be=new R,da=new zt,pa=new gn,ui=class{constructor(t=0,e=0,n=0,i=ui.DEFAULT_ORDER){this.isEuler=!0,this._x=t,this._y=e,this._z=n,this._order=i}get x(){return this._x}set x(t){this._x=t,this._onChangeCallback()}get y(){return this._y}set y(t){this._y=t,this._onChangeCallback()}get z(){return this._z}set z(t){this._z=t,this._onChangeCallback()}get order(){return this._order}set order(t){this._order=t,this._onChangeCallback()}set(t,e,n,i=this._order){return this._x=t,this._y=e,this._z=n,this._order=i,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(t){return this._x=t._x,this._y=t._y,this._z=t._z,this._order=t._order,this._onChangeCallback(),this}setFromRotationMatrix(t,e=this._order,n=!0){let i=t.elements,s=i[0],a=i[4],o=i[8],c=i[1],l=i[5],h=i[9],f=i[2],u=i[6],m=i[10];switch(e){case"XYZ":this._y=Math.asin(de(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(-h,m),this._z=Math.atan2(-a,s)):(this._x=Math.atan2(u,l),this._z=0);break;case"YXZ":this._x=Math.asin(-de(h,-1,1)),Math.abs(h)<.9999999?(this._y=Math.atan2(o,m),this._z=Math.atan2(c,l)):(this._y=Math.atan2(-f,s),this._z=0);break;case"ZXY":this._x=Math.asin(de(u,-1,1)),Math.abs(u)<.9999999?(this._y=Math.atan2(-f,m),this._z=Math.atan2(-a,l)):(this._y=0,this._z=Math.atan2(c,s));break;case"ZYX":this._y=Math.asin(-de(f,-1,1)),Math.abs(f)<.9999999?(this._x=Math.atan2(u,m),this._z=Math.atan2(c,s)):(this._x=0,this._z=Math.atan2(-a,l));break;case"YZX":this._z=Math.asin(de(c,-1,1)),Math.abs(c)<.9999999?(this._x=Math.atan2(-h,l),this._y=Math.atan2(-f,s)):(this._x=0,this._y=Math.atan2(o,m));break;case"XZY":this._z=Math.asin(-de(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(u,l),this._y=Math.atan2(o,s)):(this._x=Math.atan2(-h,m),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+e)}return this._order=e,n===!0&&this._onChangeCallback(),this}setFromQuaternion(t,e,n){return da.makeRotationFromQuaternion(t),this.setFromRotationMatrix(da,e,n)}setFromVector3(t,e=this._order){return this.set(t.x,t.y,t.z,e)}reorder(t){return pa.setFromEuler(this),this.setFromQuaternion(pa,t)}equals(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._order===this._order}fromArray(t){return this._x=t[0],this._y=t[1],this._z=t[2],t[3]!==void 0&&(this._order=t[3]),this._onChangeCallback(),this}toArray(t=[],e=0){return t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._order,t}_onChange(t){return this._onChangeCallback=t,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}};ui.DEFAULT_ORDER="XYZ";var ws=class{constructor(){this.mask=1}set(t){this.mask=(1<<t|0)>>>0}enable(t){this.mask|=1<<t|0}enableAll(){this.mask=-1}toggle(t){this.mask^=1<<t|0}disable(t){this.mask&=~(1<<t|0)}disableAll(){this.mask=0}test(t){return(this.mask&t.mask)!==0}isEnabled(t){return(this.mask&(1<<t|0))!==0}},Rl=0,ma=new R,Yn=new gn,Qe=new zt,is=new R,Pi=new R,Ll=new R,Il=new gn,ga=new R(1,0,0),xa=new R(0,1,0),_a=new R(0,0,1),Dl={type:"added"},ya={type:"removed"},pe=class extends mn{constructor(){super(),this.isObject3D=!0,Object.defineProperty(this,"id",{value:Rl++}),this.uuid=Gi(),this.name="",this.type="Object3D",this.parent=null,this.children=[],this.up=pe.DEFAULT_UP.clone();let t=new R,e=new ui,n=new gn,i=new R(1,1,1);function s(){n.setFromEuler(e,!1)}function a(){e.setFromQuaternion(n,void 0,!1)}e._onChange(s),n._onChange(a),Object.defineProperties(this,{position:{configurable:!0,enumerable:!0,value:t},rotation:{configurable:!0,enumerable:!0,value:e},quaternion:{configurable:!0,enumerable:!0,value:n},scale:{configurable:!0,enumerable:!0,value:i},modelViewMatrix:{value:new zt},normalMatrix:{value:new le}}),this.matrix=new zt,this.matrixWorld=new zt,this.matrixAutoUpdate=pe.DEFAULT_MATRIX_AUTO_UPDATE,this.matrixWorldNeedsUpdate=!1,this.matrixWorldAutoUpdate=pe.DEFAULT_MATRIX_WORLD_AUTO_UPDATE,this.layers=new ws,this.visible=!0,this.castShadow=!1,this.receiveShadow=!1,this.frustumCulled=!0,this.renderOrder=0,this.animations=[],this.userData={}}onBeforeRender(){}onAfterRender(){}applyMatrix4(t){this.matrixAutoUpdate&&this.updateMatrix(),this.matrix.premultiply(t),this.matrix.decompose(this.position,this.quaternion,this.scale)}applyQuaternion(t){return this.quaternion.premultiply(t),this}setRotationFromAxisAngle(t,e){this.quaternion.setFromAxisAngle(t,e)}setRotationFromEuler(t){this.quaternion.setFromEuler(t,!0)}setRotationFromMatrix(t){this.quaternion.setFromRotationMatrix(t)}setRotationFromQuaternion(t){this.quaternion.copy(t)}rotateOnAxis(t,e){return Yn.setFromAxisAngle(t,e),this.quaternion.multiply(Yn),this}rotateOnWorldAxis(t,e){return Yn.setFromAxisAngle(t,e),this.quaternion.premultiply(Yn),this}rotateX(t){return this.rotateOnAxis(ga,t)}rotateY(t){return this.rotateOnAxis(xa,t)}rotateZ(t){return this.rotateOnAxis(_a,t)}translateOnAxis(t,e){return ma.copy(t).applyQuaternion(this.quaternion),this.position.add(ma.multiplyScalar(e)),this}translateX(t){return this.translateOnAxis(ga,t)}translateY(t){return this.translateOnAxis(xa,t)}translateZ(t){return this.translateOnAxis(_a,t)}localToWorld(t){return this.updateWorldMatrix(!0,!1),t.applyMatrix4(this.matrixWorld)}worldToLocal(t){return this.updateWorldMatrix(!0,!1),t.applyMatrix4(Qe.copy(this.matrixWorld).invert())}lookAt(t,e,n){t.isVector3?is.copy(t):is.set(t,e,n);let i=this.parent;this.updateWorldMatrix(!0,!1),Pi.setFromMatrixPosition(this.matrixWorld),this.isCamera||this.isLight?Qe.lookAt(Pi,is,this.up):Qe.lookAt(is,Pi,this.up),this.quaternion.setFromRotationMatrix(Qe),i&&(Qe.extractRotation(i.matrixWorld),Yn.setFromRotationMatrix(Qe),this.quaternion.premultiply(Yn.invert()))}add(t){if(arguments.length>1){for(let e=0;e<arguments.length;e++)this.add(arguments[e]);return this}return t===this?(console.error("THREE.Object3D.add: object can't be added as a child of itself.",t),this):(t&&t.isObject3D?(t.parent!==null&&t.parent.remove(t),t.parent=this,this.children.push(t),t.dispatchEvent(Dl)):console.error("THREE.Object3D.add: object not an instance of THREE.Object3D.",t),this)}remove(t){if(arguments.length>1){for(let n=0;n<arguments.length;n++)this.remove(arguments[n]);return this}let e=this.children.indexOf(t);return e!==-1&&(t.parent=null,this.children.splice(e,1),t.dispatchEvent(ya)),this}removeFromParent(){let t=this.parent;return t!==null&&t.remove(this),this}clear(){for(let t=0;t<this.children.length;t++){let e=this.children[t];e.parent=null,e.dispatchEvent(ya)}return this.children.length=0,this}attach(t){return this.updateWorldMatrix(!0,!1),Qe.copy(this.matrixWorld).invert(),t.parent!==null&&(t.parent.updateWorldMatrix(!0,!1),Qe.multiply(t.parent.matrixWorld)),t.applyMatrix4(Qe),this.add(t),t.updateWorldMatrix(!1,!0),this}getObjectById(t){return this.getObjectByProperty("id",t)}getObjectByName(t){return this.getObjectByProperty("name",t)}getObjectByProperty(t,e){if(this[t]===e)return this;for(let n=0,i=this.children.length;n<i;n++){let a=this.children[n].getObjectByProperty(t,e);if(a!==void 0)return a}}getObjectsByProperty(t,e){let n=[];this[t]===e&&n.push(this);for(let i=0,s=this.children.length;i<s;i++){let a=this.children[i].getObjectsByProperty(t,e);a.length>0&&(n=n.concat(a))}return n}getWorldPosition(t){return this.updateWorldMatrix(!0,!1),t.setFromMatrixPosition(this.matrixWorld)}getWorldQuaternion(t){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(Pi,t,Ll),t}getWorldScale(t){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(Pi,Il,t),t}getWorldDirection(t){this.updateWorldMatrix(!0,!1);let e=this.matrixWorld.elements;return t.set(e[8],e[9],e[10]).normalize()}raycast(){}traverse(t){t(this);let e=this.children;for(let n=0,i=e.length;n<i;n++)e[n].traverse(t)}traverseVisible(t){if(this.visible===!1)return;t(this);let e=this.children;for(let n=0,i=e.length;n<i;n++)e[n].traverseVisible(t)}traverseAncestors(t){let e=this.parent;e!==null&&(t(e),e.traverseAncestors(t))}updateMatrix(){this.matrix.compose(this.position,this.quaternion,this.scale),this.matrixWorldNeedsUpdate=!0}updateMatrixWorld(t){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||t)&&(this.parent===null?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix),this.matrixWorldNeedsUpdate=!1,t=!0);let e=this.children;for(let n=0,i=e.length;n<i;n++){let s=e[n];(s.matrixWorldAutoUpdate===!0||t===!0)&&s.updateMatrixWorld(t)}}updateWorldMatrix(t,e){let n=this.parent;if(t===!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),e===!0){let i=this.children;for(let s=0,a=i.length;s<a;s++){let o=i[s];o.matrixWorldAutoUpdate===!0&&o.updateWorldMatrix(!1,!0)}}}toJSON(t){let e=t===void 0||typeof t=="string",n={};e&&(t={geometries:{},materials:{},textures:{},images:{},shapes:{},skeletons:{},animations:{},nodes:{}},n.metadata={version:4.5,type:"Object",generator:"Object3D.toJSON"});let i={};i.uuid=this.uuid,i.type=this.type,this.name!==""&&(i.name=this.name),this.castShadow===!0&&(i.castShadow=!0),this.receiveShadow===!0&&(i.receiveShadow=!0),this.visible===!1&&(i.visible=!1),this.frustumCulled===!1&&(i.frustumCulled=!1),this.renderOrder!==0&&(i.renderOrder=this.renderOrder),Object.keys(this.userData).length>0&&(i.userData=this.userData),i.layers=this.layers.mask,i.matrix=this.matrix.toArray(),this.matrixAutoUpdate===!1&&(i.matrixAutoUpdate=!1),this.isInstancedMesh&&(i.type="InstancedMesh",i.count=this.count,i.instanceMatrix=this.instanceMatrix.toJSON(),this.instanceColor!==null&&(i.instanceColor=this.instanceColor.toJSON()));function s(o,c){return o[c.uuid]===void 0&&(o[c.uuid]=c.toJSON(t)),c.uuid}if(this.isScene)this.background&&(this.background.isColor?i.background=this.background.toJSON():this.background.isTexture&&(i.background=this.background.toJSON(t).uuid)),this.environment&&this.environment.isTexture&&this.environment.isRenderTargetTexture!==!0&&(i.environment=this.environment.toJSON(t).uuid);else if(this.isMesh||this.isLine||this.isPoints){i.geometry=s(t.geometries,this.geometry);let o=this.geometry.parameters;if(o!==void 0&&o.shapes!==void 0){let c=o.shapes;if(Array.isArray(c))for(let l=0,h=c.length;l<h;l++){let f=c[l];s(t.shapes,f)}else s(t.shapes,c)}}if(this.isSkinnedMesh&&(i.bindMode=this.bindMode,i.bindMatrix=this.bindMatrix.toArray(),this.skeleton!==void 0&&(s(t.skeletons,this.skeleton),i.skeleton=this.skeleton.uuid)),this.material!==void 0)if(Array.isArray(this.material)){let o=[];for(let c=0,l=this.material.length;c<l;c++)o.push(s(t.materials,this.material[c]));i.material=o}else i.material=s(t.materials,this.material);if(this.children.length>0){i.children=[];for(let o=0;o<this.children.length;o++)i.children.push(this.children[o].toJSON(t).object)}if(this.animations.length>0){i.animations=[];for(let o=0;o<this.animations.length;o++){let c=this.animations[o];i.animations.push(s(t.animations,c))}}if(e){let o=a(t.geometries),c=a(t.materials),l=a(t.textures),h=a(t.images),f=a(t.shapes),u=a(t.skeletons),m=a(t.animations),x=a(t.nodes);o.length>0&&(n.geometries=o),c.length>0&&(n.materials=c),l.length>0&&(n.textures=l),h.length>0&&(n.images=h),f.length>0&&(n.shapes=f),u.length>0&&(n.skeletons=u),m.length>0&&(n.animations=m),x.length>0&&(n.nodes=x)}return n.object=i,n;function a(o){let c=[];for(let l in o){let h=o[l];delete h.metadata,c.push(h)}return c}}clone(t){return new this.constructor().copy(this,t)}copy(t,e=!0){if(this.name=t.name,this.up.copy(t.up),this.position.copy(t.position),this.rotation.order=t.rotation.order,this.quaternion.copy(t.quaternion),this.scale.copy(t.scale),this.matrix.copy(t.matrix),this.matrixWorld.copy(t.matrixWorld),this.matrixAutoUpdate=t.matrixAutoUpdate,this.matrixWorldNeedsUpdate=t.matrixWorldNeedsUpdate,this.matrixWorldAutoUpdate=t.matrixWorldAutoUpdate,this.layers.mask=t.layers.mask,this.visible=t.visible,this.castShadow=t.castShadow,this.receiveShadow=t.receiveShadow,this.frustumCulled=t.frustumCulled,this.renderOrder=t.renderOrder,this.userData=JSON.parse(JSON.stringify(t.userData)),e===!0)for(let n=0;n<t.children.length;n++){let i=t.children[n];this.add(i.clone())}return this}};pe.DEFAULT_UP=new R(0,1,0);pe.DEFAULT_MATRIX_AUTO_UPDATE=!0;pe.DEFAULT_MATRIX_WORLD_AUTO_UPDATE=!0;var ze=new R,tn=new R,mr=new R,en=new R,Zn=new R,Jn=new R,va=new R,gr=new R,xr=new R,_r=new R,ie=class{constructor(t=new R,e=new R,n=new R){this.a=t,this.b=e,this.c=n}static getNormal(t,e,n,i){i.subVectors(n,e),ze.subVectors(t,e),i.cross(ze);let s=i.lengthSq();return s>0?i.multiplyScalar(1/Math.sqrt(s)):i.set(0,0,0)}static getBarycoord(t,e,n,i,s){ze.subVectors(i,e),tn.subVectors(n,e),mr.subVectors(t,e);let a=ze.dot(ze),o=ze.dot(tn),c=ze.dot(mr),l=tn.dot(tn),h=tn.dot(mr),f=a*l-o*o;if(f===0)return s.set(-2,-1,-1);let u=1/f,m=(l*c-o*h)*u,x=(a*h-o*c)*u;return s.set(1-m-x,x,m)}static containsPoint(t,e,n,i){return this.getBarycoord(t,e,n,i,en),en.x>=0&&en.y>=0&&en.x+en.y<=1}static getUV(t,e,n,i,s,a,o,c){return this.getBarycoord(t,e,n,i,en),c.set(0,0),c.addScaledVector(s,en.x),c.addScaledVector(a,en.y),c.addScaledVector(o,en.z),c}static isFrontFacing(t,e,n,i){return ze.subVectors(n,e),tn.subVectors(t,e),ze.cross(tn).dot(i)<0}set(t,e,n){return this.a.copy(t),this.b.copy(e),this.c.copy(n),this}setFromPointsAndIndices(t,e,n,i){return this.a.copy(t[e]),this.b.copy(t[n]),this.c.copy(t[i]),this}setFromAttributeAndIndices(t,e,n,i){return this.a.fromBufferAttribute(t,e),this.b.fromBufferAttribute(t,n),this.c.fromBufferAttribute(t,i),this}clone(){return new this.constructor().copy(this)}copy(t){return this.a.copy(t.a),this.b.copy(t.b),this.c.copy(t.c),this}getArea(){return ze.subVectors(this.c,this.b),tn.subVectors(this.a,this.b),ze.cross(tn).length()*.5}getMidpoint(t){return t.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(t){return ie.getNormal(this.a,this.b,this.c,t)}getPlane(t){return t.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(t,e){return ie.getBarycoord(t,this.a,this.b,this.c,e)}getUV(t,e,n,i,s){return ie.getUV(t,this.a,this.b,this.c,e,n,i,s)}containsPoint(t){return ie.containsPoint(t,this.a,this.b,this.c)}isFrontFacing(t){return ie.isFrontFacing(this.a,this.b,this.c,t)}intersectsBox(t){return t.intersectsTriangle(this)}closestPointToPoint(t,e){let n=this.a,i=this.b,s=this.c,a,o;Zn.subVectors(i,n),Jn.subVectors(s,n),gr.subVectors(t,n);let c=Zn.dot(gr),l=Jn.dot(gr);if(c<=0&&l<=0)return e.copy(n);xr.subVectors(t,i);let h=Zn.dot(xr),f=Jn.dot(xr);if(h>=0&&f<=h)return e.copy(i);let u=c*f-h*l;if(u<=0&&c>=0&&h<=0)return a=c/(c-h),e.copy(n).addScaledVector(Zn,a);_r.subVectors(t,s);let m=Zn.dot(_r),x=Jn.dot(_r);if(x>=0&&m<=x)return e.copy(s);let p=m*l-c*x;if(p<=0&&l>=0&&x<=0)return o=l/(l-x),e.copy(n).addScaledVector(Jn,o);let d=h*x-m*f;if(d<=0&&f-h>=0&&m-x>=0)return va.subVectors(s,i),o=(f-h)/(f-h+(m-x)),e.copy(i).addScaledVector(va,o);let g=1/(d+p+u);return a=p*g,o=u*g,e.copy(n).addScaledVector(Zn,a).addScaledVector(Jn,o)}equals(t){return t.a.equals(this.a)&&t.b.equals(this.b)&&t.c.equals(this.c)}},Nl=0,fi=class extends mn{constructor(){super(),this.isMaterial=!0,Object.defineProperty(this,"id",{value:Nl++}),this.uuid=Gi(),this.name="",this.type="Material",this.blending=ri,this.side=Ue,this.vertexColors=!1,this.opacity=1,this.transparent=!1,this.blendSrc=qa,this.blendDst=Xa,this.blendEquation=ni,this.blendSrcAlpha=null,this.blendDstAlpha=null,this.blendEquationAlpha=null,this.depthFunc=Er,this.depthTest=!0,this.depthWrite=!0,this.stencilWriteMask=255,this.stencilFunc=Sl,this.stencilRef=0,this.stencilFuncMask=255,this.stencilFail=er,this.stencilZFail=er,this.stencilZPass=er,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(t){this._alphaTest>0!=t>0&&this.version++,this._alphaTest=t}onBuild(){}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(t){if(t!==void 0)for(let e in t){let n=t[e];if(n===void 0){console.warn("THREE.Material: '"+e+"' parameter is undefined.");continue}let i=this[e];if(i===void 0){console.warn("THREE."+this.type+": '"+e+"' is not a property of this material.");continue}i&&i.isColor?i.set(n):i&&i.isVector3&&n&&n.isVector3?i.copy(n):this[e]=n}}toJSON(t){let e=t===void 0||typeof t=="string";e&&(t={textures:{},images:{}});let n={metadata:{version:4.5,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&&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(t).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(n.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(t).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(n.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(t).uuid,n.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),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(t).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(n.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(t).uuid),this.map&&this.map.isTexture&&(n.map=this.map.toJSON(t).uuid),this.matcap&&this.matcap.isTexture&&(n.matcap=this.matcap.toJSON(t).uuid),this.alphaMap&&this.alphaMap.isTexture&&(n.alphaMap=this.alphaMap.toJSON(t).uuid),this.lightMap&&this.lightMap.isTexture&&(n.lightMap=this.lightMap.toJSON(t).uuid,n.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(n.aoMap=this.aoMap.toJSON(t).uuid,n.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(n.bumpMap=this.bumpMap.toJSON(t).uuid,n.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(n.normalMap=this.normalMap.toJSON(t).uuid,n.normalMapType=this.normalMapType,n.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(n.displacementMap=this.displacementMap.toJSON(t).uuid,n.displacementScale=this.displacementScale,n.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(n.roughnessMap=this.roughnessMap.toJSON(t).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(n.metalnessMap=this.metalnessMap.toJSON(t).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(n.emissiveMap=this.emissiveMap.toJSON(t).uuid),this.specularMap&&this.specularMap.isTexture&&(n.specularMap=this.specularMap.toJSON(t).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(n.specularIntensityMap=this.specularIntensityMap.toJSON(t).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(n.specularColorMap=this.specularColorMap.toJSON(t).uuid),this.envMap&&this.envMap.isTexture&&(n.envMap=this.envMap.toJSON(t).uuid,this.combine!==void 0&&(n.combine=this.combine)),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(t).uuid),this.transmission!==void 0&&(n.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(n.transmissionMap=this.transmissionMap.toJSON(t).uuid),this.thickness!==void 0&&(n.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(n.thicknessMap=this.thicknessMap.toJSON(t).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!==ri&&(n.blending=this.blending),this.side!==Ue&&(n.side=this.side),this.vertexColors&&(n.vertexColors=!0),this.opacity<1&&(n.opacity=this.opacity),this.transparent===!0&&(n.transparent=this.transparent),n.depthFunc=this.depthFunc,n.depthTest=this.depthTest,n.depthWrite=this.depthWrite,n.colorWrite=this.colorWrite,n.stencilWrite=this.stencilWrite,n.stencilWriteMask=this.stencilWriteMask,n.stencilFunc=this.stencilFunc,n.stencilRef=this.stencilRef,n.stencilFuncMask=this.stencilFuncMask,n.stencilFail=this.stencilFail,n.stencilZFail=this.stencilZFail,n.stencilZPass=this.stencilZPass,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.alphaToCoverage===!0&&(n.alphaToCoverage=this.alphaToCoverage),this.premultipliedAlpha===!0&&(n.premultipliedAlpha=this.premultipliedAlpha),this.forceSinglePass===!0&&(n.forceSinglePass=this.forceSinglePass),this.wireframe===!0&&(n.wireframe=this.wireframe),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=this.flatShading),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 i(s){let a=[];for(let o in s){let c=s[o];delete c.metadata,a.push(c)}return a}if(e){let s=i(t.textures),a=i(t.images);s.length>0&&(n.textures=s),a.length>0&&(n.images=a)}return n}clone(){return new this.constructor().copy(this)}copy(t){this.name=t.name,this.blending=t.blending,this.side=t.side,this.vertexColors=t.vertexColors,this.opacity=t.opacity,this.transparent=t.transparent,this.blendSrc=t.blendSrc,this.blendDst=t.blendDst,this.blendEquation=t.blendEquation,this.blendSrcAlpha=t.blendSrcAlpha,this.blendDstAlpha=t.blendDstAlpha,this.blendEquationAlpha=t.blendEquationAlpha,this.depthFunc=t.depthFunc,this.depthTest=t.depthTest,this.depthWrite=t.depthWrite,this.stencilWriteMask=t.stencilWriteMask,this.stencilFunc=t.stencilFunc,this.stencilRef=t.stencilRef,this.stencilFuncMask=t.stencilFuncMask,this.stencilFail=t.stencilFail,this.stencilZFail=t.stencilZFail,this.stencilZPass=t.stencilZPass,this.stencilWrite=t.stencilWrite;let e=t.clippingPlanes,n=null;if(e!==null){let i=e.length;n=new Array(i);for(let s=0;s!==i;++s)n[s]=e[s].clone()}return this.clippingPlanes=n,this.clipIntersection=t.clipIntersection,this.clipShadows=t.clipShadows,this.shadowSide=t.shadowSide,this.colorWrite=t.colorWrite,this.precision=t.precision,this.polygonOffset=t.polygonOffset,this.polygonOffsetFactor=t.polygonOffsetFactor,this.polygonOffsetUnits=t.polygonOffsetUnits,this.dithering=t.dithering,this.alphaTest=t.alphaTest,this.alphaToCoverage=t.alphaToCoverage,this.premultipliedAlpha=t.premultipliedAlpha,this.forceSinglePass=t.forceSinglePass,this.visible=t.visible,this.toneMapped=t.toneMapped,this.userData=JSON.parse(JSON.stringify(t.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(t){t===!0&&this.version++}},Ss=class extends fi{constructor(t){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new Bt(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.combine=Ya,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(t)}copy(t){return super.copy(t),this.color.copy(t.color),this.map=t.map,this.lightMap=t.lightMap,this.lightMapIntensity=t.lightMapIntensity,this.aoMap=t.aoMap,this.aoMapIntensity=t.aoMapIntensity,this.specularMap=t.specularMap,this.alphaMap=t.alphaMap,this.envMap=t.envMap,this.combine=t.combine,this.reflectivity=t.reflectivity,this.refractionRatio=t.refractionRatio,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this.wireframeLinecap=t.wireframeLinecap,this.wireframeLinejoin=t.wireframeLinejoin,this.fog=t.fog,this}},Ht=new R,ss=new At,Yt=class{constructor(t,e,n=!1){if(Array.isArray(t))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,this.name="",this.array=t,this.itemSize=e,this.count=t!==void 0?t.length/e:0,this.normalized=n,this.usage=ca,this.updateRange={offset:0,count:-1},this.version=0}onUploadCallback(){}set needsUpdate(t){t===!0&&this.version++}setUsage(t){return this.usage=t,this}copy(t){return this.name=t.name,this.array=new t.array.constructor(t.array),this.itemSize=t.itemSize,this.count=t.count,this.normalized=t.normalized,this.usage=t.usage,this}copyAt(t,e,n){t*=this.itemSize,n*=e.itemSize;for(let i=0,s=this.itemSize;i<s;i++)this.array[t+i]=e.array[n+i];return this}copyArray(t){return this.array.set(t),this}applyMatrix3(t){if(this.itemSize===2)for(let e=0,n=this.count;e<n;e++)ss.fromBufferAttribute(this,e),ss.applyMatrix3(t),this.setXY(e,ss.x,ss.y);else if(this.itemSize===3)for(let e=0,n=this.count;e<n;e++)Ht.fromBufferAttribute(this,e),Ht.applyMatrix3(t),this.setXYZ(e,Ht.x,Ht.y,Ht.z);return this}applyMatrix4(t){for(let e=0,n=this.count;e<n;e++)Ht.fromBufferAttribute(this,e),Ht.applyMatrix4(t),this.setXYZ(e,Ht.x,Ht.y,Ht.z);return this}applyNormalMatrix(t){for(let e=0,n=this.count;e<n;e++)Ht.fromBufferAttribute(this,e),Ht.applyNormalMatrix(t),this.setXYZ(e,Ht.x,Ht.y,Ht.z);return this}transformDirection(t){for(let e=0,n=this.count;e<n;e++)Ht.fromBufferAttribute(this,e),Ht.transformDirection(t),this.setXYZ(e,Ht.x,Ht.y,Ht.z);return this}set(t,e=0){return this.array.set(t,e),this}getX(t){let e=this.array[t*this.itemSize];return this.normalized&&(e=Ji(e,this.array)),e}setX(t,e){return this.normalized&&(e=Me(e,this.array)),this.array[t*this.itemSize]=e,this}getY(t){let e=this.array[t*this.itemSize+1];return this.normalized&&(e=Ji(e,this.array)),e}setY(t,e){return this.normalized&&(e=Me(e,this.array)),this.array[t*this.itemSize+1]=e,this}getZ(t){let e=this.array[t*this.itemSize+2];return this.normalized&&(e=Ji(e,this.array)),e}setZ(t,e){return this.normalized&&(e=Me(e,this.array)),this.array[t*this.itemSize+2]=e,this}getW(t){let e=this.array[t*this.itemSize+3];return this.normalized&&(e=Ji(e,this.array)),e}setW(t,e){return this.normalized&&(e=Me(e,this.array)),this.array[t*this.itemSize+3]=e,this}setXY(t,e,n){return t*=this.itemSize,this.normalized&&(e=Me(e,this.array),n=Me(n,this.array)),this.array[t+0]=e,this.array[t+1]=n,this}setXYZ(t,e,n,i){return t*=this.itemSize,this.normalized&&(e=Me(e,this.array),n=Me(n,this.array),i=Me(i,this.array)),this.array[t+0]=e,this.array[t+1]=n,this.array[t+2]=i,this}setXYZW(t,e,n,i,s){return t*=this.itemSize,this.normalized&&(e=Me(e,this.array),n=Me(n,this.array),i=Me(i,this.array),s=Me(s,this.array)),this.array[t+0]=e,this.array[t+1]=n,this.array[t+2]=i,this.array[t+3]=s,this}onUpload(t){return this.onUploadCallback=t,this}clone(){return new this.constructor(this.array,this.itemSize).copy(this)}toJSON(){let t={itemSize:this.itemSize,type:this.array.constructor.name,array:Array.from(this.array),normalized:this.normalized};return this.name!==""&&(t.name=this.name),this.usage!==ca&&(t.usage=this.usage),(this.updateRange.offset!==0||this.updateRange.count!==-1)&&(t.updateRange=this.updateRange),t}copyColorsArray(){console.error("THREE.BufferAttribute: copyColorsArray() was removed in r144.")}copyVector2sArray(){console.error("THREE.BufferAttribute: copyVector2sArray() was removed in r144.")}copyVector3sArray(){console.error("THREE.BufferAttribute: copyVector3sArray() was removed in r144.")}copyVector4sArray(){console.error("THREE.BufferAttribute: copyVector4sArray() was removed in r144.")}};var Ts=class extends Yt{constructor(t,e,n){super(new Uint16Array(t),e,n)}};var As=class extends Yt{constructor(t,e,n){super(new Uint32Array(t),e,n)}};var sn=class extends Yt{constructor(t,e,n){super(new Float32Array(t),e,n)}};var Fl=0,Pe=new zt,yr=new pe,$n=new R,we=new fe,Ri=new fe,Qt=new R,ke=class extends mn{constructor(){super(),this.isBufferGeometry=!0,Object.defineProperty(this,"id",{value:Fl++}),this.uuid=Gi(),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(t){return Array.isArray(t)?this.index=new($a(t)?As:Ts)(t,1):this.index=t,this}getAttribute(t){return this.attributes[t]}setAttribute(t,e){return this.attributes[t]=e,this}deleteAttribute(t){return delete this.attributes[t],this}hasAttribute(t){return this.attributes[t]!==void 0}addGroup(t,e,n=0){this.groups.push({start:t,count:e,materialIndex:n})}clearGroups(){this.groups=[]}setDrawRange(t,e){this.drawRange.start=t,this.drawRange.count=e}applyMatrix4(t){let e=this.attributes.position;e!==void 0&&(e.applyMatrix4(t),e.needsUpdate=!0);let n=this.attributes.normal;if(n!==void 0){let s=new le().getNormalMatrix(t);n.applyNormalMatrix(s),n.needsUpdate=!0}let i=this.attributes.tangent;return i!==void 0&&(i.transformDirection(t),i.needsUpdate=!0),this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this}applyQuaternion(t){return Pe.makeRotationFromQuaternion(t),this.applyMatrix4(Pe),this}rotateX(t){return Pe.makeRotationX(t),this.applyMatrix4(Pe),this}rotateY(t){return Pe.makeRotationY(t),this.applyMatrix4(Pe),this}rotateZ(t){return Pe.makeRotationZ(t),this.applyMatrix4(Pe),this}translate(t,e,n){return Pe.makeTranslation(t,e,n),this.applyMatrix4(Pe),this}scale(t,e,n){return Pe.makeScale(t,e,n),this.applyMatrix4(Pe),this}lookAt(t){return yr.lookAt(t),yr.updateMatrix(),this.applyMatrix4(yr.matrix),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter($n).negate(),this.translate($n.x,$n.y,$n.z),this}setFromPoints(t){let e=[];for(let n=0,i=t.length;n<i;n++){let s=t[n];e.push(s.x,s.y,s.z||0)}return this.setAttribute("position",new sn(e,3)),this}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new fe);let t=this.attributes.position,e=this.morphAttributes.position;if(t&&t.isGLBufferAttribute){console.error('THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box. Alternatively set "mesh.frustumCulled" to "false".',this),this.boundingBox.set(new R(-1/0,-1/0,-1/0),new R(1/0,1/0,1/0));return}if(t!==void 0){if(this.boundingBox.setFromBufferAttribute(t),e)for(let n=0,i=e.length;n<i;n++){let s=e[n];we.setFromBufferAttribute(s),this.morphTargetsRelative?(Qt.addVectors(this.boundingBox.min,we.min),this.boundingBox.expandByPoint(Qt),Qt.addVectors(this.boundingBox.max,we.max),this.boundingBox.expandByPoint(Qt)):(this.boundingBox.expandByPoint(we.min),this.boundingBox.expandByPoint(we.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 Fn);let t=this.attributes.position,e=this.morphAttributes.position;if(t&&t.isGLBufferAttribute){console.error('THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere. Alternatively set "mesh.frustumCulled" to "false".',this),this.boundingSphere.set(new R,1/0);return}if(t){let n=this.boundingSphere.center;if(we.setFromBufferAttribute(t),e)for(let s=0,a=e.length;s<a;s++){let o=e[s];Ri.setFromBufferAttribute(o),this.morphTargetsRelative?(Qt.addVectors(we.min,Ri.min),we.expandByPoint(Qt),Qt.addVectors(we.max,Ri.max),we.expandByPoint(Qt)):(we.expandByPoint(Ri.min),we.expandByPoint(Ri.max))}we.getCenter(n);let i=0;for(let s=0,a=t.count;s<a;s++)Qt.fromBufferAttribute(t,s),i=Math.max(i,n.distanceToSquared(Qt));if(e)for(let s=0,a=e.length;s<a;s++){let o=e[s],c=this.morphTargetsRelative;for(let l=0,h=o.count;l<h;l++)Qt.fromBufferAttribute(o,l),c&&($n.fromBufferAttribute(t,l),Qt.add($n)),i=Math.max(i,n.distanceToSquared(Qt))}this.boundingSphere.radius=Math.sqrt(i),isNaN(this.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this)}}computeTangents(){let t=this.index,e=this.attributes;if(t===null||e.position===void 0||e.normal===void 0||e.uv===void 0){console.error("THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)");return}let n=t.array,i=e.position.array,s=e.normal.array,a=e.uv.array,o=i.length/3;this.hasAttribute("tangent")===!1&&this.setAttribute("tangent",new Yt(new Float32Array(4*o),4));let c=this.getAttribute("tangent").array,l=[],h=[];for(let P=0;P<o;P++)l[P]=new R,h[P]=new R;let f=new R,u=new R,m=new R,x=new At,p=new At,d=new At,g=new R,M=new R;function _(P,O,B){f.fromArray(i,P*3),u.fromArray(i,O*3),m.fromArray(i,B*3),x.fromArray(a,P*2),p.fromArray(a,O*2),d.fromArray(a,B*2),u.sub(f),m.sub(f),p.sub(x),d.sub(x);let D=1/(p.x*d.y-d.x*p.y);isFinite(D)&&(g.copy(u).multiplyScalar(d.y).addScaledVector(m,-p.y).multiplyScalar(D),M.copy(m).multiplyScalar(p.x).addScaledVector(u,-d.x).multiplyScalar(D),l[P].add(g),l[O].add(g),l[B].add(g),h[P].add(M),h[O].add(M),h[B].add(M))}let v=this.groups;v.length===0&&(v=[{start:0,count:n.length}]);for(let P=0,O=v.length;P<O;++P){let B=v[P],D=B.start,I=B.count;for(let k=D,Y=D+I;k<Y;k+=3)_(n[k+0],n[k+1],n[k+2])}let b=new R,A=new R,C=new R,y=new R;function S(P){C.fromArray(s,P*3),y.copy(C);let O=l[P];b.copy(O),b.sub(C.multiplyScalar(C.dot(O))).normalize(),A.crossVectors(y,O);let D=A.dot(h[P])<0?-1:1;c[P*4]=b.x,c[P*4+1]=b.y,c[P*4+2]=b.z,c[P*4+3]=D}for(let P=0,O=v.length;P<O;++P){let B=v[P],D=B.start,I=B.count;for(let k=D,Y=D+I;k<Y;k+=3)S(n[k+0]),S(n[k+1]),S(n[k+2])}}computeVertexNormals(){let t=this.index,e=this.getAttribute("position");if(e!==void 0){let n=this.getAttribute("normal");if(n===void 0)n=new Yt(new Float32Array(e.count*3),3),this.setAttribute("normal",n);else for(let u=0,m=n.count;u<m;u++)n.setXYZ(u,0,0,0);let i=new R,s=new R,a=new R,o=new R,c=new R,l=new R,h=new R,f=new R;if(t)for(let u=0,m=t.count;u<m;u+=3){let x=t.getX(u+0),p=t.getX(u+1),d=t.getX(u+2);i.fromBufferAttribute(e,x),s.fromBufferAttribute(e,p),a.fromBufferAttribute(e,d),h.subVectors(a,s),f.subVectors(i,s),h.cross(f),o.fromBufferAttribute(n,x),c.fromBufferAttribute(n,p),l.fromBufferAttribute(n,d),o.add(h),c.add(h),l.add(h),n.setXYZ(x,o.x,o.y,o.z),n.setXYZ(p,c.x,c.y,c.z),n.setXYZ(d,l.x,l.y,l.z)}else for(let u=0,m=e.count;u<m;u+=3)i.fromBufferAttribute(e,u+0),s.fromBufferAttribute(e,u+1),a.fromBufferAttribute(e,u+2),h.subVectors(a,s),f.subVectors(i,s),h.cross(f),n.setXYZ(u+0,h.x,h.y,h.z),n.setXYZ(u+1,h.x,h.y,h.z),n.setXYZ(u+2,h.x,h.y,h.z);this.normalizeNormals(),n.needsUpdate=!0}}merge(){return console.error("THREE.BufferGeometry.merge() has been removed. Use THREE.BufferGeometryUtils.mergeBufferGeometries() instead."),this}normalizeNormals(){let t=this.attributes.normal;for(let e=0,n=t.count;e<n;e++)Qt.fromBufferAttribute(t,e),Qt.normalize(),t.setXYZ(e,Qt.x,Qt.y,Qt.z)}toNonIndexed(){function t(o,c){let l=o.array,h=o.itemSize,f=o.normalized,u=new l.constructor(c.length*h),m=0,x=0;for(let p=0,d=c.length;p<d;p++){o.isInterleavedBufferAttribute?m=c[p]*o.data.stride+o.offset:m=c[p]*h;for(let g=0;g<h;g++)u[x++]=l[m++]}return new Yt(u,h,f)}if(this.index===null)return console.warn("THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed."),this;let e=new ke,n=this.index.array,i=this.attributes;for(let o in i){let c=i[o],l=t(c,n);e.setAttribute(o,l)}let s=this.morphAttributes;for(let o in s){let c=[],l=s[o];for(let h=0,f=l.length;h<f;h++){let u=l[h],m=t(u,n);c.push(m)}e.morphAttributes[o]=c}e.morphTargetsRelative=this.morphTargetsRelative;let a=this.groups;for(let o=0,c=a.length;o<c;o++){let l=a[o];e.addGroup(l.start,l.count,l.materialIndex)}return e}toJSON(){let t={metadata:{version:4.5,type:"BufferGeometry",generator:"BufferGeometry.toJSON"}};if(t.uuid=this.uuid,t.type=this.type,this.name!==""&&(t.name=this.name),Object.keys(this.userData).length>0&&(t.userData=this.userData),this.parameters!==void 0){let c=this.parameters;for(let l in c)c[l]!==void 0&&(t[l]=c[l]);return t}t.data={attributes:{}};let e=this.index;e!==null&&(t.data.index={type:e.array.constructor.name,array:Array.prototype.slice.call(e.array)});let n=this.attributes;for(let c in n){let l=n[c];t.data.attributes[c]=l.toJSON(t.data)}let i={},s=!1;for(let c in this.morphAttributes){let l=this.morphAttributes[c],h=[];for(let f=0,u=l.length;f<u;f++){let m=l[f];h.push(m.toJSON(t.data))}h.length>0&&(i[c]=h,s=!0)}s&&(t.data.morphAttributes=i,t.data.morphTargetsRelative=this.morphTargetsRelative);let a=this.groups;a.length>0&&(t.data.groups=JSON.parse(JSON.stringify(a)));let o=this.boundingSphere;return o!==null&&(t.data.boundingSphere={center:o.center.toArray(),radius:o.radius}),t}clone(){return new this.constructor().copy(this)}copy(t){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;let e={};this.name=t.name;let n=t.index;n!==null&&this.setIndex(n.clone(e));let i=t.attributes;for(let l in i){let h=i[l];this.setAttribute(l,h.clone(e))}let s=t.morphAttributes;for(let l in s){let h=[],f=s[l];for(let u=0,m=f.length;u<m;u++)h.push(f[u].clone(e));this.morphAttributes[l]=h}this.morphTargetsRelative=t.morphTargetsRelative;let a=t.groups;for(let l=0,h=a.length;l<h;l++){let f=a[l];this.addGroup(f.start,f.count,f.materialIndex)}let o=t.boundingBox;o!==null&&(this.boundingBox=o.clone());let c=t.boundingSphere;return c!==null&&(this.boundingSphere=c.clone()),this.drawRange.start=t.drawRange.start,this.drawRange.count=t.drawRange.count,this.userData=t.userData,t.parameters!==void 0&&(this.parameters=Object.assign({},t.parameters)),this}dispose(){this.dispatchEvent({type:"dispose"})}},Ma=new zt,Kn=new Fr,vr=new Fn,Li=new R,Ii=new R,Di=new R,Mr=new R,rs=new R,os=new At,as=new At,cs=new At,br=new R,ls=new R,qe=class extends pe{constructor(t=new ke,e=new Ss){super(),this.isMesh=!0,this.type="Mesh",this.geometry=t,this.material=e,this.updateMorphTargets()}copy(t,e){return super.copy(t,e),t.morphTargetInfluences!==void 0&&(this.morphTargetInfluences=t.morphTargetInfluences.slice()),t.morphTargetDictionary!==void 0&&(this.morphTargetDictionary=Object.assign({},t.morphTargetDictionary)),this.material=t.material,this.geometry=t.geometry,this}updateMorphTargets(){let e=this.geometry.morphAttributes,n=Object.keys(e);if(n.length>0){let i=e[n[0]];if(i!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,a=i.length;s<a;s++){let o=i[s].name||String(s);this.morphTargetInfluences.push(0),this.morphTargetDictionary[o]=s}}}}getVertexPosition(t,e){let n=this.geometry,i=n.attributes.position,s=n.morphAttributes.position,a=n.morphTargetsRelative;e.fromBufferAttribute(i,t);let o=this.morphTargetInfluences;if(s&&o){rs.set(0,0,0);for(let c=0,l=s.length;c<l;c++){let h=o[c],f=s[c];h!==0&&(Mr.fromBufferAttribute(f,t),a?rs.addScaledVector(Mr,h):rs.addScaledVector(Mr.sub(e),h))}e.add(rs)}return this.isSkinnedMesh&&this.boneTransform(t,e),e}raycast(t,e){let n=this.geometry,i=this.material,s=this.matrixWorld;if(i===void 0||(n.boundingSphere===null&&n.computeBoundingSphere(),vr.copy(n.boundingSphere),vr.applyMatrix4(s),t.ray.intersectsSphere(vr)===!1)||(Ma.copy(s).invert(),Kn.copy(t.ray).applyMatrix4(Ma),n.boundingBox!==null&&Kn.intersectsBox(n.boundingBox)===!1))return;let a,o=n.index,c=n.attributes.position,l=n.attributes.uv,h=n.attributes.uv2,f=n.groups,u=n.drawRange;if(o!==null)if(Array.isArray(i))for(let m=0,x=f.length;m<x;m++){let p=f[m],d=i[p.materialIndex],g=Math.max(p.start,u.start),M=Math.min(o.count,Math.min(p.start+p.count,u.start+u.count));for(let _=g,v=M;_<v;_+=3){let b=o.getX(_),A=o.getX(_+1),C=o.getX(_+2);a=hs(this,d,t,Kn,l,h,b,A,C),a&&(a.faceIndex=Math.floor(_/3),a.face.materialIndex=p.materialIndex,e.push(a))}}else{let m=Math.max(0,u.start),x=Math.min(o.count,u.start+u.count);for(let p=m,d=x;p<d;p+=3){let g=o.getX(p),M=o.getX(p+1),_=o.getX(p+2);a=hs(this,i,t,Kn,l,h,g,M,_),a&&(a.faceIndex=Math.floor(p/3),e.push(a))}}else if(c!==void 0)if(Array.isArray(i))for(let m=0,x=f.length;m<x;m++){let p=f[m],d=i[p.materialIndex],g=Math.max(p.start,u.start),M=Math.min(c.count,Math.min(p.start+p.count,u.start+u.count));for(let _=g,v=M;_<v;_+=3){let b=_,A=_+1,C=_+2;a=hs(this,d,t,Kn,l,h,b,A,C),a&&(a.faceIndex=Math.floor(_/3),a.face.materialIndex=p.materialIndex,e.push(a))}}else{let m=Math.max(0,u.start),x=Math.min(c.count,u.start+u.count);for(let p=m,d=x;p<d;p+=3){let g=p,M=p+1,_=p+2;a=hs(this,i,t,Kn,l,h,g,M,_),a&&(a.faceIndex=Math.floor(p/3),e.push(a))}}}};function zl(r,t,e,n,i,s,a,o){let c;if(t.side===he?c=n.intersectTriangle(a,s,i,!0,o):c=n.intersectTriangle(i,s,a,t.side===Ue,o),c===null)return null;ls.copy(o),ls.applyMatrix4(r.matrixWorld);let l=e.ray.origin.distanceTo(ls);return l<e.near||l>e.far?null:{distance:l,point:ls.clone(),object:r}}function hs(r,t,e,n,i,s,a,o,c){r.getVertexPosition(a,Li),r.getVertexPosition(o,Ii),r.getVertexPosition(c,Di);let l=zl(r,t,e,n,Li,Ii,Di,br);if(l){i&&(os.fromBufferAttribute(i,a),as.fromBufferAttribute(i,o),cs.fromBufferAttribute(i,c),l.uv=ie.getUV(br,Li,Ii,Di,os,as,cs,new At)),s&&(os.fromBufferAttribute(s,a),as.fromBufferAttribute(s,o),cs.fromBufferAttribute(s,c),l.uv2=ie.getUV(br,Li,Ii,Di,os,as,cs,new At));let h={a,b:o,c,normal:new R,materialIndex:0};ie.getNormal(Li,Ii,Di,h.normal),l.face=h}return l}var zn=class extends ke{constructor(t=1,e=1,n=1,i=1,s=1,a=1){super(),this.type="BoxGeometry",this.parameters={width:t,height:e,depth:n,widthSegments:i,heightSegments:s,depthSegments:a};let o=this;i=Math.floor(i),s=Math.floor(s),a=Math.floor(a);let c=[],l=[],h=[],f=[],u=0,m=0;x("z","y","x",-1,-1,n,e,t,a,s,0),x("z","y","x",1,-1,n,e,-t,a,s,1),x("x","z","y",1,1,t,n,e,i,a,2),x("x","z","y",1,-1,t,n,-e,i,a,3),x("x","y","z",1,-1,t,e,n,i,s,4),x("x","y","z",-1,-1,t,e,-n,i,s,5),this.setIndex(c),this.setAttribute("position",new sn(l,3)),this.setAttribute("normal",new sn(h,3)),this.setAttribute("uv",new sn(f,2));function x(p,d,g,M,_,v,b,A,C,y,S){let P=v/C,O=b/y,B=v/2,D=b/2,I=A/2,k=C+1,Y=y+1,Z=0,H=0,$=new R;for(let J=0;J<Y;J++){let dt=J*O-D;for(let z=0;z<k;z++){let K=z*P-B;$[p]=K*M,$[d]=dt*_,$[g]=I,l.push($.x,$.y,$.z),$[p]=0,$[d]=0,$[g]=A>0?1:-1,h.push($.x,$.y,$.z),f.push(z/C),f.push(1-J/y),Z+=1}}for(let J=0;J<y;J++)for(let dt=0;dt<C;dt++){let z=u+dt+k*J,K=u+dt+k*(J+1),nt=u+(dt+1)+k*(J+1),it=u+(dt+1)+k*J;c.push(z,K,it),c.push(K,nt,it),H+=6}o.addGroup(m,H,S),m+=H,u+=Z}}static fromJSON(t){return new zn(t.width,t.height,t.depth,t.widthSegments,t.heightSegments,t.depthSegments)}};function di(r){let t={};for(let e in r){t[e]={};for(let n in r[e]){let i=r[e][n];i&&(i.isColor||i.isMatrix3||i.isMatrix4||i.isVector2||i.isVector3||i.isVector4||i.isTexture||i.isQuaternion)?t[e][n]=i.clone():Array.isArray(i)?t[e][n]=i.slice():t[e][n]=i}}return t}function ae(r){let t={};for(let e=0;e<r.length;e++){let n=di(r[e]);for(let i in n)t[i]=n[i]}return t}function Ol(r){let t=[];for(let e=0;e<r.length;e++)t.push(r[e].clone());return t}function ja(r){return r.getRenderTarget()===null&&r.outputEncoding===Ot?Ge:Ui}var Bl={clone:di,merge:ae},Ul=\`void main() {
|
||
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
|
||
}\`,kl=\`void main() {
|
||
gl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );
|
||
}\`,on=class extends fi{constructor(t){super(),this.isShaderMaterial=!0,this.type="ShaderMaterial",this.defines={},this.uniforms={},this.uniformsGroups=[],this.vertexShader=Ul,this.fragmentShader=kl,this.linewidth=1,this.wireframe=!1,this.wireframeLinewidth=1,this.fog=!1,this.lights=!1,this.clipping=!1,this.extensions={derivatives:!1,fragDepth:!1,drawBuffers:!1,shaderTextureLOD:!1},this.defaultAttributeValues={color:[1,1,1],uv:[0,0],uv2:[0,0]},this.index0AttributeName=void 0,this.uniformsNeedUpdate=!1,this.glslVersion=null,t!==void 0&&this.setValues(t)}copy(t){return super.copy(t),this.fragmentShader=t.fragmentShader,this.vertexShader=t.vertexShader,this.uniforms=di(t.uniforms),this.uniformsGroups=Ol(t.uniformsGroups),this.defines=Object.assign({},t.defines),this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this.fog=t.fog,this.lights=t.lights,this.clipping=t.clipping,this.extensions=Object.assign({},t.extensions),this.glslVersion=t.glslVersion,this}toJSON(t){let e=super.toJSON(t);e.glslVersion=this.glslVersion,e.uniforms={};for(let i in this.uniforms){let a=this.uniforms[i].value;a&&a.isTexture?e.uniforms[i]={type:"t",value:a.toJSON(t).uuid}:a&&a.isColor?e.uniforms[i]={type:"c",value:a.getHex()}:a&&a.isVector2?e.uniforms[i]={type:"v2",value:a.toArray()}:a&&a.isVector3?e.uniforms[i]={type:"v3",value:a.toArray()}:a&&a.isVector4?e.uniforms[i]={type:"v4",value:a.toArray()}:a&&a.isMatrix3?e.uniforms[i]={type:"m3",value:a.toArray()}:a&&a.isMatrix4?e.uniforms[i]={type:"m4",value:a.toArray()}:e.uniforms[i]={value:a}}Object.keys(this.defines).length>0&&(e.defines=this.defines),e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader;let n={};for(let i in this.extensions)this.extensions[i]===!0&&(n[i]=!0);return Object.keys(n).length>0&&(e.extensions=n),e}},Es=class extends pe{constructor(){super(),this.isCamera=!0,this.type="Camera",this.matrixWorldInverse=new zt,this.projectionMatrix=new zt,this.projectionMatrixInverse=new zt}copy(t,e){return super.copy(t,e),this.matrixWorldInverse.copy(t.matrixWorldInverse),this.projectionMatrix.copy(t.projectionMatrix),this.projectionMatrixInverse.copy(t.projectionMatrixInverse),this}getWorldDirection(t){this.updateWorldMatrix(!0,!1);let e=this.matrixWorld.elements;return t.set(-e[8],-e[9],-e[10]).normalize()}updateMatrixWorld(t){super.updateMatrixWorld(t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(t,e){super.updateWorldMatrix(t,e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return new this.constructor().copy(this)}},Se=class extends Es{constructor(t=50,e=1,n=.1,i=2e3){super(),this.isPerspectiveCamera=!0,this.type="PerspectiveCamera",this.fov=t,this.zoom=1,this.near=n,this.far=i,this.focus=10,this.aspect=e,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(t,e){return super.copy(t,e),this.fov=t.fov,this.zoom=t.zoom,this.near=t.near,this.far=t.far,this.focus=t.focus,this.aspect=t.aspect,this.view=t.view===null?null:Object.assign({},t.view),this.filmGauge=t.filmGauge,this.filmOffset=t.filmOffset,this}setFocalLength(t){let e=.5*this.getFilmHeight()/t;this.fov=ha*2*Math.atan(e),this.updateProjectionMatrix()}getFocalLength(){let t=Math.tan(nr*.5*this.fov);return .5*this.getFilmHeight()/t}getEffectiveFOV(){return ha*2*Math.atan(Math.tan(nr*.5*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}setViewOffset(t,e,n,i,s,a){this.aspect=t/e,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=t,this.view.fullHeight=e,this.view.offsetX=n,this.view.offsetY=i,this.view.width=s,this.view.height=a,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){let t=this.near,e=t*Math.tan(nr*.5*this.fov)/this.zoom,n=2*e,i=this.aspect*n,s=-.5*i,a=this.view;if(this.view!==null&&this.view.enabled){let c=a.fullWidth,l=a.fullHeight;s+=a.offsetX*i/c,e-=a.offsetY*n/l,i*=a.width/c,n*=a.height/l}let o=this.filmOffset;o!==0&&(s+=t*o/this.getFilmWidth()),this.projectionMatrix.makePerspective(s,s+i,e,e-n,t,this.far),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(t){let e=super.toJSON(t);return e.object.fov=this.fov,e.object.zoom=this.zoom,e.object.near=this.near,e.object.far=this.far,e.object.focus=this.focus,e.object.aspect=this.aspect,this.view!==null&&(e.object.view=Object.assign({},this.view)),e.object.filmGauge=this.filmGauge,e.object.filmOffset=this.filmOffset,e}},jn=-90,Qn=1,zr=class extends pe{constructor(t,e,n){super(),this.type="CubeCamera",this.renderTarget=n;let i=new Se(jn,Qn,t,e);i.layers=this.layers,i.up.set(0,1,0),i.lookAt(1,0,0),this.add(i);let s=new Se(jn,Qn,t,e);s.layers=this.layers,s.up.set(0,1,0),s.lookAt(-1,0,0),this.add(s);let a=new Se(jn,Qn,t,e);a.layers=this.layers,a.up.set(0,0,-1),a.lookAt(0,1,0),this.add(a);let o=new Se(jn,Qn,t,e);o.layers=this.layers,o.up.set(0,0,1),o.lookAt(0,-1,0),this.add(o);let c=new Se(jn,Qn,t,e);c.layers=this.layers,c.up.set(0,1,0),c.lookAt(0,0,1),this.add(c);let l=new Se(jn,Qn,t,e);l.layers=this.layers,l.up.set(0,1,0),l.lookAt(0,0,-1),this.add(l)}update(t,e){this.parent===null&&this.updateMatrixWorld();let n=this.renderTarget,[i,s,a,o,c,l]=this.children,h=t.getRenderTarget(),f=t.toneMapping,u=t.xr.enabled;t.toneMapping=nn,t.xr.enabled=!1;let m=n.texture.generateMipmaps;n.texture.generateMipmaps=!1,t.setRenderTarget(n,0),t.render(e,i),t.setRenderTarget(n,1),t.render(e,s),t.setRenderTarget(n,2),t.render(e,a),t.setRenderTarget(n,3),t.render(e,o),t.setRenderTarget(n,4),t.render(e,c),n.texture.generateMipmaps=m,t.setRenderTarget(n,5),t.render(e,l),t.setRenderTarget(h),t.toneMapping=f,t.xr.enabled=u,n.texture.needsPMREMUpdate=!0}},Cs=class extends ue{constructor(t,e,n,i,s,a,o,c,l,h){t=t!==void 0?t:[],e=e!==void 0?e:ci,super(t,e,n,i,s,a,o,c,l,h),this.isCubeTexture=!0,this.flipY=!1}get images(){return this.image}set images(t){this.image=t}},Or=class extends rn{constructor(t=1,e={}){super(t,t,e),this.isWebGLCubeRenderTarget=!0;let n={width:t,height:t,depth:1},i=[n,n,n,n,n,n];this.texture=new Cs(i,e.mapping,e.wrapS,e.wrapT,e.magFilter,e.minFilter,e.format,e.type,e.anisotropy,e.encoding),this.texture.isRenderTargetTexture=!0,this.texture.generateMipmaps=e.generateMipmaps!==void 0?e.generateMipmaps:!1,this.texture.minFilter=e.minFilter!==void 0?e.minFilter:Re}fromEquirectangularTexture(t,e){this.texture.type=e.type,this.texture.encoding=e.encoding,this.texture.generateMipmaps=e.generateMipmaps,this.texture.minFilter=e.minFilter,this.texture.magFilter=e.magFilter;let 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 );
|
||
|
||
}
|
||
\`},i=new zn(5,5,5),s=new on({name:"CubemapFromEquirect",uniforms:di(n.uniforms),vertexShader:n.vertexShader,fragmentShader:n.fragmentShader,side:he,blending:pn});s.uniforms.tEquirect.value=e;let a=new qe(i,s),o=e.minFilter;return e.minFilter===Oi&&(e.minFilter=Re),new zr(1,10,this).update(t,a),e.minFilter=o,a.geometry.dispose(),a.material.dispose(),this}clear(t,e,n,i){let s=t.getRenderTarget();for(let a=0;a<6;a++)t.setRenderTarget(this,a),t.clear(e,n,i);t.setRenderTarget(s)}},wr=new R,Vl=new R,Gl=new le,Te=class{constructor(t=new R(1,0,0),e=0){this.isPlane=!0,this.normal=t,this.constant=e}set(t,e){return this.normal.copy(t),this.constant=e,this}setComponents(t,e,n,i){return this.normal.set(t,e,n),this.constant=i,this}setFromNormalAndCoplanarPoint(t,e){return this.normal.copy(t),this.constant=-e.dot(this.normal),this}setFromCoplanarPoints(t,e,n){let i=wr.subVectors(n,e).cross(Vl.subVectors(t,e)).normalize();return this.setFromNormalAndCoplanarPoint(i,t),this}copy(t){return this.normal.copy(t.normal),this.constant=t.constant,this}normalize(){let t=1/this.normal.length();return this.normal.multiplyScalar(t),this.constant*=t,this}negate(){return this.constant*=-1,this.normal.negate(),this}distanceToPoint(t){return this.normal.dot(t)+this.constant}distanceToSphere(t){return this.distanceToPoint(t.center)-t.radius}projectPoint(t,e){return e.copy(this.normal).multiplyScalar(-this.distanceToPoint(t)).add(t)}intersectLine(t,e){let n=t.delta(wr),i=this.normal.dot(n);if(i===0)return this.distanceToPoint(t.start)===0?e.copy(t.start):null;let s=-(t.start.dot(this.normal)+this.constant)/i;return s<0||s>1?null:e.copy(n).multiplyScalar(s).add(t.start)}intersectsLine(t){let e=this.distanceToPoint(t.start),n=this.distanceToPoint(t.end);return e<0&&n>0||n<0&&e>0}intersectsBox(t){return t.intersectsPlane(this)}intersectsSphere(t){return t.intersectsPlane(this)}coplanarPoint(t){return t.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(t,e){let n=e||Gl.getNormalMatrix(t),i=this.coplanarPoint(wr).applyMatrix4(t),s=this.normal.applyMatrix3(n).normalize();return this.constant=-i.dot(s),this}translate(t){return this.constant-=t.dot(this.normal),this}equals(t){return t.normal.equals(this.normal)&&t.constant===this.constant}clone(){return new this.constructor().copy(this)}},ti=new Fn,us=new R,Ps=class{constructor(t=new Te,e=new Te,n=new Te,i=new Te,s=new Te,a=new Te){this.planes=[t,e,n,i,s,a]}set(t,e,n,i,s,a){let o=this.planes;return o[0].copy(t),o[1].copy(e),o[2].copy(n),o[3].copy(i),o[4].copy(s),o[5].copy(a),this}copy(t){let e=this.planes;for(let n=0;n<6;n++)e[n].copy(t.planes[n]);return this}setFromProjectionMatrix(t){let e=this.planes,n=t.elements,i=n[0],s=n[1],a=n[2],o=n[3],c=n[4],l=n[5],h=n[6],f=n[7],u=n[8],m=n[9],x=n[10],p=n[11],d=n[12],g=n[13],M=n[14],_=n[15];return e[0].setComponents(o-i,f-c,p-u,_-d).normalize(),e[1].setComponents(o+i,f+c,p+u,_+d).normalize(),e[2].setComponents(o+s,f+l,p+m,_+g).normalize(),e[3].setComponents(o-s,f-l,p-m,_-g).normalize(),e[4].setComponents(o-a,f-h,p-x,_-M).normalize(),e[5].setComponents(o+a,f+h,p+x,_+M).normalize(),this}intersectsObject(t){let e=t.geometry;return e.boundingSphere===null&&e.computeBoundingSphere(),ti.copy(e.boundingSphere).applyMatrix4(t.matrixWorld),this.intersectsSphere(ti)}intersectsSprite(t){return ti.center.set(0,0,0),ti.radius=.7071067811865476,ti.applyMatrix4(t.matrixWorld),this.intersectsSphere(ti)}intersectsSphere(t){let e=this.planes,n=t.center,i=-t.radius;for(let s=0;s<6;s++)if(e[s].distanceToPoint(n)<i)return!1;return!0}intersectsBox(t){let e=this.planes;for(let n=0;n<6;n++){let i=e[n];if(us.x=i.normal.x>0?t.max.x:t.min.x,us.y=i.normal.y>0?t.max.y:t.min.y,us.z=i.normal.z>0?t.max.z:t.min.z,i.distanceToPoint(us)<0)return!1}return!0}containsPoint(t){let e=this.planes;for(let n=0;n<6;n++)if(e[n].distanceToPoint(t)<0)return!1;return!0}clone(){return new this.constructor().copy(this)}};function Qa(){let r=null,t=!1,e=null,n=null;function i(s,a){e(s,a),n=r.requestAnimationFrame(i)}return{start:function(){t!==!0&&e!==null&&(n=r.requestAnimationFrame(i),t=!0)},stop:function(){r.cancelAnimationFrame(n),t=!1},setAnimationLoop:function(s){e=s},setContext:function(s){r=s}}}function Hl(r,t){let e=t.isWebGL2,n=new WeakMap;function i(l,h){let f=l.array,u=l.usage,m=r.createBuffer();r.bindBuffer(h,m),r.bufferData(h,f,u),l.onUploadCallback();let x;if(f instanceof Float32Array)x=5126;else if(f instanceof Uint16Array)if(l.isFloat16BufferAttribute)if(e)x=5131;else throw new Error("THREE.WebGLAttributes: Usage of Float16BufferAttribute requires WebGL2.");else x=5123;else if(f instanceof Int16Array)x=5122;else if(f instanceof Uint32Array)x=5125;else if(f instanceof Int32Array)x=5124;else if(f instanceof Int8Array)x=5120;else if(f instanceof Uint8Array)x=5121;else if(f instanceof Uint8ClampedArray)x=5121;else throw new Error("THREE.WebGLAttributes: Unsupported buffer data format: "+f);return{buffer:m,type:x,bytesPerElement:f.BYTES_PER_ELEMENT,version:l.version}}function s(l,h,f){let u=h.array,m=h.updateRange;r.bindBuffer(f,l),m.count===-1?r.bufferSubData(f,0,u):(e?r.bufferSubData(f,m.offset*u.BYTES_PER_ELEMENT,u,m.offset,m.count):r.bufferSubData(f,m.offset*u.BYTES_PER_ELEMENT,u.subarray(m.offset,m.offset+m.count)),m.count=-1),h.onUploadCallback()}function a(l){return l.isInterleavedBufferAttribute&&(l=l.data),n.get(l)}function o(l){l.isInterleavedBufferAttribute&&(l=l.data);let h=n.get(l);h&&(r.deleteBuffer(h.buffer),n.delete(l))}function c(l,h){if(l.isGLBufferAttribute){let u=n.get(l);(!u||u.version<l.version)&&n.set(l,{buffer:l.buffer,type:l.type,bytesPerElement:l.elementSize,version:l.version});return}l.isInterleavedBufferAttribute&&(l=l.data);let f=n.get(l);f===void 0?n.set(l,i(l,h)):f.version<l.version&&(s(f.buffer,l,h),f.version=l.version)}return{get:a,remove:o,update:c}}var ki=class extends ke{constructor(t=1,e=1,n=1,i=1){super(),this.type="PlaneGeometry",this.parameters={width:t,height:e,widthSegments:n,heightSegments:i};let s=t/2,a=e/2,o=Math.floor(n),c=Math.floor(i),l=o+1,h=c+1,f=t/o,u=e/c,m=[],x=[],p=[],d=[];for(let g=0;g<h;g++){let M=g*u-a;for(let _=0;_<l;_++){let v=_*f-s;x.push(v,-M,0),p.push(0,0,1),d.push(_/o),d.push(1-g/c)}}for(let g=0;g<c;g++)for(let M=0;M<o;M++){let _=M+l*g,v=M+l*(g+1),b=M+1+l*(g+1),A=M+1+l*g;m.push(_,v,A),m.push(v,b,A)}this.setIndex(m),this.setAttribute("position",new sn(x,3)),this.setAttribute("normal",new sn(p,3)),this.setAttribute("uv",new sn(d,2))}static fromJSON(t){return new ki(t.width,t.height,t.widthSegments,t.heightSegments)}},Wl=\`#ifdef USE_ALPHAMAP
|
||
diffuseColor.a *= texture2D( alphaMap, vUv ).g;
|
||
#endif\`,ql=\`#ifdef USE_ALPHAMAP
|
||
uniform sampler2D alphaMap;
|
||
#endif\`,Xl=\`#ifdef USE_ALPHATEST
|
||
if ( diffuseColor.a < alphaTest ) discard;
|
||
#endif\`,Yl=\`#ifdef USE_ALPHATEST
|
||
uniform float alphaTest;
|
||
#endif\`,Zl=\`#ifdef USE_AOMAP
|
||
float ambientOcclusion = ( texture2D( aoMap, vUv2 ).r - 1.0 ) * aoMapIntensity + 1.0;
|
||
reflectedLight.indirectDiffuse *= ambientOcclusion;
|
||
#if defined( USE_ENVMAP ) && defined( STANDARD )
|
||
float dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );
|
||
reflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.roughness );
|
||
#endif
|
||
#endif\`,Jl=\`#ifdef USE_AOMAP
|
||
uniform sampler2D aoMap;
|
||
uniform float aoMapIntensity;
|
||
#endif\`,$l="vec3 transformed = vec3( position );",Kl=\`vec3 objectNormal = vec3( normal );
|
||
#ifdef USE_TANGENT
|
||
vec3 objectTangent = vec3( tangent.xyz );
|
||
#endif\`,jl=\`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 );
|
||
}
|
||
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 );
|
||
}
|
||
vec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 f0, const in float f90, const in float 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 );
|
||
float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );
|
||
float D = D_GGX( alpha, dotNH );
|
||
return F * ( V * D );
|
||
}
|
||
#ifdef USE_IRIDESCENCE
|
||
vec3 BRDF_GGX_Iridescence( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 f0, const in float f90, const in float iridescence, const in vec3 iridescenceFresnel, const in float 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 = mix( F_Schlick( f0, f90, dotVH ), iridescenceFresnel, iridescence );
|
||
float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );
|
||
float D = D_GGX( alpha, dotNH );
|
||
return F * ( V * D );
|
||
}
|
||
#endif
|
||
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 );
|
||
}
|
||
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 );
|
||
}
|
||
#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\`,Ql=\`#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 R21 = R12;
|
||
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\`,th=\`#ifdef USE_BUMPMAP
|
||
uniform sampler2D bumpMap;
|
||
uniform float bumpScale;
|
||
vec2 dHdxy_fwd() {
|
||
vec2 dSTdx = dFdx( vUv );
|
||
vec2 dSTdy = dFdy( vUv );
|
||
float Hll = bumpScale * texture2D( bumpMap, vUv ).x;
|
||
float dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;
|
||
float dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;
|
||
return vec2( dBx, dBy );
|
||
}
|
||
vec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) {
|
||
vec3 vSigmaX = dFdx( surf_pos.xyz );
|
||
vec3 vSigmaY = 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\`,eh=\`#if NUM_CLIPPING_PLANES > 0
|
||
vec4 plane;
|
||
#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\`,nh=\`#if NUM_CLIPPING_PLANES > 0
|
||
varying vec3 vClipPosition;
|
||
uniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];
|
||
#endif\`,ih=\`#if NUM_CLIPPING_PLANES > 0
|
||
varying vec3 vClipPosition;
|
||
#endif\`,sh=\`#if NUM_CLIPPING_PLANES > 0
|
||
vClipPosition = - mvPosition.xyz;
|
||
#endif\`,rh=\`#if defined( USE_COLOR_ALPHA )
|
||
diffuseColor *= vColor;
|
||
#elif defined( USE_COLOR )
|
||
diffuseColor.rgb *= vColor;
|
||
#endif\`,oh=\`#if defined( USE_COLOR_ALPHA )
|
||
varying vec4 vColor;
|
||
#elif defined( USE_COLOR )
|
||
varying vec3 vColor;
|
||
#endif\`,ah=\`#if defined( USE_COLOR_ALPHA )
|
||
varying vec4 vColor;
|
||
#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )
|
||
varying vec3 vColor;
|
||
#endif\`,ch=\`#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\`,lh=\`#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;
|
||
};
|
||
struct GeometricContext {
|
||
vec3 position;
|
||
vec3 normal;
|
||
vec3 viewDir;
|
||
#ifdef USE_CLEARCOAT
|
||
vec3 clearcoatNormal;
|
||
#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 );
|
||
}\`,hh=\`#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_v0 0.339
|
||
#define cubeUV_m0 - 2.0
|
||
#define cubeUV_r1 0.8
|
||
#define cubeUV_v1 0.276
|
||
#define cubeUV_m1 - 1.0
|
||
#define cubeUV_r4 0.4
|
||
#define cubeUV_v4 0.046
|
||
#define cubeUV_m4 2.0
|
||
#define cubeUV_r5 0.305
|
||
#define cubeUV_v5 0.016
|
||
#define cubeUV_m5 3.0
|
||
#define cubeUV_r6 0.21
|
||
#define cubeUV_v6 0.0038
|
||
#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\`,uh=\`vec3 transformedNormal = objectNormal;
|
||
#ifdef USE_INSTANCING
|
||
mat3 m = mat3( instanceMatrix );
|
||
transformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) );
|
||
transformedNormal = m * transformedNormal;
|
||
#endif
|
||
transformedNormal = normalMatrix * transformedNormal;
|
||
#ifdef FLIP_SIDED
|
||
transformedNormal = - transformedNormal;
|
||
#endif
|
||
#ifdef USE_TANGENT
|
||
vec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz;
|
||
#ifdef FLIP_SIDED
|
||
transformedTangent = - transformedTangent;
|
||
#endif
|
||
#endif\`,fh=\`#ifdef USE_DISPLACEMENTMAP
|
||
uniform sampler2D displacementMap;
|
||
uniform float displacementScale;
|
||
uniform float displacementBias;
|
||
#endif\`,dh=\`#ifdef USE_DISPLACEMENTMAP
|
||
transformed += normalize( objectNormal ) * ( texture2D( displacementMap, vUv ).x * displacementScale + displacementBias );
|
||
#endif\`,ph=\`#ifdef USE_EMISSIVEMAP
|
||
vec4 emissiveColor = texture2D( emissiveMap, vUv );
|
||
totalEmissiveRadiance *= emissiveColor.rgb;
|
||
#endif\`,mh=\`#ifdef USE_EMISSIVEMAP
|
||
uniform sampler2D emissiveMap;
|
||
#endif\`,gh="gl_FragColor = linearToOutputTexel( gl_FragColor );",xh=\`vec4 LinearToLinear( in vec4 value ) {
|
||
return value;
|
||
}
|
||
vec4 LinearTosRGB( in vec4 value ) {
|
||
return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );
|
||
}\`,_h=\`#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, 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\`,yh=\`#ifdef USE_ENVMAP
|
||
uniform float envMapIntensity;
|
||
uniform float flipEnvMap;
|
||
#ifdef ENVMAP_TYPE_CUBE
|
||
uniform samplerCube envMap;
|
||
#else
|
||
uniform sampler2D envMap;
|
||
#endif
|
||
|
||
#endif\`,vh=\`#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\`,Mh=\`#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\`,bh=\`#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\`,wh=\`#ifdef USE_FOG
|
||
vFogDepth = - mvPosition.z;
|
||
#endif\`,Sh=\`#ifdef USE_FOG
|
||
varying float vFogDepth;
|
||
#endif\`,Th=\`#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\`,Ah=\`#ifdef USE_FOG
|
||
uniform vec3 fogColor;
|
||
varying float vFogDepth;
|
||
#ifdef FOG_EXP2
|
||
uniform float fogDensity;
|
||
#else
|
||
uniform float fogNear;
|
||
uniform float fogFar;
|
||
#endif
|
||
#endif\`,Eh=\`#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
|
||
}\`,Ch=\`#ifdef USE_LIGHTMAP
|
||
vec4 lightMapTexel = texture2D( lightMap, vUv2 );
|
||
vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;
|
||
reflectedLight.indirectDiffuse += lightMapIrradiance;
|
||
#endif\`,Ph=\`#ifdef USE_LIGHTMAP
|
||
uniform sampler2D lightMap;
|
||
uniform float lightMapIntensity;
|
||
#endif\`,Rh=\`LambertMaterial material;
|
||
material.diffuseColor = diffuseColor.rgb;
|
||
material.specularStrength = specularStrength;\`,Lh=\`varying vec3 vViewPosition;
|
||
struct LambertMaterial {
|
||
vec3 diffuseColor;
|
||
float specularStrength;
|
||
};
|
||
void RE_Direct_Lambert( const in IncidentLight directLight, const in GeometricContext geometry, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {
|
||
float dotNL = saturate( dot( geometry.normal, directLight.direction ) );
|
||
vec3 irradiance = dotNL * directLight.color;
|
||
reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
|
||
}
|
||
void RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in GeometricContext geometry, 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\`,Ih=\`uniform bool receiveShadow;
|
||
uniform vec3 ambientLightColor;
|
||
uniform vec3 lightProbe[ 9 ];
|
||
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 ( PHYSICALLY_CORRECT_LIGHTS )
|
||
float distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );
|
||
if ( cutoffDistance > 0.0 ) {
|
||
distanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );
|
||
}
|
||
return distanceFalloff;
|
||
#else
|
||
if ( cutoffDistance > 0.0 && decayExponent > 0.0 ) {
|
||
return pow( saturate( - lightDistance / cutoffDistance + 1.0 ), decayExponent );
|
||
}
|
||
return 1.0;
|
||
#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, const in GeometricContext geometry, 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 GeometricContext geometry, out IncidentLight light ) {
|
||
vec3 lVector = pointLight.position - geometry.position;
|
||
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 GeometricContext geometry, out IncidentLight light ) {
|
||
vec3 lVector = spotLight.position - geometry.position;
|
||
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\`,Dh=\`#if defined( USE_ENVMAP )
|
||
vec3 getIBLIrradiance( const in vec3 normal ) {
|
||
#if defined( ENVMAP_TYPE_CUBE_UV )
|
||
vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );
|
||
vec4 envMapColor = textureCubeUV( envMap, 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 ) {
|
||
#if defined( ENVMAP_TYPE_CUBE_UV )
|
||
vec3 reflectVec = reflect( - viewDir, normal );
|
||
reflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );
|
||
reflectVec = inverseTransformDirection( reflectVec, viewMatrix );
|
||
vec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );
|
||
return envMapColor.rgb * envMapIntensity;
|
||
#else
|
||
return vec3( 0.0 );
|
||
#endif
|
||
}
|
||
#endif\`,Nh=\`ToonMaterial material;
|
||
material.diffuseColor = diffuseColor.rgb;\`,Fh=\`varying vec3 vViewPosition;
|
||
struct ToonMaterial {
|
||
vec3 diffuseColor;
|
||
};
|
||
void RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {
|
||
vec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;
|
||
reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
|
||
}
|
||
void RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, 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\`,zh=\`BlinnPhongMaterial material;
|
||
material.diffuseColor = diffuseColor.rgb;
|
||
material.specularColor = specular;
|
||
material.specularShininess = shininess;
|
||
material.specularStrength = specularStrength;\`,Oh=\`varying vec3 vViewPosition;
|
||
struct BlinnPhongMaterial {
|
||
vec3 diffuseColor;
|
||
vec3 specularColor;
|
||
float specularShininess;
|
||
float specularStrength;
|
||
};
|
||
void RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {
|
||
float dotNL = saturate( dot( geometry.normal, directLight.direction ) );
|
||
vec3 irradiance = dotNL * directLight.color;
|
||
reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
|
||
reflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularShininess ) * material.specularStrength;
|
||
}
|
||
void RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, 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\`,Bh=\`PhysicalMaterial material;
|
||
material.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );
|
||
vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );
|
||
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 SPECULAR
|
||
float specularIntensityFactor = specularIntensity;
|
||
vec3 specularColorFactor = specularColor;
|
||
#ifdef USE_SPECULARINTENSITYMAP
|
||
specularIntensityFactor *= texture2D( specularIntensityMap, vUv ).a;
|
||
#endif
|
||
#ifdef USE_SPECULARCOLORMAP
|
||
specularColorFactor *= texture2D( specularColorMap, vUv ).rgb;
|
||
#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, vUv ).x;
|
||
#endif
|
||
#ifdef USE_CLEARCOAT_ROUGHNESSMAP
|
||
material.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vUv ).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_IRIDESCENCE
|
||
material.iridescence = iridescence;
|
||
material.iridescenceIOR = iridescenceIOR;
|
||
#ifdef USE_IRIDESCENCEMAP
|
||
material.iridescence *= texture2D( iridescenceMap, vUv ).r;
|
||
#endif
|
||
#ifdef USE_IRIDESCENCE_THICKNESSMAP
|
||
material.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vUv ).g + iridescenceThicknessMinimum;
|
||
#else
|
||
material.iridescenceThickness = iridescenceThicknessMaximum;
|
||
#endif
|
||
#endif
|
||
#ifdef USE_SHEEN
|
||
material.sheenColor = sheenColor;
|
||
#ifdef USE_SHEENCOLORMAP
|
||
material.sheenColor *= texture2D( sheenColorMap, vUv ).rgb;
|
||
#endif
|
||
material.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 );
|
||
#ifdef USE_SHEENROUGHNESSMAP
|
||
material.sheenRoughness *= texture2D( sheenRoughnessMap, vUv ).a;
|
||
#endif
|
||
#endif\`,Uh=\`struct PhysicalMaterial {
|
||
vec3 diffuseColor;
|
||
float roughness;
|
||
vec3 specularColor;
|
||
float specularF90;
|
||
#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
|
||
};
|
||
vec3 clearcoatSpecular = vec3( 0.0 );
|
||
vec3 sheenSpecular = vec3( 0.0 );
|
||
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 GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {
|
||
vec3 normal = geometry.normal;
|
||
vec3 viewDir = geometry.viewDir;
|
||
vec3 position = geometry.position;
|
||
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 GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {
|
||
float dotNL = saturate( dot( geometry.normal, directLight.direction ) );
|
||
vec3 irradiance = dotNL * directLight.color;
|
||
#ifdef USE_CLEARCOAT
|
||
float dotNLcc = saturate( dot( geometry.clearcoatNormal, directLight.direction ) );
|
||
vec3 ccIrradiance = dotNLcc * directLight.color;
|
||
clearcoatSpecular += ccIrradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.clearcoatNormal, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );
|
||
#endif
|
||
#ifdef USE_SHEEN
|
||
sheenSpecular += irradiance * BRDF_Sheen( directLight.direction, geometry.viewDir, geometry.normal, material.sheenColor, material.sheenRoughness );
|
||
#endif
|
||
#ifdef USE_IRIDESCENCE
|
||
reflectedLight.directSpecular += irradiance * BRDF_GGX_Iridescence( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness );
|
||
#else
|
||
reflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularF90, material.roughness );
|
||
#endif
|
||
reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
|
||
}
|
||
void RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, 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 GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {
|
||
#ifdef USE_CLEARCOAT
|
||
clearcoatSpecular += clearcoatRadiance * EnvironmentBRDF( geometry.clearcoatNormal, geometry.viewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );
|
||
#endif
|
||
#ifdef USE_SHEEN
|
||
sheenSpecular += irradiance * material.sheenColor * IBLSheenBRDF( geometry.normal, geometry.viewDir, material.sheenRoughness );
|
||
#endif
|
||
vec3 singleScattering = vec3( 0.0 );
|
||
vec3 multiScattering = vec3( 0.0 );
|
||
vec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;
|
||
#ifdef USE_IRIDESCENCE
|
||
computeMultiscatteringIridescence( geometry.normal, geometry.viewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness, singleScattering, multiScattering );
|
||
#else
|
||
computeMultiscattering( geometry.normal, geometry.viewDir, 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 );
|
||
}\`,kh=\`
|
||
GeometricContext geometry;
|
||
geometry.position = - vViewPosition;
|
||
geometry.normal = normal;
|
||
geometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );
|
||
#ifdef USE_CLEARCOAT
|
||
geometry.clearcoatNormal = clearcoatNormal;
|
||
#endif
|
||
#ifdef USE_IRIDESCENCE
|
||
float dotNVi = saturate( dot( normal, geometry.viewDir ) );
|
||
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, geometry, 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, geometry, 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, geometry, 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, geometry, 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, geometry, 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, geometry, 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, geometry, material, reflectedLight );
|
||
}
|
||
#pragma unroll_loop_end
|
||
#endif
|
||
#if defined( RE_IndirectDiffuse )
|
||
vec3 iblIrradiance = vec3( 0.0 );
|
||
vec3 irradiance = getAmbientLightIrradiance( ambientLightColor );
|
||
irradiance += getLightProbeIrradiance( lightProbe, geometry.normal );
|
||
#if ( NUM_HEMI_LIGHTS > 0 )
|
||
#pragma unroll_loop_start
|
||
for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {
|
||
irradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal );
|
||
}
|
||
#pragma unroll_loop_end
|
||
#endif
|
||
#endif
|
||
#if defined( RE_IndirectSpecular )
|
||
vec3 radiance = vec3( 0.0 );
|
||
vec3 clearcoatRadiance = vec3( 0.0 );
|
||
#endif\`,Vh=\`#if defined( RE_IndirectDiffuse )
|
||
#ifdef USE_LIGHTMAP
|
||
vec4 lightMapTexel = texture2D( lightMap, vUv2 );
|
||
vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;
|
||
irradiance += lightMapIrradiance;
|
||
#endif
|
||
#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )
|
||
iblIrradiance += getIBLIrradiance( geometry.normal );
|
||
#endif
|
||
#endif
|
||
#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )
|
||
radiance += getIBLRadiance( geometry.viewDir, geometry.normal, material.roughness );
|
||
#ifdef USE_CLEARCOAT
|
||
clearcoatRadiance += getIBLRadiance( geometry.viewDir, geometry.clearcoatNormal, material.clearcoatRoughness );
|
||
#endif
|
||
#endif\`,Gh=\`#if defined( RE_IndirectDiffuse )
|
||
RE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );
|
||
#endif
|
||
#if defined( RE_IndirectSpecular )
|
||
RE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometry, material, reflectedLight );
|
||
#endif\`,Hh=\`#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )
|
||
gl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;
|
||
#endif\`,Wh=\`#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )
|
||
uniform float logDepthBufFC;
|
||
varying float vFragDepth;
|
||
varying float vIsPerspective;
|
||
#endif\`,qh=\`#ifdef USE_LOGDEPTHBUF
|
||
#ifdef USE_LOGDEPTHBUF_EXT
|
||
varying float vFragDepth;
|
||
varying float vIsPerspective;
|
||
#else
|
||
uniform float logDepthBufFC;
|
||
#endif
|
||
#endif\`,Xh=\`#ifdef USE_LOGDEPTHBUF
|
||
#ifdef USE_LOGDEPTHBUF_EXT
|
||
vFragDepth = 1.0 + gl_Position.w;
|
||
vIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );
|
||
#else
|
||
if ( isPerspectiveMatrix( projectionMatrix ) ) {
|
||
gl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;
|
||
gl_Position.z *= gl_Position.w;
|
||
}
|
||
#endif
|
||
#endif\`,Yh=\`#ifdef USE_MAP
|
||
vec4 sampledDiffuseColor = texture2D( map, vUv );
|
||
#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\`,Zh=\`#ifdef USE_MAP
|
||
uniform sampler2D map;
|
||
#endif\`,Jh=\`#if defined( USE_MAP ) || defined( USE_ALPHAMAP )
|
||
vec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;
|
||
#endif
|
||
#ifdef USE_MAP
|
||
diffuseColor *= texture2D( map, uv );
|
||
#endif
|
||
#ifdef USE_ALPHAMAP
|
||
diffuseColor.a *= texture2D( alphaMap, uv ).g;
|
||
#endif\`,$h=\`#if defined( USE_MAP ) || defined( USE_ALPHAMAP )
|
||
uniform mat3 uvTransform;
|
||
#endif
|
||
#ifdef USE_MAP
|
||
uniform sampler2D map;
|
||
#endif
|
||
#ifdef USE_ALPHAMAP
|
||
uniform sampler2D alphaMap;
|
||
#endif\`,Kh=\`float metalnessFactor = metalness;
|
||
#ifdef USE_METALNESSMAP
|
||
vec4 texelMetalness = texture2D( metalnessMap, vUv );
|
||
metalnessFactor *= texelMetalness.b;
|
||
#endif\`,jh=\`#ifdef USE_METALNESSMAP
|
||
uniform sampler2D metalnessMap;
|
||
#endif\`,Qh=\`#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\`,tu=\`#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\`,eu=\`#ifdef USE_MORPHTARGETS
|
||
uniform float morphTargetBaseInfluence;
|
||
#ifdef MORPHTARGETS_TEXTURE
|
||
uniform float morphTargetInfluences[ MORPHTARGETS_COUNT ];
|
||
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\`,nu=\`#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\`,iu=\`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 = normal * faceDirection;
|
||
#endif
|
||
#ifdef USE_TANGENT
|
||
vec3 tangent = normalize( vTangent );
|
||
vec3 bitangent = normalize( vBitangent );
|
||
#ifdef DOUBLE_SIDED
|
||
tangent = tangent * faceDirection;
|
||
bitangent = bitangent * faceDirection;
|
||
#endif
|
||
#if defined( TANGENTSPACE_NORMALMAP ) || defined( USE_CLEARCOAT_NORMALMAP )
|
||
mat3 vTBN = mat3( tangent, bitangent, normal );
|
||
#endif
|
||
#endif
|
||
#endif
|
||
vec3 geometryNormal = normal;\`,su=\`#ifdef OBJECTSPACE_NORMALMAP
|
||
normal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;
|
||
#ifdef FLIP_SIDED
|
||
normal = - normal;
|
||
#endif
|
||
#ifdef DOUBLE_SIDED
|
||
normal = normal * faceDirection;
|
||
#endif
|
||
normal = normalize( normalMatrix * normal );
|
||
#elif defined( TANGENTSPACE_NORMALMAP )
|
||
vec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;
|
||
mapN.xy *= normalScale;
|
||
#ifdef USE_TANGENT
|
||
normal = normalize( vTBN * mapN );
|
||
#else
|
||
normal = perturbNormal2Arb( - vViewPosition, normal, mapN, faceDirection );
|
||
#endif
|
||
#elif defined( USE_BUMPMAP )
|
||
normal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection );
|
||
#endif\`,ru=\`#ifndef FLAT_SHADED
|
||
varying vec3 vNormal;
|
||
#ifdef USE_TANGENT
|
||
varying vec3 vTangent;
|
||
varying vec3 vBitangent;
|
||
#endif
|
||
#endif\`,ou=\`#ifndef FLAT_SHADED
|
||
varying vec3 vNormal;
|
||
#ifdef USE_TANGENT
|
||
varying vec3 vTangent;
|
||
varying vec3 vBitangent;
|
||
#endif
|
||
#endif\`,au=\`#ifndef FLAT_SHADED
|
||
vNormal = normalize( transformedNormal );
|
||
#ifdef USE_TANGENT
|
||
vTangent = normalize( transformedTangent );
|
||
vBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );
|
||
#endif
|
||
#endif\`,cu=\`#ifdef USE_NORMALMAP
|
||
uniform sampler2D normalMap;
|
||
uniform vec2 normalScale;
|
||
#endif
|
||
#ifdef OBJECTSPACE_NORMALMAP
|
||
uniform mat3 normalMatrix;
|
||
#endif
|
||
#if ! defined ( USE_TANGENT ) && ( defined ( TANGENTSPACE_NORMALMAP ) || defined ( USE_CLEARCOAT_NORMALMAP ) )
|
||
vec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm, vec3 mapN, float faceDirection ) {
|
||
vec3 q0 = dFdx( eye_pos.xyz );
|
||
vec3 q1 = dFdy( eye_pos.xyz );
|
||
vec2 st0 = dFdx( vUv.st );
|
||
vec2 st1 = dFdy( vUv.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 : faceDirection * inversesqrt( det );
|
||
return normalize( T * ( mapN.x * scale ) + B * ( mapN.y * scale ) + N * mapN.z );
|
||
}
|
||
#endif\`,lu=\`#ifdef USE_CLEARCOAT
|
||
vec3 clearcoatNormal = geometryNormal;
|
||
#endif\`,hu=\`#ifdef USE_CLEARCOAT_NORMALMAP
|
||
vec3 clearcoatMapN = texture2D( clearcoatNormalMap, vUv ).xyz * 2.0 - 1.0;
|
||
clearcoatMapN.xy *= clearcoatNormalScale;
|
||
#ifdef USE_TANGENT
|
||
clearcoatNormal = normalize( vTBN * clearcoatMapN );
|
||
#else
|
||
clearcoatNormal = perturbNormal2Arb( - vViewPosition, clearcoatNormal, clearcoatMapN, faceDirection );
|
||
#endif
|
||
#endif\`,uu=\`#ifdef USE_CLEARCOATMAP
|
||
uniform sampler2D clearcoatMap;
|
||
#endif
|
||
#ifdef USE_CLEARCOAT_ROUGHNESSMAP
|
||
uniform sampler2D clearcoatRoughnessMap;
|
||
#endif
|
||
#ifdef USE_CLEARCOAT_NORMALMAP
|
||
uniform sampler2D clearcoatNormalMap;
|
||
uniform vec2 clearcoatNormalScale;
|
||
#endif\`,fu=\`#ifdef USE_IRIDESCENCEMAP
|
||
uniform sampler2D iridescenceMap;
|
||
#endif
|
||
#ifdef USE_IRIDESCENCE_THICKNESSMAP
|
||
uniform sampler2D iridescenceThicknessMap;
|
||
#endif\`,du=\`#ifdef OPAQUE
|
||
diffuseColor.a = 1.0;
|
||
#endif
|
||
#ifdef USE_TRANSMISSION
|
||
diffuseColor.a *= material.transmissionAlpha + 0.1;
|
||
#endif
|
||
gl_FragColor = vec4( outgoingLight, diffuseColor.a );\`,pu=\`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 linearClipZ, const in float near, const in float far ) {
|
||
return linearClipZ * ( 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 invClipZ, const in float near, const in float far ) {
|
||
return ( near * far ) / ( ( far - near ) * invClipZ - far );
|
||
}\`,mu=\`#ifdef PREMULTIPLIED_ALPHA
|
||
gl_FragColor.rgb *= gl_FragColor.a;
|
||
#endif\`,gu=\`vec4 mvPosition = vec4( transformed, 1.0 );
|
||
#ifdef USE_INSTANCING
|
||
mvPosition = instanceMatrix * mvPosition;
|
||
#endif
|
||
mvPosition = modelViewMatrix * mvPosition;
|
||
gl_Position = projectionMatrix * mvPosition;\`,xu=\`#ifdef DITHERING
|
||
gl_FragColor.rgb = dithering( gl_FragColor.rgb );
|
||
#endif\`,_u=\`#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\`,yu=\`float roughnessFactor = roughness;
|
||
#ifdef USE_ROUGHNESSMAP
|
||
vec4 texelRoughness = texture2D( roughnessMap, vUv );
|
||
roughnessFactor *= texelRoughness.g;
|
||
#endif\`,vu=\`#ifdef USE_ROUGHNESSMAP
|
||
uniform sampler2D roughnessMap;
|
||
#endif\`,Mu=\`#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 ) {
|
||
vec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );
|
||
vec3 lightToPosition = shadowCoord.xyz;
|
||
float dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear ); dp += shadowBias;
|
||
vec3 bd3D = normalize( lightToPosition );
|
||
#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )
|
||
vec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;
|
||
return (
|
||
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
|
||
return texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );
|
||
#endif
|
||
}
|
||
#endif\`,bu=\`#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\`,wu=\`#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\`,Su=\`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;
|
||
}\`,Tu=\`#ifdef USE_SKINNING
|
||
mat4 boneMatX = getBoneMatrix( skinIndex.x );
|
||
mat4 boneMatY = getBoneMatrix( skinIndex.y );
|
||
mat4 boneMatZ = getBoneMatrix( skinIndex.z );
|
||
mat4 boneMatW = getBoneMatrix( skinIndex.w );
|
||
#endif\`,Au=\`#ifdef USE_SKINNING
|
||
uniform mat4 bindMatrix;
|
||
uniform mat4 bindMatrixInverse;
|
||
uniform highp sampler2D boneTexture;
|
||
uniform int boneTextureSize;
|
||
mat4 getBoneMatrix( const in float i ) {
|
||
float j = i * 4.0;
|
||
float x = mod( j, float( boneTextureSize ) );
|
||
float y = floor( j / float( boneTextureSize ) );
|
||
float dx = 1.0 / float( boneTextureSize );
|
||
float dy = 1.0 / float( boneTextureSize );
|
||
y = dy * ( y + 0.5 );
|
||
vec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );
|
||
vec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );
|
||
vec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );
|
||
vec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );
|
||
mat4 bone = mat4( v1, v2, v3, v4 );
|
||
return bone;
|
||
}
|
||
#endif\`,Eu=\`#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\`,Cu=\`#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\`,Pu=\`float specularStrength;
|
||
#ifdef USE_SPECULARMAP
|
||
vec4 texelSpecular = texture2D( specularMap, vUv );
|
||
specularStrength = texelSpecular.r;
|
||
#else
|
||
specularStrength = 1.0;
|
||
#endif\`,Ru=\`#ifdef USE_SPECULARMAP
|
||
uniform sampler2D specularMap;
|
||
#endif\`,Lu=\`#if defined( TONE_MAPPING )
|
||
gl_FragColor.rgb = toneMapping( gl_FragColor.rgb );
|
||
#endif\`,Iu=\`#ifndef saturate
|
||
#define saturate( a ) clamp( a, 0.0, 1.0 )
|
||
#endif
|
||
uniform float toneMappingExposure;
|
||
vec3 LinearToneMapping( vec3 color ) {
|
||
return 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 );
|
||
}
|
||
vec3 CustomToneMapping( vec3 color ) { return color; }\`,Du=\`#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, vUv ).r;
|
||
#endif
|
||
#ifdef USE_THICKNESSMAP
|
||
material.thickness *= texture2D( thicknessMap, vUv ).g;
|
||
#endif
|
||
vec3 pos = vWorldPosition;
|
||
vec3 v = normalize( cameraPosition - pos );
|
||
vec3 n = inverseTransformDirection( normal, viewMatrix );
|
||
vec4 transmission = getIBLVolumeRefraction(
|
||
n, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90,
|
||
pos, modelMatrix, viewMatrix, projectionMatrix, material.ior, material.thickness,
|
||
material.attenuationColor, material.attenuationDistance );
|
||
material.transmissionAlpha = mix( material.transmissionAlpha, transmission.a, material.transmission );
|
||
totalDiffuse = mix( totalDiffuse, transmission.rgb, material.transmission );
|
||
#endif\`,Nu=\`#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;
|
||
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 framebufferLod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );
|
||
#ifdef texture2DLodEXT
|
||
return texture2DLodEXT( transmissionSamplerMap, fragCoord.xy, framebufferLod );
|
||
#else
|
||
return texture2D( transmissionSamplerMap, fragCoord.xy, framebufferLod );
|
||
#endif
|
||
}
|
||
vec3 applyVolumeAttenuation( const in vec3 radiance, const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) {
|
||
if ( isinf( attenuationDistance ) ) {
|
||
return radiance;
|
||
} else {
|
||
vec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;
|
||
vec3 transmittance = exp( - attenuationCoefficient * transmissionDistance ); return transmittance * radiance;
|
||
}
|
||
}
|
||
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 ior, const in float thickness,
|
||
const in vec3 attenuationColor, const in float attenuationDistance ) {
|
||
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;
|
||
vec4 transmittedLight = getTransmissionSample( refractionCoords, roughness, ior );
|
||
vec3 attenuatedColor = applyVolumeAttenuation( transmittedLight.rgb, length( transmissionRay ), attenuationColor, attenuationDistance );
|
||
vec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );
|
||
return vec4( ( 1.0 - F ) * attenuatedColor * diffuseColor, transmittedLight.a );
|
||
}
|
||
#endif\`,Fu=\`#if ( defined( USE_UV ) && ! defined( UVS_VERTEX_ONLY ) )
|
||
varying vec2 vUv;
|
||
#endif\`,zu=\`#ifdef USE_UV
|
||
#ifdef UVS_VERTEX_ONLY
|
||
vec2 vUv;
|
||
#else
|
||
varying vec2 vUv;
|
||
#endif
|
||
uniform mat3 uvTransform;
|
||
#endif\`,Ou=\`#ifdef USE_UV
|
||
vUv = ( uvTransform * vec3( uv, 1 ) ).xy;
|
||
#endif\`,Bu=\`#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )
|
||
varying vec2 vUv2;
|
||
#endif\`,Uu=\`#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )
|
||
attribute vec2 uv2;
|
||
varying vec2 vUv2;
|
||
uniform mat3 uv2Transform;
|
||
#endif\`,ku=\`#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )
|
||
vUv2 = ( uv2Transform * vec3( uv2, 1 ) ).xy;
|
||
#endif\`,Vu=\`#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_INSTANCING
|
||
worldPosition = instanceMatrix * worldPosition;
|
||
#endif
|
||
worldPosition = modelMatrix * worldPosition;
|
||
#endif\`,Gu=\`varying vec2 vUv;
|
||
uniform mat3 uvTransform;
|
||
void main() {
|
||
vUv = ( uvTransform * vec3( uv, 1 ) ).xy;
|
||
gl_Position = vec4( position.xy, 1.0, 1.0 );
|
||
}\`,Hu=\`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 <encodings_fragment>
|
||
}\`,Wu=\`varying vec3 vWorldDirection;
|
||
#include <common>
|
||
void main() {
|
||
vWorldDirection = transformDirection( position, modelMatrix );
|
||
#include <begin_vertex>
|
||
#include <project_vertex>
|
||
gl_Position.z = gl_Position.w;
|
||
}\`,qu=\`#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;
|
||
varying vec3 vWorldDirection;
|
||
#include <cube_uv_reflection_fragment>
|
||
void main() {
|
||
#ifdef ENVMAP_TYPE_CUBE
|
||
vec4 texColor = textureCube( envMap, vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) );
|
||
#elif defined( ENVMAP_TYPE_CUBE_UV )
|
||
vec4 texColor = textureCubeUV( envMap, 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 <encodings_fragment>
|
||
}\`,Xu=\`varying vec3 vWorldDirection;
|
||
#include <common>
|
||
void main() {
|
||
vWorldDirection = transformDirection( position, modelMatrix );
|
||
#include <begin_vertex>
|
||
#include <project_vertex>
|
||
gl_Position.z = gl_Position.w;
|
||
}\`,Yu=\`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 <encodings_fragment>
|
||
}\`,Zu=\`#include <common>
|
||
#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 <skinbase_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;
|
||
}\`,Ju=\`#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 <logdepthbuf_pars_fragment>
|
||
#include <clipping_planes_pars_fragment>
|
||
varying vec2 vHighPrecisionZW;
|
||
void main() {
|
||
#include <clipping_planes_fragment>
|
||
vec4 diffuseColor = vec4( 1.0 );
|
||
#if DEPTH_PACKING == 3200
|
||
diffuseColor.a = opacity;
|
||
#endif
|
||
#include <map_fragment>
|
||
#include <alphamap_fragment>
|
||
#include <alphatest_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
|
||
}\`,$u=\`#define DISTANCE
|
||
varying vec3 vWorldPosition;
|
||
#include <common>
|
||
#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 <skinbase_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;
|
||
}\`,Ku=\`#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 <clipping_planes_pars_fragment>
|
||
void main () {
|
||
#include <clipping_planes_fragment>
|
||
vec4 diffuseColor = vec4( 1.0 );
|
||
#include <map_fragment>
|
||
#include <alphamap_fragment>
|
||
#include <alphatest_fragment>
|
||
float dist = length( vWorldPosition - referencePosition );
|
||
dist = ( dist - nearDistance ) / ( farDistance - nearDistance );
|
||
dist = saturate( dist );
|
||
gl_FragColor = packDepthToRGBA( dist );
|
||
}\`,ju=\`varying vec3 vWorldDirection;
|
||
#include <common>
|
||
void main() {
|
||
vWorldDirection = transformDirection( position, modelMatrix );
|
||
#include <begin_vertex>
|
||
#include <project_vertex>
|
||
}\`,Qu=\`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 <encodings_fragment>
|
||
}\`,tf=\`uniform float scale;
|
||
attribute float lineDistance;
|
||
varying float vLineDistance;
|
||
#include <common>
|
||
#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 <color_vertex>
|
||
#include <morphcolor_vertex>
|
||
#include <begin_vertex>
|
||
#include <morphtarget_vertex>
|
||
#include <project_vertex>
|
||
#include <logdepthbuf_vertex>
|
||
#include <clipping_planes_vertex>
|
||
#include <fog_vertex>
|
||
}\`,ef=\`uniform vec3 diffuse;
|
||
uniform float opacity;
|
||
uniform float dashSize;
|
||
uniform float totalSize;
|
||
varying float vLineDistance;
|
||
#include <common>
|
||
#include <color_pars_fragment>
|
||
#include <fog_pars_fragment>
|
||
#include <logdepthbuf_pars_fragment>
|
||
#include <clipping_planes_pars_fragment>
|
||
void main() {
|
||
#include <clipping_planes_fragment>
|
||
if ( mod( vLineDistance, totalSize ) > dashSize ) {
|
||
discard;
|
||
}
|
||
vec3 outgoingLight = vec3( 0.0 );
|
||
vec4 diffuseColor = vec4( diffuse, opacity );
|
||
#include <logdepthbuf_fragment>
|
||
#include <color_fragment>
|
||
outgoingLight = diffuseColor.rgb;
|
||
#include <output_fragment>
|
||
#include <tonemapping_fragment>
|
||
#include <encodings_fragment>
|
||
#include <fog_fragment>
|
||
#include <premultiplied_alpha_fragment>
|
||
}\`,nf=\`#include <common>
|
||
#include <uv_pars_vertex>
|
||
#include <uv2_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 <uv2_vertex>
|
||
#include <color_vertex>
|
||
#include <morphcolor_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>
|
||
}\`,sf=\`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 <uv2_pars_fragment>
|
||
#include <map_pars_fragment>
|
||
#include <alphamap_pars_fragment>
|
||
#include <alphatest_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() {
|
||
#include <clipping_planes_fragment>
|
||
vec4 diffuseColor = vec4( diffuse, opacity );
|
||
#include <logdepthbuf_fragment>
|
||
#include <map_fragment>
|
||
#include <color_fragment>
|
||
#include <alphamap_fragment>
|
||
#include <alphatest_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, vUv2 );
|
||
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 <output_fragment>
|
||
#include <tonemapping_fragment>
|
||
#include <encodings_fragment>
|
||
#include <fog_fragment>
|
||
#include <premultiplied_alpha_fragment>
|
||
#include <dithering_fragment>
|
||
}\`,rf=\`#define LAMBERT
|
||
varying vec3 vViewPosition;
|
||
#include <common>
|
||
#include <uv_pars_vertex>
|
||
#include <uv2_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 <uv2_vertex>
|
||
#include <color_vertex>
|
||
#include <morphcolor_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>
|
||
}\`,of=\`#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 <uv2_pars_fragment>
|
||
#include <map_pars_fragment>
|
||
#include <alphamap_pars_fragment>
|
||
#include <alphatest_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() {
|
||
#include <clipping_planes_fragment>
|
||
vec4 diffuseColor = vec4( diffuse, opacity );
|
||
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 <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 <output_fragment>
|
||
#include <tonemapping_fragment>
|
||
#include <encodings_fragment>
|
||
#include <fog_fragment>
|
||
#include <premultiplied_alpha_fragment>
|
||
#include <dithering_fragment>
|
||
}\`,af=\`#define MATCAP
|
||
varying vec3 vViewPosition;
|
||
#include <common>
|
||
#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 <morphcolor_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;
|
||
}\`,cf=\`#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 <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() {
|
||
#include <clipping_planes_fragment>
|
||
vec4 diffuseColor = vec4( diffuse, opacity );
|
||
#include <logdepthbuf_fragment>
|
||
#include <map_fragment>
|
||
#include <color_fragment>
|
||
#include <alphamap_fragment>
|
||
#include <alphatest_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 <output_fragment>
|
||
#include <tonemapping_fragment>
|
||
#include <encodings_fragment>
|
||
#include <fog_fragment>
|
||
#include <premultiplied_alpha_fragment>
|
||
#include <dithering_fragment>
|
||
}\`,lf=\`#define NORMAL
|
||
#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )
|
||
varying vec3 vViewPosition;
|
||
#endif
|
||
#include <common>
|
||
#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 <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>
|
||
#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )
|
||
vViewPosition = - mvPosition.xyz;
|
||
#endif
|
||
}\`,hf=\`#define NORMAL
|
||
uniform float opacity;
|
||
#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )
|
||
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() {
|
||
#include <clipping_planes_fragment>
|
||
#include <logdepthbuf_fragment>
|
||
#include <normal_fragment_begin>
|
||
#include <normal_fragment_maps>
|
||
gl_FragColor = vec4( packNormalToRGB( normal ), opacity );
|
||
#ifdef OPAQUE
|
||
gl_FragColor.a = 1.0;
|
||
#endif
|
||
}\`,uf=\`#define PHONG
|
||
varying vec3 vViewPosition;
|
||
#include <common>
|
||
#include <uv_pars_vertex>
|
||
#include <uv2_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 <uv2_vertex>
|
||
#include <color_vertex>
|
||
#include <morphcolor_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>
|
||
}\`,ff=\`#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 <uv2_pars_fragment>
|
||
#include <map_pars_fragment>
|
||
#include <alphamap_pars_fragment>
|
||
#include <alphatest_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() {
|
||
#include <clipping_planes_fragment>
|
||
vec4 diffuseColor = vec4( diffuse, opacity );
|
||
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 <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 <output_fragment>
|
||
#include <tonemapping_fragment>
|
||
#include <encodings_fragment>
|
||
#include <fog_fragment>
|
||
#include <premultiplied_alpha_fragment>
|
||
#include <dithering_fragment>
|
||
}\`,df=\`#define STANDARD
|
||
varying vec3 vViewPosition;
|
||
#ifdef USE_TRANSMISSION
|
||
varying vec3 vWorldPosition;
|
||
#endif
|
||
#include <common>
|
||
#include <uv_pars_vertex>
|
||
#include <uv2_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 <uv2_vertex>
|
||
#include <color_vertex>
|
||
#include <morphcolor_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
|
||
}\`,pf=\`#define STANDARD
|
||
#ifdef PHYSICAL
|
||
#define IOR
|
||
#define SPECULAR
|
||
#endif
|
||
uniform vec3 diffuse;
|
||
uniform vec3 emissive;
|
||
uniform float roughness;
|
||
uniform float metalness;
|
||
uniform float opacity;
|
||
#ifdef IOR
|
||
uniform float ior;
|
||
#endif
|
||
#ifdef SPECULAR
|
||
uniform float specularIntensity;
|
||
uniform vec3 specularColor;
|
||
#ifdef USE_SPECULARINTENSITYMAP
|
||
uniform sampler2D specularIntensityMap;
|
||
#endif
|
||
#ifdef USE_SPECULARCOLORMAP
|
||
uniform sampler2D specularColorMap;
|
||
#endif
|
||
#endif
|
||
#ifdef USE_CLEARCOAT
|
||
uniform float clearcoat;
|
||
uniform float clearcoatRoughness;
|
||
#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_SHEENCOLORMAP
|
||
uniform sampler2D sheenColorMap;
|
||
#endif
|
||
#ifdef USE_SHEENROUGHNESSMAP
|
||
uniform sampler2D sheenRoughnessMap;
|
||
#endif
|
||
#endif
|
||
varying vec3 vViewPosition;
|
||
#include <common>
|
||
#include <packing>
|
||
#include <dithering_pars_fragment>
|
||
#include <color_pars_fragment>
|
||
#include <uv_pars_fragment>
|
||
#include <uv2_pars_fragment>
|
||
#include <map_pars_fragment>
|
||
#include <alphamap_pars_fragment>
|
||
#include <alphatest_pars_fragment>
|
||
#include <aomap_pars_fragment>
|
||
#include <lightmap_pars_fragment>
|
||
#include <emissivemap_pars_fragment>
|
||
#include <bsdfs>
|
||
#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() {
|
||
#include <clipping_planes_fragment>
|
||
vec4 diffuseColor = vec4( diffuse, opacity );
|
||
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 <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 + sheenSpecular;
|
||
#endif
|
||
#ifdef USE_CLEARCOAT
|
||
float dotNVcc = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) );
|
||
vec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );
|
||
outgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + clearcoatSpecular * material.clearcoat;
|
||
#endif
|
||
#include <output_fragment>
|
||
#include <tonemapping_fragment>
|
||
#include <encodings_fragment>
|
||
#include <fog_fragment>
|
||
#include <premultiplied_alpha_fragment>
|
||
#include <dithering_fragment>
|
||
}\`,mf=\`#define TOON
|
||
varying vec3 vViewPosition;
|
||
#include <common>
|
||
#include <uv_pars_vertex>
|
||
#include <uv2_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 <uv2_vertex>
|
||
#include <color_vertex>
|
||
#include <morphcolor_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>
|
||
}\`,gf=\`#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 <uv2_pars_fragment>
|
||
#include <map_pars_fragment>
|
||
#include <alphamap_pars_fragment>
|
||
#include <alphatest_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() {
|
||
#include <clipping_planes_fragment>
|
||
vec4 diffuseColor = vec4( diffuse, opacity );
|
||
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 <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 <output_fragment>
|
||
#include <tonemapping_fragment>
|
||
#include <encodings_fragment>
|
||
#include <fog_fragment>
|
||
#include <premultiplied_alpha_fragment>
|
||
#include <dithering_fragment>
|
||
}\`,xf=\`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>
|
||
void main() {
|
||
#include <color_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>
|
||
}\`,_f=\`uniform vec3 diffuse;
|
||
uniform float opacity;
|
||
#include <common>
|
||
#include <color_pars_fragment>
|
||
#include <map_particle_pars_fragment>
|
||
#include <alphatest_pars_fragment>
|
||
#include <fog_pars_fragment>
|
||
#include <logdepthbuf_pars_fragment>
|
||
#include <clipping_planes_pars_fragment>
|
||
void main() {
|
||
#include <clipping_planes_fragment>
|
||
vec3 outgoingLight = vec3( 0.0 );
|
||
vec4 diffuseColor = vec4( diffuse, opacity );
|
||
#include <logdepthbuf_fragment>
|
||
#include <map_particle_fragment>
|
||
#include <color_fragment>
|
||
#include <alphatest_fragment>
|
||
outgoingLight = diffuseColor.rgb;
|
||
#include <output_fragment>
|
||
#include <tonemapping_fragment>
|
||
#include <encodings_fragment>
|
||
#include <fog_fragment>
|
||
#include <premultiplied_alpha_fragment>
|
||
}\`,yf=\`#include <common>
|
||
#include <fog_pars_vertex>
|
||
#include <morphtarget_pars_vertex>
|
||
#include <skinning_pars_vertex>
|
||
#include <shadowmap_pars_vertex>
|
||
void main() {
|
||
#include <beginnormal_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 <worldpos_vertex>
|
||
#include <shadowmap_vertex>
|
||
#include <fog_vertex>
|
||
}\`,vf=\`uniform vec3 color;
|
||
uniform float opacity;
|
||
#include <common>
|
||
#include <packing>
|
||
#include <fog_pars_fragment>
|
||
#include <bsdfs>
|
||
#include <lights_pars_begin>
|
||
#include <shadowmap_pars_fragment>
|
||
#include <shadowmask_pars_fragment>
|
||
void main() {
|
||
gl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );
|
||
#include <tonemapping_fragment>
|
||
#include <encodings_fragment>
|
||
#include <fog_fragment>
|
||
}\`,Mf=\`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>
|
||
}\`,bf=\`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 <fog_pars_fragment>
|
||
#include <logdepthbuf_pars_fragment>
|
||
#include <clipping_planes_pars_fragment>
|
||
void main() {
|
||
#include <clipping_planes_fragment>
|
||
vec3 outgoingLight = vec3( 0.0 );
|
||
vec4 diffuseColor = vec4( diffuse, opacity );
|
||
#include <logdepthbuf_fragment>
|
||
#include <map_fragment>
|
||
#include <alphamap_fragment>
|
||
#include <alphatest_fragment>
|
||
outgoingLight = diffuseColor.rgb;
|
||
#include <output_fragment>
|
||
#include <tonemapping_fragment>
|
||
#include <encodings_fragment>
|
||
#include <fog_fragment>
|
||
}\`,wt={alphamap_fragment:Wl,alphamap_pars_fragment:ql,alphatest_fragment:Xl,alphatest_pars_fragment:Yl,aomap_fragment:Zl,aomap_pars_fragment:Jl,begin_vertex:$l,beginnormal_vertex:Kl,bsdfs:jl,iridescence_fragment:Ql,bumpmap_pars_fragment:th,clipping_planes_fragment:eh,clipping_planes_pars_fragment:nh,clipping_planes_pars_vertex:ih,clipping_planes_vertex:sh,color_fragment:rh,color_pars_fragment:oh,color_pars_vertex:ah,color_vertex:ch,common:lh,cube_uv_reflection_fragment:hh,defaultnormal_vertex:uh,displacementmap_pars_vertex:fh,displacementmap_vertex:dh,emissivemap_fragment:ph,emissivemap_pars_fragment:mh,encodings_fragment:gh,encodings_pars_fragment:xh,envmap_fragment:_h,envmap_common_pars_fragment:yh,envmap_pars_fragment:vh,envmap_pars_vertex:Mh,envmap_physical_pars_fragment:Dh,envmap_vertex:bh,fog_vertex:wh,fog_pars_vertex:Sh,fog_fragment:Th,fog_pars_fragment:Ah,gradientmap_pars_fragment:Eh,lightmap_fragment:Ch,lightmap_pars_fragment:Ph,lights_lambert_fragment:Rh,lights_lambert_pars_fragment:Lh,lights_pars_begin:Ih,lights_toon_fragment:Nh,lights_toon_pars_fragment:Fh,lights_phong_fragment:zh,lights_phong_pars_fragment:Oh,lights_physical_fragment:Bh,lights_physical_pars_fragment:Uh,lights_fragment_begin:kh,lights_fragment_maps:Vh,lights_fragment_end:Gh,logdepthbuf_fragment:Hh,logdepthbuf_pars_fragment:Wh,logdepthbuf_pars_vertex:qh,logdepthbuf_vertex:Xh,map_fragment:Yh,map_pars_fragment:Zh,map_particle_fragment:Jh,map_particle_pars_fragment:$h,metalnessmap_fragment:Kh,metalnessmap_pars_fragment:jh,morphcolor_vertex:Qh,morphnormal_vertex:tu,morphtarget_pars_vertex:eu,morphtarget_vertex:nu,normal_fragment_begin:iu,normal_fragment_maps:su,normal_pars_fragment:ru,normal_pars_vertex:ou,normal_vertex:au,normalmap_pars_fragment:cu,clearcoat_normal_fragment_begin:lu,clearcoat_normal_fragment_maps:hu,clearcoat_pars_fragment:uu,iridescence_pars_fragment:fu,output_fragment:du,packing:pu,premultiplied_alpha_fragment:mu,project_vertex:gu,dithering_fragment:xu,dithering_pars_fragment:_u,roughnessmap_fragment:yu,roughnessmap_pars_fragment:vu,shadowmap_pars_fragment:Mu,shadowmap_pars_vertex:bu,shadowmap_vertex:wu,shadowmask_pars_fragment:Su,skinbase_vertex:Tu,skinning_pars_vertex:Au,skinning_vertex:Eu,skinnormal_vertex:Cu,specularmap_fragment:Pu,specularmap_pars_fragment:Ru,tonemapping_fragment:Lu,tonemapping_pars_fragment:Iu,transmission_fragment:Du,transmission_pars_fragment:Nu,uv_pars_fragment:Fu,uv_pars_vertex:zu,uv_vertex:Ou,uv2_pars_fragment:Bu,uv2_pars_vertex:Uu,uv2_vertex:ku,worldpos_vertex:Vu,background_vert:Gu,background_frag:Hu,backgroundCube_vert:Wu,backgroundCube_frag:qu,cube_vert:Xu,cube_frag:Yu,depth_vert:Zu,depth_frag:Ju,distanceRGBA_vert:$u,distanceRGBA_frag:Ku,equirect_vert:ju,equirect_frag:Qu,linedashed_vert:tf,linedashed_frag:ef,meshbasic_vert:nf,meshbasic_frag:sf,meshlambert_vert:rf,meshlambert_frag:of,meshmatcap_vert:af,meshmatcap_frag:cf,meshnormal_vert:lf,meshnormal_frag:hf,meshphong_vert:uf,meshphong_frag:ff,meshphysical_vert:df,meshphysical_frag:pf,meshtoon_vert:mf,meshtoon_frag:gf,points_vert:xf,points_frag:_f,shadow_vert:yf,shadow_frag:vf,sprite_vert:Mf,sprite_frag:bf},et={common:{diffuse:{value:new Bt(16777215)},opacity:{value:1},map:{value:null},uvTransform:{value:new le},uv2Transform:{value:new le},alphaMap:{value:null},alphaTest:{value:0}},specularmap:{specularMap:{value:null}},envmap:{envMap:{value:null},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1}},emissivemap:{emissiveMap:{value:null}},bumpmap:{bumpMap:{value:null},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalScale:{value:new At(1,1)}},displacementmap:{displacementMap:{value:null},displacementScale:{value:1},displacementBias:{value:0}},roughnessmap:{roughnessMap:{value:null}},metalnessmap:{metalnessMap:{value:null}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new Bt(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 Bt(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaTest:{value:0},uvTransform:{value:new le}},sprite:{diffuse:{value:new Bt(16777215)},opacity:{value:1},center:{value:new At(.5,.5)},rotation:{value:0},map:{value:null},alphaMap:{value:null},alphaTest:{value:0},uvTransform:{value:new le}}},He={basic:{uniforms:ae([et.common,et.specularmap,et.envmap,et.aomap,et.lightmap,et.fog]),vertexShader:wt.meshbasic_vert,fragmentShader:wt.meshbasic_frag},lambert:{uniforms:ae([et.common,et.specularmap,et.envmap,et.aomap,et.lightmap,et.emissivemap,et.bumpmap,et.normalmap,et.displacementmap,et.fog,et.lights,{emissive:{value:new Bt(0)}}]),vertexShader:wt.meshlambert_vert,fragmentShader:wt.meshlambert_frag},phong:{uniforms:ae([et.common,et.specularmap,et.envmap,et.aomap,et.lightmap,et.emissivemap,et.bumpmap,et.normalmap,et.displacementmap,et.fog,et.lights,{emissive:{value:new Bt(0)},specular:{value:new Bt(1118481)},shininess:{value:30}}]),vertexShader:wt.meshphong_vert,fragmentShader:wt.meshphong_frag},standard:{uniforms:ae([et.common,et.envmap,et.aomap,et.lightmap,et.emissivemap,et.bumpmap,et.normalmap,et.displacementmap,et.roughnessmap,et.metalnessmap,et.fog,et.lights,{emissive:{value:new Bt(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:wt.meshphysical_vert,fragmentShader:wt.meshphysical_frag},toon:{uniforms:ae([et.common,et.aomap,et.lightmap,et.emissivemap,et.bumpmap,et.normalmap,et.displacementmap,et.gradientmap,et.fog,et.lights,{emissive:{value:new Bt(0)}}]),vertexShader:wt.meshtoon_vert,fragmentShader:wt.meshtoon_frag},matcap:{uniforms:ae([et.common,et.bumpmap,et.normalmap,et.displacementmap,et.fog,{matcap:{value:null}}]),vertexShader:wt.meshmatcap_vert,fragmentShader:wt.meshmatcap_frag},points:{uniforms:ae([et.points,et.fog]),vertexShader:wt.points_vert,fragmentShader:wt.points_frag},dashed:{uniforms:ae([et.common,et.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:wt.linedashed_vert,fragmentShader:wt.linedashed_frag},depth:{uniforms:ae([et.common,et.displacementmap]),vertexShader:wt.depth_vert,fragmentShader:wt.depth_frag},normal:{uniforms:ae([et.common,et.bumpmap,et.normalmap,et.displacementmap,{opacity:{value:1}}]),vertexShader:wt.meshnormal_vert,fragmentShader:wt.meshnormal_frag},sprite:{uniforms:ae([et.sprite,et.fog]),vertexShader:wt.sprite_vert,fragmentShader:wt.sprite_frag},background:{uniforms:{uvTransform:{value:new le},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:wt.background_vert,fragmentShader:wt.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1}},vertexShader:wt.backgroundCube_vert,fragmentShader:wt.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:wt.cube_vert,fragmentShader:wt.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:wt.equirect_vert,fragmentShader:wt.equirect_frag},distanceRGBA:{uniforms:ae([et.common,et.displacementmap,{referencePosition:{value:new R},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:wt.distanceRGBA_vert,fragmentShader:wt.distanceRGBA_frag},shadow:{uniforms:ae([et.lights,et.fog,{color:{value:new Bt(0)},opacity:{value:1}}]),vertexShader:wt.shadow_vert,fragmentShader:wt.shadow_frag}};He.physical={uniforms:ae([He.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatNormalScale:{value:new At(1,1)},clearcoatNormalMap:{value:null},iridescence:{value:0},iridescenceMap:{value:null},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},sheen:{value:0},sheenColor:{value:new Bt(0)},sheenColorMap:{value:null},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},transmission:{value:0},transmissionMap:{value:null},transmissionSamplerSize:{value:new At},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},attenuationDistance:{value:0},attenuationColor:{value:new Bt(0)},specularIntensity:{value:1},specularIntensityMap:{value:null},specularColor:{value:new Bt(1,1,1)},specularColorMap:{value:null}}]),vertexShader:wt.meshphysical_vert,fragmentShader:wt.meshphysical_frag};var fs={r:0,b:0,g:0};function wf(r,t,e,n,i,s,a){let o=new Bt(0),c=s===!0?0:1,l,h,f=null,u=0,m=null;function x(d,g){let M=!1,_=g.isScene===!0?g.background:null;_&&_.isTexture&&(_=(g.backgroundBlurriness>0?e:t).get(_));let v=r.xr,b=v.getSession&&v.getSession();b&&b.environmentBlendMode==="additive"&&(_=null),_===null?p(o,c):_&&_.isColor&&(p(_,1),M=!0),(r.autoClear||M)&&r.clear(r.autoClearColor,r.autoClearDepth,r.autoClearStencil),_&&(_.isCubeTexture||_.mapping===Ls)?(h===void 0&&(h=new qe(new zn(1,1,1),new on({name:"BackgroundCubeMaterial",uniforms:di(He.backgroundCube.uniforms),vertexShader:He.backgroundCube.vertexShader,fragmentShader:He.backgroundCube.fragmentShader,side:he,depthTest:!1,depthWrite:!1,fog:!1})),h.geometry.deleteAttribute("normal"),h.geometry.deleteAttribute("uv"),h.onBeforeRender=function(A,C,y){this.matrixWorld.copyPosition(y.matrixWorld)},Object.defineProperty(h.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),i.update(h)),h.material.uniforms.envMap.value=_,h.material.uniforms.flipEnvMap.value=_.isCubeTexture&&_.isRenderTargetTexture===!1?-1:1,h.material.uniforms.backgroundBlurriness.value=g.backgroundBlurriness,h.material.uniforms.backgroundIntensity.value=g.backgroundIntensity,h.material.toneMapped=_.encoding!==Ot,(f!==_||u!==_.version||m!==r.toneMapping)&&(h.material.needsUpdate=!0,f=_,u=_.version,m=r.toneMapping),h.layers.enableAll(),d.unshift(h,h.geometry,h.material,0,0,null)):_&&_.isTexture&&(l===void 0&&(l=new qe(new ki(2,2),new on({name:"BackgroundMaterial",uniforms:di(He.background.uniforms),vertexShader:He.background.vertexShader,fragmentShader:He.background.fragmentShader,side:Ue,depthTest:!1,depthWrite:!1,fog:!1})),l.geometry.deleteAttribute("normal"),Object.defineProperty(l.material,"map",{get:function(){return this.uniforms.t2D.value}}),i.update(l)),l.material.uniforms.t2D.value=_,l.material.uniforms.backgroundIntensity.value=g.backgroundIntensity,l.material.toneMapped=_.encoding!==Ot,_.matrixAutoUpdate===!0&&_.updateMatrix(),l.material.uniforms.uvTransform.value.copy(_.matrix),(f!==_||u!==_.version||m!==r.toneMapping)&&(l.material.needsUpdate=!0,f=_,u=_.version,m=r.toneMapping),l.layers.enableAll(),d.unshift(l,l.geometry,l.material,0,0,null))}function p(d,g){d.getRGB(fs,ja(r)),n.buffers.color.setClear(fs.r,fs.g,fs.b,g,a)}return{getClearColor:function(){return o},setClearColor:function(d,g=1){o.set(d),c=g,p(o,c)},getClearAlpha:function(){return c},setClearAlpha:function(d){c=d,p(o,c)},render:x}}function Sf(r,t,e,n){let i=r.getParameter(34921),s=n.isWebGL2?null:t.get("OES_vertex_array_object"),a=n.isWebGL2||s!==null,o={},c=d(null),l=c,h=!1;function f(I,k,Y,Z,H){let $=!1;if(a){let J=p(Z,Y,k);l!==J&&(l=J,m(l.object)),$=g(I,Z,Y,H),$&&M(I,Z,Y,H)}else{let J=k.wireframe===!0;(l.geometry!==Z.id||l.program!==Y.id||l.wireframe!==J)&&(l.geometry=Z.id,l.program=Y.id,l.wireframe=J,$=!0)}H!==null&&e.update(H,34963),($||h)&&(h=!1,y(I,k,Y,Z),H!==null&&r.bindBuffer(34963,e.get(H).buffer))}function u(){return n.isWebGL2?r.createVertexArray():s.createVertexArrayOES()}function m(I){return n.isWebGL2?r.bindVertexArray(I):s.bindVertexArrayOES(I)}function x(I){return n.isWebGL2?r.deleteVertexArray(I):s.deleteVertexArrayOES(I)}function p(I,k,Y){let Z=Y.wireframe===!0,H=o[I.id];H===void 0&&(H={},o[I.id]=H);let $=H[k.id];$===void 0&&($={},H[k.id]=$);let J=$[Z];return J===void 0&&(J=d(u()),$[Z]=J),J}function d(I){let k=[],Y=[],Z=[];for(let H=0;H<i;H++)k[H]=0,Y[H]=0,Z[H]=0;return{geometry:null,program:null,wireframe:!1,newAttributes:k,enabledAttributes:Y,attributeDivisors:Z,object:I,attributes:{},index:null}}function g(I,k,Y,Z){let H=l.attributes,$=k.attributes,J=0,dt=Y.getAttributes();for(let z in dt)if(dt[z].location>=0){let nt=H[z],it=$[z];if(it===void 0&&(z==="instanceMatrix"&&I.instanceMatrix&&(it=I.instanceMatrix),z==="instanceColor"&&I.instanceColor&&(it=I.instanceColor)),nt===void 0||nt.attribute!==it||it&&nt.data!==it.data)return!0;J++}return l.attributesNum!==J||l.index!==Z}function M(I,k,Y,Z){let H={},$=k.attributes,J=0,dt=Y.getAttributes();for(let z in dt)if(dt[z].location>=0){let nt=$[z];nt===void 0&&(z==="instanceMatrix"&&I.instanceMatrix&&(nt=I.instanceMatrix),z==="instanceColor"&&I.instanceColor&&(nt=I.instanceColor));let it={};it.attribute=nt,nt&&nt.data&&(it.data=nt.data),H[z]=it,J++}l.attributes=H,l.attributesNum=J,l.index=Z}function _(){let I=l.newAttributes;for(let k=0,Y=I.length;k<Y;k++)I[k]=0}function v(I){b(I,0)}function b(I,k){let Y=l.newAttributes,Z=l.enabledAttributes,H=l.attributeDivisors;Y[I]=1,Z[I]===0&&(r.enableVertexAttribArray(I),Z[I]=1),H[I]!==k&&((n.isWebGL2?r:t.get("ANGLE_instanced_arrays"))[n.isWebGL2?"vertexAttribDivisor":"vertexAttribDivisorANGLE"](I,k),H[I]=k)}function A(){let I=l.newAttributes,k=l.enabledAttributes;for(let Y=0,Z=k.length;Y<Z;Y++)k[Y]!==I[Y]&&(r.disableVertexAttribArray(Y),k[Y]=0)}function C(I,k,Y,Z,H,$){n.isWebGL2===!0&&(Y===5124||Y===5125)?r.vertexAttribIPointer(I,k,Y,H,$):r.vertexAttribPointer(I,k,Y,Z,H,$)}function y(I,k,Y,Z){if(n.isWebGL2===!1&&(I.isInstancedMesh||Z.isInstancedBufferGeometry)&&t.get("ANGLE_instanced_arrays")===null)return;_();let H=Z.attributes,$=Y.getAttributes(),J=k.defaultAttributeValues;for(let dt in $){let z=$[dt];if(z.location>=0){let K=H[dt];if(K===void 0&&(dt==="instanceMatrix"&&I.instanceMatrix&&(K=I.instanceMatrix),dt==="instanceColor"&&I.instanceColor&&(K=I.instanceColor)),K!==void 0){let nt=K.normalized,it=K.itemSize,U=e.get(K);if(U===void 0)continue;let Mt=U.buffer,ht=U.type,ut=U.bytesPerElement;if(K.isInterleavedBufferAttribute){let at=K.data,Ft=at.stride,bt=K.offset;if(at.isInstancedInterleavedBuffer){for(let _t=0;_t<z.locationSize;_t++)b(z.location+_t,at.meshPerAttribute);I.isInstancedMesh!==!0&&Z._maxInstanceCount===void 0&&(Z._maxInstanceCount=at.meshPerAttribute*at.count)}else for(let _t=0;_t<z.locationSize;_t++)v(z.location+_t);r.bindBuffer(34962,Mt);for(let _t=0;_t<z.locationSize;_t++)C(z.location+_t,it/z.locationSize,ht,nt,Ft*ut,(bt+it/z.locationSize*_t)*ut)}else{if(K.isInstancedBufferAttribute){for(let at=0;at<z.locationSize;at++)b(z.location+at,K.meshPerAttribute);I.isInstancedMesh!==!0&&Z._maxInstanceCount===void 0&&(Z._maxInstanceCount=K.meshPerAttribute*K.count)}else for(let at=0;at<z.locationSize;at++)v(z.location+at);r.bindBuffer(34962,Mt);for(let at=0;at<z.locationSize;at++)C(z.location+at,it/z.locationSize,ht,nt,it*ut,it/z.locationSize*at*ut)}}else if(J!==void 0){let nt=J[dt];if(nt!==void 0)switch(nt.length){case 2:r.vertexAttrib2fv(z.location,nt);break;case 3:r.vertexAttrib3fv(z.location,nt);break;case 4:r.vertexAttrib4fv(z.location,nt);break;default:r.vertexAttrib1fv(z.location,nt)}}}}A()}function S(){B();for(let I in o){let k=o[I];for(let Y in k){let Z=k[Y];for(let H in Z)x(Z[H].object),delete Z[H];delete k[Y]}delete o[I]}}function P(I){if(o[I.id]===void 0)return;let k=o[I.id];for(let Y in k){let Z=k[Y];for(let H in Z)x(Z[H].object),delete Z[H];delete k[Y]}delete o[I.id]}function O(I){for(let k in o){let Y=o[k];if(Y[I.id]===void 0)continue;let Z=Y[I.id];for(let H in Z)x(Z[H].object),delete Z[H];delete Y[I.id]}}function B(){D(),h=!0,l!==c&&(l=c,m(l.object))}function D(){c.geometry=null,c.program=null,c.wireframe=!1}return{setup:f,reset:B,resetDefaultState:D,dispose:S,releaseStatesOfGeometry:P,releaseStatesOfProgram:O,initAttributes:_,enableAttribute:v,disableUnusedAttributes:A}}function Tf(r,t,e,n){let i=n.isWebGL2,s;function a(l){s=l}function o(l,h){r.drawArrays(s,l,h),e.update(h,s,1)}function c(l,h,f){if(f===0)return;let u,m;if(i)u=r,m="drawArraysInstanced";else if(u=t.get("ANGLE_instanced_arrays"),m="drawArraysInstancedANGLE",u===null){console.error("THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");return}u[m](s,l,h,f),e.update(h,s,f)}this.setMode=a,this.render=o,this.renderInstances=c}function Af(r,t,e){let n;function i(){if(n!==void 0)return n;if(t.has("EXT_texture_filter_anisotropic")===!0){let C=t.get("EXT_texture_filter_anisotropic");n=r.getParameter(C.MAX_TEXTURE_MAX_ANISOTROPY_EXT)}else n=0;return n}function s(C){if(C==="highp"){if(r.getShaderPrecisionFormat(35633,36338).precision>0&&r.getShaderPrecisionFormat(35632,36338).precision>0)return"highp";C="mediump"}return C==="mediump"&&r.getShaderPrecisionFormat(35633,36337).precision>0&&r.getShaderPrecisionFormat(35632,36337).precision>0?"mediump":"lowp"}let a=typeof WebGL2RenderingContext!="undefined"&&r instanceof WebGL2RenderingContext,o=e.precision!==void 0?e.precision:"highp",c=s(o);c!==o&&(console.warn("THREE.WebGLRenderer:",o,"not supported, using",c,"instead."),o=c);let l=a||t.has("WEBGL_draw_buffers"),h=e.logarithmicDepthBuffer===!0,f=r.getParameter(34930),u=r.getParameter(35660),m=r.getParameter(3379),x=r.getParameter(34076),p=r.getParameter(34921),d=r.getParameter(36347),g=r.getParameter(36348),M=r.getParameter(36349),_=u>0,v=a||t.has("OES_texture_float"),b=_&&v,A=a?r.getParameter(36183):0;return{isWebGL2:a,drawBuffers:l,getMaxAnisotropy:i,getMaxPrecision:s,precision:o,logarithmicDepthBuffer:h,maxTextures:f,maxVertexTextures:u,maxTextureSize:m,maxCubemapSize:x,maxAttributes:p,maxVertexUniforms:d,maxVaryings:g,maxFragmentUniforms:M,vertexTextures:_,floatFragmentTextures:v,floatVertexTextures:b,maxSamples:A}}function Ef(r){let t=this,e=null,n=0,i=!1,s=!1,a=new Te,o=new le,c={value:null,needsUpdate:!1};this.uniform=c,this.numPlanes=0,this.numIntersection=0,this.init=function(f,u){let m=f.length!==0||u||n!==0||i;return i=u,n=f.length,m},this.beginShadows=function(){s=!0,h(null)},this.endShadows=function(){s=!1},this.setGlobalState=function(f,u){e=h(f,u,0)},this.setState=function(f,u,m){let x=f.clippingPlanes,p=f.clipIntersection,d=f.clipShadows,g=r.get(f);if(!i||x===null||x.length===0||s&&!d)s?h(null):l();else{let M=s?0:n,_=M*4,v=g.clippingState||null;c.value=v,v=h(x,u,_,m);for(let b=0;b!==_;++b)v[b]=e[b];g.clippingState=v,this.numIntersection=p?this.numPlanes:0,this.numPlanes+=M}};function l(){c.value!==e&&(c.value=e,c.needsUpdate=n>0),t.numPlanes=n,t.numIntersection=0}function h(f,u,m,x){let p=f!==null?f.length:0,d=null;if(p!==0){if(d=c.value,x!==!0||d===null){let g=m+p*4,M=u.matrixWorldInverse;o.getNormalMatrix(M),(d===null||d.length<g)&&(d=new Float32Array(g));for(let _=0,v=m;_!==p;++_,v+=4)a.copy(f[_]).applyMatrix4(M,o),a.normal.toArray(d,v),d[v+3]=a.constant}c.value=d,c.needsUpdate=!0}return t.numPlanes=p,t.numIntersection=0,d}}function Cf(r){let t=new WeakMap;function e(a,o){return o===Cr?a.mapping=ci:o===Pr&&(a.mapping=li),a}function n(a){if(a&&a.isTexture&&a.isRenderTargetTexture===!1){let o=a.mapping;if(o===Cr||o===Pr)if(t.has(a)){let c=t.get(a).texture;return e(c,a.mapping)}else{let c=a.image;if(c&&c.height>0){let l=new Or(c.height/2);return l.fromEquirectangularTexture(r,a),t.set(a,l),a.addEventListener("dispose",i),e(l.texture,a.mapping)}else return null}}return a}function i(a){let o=a.target;o.removeEventListener("dispose",i);let c=t.get(o);c!==void 0&&(t.delete(o),c.dispose())}function s(){t=new WeakMap}return{get:n,dispose:s}}var Br=class extends Es{constructor(t=-1,e=1,n=1,i=-1,s=.1,a=2e3){super(),this.isOrthographicCamera=!0,this.type="OrthographicCamera",this.zoom=1,this.view=null,this.left=t,this.right=e,this.top=n,this.bottom=i,this.near=s,this.far=a,this.updateProjectionMatrix()}copy(t,e){return super.copy(t,e),this.left=t.left,this.right=t.right,this.top=t.top,this.bottom=t.bottom,this.near=t.near,this.far=t.far,this.zoom=t.zoom,this.view=t.view===null?null:Object.assign({},t.view),this}setViewOffset(t,e,n,i,s,a){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=t,this.view.fullHeight=e,this.view.offsetX=n,this.view.offsetY=i,this.view.width=s,this.view.height=a,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){let t=(this.right-this.left)/(2*this.zoom),e=(this.top-this.bottom)/(2*this.zoom),n=(this.right+this.left)/2,i=(this.top+this.bottom)/2,s=n-t,a=n+t,o=i+e,c=i-e;if(this.view!==null&&this.view.enabled){let l=(this.right-this.left)/this.view.fullWidth/this.zoom,h=(this.top-this.bottom)/this.view.fullHeight/this.zoom;s+=l*this.view.offsetX,a=s+l*this.view.width,o-=h*this.view.offsetY,c=o-h*this.view.height}this.projectionMatrix.makeOrthographic(s,a,o,c,this.near,this.far),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(t){let e=super.toJSON(t);return e.object.zoom=this.zoom,e.object.left=this.left,e.object.right=this.right,e.object.top=this.top,e.object.bottom=this.bottom,e.object.near=this.near,e.object.far=this.far,this.view!==null&&(e.object.view=Object.assign({},this.view)),e}},ii=4,ba=[.125,.215,.35,.446,.526,.582],Cn=20,Sr=new Br,wa=new Bt,Tr=null,En=(1+Math.sqrt(5))/2,ei=1/En,Sa=[new R(1,1,1),new R(-1,1,1),new R(1,1,-1),new R(-1,1,-1),new R(0,En,ei),new R(0,En,-ei),new R(ei,0,En),new R(-ei,0,En),new R(En,ei,0),new R(-En,ei,0)],Rs=class{constructor(t){this._renderer=t,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(t,e=0,n=.1,i=100){Tr=this._renderer.getRenderTarget(),this._setSize(256);let s=this._allocateTargets();return s.depthBuffer=!0,this._sceneToCubeUV(t,n,i,s),e>0&&this._blur(s,0,0,e),this._applyPMREM(s),this._cleanup(s),s}fromEquirectangular(t,e=null){return this._fromTexture(t,e)}fromCubemap(t,e=null){return this._fromTexture(t,e)}compileCubemapShader(){this._cubemapMaterial===null&&(this._cubemapMaterial=Ea(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){this._equirectMaterial===null&&(this._equirectMaterial=Aa(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),this._cubemapMaterial!==null&&this._cubemapMaterial.dispose(),this._equirectMaterial!==null&&this._equirectMaterial.dispose()}_setSize(t){this._lodMax=Math.floor(Math.log2(t)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){this._blurMaterial!==null&&this._blurMaterial.dispose(),this._pingPongRenderTarget!==null&&this._pingPongRenderTarget.dispose();for(let t=0;t<this._lodPlanes.length;t++)this._lodPlanes[t].dispose()}_cleanup(t){this._renderer.setRenderTarget(Tr),t.scissorTest=!1,ds(t,0,0,t.width,t.height)}_fromTexture(t,e){t.mapping===ci||t.mapping===li?this._setSize(t.image.length===0?16:t.image[0].width||t.image[0].image.width):this._setSize(t.image.width/4),Tr=this._renderer.getRenderTarget();let n=e||this._allocateTargets();return this._textureToCubeUV(t,n),this._applyPMREM(n),this._cleanup(n),n}_allocateTargets(){let t=3*Math.max(this._cubeSize,112),e=4*this._cubeSize,n={magFilter:Re,minFilter:Re,generateMipmaps:!1,type:Bi,format:Be,encoding:Nn,depthBuffer:!1},i=Ta(t,e,n);if(this._pingPongRenderTarget===null||this._pingPongRenderTarget.width!==t||this._pingPongRenderTarget.height!==e){this._pingPongRenderTarget!==null&&this._dispose(),this._pingPongRenderTarget=Ta(t,e,n);let{_lodMax:s}=this;({sizeLods:this._sizeLods,lodPlanes:this._lodPlanes,sigmas:this._sigmas}=Pf(s)),this._blurMaterial=Rf(s,t,e)}return i}_compileMaterial(t){let e=new qe(this._lodPlanes[0],t);this._renderer.compile(e,Sr)}_sceneToCubeUV(t,e,n,i){let o=new Se(90,1,e,n),c=[1,-1,1,1,1,1],l=[1,1,1,-1,-1,-1],h=this._renderer,f=h.autoClear,u=h.toneMapping;h.getClearColor(wa),h.toneMapping=nn,h.autoClear=!1;let m=new Ss({name:"PMREM.Background",side:he,depthWrite:!1,depthTest:!1}),x=new qe(new zn,m),p=!1,d=t.background;d?d.isColor&&(m.color.copy(d),t.background=null,p=!0):(m.color.copy(wa),p=!0);for(let g=0;g<6;g++){let M=g%3;M===0?(o.up.set(0,c[g],0),o.lookAt(l[g],0,0)):M===1?(o.up.set(0,0,c[g]),o.lookAt(0,l[g],0)):(o.up.set(0,c[g],0),o.lookAt(0,0,l[g]));let _=this._cubeSize;ds(i,M*_,g>2?_:0,_,_),h.setRenderTarget(i),p&&h.render(x,o),h.render(t,o)}x.geometry.dispose(),x.material.dispose(),h.toneMapping=u,h.autoClear=f,t.background=d}_textureToCubeUV(t,e){let n=this._renderer,i=t.mapping===ci||t.mapping===li;i?(this._cubemapMaterial===null&&(this._cubemapMaterial=Ea()),this._cubemapMaterial.uniforms.flipEnvMap.value=t.isRenderTargetTexture===!1?-1:1):this._equirectMaterial===null&&(this._equirectMaterial=Aa());let s=i?this._cubemapMaterial:this._equirectMaterial,a=new qe(this._lodPlanes[0],s),o=s.uniforms;o.envMap.value=t;let c=this._cubeSize;ds(e,0,0,3*c,2*c),n.setRenderTarget(e),n.render(a,Sr)}_applyPMREM(t){let e=this._renderer,n=e.autoClear;e.autoClear=!1;for(let i=1;i<this._lodPlanes.length;i++){let s=Math.sqrt(this._sigmas[i]*this._sigmas[i]-this._sigmas[i-1]*this._sigmas[i-1]),a=Sa[(i-1)%Sa.length];this._blur(t,i-1,i,s,a)}e.autoClear=n}_blur(t,e,n,i,s){let a=this._pingPongRenderTarget;this._halfBlur(t,a,e,n,i,"latitudinal",s),this._halfBlur(a,t,n,n,i,"longitudinal",s)}_halfBlur(t,e,n,i,s,a,o){let c=this._renderer,l=this._blurMaterial;a!=="latitudinal"&&a!=="longitudinal"&&console.error("blur direction must be either latitudinal or longitudinal!");let h=3,f=new qe(this._lodPlanes[i],l),u=l.uniforms,m=this._sizeLods[n]-1,x=isFinite(s)?Math.PI/(2*m):2*Math.PI/(2*Cn-1),p=s/x,d=isFinite(s)?1+Math.floor(h*p):Cn;d>Cn&&console.warn(\`sigmaRadians, \${s}, is too large and will clip, as it requested \${d} samples when the maximum is set to \${Cn}\`);let g=[],M=0;for(let C=0;C<Cn;++C){let y=C/p,S=Math.exp(-y*y/2);g.push(S),C===0?M+=S:C<d&&(M+=2*S)}for(let C=0;C<g.length;C++)g[C]=g[C]/M;u.envMap.value=t.texture,u.samples.value=d,u.weights.value=g,u.latitudinal.value=a==="latitudinal",o&&(u.poleAxis.value=o);let{_lodMax:_}=this;u.dTheta.value=x,u.mipInt.value=_-n;let v=this._sizeLods[i],b=3*v*(i>_-ii?i-_+ii:0),A=4*(this._cubeSize-v);ds(e,b,A,3*v,2*v),c.setRenderTarget(e),c.render(f,Sr)}};function Pf(r){let t=[],e=[],n=[],i=r,s=r-ii+1+ba.length;for(let a=0;a<s;a++){let o=Math.pow(2,i);e.push(o);let c=1/o;a>r-ii?c=ba[a-r+ii-1]:a===0&&(c=0),n.push(c);let l=1/(o-2),h=-l,f=1+l,u=[h,h,f,h,f,f,h,h,f,f,h,f],m=6,x=6,p=3,d=2,g=1,M=new Float32Array(p*x*m),_=new Float32Array(d*x*m),v=new Float32Array(g*x*m);for(let A=0;A<m;A++){let C=A%3*2/3-1,y=A>2?0:-1,S=[C,y,0,C+2/3,y,0,C+2/3,y+1,0,C,y,0,C+2/3,y+1,0,C,y+1,0];M.set(S,p*x*A),_.set(u,d*x*A);let P=[A,A,A,A,A,A];v.set(P,g*x*A)}let b=new ke;b.setAttribute("position",new Yt(M,p)),b.setAttribute("uv",new Yt(_,d)),b.setAttribute("faceIndex",new Yt(v,g)),t.push(b),i>ii&&i--}return{lodPlanes:t,sizeLods:e,sigmas:n}}function Ta(r,t,e){let n=new rn(r,t,e);return n.texture.mapping=Ls,n.texture.name="PMREM.cubeUv",n.scissorTest=!0,n}function ds(r,t,e,n,i){r.viewport.set(t,e,n,i),r.scissor.set(t,e,n,i)}function Rf(r,t,e){let n=new Float32Array(Cn),i=new R(0,1,0);return new on({name:"SphericalGaussianBlur",defines:{n:Cn,CUBEUV_TEXEL_WIDTH:1/t,CUBEUV_TEXEL_HEIGHT:1/e,CUBEUV_MAX_MIP:\`\${r}.0\`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:n},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:i}},vertexShader:oo(),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:pn,depthTest:!1,depthWrite:!1})}function Aa(){return new on({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null}},vertexShader:oo(),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:pn,depthTest:!1,depthWrite:!1})}function Ea(){return new on({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:oo(),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:pn,depthTest:!1,depthWrite:!1})}function oo(){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 Lf(r){let t=new WeakMap,e=null;function n(o){if(o&&o.isTexture){let c=o.mapping,l=c===Cr||c===Pr,h=c===ci||c===li;if(l||h)if(o.isRenderTargetTexture&&o.needsPMREMUpdate===!0){o.needsPMREMUpdate=!1;let f=t.get(o);return e===null&&(e=new Rs(r)),f=l?e.fromEquirectangular(o,f):e.fromCubemap(o,f),t.set(o,f),f.texture}else{if(t.has(o))return t.get(o).texture;{let f=o.image;if(l&&f&&f.height>0||h&&f&&i(f)){e===null&&(e=new Rs(r));let u=l?e.fromEquirectangular(o):e.fromCubemap(o);return t.set(o,u),o.addEventListener("dispose",s),u.texture}else return null}}}return o}function i(o){let c=0,l=6;for(let h=0;h<l;h++)o[h]!==void 0&&c++;return c===l}function s(o){let c=o.target;c.removeEventListener("dispose",s);let l=t.get(c);l!==void 0&&(t.delete(c),l.dispose())}function a(){t=new WeakMap,e!==null&&(e.dispose(),e=null)}return{get:n,dispose:a}}function If(r){let t={};function e(n){if(t[n]!==void 0)return t[n];let i;switch(n){case"WEBGL_depth_texture":i=r.getExtension("WEBGL_depth_texture")||r.getExtension("MOZ_WEBGL_depth_texture")||r.getExtension("WEBKIT_WEBGL_depth_texture");break;case"EXT_texture_filter_anisotropic":i=r.getExtension("EXT_texture_filter_anisotropic")||r.getExtension("MOZ_EXT_texture_filter_anisotropic")||r.getExtension("WEBKIT_EXT_texture_filter_anisotropic");break;case"WEBGL_compressed_texture_s3tc":i=r.getExtension("WEBGL_compressed_texture_s3tc")||r.getExtension("MOZ_WEBGL_compressed_texture_s3tc")||r.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");break;case"WEBGL_compressed_texture_pvrtc":i=r.getExtension("WEBGL_compressed_texture_pvrtc")||r.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc");break;default:i=r.getExtension(n)}return t[n]=i,i}return{has:function(n){return e(n)!==null},init:function(n){n.isWebGL2?e("EXT_color_buffer_float"):(e("WEBGL_depth_texture"),e("OES_texture_float"),e("OES_texture_half_float"),e("OES_texture_half_float_linear"),e("OES_standard_derivatives"),e("OES_element_index_uint"),e("OES_vertex_array_object"),e("ANGLE_instanced_arrays")),e("OES_texture_float_linear"),e("EXT_color_buffer_half_float"),e("WEBGL_multisampled_render_to_texture")},get:function(n){let i=e(n);return i===null&&console.warn("THREE.WebGLRenderer: "+n+" extension not supported."),i}}}function Df(r,t,e,n){let i={},s=new WeakMap;function a(f){let u=f.target;u.index!==null&&t.remove(u.index);for(let x in u.attributes)t.remove(u.attributes[x]);u.removeEventListener("dispose",a),delete i[u.id];let m=s.get(u);m&&(t.remove(m),s.delete(u)),n.releaseStatesOfGeometry(u),u.isInstancedBufferGeometry===!0&&delete u._maxInstanceCount,e.memory.geometries--}function o(f,u){return i[u.id]===!0||(u.addEventListener("dispose",a),i[u.id]=!0,e.memory.geometries++),u}function c(f){let u=f.attributes;for(let x in u)t.update(u[x],34962);let m=f.morphAttributes;for(let x in m){let p=m[x];for(let d=0,g=p.length;d<g;d++)t.update(p[d],34962)}}function l(f){let u=[],m=f.index,x=f.attributes.position,p=0;if(m!==null){let M=m.array;p=m.version;for(let _=0,v=M.length;_<v;_+=3){let b=M[_+0],A=M[_+1],C=M[_+2];u.push(b,A,A,C,C,b)}}else{let M=x.array;p=x.version;for(let _=0,v=M.length/3-1;_<v;_+=3){let b=_+0,A=_+1,C=_+2;u.push(b,A,A,C,C,b)}}let d=new($a(u)?As:Ts)(u,1);d.version=p;let g=s.get(f);g&&t.remove(g),s.set(f,d)}function h(f){let u=s.get(f);if(u){let m=f.index;m!==null&&u.version<m.version&&l(f)}else l(f);return s.get(f)}return{get:o,update:c,getWireframeAttribute:h}}function Nf(r,t,e,n){let i=n.isWebGL2,s;function a(u){s=u}let o,c;function l(u){o=u.type,c=u.bytesPerElement}function h(u,m){r.drawElements(s,m,o,u*c),e.update(m,s,1)}function f(u,m,x){if(x===0)return;let p,d;if(i)p=r,d="drawElementsInstanced";else if(p=t.get("ANGLE_instanced_arrays"),d="drawElementsInstancedANGLE",p===null){console.error("THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");return}p[d](s,m,o,u*c,x),e.update(m,s,x)}this.setMode=a,this.setIndex=l,this.render=h,this.renderInstances=f}function Ff(r){let t={geometries:0,textures:0},e={frame:0,calls:0,triangles:0,points:0,lines:0};function n(s,a,o){switch(e.calls++,a){case 4:e.triangles+=o*(s/3);break;case 1:e.lines+=o*(s/2);break;case 3:e.lines+=o*(s-1);break;case 2:e.lines+=o*s;break;case 0:e.points+=o*s;break;default:console.error("THREE.WebGLInfo: Unknown draw mode:",a);break}}function i(){e.frame++,e.calls=0,e.triangles=0,e.points=0,e.lines=0}return{memory:t,render:e,programs:null,autoReset:!0,reset:i,update:n}}function zf(r,t){return r[0]-t[0]}function Of(r,t){return Math.abs(t[1])-Math.abs(r[1])}function Bf(r,t,e){let n={},i=new Float32Array(8),s=new WeakMap,a=new Xt,o=[];for(let l=0;l<8;l++)o[l]=[l,0];function c(l,h,f,u){let m=l.morphTargetInfluences;if(t.isWebGL2===!0){let x=h.morphAttributes.position||h.morphAttributes.normal||h.morphAttributes.color,p=x!==void 0?x.length:0,d=s.get(h);if(d===void 0||d.count!==p){let k=function(){D.dispose(),s.delete(h),h.removeEventListener("dispose",k)};d!==void 0&&d.texture.dispose();let _=h.morphAttributes.position!==void 0,v=h.morphAttributes.normal!==void 0,b=h.morphAttributes.color!==void 0,A=h.morphAttributes.position||[],C=h.morphAttributes.normal||[],y=h.morphAttributes.color||[],S=0;_===!0&&(S=1),v===!0&&(S=2),b===!0&&(S=3);let P=h.attributes.position.count*S,O=1;P>t.maxTextureSize&&(O=Math.ceil(P/t.maxTextureSize),P=t.maxTextureSize);let B=new Float32Array(P*O*4*p),D=new bs(B,P,O,p);D.type=Rn,D.needsUpdate=!0;let I=S*4;for(let Y=0;Y<p;Y++){let Z=A[Y],H=C[Y],$=y[Y],J=P*O*4*Y;for(let dt=0;dt<Z.count;dt++){let z=dt*I;_===!0&&(a.fromBufferAttribute(Z,dt),B[J+z+0]=a.x,B[J+z+1]=a.y,B[J+z+2]=a.z,B[J+z+3]=0),v===!0&&(a.fromBufferAttribute(H,dt),B[J+z+4]=a.x,B[J+z+5]=a.y,B[J+z+6]=a.z,B[J+z+7]=0),b===!0&&(a.fromBufferAttribute($,dt),B[J+z+8]=a.x,B[J+z+9]=a.y,B[J+z+10]=a.z,B[J+z+11]=$.itemSize===4?a.w:1)}}d={count:p,texture:D,size:new At(P,O)},s.set(h,d),h.addEventListener("dispose",k)}let g=0;for(let _=0;_<m.length;_++)g+=m[_];let M=h.morphTargetsRelative?1:1-g;u.getUniforms().setValue(r,"morphTargetBaseInfluence",M),u.getUniforms().setValue(r,"morphTargetInfluences",m),u.getUniforms().setValue(r,"morphTargetsTexture",d.texture,e),u.getUniforms().setValue(r,"morphTargetsTextureSize",d.size)}else{let x=m===void 0?0:m.length,p=n[h.id];if(p===void 0||p.length!==x){p=[];for(let v=0;v<x;v++)p[v]=[v,0];n[h.id]=p}for(let v=0;v<x;v++){let b=p[v];b[0]=v,b[1]=m[v]}p.sort(Of);for(let v=0;v<8;v++)v<x&&p[v][1]?(o[v][0]=p[v][0],o[v][1]=p[v][1]):(o[v][0]=Number.MAX_SAFE_INTEGER,o[v][1]=0);o.sort(zf);let d=h.morphAttributes.position,g=h.morphAttributes.normal,M=0;for(let v=0;v<8;v++){let b=o[v],A=b[0],C=b[1];A!==Number.MAX_SAFE_INTEGER&&C?(d&&h.getAttribute("morphTarget"+v)!==d[A]&&h.setAttribute("morphTarget"+v,d[A]),g&&h.getAttribute("morphNormal"+v)!==g[A]&&h.setAttribute("morphNormal"+v,g[A]),i[v]=C,M+=C):(d&&h.hasAttribute("morphTarget"+v)===!0&&h.deleteAttribute("morphTarget"+v),g&&h.hasAttribute("morphNormal"+v)===!0&&h.deleteAttribute("morphNormal"+v),i[v]=0)}let _=h.morphTargetsRelative?1:1-M;u.getUniforms().setValue(r,"morphTargetBaseInfluence",_),u.getUniforms().setValue(r,"morphTargetInfluences",i)}}return{update:c}}function Uf(r,t,e,n){let i=new WeakMap;function s(c){let l=n.render.frame,h=c.geometry,f=t.get(c,h);return i.get(f)!==l&&(t.update(f),i.set(f,l)),c.isInstancedMesh&&(c.hasEventListener("dispose",o)===!1&&c.addEventListener("dispose",o),e.update(c.instanceMatrix,34962),c.instanceColor!==null&&e.update(c.instanceColor,34962)),f}function a(){i=new WeakMap}function o(c){let l=c.target;l.removeEventListener("dispose",o),e.remove(l.instanceMatrix),l.instanceColor!==null&&e.remove(l.instanceColor)}return{update:s,dispose:a}}var tc=new ue,ec=new bs,nc=new Nr,ic=new Cs,Ca=[],Pa=[],Ra=new Float32Array(16),La=new Float32Array(9),Ia=new Float32Array(4);function mi(r,t,e){let n=r[0];if(n<=0||n>0)return r;let i=t*e,s=Ca[i];if(s===void 0&&(s=new Float32Array(i),Ca[i]=s),t!==0){n.toArray(s,0);for(let a=1,o=0;a!==t;++a)o+=e,r[a].toArray(s,o)}return s}function Zt(r,t){if(r.length!==t.length)return!1;for(let e=0,n=r.length;e<n;e++)if(r[e]!==t[e])return!1;return!0}function Jt(r,t){for(let e=0,n=t.length;e<n;e++)r[e]=t[e]}function Is(r,t){let e=Pa[t];e===void 0&&(e=new Int32Array(t),Pa[t]=e);for(let n=0;n!==t;++n)e[n]=r.allocateTextureUnit();return e}function kf(r,t){let e=this.cache;e[0]!==t&&(r.uniform1f(this.addr,t),e[0]=t)}function Vf(r,t){let e=this.cache;if(t.x!==void 0)(e[0]!==t.x||e[1]!==t.y)&&(r.uniform2f(this.addr,t.x,t.y),e[0]=t.x,e[1]=t.y);else{if(Zt(e,t))return;r.uniform2fv(this.addr,t),Jt(e,t)}}function Gf(r,t){let e=this.cache;if(t.x!==void 0)(e[0]!==t.x||e[1]!==t.y||e[2]!==t.z)&&(r.uniform3f(this.addr,t.x,t.y,t.z),e[0]=t.x,e[1]=t.y,e[2]=t.z);else if(t.r!==void 0)(e[0]!==t.r||e[1]!==t.g||e[2]!==t.b)&&(r.uniform3f(this.addr,t.r,t.g,t.b),e[0]=t.r,e[1]=t.g,e[2]=t.b);else{if(Zt(e,t))return;r.uniform3fv(this.addr,t),Jt(e,t)}}function Hf(r,t){let e=this.cache;if(t.x!==void 0)(e[0]!==t.x||e[1]!==t.y||e[2]!==t.z||e[3]!==t.w)&&(r.uniform4f(this.addr,t.x,t.y,t.z,t.w),e[0]=t.x,e[1]=t.y,e[2]=t.z,e[3]=t.w);else{if(Zt(e,t))return;r.uniform4fv(this.addr,t),Jt(e,t)}}function Wf(r,t){let e=this.cache,n=t.elements;if(n===void 0){if(Zt(e,t))return;r.uniformMatrix2fv(this.addr,!1,t),Jt(e,t)}else{if(Zt(e,n))return;Ia.set(n),r.uniformMatrix2fv(this.addr,!1,Ia),Jt(e,n)}}function qf(r,t){let e=this.cache,n=t.elements;if(n===void 0){if(Zt(e,t))return;r.uniformMatrix3fv(this.addr,!1,t),Jt(e,t)}else{if(Zt(e,n))return;La.set(n),r.uniformMatrix3fv(this.addr,!1,La),Jt(e,n)}}function Xf(r,t){let e=this.cache,n=t.elements;if(n===void 0){if(Zt(e,t))return;r.uniformMatrix4fv(this.addr,!1,t),Jt(e,t)}else{if(Zt(e,n))return;Ra.set(n),r.uniformMatrix4fv(this.addr,!1,Ra),Jt(e,n)}}function Yf(r,t){let e=this.cache;e[0]!==t&&(r.uniform1i(this.addr,t),e[0]=t)}function Zf(r,t){let e=this.cache;if(t.x!==void 0)(e[0]!==t.x||e[1]!==t.y)&&(r.uniform2i(this.addr,t.x,t.y),e[0]=t.x,e[1]=t.y);else{if(Zt(e,t))return;r.uniform2iv(this.addr,t),Jt(e,t)}}function Jf(r,t){let e=this.cache;if(t.x!==void 0)(e[0]!==t.x||e[1]!==t.y||e[2]!==t.z)&&(r.uniform3i(this.addr,t.x,t.y,t.z),e[0]=t.x,e[1]=t.y,e[2]=t.z);else{if(Zt(e,t))return;r.uniform3iv(this.addr,t),Jt(e,t)}}function $f(r,t){let e=this.cache;if(t.x!==void 0)(e[0]!==t.x||e[1]!==t.y||e[2]!==t.z||e[3]!==t.w)&&(r.uniform4i(this.addr,t.x,t.y,t.z,t.w),e[0]=t.x,e[1]=t.y,e[2]=t.z,e[3]=t.w);else{if(Zt(e,t))return;r.uniform4iv(this.addr,t),Jt(e,t)}}function Kf(r,t){let e=this.cache;e[0]!==t&&(r.uniform1ui(this.addr,t),e[0]=t)}function jf(r,t){let e=this.cache;if(t.x!==void 0)(e[0]!==t.x||e[1]!==t.y)&&(r.uniform2ui(this.addr,t.x,t.y),e[0]=t.x,e[1]=t.y);else{if(Zt(e,t))return;r.uniform2uiv(this.addr,t),Jt(e,t)}}function Qf(r,t){let e=this.cache;if(t.x!==void 0)(e[0]!==t.x||e[1]!==t.y||e[2]!==t.z)&&(r.uniform3ui(this.addr,t.x,t.y,t.z),e[0]=t.x,e[1]=t.y,e[2]=t.z);else{if(Zt(e,t))return;r.uniform3uiv(this.addr,t),Jt(e,t)}}function td(r,t){let e=this.cache;if(t.x!==void 0)(e[0]!==t.x||e[1]!==t.y||e[2]!==t.z||e[3]!==t.w)&&(r.uniform4ui(this.addr,t.x,t.y,t.z,t.w),e[0]=t.x,e[1]=t.y,e[2]=t.z,e[3]=t.w);else{if(Zt(e,t))return;r.uniform4uiv(this.addr,t),Jt(e,t)}}function ed(r,t,e){let n=this.cache,i=e.allocateTextureUnit();n[0]!==i&&(r.uniform1i(this.addr,i),n[0]=i),e.setTexture2D(t||tc,i)}function nd(r,t,e){let n=this.cache,i=e.allocateTextureUnit();n[0]!==i&&(r.uniform1i(this.addr,i),n[0]=i),e.setTexture3D(t||nc,i)}function id(r,t,e){let n=this.cache,i=e.allocateTextureUnit();n[0]!==i&&(r.uniform1i(this.addr,i),n[0]=i),e.setTextureCube(t||ic,i)}function sd(r,t,e){let n=this.cache,i=e.allocateTextureUnit();n[0]!==i&&(r.uniform1i(this.addr,i),n[0]=i),e.setTexture2DArray(t||ec,i)}function rd(r){switch(r){case 5126:return kf;case 35664:return Vf;case 35665:return Gf;case 35666:return Hf;case 35674:return Wf;case 35675:return qf;case 35676:return Xf;case 5124:case 35670:return Yf;case 35667:case 35671:return Zf;case 35668:case 35672:return Jf;case 35669:case 35673:return $f;case 5125:return Kf;case 36294:return jf;case 36295:return Qf;case 36296:return td;case 35678:case 36198:case 36298:case 36306:case 35682:return ed;case 35679:case 36299:case 36307:return nd;case 35680:case 36300:case 36308:case 36293:return id;case 36289:case 36303:case 36311:case 36292:return sd}}function od(r,t){r.uniform1fv(this.addr,t)}function ad(r,t){let e=mi(t,this.size,2);r.uniform2fv(this.addr,e)}function cd(r,t){let e=mi(t,this.size,3);r.uniform3fv(this.addr,e)}function ld(r,t){let e=mi(t,this.size,4);r.uniform4fv(this.addr,e)}function hd(r,t){let e=mi(t,this.size,4);r.uniformMatrix2fv(this.addr,!1,e)}function ud(r,t){let e=mi(t,this.size,9);r.uniformMatrix3fv(this.addr,!1,e)}function fd(r,t){let e=mi(t,this.size,16);r.uniformMatrix4fv(this.addr,!1,e)}function dd(r,t){r.uniform1iv(this.addr,t)}function pd(r,t){r.uniform2iv(this.addr,t)}function md(r,t){r.uniform3iv(this.addr,t)}function gd(r,t){r.uniform4iv(this.addr,t)}function xd(r,t){r.uniform1uiv(this.addr,t)}function _d(r,t){r.uniform2uiv(this.addr,t)}function yd(r,t){r.uniform3uiv(this.addr,t)}function vd(r,t){r.uniform4uiv(this.addr,t)}function Md(r,t,e){let n=this.cache,i=t.length,s=Is(e,i);Zt(n,s)||(r.uniform1iv(this.addr,s),Jt(n,s));for(let a=0;a!==i;++a)e.setTexture2D(t[a]||tc,s[a])}function bd(r,t,e){let n=this.cache,i=t.length,s=Is(e,i);Zt(n,s)||(r.uniform1iv(this.addr,s),Jt(n,s));for(let a=0;a!==i;++a)e.setTexture3D(t[a]||nc,s[a])}function wd(r,t,e){let n=this.cache,i=t.length,s=Is(e,i);Zt(n,s)||(r.uniform1iv(this.addr,s),Jt(n,s));for(let a=0;a!==i;++a)e.setTextureCube(t[a]||ic,s[a])}function Sd(r,t,e){let n=this.cache,i=t.length,s=Is(e,i);Zt(n,s)||(r.uniform1iv(this.addr,s),Jt(n,s));for(let a=0;a!==i;++a)e.setTexture2DArray(t[a]||ec,s[a])}function Td(r){switch(r){case 5126:return od;case 35664:return ad;case 35665:return cd;case 35666:return ld;case 35674:return hd;case 35675:return ud;case 35676:return fd;case 5124:case 35670:return dd;case 35667:case 35671:return pd;case 35668:case 35672:return md;case 35669:case 35673:return gd;case 5125:return xd;case 36294:return _d;case 36295:return yd;case 36296:return vd;case 35678:case 36198:case 36298:case 36306:case 35682:return Md;case 35679:case 36299:case 36307:return bd;case 35680:case 36300:case 36308:case 36293:return wd;case 36289:case 36303:case 36311:case 36292:return Sd}}var Ur=class{constructor(t,e,n){this.id=t,this.addr=n,this.cache=[],this.setValue=rd(e.type)}},kr=class{constructor(t,e,n){this.id=t,this.addr=n,this.cache=[],this.size=e.size,this.setValue=Td(e.type)}},Vr=class{constructor(t){this.id=t,this.seq=[],this.map={}}setValue(t,e,n){let i=this.seq;for(let s=0,a=i.length;s!==a;++s){let o=i[s];o.setValue(t,e[o.id],n)}}},Ar=/(\\w+)(\\])?(\\[|\\.)?/g;function Da(r,t){r.seq.push(t),r.map[t.id]=t}function Ad(r,t,e){let n=r.name,i=n.length;for(Ar.lastIndex=0;;){let s=Ar.exec(n),a=Ar.lastIndex,o=s[1],c=s[2]==="]",l=s[3];if(c&&(o=o|0),l===void 0||l==="["&&a+2===i){Da(e,l===void 0?new Ur(o,r,t):new kr(o,r,t));break}else{let f=e.map[o];f===void 0&&(f=new Vr(o),Da(e,f)),e=f}}}var ai=class{constructor(t,e){this.seq=[],this.map={};let n=t.getProgramParameter(e,35718);for(let i=0;i<n;++i){let s=t.getActiveUniform(e,i),a=t.getUniformLocation(e,s.name);Ad(s,a,this)}}setValue(t,e,n,i){let s=this.map[e];s!==void 0&&s.setValue(t,n,i)}setOptional(t,e,n){let i=e[n];i!==void 0&&this.setValue(t,n,i)}static upload(t,e,n,i){for(let s=0,a=e.length;s!==a;++s){let o=e[s],c=n[o.id];c.needsUpdate!==!1&&o.setValue(t,c.value,i)}}static seqWithValue(t,e){let n=[];for(let i=0,s=t.length;i!==s;++i){let a=t[i];a.id in e&&n.push(a)}return n}};function Na(r,t,e){let n=r.createShader(t);return r.shaderSource(n,e),r.compileShader(n),n}var Ed=0;function Cd(r,t){let e=r.split(\`
|
||
\`),n=[],i=Math.max(t-6,0),s=Math.min(t+6,e.length);for(let a=i;a<s;a++){let o=a+1;n.push(\`\${o===t?">":" "} \${o}: \${e[a]}\`)}return n.join(\`
|
||
\`)}function Pd(r){switch(r){case Nn:return["Linear","( value )"];case Ot:return["sRGB","( value )"];default:return console.warn("THREE.WebGLProgram: Unsupported encoding:",r),["Linear","( value )"]}}function Fa(r,t,e){let n=r.getShaderParameter(t,35713),i=r.getShaderInfoLog(t).trim();if(n&&i==="")return"";let s=/ERROR: 0:(\\d+)/.exec(i);if(s){let a=parseInt(s[1]);return e.toUpperCase()+\`
|
||
|
||
\`+i+\`
|
||
|
||
\`+Cd(r.getShaderSource(t),a)}else return i}function Rd(r,t){let e=Pd(t);return"vec4 "+r+"( vec4 value ) { return LinearTo"+e[0]+e[1]+"; }"}function Ld(r,t){let e;switch(t){case Qc:e="Linear";break;case tl:e="Reinhard";break;case el:e="OptimizedCineon";break;case nl:e="ACESFilmic";break;case il:e="Custom";break;default:console.warn("THREE.WebGLProgram: Unsupported toneMapping:",t),e="Linear"}return"vec3 "+r+"( vec3 color ) { return "+e+"ToneMapping( color ); }"}function Id(r){return[r.extensionDerivatives||r.envMapCubeUVHeight||r.bumpMap||r.tangentSpaceNormalMap||r.clearcoatNormalMap||r.flatShading||r.shaderID==="physical"?"#extension GL_OES_standard_derivatives : enable":"",(r.extensionFragDepth||r.logarithmicDepthBuffer)&&r.rendererExtensionFragDepth?"#extension GL_EXT_frag_depth : enable":"",r.extensionDrawBuffers&&r.rendererExtensionDrawBuffers?"#extension GL_EXT_draw_buffers : require":"",(r.extensionShaderTextureLOD||r.envMap||r.transmission)&&r.rendererExtensionShaderTextureLod?"#extension GL_EXT_shader_texture_lod : enable":""].filter(Fi).join(\`
|
||
\`)}function Dd(r){let t=[];for(let e in r){let n=r[e];n!==!1&&t.push("#define "+e+" "+n)}return t.join(\`
|
||
\`)}function Nd(r,t){let e={},n=r.getProgramParameter(t,35721);for(let i=0;i<n;i++){let s=r.getActiveAttrib(t,i),a=s.name,o=1;s.type===35674&&(o=2),s.type===35675&&(o=3),s.type===35676&&(o=4),e[a]={type:s.type,location:r.getAttribLocation(t,a),locationSize:o}}return e}function Fi(r){return r!==""}function za(r,t){let e=t.numSpotLightShadows+t.numSpotLightMaps-t.numSpotLightShadowsWithMaps;return r.replace(/NUM_DIR_LIGHTS/g,t.numDirLights).replace(/NUM_SPOT_LIGHTS/g,t.numSpotLights).replace(/NUM_SPOT_LIGHT_MAPS/g,t.numSpotLightMaps).replace(/NUM_SPOT_LIGHT_COORDS/g,e).replace(/NUM_RECT_AREA_LIGHTS/g,t.numRectAreaLights).replace(/NUM_POINT_LIGHTS/g,t.numPointLights).replace(/NUM_HEMI_LIGHTS/g,t.numHemiLights).replace(/NUM_DIR_LIGHT_SHADOWS/g,t.numDirLightShadows).replace(/NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS/g,t.numSpotLightShadowsWithMaps).replace(/NUM_SPOT_LIGHT_SHADOWS/g,t.numSpotLightShadows).replace(/NUM_POINT_LIGHT_SHADOWS/g,t.numPointLightShadows)}function Oa(r,t){return r.replace(/NUM_CLIPPING_PLANES/g,t.numClippingPlanes).replace(/UNION_CLIPPING_PLANES/g,t.numClippingPlanes-t.numClipIntersection)}var Fd=/^[ \\t]*#include +<([\\w\\d./]+)>/gm;function Gr(r){return r.replace(Fd,zd)}function zd(r,t){let e=wt[t];if(e===void 0)throw new Error("Can not resolve #include <"+t+">");return Gr(e)}var Od=/#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 Ba(r){return r.replace(Od,Bd)}function Bd(r,t,e,n){let i="";for(let s=parseInt(t);s<parseInt(e);s++)i+=n.replace(/\\[\\s*i\\s*\\]/g,"[ "+s+" ]").replace(/UNROLLED_LOOP_INDEX/g,s);return i}function Ua(r){let t="precision "+r.precision+\` float;
|
||
precision \`+r.precision+" int;";return r.precision==="highp"?t+=\`
|
||
#define HIGH_PRECISION\`:r.precision==="mediump"?t+=\`
|
||
#define MEDIUM_PRECISION\`:r.precision==="lowp"&&(t+=\`
|
||
#define LOW_PRECISION\`),t}function Ud(r){let t="SHADOWMAP_TYPE_BASIC";return r.shadowMapType===Wa?t="SHADOWMAP_TYPE_PCF":r.shadowMapType===Lc?t="SHADOWMAP_TYPE_PCF_SOFT":r.shadowMapType===Ni&&(t="SHADOWMAP_TYPE_VSM"),t}function kd(r){let t="ENVMAP_TYPE_CUBE";if(r.envMap)switch(r.envMapMode){case ci:case li:t="ENVMAP_TYPE_CUBE";break;case Ls:t="ENVMAP_TYPE_CUBE_UV";break}return t}function Vd(r){let t="ENVMAP_MODE_REFLECTION";if(r.envMap)switch(r.envMapMode){case li:t="ENVMAP_MODE_REFRACTION";break}return t}function Gd(r){let t="ENVMAP_BLENDING_NONE";if(r.envMap)switch(r.combine){case Ya:t="ENVMAP_BLENDING_MULTIPLY";break;case Kc:t="ENVMAP_BLENDING_MIX";break;case jc:t="ENVMAP_BLENDING_ADD";break}return t}function Hd(r){let t=r.envMapCubeUVHeight;if(t===null)return null;let e=Math.log2(t)-2,n=1/t;return{texelWidth:1/(3*Math.max(Math.pow(2,e),7*16)),texelHeight:n,maxMip:e}}function Wd(r,t,e,n){let i=r.getContext(),s=e.defines,a=e.vertexShader,o=e.fragmentShader,c=Ud(e),l=kd(e),h=Vd(e),f=Gd(e),u=Hd(e),m=e.isWebGL2?"":Id(e),x=Dd(s),p=i.createProgram(),d,g,M=e.glslVersion?"#version "+e.glslVersion+\`
|
||
\`:"";e.isRawShaderMaterial?(d=[x].filter(Fi).join(\`
|
||
\`),d.length>0&&(d+=\`
|
||
\`),g=[m,x].filter(Fi).join(\`
|
||
\`),g.length>0&&(g+=\`
|
||
\`)):(d=[Ua(e),"#define SHADER_NAME "+e.shaderName,x,e.instancing?"#define USE_INSTANCING":"",e.instancingColor?"#define USE_INSTANCING_COLOR":"",e.supportsVertexTextures?"#define VERTEX_TEXTURES":"",e.useFog&&e.fog?"#define USE_FOG":"",e.useFog&&e.fogExp2?"#define FOG_EXP2":"",e.map?"#define USE_MAP":"",e.envMap?"#define USE_ENVMAP":"",e.envMap?"#define "+h:"",e.lightMap?"#define USE_LIGHTMAP":"",e.aoMap?"#define USE_AOMAP":"",e.emissiveMap?"#define USE_EMISSIVEMAP":"",e.bumpMap?"#define USE_BUMPMAP":"",e.normalMap?"#define USE_NORMALMAP":"",e.normalMap&&e.objectSpaceNormalMap?"#define OBJECTSPACE_NORMALMAP":"",e.normalMap&&e.tangentSpaceNormalMap?"#define TANGENTSPACE_NORMALMAP":"",e.clearcoatMap?"#define USE_CLEARCOATMAP":"",e.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",e.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",e.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",e.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",e.displacementMap&&e.supportsVertexTextures?"#define USE_DISPLACEMENTMAP":"",e.specularMap?"#define USE_SPECULARMAP":"",e.specularIntensityMap?"#define USE_SPECULARINTENSITYMAP":"",e.specularColorMap?"#define USE_SPECULARCOLORMAP":"",e.roughnessMap?"#define USE_ROUGHNESSMAP":"",e.metalnessMap?"#define USE_METALNESSMAP":"",e.alphaMap?"#define USE_ALPHAMAP":"",e.transmission?"#define USE_TRANSMISSION":"",e.transmissionMap?"#define USE_TRANSMISSIONMAP":"",e.thicknessMap?"#define USE_THICKNESSMAP":"",e.sheenColorMap?"#define USE_SHEENCOLORMAP":"",e.sheenRoughnessMap?"#define USE_SHEENROUGHNESSMAP":"",e.vertexTangents?"#define USE_TANGENT":"",e.vertexColors?"#define USE_COLOR":"",e.vertexAlphas?"#define USE_COLOR_ALPHA":"",e.vertexUvs?"#define USE_UV":"",e.uvsVertexOnly?"#define UVS_VERTEX_ONLY":"",e.flatShading?"#define FLAT_SHADED":"",e.skinning?"#define USE_SKINNING":"",e.morphTargets?"#define USE_MORPHTARGETS":"",e.morphNormals&&e.flatShading===!1?"#define USE_MORPHNORMALS":"",e.morphColors&&e.isWebGL2?"#define USE_MORPHCOLORS":"",e.morphTargetsCount>0&&e.isWebGL2?"#define MORPHTARGETS_TEXTURE":"",e.morphTargetsCount>0&&e.isWebGL2?"#define MORPHTARGETS_TEXTURE_STRIDE "+e.morphTextureStride:"",e.morphTargetsCount>0&&e.isWebGL2?"#define MORPHTARGETS_COUNT "+e.morphTargetsCount:"",e.doubleSided?"#define DOUBLE_SIDED":"",e.flipSided?"#define FLIP_SIDED":"",e.shadowMapEnabled?"#define USE_SHADOWMAP":"",e.shadowMapEnabled?"#define "+c:"",e.sizeAttenuation?"#define USE_SIZEATTENUATION":"",e.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",e.logarithmicDepthBuffer&&e.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"","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","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#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(Fi).join(\`
|
||
\`),g=[m,Ua(e),"#define SHADER_NAME "+e.shaderName,x,e.useFog&&e.fog?"#define USE_FOG":"",e.useFog&&e.fogExp2?"#define FOG_EXP2":"",e.map?"#define USE_MAP":"",e.matcap?"#define USE_MATCAP":"",e.envMap?"#define USE_ENVMAP":"",e.envMap?"#define "+l:"",e.envMap?"#define "+h:"",e.envMap?"#define "+f:"",u?"#define CUBEUV_TEXEL_WIDTH "+u.texelWidth:"",u?"#define CUBEUV_TEXEL_HEIGHT "+u.texelHeight:"",u?"#define CUBEUV_MAX_MIP "+u.maxMip+".0":"",e.lightMap?"#define USE_LIGHTMAP":"",e.aoMap?"#define USE_AOMAP":"",e.emissiveMap?"#define USE_EMISSIVEMAP":"",e.bumpMap?"#define USE_BUMPMAP":"",e.normalMap?"#define USE_NORMALMAP":"",e.normalMap&&e.objectSpaceNormalMap?"#define OBJECTSPACE_NORMALMAP":"",e.normalMap&&e.tangentSpaceNormalMap?"#define TANGENTSPACE_NORMALMAP":"",e.clearcoat?"#define USE_CLEARCOAT":"",e.clearcoatMap?"#define USE_CLEARCOATMAP":"",e.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",e.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",e.iridescence?"#define USE_IRIDESCENCE":"",e.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",e.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",e.specularMap?"#define USE_SPECULARMAP":"",e.specularIntensityMap?"#define USE_SPECULARINTENSITYMAP":"",e.specularColorMap?"#define USE_SPECULARCOLORMAP":"",e.roughnessMap?"#define USE_ROUGHNESSMAP":"",e.metalnessMap?"#define USE_METALNESSMAP":"",e.alphaMap?"#define USE_ALPHAMAP":"",e.alphaTest?"#define USE_ALPHATEST":"",e.sheen?"#define USE_SHEEN":"",e.sheenColorMap?"#define USE_SHEENCOLORMAP":"",e.sheenRoughnessMap?"#define USE_SHEENROUGHNESSMAP":"",e.transmission?"#define USE_TRANSMISSION":"",e.transmissionMap?"#define USE_TRANSMISSIONMAP":"",e.thicknessMap?"#define USE_THICKNESSMAP":"",e.decodeVideoTexture?"#define DECODE_VIDEO_TEXTURE":"",e.vertexTangents?"#define USE_TANGENT":"",e.vertexColors||e.instancingColor?"#define USE_COLOR":"",e.vertexAlphas?"#define USE_COLOR_ALPHA":"",e.vertexUvs?"#define USE_UV":"",e.uvsVertexOnly?"#define UVS_VERTEX_ONLY":"",e.gradientMap?"#define USE_GRADIENTMAP":"",e.flatShading?"#define FLAT_SHADED":"",e.doubleSided?"#define DOUBLE_SIDED":"",e.flipSided?"#define FLIP_SIDED":"",e.shadowMapEnabled?"#define USE_SHADOWMAP":"",e.shadowMapEnabled?"#define "+c:"",e.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",e.physicallyCorrectLights?"#define PHYSICALLY_CORRECT_LIGHTS":"",e.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",e.logarithmicDepthBuffer&&e.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",e.toneMapping!==nn?"#define TONE_MAPPING":"",e.toneMapping!==nn?wt.tonemapping_pars_fragment:"",e.toneMapping!==nn?Ld("toneMapping",e.toneMapping):"",e.dithering?"#define DITHERING":"",e.opaque?"#define OPAQUE":"",wt.encodings_pars_fragment,Rd("linearToOutputTexel",e.outputEncoding),e.useDepthPacking?"#define DEPTH_PACKING "+e.depthPacking:"",\`
|
||
\`].filter(Fi).join(\`
|
||
\`)),a=Gr(a),a=za(a,e),a=Oa(a,e),o=Gr(o),o=za(o,e),o=Oa(o,e),a=Ba(a),o=Ba(o),e.isWebGL2&&e.isRawShaderMaterial!==!0&&(M=\`#version 300 es
|
||
\`,d=["precision mediump sampler2DArray;","#define attribute in","#define varying out","#define texture2D texture"].join(\`
|
||
\`)+\`
|
||
\`+d,g=["#define varying in",e.glslVersion===la?"":"layout(location = 0) out highp vec4 pc_fragColor;",e.glslVersion===la?"":"#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(\`
|
||
\`)+\`
|
||
\`+g);let _=M+d+a,v=M+g+o,b=Na(i,35633,_),A=Na(i,35632,v);if(i.attachShader(p,b),i.attachShader(p,A),e.index0AttributeName!==void 0?i.bindAttribLocation(p,0,e.index0AttributeName):e.morphTargets===!0&&i.bindAttribLocation(p,0,"position"),i.linkProgram(p),r.debug.checkShaderErrors){let S=i.getProgramInfoLog(p).trim(),P=i.getShaderInfoLog(b).trim(),O=i.getShaderInfoLog(A).trim(),B=!0,D=!0;if(i.getProgramParameter(p,35714)===!1){B=!1;let I=Fa(i,b,"vertex"),k=Fa(i,A,"fragment");console.error("THREE.WebGLProgram: Shader Error "+i.getError()+" - VALIDATE_STATUS "+i.getProgramParameter(p,35715)+\`
|
||
|
||
Program Info Log: \`+S+\`
|
||
\`+I+\`
|
||
\`+k)}else S!==""?console.warn("THREE.WebGLProgram: Program Info Log:",S):(P===""||O==="")&&(D=!1);D&&(this.diagnostics={runnable:B,programLog:S,vertexShader:{log:P,prefix:d},fragmentShader:{log:O,prefix:g}})}i.deleteShader(b),i.deleteShader(A);let C;this.getUniforms=function(){return C===void 0&&(C=new ai(i,p)),C};let y;return this.getAttributes=function(){return y===void 0&&(y=Nd(i,p)),y},this.destroy=function(){n.releaseStatesOfProgram(this),i.deleteProgram(p),this.program=void 0},this.name=e.shaderName,this.id=Ed++,this.cacheKey=t,this.usedTimes=1,this.program=p,this.vertexShader=b,this.fragmentShader=A,this}var qd=0,Hr=class{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(t){let e=t.vertexShader,n=t.fragmentShader,i=this._getShaderStage(e),s=this._getShaderStage(n),a=this._getShaderCacheForMaterial(t);return a.has(i)===!1&&(a.add(i),i.usedTimes++),a.has(s)===!1&&(a.add(s),s.usedTimes++),this}remove(t){let e=this.materialCache.get(t);for(let n of e)n.usedTimes--,n.usedTimes===0&&this.shaderCache.delete(n.code);return this.materialCache.delete(t),this}getVertexShaderID(t){return this._getShaderStage(t.vertexShader).id}getFragmentShaderID(t){return this._getShaderStage(t.fragmentShader).id}dispose(){this.shaderCache.clear(),this.materialCache.clear()}_getShaderCacheForMaterial(t){let e=this.materialCache,n=e.get(t);return n===void 0&&(n=new Set,e.set(t,n)),n}_getShaderStage(t){let e=this.shaderCache,n=e.get(t);return n===void 0&&(n=new Wr(t),e.set(t,n)),n}},Wr=class{constructor(t){this.id=qd++,this.code=t,this.usedTimes=0}};function Xd(r,t,e,n,i,s,a){let o=new ws,c=new Hr,l=[],h=i.isWebGL2,f=i.logarithmicDepthBuffer,u=i.vertexTextures,m=i.precision,x={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 p(y,S,P,O,B){let D=O.fog,I=B.geometry,k=y.isMeshStandardMaterial?O.environment:null,Y=(y.isMeshStandardMaterial?e:t).get(y.envMap||k),Z=Y&&Y.mapping===Ls?Y.image.height:null,H=x[y.type];y.precision!==null&&(m=i.getMaxPrecision(y.precision),m!==y.precision&&console.warn("THREE.WebGLProgram.getParameters:",y.precision,"not supported, using",m,"instead."));let $=I.morphAttributes.position||I.morphAttributes.normal||I.morphAttributes.color,J=$!==void 0?$.length:0,dt=0;I.morphAttributes.position!==void 0&&(dt=1),I.morphAttributes.normal!==void 0&&(dt=2),I.morphAttributes.color!==void 0&&(dt=3);let z,K,nt,it;if(H){let Ft=He[H];z=Ft.vertexShader,K=Ft.fragmentShader}else z=y.vertexShader,K=y.fragmentShader,c.update(y),nt=c.getVertexShaderID(y),it=c.getFragmentShaderID(y);let U=r.getRenderTarget(),Mt=y.alphaTest>0,ht=y.clearcoat>0,ut=y.iridescence>0;return{isWebGL2:h,shaderID:H,shaderName:y.type,vertexShader:z,fragmentShader:K,defines:y.defines,customVertexShaderID:nt,customFragmentShaderID:it,isRawShaderMaterial:y.isRawShaderMaterial===!0,glslVersion:y.glslVersion,precision:m,instancing:B.isInstancedMesh===!0,instancingColor:B.isInstancedMesh===!0&&B.instanceColor!==null,supportsVertexTextures:u,outputEncoding:U===null?r.outputEncoding:U.isXRRenderTarget===!0?U.texture.encoding:Nn,map:!!y.map,matcap:!!y.matcap,envMap:!!Y,envMapMode:Y&&Y.mapping,envMapCubeUVHeight:Z,lightMap:!!y.lightMap,aoMap:!!y.aoMap,emissiveMap:!!y.emissiveMap,bumpMap:!!y.bumpMap,normalMap:!!y.normalMap,objectSpaceNormalMap:y.normalMapType===wl,tangentSpaceNormalMap:y.normalMapType===bl,decodeVideoTexture:!!y.map&&y.map.isVideoTexture===!0&&y.map.encoding===Ot,clearcoat:ht,clearcoatMap:ht&&!!y.clearcoatMap,clearcoatRoughnessMap:ht&&!!y.clearcoatRoughnessMap,clearcoatNormalMap:ht&&!!y.clearcoatNormalMap,iridescence:ut,iridescenceMap:ut&&!!y.iridescenceMap,iridescenceThicknessMap:ut&&!!y.iridescenceThicknessMap,displacementMap:!!y.displacementMap,roughnessMap:!!y.roughnessMap,metalnessMap:!!y.metalnessMap,specularMap:!!y.specularMap,specularIntensityMap:!!y.specularIntensityMap,specularColorMap:!!y.specularColorMap,opaque:y.transparent===!1&&y.blending===ri,alphaMap:!!y.alphaMap,alphaTest:Mt,gradientMap:!!y.gradientMap,sheen:y.sheen>0,sheenColorMap:!!y.sheenColorMap,sheenRoughnessMap:!!y.sheenRoughnessMap,transmission:y.transmission>0,transmissionMap:!!y.transmissionMap,thicknessMap:!!y.thicknessMap,combine:y.combine,vertexTangents:!!y.normalMap&&!!I.attributes.tangent,vertexColors:y.vertexColors,vertexAlphas:y.vertexColors===!0&&!!I.attributes.color&&I.attributes.color.itemSize===4,vertexUvs:!!y.map||!!y.bumpMap||!!y.normalMap||!!y.specularMap||!!y.alphaMap||!!y.emissiveMap||!!y.roughnessMap||!!y.metalnessMap||!!y.clearcoatMap||!!y.clearcoatRoughnessMap||!!y.clearcoatNormalMap||!!y.iridescenceMap||!!y.iridescenceThicknessMap||!!y.displacementMap||!!y.transmissionMap||!!y.thicknessMap||!!y.specularIntensityMap||!!y.specularColorMap||!!y.sheenColorMap||!!y.sheenRoughnessMap,uvsVertexOnly:!(y.map||y.bumpMap||y.normalMap||y.specularMap||y.alphaMap||y.emissiveMap||y.roughnessMap||y.metalnessMap||y.clearcoatNormalMap||y.iridescenceMap||y.iridescenceThicknessMap||y.transmission>0||y.transmissionMap||y.thicknessMap||y.specularIntensityMap||y.specularColorMap||y.sheen>0||y.sheenColorMap||y.sheenRoughnessMap)&&!!y.displacementMap,fog:!!D,useFog:y.fog===!0,fogExp2:D&&D.isFogExp2,flatShading:!!y.flatShading,sizeAttenuation:y.sizeAttenuation,logarithmicDepthBuffer:f,skinning:B.isSkinnedMesh===!0,morphTargets:I.morphAttributes.position!==void 0,morphNormals:I.morphAttributes.normal!==void 0,morphColors:I.morphAttributes.color!==void 0,morphTargetsCount:J,morphTextureStride:dt,numDirLights:S.directional.length,numPointLights:S.point.length,numSpotLights:S.spot.length,numSpotLightMaps:S.spotLightMap.length,numRectAreaLights:S.rectArea.length,numHemiLights:S.hemi.length,numDirLightShadows:S.directionalShadowMap.length,numPointLightShadows:S.pointShadowMap.length,numSpotLightShadows:S.spotShadowMap.length,numSpotLightShadowsWithMaps:S.numSpotLightShadowsWithMaps,numClippingPlanes:a.numPlanes,numClipIntersection:a.numIntersection,dithering:y.dithering,shadowMapEnabled:r.shadowMap.enabled&&P.length>0,shadowMapType:r.shadowMap.type,toneMapping:y.toneMapped?r.toneMapping:nn,physicallyCorrectLights:r.physicallyCorrectLights,premultipliedAlpha:y.premultipliedAlpha,doubleSided:y.side===We,flipSided:y.side===he,useDepthPacking:!!y.depthPacking,depthPacking:y.depthPacking||0,index0AttributeName:y.index0AttributeName,extensionDerivatives:y.extensions&&y.extensions.derivatives,extensionFragDepth:y.extensions&&y.extensions.fragDepth,extensionDrawBuffers:y.extensions&&y.extensions.drawBuffers,extensionShaderTextureLOD:y.extensions&&y.extensions.shaderTextureLOD,rendererExtensionFragDepth:h||n.has("EXT_frag_depth"),rendererExtensionDrawBuffers:h||n.has("WEBGL_draw_buffers"),rendererExtensionShaderTextureLod:h||n.has("EXT_shader_texture_lod"),customProgramCacheKey:y.customProgramCacheKey()}}function d(y){let S=[];if(y.shaderID?S.push(y.shaderID):(S.push(y.customVertexShaderID),S.push(y.customFragmentShaderID)),y.defines!==void 0)for(let P in y.defines)S.push(P),S.push(y.defines[P]);return y.isRawShaderMaterial===!1&&(g(S,y),M(S,y),S.push(r.outputEncoding)),S.push(y.customProgramCacheKey),S.join()}function g(y,S){y.push(S.precision),y.push(S.outputEncoding),y.push(S.envMapMode),y.push(S.envMapCubeUVHeight),y.push(S.combine),y.push(S.vertexUvs),y.push(S.fogExp2),y.push(S.sizeAttenuation),y.push(S.morphTargetsCount),y.push(S.morphAttributeCount),y.push(S.numDirLights),y.push(S.numPointLights),y.push(S.numSpotLights),y.push(S.numSpotLightMaps),y.push(S.numHemiLights),y.push(S.numRectAreaLights),y.push(S.numDirLightShadows),y.push(S.numPointLightShadows),y.push(S.numSpotLightShadows),y.push(S.numSpotLightShadowsWithMaps),y.push(S.shadowMapType),y.push(S.toneMapping),y.push(S.numClippingPlanes),y.push(S.numClipIntersection),y.push(S.depthPacking)}function M(y,S){o.disableAll(),S.isWebGL2&&o.enable(0),S.supportsVertexTextures&&o.enable(1),S.instancing&&o.enable(2),S.instancingColor&&o.enable(3),S.map&&o.enable(4),S.matcap&&o.enable(5),S.envMap&&o.enable(6),S.lightMap&&o.enable(7),S.aoMap&&o.enable(8),S.emissiveMap&&o.enable(9),S.bumpMap&&o.enable(10),S.normalMap&&o.enable(11),S.objectSpaceNormalMap&&o.enable(12),S.tangentSpaceNormalMap&&o.enable(13),S.clearcoat&&o.enable(14),S.clearcoatMap&&o.enable(15),S.clearcoatRoughnessMap&&o.enable(16),S.clearcoatNormalMap&&o.enable(17),S.iridescence&&o.enable(18),S.iridescenceMap&&o.enable(19),S.iridescenceThicknessMap&&o.enable(20),S.displacementMap&&o.enable(21),S.specularMap&&o.enable(22),S.roughnessMap&&o.enable(23),S.metalnessMap&&o.enable(24),S.gradientMap&&o.enable(25),S.alphaMap&&o.enable(26),S.alphaTest&&o.enable(27),S.vertexColors&&o.enable(28),S.vertexAlphas&&o.enable(29),S.vertexUvs&&o.enable(30),S.vertexTangents&&o.enable(31),S.uvsVertexOnly&&o.enable(32),y.push(o.mask),o.disableAll(),S.fog&&o.enable(0),S.useFog&&o.enable(1),S.flatShading&&o.enable(2),S.logarithmicDepthBuffer&&o.enable(3),S.skinning&&o.enable(4),S.morphTargets&&o.enable(5),S.morphNormals&&o.enable(6),S.morphColors&&o.enable(7),S.premultipliedAlpha&&o.enable(8),S.shadowMapEnabled&&o.enable(9),S.physicallyCorrectLights&&o.enable(10),S.doubleSided&&o.enable(11),S.flipSided&&o.enable(12),S.useDepthPacking&&o.enable(13),S.dithering&&o.enable(14),S.specularIntensityMap&&o.enable(15),S.specularColorMap&&o.enable(16),S.transmission&&o.enable(17),S.transmissionMap&&o.enable(18),S.thicknessMap&&o.enable(19),S.sheen&&o.enable(20),S.sheenColorMap&&o.enable(21),S.sheenRoughnessMap&&o.enable(22),S.decodeVideoTexture&&o.enable(23),S.opaque&&o.enable(24),y.push(o.mask)}function _(y){let S=x[y.type],P;if(S){let O=He[S];P=Bl.clone(O.uniforms)}else P=y.uniforms;return P}function v(y,S){let P;for(let O=0,B=l.length;O<B;O++){let D=l[O];if(D.cacheKey===S){P=D,++P.usedTimes;break}}return P===void 0&&(P=new Wd(r,S,y,s),l.push(P)),P}function b(y){if(--y.usedTimes===0){let S=l.indexOf(y);l[S]=l[l.length-1],l.pop(),y.destroy()}}function A(y){c.remove(y)}function C(){c.dispose()}return{getParameters:p,getProgramCacheKey:d,getUniforms:_,acquireProgram:v,releaseProgram:b,releaseShaderCache:A,programs:l,dispose:C}}function Yd(){let r=new WeakMap;function t(s){let a=r.get(s);return a===void 0&&(a={},r.set(s,a)),a}function e(s){r.delete(s)}function n(s,a,o){r.get(s)[a]=o}function i(){r=new WeakMap}return{get:t,remove:e,update:n,dispose:i}}function Zd(r,t){return r.groupOrder!==t.groupOrder?r.groupOrder-t.groupOrder:r.renderOrder!==t.renderOrder?r.renderOrder-t.renderOrder:r.material.id!==t.material.id?r.material.id-t.material.id:r.z!==t.z?r.z-t.z:r.id-t.id}function ka(r,t){return r.groupOrder!==t.groupOrder?r.groupOrder-t.groupOrder:r.renderOrder!==t.renderOrder?r.renderOrder-t.renderOrder:r.z!==t.z?t.z-r.z:r.id-t.id}function Va(){let r=[],t=0,e=[],n=[],i=[];function s(){t=0,e.length=0,n.length=0,i.length=0}function a(f,u,m,x,p,d){let g=r[t];return g===void 0?(g={id:f.id,object:f,geometry:u,material:m,groupOrder:x,renderOrder:f.renderOrder,z:p,group:d},r[t]=g):(g.id=f.id,g.object=f,g.geometry=u,g.material=m,g.groupOrder=x,g.renderOrder=f.renderOrder,g.z=p,g.group=d),t++,g}function o(f,u,m,x,p,d){let g=a(f,u,m,x,p,d);m.transmission>0?n.push(g):m.transparent===!0?i.push(g):e.push(g)}function c(f,u,m,x,p,d){let g=a(f,u,m,x,p,d);m.transmission>0?n.unshift(g):m.transparent===!0?i.unshift(g):e.unshift(g)}function l(f,u){e.length>1&&e.sort(f||Zd),n.length>1&&n.sort(u||ka),i.length>1&&i.sort(u||ka)}function h(){for(let f=t,u=r.length;f<u;f++){let m=r[f];if(m.id===null)break;m.id=null,m.object=null,m.geometry=null,m.material=null,m.group=null}}return{opaque:e,transmissive:n,transparent:i,init:s,push:o,unshift:c,finish:h,sort:l}}function Jd(){let r=new WeakMap;function t(n,i){let s=r.get(n),a;return s===void 0?(a=new Va,r.set(n,[a])):i>=s.length?(a=new Va,s.push(a)):a=s[i],a}function e(){r=new WeakMap}return{get:t,dispose:e}}function $d(){let r={};return{get:function(t){if(r[t.id]!==void 0)return r[t.id];let e;switch(t.type){case"DirectionalLight":e={direction:new R,color:new Bt};break;case"SpotLight":e={position:new R,direction:new R,color:new Bt,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":e={position:new R,color:new Bt,distance:0,decay:0};break;case"HemisphereLight":e={direction:new R,skyColor:new Bt,groundColor:new Bt};break;case"RectAreaLight":e={color:new Bt,position:new R,halfWidth:new R,halfHeight:new R};break}return r[t.id]=e,e}}}function Kd(){let r={};return{get:function(t){if(r[t.id]!==void 0)return r[t.id];let e;switch(t.type){case"DirectionalLight":e={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new At};break;case"SpotLight":e={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new At};break;case"PointLight":e={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new At,shadowCameraNear:1,shadowCameraFar:1e3};break}return r[t.id]=e,e}}}var jd=0;function Qd(r,t){return(t.castShadow?2:0)-(r.castShadow?2:0)+(t.map?1:0)-(r.map?1:0)}function tp(r,t){let e=new $d,n=Kd(),i={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1,numSpotMaps:-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};for(let h=0;h<9;h++)i.probe.push(new R);let s=new R,a=new zt,o=new zt;function c(h,f){let u=0,m=0,x=0;for(let O=0;O<9;O++)i.probe[O].set(0,0,0);let p=0,d=0,g=0,M=0,_=0,v=0,b=0,A=0,C=0,y=0;h.sort(Qd);let S=f!==!0?Math.PI:1;for(let O=0,B=h.length;O<B;O++){let D=h[O],I=D.color,k=D.intensity,Y=D.distance,Z=D.shadow&&D.shadow.map?D.shadow.map.texture:null;if(D.isAmbientLight)u+=I.r*k*S,m+=I.g*k*S,x+=I.b*k*S;else if(D.isLightProbe)for(let H=0;H<9;H++)i.probe[H].addScaledVector(D.sh.coefficients[H],k);else if(D.isDirectionalLight){let H=e.get(D);if(H.color.copy(D.color).multiplyScalar(D.intensity*S),D.castShadow){let $=D.shadow,J=n.get(D);J.shadowBias=$.bias,J.shadowNormalBias=$.normalBias,J.shadowRadius=$.radius,J.shadowMapSize=$.mapSize,i.directionalShadow[p]=J,i.directionalShadowMap[p]=Z,i.directionalShadowMatrix[p]=D.shadow.matrix,v++}i.directional[p]=H,p++}else if(D.isSpotLight){let H=e.get(D);H.position.setFromMatrixPosition(D.matrixWorld),H.color.copy(I).multiplyScalar(k*S),H.distance=Y,H.coneCos=Math.cos(D.angle),H.penumbraCos=Math.cos(D.angle*(1-D.penumbra)),H.decay=D.decay,i.spot[g]=H;let $=D.shadow;if(D.map&&(i.spotLightMap[C]=D.map,C++,$.updateMatrices(D),D.castShadow&&y++),i.spotLightMatrix[g]=$.matrix,D.castShadow){let J=n.get(D);J.shadowBias=$.bias,J.shadowNormalBias=$.normalBias,J.shadowRadius=$.radius,J.shadowMapSize=$.mapSize,i.spotShadow[g]=J,i.spotShadowMap[g]=Z,A++}g++}else if(D.isRectAreaLight){let H=e.get(D);H.color.copy(I).multiplyScalar(k),H.halfWidth.set(D.width*.5,0,0),H.halfHeight.set(0,D.height*.5,0),i.rectArea[M]=H,M++}else if(D.isPointLight){let H=e.get(D);if(H.color.copy(D.color).multiplyScalar(D.intensity*S),H.distance=D.distance,H.decay=D.decay,D.castShadow){let $=D.shadow,J=n.get(D);J.shadowBias=$.bias,J.shadowNormalBias=$.normalBias,J.shadowRadius=$.radius,J.shadowMapSize=$.mapSize,J.shadowCameraNear=$.camera.near,J.shadowCameraFar=$.camera.far,i.pointShadow[d]=J,i.pointShadowMap[d]=Z,i.pointShadowMatrix[d]=D.shadow.matrix,b++}i.point[d]=H,d++}else if(D.isHemisphereLight){let H=e.get(D);H.skyColor.copy(D.color).multiplyScalar(k*S),H.groundColor.copy(D.groundColor).multiplyScalar(k*S),i.hemi[_]=H,_++}}M>0&&(t.isWebGL2||r.has("OES_texture_float_linear")===!0?(i.rectAreaLTC1=et.LTC_FLOAT_1,i.rectAreaLTC2=et.LTC_FLOAT_2):r.has("OES_texture_half_float_linear")===!0?(i.rectAreaLTC1=et.LTC_HALF_1,i.rectAreaLTC2=et.LTC_HALF_2):console.error("THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.")),i.ambient[0]=u,i.ambient[1]=m,i.ambient[2]=x;let P=i.hash;(P.directionalLength!==p||P.pointLength!==d||P.spotLength!==g||P.rectAreaLength!==M||P.hemiLength!==_||P.numDirectionalShadows!==v||P.numPointShadows!==b||P.numSpotShadows!==A||P.numSpotMaps!==C)&&(i.directional.length=p,i.spot.length=g,i.rectArea.length=M,i.point.length=d,i.hemi.length=_,i.directionalShadow.length=v,i.directionalShadowMap.length=v,i.pointShadow.length=b,i.pointShadowMap.length=b,i.spotShadow.length=A,i.spotShadowMap.length=A,i.directionalShadowMatrix.length=v,i.pointShadowMatrix.length=b,i.spotLightMatrix.length=A+C-y,i.spotLightMap.length=C,i.numSpotLightShadowsWithMaps=y,P.directionalLength=p,P.pointLength=d,P.spotLength=g,P.rectAreaLength=M,P.hemiLength=_,P.numDirectionalShadows=v,P.numPointShadows=b,P.numSpotShadows=A,P.numSpotMaps=C,i.version=jd++)}function l(h,f){let u=0,m=0,x=0,p=0,d=0,g=f.matrixWorldInverse;for(let M=0,_=h.length;M<_;M++){let v=h[M];if(v.isDirectionalLight){let b=i.directional[u];b.direction.setFromMatrixPosition(v.matrixWorld),s.setFromMatrixPosition(v.target.matrixWorld),b.direction.sub(s),b.direction.transformDirection(g),u++}else if(v.isSpotLight){let b=i.spot[x];b.position.setFromMatrixPosition(v.matrixWorld),b.position.applyMatrix4(g),b.direction.setFromMatrixPosition(v.matrixWorld),s.setFromMatrixPosition(v.target.matrixWorld),b.direction.sub(s),b.direction.transformDirection(g),x++}else if(v.isRectAreaLight){let b=i.rectArea[p];b.position.setFromMatrixPosition(v.matrixWorld),b.position.applyMatrix4(g),o.identity(),a.copy(v.matrixWorld),a.premultiply(g),o.extractRotation(a),b.halfWidth.set(v.width*.5,0,0),b.halfHeight.set(0,v.height*.5,0),b.halfWidth.applyMatrix4(o),b.halfHeight.applyMatrix4(o),p++}else if(v.isPointLight){let b=i.point[m];b.position.setFromMatrixPosition(v.matrixWorld),b.position.applyMatrix4(g),m++}else if(v.isHemisphereLight){let b=i.hemi[d];b.direction.setFromMatrixPosition(v.matrixWorld),b.direction.transformDirection(g),d++}}}return{setup:c,setupView:l,state:i}}function Ga(r,t){let e=new tp(r,t),n=[],i=[];function s(){n.length=0,i.length=0}function a(f){n.push(f)}function o(f){i.push(f)}function c(f){e.setup(n,f)}function l(f){e.setupView(n,f)}return{init:s,state:{lightsArray:n,shadowsArray:i,lights:e},setupLights:c,setupLightsView:l,pushLight:a,pushShadow:o}}function ep(r,t){let e=new WeakMap;function n(s,a=0){let o=e.get(s),c;return o===void 0?(c=new Ga(r,t),e.set(s,[c])):a>=o.length?(c=new Ga(r,t),o.push(c)):c=o[a],c}function i(){e=new WeakMap}return{get:n,dispose:i}}var qr=class extends fi{constructor(t){super(),this.isMeshDepthMaterial=!0,this.type="MeshDepthMaterial",this.depthPacking=vl,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.setValues(t)}copy(t){return super.copy(t),this.depthPacking=t.depthPacking,this.map=t.map,this.alphaMap=t.alphaMap,this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this}},Xr=class extends fi{constructor(t){super(),this.isMeshDistanceMaterial=!0,this.type="MeshDistanceMaterial",this.referencePosition=new R,this.nearDistance=1,this.farDistance=1e3,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.setValues(t)}copy(t){return super.copy(t),this.referencePosition.copy(t.referencePosition),this.nearDistance=t.nearDistance,this.farDistance=t.farDistance,this.map=t.map,this.alphaMap=t.alphaMap,this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this}},np=\`void main() {
|
||
gl_Position = vec4( position, 1.0 );
|
||
}\`,ip=\`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 sp(r,t,e){let n=new Ps,i=new At,s=new At,a=new Xt,o=new qr({depthPacking:Ml}),c=new Xr,l={},h=e.maxTextureSize,f={[Ue]:he,[he]:Ue,[We]:We},u=new on({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new At},radius:{value:4}},vertexShader:np,fragmentShader:ip}),m=u.clone();m.defines.HORIZONTAL_PASS=1;let x=new ke;x.setAttribute("position",new Yt(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));let p=new qe(x,u),d=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=Wa,this.render=function(v,b,A){if(d.enabled===!1||d.autoUpdate===!1&&d.needsUpdate===!1||v.length===0)return;let C=r.getRenderTarget(),y=r.getActiveCubeFace(),S=r.getActiveMipmapLevel(),P=r.state;P.setBlending(pn),P.buffers.color.setClear(1,1,1,1),P.buffers.depth.setTest(!0),P.setScissorTest(!1);for(let O=0,B=v.length;O<B;O++){let D=v[O],I=D.shadow;if(I===void 0){console.warn("THREE.WebGLShadowMap:",D,"has no shadow.");continue}if(I.autoUpdate===!1&&I.needsUpdate===!1)continue;i.copy(I.mapSize);let k=I.getFrameExtents();if(i.multiply(k),s.copy(I.mapSize),(i.x>h||i.y>h)&&(i.x>h&&(s.x=Math.floor(h/k.x),i.x=s.x*k.x,I.mapSize.x=s.x),i.y>h&&(s.y=Math.floor(h/k.y),i.y=s.y*k.y,I.mapSize.y=s.y)),I.map===null){let Z=this.type!==Ni?{minFilter:ce,magFilter:ce}:{};I.map=new rn(i.x,i.y,Z),I.map.texture.name=D.name+".shadowMap",I.camera.updateProjectionMatrix()}r.setRenderTarget(I.map),r.clear();let Y=I.getViewportCount();for(let Z=0;Z<Y;Z++){let H=I.getViewport(Z);a.set(s.x*H.x,s.y*H.y,s.x*H.z,s.y*H.w),P.viewport(a),I.updateMatrices(D,Z),n=I.getFrustum(),_(b,A,I.camera,D,this.type)}I.isPointLightShadow!==!0&&this.type===Ni&&g(I,A),I.needsUpdate=!1}d.needsUpdate=!1,r.setRenderTarget(C,y,S)};function g(v,b){let A=t.update(p);u.defines.VSM_SAMPLES!==v.blurSamples&&(u.defines.VSM_SAMPLES=v.blurSamples,m.defines.VSM_SAMPLES=v.blurSamples,u.needsUpdate=!0,m.needsUpdate=!0),v.mapPass===null&&(v.mapPass=new rn(i.x,i.y)),u.uniforms.shadow_pass.value=v.map.texture,u.uniforms.resolution.value=v.mapSize,u.uniforms.radius.value=v.radius,r.setRenderTarget(v.mapPass),r.clear(),r.renderBufferDirect(b,null,A,u,p,null),m.uniforms.shadow_pass.value=v.mapPass.texture,m.uniforms.resolution.value=v.mapSize,m.uniforms.radius.value=v.radius,r.setRenderTarget(v.map),r.clear(),r.renderBufferDirect(b,null,A,m,p,null)}function M(v,b,A,C,y,S){let P=null,O=A.isPointLight===!0?v.customDistanceMaterial:v.customDepthMaterial;if(O!==void 0)P=O;else if(P=A.isPointLight===!0?c:o,r.localClippingEnabled&&b.clipShadows===!0&&Array.isArray(b.clippingPlanes)&&b.clippingPlanes.length!==0||b.displacementMap&&b.displacementScale!==0||b.alphaMap&&b.alphaTest>0||b.map&&b.alphaTest>0){let B=P.uuid,D=b.uuid,I=l[B];I===void 0&&(I={},l[B]=I);let k=I[D];k===void 0&&(k=P.clone(),I[D]=k),P=k}return P.visible=b.visible,P.wireframe=b.wireframe,S===Ni?P.side=b.shadowSide!==null?b.shadowSide:b.side:P.side=b.shadowSide!==null?b.shadowSide:f[b.side],P.alphaMap=b.alphaMap,P.alphaTest=b.alphaTest,P.map=b.map,P.clipShadows=b.clipShadows,P.clippingPlanes=b.clippingPlanes,P.clipIntersection=b.clipIntersection,P.displacementMap=b.displacementMap,P.displacementScale=b.displacementScale,P.displacementBias=b.displacementBias,P.wireframeLinewidth=b.wireframeLinewidth,P.linewidth=b.linewidth,A.isPointLight===!0&&P.isMeshDistanceMaterial===!0&&(P.referencePosition.setFromMatrixPosition(A.matrixWorld),P.nearDistance=C,P.farDistance=y),P}function _(v,b,A,C,y){if(v.visible===!1)return;if(v.layers.test(b.layers)&&(v.isMesh||v.isLine||v.isPoints)&&(v.castShadow||v.receiveShadow&&y===Ni)&&(!v.frustumCulled||n.intersectsObject(v))){v.modelViewMatrix.multiplyMatrices(A.matrixWorldInverse,v.matrixWorld);let O=t.update(v),B=v.material;if(Array.isArray(B)){let D=O.groups;for(let I=0,k=D.length;I<k;I++){let Y=D[I],Z=B[Y.materialIndex];if(Z&&Z.visible){let H=M(v,Z,C,A.near,A.far,y);r.renderBufferDirect(A,null,O,H,v,Y)}}}else if(B.visible){let D=M(v,B,C,A.near,A.far,y);r.renderBufferDirect(A,null,O,D,v,null)}}let P=v.children;for(let O=0,B=P.length;O<B;O++)_(P[O],b,A,C,y)}}function rp(r,t,e){let n=e.isWebGL2;function i(){let L=!1,V=new Xt,j=null,ot=new Xt(0,0,0,0);return{setMask:function(lt){j!==lt&&!L&&(r.colorMask(lt,lt,lt,lt),j=lt)},setLocked:function(lt){L=lt},setClear:function(lt,It,Kt,ee,vn){vn===!0&&(lt*=ee,It*=ee,Kt*=ee),V.set(lt,It,Kt,ee),ot.equals(V)===!1&&(r.clearColor(lt,It,Kt,ee),ot.copy(V))},reset:function(){L=!1,j=null,ot.set(-1,0,0,0)}}}function s(){let L=!1,V=null,j=null,ot=null;return{setTest:function(lt){lt?Mt(2929):ht(2929)},setMask:function(lt){V!==lt&&!L&&(r.depthMask(lt),V=lt)},setFunc:function(lt){if(j!==lt){switch(lt){case Wc:r.depthFunc(512);break;case qc:r.depthFunc(519);break;case Xc:r.depthFunc(513);break;case Er:r.depthFunc(515);break;case Yc:r.depthFunc(514);break;case Zc:r.depthFunc(518);break;case Jc:r.depthFunc(516);break;case $c:r.depthFunc(517);break;default:r.depthFunc(515)}j=lt}},setLocked:function(lt){L=lt},setClear:function(lt){ot!==lt&&(r.clearDepth(lt),ot=lt)},reset:function(){L=!1,V=null,j=null,ot=null}}}function a(){let L=!1,V=null,j=null,ot=null,lt=null,It=null,Kt=null,ee=null,vn=null;return{setTest:function(kt){L||(kt?Mt(2960):ht(2960))},setMask:function(kt){V!==kt&&!L&&(r.stencilMask(kt),V=kt)},setFunc:function(kt,Je,Ce){(j!==kt||ot!==Je||lt!==Ce)&&(r.stencilFunc(kt,Je,Ce),j=kt,ot=Je,lt=Ce)},setOp:function(kt,Je,Ce){(It!==kt||Kt!==Je||ee!==Ce)&&(r.stencilOp(kt,Je,Ce),It=kt,Kt=Je,ee=Ce)},setLocked:function(kt){L=kt},setClear:function(kt){vn!==kt&&(r.clearStencil(kt),vn=kt)},reset:function(){L=!1,V=null,j=null,ot=null,lt=null,It=null,Kt=null,ee=null,vn=null}}}let o=new i,c=new s,l=new a,h=new WeakMap,f=new WeakMap,u={},m={},x=new WeakMap,p=[],d=null,g=!1,M=null,_=null,v=null,b=null,A=null,C=null,y=null,S=!1,P=null,O=null,B=null,D=null,I=null,k=r.getParameter(35661),Y=!1,Z=0,H=r.getParameter(7938);H.indexOf("WebGL")!==-1?(Z=parseFloat(/^WebGL (\\d)/.exec(H)[1]),Y=Z>=1):H.indexOf("OpenGL ES")!==-1&&(Z=parseFloat(/^OpenGL ES (\\d)/.exec(H)[1]),Y=Z>=2);let $=null,J={},dt=r.getParameter(3088),z=r.getParameter(2978),K=new Xt().fromArray(dt),nt=new Xt().fromArray(z);function it(L,V,j){let ot=new Uint8Array(4),lt=r.createTexture();r.bindTexture(L,lt),r.texParameteri(L,10241,9728),r.texParameteri(L,10240,9728);for(let It=0;It<j;It++)r.texImage2D(V+It,0,6408,1,1,0,6408,5121,ot);return lt}let U={};U[3553]=it(3553,3553,1),U[34067]=it(34067,34069,6),o.setClear(0,0,0,1),c.setClear(1),l.setClear(0),Mt(2929),c.setFunc(Er),te(!1),Ee(Po),Mt(2884),se(pn);function Mt(L){u[L]!==!0&&(r.enable(L),u[L]=!0)}function ht(L){u[L]!==!1&&(r.disable(L),u[L]=!1)}function ut(L,V){return m[L]!==V?(r.bindFramebuffer(L,V),m[L]=V,n&&(L===36009&&(m[36160]=V),L===36160&&(m[36009]=V)),!0):!1}function at(L,V){let j=p,ot=!1;if(L)if(j=x.get(V),j===void 0&&(j=[],x.set(V,j)),L.isWebGLMultipleRenderTargets){let lt=L.texture;if(j.length!==lt.length||j[0]!==36064){for(let It=0,Kt=lt.length;It<Kt;It++)j[It]=36064+It;j.length=lt.length,ot=!0}}else j[0]!==36064&&(j[0]=36064,ot=!0);else j[0]!==1029&&(j[0]=1029,ot=!0);ot&&(e.isWebGL2?r.drawBuffers(j):t.get("WEBGL_draw_buffers").drawBuffersWEBGL(j))}function Ft(L){return d!==L?(r.useProgram(L),d=L,!0):!1}let bt={[ni]:32774,[Dc]:32778,[Nc]:32779};if(n)bt[Do]=32775,bt[No]=32776;else{let L=t.get("EXT_blend_minmax");L!==null&&(bt[Do]=L.MIN_EXT,bt[No]=L.MAX_EXT)}let _t={[Fc]:0,[zc]:1,[Oc]:768,[qa]:770,[Hc]:776,[Vc]:774,[Uc]:772,[Bc]:769,[Xa]:771,[Gc]:775,[kc]:773};function se(L,V,j,ot,lt,It,Kt,ee){if(L===pn){g===!0&&(ht(3042),g=!1);return}if(g===!1&&(Mt(3042),g=!0),L!==Ic){if(L!==M||ee!==S){if((_!==ni||A!==ni)&&(r.blendEquation(32774),_=ni,A=ni),ee)switch(L){case ri:r.blendFuncSeparate(1,771,1,771);break;case Ro:r.blendFunc(1,1);break;case Lo:r.blendFuncSeparate(0,769,0,1);break;case Io:r.blendFuncSeparate(0,768,0,770);break;default:console.error("THREE.WebGLState: Invalid blending: ",L);break}else switch(L){case ri:r.blendFuncSeparate(770,771,1,771);break;case Ro:r.blendFunc(770,1);break;case Lo:r.blendFuncSeparate(0,769,0,1);break;case Io:r.blendFunc(0,768);break;default:console.error("THREE.WebGLState: Invalid blending: ",L);break}v=null,b=null,C=null,y=null,M=L,S=ee}return}lt=lt||V,It=It||j,Kt=Kt||ot,(V!==_||lt!==A)&&(r.blendEquationSeparate(bt[V],bt[lt]),_=V,A=lt),(j!==v||ot!==b||It!==C||Kt!==y)&&(r.blendFuncSeparate(_t[j],_t[ot],_t[It],_t[Kt]),v=j,b=ot,C=It,y=Kt),M=L,S=!1}function Ae(L,V){L.side===We?ht(2884):Mt(2884);let j=L.side===he;V&&(j=!j),te(j),L.blending===ri&&L.transparent===!1?se(pn):se(L.blending,L.blendEquation,L.blendSrc,L.blendDst,L.blendEquationAlpha,L.blendSrcAlpha,L.blendDstAlpha,L.premultipliedAlpha),c.setFunc(L.depthFunc),c.setTest(L.depthTest),c.setMask(L.depthWrite),o.setMask(L.colorWrite);let ot=L.stencilWrite;l.setTest(ot),ot&&(l.setMask(L.stencilWriteMask),l.setFunc(L.stencilFunc,L.stencilRef,L.stencilFuncMask),l.setOp(L.stencilFail,L.stencilZFail,L.stencilZPass)),Nt(L.polygonOffset,L.polygonOffsetFactor,L.polygonOffsetUnits),L.alphaToCoverage===!0?Mt(32926):ht(32926)}function te(L){P!==L&&(L?r.frontFace(2304):r.frontFace(2305),P=L)}function Ee(L){L!==Pc?(Mt(2884),L!==O&&(L===Po?r.cullFace(1029):L===Rc?r.cullFace(1028):r.cullFace(1032))):ht(2884),O=L}function Wt(L){L!==B&&(Y&&r.lineWidth(L),B=L)}function Nt(L,V,j){L?(Mt(32823),(D!==V||I!==j)&&(r.polygonOffset(V,j),D=V,I=j)):ht(32823)}function Ze(L){L?Mt(3089):ht(3089)}function De(L){L===void 0&&(L=33984+k-1),$!==L&&(r.activeTexture(L),$=L)}function E(L,V,j){j===void 0&&($===null?j=33984+k-1:j=$);let ot=J[j];ot===void 0&&(ot={type:void 0,texture:void 0},J[j]=ot),(ot.type!==L||ot.texture!==V)&&($!==j&&(r.activeTexture(j),$=j),r.bindTexture(L,V||U[L]),ot.type=L,ot.texture=V)}function w(){let L=J[$];L!==void 0&&L.type!==void 0&&(r.bindTexture(L.type,null),L.type=void 0,L.texture=void 0)}function W(){try{r.compressedTexImage2D.apply(r,arguments)}catch(L){console.error("THREE.WebGLState:",L)}}function Q(){try{r.compressedTexImage3D.apply(r,arguments)}catch(L){console.error("THREE.WebGLState:",L)}}function tt(){try{r.texSubImage2D.apply(r,arguments)}catch(L){console.error("THREE.WebGLState:",L)}}function st(){try{r.texSubImage3D.apply(r,arguments)}catch(L){console.error("THREE.WebGLState:",L)}}function yt(){try{r.compressedTexSubImage2D.apply(r,arguments)}catch(L){console.error("THREE.WebGLState:",L)}}function rt(){try{r.compressedTexSubImage3D.apply(r,arguments)}catch(L){console.error("THREE.WebGLState:",L)}}function X(){try{r.texStorage2D.apply(r,arguments)}catch(L){console.error("THREE.WebGLState:",L)}}function mt(){try{r.texStorage3D.apply(r,arguments)}catch(L){console.error("THREE.WebGLState:",L)}}function xt(){try{r.texImage2D.apply(r,arguments)}catch(L){console.error("THREE.WebGLState:",L)}}function ct(){try{r.texImage3D.apply(r,arguments)}catch(L){console.error("THREE.WebGLState:",L)}}function gt(L){K.equals(L)===!1&&(r.scissor(L.x,L.y,L.z,L.w),K.copy(L))}function ft(L){nt.equals(L)===!1&&(r.viewport(L.x,L.y,L.z,L.w),nt.copy(L))}function Rt(L,V){let j=f.get(V);j===void 0&&(j=new WeakMap,f.set(V,j));let ot=j.get(L);ot===void 0&&(ot=r.getUniformBlockIndex(V,L.name),j.set(L,ot))}function Ut(L,V){let ot=f.get(V).get(L);h.get(V)!==ot&&(r.uniformBlockBinding(V,ot,L.__bindingPointIndex),h.set(V,ot))}function $t(){r.disable(3042),r.disable(2884),r.disable(2929),r.disable(32823),r.disable(3089),r.disable(2960),r.disable(32926),r.blendEquation(32774),r.blendFunc(1,0),r.blendFuncSeparate(1,0,1,0),r.colorMask(!0,!0,!0,!0),r.clearColor(0,0,0,0),r.depthMask(!0),r.depthFunc(513),r.clearDepth(1),r.stencilMask(4294967295),r.stencilFunc(519,0,4294967295),r.stencilOp(7680,7680,7680),r.clearStencil(0),r.cullFace(1029),r.frontFace(2305),r.polygonOffset(0,0),r.activeTexture(33984),r.bindFramebuffer(36160,null),n===!0&&(r.bindFramebuffer(36009,null),r.bindFramebuffer(36008,null)),r.useProgram(null),r.lineWidth(1),r.scissor(0,0,r.canvas.width,r.canvas.height),r.viewport(0,0,r.canvas.width,r.canvas.height),u={},$=null,J={},m={},x=new WeakMap,p=[],d=null,g=!1,M=null,_=null,v=null,b=null,A=null,C=null,y=null,S=!1,P=null,O=null,B=null,D=null,I=null,K.set(0,0,r.canvas.width,r.canvas.height),nt.set(0,0,r.canvas.width,r.canvas.height),o.reset(),c.reset(),l.reset()}return{buffers:{color:o,depth:c,stencil:l},enable:Mt,disable:ht,bindFramebuffer:ut,drawBuffers:at,useProgram:Ft,setBlending:se,setMaterial:Ae,setFlipSided:te,setCullFace:Ee,setLineWidth:Wt,setPolygonOffset:Nt,setScissorTest:Ze,activeTexture:De,bindTexture:E,unbindTexture:w,compressedTexImage2D:W,compressedTexImage3D:Q,texImage2D:xt,texImage3D:ct,updateUBOMapping:Rt,uniformBlockBinding:Ut,texStorage2D:X,texStorage3D:mt,texSubImage2D:tt,texSubImage3D:st,compressedTexSubImage2D:yt,compressedTexSubImage3D:rt,scissor:gt,viewport:ft,reset:$t}}function op(r,t,e,n,i,s,a){let o=i.isWebGL2,c=i.maxTextures,l=i.maxCubemapSize,h=i.maxTextureSize,f=i.maxSamples,u=t.has("WEBGL_multisampled_render_to_texture")?t.get("WEBGL_multisampled_render_to_texture"):null,m=typeof navigator=="undefined"?!1:/OculusBrowser/g.test(navigator.userAgent),x=new WeakMap,p,d=new WeakMap,g=!1;try{g=typeof OffscreenCanvas!="undefined"&&new OffscreenCanvas(1,1).getContext("2d")!==null}catch(E){}function M(E,w){return g?new OffscreenCanvas(E,w):ys("canvas")}function _(E,w,W,Q){let tt=1;if((E.width>Q||E.height>Q)&&(tt=Q/Math.max(E.width,E.height)),tt<1||w===!0)if(typeof HTMLImageElement!="undefined"&&E instanceof HTMLImageElement||typeof HTMLCanvasElement!="undefined"&&E instanceof HTMLCanvasElement||typeof ImageBitmap!="undefined"&&E instanceof ImageBitmap){let st=w?Dr:Math.floor,yt=st(tt*E.width),rt=st(tt*E.height);p===void 0&&(p=M(yt,rt));let X=W?M(yt,rt):p;return X.width=yt,X.height=rt,X.getContext("2d").drawImage(E,0,0,yt,rt),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+E.width+"x"+E.height+") to ("+yt+"x"+rt+")."),X}else return"data"in E&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+E.width+"x"+E.height+")."),E;return E}function v(E){return ua(E.width)&&ua(E.height)}function b(E){return o?!1:E.wrapS!==Oe||E.wrapT!==Oe||E.minFilter!==ce&&E.minFilter!==Re}function A(E,w){return E.generateMipmaps&&w&&E.minFilter!==ce&&E.minFilter!==Re}function C(E){r.generateMipmap(E)}function y(E,w,W,Q,tt=!1){if(o===!1)return w;if(E!==null){if(r[E]!==void 0)return r[E];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+E+"'")}let st=w;return w===6403&&(W===5126&&(st=33326),W===5131&&(st=33325),W===5121&&(st=33321)),w===33319&&(W===5126&&(st=33328),W===5131&&(st=33327),W===5121&&(st=33323)),w===6408&&(W===5126&&(st=34836),W===5131&&(st=34842),W===5121&&(st=Q===Ot&&tt===!1?35907:32856),W===32819&&(st=32854),W===32820&&(st=32855)),(st===33325||st===33326||st===33327||st===33328||st===34842||st===34836)&&t.get("EXT_color_buffer_float"),st}function S(E,w,W){return A(E,W)===!0||E.isFramebufferTexture&&E.minFilter!==ce&&E.minFilter!==Re?Math.log2(Math.max(w.width,w.height))+1:E.mipmaps!==void 0&&E.mipmaps.length>0?E.mipmaps.length:E.isCompressedTexture&&Array.isArray(E.image)?w.mipmaps.length:1}function P(E){return E===ce||E===Fo||E===Zs?9728:9729}function O(E){let w=E.target;w.removeEventListener("dispose",O),D(w),w.isVideoTexture&&x.delete(w)}function B(E){let w=E.target;w.removeEventListener("dispose",B),k(w)}function D(E){let w=n.get(E);if(w.__webglInit===void 0)return;let W=E.source,Q=d.get(W);if(Q){let tt=Q[w.__cacheKey];tt.usedTimes--,tt.usedTimes===0&&I(E),Object.keys(Q).length===0&&d.delete(W)}n.remove(E)}function I(E){let w=n.get(E);r.deleteTexture(w.__webglTexture);let W=E.source,Q=d.get(W);delete Q[w.__cacheKey],a.memory.textures--}function k(E){let w=E.texture,W=n.get(E),Q=n.get(w);if(Q.__webglTexture!==void 0&&(r.deleteTexture(Q.__webglTexture),a.memory.textures--),E.depthTexture&&E.depthTexture.dispose(),E.isWebGLCubeRenderTarget)for(let tt=0;tt<6;tt++)r.deleteFramebuffer(W.__webglFramebuffer[tt]),W.__webglDepthbuffer&&r.deleteRenderbuffer(W.__webglDepthbuffer[tt]);else{if(r.deleteFramebuffer(W.__webglFramebuffer),W.__webglDepthbuffer&&r.deleteRenderbuffer(W.__webglDepthbuffer),W.__webglMultisampledFramebuffer&&r.deleteFramebuffer(W.__webglMultisampledFramebuffer),W.__webglColorRenderbuffer)for(let tt=0;tt<W.__webglColorRenderbuffer.length;tt++)W.__webglColorRenderbuffer[tt]&&r.deleteRenderbuffer(W.__webglColorRenderbuffer[tt]);W.__webglDepthRenderbuffer&&r.deleteRenderbuffer(W.__webglDepthRenderbuffer)}if(E.isWebGLMultipleRenderTargets)for(let tt=0,st=w.length;tt<st;tt++){let yt=n.get(w[tt]);yt.__webglTexture&&(r.deleteTexture(yt.__webglTexture),a.memory.textures--),n.remove(w[tt])}n.remove(w),n.remove(E)}let Y=0;function Z(){Y=0}function H(){let E=Y;return E>=c&&console.warn("THREE.WebGLTextures: Trying to use "+E+" texture units while this GPU supports only "+c),Y+=1,E}function $(E){let w=[];return w.push(E.wrapS),w.push(E.wrapT),w.push(E.wrapR||0),w.push(E.magFilter),w.push(E.minFilter),w.push(E.anisotropy),w.push(E.internalFormat),w.push(E.format),w.push(E.type),w.push(E.generateMipmaps),w.push(E.premultiplyAlpha),w.push(E.flipY),w.push(E.unpackAlignment),w.push(E.encoding),w.join()}function J(E,w){let W=n.get(E);if(E.isVideoTexture&&Ze(E),E.isRenderTargetTexture===!1&&E.version>0&&W.__version!==E.version){let Q=E.image;if(Q===null)console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");else if(Q.complete===!1)console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete");else{ht(W,E,w);return}}e.bindTexture(3553,W.__webglTexture,33984+w)}function dt(E,w){let W=n.get(E);if(E.version>0&&W.__version!==E.version){ht(W,E,w);return}e.bindTexture(35866,W.__webglTexture,33984+w)}function z(E,w){let W=n.get(E);if(E.version>0&&W.__version!==E.version){ht(W,E,w);return}e.bindTexture(32879,W.__webglTexture,33984+w)}function K(E,w){let W=n.get(E);if(E.version>0&&W.__version!==E.version){ut(W,E,w);return}e.bindTexture(34067,W.__webglTexture,33984+w)}let nt={[Rr]:10497,[Oe]:33071,[Lr]:33648},it={[ce]:9728,[Fo]:9984,[Zs]:9986,[Re]:9729,[sl]:9985,[Oi]:9987};function U(E,w,W){if(W?(r.texParameteri(E,10242,nt[w.wrapS]),r.texParameteri(E,10243,nt[w.wrapT]),(E===32879||E===35866)&&r.texParameteri(E,32882,nt[w.wrapR]),r.texParameteri(E,10240,it[w.magFilter]),r.texParameteri(E,10241,it[w.minFilter])):(r.texParameteri(E,10242,33071),r.texParameteri(E,10243,33071),(E===32879||E===35866)&&r.texParameteri(E,32882,33071),(w.wrapS!==Oe||w.wrapT!==Oe)&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping."),r.texParameteri(E,10240,P(w.magFilter)),r.texParameteri(E,10241,P(w.minFilter)),w.minFilter!==ce&&w.minFilter!==Re&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.")),t.has("EXT_texture_filter_anisotropic")===!0){let Q=t.get("EXT_texture_filter_anisotropic");if(w.magFilter===ce||w.minFilter!==Zs&&w.minFilter!==Oi||w.type===Rn&&t.has("OES_texture_float_linear")===!1||o===!1&&w.type===Bi&&t.has("OES_texture_half_float_linear")===!1)return;(w.anisotropy>1||n.get(w).__currentAnisotropy)&&(r.texParameterf(E,Q.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(w.anisotropy,i.getMaxAnisotropy())),n.get(w).__currentAnisotropy=w.anisotropy)}}function Mt(E,w){let W=!1;E.__webglInit===void 0&&(E.__webglInit=!0,w.addEventListener("dispose",O));let Q=w.source,tt=d.get(Q);tt===void 0&&(tt={},d.set(Q,tt));let st=$(w);if(st!==E.__cacheKey){tt[st]===void 0&&(tt[st]={texture:r.createTexture(),usedTimes:0},a.memory.textures++,W=!0),tt[st].usedTimes++;let yt=tt[E.__cacheKey];yt!==void 0&&(tt[E.__cacheKey].usedTimes--,yt.usedTimes===0&&I(w)),E.__cacheKey=st,E.__webglTexture=tt[st].texture}return W}function ht(E,w,W){let Q=3553;(w.isDataArrayTexture||w.isCompressedArrayTexture)&&(Q=35866),w.isData3DTexture&&(Q=32879);let tt=Mt(E,w),st=w.source;e.bindTexture(Q,E.__webglTexture,33984+W);let yt=n.get(st);if(st.version!==yt.__version||tt===!0){e.activeTexture(33984+W),r.pixelStorei(37440,w.flipY),r.pixelStorei(37441,w.premultiplyAlpha),r.pixelStorei(3317,w.unpackAlignment),r.pixelStorei(37443,0);let rt=b(w)&&v(w.image)===!1,X=_(w.image,rt,!1,h);X=De(w,X);let mt=v(X)||o,xt=s.convert(w.format,w.encoding),ct=s.convert(w.type),gt=y(w.internalFormat,xt,ct,w.encoding,w.isVideoTexture);U(Q,w,mt);let ft,Rt=w.mipmaps,Ut=o&&w.isVideoTexture!==!0,$t=yt.__version===void 0||tt===!0,L=S(w,X,mt);if(w.isDepthTexture)gt=6402,o?w.type===Rn?gt=36012:w.type===Pn?gt=33190:w.type===oi?gt=35056:gt=33189:w.type===Rn&&console.error("WebGLRenderer: Floating point depth texture requires WebGL2."),w.format===Ln&>===6402&&w.type!==Ja&&w.type!==Pn&&(console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."),w.type=Pn,ct=s.convert(w.type)),w.format===hi&>===6402&&(gt=34041,w.type!==oi&&(console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."),w.type=oi,ct=s.convert(w.type))),$t&&(Ut?e.texStorage2D(3553,1,gt,X.width,X.height):e.texImage2D(3553,0,gt,X.width,X.height,0,xt,ct,null));else if(w.isDataTexture)if(Rt.length>0&&mt){Ut&&$t&&e.texStorage2D(3553,L,gt,Rt[0].width,Rt[0].height);for(let V=0,j=Rt.length;V<j;V++)ft=Rt[V],Ut?e.texSubImage2D(3553,V,0,0,ft.width,ft.height,xt,ct,ft.data):e.texImage2D(3553,V,gt,ft.width,ft.height,0,xt,ct,ft.data);w.generateMipmaps=!1}else Ut?($t&&e.texStorage2D(3553,L,gt,X.width,X.height),e.texSubImage2D(3553,0,0,0,X.width,X.height,xt,ct,X.data)):e.texImage2D(3553,0,gt,X.width,X.height,0,xt,ct,X.data);else if(w.isCompressedTexture)if(w.isCompressedArrayTexture){Ut&&$t&&e.texStorage3D(35866,L,gt,Rt[0].width,Rt[0].height,X.depth);for(let V=0,j=Rt.length;V<j;V++)ft=Rt[V],w.format!==Be?xt!==null?Ut?e.compressedTexSubImage3D(35866,V,0,0,0,ft.width,ft.height,X.depth,xt,ft.data,0,0):e.compressedTexImage3D(35866,V,gt,ft.width,ft.height,X.depth,0,ft.data,0,0):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):Ut?e.texSubImage3D(35866,V,0,0,0,ft.width,ft.height,X.depth,xt,ct,ft.data):e.texImage3D(35866,V,gt,ft.width,ft.height,X.depth,0,xt,ct,ft.data)}else{Ut&&$t&&e.texStorage2D(3553,L,gt,Rt[0].width,Rt[0].height);for(let V=0,j=Rt.length;V<j;V++)ft=Rt[V],w.format!==Be?xt!==null?Ut?e.compressedTexSubImage2D(3553,V,0,0,ft.width,ft.height,xt,ft.data):e.compressedTexImage2D(3553,V,gt,ft.width,ft.height,0,ft.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):Ut?e.texSubImage2D(3553,V,0,0,ft.width,ft.height,xt,ct,ft.data):e.texImage2D(3553,V,gt,ft.width,ft.height,0,xt,ct,ft.data)}else if(w.isDataArrayTexture)Ut?($t&&e.texStorage3D(35866,L,gt,X.width,X.height,X.depth),e.texSubImage3D(35866,0,0,0,0,X.width,X.height,X.depth,xt,ct,X.data)):e.texImage3D(35866,0,gt,X.width,X.height,X.depth,0,xt,ct,X.data);else if(w.isData3DTexture)Ut?($t&&e.texStorage3D(32879,L,gt,X.width,X.height,X.depth),e.texSubImage3D(32879,0,0,0,0,X.width,X.height,X.depth,xt,ct,X.data)):e.texImage3D(32879,0,gt,X.width,X.height,X.depth,0,xt,ct,X.data);else if(w.isFramebufferTexture){if($t)if(Ut)e.texStorage2D(3553,L,gt,X.width,X.height);else{let V=X.width,j=X.height;for(let ot=0;ot<L;ot++)e.texImage2D(3553,ot,gt,V,j,0,xt,ct,null),V>>=1,j>>=1}}else if(Rt.length>0&&mt){Ut&&$t&&e.texStorage2D(3553,L,gt,Rt[0].width,Rt[0].height);for(let V=0,j=Rt.length;V<j;V++)ft=Rt[V],Ut?e.texSubImage2D(3553,V,0,0,xt,ct,ft):e.texImage2D(3553,V,gt,xt,ct,ft);w.generateMipmaps=!1}else Ut?($t&&e.texStorage2D(3553,L,gt,X.width,X.height),e.texSubImage2D(3553,0,0,0,xt,ct,X)):e.texImage2D(3553,0,gt,xt,ct,X);A(w,mt)&&C(Q),yt.__version=st.version,w.onUpdate&&w.onUpdate(w)}E.__version=w.version}function ut(E,w,W){if(w.image.length!==6)return;let Q=Mt(E,w),tt=w.source;e.bindTexture(34067,E.__webglTexture,33984+W);let st=n.get(tt);if(tt.version!==st.__version||Q===!0){e.activeTexture(33984+W),r.pixelStorei(37440,w.flipY),r.pixelStorei(37441,w.premultiplyAlpha),r.pixelStorei(3317,w.unpackAlignment),r.pixelStorei(37443,0);let yt=w.isCompressedTexture||w.image[0].isCompressedTexture,rt=w.image[0]&&w.image[0].isDataTexture,X=[];for(let V=0;V<6;V++)!yt&&!rt?X[V]=_(w.image[V],!1,!0,l):X[V]=rt?w.image[V].image:w.image[V],X[V]=De(w,X[V]);let mt=X[0],xt=v(mt)||o,ct=s.convert(w.format,w.encoding),gt=s.convert(w.type),ft=y(w.internalFormat,ct,gt,w.encoding),Rt=o&&w.isVideoTexture!==!0,Ut=st.__version===void 0||Q===!0,$t=S(w,mt,xt);U(34067,w,xt);let L;if(yt){Rt&&Ut&&e.texStorage2D(34067,$t,ft,mt.width,mt.height);for(let V=0;V<6;V++){L=X[V].mipmaps;for(let j=0;j<L.length;j++){let ot=L[j];w.format!==Be?ct!==null?Rt?e.compressedTexSubImage2D(34069+V,j,0,0,ot.width,ot.height,ct,ot.data):e.compressedTexImage2D(34069+V,j,ft,ot.width,ot.height,0,ot.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()"):Rt?e.texSubImage2D(34069+V,j,0,0,ot.width,ot.height,ct,gt,ot.data):e.texImage2D(34069+V,j,ft,ot.width,ot.height,0,ct,gt,ot.data)}}}else{L=w.mipmaps,Rt&&Ut&&(L.length>0&&$t++,e.texStorage2D(34067,$t,ft,X[0].width,X[0].height));for(let V=0;V<6;V++)if(rt){Rt?e.texSubImage2D(34069+V,0,0,0,X[V].width,X[V].height,ct,gt,X[V].data):e.texImage2D(34069+V,0,ft,X[V].width,X[V].height,0,ct,gt,X[V].data);for(let j=0;j<L.length;j++){let lt=L[j].image[V].image;Rt?e.texSubImage2D(34069+V,j+1,0,0,lt.width,lt.height,ct,gt,lt.data):e.texImage2D(34069+V,j+1,ft,lt.width,lt.height,0,ct,gt,lt.data)}}else{Rt?e.texSubImage2D(34069+V,0,0,0,ct,gt,X[V]):e.texImage2D(34069+V,0,ft,ct,gt,X[V]);for(let j=0;j<L.length;j++){let ot=L[j];Rt?e.texSubImage2D(34069+V,j+1,0,0,ct,gt,ot.image[V]):e.texImage2D(34069+V,j+1,ft,ct,gt,ot.image[V])}}}A(w,xt)&&C(34067),st.__version=tt.version,w.onUpdate&&w.onUpdate(w)}E.__version=w.version}function at(E,w,W,Q,tt){let st=s.convert(W.format,W.encoding),yt=s.convert(W.type),rt=y(W.internalFormat,st,yt,W.encoding);n.get(w).__hasExternalTextures||(tt===32879||tt===35866?e.texImage3D(tt,0,rt,w.width,w.height,w.depth,0,st,yt,null):e.texImage2D(tt,0,rt,w.width,w.height,0,st,yt,null)),e.bindFramebuffer(36160,E),Nt(w)?u.framebufferTexture2DMultisampleEXT(36160,Q,tt,n.get(W).__webglTexture,0,Wt(w)):(tt===3553||tt>=34069&&tt<=34074)&&r.framebufferTexture2D(36160,Q,tt,n.get(W).__webglTexture,0),e.bindFramebuffer(36160,null)}function Ft(E,w,W){if(r.bindRenderbuffer(36161,E),w.depthBuffer&&!w.stencilBuffer){let Q=33189;if(W||Nt(w)){let tt=w.depthTexture;tt&&tt.isDepthTexture&&(tt.type===Rn?Q=36012:tt.type===Pn&&(Q=33190));let st=Wt(w);Nt(w)?u.renderbufferStorageMultisampleEXT(36161,st,Q,w.width,w.height):r.renderbufferStorageMultisample(36161,st,Q,w.width,w.height)}else r.renderbufferStorage(36161,Q,w.width,w.height);r.framebufferRenderbuffer(36160,36096,36161,E)}else if(w.depthBuffer&&w.stencilBuffer){let Q=Wt(w);W&&Nt(w)===!1?r.renderbufferStorageMultisample(36161,Q,35056,w.width,w.height):Nt(w)?u.renderbufferStorageMultisampleEXT(36161,Q,35056,w.width,w.height):r.renderbufferStorage(36161,34041,w.width,w.height),r.framebufferRenderbuffer(36160,33306,36161,E)}else{let Q=w.isWebGLMultipleRenderTargets===!0?w.texture:[w.texture];for(let tt=0;tt<Q.length;tt++){let st=Q[tt],yt=s.convert(st.format,st.encoding),rt=s.convert(st.type),X=y(st.internalFormat,yt,rt,st.encoding),mt=Wt(w);W&&Nt(w)===!1?r.renderbufferStorageMultisample(36161,mt,X,w.width,w.height):Nt(w)?u.renderbufferStorageMultisampleEXT(36161,mt,X,w.width,w.height):r.renderbufferStorage(36161,X,w.width,w.height)}}r.bindRenderbuffer(36161,null)}function bt(E,w){if(w&&w.isWebGLCubeRenderTarget)throw new Error("Depth Texture with cube render targets is not supported");if(e.bindFramebuffer(36160,E),!(w.depthTexture&&w.depthTexture.isDepthTexture))throw new Error("renderTarget.depthTexture must be an instance of THREE.DepthTexture");(!n.get(w.depthTexture).__webglTexture||w.depthTexture.image.width!==w.width||w.depthTexture.image.height!==w.height)&&(w.depthTexture.image.width=w.width,w.depthTexture.image.height=w.height,w.depthTexture.needsUpdate=!0),J(w.depthTexture,0);let Q=n.get(w.depthTexture).__webglTexture,tt=Wt(w);if(w.depthTexture.format===Ln)Nt(w)?u.framebufferTexture2DMultisampleEXT(36160,36096,3553,Q,0,tt):r.framebufferTexture2D(36160,36096,3553,Q,0);else if(w.depthTexture.format===hi)Nt(w)?u.framebufferTexture2DMultisampleEXT(36160,33306,3553,Q,0,tt):r.framebufferTexture2D(36160,33306,3553,Q,0);else throw new Error("Unknown depthTexture format")}function _t(E){let w=n.get(E),W=E.isWebGLCubeRenderTarget===!0;if(E.depthTexture&&!w.__autoAllocateDepthBuffer){if(W)throw new Error("target.depthTexture not supported in Cube render targets");bt(w.__webglFramebuffer,E)}else if(W){w.__webglDepthbuffer=[];for(let Q=0;Q<6;Q++)e.bindFramebuffer(36160,w.__webglFramebuffer[Q]),w.__webglDepthbuffer[Q]=r.createRenderbuffer(),Ft(w.__webglDepthbuffer[Q],E,!1)}else e.bindFramebuffer(36160,w.__webglFramebuffer),w.__webglDepthbuffer=r.createRenderbuffer(),Ft(w.__webglDepthbuffer,E,!1);e.bindFramebuffer(36160,null)}function se(E,w,W){let Q=n.get(E);w!==void 0&&at(Q.__webglFramebuffer,E,E.texture,36064,3553),W!==void 0&&_t(E)}function Ae(E){let w=E.texture,W=n.get(E),Q=n.get(w);E.addEventListener("dispose",B),E.isWebGLMultipleRenderTargets!==!0&&(Q.__webglTexture===void 0&&(Q.__webglTexture=r.createTexture()),Q.__version=w.version,a.memory.textures++);let tt=E.isWebGLCubeRenderTarget===!0,st=E.isWebGLMultipleRenderTargets===!0,yt=v(E)||o;if(tt){W.__webglFramebuffer=[];for(let rt=0;rt<6;rt++)W.__webglFramebuffer[rt]=r.createFramebuffer()}else{if(W.__webglFramebuffer=r.createFramebuffer(),st)if(i.drawBuffers){let rt=E.texture;for(let X=0,mt=rt.length;X<mt;X++){let xt=n.get(rt[X]);xt.__webglTexture===void 0&&(xt.__webglTexture=r.createTexture(),a.memory.textures++)}}else console.warn("THREE.WebGLRenderer: WebGLMultipleRenderTargets can only be used with WebGL2 or WEBGL_draw_buffers extension.");if(o&&E.samples>0&&Nt(E)===!1){let rt=st?w:[w];W.__webglMultisampledFramebuffer=r.createFramebuffer(),W.__webglColorRenderbuffer=[],e.bindFramebuffer(36160,W.__webglMultisampledFramebuffer);for(let X=0;X<rt.length;X++){let mt=rt[X];W.__webglColorRenderbuffer[X]=r.createRenderbuffer(),r.bindRenderbuffer(36161,W.__webglColorRenderbuffer[X]);let xt=s.convert(mt.format,mt.encoding),ct=s.convert(mt.type),gt=y(mt.internalFormat,xt,ct,mt.encoding,E.isXRRenderTarget===!0),ft=Wt(E);r.renderbufferStorageMultisample(36161,ft,gt,E.width,E.height),r.framebufferRenderbuffer(36160,36064+X,36161,W.__webglColorRenderbuffer[X])}r.bindRenderbuffer(36161,null),E.depthBuffer&&(W.__webglDepthRenderbuffer=r.createRenderbuffer(),Ft(W.__webglDepthRenderbuffer,E,!0)),e.bindFramebuffer(36160,null)}}if(tt){e.bindTexture(34067,Q.__webglTexture),U(34067,w,yt);for(let rt=0;rt<6;rt++)at(W.__webglFramebuffer[rt],E,w,36064,34069+rt);A(w,yt)&&C(34067),e.unbindTexture()}else if(st){let rt=E.texture;for(let X=0,mt=rt.length;X<mt;X++){let xt=rt[X],ct=n.get(xt);e.bindTexture(3553,ct.__webglTexture),U(3553,xt,yt),at(W.__webglFramebuffer,E,xt,36064+X,3553),A(xt,yt)&&C(3553)}e.unbindTexture()}else{let rt=3553;(E.isWebGL3DRenderTarget||E.isWebGLArrayRenderTarget)&&(o?rt=E.isWebGL3DRenderTarget?32879:35866:console.error("THREE.WebGLTextures: THREE.Data3DTexture and THREE.DataArrayTexture only supported with WebGL2.")),e.bindTexture(rt,Q.__webglTexture),U(rt,w,yt),at(W.__webglFramebuffer,E,w,36064,rt),A(w,yt)&&C(rt),e.unbindTexture()}E.depthBuffer&&_t(E)}function te(E){let w=v(E)||o,W=E.isWebGLMultipleRenderTargets===!0?E.texture:[E.texture];for(let Q=0,tt=W.length;Q<tt;Q++){let st=W[Q];if(A(st,w)){let yt=E.isWebGLCubeRenderTarget?34067:3553,rt=n.get(st).__webglTexture;e.bindTexture(yt,rt),C(yt),e.unbindTexture()}}}function Ee(E){if(o&&E.samples>0&&Nt(E)===!1){let w=E.isWebGLMultipleRenderTargets?E.texture:[E.texture],W=E.width,Q=E.height,tt=16384,st=[],yt=E.stencilBuffer?33306:36096,rt=n.get(E),X=E.isWebGLMultipleRenderTargets===!0;if(X)for(let mt=0;mt<w.length;mt++)e.bindFramebuffer(36160,rt.__webglMultisampledFramebuffer),r.framebufferRenderbuffer(36160,36064+mt,36161,null),e.bindFramebuffer(36160,rt.__webglFramebuffer),r.framebufferTexture2D(36009,36064+mt,3553,null,0);e.bindFramebuffer(36008,rt.__webglMultisampledFramebuffer),e.bindFramebuffer(36009,rt.__webglFramebuffer);for(let mt=0;mt<w.length;mt++){st.push(36064+mt),E.depthBuffer&&st.push(yt);let xt=rt.__ignoreDepthValues!==void 0?rt.__ignoreDepthValues:!1;if(xt===!1&&(E.depthBuffer&&(tt|=256),E.stencilBuffer&&(tt|=1024)),X&&r.framebufferRenderbuffer(36008,36064,36161,rt.__webglColorRenderbuffer[mt]),xt===!0&&(r.invalidateFramebuffer(36008,[yt]),r.invalidateFramebuffer(36009,[yt])),X){let ct=n.get(w[mt]).__webglTexture;r.framebufferTexture2D(36009,36064,3553,ct,0)}r.blitFramebuffer(0,0,W,Q,0,0,W,Q,tt,9728),m&&r.invalidateFramebuffer(36008,st)}if(e.bindFramebuffer(36008,null),e.bindFramebuffer(36009,null),X)for(let mt=0;mt<w.length;mt++){e.bindFramebuffer(36160,rt.__webglMultisampledFramebuffer),r.framebufferRenderbuffer(36160,36064+mt,36161,rt.__webglColorRenderbuffer[mt]);let xt=n.get(w[mt]).__webglTexture;e.bindFramebuffer(36160,rt.__webglFramebuffer),r.framebufferTexture2D(36009,36064+mt,3553,xt,0)}e.bindFramebuffer(36009,rt.__webglMultisampledFramebuffer)}}function Wt(E){return Math.min(f,E.samples)}function Nt(E){let w=n.get(E);return o&&E.samples>0&&t.has("WEBGL_multisampled_render_to_texture")===!0&&w.__useRenderToTexture!==!1}function Ze(E){let w=a.render.frame;x.get(E)!==w&&(x.set(E,w),E.update())}function De(E,w){let W=E.encoding,Q=E.format,tt=E.type;return E.isCompressedTexture===!0||E.isVideoTexture===!0||E.format===Ir||W!==Nn&&(W===Ot?o===!1?t.has("EXT_sRGB")===!0&&Q===Be?(E.format=Ir,E.minFilter=Re,E.generateMipmaps=!1):w=vs.sRGBToLinear(w):(Q!==Be||tt!==Dn)&&console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture encoding:",W)),w}this.allocateTextureUnit=H,this.resetTextureUnits=Z,this.setTexture2D=J,this.setTexture2DArray=dt,this.setTexture3D=z,this.setTextureCube=K,this.rebindTextures=se,this.setupRenderTarget=Ae,this.updateRenderTargetMipmap=te,this.updateMultisampleRenderTarget=Ee,this.setupDepthRenderbuffer=_t,this.setupFrameBufferTexture=at,this.useMultisampledRTT=Nt}function ap(r,t,e){let n=e.isWebGL2;function i(s,a=null){let o;if(s===Dn)return 5121;if(s===cl)return 32819;if(s===ll)return 32820;if(s===rl)return 5120;if(s===ol)return 5122;if(s===Ja)return 5123;if(s===al)return 5124;if(s===Pn)return 5125;if(s===Rn)return 5126;if(s===Bi)return n?5131:(o=t.get("OES_texture_half_float"),o!==null?o.HALF_FLOAT_OES:null);if(s===hl)return 6406;if(s===Be)return 6408;if(s===ul)return 6409;if(s===fl)return 6410;if(s===Ln)return 6402;if(s===hi)return 34041;if(s===Ir)return o=t.get("EXT_sRGB"),o!==null?o.SRGB_ALPHA_EXT:null;if(s===dl)return 6403;if(s===pl)return 36244;if(s===ml)return 33319;if(s===gl)return 33320;if(s===xl)return 36249;if(s===Js||s===$s||s===Ks||s===js)if(a===Ot)if(o=t.get("WEBGL_compressed_texture_s3tc_srgb"),o!==null){if(s===Js)return o.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(s===$s)return o.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(s===Ks)return o.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(s===js)return o.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(o=t.get("WEBGL_compressed_texture_s3tc"),o!==null){if(s===Js)return o.COMPRESSED_RGB_S3TC_DXT1_EXT;if(s===$s)return o.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(s===Ks)return o.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(s===js)return o.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(s===zo||s===Oo||s===Bo||s===Uo)if(o=t.get("WEBGL_compressed_texture_pvrtc"),o!==null){if(s===zo)return o.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(s===Oo)return o.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(s===Bo)return o.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(s===Uo)return o.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(s===_l)return o=t.get("WEBGL_compressed_texture_etc1"),o!==null?o.COMPRESSED_RGB_ETC1_WEBGL:null;if(s===ko||s===Vo)if(o=t.get("WEBGL_compressed_texture_etc"),o!==null){if(s===ko)return a===Ot?o.COMPRESSED_SRGB8_ETC2:o.COMPRESSED_RGB8_ETC2;if(s===Vo)return a===Ot?o.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:o.COMPRESSED_RGBA8_ETC2_EAC}else return null;if(s===Go||s===Ho||s===Wo||s===qo||s===Xo||s===Yo||s===Zo||s===Jo||s===$o||s===Ko||s===jo||s===Qo||s===ta||s===ea)if(o=t.get("WEBGL_compressed_texture_astc"),o!==null){if(s===Go)return a===Ot?o.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:o.COMPRESSED_RGBA_ASTC_4x4_KHR;if(s===Ho)return a===Ot?o.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:o.COMPRESSED_RGBA_ASTC_5x4_KHR;if(s===Wo)return a===Ot?o.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:o.COMPRESSED_RGBA_ASTC_5x5_KHR;if(s===qo)return a===Ot?o.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:o.COMPRESSED_RGBA_ASTC_6x5_KHR;if(s===Xo)return a===Ot?o.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:o.COMPRESSED_RGBA_ASTC_6x6_KHR;if(s===Yo)return a===Ot?o.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:o.COMPRESSED_RGBA_ASTC_8x5_KHR;if(s===Zo)return a===Ot?o.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:o.COMPRESSED_RGBA_ASTC_8x6_KHR;if(s===Jo)return a===Ot?o.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:o.COMPRESSED_RGBA_ASTC_8x8_KHR;if(s===$o)return a===Ot?o.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:o.COMPRESSED_RGBA_ASTC_10x5_KHR;if(s===Ko)return a===Ot?o.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:o.COMPRESSED_RGBA_ASTC_10x6_KHR;if(s===jo)return a===Ot?o.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:o.COMPRESSED_RGBA_ASTC_10x8_KHR;if(s===Qo)return a===Ot?o.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:o.COMPRESSED_RGBA_ASTC_10x10_KHR;if(s===ta)return a===Ot?o.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:o.COMPRESSED_RGBA_ASTC_12x10_KHR;if(s===ea)return a===Ot?o.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:o.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(s===Qs)if(o=t.get("EXT_texture_compression_bptc"),o!==null){if(s===Qs)return a===Ot?o.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:o.COMPRESSED_RGBA_BPTC_UNORM_EXT}else return null;if(s===yl||s===na||s===ia||s===sa)if(o=t.get("EXT_texture_compression_rgtc"),o!==null){if(s===Qs)return o.COMPRESSED_RED_RGTC1_EXT;if(s===na)return o.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(s===ia)return o.COMPRESSED_RED_GREEN_RGTC2_EXT;if(s===sa)return o.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}else return null;return s===oi?n?34042:(o=t.get("WEBGL_depth_texture"),o!==null?o.UNSIGNED_INT_24_8_WEBGL:null):r[s]!==void 0?r[s]:null}return{convert:i}}var Yr=class extends Se{constructor(t=[]){super(),this.isArrayCamera=!0,this.cameras=t}},si=class extends pe{constructor(){super(),this.isGroup=!0,this.type="Group"}},cp={type:"move"},zi=class{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return this._hand===null&&(this._hand=new si,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 si,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new R,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new R),this._targetRay}getGripSpace(){return this._grip===null&&(this._grip=new si,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new R,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new R),this._grip}dispatchEvent(t){return this._targetRay!==null&&this._targetRay.dispatchEvent(t),this._grip!==null&&this._grip.dispatchEvent(t),this._hand!==null&&this._hand.dispatchEvent(t),this}connect(t){if(t&&t.hand){let e=this._hand;if(e)for(let n of t.hand.values())this._getHandJoint(e,n)}return this.dispatchEvent({type:"connected",data:t}),this}disconnect(t){return this.dispatchEvent({type:"disconnected",data:t}),this._targetRay!==null&&(this._targetRay.visible=!1),this._grip!==null&&(this._grip.visible=!1),this._hand!==null&&(this._hand.visible=!1),this}update(t,e,n){let i=null,s=null,a=null,o=this._targetRay,c=this._grip,l=this._hand;if(t&&e.session.visibilityState!=="visible-blurred"){if(l&&t.hand){a=!0;for(let p of t.hand.values()){let d=e.getJointPose(p,n),g=this._getHandJoint(l,p);d!==null&&(g.matrix.fromArray(d.transform.matrix),g.matrix.decompose(g.position,g.rotation,g.scale),g.jointRadius=d.radius),g.visible=d!==null}let h=l.joints["index-finger-tip"],f=l.joints["thumb-tip"],u=h.position.distanceTo(f.position),m=.02,x=.005;l.inputState.pinching&&u>m+x?(l.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:t.handedness,target:this})):!l.inputState.pinching&&u<=m-x&&(l.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:t.handedness,target:this}))}else c!==null&&t.gripSpace&&(s=e.getPose(t.gripSpace,n),s!==null&&(c.matrix.fromArray(s.transform.matrix),c.matrix.decompose(c.position,c.rotation,c.scale),s.linearVelocity?(c.hasLinearVelocity=!0,c.linearVelocity.copy(s.linearVelocity)):c.hasLinearVelocity=!1,s.angularVelocity?(c.hasAngularVelocity=!0,c.angularVelocity.copy(s.angularVelocity)):c.hasAngularVelocity=!1));o!==null&&(i=e.getPose(t.targetRaySpace,n),i===null&&s!==null&&(i=s),i!==null&&(o.matrix.fromArray(i.transform.matrix),o.matrix.decompose(o.position,o.rotation,o.scale),i.linearVelocity?(o.hasLinearVelocity=!0,o.linearVelocity.copy(i.linearVelocity)):o.hasLinearVelocity=!1,i.angularVelocity?(o.hasAngularVelocity=!0,o.angularVelocity.copy(i.angularVelocity)):o.hasAngularVelocity=!1,this.dispatchEvent(cp)))}return o!==null&&(o.visible=i!==null),c!==null&&(c.visible=s!==null),l!==null&&(l.visible=a!==null),this}_getHandJoint(t,e){if(t.joints[e.jointName]===void 0){let n=new si;n.matrixAutoUpdate=!1,n.visible=!1,t.joints[e.jointName]=n,t.add(n)}return t.joints[e.jointName]}},Zr=class extends ue{constructor(t,e,n,i,s,a,o,c,l,h){if(h=h!==void 0?h:Ln,h!==Ln&&h!==hi)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");n===void 0&&h===Ln&&(n=Pn),n===void 0&&h===hi&&(n=oi),super(null,i,s,a,o,c,h,n,l),this.isDepthTexture=!0,this.image={width:t,height:e},this.magFilter=o!==void 0?o:ce,this.minFilter=c!==void 0?c:ce,this.flipY=!1,this.generateMipmaps=!1}},Jr=class extends mn{constructor(t,e){super();let n=this,i=null,s=1,a=null,o="local-floor",c=1,l=null,h=null,f=null,u=null,m=null,x=null,p=e.getContextAttributes(),d=null,g=null,M=[],_=[],v=new Set,b=new Map,A=new Se;A.layers.enable(1),A.viewport=new Xt;let C=new Se;C.layers.enable(2),C.viewport=new Xt;let y=[A,C],S=new Yr;S.layers.enable(1),S.layers.enable(2);let P=null,O=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(z){let K=M[z];return K===void 0&&(K=new zi,M[z]=K),K.getTargetRaySpace()},this.getControllerGrip=function(z){let K=M[z];return K===void 0&&(K=new zi,M[z]=K),K.getGripSpace()},this.getHand=function(z){let K=M[z];return K===void 0&&(K=new zi,M[z]=K),K.getHandSpace()};function B(z){let K=_.indexOf(z.inputSource);if(K===-1)return;let nt=M[K];nt!==void 0&&nt.dispatchEvent({type:z.type,data:z.inputSource})}function D(){i.removeEventListener("select",B),i.removeEventListener("selectstart",B),i.removeEventListener("selectend",B),i.removeEventListener("squeeze",B),i.removeEventListener("squeezestart",B),i.removeEventListener("squeezeend",B),i.removeEventListener("end",D),i.removeEventListener("inputsourceschange",I);for(let z=0;z<M.length;z++){let K=_[z];K!==null&&(_[z]=null,M[z].disconnect(K))}P=null,O=null,t.setRenderTarget(d),m=null,u=null,f=null,i=null,g=null,dt.stop(),n.isPresenting=!1,n.dispatchEvent({type:"sessionend"})}this.setFramebufferScaleFactor=function(z){s=z,n.isPresenting===!0&&console.warn("THREE.WebXRManager: Cannot change framebuffer scale while presenting.")},this.setReferenceSpaceType=function(z){o=z,n.isPresenting===!0&&console.warn("THREE.WebXRManager: Cannot change reference space type while presenting.")},this.getReferenceSpace=function(){return l||a},this.setReferenceSpace=function(z){l=z},this.getBaseLayer=function(){return u!==null?u:m},this.getBinding=function(){return f},this.getFrame=function(){return x},this.getSession=function(){return i},this.setSession=async function(z){if(i=z,i!==null){if(d=t.getRenderTarget(),i.addEventListener("select",B),i.addEventListener("selectstart",B),i.addEventListener("selectend",B),i.addEventListener("squeeze",B),i.addEventListener("squeezestart",B),i.addEventListener("squeezeend",B),i.addEventListener("end",D),i.addEventListener("inputsourceschange",I),p.xrCompatible!==!0&&await e.makeXRCompatible(),i.renderState.layers===void 0||t.capabilities.isWebGL2===!1){let K={antialias:i.renderState.layers===void 0?p.antialias:!0,alpha:p.alpha,depth:p.depth,stencil:p.stencil,framebufferScaleFactor:s};m=new XRWebGLLayer(i,e,K),i.updateRenderState({baseLayer:m}),g=new rn(m.framebufferWidth,m.framebufferHeight,{format:Be,type:Dn,encoding:t.outputEncoding,stencilBuffer:p.stencil})}else{let K=null,nt=null,it=null;p.depth&&(it=p.stencil?35056:33190,K=p.stencil?hi:Ln,nt=p.stencil?oi:Pn);let U={colorFormat:32856,depthFormat:it,scaleFactor:s};f=new XRWebGLBinding(i,e),u=f.createProjectionLayer(U),i.updateRenderState({layers:[u]}),g=new rn(u.textureWidth,u.textureHeight,{format:Be,type:Dn,depthTexture:new Zr(u.textureWidth,u.textureHeight,nt,void 0,void 0,void 0,void 0,void 0,void 0,K),stencilBuffer:p.stencil,encoding:t.outputEncoding,samples:p.antialias?4:0});let Mt=t.properties.get(g);Mt.__ignoreDepthValues=u.ignoreDepthValues}g.isXRRenderTarget=!0,this.setFoveation(c),l=null,a=await i.requestReferenceSpace(o),dt.setContext(i),dt.start(),n.isPresenting=!0,n.dispatchEvent({type:"sessionstart"})}};function I(z){for(let K=0;K<z.removed.length;K++){let nt=z.removed[K],it=_.indexOf(nt);it>=0&&(_[it]=null,M[it].disconnect(nt))}for(let K=0;K<z.added.length;K++){let nt=z.added[K],it=_.indexOf(nt);if(it===-1){for(let Mt=0;Mt<M.length;Mt++)if(Mt>=_.length){_.push(nt),it=Mt;break}else if(_[Mt]===null){_[Mt]=nt,it=Mt;break}if(it===-1)break}let U=M[it];U&&U.connect(nt)}}let k=new R,Y=new R;function Z(z,K,nt){k.setFromMatrixPosition(K.matrixWorld),Y.setFromMatrixPosition(nt.matrixWorld);let it=k.distanceTo(Y),U=K.projectionMatrix.elements,Mt=nt.projectionMatrix.elements,ht=U[14]/(U[10]-1),ut=U[14]/(U[10]+1),at=(U[9]+1)/U[5],Ft=(U[9]-1)/U[5],bt=(U[8]-1)/U[0],_t=(Mt[8]+1)/Mt[0],se=ht*bt,Ae=ht*_t,te=it/(-bt+_t),Ee=te*-bt;K.matrixWorld.decompose(z.position,z.quaternion,z.scale),z.translateX(Ee),z.translateZ(te),z.matrixWorld.compose(z.position,z.quaternion,z.scale),z.matrixWorldInverse.copy(z.matrixWorld).invert();let Wt=ht+te,Nt=ut+te,Ze=se-Ee,De=Ae+(it-Ee),E=at*ut/Nt*Wt,w=Ft*ut/Nt*Wt;z.projectionMatrix.makePerspective(Ze,De,E,w,Wt,Nt)}function H(z,K){K===null?z.matrixWorld.copy(z.matrix):z.matrixWorld.multiplyMatrices(K.matrixWorld,z.matrix),z.matrixWorldInverse.copy(z.matrixWorld).invert()}this.updateCamera=function(z){if(i===null)return;S.near=C.near=A.near=z.near,S.far=C.far=A.far=z.far,(P!==S.near||O!==S.far)&&(i.updateRenderState({depthNear:S.near,depthFar:S.far}),P=S.near,O=S.far);let K=z.parent,nt=S.cameras;H(S,K);for(let U=0;U<nt.length;U++)H(nt[U],K);S.matrixWorld.decompose(S.position,S.quaternion,S.scale),z.matrix.copy(S.matrix),z.matrix.decompose(z.position,z.quaternion,z.scale);let it=z.children;for(let U=0,Mt=it.length;U<Mt;U++)it[U].updateMatrixWorld(!0);nt.length===2?Z(S,A,C):S.projectionMatrix.copy(A.projectionMatrix)},this.getCamera=function(){return S},this.getFoveation=function(){if(!(u===null&&m===null))return c},this.setFoveation=function(z){c=z,u!==null&&(u.fixedFoveation=z),m!==null&&m.fixedFoveation!==void 0&&(m.fixedFoveation=z)},this.getPlanes=function(){return v};let $=null;function J(z,K){if(h=K.getViewerPose(l||a),x=K,h!==null){let nt=h.views;m!==null&&(t.setRenderTargetFramebuffer(g,m.framebuffer),t.setRenderTarget(g));let it=!1;nt.length!==S.cameras.length&&(S.cameras.length=0,it=!0);for(let U=0;U<nt.length;U++){let Mt=nt[U],ht=null;if(m!==null)ht=m.getViewport(Mt);else{let at=f.getViewSubImage(u,Mt);ht=at.viewport,U===0&&(t.setRenderTargetTextures(g,at.colorTexture,u.ignoreDepthValues?void 0:at.depthStencilTexture),t.setRenderTarget(g))}let ut=y[U];ut===void 0&&(ut=new Se,ut.layers.enable(U),ut.viewport=new Xt,y[U]=ut),ut.matrix.fromArray(Mt.transform.matrix),ut.projectionMatrix.fromArray(Mt.projectionMatrix),ut.viewport.set(ht.x,ht.y,ht.width,ht.height),U===0&&S.matrix.copy(ut.matrix),it===!0&&S.cameras.push(ut)}}for(let nt=0;nt<M.length;nt++){let it=_[nt],U=M[nt];it!==null&&U!==void 0&&U.update(it,K,l||a)}if($&&$(z,K),K.detectedPlanes){n.dispatchEvent({type:"planesdetected",data:K.detectedPlanes});let nt=null;for(let it of v)K.detectedPlanes.has(it)||(nt===null&&(nt=[]),nt.push(it));if(nt!==null)for(let it of nt)v.delete(it),b.delete(it),n.dispatchEvent({type:"planeremoved",data:it});for(let it of K.detectedPlanes)if(!v.has(it))v.add(it),b.set(it,K.lastChangedTime),n.dispatchEvent({type:"planeadded",data:it});else{let U=b.get(it);it.lastChangedTime>U&&(b.set(it,it.lastChangedTime),n.dispatchEvent({type:"planechanged",data:it}))}}x=null}let dt=new Qa;dt.setAnimationLoop(J),this.setAnimationLoop=function(z){$=z},this.dispose=function(){}}};function lp(r,t){function e(p,d){d.color.getRGB(p.fogColor.value,ja(r)),d.isFog?(p.fogNear.value=d.near,p.fogFar.value=d.far):d.isFogExp2&&(p.fogDensity.value=d.density)}function n(p,d,g,M,_){d.isMeshBasicMaterial||d.isMeshLambertMaterial?i(p,d):d.isMeshToonMaterial?(i(p,d),h(p,d)):d.isMeshPhongMaterial?(i(p,d),l(p,d)):d.isMeshStandardMaterial?(i(p,d),f(p,d),d.isMeshPhysicalMaterial&&u(p,d,_)):d.isMeshMatcapMaterial?(i(p,d),m(p,d)):d.isMeshDepthMaterial?i(p,d):d.isMeshDistanceMaterial?(i(p,d),x(p,d)):d.isMeshNormalMaterial?i(p,d):d.isLineBasicMaterial?(s(p,d),d.isLineDashedMaterial&&a(p,d)):d.isPointsMaterial?o(p,d,g,M):d.isSpriteMaterial?c(p,d):d.isShadowMaterial?(p.color.value.copy(d.color),p.opacity.value=d.opacity):d.isShaderMaterial&&(d.uniformsNeedUpdate=!1)}function i(p,d){p.opacity.value=d.opacity,d.color&&p.diffuse.value.copy(d.color),d.emissive&&p.emissive.value.copy(d.emissive).multiplyScalar(d.emissiveIntensity),d.map&&(p.map.value=d.map),d.alphaMap&&(p.alphaMap.value=d.alphaMap),d.bumpMap&&(p.bumpMap.value=d.bumpMap,p.bumpScale.value=d.bumpScale,d.side===he&&(p.bumpScale.value*=-1)),d.displacementMap&&(p.displacementMap.value=d.displacementMap,p.displacementScale.value=d.displacementScale,p.displacementBias.value=d.displacementBias),d.emissiveMap&&(p.emissiveMap.value=d.emissiveMap),d.normalMap&&(p.normalMap.value=d.normalMap,p.normalScale.value.copy(d.normalScale),d.side===he&&p.normalScale.value.negate()),d.specularMap&&(p.specularMap.value=d.specularMap),d.alphaTest>0&&(p.alphaTest.value=d.alphaTest);let g=t.get(d).envMap;if(g&&(p.envMap.value=g,p.flipEnvMap.value=g.isCubeTexture&&g.isRenderTargetTexture===!1?-1:1,p.reflectivity.value=d.reflectivity,p.ior.value=d.ior,p.refractionRatio.value=d.refractionRatio),d.lightMap){p.lightMap.value=d.lightMap;let v=r.physicallyCorrectLights!==!0?Math.PI:1;p.lightMapIntensity.value=d.lightMapIntensity*v}d.aoMap&&(p.aoMap.value=d.aoMap,p.aoMapIntensity.value=d.aoMapIntensity);let M;d.map?M=d.map:d.specularMap?M=d.specularMap:d.displacementMap?M=d.displacementMap:d.normalMap?M=d.normalMap:d.bumpMap?M=d.bumpMap:d.roughnessMap?M=d.roughnessMap:d.metalnessMap?M=d.metalnessMap:d.alphaMap?M=d.alphaMap:d.emissiveMap?M=d.emissiveMap:d.clearcoatMap?M=d.clearcoatMap:d.clearcoatNormalMap?M=d.clearcoatNormalMap:d.clearcoatRoughnessMap?M=d.clearcoatRoughnessMap:d.iridescenceMap?M=d.iridescenceMap:d.iridescenceThicknessMap?M=d.iridescenceThicknessMap:d.specularIntensityMap?M=d.specularIntensityMap:d.specularColorMap?M=d.specularColorMap:d.transmissionMap?M=d.transmissionMap:d.thicknessMap?M=d.thicknessMap:d.sheenColorMap?M=d.sheenColorMap:d.sheenRoughnessMap&&(M=d.sheenRoughnessMap),M!==void 0&&(M.isWebGLRenderTarget&&(M=M.texture),M.matrixAutoUpdate===!0&&M.updateMatrix(),p.uvTransform.value.copy(M.matrix));let _;d.aoMap?_=d.aoMap:d.lightMap&&(_=d.lightMap),_!==void 0&&(_.isWebGLRenderTarget&&(_=_.texture),_.matrixAutoUpdate===!0&&_.updateMatrix(),p.uv2Transform.value.copy(_.matrix))}function s(p,d){p.diffuse.value.copy(d.color),p.opacity.value=d.opacity}function a(p,d){p.dashSize.value=d.dashSize,p.totalSize.value=d.dashSize+d.gapSize,p.scale.value=d.scale}function o(p,d,g,M){p.diffuse.value.copy(d.color),p.opacity.value=d.opacity,p.size.value=d.size*g,p.scale.value=M*.5,d.map&&(p.map.value=d.map),d.alphaMap&&(p.alphaMap.value=d.alphaMap),d.alphaTest>0&&(p.alphaTest.value=d.alphaTest);let _;d.map?_=d.map:d.alphaMap&&(_=d.alphaMap),_!==void 0&&(_.matrixAutoUpdate===!0&&_.updateMatrix(),p.uvTransform.value.copy(_.matrix))}function c(p,d){p.diffuse.value.copy(d.color),p.opacity.value=d.opacity,p.rotation.value=d.rotation,d.map&&(p.map.value=d.map),d.alphaMap&&(p.alphaMap.value=d.alphaMap),d.alphaTest>0&&(p.alphaTest.value=d.alphaTest);let g;d.map?g=d.map:d.alphaMap&&(g=d.alphaMap),g!==void 0&&(g.matrixAutoUpdate===!0&&g.updateMatrix(),p.uvTransform.value.copy(g.matrix))}function l(p,d){p.specular.value.copy(d.specular),p.shininess.value=Math.max(d.shininess,1e-4)}function h(p,d){d.gradientMap&&(p.gradientMap.value=d.gradientMap)}function f(p,d){p.roughness.value=d.roughness,p.metalness.value=d.metalness,d.roughnessMap&&(p.roughnessMap.value=d.roughnessMap),d.metalnessMap&&(p.metalnessMap.value=d.metalnessMap),t.get(d).envMap&&(p.envMapIntensity.value=d.envMapIntensity)}function u(p,d,g){p.ior.value=d.ior,d.sheen>0&&(p.sheenColor.value.copy(d.sheenColor).multiplyScalar(d.sheen),p.sheenRoughness.value=d.sheenRoughness,d.sheenColorMap&&(p.sheenColorMap.value=d.sheenColorMap),d.sheenRoughnessMap&&(p.sheenRoughnessMap.value=d.sheenRoughnessMap)),d.clearcoat>0&&(p.clearcoat.value=d.clearcoat,p.clearcoatRoughness.value=d.clearcoatRoughness,d.clearcoatMap&&(p.clearcoatMap.value=d.clearcoatMap),d.clearcoatRoughnessMap&&(p.clearcoatRoughnessMap.value=d.clearcoatRoughnessMap),d.clearcoatNormalMap&&(p.clearcoatNormalScale.value.copy(d.clearcoatNormalScale),p.clearcoatNormalMap.value=d.clearcoatNormalMap,d.side===he&&p.clearcoatNormalScale.value.negate())),d.iridescence>0&&(p.iridescence.value=d.iridescence,p.iridescenceIOR.value=d.iridescenceIOR,p.iridescenceThicknessMinimum.value=d.iridescenceThicknessRange[0],p.iridescenceThicknessMaximum.value=d.iridescenceThicknessRange[1],d.iridescenceMap&&(p.iridescenceMap.value=d.iridescenceMap),d.iridescenceThicknessMap&&(p.iridescenceThicknessMap.value=d.iridescenceThicknessMap)),d.transmission>0&&(p.transmission.value=d.transmission,p.transmissionSamplerMap.value=g.texture,p.transmissionSamplerSize.value.set(g.width,g.height),d.transmissionMap&&(p.transmissionMap.value=d.transmissionMap),p.thickness.value=d.thickness,d.thicknessMap&&(p.thicknessMap.value=d.thicknessMap),p.attenuationDistance.value=d.attenuationDistance,p.attenuationColor.value.copy(d.attenuationColor)),p.specularIntensity.value=d.specularIntensity,p.specularColor.value.copy(d.specularColor),d.specularIntensityMap&&(p.specularIntensityMap.value=d.specularIntensityMap),d.specularColorMap&&(p.specularColorMap.value=d.specularColorMap)}function m(p,d){d.matcap&&(p.matcap.value=d.matcap)}function x(p,d){p.referencePosition.value.copy(d.referencePosition),p.nearDistance.value=d.nearDistance,p.farDistance.value=d.farDistance}return{refreshFogUniforms:e,refreshMaterialUniforms:n}}function hp(r,t,e,n){let i={},s={},a=[],o=e.isWebGL2?r.getParameter(35375):0;function c(M,_){let v=_.program;n.uniformBlockBinding(M,v)}function l(M,_){let v=i[M.id];v===void 0&&(x(M),v=h(M),i[M.id]=v,M.addEventListener("dispose",d));let b=_.program;n.updateUBOMapping(M,b);let A=t.render.frame;s[M.id]!==A&&(u(M),s[M.id]=A)}function h(M){let _=f();M.__bindingPointIndex=_;let v=r.createBuffer(),b=M.__size,A=M.usage;return r.bindBuffer(35345,v),r.bufferData(35345,b,A),r.bindBuffer(35345,null),r.bindBufferBase(35345,_,v),v}function f(){for(let M=0;M<o;M++)if(a.indexOf(M)===-1)return a.push(M),M;return console.error("THREE.WebGLRenderer: Maximum number of simultaneously usable uniforms groups reached."),0}function u(M){let _=i[M.id],v=M.uniforms,b=M.__cache;r.bindBuffer(35345,_);for(let A=0,C=v.length;A<C;A++){let y=v[A];if(m(y,A,b)===!0){let S=y.__offset,P=Array.isArray(y.value)?y.value:[y.value],O=0;for(let B=0;B<P.length;B++){let D=P[B],I=p(D);typeof D=="number"?(y.__data[0]=D,r.bufferSubData(35345,S+O,y.__data)):D.isMatrix3?(y.__data[0]=D.elements[0],y.__data[1]=D.elements[1],y.__data[2]=D.elements[2],y.__data[3]=D.elements[0],y.__data[4]=D.elements[3],y.__data[5]=D.elements[4],y.__data[6]=D.elements[5],y.__data[7]=D.elements[0],y.__data[8]=D.elements[6],y.__data[9]=D.elements[7],y.__data[10]=D.elements[8],y.__data[11]=D.elements[0]):(D.toArray(y.__data,O),O+=I.storage/Float32Array.BYTES_PER_ELEMENT)}r.bufferSubData(35345,S,y.__data)}}r.bindBuffer(35345,null)}function m(M,_,v){let b=M.value;if(v[_]===void 0){if(typeof b=="number")v[_]=b;else{let A=Array.isArray(b)?b:[b],C=[];for(let y=0;y<A.length;y++)C.push(A[y].clone());v[_]=C}return!0}else if(typeof b=="number"){if(v[_]!==b)return v[_]=b,!0}else{let A=Array.isArray(v[_])?v[_]:[v[_]],C=Array.isArray(b)?b:[b];for(let y=0;y<A.length;y++){let S=A[y];if(S.equals(C[y])===!1)return S.copy(C[y]),!0}}return!1}function x(M){let _=M.uniforms,v=0,b=16,A=0;for(let C=0,y=_.length;C<y;C++){let S=_[C],P={boundary:0,storage:0},O=Array.isArray(S.value)?S.value:[S.value];for(let B=0,D=O.length;B<D;B++){let I=O[B],k=p(I);P.boundary+=k.boundary,P.storage+=k.storage}if(S.__data=new Float32Array(P.storage/Float32Array.BYTES_PER_ELEMENT),S.__offset=v,C>0){A=v%b;let B=b-A;A!==0&&B-P.boundary<0&&(v+=b-A,S.__offset=v)}v+=P.storage}return A=v%b,A>0&&(v+=b-A),M.__size=v,M.__cache={},this}function p(M){let _={boundary:0,storage:0};return typeof M=="number"?(_.boundary=4,_.storage=4):M.isVector2?(_.boundary=8,_.storage=8):M.isVector3||M.isColor?(_.boundary=16,_.storage=12):M.isVector4?(_.boundary=16,_.storage=16):M.isMatrix3?(_.boundary=48,_.storage=48):M.isMatrix4?(_.boundary=64,_.storage=64):M.isTexture?console.warn("THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group."):console.warn("THREE.WebGLRenderer: Unsupported uniform value type.",M),_}function d(M){let _=M.target;_.removeEventListener("dispose",d);let v=a.indexOf(_.__bindingPointIndex);a.splice(v,1),r.deleteBuffer(i[_.id]),delete i[_.id],delete s[_.id]}function g(){for(let M in i)r.deleteBuffer(i[M]);a=[],i={},s={}}return{bind:c,update:l,dispose:g}}function up(){let r=ys("canvas");return r.style.display="block",r}function fp(r={}){this.isWebGLRenderer=!0;let t=r.canvas!==void 0?r.canvas:up(),e=r.context!==void 0?r.context:null,n=r.depth!==void 0?r.depth:!0,i=r.stencil!==void 0?r.stencil:!0,s=r.antialias!==void 0?r.antialias:!1,a=r.premultipliedAlpha!==void 0?r.premultipliedAlpha:!0,o=r.preserveDrawingBuffer!==void 0?r.preserveDrawingBuffer:!1,c=r.powerPreference!==void 0?r.powerPreference:"default",l=r.failIfMajorPerformanceCaveat!==void 0?r.failIfMajorPerformanceCaveat:!1,h;e!==null?h=e.getContextAttributes().alpha:h=r.alpha!==void 0?r.alpha:!1;let f=null,u=null,m=[],x=[];this.domElement=t,this.debug={checkShaderErrors:!0},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this.outputEncoding=Nn,this.physicallyCorrectLights=!1,this.toneMapping=nn,this.toneMappingExposure=1;let p=this,d=!1,g=0,M=0,_=null,v=-1,b=null,A=new Xt,C=new Xt,y=null,S=t.width,P=t.height,O=1,B=null,D=null,I=new Xt(0,0,S,P),k=new Xt(0,0,S,P),Y=!1,Z=new Ps,H=!1,$=!1,J=null,dt=new zt,z=new At,K=new R,nt={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};function it(){return _===null?O:1}let U=e;function Mt(T,F){for(let G=0;G<T.length;G++){let N=T[G],q=t.getContext(N,F);if(q!==null)return q}return null}try{let T={alpha:!0,depth:n,stencil:i,antialias:s,premultipliedAlpha:a,preserveDrawingBuffer:o,powerPreference:c,failIfMajorPerformanceCaveat:l};if("setAttribute"in t&&t.setAttribute("data-engine",\`three.js r\${ro}\`),t.addEventListener("webglcontextlost",gt,!1),t.addEventListener("webglcontextrestored",ft,!1),t.addEventListener("webglcontextcreationerror",Rt,!1),U===null){let F=["webgl2","webgl","experimental-webgl"];if(p.isWebGL1Renderer===!0&&F.shift(),U=Mt(F,T),U===null)throw Mt(F)?new Error("Error creating WebGL context with your selected attributes."):new Error("Error creating WebGL context.")}U.getShaderPrecisionFormat===void 0&&(U.getShaderPrecisionFormat=function(){return{rangeMin:1,rangeMax:1,precision:1}})}catch(T){throw console.error("THREE.WebGLRenderer: "+T.message),T}let ht,ut,at,Ft,bt,_t,se,Ae,te,Ee,Wt,Nt,Ze,De,E,w,W,Q,tt,st,yt,rt,X,mt;function xt(){ht=new If(U),ut=new Af(U,ht,r),ht.init(ut),rt=new ap(U,ht,ut),at=new rp(U,ht,ut),Ft=new Ff,bt=new Yd,_t=new op(U,ht,at,bt,ut,rt,Ft),se=new Cf(p),Ae=new Lf(p),te=new Hl(U,ut),X=new Sf(U,ht,te,ut),Ee=new Df(U,te,Ft,X),Wt=new Uf(U,Ee,te,Ft),tt=new Bf(U,ut,_t),w=new Ef(bt),Nt=new Xd(p,se,Ae,ht,ut,X,w),Ze=new lp(p,bt),De=new Jd,E=new ep(ht,ut),Q=new wf(p,se,Ae,at,Wt,h,a),W=new sp(p,Wt,ut),mt=new hp(U,Ft,ut,at),st=new Tf(U,ht,Ft,ut),yt=new Nf(U,ht,Ft,ut),Ft.programs=Nt.programs,p.capabilities=ut,p.extensions=ht,p.properties=bt,p.renderLists=De,p.shadowMap=W,p.state=at,p.info=Ft}xt();let ct=new Jr(p,U);this.xr=ct,this.getContext=function(){return U},this.getContextAttributes=function(){return U.getContextAttributes()},this.forceContextLoss=function(){let T=ht.get("WEBGL_lose_context");T&&T.loseContext()},this.forceContextRestore=function(){let T=ht.get("WEBGL_lose_context");T&&T.restoreContext()},this.getPixelRatio=function(){return O},this.setPixelRatio=function(T){T!==void 0&&(O=T,this.setSize(S,P,!1))},this.getSize=function(T){return T.set(S,P)},this.setSize=function(T,F,G){if(ct.isPresenting){console.warn("THREE.WebGLRenderer: Can't change size while VR device is presenting.");return}S=T,P=F,t.width=Math.floor(T*O),t.height=Math.floor(F*O),G!==!1&&(t.style.width=T+"px",t.style.height=F+"px"),this.setViewport(0,0,T,F)},this.getDrawingBufferSize=function(T){return T.set(S*O,P*O).floor()},this.setDrawingBufferSize=function(T,F,G){S=T,P=F,O=G,t.width=Math.floor(T*G),t.height=Math.floor(F*G),this.setViewport(0,0,T,F)},this.getCurrentViewport=function(T){return T.copy(A)},this.getViewport=function(T){return T.copy(I)},this.setViewport=function(T,F,G,N){T.isVector4?I.set(T.x,T.y,T.z,T.w):I.set(T,F,G,N),at.viewport(A.copy(I).multiplyScalar(O).floor())},this.getScissor=function(T){return T.copy(k)},this.setScissor=function(T,F,G,N){T.isVector4?k.set(T.x,T.y,T.z,T.w):k.set(T,F,G,N),at.scissor(C.copy(k).multiplyScalar(O).floor())},this.getScissorTest=function(){return Y},this.setScissorTest=function(T){at.setScissorTest(Y=T)},this.setOpaqueSort=function(T){B=T},this.setTransparentSort=function(T){D=T},this.getClearColor=function(T){return T.copy(Q.getClearColor())},this.setClearColor=function(){Q.setClearColor.apply(Q,arguments)},this.getClearAlpha=function(){return Q.getClearAlpha()},this.setClearAlpha=function(){Q.setClearAlpha.apply(Q,arguments)},this.clear=function(T=!0,F=!0,G=!0){let N=0;T&&(N|=16384),F&&(N|=256),G&&(N|=1024),U.clear(N)},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",gt,!1),t.removeEventListener("webglcontextrestored",ft,!1),t.removeEventListener("webglcontextcreationerror",Rt,!1),De.dispose(),E.dispose(),bt.dispose(),se.dispose(),Ae.dispose(),Wt.dispose(),X.dispose(),mt.dispose(),Nt.dispose(),ct.dispose(),ct.removeEventListener("sessionstart",ot),ct.removeEventListener("sessionend",lt),J&&(J.dispose(),J=null),It.stop()};function gt(T){T.preventDefault(),console.log("THREE.WebGLRenderer: Context Lost."),d=!0}function ft(){console.log("THREE.WebGLRenderer: Context Restored."),d=!1;let T=Ft.autoReset,F=W.enabled,G=W.autoUpdate,N=W.needsUpdate,q=W.type;xt(),Ft.autoReset=T,W.enabled=F,W.autoUpdate=G,W.needsUpdate=N,W.type=q}function Rt(T){console.error("THREE.WebGLRenderer: A WebGL context could not be created. Reason: ",T.statusMessage)}function Ut(T){let F=T.target;F.removeEventListener("dispose",Ut),$t(F)}function $t(T){L(T),bt.remove(T)}function L(T){let F=bt.get(T).programs;F!==void 0&&(F.forEach(function(G){Nt.releaseProgram(G)}),T.isShaderMaterial&&Nt.releaseShaderCache(T))}this.renderBufferDirect=function(T,F,G,N,q,pt){F===null&&(F=nt);let vt=q.isMesh&&q.matrixWorld.determinant()<0,St=vc(T,F,G,N,q);at.setMaterial(N,vt);let Tt=G.index,Lt=1;N.wireframe===!0&&(Tt=Ee.getWireframeAttribute(G),Lt=2);let Et=G.drawRange,Ct=G.attributes.position,Vt=Et.start*Lt,ye=(Et.start+Et.count)*Lt;pt!==null&&(Vt=Math.max(Vt,pt.start*Lt),ye=Math.min(ye,(pt.start+pt.count)*Lt)),Tt!==null?(Vt=Math.max(Vt,0),ye=Math.min(ye,Tt.count)):Ct!=null&&(Vt=Math.max(Vt,0),ye=Math.min(ye,Ct.count));let $e=ye-Vt;if($e<0||$e===1/0)return;X.setup(q,N,St,G,Tt);let Mn,Gt=st;if(Tt!==null&&(Mn=te.get(Tt),Gt=yt,Gt.setIndex(Mn)),q.isMesh)N.wireframe===!0?(at.setLineWidth(N.wireframeLinewidth*it()),Gt.setMode(1)):Gt.setMode(4);else if(q.isLine){let Pt=N.linewidth;Pt===void 0&&(Pt=1),at.setLineWidth(Pt*it()),q.isLineSegments?Gt.setMode(1):q.isLineLoop?Gt.setMode(2):Gt.setMode(3)}else q.isPoints?Gt.setMode(0):q.isSprite&&Gt.setMode(4);if(q.isInstancedMesh)Gt.renderInstances(Vt,$e,q.count);else if(G.isInstancedBufferGeometry){let Pt=G._maxInstanceCount!==void 0?G._maxInstanceCount:1/0,Ws=Math.min(G.instanceCount,Pt);Gt.renderInstances(Vt,$e,Ws)}else Gt.render(Vt,$e)},this.compile=function(T,F){function G(N,q,pt){N.transparent===!0&&N.side===We&&N.forceSinglePass===!1?(N.side=he,N.needsUpdate=!0,Ce(N,q,pt),N.side=Ue,N.needsUpdate=!0,Ce(N,q,pt),N.side=We):Ce(N,q,pt)}u=E.get(T),u.init(),x.push(u),T.traverseVisible(function(N){N.isLight&&N.layers.test(F.layers)&&(u.pushLight(N),N.castShadow&&u.pushShadow(N))}),u.setupLights(p.physicallyCorrectLights),T.traverse(function(N){let q=N.material;if(q)if(Array.isArray(q))for(let pt=0;pt<q.length;pt++){let vt=q[pt];G(vt,T,N)}else G(q,T,N)}),x.pop(),u=null};let V=null;function j(T){V&&V(T)}function ot(){It.stop()}function lt(){It.start()}let It=new Qa;It.setAnimationLoop(j),typeof self!="undefined"&&It.setContext(self),this.setAnimationLoop=function(T){V=T,ct.setAnimationLoop(T),T===null?It.stop():It.start()},ct.addEventListener("sessionstart",ot),ct.addEventListener("sessionend",lt),this.render=function(T,F){if(F!==void 0&&F.isCamera!==!0){console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");return}if(d===!0)return;T.matrixWorldAutoUpdate===!0&&T.updateMatrixWorld(),F.parent===null&&F.matrixWorldAutoUpdate===!0&&F.updateMatrixWorld(),ct.enabled===!0&&ct.isPresenting===!0&&(ct.cameraAutoUpdate===!0&&ct.updateCamera(F),F=ct.getCamera()),T.isScene===!0&&T.onBeforeRender(p,T,F,_),u=E.get(T,x.length),u.init(),x.push(u),dt.multiplyMatrices(F.projectionMatrix,F.matrixWorldInverse),Z.setFromProjectionMatrix(dt),$=this.localClippingEnabled,H=w.init(this.clippingPlanes,$),f=De.get(T,m.length),f.init(),m.push(f),Kt(T,F,0,p.sortObjects),f.finish(),p.sortObjects===!0&&f.sort(B,D),H===!0&&w.beginShadows();let G=u.state.shadowsArray;if(W.render(G,T,F),H===!0&&w.endShadows(),this.info.autoReset===!0&&this.info.reset(),Q.render(f,T),u.setupLights(p.physicallyCorrectLights),F.isArrayCamera){let N=F.cameras;for(let q=0,pt=N.length;q<pt;q++){let vt=N[q];ee(f,T,vt,vt.viewport)}}else ee(f,T,F);_!==null&&(_t.updateMultisampleRenderTarget(_),_t.updateRenderTargetMipmap(_)),T.isScene===!0&&T.onAfterRender(p,T,F),X.resetDefaultState(),v=-1,b=null,x.pop(),x.length>0?u=x[x.length-1]:u=null,m.pop(),m.length>0?f=m[m.length-1]:f=null};function Kt(T,F,G,N){if(T.visible===!1)return;if(T.layers.test(F.layers)){if(T.isGroup)G=T.renderOrder;else if(T.isLOD)T.autoUpdate===!0&&T.update(F);else if(T.isLight)u.pushLight(T),T.castShadow&&u.pushShadow(T);else if(T.isSprite){if(!T.frustumCulled||Z.intersectsSprite(T)){N&&K.setFromMatrixPosition(T.matrixWorld).applyMatrix4(dt);let vt=Wt.update(T),St=T.material;St.visible&&f.push(T,vt,St,G,K.z,null)}}else if((T.isMesh||T.isLine||T.isPoints)&&(T.isSkinnedMesh&&T.skeleton.frame!==Ft.render.frame&&(T.skeleton.update(),T.skeleton.frame=Ft.render.frame),!T.frustumCulled||Z.intersectsObject(T))){N&&K.setFromMatrixPosition(T.matrixWorld).applyMatrix4(dt);let vt=Wt.update(T),St=T.material;if(Array.isArray(St)){let Tt=vt.groups;for(let Lt=0,Et=Tt.length;Lt<Et;Lt++){let Ct=Tt[Lt],Vt=St[Ct.materialIndex];Vt&&Vt.visible&&f.push(T,vt,Vt,G,K.z,Ct)}}else St.visible&&f.push(T,vt,St,G,K.z,null)}}let pt=T.children;for(let vt=0,St=pt.length;vt<St;vt++)Kt(pt[vt],F,G,N)}function ee(T,F,G,N){let q=T.opaque,pt=T.transmissive,vt=T.transparent;u.setupLightsView(G),H===!0&&w.setGlobalState(p.clippingPlanes,G),pt.length>0&&vn(q,F,G),N&&at.viewport(A.copy(N)),q.length>0&&kt(q,F,G),pt.length>0&&kt(pt,F,G),vt.length>0&&kt(vt,F,G),at.buffers.depth.setTest(!0),at.buffers.depth.setMask(!0),at.buffers.color.setMask(!0),at.setPolygonOffset(!1)}function vn(T,F,G){let N=ut.isWebGL2;J===null&&(J=new rn(1,1,{generateMipmaps:!0,type:ht.has("EXT_color_buffer_half_float")?Bi:Dn,minFilter:Oi,samples:N&&s===!0?4:0})),p.getDrawingBufferSize(z),N?J.setSize(z.x,z.y):J.setSize(Dr(z.x),Dr(z.y));let q=p.getRenderTarget();p.setRenderTarget(J),p.clear();let pt=p.toneMapping;p.toneMapping=nn,kt(T,F,G),p.toneMapping=pt,_t.updateMultisampleRenderTarget(J),_t.updateRenderTargetMipmap(J),p.setRenderTarget(q)}function kt(T,F,G){let N=F.isScene===!0?F.overrideMaterial:null;for(let q=0,pt=T.length;q<pt;q++){let vt=T[q],St=vt.object,Tt=vt.geometry,Lt=N===null?vt.material:N,Et=vt.group;St.layers.test(G.layers)&&Je(St,F,G,Tt,Lt,Et)}}function Je(T,F,G,N,q,pt){T.onBeforeRender(p,F,G,N,q,pt),T.modelViewMatrix.multiplyMatrices(G.matrixWorldInverse,T.matrixWorld),T.normalMatrix.getNormalMatrix(T.modelViewMatrix),q.onBeforeRender(p,F,G,N,T,pt),q.transparent===!0&&q.side===We&&q.forceSinglePass===!1?(q.side=he,q.needsUpdate=!0,p.renderBufferDirect(G,F,N,q,T,pt),q.side=Ue,q.needsUpdate=!0,p.renderBufferDirect(G,F,N,q,T,pt),q.side=We):p.renderBufferDirect(G,F,N,q,T,pt),T.onAfterRender(p,F,G,N,q,pt)}function Ce(T,F,G){F.isScene!==!0&&(F=nt);let N=bt.get(T),q=u.state.lights,pt=u.state.shadowsArray,vt=q.state.version,St=Nt.getParameters(T,q.state,pt,F,G),Tt=Nt.getProgramCacheKey(St),Lt=N.programs;N.environment=T.isMeshStandardMaterial?F.environment:null,N.fog=F.fog,N.envMap=(T.isMeshStandardMaterial?Ae:se).get(T.envMap||N.environment),Lt===void 0&&(T.addEventListener("dispose",Ut),Lt=new Map,N.programs=Lt);let Et=Lt.get(Tt);if(Et!==void 0){if(N.currentProgram===Et&&N.lightsStateVersion===vt)return wo(T,St),Et}else St.uniforms=Nt.getUniforms(T),T.onBuild(G,St,p),T.onBeforeCompile(St,p),Et=Nt.acquireProgram(St,Tt),Lt.set(Tt,Et),N.uniforms=St.uniforms;let Ct=N.uniforms;(!T.isShaderMaterial&&!T.isRawShaderMaterial||T.clipping===!0)&&(Ct.clippingPlanes=w.uniform),wo(T,St),N.needsLights=bc(T),N.lightsStateVersion=vt,N.needsLights&&(Ct.ambientLightColor.value=q.state.ambient,Ct.lightProbe.value=q.state.probe,Ct.directionalLights.value=q.state.directional,Ct.directionalLightShadows.value=q.state.directionalShadow,Ct.spotLights.value=q.state.spot,Ct.spotLightShadows.value=q.state.spotShadow,Ct.rectAreaLights.value=q.state.rectArea,Ct.ltc_1.value=q.state.rectAreaLTC1,Ct.ltc_2.value=q.state.rectAreaLTC2,Ct.pointLights.value=q.state.point,Ct.pointLightShadows.value=q.state.pointShadow,Ct.hemisphereLights.value=q.state.hemi,Ct.directionalShadowMap.value=q.state.directionalShadowMap,Ct.directionalShadowMatrix.value=q.state.directionalShadowMatrix,Ct.spotShadowMap.value=q.state.spotShadowMap,Ct.spotLightMatrix.value=q.state.spotLightMatrix,Ct.spotLightMap.value=q.state.spotLightMap,Ct.pointShadowMap.value=q.state.pointShadowMap,Ct.pointShadowMatrix.value=q.state.pointShadowMatrix);let Vt=Et.getUniforms(),ye=ai.seqWithValue(Vt.seq,Ct);return N.currentProgram=Et,N.uniformsList=ye,Et}function wo(T,F){let G=bt.get(T);G.outputEncoding=F.outputEncoding,G.instancing=F.instancing,G.skinning=F.skinning,G.morphTargets=F.morphTargets,G.morphNormals=F.morphNormals,G.morphColors=F.morphColors,G.morphTargetsCount=F.morphTargetsCount,G.numClippingPlanes=F.numClippingPlanes,G.numIntersection=F.numClipIntersection,G.vertexAlphas=F.vertexAlphas,G.vertexTangents=F.vertexTangents,G.toneMapping=F.toneMapping}function vc(T,F,G,N,q){F.isScene!==!0&&(F=nt),_t.resetTextureUnits();let pt=F.fog,vt=N.isMeshStandardMaterial?F.environment:null,St=_===null?p.outputEncoding:_.isXRRenderTarget===!0?_.texture.encoding:Nn,Tt=(N.isMeshStandardMaterial?Ae:se).get(N.envMap||vt),Lt=N.vertexColors===!0&&!!G.attributes.color&&G.attributes.color.itemSize===4,Et=!!N.normalMap&&!!G.attributes.tangent,Ct=!!G.morphAttributes.position,Vt=!!G.morphAttributes.normal,ye=!!G.morphAttributes.color,$e=N.toneMapped?p.toneMapping:nn,Mn=G.morphAttributes.position||G.morphAttributes.normal||G.morphAttributes.color,Gt=Mn!==void 0?Mn.length:0,Pt=bt.get(N),Ws=u.state.lights;if(H===!0&&($===!0||T!==b)){let ve=T===b&&N.id===v;w.setState(N,T,ve)}let jt=!1;N.version===Pt.__version?(Pt.needsLights&&Pt.lightsStateVersion!==Ws.state.version||Pt.outputEncoding!==St||q.isInstancedMesh&&Pt.instancing===!1||!q.isInstancedMesh&&Pt.instancing===!0||q.isSkinnedMesh&&Pt.skinning===!1||!q.isSkinnedMesh&&Pt.skinning===!0||Pt.envMap!==Tt||N.fog===!0&&Pt.fog!==pt||Pt.numClippingPlanes!==void 0&&(Pt.numClippingPlanes!==w.numPlanes||Pt.numIntersection!==w.numIntersection)||Pt.vertexAlphas!==Lt||Pt.vertexTangents!==Et||Pt.morphTargets!==Ct||Pt.morphNormals!==Vt||Pt.morphColors!==ye||Pt.toneMapping!==$e||ut.isWebGL2===!0&&Pt.morphTargetsCount!==Gt)&&(jt=!0):(jt=!0,Pt.__version=N.version);let bn=Pt.currentProgram;jt===!0&&(bn=Ce(N,F,q));let So=!1,Ai=!1,qs=!1,re=bn.getUniforms(),wn=Pt.uniforms;if(at.useProgram(bn.program)&&(So=!0,Ai=!0,qs=!0),N.id!==v&&(v=N.id,Ai=!0),So||b!==T){if(re.setValue(U,"projectionMatrix",T.projectionMatrix),ut.logarithmicDepthBuffer&&re.setValue(U,"logDepthBufFC",2/(Math.log(T.far+1)/Math.LN2)),b!==T&&(b=T,Ai=!0,qs=!0),N.isShaderMaterial||N.isMeshPhongMaterial||N.isMeshToonMaterial||N.isMeshStandardMaterial||N.envMap){let ve=re.map.cameraPosition;ve!==void 0&&ve.setValue(U,K.setFromMatrixPosition(T.matrixWorld))}(N.isMeshPhongMaterial||N.isMeshToonMaterial||N.isMeshLambertMaterial||N.isMeshBasicMaterial||N.isMeshStandardMaterial||N.isShaderMaterial)&&re.setValue(U,"isOrthographic",T.isOrthographicCamera===!0),(N.isMeshPhongMaterial||N.isMeshToonMaterial||N.isMeshLambertMaterial||N.isMeshBasicMaterial||N.isMeshStandardMaterial||N.isShaderMaterial||N.isShadowMaterial||q.isSkinnedMesh)&&re.setValue(U,"viewMatrix",T.matrixWorldInverse)}if(q.isSkinnedMesh){re.setOptional(U,q,"bindMatrix"),re.setOptional(U,q,"bindMatrixInverse");let ve=q.skeleton;ve&&(ut.floatVertexTextures?(ve.boneTexture===null&&ve.computeBoneTexture(),re.setValue(U,"boneTexture",ve.boneTexture,_t),re.setValue(U,"boneTextureSize",ve.boneTextureSize)):console.warn("THREE.WebGLRenderer: SkinnedMesh can only be used with WebGL 2. With WebGL 1 OES_texture_float and vertex textures support is required."))}let Xs=G.morphAttributes;if((Xs.position!==void 0||Xs.normal!==void 0||Xs.color!==void 0&&ut.isWebGL2===!0)&&tt.update(q,G,N,bn),(Ai||Pt.receiveShadow!==q.receiveShadow)&&(Pt.receiveShadow=q.receiveShadow,re.setValue(U,"receiveShadow",q.receiveShadow)),N.isMeshGouraudMaterial&&N.envMap!==null&&(wn.envMap.value=Tt,wn.flipEnvMap.value=Tt.isCubeTexture&&Tt.isRenderTargetTexture===!1?-1:1),Ai&&(re.setValue(U,"toneMappingExposure",p.toneMappingExposure),Pt.needsLights&&Mc(wn,qs),pt&&N.fog===!0&&Ze.refreshFogUniforms(wn,pt),Ze.refreshMaterialUniforms(wn,N,O,P,J),ai.upload(U,Pt.uniformsList,wn,_t)),N.isShaderMaterial&&N.uniformsNeedUpdate===!0&&(ai.upload(U,Pt.uniformsList,wn,_t),N.uniformsNeedUpdate=!1),N.isSpriteMaterial&&re.setValue(U,"center",q.center),re.setValue(U,"modelViewMatrix",q.modelViewMatrix),re.setValue(U,"normalMatrix",q.normalMatrix),re.setValue(U,"modelMatrix",q.matrixWorld),N.isShaderMaterial||N.isRawShaderMaterial){let ve=N.uniformsGroups;for(let Ys=0,wc=ve.length;Ys<wc;Ys++)if(ut.isWebGL2){let To=ve[Ys];mt.update(To,bn),mt.bind(To,bn)}else console.warn("THREE.WebGLRenderer: Uniform Buffer Objects can only be used with WebGL 2.")}return bn}function Mc(T,F){T.ambientLightColor.needsUpdate=F,T.lightProbe.needsUpdate=F,T.directionalLights.needsUpdate=F,T.directionalLightShadows.needsUpdate=F,T.pointLights.needsUpdate=F,T.pointLightShadows.needsUpdate=F,T.spotLights.needsUpdate=F,T.spotLightShadows.needsUpdate=F,T.rectAreaLights.needsUpdate=F,T.hemisphereLights.needsUpdate=F}function bc(T){return T.isMeshLambertMaterial||T.isMeshToonMaterial||T.isMeshPhongMaterial||T.isMeshStandardMaterial||T.isShadowMaterial||T.isShaderMaterial&&T.lights===!0}this.getActiveCubeFace=function(){return g},this.getActiveMipmapLevel=function(){return M},this.getRenderTarget=function(){return _},this.setRenderTargetTextures=function(T,F,G){bt.get(T.texture).__webglTexture=F,bt.get(T.depthTexture).__webglTexture=G;let N=bt.get(T);N.__hasExternalTextures=!0,N.__hasExternalTextures&&(N.__autoAllocateDepthBuffer=G===void 0,N.__autoAllocateDepthBuffer||ht.has("WEBGL_multisampled_render_to_texture")===!0&&(console.warn("THREE.WebGLRenderer: Render-to-texture extension was disabled because an external texture was provided"),N.__useRenderToTexture=!1))},this.setRenderTargetFramebuffer=function(T,F){let G=bt.get(T);G.__webglFramebuffer=F,G.__useDefaultFramebuffer=F===void 0},this.setRenderTarget=function(T,F=0,G=0){_=T,g=F,M=G;let N=!0,q=null,pt=!1,vt=!1;if(T){let Tt=bt.get(T);Tt.__useDefaultFramebuffer!==void 0?(at.bindFramebuffer(36160,null),N=!1):Tt.__webglFramebuffer===void 0?_t.setupRenderTarget(T):Tt.__hasExternalTextures&&_t.rebindTextures(T,bt.get(T.texture).__webglTexture,bt.get(T.depthTexture).__webglTexture);let Lt=T.texture;(Lt.isData3DTexture||Lt.isDataArrayTexture||Lt.isCompressedArrayTexture)&&(vt=!0);let Et=bt.get(T).__webglFramebuffer;T.isWebGLCubeRenderTarget?(q=Et[F],pt=!0):ut.isWebGL2&&T.samples>0&&_t.useMultisampledRTT(T)===!1?q=bt.get(T).__webglMultisampledFramebuffer:q=Et,A.copy(T.viewport),C.copy(T.scissor),y=T.scissorTest}else A.copy(I).multiplyScalar(O).floor(),C.copy(k).multiplyScalar(O).floor(),y=Y;if(at.bindFramebuffer(36160,q)&&ut.drawBuffers&&N&&at.drawBuffers(T,q),at.viewport(A),at.scissor(C),at.setScissorTest(y),pt){let Tt=bt.get(T.texture);U.framebufferTexture2D(36160,36064,34069+F,Tt.__webglTexture,G)}else if(vt){let Tt=bt.get(T.texture),Lt=F||0;U.framebufferTextureLayer(36160,36064,Tt.__webglTexture,G||0,Lt)}v=-1},this.readRenderTargetPixels=function(T,F,G,N,q,pt,vt){if(!(T&&T.isWebGLRenderTarget)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");return}let St=bt.get(T).__webglFramebuffer;if(T.isWebGLCubeRenderTarget&&vt!==void 0&&(St=St[vt]),St){at.bindFramebuffer(36160,St);try{let Tt=T.texture,Lt=Tt.format,Et=Tt.type;if(Lt!==Be&&rt.convert(Lt)!==U.getParameter(35739)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");return}let Ct=Et===Bi&&(ht.has("EXT_color_buffer_half_float")||ut.isWebGL2&&ht.has("EXT_color_buffer_float"));if(Et!==Dn&&rt.convert(Et)!==U.getParameter(35738)&&!(Et===Rn&&(ut.isWebGL2||ht.has("OES_texture_float")||ht.has("WEBGL_color_buffer_float")))&&!Ct){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");return}F>=0&&F<=T.width-N&&G>=0&&G<=T.height-q&&U.readPixels(F,G,N,q,rt.convert(Lt),rt.convert(Et),pt)}finally{let Tt=_!==null?bt.get(_).__webglFramebuffer:null;at.bindFramebuffer(36160,Tt)}}},this.copyFramebufferToTexture=function(T,F,G=0){let N=Math.pow(2,-G),q=Math.floor(F.image.width*N),pt=Math.floor(F.image.height*N);_t.setTexture2D(F,0),U.copyTexSubImage2D(3553,G,0,0,T.x,T.y,q,pt),at.unbindTexture()},this.copyTextureToTexture=function(T,F,G,N=0){let q=F.image.width,pt=F.image.height,vt=rt.convert(G.format),St=rt.convert(G.type);_t.setTexture2D(G,0),U.pixelStorei(37440,G.flipY),U.pixelStorei(37441,G.premultiplyAlpha),U.pixelStorei(3317,G.unpackAlignment),F.isDataTexture?U.texSubImage2D(3553,N,T.x,T.y,q,pt,vt,St,F.image.data):F.isCompressedTexture?U.compressedTexSubImage2D(3553,N,T.x,T.y,F.mipmaps[0].width,F.mipmaps[0].height,vt,F.mipmaps[0].data):U.texSubImage2D(3553,N,T.x,T.y,vt,St,F.image),N===0&&G.generateMipmaps&&U.generateMipmap(3553),at.unbindTexture()},this.copyTextureToTexture3D=function(T,F,G,N,q=0){if(p.isWebGL1Renderer){console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.");return}let pt=T.max.x-T.min.x+1,vt=T.max.y-T.min.y+1,St=T.max.z-T.min.z+1,Tt=rt.convert(N.format),Lt=rt.convert(N.type),Et;if(N.isData3DTexture)_t.setTexture3D(N,0),Et=32879;else if(N.isDataArrayTexture)_t.setTexture2DArray(N,0),Et=35866;else{console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.");return}U.pixelStorei(37440,N.flipY),U.pixelStorei(37441,N.premultiplyAlpha),U.pixelStorei(3317,N.unpackAlignment);let Ct=U.getParameter(3314),Vt=U.getParameter(32878),ye=U.getParameter(3316),$e=U.getParameter(3315),Mn=U.getParameter(32877),Gt=G.isCompressedTexture?G.mipmaps[0]:G.image;U.pixelStorei(3314,Gt.width),U.pixelStorei(32878,Gt.height),U.pixelStorei(3316,T.min.x),U.pixelStorei(3315,T.min.y),U.pixelStorei(32877,T.min.z),G.isDataTexture||G.isData3DTexture?U.texSubImage3D(Et,q,F.x,F.y,F.z,pt,vt,St,Tt,Lt,Gt.data):G.isCompressedArrayTexture?(console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture."),U.compressedTexSubImage3D(Et,q,F.x,F.y,F.z,pt,vt,St,Tt,Gt.data)):U.texSubImage3D(Et,q,F.x,F.y,F.z,pt,vt,St,Tt,Lt,Gt),U.pixelStorei(3314,Ct),U.pixelStorei(32878,Vt),U.pixelStorei(3316,ye),U.pixelStorei(3315,$e),U.pixelStorei(32877,Mn),q===0&&N.generateMipmaps&&U.generateMipmap(Et),at.unbindTexture()},this.initTexture=function(T){T.isCubeTexture?_t.setTextureCube(T,0):T.isData3DTexture?_t.setTexture3D(T,0):T.isDataArrayTexture||T.isCompressedArrayTexture?_t.setTexture2DArray(T,0):_t.setTexture2D(T,0),at.unbindTexture()},this.resetState=function(){g=0,M=0,_=null,at.reset(),X.reset()},typeof __THREE_DEVTOOLS__!="undefined"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}var $r=class extends fp{};$r.prototype.isWebGL1Renderer=!0;function dn(r,t,e){return sc(r)?new r.constructor(r.subarray(t,e!==void 0?e:r.length)):r.slice(t,e)}function ps(r,t,e){return!r||!e&&r.constructor===t?r:typeof t.BYTES_PER_ELEMENT=="number"?new t(r):Array.prototype.slice.call(r)}function sc(r){return ArrayBuffer.isView(r)&&!(r instanceof DataView)}var pi=class{constructor(t,e,n,i){this.parameterPositions=t,this._cachedIndex=0,this.resultBuffer=i!==void 0?i:new e.constructor(n),this.sampleValues=e,this.valueSize=n,this.settings=null,this.DefaultSettings_={}}evaluate(t){let e=this.parameterPositions,n=this._cachedIndex,i=e[n],s=e[n-1];n:{t:{let a;e:{i:if(!(t<i)){for(let o=n+2;;){if(i===void 0){if(t<s)break i;return n=e.length,this._cachedIndex=n,this.copySampleValue_(n-1)}if(n===o)break;if(s=i,i=e[++n],t<i)break t}a=e.length;break e}if(!(t>=s)){let o=e[1];t<o&&(n=2,s=o);for(let c=n-2;;){if(s===void 0)return this._cachedIndex=0,this.copySampleValue_(0);if(n===c)break;if(i=s,s=e[--n-1],t>=s)break t}a=n,n=0;break e}break n}for(;n<a;){let o=n+a>>>1;t<e[o]?a=o:n=o+1}if(i=e[n],s=e[n-1],s===void 0)return this._cachedIndex=0,this.copySampleValue_(0);if(i===void 0)return n=e.length,this._cachedIndex=n,this.copySampleValue_(n-1)}this._cachedIndex=n,this.intervalChanged_(n,s,i)}return this.interpolate_(n,s,t,i)}getSettings_(){return this.settings||this.DefaultSettings_}copySampleValue_(t){let e=this.resultBuffer,n=this.sampleValues,i=this.valueSize,s=t*i;for(let a=0;a!==i;++a)e[a]=n[s+a];return e}interpolate_(){throw new Error("call to abstract method")}intervalChanged_(){}},Kr=class extends pi{constructor(t,e,n,i){super(t,e,n,i),this._weightPrev=-0,this._offsetPrev=-0,this._weightNext=-0,this._offsetNext=-0,this.DefaultSettings_={endingStart:ra,endingEnd:ra}}intervalChanged_(t,e,n){let i=this.parameterPositions,s=t-2,a=t+1,o=i[s],c=i[a];if(o===void 0)switch(this.getSettings_().endingStart){case oa:s=t,o=2*e-n;break;case aa:s=i.length-2,o=e+i[s]-i[s+1];break;default:s=t,o=n}if(c===void 0)switch(this.getSettings_().endingEnd){case oa:a=t,c=2*n-e;break;case aa:a=1,c=n+i[1]-i[0];break;default:a=t-1,c=e}let l=(n-e)*.5,h=this.valueSize;this._weightPrev=l/(e-o),this._weightNext=l/(c-n),this._offsetPrev=s*h,this._offsetNext=a*h}interpolate_(t,e,n,i){let s=this.resultBuffer,a=this.sampleValues,o=this.valueSize,c=t*o,l=c-o,h=this._offsetPrev,f=this._offsetNext,u=this._weightPrev,m=this._weightNext,x=(n-e)/(i-e),p=x*x,d=p*x,g=-u*d+2*u*p-u*x,M=(1+u)*d+(-1.5-2*u)*p+(-.5+u)*x+1,_=(-1-m)*d+(1.5+m)*p+.5*x,v=m*d-m*p;for(let b=0;b!==o;++b)s[b]=g*a[h+b]+M*a[l+b]+_*a[c+b]+v*a[f+b];return s}},jr=class extends pi{constructor(t,e,n,i){super(t,e,n,i)}interpolate_(t,e,n,i){let s=this.resultBuffer,a=this.sampleValues,o=this.valueSize,c=t*o,l=c-o,h=(n-e)/(i-e),f=1-h;for(let u=0;u!==o;++u)s[u]=a[l+u]*f+a[c+u]*h;return s}},Qr=class extends pi{constructor(t,e,n,i){super(t,e,n,i)}interpolate_(t){return this.copySampleValue_(t-1)}},Ve=class{constructor(t,e,n,i){if(t===void 0)throw new Error("THREE.KeyframeTrack: track name is undefined");if(e===void 0||e.length===0)throw new Error("THREE.KeyframeTrack: no keyframes in track named "+t);this.name=t,this.times=ps(e,this.TimeBufferType),this.values=ps(n,this.ValueBufferType),this.setInterpolation(i||this.DefaultInterpolation)}static toJSON(t){let e=t.constructor,n;if(e.toJSON!==this.toJSON)n=e.toJSON(t);else{n={name:t.name,times:ps(t.times,Array),values:ps(t.values,Array)};let i=t.getInterpolation();i!==t.DefaultInterpolation&&(n.interpolation=i)}return n.type=t.ValueTypeName,n}InterpolantFactoryMethodDiscrete(t){return new Qr(this.times,this.values,this.getValueSize(),t)}InterpolantFactoryMethodLinear(t){return new jr(this.times,this.values,this.getValueSize(),t)}InterpolantFactoryMethodSmooth(t){return new Kr(this.times,this.values,this.getValueSize(),t)}setInterpolation(t){let e;switch(t){case xs:e=this.InterpolantFactoryMethodDiscrete;break;case _s:e=this.InterpolantFactoryMethodLinear;break;case tr:e=this.InterpolantFactoryMethodSmooth;break}if(e===void 0){let n="unsupported interpolation for "+this.ValueTypeName+" keyframe track named "+this.name;if(this.createInterpolant===void 0)if(t!==this.DefaultInterpolation)this.setInterpolation(this.DefaultInterpolation);else throw new Error(n);return console.warn("THREE.KeyframeTrack:",n),this}return this.createInterpolant=e,this}getInterpolation(){switch(this.createInterpolant){case this.InterpolantFactoryMethodDiscrete:return xs;case this.InterpolantFactoryMethodLinear:return _s;case this.InterpolantFactoryMethodSmooth:return tr}}getValueSize(){return this.values.length/this.times.length}shift(t){if(t!==0){let e=this.times;for(let n=0,i=e.length;n!==i;++n)e[n]+=t}return this}scale(t){if(t!==1){let e=this.times;for(let n=0,i=e.length;n!==i;++n)e[n]*=t}return this}trim(t,e){let n=this.times,i=n.length,s=0,a=i-1;for(;s!==i&&n[s]<t;)++s;for(;a!==-1&&n[a]>e;)--a;if(++a,s!==0||a!==i){s>=a&&(a=Math.max(a,1),s=a-1);let o=this.getValueSize();this.times=dn(n,s,a),this.values=dn(this.values,s*o,a*o)}return this}validate(){let t=!0,e=this.getValueSize();e-Math.floor(e)!==0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),t=!1);let n=this.times,i=this.values,s=n.length;s===0&&(console.error("THREE.KeyframeTrack: Track is empty.",this),t=!1);let a=null;for(let o=0;o!==s;o++){let c=n[o];if(typeof c=="number"&&isNaN(c)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,o,c),t=!1;break}if(a!==null&&a>c){console.error("THREE.KeyframeTrack: Out of order keys.",this,o,c,a),t=!1;break}a=c}if(i!==void 0&&sc(i))for(let o=0,c=i.length;o!==c;++o){let l=i[o];if(isNaN(l)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,o,l),t=!1;break}}return t}optimize(){let t=dn(this.times),e=dn(this.values),n=this.getValueSize(),i=this.getInterpolation()===tr,s=t.length-1,a=1;for(let o=1;o<s;++o){let c=!1,l=t[o],h=t[o+1];if(l!==h&&(o!==1||l!==t[0]))if(i)c=!0;else{let f=o*n,u=f-n,m=f+n;for(let x=0;x!==n;++x){let p=e[f+x];if(p!==e[u+x]||p!==e[m+x]){c=!0;break}}}if(c){if(o!==a){t[a]=t[o];let f=o*n,u=a*n;for(let m=0;m!==n;++m)e[u+m]=e[f+m]}++a}}if(s>0){t[a]=t[s];for(let o=s*n,c=a*n,l=0;l!==n;++l)e[c+l]=e[o+l];++a}return a!==t.length?(this.times=dn(t,0,a),this.values=dn(e,0,a*n)):(this.times=t,this.values=e),this}clone(){let t=dn(this.times,0),e=dn(this.values,0),n=this.constructor,i=new n(this.name,t,e);return i.createInterpolant=this.createInterpolant,i}};Ve.prototype.TimeBufferType=Float32Array;Ve.prototype.ValueBufferType=Float32Array;Ve.prototype.DefaultInterpolation=_s;var On=class extends Ve{};On.prototype.ValueTypeName="bool";On.prototype.ValueBufferType=Array;On.prototype.DefaultInterpolation=xs;On.prototype.InterpolantFactoryMethodLinear=void 0;On.prototype.InterpolantFactoryMethodSmooth=void 0;var to=class extends Ve{};to.prototype.ValueTypeName="color";var eo=class extends Ve{};eo.prototype.ValueTypeName="number";var no=class extends pi{constructor(t,e,n,i){super(t,e,n,i)}interpolate_(t,e,n,i){let s=this.resultBuffer,a=this.sampleValues,o=this.valueSize,c=(n-e)/(i-e),l=t*o;for(let h=l+o;l!==h;l+=4)gn.slerpFlat(s,0,a,l-o,a,l,c);return s}},Vi=class extends Ve{InterpolantFactoryMethodLinear(t){return new no(this.times,this.values,this.getValueSize(),t)}};Vi.prototype.ValueTypeName="quaternion";Vi.prototype.DefaultInterpolation=_s;Vi.prototype.InterpolantFactoryMethodSmooth=void 0;var Bn=class extends Ve{};Bn.prototype.ValueTypeName="string";Bn.prototype.ValueBufferType=Array;Bn.prototype.DefaultInterpolation=xs;Bn.prototype.InterpolantFactoryMethodLinear=void 0;Bn.prototype.InterpolantFactoryMethodSmooth=void 0;var io=class extends Ve{};io.prototype.ValueTypeName="vector";var ao="\\\\[\\\\]\\\\.:\\\\/",dp=new RegExp("["+ao+"]","g"),co="[^"+ao+"]",pp="[^"+ao.replace("\\\\.","")+"]",mp=/((?:WC+[\\/:])*)/.source.replace("WC",co),gp=/(WCOD+)?/.source.replace("WCOD",pp),xp=/(?:\\.(WC+)(?:\\[(.+)\\])?)?/.source.replace("WC",co),_p=/\\.(WC+)(?:\\[(.+)\\])?/.source.replace("WC",co),yp=new RegExp("^"+mp+gp+xp+_p+"$"),vp=["material","materials","bones","map"],so=class{constructor(t,e,n){let i=n||Dt.parseTrackName(e);this._targetGroup=t,this._bindings=t.subscribe_(e,i)}getValue(t,e){this.bind();let n=this._targetGroup.nCachedObjects_,i=this._bindings[n];i!==void 0&&i.getValue(t,e)}setValue(t,e){let n=this._bindings;for(let i=this._targetGroup.nCachedObjects_,s=n.length;i!==s;++i)n[i].setValue(t,e)}bind(){let t=this._bindings;for(let e=this._targetGroup.nCachedObjects_,n=t.length;e!==n;++e)t[e].bind()}unbind(){let t=this._bindings;for(let e=this._targetGroup.nCachedObjects_,n=t.length;e!==n;++e)t[e].unbind()}},Dt=class{constructor(t,e,n){this.path=e,this.parsedPath=n||Dt.parseTrackName(e),this.node=Dt.findNode(t,this.parsedPath.nodeName)||t,this.rootNode=t,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(t,e,n){return t&&t.isAnimationObjectGroup?new Dt.Composite(t,e,n):new Dt(t,e,n)}static sanitizeNodeName(t){return t.replace(/\\s/g,"_").replace(dp,"")}static parseTrackName(t){let e=yp.exec(t);if(e===null)throw new Error("PropertyBinding: Cannot parse trackName: "+t);let n={nodeName:e[2],objectName:e[3],objectIndex:e[4],propertyName:e[5],propertyIndex:e[6]},i=n.nodeName&&n.nodeName.lastIndexOf(".");if(i!==void 0&&i!==-1){let s=n.nodeName.substring(i+1);vp.indexOf(s)!==-1&&(n.nodeName=n.nodeName.substring(0,i),n.objectName=s)}if(n.propertyName===null||n.propertyName.length===0)throw new Error("PropertyBinding: can not parse propertyName from trackName: "+t);return n}static findNode(t,e){if(e===void 0||e===""||e==="."||e===-1||e===t.name||e===t.uuid)return t;if(t.skeleton){let n=t.skeleton.getBoneByName(e);if(n!==void 0)return n}if(t.children){let n=function(s){for(let a=0;a<s.length;a++){let o=s[a];if(o.name===e||o.uuid===e)return o;let c=n(o.children);if(c)return c}return null},i=n(t.children);if(i)return i}return null}_getValue_unavailable(){}_setValue_unavailable(){}_getValue_direct(t,e){t[e]=this.targetObject[this.propertyName]}_getValue_array(t,e){let n=this.resolvedProperty;for(let i=0,s=n.length;i!==s;++i)t[e++]=n[i]}_getValue_arrayElement(t,e){t[e]=this.resolvedProperty[this.propertyIndex]}_getValue_toArray(t,e){this.resolvedProperty.toArray(t,e)}_setValue_direct(t,e){this.targetObject[this.propertyName]=t[e]}_setValue_direct_setNeedsUpdate(t,e){this.targetObject[this.propertyName]=t[e],this.targetObject.needsUpdate=!0}_setValue_direct_setMatrixWorldNeedsUpdate(t,e){this.targetObject[this.propertyName]=t[e],this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_array(t,e){let n=this.resolvedProperty;for(let i=0,s=n.length;i!==s;++i)n[i]=t[e++]}_setValue_array_setNeedsUpdate(t,e){let n=this.resolvedProperty;for(let i=0,s=n.length;i!==s;++i)n[i]=t[e++];this.targetObject.needsUpdate=!0}_setValue_array_setMatrixWorldNeedsUpdate(t,e){let n=this.resolvedProperty;for(let i=0,s=n.length;i!==s;++i)n[i]=t[e++];this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_arrayElement(t,e){this.resolvedProperty[this.propertyIndex]=t[e]}_setValue_arrayElement_setNeedsUpdate(t,e){this.resolvedProperty[this.propertyIndex]=t[e],this.targetObject.needsUpdate=!0}_setValue_arrayElement_setMatrixWorldNeedsUpdate(t,e){this.resolvedProperty[this.propertyIndex]=t[e],this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_fromArray(t,e){this.resolvedProperty.fromArray(t,e)}_setValue_fromArray_setNeedsUpdate(t,e){this.resolvedProperty.fromArray(t,e),this.targetObject.needsUpdate=!0}_setValue_fromArray_setMatrixWorldNeedsUpdate(t,e){this.resolvedProperty.fromArray(t,e),this.targetObject.matrixWorldNeedsUpdate=!0}_getValue_unbound(t,e){this.bind(),this.getValue(t,e)}_setValue_unbound(t,e){this.bind(),this.setValue(t,e)}bind(){let t=this.node,e=this.parsedPath,n=e.objectName,i=e.propertyName,s=e.propertyIndex;if(t||(t=Dt.findNode(this.rootNode,e.nodeName)||this.rootNode,this.node=t),this.getValue=this._getValue_unavailable,this.setValue=this._setValue_unavailable,!t){console.error("THREE.PropertyBinding: Trying to update node for track: "+this.path+" but it wasn't found.");return}if(n){let l=e.objectIndex;switch(n){case"materials":if(!t.material){console.error("THREE.PropertyBinding: Can not bind to material as node does not have a material.",this);return}if(!t.material.materials){console.error("THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.",this);return}t=t.material.materials;break;case"bones":if(!t.skeleton){console.error("THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.",this);return}t=t.skeleton.bones;for(let h=0;h<t.length;h++)if(t[h].name===l){l=h;break}break;case"map":if("map"in t){t=t.map;break}if(!t.material){console.error("THREE.PropertyBinding: Can not bind to material as node does not have a material.",this);return}if(!t.material.map){console.error("THREE.PropertyBinding: Can not bind to material.map as node.material does not have a map.",this);return}t=t.material.map;break;default:if(t[n]===void 0){console.error("THREE.PropertyBinding: Can not bind to objectName of node undefined.",this);return}t=t[n]}if(l!==void 0){if(t[l]===void 0){console.error("THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.",this,t);return}t=t[l]}}let a=t[i];if(a===void 0){let l=e.nodeName;console.error("THREE.PropertyBinding: Trying to update property for track: "+l+"."+i+" but it wasn't found.",t);return}let o=this.Versioning.None;this.targetObject=t,t.needsUpdate!==void 0?o=this.Versioning.NeedsUpdate:t.matrixWorldNeedsUpdate!==void 0&&(o=this.Versioning.MatrixWorldNeedsUpdate);let c=this.BindingType.Direct;if(s!==void 0){if(i==="morphTargetInfluences"){if(!t.geometry){console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.",this);return}if(!t.geometry.morphAttributes){console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.",this);return}t.morphTargetDictionary[s]!==void 0&&(s=t.morphTargetDictionary[s])}c=this.BindingType.ArrayElement,this.resolvedProperty=a,this.propertyIndex=s}else a.fromArray!==void 0&&a.toArray!==void 0?(c=this.BindingType.HasFromToArray,this.resolvedProperty=a):Array.isArray(a)?(c=this.BindingType.EntireArray,this.resolvedProperty=a):this.propertyName=i;this.getValue=this.GetterByBindingType[c],this.setValue=this.SetterByBindingTypeAndVersioning[c][o]}unbind(){this.node=null,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}};Dt.Composite=so;Dt.prototype.BindingType={Direct:0,EntireArray:1,ArrayElement:2,HasFromToArray:3};Dt.prototype.Versioning={None:0,NeedsUpdate:1,MatrixWorldNeedsUpdate:2};Dt.prototype.GetterByBindingType=[Dt.prototype._getValue_direct,Dt.prototype._getValue_array,Dt.prototype._getValue_arrayElement,Dt.prototype._getValue_toArray];Dt.prototype.SetterByBindingTypeAndVersioning=[[Dt.prototype._setValue_direct,Dt.prototype._setValue_direct_setNeedsUpdate,Dt.prototype._setValue_direct_setMatrixWorldNeedsUpdate],[Dt.prototype._setValue_array,Dt.prototype._setValue_array_setNeedsUpdate,Dt.prototype._setValue_array_setMatrixWorldNeedsUpdate],[Dt.prototype._setValue_arrayElement,Dt.prototype._setValue_arrayElement_setNeedsUpdate,Dt.prototype._setValue_arrayElement_setMatrixWorldNeedsUpdate],[Dt.prototype._setValue_fromArray,Dt.prototype._setValue_fromArray_setNeedsUpdate,Dt.prototype._setValue_fromArray_setMatrixWorldNeedsUpdate]];var Gp=new Float32Array(1);var Ha=new R,ms=new R,me=class{constructor(t=new R,e=new R){this.start=t,this.end=e}set(t,e){return this.start.copy(t),this.end.copy(e),this}copy(t){return this.start.copy(t.start),this.end.copy(t.end),this}getCenter(t){return t.addVectors(this.start,this.end).multiplyScalar(.5)}delta(t){return t.subVectors(this.end,this.start)}distanceSq(){return this.start.distanceToSquared(this.end)}distance(){return this.start.distanceTo(this.end)}at(t,e){return this.delta(e).multiplyScalar(t).add(this.start)}closestPointToPointParameter(t,e){Ha.subVectors(t,this.start),ms.subVectors(this.end,this.start);let n=ms.dot(ms),s=ms.dot(Ha)/n;return e&&(s=de(s,0,1)),s}closestPointToPoint(t,e,n){let i=this.closestPointToPointParameter(t,e);return this.delta(n).multiplyScalar(i).add(this.start)}applyMatrix4(t){return this.start.applyMatrix4(t),this.end.applyMatrix4(t),this}equals(t){return t.start.equals(this.start)&&t.end.equals(this.end)}clone(){return new this.constructor().copy(this)}};typeof __THREE_DEVTOOLS__!="undefined"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register",{detail:{revision:ro}}));typeof window!="undefined"&&(window.__THREE__?console.warn("WARNING: Multiple instances of Three.js being imported."):window.__THREE__=ro);var rc=Math.pow(2,-24);var Un=class{constructor(){}};function Le(r,t,e){return e.min.x=t[r],e.min.y=t[r+1],e.min.z=t[r+2],e.max.x=t[r+3],e.max.y=t[r+4],e.max.z=t[r+5],e}function lo(r){let t=-1,e=-1/0;for(let n=0;n<3;n++){let i=r[n+3]-r[n];i>e&&(e=i,t=n)}return t}function ho(r,t){t.set(r)}function uo(r,t,e){let n,i;for(let s=0;s<3;s++){let a=s+3;n=r[s],i=t[s],e[s]=n<i?n:i,n=r[a],i=t[a],e[a]=n>i?n:i}}function Hi(r,t,e){for(let n=0;n<3;n++){let i=t[r+2*n],s=t[r+2*n+1],a=i-s,o=i+s;a<e[n]&&(e[n]=a),o>e[n+3]&&(e[n+3]=o)}}function gi(r){let t=r[3]-r[0],e=r[4]-r[1],n=r[5]-r[2];return 2*(t*e+e*n+n*t)}function wp(r,t){if(!r.index){let e=r.attributes.position.count,n=t.useSharedArrayBuffer?SharedArrayBuffer:ArrayBuffer,i;e>65535?i=new Uint32Array(new n(4*e)):i=new Uint16Array(new n(2*e)),r.setIndex(new Yt(i,1));for(let s=0;s<e;s++)i[s]=s}}function Sp(r){if(!r.groups||!r.groups.length)return[{offset:0,count:r.index.count/3}];let t=[],e=new Set;for(let i of r.groups)e.add(i.start),e.add(i.start+i.count);let n=Array.from(e.values()).sort((i,s)=>i-s);for(let i=0;i<n.length-1;i++){let s=n[i],a=n[i+1];t.push({offset:s/3,count:(a-s)/3})}return t}function po(r,t,e,n,i=null){let s=1/0,a=1/0,o=1/0,c=-1/0,l=-1/0,h=-1/0,f=1/0,u=1/0,m=1/0,x=-1/0,p=-1/0,d=-1/0,g=i!==null;for(let M=t*6,_=(t+e)*6;M<_;M+=6){let v=r[M+0],b=r[M+1],A=v-b,C=v+b;A<s&&(s=A),C>c&&(c=C),g&&v<f&&(f=v),g&&v>x&&(x=v);let y=r[M+2],S=r[M+3],P=y-S,O=y+S;P<a&&(a=P),O>l&&(l=O),g&&y<u&&(u=y),g&&y>p&&(p=y);let B=r[M+4],D=r[M+5],I=B-D,k=B+D;I<o&&(o=I),k>h&&(h=k),g&&B<m&&(m=B),g&&B>d&&(d=B)}n[0]=s,n[1]=a,n[2]=o,n[3]=c,n[4]=l,n[5]=h,g&&(i[0]=f,i[1]=u,i[2]=m,i[3]=x,i[4]=p,i[5]=d)}function Tp(r,t,e,n){let i=1/0,s=1/0,a=1/0,o=-1/0,c=-1/0,l=-1/0;for(let h=t*6,f=(t+e)*6;h<f;h+=6){let u=r[h+0];u<i&&(i=u),u>o&&(o=u);let m=r[h+2];m<s&&(s=m),m>c&&(c=m);let x=r[h+4];x<a&&(a=x),x>l&&(l=x)}n[0]=i,n[1]=s,n[2]=a,n[3]=o,n[4]=c,n[5]=l}function Ap(r,t,e,n,i){let s=e,a=e+n-1,o=i.pos,c=i.axis*2;for(;;){for(;s<=a&&t[s*6+c]<o;)s++;for(;s<=a&&t[a*6+c]>=o;)a--;if(s<a){for(let l=0;l<3;l++){let h=r[s*3+l];r[s*3+l]=r[a*3+l],r[a*3+l]=h;let f=t[s*6+l*2+0];t[s*6+l*2+0]=t[a*6+l*2+0],t[a*6+l*2+0]=f;let u=t[s*6+l*2+1];t[s*6+l*2+1]=t[a*6+l*2+1],t[a*6+l*2+1]=u}s++,a--}else return s}}var an=32,Ep=(r,t)=>r.candidate-t.candidate,xn=new Array(an).fill().map(()=>({count:0,bounds:new Float32Array(6),rightCacheBounds:new Float32Array(6),leftCacheBounds:new Float32Array(6),candidate:0})),Ds=new Float32Array(6);function Cp(r,t,e,n,i,s){let a=-1,o=0;if(s===0)a=lo(t),a!==-1&&(o=(t[a]+t[a+3])/2);else if(s===1)a=lo(r),a!==-1&&(o=Pp(e,n,i,a));else if(s===2){let c=gi(r),l=1.25*i,h=n*6,f=(n+i)*6;for(let u=0;u<3;u++){let m=t[u],d=(t[u+3]-m)/an;if(i<an/4){let g=[...xn];g.length=i;let M=0;for(let v=h;v<f;v+=6,M++){let b=g[M];b.candidate=e[v+2*u],b.count=0;let{bounds:A,leftCacheBounds:C,rightCacheBounds:y}=b;for(let S=0;S<3;S++)y[S]=1/0,y[S+3]=-1/0,C[S]=1/0,C[S+3]=-1/0,A[S]=1/0,A[S+3]=-1/0;Hi(v,e,A)}g.sort(Ep);let _=i;for(let v=0;v<_;v++){let b=g[v];for(;v+1<_&&g[v+1].candidate===b.candidate;)g.splice(v+1,1),_--}for(let v=h;v<f;v+=6){let b=e[v+2*u];for(let A=0;A<_;A++){let C=g[A];b>=C.candidate?Hi(v,e,C.rightCacheBounds):(Hi(v,e,C.leftCacheBounds),C.count++)}}for(let v=0;v<_;v++){let b=g[v],A=b.count,C=i-b.count,y=b.leftCacheBounds,S=b.rightCacheBounds,P=0;A!==0&&(P=gi(y)/c);let O=0;C!==0&&(O=gi(S)/c);let B=1+1.25*(P*A+O*C);B<l&&(a=u,l=B,o=b.candidate)}}else{for(let _=0;_<an;_++){let v=xn[_];v.count=0,v.candidate=m+d+_*d;let b=v.bounds;for(let A=0;A<3;A++)b[A]=1/0,b[A+3]=-1/0}for(let _=h;_<f;_+=6){let A=~~((e[_+2*u]-m)/d);A>=an&&(A=an-1);let C=xn[A];C.count++,Hi(_,e,C.bounds)}let g=xn[an-1];ho(g.bounds,g.rightCacheBounds);for(let _=an-2;_>=0;_--){let v=xn[_],b=xn[_+1];uo(v.bounds,b.rightCacheBounds,v.rightCacheBounds)}let M=0;for(let _=0;_<an-1;_++){let v=xn[_],b=v.count,A=v.bounds,y=xn[_+1].rightCacheBounds;b!==0&&(M===0?ho(A,Ds):uo(A,Ds,Ds)),M+=b;let S=0,P=0;M!==0&&(S=gi(Ds)/c);let O=i-M;O!==0&&(P=gi(y)/c);let B=1+1.25*(S*M+P*O);B<l&&(a=u,l=B,o=v.candidate)}}}}else console.warn(\`MeshBVH: Invalid build strategy value \${s} used.\`);return{axis:a,pos:o}}function Pp(r,t,e,n){let i=0;for(let s=t,a=t+e;s<a;s++)i+=r[s*6+n*2];return i/e}function Rp(r,t){let e=r.attributes.position,n=r.index.array,i=n.length/3,s=new Float32Array(i*6),a=e.normalized,o=e.array,c=e.offset||0,l=3;e.isInterleavedBufferAttribute&&(l=e.data.stride);let h=["getX","getY","getZ"];for(let f=0;f<i;f++){let u=f*3,m=f*6,x,p,d;a?(x=n[u+0],p=n[u+1],d=n[u+2]):(x=n[u+0]*l+c,p=n[u+1]*l+c,d=n[u+2]*l+c);for(let g=0;g<3;g++){let M,_,v;a?(M=e[h[g]](x),_=e[h[g]](p),v=e[h[g]](d)):(M=o[x+g],_=o[p+g],v=o[d+g]);let b=M;_<b&&(b=_),v<b&&(b=v);let A=M;_>A&&(A=_),v>A&&(A=v);let C=(A-b)/2,y=g*2;s[m+y+0]=b+C,s[m+y+1]=C+(Math.abs(b)+C)*rc,b<t[g]&&(t[g]=b),A>t[g+3]&&(t[g+3]=A)}}return s}function Lp(r,t){function e(g){u&&u(g/m)}function n(g,M,_,v=null,b=0){if(!x&&b>=c&&(x=!0,l&&(console.warn(\`MeshBVH: Max depth of \${c} reached when generating BVH. Consider increasing maxDepth.\`),console.warn(r))),_<=h||b>=c)return e(M+_),g.offset=M,g.count=_,g;let A=Cp(g.boundingData,v,a,M,_,f);if(A.axis===-1)return e(M+_),g.offset=M,g.count=_,g;let C=Ap(o,a,M,_,A);if(C===M||C===M+_)e(M+_),g.offset=M,g.count=_;else{g.splitAxis=A.axis;let y=new Un,S=M,P=C-M;g.left=y,y.boundingData=new Float32Array(6),po(a,S,P,y.boundingData,s),n(y,S,P,s,b+1);let O=new Un,B=C,D=_-P;g.right=O,O.boundingData=new Float32Array(6),po(a,B,D,O.boundingData,s),n(O,B,D,s,b+1)}return g}wp(r,t);let i=new Float32Array(6),s=new Float32Array(6),a=Rp(r,i),o=r.index.array,c=t.maxDepth,l=t.verbose,h=t.maxLeafTris,f=t.strategy,u=t.onProgress,m=r.index.count/3,x=!1,p=[],d=Sp(r);if(d.length===1){let g=d[0],M=new Un;M.boundingData=i,Tp(a,g.offset,g.count,s),n(M,g.offset,g.count,s),p.push(M)}else for(let g of d){let M=new Un;M.boundingData=new Float32Array(6),po(a,g.offset,g.count,M.boundingData,s),n(M,g.offset,g.count,s),p.push(M)}return p}function cc(r,t){let e=Lp(r,t),n,i,s,a=[],o=t.useSharedArrayBuffer?SharedArrayBuffer:ArrayBuffer;for(let h=0;h<e.length;h++){let f=e[h],u=c(f),m=new o(32*u);n=new Float32Array(m),i=new Uint32Array(m),s=new Uint16Array(m),l(0,f),a.push(m)}return a;function c(h){return h.count?1:1+c(h.left)+c(h.right)}function l(h,f){let u=h/4,m=h/2,x=!!f.count,p=f.boundingData;for(let d=0;d<6;d++)n[u+d]=p[d];if(x){let d=f.offset,g=f.count;return i[u+6]=d,s[m+14]=g,s[m+15]=65535,h+32}else{let d=f.left,g=f.right,M=f.splitAxis,_;if(_=l(h+32,d),_/4>Math.pow(2,32))throw new Error("MeshBVH: Cannot store child pointer greater than 32 bits.");return i[u+6]=_/4,_=l(_,g),i[u+7]=M,_}}}var ge=class{constructor(){this.min=1/0,this.max=-1/0}setFromPointsField(t,e){let n=1/0,i=-1/0;for(let s=0,a=t.length;s<a;s++){let c=t[s][e];n=c<n?c:n,i=c>i?c:i}this.min=n,this.max=i}setFromPoints(t,e){let n=1/0,i=-1/0;for(let s=0,a=e.length;s<a;s++){let o=e[s],c=t.dot(o);n=c<n?c:n,i=c>i?c:i}this.min=n,this.max=i}isSeparated(t){return this.min>t.max||t.min>this.max}};ge.prototype.setFromBox=function(){let r=new R;return function(e,n){let i=n.min,s=n.max,a=1/0,o=-1/0;for(let c=0;c<=1;c++)for(let l=0;l<=1;l++)for(let h=0;h<=1;h++){r.x=i.x*c+s.x*(1-c),r.y=i.y*l+s.y*(1-l),r.z=i.z*h+s.z*(1-h);let f=e.dot(r);a=Math.min(f,a),o=Math.max(f,o)}this.min=a,this.max=o}}();var Qp=function(){let r=new ge;return function(e,n){let i=e.points,s=e.satAxes,a=e.satBounds,o=n.points,c=n.satAxes,l=n.satBounds;for(let h=0;h<3;h++){let f=a[h],u=s[h];if(r.setFromPoints(u,o),f.isSeparated(r))return!1}for(let h=0;h<3;h++){let f=l[h],u=c[h];if(r.setFromPoints(u,i),f.isSeparated(r))return!1}}}();var Ip=function(){let r=new R,t=new R,e=new R;return function(i,s,a){let o=i.start,c=r,l=s.start,h=t;e.subVectors(o,l),r.subVectors(i.end,i.start),t.subVectors(s.end,s.start);let f=e.dot(h),u=h.dot(c),m=h.dot(h),x=e.dot(c),d=c.dot(c)*m-u*u,g,M;d!==0?g=(f*u-x*m)/d:g=0,M=(f+g*u)/m,a.x=g,a.y=M}}(),Wi=function(){let r=new At,t=new R,e=new R;return function(i,s,a,o){Ip(i,s,r);let c=r.x,l=r.y;if(c>=0&&c<=1&&l>=0&&l<=1){i.at(c,a),s.at(l,o);return}else if(c>=0&&c<=1){l<0?s.at(0,o):s.at(1,o),i.closestPointToPoint(o,!0,a);return}else if(l>=0&&l<=1){c<0?i.at(0,a):i.at(1,a),s.closestPointToPoint(a,!0,o);return}else{let h;c<0?h=i.start:h=i.end;let f;l<0?f=s.start:f=s.end;let u=t,m=e;if(i.closestPointToPoint(f,!0,t),s.closestPointToPoint(h,!0,e),u.distanceToSquared(f)<=m.distanceToSquared(h)){a.copy(u),o.copy(f);return}else{a.copy(h),o.copy(m);return}}}}(),lc=function(){let r=new R,t=new R,e=new Te,n=new me;return function(s,a){let{radius:o,center:c}=s,{a:l,b:h,c:f}=a;if(n.start=l,n.end=h,n.closestPointToPoint(c,!0,r).distanceTo(c)<=o||(n.start=l,n.end=f,n.closestPointToPoint(c,!0,r).distanceTo(c)<=o)||(n.start=h,n.end=f,n.closestPointToPoint(c,!0,r).distanceTo(c)<=o))return!0;let p=a.getPlane(e);if(Math.abs(p.distanceToPoint(c))<=o){let g=p.projectPoint(c,t);if(a.containsPoint(g))return!0}return!1}}();var Dp=1e-15;function xi(r){return Math.abs(r)<Dp}var xe=class extends ie{constructor(...t){super(...t),this.isExtendedTriangle=!0,this.satAxes=new Array(4).fill().map(()=>new R),this.satBounds=new Array(4).fill().map(()=>new ge),this.points=[this.a,this.b,this.c],this.sphere=new Fn,this.plane=new Te,this.needsUpdate=!0}intersectsSphere(t){return lc(t,this)}update(){let t=this.a,e=this.b,n=this.c,i=this.points,s=this.satAxes,a=this.satBounds,o=s[0],c=a[0];this.getNormal(o),c.setFromPoints(o,i);let l=s[1],h=a[1];l.subVectors(t,e),h.setFromPoints(l,i);let f=s[2],u=a[2];f.subVectors(e,n),u.setFromPoints(f,i);let m=s[3],x=a[3];m.subVectors(n,t),x.setFromPoints(m,i),this.sphere.setFromPoints(this.points),this.plane.setFromNormalAndCoplanarPoint(o,t),this.needsUpdate=!1}};xe.prototype.closestPointToSegment=function(){let r=new R,t=new R,e=new me;return function(i,s=null,a=null){let{start:o,end:c}=i,l=this.points,h,f=1/0;for(let u=0;u<3;u++){let m=(u+1)%3;e.start.copy(l[u]),e.end.copy(l[m]),Wi(e,i,r,t),h=r.distanceToSquared(t),h<f&&(f=h,s&&s.copy(r),a&&a.copy(t))}return this.closestPointToPoint(o,r),h=o.distanceToSquared(r),h<f&&(f=h,s&&s.copy(r),a&&a.copy(o)),this.closestPointToPoint(c,r),h=c.distanceToSquared(r),h<f&&(f=h,s&&s.copy(r),a&&a.copy(c)),Math.sqrt(f)}}();xe.prototype.intersectsTriangle=function(){let r=new xe,t=new Array(3),e=new Array(3),n=new ge,i=new ge,s=new R,a=new R,o=new R,c=new R,l=new me,h=new me,f=new me;return function(m,x=null,p=!1){this.needsUpdate&&this.update(),m.isExtendedTriangle?m.needsUpdate&&m.update():(r.copy(m),r.update(),m=r);let d=this.plane,g=m.plane;if(Math.abs(d.normal.dot(g.normal))>1-1e-10){let M=this.satBounds,_=this.satAxes;e[0]=m.a,e[1]=m.b,e[2]=m.c;for(let A=0;A<4;A++){let C=M[A],y=_[A];if(n.setFromPoints(y,e),C.isSeparated(n))return!1}let v=m.satBounds,b=m.satAxes;t[0]=this.a,t[1]=this.b,t[2]=this.c;for(let A=0;A<4;A++){let C=v[A],y=b[A];if(n.setFromPoints(y,t),C.isSeparated(n))return!1}for(let A=0;A<4;A++){let C=_[A];for(let y=0;y<4;y++){let S=b[y];if(s.crossVectors(C,S),n.setFromPoints(s,t),i.setFromPoints(s,e),n.isSeparated(i))return!1}}return x&&(p||console.warn("ExtendedTriangle.intersectsTriangle: Triangles are coplanar which does not support an output edge. Setting edge to 0, 0, 0."),x.start.set(0,0,0),x.end.set(0,0,0)),!0}else{let M=this.points,_=!1,v=0;for(let I=0;I<3;I++){let k=M[I],Y=M[(I+1)%3];l.start.copy(k),l.end.copy(Y),l.delta(a);let Z=_?h.start:h.end,H=xi(g.distanceToPoint(k));if(xi(g.normal.dot(a))&&H){h.copy(l),v=2;break}if((g.intersectLine(l,Z)||H)&&!xi(Z.distanceTo(Y))){if(v++,_)break;_=!0}}if(v===1&&m.containsPoint(h.end))return x&&(x.start.copy(h.end),x.end.copy(h.end)),!0;if(v!==2)return!1;let b=m.points,A=!1,C=0;for(let I=0;I<3;I++){let k=b[I],Y=b[(I+1)%3];l.start.copy(k),l.end.copy(Y),l.delta(o);let Z=A?f.start:f.end,H=xi(d.distanceToPoint(k));if(xi(d.normal.dot(o))&&H){f.copy(l),C=2;break}if((d.intersectLine(l,Z)||H)&&!xi(Z.distanceTo(Y))){if(C++,A)break;A=!0}}if(C===1&&this.containsPoint(f.end))return x&&(x.start.copy(f.end),x.end.copy(f.end)),!0;if(C!==2)return!1;if(h.delta(a),f.delta(o),a.dot(o)<0){let I=f.start;f.start=f.end,f.end=I}let y=h.start.dot(a),S=h.end.dot(a),P=f.start.dot(a),O=f.end.dot(a),B=S<P,D=y<O;return y!==O&&P!==S&&B===D?!1:(x&&(c.subVectors(h.start,f.start),c.dot(a)>0?x.start.copy(h.start):x.start.copy(f.start),c.subVectors(h.end,f.end),c.dot(a)<0?x.end.copy(h.end):x.end.copy(f.end)),!0)}}}();xe.prototype.distanceToPoint=function(){let r=new R;return function(e){return this.closestPointToPoint(e,r),e.distanceTo(r)}}();xe.prototype.distanceToTriangle=function(){let r=new R,t=new R,e=["a","b","c"],n=new me,i=new me;return function(a,o=null,c=null){let l=o||c?n:null;if(this.intersectsTriangle(a,l))return(o||c)&&(o&&l.getCenter(o),c&&l.getCenter(c)),0;let h=1/0;for(let f=0;f<3;f++){let u,m=e[f],x=a[m];this.closestPointToPoint(x,r),u=x.distanceToSquared(r),u<h&&(h=u,o&&o.copy(r),c&&c.copy(x));let p=this[m];a.closestPointToPoint(p,r),u=p.distanceToSquared(r),u<h&&(h=u,o&&o.copy(p),c&&c.copy(r))}for(let f=0;f<3;f++){let u=e[f],m=e[(f+1)%3];n.set(this[u],this[m]);for(let x=0;x<3;x++){let p=e[x],d=e[(x+1)%3];i.set(a[p],a[d]),Wi(n,i,r,t);let g=r.distanceToSquared(t);g<h&&(h=g,o&&o.copy(r),c&&c.copy(t))}}return Math.sqrt(h)}}();var _e=class{constructor(t,e,n){this.isOrientedBox=!0,this.min=new R,this.max=new R,this.matrix=new zt,this.invMatrix=new zt,this.points=new Array(8).fill().map(()=>new R),this.satAxes=new Array(3).fill().map(()=>new R),this.satBounds=new Array(3).fill().map(()=>new ge),this.alignedSatBounds=new Array(3).fill().map(()=>new ge),this.needsUpdate=!1,t&&this.min.copy(t),e&&this.max.copy(e),n&&this.matrix.copy(n)}set(t,e,n){this.min.copy(t),this.max.copy(e),this.matrix.copy(n),this.needsUpdate=!0}copy(t){this.min.copy(t.min),this.max.copy(t.max),this.matrix.copy(t.matrix),this.needsUpdate=!0}};_e.prototype.update=function(){return function(){let t=this.matrix,e=this.min,n=this.max,i=this.points;for(let l=0;l<=1;l++)for(let h=0;h<=1;h++)for(let f=0;f<=1;f++){let u=1*l|2*h|4*f,m=i[u];m.x=l?n.x:e.x,m.y=h?n.y:e.y,m.z=f?n.z:e.z,m.applyMatrix4(t)}let s=this.satBounds,a=this.satAxes,o=i[0];for(let l=0;l<3;l++){let h=a[l],f=s[l],u=1<<l,m=i[u];h.subVectors(o,m),f.setFromPoints(h,i)}let c=this.alignedSatBounds;c[0].setFromPointsField(i,"x"),c[1].setFromPointsField(i,"y"),c[2].setFromPointsField(i,"z"),this.invMatrix.copy(this.matrix).invert(),this.needsUpdate=!1}}();_e.prototype.intersectsBox=function(){let r=new ge;return function(e){this.needsUpdate&&this.update();let n=e.min,i=e.max,s=this.satBounds,a=this.satAxes,o=this.alignedSatBounds;if(r.min=n.x,r.max=i.x,o[0].isSeparated(r)||(r.min=n.y,r.max=i.y,o[1].isSeparated(r))||(r.min=n.z,r.max=i.z,o[2].isSeparated(r)))return!1;for(let c=0;c<3;c++){let l=a[c],h=s[c];if(r.setFromBox(l,e),h.isSeparated(r))return!1}return!0}}();_e.prototype.intersectsTriangle=function(){let r=new xe,t=new Array(3),e=new ge,n=new ge,i=new R;return function(a){this.needsUpdate&&this.update(),a.isExtendedTriangle?a.needsUpdate&&a.update():(r.copy(a),r.update(),a=r);let o=this.satBounds,c=this.satAxes;t[0]=a.a,t[1]=a.b,t[2]=a.c;for(let u=0;u<3;u++){let m=o[u],x=c[u];if(e.setFromPoints(x,t),m.isSeparated(e))return!1}let l=a.satBounds,h=a.satAxes,f=this.points;for(let u=0;u<3;u++){let m=l[u],x=h[u];if(e.setFromPoints(x,f),m.isSeparated(e))return!1}for(let u=0;u<3;u++){let m=c[u];for(let x=0;x<4;x++){let p=h[x];if(i.crossVectors(m,p),e.setFromPoints(i,t),n.setFromPoints(i,f),e.isSeparated(n))return!1}}return!0}}();_e.prototype.closestPointToPoint=function(){return function(t,e){return this.needsUpdate&&this.update(),e.copy(t).applyMatrix4(this.invMatrix).clamp(this.min,this.max).applyMatrix4(this.matrix),e}}();_e.prototype.distanceToPoint=function(){let r=new R;return function(e){return this.closestPointToPoint(e,r),e.distanceTo(r)}}();_e.prototype.distanceToBox=function(){let r=["x","y","z"],t=new Array(12).fill().map(()=>new me),e=new Array(12).fill().map(()=>new me),n=new R,i=new R;return function(a,o=0,c=null,l=null){if(this.needsUpdate&&this.update(),this.intersectsBox(a))return(c||l)&&(a.getCenter(i),this.closestPointToPoint(i,n),a.closestPointToPoint(n,i),c&&c.copy(n),l&&l.copy(i)),0;let h=o*o,f=a.min,u=a.max,m=this.points,x=1/0;for(let d=0;d<8;d++){let g=m[d];i.copy(g).clamp(f,u);let M=g.distanceToSquared(i);if(M<x&&(x=M,c&&c.copy(g),l&&l.copy(i),M<h))return Math.sqrt(M)}let p=0;for(let d=0;d<3;d++)for(let g=0;g<=1;g++)for(let M=0;M<=1;M++){let _=(d+1)%3,v=(d+2)%3,b=g<<_|M<<v,A=1<<d|g<<_|M<<v,C=m[b],y=m[A];t[p].set(C,y);let P=r[d],O=r[_],B=r[v],D=e[p],I=D.start,k=D.end;I[P]=f[P],I[O]=g?f[O]:u[O],I[B]=M?f[B]:u[O],k[P]=u[P],k[O]=g?f[O]:u[O],k[B]=M?f[B]:u[O],p++}for(let d=0;d<=1;d++)for(let g=0;g<=1;g++)for(let M=0;M<=1;M++){i.x=d?u.x:f.x,i.y=g?u.y:f.y,i.z=M?u.z:f.z,this.closestPointToPoint(i,n);let _=i.distanceToSquared(n);if(_<x&&(x=_,c&&c.copy(n),l&&l.copy(i),_<h))return Math.sqrt(_)}for(let d=0;d<12;d++){let g=t[d];for(let M=0;M<12;M++){let _=e[M];Wi(g,_,n,i);let v=n.distanceToSquared(i);if(v<x&&(x=v,c&&c.copy(n),l&&l.copy(i),v<h))return Math.sqrt(v)}}return Math.sqrt(x)}}();var Fs=new R,zs=new R,Os=new R,hc=new At,uc=new At,fc=new At,dc=new R;function Np(r,t,e,n,i,s){let a;return s===he?a=r.intersectTriangle(n,e,t,!0,i):a=r.intersectTriangle(t,e,n,s!==We,i),a===null?null:{distance:r.origin.distanceTo(i),point:i.clone()}}function Fp(r,t,e,n,i,s,a){Fs.fromBufferAttribute(t,n),zs.fromBufferAttribute(t,i),Os.fromBufferAttribute(t,s);let o=Np(r,Fs,zs,Os,dc,a);if(o){e&&(hc.fromBufferAttribute(e,n),uc.fromBufferAttribute(e,i),fc.fromBufferAttribute(e,s),o.uv=ie.getUV(dc,Fs,zs,Os,hc,uc,fc,new At));let c={a:n,b:i,c:s,normal:new R,materialIndex:0};ie.getNormal(Fs,zs,Os,c.normal),o.face=c,o.faceIndex=n}return o}function go(r,t,e,n,i){let s=n*3,a=r.index.getX(s),o=r.index.getX(s+1),c=r.index.getX(s+2),l=Fp(e,r.attributes.position,r.attributes.uv,a,o,c,t);return l?(l.faceIndex=n,i&&i.push(l),l):null}function pc(r,t,e,n,i,s){for(let a=n,o=n+i;a<o;a++)go(r,t,e,a,s)}function mc(r,t,e,n,i){let s=1/0,a=null;for(let o=n,c=n+i;o<c;o++){let l=go(r,t,e,o);l&&l.distance<s&&(a=l,s=l.distance)}return a}function Ie(r,t,e,n){let i=r.a,s=r.b,a=r.c,o=t,c=t+1,l=t+2;e&&(o=e.getX(t),c=e.getX(t+1),l=e.getX(t+2)),i.x=n.getX(o),i.y=n.getY(o),i.z=n.getZ(o),s.x=n.getX(c),s.y=n.getY(c),s.z=n.getZ(c),a.x=n.getX(l),a.y=n.getY(l),a.z=n.getZ(l)}function xo(r,t,e,n,i,s,a){let o=e.index,c=e.attributes.position;for(let l=r,h=t+r;l<h;l++)if(Ie(a,l*3,o,c),a.needsUpdate=!0,n(a,l,i,s))return!0;return!1}var _i=class{constructor(t){this._getNewPrimitive=t,this._primitives=[]}getPrimitive(){let t=this._primitives;return t.length===0?this._getNewPrimitive():t.pop()}releasePrimitive(t){this._primitives.push(t)}};function cn(r,t){return t[r+15]===65535}function kn(r,t){return t[r+6]}function yi(r,t){return t[r+14]}function vi(r){return r+8}function Mi(r,t){return t[r+6]}function gc(r,t){return t[r+7]}var bi=new fe,Us=new R,Op=["x","y","z"];function ks(r,t,e,n,i){let s=r*2,a=wi,o=_n,c=yn;if(cn(s,o)){let h=kn(r,c),f=yi(s,o);pc(t,e,n,h,f,i)}else{let h=vi(r);Gs(h,a,n,Us)&&ks(h,t,e,n,i);let f=Mi(r,c);Gs(f,a,n,Us)&&ks(f,t,e,n,i)}}function Vs(r,t,e,n){let i=r*2,s=wi,a=_n,o=yn;if(cn(i,a)){let l=kn(r,o),h=yi(i,a);return mc(t,e,n,l,h)}else{let l=gc(r,o),h=Op[l],u=n.direction[h]>=0,m,x;u?(m=vi(r),x=Mi(r,o)):(m=Mi(r,o),x=vi(r));let d=Gs(m,s,n,Us)?Vs(m,t,e,n):null;if(d){let _=d.point[h];if(u?_<=s[x+l]:_>=s[x+l+3])return d}let M=Gs(x,s,n,Us)?Vs(x,t,e,n):null;return d&&M?d.distance<=M.distance?d:M:d||M||null}}var xc=function(){let r,t,e=[],n=new _i(()=>new fe);return function(...a){r=n.getPrimitive(),t=n.getPrimitive(),e.push(r,t);let o=i(...a);n.releasePrimitive(r),n.releasePrimitive(t),e.pop(),e.pop();let c=e.length;return c>0&&(t=e[c-1],r=e[c-2]),o};function i(s,a,o,c,l=null,h=0,f=0){function u(_){let v=_*2,b=_n,A=yn;for(;!cn(v,b);)_=vi(_),v=_*2;return kn(_,A)}function m(_){let v=_*2,b=_n,A=yn;for(;!cn(v,b);)_=Mi(_,A),v=_*2;return kn(_,A)+yi(v,b)}let x=s*2,p=wi,d=_n,g=yn;if(cn(x,d)){let _=kn(s,g),v=yi(x,d);return Le(s,p,r),c(_,v,!1,f,h+s,r)}else{let _=vi(s),v=Mi(s,g),b=_,A=v,C,y,S,P;if(l&&(S=r,P=t,Le(b,p,S),Le(A,p,P),C=l(S),y=l(P),y<C)){b=v,A=_;let Z=C;C=y,y=Z,S=P}S||(S=r,Le(b,p,S));let O=cn(b*2,d),B=o(S,O,C,f+1,h+b),D;if(B===2){let Z=u(b),$=m(b)-Z;D=c(Z,$,!0,f+1,h+b,S)}else D=B&&i(b,a,o,c,l,h,f+1);if(D)return!0;P=t,Le(A,p,P);let I=cn(A*2,d),k=o(P,I,y,f+1,h+A),Y;if(k===2){let Z=u(A),$=m(A)-Z;Y=c(Z,$,!0,f+1,h+A,P)}else Y=k&&i(A,a,o,c,l,h,f+1);return!!Y}}}(),_c=function(){let r=new xe,t=new xe,e=new zt,n=new _e,i=new _e;return function s(a,o,c,l,h=null){let f=a*2,u=wi,m=_n,x=yn;if(h===null&&(c.boundingBox||c.computeBoundingBox(),n.set(c.boundingBox.min,c.boundingBox.max,l),h=n),cn(f,m)){let d=o,g=d.index,M=d.attributes.position,_=c.index,v=c.attributes.position,b=kn(a,x),A=yi(f,m);if(e.copy(l).invert(),c.boundsTree)return Le(a,u,i),i.matrix.copy(e),i.needsUpdate=!0,c.boundsTree.shapecast({intersectsBounds:y=>i.intersectsBox(y),intersectsTriangle:y=>{y.a.applyMatrix4(l),y.b.applyMatrix4(l),y.c.applyMatrix4(l),y.needsUpdate=!0;for(let S=b*3,P=(A+b)*3;S<P;S+=3)if(Ie(t,S,g,M),t.needsUpdate=!0,y.intersectsTriangle(t))return!0;return!1}});for(let C=b*3,y=A+b*3;C<y;C+=3){Ie(r,C,g,M),r.a.applyMatrix4(e),r.b.applyMatrix4(e),r.c.applyMatrix4(e),r.needsUpdate=!0;for(let S=0,P=_.count;S<P;S+=3)if(Ie(t,S,_,v),t.needsUpdate=!0,r.intersectsTriangle(t))return!0}}else{let d=a+8,g=x[a+6];return Le(d,u,bi),!!(h.intersectsBox(bi)&&s(d,o,c,l,h)||(Le(g,u,bi),h.intersectsBox(bi)&&s(g,o,c,l,h)))}}}();function Gs(r,t,e,n){return Le(r,t,bi),e.intersectBox(bi,n)}var _o=[],Bs,wi,_n,yn;function Si(r){Bs&&_o.push(Bs),Bs=r,wi=new Float32Array(r),_n=new Uint16Array(r),yn=new Uint32Array(r)}function qi(){Bs=null,wi=null,_n=null,yn=null,_o.length&&Si(_o.pop())}var yo=Symbol("skip tree generation"),vo=new fe,Mo=new fe,Ti=new zt,Vn=new _e,Xi=new _e,Yi=new R,Hs=new R,Bp=new R,Up=new R,kp=new R,yc=new fe,Xe=new _i(()=>new xe),Ye=class{static serialize(t,e={}){if(e.isBufferGeometry)return console.warn("MeshBVH.serialize: The arguments for the function have changed. See documentation for new signature."),Ye.serialize(arguments[0],{cloneBuffers:arguments[2]===void 0?!0:arguments[2]});e=Zi({cloneBuffers:!0},e);let n=t.geometry,i=t._roots,s=n.getIndex(),a;return e.cloneBuffers?a={roots:i.map(o=>o.slice()),index:s.array.slice()}:a={roots:i,index:s.array},a}static deserialize(t,e,n={}){if(typeof n=="boolean")return console.warn("MeshBVH.deserialize: The arguments for the function have changed. See documentation for new signature."),Ye.deserialize(arguments[0],arguments[1],{setIndex:arguments[2]===void 0?!0:arguments[2]});n=Zi({setIndex:!0},n);let{index:i,roots:s}=t,a=new Ye(e,Co(Zi({},n),{[yo]:!0}));if(a._roots=s,n.setIndex){let o=e.getIndex();if(o===null){let c=new Yt(t.index,1,!1);e.setIndex(c)}else o.array!==i&&(o.array.set(i),o.needsUpdate=!0)}return a}constructor(t,e={}){if(t.isBufferGeometry){if(t.index&&t.index.isInterleavedBufferAttribute)throw new Error("MeshBVH: InterleavedBufferAttribute is not supported for the index attribute.")}else throw new Error("MeshBVH: Only BufferGeometries are supported.");if(e=Object.assign({strategy:0,maxDepth:40,maxLeafTris:10,verbose:!0,useSharedArrayBuffer:!1,setBoundingBox:!0,onProgress:null,[yo]:!1},e),e.useSharedArrayBuffer&&typeof SharedArrayBuffer=="undefined")throw new Error("MeshBVH: SharedArrayBuffer is not available.");this._roots=null,e[yo]||(this._roots=cc(t,e),!t.boundingBox&&e.setBoundingBox&&(t.boundingBox=this.getBoundingBox(new fe))),this.geometry=t}refit(t=null){t&&Array.isArray(t)&&(t=new Set(t));let e=this.geometry,n=e.index.array,i=e.attributes.position,s,a,o,c,l=0,h=this._roots;for(let u=0,m=h.length;u<m;u++)s=h[u],a=new Uint32Array(s),o=new Uint16Array(s),c=new Float32Array(s),f(0,l),l+=s.byteLength;function f(u,m,x=!1){let p=u*2;if(o[p+15]===65535){let g=a[u+6],M=o[p+14],_=1/0,v=1/0,b=1/0,A=-1/0,C=-1/0,y=-1/0;for(let S=3*g,P=3*(g+M);S<P;S++){let O=n[S],B=i.getX(O),D=i.getY(O),I=i.getZ(O);B<_&&(_=B),B>A&&(A=B),D<v&&(v=D),D>C&&(C=D),I<b&&(b=I),I>y&&(y=I)}return c[u+0]!==_||c[u+1]!==v||c[u+2]!==b||c[u+3]!==A||c[u+4]!==C||c[u+5]!==y?(c[u+0]=_,c[u+1]=v,c[u+2]=b,c[u+3]=A,c[u+4]=C,c[u+5]=y,!0):!1}else{let g=u+8,M=a[u+6],_=g+m,v=M+m,b=x,A=!1,C=!1;t?b||(A=t.has(_),C=t.has(v),b=!A&&!C):(A=!0,C=!0);let y=b||A,S=b||C,P=!1;y&&(P=f(g,m,b));let O=!1;S&&(O=f(M,m,b));let B=P||O;if(B)for(let D=0;D<3;D++){let I=g+D,k=M+D,Y=c[I],Z=c[I+3],H=c[k],$=c[k+3];c[u+D]=Y<H?Y:H,c[u+D+3]=Z>$?Z:$}return B}}}traverse(t,e=0){let n=this._roots[e],i=new Uint32Array(n),s=new Uint16Array(n);a(0);function a(o,c=0){let l=o*2,h=s[l+15]===65535;if(h){let f=i[o+6],u=s[l+14];t(c,h,new Float32Array(n,o*4,6),f,u)}else{let f=o+32/4,u=i[o+6],m=i[o+7];t(c,h,new Float32Array(n,o*4,6),m)||(a(f,c+1),a(u,c+1))}}}raycast(t,e=Ue){let n=this._roots,i=this.geometry,s=[],a=e.isMaterial,o=Array.isArray(e),c=i.groups,l=a?e.side:e;for(let h=0,f=n.length;h<f;h++){let u=o?e[c[h].materialIndex].side:l,m=s.length;if(Si(n[h]),ks(0,i,u,t,s),qi(),o){let x=c[h].materialIndex;for(let p=m,d=s.length;p<d;p++)s[p].face.materialIndex=x}}return s}raycastFirst(t,e=Ue){let n=this._roots,i=this.geometry,s=e.isMaterial,a=Array.isArray(e),o=null,c=i.groups,l=s?e.side:e;for(let h=0,f=n.length;h<f;h++){let u=a?e[c[h].materialIndex].side:l;Si(n[h]);let m=Vs(0,i,u,t);qi(),m!=null&&(o==null||m.distance<o.distance)&&(o=m,a&&(m.face.materialIndex=c[h].materialIndex))}return o}intersectsGeometry(t,e){let n=this.geometry,i=!1;for(let s of this._roots)if(Si(s),i=_c(0,n,t,e),qi(),i)break;return i}shapecast(t,e,n){let i=this.geometry;if(t instanceof Function){if(e){let u=e;e=(m,x,p,d)=>{let g=x*3;return u(m,g,g+1,g+2,p,d)}}t={boundsTraverseOrder:n,intersectsBounds:t,intersectsTriangle:e,intersectsRange:null},console.warn("MeshBVH: Shapecast function signature has changed and now takes an object of callbacks as a second argument. See docs for new signature.")}let s=Xe.getPrimitive(),{boundsTraverseOrder:a,intersectsBounds:o,intersectsRange:c,intersectsTriangle:l}=t;if(c&&l){let u=c;c=(m,x,p,d,g)=>u(m,x,p,d,g)?!0:xo(m,x,i,l,p,d,s)}else c||(l?c=(u,m,x,p)=>xo(u,m,i,l,x,p,s):c=(u,m,x)=>x);let h=!1,f=0;for(let u of this._roots){if(Si(u),h=xc(0,i,o,c,a,f),qi(),h)break;f+=u.byteLength}return Xe.releasePrimitive(s),h}bvhcast(t,e,n){let{intersectsRanges:i,intersectsTriangles:s}=n,a=this.geometry.index,o=this.geometry.attributes.position,c=t.geometry.index,l=t.geometry.attributes.position;Ti.copy(e).invert();let h=Xe.getPrimitive(),f=Xe.getPrimitive();if(s){let m=function(x,p,d,g,M,_,v,b){for(let A=d,C=d+g;A<C;A++){Ie(f,A*3,c,l),f.a.applyMatrix4(e),f.b.applyMatrix4(e),f.c.applyMatrix4(e),f.needsUpdate=!0;for(let y=x,S=x+p;y<S;y++)if(Ie(h,y*3,a,o),h.needsUpdate=!0,s(h,f,y,A,M,_,v,b))return!0}return!1};if(i){let x=i;i=function(p,d,g,M,_,v,b,A){return x(p,d,g,M,_,v,b,A)?!0:m(p,d,g,M,_,v,b,A)}}else i=m}t.getBoundingBox(Mo),Mo.applyMatrix4(e);let u=this.shapecast({intersectsBounds:m=>Mo.intersectsBox(m),intersectsRange:(m,x,p,d,g,M)=>(vo.copy(M),vo.applyMatrix4(Ti),t.shapecast({intersectsBounds:_=>vo.intersectsBox(_),intersectsRange:(_,v,b,A,C)=>i(m,x,_,v,d,g,A,C)}))});return Xe.releasePrimitive(h),Xe.releasePrimitive(f),u}intersectsBox(t,e){return Vn.set(t.min,t.max,e),Vn.needsUpdate=!0,this.shapecast({intersectsBounds:n=>Vn.intersectsBox(n),intersectsTriangle:n=>Vn.intersectsTriangle(n)})}intersectsSphere(t){return this.shapecast({intersectsBounds:e=>t.intersectsBox(e),intersectsTriangle:e=>e.intersectsSphere(t)})}closestPointToGeometry(t,e,n={},i={},s=0,a=1/0){t.boundingBox||t.computeBoundingBox(),Vn.set(t.boundingBox.min,t.boundingBox.max,e),Vn.needsUpdate=!0;let o=this.geometry,c=o.attributes.position,l=o.index,h=t.attributes.position,f=t.index,u=Xe.getPrimitive(),m=Xe.getPrimitive(),x=Hs,p=Bp,d=null,g=null;i&&(d=Up,g=kp);let M=1/0,_=null,v=null;return Ti.copy(e).invert(),Xi.matrix.copy(Ti),this.shapecast({boundsTraverseOrder:b=>Vn.distanceToBox(b),intersectsBounds:(b,A,C)=>C<M&&C<a?(A&&(Xi.min.copy(b.min),Xi.max.copy(b.max),Xi.needsUpdate=!0),!0):!1,intersectsRange:(b,A)=>{if(t.boundsTree)return t.boundsTree.shapecast({boundsTraverseOrder:C=>Xi.distanceToBox(C),intersectsBounds:(C,y,S)=>S<M&&S<a,intersectsRange:(C,y)=>{for(let S=C*3,P=(C+y)*3;S<P;S+=3){Ie(m,S,f,h),m.a.applyMatrix4(e),m.b.applyMatrix4(e),m.c.applyMatrix4(e),m.needsUpdate=!0;for(let O=b*3,B=(b+A)*3;O<B;O+=3){Ie(u,O,l,c),u.needsUpdate=!0;let D=u.distanceToTriangle(m,x,d);if(D<M&&(p.copy(x),g&&g.copy(d),M=D,_=O/3,v=S/3),D<s)return!0}}}});{let C=f?f.count:h.count;for(let y=0,S=C;y<S;y+=3){Ie(m,y,f,h),m.a.applyMatrix4(e),m.b.applyMatrix4(e),m.c.applyMatrix4(e),m.needsUpdate=!0;for(let P=b*3,O=(b+A)*3;P<O;P+=3){Ie(u,P,l,c),u.needsUpdate=!0;let B=u.distanceToTriangle(m,x,d);if(B<M&&(p.copy(x),g&&g.copy(d),M=B,_=P/3,v=y/3),B<s)return!0}}}}}),Xe.releasePrimitive(u),Xe.releasePrimitive(m),M===1/0?null:(n.point?n.point.copy(p):n.point=p.clone(),n.distance=M,n.faceIndex=_,i&&(i.point?i.point.copy(g):i.point=g.clone(),i.point.applyMatrix4(Ti),p.applyMatrix4(Ti),i.distance=p.sub(i.point).length(),i.faceIndex=v),n)}closestPointToPoint(t,e={},n=0,i=1/0){let s=n*n,a=i*i,o=1/0,c=null;if(this.shapecast({boundsTraverseOrder:h=>(Yi.copy(t).clamp(h.min,h.max),Yi.distanceToSquared(t)),intersectsBounds:(h,f,u)=>u<o&&u<a,intersectsTriangle:(h,f)=>{h.closestPointToPoint(t,Yi);let u=t.distanceToSquared(Yi);return u<o&&(Hs.copy(Yi),o=u,c=f),u<s}}),o===1/0)return null;let l=Math.sqrt(o);return e.point?e.point.copy(Hs):e.point=Hs.clone(),e.distance=l,e.faceIndex=c,e}getBoundingBox(t){return t.makeEmpty(),this._roots.forEach(n=>{Le(0,new Float32Array(n),yc),t.union(yc)}),t}};var bo=self;bo.addEventListener("message",async function({data:r}){let t=performance.now();function e(o){let c=performance.now();(c-t>=10||o===1)&&(postMessage({error:void 0,serialized:void 0,position:void 0,progress:o}),t=c)}let{id:n,index:i,position:s,options:a}=r;try{let o=new ke;if(o.setAttribute("position",new Yt(s,3,!1)),i&&o.setIndex(new Yt(i,1,!1)),a.includedProgressCallback&&(a.onProgress=e),a.groups){let h=a.groups;for(let f in h){let u=h[f];o.addGroup(u.start,u.count,u.materialIndex)}}let c=new Ye(o,a),l=Ye.serialize(c,{cloneBuffers:!1});bo.postMessage({id:n,error:void 0,serialized:l,position:s,progress:1},[l.index.buffer,s.buffer,...l.roots])}catch(o){bo.postMessage({id:n,error:o,serialized:void 0,position:void 0,progress:1})}});
|
||
/*! Bundled license information:
|
||
|
||
three/build/three.module.js:
|
||
(**
|
||
* @license
|
||
* Copyright 2010-2023 Three.js Authors
|
||
* SPDX-License-Identifier: MIT
|
||
*)
|
||
*/
|
||
`)}var RC=class{constructor(){this.running=!1;this.worker=new EB,this.worker.onerror=r=>{throw r.message?new Error(`[GenerateMeshBVHWorker] Could not create Web Worker with error "${r.message}"`):new Error("[GenerateMeshBVHWorker] Could not create Web Worker.")}}isRunning(){return this.running}generate(r,e={}){if(this.running){ne.warn("[GenerateMeshBVHWorker] Already running job.");return}if(!this.worker){ne.warn("[GenerateMeshBVHWorker] Worker has been disposed.");return}let{worker:i}=this;this.running=!0;let n=new Map;r.forEach(a=>{n.set(a.id,a)});let s=0;return new Promise((a,o)=>{let l=()=>{++s===n.size&&(this.running=!1,i.onmessage=null,a())};i.onerror=c=>{ne.warn(`[GenerateMeshBVHWorker] ${c.message}`),o(new Error(`[GenerateMeshBVHWorker] ${c.message}`)),this.running=!1},i.onmessage=c=>{this.running=!1;let{data:u}=c;if(u.error)ne.warn(u.error),l();else if(u.serialized){let{serialized:h,position:p,id:d}=u,f=n.get(d),m=Nc.deserialize(h,f,{setIndex:!1}),g=Object.assign({setBoundingBox:!0},e);if(g.transferred&&(f.attributes.position.array=p),f.index)e.saveOriginalIndex&&!f.userData.originalIndex&&(f.userData.originalIndex=f.index.array),ne.debug("before update, index:",f.index.array),f.index.array=h.index;else{let y=new jt(h.index,1,!1);f.setIndex(y)}f.index&&(ne.debug("after update, index:",f.index.array),f.index.needsUpdate=!0),g.setBoundingBox&&!f.boundingBox&&(f.boundingBox=m.getBoundingBox(new Ot)),f.boundsTree=m,l()}else e.onProgress&&e.onProgress(u.progress)};for(let c of n){let u=c[0],h=c[1],p=h.index?h.index.array:void 0,d=h.attributes.position,f=d.array;if(d.isInterleavedBufferAttribute||p&&p.isInterleavedBufferAttribute){ne.warn("[GenerateMeshBVHWorker] InterleavedBufferAttribute are not supported for the geometry attributes."),l();continue}let m=[];e.transferred&&(m.push(f),p&&(m.push(p),e.saveOriginalIndex&&(h.userData.originalIndex=p.slice()))),i.postMessage({id:u,index:p,position:f,options:Mn(Ur({},e),{onProgress:null,includedProgressCallback:Boolean(e.onProgress),groups:[...h.groups]})},m.length>0?m.map(g=>g.buffer):[])}})}dispose(){this.worker.terminate(),this.worker=void 0}};function bB(){return Nx(`var vr="149";var co=0,Pr=1,ho=2;var Ga=1,uo=2,li=3,nn=0,ye=1,tn=2;var en=0,Gn=1,Rr=2,Lr=3,Ir=4,fo=5,Bn=100,po=101,mo=102,Dr=103,Nr=104,go=200,_o=201,xo=202,yo=203,Ha=204,Wa=205,vo=206,Mo=207,bo=208,wo=209,So=210,To=0,Ao=1,Eo=2,Gs=3,Co=4,Po=5,Ro=6,Lo=7,Xa=0,Io=1,Do=2,We=0,No=1,Fo=2,zo=3,Oo=4,Uo=5,qa=300,Xn=301,qn=302,Hs=303,Ws=304,ns=306,Xs=1e3,Pe=1001,qs=1002,ae=1003,Fr=1004;var us=1005;var Se=1006,Bo=1007;var pi=1008;var yn=1009,ko=1010,Vo=1011,Ya=1012,Go=1013,mn=1014,gn=1015,mi=1016,Ho=1017,Wo=1018,Hn=1020,Xo=1021,Re=1023,qo=1024,Yo=1025,_n=1026,Yn=1027,Zo=1028,Jo=1029,$o=1030,Ko=1031,jo=1033,ds=33776,fs=33777,ps=33778,ms=33779,zr=35840,Or=35841,Ur=35842,Br=35843,Qo=36196,kr=37492,Vr=37496,Gr=37808,Hr=37809,Wr=37810,Xr=37811,qr=37812,Yr=37813,Zr=37814,Jr=37815,$r=37816,Kr=37817,jr=37818,Qr=37819,ta=37820,ea=37821,gs=36492,tl=36283,na=36284,ia=36285,sa=36286;var ki=2300,Vi=2301,_s=2302,ra=2400,aa=2401,oa=2402;var vn=3e3,zt=3001,el=3200,nl=3201,il=0,sl=1;var Ie="srgb",gi="srgb-linear";var xs=7680;var rl=519,la=35044;var ca="300 es",Ys=1035,sn=class{addEventListener(t,e){this._listeners===void 0&&(this._listeners={});let n=this._listeners;n[t]===void 0&&(n[t]=[]),n[t].indexOf(e)===-1&&n[t].push(e)}hasEventListener(t,e){if(this._listeners===void 0)return!1;let n=this._listeners;return n[t]!==void 0&&n[t].indexOf(e)!==-1}removeEventListener(t,e){if(this._listeners===void 0)return;let i=this._listeners[t];if(i!==void 0){let s=i.indexOf(e);s!==-1&&i.splice(s,1)}}dispatchEvent(t){if(this._listeners===void 0)return;let n=this._listeners[t.type];if(n!==void 0){t.target=this;let i=n.slice(0);for(let s=0,o=i.length;s<o;s++)i[s].call(this,t);t.target=null}}},ee=["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"],ha=1234567,ui=Math.PI/180,Gi=180/Math.PI;function jn(){let r=Math.random()*4294967295|0,t=Math.random()*4294967295|0,e=Math.random()*4294967295|0,n=Math.random()*4294967295|0;return(ee[r&255]+ee[r>>8&255]+ee[r>>16&255]+ee[r>>24&255]+"-"+ee[t&255]+ee[t>>8&255]+"-"+ee[t>>16&15|64]+ee[t>>24&255]+"-"+ee[e&63|128]+ee[e>>8&255]+"-"+ee[e>>16&255]+ee[e>>24&255]+ee[n&255]+ee[n>>8&255]+ee[n>>16&255]+ee[n>>24&255]).toLowerCase()}function ue(r,t,e){return Math.max(t,Math.min(e,r))}function Mr(r,t){return(r%t+t)%t}function al(r,t,e,n,i){return n+(r-t)*(i-n)/(e-t)}function ol(r,t,e){return r!==t?(e-r)/(t-r):0}function di(r,t,e){return(1-e)*r+e*t}function ll(r,t,e,n){return di(r,t,1-Math.exp(-e*n))}function cl(r,t=1){return t-Math.abs(Mr(r,t*2)-t)}function hl(r,t,e){return r<=t?0:r>=e?1:(r=(r-t)/(e-t),r*r*(3-2*r))}function ul(r,t,e){return r<=t?0:r>=e?1:(r=(r-t)/(e-t),r*r*r*(r*(r*6-15)+10))}function dl(r,t){return r+Math.floor(Math.random()*(t-r+1))}function fl(r,t){return r+Math.random()*(t-r)}function pl(r){return r*(.5-Math.random())}function ml(r){r!==void 0&&(ha=r);let t=ha+=1831565813;return t=Math.imul(t^t>>>15,t|1),t^=t+Math.imul(t^t>>>7,t|61),((t^t>>>14)>>>0)/4294967296}function gl(r){return r*ui}function _l(r){return r*Gi}function Zs(r){return(r&r-1)===0&&r!==0}function xl(r){return Math.pow(2,Math.ceil(Math.log(r)/Math.LN2))}function Hi(r){return Math.pow(2,Math.floor(Math.log(r)/Math.LN2))}function yl(r,t,e,n,i){let s=Math.cos,o=Math.sin,a=s(e/2),c=o(e/2),l=s((t+n)/2),h=o((t+n)/2),f=s((t-n)/2),u=o((t-n)/2),m=s((n-t)/2),_=o((n-t)/2);switch(i){case"XYX":r.set(a*h,c*f,c*u,a*l);break;case"YZY":r.set(c*u,a*h,c*f,a*l);break;case"ZXZ":r.set(c*f,c*u,a*h,a*l);break;case"XZX":r.set(a*h,c*_,c*m,a*l);break;case"YXY":r.set(c*m,a*h,c*_,a*l);break;case"ZYZ":r.set(c*_,c*m,a*h,a*l);break;default:console.warn("THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+i)}}function ci(r,t){switch(t.constructor){case Float32Array:return r;case Uint16Array:return r/65535;case Uint8Array:return r/255;case Int16Array:return Math.max(r/32767,-1);case Int8Array:return Math.max(r/127,-1);default:throw new Error("Invalid component type.")}}function he(r,t){switch(t.constructor){case Float32Array:return r;case Uint16Array:return Math.round(r*65535);case Uint8Array:return Math.round(r*255);case Int16Array:return Math.round(r*32767);case Int8Array:return Math.round(r*127);default:throw new Error("Invalid component type.")}}var Za=Object.freeze({__proto__:null,DEG2RAD:ui,RAD2DEG:Gi,ceilPowerOfTwo:xl,clamp:ue,damp:ll,degToRad:gl,denormalize:ci,euclideanModulo:Mr,floorPowerOfTwo:Hi,generateUUID:jn,inverseLerp:ol,isPowerOfTwo:Zs,lerp:di,mapLinear:al,normalize:he,pingpong:cl,radToDeg:_l,randFloat:fl,randFloatSpread:pl,randInt:dl,seededRandom:ml,setQuaternionFromProperEuler:yl,smootherstep:ul,smoothstep:hl}),Nt=class{constructor(t=0,e=0){Nt.prototype.isVector2=!0,this.x=t,this.y=e}get width(){return this.x}set width(t){this.x=t}get height(){return this.y}set height(t){this.y=t}set(t,e){return this.x=t,this.y=e,this}setScalar(t){return this.x=t,this.y=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+t)}}clone(){return new this.constructor(this.x,this.y)}copy(t){return this.x=t.x,this.y=t.y,this}add(t){return this.x+=t.x,this.y+=t.y,this}addScalar(t){return this.x+=t,this.y+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this}subScalar(t){return this.x-=t,this.y-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this}multiply(t){return this.x*=t.x,this.y*=t.y,this}multiplyScalar(t){return this.x*=t,this.y*=t,this}divide(t){return this.x/=t.x,this.y/=t.y,this}divideScalar(t){return this.multiplyScalar(1/t)}applyMatrix3(t){let e=this.x,n=this.y,i=t.elements;return this.x=i[0]*e+i[3]*n+i[6],this.y=i[1]*e+i[4]*n+i[7],this}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this}clamp(t,e){return this.x=Math.max(t.x,Math.min(e.x,this.x)),this.y=Math.max(t.y,Math.min(e.y,this.y)),this}clampScalar(t,e){return this.x=Math.max(t,Math.min(e,this.x)),this.y=Math.max(t,Math.min(e,this.y)),this}clampLength(t,e){let n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(t,Math.min(e,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=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(t){return this.x*t.x+this.y*t.y}cross(t){return this.x*t.y-this.y*t.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}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){let e=this.x-t.x,n=this.y-t.y;return e*e+n*n}manhattanDistanceTo(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)}setLength(t){return this.normalize().multiplyScalar(t)}lerp(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this}lerpVectors(t,e,n){return this.x=t.x+(e.x-t.x)*n,this.y=t.y+(e.y-t.y)*n,this}equals(t){return t.x===this.x&&t.y===this.y}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t}fromBufferAttribute(t,e){return this.x=t.getX(e),this.y=t.getY(e),this}rotateAround(t,e){let n=Math.cos(e),i=Math.sin(e),s=this.x-t.x,o=this.y-t.y;return this.x=s*n-o*i+t.x,this.y=s*i+o*n+t.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}},oe=class{constructor(){oe.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1]}set(t,e,n,i,s,o,a,c,l){let h=this.elements;return h[0]=t,h[1]=i,h[2]=a,h[3]=e,h[4]=s,h[5]=c,h[6]=n,h[7]=o,h[8]=l,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(t){let e=this.elements,n=t.elements;return e[0]=n[0],e[1]=n[1],e[2]=n[2],e[3]=n[3],e[4]=n[4],e[5]=n[5],e[6]=n[6],e[7]=n[7],e[8]=n[8],this}extractBasis(t,e,n){return t.setFromMatrix3Column(this,0),e.setFromMatrix3Column(this,1),n.setFromMatrix3Column(this,2),this}setFromMatrix4(t){let e=t.elements;return this.set(e[0],e[4],e[8],e[1],e[5],e[9],e[2],e[6],e[10]),this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,e){let n=t.elements,i=e.elements,s=this.elements,o=n[0],a=n[3],c=n[6],l=n[1],h=n[4],f=n[7],u=n[2],m=n[5],_=n[8],p=i[0],d=i[3],v=i[6],T=i[1],b=i[4],M=i[7],A=i[2],C=i[5],I=i[8];return s[0]=o*p+a*T+c*A,s[3]=o*d+a*b+c*C,s[6]=o*v+a*M+c*I,s[1]=l*p+h*T+f*A,s[4]=l*d+h*b+f*C,s[7]=l*v+h*M+f*I,s[2]=u*p+m*T+_*A,s[5]=u*d+m*b+_*C,s[8]=u*v+m*M+_*I,this}multiplyScalar(t){let e=this.elements;return e[0]*=t,e[3]*=t,e[6]*=t,e[1]*=t,e[4]*=t,e[7]*=t,e[2]*=t,e[5]*=t,e[8]*=t,this}determinant(){let t=this.elements,e=t[0],n=t[1],i=t[2],s=t[3],o=t[4],a=t[5],c=t[6],l=t[7],h=t[8];return e*o*h-e*a*l-n*s*h+n*a*c+i*s*l-i*o*c}invert(){let t=this.elements,e=t[0],n=t[1],i=t[2],s=t[3],o=t[4],a=t[5],c=t[6],l=t[7],h=t[8],f=h*o-a*l,u=a*c-h*s,m=l*s-o*c,_=e*f+n*u+i*m;if(_===0)return this.set(0,0,0,0,0,0,0,0,0);let p=1/_;return t[0]=f*p,t[1]=(i*l-h*n)*p,t[2]=(a*n-i*o)*p,t[3]=u*p,t[4]=(h*e-i*c)*p,t[5]=(i*s-a*e)*p,t[6]=m*p,t[7]=(n*c-l*e)*p,t[8]=(o*e-n*s)*p,this}transpose(){let t,e=this.elements;return t=e[1],e[1]=e[3],e[3]=t,t=e[2],e[2]=e[6],e[6]=t,t=e[5],e[5]=e[7],e[7]=t,this}getNormalMatrix(t){return this.setFromMatrix4(t).invert().transpose()}transposeIntoArray(t){let e=this.elements;return t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8],this}setUvTransform(t,e,n,i,s,o,a){let c=Math.cos(s),l=Math.sin(s);return this.set(n*c,n*l,-n*(c*o+l*a)+o+t,-i*l,i*c,-i*(-l*o+c*a)+a+e,0,0,1),this}scale(t,e){return this.premultiply(ys.makeScale(t,e)),this}rotate(t){return this.premultiply(ys.makeRotation(-t)),this}translate(t,e){return this.premultiply(ys.makeTranslation(t,e)),this}makeTranslation(t,e){return this.set(1,0,t,0,1,e,0,0,1),this}makeRotation(t){let e=Math.cos(t),n=Math.sin(t);return this.set(e,-n,0,n,e,0,0,0,1),this}makeScale(t,e){return this.set(t,0,0,0,e,0,0,0,1),this}equals(t){let e=this.elements,n=t.elements;for(let i=0;i<9;i++)if(e[i]!==n[i])return!1;return!0}fromArray(t,e=0){for(let n=0;n<9;n++)this.elements[n]=t[n+e];return this}toArray(t=[],e=0){let n=this.elements;return t[e]=n[0],t[e+1]=n[1],t[e+2]=n[2],t[e+3]=n[3],t[e+4]=n[4],t[e+5]=n[5],t[e+6]=n[6],t[e+7]=n[7],t[e+8]=n[8],t}clone(){return new this.constructor().fromArray(this.elements)}},ys=new oe;function Ja(r){for(let t=r.length-1;t>=0;--t)if(r[t]>=65535)return!0;return!1}function Wi(r){return document.createElementNS("http://www.w3.org/1999/xhtml",r)}function xn(r){return r<.04045?r*.0773993808:Math.pow(r*.9478672986+.0521327014,2.4)}function Bi(r){return r<.0031308?r*12.92:1.055*Math.pow(r,.41666)-.055}var vs={[Ie]:{[gi]:xn},[gi]:{[Ie]:Bi}},se={legacyMode:!0,get workingColorSpace(){return gi},set workingColorSpace(r){console.warn("THREE.ColorManagement: .workingColorSpace is readonly.")},convert:function(r,t,e){if(this.legacyMode||t===e||!t||!e)return r;if(vs[t]&&vs[t][e]!==void 0){let n=vs[t][e];return r.r=n(r.r),r.g=n(r.g),r.b=n(r.b),r}throw new Error("Unsupported color space conversion.")},fromWorkingColorSpace:function(r,t){return this.convert(r,this.workingColorSpace,t)},toWorkingColorSpace:function(r,t){return this.convert(r,t,this.workingColorSpace)}},$a={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},Wt={r:0,g:0,b:0},Ae={h:0,s:0,l:0},vi={h:0,s:0,l:0};function Ms(r,t,e){return e<0&&(e+=1),e>1&&(e-=1),e<1/6?r+(t-r)*6*e:e<1/2?t:e<2/3?r+(t-r)*6*(2/3-e):r}function Mi(r,t){return t.r=r.r,t.g=r.g,t.b=r.b,t}var Ot=class{constructor(t,e,n){return this.isColor=!0,this.r=1,this.g=1,this.b=1,e===void 0&&n===void 0?this.set(t):this.setRGB(t,e,n)}set(t){return t&&t.isColor?this.copy(t):typeof t=="number"?this.setHex(t):typeof t=="string"&&this.setStyle(t),this}setScalar(t){return this.r=t,this.g=t,this.b=t,this}setHex(t,e=Ie){return t=Math.floor(t),this.r=(t>>16&255)/255,this.g=(t>>8&255)/255,this.b=(t&255)/255,se.toWorkingColorSpace(this,e),this}setRGB(t,e,n,i=se.workingColorSpace){return this.r=t,this.g=e,this.b=n,se.toWorkingColorSpace(this,i),this}setHSL(t,e,n,i=se.workingColorSpace){if(t=Mr(t,1),e=ue(e,0,1),n=ue(n,0,1),e===0)this.r=this.g=this.b=n;else{let s=n<=.5?n*(1+e):n+e-n*e,o=2*n-s;this.r=Ms(o,s,t+1/3),this.g=Ms(o,s,t),this.b=Ms(o,s,t-1/3)}return se.toWorkingColorSpace(this,i),this}setStyle(t,e=Ie){function n(s){s!==void 0&&parseFloat(s)<1&&console.warn("THREE.Color: Alpha component of "+t+" will be ignored.")}let i;if(i=/^((?:rgb|hsl)a?)\\(([^\\)]*)\\)/.exec(t)){let s,o=i[1],a=i[2];switch(o){case"rgb":case"rgba":if(s=/^\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(a))return this.r=Math.min(255,parseInt(s[1],10))/255,this.g=Math.min(255,parseInt(s[2],10))/255,this.b=Math.min(255,parseInt(s[3],10))/255,se.toWorkingColorSpace(this,e),n(s[4]),this;if(s=/^\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(a))return this.r=Math.min(100,parseInt(s[1],10))/100,this.g=Math.min(100,parseInt(s[2],10))/100,this.b=Math.min(100,parseInt(s[3],10))/100,se.toWorkingColorSpace(this,e),n(s[4]),this;break;case"hsl":case"hsla":if(s=/^\\s*(\\d*\\.?\\d+)\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(a)){let c=parseFloat(s[1])/360,l=parseFloat(s[2])/100,h=parseFloat(s[3])/100;return n(s[4]),this.setHSL(c,l,h,e)}break}}else if(i=/^\\#([A-Fa-f\\d]+)$/.exec(t)){let s=i[1],o=s.length;if(o===3)return this.r=parseInt(s.charAt(0)+s.charAt(0),16)/255,this.g=parseInt(s.charAt(1)+s.charAt(1),16)/255,this.b=parseInt(s.charAt(2)+s.charAt(2),16)/255,se.toWorkingColorSpace(this,e),this;if(o===6)return this.r=parseInt(s.charAt(0)+s.charAt(1),16)/255,this.g=parseInt(s.charAt(2)+s.charAt(3),16)/255,this.b=parseInt(s.charAt(4)+s.charAt(5),16)/255,se.toWorkingColorSpace(this,e),this}return t&&t.length>0?this.setColorName(t,e):this}setColorName(t,e=Ie){let n=$a[t.toLowerCase()];return n!==void 0?this.setHex(n,e):console.warn("THREE.Color: Unknown color "+t),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(t){return this.r=t.r,this.g=t.g,this.b=t.b,this}copySRGBToLinear(t){return this.r=xn(t.r),this.g=xn(t.g),this.b=xn(t.b),this}copyLinearToSRGB(t){return this.r=Bi(t.r),this.g=Bi(t.g),this.b=Bi(t.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(t=Ie){return se.fromWorkingColorSpace(Mi(this,Wt),t),ue(Wt.r*255,0,255)<<16^ue(Wt.g*255,0,255)<<8^ue(Wt.b*255,0,255)<<0}getHexString(t=Ie){return("000000"+this.getHex(t).toString(16)).slice(-6)}getHSL(t,e=se.workingColorSpace){se.fromWorkingColorSpace(Mi(this,Wt),e);let n=Wt.r,i=Wt.g,s=Wt.b,o=Math.max(n,i,s),a=Math.min(n,i,s),c,l,h=(a+o)/2;if(a===o)c=0,l=0;else{let f=o-a;switch(l=h<=.5?f/(o+a):f/(2-o-a),o){case n:c=(i-s)/f+(i<s?6:0);break;case i:c=(s-n)/f+2;break;case s:c=(n-i)/f+4;break}c/=6}return t.h=c,t.s=l,t.l=h,t}getRGB(t,e=se.workingColorSpace){return se.fromWorkingColorSpace(Mi(this,Wt),e),t.r=Wt.r,t.g=Wt.g,t.b=Wt.b,t}getStyle(t=Ie){return se.fromWorkingColorSpace(Mi(this,Wt),t),t!==Ie?\`color(\${t} \${Wt.r} \${Wt.g} \${Wt.b})\`:\`rgb(\${Wt.r*255|0},\${Wt.g*255|0},\${Wt.b*255|0})\`}offsetHSL(t,e,n){return this.getHSL(Ae),Ae.h+=t,Ae.s+=e,Ae.l+=n,this.setHSL(Ae.h,Ae.s,Ae.l),this}add(t){return this.r+=t.r,this.g+=t.g,this.b+=t.b,this}addColors(t,e){return this.r=t.r+e.r,this.g=t.g+e.g,this.b=t.b+e.b,this}addScalar(t){return this.r+=t,this.g+=t,this.b+=t,this}sub(t){return this.r=Math.max(0,this.r-t.r),this.g=Math.max(0,this.g-t.g),this.b=Math.max(0,this.b-t.b),this}multiply(t){return this.r*=t.r,this.g*=t.g,this.b*=t.b,this}multiplyScalar(t){return this.r*=t,this.g*=t,this.b*=t,this}lerp(t,e){return this.r+=(t.r-this.r)*e,this.g+=(t.g-this.g)*e,this.b+=(t.b-this.b)*e,this}lerpColors(t,e,n){return this.r=t.r+(e.r-t.r)*n,this.g=t.g+(e.g-t.g)*n,this.b=t.b+(e.b-t.b)*n,this}lerpHSL(t,e){this.getHSL(Ae),t.getHSL(vi);let n=di(Ae.h,vi.h,e),i=di(Ae.s,vi.s,e),s=di(Ae.l,vi.l,e);return this.setHSL(n,i,s),this}equals(t){return t.r===this.r&&t.g===this.g&&t.b===this.b}fromArray(t,e=0){return this.r=t[e],this.g=t[e+1],this.b=t[e+2],this}toArray(t=[],e=0){return t[e]=this.r,t[e+1]=this.g,t[e+2]=this.b,t}fromBufferAttribute(t,e){return this.r=t.getX(e),this.g=t.getY(e),this.b=t.getZ(e),this}toJSON(){return this.getHex()}*[Symbol.iterator](){yield this.r,yield this.g,yield this.b}};Ot.NAMES=$a;var Tn,Xi=class{static getDataURL(t){if(/^data:/i.test(t.src)||typeof HTMLCanvasElement=="undefined")return t.src;let e;if(t instanceof HTMLCanvasElement)e=t;else{Tn===void 0&&(Tn=Wi("canvas")),Tn.width=t.width,Tn.height=t.height;let n=Tn.getContext("2d");t instanceof ImageData?n.putImageData(t,0,0):n.drawImage(t,0,0,t.width,t.height),e=Tn}return e.width>2048||e.height>2048?(console.warn("THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons",t),e.toDataURL("image/jpeg",.6)):e.toDataURL("image/png")}static sRGBToLinear(t){if(typeof HTMLImageElement!="undefined"&&t instanceof HTMLImageElement||typeof HTMLCanvasElement!="undefined"&&t instanceof HTMLCanvasElement||typeof ImageBitmap!="undefined"&&t instanceof ImageBitmap){let e=Wi("canvas");e.width=t.width,e.height=t.height;let n=e.getContext("2d");n.drawImage(t,0,0,t.width,t.height);let i=n.getImageData(0,0,t.width,t.height),s=i.data;for(let o=0;o<s.length;o++)s[o]=xn(s[o]/255)*255;return n.putImageData(i,0,0),e}else if(t.data){let e=t.data.slice(0);for(let n=0;n<e.length;n++)e instanceof Uint8Array||e instanceof Uint8ClampedArray?e[n]=Math.floor(xn(e[n]/255)*255):e[n]=xn(e[n]);return{data:e,width:t.width,height:t.height}}else return console.warn("THREE.ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied."),t}},qi=class{constructor(t=null){this.isSource=!0,this.uuid=jn(),this.data=t,this.version=0}set needsUpdate(t){t===!0&&this.version++}toJSON(t){let e=t===void 0||typeof t=="string";if(!e&&t.images[this.uuid]!==void 0)return t.images[this.uuid];let n={uuid:this.uuid,url:""},i=this.data;if(i!==null){let s;if(Array.isArray(i)){s=[];for(let o=0,a=i.length;o<a;o++)i[o].isDataTexture?s.push(bs(i[o].image)):s.push(bs(i[o]))}else s=bs(i);n.url=s}return e||(t.images[this.uuid]=n),n}};function bs(r){return typeof HTMLImageElement!="undefined"&&r instanceof HTMLImageElement||typeof HTMLCanvasElement!="undefined"&&r instanceof HTMLCanvasElement||typeof ImageBitmap!="undefined"&&r instanceof ImageBitmap?Xi.getDataURL(r):r.data?{data:Array.from(r.data),width:r.width,height:r.height,type:r.data.constructor.name}:(console.warn("THREE.Texture: Unable to serialize Texture."),{})}var vl=0,le=class extends sn{constructor(t=le.DEFAULT_IMAGE,e=le.DEFAULT_MAPPING,n=Pe,i=Pe,s=Se,o=pi,a=Re,c=yn,l=le.DEFAULT_ANISOTROPY,h=vn){super(),this.isTexture=!0,Object.defineProperty(this,"id",{value:vl++}),this.uuid=jn(),this.name="",this.source=new qi(t),this.mipmaps=[],this.mapping=e,this.wrapS=n,this.wrapT=i,this.magFilter=s,this.minFilter=o,this.anisotropy=l,this.format=a,this.internalFormat=null,this.type=c,this.offset=new Nt(0,0),this.repeat=new Nt(1,1),this.center=new Nt(0,0),this.rotation=0,this.matrixAutoUpdate=!0,this.matrix=new oe,this.generateMipmaps=!0,this.premultiplyAlpha=!1,this.flipY=!0,this.unpackAlignment=4,this.encoding=h,this.userData={},this.version=0,this.onUpdate=null,this.isRenderTargetTexture=!1,this.needsPMREMUpdate=!1}get image(){return this.source.data}set image(t){this.source.data=t}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(t){return this.name=t.name,this.source=t.source,this.mipmaps=t.mipmaps.slice(0),this.mapping=t.mapping,this.wrapS=t.wrapS,this.wrapT=t.wrapT,this.magFilter=t.magFilter,this.minFilter=t.minFilter,this.anisotropy=t.anisotropy,this.format=t.format,this.internalFormat=t.internalFormat,this.type=t.type,this.offset.copy(t.offset),this.repeat.copy(t.repeat),this.center.copy(t.center),this.rotation=t.rotation,this.matrixAutoUpdate=t.matrixAutoUpdate,this.matrix.copy(t.matrix),this.generateMipmaps=t.generateMipmaps,this.premultiplyAlpha=t.premultiplyAlpha,this.flipY=t.flipY,this.unpackAlignment=t.unpackAlignment,this.encoding=t.encoding,this.userData=JSON.parse(JSON.stringify(t.userData)),this.needsUpdate=!0,this}toJSON(t){let e=t===void 0||typeof t=="string";if(!e&&t.textures[this.uuid]!==void 0)return t.textures[this.uuid];let n={metadata:{version:4.5,type:"Texture",generator:"Texture.toJSON"},uuid:this.uuid,name:this.name,image:this.source.toJSON(t).uuid,mapping:this.mapping,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,type:this.type,encoding:this.encoding,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),e||(t.textures[this.uuid]=n),n}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(t){if(this.mapping!==qa)return t;if(t.applyMatrix3(this.matrix),t.x<0||t.x>1)switch(this.wrapS){case Xs:t.x=t.x-Math.floor(t.x);break;case Pe:t.x=t.x<0?0:1;break;case qs:Math.abs(Math.floor(t.x)%2)===1?t.x=Math.ceil(t.x)-t.x:t.x=t.x-Math.floor(t.x);break}if(t.y<0||t.y>1)switch(this.wrapT){case Xs:t.y=t.y-Math.floor(t.y);break;case Pe:t.y=t.y<0?0:1;break;case qs:Math.abs(Math.floor(t.y)%2)===1?t.y=Math.ceil(t.y)-t.y:t.y=t.y-Math.floor(t.y);break}return this.flipY&&(t.y=1-t.y),t}set needsUpdate(t){t===!0&&(this.version++,this.source.needsUpdate=!0)}};le.DEFAULT_IMAGE=null;le.DEFAULT_MAPPING=qa;le.DEFAULT_ANISOTROPY=1;var Xt=class{constructor(t=0,e=0,n=0,i=1){Xt.prototype.isVector4=!0,this.x=t,this.y=e,this.z=n,this.w=i}get width(){return this.z}set width(t){this.z=t}get height(){return this.w}set height(t){this.w=t}set(t,e,n,i){return this.x=t,this.y=e,this.z=n,this.w=i,this}setScalar(t){return this.x=t,this.y=t,this.z=t,this.w=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setZ(t){return this.z=t,this}setW(t){return this.w=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;case 3:this.w=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){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: "+t)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(t){return this.x=t.x,this.y=t.y,this.z=t.z,this.w=t.w!==void 0?t.w:1,this}add(t){return this.x+=t.x,this.y+=t.y,this.z+=t.z,this.w+=t.w,this}addScalar(t){return this.x+=t,this.y+=t,this.z+=t,this.w+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this.w=t.w+e.w,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this.w+=t.w*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this.z-=t.z,this.w-=t.w,this}subScalar(t){return this.x-=t,this.y-=t,this.z-=t,this.w-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this.w=t.w-e.w,this}multiply(t){return this.x*=t.x,this.y*=t.y,this.z*=t.z,this.w*=t.w,this}multiplyScalar(t){return this.x*=t,this.y*=t,this.z*=t,this.w*=t,this}applyMatrix4(t){let e=this.x,n=this.y,i=this.z,s=this.w,o=t.elements;return this.x=o[0]*e+o[4]*n+o[8]*i+o[12]*s,this.y=o[1]*e+o[5]*n+o[9]*i+o[13]*s,this.z=o[2]*e+o[6]*n+o[10]*i+o[14]*s,this.w=o[3]*e+o[7]*n+o[11]*i+o[15]*s,this}divideScalar(t){return this.multiplyScalar(1/t)}setAxisAngleFromQuaternion(t){this.w=2*Math.acos(t.w);let e=Math.sqrt(1-t.w*t.w);return e<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=t.x/e,this.y=t.y/e,this.z=t.z/e),this}setAxisAngleFromRotationMatrix(t){let e,n,i,s,c=t.elements,l=c[0],h=c[4],f=c[8],u=c[1],m=c[5],_=c[9],p=c[2],d=c[6],v=c[10];if(Math.abs(h-u)<.01&&Math.abs(f-p)<.01&&Math.abs(_-d)<.01){if(Math.abs(h+u)<.1&&Math.abs(f+p)<.1&&Math.abs(_+d)<.1&&Math.abs(l+m+v-3)<.1)return this.set(1,0,0,0),this;e=Math.PI;let b=(l+1)/2,M=(m+1)/2,A=(v+1)/2,C=(h+u)/4,I=(f+p)/4,x=(_+d)/4;return b>M&&b>A?b<.01?(n=0,i=.707106781,s=.707106781):(n=Math.sqrt(b),i=C/n,s=I/n):M>A?M<.01?(n=.707106781,i=0,s=.707106781):(i=Math.sqrt(M),n=C/i,s=x/i):A<.01?(n=.707106781,i=.707106781,s=0):(s=Math.sqrt(A),n=I/s,i=x/s),this.set(n,i,s,e),this}let T=Math.sqrt((d-_)*(d-_)+(f-p)*(f-p)+(u-h)*(u-h));return Math.abs(T)<.001&&(T=1),this.x=(d-_)/T,this.y=(f-p)/T,this.z=(u-h)/T,this.w=Math.acos((l+m+v-1)/2),this}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this.z=Math.min(this.z,t.z),this.w=Math.min(this.w,t.w),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this.z=Math.max(this.z,t.z),this.w=Math.max(this.w,t.w),this}clamp(t,e){return this.x=Math.max(t.x,Math.min(e.x,this.x)),this.y=Math.max(t.y,Math.min(e.y,this.y)),this.z=Math.max(t.z,Math.min(e.z,this.z)),this.w=Math.max(t.w,Math.min(e.w,this.w)),this}clampScalar(t,e){return this.x=Math.max(t,Math.min(e,this.x)),this.y=Math.max(t,Math.min(e,this.y)),this.z=Math.max(t,Math.min(e,this.z)),this.w=Math.max(t,Math.min(e,this.w)),this}clampLength(t,e){let n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(t,Math.min(e,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=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this.w=this.w<0?Math.ceil(this.w):Math.floor(this.w),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(t){return this.x*t.x+this.y*t.y+this.z*t.z+this.w*t.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(t){return this.normalize().multiplyScalar(t)}lerp(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this.z+=(t.z-this.z)*e,this.w+=(t.w-this.w)*e,this}lerpVectors(t,e,n){return this.x=t.x+(e.x-t.x)*n,this.y=t.y+(e.y-t.y)*n,this.z=t.z+(e.z-t.z)*n,this.w=t.w+(e.w-t.w)*n,this}equals(t){return t.x===this.x&&t.y===this.y&&t.z===this.z&&t.w===this.w}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this.z=t[e+2],this.w=t[e+3],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t[e+2]=this.z,t[e+3]=this.w,t}fromBufferAttribute(t,e){return this.x=t.getX(e),this.y=t.getY(e),this.z=t.getZ(e),this.w=t.getW(e),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}},qe=class extends sn{constructor(t=1,e=1,n={}){super(),this.isWebGLRenderTarget=!0,this.width=t,this.height=e,this.depth=1,this.scissor=new Xt(0,0,t,e),this.scissorTest=!1,this.viewport=new Xt(0,0,t,e);let i={width:t,height:e,depth:1};this.texture=new le(i,n.mapping,n.wrapS,n.wrapT,n.magFilter,n.minFilter,n.format,n.type,n.anisotropy,n.encoding),this.texture.isRenderTargetTexture=!0,this.texture.flipY=!1,this.texture.generateMipmaps=n.generateMipmaps!==void 0?n.generateMipmaps:!1,this.texture.internalFormat=n.internalFormat!==void 0?n.internalFormat:null,this.texture.minFilter=n.minFilter!==void 0?n.minFilter:Se,this.depthBuffer=n.depthBuffer!==void 0?n.depthBuffer:!0,this.stencilBuffer=n.stencilBuffer!==void 0?n.stencilBuffer:!1,this.depthTexture=n.depthTexture!==void 0?n.depthTexture:null,this.samples=n.samples!==void 0?n.samples:0}setSize(t,e,n=1){(this.width!==t||this.height!==e||this.depth!==n)&&(this.width=t,this.height=e,this.depth=n,this.texture.image.width=t,this.texture.image.height=e,this.texture.image.depth=n,this.dispose()),this.viewport.set(0,0,t,e),this.scissor.set(0,0,t,e)}clone(){return new this.constructor().copy(this)}copy(t){this.width=t.width,this.height=t.height,this.depth=t.depth,this.viewport.copy(t.viewport),this.texture=t.texture.clone(),this.texture.isRenderTargetTexture=!0;let e=Object.assign({},t.texture.image);return this.texture.source=new qi(e),this.depthBuffer=t.depthBuffer,this.stencilBuffer=t.stencilBuffer,t.depthTexture!==null&&(this.depthTexture=t.depthTexture.clone()),this.samples=t.samples,this}dispose(){this.dispatchEvent({type:"dispose"})}},Yi=class extends le{constructor(t=null,e=1,n=1,i=1){super(null),this.isDataArrayTexture=!0,this.image={data:t,width:e,height:n,depth:i},this.magFilter=ae,this.minFilter=ae,this.wrapR=Pe,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}};var Js=class extends le{constructor(t=null,e=1,n=1,i=1){super(null),this.isData3DTexture=!0,this.image={data:t,width:e,height:n,depth:i},this.magFilter=ae,this.minFilter=ae,this.wrapR=Pe,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}};var rn=class{constructor(t=0,e=0,n=0,i=1){this.isQuaternion=!0,this._x=t,this._y=e,this._z=n,this._w=i}static slerpFlat(t,e,n,i,s,o,a){let c=n[i+0],l=n[i+1],h=n[i+2],f=n[i+3],u=s[o+0],m=s[o+1],_=s[o+2],p=s[o+3];if(a===0){t[e+0]=c,t[e+1]=l,t[e+2]=h,t[e+3]=f;return}if(a===1){t[e+0]=u,t[e+1]=m,t[e+2]=_,t[e+3]=p;return}if(f!==p||c!==u||l!==m||h!==_){let d=1-a,v=c*u+l*m+h*_+f*p,T=v>=0?1:-1,b=1-v*v;if(b>Number.EPSILON){let A=Math.sqrt(b),C=Math.atan2(A,v*T);d=Math.sin(d*C)/A,a=Math.sin(a*C)/A}let M=a*T;if(c=c*d+u*M,l=l*d+m*M,h=h*d+_*M,f=f*d+p*M,d===1-a){let A=1/Math.sqrt(c*c+l*l+h*h+f*f);c*=A,l*=A,h*=A,f*=A}}t[e]=c,t[e+1]=l,t[e+2]=h,t[e+3]=f}static multiplyQuaternionsFlat(t,e,n,i,s,o){let a=n[i],c=n[i+1],l=n[i+2],h=n[i+3],f=s[o],u=s[o+1],m=s[o+2],_=s[o+3];return t[e]=a*_+h*f+c*m-l*u,t[e+1]=c*_+h*u+l*f-a*m,t[e+2]=l*_+h*m+a*u-c*f,t[e+3]=h*_-a*f-c*u-l*m,t}get x(){return this._x}set x(t){this._x=t,this._onChangeCallback()}get y(){return this._y}set y(t){this._y=t,this._onChangeCallback()}get z(){return this._z}set z(t){this._z=t,this._onChangeCallback()}get w(){return this._w}set w(t){this._w=t,this._onChangeCallback()}set(t,e,n,i){return this._x=t,this._y=e,this._z=n,this._w=i,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(t){return this._x=t.x,this._y=t.y,this._z=t.z,this._w=t.w,this._onChangeCallback(),this}setFromEuler(t,e){let n=t._x,i=t._y,s=t._z,o=t._order,a=Math.cos,c=Math.sin,l=a(n/2),h=a(i/2),f=a(s/2),u=c(n/2),m=c(i/2),_=c(s/2);switch(o){case"XYZ":this._x=u*h*f+l*m*_,this._y=l*m*f-u*h*_,this._z=l*h*_+u*m*f,this._w=l*h*f-u*m*_;break;case"YXZ":this._x=u*h*f+l*m*_,this._y=l*m*f-u*h*_,this._z=l*h*_-u*m*f,this._w=l*h*f+u*m*_;break;case"ZXY":this._x=u*h*f-l*m*_,this._y=l*m*f+u*h*_,this._z=l*h*_+u*m*f,this._w=l*h*f-u*m*_;break;case"ZYX":this._x=u*h*f-l*m*_,this._y=l*m*f+u*h*_,this._z=l*h*_-u*m*f,this._w=l*h*f+u*m*_;break;case"YZX":this._x=u*h*f+l*m*_,this._y=l*m*f+u*h*_,this._z=l*h*_-u*m*f,this._w=l*h*f-u*m*_;break;case"XZY":this._x=u*h*f-l*m*_,this._y=l*m*f-u*h*_,this._z=l*h*_+u*m*f,this._w=l*h*f+u*m*_;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+o)}return e!==!1&&this._onChangeCallback(),this}setFromAxisAngle(t,e){let n=e/2,i=Math.sin(n);return this._x=t.x*i,this._y=t.y*i,this._z=t.z*i,this._w=Math.cos(n),this._onChangeCallback(),this}setFromRotationMatrix(t){let e=t.elements,n=e[0],i=e[4],s=e[8],o=e[1],a=e[5],c=e[9],l=e[2],h=e[6],f=e[10],u=n+a+f;if(u>0){let m=.5/Math.sqrt(u+1);this._w=.25/m,this._x=(h-c)*m,this._y=(s-l)*m,this._z=(o-i)*m}else if(n>a&&n>f){let m=2*Math.sqrt(1+n-a-f);this._w=(h-c)/m,this._x=.25*m,this._y=(i+o)/m,this._z=(s+l)/m}else if(a>f){let m=2*Math.sqrt(1+a-n-f);this._w=(s-l)/m,this._x=(i+o)/m,this._y=.25*m,this._z=(c+h)/m}else{let m=2*Math.sqrt(1+f-n-a);this._w=(o-i)/m,this._x=(s+l)/m,this._y=(c+h)/m,this._z=.25*m}return this._onChangeCallback(),this}setFromUnitVectors(t,e){let n=t.dot(e)+1;return n<Number.EPSILON?(n=0,Math.abs(t.x)>Math.abs(t.z)?(this._x=-t.y,this._y=t.x,this._z=0,this._w=n):(this._x=0,this._y=-t.z,this._z=t.y,this._w=n)):(this._x=t.y*e.z-t.z*e.y,this._y=t.z*e.x-t.x*e.z,this._z=t.x*e.y-t.y*e.x,this._w=n),this.normalize()}angleTo(t){return 2*Math.acos(Math.abs(ue(this.dot(t),-1,1)))}rotateTowards(t,e){let n=this.angleTo(t);if(n===0)return this;let i=Math.min(1,e/n);return this.slerp(t,i),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(t){return this._x*t._x+this._y*t._y+this._z*t._z+this._w*t._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 t=this.length();return t===0?(this._x=0,this._y=0,this._z=0,this._w=1):(t=1/t,this._x=this._x*t,this._y=this._y*t,this._z=this._z*t,this._w=this._w*t),this._onChangeCallback(),this}multiply(t){return this.multiplyQuaternions(this,t)}premultiply(t){return this.multiplyQuaternions(t,this)}multiplyQuaternions(t,e){let n=t._x,i=t._y,s=t._z,o=t._w,a=e._x,c=e._y,l=e._z,h=e._w;return this._x=n*h+o*a+i*l-s*c,this._y=i*h+o*c+s*a-n*l,this._z=s*h+o*l+n*c-i*a,this._w=o*h-n*a-i*c-s*l,this._onChangeCallback(),this}slerp(t,e){if(e===0)return this;if(e===1)return this.copy(t);let n=this._x,i=this._y,s=this._z,o=this._w,a=o*t._w+n*t._x+i*t._y+s*t._z;if(a<0?(this._w=-t._w,this._x=-t._x,this._y=-t._y,this._z=-t._z,a=-a):this.copy(t),a>=1)return this._w=o,this._x=n,this._y=i,this._z=s,this;let c=1-a*a;if(c<=Number.EPSILON){let m=1-e;return this._w=m*o+e*this._w,this._x=m*n+e*this._x,this._y=m*i+e*this._y,this._z=m*s+e*this._z,this.normalize(),this._onChangeCallback(),this}let l=Math.sqrt(c),h=Math.atan2(l,a),f=Math.sin((1-e)*h)/l,u=Math.sin(e*h)/l;return this._w=o*f+this._w*u,this._x=n*f+this._x*u,this._y=i*f+this._y*u,this._z=s*f+this._z*u,this._onChangeCallback(),this}slerpQuaternions(t,e,n){return this.copy(t).slerp(e,n)}random(){let t=Math.random(),e=Math.sqrt(1-t),n=Math.sqrt(t),i=2*Math.PI*Math.random(),s=2*Math.PI*Math.random();return this.set(e*Math.cos(i),n*Math.sin(s),n*Math.cos(s),e*Math.sin(i))}equals(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._w===this._w}fromArray(t,e=0){return this._x=t[e],this._y=t[e+1],this._z=t[e+2],this._w=t[e+3],this._onChangeCallback(),this}toArray(t=[],e=0){return t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._w,t}fromBufferAttribute(t,e){return this._x=t.getX(e),this._y=t.getY(e),this._z=t.getZ(e),this._w=t.getW(e),this}_onChange(t){return this._onChangeCallback=t,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}},N=class{constructor(t=0,e=0,n=0){N.prototype.isVector3=!0,this.x=t,this.y=e,this.z=n}set(t,e,n){return n===void 0&&(n=this.z),this.x=t,this.y=e,this.z=n,this}setScalar(t){return this.x=t,this.y=t,this.z=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setZ(t){return this.z=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+t)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(t){return this.x=t.x,this.y=t.y,this.z=t.z,this}add(t){return this.x+=t.x,this.y+=t.y,this.z+=t.z,this}addScalar(t){return this.x+=t,this.y+=t,this.z+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this.z-=t.z,this}subScalar(t){return this.x-=t,this.y-=t,this.z-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this}multiply(t){return this.x*=t.x,this.y*=t.y,this.z*=t.z,this}multiplyScalar(t){return this.x*=t,this.y*=t,this.z*=t,this}multiplyVectors(t,e){return this.x=t.x*e.x,this.y=t.y*e.y,this.z=t.z*e.z,this}applyEuler(t){return this.applyQuaternion(ua.setFromEuler(t))}applyAxisAngle(t,e){return this.applyQuaternion(ua.setFromAxisAngle(t,e))}applyMatrix3(t){let e=this.x,n=this.y,i=this.z,s=t.elements;return this.x=s[0]*e+s[3]*n+s[6]*i,this.y=s[1]*e+s[4]*n+s[7]*i,this.z=s[2]*e+s[5]*n+s[8]*i,this}applyNormalMatrix(t){return this.applyMatrix3(t).normalize()}applyMatrix4(t){let e=this.x,n=this.y,i=this.z,s=t.elements,o=1/(s[3]*e+s[7]*n+s[11]*i+s[15]);return this.x=(s[0]*e+s[4]*n+s[8]*i+s[12])*o,this.y=(s[1]*e+s[5]*n+s[9]*i+s[13])*o,this.z=(s[2]*e+s[6]*n+s[10]*i+s[14])*o,this}applyQuaternion(t){let e=this.x,n=this.y,i=this.z,s=t.x,o=t.y,a=t.z,c=t.w,l=c*e+o*i-a*n,h=c*n+a*e-s*i,f=c*i+s*n-o*e,u=-s*e-o*n-a*i;return this.x=l*c+u*-s+h*-a-f*-o,this.y=h*c+u*-o+f*-s-l*-a,this.z=f*c+u*-a+l*-o-h*-s,this}project(t){return this.applyMatrix4(t.matrixWorldInverse).applyMatrix4(t.projectionMatrix)}unproject(t){return this.applyMatrix4(t.projectionMatrixInverse).applyMatrix4(t.matrixWorld)}transformDirection(t){let e=this.x,n=this.y,i=this.z,s=t.elements;return this.x=s[0]*e+s[4]*n+s[8]*i,this.y=s[1]*e+s[5]*n+s[9]*i,this.z=s[2]*e+s[6]*n+s[10]*i,this.normalize()}divide(t){return this.x/=t.x,this.y/=t.y,this.z/=t.z,this}divideScalar(t){return this.multiplyScalar(1/t)}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this.z=Math.min(this.z,t.z),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this.z=Math.max(this.z,t.z),this}clamp(t,e){return this.x=Math.max(t.x,Math.min(e.x,this.x)),this.y=Math.max(t.y,Math.min(e.y,this.y)),this.z=Math.max(t.z,Math.min(e.z,this.z)),this}clampScalar(t,e){return this.x=Math.max(t,Math.min(e,this.x)),this.y=Math.max(t,Math.min(e,this.y)),this.z=Math.max(t,Math.min(e,this.z)),this}clampLength(t,e){let n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(t,Math.min(e,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=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(t){return this.x*t.x+this.y*t.y+this.z*t.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(t){return this.normalize().multiplyScalar(t)}lerp(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this.z+=(t.z-this.z)*e,this}lerpVectors(t,e,n){return this.x=t.x+(e.x-t.x)*n,this.y=t.y+(e.y-t.y)*n,this.z=t.z+(e.z-t.z)*n,this}cross(t){return this.crossVectors(this,t)}crossVectors(t,e){let n=t.x,i=t.y,s=t.z,o=e.x,a=e.y,c=e.z;return this.x=i*c-s*a,this.y=s*o-n*c,this.z=n*a-i*o,this}projectOnVector(t){let e=t.lengthSq();if(e===0)return this.set(0,0,0);let n=t.dot(this)/e;return this.copy(t).multiplyScalar(n)}projectOnPlane(t){return ws.copy(this).projectOnVector(t),this.sub(ws)}reflect(t){return this.sub(ws.copy(t).multiplyScalar(2*this.dot(t)))}angleTo(t){let e=Math.sqrt(this.lengthSq()*t.lengthSq());if(e===0)return Math.PI/2;let n=this.dot(t)/e;return Math.acos(ue(n,-1,1))}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){let e=this.x-t.x,n=this.y-t.y,i=this.z-t.z;return e*e+n*n+i*i}manhattanDistanceTo(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)+Math.abs(this.z-t.z)}setFromSpherical(t){return this.setFromSphericalCoords(t.radius,t.phi,t.theta)}setFromSphericalCoords(t,e,n){let i=Math.sin(e)*t;return this.x=i*Math.sin(n),this.y=Math.cos(e)*t,this.z=i*Math.cos(n),this}setFromCylindrical(t){return this.setFromCylindricalCoords(t.radius,t.theta,t.y)}setFromCylindricalCoords(t,e,n){return this.x=t*Math.sin(e),this.y=n,this.z=t*Math.cos(e),this}setFromMatrixPosition(t){let e=t.elements;return this.x=e[12],this.y=e[13],this.z=e[14],this}setFromMatrixScale(t){let e=this.setFromMatrixColumn(t,0).length(),n=this.setFromMatrixColumn(t,1).length(),i=this.setFromMatrixColumn(t,2).length();return this.x=e,this.y=n,this.z=i,this}setFromMatrixColumn(t,e){return this.fromArray(t.elements,e*4)}setFromMatrix3Column(t,e){return this.fromArray(t.elements,e*3)}setFromEuler(t){return this.x=t._x,this.y=t._y,this.z=t._z,this}equals(t){return t.x===this.x&&t.y===this.y&&t.z===this.z}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this.z=t[e+2],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t[e+2]=this.z,t}fromBufferAttribute(t,e){return this.x=t.getX(e),this.y=t.getY(e),this.z=t.getZ(e),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){let t=(Math.random()-.5)*2,e=Math.random()*Math.PI*2,n=Math.sqrt(1-t**2);return this.x=n*Math.cos(e),this.y=n*Math.sin(e),this.z=t,this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}},ws=new N,ua=new rn,Mn=class{constructor(t=new N(1/0,1/0,1/0),e=new N(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=t,this.max=e}set(t,e){return this.min.copy(t),this.max.copy(e),this}setFromArray(t){let e=1/0,n=1/0,i=1/0,s=-1/0,o=-1/0,a=-1/0;for(let c=0,l=t.length;c<l;c+=3){let h=t[c],f=t[c+1],u=t[c+2];h<e&&(e=h),f<n&&(n=f),u<i&&(i=u),h>s&&(s=h),f>o&&(o=f),u>a&&(a=u)}return this.min.set(e,n,i),this.max.set(s,o,a),this}setFromBufferAttribute(t){let e=1/0,n=1/0,i=1/0,s=-1/0,o=-1/0,a=-1/0;for(let c=0,l=t.count;c<l;c++){let h=t.getX(c),f=t.getY(c),u=t.getZ(c);h<e&&(e=h),f<n&&(n=f),u<i&&(i=u),h>s&&(s=h),f>o&&(o=f),u>a&&(a=u)}return this.min.set(e,n,i),this.max.set(s,o,a),this}setFromPoints(t){this.makeEmpty();for(let e=0,n=t.length;e<n;e++)this.expandByPoint(t[e]);return this}setFromCenterAndSize(t,e){let n=hn.copy(e).multiplyScalar(.5);return this.min.copy(t).sub(n),this.max.copy(t).add(n),this}setFromObject(t,e=!1){return this.makeEmpty(),this.expandByObject(t,e)}clone(){return new this.constructor().copy(this)}copy(t){return this.min.copy(t.min),this.max.copy(t.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(t){return this.isEmpty()?t.set(0,0,0):t.addVectors(this.min,this.max).multiplyScalar(.5)}getSize(t){return this.isEmpty()?t.set(0,0,0):t.subVectors(this.max,this.min)}expandByPoint(t){return this.min.min(t),this.max.max(t),this}expandByVector(t){return this.min.sub(t),this.max.add(t),this}expandByScalar(t){return this.min.addScalar(-t),this.max.addScalar(t),this}expandByObject(t,e=!1){t.updateWorldMatrix(!1,!1);let n=t.geometry;if(n!==void 0)if(e&&n.attributes!=null&&n.attributes.position!==void 0){let s=n.attributes.position;for(let o=0,a=s.count;o<a;o++)hn.fromBufferAttribute(s,o).applyMatrix4(t.matrixWorld),this.expandByPoint(hn)}else n.boundingBox===null&&n.computeBoundingBox(),Ss.copy(n.boundingBox),Ss.applyMatrix4(t.matrixWorld),this.union(Ss);let i=t.children;for(let s=0,o=i.length;s<o;s++)this.expandByObject(i[s],e);return this}containsPoint(t){return!(t.x<this.min.x||t.x>this.max.x||t.y<this.min.y||t.y>this.max.y||t.z<this.min.z||t.z>this.max.z)}containsBox(t){return this.min.x<=t.min.x&&t.max.x<=this.max.x&&this.min.y<=t.min.y&&t.max.y<=this.max.y&&this.min.z<=t.min.z&&t.max.z<=this.max.z}getParameter(t,e){return e.set((t.x-this.min.x)/(this.max.x-this.min.x),(t.y-this.min.y)/(this.max.y-this.min.y),(t.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(t){return!(t.max.x<this.min.x||t.min.x>this.max.x||t.max.y<this.min.y||t.min.y>this.max.y||t.max.z<this.min.z||t.min.z>this.max.z)}intersectsSphere(t){return this.clampPoint(t.center,hn),hn.distanceToSquared(t.center)<=t.radius*t.radius}intersectsPlane(t){let e,n;return t.normal.x>0?(e=t.normal.x*this.min.x,n=t.normal.x*this.max.x):(e=t.normal.x*this.max.x,n=t.normal.x*this.min.x),t.normal.y>0?(e+=t.normal.y*this.min.y,n+=t.normal.y*this.max.y):(e+=t.normal.y*this.max.y,n+=t.normal.y*this.min.y),t.normal.z>0?(e+=t.normal.z*this.min.z,n+=t.normal.z*this.max.z):(e+=t.normal.z*this.max.z,n+=t.normal.z*this.min.z),e<=-t.constant&&n>=-t.constant}intersectsTriangle(t){if(this.isEmpty())return!1;this.getCenter(ei),bi.subVectors(this.max,ei),An.subVectors(t.a,ei),En.subVectors(t.b,ei),Cn.subVectors(t.c,ei),Je.subVectors(En,An),$e.subVectors(Cn,En),un.subVectors(An,Cn);let e=[0,-Je.z,Je.y,0,-$e.z,$e.y,0,-un.z,un.y,Je.z,0,-Je.x,$e.z,0,-$e.x,un.z,0,-un.x,-Je.y,Je.x,0,-$e.y,$e.x,0,-un.y,un.x,0];return!Ts(e,An,En,Cn,bi)||(e=[1,0,0,0,1,0,0,0,1],!Ts(e,An,En,Cn,bi))?!1:(wi.crossVectors(Je,$e),e=[wi.x,wi.y,wi.z],Ts(e,An,En,Cn,bi))}clampPoint(t,e){return e.copy(t).clamp(this.min,this.max)}distanceToPoint(t){return hn.copy(t).clamp(this.min,this.max).sub(t).length()}getBoundingSphere(t){return this.getCenter(t.center),t.radius=this.getSize(hn).length()*.5,t}intersect(t){return this.min.max(t.min),this.max.min(t.max),this.isEmpty()&&this.makeEmpty(),this}union(t){return this.min.min(t.min),this.max.max(t.max),this}applyMatrix4(t){return this.isEmpty()?this:(Ue[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(t),Ue[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(t),Ue[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(t),Ue[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(t),Ue[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(t),Ue[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(t),Ue[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(t),Ue[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(t),this.setFromPoints(Ue),this)}translate(t){return this.min.add(t),this.max.add(t),this}equals(t){return t.min.equals(this.min)&&t.max.equals(this.max)}},Ue=[new N,new N,new N,new N,new N,new N,new N,new N],hn=new N,Ss=new Mn,An=new N,En=new N,Cn=new N,Je=new N,$e=new N,un=new N,ei=new N,bi=new N,wi=new N,dn=new N;function Ts(r,t,e,n,i){for(let s=0,o=r.length-3;s<=o;s+=3){dn.fromArray(r,s);let a=i.x*Math.abs(dn.x)+i.y*Math.abs(dn.y)+i.z*Math.abs(dn.z),c=t.dot(dn),l=e.dot(dn),h=n.dot(dn);if(Math.max(-Math.max(c,l,h),Math.min(c,l,h))>a)return!1}return!0}var Ml=new Mn,ni=new N,As=new N,_i=class{constructor(t=new N,e=-1){this.center=t,this.radius=e}set(t,e){return this.center.copy(t),this.radius=e,this}setFromPoints(t,e){let n=this.center;e!==void 0?n.copy(e):Ml.setFromPoints(t).getCenter(n);let i=0;for(let s=0,o=t.length;s<o;s++)i=Math.max(i,n.distanceToSquared(t[s]));return this.radius=Math.sqrt(i),this}copy(t){return this.center.copy(t.center),this.radius=t.radius,this}isEmpty(){return this.radius<0}makeEmpty(){return this.center.set(0,0,0),this.radius=-1,this}containsPoint(t){return t.distanceToSquared(this.center)<=this.radius*this.radius}distanceToPoint(t){return t.distanceTo(this.center)-this.radius}intersectsSphere(t){let e=this.radius+t.radius;return t.center.distanceToSquared(this.center)<=e*e}intersectsBox(t){return t.intersectsSphere(this)}intersectsPlane(t){return Math.abs(t.distanceToPoint(this.center))<=this.radius}clampPoint(t,e){let n=this.center.distanceToSquared(t);return e.copy(t),n>this.radius*this.radius&&(e.sub(this.center).normalize(),e.multiplyScalar(this.radius).add(this.center)),e}getBoundingBox(t){return this.isEmpty()?(t.makeEmpty(),t):(t.set(this.center,this.center),t.expandByScalar(this.radius),t)}applyMatrix4(t){return this.center.applyMatrix4(t),this.radius=this.radius*t.getMaxScaleOnAxis(),this}translate(t){return this.center.add(t),this}expandByPoint(t){if(this.isEmpty())return this.center.copy(t),this.radius=0,this;ni.subVectors(t,this.center);let e=ni.lengthSq();if(e>this.radius*this.radius){let n=Math.sqrt(e),i=(n-this.radius)*.5;this.center.addScaledVector(ni,i/n),this.radius+=i}return this}union(t){return t.isEmpty()?this:this.isEmpty()?(this.copy(t),this):(this.center.equals(t.center)===!0?this.radius=Math.max(this.radius,t.radius):(As.subVectors(t.center,this.center).setLength(t.radius),this.expandByPoint(ni.copy(t.center).add(As)),this.expandByPoint(ni.copy(t.center).sub(As))),this)}equals(t){return t.center.equals(this.center)&&t.radius===this.radius}clone(){return new this.constructor().copy(this)}},Be=new N,Es=new N,Si=new N,Ke=new N,Cs=new N,Ti=new N,Ps=new N,$s=class{constructor(t=new N,e=new N(0,0,-1)){this.origin=t,this.direction=e}set(t,e){return this.origin.copy(t),this.direction.copy(e),this}copy(t){return this.origin.copy(t.origin),this.direction.copy(t.direction),this}at(t,e){return e.copy(this.direction).multiplyScalar(t).add(this.origin)}lookAt(t){return this.direction.copy(t).sub(this.origin).normalize(),this}recast(t){return this.origin.copy(this.at(t,Be)),this}closestPointToPoint(t,e){e.subVectors(t,this.origin);let n=e.dot(this.direction);return n<0?e.copy(this.origin):e.copy(this.direction).multiplyScalar(n).add(this.origin)}distanceToPoint(t){return Math.sqrt(this.distanceSqToPoint(t))}distanceSqToPoint(t){let e=Be.subVectors(t,this.origin).dot(this.direction);return e<0?this.origin.distanceToSquared(t):(Be.copy(this.direction).multiplyScalar(e).add(this.origin),Be.distanceToSquared(t))}distanceSqToSegment(t,e,n,i){Es.copy(t).add(e).multiplyScalar(.5),Si.copy(e).sub(t).normalize(),Ke.copy(this.origin).sub(Es);let s=t.distanceTo(e)*.5,o=-this.direction.dot(Si),a=Ke.dot(this.direction),c=-Ke.dot(Si),l=Ke.lengthSq(),h=Math.abs(1-o*o),f,u,m,_;if(h>0)if(f=o*c-a,u=o*a-c,_=s*h,f>=0)if(u>=-_)if(u<=_){let p=1/h;f*=p,u*=p,m=f*(f+o*u+2*a)+u*(o*f+u+2*c)+l}else u=s,f=Math.max(0,-(o*u+a)),m=-f*f+u*(u+2*c)+l;else u=-s,f=Math.max(0,-(o*u+a)),m=-f*f+u*(u+2*c)+l;else u<=-_?(f=Math.max(0,-(-o*s+a)),u=f>0?-s:Math.min(Math.max(-s,-c),s),m=-f*f+u*(u+2*c)+l):u<=_?(f=0,u=Math.min(Math.max(-s,-c),s),m=u*(u+2*c)+l):(f=Math.max(0,-(o*s+a)),u=f>0?s:Math.min(Math.max(-s,-c),s),m=-f*f+u*(u+2*c)+l);else u=o>0?-s:s,f=Math.max(0,-(o*u+a)),m=-f*f+u*(u+2*c)+l;return n&&n.copy(this.direction).multiplyScalar(f).add(this.origin),i&&i.copy(Si).multiplyScalar(u).add(Es),m}intersectSphere(t,e){Be.subVectors(t.center,this.origin);let n=Be.dot(this.direction),i=Be.dot(Be)-n*n,s=t.radius*t.radius;if(i>s)return null;let o=Math.sqrt(s-i),a=n-o,c=n+o;return a<0&&c<0?null:a<0?this.at(c,e):this.at(a,e)}intersectsSphere(t){return this.distanceSqToPoint(t.center)<=t.radius*t.radius}distanceToPlane(t){let e=t.normal.dot(this.direction);if(e===0)return t.distanceToPoint(this.origin)===0?0:null;let n=-(this.origin.dot(t.normal)+t.constant)/e;return n>=0?n:null}intersectPlane(t,e){let n=this.distanceToPlane(t);return n===null?null:this.at(n,e)}intersectsPlane(t){let e=t.distanceToPoint(this.origin);return e===0||t.normal.dot(this.direction)*e<0}intersectBox(t,e){let n,i,s,o,a,c,l=1/this.direction.x,h=1/this.direction.y,f=1/this.direction.z,u=this.origin;return l>=0?(n=(t.min.x-u.x)*l,i=(t.max.x-u.x)*l):(n=(t.max.x-u.x)*l,i=(t.min.x-u.x)*l),h>=0?(s=(t.min.y-u.y)*h,o=(t.max.y-u.y)*h):(s=(t.max.y-u.y)*h,o=(t.min.y-u.y)*h),n>o||s>i||((s>n||isNaN(n))&&(n=s),(o<i||isNaN(i))&&(i=o),f>=0?(a=(t.min.z-u.z)*f,c=(t.max.z-u.z)*f):(a=(t.max.z-u.z)*f,c=(t.min.z-u.z)*f),n>c||a>i)||((a>n||n!==n)&&(n=a),(c<i||i!==i)&&(i=c),i<0)?null:this.at(n>=0?n:i,e)}intersectsBox(t){return this.intersectBox(t,Be)!==null}intersectTriangle(t,e,n,i,s){Cs.subVectors(e,t),Ti.subVectors(n,t),Ps.crossVectors(Cs,Ti);let o=this.direction.dot(Ps),a;if(o>0){if(i)return null;a=1}else if(o<0)a=-1,o=-o;else return null;Ke.subVectors(this.origin,t);let c=a*this.direction.dot(Ti.crossVectors(Ke,Ti));if(c<0)return null;let l=a*this.direction.dot(Cs.cross(Ke));if(l<0||c+l>o)return null;let h=-a*Ke.dot(Ps);return h<0?null:this.at(h/o,s)}applyMatrix4(t){return this.origin.applyMatrix4(t),this.direction.transformDirection(t),this}equals(t){return t.origin.equals(this.origin)&&t.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}},qt=class{constructor(){qt.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}set(t,e,n,i,s,o,a,c,l,h,f,u,m,_,p,d){let v=this.elements;return v[0]=t,v[4]=e,v[8]=n,v[12]=i,v[1]=s,v[5]=o,v[9]=a,v[13]=c,v[2]=l,v[6]=h,v[10]=f,v[14]=u,v[3]=m,v[7]=_,v[11]=p,v[15]=d,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 qt().fromArray(this.elements)}copy(t){let e=this.elements,n=t.elements;return e[0]=n[0],e[1]=n[1],e[2]=n[2],e[3]=n[3],e[4]=n[4],e[5]=n[5],e[6]=n[6],e[7]=n[7],e[8]=n[8],e[9]=n[9],e[10]=n[10],e[11]=n[11],e[12]=n[12],e[13]=n[13],e[14]=n[14],e[15]=n[15],this}copyPosition(t){let e=this.elements,n=t.elements;return e[12]=n[12],e[13]=n[13],e[14]=n[14],this}setFromMatrix3(t){let e=t.elements;return this.set(e[0],e[3],e[6],0,e[1],e[4],e[7],0,e[2],e[5],e[8],0,0,0,0,1),this}extractBasis(t,e,n){return t.setFromMatrixColumn(this,0),e.setFromMatrixColumn(this,1),n.setFromMatrixColumn(this,2),this}makeBasis(t,e,n){return this.set(t.x,e.x,n.x,0,t.y,e.y,n.y,0,t.z,e.z,n.z,0,0,0,0,1),this}extractRotation(t){let e=this.elements,n=t.elements,i=1/Pn.setFromMatrixColumn(t,0).length(),s=1/Pn.setFromMatrixColumn(t,1).length(),o=1/Pn.setFromMatrixColumn(t,2).length();return e[0]=n[0]*i,e[1]=n[1]*i,e[2]=n[2]*i,e[3]=0,e[4]=n[4]*s,e[5]=n[5]*s,e[6]=n[6]*s,e[7]=0,e[8]=n[8]*o,e[9]=n[9]*o,e[10]=n[10]*o,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}makeRotationFromEuler(t){let e=this.elements,n=t.x,i=t.y,s=t.z,o=Math.cos(n),a=Math.sin(n),c=Math.cos(i),l=Math.sin(i),h=Math.cos(s),f=Math.sin(s);if(t.order==="XYZ"){let u=o*h,m=o*f,_=a*h,p=a*f;e[0]=c*h,e[4]=-c*f,e[8]=l,e[1]=m+_*l,e[5]=u-p*l,e[9]=-a*c,e[2]=p-u*l,e[6]=_+m*l,e[10]=o*c}else if(t.order==="YXZ"){let u=c*h,m=c*f,_=l*h,p=l*f;e[0]=u+p*a,e[4]=_*a-m,e[8]=o*l,e[1]=o*f,e[5]=o*h,e[9]=-a,e[2]=m*a-_,e[6]=p+u*a,e[10]=o*c}else if(t.order==="ZXY"){let u=c*h,m=c*f,_=l*h,p=l*f;e[0]=u-p*a,e[4]=-o*f,e[8]=_+m*a,e[1]=m+_*a,e[5]=o*h,e[9]=p-u*a,e[2]=-o*l,e[6]=a,e[10]=o*c}else if(t.order==="ZYX"){let u=o*h,m=o*f,_=a*h,p=a*f;e[0]=c*h,e[4]=_*l-m,e[8]=u*l+p,e[1]=c*f,e[5]=p*l+u,e[9]=m*l-_,e[2]=-l,e[6]=a*c,e[10]=o*c}else if(t.order==="YZX"){let u=o*c,m=o*l,_=a*c,p=a*l;e[0]=c*h,e[4]=p-u*f,e[8]=_*f+m,e[1]=f,e[5]=o*h,e[9]=-a*h,e[2]=-l*h,e[6]=m*f+_,e[10]=u-p*f}else if(t.order==="XZY"){let u=o*c,m=o*l,_=a*c,p=a*l;e[0]=c*h,e[4]=-f,e[8]=l*h,e[1]=u*f+p,e[5]=o*h,e[9]=m*f-_,e[2]=_*f-m,e[6]=a*h,e[10]=p*f+u}return e[3]=0,e[7]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}makeRotationFromQuaternion(t){return this.compose(bl,t,wl)}lookAt(t,e,n){let i=this.elements;return me.subVectors(t,e),me.lengthSq()===0&&(me.z=1),me.normalize(),je.crossVectors(n,me),je.lengthSq()===0&&(Math.abs(n.z)===1?me.x+=1e-4:me.z+=1e-4,me.normalize(),je.crossVectors(n,me)),je.normalize(),Ai.crossVectors(me,je),i[0]=je.x,i[4]=Ai.x,i[8]=me.x,i[1]=je.y,i[5]=Ai.y,i[9]=me.y,i[2]=je.z,i[6]=Ai.z,i[10]=me.z,this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,e){let n=t.elements,i=e.elements,s=this.elements,o=n[0],a=n[4],c=n[8],l=n[12],h=n[1],f=n[5],u=n[9],m=n[13],_=n[2],p=n[6],d=n[10],v=n[14],T=n[3],b=n[7],M=n[11],A=n[15],C=i[0],I=i[4],x=i[8],S=i[12],L=i[1],X=i[5],q=i[9],z=i[13],R=i[2],G=i[6],Y=i[10],j=i[14],W=i[3],Q=i[7],Z=i[11],ft=i[15];return s[0]=o*C+a*L+c*R+l*W,s[4]=o*I+a*X+c*G+l*Q,s[8]=o*x+a*q+c*Y+l*Z,s[12]=o*S+a*z+c*j+l*ft,s[1]=h*C+f*L+u*R+m*W,s[5]=h*I+f*X+u*G+m*Q,s[9]=h*x+f*q+u*Y+m*Z,s[13]=h*S+f*z+u*j+m*ft,s[2]=_*C+p*L+d*R+v*W,s[6]=_*I+p*X+d*G+v*Q,s[10]=_*x+p*q+d*Y+v*Z,s[14]=_*S+p*z+d*j+v*ft,s[3]=T*C+b*L+M*R+A*W,s[7]=T*I+b*X+M*G+A*Q,s[11]=T*x+b*q+M*Y+A*Z,s[15]=T*S+b*z+M*j+A*ft,this}multiplyScalar(t){let e=this.elements;return e[0]*=t,e[4]*=t,e[8]*=t,e[12]*=t,e[1]*=t,e[5]*=t,e[9]*=t,e[13]*=t,e[2]*=t,e[6]*=t,e[10]*=t,e[14]*=t,e[3]*=t,e[7]*=t,e[11]*=t,e[15]*=t,this}determinant(){let t=this.elements,e=t[0],n=t[4],i=t[8],s=t[12],o=t[1],a=t[5],c=t[9],l=t[13],h=t[2],f=t[6],u=t[10],m=t[14],_=t[3],p=t[7],d=t[11],v=t[15];return _*(+s*c*f-i*l*f-s*a*u+n*l*u+i*a*m-n*c*m)+p*(+e*c*m-e*l*u+s*o*u-i*o*m+i*l*h-s*c*h)+d*(+e*l*f-e*a*m-s*o*f+n*o*m+s*a*h-n*l*h)+v*(-i*a*h-e*c*f+e*a*u+i*o*f-n*o*u+n*c*h)}transpose(){let t=this.elements,e;return e=t[1],t[1]=t[4],t[4]=e,e=t[2],t[2]=t[8],t[8]=e,e=t[6],t[6]=t[9],t[9]=e,e=t[3],t[3]=t[12],t[12]=e,e=t[7],t[7]=t[13],t[13]=e,e=t[11],t[11]=t[14],t[14]=e,this}setPosition(t,e,n){let i=this.elements;return t.isVector3?(i[12]=t.x,i[13]=t.y,i[14]=t.z):(i[12]=t,i[13]=e,i[14]=n),this}invert(){let t=this.elements,e=t[0],n=t[1],i=t[2],s=t[3],o=t[4],a=t[5],c=t[6],l=t[7],h=t[8],f=t[9],u=t[10],m=t[11],_=t[12],p=t[13],d=t[14],v=t[15],T=f*d*l-p*u*l+p*c*m-a*d*m-f*c*v+a*u*v,b=_*u*l-h*d*l-_*c*m+o*d*m+h*c*v-o*u*v,M=h*p*l-_*f*l+_*a*m-o*p*m-h*a*v+o*f*v,A=_*f*c-h*p*c-_*a*u+o*p*u+h*a*d-o*f*d,C=e*T+n*b+i*M+s*A;if(C===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);let I=1/C;return t[0]=T*I,t[1]=(p*u*s-f*d*s-p*i*m+n*d*m+f*i*v-n*u*v)*I,t[2]=(a*d*s-p*c*s+p*i*l-n*d*l-a*i*v+n*c*v)*I,t[3]=(f*c*s-a*u*s-f*i*l+n*u*l+a*i*m-n*c*m)*I,t[4]=b*I,t[5]=(h*d*s-_*u*s+_*i*m-e*d*m-h*i*v+e*u*v)*I,t[6]=(_*c*s-o*d*s-_*i*l+e*d*l+o*i*v-e*c*v)*I,t[7]=(o*u*s-h*c*s+h*i*l-e*u*l-o*i*m+e*c*m)*I,t[8]=M*I,t[9]=(_*f*s-h*p*s-_*n*m+e*p*m+h*n*v-e*f*v)*I,t[10]=(o*p*s-_*a*s+_*n*l-e*p*l-o*n*v+e*a*v)*I,t[11]=(h*a*s-o*f*s-h*n*l+e*f*l+o*n*m-e*a*m)*I,t[12]=A*I,t[13]=(h*p*i-_*f*i+_*n*u-e*p*u-h*n*d+e*f*d)*I,t[14]=(_*a*i-o*p*i-_*n*c+e*p*c+o*n*d-e*a*d)*I,t[15]=(o*f*i-h*a*i+h*n*c-e*f*c-o*n*u+e*a*u)*I,this}scale(t){let e=this.elements,n=t.x,i=t.y,s=t.z;return e[0]*=n,e[4]*=i,e[8]*=s,e[1]*=n,e[5]*=i,e[9]*=s,e[2]*=n,e[6]*=i,e[10]*=s,e[3]*=n,e[7]*=i,e[11]*=s,this}getMaxScaleOnAxis(){let t=this.elements,e=t[0]*t[0]+t[1]*t[1]+t[2]*t[2],n=t[4]*t[4]+t[5]*t[5]+t[6]*t[6],i=t[8]*t[8]+t[9]*t[9]+t[10]*t[10];return Math.sqrt(Math.max(e,n,i))}makeTranslation(t,e,n){return this.set(1,0,0,t,0,1,0,e,0,0,1,n,0,0,0,1),this}makeRotationX(t){let e=Math.cos(t),n=Math.sin(t);return this.set(1,0,0,0,0,e,-n,0,0,n,e,0,0,0,0,1),this}makeRotationY(t){let e=Math.cos(t),n=Math.sin(t);return this.set(e,0,n,0,0,1,0,0,-n,0,e,0,0,0,0,1),this}makeRotationZ(t){let e=Math.cos(t),n=Math.sin(t);return this.set(e,-n,0,0,n,e,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(t,e){let n=Math.cos(e),i=Math.sin(e),s=1-n,o=t.x,a=t.y,c=t.z,l=s*o,h=s*a;return this.set(l*o+n,l*a-i*c,l*c+i*a,0,l*a+i*c,h*a+n,h*c-i*o,0,l*c-i*a,h*c+i*o,s*c*c+n,0,0,0,0,1),this}makeScale(t,e,n){return this.set(t,0,0,0,0,e,0,0,0,0,n,0,0,0,0,1),this}makeShear(t,e,n,i,s,o){return this.set(1,n,s,0,t,1,o,0,e,i,1,0,0,0,0,1),this}compose(t,e,n){let i=this.elements,s=e._x,o=e._y,a=e._z,c=e._w,l=s+s,h=o+o,f=a+a,u=s*l,m=s*h,_=s*f,p=o*h,d=o*f,v=a*f,T=c*l,b=c*h,M=c*f,A=n.x,C=n.y,I=n.z;return i[0]=(1-(p+v))*A,i[1]=(m+M)*A,i[2]=(_-b)*A,i[3]=0,i[4]=(m-M)*C,i[5]=(1-(u+v))*C,i[6]=(d+T)*C,i[7]=0,i[8]=(_+b)*I,i[9]=(d-T)*I,i[10]=(1-(u+p))*I,i[11]=0,i[12]=t.x,i[13]=t.y,i[14]=t.z,i[15]=1,this}decompose(t,e,n){let i=this.elements,s=Pn.set(i[0],i[1],i[2]).length(),o=Pn.set(i[4],i[5],i[6]).length(),a=Pn.set(i[8],i[9],i[10]).length();this.determinant()<0&&(s=-s),t.x=i[12],t.y=i[13],t.z=i[14],Ee.copy(this);let l=1/s,h=1/o,f=1/a;return Ee.elements[0]*=l,Ee.elements[1]*=l,Ee.elements[2]*=l,Ee.elements[4]*=h,Ee.elements[5]*=h,Ee.elements[6]*=h,Ee.elements[8]*=f,Ee.elements[9]*=f,Ee.elements[10]*=f,e.setFromRotationMatrix(Ee),n.x=s,n.y=o,n.z=a,this}makePerspective(t,e,n,i,s,o){let a=this.elements,c=2*s/(e-t),l=2*s/(n-i),h=(e+t)/(e-t),f=(n+i)/(n-i),u=-(o+s)/(o-s),m=-2*o*s/(o-s);return a[0]=c,a[4]=0,a[8]=h,a[12]=0,a[1]=0,a[5]=l,a[9]=f,a[13]=0,a[2]=0,a[6]=0,a[10]=u,a[14]=m,a[3]=0,a[7]=0,a[11]=-1,a[15]=0,this}makeOrthographic(t,e,n,i,s,o){let a=this.elements,c=1/(e-t),l=1/(n-i),h=1/(o-s),f=(e+t)*c,u=(n+i)*l,m=(o+s)*h;return a[0]=2*c,a[4]=0,a[8]=0,a[12]=-f,a[1]=0,a[5]=2*l,a[9]=0,a[13]=-u,a[2]=0,a[6]=0,a[10]=-2*h,a[14]=-m,a[3]=0,a[7]=0,a[11]=0,a[15]=1,this}equals(t){let e=this.elements,n=t.elements;for(let i=0;i<16;i++)if(e[i]!==n[i])return!1;return!0}fromArray(t,e=0){for(let n=0;n<16;n++)this.elements[n]=t[n+e];return this}toArray(t=[],e=0){let n=this.elements;return t[e]=n[0],t[e+1]=n[1],t[e+2]=n[2],t[e+3]=n[3],t[e+4]=n[4],t[e+5]=n[5],t[e+6]=n[6],t[e+7]=n[7],t[e+8]=n[8],t[e+9]=n[9],t[e+10]=n[10],t[e+11]=n[11],t[e+12]=n[12],t[e+13]=n[13],t[e+14]=n[14],t[e+15]=n[15],t}},Pn=new N,Ee=new qt,bl=new N(0,0,0),wl=new N(1,1,1),je=new N,Ai=new N,me=new N,da=new qt,fa=new rn,Zn=class{constructor(t=0,e=0,n=0,i=Zn.DEFAULT_ORDER){this.isEuler=!0,this._x=t,this._y=e,this._z=n,this._order=i}get x(){return this._x}set x(t){this._x=t,this._onChangeCallback()}get y(){return this._y}set y(t){this._y=t,this._onChangeCallback()}get z(){return this._z}set z(t){this._z=t,this._onChangeCallback()}get order(){return this._order}set order(t){this._order=t,this._onChangeCallback()}set(t,e,n,i=this._order){return this._x=t,this._y=e,this._z=n,this._order=i,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(t){return this._x=t._x,this._y=t._y,this._z=t._z,this._order=t._order,this._onChangeCallback(),this}setFromRotationMatrix(t,e=this._order,n=!0){let i=t.elements,s=i[0],o=i[4],a=i[8],c=i[1],l=i[5],h=i[9],f=i[2],u=i[6],m=i[10];switch(e){case"XYZ":this._y=Math.asin(ue(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(-h,m),this._z=Math.atan2(-o,s)):(this._x=Math.atan2(u,l),this._z=0);break;case"YXZ":this._x=Math.asin(-ue(h,-1,1)),Math.abs(h)<.9999999?(this._y=Math.atan2(a,m),this._z=Math.atan2(c,l)):(this._y=Math.atan2(-f,s),this._z=0);break;case"ZXY":this._x=Math.asin(ue(u,-1,1)),Math.abs(u)<.9999999?(this._y=Math.atan2(-f,m),this._z=Math.atan2(-o,l)):(this._y=0,this._z=Math.atan2(c,s));break;case"ZYX":this._y=Math.asin(-ue(f,-1,1)),Math.abs(f)<.9999999?(this._x=Math.atan2(u,m),this._z=Math.atan2(c,s)):(this._x=0,this._z=Math.atan2(-o,l));break;case"YZX":this._z=Math.asin(ue(c,-1,1)),Math.abs(c)<.9999999?(this._x=Math.atan2(-h,l),this._y=Math.atan2(-f,s)):(this._x=0,this._y=Math.atan2(a,m));break;case"XZY":this._z=Math.asin(-ue(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(u,l),this._y=Math.atan2(a,s)):(this._x=Math.atan2(-h,m),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+e)}return this._order=e,n===!0&&this._onChangeCallback(),this}setFromQuaternion(t,e,n){return da.makeRotationFromQuaternion(t),this.setFromRotationMatrix(da,e,n)}setFromVector3(t,e=this._order){return this.set(t.x,t.y,t.z,e)}reorder(t){return fa.setFromEuler(this),this.setFromQuaternion(fa,t)}equals(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._order===this._order}fromArray(t){return this._x=t[0],this._y=t[1],this._z=t[2],t[3]!==void 0&&(this._order=t[3]),this._onChangeCallback(),this}toArray(t=[],e=0){return t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._order,t}_onChange(t){return this._onChangeCallback=t,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}};Zn.DEFAULT_ORDER="XYZ";var Zi=class{constructor(){this.mask=1}set(t){this.mask=(1<<t|0)>>>0}enable(t){this.mask|=1<<t|0}enableAll(){this.mask=-1}toggle(t){this.mask^=1<<t|0}disable(t){this.mask&=~(1<<t|0)}disableAll(){this.mask=0}test(t){return(this.mask&t.mask)!==0}isEnabled(t){return(this.mask&(1<<t|0))!==0}},Sl=0,pa=new N,Rn=new rn,ke=new qt,Ei=new N,ii=new N,Tl=new N,Al=new rn,ma=new N(1,0,0),ga=new N(0,1,0),_a=new N(0,0,1),El={type:"added"},xa={type:"removed"},de=class extends sn{constructor(){super(),this.isObject3D=!0,Object.defineProperty(this,"id",{value:Sl++}),this.uuid=jn(),this.name="",this.type="Object3D",this.parent=null,this.children=[],this.up=de.DEFAULT_UP.clone();let t=new N,e=new Zn,n=new rn,i=new N(1,1,1);function s(){n.setFromEuler(e,!1)}function o(){e.setFromQuaternion(n,void 0,!1)}e._onChange(s),n._onChange(o),Object.defineProperties(this,{position:{configurable:!0,enumerable:!0,value:t},rotation:{configurable:!0,enumerable:!0,value:e},quaternion:{configurable:!0,enumerable:!0,value:n},scale:{configurable:!0,enumerable:!0,value:i},modelViewMatrix:{value:new qt},normalMatrix:{value:new oe}}),this.matrix=new qt,this.matrixWorld=new qt,this.matrixAutoUpdate=de.DEFAULT_MATRIX_AUTO_UPDATE,this.matrixWorldNeedsUpdate=!1,this.matrixWorldAutoUpdate=de.DEFAULT_MATRIX_WORLD_AUTO_UPDATE,this.layers=new Zi,this.visible=!0,this.castShadow=!1,this.receiveShadow=!1,this.frustumCulled=!0,this.renderOrder=0,this.animations=[],this.userData={}}onBeforeRender(){}onAfterRender(){}applyMatrix4(t){this.matrixAutoUpdate&&this.updateMatrix(),this.matrix.premultiply(t),this.matrix.decompose(this.position,this.quaternion,this.scale)}applyQuaternion(t){return this.quaternion.premultiply(t),this}setRotationFromAxisAngle(t,e){this.quaternion.setFromAxisAngle(t,e)}setRotationFromEuler(t){this.quaternion.setFromEuler(t,!0)}setRotationFromMatrix(t){this.quaternion.setFromRotationMatrix(t)}setRotationFromQuaternion(t){this.quaternion.copy(t)}rotateOnAxis(t,e){return Rn.setFromAxisAngle(t,e),this.quaternion.multiply(Rn),this}rotateOnWorldAxis(t,e){return Rn.setFromAxisAngle(t,e),this.quaternion.premultiply(Rn),this}rotateX(t){return this.rotateOnAxis(ma,t)}rotateY(t){return this.rotateOnAxis(ga,t)}rotateZ(t){return this.rotateOnAxis(_a,t)}translateOnAxis(t,e){return pa.copy(t).applyQuaternion(this.quaternion),this.position.add(pa.multiplyScalar(e)),this}translateX(t){return this.translateOnAxis(ma,t)}translateY(t){return this.translateOnAxis(ga,t)}translateZ(t){return this.translateOnAxis(_a,t)}localToWorld(t){return this.updateWorldMatrix(!0,!1),t.applyMatrix4(this.matrixWorld)}worldToLocal(t){return this.updateWorldMatrix(!0,!1),t.applyMatrix4(ke.copy(this.matrixWorld).invert())}lookAt(t,e,n){t.isVector3?Ei.copy(t):Ei.set(t,e,n);let i=this.parent;this.updateWorldMatrix(!0,!1),ii.setFromMatrixPosition(this.matrixWorld),this.isCamera||this.isLight?ke.lookAt(ii,Ei,this.up):ke.lookAt(Ei,ii,this.up),this.quaternion.setFromRotationMatrix(ke),i&&(ke.extractRotation(i.matrixWorld),Rn.setFromRotationMatrix(ke),this.quaternion.premultiply(Rn.invert()))}add(t){if(arguments.length>1){for(let e=0;e<arguments.length;e++)this.add(arguments[e]);return this}return t===this?(console.error("THREE.Object3D.add: object can't be added as a child of itself.",t),this):(t&&t.isObject3D?(t.parent!==null&&t.parent.remove(t),t.parent=this,this.children.push(t),t.dispatchEvent(El)):console.error("THREE.Object3D.add: object not an instance of THREE.Object3D.",t),this)}remove(t){if(arguments.length>1){for(let n=0;n<arguments.length;n++)this.remove(arguments[n]);return this}let e=this.children.indexOf(t);return e!==-1&&(t.parent=null,this.children.splice(e,1),t.dispatchEvent(xa)),this}removeFromParent(){let t=this.parent;return t!==null&&t.remove(this),this}clear(){for(let t=0;t<this.children.length;t++){let e=this.children[t];e.parent=null,e.dispatchEvent(xa)}return this.children.length=0,this}attach(t){return this.updateWorldMatrix(!0,!1),ke.copy(this.matrixWorld).invert(),t.parent!==null&&(t.parent.updateWorldMatrix(!0,!1),ke.multiply(t.parent.matrixWorld)),t.applyMatrix4(ke),this.add(t),t.updateWorldMatrix(!1,!0),this}getObjectById(t){return this.getObjectByProperty("id",t)}getObjectByName(t){return this.getObjectByProperty("name",t)}getObjectByProperty(t,e){if(this[t]===e)return this;for(let n=0,i=this.children.length;n<i;n++){let o=this.children[n].getObjectByProperty(t,e);if(o!==void 0)return o}}getObjectsByProperty(t,e){let n=[];this[t]===e&&n.push(this);for(let i=0,s=this.children.length;i<s;i++){let o=this.children[i].getObjectsByProperty(t,e);o.length>0&&(n=n.concat(o))}return n}getWorldPosition(t){return this.updateWorldMatrix(!0,!1),t.setFromMatrixPosition(this.matrixWorld)}getWorldQuaternion(t){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(ii,t,Tl),t}getWorldScale(t){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(ii,Al,t),t}getWorldDirection(t){this.updateWorldMatrix(!0,!1);let e=this.matrixWorld.elements;return t.set(e[8],e[9],e[10]).normalize()}raycast(){}traverse(t){t(this);let e=this.children;for(let n=0,i=e.length;n<i;n++)e[n].traverse(t)}traverseVisible(t){if(this.visible===!1)return;t(this);let e=this.children;for(let n=0,i=e.length;n<i;n++)e[n].traverseVisible(t)}traverseAncestors(t){let e=this.parent;e!==null&&(t(e),e.traverseAncestors(t))}updateMatrix(){this.matrix.compose(this.position,this.quaternion,this.scale),this.matrixWorldNeedsUpdate=!0}updateMatrixWorld(t){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||t)&&(this.parent===null?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix),this.matrixWorldNeedsUpdate=!1,t=!0);let e=this.children;for(let n=0,i=e.length;n<i;n++){let s=e[n];(s.matrixWorldAutoUpdate===!0||t===!0)&&s.updateMatrixWorld(t)}}updateWorldMatrix(t,e){let n=this.parent;if(t===!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),e===!0){let i=this.children;for(let s=0,o=i.length;s<o;s++){let a=i[s];a.matrixWorldAutoUpdate===!0&&a.updateWorldMatrix(!1,!0)}}}toJSON(t){let e=t===void 0||typeof t=="string",n={};e&&(t={geometries:{},materials:{},textures:{},images:{},shapes:{},skeletons:{},animations:{},nodes:{}},n.metadata={version:4.5,type:"Object",generator:"Object3D.toJSON"});let i={};i.uuid=this.uuid,i.type=this.type,this.name!==""&&(i.name=this.name),this.castShadow===!0&&(i.castShadow=!0),this.receiveShadow===!0&&(i.receiveShadow=!0),this.visible===!1&&(i.visible=!1),this.frustumCulled===!1&&(i.frustumCulled=!1),this.renderOrder!==0&&(i.renderOrder=this.renderOrder),Object.keys(this.userData).length>0&&(i.userData=this.userData),i.layers=this.layers.mask,i.matrix=this.matrix.toArray(),this.matrixAutoUpdate===!1&&(i.matrixAutoUpdate=!1),this.isInstancedMesh&&(i.type="InstancedMesh",i.count=this.count,i.instanceMatrix=this.instanceMatrix.toJSON(),this.instanceColor!==null&&(i.instanceColor=this.instanceColor.toJSON()));function s(a,c){return a[c.uuid]===void 0&&(a[c.uuid]=c.toJSON(t)),c.uuid}if(this.isScene)this.background&&(this.background.isColor?i.background=this.background.toJSON():this.background.isTexture&&(i.background=this.background.toJSON(t).uuid)),this.environment&&this.environment.isTexture&&this.environment.isRenderTargetTexture!==!0&&(i.environment=this.environment.toJSON(t).uuid);else if(this.isMesh||this.isLine||this.isPoints){i.geometry=s(t.geometries,this.geometry);let a=this.geometry.parameters;if(a!==void 0&&a.shapes!==void 0){let c=a.shapes;if(Array.isArray(c))for(let l=0,h=c.length;l<h;l++){let f=c[l];s(t.shapes,f)}else s(t.shapes,c)}}if(this.isSkinnedMesh&&(i.bindMode=this.bindMode,i.bindMatrix=this.bindMatrix.toArray(),this.skeleton!==void 0&&(s(t.skeletons,this.skeleton),i.skeleton=this.skeleton.uuid)),this.material!==void 0)if(Array.isArray(this.material)){let a=[];for(let c=0,l=this.material.length;c<l;c++)a.push(s(t.materials,this.material[c]));i.material=a}else i.material=s(t.materials,this.material);if(this.children.length>0){i.children=[];for(let a=0;a<this.children.length;a++)i.children.push(this.children[a].toJSON(t).object)}if(this.animations.length>0){i.animations=[];for(let a=0;a<this.animations.length;a++){let c=this.animations[a];i.animations.push(s(t.animations,c))}}if(e){let a=o(t.geometries),c=o(t.materials),l=o(t.textures),h=o(t.images),f=o(t.shapes),u=o(t.skeletons),m=o(t.animations),_=o(t.nodes);a.length>0&&(n.geometries=a),c.length>0&&(n.materials=c),l.length>0&&(n.textures=l),h.length>0&&(n.images=h),f.length>0&&(n.shapes=f),u.length>0&&(n.skeletons=u),m.length>0&&(n.animations=m),_.length>0&&(n.nodes=_)}return n.object=i,n;function o(a){let c=[];for(let l in a){let h=a[l];delete h.metadata,c.push(h)}return c}}clone(t){return new this.constructor().copy(this,t)}copy(t,e=!0){if(this.name=t.name,this.up.copy(t.up),this.position.copy(t.position),this.rotation.order=t.rotation.order,this.quaternion.copy(t.quaternion),this.scale.copy(t.scale),this.matrix.copy(t.matrix),this.matrixWorld.copy(t.matrixWorld),this.matrixAutoUpdate=t.matrixAutoUpdate,this.matrixWorldNeedsUpdate=t.matrixWorldNeedsUpdate,this.matrixWorldAutoUpdate=t.matrixWorldAutoUpdate,this.layers.mask=t.layers.mask,this.visible=t.visible,this.castShadow=t.castShadow,this.receiveShadow=t.receiveShadow,this.frustumCulled=t.frustumCulled,this.renderOrder=t.renderOrder,this.userData=JSON.parse(JSON.stringify(t.userData)),e===!0)for(let n=0;n<t.children.length;n++){let i=t.children[n];this.add(i.clone())}return this}};de.DEFAULT_UP=new N(0,1,0);de.DEFAULT_MATRIX_AUTO_UPDATE=!0;de.DEFAULT_MATRIX_WORLD_AUTO_UPDATE=!0;var Ce=new N,Ve=new N,Rs=new N,Ge=new N,Ln=new N,In=new N,ya=new N,Ls=new N,Is=new N,Ds=new N,xe=class{constructor(t=new N,e=new N,n=new N){this.a=t,this.b=e,this.c=n}static getNormal(t,e,n,i){i.subVectors(n,e),Ce.subVectors(t,e),i.cross(Ce);let s=i.lengthSq();return s>0?i.multiplyScalar(1/Math.sqrt(s)):i.set(0,0,0)}static getBarycoord(t,e,n,i,s){Ce.subVectors(i,e),Ve.subVectors(n,e),Rs.subVectors(t,e);let o=Ce.dot(Ce),a=Ce.dot(Ve),c=Ce.dot(Rs),l=Ve.dot(Ve),h=Ve.dot(Rs),f=o*l-a*a;if(f===0)return s.set(-2,-1,-1);let u=1/f,m=(l*c-a*h)*u,_=(o*h-a*c)*u;return s.set(1-m-_,_,m)}static containsPoint(t,e,n,i){return this.getBarycoord(t,e,n,i,Ge),Ge.x>=0&&Ge.y>=0&&Ge.x+Ge.y<=1}static getUV(t,e,n,i,s,o,a,c){return this.getBarycoord(t,e,n,i,Ge),c.set(0,0),c.addScaledVector(s,Ge.x),c.addScaledVector(o,Ge.y),c.addScaledVector(a,Ge.z),c}static isFrontFacing(t,e,n,i){return Ce.subVectors(n,e),Ve.subVectors(t,e),Ce.cross(Ve).dot(i)<0}set(t,e,n){return this.a.copy(t),this.b.copy(e),this.c.copy(n),this}setFromPointsAndIndices(t,e,n,i){return this.a.copy(t[e]),this.b.copy(t[n]),this.c.copy(t[i]),this}setFromAttributeAndIndices(t,e,n,i){return this.a.fromBufferAttribute(t,e),this.b.fromBufferAttribute(t,n),this.c.fromBufferAttribute(t,i),this}clone(){return new this.constructor().copy(this)}copy(t){return this.a.copy(t.a),this.b.copy(t.b),this.c.copy(t.c),this}getArea(){return Ce.subVectors(this.c,this.b),Ve.subVectors(this.a,this.b),Ce.cross(Ve).length()*.5}getMidpoint(t){return t.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(t){return xe.getNormal(this.a,this.b,this.c,t)}getPlane(t){return t.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(t,e){return xe.getBarycoord(t,this.a,this.b,this.c,e)}getUV(t,e,n,i,s){return xe.getUV(t,this.a,this.b,this.c,e,n,i,s)}containsPoint(t){return xe.containsPoint(t,this.a,this.b,this.c)}isFrontFacing(t){return xe.isFrontFacing(this.a,this.b,this.c,t)}intersectsBox(t){return t.intersectsTriangle(this)}closestPointToPoint(t,e){let n=this.a,i=this.b,s=this.c,o,a;Ln.subVectors(i,n),In.subVectors(s,n),Ls.subVectors(t,n);let c=Ln.dot(Ls),l=In.dot(Ls);if(c<=0&&l<=0)return e.copy(n);Is.subVectors(t,i);let h=Ln.dot(Is),f=In.dot(Is);if(h>=0&&f<=h)return e.copy(i);let u=c*f-h*l;if(u<=0&&c>=0&&h<=0)return o=c/(c-h),e.copy(n).addScaledVector(Ln,o);Ds.subVectors(t,s);let m=Ln.dot(Ds),_=In.dot(Ds);if(_>=0&&m<=_)return e.copy(s);let p=m*l-c*_;if(p<=0&&l>=0&&_<=0)return a=l/(l-_),e.copy(n).addScaledVector(In,a);let d=h*_-m*f;if(d<=0&&f-h>=0&&m-_>=0)return ya.subVectors(s,i),a=(f-h)/(f-h+(m-_)),e.copy(i).addScaledVector(ya,a);let v=1/(d+p+u);return o=p*v,a=u*v,e.copy(n).addScaledVector(Ln,o).addScaledVector(In,a)}equals(t){return t.a.equals(this.a)&&t.b.equals(this.b)&&t.c.equals(this.c)}},Cl=0,Jn=class extends sn{constructor(){super(),this.isMaterial=!0,Object.defineProperty(this,"id",{value:Cl++}),this.uuid=jn(),this.name="",this.type="Material",this.blending=Gn,this.side=nn,this.vertexColors=!1,this.opacity=1,this.transparent=!1,this.blendSrc=Ha,this.blendDst=Wa,this.blendEquation=Bn,this.blendSrcAlpha=null,this.blendDstAlpha=null,this.blendEquationAlpha=null,this.depthFunc=Gs,this.depthTest=!0,this.depthWrite=!0,this.stencilWriteMask=255,this.stencilFunc=rl,this.stencilRef=0,this.stencilFuncMask=255,this.stencilFail=xs,this.stencilZFail=xs,this.stencilZPass=xs,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(t){this._alphaTest>0!=t>0&&this.version++,this._alphaTest=t}onBuild(){}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(t){if(t!==void 0)for(let e in t){let n=t[e];if(n===void 0){console.warn("THREE.Material: '"+e+"' parameter is undefined.");continue}let i=this[e];if(i===void 0){console.warn("THREE."+this.type+": '"+e+"' is not a property of this material.");continue}i&&i.isColor?i.set(n):i&&i.isVector3&&n&&n.isVector3?i.copy(n):this[e]=n}}toJSON(t){let e=t===void 0||typeof t=="string";e&&(t={textures:{},images:{}});let n={metadata:{version:4.5,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&&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(t).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(n.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(t).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(n.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(t).uuid,n.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),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(t).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(n.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(t).uuid),this.map&&this.map.isTexture&&(n.map=this.map.toJSON(t).uuid),this.matcap&&this.matcap.isTexture&&(n.matcap=this.matcap.toJSON(t).uuid),this.alphaMap&&this.alphaMap.isTexture&&(n.alphaMap=this.alphaMap.toJSON(t).uuid),this.lightMap&&this.lightMap.isTexture&&(n.lightMap=this.lightMap.toJSON(t).uuid,n.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(n.aoMap=this.aoMap.toJSON(t).uuid,n.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(n.bumpMap=this.bumpMap.toJSON(t).uuid,n.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(n.normalMap=this.normalMap.toJSON(t).uuid,n.normalMapType=this.normalMapType,n.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(n.displacementMap=this.displacementMap.toJSON(t).uuid,n.displacementScale=this.displacementScale,n.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(n.roughnessMap=this.roughnessMap.toJSON(t).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(n.metalnessMap=this.metalnessMap.toJSON(t).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(n.emissiveMap=this.emissiveMap.toJSON(t).uuid),this.specularMap&&this.specularMap.isTexture&&(n.specularMap=this.specularMap.toJSON(t).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(n.specularIntensityMap=this.specularIntensityMap.toJSON(t).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(n.specularColorMap=this.specularColorMap.toJSON(t).uuid),this.envMap&&this.envMap.isTexture&&(n.envMap=this.envMap.toJSON(t).uuid,this.combine!==void 0&&(n.combine=this.combine)),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(t).uuid),this.transmission!==void 0&&(n.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(n.transmissionMap=this.transmissionMap.toJSON(t).uuid),this.thickness!==void 0&&(n.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(n.thicknessMap=this.thicknessMap.toJSON(t).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!==Gn&&(n.blending=this.blending),this.side!==nn&&(n.side=this.side),this.vertexColors&&(n.vertexColors=!0),this.opacity<1&&(n.opacity=this.opacity),this.transparent===!0&&(n.transparent=this.transparent),n.depthFunc=this.depthFunc,n.depthTest=this.depthTest,n.depthWrite=this.depthWrite,n.colorWrite=this.colorWrite,n.stencilWrite=this.stencilWrite,n.stencilWriteMask=this.stencilWriteMask,n.stencilFunc=this.stencilFunc,n.stencilRef=this.stencilRef,n.stencilFuncMask=this.stencilFuncMask,n.stencilFail=this.stencilFail,n.stencilZFail=this.stencilZFail,n.stencilZPass=this.stencilZPass,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.alphaToCoverage===!0&&(n.alphaToCoverage=this.alphaToCoverage),this.premultipliedAlpha===!0&&(n.premultipliedAlpha=this.premultipliedAlpha),this.forceSinglePass===!0&&(n.forceSinglePass=this.forceSinglePass),this.wireframe===!0&&(n.wireframe=this.wireframe),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=this.flatShading),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 i(s){let o=[];for(let a in s){let c=s[a];delete c.metadata,o.push(c)}return o}if(e){let s=i(t.textures),o=i(t.images);s.length>0&&(n.textures=s),o.length>0&&(n.images=o)}return n}clone(){return new this.constructor().copy(this)}copy(t){this.name=t.name,this.blending=t.blending,this.side=t.side,this.vertexColors=t.vertexColors,this.opacity=t.opacity,this.transparent=t.transparent,this.blendSrc=t.blendSrc,this.blendDst=t.blendDst,this.blendEquation=t.blendEquation,this.blendSrcAlpha=t.blendSrcAlpha,this.blendDstAlpha=t.blendDstAlpha,this.blendEquationAlpha=t.blendEquationAlpha,this.depthFunc=t.depthFunc,this.depthTest=t.depthTest,this.depthWrite=t.depthWrite,this.stencilWriteMask=t.stencilWriteMask,this.stencilFunc=t.stencilFunc,this.stencilRef=t.stencilRef,this.stencilFuncMask=t.stencilFuncMask,this.stencilFail=t.stencilFail,this.stencilZFail=t.stencilZFail,this.stencilZPass=t.stencilZPass,this.stencilWrite=t.stencilWrite;let e=t.clippingPlanes,n=null;if(e!==null){let i=e.length;n=new Array(i);for(let s=0;s!==i;++s)n[s]=e[s].clone()}return this.clippingPlanes=n,this.clipIntersection=t.clipIntersection,this.clipShadows=t.clipShadows,this.shadowSide=t.shadowSide,this.colorWrite=t.colorWrite,this.precision=t.precision,this.polygonOffset=t.polygonOffset,this.polygonOffsetFactor=t.polygonOffsetFactor,this.polygonOffsetUnits=t.polygonOffsetUnits,this.dithering=t.dithering,this.alphaTest=t.alphaTest,this.alphaToCoverage=t.alphaToCoverage,this.premultipliedAlpha=t.premultipliedAlpha,this.forceSinglePass=t.forceSinglePass,this.visible=t.visible,this.toneMapped=t.toneMapped,this.userData=JSON.parse(JSON.stringify(t.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(t){t===!0&&this.version++}},Ji=class extends Jn{constructor(t){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new Ot(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.combine=Xa,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(t)}copy(t){return super.copy(t),this.color.copy(t.color),this.map=t.map,this.lightMap=t.lightMap,this.lightMapIntensity=t.lightMapIntensity,this.aoMap=t.aoMap,this.aoMapIntensity=t.aoMapIntensity,this.specularMap=t.specularMap,this.alphaMap=t.alphaMap,this.envMap=t.envMap,this.combine=t.combine,this.reflectivity=t.reflectivity,this.refractionRatio=t.refractionRatio,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this.wireframeLinecap=t.wireframeLinecap,this.wireframeLinejoin=t.wireframeLinejoin,this.fog=t.fog,this}},Gt=new N,Ci=new Nt,ce=class{constructor(t,e,n=!1){if(Array.isArray(t))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,this.name="",this.array=t,this.itemSize=e,this.count=t!==void 0?t.length/e:0,this.normalized=n,this.usage=la,this.updateRange={offset:0,count:-1},this.version=0}onUploadCallback(){}set needsUpdate(t){t===!0&&this.version++}setUsage(t){return this.usage=t,this}copy(t){return this.name=t.name,this.array=new t.array.constructor(t.array),this.itemSize=t.itemSize,this.count=t.count,this.normalized=t.normalized,this.usage=t.usage,this}copyAt(t,e,n){t*=this.itemSize,n*=e.itemSize;for(let i=0,s=this.itemSize;i<s;i++)this.array[t+i]=e.array[n+i];return this}copyArray(t){return this.array.set(t),this}applyMatrix3(t){if(this.itemSize===2)for(let e=0,n=this.count;e<n;e++)Ci.fromBufferAttribute(this,e),Ci.applyMatrix3(t),this.setXY(e,Ci.x,Ci.y);else if(this.itemSize===3)for(let e=0,n=this.count;e<n;e++)Gt.fromBufferAttribute(this,e),Gt.applyMatrix3(t),this.setXYZ(e,Gt.x,Gt.y,Gt.z);return this}applyMatrix4(t){for(let e=0,n=this.count;e<n;e++)Gt.fromBufferAttribute(this,e),Gt.applyMatrix4(t),this.setXYZ(e,Gt.x,Gt.y,Gt.z);return this}applyNormalMatrix(t){for(let e=0,n=this.count;e<n;e++)Gt.fromBufferAttribute(this,e),Gt.applyNormalMatrix(t),this.setXYZ(e,Gt.x,Gt.y,Gt.z);return this}transformDirection(t){for(let e=0,n=this.count;e<n;e++)Gt.fromBufferAttribute(this,e),Gt.transformDirection(t),this.setXYZ(e,Gt.x,Gt.y,Gt.z);return this}set(t,e=0){return this.array.set(t,e),this}getX(t){let e=this.array[t*this.itemSize];return this.normalized&&(e=ci(e,this.array)),e}setX(t,e){return this.normalized&&(e=he(e,this.array)),this.array[t*this.itemSize]=e,this}getY(t){let e=this.array[t*this.itemSize+1];return this.normalized&&(e=ci(e,this.array)),e}setY(t,e){return this.normalized&&(e=he(e,this.array)),this.array[t*this.itemSize+1]=e,this}getZ(t){let e=this.array[t*this.itemSize+2];return this.normalized&&(e=ci(e,this.array)),e}setZ(t,e){return this.normalized&&(e=he(e,this.array)),this.array[t*this.itemSize+2]=e,this}getW(t){let e=this.array[t*this.itemSize+3];return this.normalized&&(e=ci(e,this.array)),e}setW(t,e){return this.normalized&&(e=he(e,this.array)),this.array[t*this.itemSize+3]=e,this}setXY(t,e,n){return t*=this.itemSize,this.normalized&&(e=he(e,this.array),n=he(n,this.array)),this.array[t+0]=e,this.array[t+1]=n,this}setXYZ(t,e,n,i){return t*=this.itemSize,this.normalized&&(e=he(e,this.array),n=he(n,this.array),i=he(i,this.array)),this.array[t+0]=e,this.array[t+1]=n,this.array[t+2]=i,this}setXYZW(t,e,n,i,s){return t*=this.itemSize,this.normalized&&(e=he(e,this.array),n=he(n,this.array),i=he(i,this.array),s=he(s,this.array)),this.array[t+0]=e,this.array[t+1]=n,this.array[t+2]=i,this.array[t+3]=s,this}onUpload(t){return this.onUploadCallback=t,this}clone(){return new this.constructor(this.array,this.itemSize).copy(this)}toJSON(){let t={itemSize:this.itemSize,type:this.array.constructor.name,array:Array.from(this.array),normalized:this.normalized};return this.name!==""&&(t.name=this.name),this.usage!==la&&(t.usage=this.usage),(this.updateRange.offset!==0||this.updateRange.count!==-1)&&(t.updateRange=this.updateRange),t}copyColorsArray(){console.error("THREE.BufferAttribute: copyColorsArray() was removed in r144.")}copyVector2sArray(){console.error("THREE.BufferAttribute: copyVector2sArray() was removed in r144.")}copyVector3sArray(){console.error("THREE.BufferAttribute: copyVector3sArray() was removed in r144.")}copyVector4sArray(){console.error("THREE.BufferAttribute: copyVector4sArray() was removed in r144.")}};var $i=class extends ce{constructor(t,e,n){super(new Uint16Array(t),e,n)}};var Ki=class extends ce{constructor(t,e,n){super(new Uint32Array(t),e,n)}};var Xe=class extends ce{constructor(t,e,n){super(new Float32Array(t),e,n)}};var Pl=0,we=new qt,Ns=new de,Dn=new N,ge=new Mn,si=new Mn,jt=new N,Ye=class extends sn{constructor(){super(),this.isBufferGeometry=!0,Object.defineProperty(this,"id",{value:Pl++}),this.uuid=jn(),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(t){return Array.isArray(t)?this.index=new(Ja(t)?Ki:$i)(t,1):this.index=t,this}getAttribute(t){return this.attributes[t]}setAttribute(t,e){return this.attributes[t]=e,this}deleteAttribute(t){return delete this.attributes[t],this}hasAttribute(t){return this.attributes[t]!==void 0}addGroup(t,e,n=0){this.groups.push({start:t,count:e,materialIndex:n})}clearGroups(){this.groups=[]}setDrawRange(t,e){this.drawRange.start=t,this.drawRange.count=e}applyMatrix4(t){let e=this.attributes.position;e!==void 0&&(e.applyMatrix4(t),e.needsUpdate=!0);let n=this.attributes.normal;if(n!==void 0){let s=new oe().getNormalMatrix(t);n.applyNormalMatrix(s),n.needsUpdate=!0}let i=this.attributes.tangent;return i!==void 0&&(i.transformDirection(t),i.needsUpdate=!0),this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this}applyQuaternion(t){return we.makeRotationFromQuaternion(t),this.applyMatrix4(we),this}rotateX(t){return we.makeRotationX(t),this.applyMatrix4(we),this}rotateY(t){return we.makeRotationY(t),this.applyMatrix4(we),this}rotateZ(t){return we.makeRotationZ(t),this.applyMatrix4(we),this}translate(t,e,n){return we.makeTranslation(t,e,n),this.applyMatrix4(we),this}scale(t,e,n){return we.makeScale(t,e,n),this.applyMatrix4(we),this}lookAt(t){return Ns.lookAt(t),Ns.updateMatrix(),this.applyMatrix4(Ns.matrix),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(Dn).negate(),this.translate(Dn.x,Dn.y,Dn.z),this}setFromPoints(t){let e=[];for(let n=0,i=t.length;n<i;n++){let s=t[n];e.push(s.x,s.y,s.z||0)}return this.setAttribute("position",new Xe(e,3)),this}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new Mn);let t=this.attributes.position,e=this.morphAttributes.position;if(t&&t.isGLBufferAttribute){console.error('THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box. Alternatively set "mesh.frustumCulled" to "false".',this),this.boundingBox.set(new N(-1/0,-1/0,-1/0),new N(1/0,1/0,1/0));return}if(t!==void 0){if(this.boundingBox.setFromBufferAttribute(t),e)for(let n=0,i=e.length;n<i;n++){let s=e[n];ge.setFromBufferAttribute(s),this.morphTargetsRelative?(jt.addVectors(this.boundingBox.min,ge.min),this.boundingBox.expandByPoint(jt),jt.addVectors(this.boundingBox.max,ge.max),this.boundingBox.expandByPoint(jt)):(this.boundingBox.expandByPoint(ge.min),this.boundingBox.expandByPoint(ge.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 _i);let t=this.attributes.position,e=this.morphAttributes.position;if(t&&t.isGLBufferAttribute){console.error('THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere. Alternatively set "mesh.frustumCulled" to "false".',this),this.boundingSphere.set(new N,1/0);return}if(t){let n=this.boundingSphere.center;if(ge.setFromBufferAttribute(t),e)for(let s=0,o=e.length;s<o;s++){let a=e[s];si.setFromBufferAttribute(a),this.morphTargetsRelative?(jt.addVectors(ge.min,si.min),ge.expandByPoint(jt),jt.addVectors(ge.max,si.max),ge.expandByPoint(jt)):(ge.expandByPoint(si.min),ge.expandByPoint(si.max))}ge.getCenter(n);let i=0;for(let s=0,o=t.count;s<o;s++)jt.fromBufferAttribute(t,s),i=Math.max(i,n.distanceToSquared(jt));if(e)for(let s=0,o=e.length;s<o;s++){let a=e[s],c=this.morphTargetsRelative;for(let l=0,h=a.count;l<h;l++)jt.fromBufferAttribute(a,l),c&&(Dn.fromBufferAttribute(t,l),jt.add(Dn)),i=Math.max(i,n.distanceToSquared(jt))}this.boundingSphere.radius=Math.sqrt(i),isNaN(this.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this)}}computeTangents(){let t=this.index,e=this.attributes;if(t===null||e.position===void 0||e.normal===void 0||e.uv===void 0){console.error("THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)");return}let n=t.array,i=e.position.array,s=e.normal.array,o=e.uv.array,a=i.length/3;this.hasAttribute("tangent")===!1&&this.setAttribute("tangent",new ce(new Float32Array(4*a),4));let c=this.getAttribute("tangent").array,l=[],h=[];for(let L=0;L<a;L++)l[L]=new N,h[L]=new N;let f=new N,u=new N,m=new N,_=new Nt,p=new Nt,d=new Nt,v=new N,T=new N;function b(L,X,q){f.fromArray(i,L*3),u.fromArray(i,X*3),m.fromArray(i,q*3),_.fromArray(o,L*2),p.fromArray(o,X*2),d.fromArray(o,q*2),u.sub(f),m.sub(f),p.sub(_),d.sub(_);let z=1/(p.x*d.y-d.x*p.y);isFinite(z)&&(v.copy(u).multiplyScalar(d.y).addScaledVector(m,-p.y).multiplyScalar(z),T.copy(m).multiplyScalar(p.x).addScaledVector(u,-d.x).multiplyScalar(z),l[L].add(v),l[X].add(v),l[q].add(v),h[L].add(T),h[X].add(T),h[q].add(T))}let M=this.groups;M.length===0&&(M=[{start:0,count:n.length}]);for(let L=0,X=M.length;L<X;++L){let q=M[L],z=q.start,R=q.count;for(let G=z,Y=z+R;G<Y;G+=3)b(n[G+0],n[G+1],n[G+2])}let A=new N,C=new N,I=new N,x=new N;function S(L){I.fromArray(s,L*3),x.copy(I);let X=l[L];A.copy(X),A.sub(I.multiplyScalar(I.dot(X))).normalize(),C.crossVectors(x,X);let z=C.dot(h[L])<0?-1:1;c[L*4]=A.x,c[L*4+1]=A.y,c[L*4+2]=A.z,c[L*4+3]=z}for(let L=0,X=M.length;L<X;++L){let q=M[L],z=q.start,R=q.count;for(let G=z,Y=z+R;G<Y;G+=3)S(n[G+0]),S(n[G+1]),S(n[G+2])}}computeVertexNormals(){let t=this.index,e=this.getAttribute("position");if(e!==void 0){let n=this.getAttribute("normal");if(n===void 0)n=new ce(new Float32Array(e.count*3),3),this.setAttribute("normal",n);else for(let u=0,m=n.count;u<m;u++)n.setXYZ(u,0,0,0);let i=new N,s=new N,o=new N,a=new N,c=new N,l=new N,h=new N,f=new N;if(t)for(let u=0,m=t.count;u<m;u+=3){let _=t.getX(u+0),p=t.getX(u+1),d=t.getX(u+2);i.fromBufferAttribute(e,_),s.fromBufferAttribute(e,p),o.fromBufferAttribute(e,d),h.subVectors(o,s),f.subVectors(i,s),h.cross(f),a.fromBufferAttribute(n,_),c.fromBufferAttribute(n,p),l.fromBufferAttribute(n,d),a.add(h),c.add(h),l.add(h),n.setXYZ(_,a.x,a.y,a.z),n.setXYZ(p,c.x,c.y,c.z),n.setXYZ(d,l.x,l.y,l.z)}else for(let u=0,m=e.count;u<m;u+=3)i.fromBufferAttribute(e,u+0),s.fromBufferAttribute(e,u+1),o.fromBufferAttribute(e,u+2),h.subVectors(o,s),f.subVectors(i,s),h.cross(f),n.setXYZ(u+0,h.x,h.y,h.z),n.setXYZ(u+1,h.x,h.y,h.z),n.setXYZ(u+2,h.x,h.y,h.z);this.normalizeNormals(),n.needsUpdate=!0}}merge(){return console.error("THREE.BufferGeometry.merge() has been removed. Use THREE.BufferGeometryUtils.mergeBufferGeometries() instead."),this}normalizeNormals(){let t=this.attributes.normal;for(let e=0,n=t.count;e<n;e++)jt.fromBufferAttribute(t,e),jt.normalize(),t.setXYZ(e,jt.x,jt.y,jt.z)}toNonIndexed(){function t(a,c){let l=a.array,h=a.itemSize,f=a.normalized,u=new l.constructor(c.length*h),m=0,_=0;for(let p=0,d=c.length;p<d;p++){a.isInterleavedBufferAttribute?m=c[p]*a.data.stride+a.offset:m=c[p]*h;for(let v=0;v<h;v++)u[_++]=l[m++]}return new ce(u,h,f)}if(this.index===null)return console.warn("THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed."),this;let e=new Ye,n=this.index.array,i=this.attributes;for(let a in i){let c=i[a],l=t(c,n);e.setAttribute(a,l)}let s=this.morphAttributes;for(let a in s){let c=[],l=s[a];for(let h=0,f=l.length;h<f;h++){let u=l[h],m=t(u,n);c.push(m)}e.morphAttributes[a]=c}e.morphTargetsRelative=this.morphTargetsRelative;let o=this.groups;for(let a=0,c=o.length;a<c;a++){let l=o[a];e.addGroup(l.start,l.count,l.materialIndex)}return e}toJSON(){let t={metadata:{version:4.5,type:"BufferGeometry",generator:"BufferGeometry.toJSON"}};if(t.uuid=this.uuid,t.type=this.type,this.name!==""&&(t.name=this.name),Object.keys(this.userData).length>0&&(t.userData=this.userData),this.parameters!==void 0){let c=this.parameters;for(let l in c)c[l]!==void 0&&(t[l]=c[l]);return t}t.data={attributes:{}};let e=this.index;e!==null&&(t.data.index={type:e.array.constructor.name,array:Array.prototype.slice.call(e.array)});let n=this.attributes;for(let c in n){let l=n[c];t.data.attributes[c]=l.toJSON(t.data)}let i={},s=!1;for(let c in this.morphAttributes){let l=this.morphAttributes[c],h=[];for(let f=0,u=l.length;f<u;f++){let m=l[f];h.push(m.toJSON(t.data))}h.length>0&&(i[c]=h,s=!0)}s&&(t.data.morphAttributes=i,t.data.morphTargetsRelative=this.morphTargetsRelative);let o=this.groups;o.length>0&&(t.data.groups=JSON.parse(JSON.stringify(o)));let a=this.boundingSphere;return a!==null&&(t.data.boundingSphere={center:a.center.toArray(),radius:a.radius}),t}clone(){return new this.constructor().copy(this)}copy(t){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;let e={};this.name=t.name;let n=t.index;n!==null&&this.setIndex(n.clone(e));let i=t.attributes;for(let l in i){let h=i[l];this.setAttribute(l,h.clone(e))}let s=t.morphAttributes;for(let l in s){let h=[],f=s[l];for(let u=0,m=f.length;u<m;u++)h.push(f[u].clone(e));this.morphAttributes[l]=h}this.morphTargetsRelative=t.morphTargetsRelative;let o=t.groups;for(let l=0,h=o.length;l<h;l++){let f=o[l];this.addGroup(f.start,f.count,f.materialIndex)}let a=t.boundingBox;a!==null&&(this.boundingBox=a.clone());let c=t.boundingSphere;return c!==null&&(this.boundingSphere=c.clone()),this.drawRange.start=t.drawRange.start,this.drawRange.count=t.drawRange.count,this.userData=t.userData,t.parameters!==void 0&&(this.parameters=Object.assign({},t.parameters)),this}dispose(){this.dispatchEvent({type:"dispose"})}},va=new qt,Nn=new $s,Fs=new _i,ri=new N,ai=new N,oi=new N,zs=new N,Pi=new N,Ri=new Nt,Li=new Nt,Ii=new Nt,Os=new N,Di=new N,Ne=class extends de{constructor(t=new Ye,e=new Ji){super(),this.isMesh=!0,this.type="Mesh",this.geometry=t,this.material=e,this.updateMorphTargets()}copy(t,e){return super.copy(t,e),t.morphTargetInfluences!==void 0&&(this.morphTargetInfluences=t.morphTargetInfluences.slice()),t.morphTargetDictionary!==void 0&&(this.morphTargetDictionary=Object.assign({},t.morphTargetDictionary)),this.material=t.material,this.geometry=t.geometry,this}updateMorphTargets(){let e=this.geometry.morphAttributes,n=Object.keys(e);if(n.length>0){let i=e[n[0]];if(i!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,o=i.length;s<o;s++){let a=i[s].name||String(s);this.morphTargetInfluences.push(0),this.morphTargetDictionary[a]=s}}}}getVertexPosition(t,e){let n=this.geometry,i=n.attributes.position,s=n.morphAttributes.position,o=n.morphTargetsRelative;e.fromBufferAttribute(i,t);let a=this.morphTargetInfluences;if(s&&a){Pi.set(0,0,0);for(let c=0,l=s.length;c<l;c++){let h=a[c],f=s[c];h!==0&&(zs.fromBufferAttribute(f,t),o?Pi.addScaledVector(zs,h):Pi.addScaledVector(zs.sub(e),h))}e.add(Pi)}return this.isSkinnedMesh&&this.boneTransform(t,e),e}raycast(t,e){let n=this.geometry,i=this.material,s=this.matrixWorld;if(i===void 0||(n.boundingSphere===null&&n.computeBoundingSphere(),Fs.copy(n.boundingSphere),Fs.applyMatrix4(s),t.ray.intersectsSphere(Fs)===!1)||(va.copy(s).invert(),Nn.copy(t.ray).applyMatrix4(va),n.boundingBox!==null&&Nn.intersectsBox(n.boundingBox)===!1))return;let o,a=n.index,c=n.attributes.position,l=n.attributes.uv,h=n.attributes.uv2,f=n.groups,u=n.drawRange;if(a!==null)if(Array.isArray(i))for(let m=0,_=f.length;m<_;m++){let p=f[m],d=i[p.materialIndex],v=Math.max(p.start,u.start),T=Math.min(a.count,Math.min(p.start+p.count,u.start+u.count));for(let b=v,M=T;b<M;b+=3){let A=a.getX(b),C=a.getX(b+1),I=a.getX(b+2);o=Ni(this,d,t,Nn,l,h,A,C,I),o&&(o.faceIndex=Math.floor(b/3),o.face.materialIndex=p.materialIndex,e.push(o))}}else{let m=Math.max(0,u.start),_=Math.min(a.count,u.start+u.count);for(let p=m,d=_;p<d;p+=3){let v=a.getX(p),T=a.getX(p+1),b=a.getX(p+2);o=Ni(this,i,t,Nn,l,h,v,T,b),o&&(o.faceIndex=Math.floor(p/3),e.push(o))}}else if(c!==void 0)if(Array.isArray(i))for(let m=0,_=f.length;m<_;m++){let p=f[m],d=i[p.materialIndex],v=Math.max(p.start,u.start),T=Math.min(c.count,Math.min(p.start+p.count,u.start+u.count));for(let b=v,M=T;b<M;b+=3){let A=b,C=b+1,I=b+2;o=Ni(this,d,t,Nn,l,h,A,C,I),o&&(o.faceIndex=Math.floor(b/3),o.face.materialIndex=p.materialIndex,e.push(o))}}else{let m=Math.max(0,u.start),_=Math.min(c.count,u.start+u.count);for(let p=m,d=_;p<d;p+=3){let v=p,T=p+1,b=p+2;o=Ni(this,i,t,Nn,l,h,v,T,b),o&&(o.faceIndex=Math.floor(p/3),e.push(o))}}}};function Rl(r,t,e,n,i,s,o,a){let c;if(t.side===ye?c=n.intersectTriangle(o,s,i,!0,a):c=n.intersectTriangle(i,s,o,t.side===nn,a),c===null)return null;Di.copy(a),Di.applyMatrix4(r.matrixWorld);let l=e.ray.origin.distanceTo(Di);return l<e.near||l>e.far?null:{distance:l,point:Di.clone(),object:r}}function Ni(r,t,e,n,i,s,o,a,c){r.getVertexPosition(o,ri),r.getVertexPosition(a,ai),r.getVertexPosition(c,oi);let l=Rl(r,t,e,n,ri,ai,oi,Os);if(l){i&&(Ri.fromBufferAttribute(i,o),Li.fromBufferAttribute(i,a),Ii.fromBufferAttribute(i,c),l.uv=xe.getUV(Os,ri,ai,oi,Ri,Li,Ii,new Nt)),s&&(Ri.fromBufferAttribute(s,o),Li.fromBufferAttribute(s,a),Ii.fromBufferAttribute(s,c),l.uv2=xe.getUV(Os,ri,ai,oi,Ri,Li,Ii,new Nt));let h={a:o,b:a,c,normal:new N,materialIndex:0};xe.getNormal(ri,ai,oi,h.normal),l.face=h}return l}var bn=class extends Ye{constructor(t=1,e=1,n=1,i=1,s=1,o=1){super(),this.type="BoxGeometry",this.parameters={width:t,height:e,depth:n,widthSegments:i,heightSegments:s,depthSegments:o};let a=this;i=Math.floor(i),s=Math.floor(s),o=Math.floor(o);let c=[],l=[],h=[],f=[],u=0,m=0;_("z","y","x",-1,-1,n,e,t,o,s,0),_("z","y","x",1,-1,n,e,-t,o,s,1),_("x","z","y",1,1,t,n,e,i,o,2),_("x","z","y",1,-1,t,n,-e,i,o,3),_("x","y","z",1,-1,t,e,n,i,s,4),_("x","y","z",-1,-1,t,e,-n,i,s,5),this.setIndex(c),this.setAttribute("position",new Xe(l,3)),this.setAttribute("normal",new Xe(h,3)),this.setAttribute("uv",new Xe(f,2));function _(p,d,v,T,b,M,A,C,I,x,S){let L=M/I,X=A/x,q=M/2,z=A/2,R=C/2,G=I+1,Y=x+1,j=0,W=0,Q=new N;for(let Z=0;Z<Y;Z++){let ft=Z*X-z;for(let F=0;F<G;F++){let J=F*L-q;Q[p]=J*T,Q[d]=ft*b,Q[v]=R,l.push(Q.x,Q.y,Q.z),Q[p]=0,Q[d]=0,Q[v]=C>0?1:-1,h.push(Q.x,Q.y,Q.z),f.push(F/I),f.push(1-Z/x),j+=1}}for(let Z=0;Z<x;Z++)for(let ft=0;ft<I;ft++){let F=u+ft+G*Z,J=u+ft+G*(Z+1),nt=u+(ft+1)+G*(Z+1),it=u+(ft+1)+G*Z;c.push(F,J,it),c.push(J,nt,it),W+=6}a.addGroup(m,W,S),m+=W,u+=j}}static fromJSON(t){return new bn(t.width,t.height,t.depth,t.widthSegments,t.heightSegments,t.depthSegments)}};function $n(r){let t={};for(let e in r){t[e]={};for(let n in r[e]){let i=r[e][n];i&&(i.isColor||i.isMatrix3||i.isMatrix4||i.isVector2||i.isVector3||i.isVector4||i.isTexture||i.isQuaternion)?t[e][n]=i.clone():Array.isArray(i)?t[e][n]=i.slice():t[e][n]=i}}return t}function re(r){let t={};for(let e=0;e<r.length;e++){let n=$n(r[e]);for(let i in n)t[i]=n[i]}return t}function Ll(r){let t=[];for(let e=0;e<r.length;e++)t.push(r[e].clone());return t}function Ka(r){return r.getRenderTarget()===null&&r.outputEncoding===zt?Ie:gi}var Il={clone:$n,merge:re},Dl=\`void main() {
|
||
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
|
||
}\`,Nl=\`void main() {
|
||
gl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );
|
||
}\`,Ze=class extends Jn{constructor(t){super(),this.isShaderMaterial=!0,this.type="ShaderMaterial",this.defines={},this.uniforms={},this.uniformsGroups=[],this.vertexShader=Dl,this.fragmentShader=Nl,this.linewidth=1,this.wireframe=!1,this.wireframeLinewidth=1,this.fog=!1,this.lights=!1,this.clipping=!1,this.extensions={derivatives:!1,fragDepth:!1,drawBuffers:!1,shaderTextureLOD:!1},this.defaultAttributeValues={color:[1,1,1],uv:[0,0],uv2:[0,0]},this.index0AttributeName=void 0,this.uniformsNeedUpdate=!1,this.glslVersion=null,t!==void 0&&this.setValues(t)}copy(t){return super.copy(t),this.fragmentShader=t.fragmentShader,this.vertexShader=t.vertexShader,this.uniforms=$n(t.uniforms),this.uniformsGroups=Ll(t.uniformsGroups),this.defines=Object.assign({},t.defines),this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this.fog=t.fog,this.lights=t.lights,this.clipping=t.clipping,this.extensions=Object.assign({},t.extensions),this.glslVersion=t.glslVersion,this}toJSON(t){let e=super.toJSON(t);e.glslVersion=this.glslVersion,e.uniforms={};for(let i in this.uniforms){let o=this.uniforms[i].value;o&&o.isTexture?e.uniforms[i]={type:"t",value:o.toJSON(t).uuid}:o&&o.isColor?e.uniforms[i]={type:"c",value:o.getHex()}:o&&o.isVector2?e.uniforms[i]={type:"v2",value:o.toArray()}:o&&o.isVector3?e.uniforms[i]={type:"v3",value:o.toArray()}:o&&o.isVector4?e.uniforms[i]={type:"v4",value:o.toArray()}:o&&o.isMatrix3?e.uniforms[i]={type:"m3",value:o.toArray()}:o&&o.isMatrix4?e.uniforms[i]={type:"m4",value:o.toArray()}:e.uniforms[i]={value:o}}Object.keys(this.defines).length>0&&(e.defines=this.defines),e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader;let n={};for(let i in this.extensions)this.extensions[i]===!0&&(n[i]=!0);return Object.keys(n).length>0&&(e.extensions=n),e}},ji=class extends de{constructor(){super(),this.isCamera=!0,this.type="Camera",this.matrixWorldInverse=new qt,this.projectionMatrix=new qt,this.projectionMatrixInverse=new qt}copy(t,e){return super.copy(t,e),this.matrixWorldInverse.copy(t.matrixWorldInverse),this.projectionMatrix.copy(t.projectionMatrix),this.projectionMatrixInverse.copy(t.projectionMatrixInverse),this}getWorldDirection(t){this.updateWorldMatrix(!0,!1);let e=this.matrixWorld.elements;return t.set(-e[8],-e[9],-e[10]).normalize()}updateMatrixWorld(t){super.updateMatrixWorld(t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(t,e){super.updateWorldMatrix(t,e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return new this.constructor().copy(this)}},_e=class extends ji{constructor(t=50,e=1,n=.1,i=2e3){super(),this.isPerspectiveCamera=!0,this.type="PerspectiveCamera",this.fov=t,this.zoom=1,this.near=n,this.far=i,this.focus=10,this.aspect=e,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(t,e){return super.copy(t,e),this.fov=t.fov,this.zoom=t.zoom,this.near=t.near,this.far=t.far,this.focus=t.focus,this.aspect=t.aspect,this.view=t.view===null?null:Object.assign({},t.view),this.filmGauge=t.filmGauge,this.filmOffset=t.filmOffset,this}setFocalLength(t){let e=.5*this.getFilmHeight()/t;this.fov=Gi*2*Math.atan(e),this.updateProjectionMatrix()}getFocalLength(){let t=Math.tan(ui*.5*this.fov);return .5*this.getFilmHeight()/t}getEffectiveFOV(){return Gi*2*Math.atan(Math.tan(ui*.5*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}setViewOffset(t,e,n,i,s,o){this.aspect=t/e,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=t,this.view.fullHeight=e,this.view.offsetX=n,this.view.offsetY=i,this.view.width=s,this.view.height=o,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){let t=this.near,e=t*Math.tan(ui*.5*this.fov)/this.zoom,n=2*e,i=this.aspect*n,s=-.5*i,o=this.view;if(this.view!==null&&this.view.enabled){let c=o.fullWidth,l=o.fullHeight;s+=o.offsetX*i/c,e-=o.offsetY*n/l,i*=o.width/c,n*=o.height/l}let a=this.filmOffset;a!==0&&(s+=t*a/this.getFilmWidth()),this.projectionMatrix.makePerspective(s,s+i,e,e-n,t,this.far),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(t){let e=super.toJSON(t);return e.object.fov=this.fov,e.object.zoom=this.zoom,e.object.near=this.near,e.object.far=this.far,e.object.focus=this.focus,e.object.aspect=this.aspect,this.view!==null&&(e.object.view=Object.assign({},this.view)),e.object.filmGauge=this.filmGauge,e.object.filmOffset=this.filmOffset,e}},Fn=-90,zn=1,Ks=class extends de{constructor(t,e,n){super(),this.type="CubeCamera",this.renderTarget=n;let i=new _e(Fn,zn,t,e);i.layers=this.layers,i.up.set(0,1,0),i.lookAt(1,0,0),this.add(i);let s=new _e(Fn,zn,t,e);s.layers=this.layers,s.up.set(0,1,0),s.lookAt(-1,0,0),this.add(s);let o=new _e(Fn,zn,t,e);o.layers=this.layers,o.up.set(0,0,-1),o.lookAt(0,1,0),this.add(o);let a=new _e(Fn,zn,t,e);a.layers=this.layers,a.up.set(0,0,1),a.lookAt(0,-1,0),this.add(a);let c=new _e(Fn,zn,t,e);c.layers=this.layers,c.up.set(0,1,0),c.lookAt(0,0,1),this.add(c);let l=new _e(Fn,zn,t,e);l.layers=this.layers,l.up.set(0,1,0),l.lookAt(0,0,-1),this.add(l)}update(t,e){this.parent===null&&this.updateMatrixWorld();let n=this.renderTarget,[i,s,o,a,c,l]=this.children,h=t.getRenderTarget(),f=t.toneMapping,u=t.xr.enabled;t.toneMapping=We,t.xr.enabled=!1;let m=n.texture.generateMipmaps;n.texture.generateMipmaps=!1,t.setRenderTarget(n,0),t.render(e,i),t.setRenderTarget(n,1),t.render(e,s),t.setRenderTarget(n,2),t.render(e,o),t.setRenderTarget(n,3),t.render(e,a),t.setRenderTarget(n,4),t.render(e,c),n.texture.generateMipmaps=m,t.setRenderTarget(n,5),t.render(e,l),t.setRenderTarget(h),t.toneMapping=f,t.xr.enabled=u,n.texture.needsPMREMUpdate=!0}},Qi=class extends le{constructor(t,e,n,i,s,o,a,c,l,h){t=t!==void 0?t:[],e=e!==void 0?e:Xn,super(t,e,n,i,s,o,a,c,l,h),this.isCubeTexture=!0,this.flipY=!1}get images(){return this.image}set images(t){this.image=t}},js=class extends qe{constructor(t=1,e={}){super(t,t,e),this.isWebGLCubeRenderTarget=!0;let n={width:t,height:t,depth:1},i=[n,n,n,n,n,n];this.texture=new Qi(i,e.mapping,e.wrapS,e.wrapT,e.magFilter,e.minFilter,e.format,e.type,e.anisotropy,e.encoding),this.texture.isRenderTargetTexture=!0,this.texture.generateMipmaps=e.generateMipmaps!==void 0?e.generateMipmaps:!1,this.texture.minFilter=e.minFilter!==void 0?e.minFilter:Se}fromEquirectangularTexture(t,e){this.texture.type=e.type,this.texture.encoding=e.encoding,this.texture.generateMipmaps=e.generateMipmaps,this.texture.minFilter=e.minFilter,this.texture.magFilter=e.magFilter;let 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 );
|
||
|
||
}
|
||
\`},i=new bn(5,5,5),s=new Ze({name:"CubemapFromEquirect",uniforms:$n(n.uniforms),vertexShader:n.vertexShader,fragmentShader:n.fragmentShader,side:ye,blending:en});s.uniforms.tEquirect.value=e;let o=new Ne(i,s),a=e.minFilter;return e.minFilter===pi&&(e.minFilter=Se),new Ks(1,10,this).update(t,o),e.minFilter=a,o.geometry.dispose(),o.material.dispose(),this}clear(t,e,n,i){let s=t.getRenderTarget();for(let o=0;o<6;o++)t.setRenderTarget(this,o),t.clear(e,n,i);t.setRenderTarget(s)}},Us=new N,Fl=new N,zl=new oe,He=class{constructor(t=new N(1,0,0),e=0){this.isPlane=!0,this.normal=t,this.constant=e}set(t,e){return this.normal.copy(t),this.constant=e,this}setComponents(t,e,n,i){return this.normal.set(t,e,n),this.constant=i,this}setFromNormalAndCoplanarPoint(t,e){return this.normal.copy(t),this.constant=-e.dot(this.normal),this}setFromCoplanarPoints(t,e,n){let i=Us.subVectors(n,e).cross(Fl.subVectors(t,e)).normalize();return this.setFromNormalAndCoplanarPoint(i,t),this}copy(t){return this.normal.copy(t.normal),this.constant=t.constant,this}normalize(){let t=1/this.normal.length();return this.normal.multiplyScalar(t),this.constant*=t,this}negate(){return this.constant*=-1,this.normal.negate(),this}distanceToPoint(t){return this.normal.dot(t)+this.constant}distanceToSphere(t){return this.distanceToPoint(t.center)-t.radius}projectPoint(t,e){return e.copy(this.normal).multiplyScalar(-this.distanceToPoint(t)).add(t)}intersectLine(t,e){let n=t.delta(Us),i=this.normal.dot(n);if(i===0)return this.distanceToPoint(t.start)===0?e.copy(t.start):null;let s=-(t.start.dot(this.normal)+this.constant)/i;return s<0||s>1?null:e.copy(n).multiplyScalar(s).add(t.start)}intersectsLine(t){let e=this.distanceToPoint(t.start),n=this.distanceToPoint(t.end);return e<0&&n>0||n<0&&e>0}intersectsBox(t){return t.intersectsPlane(this)}intersectsSphere(t){return t.intersectsPlane(this)}coplanarPoint(t){return t.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(t,e){let n=e||zl.getNormalMatrix(t),i=this.coplanarPoint(Us).applyMatrix4(t),s=this.normal.applyMatrix3(n).normalize();return this.constant=-i.dot(s),this}translate(t){return this.constant-=t.dot(this.normal),this}equals(t){return t.normal.equals(this.normal)&&t.constant===this.constant}clone(){return new this.constructor().copy(this)}},On=new _i,Fi=new N,ts=class{constructor(t=new He,e=new He,n=new He,i=new He,s=new He,o=new He){this.planes=[t,e,n,i,s,o]}set(t,e,n,i,s,o){let a=this.planes;return a[0].copy(t),a[1].copy(e),a[2].copy(n),a[3].copy(i),a[4].copy(s),a[5].copy(o),this}copy(t){let e=this.planes;for(let n=0;n<6;n++)e[n].copy(t.planes[n]);return this}setFromProjectionMatrix(t){let e=this.planes,n=t.elements,i=n[0],s=n[1],o=n[2],a=n[3],c=n[4],l=n[5],h=n[6],f=n[7],u=n[8],m=n[9],_=n[10],p=n[11],d=n[12],v=n[13],T=n[14],b=n[15];return e[0].setComponents(a-i,f-c,p-u,b-d).normalize(),e[1].setComponents(a+i,f+c,p+u,b+d).normalize(),e[2].setComponents(a+s,f+l,p+m,b+v).normalize(),e[3].setComponents(a-s,f-l,p-m,b-v).normalize(),e[4].setComponents(a-o,f-h,p-_,b-T).normalize(),e[5].setComponents(a+o,f+h,p+_,b+T).normalize(),this}intersectsObject(t){let e=t.geometry;return e.boundingSphere===null&&e.computeBoundingSphere(),On.copy(e.boundingSphere).applyMatrix4(t.matrixWorld),this.intersectsSphere(On)}intersectsSprite(t){return On.center.set(0,0,0),On.radius=.7071067811865476,On.applyMatrix4(t.matrixWorld),this.intersectsSphere(On)}intersectsSphere(t){let e=this.planes,n=t.center,i=-t.radius;for(let s=0;s<6;s++)if(e[s].distanceToPoint(n)<i)return!1;return!0}intersectsBox(t){let e=this.planes;for(let n=0;n<6;n++){let i=e[n];if(Fi.x=i.normal.x>0?t.max.x:t.min.x,Fi.y=i.normal.y>0?t.max.y:t.min.y,Fi.z=i.normal.z>0?t.max.z:t.min.z,i.distanceToPoint(Fi)<0)return!1}return!0}containsPoint(t){let e=this.planes;for(let n=0;n<6;n++)if(e[n].distanceToPoint(t)<0)return!1;return!0}clone(){return new this.constructor().copy(this)}};function ja(){let r=null,t=!1,e=null,n=null;function i(s,o){e(s,o),n=r.requestAnimationFrame(i)}return{start:function(){t!==!0&&e!==null&&(n=r.requestAnimationFrame(i),t=!0)},stop:function(){r.cancelAnimationFrame(n),t=!1},setAnimationLoop:function(s){e=s},setContext:function(s){r=s}}}function Ol(r,t){let e=t.isWebGL2,n=new WeakMap;function i(l,h){let f=l.array,u=l.usage,m=r.createBuffer();r.bindBuffer(h,m),r.bufferData(h,f,u),l.onUploadCallback();let _;if(f instanceof Float32Array)_=5126;else if(f instanceof Uint16Array)if(l.isFloat16BufferAttribute)if(e)_=5131;else throw new Error("THREE.WebGLAttributes: Usage of Float16BufferAttribute requires WebGL2.");else _=5123;else if(f instanceof Int16Array)_=5122;else if(f instanceof Uint32Array)_=5125;else if(f instanceof Int32Array)_=5124;else if(f instanceof Int8Array)_=5120;else if(f instanceof Uint8Array)_=5121;else if(f instanceof Uint8ClampedArray)_=5121;else throw new Error("THREE.WebGLAttributes: Unsupported buffer data format: "+f);return{buffer:m,type:_,bytesPerElement:f.BYTES_PER_ELEMENT,version:l.version}}function s(l,h,f){let u=h.array,m=h.updateRange;r.bindBuffer(f,l),m.count===-1?r.bufferSubData(f,0,u):(e?r.bufferSubData(f,m.offset*u.BYTES_PER_ELEMENT,u,m.offset,m.count):r.bufferSubData(f,m.offset*u.BYTES_PER_ELEMENT,u.subarray(m.offset,m.offset+m.count)),m.count=-1),h.onUploadCallback()}function o(l){return l.isInterleavedBufferAttribute&&(l=l.data),n.get(l)}function a(l){l.isInterleavedBufferAttribute&&(l=l.data);let h=n.get(l);h&&(r.deleteBuffer(h.buffer),n.delete(l))}function c(l,h){if(l.isGLBufferAttribute){let u=n.get(l);(!u||u.version<l.version)&&n.set(l,{buffer:l.buffer,type:l.type,bytesPerElement:l.elementSize,version:l.version});return}l.isInterleavedBufferAttribute&&(l=l.data);let f=n.get(l);f===void 0?n.set(l,i(l,h)):f.version<l.version&&(s(f.buffer,l,h),f.version=l.version)}return{get:o,remove:a,update:c}}var xi=class extends Ye{constructor(t=1,e=1,n=1,i=1){super(),this.type="PlaneGeometry",this.parameters={width:t,height:e,widthSegments:n,heightSegments:i};let s=t/2,o=e/2,a=Math.floor(n),c=Math.floor(i),l=a+1,h=c+1,f=t/a,u=e/c,m=[],_=[],p=[],d=[];for(let v=0;v<h;v++){let T=v*u-o;for(let b=0;b<l;b++){let M=b*f-s;_.push(M,-T,0),p.push(0,0,1),d.push(b/a),d.push(1-v/c)}}for(let v=0;v<c;v++)for(let T=0;T<a;T++){let b=T+l*v,M=T+l*(v+1),A=T+1+l*(v+1),C=T+1+l*v;m.push(b,M,C),m.push(M,A,C)}this.setIndex(m),this.setAttribute("position",new Xe(_,3)),this.setAttribute("normal",new Xe(p,3)),this.setAttribute("uv",new Xe(d,2))}static fromJSON(t){return new xi(t.width,t.height,t.widthSegments,t.heightSegments)}},Ul=\`#ifdef USE_ALPHAMAP
|
||
diffuseColor.a *= texture2D( alphaMap, vUv ).g;
|
||
#endif\`,Bl=\`#ifdef USE_ALPHAMAP
|
||
uniform sampler2D alphaMap;
|
||
#endif\`,kl=\`#ifdef USE_ALPHATEST
|
||
if ( diffuseColor.a < alphaTest ) discard;
|
||
#endif\`,Vl=\`#ifdef USE_ALPHATEST
|
||
uniform float alphaTest;
|
||
#endif\`,Gl=\`#ifdef USE_AOMAP
|
||
float ambientOcclusion = ( texture2D( aoMap, vUv2 ).r - 1.0 ) * aoMapIntensity + 1.0;
|
||
reflectedLight.indirectDiffuse *= ambientOcclusion;
|
||
#if defined( USE_ENVMAP ) && defined( STANDARD )
|
||
float dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );
|
||
reflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.roughness );
|
||
#endif
|
||
#endif\`,Hl=\`#ifdef USE_AOMAP
|
||
uniform sampler2D aoMap;
|
||
uniform float aoMapIntensity;
|
||
#endif\`,Wl="vec3 transformed = vec3( position );",Xl=\`vec3 objectNormal = vec3( normal );
|
||
#ifdef USE_TANGENT
|
||
vec3 objectTangent = vec3( tangent.xyz );
|
||
#endif\`,ql=\`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 );
|
||
}
|
||
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 );
|
||
}
|
||
vec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 f0, const in float f90, const in float 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 );
|
||
float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );
|
||
float D = D_GGX( alpha, dotNH );
|
||
return F * ( V * D );
|
||
}
|
||
#ifdef USE_IRIDESCENCE
|
||
vec3 BRDF_GGX_Iridescence( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 f0, const in float f90, const in float iridescence, const in vec3 iridescenceFresnel, const in float 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 = mix( F_Schlick( f0, f90, dotVH ), iridescenceFresnel, iridescence );
|
||
float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );
|
||
float D = D_GGX( alpha, dotNH );
|
||
return F * ( V * D );
|
||
}
|
||
#endif
|
||
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 );
|
||
}
|
||
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 );
|
||
}
|
||
#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\`,Yl=\`#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 R21 = R12;
|
||
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\`,Zl=\`#ifdef USE_BUMPMAP
|
||
uniform sampler2D bumpMap;
|
||
uniform float bumpScale;
|
||
vec2 dHdxy_fwd() {
|
||
vec2 dSTdx = dFdx( vUv );
|
||
vec2 dSTdy = dFdy( vUv );
|
||
float Hll = bumpScale * texture2D( bumpMap, vUv ).x;
|
||
float dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;
|
||
float dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;
|
||
return vec2( dBx, dBy );
|
||
}
|
||
vec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) {
|
||
vec3 vSigmaX = dFdx( surf_pos.xyz );
|
||
vec3 vSigmaY = 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\`,Jl=\`#if NUM_CLIPPING_PLANES > 0
|
||
vec4 plane;
|
||
#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\`,$l=\`#if NUM_CLIPPING_PLANES > 0
|
||
varying vec3 vClipPosition;
|
||
uniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];
|
||
#endif\`,Kl=\`#if NUM_CLIPPING_PLANES > 0
|
||
varying vec3 vClipPosition;
|
||
#endif\`,jl=\`#if NUM_CLIPPING_PLANES > 0
|
||
vClipPosition = - mvPosition.xyz;
|
||
#endif\`,Ql=\`#if defined( USE_COLOR_ALPHA )
|
||
diffuseColor *= vColor;
|
||
#elif defined( USE_COLOR )
|
||
diffuseColor.rgb *= vColor;
|
||
#endif\`,tc=\`#if defined( USE_COLOR_ALPHA )
|
||
varying vec4 vColor;
|
||
#elif defined( USE_COLOR )
|
||
varying vec3 vColor;
|
||
#endif\`,ec=\`#if defined( USE_COLOR_ALPHA )
|
||
varying vec4 vColor;
|
||
#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )
|
||
varying vec3 vColor;
|
||
#endif\`,nc=\`#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\`,ic=\`#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;
|
||
};
|
||
struct GeometricContext {
|
||
vec3 position;
|
||
vec3 normal;
|
||
vec3 viewDir;
|
||
#ifdef USE_CLEARCOAT
|
||
vec3 clearcoatNormal;
|
||
#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 );
|
||
}\`,sc=\`#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_v0 0.339
|
||
#define cubeUV_m0 - 2.0
|
||
#define cubeUV_r1 0.8
|
||
#define cubeUV_v1 0.276
|
||
#define cubeUV_m1 - 1.0
|
||
#define cubeUV_r4 0.4
|
||
#define cubeUV_v4 0.046
|
||
#define cubeUV_m4 2.0
|
||
#define cubeUV_r5 0.305
|
||
#define cubeUV_v5 0.016
|
||
#define cubeUV_m5 3.0
|
||
#define cubeUV_r6 0.21
|
||
#define cubeUV_v6 0.0038
|
||
#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\`,rc=\`vec3 transformedNormal = objectNormal;
|
||
#ifdef USE_INSTANCING
|
||
mat3 m = mat3( instanceMatrix );
|
||
transformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) );
|
||
transformedNormal = m * transformedNormal;
|
||
#endif
|
||
transformedNormal = normalMatrix * transformedNormal;
|
||
#ifdef FLIP_SIDED
|
||
transformedNormal = - transformedNormal;
|
||
#endif
|
||
#ifdef USE_TANGENT
|
||
vec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz;
|
||
#ifdef FLIP_SIDED
|
||
transformedTangent = - transformedTangent;
|
||
#endif
|
||
#endif\`,ac=\`#ifdef USE_DISPLACEMENTMAP
|
||
uniform sampler2D displacementMap;
|
||
uniform float displacementScale;
|
||
uniform float displacementBias;
|
||
#endif\`,oc=\`#ifdef USE_DISPLACEMENTMAP
|
||
transformed += normalize( objectNormal ) * ( texture2D( displacementMap, vUv ).x * displacementScale + displacementBias );
|
||
#endif\`,lc=\`#ifdef USE_EMISSIVEMAP
|
||
vec4 emissiveColor = texture2D( emissiveMap, vUv );
|
||
totalEmissiveRadiance *= emissiveColor.rgb;
|
||
#endif\`,cc=\`#ifdef USE_EMISSIVEMAP
|
||
uniform sampler2D emissiveMap;
|
||
#endif\`,hc="gl_FragColor = linearToOutputTexel( gl_FragColor );",uc=\`vec4 LinearToLinear( in vec4 value ) {
|
||
return value;
|
||
}
|
||
vec4 LinearTosRGB( in vec4 value ) {
|
||
return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );
|
||
}\`,dc=\`#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, 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\`,fc=\`#ifdef USE_ENVMAP
|
||
uniform float envMapIntensity;
|
||
uniform float flipEnvMap;
|
||
#ifdef ENVMAP_TYPE_CUBE
|
||
uniform samplerCube envMap;
|
||
#else
|
||
uniform sampler2D envMap;
|
||
#endif
|
||
|
||
#endif\`,pc=\`#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\`,mc=\`#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\`,gc=\`#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\`,_c=\`#ifdef USE_FOG
|
||
vFogDepth = - mvPosition.z;
|
||
#endif\`,xc=\`#ifdef USE_FOG
|
||
varying float vFogDepth;
|
||
#endif\`,yc=\`#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\`,vc=\`#ifdef USE_FOG
|
||
uniform vec3 fogColor;
|
||
varying float vFogDepth;
|
||
#ifdef FOG_EXP2
|
||
uniform float fogDensity;
|
||
#else
|
||
uniform float fogNear;
|
||
uniform float fogFar;
|
||
#endif
|
||
#endif\`,Mc=\`#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
|
||
}\`,bc=\`#ifdef USE_LIGHTMAP
|
||
vec4 lightMapTexel = texture2D( lightMap, vUv2 );
|
||
vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;
|
||
reflectedLight.indirectDiffuse += lightMapIrradiance;
|
||
#endif\`,wc=\`#ifdef USE_LIGHTMAP
|
||
uniform sampler2D lightMap;
|
||
uniform float lightMapIntensity;
|
||
#endif\`,Sc=\`LambertMaterial material;
|
||
material.diffuseColor = diffuseColor.rgb;
|
||
material.specularStrength = specularStrength;\`,Tc=\`varying vec3 vViewPosition;
|
||
struct LambertMaterial {
|
||
vec3 diffuseColor;
|
||
float specularStrength;
|
||
};
|
||
void RE_Direct_Lambert( const in IncidentLight directLight, const in GeometricContext geometry, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {
|
||
float dotNL = saturate( dot( geometry.normal, directLight.direction ) );
|
||
vec3 irradiance = dotNL * directLight.color;
|
||
reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
|
||
}
|
||
void RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in GeometricContext geometry, 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\`,Ac=\`uniform bool receiveShadow;
|
||
uniform vec3 ambientLightColor;
|
||
uniform vec3 lightProbe[ 9 ];
|
||
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 ( PHYSICALLY_CORRECT_LIGHTS )
|
||
float distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );
|
||
if ( cutoffDistance > 0.0 ) {
|
||
distanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );
|
||
}
|
||
return distanceFalloff;
|
||
#else
|
||
if ( cutoffDistance > 0.0 && decayExponent > 0.0 ) {
|
||
return pow( saturate( - lightDistance / cutoffDistance + 1.0 ), decayExponent );
|
||
}
|
||
return 1.0;
|
||
#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, const in GeometricContext geometry, 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 GeometricContext geometry, out IncidentLight light ) {
|
||
vec3 lVector = pointLight.position - geometry.position;
|
||
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 GeometricContext geometry, out IncidentLight light ) {
|
||
vec3 lVector = spotLight.position - geometry.position;
|
||
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\`,Ec=\`#if defined( USE_ENVMAP )
|
||
vec3 getIBLIrradiance( const in vec3 normal ) {
|
||
#if defined( ENVMAP_TYPE_CUBE_UV )
|
||
vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );
|
||
vec4 envMapColor = textureCubeUV( envMap, 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 ) {
|
||
#if defined( ENVMAP_TYPE_CUBE_UV )
|
||
vec3 reflectVec = reflect( - viewDir, normal );
|
||
reflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );
|
||
reflectVec = inverseTransformDirection( reflectVec, viewMatrix );
|
||
vec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );
|
||
return envMapColor.rgb * envMapIntensity;
|
||
#else
|
||
return vec3( 0.0 );
|
||
#endif
|
||
}
|
||
#endif\`,Cc=\`ToonMaterial material;
|
||
material.diffuseColor = diffuseColor.rgb;\`,Pc=\`varying vec3 vViewPosition;
|
||
struct ToonMaterial {
|
||
vec3 diffuseColor;
|
||
};
|
||
void RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {
|
||
vec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;
|
||
reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
|
||
}
|
||
void RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, 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\`,Rc=\`BlinnPhongMaterial material;
|
||
material.diffuseColor = diffuseColor.rgb;
|
||
material.specularColor = specular;
|
||
material.specularShininess = shininess;
|
||
material.specularStrength = specularStrength;\`,Lc=\`varying vec3 vViewPosition;
|
||
struct BlinnPhongMaterial {
|
||
vec3 diffuseColor;
|
||
vec3 specularColor;
|
||
float specularShininess;
|
||
float specularStrength;
|
||
};
|
||
void RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {
|
||
float dotNL = saturate( dot( geometry.normal, directLight.direction ) );
|
||
vec3 irradiance = dotNL * directLight.color;
|
||
reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
|
||
reflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularShininess ) * material.specularStrength;
|
||
}
|
||
void RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, 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\`,Ic=\`PhysicalMaterial material;
|
||
material.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );
|
||
vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );
|
||
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 SPECULAR
|
||
float specularIntensityFactor = specularIntensity;
|
||
vec3 specularColorFactor = specularColor;
|
||
#ifdef USE_SPECULARINTENSITYMAP
|
||
specularIntensityFactor *= texture2D( specularIntensityMap, vUv ).a;
|
||
#endif
|
||
#ifdef USE_SPECULARCOLORMAP
|
||
specularColorFactor *= texture2D( specularColorMap, vUv ).rgb;
|
||
#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, vUv ).x;
|
||
#endif
|
||
#ifdef USE_CLEARCOAT_ROUGHNESSMAP
|
||
material.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vUv ).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_IRIDESCENCE
|
||
material.iridescence = iridescence;
|
||
material.iridescenceIOR = iridescenceIOR;
|
||
#ifdef USE_IRIDESCENCEMAP
|
||
material.iridescence *= texture2D( iridescenceMap, vUv ).r;
|
||
#endif
|
||
#ifdef USE_IRIDESCENCE_THICKNESSMAP
|
||
material.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vUv ).g + iridescenceThicknessMinimum;
|
||
#else
|
||
material.iridescenceThickness = iridescenceThicknessMaximum;
|
||
#endif
|
||
#endif
|
||
#ifdef USE_SHEEN
|
||
material.sheenColor = sheenColor;
|
||
#ifdef USE_SHEENCOLORMAP
|
||
material.sheenColor *= texture2D( sheenColorMap, vUv ).rgb;
|
||
#endif
|
||
material.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 );
|
||
#ifdef USE_SHEENROUGHNESSMAP
|
||
material.sheenRoughness *= texture2D( sheenRoughnessMap, vUv ).a;
|
||
#endif
|
||
#endif\`,Dc=\`struct PhysicalMaterial {
|
||
vec3 diffuseColor;
|
||
float roughness;
|
||
vec3 specularColor;
|
||
float specularF90;
|
||
#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
|
||
};
|
||
vec3 clearcoatSpecular = vec3( 0.0 );
|
||
vec3 sheenSpecular = vec3( 0.0 );
|
||
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 GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {
|
||
vec3 normal = geometry.normal;
|
||
vec3 viewDir = geometry.viewDir;
|
||
vec3 position = geometry.position;
|
||
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 GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {
|
||
float dotNL = saturate( dot( geometry.normal, directLight.direction ) );
|
||
vec3 irradiance = dotNL * directLight.color;
|
||
#ifdef USE_CLEARCOAT
|
||
float dotNLcc = saturate( dot( geometry.clearcoatNormal, directLight.direction ) );
|
||
vec3 ccIrradiance = dotNLcc * directLight.color;
|
||
clearcoatSpecular += ccIrradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.clearcoatNormal, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );
|
||
#endif
|
||
#ifdef USE_SHEEN
|
||
sheenSpecular += irradiance * BRDF_Sheen( directLight.direction, geometry.viewDir, geometry.normal, material.sheenColor, material.sheenRoughness );
|
||
#endif
|
||
#ifdef USE_IRIDESCENCE
|
||
reflectedLight.directSpecular += irradiance * BRDF_GGX_Iridescence( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness );
|
||
#else
|
||
reflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularF90, material.roughness );
|
||
#endif
|
||
reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
|
||
}
|
||
void RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, 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 GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {
|
||
#ifdef USE_CLEARCOAT
|
||
clearcoatSpecular += clearcoatRadiance * EnvironmentBRDF( geometry.clearcoatNormal, geometry.viewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );
|
||
#endif
|
||
#ifdef USE_SHEEN
|
||
sheenSpecular += irradiance * material.sheenColor * IBLSheenBRDF( geometry.normal, geometry.viewDir, material.sheenRoughness );
|
||
#endif
|
||
vec3 singleScattering = vec3( 0.0 );
|
||
vec3 multiScattering = vec3( 0.0 );
|
||
vec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;
|
||
#ifdef USE_IRIDESCENCE
|
||
computeMultiscatteringIridescence( geometry.normal, geometry.viewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness, singleScattering, multiScattering );
|
||
#else
|
||
computeMultiscattering( geometry.normal, geometry.viewDir, 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 );
|
||
}\`,Nc=\`
|
||
GeometricContext geometry;
|
||
geometry.position = - vViewPosition;
|
||
geometry.normal = normal;
|
||
geometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );
|
||
#ifdef USE_CLEARCOAT
|
||
geometry.clearcoatNormal = clearcoatNormal;
|
||
#endif
|
||
#ifdef USE_IRIDESCENCE
|
||
float dotNVi = saturate( dot( normal, geometry.viewDir ) );
|
||
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, geometry, 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, geometry, 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, geometry, 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, geometry, 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, geometry, 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, geometry, 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, geometry, material, reflectedLight );
|
||
}
|
||
#pragma unroll_loop_end
|
||
#endif
|
||
#if defined( RE_IndirectDiffuse )
|
||
vec3 iblIrradiance = vec3( 0.0 );
|
||
vec3 irradiance = getAmbientLightIrradiance( ambientLightColor );
|
||
irradiance += getLightProbeIrradiance( lightProbe, geometry.normal );
|
||
#if ( NUM_HEMI_LIGHTS > 0 )
|
||
#pragma unroll_loop_start
|
||
for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {
|
||
irradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal );
|
||
}
|
||
#pragma unroll_loop_end
|
||
#endif
|
||
#endif
|
||
#if defined( RE_IndirectSpecular )
|
||
vec3 radiance = vec3( 0.0 );
|
||
vec3 clearcoatRadiance = vec3( 0.0 );
|
||
#endif\`,Fc=\`#if defined( RE_IndirectDiffuse )
|
||
#ifdef USE_LIGHTMAP
|
||
vec4 lightMapTexel = texture2D( lightMap, vUv2 );
|
||
vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;
|
||
irradiance += lightMapIrradiance;
|
||
#endif
|
||
#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )
|
||
iblIrradiance += getIBLIrradiance( geometry.normal );
|
||
#endif
|
||
#endif
|
||
#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )
|
||
radiance += getIBLRadiance( geometry.viewDir, geometry.normal, material.roughness );
|
||
#ifdef USE_CLEARCOAT
|
||
clearcoatRadiance += getIBLRadiance( geometry.viewDir, geometry.clearcoatNormal, material.clearcoatRoughness );
|
||
#endif
|
||
#endif\`,zc=\`#if defined( RE_IndirectDiffuse )
|
||
RE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );
|
||
#endif
|
||
#if defined( RE_IndirectSpecular )
|
||
RE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometry, material, reflectedLight );
|
||
#endif\`,Oc=\`#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )
|
||
gl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;
|
||
#endif\`,Uc=\`#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )
|
||
uniform float logDepthBufFC;
|
||
varying float vFragDepth;
|
||
varying float vIsPerspective;
|
||
#endif\`,Bc=\`#ifdef USE_LOGDEPTHBUF
|
||
#ifdef USE_LOGDEPTHBUF_EXT
|
||
varying float vFragDepth;
|
||
varying float vIsPerspective;
|
||
#else
|
||
uniform float logDepthBufFC;
|
||
#endif
|
||
#endif\`,kc=\`#ifdef USE_LOGDEPTHBUF
|
||
#ifdef USE_LOGDEPTHBUF_EXT
|
||
vFragDepth = 1.0 + gl_Position.w;
|
||
vIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );
|
||
#else
|
||
if ( isPerspectiveMatrix( projectionMatrix ) ) {
|
||
gl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;
|
||
gl_Position.z *= gl_Position.w;
|
||
}
|
||
#endif
|
||
#endif\`,Vc=\`#ifdef USE_MAP
|
||
vec4 sampledDiffuseColor = texture2D( map, vUv );
|
||
#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\`,Gc=\`#ifdef USE_MAP
|
||
uniform sampler2D map;
|
||
#endif\`,Hc=\`#if defined( USE_MAP ) || defined( USE_ALPHAMAP )
|
||
vec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;
|
||
#endif
|
||
#ifdef USE_MAP
|
||
diffuseColor *= texture2D( map, uv );
|
||
#endif
|
||
#ifdef USE_ALPHAMAP
|
||
diffuseColor.a *= texture2D( alphaMap, uv ).g;
|
||
#endif\`,Wc=\`#if defined( USE_MAP ) || defined( USE_ALPHAMAP )
|
||
uniform mat3 uvTransform;
|
||
#endif
|
||
#ifdef USE_MAP
|
||
uniform sampler2D map;
|
||
#endif
|
||
#ifdef USE_ALPHAMAP
|
||
uniform sampler2D alphaMap;
|
||
#endif\`,Xc=\`float metalnessFactor = metalness;
|
||
#ifdef USE_METALNESSMAP
|
||
vec4 texelMetalness = texture2D( metalnessMap, vUv );
|
||
metalnessFactor *= texelMetalness.b;
|
||
#endif\`,qc=\`#ifdef USE_METALNESSMAP
|
||
uniform sampler2D metalnessMap;
|
||
#endif\`,Yc=\`#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\`,Zc=\`#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\`,Jc=\`#ifdef USE_MORPHTARGETS
|
||
uniform float morphTargetBaseInfluence;
|
||
#ifdef MORPHTARGETS_TEXTURE
|
||
uniform float morphTargetInfluences[ MORPHTARGETS_COUNT ];
|
||
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\`,$c=\`#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\`,Kc=\`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 = normal * faceDirection;
|
||
#endif
|
||
#ifdef USE_TANGENT
|
||
vec3 tangent = normalize( vTangent );
|
||
vec3 bitangent = normalize( vBitangent );
|
||
#ifdef DOUBLE_SIDED
|
||
tangent = tangent * faceDirection;
|
||
bitangent = bitangent * faceDirection;
|
||
#endif
|
||
#if defined( TANGENTSPACE_NORMALMAP ) || defined( USE_CLEARCOAT_NORMALMAP )
|
||
mat3 vTBN = mat3( tangent, bitangent, normal );
|
||
#endif
|
||
#endif
|
||
#endif
|
||
vec3 geometryNormal = normal;\`,jc=\`#ifdef OBJECTSPACE_NORMALMAP
|
||
normal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;
|
||
#ifdef FLIP_SIDED
|
||
normal = - normal;
|
||
#endif
|
||
#ifdef DOUBLE_SIDED
|
||
normal = normal * faceDirection;
|
||
#endif
|
||
normal = normalize( normalMatrix * normal );
|
||
#elif defined( TANGENTSPACE_NORMALMAP )
|
||
vec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;
|
||
mapN.xy *= normalScale;
|
||
#ifdef USE_TANGENT
|
||
normal = normalize( vTBN * mapN );
|
||
#else
|
||
normal = perturbNormal2Arb( - vViewPosition, normal, mapN, faceDirection );
|
||
#endif
|
||
#elif defined( USE_BUMPMAP )
|
||
normal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection );
|
||
#endif\`,Qc=\`#ifndef FLAT_SHADED
|
||
varying vec3 vNormal;
|
||
#ifdef USE_TANGENT
|
||
varying vec3 vTangent;
|
||
varying vec3 vBitangent;
|
||
#endif
|
||
#endif\`,th=\`#ifndef FLAT_SHADED
|
||
varying vec3 vNormal;
|
||
#ifdef USE_TANGENT
|
||
varying vec3 vTangent;
|
||
varying vec3 vBitangent;
|
||
#endif
|
||
#endif\`,eh=\`#ifndef FLAT_SHADED
|
||
vNormal = normalize( transformedNormal );
|
||
#ifdef USE_TANGENT
|
||
vTangent = normalize( transformedTangent );
|
||
vBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );
|
||
#endif
|
||
#endif\`,nh=\`#ifdef USE_NORMALMAP
|
||
uniform sampler2D normalMap;
|
||
uniform vec2 normalScale;
|
||
#endif
|
||
#ifdef OBJECTSPACE_NORMALMAP
|
||
uniform mat3 normalMatrix;
|
||
#endif
|
||
#if ! defined ( USE_TANGENT ) && ( defined ( TANGENTSPACE_NORMALMAP ) || defined ( USE_CLEARCOAT_NORMALMAP ) )
|
||
vec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm, vec3 mapN, float faceDirection ) {
|
||
vec3 q0 = dFdx( eye_pos.xyz );
|
||
vec3 q1 = dFdy( eye_pos.xyz );
|
||
vec2 st0 = dFdx( vUv.st );
|
||
vec2 st1 = dFdy( vUv.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 : faceDirection * inversesqrt( det );
|
||
return normalize( T * ( mapN.x * scale ) + B * ( mapN.y * scale ) + N * mapN.z );
|
||
}
|
||
#endif\`,ih=\`#ifdef USE_CLEARCOAT
|
||
vec3 clearcoatNormal = geometryNormal;
|
||
#endif\`,sh=\`#ifdef USE_CLEARCOAT_NORMALMAP
|
||
vec3 clearcoatMapN = texture2D( clearcoatNormalMap, vUv ).xyz * 2.0 - 1.0;
|
||
clearcoatMapN.xy *= clearcoatNormalScale;
|
||
#ifdef USE_TANGENT
|
||
clearcoatNormal = normalize( vTBN * clearcoatMapN );
|
||
#else
|
||
clearcoatNormal = perturbNormal2Arb( - vViewPosition, clearcoatNormal, clearcoatMapN, faceDirection );
|
||
#endif
|
||
#endif\`,rh=\`#ifdef USE_CLEARCOATMAP
|
||
uniform sampler2D clearcoatMap;
|
||
#endif
|
||
#ifdef USE_CLEARCOAT_ROUGHNESSMAP
|
||
uniform sampler2D clearcoatRoughnessMap;
|
||
#endif
|
||
#ifdef USE_CLEARCOAT_NORMALMAP
|
||
uniform sampler2D clearcoatNormalMap;
|
||
uniform vec2 clearcoatNormalScale;
|
||
#endif\`,ah=\`#ifdef USE_IRIDESCENCEMAP
|
||
uniform sampler2D iridescenceMap;
|
||
#endif
|
||
#ifdef USE_IRIDESCENCE_THICKNESSMAP
|
||
uniform sampler2D iridescenceThicknessMap;
|
||
#endif\`,oh=\`#ifdef OPAQUE
|
||
diffuseColor.a = 1.0;
|
||
#endif
|
||
#ifdef USE_TRANSMISSION
|
||
diffuseColor.a *= material.transmissionAlpha + 0.1;
|
||
#endif
|
||
gl_FragColor = vec4( outgoingLight, diffuseColor.a );\`,lh=\`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 linearClipZ, const in float near, const in float far ) {
|
||
return linearClipZ * ( 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 invClipZ, const in float near, const in float far ) {
|
||
return ( near * far ) / ( ( far - near ) * invClipZ - far );
|
||
}\`,ch=\`#ifdef PREMULTIPLIED_ALPHA
|
||
gl_FragColor.rgb *= gl_FragColor.a;
|
||
#endif\`,hh=\`vec4 mvPosition = vec4( transformed, 1.0 );
|
||
#ifdef USE_INSTANCING
|
||
mvPosition = instanceMatrix * mvPosition;
|
||
#endif
|
||
mvPosition = modelViewMatrix * mvPosition;
|
||
gl_Position = projectionMatrix * mvPosition;\`,uh=\`#ifdef DITHERING
|
||
gl_FragColor.rgb = dithering( gl_FragColor.rgb );
|
||
#endif\`,dh=\`#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\`,fh=\`float roughnessFactor = roughness;
|
||
#ifdef USE_ROUGHNESSMAP
|
||
vec4 texelRoughness = texture2D( roughnessMap, vUv );
|
||
roughnessFactor *= texelRoughness.g;
|
||
#endif\`,ph=\`#ifdef USE_ROUGHNESSMAP
|
||
uniform sampler2D roughnessMap;
|
||
#endif\`,mh=\`#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 ) {
|
||
vec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );
|
||
vec3 lightToPosition = shadowCoord.xyz;
|
||
float dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear ); dp += shadowBias;
|
||
vec3 bd3D = normalize( lightToPosition );
|
||
#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )
|
||
vec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;
|
||
return (
|
||
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
|
||
return texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );
|
||
#endif
|
||
}
|
||
#endif\`,gh=\`#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\`,_h=\`#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\`,xh=\`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;
|
||
}\`,yh=\`#ifdef USE_SKINNING
|
||
mat4 boneMatX = getBoneMatrix( skinIndex.x );
|
||
mat4 boneMatY = getBoneMatrix( skinIndex.y );
|
||
mat4 boneMatZ = getBoneMatrix( skinIndex.z );
|
||
mat4 boneMatW = getBoneMatrix( skinIndex.w );
|
||
#endif\`,vh=\`#ifdef USE_SKINNING
|
||
uniform mat4 bindMatrix;
|
||
uniform mat4 bindMatrixInverse;
|
||
uniform highp sampler2D boneTexture;
|
||
uniform int boneTextureSize;
|
||
mat4 getBoneMatrix( const in float i ) {
|
||
float j = i * 4.0;
|
||
float x = mod( j, float( boneTextureSize ) );
|
||
float y = floor( j / float( boneTextureSize ) );
|
||
float dx = 1.0 / float( boneTextureSize );
|
||
float dy = 1.0 / float( boneTextureSize );
|
||
y = dy * ( y + 0.5 );
|
||
vec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );
|
||
vec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );
|
||
vec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );
|
||
vec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );
|
||
mat4 bone = mat4( v1, v2, v3, v4 );
|
||
return bone;
|
||
}
|
||
#endif\`,Mh=\`#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\`,bh=\`#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\`,wh=\`float specularStrength;
|
||
#ifdef USE_SPECULARMAP
|
||
vec4 texelSpecular = texture2D( specularMap, vUv );
|
||
specularStrength = texelSpecular.r;
|
||
#else
|
||
specularStrength = 1.0;
|
||
#endif\`,Sh=\`#ifdef USE_SPECULARMAP
|
||
uniform sampler2D specularMap;
|
||
#endif\`,Th=\`#if defined( TONE_MAPPING )
|
||
gl_FragColor.rgb = toneMapping( gl_FragColor.rgb );
|
||
#endif\`,Ah=\`#ifndef saturate
|
||
#define saturate( a ) clamp( a, 0.0, 1.0 )
|
||
#endif
|
||
uniform float toneMappingExposure;
|
||
vec3 LinearToneMapping( vec3 color ) {
|
||
return 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 );
|
||
}
|
||
vec3 CustomToneMapping( vec3 color ) { return color; }\`,Eh=\`#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, vUv ).r;
|
||
#endif
|
||
#ifdef USE_THICKNESSMAP
|
||
material.thickness *= texture2D( thicknessMap, vUv ).g;
|
||
#endif
|
||
vec3 pos = vWorldPosition;
|
||
vec3 v = normalize( cameraPosition - pos );
|
||
vec3 n = inverseTransformDirection( normal, viewMatrix );
|
||
vec4 transmission = getIBLVolumeRefraction(
|
||
n, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90,
|
||
pos, modelMatrix, viewMatrix, projectionMatrix, material.ior, material.thickness,
|
||
material.attenuationColor, material.attenuationDistance );
|
||
material.transmissionAlpha = mix( material.transmissionAlpha, transmission.a, material.transmission );
|
||
totalDiffuse = mix( totalDiffuse, transmission.rgb, material.transmission );
|
||
#endif\`,Ch=\`#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;
|
||
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 framebufferLod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );
|
||
#ifdef texture2DLodEXT
|
||
return texture2DLodEXT( transmissionSamplerMap, fragCoord.xy, framebufferLod );
|
||
#else
|
||
return texture2D( transmissionSamplerMap, fragCoord.xy, framebufferLod );
|
||
#endif
|
||
}
|
||
vec3 applyVolumeAttenuation( const in vec3 radiance, const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) {
|
||
if ( isinf( attenuationDistance ) ) {
|
||
return radiance;
|
||
} else {
|
||
vec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;
|
||
vec3 transmittance = exp( - attenuationCoefficient * transmissionDistance ); return transmittance * radiance;
|
||
}
|
||
}
|
||
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 ior, const in float thickness,
|
||
const in vec3 attenuationColor, const in float attenuationDistance ) {
|
||
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;
|
||
vec4 transmittedLight = getTransmissionSample( refractionCoords, roughness, ior );
|
||
vec3 attenuatedColor = applyVolumeAttenuation( transmittedLight.rgb, length( transmissionRay ), attenuationColor, attenuationDistance );
|
||
vec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );
|
||
return vec4( ( 1.0 - F ) * attenuatedColor * diffuseColor, transmittedLight.a );
|
||
}
|
||
#endif\`,Ph=\`#if ( defined( USE_UV ) && ! defined( UVS_VERTEX_ONLY ) )
|
||
varying vec2 vUv;
|
||
#endif\`,Rh=\`#ifdef USE_UV
|
||
#ifdef UVS_VERTEX_ONLY
|
||
vec2 vUv;
|
||
#else
|
||
varying vec2 vUv;
|
||
#endif
|
||
uniform mat3 uvTransform;
|
||
#endif\`,Lh=\`#ifdef USE_UV
|
||
vUv = ( uvTransform * vec3( uv, 1 ) ).xy;
|
||
#endif\`,Ih=\`#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )
|
||
varying vec2 vUv2;
|
||
#endif\`,Dh=\`#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )
|
||
attribute vec2 uv2;
|
||
varying vec2 vUv2;
|
||
uniform mat3 uv2Transform;
|
||
#endif\`,Nh=\`#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )
|
||
vUv2 = ( uv2Transform * vec3( uv2, 1 ) ).xy;
|
||
#endif\`,Fh=\`#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_INSTANCING
|
||
worldPosition = instanceMatrix * worldPosition;
|
||
#endif
|
||
worldPosition = modelMatrix * worldPosition;
|
||
#endif\`,zh=\`varying vec2 vUv;
|
||
uniform mat3 uvTransform;
|
||
void main() {
|
||
vUv = ( uvTransform * vec3( uv, 1 ) ).xy;
|
||
gl_Position = vec4( position.xy, 1.0, 1.0 );
|
||
}\`,Oh=\`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 <encodings_fragment>
|
||
}\`,Uh=\`varying vec3 vWorldDirection;
|
||
#include <common>
|
||
void main() {
|
||
vWorldDirection = transformDirection( position, modelMatrix );
|
||
#include <begin_vertex>
|
||
#include <project_vertex>
|
||
gl_Position.z = gl_Position.w;
|
||
}\`,Bh=\`#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;
|
||
varying vec3 vWorldDirection;
|
||
#include <cube_uv_reflection_fragment>
|
||
void main() {
|
||
#ifdef ENVMAP_TYPE_CUBE
|
||
vec4 texColor = textureCube( envMap, vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) );
|
||
#elif defined( ENVMAP_TYPE_CUBE_UV )
|
||
vec4 texColor = textureCubeUV( envMap, 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 <encodings_fragment>
|
||
}\`,kh=\`varying vec3 vWorldDirection;
|
||
#include <common>
|
||
void main() {
|
||
vWorldDirection = transformDirection( position, modelMatrix );
|
||
#include <begin_vertex>
|
||
#include <project_vertex>
|
||
gl_Position.z = gl_Position.w;
|
||
}\`,Vh=\`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 <encodings_fragment>
|
||
}\`,Gh=\`#include <common>
|
||
#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 <skinbase_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;
|
||
}\`,Hh=\`#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 <logdepthbuf_pars_fragment>
|
||
#include <clipping_planes_pars_fragment>
|
||
varying vec2 vHighPrecisionZW;
|
||
void main() {
|
||
#include <clipping_planes_fragment>
|
||
vec4 diffuseColor = vec4( 1.0 );
|
||
#if DEPTH_PACKING == 3200
|
||
diffuseColor.a = opacity;
|
||
#endif
|
||
#include <map_fragment>
|
||
#include <alphamap_fragment>
|
||
#include <alphatest_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
|
||
}\`,Wh=\`#define DISTANCE
|
||
varying vec3 vWorldPosition;
|
||
#include <common>
|
||
#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 <skinbase_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;
|
||
}\`,Xh=\`#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 <clipping_planes_pars_fragment>
|
||
void main () {
|
||
#include <clipping_planes_fragment>
|
||
vec4 diffuseColor = vec4( 1.0 );
|
||
#include <map_fragment>
|
||
#include <alphamap_fragment>
|
||
#include <alphatest_fragment>
|
||
float dist = length( vWorldPosition - referencePosition );
|
||
dist = ( dist - nearDistance ) / ( farDistance - nearDistance );
|
||
dist = saturate( dist );
|
||
gl_FragColor = packDepthToRGBA( dist );
|
||
}\`,qh=\`varying vec3 vWorldDirection;
|
||
#include <common>
|
||
void main() {
|
||
vWorldDirection = transformDirection( position, modelMatrix );
|
||
#include <begin_vertex>
|
||
#include <project_vertex>
|
||
}\`,Yh=\`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 <encodings_fragment>
|
||
}\`,Zh=\`uniform float scale;
|
||
attribute float lineDistance;
|
||
varying float vLineDistance;
|
||
#include <common>
|
||
#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 <color_vertex>
|
||
#include <morphcolor_vertex>
|
||
#include <begin_vertex>
|
||
#include <morphtarget_vertex>
|
||
#include <project_vertex>
|
||
#include <logdepthbuf_vertex>
|
||
#include <clipping_planes_vertex>
|
||
#include <fog_vertex>
|
||
}\`,Jh=\`uniform vec3 diffuse;
|
||
uniform float opacity;
|
||
uniform float dashSize;
|
||
uniform float totalSize;
|
||
varying float vLineDistance;
|
||
#include <common>
|
||
#include <color_pars_fragment>
|
||
#include <fog_pars_fragment>
|
||
#include <logdepthbuf_pars_fragment>
|
||
#include <clipping_planes_pars_fragment>
|
||
void main() {
|
||
#include <clipping_planes_fragment>
|
||
if ( mod( vLineDistance, totalSize ) > dashSize ) {
|
||
discard;
|
||
}
|
||
vec3 outgoingLight = vec3( 0.0 );
|
||
vec4 diffuseColor = vec4( diffuse, opacity );
|
||
#include <logdepthbuf_fragment>
|
||
#include <color_fragment>
|
||
outgoingLight = diffuseColor.rgb;
|
||
#include <output_fragment>
|
||
#include <tonemapping_fragment>
|
||
#include <encodings_fragment>
|
||
#include <fog_fragment>
|
||
#include <premultiplied_alpha_fragment>
|
||
}\`,$h=\`#include <common>
|
||
#include <uv_pars_vertex>
|
||
#include <uv2_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 <uv2_vertex>
|
||
#include <color_vertex>
|
||
#include <morphcolor_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>
|
||
}\`,Kh=\`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 <uv2_pars_fragment>
|
||
#include <map_pars_fragment>
|
||
#include <alphamap_pars_fragment>
|
||
#include <alphatest_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() {
|
||
#include <clipping_planes_fragment>
|
||
vec4 diffuseColor = vec4( diffuse, opacity );
|
||
#include <logdepthbuf_fragment>
|
||
#include <map_fragment>
|
||
#include <color_fragment>
|
||
#include <alphamap_fragment>
|
||
#include <alphatest_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, vUv2 );
|
||
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 <output_fragment>
|
||
#include <tonemapping_fragment>
|
||
#include <encodings_fragment>
|
||
#include <fog_fragment>
|
||
#include <premultiplied_alpha_fragment>
|
||
#include <dithering_fragment>
|
||
}\`,jh=\`#define LAMBERT
|
||
varying vec3 vViewPosition;
|
||
#include <common>
|
||
#include <uv_pars_vertex>
|
||
#include <uv2_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 <uv2_vertex>
|
||
#include <color_vertex>
|
||
#include <morphcolor_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>
|
||
}\`,Qh=\`#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 <uv2_pars_fragment>
|
||
#include <map_pars_fragment>
|
||
#include <alphamap_pars_fragment>
|
||
#include <alphatest_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() {
|
||
#include <clipping_planes_fragment>
|
||
vec4 diffuseColor = vec4( diffuse, opacity );
|
||
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 <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 <output_fragment>
|
||
#include <tonemapping_fragment>
|
||
#include <encodings_fragment>
|
||
#include <fog_fragment>
|
||
#include <premultiplied_alpha_fragment>
|
||
#include <dithering_fragment>
|
||
}\`,tu=\`#define MATCAP
|
||
varying vec3 vViewPosition;
|
||
#include <common>
|
||
#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 <morphcolor_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;
|
||
}\`,eu=\`#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 <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() {
|
||
#include <clipping_planes_fragment>
|
||
vec4 diffuseColor = vec4( diffuse, opacity );
|
||
#include <logdepthbuf_fragment>
|
||
#include <map_fragment>
|
||
#include <color_fragment>
|
||
#include <alphamap_fragment>
|
||
#include <alphatest_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 <output_fragment>
|
||
#include <tonemapping_fragment>
|
||
#include <encodings_fragment>
|
||
#include <fog_fragment>
|
||
#include <premultiplied_alpha_fragment>
|
||
#include <dithering_fragment>
|
||
}\`,nu=\`#define NORMAL
|
||
#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )
|
||
varying vec3 vViewPosition;
|
||
#endif
|
||
#include <common>
|
||
#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 <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>
|
||
#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )
|
||
vViewPosition = - mvPosition.xyz;
|
||
#endif
|
||
}\`,iu=\`#define NORMAL
|
||
uniform float opacity;
|
||
#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )
|
||
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() {
|
||
#include <clipping_planes_fragment>
|
||
#include <logdepthbuf_fragment>
|
||
#include <normal_fragment_begin>
|
||
#include <normal_fragment_maps>
|
||
gl_FragColor = vec4( packNormalToRGB( normal ), opacity );
|
||
#ifdef OPAQUE
|
||
gl_FragColor.a = 1.0;
|
||
#endif
|
||
}\`,su=\`#define PHONG
|
||
varying vec3 vViewPosition;
|
||
#include <common>
|
||
#include <uv_pars_vertex>
|
||
#include <uv2_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 <uv2_vertex>
|
||
#include <color_vertex>
|
||
#include <morphcolor_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>
|
||
}\`,ru=\`#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 <uv2_pars_fragment>
|
||
#include <map_pars_fragment>
|
||
#include <alphamap_pars_fragment>
|
||
#include <alphatest_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() {
|
||
#include <clipping_planes_fragment>
|
||
vec4 diffuseColor = vec4( diffuse, opacity );
|
||
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 <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 <output_fragment>
|
||
#include <tonemapping_fragment>
|
||
#include <encodings_fragment>
|
||
#include <fog_fragment>
|
||
#include <premultiplied_alpha_fragment>
|
||
#include <dithering_fragment>
|
||
}\`,au=\`#define STANDARD
|
||
varying vec3 vViewPosition;
|
||
#ifdef USE_TRANSMISSION
|
||
varying vec3 vWorldPosition;
|
||
#endif
|
||
#include <common>
|
||
#include <uv_pars_vertex>
|
||
#include <uv2_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 <uv2_vertex>
|
||
#include <color_vertex>
|
||
#include <morphcolor_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
|
||
}\`,ou=\`#define STANDARD
|
||
#ifdef PHYSICAL
|
||
#define IOR
|
||
#define SPECULAR
|
||
#endif
|
||
uniform vec3 diffuse;
|
||
uniform vec3 emissive;
|
||
uniform float roughness;
|
||
uniform float metalness;
|
||
uniform float opacity;
|
||
#ifdef IOR
|
||
uniform float ior;
|
||
#endif
|
||
#ifdef SPECULAR
|
||
uniform float specularIntensity;
|
||
uniform vec3 specularColor;
|
||
#ifdef USE_SPECULARINTENSITYMAP
|
||
uniform sampler2D specularIntensityMap;
|
||
#endif
|
||
#ifdef USE_SPECULARCOLORMAP
|
||
uniform sampler2D specularColorMap;
|
||
#endif
|
||
#endif
|
||
#ifdef USE_CLEARCOAT
|
||
uniform float clearcoat;
|
||
uniform float clearcoatRoughness;
|
||
#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_SHEENCOLORMAP
|
||
uniform sampler2D sheenColorMap;
|
||
#endif
|
||
#ifdef USE_SHEENROUGHNESSMAP
|
||
uniform sampler2D sheenRoughnessMap;
|
||
#endif
|
||
#endif
|
||
varying vec3 vViewPosition;
|
||
#include <common>
|
||
#include <packing>
|
||
#include <dithering_pars_fragment>
|
||
#include <color_pars_fragment>
|
||
#include <uv_pars_fragment>
|
||
#include <uv2_pars_fragment>
|
||
#include <map_pars_fragment>
|
||
#include <alphamap_pars_fragment>
|
||
#include <alphatest_pars_fragment>
|
||
#include <aomap_pars_fragment>
|
||
#include <lightmap_pars_fragment>
|
||
#include <emissivemap_pars_fragment>
|
||
#include <bsdfs>
|
||
#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() {
|
||
#include <clipping_planes_fragment>
|
||
vec4 diffuseColor = vec4( diffuse, opacity );
|
||
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 <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 + sheenSpecular;
|
||
#endif
|
||
#ifdef USE_CLEARCOAT
|
||
float dotNVcc = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) );
|
||
vec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );
|
||
outgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + clearcoatSpecular * material.clearcoat;
|
||
#endif
|
||
#include <output_fragment>
|
||
#include <tonemapping_fragment>
|
||
#include <encodings_fragment>
|
||
#include <fog_fragment>
|
||
#include <premultiplied_alpha_fragment>
|
||
#include <dithering_fragment>
|
||
}\`,lu=\`#define TOON
|
||
varying vec3 vViewPosition;
|
||
#include <common>
|
||
#include <uv_pars_vertex>
|
||
#include <uv2_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 <uv2_vertex>
|
||
#include <color_vertex>
|
||
#include <morphcolor_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>
|
||
}\`,cu=\`#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 <uv2_pars_fragment>
|
||
#include <map_pars_fragment>
|
||
#include <alphamap_pars_fragment>
|
||
#include <alphatest_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() {
|
||
#include <clipping_planes_fragment>
|
||
vec4 diffuseColor = vec4( diffuse, opacity );
|
||
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 <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 <output_fragment>
|
||
#include <tonemapping_fragment>
|
||
#include <encodings_fragment>
|
||
#include <fog_fragment>
|
||
#include <premultiplied_alpha_fragment>
|
||
#include <dithering_fragment>
|
||
}\`,hu=\`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>
|
||
void main() {
|
||
#include <color_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>
|
||
}\`,uu=\`uniform vec3 diffuse;
|
||
uniform float opacity;
|
||
#include <common>
|
||
#include <color_pars_fragment>
|
||
#include <map_particle_pars_fragment>
|
||
#include <alphatest_pars_fragment>
|
||
#include <fog_pars_fragment>
|
||
#include <logdepthbuf_pars_fragment>
|
||
#include <clipping_planes_pars_fragment>
|
||
void main() {
|
||
#include <clipping_planes_fragment>
|
||
vec3 outgoingLight = vec3( 0.0 );
|
||
vec4 diffuseColor = vec4( diffuse, opacity );
|
||
#include <logdepthbuf_fragment>
|
||
#include <map_particle_fragment>
|
||
#include <color_fragment>
|
||
#include <alphatest_fragment>
|
||
outgoingLight = diffuseColor.rgb;
|
||
#include <output_fragment>
|
||
#include <tonemapping_fragment>
|
||
#include <encodings_fragment>
|
||
#include <fog_fragment>
|
||
#include <premultiplied_alpha_fragment>
|
||
}\`,du=\`#include <common>
|
||
#include <fog_pars_vertex>
|
||
#include <morphtarget_pars_vertex>
|
||
#include <skinning_pars_vertex>
|
||
#include <shadowmap_pars_vertex>
|
||
void main() {
|
||
#include <beginnormal_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 <worldpos_vertex>
|
||
#include <shadowmap_vertex>
|
||
#include <fog_vertex>
|
||
}\`,fu=\`uniform vec3 color;
|
||
uniform float opacity;
|
||
#include <common>
|
||
#include <packing>
|
||
#include <fog_pars_fragment>
|
||
#include <bsdfs>
|
||
#include <lights_pars_begin>
|
||
#include <shadowmap_pars_fragment>
|
||
#include <shadowmask_pars_fragment>
|
||
void main() {
|
||
gl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );
|
||
#include <tonemapping_fragment>
|
||
#include <encodings_fragment>
|
||
#include <fog_fragment>
|
||
}\`,pu=\`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>
|
||
}\`,mu=\`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 <fog_pars_fragment>
|
||
#include <logdepthbuf_pars_fragment>
|
||
#include <clipping_planes_pars_fragment>
|
||
void main() {
|
||
#include <clipping_planes_fragment>
|
||
vec3 outgoingLight = vec3( 0.0 );
|
||
vec4 diffuseColor = vec4( diffuse, opacity );
|
||
#include <logdepthbuf_fragment>
|
||
#include <map_fragment>
|
||
#include <alphamap_fragment>
|
||
#include <alphatest_fragment>
|
||
outgoingLight = diffuseColor.rgb;
|
||
#include <output_fragment>
|
||
#include <tonemapping_fragment>
|
||
#include <encodings_fragment>
|
||
#include <fog_fragment>
|
||
}\`,wt={alphamap_fragment:Ul,alphamap_pars_fragment:Bl,alphatest_fragment:kl,alphatest_pars_fragment:Vl,aomap_fragment:Gl,aomap_pars_fragment:Hl,begin_vertex:Wl,beginnormal_vertex:Xl,bsdfs:ql,iridescence_fragment:Yl,bumpmap_pars_fragment:Zl,clipping_planes_fragment:Jl,clipping_planes_pars_fragment:$l,clipping_planes_pars_vertex:Kl,clipping_planes_vertex:jl,color_fragment:Ql,color_pars_fragment:tc,color_pars_vertex:ec,color_vertex:nc,common:ic,cube_uv_reflection_fragment:sc,defaultnormal_vertex:rc,displacementmap_pars_vertex:ac,displacementmap_vertex:oc,emissivemap_fragment:lc,emissivemap_pars_fragment:cc,encodings_fragment:hc,encodings_pars_fragment:uc,envmap_fragment:dc,envmap_common_pars_fragment:fc,envmap_pars_fragment:pc,envmap_pars_vertex:mc,envmap_physical_pars_fragment:Ec,envmap_vertex:gc,fog_vertex:_c,fog_pars_vertex:xc,fog_fragment:yc,fog_pars_fragment:vc,gradientmap_pars_fragment:Mc,lightmap_fragment:bc,lightmap_pars_fragment:wc,lights_lambert_fragment:Sc,lights_lambert_pars_fragment:Tc,lights_pars_begin:Ac,lights_toon_fragment:Cc,lights_toon_pars_fragment:Pc,lights_phong_fragment:Rc,lights_phong_pars_fragment:Lc,lights_physical_fragment:Ic,lights_physical_pars_fragment:Dc,lights_fragment_begin:Nc,lights_fragment_maps:Fc,lights_fragment_end:zc,logdepthbuf_fragment:Oc,logdepthbuf_pars_fragment:Uc,logdepthbuf_pars_vertex:Bc,logdepthbuf_vertex:kc,map_fragment:Vc,map_pars_fragment:Gc,map_particle_fragment:Hc,map_particle_pars_fragment:Wc,metalnessmap_fragment:Xc,metalnessmap_pars_fragment:qc,morphcolor_vertex:Yc,morphnormal_vertex:Zc,morphtarget_pars_vertex:Jc,morphtarget_vertex:$c,normal_fragment_begin:Kc,normal_fragment_maps:jc,normal_pars_fragment:Qc,normal_pars_vertex:th,normal_vertex:eh,normalmap_pars_fragment:nh,clearcoat_normal_fragment_begin:ih,clearcoat_normal_fragment_maps:sh,clearcoat_pars_fragment:rh,iridescence_pars_fragment:ah,output_fragment:oh,packing:lh,premultiplied_alpha_fragment:ch,project_vertex:hh,dithering_fragment:uh,dithering_pars_fragment:dh,roughnessmap_fragment:fh,roughnessmap_pars_fragment:ph,shadowmap_pars_fragment:mh,shadowmap_pars_vertex:gh,shadowmap_vertex:_h,shadowmask_pars_fragment:xh,skinbase_vertex:yh,skinning_pars_vertex:vh,skinning_vertex:Mh,skinnormal_vertex:bh,specularmap_fragment:wh,specularmap_pars_fragment:Sh,tonemapping_fragment:Th,tonemapping_pars_fragment:Ah,transmission_fragment:Eh,transmission_pars_fragment:Ch,uv_pars_fragment:Ph,uv_pars_vertex:Rh,uv_vertex:Lh,uv2_pars_fragment:Ih,uv2_pars_vertex:Dh,uv2_vertex:Nh,worldpos_vertex:Fh,background_vert:zh,background_frag:Oh,backgroundCube_vert:Uh,backgroundCube_frag:Bh,cube_vert:kh,cube_frag:Vh,depth_vert:Gh,depth_frag:Hh,distanceRGBA_vert:Wh,distanceRGBA_frag:Xh,equirect_vert:qh,equirect_frag:Yh,linedashed_vert:Zh,linedashed_frag:Jh,meshbasic_vert:$h,meshbasic_frag:Kh,meshlambert_vert:jh,meshlambert_frag:Qh,meshmatcap_vert:tu,meshmatcap_frag:eu,meshnormal_vert:nu,meshnormal_frag:iu,meshphong_vert:su,meshphong_frag:ru,meshphysical_vert:au,meshphysical_frag:ou,meshtoon_vert:lu,meshtoon_frag:cu,points_vert:hu,points_frag:uu,shadow_vert:du,shadow_frag:fu,sprite_vert:pu,sprite_frag:mu},et={common:{diffuse:{value:new Ot(16777215)},opacity:{value:1},map:{value:null},uvTransform:{value:new oe},uv2Transform:{value:new oe},alphaMap:{value:null},alphaTest:{value:0}},specularmap:{specularMap:{value:null}},envmap:{envMap:{value:null},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1}},emissivemap:{emissiveMap:{value:null}},bumpmap:{bumpMap:{value:null},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalScale:{value:new Nt(1,1)}},displacementmap:{displacementMap:{value:null},displacementScale:{value:1},displacementBias:{value:0}},roughnessmap:{roughnessMap:{value:null}},metalnessmap:{metalnessMap:{value:null}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new Ot(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 Ot(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaTest:{value:0},uvTransform:{value:new oe}},sprite:{diffuse:{value:new Ot(16777215)},opacity:{value:1},center:{value:new Nt(.5,.5)},rotation:{value:0},map:{value:null},alphaMap:{value:null},alphaTest:{value:0},uvTransform:{value:new oe}}},De={basic:{uniforms:re([et.common,et.specularmap,et.envmap,et.aomap,et.lightmap,et.fog]),vertexShader:wt.meshbasic_vert,fragmentShader:wt.meshbasic_frag},lambert:{uniforms:re([et.common,et.specularmap,et.envmap,et.aomap,et.lightmap,et.emissivemap,et.bumpmap,et.normalmap,et.displacementmap,et.fog,et.lights,{emissive:{value:new Ot(0)}}]),vertexShader:wt.meshlambert_vert,fragmentShader:wt.meshlambert_frag},phong:{uniforms:re([et.common,et.specularmap,et.envmap,et.aomap,et.lightmap,et.emissivemap,et.bumpmap,et.normalmap,et.displacementmap,et.fog,et.lights,{emissive:{value:new Ot(0)},specular:{value:new Ot(1118481)},shininess:{value:30}}]),vertexShader:wt.meshphong_vert,fragmentShader:wt.meshphong_frag},standard:{uniforms:re([et.common,et.envmap,et.aomap,et.lightmap,et.emissivemap,et.bumpmap,et.normalmap,et.displacementmap,et.roughnessmap,et.metalnessmap,et.fog,et.lights,{emissive:{value:new Ot(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:wt.meshphysical_vert,fragmentShader:wt.meshphysical_frag},toon:{uniforms:re([et.common,et.aomap,et.lightmap,et.emissivemap,et.bumpmap,et.normalmap,et.displacementmap,et.gradientmap,et.fog,et.lights,{emissive:{value:new Ot(0)}}]),vertexShader:wt.meshtoon_vert,fragmentShader:wt.meshtoon_frag},matcap:{uniforms:re([et.common,et.bumpmap,et.normalmap,et.displacementmap,et.fog,{matcap:{value:null}}]),vertexShader:wt.meshmatcap_vert,fragmentShader:wt.meshmatcap_frag},points:{uniforms:re([et.points,et.fog]),vertexShader:wt.points_vert,fragmentShader:wt.points_frag},dashed:{uniforms:re([et.common,et.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:wt.linedashed_vert,fragmentShader:wt.linedashed_frag},depth:{uniforms:re([et.common,et.displacementmap]),vertexShader:wt.depth_vert,fragmentShader:wt.depth_frag},normal:{uniforms:re([et.common,et.bumpmap,et.normalmap,et.displacementmap,{opacity:{value:1}}]),vertexShader:wt.meshnormal_vert,fragmentShader:wt.meshnormal_frag},sprite:{uniforms:re([et.sprite,et.fog]),vertexShader:wt.sprite_vert,fragmentShader:wt.sprite_frag},background:{uniforms:{uvTransform:{value:new oe},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:wt.background_vert,fragmentShader:wt.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1}},vertexShader:wt.backgroundCube_vert,fragmentShader:wt.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:wt.cube_vert,fragmentShader:wt.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:wt.equirect_vert,fragmentShader:wt.equirect_frag},distanceRGBA:{uniforms:re([et.common,et.displacementmap,{referencePosition:{value:new N},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:wt.distanceRGBA_vert,fragmentShader:wt.distanceRGBA_frag},shadow:{uniforms:re([et.lights,et.fog,{color:{value:new Ot(0)},opacity:{value:1}}]),vertexShader:wt.shadow_vert,fragmentShader:wt.shadow_frag}};De.physical={uniforms:re([De.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatNormalScale:{value:new Nt(1,1)},clearcoatNormalMap:{value:null},iridescence:{value:0},iridescenceMap:{value:null},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},sheen:{value:0},sheenColor:{value:new Ot(0)},sheenColorMap:{value:null},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},transmission:{value:0},transmissionMap:{value:null},transmissionSamplerSize:{value:new Nt},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},attenuationDistance:{value:0},attenuationColor:{value:new Ot(0)},specularIntensity:{value:1},specularIntensityMap:{value:null},specularColor:{value:new Ot(1,1,1)},specularColorMap:{value:null}}]),vertexShader:wt.meshphysical_vert,fragmentShader:wt.meshphysical_frag};var zi={r:0,b:0,g:0};function gu(r,t,e,n,i,s,o){let a=new Ot(0),c=s===!0?0:1,l,h,f=null,u=0,m=null;function _(d,v){let T=!1,b=v.isScene===!0?v.background:null;b&&b.isTexture&&(b=(v.backgroundBlurriness>0?e:t).get(b));let M=r.xr,A=M.getSession&&M.getSession();A&&A.environmentBlendMode==="additive"&&(b=null),b===null?p(a,c):b&&b.isColor&&(p(b,1),T=!0),(r.autoClear||T)&&r.clear(r.autoClearColor,r.autoClearDepth,r.autoClearStencil),b&&(b.isCubeTexture||b.mapping===ns)?(h===void 0&&(h=new Ne(new bn(1,1,1),new Ze({name:"BackgroundCubeMaterial",uniforms:$n(De.backgroundCube.uniforms),vertexShader:De.backgroundCube.vertexShader,fragmentShader:De.backgroundCube.fragmentShader,side:ye,depthTest:!1,depthWrite:!1,fog:!1})),h.geometry.deleteAttribute("normal"),h.geometry.deleteAttribute("uv"),h.onBeforeRender=function(C,I,x){this.matrixWorld.copyPosition(x.matrixWorld)},Object.defineProperty(h.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),i.update(h)),h.material.uniforms.envMap.value=b,h.material.uniforms.flipEnvMap.value=b.isCubeTexture&&b.isRenderTargetTexture===!1?-1:1,h.material.uniforms.backgroundBlurriness.value=v.backgroundBlurriness,h.material.uniforms.backgroundIntensity.value=v.backgroundIntensity,h.material.toneMapped=b.encoding!==zt,(f!==b||u!==b.version||m!==r.toneMapping)&&(h.material.needsUpdate=!0,f=b,u=b.version,m=r.toneMapping),h.layers.enableAll(),d.unshift(h,h.geometry,h.material,0,0,null)):b&&b.isTexture&&(l===void 0&&(l=new Ne(new xi(2,2),new Ze({name:"BackgroundMaterial",uniforms:$n(De.background.uniforms),vertexShader:De.background.vertexShader,fragmentShader:De.background.fragmentShader,side:nn,depthTest:!1,depthWrite:!1,fog:!1})),l.geometry.deleteAttribute("normal"),Object.defineProperty(l.material,"map",{get:function(){return this.uniforms.t2D.value}}),i.update(l)),l.material.uniforms.t2D.value=b,l.material.uniforms.backgroundIntensity.value=v.backgroundIntensity,l.material.toneMapped=b.encoding!==zt,b.matrixAutoUpdate===!0&&b.updateMatrix(),l.material.uniforms.uvTransform.value.copy(b.matrix),(f!==b||u!==b.version||m!==r.toneMapping)&&(l.material.needsUpdate=!0,f=b,u=b.version,m=r.toneMapping),l.layers.enableAll(),d.unshift(l,l.geometry,l.material,0,0,null))}function p(d,v){d.getRGB(zi,Ka(r)),n.buffers.color.setClear(zi.r,zi.g,zi.b,v,o)}return{getClearColor:function(){return a},setClearColor:function(d,v=1){a.set(d),c=v,p(a,c)},getClearAlpha:function(){return c},setClearAlpha:function(d){c=d,p(a,c)},render:_}}function _u(r,t,e,n){let i=r.getParameter(34921),s=n.isWebGL2?null:t.get("OES_vertex_array_object"),o=n.isWebGL2||s!==null,a={},c=d(null),l=c,h=!1;function f(R,G,Y,j,W){let Q=!1;if(o){let Z=p(j,Y,G);l!==Z&&(l=Z,m(l.object)),Q=v(R,j,Y,W),Q&&T(R,j,Y,W)}else{let Z=G.wireframe===!0;(l.geometry!==j.id||l.program!==Y.id||l.wireframe!==Z)&&(l.geometry=j.id,l.program=Y.id,l.wireframe=Z,Q=!0)}W!==null&&e.update(W,34963),(Q||h)&&(h=!1,x(R,G,Y,j),W!==null&&r.bindBuffer(34963,e.get(W).buffer))}function u(){return n.isWebGL2?r.createVertexArray():s.createVertexArrayOES()}function m(R){return n.isWebGL2?r.bindVertexArray(R):s.bindVertexArrayOES(R)}function _(R){return n.isWebGL2?r.deleteVertexArray(R):s.deleteVertexArrayOES(R)}function p(R,G,Y){let j=Y.wireframe===!0,W=a[R.id];W===void 0&&(W={},a[R.id]=W);let Q=W[G.id];Q===void 0&&(Q={},W[G.id]=Q);let Z=Q[j];return Z===void 0&&(Z=d(u()),Q[j]=Z),Z}function d(R){let G=[],Y=[],j=[];for(let W=0;W<i;W++)G[W]=0,Y[W]=0,j[W]=0;return{geometry:null,program:null,wireframe:!1,newAttributes:G,enabledAttributes:Y,attributeDivisors:j,object:R,attributes:{},index:null}}function v(R,G,Y,j){let W=l.attributes,Q=G.attributes,Z=0,ft=Y.getAttributes();for(let F in ft)if(ft[F].location>=0){let nt=W[F],it=Q[F];if(it===void 0&&(F==="instanceMatrix"&&R.instanceMatrix&&(it=R.instanceMatrix),F==="instanceColor"&&R.instanceColor&&(it=R.instanceColor)),nt===void 0||nt.attribute!==it||it&&nt.data!==it.data)return!0;Z++}return l.attributesNum!==Z||l.index!==j}function T(R,G,Y,j){let W={},Q=G.attributes,Z=0,ft=Y.getAttributes();for(let F in ft)if(ft[F].location>=0){let nt=Q[F];nt===void 0&&(F==="instanceMatrix"&&R.instanceMatrix&&(nt=R.instanceMatrix),F==="instanceColor"&&R.instanceColor&&(nt=R.instanceColor));let it={};it.attribute=nt,nt&&nt.data&&(it.data=nt.data),W[F]=it,Z++}l.attributes=W,l.attributesNum=Z,l.index=j}function b(){let R=l.newAttributes;for(let G=0,Y=R.length;G<Y;G++)R[G]=0}function M(R){A(R,0)}function A(R,G){let Y=l.newAttributes,j=l.enabledAttributes,W=l.attributeDivisors;Y[R]=1,j[R]===0&&(r.enableVertexAttribArray(R),j[R]=1),W[R]!==G&&((n.isWebGL2?r:t.get("ANGLE_instanced_arrays"))[n.isWebGL2?"vertexAttribDivisor":"vertexAttribDivisorANGLE"](R,G),W[R]=G)}function C(){let R=l.newAttributes,G=l.enabledAttributes;for(let Y=0,j=G.length;Y<j;Y++)G[Y]!==R[Y]&&(r.disableVertexAttribArray(Y),G[Y]=0)}function I(R,G,Y,j,W,Q){n.isWebGL2===!0&&(Y===5124||Y===5125)?r.vertexAttribIPointer(R,G,Y,W,Q):r.vertexAttribPointer(R,G,Y,j,W,Q)}function x(R,G,Y,j){if(n.isWebGL2===!1&&(R.isInstancedMesh||j.isInstancedBufferGeometry)&&t.get("ANGLE_instanced_arrays")===null)return;b();let W=j.attributes,Q=Y.getAttributes(),Z=G.defaultAttributeValues;for(let ft in Q){let F=Q[ft];if(F.location>=0){let J=W[ft];if(J===void 0&&(ft==="instanceMatrix"&&R.instanceMatrix&&(J=R.instanceMatrix),ft==="instanceColor"&&R.instanceColor&&(J=R.instanceColor)),J!==void 0){let nt=J.normalized,it=J.itemSize,O=e.get(J);if(O===void 0)continue;let Mt=O.buffer,ht=O.type,ut=O.bytesPerElement;if(J.isInterleavedBufferAttribute){let ot=J.data,Ft=ot.stride,bt=J.offset;if(ot.isInstancedInterleavedBuffer){for(let xt=0;xt<F.locationSize;xt++)A(F.location+xt,ot.meshPerAttribute);R.isInstancedMesh!==!0&&j._maxInstanceCount===void 0&&(j._maxInstanceCount=ot.meshPerAttribute*ot.count)}else for(let xt=0;xt<F.locationSize;xt++)M(F.location+xt);r.bindBuffer(34962,Mt);for(let xt=0;xt<F.locationSize;xt++)I(F.location+xt,it/F.locationSize,ht,nt,Ft*ut,(bt+it/F.locationSize*xt)*ut)}else{if(J.isInstancedBufferAttribute){for(let ot=0;ot<F.locationSize;ot++)A(F.location+ot,J.meshPerAttribute);R.isInstancedMesh!==!0&&j._maxInstanceCount===void 0&&(j._maxInstanceCount=J.meshPerAttribute*J.count)}else for(let ot=0;ot<F.locationSize;ot++)M(F.location+ot);r.bindBuffer(34962,Mt);for(let ot=0;ot<F.locationSize;ot++)I(F.location+ot,it/F.locationSize,ht,nt,it*ut,it/F.locationSize*ot*ut)}}else if(Z!==void 0){let nt=Z[ft];if(nt!==void 0)switch(nt.length){case 2:r.vertexAttrib2fv(F.location,nt);break;case 3:r.vertexAttrib3fv(F.location,nt);break;case 4:r.vertexAttrib4fv(F.location,nt);break;default:r.vertexAttrib1fv(F.location,nt)}}}}C()}function S(){q();for(let R in a){let G=a[R];for(let Y in G){let j=G[Y];for(let W in j)_(j[W].object),delete j[W];delete G[Y]}delete a[R]}}function L(R){if(a[R.id]===void 0)return;let G=a[R.id];for(let Y in G){let j=G[Y];for(let W in j)_(j[W].object),delete j[W];delete G[Y]}delete a[R.id]}function X(R){for(let G in a){let Y=a[G];if(Y[R.id]===void 0)continue;let j=Y[R.id];for(let W in j)_(j[W].object),delete j[W];delete Y[R.id]}}function q(){z(),h=!0,l!==c&&(l=c,m(l.object))}function z(){c.geometry=null,c.program=null,c.wireframe=!1}return{setup:f,reset:q,resetDefaultState:z,dispose:S,releaseStatesOfGeometry:L,releaseStatesOfProgram:X,initAttributes:b,enableAttribute:M,disableUnusedAttributes:C}}function xu(r,t,e,n){let i=n.isWebGL2,s;function o(l){s=l}function a(l,h){r.drawArrays(s,l,h),e.update(h,s,1)}function c(l,h,f){if(f===0)return;let u,m;if(i)u=r,m="drawArraysInstanced";else if(u=t.get("ANGLE_instanced_arrays"),m="drawArraysInstancedANGLE",u===null){console.error("THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");return}u[m](s,l,h,f),e.update(h,s,f)}this.setMode=o,this.render=a,this.renderInstances=c}function yu(r,t,e){let n;function i(){if(n!==void 0)return n;if(t.has("EXT_texture_filter_anisotropic")===!0){let I=t.get("EXT_texture_filter_anisotropic");n=r.getParameter(I.MAX_TEXTURE_MAX_ANISOTROPY_EXT)}else n=0;return n}function s(I){if(I==="highp"){if(r.getShaderPrecisionFormat(35633,36338).precision>0&&r.getShaderPrecisionFormat(35632,36338).precision>0)return"highp";I="mediump"}return I==="mediump"&&r.getShaderPrecisionFormat(35633,36337).precision>0&&r.getShaderPrecisionFormat(35632,36337).precision>0?"mediump":"lowp"}let o=typeof WebGL2RenderingContext!="undefined"&&r instanceof WebGL2RenderingContext,a=e.precision!==void 0?e.precision:"highp",c=s(a);c!==a&&(console.warn("THREE.WebGLRenderer:",a,"not supported, using",c,"instead."),a=c);let l=o||t.has("WEBGL_draw_buffers"),h=e.logarithmicDepthBuffer===!0,f=r.getParameter(34930),u=r.getParameter(35660),m=r.getParameter(3379),_=r.getParameter(34076),p=r.getParameter(34921),d=r.getParameter(36347),v=r.getParameter(36348),T=r.getParameter(36349),b=u>0,M=o||t.has("OES_texture_float"),A=b&&M,C=o?r.getParameter(36183):0;return{isWebGL2:o,drawBuffers:l,getMaxAnisotropy:i,getMaxPrecision:s,precision:a,logarithmicDepthBuffer:h,maxTextures:f,maxVertexTextures:u,maxTextureSize:m,maxCubemapSize:_,maxAttributes:p,maxVertexUniforms:d,maxVaryings:v,maxFragmentUniforms:T,vertexTextures:b,floatFragmentTextures:M,floatVertexTextures:A,maxSamples:C}}function vu(r){let t=this,e=null,n=0,i=!1,s=!1,o=new He,a=new oe,c={value:null,needsUpdate:!1};this.uniform=c,this.numPlanes=0,this.numIntersection=0,this.init=function(f,u){let m=f.length!==0||u||n!==0||i;return i=u,n=f.length,m},this.beginShadows=function(){s=!0,h(null)},this.endShadows=function(){s=!1},this.setGlobalState=function(f,u){e=h(f,u,0)},this.setState=function(f,u,m){let _=f.clippingPlanes,p=f.clipIntersection,d=f.clipShadows,v=r.get(f);if(!i||_===null||_.length===0||s&&!d)s?h(null):l();else{let T=s?0:n,b=T*4,M=v.clippingState||null;c.value=M,M=h(_,u,b,m);for(let A=0;A!==b;++A)M[A]=e[A];v.clippingState=M,this.numIntersection=p?this.numPlanes:0,this.numPlanes+=T}};function l(){c.value!==e&&(c.value=e,c.needsUpdate=n>0),t.numPlanes=n,t.numIntersection=0}function h(f,u,m,_){let p=f!==null?f.length:0,d=null;if(p!==0){if(d=c.value,_!==!0||d===null){let v=m+p*4,T=u.matrixWorldInverse;a.getNormalMatrix(T),(d===null||d.length<v)&&(d=new Float32Array(v));for(let b=0,M=m;b!==p;++b,M+=4)o.copy(f[b]).applyMatrix4(T,a),o.normal.toArray(d,M),d[M+3]=o.constant}c.value=d,c.needsUpdate=!0}return t.numPlanes=p,t.numIntersection=0,d}}function Mu(r){let t=new WeakMap;function e(o,a){return a===Hs?o.mapping=Xn:a===Ws&&(o.mapping=qn),o}function n(o){if(o&&o.isTexture&&o.isRenderTargetTexture===!1){let a=o.mapping;if(a===Hs||a===Ws)if(t.has(o)){let c=t.get(o).texture;return e(c,o.mapping)}else{let c=o.image;if(c&&c.height>0){let l=new js(c.height/2);return l.fromEquirectangularTexture(r,o),t.set(o,l),o.addEventListener("dispose",i),e(l.texture,o.mapping)}else return null}}return o}function i(o){let a=o.target;a.removeEventListener("dispose",i);let c=t.get(a);c!==void 0&&(t.delete(a),c.dispose())}function s(){t=new WeakMap}return{get:n,dispose:s}}var Qs=class extends ji{constructor(t=-1,e=1,n=1,i=-1,s=.1,o=2e3){super(),this.isOrthographicCamera=!0,this.type="OrthographicCamera",this.zoom=1,this.view=null,this.left=t,this.right=e,this.top=n,this.bottom=i,this.near=s,this.far=o,this.updateProjectionMatrix()}copy(t,e){return super.copy(t,e),this.left=t.left,this.right=t.right,this.top=t.top,this.bottom=t.bottom,this.near=t.near,this.far=t.far,this.zoom=t.zoom,this.view=t.view===null?null:Object.assign({},t.view),this}setViewOffset(t,e,n,i,s,o){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=t,this.view.fullHeight=e,this.view.offsetX=n,this.view.offsetY=i,this.view.width=s,this.view.height=o,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){let t=(this.right-this.left)/(2*this.zoom),e=(this.top-this.bottom)/(2*this.zoom),n=(this.right+this.left)/2,i=(this.top+this.bottom)/2,s=n-t,o=n+t,a=i+e,c=i-e;if(this.view!==null&&this.view.enabled){let l=(this.right-this.left)/this.view.fullWidth/this.zoom,h=(this.top-this.bottom)/this.view.fullHeight/this.zoom;s+=l*this.view.offsetX,o=s+l*this.view.width,a-=h*this.view.offsetY,c=a-h*this.view.height}this.projectionMatrix.makeOrthographic(s,o,a,c,this.near,this.far),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(t){let e=super.toJSON(t);return e.object.zoom=this.zoom,e.object.left=this.left,e.object.right=this.right,e.object.top=this.top,e.object.bottom=this.bottom,e.object.near=this.near,e.object.far=this.far,this.view!==null&&(e.object.view=Object.assign({},this.view)),e}},kn=4,Ma=[.125,.215,.35,.446,.526,.582],pn=20,Bs=new Qs,ba=new Ot,ks=null,fn=(1+Math.sqrt(5))/2,Un=1/fn,wa=[new N(1,1,1),new N(-1,1,1),new N(1,1,-1),new N(-1,1,-1),new N(0,fn,Un),new N(0,fn,-Un),new N(Un,0,fn),new N(-Un,0,fn),new N(fn,Un,0),new N(-fn,Un,0)],es=class{constructor(t){this._renderer=t,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(t,e=0,n=.1,i=100){ks=this._renderer.getRenderTarget(),this._setSize(256);let s=this._allocateTargets();return s.depthBuffer=!0,this._sceneToCubeUV(t,n,i,s),e>0&&this._blur(s,0,0,e),this._applyPMREM(s),this._cleanup(s),s}fromEquirectangular(t,e=null){return this._fromTexture(t,e)}fromCubemap(t,e=null){return this._fromTexture(t,e)}compileCubemapShader(){this._cubemapMaterial===null&&(this._cubemapMaterial=Aa(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){this._equirectMaterial===null&&(this._equirectMaterial=Ta(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),this._cubemapMaterial!==null&&this._cubemapMaterial.dispose(),this._equirectMaterial!==null&&this._equirectMaterial.dispose()}_setSize(t){this._lodMax=Math.floor(Math.log2(t)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){this._blurMaterial!==null&&this._blurMaterial.dispose(),this._pingPongRenderTarget!==null&&this._pingPongRenderTarget.dispose();for(let t=0;t<this._lodPlanes.length;t++)this._lodPlanes[t].dispose()}_cleanup(t){this._renderer.setRenderTarget(ks),t.scissorTest=!1,Oi(t,0,0,t.width,t.height)}_fromTexture(t,e){t.mapping===Xn||t.mapping===qn?this._setSize(t.image.length===0?16:t.image[0].width||t.image[0].image.width):this._setSize(t.image.width/4),ks=this._renderer.getRenderTarget();let n=e||this._allocateTargets();return this._textureToCubeUV(t,n),this._applyPMREM(n),this._cleanup(n),n}_allocateTargets(){let t=3*Math.max(this._cubeSize,112),e=4*this._cubeSize,n={magFilter:Se,minFilter:Se,generateMipmaps:!1,type:mi,format:Re,encoding:vn,depthBuffer:!1},i=Sa(t,e,n);if(this._pingPongRenderTarget===null||this._pingPongRenderTarget.width!==t||this._pingPongRenderTarget.height!==e){this._pingPongRenderTarget!==null&&this._dispose(),this._pingPongRenderTarget=Sa(t,e,n);let{_lodMax:s}=this;({sizeLods:this._sizeLods,lodPlanes:this._lodPlanes,sigmas:this._sigmas}=bu(s)),this._blurMaterial=wu(s,t,e)}return i}_compileMaterial(t){let e=new Ne(this._lodPlanes[0],t);this._renderer.compile(e,Bs)}_sceneToCubeUV(t,e,n,i){let a=new _e(90,1,e,n),c=[1,-1,1,1,1,1],l=[1,1,1,-1,-1,-1],h=this._renderer,f=h.autoClear,u=h.toneMapping;h.getClearColor(ba),h.toneMapping=We,h.autoClear=!1;let m=new Ji({name:"PMREM.Background",side:ye,depthWrite:!1,depthTest:!1}),_=new Ne(new bn,m),p=!1,d=t.background;d?d.isColor&&(m.color.copy(d),t.background=null,p=!0):(m.color.copy(ba),p=!0);for(let v=0;v<6;v++){let T=v%3;T===0?(a.up.set(0,c[v],0),a.lookAt(l[v],0,0)):T===1?(a.up.set(0,0,c[v]),a.lookAt(0,l[v],0)):(a.up.set(0,c[v],0),a.lookAt(0,0,l[v]));let b=this._cubeSize;Oi(i,T*b,v>2?b:0,b,b),h.setRenderTarget(i),p&&h.render(_,a),h.render(t,a)}_.geometry.dispose(),_.material.dispose(),h.toneMapping=u,h.autoClear=f,t.background=d}_textureToCubeUV(t,e){let n=this._renderer,i=t.mapping===Xn||t.mapping===qn;i?(this._cubemapMaterial===null&&(this._cubemapMaterial=Aa()),this._cubemapMaterial.uniforms.flipEnvMap.value=t.isRenderTargetTexture===!1?-1:1):this._equirectMaterial===null&&(this._equirectMaterial=Ta());let s=i?this._cubemapMaterial:this._equirectMaterial,o=new Ne(this._lodPlanes[0],s),a=s.uniforms;a.envMap.value=t;let c=this._cubeSize;Oi(e,0,0,3*c,2*c),n.setRenderTarget(e),n.render(o,Bs)}_applyPMREM(t){let e=this._renderer,n=e.autoClear;e.autoClear=!1;for(let i=1;i<this._lodPlanes.length;i++){let s=Math.sqrt(this._sigmas[i]*this._sigmas[i]-this._sigmas[i-1]*this._sigmas[i-1]),o=wa[(i-1)%wa.length];this._blur(t,i-1,i,s,o)}e.autoClear=n}_blur(t,e,n,i,s){let o=this._pingPongRenderTarget;this._halfBlur(t,o,e,n,i,"latitudinal",s),this._halfBlur(o,t,n,n,i,"longitudinal",s)}_halfBlur(t,e,n,i,s,o,a){let c=this._renderer,l=this._blurMaterial;o!=="latitudinal"&&o!=="longitudinal"&&console.error("blur direction must be either latitudinal or longitudinal!");let h=3,f=new Ne(this._lodPlanes[i],l),u=l.uniforms,m=this._sizeLods[n]-1,_=isFinite(s)?Math.PI/(2*m):2*Math.PI/(2*pn-1),p=s/_,d=isFinite(s)?1+Math.floor(h*p):pn;d>pn&&console.warn(\`sigmaRadians, \${s}, is too large and will clip, as it requested \${d} samples when the maximum is set to \${pn}\`);let v=[],T=0;for(let I=0;I<pn;++I){let x=I/p,S=Math.exp(-x*x/2);v.push(S),I===0?T+=S:I<d&&(T+=2*S)}for(let I=0;I<v.length;I++)v[I]=v[I]/T;u.envMap.value=t.texture,u.samples.value=d,u.weights.value=v,u.latitudinal.value=o==="latitudinal",a&&(u.poleAxis.value=a);let{_lodMax:b}=this;u.dTheta.value=_,u.mipInt.value=b-n;let M=this._sizeLods[i],A=3*M*(i>b-kn?i-b+kn:0),C=4*(this._cubeSize-M);Oi(e,A,C,3*M,2*M),c.setRenderTarget(e),c.render(f,Bs)}};function bu(r){let t=[],e=[],n=[],i=r,s=r-kn+1+Ma.length;for(let o=0;o<s;o++){let a=Math.pow(2,i);e.push(a);let c=1/a;o>r-kn?c=Ma[o-r+kn-1]:o===0&&(c=0),n.push(c);let l=1/(a-2),h=-l,f=1+l,u=[h,h,f,h,f,f,h,h,f,f,h,f],m=6,_=6,p=3,d=2,v=1,T=new Float32Array(p*_*m),b=new Float32Array(d*_*m),M=new Float32Array(v*_*m);for(let C=0;C<m;C++){let I=C%3*2/3-1,x=C>2?0:-1,S=[I,x,0,I+2/3,x,0,I+2/3,x+1,0,I,x,0,I+2/3,x+1,0,I,x+1,0];T.set(S,p*_*C),b.set(u,d*_*C);let L=[C,C,C,C,C,C];M.set(L,v*_*C)}let A=new Ye;A.setAttribute("position",new ce(T,p)),A.setAttribute("uv",new ce(b,d)),A.setAttribute("faceIndex",new ce(M,v)),t.push(A),i>kn&&i--}return{lodPlanes:t,sizeLods:e,sigmas:n}}function Sa(r,t,e){let n=new qe(r,t,e);return n.texture.mapping=ns,n.texture.name="PMREM.cubeUv",n.scissorTest=!0,n}function Oi(r,t,e,n,i){r.viewport.set(t,e,n,i),r.scissor.set(t,e,n,i)}function wu(r,t,e){let n=new Float32Array(pn),i=new N(0,1,0);return new Ze({name:"SphericalGaussianBlur",defines:{n:pn,CUBEUV_TEXEL_WIDTH:1/t,CUBEUV_TEXEL_HEIGHT:1/e,CUBEUV_MAX_MIP:\`\${r}.0\`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:n},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:i}},vertexShader:br(),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:en,depthTest:!1,depthWrite:!1})}function Ta(){return new Ze({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null}},vertexShader:br(),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:en,depthTest:!1,depthWrite:!1})}function Aa(){return new Ze({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:br(),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:en,depthTest:!1,depthWrite:!1})}function br(){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 Su(r){let t=new WeakMap,e=null;function n(a){if(a&&a.isTexture){let c=a.mapping,l=c===Hs||c===Ws,h=c===Xn||c===qn;if(l||h)if(a.isRenderTargetTexture&&a.needsPMREMUpdate===!0){a.needsPMREMUpdate=!1;let f=t.get(a);return e===null&&(e=new es(r)),f=l?e.fromEquirectangular(a,f):e.fromCubemap(a,f),t.set(a,f),f.texture}else{if(t.has(a))return t.get(a).texture;{let f=a.image;if(l&&f&&f.height>0||h&&f&&i(f)){e===null&&(e=new es(r));let u=l?e.fromEquirectangular(a):e.fromCubemap(a);return t.set(a,u),a.addEventListener("dispose",s),u.texture}else return null}}}return a}function i(a){let c=0,l=6;for(let h=0;h<l;h++)a[h]!==void 0&&c++;return c===l}function s(a){let c=a.target;c.removeEventListener("dispose",s);let l=t.get(c);l!==void 0&&(t.delete(c),l.dispose())}function o(){t=new WeakMap,e!==null&&(e.dispose(),e=null)}return{get:n,dispose:o}}function Tu(r){let t={};function e(n){if(t[n]!==void 0)return t[n];let i;switch(n){case"WEBGL_depth_texture":i=r.getExtension("WEBGL_depth_texture")||r.getExtension("MOZ_WEBGL_depth_texture")||r.getExtension("WEBKIT_WEBGL_depth_texture");break;case"EXT_texture_filter_anisotropic":i=r.getExtension("EXT_texture_filter_anisotropic")||r.getExtension("MOZ_EXT_texture_filter_anisotropic")||r.getExtension("WEBKIT_EXT_texture_filter_anisotropic");break;case"WEBGL_compressed_texture_s3tc":i=r.getExtension("WEBGL_compressed_texture_s3tc")||r.getExtension("MOZ_WEBGL_compressed_texture_s3tc")||r.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");break;case"WEBGL_compressed_texture_pvrtc":i=r.getExtension("WEBGL_compressed_texture_pvrtc")||r.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc");break;default:i=r.getExtension(n)}return t[n]=i,i}return{has:function(n){return e(n)!==null},init:function(n){n.isWebGL2?e("EXT_color_buffer_float"):(e("WEBGL_depth_texture"),e("OES_texture_float"),e("OES_texture_half_float"),e("OES_texture_half_float_linear"),e("OES_standard_derivatives"),e("OES_element_index_uint"),e("OES_vertex_array_object"),e("ANGLE_instanced_arrays")),e("OES_texture_float_linear"),e("EXT_color_buffer_half_float"),e("WEBGL_multisampled_render_to_texture")},get:function(n){let i=e(n);return i===null&&console.warn("THREE.WebGLRenderer: "+n+" extension not supported."),i}}}function Au(r,t,e,n){let i={},s=new WeakMap;function o(f){let u=f.target;u.index!==null&&t.remove(u.index);for(let _ in u.attributes)t.remove(u.attributes[_]);u.removeEventListener("dispose",o),delete i[u.id];let m=s.get(u);m&&(t.remove(m),s.delete(u)),n.releaseStatesOfGeometry(u),u.isInstancedBufferGeometry===!0&&delete u._maxInstanceCount,e.memory.geometries--}function a(f,u){return i[u.id]===!0||(u.addEventListener("dispose",o),i[u.id]=!0,e.memory.geometries++),u}function c(f){let u=f.attributes;for(let _ in u)t.update(u[_],34962);let m=f.morphAttributes;for(let _ in m){let p=m[_];for(let d=0,v=p.length;d<v;d++)t.update(p[d],34962)}}function l(f){let u=[],m=f.index,_=f.attributes.position,p=0;if(m!==null){let T=m.array;p=m.version;for(let b=0,M=T.length;b<M;b+=3){let A=T[b+0],C=T[b+1],I=T[b+2];u.push(A,C,C,I,I,A)}}else{let T=_.array;p=_.version;for(let b=0,M=T.length/3-1;b<M;b+=3){let A=b+0,C=b+1,I=b+2;u.push(A,C,C,I,I,A)}}let d=new(Ja(u)?Ki:$i)(u,1);d.version=p;let v=s.get(f);v&&t.remove(v),s.set(f,d)}function h(f){let u=s.get(f);if(u){let m=f.index;m!==null&&u.version<m.version&&l(f)}else l(f);return s.get(f)}return{get:a,update:c,getWireframeAttribute:h}}function Eu(r,t,e,n){let i=n.isWebGL2,s;function o(u){s=u}let a,c;function l(u){a=u.type,c=u.bytesPerElement}function h(u,m){r.drawElements(s,m,a,u*c),e.update(m,s,1)}function f(u,m,_){if(_===0)return;let p,d;if(i)p=r,d="drawElementsInstanced";else if(p=t.get("ANGLE_instanced_arrays"),d="drawElementsInstancedANGLE",p===null){console.error("THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");return}p[d](s,m,a,u*c,_),e.update(m,s,_)}this.setMode=o,this.setIndex=l,this.render=h,this.renderInstances=f}function Cu(r){let t={geometries:0,textures:0},e={frame:0,calls:0,triangles:0,points:0,lines:0};function n(s,o,a){switch(e.calls++,o){case 4:e.triangles+=a*(s/3);break;case 1:e.lines+=a*(s/2);break;case 3:e.lines+=a*(s-1);break;case 2:e.lines+=a*s;break;case 0:e.points+=a*s;break;default:console.error("THREE.WebGLInfo: Unknown draw mode:",o);break}}function i(){e.frame++,e.calls=0,e.triangles=0,e.points=0,e.lines=0}return{memory:t,render:e,programs:null,autoReset:!0,reset:i,update:n}}function Pu(r,t){return r[0]-t[0]}function Ru(r,t){return Math.abs(t[1])-Math.abs(r[1])}function Lu(r,t,e){let n={},i=new Float32Array(8),s=new WeakMap,o=new Xt,a=[];for(let l=0;l<8;l++)a[l]=[l,0];function c(l,h,f,u){let m=l.morphTargetInfluences;if(t.isWebGL2===!0){let _=h.morphAttributes.position||h.morphAttributes.normal||h.morphAttributes.color,p=_!==void 0?_.length:0,d=s.get(h);if(d===void 0||d.count!==p){let G=function(){z.dispose(),s.delete(h),h.removeEventListener("dispose",G)};d!==void 0&&d.texture.dispose();let b=h.morphAttributes.position!==void 0,M=h.morphAttributes.normal!==void 0,A=h.morphAttributes.color!==void 0,C=h.morphAttributes.position||[],I=h.morphAttributes.normal||[],x=h.morphAttributes.color||[],S=0;b===!0&&(S=1),M===!0&&(S=2),A===!0&&(S=3);let L=h.attributes.position.count*S,X=1;L>t.maxTextureSize&&(X=Math.ceil(L/t.maxTextureSize),L=t.maxTextureSize);let q=new Float32Array(L*X*4*p),z=new Yi(q,L,X,p);z.type=gn,z.needsUpdate=!0;let R=S*4;for(let Y=0;Y<p;Y++){let j=C[Y],W=I[Y],Q=x[Y],Z=L*X*4*Y;for(let ft=0;ft<j.count;ft++){let F=ft*R;b===!0&&(o.fromBufferAttribute(j,ft),q[Z+F+0]=o.x,q[Z+F+1]=o.y,q[Z+F+2]=o.z,q[Z+F+3]=0),M===!0&&(o.fromBufferAttribute(W,ft),q[Z+F+4]=o.x,q[Z+F+5]=o.y,q[Z+F+6]=o.z,q[Z+F+7]=0),A===!0&&(o.fromBufferAttribute(Q,ft),q[Z+F+8]=o.x,q[Z+F+9]=o.y,q[Z+F+10]=o.z,q[Z+F+11]=Q.itemSize===4?o.w:1)}}d={count:p,texture:z,size:new Nt(L,X)},s.set(h,d),h.addEventListener("dispose",G)}let v=0;for(let b=0;b<m.length;b++)v+=m[b];let T=h.morphTargetsRelative?1:1-v;u.getUniforms().setValue(r,"morphTargetBaseInfluence",T),u.getUniforms().setValue(r,"morphTargetInfluences",m),u.getUniforms().setValue(r,"morphTargetsTexture",d.texture,e),u.getUniforms().setValue(r,"morphTargetsTextureSize",d.size)}else{let _=m===void 0?0:m.length,p=n[h.id];if(p===void 0||p.length!==_){p=[];for(let M=0;M<_;M++)p[M]=[M,0];n[h.id]=p}for(let M=0;M<_;M++){let A=p[M];A[0]=M,A[1]=m[M]}p.sort(Ru);for(let M=0;M<8;M++)M<_&&p[M][1]?(a[M][0]=p[M][0],a[M][1]=p[M][1]):(a[M][0]=Number.MAX_SAFE_INTEGER,a[M][1]=0);a.sort(Pu);let d=h.morphAttributes.position,v=h.morphAttributes.normal,T=0;for(let M=0;M<8;M++){let A=a[M],C=A[0],I=A[1];C!==Number.MAX_SAFE_INTEGER&&I?(d&&h.getAttribute("morphTarget"+M)!==d[C]&&h.setAttribute("morphTarget"+M,d[C]),v&&h.getAttribute("morphNormal"+M)!==v[C]&&h.setAttribute("morphNormal"+M,v[C]),i[M]=I,T+=I):(d&&h.hasAttribute("morphTarget"+M)===!0&&h.deleteAttribute("morphTarget"+M),v&&h.hasAttribute("morphNormal"+M)===!0&&h.deleteAttribute("morphNormal"+M),i[M]=0)}let b=h.morphTargetsRelative?1:1-T;u.getUniforms().setValue(r,"morphTargetBaseInfluence",b),u.getUniforms().setValue(r,"morphTargetInfluences",i)}}return{update:c}}function Iu(r,t,e,n){let i=new WeakMap;function s(c){let l=n.render.frame,h=c.geometry,f=t.get(c,h);return i.get(f)!==l&&(t.update(f),i.set(f,l)),c.isInstancedMesh&&(c.hasEventListener("dispose",a)===!1&&c.addEventListener("dispose",a),e.update(c.instanceMatrix,34962),c.instanceColor!==null&&e.update(c.instanceColor,34962)),f}function o(){i=new WeakMap}function a(c){let l=c.target;l.removeEventListener("dispose",a),e.remove(l.instanceMatrix),l.instanceColor!==null&&e.remove(l.instanceColor)}return{update:s,dispose:o}}var Qa=new le,to=new Yi,eo=new Js,no=new Qi,Ea=[],Ca=[],Pa=new Float32Array(16),Ra=new Float32Array(9),La=new Float32Array(4);function Qn(r,t,e){let n=r[0];if(n<=0||n>0)return r;let i=t*e,s=Ea[i];if(s===void 0&&(s=new Float32Array(i),Ea[i]=s),t!==0){n.toArray(s,0);for(let o=1,a=0;o!==t;++o)a+=e,r[o].toArray(s,a)}return s}function Yt(r,t){if(r.length!==t.length)return!1;for(let e=0,n=r.length;e<n;e++)if(r[e]!==t[e])return!1;return!0}function Zt(r,t){for(let e=0,n=t.length;e<n;e++)r[e]=t[e]}function is(r,t){let e=Ca[t];e===void 0&&(e=new Int32Array(t),Ca[t]=e);for(let n=0;n!==t;++n)e[n]=r.allocateTextureUnit();return e}function Du(r,t){let e=this.cache;e[0]!==t&&(r.uniform1f(this.addr,t),e[0]=t)}function Nu(r,t){let e=this.cache;if(t.x!==void 0)(e[0]!==t.x||e[1]!==t.y)&&(r.uniform2f(this.addr,t.x,t.y),e[0]=t.x,e[1]=t.y);else{if(Yt(e,t))return;r.uniform2fv(this.addr,t),Zt(e,t)}}function Fu(r,t){let e=this.cache;if(t.x!==void 0)(e[0]!==t.x||e[1]!==t.y||e[2]!==t.z)&&(r.uniform3f(this.addr,t.x,t.y,t.z),e[0]=t.x,e[1]=t.y,e[2]=t.z);else if(t.r!==void 0)(e[0]!==t.r||e[1]!==t.g||e[2]!==t.b)&&(r.uniform3f(this.addr,t.r,t.g,t.b),e[0]=t.r,e[1]=t.g,e[2]=t.b);else{if(Yt(e,t))return;r.uniform3fv(this.addr,t),Zt(e,t)}}function zu(r,t){let e=this.cache;if(t.x!==void 0)(e[0]!==t.x||e[1]!==t.y||e[2]!==t.z||e[3]!==t.w)&&(r.uniform4f(this.addr,t.x,t.y,t.z,t.w),e[0]=t.x,e[1]=t.y,e[2]=t.z,e[3]=t.w);else{if(Yt(e,t))return;r.uniform4fv(this.addr,t),Zt(e,t)}}function Ou(r,t){let e=this.cache,n=t.elements;if(n===void 0){if(Yt(e,t))return;r.uniformMatrix2fv(this.addr,!1,t),Zt(e,t)}else{if(Yt(e,n))return;La.set(n),r.uniformMatrix2fv(this.addr,!1,La),Zt(e,n)}}function Uu(r,t){let e=this.cache,n=t.elements;if(n===void 0){if(Yt(e,t))return;r.uniformMatrix3fv(this.addr,!1,t),Zt(e,t)}else{if(Yt(e,n))return;Ra.set(n),r.uniformMatrix3fv(this.addr,!1,Ra),Zt(e,n)}}function Bu(r,t){let e=this.cache,n=t.elements;if(n===void 0){if(Yt(e,t))return;r.uniformMatrix4fv(this.addr,!1,t),Zt(e,t)}else{if(Yt(e,n))return;Pa.set(n),r.uniformMatrix4fv(this.addr,!1,Pa),Zt(e,n)}}function ku(r,t){let e=this.cache;e[0]!==t&&(r.uniform1i(this.addr,t),e[0]=t)}function Vu(r,t){let e=this.cache;if(t.x!==void 0)(e[0]!==t.x||e[1]!==t.y)&&(r.uniform2i(this.addr,t.x,t.y),e[0]=t.x,e[1]=t.y);else{if(Yt(e,t))return;r.uniform2iv(this.addr,t),Zt(e,t)}}function Gu(r,t){let e=this.cache;if(t.x!==void 0)(e[0]!==t.x||e[1]!==t.y||e[2]!==t.z)&&(r.uniform3i(this.addr,t.x,t.y,t.z),e[0]=t.x,e[1]=t.y,e[2]=t.z);else{if(Yt(e,t))return;r.uniform3iv(this.addr,t),Zt(e,t)}}function Hu(r,t){let e=this.cache;if(t.x!==void 0)(e[0]!==t.x||e[1]!==t.y||e[2]!==t.z||e[3]!==t.w)&&(r.uniform4i(this.addr,t.x,t.y,t.z,t.w),e[0]=t.x,e[1]=t.y,e[2]=t.z,e[3]=t.w);else{if(Yt(e,t))return;r.uniform4iv(this.addr,t),Zt(e,t)}}function Wu(r,t){let e=this.cache;e[0]!==t&&(r.uniform1ui(this.addr,t),e[0]=t)}function Xu(r,t){let e=this.cache;if(t.x!==void 0)(e[0]!==t.x||e[1]!==t.y)&&(r.uniform2ui(this.addr,t.x,t.y),e[0]=t.x,e[1]=t.y);else{if(Yt(e,t))return;r.uniform2uiv(this.addr,t),Zt(e,t)}}function qu(r,t){let e=this.cache;if(t.x!==void 0)(e[0]!==t.x||e[1]!==t.y||e[2]!==t.z)&&(r.uniform3ui(this.addr,t.x,t.y,t.z),e[0]=t.x,e[1]=t.y,e[2]=t.z);else{if(Yt(e,t))return;r.uniform3uiv(this.addr,t),Zt(e,t)}}function Yu(r,t){let e=this.cache;if(t.x!==void 0)(e[0]!==t.x||e[1]!==t.y||e[2]!==t.z||e[3]!==t.w)&&(r.uniform4ui(this.addr,t.x,t.y,t.z,t.w),e[0]=t.x,e[1]=t.y,e[2]=t.z,e[3]=t.w);else{if(Yt(e,t))return;r.uniform4uiv(this.addr,t),Zt(e,t)}}function Zu(r,t,e){let n=this.cache,i=e.allocateTextureUnit();n[0]!==i&&(r.uniform1i(this.addr,i),n[0]=i),e.setTexture2D(t||Qa,i)}function Ju(r,t,e){let n=this.cache,i=e.allocateTextureUnit();n[0]!==i&&(r.uniform1i(this.addr,i),n[0]=i),e.setTexture3D(t||eo,i)}function $u(r,t,e){let n=this.cache,i=e.allocateTextureUnit();n[0]!==i&&(r.uniform1i(this.addr,i),n[0]=i),e.setTextureCube(t||no,i)}function Ku(r,t,e){let n=this.cache,i=e.allocateTextureUnit();n[0]!==i&&(r.uniform1i(this.addr,i),n[0]=i),e.setTexture2DArray(t||to,i)}function ju(r){switch(r){case 5126:return Du;case 35664:return Nu;case 35665:return Fu;case 35666:return zu;case 35674:return Ou;case 35675:return Uu;case 35676:return Bu;case 5124:case 35670:return ku;case 35667:case 35671:return Vu;case 35668:case 35672:return Gu;case 35669:case 35673:return Hu;case 5125:return Wu;case 36294:return Xu;case 36295:return qu;case 36296:return Yu;case 35678:case 36198:case 36298:case 36306:case 35682:return Zu;case 35679:case 36299:case 36307:return Ju;case 35680:case 36300:case 36308:case 36293:return $u;case 36289:case 36303:case 36311:case 36292:return Ku}}function Qu(r,t){r.uniform1fv(this.addr,t)}function td(r,t){let e=Qn(t,this.size,2);r.uniform2fv(this.addr,e)}function ed(r,t){let e=Qn(t,this.size,3);r.uniform3fv(this.addr,e)}function nd(r,t){let e=Qn(t,this.size,4);r.uniform4fv(this.addr,e)}function id(r,t){let e=Qn(t,this.size,4);r.uniformMatrix2fv(this.addr,!1,e)}function sd(r,t){let e=Qn(t,this.size,9);r.uniformMatrix3fv(this.addr,!1,e)}function rd(r,t){let e=Qn(t,this.size,16);r.uniformMatrix4fv(this.addr,!1,e)}function ad(r,t){r.uniform1iv(this.addr,t)}function od(r,t){r.uniform2iv(this.addr,t)}function ld(r,t){r.uniform3iv(this.addr,t)}function cd(r,t){r.uniform4iv(this.addr,t)}function hd(r,t){r.uniform1uiv(this.addr,t)}function ud(r,t){r.uniform2uiv(this.addr,t)}function dd(r,t){r.uniform3uiv(this.addr,t)}function fd(r,t){r.uniform4uiv(this.addr,t)}function pd(r,t,e){let n=this.cache,i=t.length,s=is(e,i);Yt(n,s)||(r.uniform1iv(this.addr,s),Zt(n,s));for(let o=0;o!==i;++o)e.setTexture2D(t[o]||Qa,s[o])}function md(r,t,e){let n=this.cache,i=t.length,s=is(e,i);Yt(n,s)||(r.uniform1iv(this.addr,s),Zt(n,s));for(let o=0;o!==i;++o)e.setTexture3D(t[o]||eo,s[o])}function gd(r,t,e){let n=this.cache,i=t.length,s=is(e,i);Yt(n,s)||(r.uniform1iv(this.addr,s),Zt(n,s));for(let o=0;o!==i;++o)e.setTextureCube(t[o]||no,s[o])}function _d(r,t,e){let n=this.cache,i=t.length,s=is(e,i);Yt(n,s)||(r.uniform1iv(this.addr,s),Zt(n,s));for(let o=0;o!==i;++o)e.setTexture2DArray(t[o]||to,s[o])}function xd(r){switch(r){case 5126:return Qu;case 35664:return td;case 35665:return ed;case 35666:return nd;case 35674:return id;case 35675:return sd;case 35676:return rd;case 5124:case 35670:return ad;case 35667:case 35671:return od;case 35668:case 35672:return ld;case 35669:case 35673:return cd;case 5125:return hd;case 36294:return ud;case 36295:return dd;case 36296:return fd;case 35678:case 36198:case 36298:case 36306:case 35682:return pd;case 35679:case 36299:case 36307:return md;case 35680:case 36300:case 36308:case 36293:return gd;case 36289:case 36303:case 36311:case 36292:return _d}}var tr=class{constructor(t,e,n){this.id=t,this.addr=n,this.cache=[],this.setValue=ju(e.type)}},er=class{constructor(t,e,n){this.id=t,this.addr=n,this.cache=[],this.size=e.size,this.setValue=xd(e.type)}},nr=class{constructor(t){this.id=t,this.seq=[],this.map={}}setValue(t,e,n){let i=this.seq;for(let s=0,o=i.length;s!==o;++s){let a=i[s];a.setValue(t,e[a.id],n)}}},Vs=/(\\w+)(\\])?(\\[|\\.)?/g;function Ia(r,t){r.seq.push(t),r.map[t.id]=t}function yd(r,t,e){let n=r.name,i=n.length;for(Vs.lastIndex=0;;){let s=Vs.exec(n),o=Vs.lastIndex,a=s[1],c=s[2]==="]",l=s[3];if(c&&(a=a|0),l===void 0||l==="["&&o+2===i){Ia(e,l===void 0?new tr(a,r,t):new er(a,r,t));break}else{let f=e.map[a];f===void 0&&(f=new nr(a),Ia(e,f)),e=f}}}var Wn=class{constructor(t,e){this.seq=[],this.map={};let n=t.getProgramParameter(e,35718);for(let i=0;i<n;++i){let s=t.getActiveUniform(e,i),o=t.getUniformLocation(e,s.name);yd(s,o,this)}}setValue(t,e,n,i){let s=this.map[e];s!==void 0&&s.setValue(t,n,i)}setOptional(t,e,n){let i=e[n];i!==void 0&&this.setValue(t,n,i)}static upload(t,e,n,i){for(let s=0,o=e.length;s!==o;++s){let a=e[s],c=n[a.id];c.needsUpdate!==!1&&a.setValue(t,c.value,i)}}static seqWithValue(t,e){let n=[];for(let i=0,s=t.length;i!==s;++i){let o=t[i];o.id in e&&n.push(o)}return n}};function Da(r,t,e){let n=r.createShader(t);return r.shaderSource(n,e),r.compileShader(n),n}var vd=0;function Md(r,t){let e=r.split(\`
|
||
\`),n=[],i=Math.max(t-6,0),s=Math.min(t+6,e.length);for(let o=i;o<s;o++){let a=o+1;n.push(\`\${a===t?">":" "} \${a}: \${e[o]}\`)}return n.join(\`
|
||
\`)}function bd(r){switch(r){case vn:return["Linear","( value )"];case zt:return["sRGB","( value )"];default:return console.warn("THREE.WebGLProgram: Unsupported encoding:",r),["Linear","( value )"]}}function Na(r,t,e){let n=r.getShaderParameter(t,35713),i=r.getShaderInfoLog(t).trim();if(n&&i==="")return"";let s=/ERROR: 0:(\\d+)/.exec(i);if(s){let o=parseInt(s[1]);return e.toUpperCase()+\`
|
||
|
||
\`+i+\`
|
||
|
||
\`+Md(r.getShaderSource(t),o)}else return i}function wd(r,t){let e=bd(t);return"vec4 "+r+"( vec4 value ) { return LinearTo"+e[0]+e[1]+"; }"}function Sd(r,t){let e;switch(t){case No:e="Linear";break;case Fo:e="Reinhard";break;case zo:e="OptimizedCineon";break;case Oo:e="ACESFilmic";break;case Uo:e="Custom";break;default:console.warn("THREE.WebGLProgram: Unsupported toneMapping:",t),e="Linear"}return"vec3 "+r+"( vec3 color ) { return "+e+"ToneMapping( color ); }"}function Td(r){return[r.extensionDerivatives||r.envMapCubeUVHeight||r.bumpMap||r.tangentSpaceNormalMap||r.clearcoatNormalMap||r.flatShading||r.shaderID==="physical"?"#extension GL_OES_standard_derivatives : enable":"",(r.extensionFragDepth||r.logarithmicDepthBuffer)&&r.rendererExtensionFragDepth?"#extension GL_EXT_frag_depth : enable":"",r.extensionDrawBuffers&&r.rendererExtensionDrawBuffers?"#extension GL_EXT_draw_buffers : require":"",(r.extensionShaderTextureLOD||r.envMap||r.transmission)&&r.rendererExtensionShaderTextureLod?"#extension GL_EXT_shader_texture_lod : enable":""].filter(hi).join(\`
|
||
\`)}function Ad(r){let t=[];for(let e in r){let n=r[e];n!==!1&&t.push("#define "+e+" "+n)}return t.join(\`
|
||
\`)}function Ed(r,t){let e={},n=r.getProgramParameter(t,35721);for(let i=0;i<n;i++){let s=r.getActiveAttrib(t,i),o=s.name,a=1;s.type===35674&&(a=2),s.type===35675&&(a=3),s.type===35676&&(a=4),e[o]={type:s.type,location:r.getAttribLocation(t,o),locationSize:a}}return e}function hi(r){return r!==""}function Fa(r,t){let e=t.numSpotLightShadows+t.numSpotLightMaps-t.numSpotLightShadowsWithMaps;return r.replace(/NUM_DIR_LIGHTS/g,t.numDirLights).replace(/NUM_SPOT_LIGHTS/g,t.numSpotLights).replace(/NUM_SPOT_LIGHT_MAPS/g,t.numSpotLightMaps).replace(/NUM_SPOT_LIGHT_COORDS/g,e).replace(/NUM_RECT_AREA_LIGHTS/g,t.numRectAreaLights).replace(/NUM_POINT_LIGHTS/g,t.numPointLights).replace(/NUM_HEMI_LIGHTS/g,t.numHemiLights).replace(/NUM_DIR_LIGHT_SHADOWS/g,t.numDirLightShadows).replace(/NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS/g,t.numSpotLightShadowsWithMaps).replace(/NUM_SPOT_LIGHT_SHADOWS/g,t.numSpotLightShadows).replace(/NUM_POINT_LIGHT_SHADOWS/g,t.numPointLightShadows)}function za(r,t){return r.replace(/NUM_CLIPPING_PLANES/g,t.numClippingPlanes).replace(/UNION_CLIPPING_PLANES/g,t.numClippingPlanes-t.numClipIntersection)}var Cd=/^[ \\t]*#include +<([\\w\\d./]+)>/gm;function ir(r){return r.replace(Cd,Pd)}function Pd(r,t){let e=wt[t];if(e===void 0)throw new Error("Can not resolve #include <"+t+">");return ir(e)}var Rd=/#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 Oa(r){return r.replace(Rd,Ld)}function Ld(r,t,e,n){let i="";for(let s=parseInt(t);s<parseInt(e);s++)i+=n.replace(/\\[\\s*i\\s*\\]/g,"[ "+s+" ]").replace(/UNROLLED_LOOP_INDEX/g,s);return i}function Ua(r){let t="precision "+r.precision+\` float;
|
||
precision \`+r.precision+" int;";return r.precision==="highp"?t+=\`
|
||
#define HIGH_PRECISION\`:r.precision==="mediump"?t+=\`
|
||
#define MEDIUM_PRECISION\`:r.precision==="lowp"&&(t+=\`
|
||
#define LOW_PRECISION\`),t}function Id(r){let t="SHADOWMAP_TYPE_BASIC";return r.shadowMapType===Ga?t="SHADOWMAP_TYPE_PCF":r.shadowMapType===uo?t="SHADOWMAP_TYPE_PCF_SOFT":r.shadowMapType===li&&(t="SHADOWMAP_TYPE_VSM"),t}function Dd(r){let t="ENVMAP_TYPE_CUBE";if(r.envMap)switch(r.envMapMode){case Xn:case qn:t="ENVMAP_TYPE_CUBE";break;case ns:t="ENVMAP_TYPE_CUBE_UV";break}return t}function Nd(r){let t="ENVMAP_MODE_REFLECTION";if(r.envMap)switch(r.envMapMode){case qn:t="ENVMAP_MODE_REFRACTION";break}return t}function Fd(r){let t="ENVMAP_BLENDING_NONE";if(r.envMap)switch(r.combine){case Xa:t="ENVMAP_BLENDING_MULTIPLY";break;case Io:t="ENVMAP_BLENDING_MIX";break;case Do:t="ENVMAP_BLENDING_ADD";break}return t}function zd(r){let t=r.envMapCubeUVHeight;if(t===null)return null;let e=Math.log2(t)-2,n=1/t;return{texelWidth:1/(3*Math.max(Math.pow(2,e),7*16)),texelHeight:n,maxMip:e}}function Od(r,t,e,n){let i=r.getContext(),s=e.defines,o=e.vertexShader,a=e.fragmentShader,c=Id(e),l=Dd(e),h=Nd(e),f=Fd(e),u=zd(e),m=e.isWebGL2?"":Td(e),_=Ad(s),p=i.createProgram(),d,v,T=e.glslVersion?"#version "+e.glslVersion+\`
|
||
\`:"";e.isRawShaderMaterial?(d=[_].filter(hi).join(\`
|
||
\`),d.length>0&&(d+=\`
|
||
\`),v=[m,_].filter(hi).join(\`
|
||
\`),v.length>0&&(v+=\`
|
||
\`)):(d=[Ua(e),"#define SHADER_NAME "+e.shaderName,_,e.instancing?"#define USE_INSTANCING":"",e.instancingColor?"#define USE_INSTANCING_COLOR":"",e.supportsVertexTextures?"#define VERTEX_TEXTURES":"",e.useFog&&e.fog?"#define USE_FOG":"",e.useFog&&e.fogExp2?"#define FOG_EXP2":"",e.map?"#define USE_MAP":"",e.envMap?"#define USE_ENVMAP":"",e.envMap?"#define "+h:"",e.lightMap?"#define USE_LIGHTMAP":"",e.aoMap?"#define USE_AOMAP":"",e.emissiveMap?"#define USE_EMISSIVEMAP":"",e.bumpMap?"#define USE_BUMPMAP":"",e.normalMap?"#define USE_NORMALMAP":"",e.normalMap&&e.objectSpaceNormalMap?"#define OBJECTSPACE_NORMALMAP":"",e.normalMap&&e.tangentSpaceNormalMap?"#define TANGENTSPACE_NORMALMAP":"",e.clearcoatMap?"#define USE_CLEARCOATMAP":"",e.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",e.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",e.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",e.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",e.displacementMap&&e.supportsVertexTextures?"#define USE_DISPLACEMENTMAP":"",e.specularMap?"#define USE_SPECULARMAP":"",e.specularIntensityMap?"#define USE_SPECULARINTENSITYMAP":"",e.specularColorMap?"#define USE_SPECULARCOLORMAP":"",e.roughnessMap?"#define USE_ROUGHNESSMAP":"",e.metalnessMap?"#define USE_METALNESSMAP":"",e.alphaMap?"#define USE_ALPHAMAP":"",e.transmission?"#define USE_TRANSMISSION":"",e.transmissionMap?"#define USE_TRANSMISSIONMAP":"",e.thicknessMap?"#define USE_THICKNESSMAP":"",e.sheenColorMap?"#define USE_SHEENCOLORMAP":"",e.sheenRoughnessMap?"#define USE_SHEENROUGHNESSMAP":"",e.vertexTangents?"#define USE_TANGENT":"",e.vertexColors?"#define USE_COLOR":"",e.vertexAlphas?"#define USE_COLOR_ALPHA":"",e.vertexUvs?"#define USE_UV":"",e.uvsVertexOnly?"#define UVS_VERTEX_ONLY":"",e.flatShading?"#define FLAT_SHADED":"",e.skinning?"#define USE_SKINNING":"",e.morphTargets?"#define USE_MORPHTARGETS":"",e.morphNormals&&e.flatShading===!1?"#define USE_MORPHNORMALS":"",e.morphColors&&e.isWebGL2?"#define USE_MORPHCOLORS":"",e.morphTargetsCount>0&&e.isWebGL2?"#define MORPHTARGETS_TEXTURE":"",e.morphTargetsCount>0&&e.isWebGL2?"#define MORPHTARGETS_TEXTURE_STRIDE "+e.morphTextureStride:"",e.morphTargetsCount>0&&e.isWebGL2?"#define MORPHTARGETS_COUNT "+e.morphTargetsCount:"",e.doubleSided?"#define DOUBLE_SIDED":"",e.flipSided?"#define FLIP_SIDED":"",e.shadowMapEnabled?"#define USE_SHADOWMAP":"",e.shadowMapEnabled?"#define "+c:"",e.sizeAttenuation?"#define USE_SIZEATTENUATION":"",e.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",e.logarithmicDepthBuffer&&e.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"","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","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#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(hi).join(\`
|
||
\`),v=[m,Ua(e),"#define SHADER_NAME "+e.shaderName,_,e.useFog&&e.fog?"#define USE_FOG":"",e.useFog&&e.fogExp2?"#define FOG_EXP2":"",e.map?"#define USE_MAP":"",e.matcap?"#define USE_MATCAP":"",e.envMap?"#define USE_ENVMAP":"",e.envMap?"#define "+l:"",e.envMap?"#define "+h:"",e.envMap?"#define "+f:"",u?"#define CUBEUV_TEXEL_WIDTH "+u.texelWidth:"",u?"#define CUBEUV_TEXEL_HEIGHT "+u.texelHeight:"",u?"#define CUBEUV_MAX_MIP "+u.maxMip+".0":"",e.lightMap?"#define USE_LIGHTMAP":"",e.aoMap?"#define USE_AOMAP":"",e.emissiveMap?"#define USE_EMISSIVEMAP":"",e.bumpMap?"#define USE_BUMPMAP":"",e.normalMap?"#define USE_NORMALMAP":"",e.normalMap&&e.objectSpaceNormalMap?"#define OBJECTSPACE_NORMALMAP":"",e.normalMap&&e.tangentSpaceNormalMap?"#define TANGENTSPACE_NORMALMAP":"",e.clearcoat?"#define USE_CLEARCOAT":"",e.clearcoatMap?"#define USE_CLEARCOATMAP":"",e.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",e.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",e.iridescence?"#define USE_IRIDESCENCE":"",e.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",e.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",e.specularMap?"#define USE_SPECULARMAP":"",e.specularIntensityMap?"#define USE_SPECULARINTENSITYMAP":"",e.specularColorMap?"#define USE_SPECULARCOLORMAP":"",e.roughnessMap?"#define USE_ROUGHNESSMAP":"",e.metalnessMap?"#define USE_METALNESSMAP":"",e.alphaMap?"#define USE_ALPHAMAP":"",e.alphaTest?"#define USE_ALPHATEST":"",e.sheen?"#define USE_SHEEN":"",e.sheenColorMap?"#define USE_SHEENCOLORMAP":"",e.sheenRoughnessMap?"#define USE_SHEENROUGHNESSMAP":"",e.transmission?"#define USE_TRANSMISSION":"",e.transmissionMap?"#define USE_TRANSMISSIONMAP":"",e.thicknessMap?"#define USE_THICKNESSMAP":"",e.decodeVideoTexture?"#define DECODE_VIDEO_TEXTURE":"",e.vertexTangents?"#define USE_TANGENT":"",e.vertexColors||e.instancingColor?"#define USE_COLOR":"",e.vertexAlphas?"#define USE_COLOR_ALPHA":"",e.vertexUvs?"#define USE_UV":"",e.uvsVertexOnly?"#define UVS_VERTEX_ONLY":"",e.gradientMap?"#define USE_GRADIENTMAP":"",e.flatShading?"#define FLAT_SHADED":"",e.doubleSided?"#define DOUBLE_SIDED":"",e.flipSided?"#define FLIP_SIDED":"",e.shadowMapEnabled?"#define USE_SHADOWMAP":"",e.shadowMapEnabled?"#define "+c:"",e.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",e.physicallyCorrectLights?"#define PHYSICALLY_CORRECT_LIGHTS":"",e.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",e.logarithmicDepthBuffer&&e.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",e.toneMapping!==We?"#define TONE_MAPPING":"",e.toneMapping!==We?wt.tonemapping_pars_fragment:"",e.toneMapping!==We?Sd("toneMapping",e.toneMapping):"",e.dithering?"#define DITHERING":"",e.opaque?"#define OPAQUE":"",wt.encodings_pars_fragment,wd("linearToOutputTexel",e.outputEncoding),e.useDepthPacking?"#define DEPTH_PACKING "+e.depthPacking:"",\`
|
||
\`].filter(hi).join(\`
|
||
\`)),o=ir(o),o=Fa(o,e),o=za(o,e),a=ir(a),a=Fa(a,e),a=za(a,e),o=Oa(o),a=Oa(a),e.isWebGL2&&e.isRawShaderMaterial!==!0&&(T=\`#version 300 es
|
||
\`,d=["precision mediump sampler2DArray;","#define attribute in","#define varying out","#define texture2D texture"].join(\`
|
||
\`)+\`
|
||
\`+d,v=["#define varying in",e.glslVersion===ca?"":"layout(location = 0) out highp vec4 pc_fragColor;",e.glslVersion===ca?"":"#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(\`
|
||
\`)+\`
|
||
\`+v);let b=T+d+o,M=T+v+a,A=Da(i,35633,b),C=Da(i,35632,M);if(i.attachShader(p,A),i.attachShader(p,C),e.index0AttributeName!==void 0?i.bindAttribLocation(p,0,e.index0AttributeName):e.morphTargets===!0&&i.bindAttribLocation(p,0,"position"),i.linkProgram(p),r.debug.checkShaderErrors){let S=i.getProgramInfoLog(p).trim(),L=i.getShaderInfoLog(A).trim(),X=i.getShaderInfoLog(C).trim(),q=!0,z=!0;if(i.getProgramParameter(p,35714)===!1){q=!1;let R=Na(i,A,"vertex"),G=Na(i,C,"fragment");console.error("THREE.WebGLProgram: Shader Error "+i.getError()+" - VALIDATE_STATUS "+i.getProgramParameter(p,35715)+\`
|
||
|
||
Program Info Log: \`+S+\`
|
||
\`+R+\`
|
||
\`+G)}else S!==""?console.warn("THREE.WebGLProgram: Program Info Log:",S):(L===""||X==="")&&(z=!1);z&&(this.diagnostics={runnable:q,programLog:S,vertexShader:{log:L,prefix:d},fragmentShader:{log:X,prefix:v}})}i.deleteShader(A),i.deleteShader(C);let I;this.getUniforms=function(){return I===void 0&&(I=new Wn(i,p)),I};let x;return this.getAttributes=function(){return x===void 0&&(x=Ed(i,p)),x},this.destroy=function(){n.releaseStatesOfProgram(this),i.deleteProgram(p),this.program=void 0},this.name=e.shaderName,this.id=vd++,this.cacheKey=t,this.usedTimes=1,this.program=p,this.vertexShader=A,this.fragmentShader=C,this}var Ud=0,sr=class{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(t){let e=t.vertexShader,n=t.fragmentShader,i=this._getShaderStage(e),s=this._getShaderStage(n),o=this._getShaderCacheForMaterial(t);return o.has(i)===!1&&(o.add(i),i.usedTimes++),o.has(s)===!1&&(o.add(s),s.usedTimes++),this}remove(t){let e=this.materialCache.get(t);for(let n of e)n.usedTimes--,n.usedTimes===0&&this.shaderCache.delete(n.code);return this.materialCache.delete(t),this}getVertexShaderID(t){return this._getShaderStage(t.vertexShader).id}getFragmentShaderID(t){return this._getShaderStage(t.fragmentShader).id}dispose(){this.shaderCache.clear(),this.materialCache.clear()}_getShaderCacheForMaterial(t){let e=this.materialCache,n=e.get(t);return n===void 0&&(n=new Set,e.set(t,n)),n}_getShaderStage(t){let e=this.shaderCache,n=e.get(t);return n===void 0&&(n=new rr(t),e.set(t,n)),n}},rr=class{constructor(t){this.id=Ud++,this.code=t,this.usedTimes=0}};function Bd(r,t,e,n,i,s,o){let a=new Zi,c=new sr,l=[],h=i.isWebGL2,f=i.logarithmicDepthBuffer,u=i.vertexTextures,m=i.precision,_={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 p(x,S,L,X,q){let z=X.fog,R=q.geometry,G=x.isMeshStandardMaterial?X.environment:null,Y=(x.isMeshStandardMaterial?e:t).get(x.envMap||G),j=Y&&Y.mapping===ns?Y.image.height:null,W=_[x.type];x.precision!==null&&(m=i.getMaxPrecision(x.precision),m!==x.precision&&console.warn("THREE.WebGLProgram.getParameters:",x.precision,"not supported, using",m,"instead."));let Q=R.morphAttributes.position||R.morphAttributes.normal||R.morphAttributes.color,Z=Q!==void 0?Q.length:0,ft=0;R.morphAttributes.position!==void 0&&(ft=1),R.morphAttributes.normal!==void 0&&(ft=2),R.morphAttributes.color!==void 0&&(ft=3);let F,J,nt,it;if(W){let Ft=De[W];F=Ft.vertexShader,J=Ft.fragmentShader}else F=x.vertexShader,J=x.fragmentShader,c.update(x),nt=c.getVertexShaderID(x),it=c.getFragmentShaderID(x);let O=r.getRenderTarget(),Mt=x.alphaTest>0,ht=x.clearcoat>0,ut=x.iridescence>0;return{isWebGL2:h,shaderID:W,shaderName:x.type,vertexShader:F,fragmentShader:J,defines:x.defines,customVertexShaderID:nt,customFragmentShaderID:it,isRawShaderMaterial:x.isRawShaderMaterial===!0,glslVersion:x.glslVersion,precision:m,instancing:q.isInstancedMesh===!0,instancingColor:q.isInstancedMesh===!0&&q.instanceColor!==null,supportsVertexTextures:u,outputEncoding:O===null?r.outputEncoding:O.isXRRenderTarget===!0?O.texture.encoding:vn,map:!!x.map,matcap:!!x.matcap,envMap:!!Y,envMapMode:Y&&Y.mapping,envMapCubeUVHeight:j,lightMap:!!x.lightMap,aoMap:!!x.aoMap,emissiveMap:!!x.emissiveMap,bumpMap:!!x.bumpMap,normalMap:!!x.normalMap,objectSpaceNormalMap:x.normalMapType===sl,tangentSpaceNormalMap:x.normalMapType===il,decodeVideoTexture:!!x.map&&x.map.isVideoTexture===!0&&x.map.encoding===zt,clearcoat:ht,clearcoatMap:ht&&!!x.clearcoatMap,clearcoatRoughnessMap:ht&&!!x.clearcoatRoughnessMap,clearcoatNormalMap:ht&&!!x.clearcoatNormalMap,iridescence:ut,iridescenceMap:ut&&!!x.iridescenceMap,iridescenceThicknessMap:ut&&!!x.iridescenceThicknessMap,displacementMap:!!x.displacementMap,roughnessMap:!!x.roughnessMap,metalnessMap:!!x.metalnessMap,specularMap:!!x.specularMap,specularIntensityMap:!!x.specularIntensityMap,specularColorMap:!!x.specularColorMap,opaque:x.transparent===!1&&x.blending===Gn,alphaMap:!!x.alphaMap,alphaTest:Mt,gradientMap:!!x.gradientMap,sheen:x.sheen>0,sheenColorMap:!!x.sheenColorMap,sheenRoughnessMap:!!x.sheenRoughnessMap,transmission:x.transmission>0,transmissionMap:!!x.transmissionMap,thicknessMap:!!x.thicknessMap,combine:x.combine,vertexTangents:!!x.normalMap&&!!R.attributes.tangent,vertexColors:x.vertexColors,vertexAlphas:x.vertexColors===!0&&!!R.attributes.color&&R.attributes.color.itemSize===4,vertexUvs:!!x.map||!!x.bumpMap||!!x.normalMap||!!x.specularMap||!!x.alphaMap||!!x.emissiveMap||!!x.roughnessMap||!!x.metalnessMap||!!x.clearcoatMap||!!x.clearcoatRoughnessMap||!!x.clearcoatNormalMap||!!x.iridescenceMap||!!x.iridescenceThicknessMap||!!x.displacementMap||!!x.transmissionMap||!!x.thicknessMap||!!x.specularIntensityMap||!!x.specularColorMap||!!x.sheenColorMap||!!x.sheenRoughnessMap,uvsVertexOnly:!(x.map||x.bumpMap||x.normalMap||x.specularMap||x.alphaMap||x.emissiveMap||x.roughnessMap||x.metalnessMap||x.clearcoatNormalMap||x.iridescenceMap||x.iridescenceThicknessMap||x.transmission>0||x.transmissionMap||x.thicknessMap||x.specularIntensityMap||x.specularColorMap||x.sheen>0||x.sheenColorMap||x.sheenRoughnessMap)&&!!x.displacementMap,fog:!!z,useFog:x.fog===!0,fogExp2:z&&z.isFogExp2,flatShading:!!x.flatShading,sizeAttenuation:x.sizeAttenuation,logarithmicDepthBuffer:f,skinning:q.isSkinnedMesh===!0,morphTargets:R.morphAttributes.position!==void 0,morphNormals:R.morphAttributes.normal!==void 0,morphColors:R.morphAttributes.color!==void 0,morphTargetsCount:Z,morphTextureStride:ft,numDirLights:S.directional.length,numPointLights:S.point.length,numSpotLights:S.spot.length,numSpotLightMaps:S.spotLightMap.length,numRectAreaLights:S.rectArea.length,numHemiLights:S.hemi.length,numDirLightShadows:S.directionalShadowMap.length,numPointLightShadows:S.pointShadowMap.length,numSpotLightShadows:S.spotShadowMap.length,numSpotLightShadowsWithMaps:S.numSpotLightShadowsWithMaps,numClippingPlanes:o.numPlanes,numClipIntersection:o.numIntersection,dithering:x.dithering,shadowMapEnabled:r.shadowMap.enabled&&L.length>0,shadowMapType:r.shadowMap.type,toneMapping:x.toneMapped?r.toneMapping:We,physicallyCorrectLights:r.physicallyCorrectLights,premultipliedAlpha:x.premultipliedAlpha,doubleSided:x.side===tn,flipSided:x.side===ye,useDepthPacking:!!x.depthPacking,depthPacking:x.depthPacking||0,index0AttributeName:x.index0AttributeName,extensionDerivatives:x.extensions&&x.extensions.derivatives,extensionFragDepth:x.extensions&&x.extensions.fragDepth,extensionDrawBuffers:x.extensions&&x.extensions.drawBuffers,extensionShaderTextureLOD:x.extensions&&x.extensions.shaderTextureLOD,rendererExtensionFragDepth:h||n.has("EXT_frag_depth"),rendererExtensionDrawBuffers:h||n.has("WEBGL_draw_buffers"),rendererExtensionShaderTextureLod:h||n.has("EXT_shader_texture_lod"),customProgramCacheKey:x.customProgramCacheKey()}}function d(x){let S=[];if(x.shaderID?S.push(x.shaderID):(S.push(x.customVertexShaderID),S.push(x.customFragmentShaderID)),x.defines!==void 0)for(let L in x.defines)S.push(L),S.push(x.defines[L]);return x.isRawShaderMaterial===!1&&(v(S,x),T(S,x),S.push(r.outputEncoding)),S.push(x.customProgramCacheKey),S.join()}function v(x,S){x.push(S.precision),x.push(S.outputEncoding),x.push(S.envMapMode),x.push(S.envMapCubeUVHeight),x.push(S.combine),x.push(S.vertexUvs),x.push(S.fogExp2),x.push(S.sizeAttenuation),x.push(S.morphTargetsCount),x.push(S.morphAttributeCount),x.push(S.numDirLights),x.push(S.numPointLights),x.push(S.numSpotLights),x.push(S.numSpotLightMaps),x.push(S.numHemiLights),x.push(S.numRectAreaLights),x.push(S.numDirLightShadows),x.push(S.numPointLightShadows),x.push(S.numSpotLightShadows),x.push(S.numSpotLightShadowsWithMaps),x.push(S.shadowMapType),x.push(S.toneMapping),x.push(S.numClippingPlanes),x.push(S.numClipIntersection),x.push(S.depthPacking)}function T(x,S){a.disableAll(),S.isWebGL2&&a.enable(0),S.supportsVertexTextures&&a.enable(1),S.instancing&&a.enable(2),S.instancingColor&&a.enable(3),S.map&&a.enable(4),S.matcap&&a.enable(5),S.envMap&&a.enable(6),S.lightMap&&a.enable(7),S.aoMap&&a.enable(8),S.emissiveMap&&a.enable(9),S.bumpMap&&a.enable(10),S.normalMap&&a.enable(11),S.objectSpaceNormalMap&&a.enable(12),S.tangentSpaceNormalMap&&a.enable(13),S.clearcoat&&a.enable(14),S.clearcoatMap&&a.enable(15),S.clearcoatRoughnessMap&&a.enable(16),S.clearcoatNormalMap&&a.enable(17),S.iridescence&&a.enable(18),S.iridescenceMap&&a.enable(19),S.iridescenceThicknessMap&&a.enable(20),S.displacementMap&&a.enable(21),S.specularMap&&a.enable(22),S.roughnessMap&&a.enable(23),S.metalnessMap&&a.enable(24),S.gradientMap&&a.enable(25),S.alphaMap&&a.enable(26),S.alphaTest&&a.enable(27),S.vertexColors&&a.enable(28),S.vertexAlphas&&a.enable(29),S.vertexUvs&&a.enable(30),S.vertexTangents&&a.enable(31),S.uvsVertexOnly&&a.enable(32),x.push(a.mask),a.disableAll(),S.fog&&a.enable(0),S.useFog&&a.enable(1),S.flatShading&&a.enable(2),S.logarithmicDepthBuffer&&a.enable(3),S.skinning&&a.enable(4),S.morphTargets&&a.enable(5),S.morphNormals&&a.enable(6),S.morphColors&&a.enable(7),S.premultipliedAlpha&&a.enable(8),S.shadowMapEnabled&&a.enable(9),S.physicallyCorrectLights&&a.enable(10),S.doubleSided&&a.enable(11),S.flipSided&&a.enable(12),S.useDepthPacking&&a.enable(13),S.dithering&&a.enable(14),S.specularIntensityMap&&a.enable(15),S.specularColorMap&&a.enable(16),S.transmission&&a.enable(17),S.transmissionMap&&a.enable(18),S.thicknessMap&&a.enable(19),S.sheen&&a.enable(20),S.sheenColorMap&&a.enable(21),S.sheenRoughnessMap&&a.enable(22),S.decodeVideoTexture&&a.enable(23),S.opaque&&a.enable(24),x.push(a.mask)}function b(x){let S=_[x.type],L;if(S){let X=De[S];L=Il.clone(X.uniforms)}else L=x.uniforms;return L}function M(x,S){let L;for(let X=0,q=l.length;X<q;X++){let z=l[X];if(z.cacheKey===S){L=z,++L.usedTimes;break}}return L===void 0&&(L=new Od(r,S,x,s),l.push(L)),L}function A(x){if(--x.usedTimes===0){let S=l.indexOf(x);l[S]=l[l.length-1],l.pop(),x.destroy()}}function C(x){c.remove(x)}function I(){c.dispose()}return{getParameters:p,getProgramCacheKey:d,getUniforms:b,acquireProgram:M,releaseProgram:A,releaseShaderCache:C,programs:l,dispose:I}}function kd(){let r=new WeakMap;function t(s){let o=r.get(s);return o===void 0&&(o={},r.set(s,o)),o}function e(s){r.delete(s)}function n(s,o,a){r.get(s)[o]=a}function i(){r=new WeakMap}return{get:t,remove:e,update:n,dispose:i}}function Vd(r,t){return r.groupOrder!==t.groupOrder?r.groupOrder-t.groupOrder:r.renderOrder!==t.renderOrder?r.renderOrder-t.renderOrder:r.material.id!==t.material.id?r.material.id-t.material.id:r.z!==t.z?r.z-t.z:r.id-t.id}function Ba(r,t){return r.groupOrder!==t.groupOrder?r.groupOrder-t.groupOrder:r.renderOrder!==t.renderOrder?r.renderOrder-t.renderOrder:r.z!==t.z?t.z-r.z:r.id-t.id}function ka(){let r=[],t=0,e=[],n=[],i=[];function s(){t=0,e.length=0,n.length=0,i.length=0}function o(f,u,m,_,p,d){let v=r[t];return v===void 0?(v={id:f.id,object:f,geometry:u,material:m,groupOrder:_,renderOrder:f.renderOrder,z:p,group:d},r[t]=v):(v.id=f.id,v.object=f,v.geometry=u,v.material=m,v.groupOrder=_,v.renderOrder=f.renderOrder,v.z=p,v.group=d),t++,v}function a(f,u,m,_,p,d){let v=o(f,u,m,_,p,d);m.transmission>0?n.push(v):m.transparent===!0?i.push(v):e.push(v)}function c(f,u,m,_,p,d){let v=o(f,u,m,_,p,d);m.transmission>0?n.unshift(v):m.transparent===!0?i.unshift(v):e.unshift(v)}function l(f,u){e.length>1&&e.sort(f||Vd),n.length>1&&n.sort(u||Ba),i.length>1&&i.sort(u||Ba)}function h(){for(let f=t,u=r.length;f<u;f++){let m=r[f];if(m.id===null)break;m.id=null,m.object=null,m.geometry=null,m.material=null,m.group=null}}return{opaque:e,transmissive:n,transparent:i,init:s,push:a,unshift:c,finish:h,sort:l}}function Gd(){let r=new WeakMap;function t(n,i){let s=r.get(n),o;return s===void 0?(o=new ka,r.set(n,[o])):i>=s.length?(o=new ka,s.push(o)):o=s[i],o}function e(){r=new WeakMap}return{get:t,dispose:e}}function Hd(){let r={};return{get:function(t){if(r[t.id]!==void 0)return r[t.id];let e;switch(t.type){case"DirectionalLight":e={direction:new N,color:new Ot};break;case"SpotLight":e={position:new N,direction:new N,color:new Ot,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":e={position:new N,color:new Ot,distance:0,decay:0};break;case"HemisphereLight":e={direction:new N,skyColor:new Ot,groundColor:new Ot};break;case"RectAreaLight":e={color:new Ot,position:new N,halfWidth:new N,halfHeight:new N};break}return r[t.id]=e,e}}}function Wd(){let r={};return{get:function(t){if(r[t.id]!==void 0)return r[t.id];let e;switch(t.type){case"DirectionalLight":e={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Nt};break;case"SpotLight":e={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Nt};break;case"PointLight":e={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Nt,shadowCameraNear:1,shadowCameraFar:1e3};break}return r[t.id]=e,e}}}var Xd=0;function qd(r,t){return(t.castShadow?2:0)-(r.castShadow?2:0)+(t.map?1:0)-(r.map?1:0)}function Yd(r,t){let e=new Hd,n=Wd(),i={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1,numSpotMaps:-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};for(let h=0;h<9;h++)i.probe.push(new N);let s=new N,o=new qt,a=new qt;function c(h,f){let u=0,m=0,_=0;for(let X=0;X<9;X++)i.probe[X].set(0,0,0);let p=0,d=0,v=0,T=0,b=0,M=0,A=0,C=0,I=0,x=0;h.sort(qd);let S=f!==!0?Math.PI:1;for(let X=0,q=h.length;X<q;X++){let z=h[X],R=z.color,G=z.intensity,Y=z.distance,j=z.shadow&&z.shadow.map?z.shadow.map.texture:null;if(z.isAmbientLight)u+=R.r*G*S,m+=R.g*G*S,_+=R.b*G*S;else if(z.isLightProbe)for(let W=0;W<9;W++)i.probe[W].addScaledVector(z.sh.coefficients[W],G);else if(z.isDirectionalLight){let W=e.get(z);if(W.color.copy(z.color).multiplyScalar(z.intensity*S),z.castShadow){let Q=z.shadow,Z=n.get(z);Z.shadowBias=Q.bias,Z.shadowNormalBias=Q.normalBias,Z.shadowRadius=Q.radius,Z.shadowMapSize=Q.mapSize,i.directionalShadow[p]=Z,i.directionalShadowMap[p]=j,i.directionalShadowMatrix[p]=z.shadow.matrix,M++}i.directional[p]=W,p++}else if(z.isSpotLight){let W=e.get(z);W.position.setFromMatrixPosition(z.matrixWorld),W.color.copy(R).multiplyScalar(G*S),W.distance=Y,W.coneCos=Math.cos(z.angle),W.penumbraCos=Math.cos(z.angle*(1-z.penumbra)),W.decay=z.decay,i.spot[v]=W;let Q=z.shadow;if(z.map&&(i.spotLightMap[I]=z.map,I++,Q.updateMatrices(z),z.castShadow&&x++),i.spotLightMatrix[v]=Q.matrix,z.castShadow){let Z=n.get(z);Z.shadowBias=Q.bias,Z.shadowNormalBias=Q.normalBias,Z.shadowRadius=Q.radius,Z.shadowMapSize=Q.mapSize,i.spotShadow[v]=Z,i.spotShadowMap[v]=j,C++}v++}else if(z.isRectAreaLight){let W=e.get(z);W.color.copy(R).multiplyScalar(G),W.halfWidth.set(z.width*.5,0,0),W.halfHeight.set(0,z.height*.5,0),i.rectArea[T]=W,T++}else if(z.isPointLight){let W=e.get(z);if(W.color.copy(z.color).multiplyScalar(z.intensity*S),W.distance=z.distance,W.decay=z.decay,z.castShadow){let Q=z.shadow,Z=n.get(z);Z.shadowBias=Q.bias,Z.shadowNormalBias=Q.normalBias,Z.shadowRadius=Q.radius,Z.shadowMapSize=Q.mapSize,Z.shadowCameraNear=Q.camera.near,Z.shadowCameraFar=Q.camera.far,i.pointShadow[d]=Z,i.pointShadowMap[d]=j,i.pointShadowMatrix[d]=z.shadow.matrix,A++}i.point[d]=W,d++}else if(z.isHemisphereLight){let W=e.get(z);W.skyColor.copy(z.color).multiplyScalar(G*S),W.groundColor.copy(z.groundColor).multiplyScalar(G*S),i.hemi[b]=W,b++}}T>0&&(t.isWebGL2||r.has("OES_texture_float_linear")===!0?(i.rectAreaLTC1=et.LTC_FLOAT_1,i.rectAreaLTC2=et.LTC_FLOAT_2):r.has("OES_texture_half_float_linear")===!0?(i.rectAreaLTC1=et.LTC_HALF_1,i.rectAreaLTC2=et.LTC_HALF_2):console.error("THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.")),i.ambient[0]=u,i.ambient[1]=m,i.ambient[2]=_;let L=i.hash;(L.directionalLength!==p||L.pointLength!==d||L.spotLength!==v||L.rectAreaLength!==T||L.hemiLength!==b||L.numDirectionalShadows!==M||L.numPointShadows!==A||L.numSpotShadows!==C||L.numSpotMaps!==I)&&(i.directional.length=p,i.spot.length=v,i.rectArea.length=T,i.point.length=d,i.hemi.length=b,i.directionalShadow.length=M,i.directionalShadowMap.length=M,i.pointShadow.length=A,i.pointShadowMap.length=A,i.spotShadow.length=C,i.spotShadowMap.length=C,i.directionalShadowMatrix.length=M,i.pointShadowMatrix.length=A,i.spotLightMatrix.length=C+I-x,i.spotLightMap.length=I,i.numSpotLightShadowsWithMaps=x,L.directionalLength=p,L.pointLength=d,L.spotLength=v,L.rectAreaLength=T,L.hemiLength=b,L.numDirectionalShadows=M,L.numPointShadows=A,L.numSpotShadows=C,L.numSpotMaps=I,i.version=Xd++)}function l(h,f){let u=0,m=0,_=0,p=0,d=0,v=f.matrixWorldInverse;for(let T=0,b=h.length;T<b;T++){let M=h[T];if(M.isDirectionalLight){let A=i.directional[u];A.direction.setFromMatrixPosition(M.matrixWorld),s.setFromMatrixPosition(M.target.matrixWorld),A.direction.sub(s),A.direction.transformDirection(v),u++}else if(M.isSpotLight){let A=i.spot[_];A.position.setFromMatrixPosition(M.matrixWorld),A.position.applyMatrix4(v),A.direction.setFromMatrixPosition(M.matrixWorld),s.setFromMatrixPosition(M.target.matrixWorld),A.direction.sub(s),A.direction.transformDirection(v),_++}else if(M.isRectAreaLight){let A=i.rectArea[p];A.position.setFromMatrixPosition(M.matrixWorld),A.position.applyMatrix4(v),a.identity(),o.copy(M.matrixWorld),o.premultiply(v),a.extractRotation(o),A.halfWidth.set(M.width*.5,0,0),A.halfHeight.set(0,M.height*.5,0),A.halfWidth.applyMatrix4(a),A.halfHeight.applyMatrix4(a),p++}else if(M.isPointLight){let A=i.point[m];A.position.setFromMatrixPosition(M.matrixWorld),A.position.applyMatrix4(v),m++}else if(M.isHemisphereLight){let A=i.hemi[d];A.direction.setFromMatrixPosition(M.matrixWorld),A.direction.transformDirection(v),d++}}}return{setup:c,setupView:l,state:i}}function Va(r,t){let e=new Yd(r,t),n=[],i=[];function s(){n.length=0,i.length=0}function o(f){n.push(f)}function a(f){i.push(f)}function c(f){e.setup(n,f)}function l(f){e.setupView(n,f)}return{init:s,state:{lightsArray:n,shadowsArray:i,lights:e},setupLights:c,setupLightsView:l,pushLight:o,pushShadow:a}}function Zd(r,t){let e=new WeakMap;function n(s,o=0){let a=e.get(s),c;return a===void 0?(c=new Va(r,t),e.set(s,[c])):o>=a.length?(c=new Va(r,t),a.push(c)):c=a[o],c}function i(){e=new WeakMap}return{get:n,dispose:i}}var ar=class extends Jn{constructor(t){super(),this.isMeshDepthMaterial=!0,this.type="MeshDepthMaterial",this.depthPacking=el,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.setValues(t)}copy(t){return super.copy(t),this.depthPacking=t.depthPacking,this.map=t.map,this.alphaMap=t.alphaMap,this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this}},or=class extends Jn{constructor(t){super(),this.isMeshDistanceMaterial=!0,this.type="MeshDistanceMaterial",this.referencePosition=new N,this.nearDistance=1,this.farDistance=1e3,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.setValues(t)}copy(t){return super.copy(t),this.referencePosition.copy(t.referencePosition),this.nearDistance=t.nearDistance,this.farDistance=t.farDistance,this.map=t.map,this.alphaMap=t.alphaMap,this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this}},Jd=\`void main() {
|
||
gl_Position = vec4( position, 1.0 );
|
||
}\`,$d=\`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 Kd(r,t,e){let n=new ts,i=new Nt,s=new Nt,o=new Xt,a=new ar({depthPacking:nl}),c=new or,l={},h=e.maxTextureSize,f={[nn]:ye,[ye]:nn,[tn]:tn},u=new Ze({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new Nt},radius:{value:4}},vertexShader:Jd,fragmentShader:$d}),m=u.clone();m.defines.HORIZONTAL_PASS=1;let _=new Ye;_.setAttribute("position",new ce(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));let p=new Ne(_,u),d=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=Ga,this.render=function(M,A,C){if(d.enabled===!1||d.autoUpdate===!1&&d.needsUpdate===!1||M.length===0)return;let I=r.getRenderTarget(),x=r.getActiveCubeFace(),S=r.getActiveMipmapLevel(),L=r.state;L.setBlending(en),L.buffers.color.setClear(1,1,1,1),L.buffers.depth.setTest(!0),L.setScissorTest(!1);for(let X=0,q=M.length;X<q;X++){let z=M[X],R=z.shadow;if(R===void 0){console.warn("THREE.WebGLShadowMap:",z,"has no shadow.");continue}if(R.autoUpdate===!1&&R.needsUpdate===!1)continue;i.copy(R.mapSize);let G=R.getFrameExtents();if(i.multiply(G),s.copy(R.mapSize),(i.x>h||i.y>h)&&(i.x>h&&(s.x=Math.floor(h/G.x),i.x=s.x*G.x,R.mapSize.x=s.x),i.y>h&&(s.y=Math.floor(h/G.y),i.y=s.y*G.y,R.mapSize.y=s.y)),R.map===null){let j=this.type!==li?{minFilter:ae,magFilter:ae}:{};R.map=new qe(i.x,i.y,j),R.map.texture.name=z.name+".shadowMap",R.camera.updateProjectionMatrix()}r.setRenderTarget(R.map),r.clear();let Y=R.getViewportCount();for(let j=0;j<Y;j++){let W=R.getViewport(j);o.set(s.x*W.x,s.y*W.y,s.x*W.z,s.y*W.w),L.viewport(o),R.updateMatrices(z,j),n=R.getFrustum(),b(A,C,R.camera,z,this.type)}R.isPointLightShadow!==!0&&this.type===li&&v(R,C),R.needsUpdate=!1}d.needsUpdate=!1,r.setRenderTarget(I,x,S)};function v(M,A){let C=t.update(p);u.defines.VSM_SAMPLES!==M.blurSamples&&(u.defines.VSM_SAMPLES=M.blurSamples,m.defines.VSM_SAMPLES=M.blurSamples,u.needsUpdate=!0,m.needsUpdate=!0),M.mapPass===null&&(M.mapPass=new qe(i.x,i.y)),u.uniforms.shadow_pass.value=M.map.texture,u.uniforms.resolution.value=M.mapSize,u.uniforms.radius.value=M.radius,r.setRenderTarget(M.mapPass),r.clear(),r.renderBufferDirect(A,null,C,u,p,null),m.uniforms.shadow_pass.value=M.mapPass.texture,m.uniforms.resolution.value=M.mapSize,m.uniforms.radius.value=M.radius,r.setRenderTarget(M.map),r.clear(),r.renderBufferDirect(A,null,C,m,p,null)}function T(M,A,C,I,x,S){let L=null,X=C.isPointLight===!0?M.customDistanceMaterial:M.customDepthMaterial;if(X!==void 0)L=X;else if(L=C.isPointLight===!0?c:a,r.localClippingEnabled&&A.clipShadows===!0&&Array.isArray(A.clippingPlanes)&&A.clippingPlanes.length!==0||A.displacementMap&&A.displacementScale!==0||A.alphaMap&&A.alphaTest>0||A.map&&A.alphaTest>0){let q=L.uuid,z=A.uuid,R=l[q];R===void 0&&(R={},l[q]=R);let G=R[z];G===void 0&&(G=L.clone(),R[z]=G),L=G}return L.visible=A.visible,L.wireframe=A.wireframe,S===li?L.side=A.shadowSide!==null?A.shadowSide:A.side:L.side=A.shadowSide!==null?A.shadowSide:f[A.side],L.alphaMap=A.alphaMap,L.alphaTest=A.alphaTest,L.map=A.map,L.clipShadows=A.clipShadows,L.clippingPlanes=A.clippingPlanes,L.clipIntersection=A.clipIntersection,L.displacementMap=A.displacementMap,L.displacementScale=A.displacementScale,L.displacementBias=A.displacementBias,L.wireframeLinewidth=A.wireframeLinewidth,L.linewidth=A.linewidth,C.isPointLight===!0&&L.isMeshDistanceMaterial===!0&&(L.referencePosition.setFromMatrixPosition(C.matrixWorld),L.nearDistance=I,L.farDistance=x),L}function b(M,A,C,I,x){if(M.visible===!1)return;if(M.layers.test(A.layers)&&(M.isMesh||M.isLine||M.isPoints)&&(M.castShadow||M.receiveShadow&&x===li)&&(!M.frustumCulled||n.intersectsObject(M))){M.modelViewMatrix.multiplyMatrices(C.matrixWorldInverse,M.matrixWorld);let X=t.update(M),q=M.material;if(Array.isArray(q)){let z=X.groups;for(let R=0,G=z.length;R<G;R++){let Y=z[R],j=q[Y.materialIndex];if(j&&j.visible){let W=T(M,j,I,C.near,C.far,x);r.renderBufferDirect(C,null,X,W,M,Y)}}}else if(q.visible){let z=T(M,q,I,C.near,C.far,x);r.renderBufferDirect(C,null,X,z,M,null)}}let L=M.children;for(let X=0,q=L.length;X<q;X++)b(L[X],A,C,I,x)}}function jd(r,t,e){let n=e.isWebGL2;function i(){let E=!1,U=new Xt,$=null,at=new Xt(0,0,0,0);return{setMask:function(ct){$!==ct&&!E&&(r.colorMask(ct,ct,ct,ct),$=ct)},setLocked:function(ct){E=ct},setClear:function(ct,Lt,$t,te,an){an===!0&&(ct*=te,Lt*=te,$t*=te),U.set(ct,Lt,$t,te),at.equals(U)===!1&&(r.clearColor(ct,Lt,$t,te),at.copy(U))},reset:function(){E=!1,$=null,at.set(-1,0,0,0)}}}function s(){let E=!1,U=null,$=null,at=null;return{setTest:function(ct){ct?Mt(2929):ht(2929)},setMask:function(ct){U!==ct&&!E&&(r.depthMask(ct),U=ct)},setFunc:function(ct){if($!==ct){switch(ct){case To:r.depthFunc(512);break;case Ao:r.depthFunc(519);break;case Eo:r.depthFunc(513);break;case Gs:r.depthFunc(515);break;case Co:r.depthFunc(514);break;case Po:r.depthFunc(518);break;case Ro:r.depthFunc(516);break;case Lo:r.depthFunc(517);break;default:r.depthFunc(515)}$=ct}},setLocked:function(ct){E=ct},setClear:function(ct){at!==ct&&(r.clearDepth(ct),at=ct)},reset:function(){E=!1,U=null,$=null,at=null}}}function o(){let E=!1,U=null,$=null,at=null,ct=null,Lt=null,$t=null,te=null,an=null;return{setTest:function(Bt){E||(Bt?Mt(2960):ht(2960))},setMask:function(Bt){U!==Bt&&!E&&(r.stencilMask(Bt),U=Bt)},setFunc:function(Bt,ze,be){($!==Bt||at!==ze||ct!==be)&&(r.stencilFunc(Bt,ze,be),$=Bt,at=ze,ct=be)},setOp:function(Bt,ze,be){(Lt!==Bt||$t!==ze||te!==be)&&(r.stencilOp(Bt,ze,be),Lt=Bt,$t=ze,te=be)},setLocked:function(Bt){E=Bt},setClear:function(Bt){an!==Bt&&(r.clearStencil(Bt),an=Bt)},reset:function(){E=!1,U=null,$=null,at=null,ct=null,Lt=null,$t=null,te=null,an=null}}}let a=new i,c=new s,l=new o,h=new WeakMap,f=new WeakMap,u={},m={},_=new WeakMap,p=[],d=null,v=!1,T=null,b=null,M=null,A=null,C=null,I=null,x=null,S=!1,L=null,X=null,q=null,z=null,R=null,G=r.getParameter(35661),Y=!1,j=0,W=r.getParameter(7938);W.indexOf("WebGL")!==-1?(j=parseFloat(/^WebGL (\\d)/.exec(W)[1]),Y=j>=1):W.indexOf("OpenGL ES")!==-1&&(j=parseFloat(/^OpenGL ES (\\d)/.exec(W)[1]),Y=j>=2);let Q=null,Z={},ft=r.getParameter(3088),F=r.getParameter(2978),J=new Xt().fromArray(ft),nt=new Xt().fromArray(F);function it(E,U,$){let at=new Uint8Array(4),ct=r.createTexture();r.bindTexture(E,ct),r.texParameteri(E,10241,9728),r.texParameteri(E,10240,9728);for(let Lt=0;Lt<$;Lt++)r.texImage2D(U+Lt,0,6408,1,1,0,6408,5121,at);return ct}let O={};O[3553]=it(3553,3553,1),O[34067]=it(34067,34069,6),a.setClear(0,0,0,1),c.setClear(1),l.setClear(0),Mt(2929),c.setFunc(Gs),Qt(!1),Me(Pr),Mt(2884),ne(en);function Mt(E){u[E]!==!0&&(r.enable(E),u[E]=!0)}function ht(E){u[E]!==!1&&(r.disable(E),u[E]=!1)}function ut(E,U){return m[E]!==U?(r.bindFramebuffer(E,U),m[E]=U,n&&(E===36009&&(m[36160]=U),E===36160&&(m[36009]=U)),!0):!1}function ot(E,U){let $=p,at=!1;if(E)if($=_.get(U),$===void 0&&($=[],_.set(U,$)),E.isWebGLMultipleRenderTargets){let ct=E.texture;if($.length!==ct.length||$[0]!==36064){for(let Lt=0,$t=ct.length;Lt<$t;Lt++)$[Lt]=36064+Lt;$.length=ct.length,at=!0}}else $[0]!==36064&&($[0]=36064,at=!0);else $[0]!==1029&&($[0]=1029,at=!0);at&&(e.isWebGL2?r.drawBuffers($):t.get("WEBGL_draw_buffers").drawBuffersWEBGL($))}function Ft(E){return d!==E?(r.useProgram(E),d=E,!0):!1}let bt={[Bn]:32774,[po]:32778,[mo]:32779};if(n)bt[Dr]=32775,bt[Nr]=32776;else{let E=t.get("EXT_blend_minmax");E!==null&&(bt[Dr]=E.MIN_EXT,bt[Nr]=E.MAX_EXT)}let xt={[go]:0,[_o]:1,[xo]:768,[Ha]:770,[So]:776,[bo]:774,[vo]:772,[yo]:769,[Wa]:771,[wo]:775,[Mo]:773};function ne(E,U,$,at,ct,Lt,$t,te){if(E===en){v===!0&&(ht(3042),v=!1);return}if(v===!1&&(Mt(3042),v=!0),E!==fo){if(E!==T||te!==S){if((b!==Bn||C!==Bn)&&(r.blendEquation(32774),b=Bn,C=Bn),te)switch(E){case Gn:r.blendFuncSeparate(1,771,1,771);break;case Rr:r.blendFunc(1,1);break;case Lr:r.blendFuncSeparate(0,769,0,1);break;case Ir:r.blendFuncSeparate(0,768,0,770);break;default:console.error("THREE.WebGLState: Invalid blending: ",E);break}else switch(E){case Gn:r.blendFuncSeparate(770,771,1,771);break;case Rr:r.blendFunc(770,1);break;case Lr:r.blendFuncSeparate(0,769,0,1);break;case Ir:r.blendFunc(0,768);break;default:console.error("THREE.WebGLState: Invalid blending: ",E);break}M=null,A=null,I=null,x=null,T=E,S=te}return}ct=ct||U,Lt=Lt||$,$t=$t||at,(U!==b||ct!==C)&&(r.blendEquationSeparate(bt[U],bt[ct]),b=U,C=ct),($!==M||at!==A||Lt!==I||$t!==x)&&(r.blendFuncSeparate(xt[$],xt[at],xt[Lt],xt[$t]),M=$,A=at,I=Lt,x=$t),T=E,S=!1}function ve(E,U){E.side===tn?ht(2884):Mt(2884);let $=E.side===ye;U&&($=!$),Qt($),E.blending===Gn&&E.transparent===!1?ne(en):ne(E.blending,E.blendEquation,E.blendSrc,E.blendDst,E.blendEquationAlpha,E.blendSrcAlpha,E.blendDstAlpha,E.premultipliedAlpha),c.setFunc(E.depthFunc),c.setTest(E.depthTest),c.setMask(E.depthWrite),a.setMask(E.colorWrite);let at=E.stencilWrite;l.setTest(at),at&&(l.setMask(E.stencilWriteMask),l.setFunc(E.stencilFunc,E.stencilRef,E.stencilFuncMask),l.setOp(E.stencilFail,E.stencilZFail,E.stencilZPass)),Dt(E.polygonOffset,E.polygonOffsetFactor,E.polygonOffsetUnits),E.alphaToCoverage===!0?Mt(32926):ht(32926)}function Qt(E){L!==E&&(E?r.frontFace(2304):r.frontFace(2305),L=E)}function Me(E){E!==co?(Mt(2884),E!==X&&(E===Pr?r.cullFace(1029):E===ho?r.cullFace(1028):r.cullFace(1032))):ht(2884),X=E}function Ht(E){E!==q&&(Y&&r.lineWidth(E),q=E)}function Dt(E,U,$){E?(Mt(32823),(z!==U||R!==$)&&(r.polygonOffset(U,$),z=U,R=$)):ht(32823)}function Fe(E){E?Mt(3089):ht(3089)}function Te(E){E===void 0&&(E=33984+G-1),Q!==E&&(r.activeTexture(E),Q=E)}function w(E,U,$){$===void 0&&(Q===null?$=33984+G-1:$=Q);let at=Z[$];at===void 0&&(at={type:void 0,texture:void 0},Z[$]=at),(at.type!==E||at.texture!==U)&&(Q!==$&&(r.activeTexture($),Q=$),r.bindTexture(E,U||O[E]),at.type=E,at.texture=U)}function g(){let E=Z[Q];E!==void 0&&E.type!==void 0&&(r.bindTexture(E.type,null),E.type=void 0,E.texture=void 0)}function k(){try{r.compressedTexImage2D.apply(r,arguments)}catch(E){console.error("THREE.WebGLState:",E)}}function K(){try{r.compressedTexImage3D.apply(r,arguments)}catch(E){console.error("THREE.WebGLState:",E)}}function tt(){try{r.texSubImage2D.apply(r,arguments)}catch(E){console.error("THREE.WebGLState:",E)}}function st(){try{r.texSubImage3D.apply(r,arguments)}catch(E){console.error("THREE.WebGLState:",E)}}function yt(){try{r.compressedTexSubImage2D.apply(r,arguments)}catch(E){console.error("THREE.WebGLState:",E)}}function rt(){try{r.compressedTexSubImage3D.apply(r,arguments)}catch(E){console.error("THREE.WebGLState:",E)}}function H(){try{r.texStorage2D.apply(r,arguments)}catch(E){console.error("THREE.WebGLState:",E)}}function mt(){try{r.texStorage3D.apply(r,arguments)}catch(E){console.error("THREE.WebGLState:",E)}}function _t(){try{r.texImage2D.apply(r,arguments)}catch(E){console.error("THREE.WebGLState:",E)}}function lt(){try{r.texImage3D.apply(r,arguments)}catch(E){console.error("THREE.WebGLState:",E)}}function gt(E){J.equals(E)===!1&&(r.scissor(E.x,E.y,E.z,E.w),J.copy(E))}function dt(E){nt.equals(E)===!1&&(r.viewport(E.x,E.y,E.z,E.w),nt.copy(E))}function Pt(E,U){let $=f.get(U);$===void 0&&($=new WeakMap,f.set(U,$));let at=$.get(E);at===void 0&&(at=r.getUniformBlockIndex(U,E.name),$.set(E,at))}function Ut(E,U){let at=f.get(U).get(E);h.get(U)!==at&&(r.uniformBlockBinding(U,at,E.__bindingPointIndex),h.set(U,at))}function Jt(){r.disable(3042),r.disable(2884),r.disable(2929),r.disable(32823),r.disable(3089),r.disable(2960),r.disable(32926),r.blendEquation(32774),r.blendFunc(1,0),r.blendFuncSeparate(1,0,1,0),r.colorMask(!0,!0,!0,!0),r.clearColor(0,0,0,0),r.depthMask(!0),r.depthFunc(513),r.clearDepth(1),r.stencilMask(4294967295),r.stencilFunc(519,0,4294967295),r.stencilOp(7680,7680,7680),r.clearStencil(0),r.cullFace(1029),r.frontFace(2305),r.polygonOffset(0,0),r.activeTexture(33984),r.bindFramebuffer(36160,null),n===!0&&(r.bindFramebuffer(36009,null),r.bindFramebuffer(36008,null)),r.useProgram(null),r.lineWidth(1),r.scissor(0,0,r.canvas.width,r.canvas.height),r.viewport(0,0,r.canvas.width,r.canvas.height),u={},Q=null,Z={},m={},_=new WeakMap,p=[],d=null,v=!1,T=null,b=null,M=null,A=null,C=null,I=null,x=null,S=!1,L=null,X=null,q=null,z=null,R=null,J.set(0,0,r.canvas.width,r.canvas.height),nt.set(0,0,r.canvas.width,r.canvas.height),a.reset(),c.reset(),l.reset()}return{buffers:{color:a,depth:c,stencil:l},enable:Mt,disable:ht,bindFramebuffer:ut,drawBuffers:ot,useProgram:Ft,setBlending:ne,setMaterial:ve,setFlipSided:Qt,setCullFace:Me,setLineWidth:Ht,setPolygonOffset:Dt,setScissorTest:Fe,activeTexture:Te,bindTexture:w,unbindTexture:g,compressedTexImage2D:k,compressedTexImage3D:K,texImage2D:_t,texImage3D:lt,updateUBOMapping:Pt,uniformBlockBinding:Ut,texStorage2D:H,texStorage3D:mt,texSubImage2D:tt,texSubImage3D:st,compressedTexSubImage2D:yt,compressedTexSubImage3D:rt,scissor:gt,viewport:dt,reset:Jt}}function Qd(r,t,e,n,i,s,o){let a=i.isWebGL2,c=i.maxTextures,l=i.maxCubemapSize,h=i.maxTextureSize,f=i.maxSamples,u=t.has("WEBGL_multisampled_render_to_texture")?t.get("WEBGL_multisampled_render_to_texture"):null,m=typeof navigator=="undefined"?!1:/OculusBrowser/g.test(navigator.userAgent),_=new WeakMap,p,d=new WeakMap,v=!1;try{v=typeof OffscreenCanvas!="undefined"&&new OffscreenCanvas(1,1).getContext("2d")!==null}catch(w){}function T(w,g){return v?new OffscreenCanvas(w,g):Wi("canvas")}function b(w,g,k,K){let tt=1;if((w.width>K||w.height>K)&&(tt=K/Math.max(w.width,w.height)),tt<1||g===!0)if(typeof HTMLImageElement!="undefined"&&w instanceof HTMLImageElement||typeof HTMLCanvasElement!="undefined"&&w instanceof HTMLCanvasElement||typeof ImageBitmap!="undefined"&&w instanceof ImageBitmap){let st=g?Hi:Math.floor,yt=st(tt*w.width),rt=st(tt*w.height);p===void 0&&(p=T(yt,rt));let H=k?T(yt,rt):p;return H.width=yt,H.height=rt,H.getContext("2d").drawImage(w,0,0,yt,rt),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+w.width+"x"+w.height+") to ("+yt+"x"+rt+")."),H}else return"data"in w&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+w.width+"x"+w.height+")."),w;return w}function M(w){return Zs(w.width)&&Zs(w.height)}function A(w){return a?!1:w.wrapS!==Pe||w.wrapT!==Pe||w.minFilter!==ae&&w.minFilter!==Se}function C(w,g){return w.generateMipmaps&&g&&w.minFilter!==ae&&w.minFilter!==Se}function I(w){r.generateMipmap(w)}function x(w,g,k,K,tt=!1){if(a===!1)return g;if(w!==null){if(r[w]!==void 0)return r[w];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+w+"'")}let st=g;return g===6403&&(k===5126&&(st=33326),k===5131&&(st=33325),k===5121&&(st=33321)),g===33319&&(k===5126&&(st=33328),k===5131&&(st=33327),k===5121&&(st=33323)),g===6408&&(k===5126&&(st=34836),k===5131&&(st=34842),k===5121&&(st=K===zt&&tt===!1?35907:32856),k===32819&&(st=32854),k===32820&&(st=32855)),(st===33325||st===33326||st===33327||st===33328||st===34842||st===34836)&&t.get("EXT_color_buffer_float"),st}function S(w,g,k){return C(w,k)===!0||w.isFramebufferTexture&&w.minFilter!==ae&&w.minFilter!==Se?Math.log2(Math.max(g.width,g.height))+1:w.mipmaps!==void 0&&w.mipmaps.length>0?w.mipmaps.length:w.isCompressedTexture&&Array.isArray(w.image)?g.mipmaps.length:1}function L(w){return w===ae||w===Fr||w===us?9728:9729}function X(w){let g=w.target;g.removeEventListener("dispose",X),z(g),g.isVideoTexture&&_.delete(g)}function q(w){let g=w.target;g.removeEventListener("dispose",q),G(g)}function z(w){let g=n.get(w);if(g.__webglInit===void 0)return;let k=w.source,K=d.get(k);if(K){let tt=K[g.__cacheKey];tt.usedTimes--,tt.usedTimes===0&&R(w),Object.keys(K).length===0&&d.delete(k)}n.remove(w)}function R(w){let g=n.get(w);r.deleteTexture(g.__webglTexture);let k=w.source,K=d.get(k);delete K[g.__cacheKey],o.memory.textures--}function G(w){let g=w.texture,k=n.get(w),K=n.get(g);if(K.__webglTexture!==void 0&&(r.deleteTexture(K.__webglTexture),o.memory.textures--),w.depthTexture&&w.depthTexture.dispose(),w.isWebGLCubeRenderTarget)for(let tt=0;tt<6;tt++)r.deleteFramebuffer(k.__webglFramebuffer[tt]),k.__webglDepthbuffer&&r.deleteRenderbuffer(k.__webglDepthbuffer[tt]);else{if(r.deleteFramebuffer(k.__webglFramebuffer),k.__webglDepthbuffer&&r.deleteRenderbuffer(k.__webglDepthbuffer),k.__webglMultisampledFramebuffer&&r.deleteFramebuffer(k.__webglMultisampledFramebuffer),k.__webglColorRenderbuffer)for(let tt=0;tt<k.__webglColorRenderbuffer.length;tt++)k.__webglColorRenderbuffer[tt]&&r.deleteRenderbuffer(k.__webglColorRenderbuffer[tt]);k.__webglDepthRenderbuffer&&r.deleteRenderbuffer(k.__webglDepthRenderbuffer)}if(w.isWebGLMultipleRenderTargets)for(let tt=0,st=g.length;tt<st;tt++){let yt=n.get(g[tt]);yt.__webglTexture&&(r.deleteTexture(yt.__webglTexture),o.memory.textures--),n.remove(g[tt])}n.remove(g),n.remove(w)}let Y=0;function j(){Y=0}function W(){let w=Y;return w>=c&&console.warn("THREE.WebGLTextures: Trying to use "+w+" texture units while this GPU supports only "+c),Y+=1,w}function Q(w){let g=[];return g.push(w.wrapS),g.push(w.wrapT),g.push(w.wrapR||0),g.push(w.magFilter),g.push(w.minFilter),g.push(w.anisotropy),g.push(w.internalFormat),g.push(w.format),g.push(w.type),g.push(w.generateMipmaps),g.push(w.premultiplyAlpha),g.push(w.flipY),g.push(w.unpackAlignment),g.push(w.encoding),g.join()}function Z(w,g){let k=n.get(w);if(w.isVideoTexture&&Fe(w),w.isRenderTargetTexture===!1&&w.version>0&&k.__version!==w.version){let K=w.image;if(K===null)console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");else if(K.complete===!1)console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete");else{ht(k,w,g);return}}e.bindTexture(3553,k.__webglTexture,33984+g)}function ft(w,g){let k=n.get(w);if(w.version>0&&k.__version!==w.version){ht(k,w,g);return}e.bindTexture(35866,k.__webglTexture,33984+g)}function F(w,g){let k=n.get(w);if(w.version>0&&k.__version!==w.version){ht(k,w,g);return}e.bindTexture(32879,k.__webglTexture,33984+g)}function J(w,g){let k=n.get(w);if(w.version>0&&k.__version!==w.version){ut(k,w,g);return}e.bindTexture(34067,k.__webglTexture,33984+g)}let nt={[Xs]:10497,[Pe]:33071,[qs]:33648},it={[ae]:9728,[Fr]:9984,[us]:9986,[Se]:9729,[Bo]:9985,[pi]:9987};function O(w,g,k){if(k?(r.texParameteri(w,10242,nt[g.wrapS]),r.texParameteri(w,10243,nt[g.wrapT]),(w===32879||w===35866)&&r.texParameteri(w,32882,nt[g.wrapR]),r.texParameteri(w,10240,it[g.magFilter]),r.texParameteri(w,10241,it[g.minFilter])):(r.texParameteri(w,10242,33071),r.texParameteri(w,10243,33071),(w===32879||w===35866)&&r.texParameteri(w,32882,33071),(g.wrapS!==Pe||g.wrapT!==Pe)&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping."),r.texParameteri(w,10240,L(g.magFilter)),r.texParameteri(w,10241,L(g.minFilter)),g.minFilter!==ae&&g.minFilter!==Se&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.")),t.has("EXT_texture_filter_anisotropic")===!0){let K=t.get("EXT_texture_filter_anisotropic");if(g.magFilter===ae||g.minFilter!==us&&g.minFilter!==pi||g.type===gn&&t.has("OES_texture_float_linear")===!1||a===!1&&g.type===mi&&t.has("OES_texture_half_float_linear")===!1)return;(g.anisotropy>1||n.get(g).__currentAnisotropy)&&(r.texParameterf(w,K.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(g.anisotropy,i.getMaxAnisotropy())),n.get(g).__currentAnisotropy=g.anisotropy)}}function Mt(w,g){let k=!1;w.__webglInit===void 0&&(w.__webglInit=!0,g.addEventListener("dispose",X));let K=g.source,tt=d.get(K);tt===void 0&&(tt={},d.set(K,tt));let st=Q(g);if(st!==w.__cacheKey){tt[st]===void 0&&(tt[st]={texture:r.createTexture(),usedTimes:0},o.memory.textures++,k=!0),tt[st].usedTimes++;let yt=tt[w.__cacheKey];yt!==void 0&&(tt[w.__cacheKey].usedTimes--,yt.usedTimes===0&&R(g)),w.__cacheKey=st,w.__webglTexture=tt[st].texture}return k}function ht(w,g,k){let K=3553;(g.isDataArrayTexture||g.isCompressedArrayTexture)&&(K=35866),g.isData3DTexture&&(K=32879);let tt=Mt(w,g),st=g.source;e.bindTexture(K,w.__webglTexture,33984+k);let yt=n.get(st);if(st.version!==yt.__version||tt===!0){e.activeTexture(33984+k),r.pixelStorei(37440,g.flipY),r.pixelStorei(37441,g.premultiplyAlpha),r.pixelStorei(3317,g.unpackAlignment),r.pixelStorei(37443,0);let rt=A(g)&&M(g.image)===!1,H=b(g.image,rt,!1,h);H=Te(g,H);let mt=M(H)||a,_t=s.convert(g.format,g.encoding),lt=s.convert(g.type),gt=x(g.internalFormat,_t,lt,g.encoding,g.isVideoTexture);O(K,g,mt);let dt,Pt=g.mipmaps,Ut=a&&g.isVideoTexture!==!0,Jt=yt.__version===void 0||tt===!0,E=S(g,H,mt);if(g.isDepthTexture)gt=6402,a?g.type===gn?gt=36012:g.type===mn?gt=33190:g.type===Hn?gt=35056:gt=33189:g.type===gn&&console.error("WebGLRenderer: Floating point depth texture requires WebGL2."),g.format===_n&>===6402&&g.type!==Ya&&g.type!==mn&&(console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."),g.type=mn,lt=s.convert(g.type)),g.format===Yn&>===6402&&(gt=34041,g.type!==Hn&&(console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."),g.type=Hn,lt=s.convert(g.type))),Jt&&(Ut?e.texStorage2D(3553,1,gt,H.width,H.height):e.texImage2D(3553,0,gt,H.width,H.height,0,_t,lt,null));else if(g.isDataTexture)if(Pt.length>0&&mt){Ut&&Jt&&e.texStorage2D(3553,E,gt,Pt[0].width,Pt[0].height);for(let U=0,$=Pt.length;U<$;U++)dt=Pt[U],Ut?e.texSubImage2D(3553,U,0,0,dt.width,dt.height,_t,lt,dt.data):e.texImage2D(3553,U,gt,dt.width,dt.height,0,_t,lt,dt.data);g.generateMipmaps=!1}else Ut?(Jt&&e.texStorage2D(3553,E,gt,H.width,H.height),e.texSubImage2D(3553,0,0,0,H.width,H.height,_t,lt,H.data)):e.texImage2D(3553,0,gt,H.width,H.height,0,_t,lt,H.data);else if(g.isCompressedTexture)if(g.isCompressedArrayTexture){Ut&&Jt&&e.texStorage3D(35866,E,gt,Pt[0].width,Pt[0].height,H.depth);for(let U=0,$=Pt.length;U<$;U++)dt=Pt[U],g.format!==Re?_t!==null?Ut?e.compressedTexSubImage3D(35866,U,0,0,0,dt.width,dt.height,H.depth,_t,dt.data,0,0):e.compressedTexImage3D(35866,U,gt,dt.width,dt.height,H.depth,0,dt.data,0,0):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):Ut?e.texSubImage3D(35866,U,0,0,0,dt.width,dt.height,H.depth,_t,lt,dt.data):e.texImage3D(35866,U,gt,dt.width,dt.height,H.depth,0,_t,lt,dt.data)}else{Ut&&Jt&&e.texStorage2D(3553,E,gt,Pt[0].width,Pt[0].height);for(let U=0,$=Pt.length;U<$;U++)dt=Pt[U],g.format!==Re?_t!==null?Ut?e.compressedTexSubImage2D(3553,U,0,0,dt.width,dt.height,_t,dt.data):e.compressedTexImage2D(3553,U,gt,dt.width,dt.height,0,dt.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):Ut?e.texSubImage2D(3553,U,0,0,dt.width,dt.height,_t,lt,dt.data):e.texImage2D(3553,U,gt,dt.width,dt.height,0,_t,lt,dt.data)}else if(g.isDataArrayTexture)Ut?(Jt&&e.texStorage3D(35866,E,gt,H.width,H.height,H.depth),e.texSubImage3D(35866,0,0,0,0,H.width,H.height,H.depth,_t,lt,H.data)):e.texImage3D(35866,0,gt,H.width,H.height,H.depth,0,_t,lt,H.data);else if(g.isData3DTexture)Ut?(Jt&&e.texStorage3D(32879,E,gt,H.width,H.height,H.depth),e.texSubImage3D(32879,0,0,0,0,H.width,H.height,H.depth,_t,lt,H.data)):e.texImage3D(32879,0,gt,H.width,H.height,H.depth,0,_t,lt,H.data);else if(g.isFramebufferTexture){if(Jt)if(Ut)e.texStorage2D(3553,E,gt,H.width,H.height);else{let U=H.width,$=H.height;for(let at=0;at<E;at++)e.texImage2D(3553,at,gt,U,$,0,_t,lt,null),U>>=1,$>>=1}}else if(Pt.length>0&&mt){Ut&&Jt&&e.texStorage2D(3553,E,gt,Pt[0].width,Pt[0].height);for(let U=0,$=Pt.length;U<$;U++)dt=Pt[U],Ut?e.texSubImage2D(3553,U,0,0,_t,lt,dt):e.texImage2D(3553,U,gt,_t,lt,dt);g.generateMipmaps=!1}else Ut?(Jt&&e.texStorage2D(3553,E,gt,H.width,H.height),e.texSubImage2D(3553,0,0,0,_t,lt,H)):e.texImage2D(3553,0,gt,_t,lt,H);C(g,mt)&&I(K),yt.__version=st.version,g.onUpdate&&g.onUpdate(g)}w.__version=g.version}function ut(w,g,k){if(g.image.length!==6)return;let K=Mt(w,g),tt=g.source;e.bindTexture(34067,w.__webglTexture,33984+k);let st=n.get(tt);if(tt.version!==st.__version||K===!0){e.activeTexture(33984+k),r.pixelStorei(37440,g.flipY),r.pixelStorei(37441,g.premultiplyAlpha),r.pixelStorei(3317,g.unpackAlignment),r.pixelStorei(37443,0);let yt=g.isCompressedTexture||g.image[0].isCompressedTexture,rt=g.image[0]&&g.image[0].isDataTexture,H=[];for(let U=0;U<6;U++)!yt&&!rt?H[U]=b(g.image[U],!1,!0,l):H[U]=rt?g.image[U].image:g.image[U],H[U]=Te(g,H[U]);let mt=H[0],_t=M(mt)||a,lt=s.convert(g.format,g.encoding),gt=s.convert(g.type),dt=x(g.internalFormat,lt,gt,g.encoding),Pt=a&&g.isVideoTexture!==!0,Ut=st.__version===void 0||K===!0,Jt=S(g,mt,_t);O(34067,g,_t);let E;if(yt){Pt&&Ut&&e.texStorage2D(34067,Jt,dt,mt.width,mt.height);for(let U=0;U<6;U++){E=H[U].mipmaps;for(let $=0;$<E.length;$++){let at=E[$];g.format!==Re?lt!==null?Pt?e.compressedTexSubImage2D(34069+U,$,0,0,at.width,at.height,lt,at.data):e.compressedTexImage2D(34069+U,$,dt,at.width,at.height,0,at.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()"):Pt?e.texSubImage2D(34069+U,$,0,0,at.width,at.height,lt,gt,at.data):e.texImage2D(34069+U,$,dt,at.width,at.height,0,lt,gt,at.data)}}}else{E=g.mipmaps,Pt&&Ut&&(E.length>0&&Jt++,e.texStorage2D(34067,Jt,dt,H[0].width,H[0].height));for(let U=0;U<6;U++)if(rt){Pt?e.texSubImage2D(34069+U,0,0,0,H[U].width,H[U].height,lt,gt,H[U].data):e.texImage2D(34069+U,0,dt,H[U].width,H[U].height,0,lt,gt,H[U].data);for(let $=0;$<E.length;$++){let ct=E[$].image[U].image;Pt?e.texSubImage2D(34069+U,$+1,0,0,ct.width,ct.height,lt,gt,ct.data):e.texImage2D(34069+U,$+1,dt,ct.width,ct.height,0,lt,gt,ct.data)}}else{Pt?e.texSubImage2D(34069+U,0,0,0,lt,gt,H[U]):e.texImage2D(34069+U,0,dt,lt,gt,H[U]);for(let $=0;$<E.length;$++){let at=E[$];Pt?e.texSubImage2D(34069+U,$+1,0,0,lt,gt,at.image[U]):e.texImage2D(34069+U,$+1,dt,lt,gt,at.image[U])}}}C(g,_t)&&I(34067),st.__version=tt.version,g.onUpdate&&g.onUpdate(g)}w.__version=g.version}function ot(w,g,k,K,tt){let st=s.convert(k.format,k.encoding),yt=s.convert(k.type),rt=x(k.internalFormat,st,yt,k.encoding);n.get(g).__hasExternalTextures||(tt===32879||tt===35866?e.texImage3D(tt,0,rt,g.width,g.height,g.depth,0,st,yt,null):e.texImage2D(tt,0,rt,g.width,g.height,0,st,yt,null)),e.bindFramebuffer(36160,w),Dt(g)?u.framebufferTexture2DMultisampleEXT(36160,K,tt,n.get(k).__webglTexture,0,Ht(g)):(tt===3553||tt>=34069&&tt<=34074)&&r.framebufferTexture2D(36160,K,tt,n.get(k).__webglTexture,0),e.bindFramebuffer(36160,null)}function Ft(w,g,k){if(r.bindRenderbuffer(36161,w),g.depthBuffer&&!g.stencilBuffer){let K=33189;if(k||Dt(g)){let tt=g.depthTexture;tt&&tt.isDepthTexture&&(tt.type===gn?K=36012:tt.type===mn&&(K=33190));let st=Ht(g);Dt(g)?u.renderbufferStorageMultisampleEXT(36161,st,K,g.width,g.height):r.renderbufferStorageMultisample(36161,st,K,g.width,g.height)}else r.renderbufferStorage(36161,K,g.width,g.height);r.framebufferRenderbuffer(36160,36096,36161,w)}else if(g.depthBuffer&&g.stencilBuffer){let K=Ht(g);k&&Dt(g)===!1?r.renderbufferStorageMultisample(36161,K,35056,g.width,g.height):Dt(g)?u.renderbufferStorageMultisampleEXT(36161,K,35056,g.width,g.height):r.renderbufferStorage(36161,34041,g.width,g.height),r.framebufferRenderbuffer(36160,33306,36161,w)}else{let K=g.isWebGLMultipleRenderTargets===!0?g.texture:[g.texture];for(let tt=0;tt<K.length;tt++){let st=K[tt],yt=s.convert(st.format,st.encoding),rt=s.convert(st.type),H=x(st.internalFormat,yt,rt,st.encoding),mt=Ht(g);k&&Dt(g)===!1?r.renderbufferStorageMultisample(36161,mt,H,g.width,g.height):Dt(g)?u.renderbufferStorageMultisampleEXT(36161,mt,H,g.width,g.height):r.renderbufferStorage(36161,H,g.width,g.height)}}r.bindRenderbuffer(36161,null)}function bt(w,g){if(g&&g.isWebGLCubeRenderTarget)throw new Error("Depth Texture with cube render targets is not supported");if(e.bindFramebuffer(36160,w),!(g.depthTexture&&g.depthTexture.isDepthTexture))throw new Error("renderTarget.depthTexture must be an instance of THREE.DepthTexture");(!n.get(g.depthTexture).__webglTexture||g.depthTexture.image.width!==g.width||g.depthTexture.image.height!==g.height)&&(g.depthTexture.image.width=g.width,g.depthTexture.image.height=g.height,g.depthTexture.needsUpdate=!0),Z(g.depthTexture,0);let K=n.get(g.depthTexture).__webglTexture,tt=Ht(g);if(g.depthTexture.format===_n)Dt(g)?u.framebufferTexture2DMultisampleEXT(36160,36096,3553,K,0,tt):r.framebufferTexture2D(36160,36096,3553,K,0);else if(g.depthTexture.format===Yn)Dt(g)?u.framebufferTexture2DMultisampleEXT(36160,33306,3553,K,0,tt):r.framebufferTexture2D(36160,33306,3553,K,0);else throw new Error("Unknown depthTexture format")}function xt(w){let g=n.get(w),k=w.isWebGLCubeRenderTarget===!0;if(w.depthTexture&&!g.__autoAllocateDepthBuffer){if(k)throw new Error("target.depthTexture not supported in Cube render targets");bt(g.__webglFramebuffer,w)}else if(k){g.__webglDepthbuffer=[];for(let K=0;K<6;K++)e.bindFramebuffer(36160,g.__webglFramebuffer[K]),g.__webglDepthbuffer[K]=r.createRenderbuffer(),Ft(g.__webglDepthbuffer[K],w,!1)}else e.bindFramebuffer(36160,g.__webglFramebuffer),g.__webglDepthbuffer=r.createRenderbuffer(),Ft(g.__webglDepthbuffer,w,!1);e.bindFramebuffer(36160,null)}function ne(w,g,k){let K=n.get(w);g!==void 0&&ot(K.__webglFramebuffer,w,w.texture,36064,3553),k!==void 0&&xt(w)}function ve(w){let g=w.texture,k=n.get(w),K=n.get(g);w.addEventListener("dispose",q),w.isWebGLMultipleRenderTargets!==!0&&(K.__webglTexture===void 0&&(K.__webglTexture=r.createTexture()),K.__version=g.version,o.memory.textures++);let tt=w.isWebGLCubeRenderTarget===!0,st=w.isWebGLMultipleRenderTargets===!0,yt=M(w)||a;if(tt){k.__webglFramebuffer=[];for(let rt=0;rt<6;rt++)k.__webglFramebuffer[rt]=r.createFramebuffer()}else{if(k.__webglFramebuffer=r.createFramebuffer(),st)if(i.drawBuffers){let rt=w.texture;for(let H=0,mt=rt.length;H<mt;H++){let _t=n.get(rt[H]);_t.__webglTexture===void 0&&(_t.__webglTexture=r.createTexture(),o.memory.textures++)}}else console.warn("THREE.WebGLRenderer: WebGLMultipleRenderTargets can only be used with WebGL2 or WEBGL_draw_buffers extension.");if(a&&w.samples>0&&Dt(w)===!1){let rt=st?g:[g];k.__webglMultisampledFramebuffer=r.createFramebuffer(),k.__webglColorRenderbuffer=[],e.bindFramebuffer(36160,k.__webglMultisampledFramebuffer);for(let H=0;H<rt.length;H++){let mt=rt[H];k.__webglColorRenderbuffer[H]=r.createRenderbuffer(),r.bindRenderbuffer(36161,k.__webglColorRenderbuffer[H]);let _t=s.convert(mt.format,mt.encoding),lt=s.convert(mt.type),gt=x(mt.internalFormat,_t,lt,mt.encoding,w.isXRRenderTarget===!0),dt=Ht(w);r.renderbufferStorageMultisample(36161,dt,gt,w.width,w.height),r.framebufferRenderbuffer(36160,36064+H,36161,k.__webglColorRenderbuffer[H])}r.bindRenderbuffer(36161,null),w.depthBuffer&&(k.__webglDepthRenderbuffer=r.createRenderbuffer(),Ft(k.__webglDepthRenderbuffer,w,!0)),e.bindFramebuffer(36160,null)}}if(tt){e.bindTexture(34067,K.__webglTexture),O(34067,g,yt);for(let rt=0;rt<6;rt++)ot(k.__webglFramebuffer[rt],w,g,36064,34069+rt);C(g,yt)&&I(34067),e.unbindTexture()}else if(st){let rt=w.texture;for(let H=0,mt=rt.length;H<mt;H++){let _t=rt[H],lt=n.get(_t);e.bindTexture(3553,lt.__webglTexture),O(3553,_t,yt),ot(k.__webglFramebuffer,w,_t,36064+H,3553),C(_t,yt)&&I(3553)}e.unbindTexture()}else{let rt=3553;(w.isWebGL3DRenderTarget||w.isWebGLArrayRenderTarget)&&(a?rt=w.isWebGL3DRenderTarget?32879:35866:console.error("THREE.WebGLTextures: THREE.Data3DTexture and THREE.DataArrayTexture only supported with WebGL2.")),e.bindTexture(rt,K.__webglTexture),O(rt,g,yt),ot(k.__webglFramebuffer,w,g,36064,rt),C(g,yt)&&I(rt),e.unbindTexture()}w.depthBuffer&&xt(w)}function Qt(w){let g=M(w)||a,k=w.isWebGLMultipleRenderTargets===!0?w.texture:[w.texture];for(let K=0,tt=k.length;K<tt;K++){let st=k[K];if(C(st,g)){let yt=w.isWebGLCubeRenderTarget?34067:3553,rt=n.get(st).__webglTexture;e.bindTexture(yt,rt),I(yt),e.unbindTexture()}}}function Me(w){if(a&&w.samples>0&&Dt(w)===!1){let g=w.isWebGLMultipleRenderTargets?w.texture:[w.texture],k=w.width,K=w.height,tt=16384,st=[],yt=w.stencilBuffer?33306:36096,rt=n.get(w),H=w.isWebGLMultipleRenderTargets===!0;if(H)for(let mt=0;mt<g.length;mt++)e.bindFramebuffer(36160,rt.__webglMultisampledFramebuffer),r.framebufferRenderbuffer(36160,36064+mt,36161,null),e.bindFramebuffer(36160,rt.__webglFramebuffer),r.framebufferTexture2D(36009,36064+mt,3553,null,0);e.bindFramebuffer(36008,rt.__webglMultisampledFramebuffer),e.bindFramebuffer(36009,rt.__webglFramebuffer);for(let mt=0;mt<g.length;mt++){st.push(36064+mt),w.depthBuffer&&st.push(yt);let _t=rt.__ignoreDepthValues!==void 0?rt.__ignoreDepthValues:!1;if(_t===!1&&(w.depthBuffer&&(tt|=256),w.stencilBuffer&&(tt|=1024)),H&&r.framebufferRenderbuffer(36008,36064,36161,rt.__webglColorRenderbuffer[mt]),_t===!0&&(r.invalidateFramebuffer(36008,[yt]),r.invalidateFramebuffer(36009,[yt])),H){let lt=n.get(g[mt]).__webglTexture;r.framebufferTexture2D(36009,36064,3553,lt,0)}r.blitFramebuffer(0,0,k,K,0,0,k,K,tt,9728),m&&r.invalidateFramebuffer(36008,st)}if(e.bindFramebuffer(36008,null),e.bindFramebuffer(36009,null),H)for(let mt=0;mt<g.length;mt++){e.bindFramebuffer(36160,rt.__webglMultisampledFramebuffer),r.framebufferRenderbuffer(36160,36064+mt,36161,rt.__webglColorRenderbuffer[mt]);let _t=n.get(g[mt]).__webglTexture;e.bindFramebuffer(36160,rt.__webglFramebuffer),r.framebufferTexture2D(36009,36064+mt,3553,_t,0)}e.bindFramebuffer(36009,rt.__webglMultisampledFramebuffer)}}function Ht(w){return Math.min(f,w.samples)}function Dt(w){let g=n.get(w);return a&&w.samples>0&&t.has("WEBGL_multisampled_render_to_texture")===!0&&g.__useRenderToTexture!==!1}function Fe(w){let g=o.render.frame;_.get(w)!==g&&(_.set(w,g),w.update())}function Te(w,g){let k=w.encoding,K=w.format,tt=w.type;return w.isCompressedTexture===!0||w.isVideoTexture===!0||w.format===Ys||k!==vn&&(k===zt?a===!1?t.has("EXT_sRGB")===!0&&K===Re?(w.format=Ys,w.minFilter=Se,w.generateMipmaps=!1):g=Xi.sRGBToLinear(g):(K!==Re||tt!==yn)&&console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture encoding:",k)),g}this.allocateTextureUnit=W,this.resetTextureUnits=j,this.setTexture2D=Z,this.setTexture2DArray=ft,this.setTexture3D=F,this.setTextureCube=J,this.rebindTextures=ne,this.setupRenderTarget=ve,this.updateRenderTargetMipmap=Qt,this.updateMultisampleRenderTarget=Me,this.setupDepthRenderbuffer=xt,this.setupFrameBufferTexture=ot,this.useMultisampledRTT=Dt}function tf(r,t,e){let n=e.isWebGL2;function i(s,o=null){let a;if(s===yn)return 5121;if(s===Ho)return 32819;if(s===Wo)return 32820;if(s===ko)return 5120;if(s===Vo)return 5122;if(s===Ya)return 5123;if(s===Go)return 5124;if(s===mn)return 5125;if(s===gn)return 5126;if(s===mi)return n?5131:(a=t.get("OES_texture_half_float"),a!==null?a.HALF_FLOAT_OES:null);if(s===Xo)return 6406;if(s===Re)return 6408;if(s===qo)return 6409;if(s===Yo)return 6410;if(s===_n)return 6402;if(s===Yn)return 34041;if(s===Ys)return a=t.get("EXT_sRGB"),a!==null?a.SRGB_ALPHA_EXT:null;if(s===Zo)return 6403;if(s===Jo)return 36244;if(s===$o)return 33319;if(s===Ko)return 33320;if(s===jo)return 36249;if(s===ds||s===fs||s===ps||s===ms)if(o===zt)if(a=t.get("WEBGL_compressed_texture_s3tc_srgb"),a!==null){if(s===ds)return a.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(s===fs)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(s===ps)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(s===ms)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(a=t.get("WEBGL_compressed_texture_s3tc"),a!==null){if(s===ds)return a.COMPRESSED_RGB_S3TC_DXT1_EXT;if(s===fs)return a.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(s===ps)return a.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(s===ms)return a.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(s===zr||s===Or||s===Ur||s===Br)if(a=t.get("WEBGL_compressed_texture_pvrtc"),a!==null){if(s===zr)return a.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(s===Or)return a.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(s===Ur)return a.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(s===Br)return a.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(s===Qo)return a=t.get("WEBGL_compressed_texture_etc1"),a!==null?a.COMPRESSED_RGB_ETC1_WEBGL:null;if(s===kr||s===Vr)if(a=t.get("WEBGL_compressed_texture_etc"),a!==null){if(s===kr)return o===zt?a.COMPRESSED_SRGB8_ETC2:a.COMPRESSED_RGB8_ETC2;if(s===Vr)return o===zt?a.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:a.COMPRESSED_RGBA8_ETC2_EAC}else return null;if(s===Gr||s===Hr||s===Wr||s===Xr||s===qr||s===Yr||s===Zr||s===Jr||s===$r||s===Kr||s===jr||s===Qr||s===ta||s===ea)if(a=t.get("WEBGL_compressed_texture_astc"),a!==null){if(s===Gr)return o===zt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:a.COMPRESSED_RGBA_ASTC_4x4_KHR;if(s===Hr)return o===zt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:a.COMPRESSED_RGBA_ASTC_5x4_KHR;if(s===Wr)return o===zt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:a.COMPRESSED_RGBA_ASTC_5x5_KHR;if(s===Xr)return o===zt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:a.COMPRESSED_RGBA_ASTC_6x5_KHR;if(s===qr)return o===zt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:a.COMPRESSED_RGBA_ASTC_6x6_KHR;if(s===Yr)return o===zt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:a.COMPRESSED_RGBA_ASTC_8x5_KHR;if(s===Zr)return o===zt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:a.COMPRESSED_RGBA_ASTC_8x6_KHR;if(s===Jr)return o===zt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:a.COMPRESSED_RGBA_ASTC_8x8_KHR;if(s===$r)return o===zt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:a.COMPRESSED_RGBA_ASTC_10x5_KHR;if(s===Kr)return o===zt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:a.COMPRESSED_RGBA_ASTC_10x6_KHR;if(s===jr)return o===zt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:a.COMPRESSED_RGBA_ASTC_10x8_KHR;if(s===Qr)return o===zt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:a.COMPRESSED_RGBA_ASTC_10x10_KHR;if(s===ta)return o===zt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:a.COMPRESSED_RGBA_ASTC_12x10_KHR;if(s===ea)return o===zt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:a.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(s===gs)if(a=t.get("EXT_texture_compression_bptc"),a!==null){if(s===gs)return o===zt?a.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:a.COMPRESSED_RGBA_BPTC_UNORM_EXT}else return null;if(s===tl||s===na||s===ia||s===sa)if(a=t.get("EXT_texture_compression_rgtc"),a!==null){if(s===gs)return a.COMPRESSED_RED_RGTC1_EXT;if(s===na)return a.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(s===ia)return a.COMPRESSED_RED_GREEN_RGTC2_EXT;if(s===sa)return a.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}else return null;return s===Hn?n?34042:(a=t.get("WEBGL_depth_texture"),a!==null?a.UNSIGNED_INT_24_8_WEBGL:null):r[s]!==void 0?r[s]:null}return{convert:i}}var lr=class extends _e{constructor(t=[]){super(),this.isArrayCamera=!0,this.cameras=t}},Vn=class extends de{constructor(){super(),this.isGroup=!0,this.type="Group"}},ef={type:"move"},fi=class{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return this._hand===null&&(this._hand=new Vn,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 Vn,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new N,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new N),this._targetRay}getGripSpace(){return this._grip===null&&(this._grip=new Vn,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new N,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new N),this._grip}dispatchEvent(t){return this._targetRay!==null&&this._targetRay.dispatchEvent(t),this._grip!==null&&this._grip.dispatchEvent(t),this._hand!==null&&this._hand.dispatchEvent(t),this}connect(t){if(t&&t.hand){let e=this._hand;if(e)for(let n of t.hand.values())this._getHandJoint(e,n)}return this.dispatchEvent({type:"connected",data:t}),this}disconnect(t){return this.dispatchEvent({type:"disconnected",data:t}),this._targetRay!==null&&(this._targetRay.visible=!1),this._grip!==null&&(this._grip.visible=!1),this._hand!==null&&(this._hand.visible=!1),this}update(t,e,n){let i=null,s=null,o=null,a=this._targetRay,c=this._grip,l=this._hand;if(t&&e.session.visibilityState!=="visible-blurred"){if(l&&t.hand){o=!0;for(let p of t.hand.values()){let d=e.getJointPose(p,n),v=this._getHandJoint(l,p);d!==null&&(v.matrix.fromArray(d.transform.matrix),v.matrix.decompose(v.position,v.rotation,v.scale),v.jointRadius=d.radius),v.visible=d!==null}let h=l.joints["index-finger-tip"],f=l.joints["thumb-tip"],u=h.position.distanceTo(f.position),m=.02,_=.005;l.inputState.pinching&&u>m+_?(l.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:t.handedness,target:this})):!l.inputState.pinching&&u<=m-_&&(l.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:t.handedness,target:this}))}else c!==null&&t.gripSpace&&(s=e.getPose(t.gripSpace,n),s!==null&&(c.matrix.fromArray(s.transform.matrix),c.matrix.decompose(c.position,c.rotation,c.scale),s.linearVelocity?(c.hasLinearVelocity=!0,c.linearVelocity.copy(s.linearVelocity)):c.hasLinearVelocity=!1,s.angularVelocity?(c.hasAngularVelocity=!0,c.angularVelocity.copy(s.angularVelocity)):c.hasAngularVelocity=!1));a!==null&&(i=e.getPose(t.targetRaySpace,n),i===null&&s!==null&&(i=s),i!==null&&(a.matrix.fromArray(i.transform.matrix),a.matrix.decompose(a.position,a.rotation,a.scale),i.linearVelocity?(a.hasLinearVelocity=!0,a.linearVelocity.copy(i.linearVelocity)):a.hasLinearVelocity=!1,i.angularVelocity?(a.hasAngularVelocity=!0,a.angularVelocity.copy(i.angularVelocity)):a.hasAngularVelocity=!1,this.dispatchEvent(ef)))}return a!==null&&(a.visible=i!==null),c!==null&&(c.visible=s!==null),l!==null&&(l.visible=o!==null),this}_getHandJoint(t,e){if(t.joints[e.jointName]===void 0){let n=new Vn;n.matrixAutoUpdate=!1,n.visible=!1,t.joints[e.jointName]=n,t.add(n)}return t.joints[e.jointName]}},cr=class extends le{constructor(t,e,n,i,s,o,a,c,l,h){if(h=h!==void 0?h:_n,h!==_n&&h!==Yn)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");n===void 0&&h===_n&&(n=mn),n===void 0&&h===Yn&&(n=Hn),super(null,i,s,o,a,c,h,n,l),this.isDepthTexture=!0,this.image={width:t,height:e},this.magFilter=a!==void 0?a:ae,this.minFilter=c!==void 0?c:ae,this.flipY=!1,this.generateMipmaps=!1}},hr=class extends sn{constructor(t,e){super();let n=this,i=null,s=1,o=null,a="local-floor",c=1,l=null,h=null,f=null,u=null,m=null,_=null,p=e.getContextAttributes(),d=null,v=null,T=[],b=[],M=new Set,A=new Map,C=new _e;C.layers.enable(1),C.viewport=new Xt;let I=new _e;I.layers.enable(2),I.viewport=new Xt;let x=[C,I],S=new lr;S.layers.enable(1),S.layers.enable(2);let L=null,X=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(F){let J=T[F];return J===void 0&&(J=new fi,T[F]=J),J.getTargetRaySpace()},this.getControllerGrip=function(F){let J=T[F];return J===void 0&&(J=new fi,T[F]=J),J.getGripSpace()},this.getHand=function(F){let J=T[F];return J===void 0&&(J=new fi,T[F]=J),J.getHandSpace()};function q(F){let J=b.indexOf(F.inputSource);if(J===-1)return;let nt=T[J];nt!==void 0&&nt.dispatchEvent({type:F.type,data:F.inputSource})}function z(){i.removeEventListener("select",q),i.removeEventListener("selectstart",q),i.removeEventListener("selectend",q),i.removeEventListener("squeeze",q),i.removeEventListener("squeezestart",q),i.removeEventListener("squeezeend",q),i.removeEventListener("end",z),i.removeEventListener("inputsourceschange",R);for(let F=0;F<T.length;F++){let J=b[F];J!==null&&(b[F]=null,T[F].disconnect(J))}L=null,X=null,t.setRenderTarget(d),m=null,u=null,f=null,i=null,v=null,ft.stop(),n.isPresenting=!1,n.dispatchEvent({type:"sessionend"})}this.setFramebufferScaleFactor=function(F){s=F,n.isPresenting===!0&&console.warn("THREE.WebXRManager: Cannot change framebuffer scale while presenting.")},this.setReferenceSpaceType=function(F){a=F,n.isPresenting===!0&&console.warn("THREE.WebXRManager: Cannot change reference space type while presenting.")},this.getReferenceSpace=function(){return l||o},this.setReferenceSpace=function(F){l=F},this.getBaseLayer=function(){return u!==null?u:m},this.getBinding=function(){return f},this.getFrame=function(){return _},this.getSession=function(){return i},this.setSession=async function(F){if(i=F,i!==null){if(d=t.getRenderTarget(),i.addEventListener("select",q),i.addEventListener("selectstart",q),i.addEventListener("selectend",q),i.addEventListener("squeeze",q),i.addEventListener("squeezestart",q),i.addEventListener("squeezeend",q),i.addEventListener("end",z),i.addEventListener("inputsourceschange",R),p.xrCompatible!==!0&&await e.makeXRCompatible(),i.renderState.layers===void 0||t.capabilities.isWebGL2===!1){let J={antialias:i.renderState.layers===void 0?p.antialias:!0,alpha:p.alpha,depth:p.depth,stencil:p.stencil,framebufferScaleFactor:s};m=new XRWebGLLayer(i,e,J),i.updateRenderState({baseLayer:m}),v=new qe(m.framebufferWidth,m.framebufferHeight,{format:Re,type:yn,encoding:t.outputEncoding,stencilBuffer:p.stencil})}else{let J=null,nt=null,it=null;p.depth&&(it=p.stencil?35056:33190,J=p.stencil?Yn:_n,nt=p.stencil?Hn:mn);let O={colorFormat:32856,depthFormat:it,scaleFactor:s};f=new XRWebGLBinding(i,e),u=f.createProjectionLayer(O),i.updateRenderState({layers:[u]}),v=new qe(u.textureWidth,u.textureHeight,{format:Re,type:yn,depthTexture:new cr(u.textureWidth,u.textureHeight,nt,void 0,void 0,void 0,void 0,void 0,void 0,J),stencilBuffer:p.stencil,encoding:t.outputEncoding,samples:p.antialias?4:0});let Mt=t.properties.get(v);Mt.__ignoreDepthValues=u.ignoreDepthValues}v.isXRRenderTarget=!0,this.setFoveation(c),l=null,o=await i.requestReferenceSpace(a),ft.setContext(i),ft.start(),n.isPresenting=!0,n.dispatchEvent({type:"sessionstart"})}};function R(F){for(let J=0;J<F.removed.length;J++){let nt=F.removed[J],it=b.indexOf(nt);it>=0&&(b[it]=null,T[it].disconnect(nt))}for(let J=0;J<F.added.length;J++){let nt=F.added[J],it=b.indexOf(nt);if(it===-1){for(let Mt=0;Mt<T.length;Mt++)if(Mt>=b.length){b.push(nt),it=Mt;break}else if(b[Mt]===null){b[Mt]=nt,it=Mt;break}if(it===-1)break}let O=T[it];O&&O.connect(nt)}}let G=new N,Y=new N;function j(F,J,nt){G.setFromMatrixPosition(J.matrixWorld),Y.setFromMatrixPosition(nt.matrixWorld);let it=G.distanceTo(Y),O=J.projectionMatrix.elements,Mt=nt.projectionMatrix.elements,ht=O[14]/(O[10]-1),ut=O[14]/(O[10]+1),ot=(O[9]+1)/O[5],Ft=(O[9]-1)/O[5],bt=(O[8]-1)/O[0],xt=(Mt[8]+1)/Mt[0],ne=ht*bt,ve=ht*xt,Qt=it/(-bt+xt),Me=Qt*-bt;J.matrixWorld.decompose(F.position,F.quaternion,F.scale),F.translateX(Me),F.translateZ(Qt),F.matrixWorld.compose(F.position,F.quaternion,F.scale),F.matrixWorldInverse.copy(F.matrixWorld).invert();let Ht=ht+Qt,Dt=ut+Qt,Fe=ne-Me,Te=ve+(it-Me),w=ot*ut/Dt*Ht,g=Ft*ut/Dt*Ht;F.projectionMatrix.makePerspective(Fe,Te,w,g,Ht,Dt)}function W(F,J){J===null?F.matrixWorld.copy(F.matrix):F.matrixWorld.multiplyMatrices(J.matrixWorld,F.matrix),F.matrixWorldInverse.copy(F.matrixWorld).invert()}this.updateCamera=function(F){if(i===null)return;S.near=I.near=C.near=F.near,S.far=I.far=C.far=F.far,(L!==S.near||X!==S.far)&&(i.updateRenderState({depthNear:S.near,depthFar:S.far}),L=S.near,X=S.far);let J=F.parent,nt=S.cameras;W(S,J);for(let O=0;O<nt.length;O++)W(nt[O],J);S.matrixWorld.decompose(S.position,S.quaternion,S.scale),F.matrix.copy(S.matrix),F.matrix.decompose(F.position,F.quaternion,F.scale);let it=F.children;for(let O=0,Mt=it.length;O<Mt;O++)it[O].updateMatrixWorld(!0);nt.length===2?j(S,C,I):S.projectionMatrix.copy(C.projectionMatrix)},this.getCamera=function(){return S},this.getFoveation=function(){if(!(u===null&&m===null))return c},this.setFoveation=function(F){c=F,u!==null&&(u.fixedFoveation=F),m!==null&&m.fixedFoveation!==void 0&&(m.fixedFoveation=F)},this.getPlanes=function(){return M};let Q=null;function Z(F,J){if(h=J.getViewerPose(l||o),_=J,h!==null){let nt=h.views;m!==null&&(t.setRenderTargetFramebuffer(v,m.framebuffer),t.setRenderTarget(v));let it=!1;nt.length!==S.cameras.length&&(S.cameras.length=0,it=!0);for(let O=0;O<nt.length;O++){let Mt=nt[O],ht=null;if(m!==null)ht=m.getViewport(Mt);else{let ot=f.getViewSubImage(u,Mt);ht=ot.viewport,O===0&&(t.setRenderTargetTextures(v,ot.colorTexture,u.ignoreDepthValues?void 0:ot.depthStencilTexture),t.setRenderTarget(v))}let ut=x[O];ut===void 0&&(ut=new _e,ut.layers.enable(O),ut.viewport=new Xt,x[O]=ut),ut.matrix.fromArray(Mt.transform.matrix),ut.projectionMatrix.fromArray(Mt.projectionMatrix),ut.viewport.set(ht.x,ht.y,ht.width,ht.height),O===0&&S.matrix.copy(ut.matrix),it===!0&&S.cameras.push(ut)}}for(let nt=0;nt<T.length;nt++){let it=b[nt],O=T[nt];it!==null&&O!==void 0&&O.update(it,J,l||o)}if(Q&&Q(F,J),J.detectedPlanes){n.dispatchEvent({type:"planesdetected",data:J.detectedPlanes});let nt=null;for(let it of M)J.detectedPlanes.has(it)||(nt===null&&(nt=[]),nt.push(it));if(nt!==null)for(let it of nt)M.delete(it),A.delete(it),n.dispatchEvent({type:"planeremoved",data:it});for(let it of J.detectedPlanes)if(!M.has(it))M.add(it),A.set(it,J.lastChangedTime),n.dispatchEvent({type:"planeadded",data:it});else{let O=A.get(it);it.lastChangedTime>O&&(A.set(it,it.lastChangedTime),n.dispatchEvent({type:"planechanged",data:it}))}}_=null}let ft=new ja;ft.setAnimationLoop(Z),this.setAnimationLoop=function(F){Q=F},this.dispose=function(){}}};function nf(r,t){function e(p,d){d.color.getRGB(p.fogColor.value,Ka(r)),d.isFog?(p.fogNear.value=d.near,p.fogFar.value=d.far):d.isFogExp2&&(p.fogDensity.value=d.density)}function n(p,d,v,T,b){d.isMeshBasicMaterial||d.isMeshLambertMaterial?i(p,d):d.isMeshToonMaterial?(i(p,d),h(p,d)):d.isMeshPhongMaterial?(i(p,d),l(p,d)):d.isMeshStandardMaterial?(i(p,d),f(p,d),d.isMeshPhysicalMaterial&&u(p,d,b)):d.isMeshMatcapMaterial?(i(p,d),m(p,d)):d.isMeshDepthMaterial?i(p,d):d.isMeshDistanceMaterial?(i(p,d),_(p,d)):d.isMeshNormalMaterial?i(p,d):d.isLineBasicMaterial?(s(p,d),d.isLineDashedMaterial&&o(p,d)):d.isPointsMaterial?a(p,d,v,T):d.isSpriteMaterial?c(p,d):d.isShadowMaterial?(p.color.value.copy(d.color),p.opacity.value=d.opacity):d.isShaderMaterial&&(d.uniformsNeedUpdate=!1)}function i(p,d){p.opacity.value=d.opacity,d.color&&p.diffuse.value.copy(d.color),d.emissive&&p.emissive.value.copy(d.emissive).multiplyScalar(d.emissiveIntensity),d.map&&(p.map.value=d.map),d.alphaMap&&(p.alphaMap.value=d.alphaMap),d.bumpMap&&(p.bumpMap.value=d.bumpMap,p.bumpScale.value=d.bumpScale,d.side===ye&&(p.bumpScale.value*=-1)),d.displacementMap&&(p.displacementMap.value=d.displacementMap,p.displacementScale.value=d.displacementScale,p.displacementBias.value=d.displacementBias),d.emissiveMap&&(p.emissiveMap.value=d.emissiveMap),d.normalMap&&(p.normalMap.value=d.normalMap,p.normalScale.value.copy(d.normalScale),d.side===ye&&p.normalScale.value.negate()),d.specularMap&&(p.specularMap.value=d.specularMap),d.alphaTest>0&&(p.alphaTest.value=d.alphaTest);let v=t.get(d).envMap;if(v&&(p.envMap.value=v,p.flipEnvMap.value=v.isCubeTexture&&v.isRenderTargetTexture===!1?-1:1,p.reflectivity.value=d.reflectivity,p.ior.value=d.ior,p.refractionRatio.value=d.refractionRatio),d.lightMap){p.lightMap.value=d.lightMap;let M=r.physicallyCorrectLights!==!0?Math.PI:1;p.lightMapIntensity.value=d.lightMapIntensity*M}d.aoMap&&(p.aoMap.value=d.aoMap,p.aoMapIntensity.value=d.aoMapIntensity);let T;d.map?T=d.map:d.specularMap?T=d.specularMap:d.displacementMap?T=d.displacementMap:d.normalMap?T=d.normalMap:d.bumpMap?T=d.bumpMap:d.roughnessMap?T=d.roughnessMap:d.metalnessMap?T=d.metalnessMap:d.alphaMap?T=d.alphaMap:d.emissiveMap?T=d.emissiveMap:d.clearcoatMap?T=d.clearcoatMap:d.clearcoatNormalMap?T=d.clearcoatNormalMap:d.clearcoatRoughnessMap?T=d.clearcoatRoughnessMap:d.iridescenceMap?T=d.iridescenceMap:d.iridescenceThicknessMap?T=d.iridescenceThicknessMap:d.specularIntensityMap?T=d.specularIntensityMap:d.specularColorMap?T=d.specularColorMap:d.transmissionMap?T=d.transmissionMap:d.thicknessMap?T=d.thicknessMap:d.sheenColorMap?T=d.sheenColorMap:d.sheenRoughnessMap&&(T=d.sheenRoughnessMap),T!==void 0&&(T.isWebGLRenderTarget&&(T=T.texture),T.matrixAutoUpdate===!0&&T.updateMatrix(),p.uvTransform.value.copy(T.matrix));let b;d.aoMap?b=d.aoMap:d.lightMap&&(b=d.lightMap),b!==void 0&&(b.isWebGLRenderTarget&&(b=b.texture),b.matrixAutoUpdate===!0&&b.updateMatrix(),p.uv2Transform.value.copy(b.matrix))}function s(p,d){p.diffuse.value.copy(d.color),p.opacity.value=d.opacity}function o(p,d){p.dashSize.value=d.dashSize,p.totalSize.value=d.dashSize+d.gapSize,p.scale.value=d.scale}function a(p,d,v,T){p.diffuse.value.copy(d.color),p.opacity.value=d.opacity,p.size.value=d.size*v,p.scale.value=T*.5,d.map&&(p.map.value=d.map),d.alphaMap&&(p.alphaMap.value=d.alphaMap),d.alphaTest>0&&(p.alphaTest.value=d.alphaTest);let b;d.map?b=d.map:d.alphaMap&&(b=d.alphaMap),b!==void 0&&(b.matrixAutoUpdate===!0&&b.updateMatrix(),p.uvTransform.value.copy(b.matrix))}function c(p,d){p.diffuse.value.copy(d.color),p.opacity.value=d.opacity,p.rotation.value=d.rotation,d.map&&(p.map.value=d.map),d.alphaMap&&(p.alphaMap.value=d.alphaMap),d.alphaTest>0&&(p.alphaTest.value=d.alphaTest);let v;d.map?v=d.map:d.alphaMap&&(v=d.alphaMap),v!==void 0&&(v.matrixAutoUpdate===!0&&v.updateMatrix(),p.uvTransform.value.copy(v.matrix))}function l(p,d){p.specular.value.copy(d.specular),p.shininess.value=Math.max(d.shininess,1e-4)}function h(p,d){d.gradientMap&&(p.gradientMap.value=d.gradientMap)}function f(p,d){p.roughness.value=d.roughness,p.metalness.value=d.metalness,d.roughnessMap&&(p.roughnessMap.value=d.roughnessMap),d.metalnessMap&&(p.metalnessMap.value=d.metalnessMap),t.get(d).envMap&&(p.envMapIntensity.value=d.envMapIntensity)}function u(p,d,v){p.ior.value=d.ior,d.sheen>0&&(p.sheenColor.value.copy(d.sheenColor).multiplyScalar(d.sheen),p.sheenRoughness.value=d.sheenRoughness,d.sheenColorMap&&(p.sheenColorMap.value=d.sheenColorMap),d.sheenRoughnessMap&&(p.sheenRoughnessMap.value=d.sheenRoughnessMap)),d.clearcoat>0&&(p.clearcoat.value=d.clearcoat,p.clearcoatRoughness.value=d.clearcoatRoughness,d.clearcoatMap&&(p.clearcoatMap.value=d.clearcoatMap),d.clearcoatRoughnessMap&&(p.clearcoatRoughnessMap.value=d.clearcoatRoughnessMap),d.clearcoatNormalMap&&(p.clearcoatNormalScale.value.copy(d.clearcoatNormalScale),p.clearcoatNormalMap.value=d.clearcoatNormalMap,d.side===ye&&p.clearcoatNormalScale.value.negate())),d.iridescence>0&&(p.iridescence.value=d.iridescence,p.iridescenceIOR.value=d.iridescenceIOR,p.iridescenceThicknessMinimum.value=d.iridescenceThicknessRange[0],p.iridescenceThicknessMaximum.value=d.iridescenceThicknessRange[1],d.iridescenceMap&&(p.iridescenceMap.value=d.iridescenceMap),d.iridescenceThicknessMap&&(p.iridescenceThicknessMap.value=d.iridescenceThicknessMap)),d.transmission>0&&(p.transmission.value=d.transmission,p.transmissionSamplerMap.value=v.texture,p.transmissionSamplerSize.value.set(v.width,v.height),d.transmissionMap&&(p.transmissionMap.value=d.transmissionMap),p.thickness.value=d.thickness,d.thicknessMap&&(p.thicknessMap.value=d.thicknessMap),p.attenuationDistance.value=d.attenuationDistance,p.attenuationColor.value.copy(d.attenuationColor)),p.specularIntensity.value=d.specularIntensity,p.specularColor.value.copy(d.specularColor),d.specularIntensityMap&&(p.specularIntensityMap.value=d.specularIntensityMap),d.specularColorMap&&(p.specularColorMap.value=d.specularColorMap)}function m(p,d){d.matcap&&(p.matcap.value=d.matcap)}function _(p,d){p.referencePosition.value.copy(d.referencePosition),p.nearDistance.value=d.nearDistance,p.farDistance.value=d.farDistance}return{refreshFogUniforms:e,refreshMaterialUniforms:n}}function sf(r,t,e,n){let i={},s={},o=[],a=e.isWebGL2?r.getParameter(35375):0;function c(T,b){let M=b.program;n.uniformBlockBinding(T,M)}function l(T,b){let M=i[T.id];M===void 0&&(_(T),M=h(T),i[T.id]=M,T.addEventListener("dispose",d));let A=b.program;n.updateUBOMapping(T,A);let C=t.render.frame;s[T.id]!==C&&(u(T),s[T.id]=C)}function h(T){let b=f();T.__bindingPointIndex=b;let M=r.createBuffer(),A=T.__size,C=T.usage;return r.bindBuffer(35345,M),r.bufferData(35345,A,C),r.bindBuffer(35345,null),r.bindBufferBase(35345,b,M),M}function f(){for(let T=0;T<a;T++)if(o.indexOf(T)===-1)return o.push(T),T;return console.error("THREE.WebGLRenderer: Maximum number of simultaneously usable uniforms groups reached."),0}function u(T){let b=i[T.id],M=T.uniforms,A=T.__cache;r.bindBuffer(35345,b);for(let C=0,I=M.length;C<I;C++){let x=M[C];if(m(x,C,A)===!0){let S=x.__offset,L=Array.isArray(x.value)?x.value:[x.value],X=0;for(let q=0;q<L.length;q++){let z=L[q],R=p(z);typeof z=="number"?(x.__data[0]=z,r.bufferSubData(35345,S+X,x.__data)):z.isMatrix3?(x.__data[0]=z.elements[0],x.__data[1]=z.elements[1],x.__data[2]=z.elements[2],x.__data[3]=z.elements[0],x.__data[4]=z.elements[3],x.__data[5]=z.elements[4],x.__data[6]=z.elements[5],x.__data[7]=z.elements[0],x.__data[8]=z.elements[6],x.__data[9]=z.elements[7],x.__data[10]=z.elements[8],x.__data[11]=z.elements[0]):(z.toArray(x.__data,X),X+=R.storage/Float32Array.BYTES_PER_ELEMENT)}r.bufferSubData(35345,S,x.__data)}}r.bindBuffer(35345,null)}function m(T,b,M){let A=T.value;if(M[b]===void 0){if(typeof A=="number")M[b]=A;else{let C=Array.isArray(A)?A:[A],I=[];for(let x=0;x<C.length;x++)I.push(C[x].clone());M[b]=I}return!0}else if(typeof A=="number"){if(M[b]!==A)return M[b]=A,!0}else{let C=Array.isArray(M[b])?M[b]:[M[b]],I=Array.isArray(A)?A:[A];for(let x=0;x<C.length;x++){let S=C[x];if(S.equals(I[x])===!1)return S.copy(I[x]),!0}}return!1}function _(T){let b=T.uniforms,M=0,A=16,C=0;for(let I=0,x=b.length;I<x;I++){let S=b[I],L={boundary:0,storage:0},X=Array.isArray(S.value)?S.value:[S.value];for(let q=0,z=X.length;q<z;q++){let R=X[q],G=p(R);L.boundary+=G.boundary,L.storage+=G.storage}if(S.__data=new Float32Array(L.storage/Float32Array.BYTES_PER_ELEMENT),S.__offset=M,I>0){C=M%A;let q=A-C;C!==0&&q-L.boundary<0&&(M+=A-C,S.__offset=M)}M+=L.storage}return C=M%A,C>0&&(M+=A-C),T.__size=M,T.__cache={},this}function p(T){let b={boundary:0,storage:0};return typeof T=="number"?(b.boundary=4,b.storage=4):T.isVector2?(b.boundary=8,b.storage=8):T.isVector3||T.isColor?(b.boundary=16,b.storage=12):T.isVector4?(b.boundary=16,b.storage=16):T.isMatrix3?(b.boundary=48,b.storage=48):T.isMatrix4?(b.boundary=64,b.storage=64):T.isTexture?console.warn("THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group."):console.warn("THREE.WebGLRenderer: Unsupported uniform value type.",T),b}function d(T){let b=T.target;b.removeEventListener("dispose",d);let M=o.indexOf(b.__bindingPointIndex);o.splice(M,1),r.deleteBuffer(i[b.id]),delete i[b.id],delete s[b.id]}function v(){for(let T in i)r.deleteBuffer(i[T]);o=[],i={},s={}}return{bind:c,update:l,dispose:v}}function rf(){let r=Wi("canvas");return r.style.display="block",r}function af(r={}){this.isWebGLRenderer=!0;let t=r.canvas!==void 0?r.canvas:rf(),e=r.context!==void 0?r.context:null,n=r.depth!==void 0?r.depth:!0,i=r.stencil!==void 0?r.stencil:!0,s=r.antialias!==void 0?r.antialias:!1,o=r.premultipliedAlpha!==void 0?r.premultipliedAlpha:!0,a=r.preserveDrawingBuffer!==void 0?r.preserveDrawingBuffer:!1,c=r.powerPreference!==void 0?r.powerPreference:"default",l=r.failIfMajorPerformanceCaveat!==void 0?r.failIfMajorPerformanceCaveat:!1,h;e!==null?h=e.getContextAttributes().alpha:h=r.alpha!==void 0?r.alpha:!1;let f=null,u=null,m=[],_=[];this.domElement=t,this.debug={checkShaderErrors:!0},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this.outputEncoding=vn,this.physicallyCorrectLights=!1,this.toneMapping=We,this.toneMappingExposure=1;let p=this,d=!1,v=0,T=0,b=null,M=-1,A=null,C=new Xt,I=new Xt,x=null,S=t.width,L=t.height,X=1,q=null,z=null,R=new Xt(0,0,S,L),G=new Xt(0,0,S,L),Y=!1,j=new ts,W=!1,Q=!1,Z=null,ft=new qt,F=new Nt,J=new N,nt={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};function it(){return b===null?X:1}let O=e;function Mt(y,D){for(let B=0;B<y.length;B++){let P=y[B],V=t.getContext(P,D);if(V!==null)return V}return null}try{let y={alpha:!0,depth:n,stencil:i,antialias:s,premultipliedAlpha:o,preserveDrawingBuffer:a,powerPreference:c,failIfMajorPerformanceCaveat:l};if("setAttribute"in t&&t.setAttribute("data-engine",\`three.js r\${vr}\`),t.addEventListener("webglcontextlost",gt,!1),t.addEventListener("webglcontextrestored",dt,!1),t.addEventListener("webglcontextcreationerror",Pt,!1),O===null){let D=["webgl2","webgl","experimental-webgl"];if(p.isWebGL1Renderer===!0&&D.shift(),O=Mt(D,y),O===null)throw Mt(D)?new Error("Error creating WebGL context with your selected attributes."):new Error("Error creating WebGL context.")}O.getShaderPrecisionFormat===void 0&&(O.getShaderPrecisionFormat=function(){return{rangeMin:1,rangeMax:1,precision:1}})}catch(y){throw console.error("THREE.WebGLRenderer: "+y.message),y}let ht,ut,ot,Ft,bt,xt,ne,ve,Qt,Me,Ht,Dt,Fe,Te,w,g,k,K,tt,st,yt,rt,H,mt;function _t(){ht=new Tu(O),ut=new yu(O,ht,r),ht.init(ut),rt=new tf(O,ht,ut),ot=new jd(O,ht,ut),Ft=new Cu,bt=new kd,xt=new Qd(O,ht,ot,bt,ut,rt,Ft),ne=new Mu(p),ve=new Su(p),Qt=new Ol(O,ut),H=new _u(O,ht,Qt,ut),Me=new Au(O,Qt,Ft,H),Ht=new Iu(O,Me,Qt,Ft),tt=new Lu(O,ut,xt),g=new vu(bt),Dt=new Bd(p,ne,ve,ht,ut,H,g),Fe=new nf(p,bt),Te=new Gd,w=new Zd(ht,ut),K=new gu(p,ne,ve,ot,Ht,h,o),k=new Kd(p,Ht,ut),mt=new sf(O,Ft,ut,ot),st=new xu(O,ht,Ft,ut),yt=new Eu(O,ht,Ft,ut),Ft.programs=Dt.programs,p.capabilities=ut,p.extensions=ht,p.properties=bt,p.renderLists=Te,p.shadowMap=k,p.state=ot,p.info=Ft}_t();let lt=new hr(p,O);this.xr=lt,this.getContext=function(){return O},this.getContextAttributes=function(){return O.getContextAttributes()},this.forceContextLoss=function(){let y=ht.get("WEBGL_lose_context");y&&y.loseContext()},this.forceContextRestore=function(){let y=ht.get("WEBGL_lose_context");y&&y.restoreContext()},this.getPixelRatio=function(){return X},this.setPixelRatio=function(y){y!==void 0&&(X=y,this.setSize(S,L,!1))},this.getSize=function(y){return y.set(S,L)},this.setSize=function(y,D,B){if(lt.isPresenting){console.warn("THREE.WebGLRenderer: Can't change size while VR device is presenting.");return}S=y,L=D,t.width=Math.floor(y*X),t.height=Math.floor(D*X),B!==!1&&(t.style.width=y+"px",t.style.height=D+"px"),this.setViewport(0,0,y,D)},this.getDrawingBufferSize=function(y){return y.set(S*X,L*X).floor()},this.setDrawingBufferSize=function(y,D,B){S=y,L=D,X=B,t.width=Math.floor(y*B),t.height=Math.floor(D*B),this.setViewport(0,0,y,D)},this.getCurrentViewport=function(y){return y.copy(C)},this.getViewport=function(y){return y.copy(R)},this.setViewport=function(y,D,B,P){y.isVector4?R.set(y.x,y.y,y.z,y.w):R.set(y,D,B,P),ot.viewport(C.copy(R).multiplyScalar(X).floor())},this.getScissor=function(y){return y.copy(G)},this.setScissor=function(y,D,B,P){y.isVector4?G.set(y.x,y.y,y.z,y.w):G.set(y,D,B,P),ot.scissor(I.copy(G).multiplyScalar(X).floor())},this.getScissorTest=function(){return Y},this.setScissorTest=function(y){ot.setScissorTest(Y=y)},this.setOpaqueSort=function(y){q=y},this.setTransparentSort=function(y){z=y},this.getClearColor=function(y){return y.copy(K.getClearColor())},this.setClearColor=function(){K.setClearColor.apply(K,arguments)},this.getClearAlpha=function(){return K.getClearAlpha()},this.setClearAlpha=function(){K.setClearAlpha.apply(K,arguments)},this.clear=function(y=!0,D=!0,B=!0){let P=0;y&&(P|=16384),D&&(P|=256),B&&(P|=1024),O.clear(P)},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",gt,!1),t.removeEventListener("webglcontextrestored",dt,!1),t.removeEventListener("webglcontextcreationerror",Pt,!1),Te.dispose(),w.dispose(),bt.dispose(),ne.dispose(),ve.dispose(),Ht.dispose(),H.dispose(),mt.dispose(),Dt.dispose(),lt.dispose(),lt.removeEventListener("sessionstart",at),lt.removeEventListener("sessionend",ct),Z&&(Z.dispose(),Z=null),Lt.stop()};function gt(y){y.preventDefault(),console.log("THREE.WebGLRenderer: Context Lost."),d=!0}function dt(){console.log("THREE.WebGLRenderer: Context Restored."),d=!1;let y=Ft.autoReset,D=k.enabled,B=k.autoUpdate,P=k.needsUpdate,V=k.type;_t(),Ft.autoReset=y,k.enabled=D,k.autoUpdate=B,k.needsUpdate=P,k.type=V}function Pt(y){console.error("THREE.WebGLRenderer: A WebGL context could not be created. Reason: ",y.statusMessage)}function Ut(y){let D=y.target;D.removeEventListener("dispose",Ut),Jt(D)}function Jt(y){E(y),bt.remove(y)}function E(y){let D=bt.get(y).programs;D!==void 0&&(D.forEach(function(B){Dt.releaseProgram(B)}),y.isShaderMaterial&&Dt.releaseShaderCache(y))}this.renderBufferDirect=function(y,D,B,P,V,pt){D===null&&(D=nt);let vt=V.isMesh&&V.matrixWorld.determinant()<0,St=ro(y,D,B,P,V);ot.setMaterial(P,vt);let Tt=B.index,Rt=1;P.wireframe===!0&&(Tt=Me.getWireframeAttribute(B),Rt=2);let At=B.drawRange,Et=B.attributes.position,kt=At.start*Rt,fe=(At.start+At.count)*Rt;pt!==null&&(kt=Math.max(kt,pt.start*Rt),fe=Math.min(fe,(pt.start+pt.count)*Rt)),Tt!==null?(kt=Math.max(kt,0),fe=Math.min(fe,Tt.count)):Et!=null&&(kt=Math.max(kt,0),fe=Math.min(fe,Et.count));let Oe=fe-kt;if(Oe<0||Oe===1/0)return;H.setup(V,P,St,B,Tt);let on,Vt=st;if(Tt!==null&&(on=Qt.get(Tt),Vt=yt,Vt.setIndex(on)),V.isMesh)P.wireframe===!0?(ot.setLineWidth(P.wireframeLinewidth*it()),Vt.setMode(1)):Vt.setMode(4);else if(V.isLine){let Ct=P.linewidth;Ct===void 0&&(Ct=1),ot.setLineWidth(Ct*it()),V.isLineSegments?Vt.setMode(1):V.isLineLoop?Vt.setMode(2):Vt.setMode(3)}else V.isPoints?Vt.setMode(0):V.isSprite&&Vt.setMode(4);if(V.isInstancedMesh)Vt.renderInstances(kt,Oe,V.count);else if(B.isInstancedBufferGeometry){let Ct=B._maxInstanceCount!==void 0?B._maxInstanceCount:1/0,os=Math.min(B.instanceCount,Ct);Vt.renderInstances(kt,Oe,os)}else Vt.render(kt,Oe)},this.compile=function(y,D){function B(P,V,pt){P.transparent===!0&&P.side===tn&&P.forceSinglePass===!1?(P.side=ye,P.needsUpdate=!0,be(P,V,pt),P.side=nn,P.needsUpdate=!0,be(P,V,pt),P.side=tn):be(P,V,pt)}u=w.get(y),u.init(),_.push(u),y.traverseVisible(function(P){P.isLight&&P.layers.test(D.layers)&&(u.pushLight(P),P.castShadow&&u.pushShadow(P))}),u.setupLights(p.physicallyCorrectLights),y.traverse(function(P){let V=P.material;if(V)if(Array.isArray(V))for(let pt=0;pt<V.length;pt++){let vt=V[pt];B(vt,y,P)}else B(V,y,P)}),_.pop(),u=null};let U=null;function $(y){U&&U(y)}function at(){Lt.stop()}function ct(){Lt.start()}let Lt=new ja;Lt.setAnimationLoop($),typeof self!="undefined"&&Lt.setContext(self),this.setAnimationLoop=function(y){U=y,lt.setAnimationLoop(y),y===null?Lt.stop():Lt.start()},lt.addEventListener("sessionstart",at),lt.addEventListener("sessionend",ct),this.render=function(y,D){if(D!==void 0&&D.isCamera!==!0){console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");return}if(d===!0)return;y.matrixWorldAutoUpdate===!0&&y.updateMatrixWorld(),D.parent===null&&D.matrixWorldAutoUpdate===!0&&D.updateMatrixWorld(),lt.enabled===!0&<.isPresenting===!0&&(lt.cameraAutoUpdate===!0&<.updateCamera(D),D=lt.getCamera()),y.isScene===!0&&y.onBeforeRender(p,y,D,b),u=w.get(y,_.length),u.init(),_.push(u),ft.multiplyMatrices(D.projectionMatrix,D.matrixWorldInverse),j.setFromProjectionMatrix(ft),Q=this.localClippingEnabled,W=g.init(this.clippingPlanes,Q),f=Te.get(y,m.length),f.init(),m.push(f),$t(y,D,0,p.sortObjects),f.finish(),p.sortObjects===!0&&f.sort(q,z),W===!0&&g.beginShadows();let B=u.state.shadowsArray;if(k.render(B,y,D),W===!0&&g.endShadows(),this.info.autoReset===!0&&this.info.reset(),K.render(f,y),u.setupLights(p.physicallyCorrectLights),D.isArrayCamera){let P=D.cameras;for(let V=0,pt=P.length;V<pt;V++){let vt=P[V];te(f,y,vt,vt.viewport)}}else te(f,y,D);b!==null&&(xt.updateMultisampleRenderTarget(b),xt.updateRenderTargetMipmap(b)),y.isScene===!0&&y.onAfterRender(p,y,D),H.resetDefaultState(),M=-1,A=null,_.pop(),_.length>0?u=_[_.length-1]:u=null,m.pop(),m.length>0?f=m[m.length-1]:f=null};function $t(y,D,B,P){if(y.visible===!1)return;if(y.layers.test(D.layers)){if(y.isGroup)B=y.renderOrder;else if(y.isLOD)y.autoUpdate===!0&&y.update(D);else if(y.isLight)u.pushLight(y),y.castShadow&&u.pushShadow(y);else if(y.isSprite){if(!y.frustumCulled||j.intersectsSprite(y)){P&&J.setFromMatrixPosition(y.matrixWorld).applyMatrix4(ft);let vt=Ht.update(y),St=y.material;St.visible&&f.push(y,vt,St,B,J.z,null)}}else if((y.isMesh||y.isLine||y.isPoints)&&(y.isSkinnedMesh&&y.skeleton.frame!==Ft.render.frame&&(y.skeleton.update(),y.skeleton.frame=Ft.render.frame),!y.frustumCulled||j.intersectsObject(y))){P&&J.setFromMatrixPosition(y.matrixWorld).applyMatrix4(ft);let vt=Ht.update(y),St=y.material;if(Array.isArray(St)){let Tt=vt.groups;for(let Rt=0,At=Tt.length;Rt<At;Rt++){let Et=Tt[Rt],kt=St[Et.materialIndex];kt&&kt.visible&&f.push(y,vt,kt,B,J.z,Et)}}else St.visible&&f.push(y,vt,St,B,J.z,null)}}let pt=y.children;for(let vt=0,St=pt.length;vt<St;vt++)$t(pt[vt],D,B,P)}function te(y,D,B,P){let V=y.opaque,pt=y.transmissive,vt=y.transparent;u.setupLightsView(B),W===!0&&g.setGlobalState(p.clippingPlanes,B),pt.length>0&&an(V,D,B),P&&ot.viewport(C.copy(P)),V.length>0&&Bt(V,D,B),pt.length>0&&Bt(pt,D,B),vt.length>0&&Bt(vt,D,B),ot.buffers.depth.setTest(!0),ot.buffers.depth.setMask(!0),ot.buffers.color.setMask(!0),ot.setPolygonOffset(!1)}function an(y,D,B){let P=ut.isWebGL2;Z===null&&(Z=new qe(1,1,{generateMipmaps:!0,type:ht.has("EXT_color_buffer_half_float")?mi:yn,minFilter:pi,samples:P&&s===!0?4:0})),p.getDrawingBufferSize(F),P?Z.setSize(F.x,F.y):Z.setSize(Hi(F.x),Hi(F.y));let V=p.getRenderTarget();p.setRenderTarget(Z),p.clear();let pt=p.toneMapping;p.toneMapping=We,Bt(y,D,B),p.toneMapping=pt,xt.updateMultisampleRenderTarget(Z),xt.updateRenderTargetMipmap(Z),p.setRenderTarget(V)}function Bt(y,D,B){let P=D.isScene===!0?D.overrideMaterial:null;for(let V=0,pt=y.length;V<pt;V++){let vt=y[V],St=vt.object,Tt=vt.geometry,Rt=P===null?vt.material:P,At=vt.group;St.layers.test(B.layers)&&ze(St,D,B,Tt,Rt,At)}}function ze(y,D,B,P,V,pt){y.onBeforeRender(p,D,B,P,V,pt),y.modelViewMatrix.multiplyMatrices(B.matrixWorldInverse,y.matrixWorld),y.normalMatrix.getNormalMatrix(y.modelViewMatrix),V.onBeforeRender(p,D,B,P,y,pt),V.transparent===!0&&V.side===tn&&V.forceSinglePass===!1?(V.side=ye,V.needsUpdate=!0,p.renderBufferDirect(B,D,P,V,y,pt),V.side=nn,V.needsUpdate=!0,p.renderBufferDirect(B,D,P,V,y,pt),V.side=tn):p.renderBufferDirect(B,D,P,V,y,pt),y.onAfterRender(p,D,B,P,V,pt)}function be(y,D,B){D.isScene!==!0&&(D=nt);let P=bt.get(y),V=u.state.lights,pt=u.state.shadowsArray,vt=V.state.version,St=Dt.getParameters(y,V.state,pt,D,B),Tt=Dt.getProgramCacheKey(St),Rt=P.programs;P.environment=y.isMeshStandardMaterial?D.environment:null,P.fog=D.fog,P.envMap=(y.isMeshStandardMaterial?ve:ne).get(y.envMap||P.environment),Rt===void 0&&(y.addEventListener("dispose",Ut),Rt=new Map,P.programs=Rt);let At=Rt.get(Tt);if(At!==void 0){if(P.currentProgram===At&&P.lightsStateVersion===vt)return Ar(y,St),At}else St.uniforms=Dt.getUniforms(y),y.onBuild(B,St,p),y.onBeforeCompile(St,p),At=Dt.acquireProgram(St,Tt),Rt.set(Tt,At),P.uniforms=St.uniforms;let Et=P.uniforms;(!y.isShaderMaterial&&!y.isRawShaderMaterial||y.clipping===!0)&&(Et.clippingPlanes=g.uniform),Ar(y,St),P.needsLights=oo(y),P.lightsStateVersion=vt,P.needsLights&&(Et.ambientLightColor.value=V.state.ambient,Et.lightProbe.value=V.state.probe,Et.directionalLights.value=V.state.directional,Et.directionalLightShadows.value=V.state.directionalShadow,Et.spotLights.value=V.state.spot,Et.spotLightShadows.value=V.state.spotShadow,Et.rectAreaLights.value=V.state.rectArea,Et.ltc_1.value=V.state.rectAreaLTC1,Et.ltc_2.value=V.state.rectAreaLTC2,Et.pointLights.value=V.state.point,Et.pointLightShadows.value=V.state.pointShadow,Et.hemisphereLights.value=V.state.hemi,Et.directionalShadowMap.value=V.state.directionalShadowMap,Et.directionalShadowMatrix.value=V.state.directionalShadowMatrix,Et.spotShadowMap.value=V.state.spotShadowMap,Et.spotLightMatrix.value=V.state.spotLightMatrix,Et.spotLightMap.value=V.state.spotLightMap,Et.pointShadowMap.value=V.state.pointShadowMap,Et.pointShadowMatrix.value=V.state.pointShadowMatrix);let kt=At.getUniforms(),fe=Wn.seqWithValue(kt.seq,Et);return P.currentProgram=At,P.uniformsList=fe,At}function Ar(y,D){let B=bt.get(y);B.outputEncoding=D.outputEncoding,B.instancing=D.instancing,B.skinning=D.skinning,B.morphTargets=D.morphTargets,B.morphNormals=D.morphNormals,B.morphColors=D.morphColors,B.morphTargetsCount=D.morphTargetsCount,B.numClippingPlanes=D.numClippingPlanes,B.numIntersection=D.numClipIntersection,B.vertexAlphas=D.vertexAlphas,B.vertexTangents=D.vertexTangents,B.toneMapping=D.toneMapping}function ro(y,D,B,P,V){D.isScene!==!0&&(D=nt),xt.resetTextureUnits();let pt=D.fog,vt=P.isMeshStandardMaterial?D.environment:null,St=b===null?p.outputEncoding:b.isXRRenderTarget===!0?b.texture.encoding:vn,Tt=(P.isMeshStandardMaterial?ve:ne).get(P.envMap||vt),Rt=P.vertexColors===!0&&!!B.attributes.color&&B.attributes.color.itemSize===4,At=!!P.normalMap&&!!B.attributes.tangent,Et=!!B.morphAttributes.position,kt=!!B.morphAttributes.normal,fe=!!B.morphAttributes.color,Oe=P.toneMapped?p.toneMapping:We,on=B.morphAttributes.position||B.morphAttributes.normal||B.morphAttributes.color,Vt=on!==void 0?on.length:0,Ct=bt.get(P),os=u.state.lights;if(W===!0&&(Q===!0||y!==A)){let pe=y===A&&P.id===M;g.setState(P,y,pe)}let Kt=!1;P.version===Ct.__version?(Ct.needsLights&&Ct.lightsStateVersion!==os.state.version||Ct.outputEncoding!==St||V.isInstancedMesh&&Ct.instancing===!1||!V.isInstancedMesh&&Ct.instancing===!0||V.isSkinnedMesh&&Ct.skinning===!1||!V.isSkinnedMesh&&Ct.skinning===!0||Ct.envMap!==Tt||P.fog===!0&&Ct.fog!==pt||Ct.numClippingPlanes!==void 0&&(Ct.numClippingPlanes!==g.numPlanes||Ct.numIntersection!==g.numIntersection)||Ct.vertexAlphas!==Rt||Ct.vertexTangents!==At||Ct.morphTargets!==Et||Ct.morphNormals!==kt||Ct.morphColors!==fe||Ct.toneMapping!==Oe||ut.isWebGL2===!0&&Ct.morphTargetsCount!==Vt)&&(Kt=!0):(Kt=!0,Ct.__version=P.version);let ln=Ct.currentProgram;Kt===!0&&(ln=be(P,D,V));let Er=!1,ti=!1,ls=!1,ie=ln.getUniforms(),cn=Ct.uniforms;if(ot.useProgram(ln.program)&&(Er=!0,ti=!0,ls=!0),P.id!==M&&(M=P.id,ti=!0),Er||A!==y){if(ie.setValue(O,"projectionMatrix",y.projectionMatrix),ut.logarithmicDepthBuffer&&ie.setValue(O,"logDepthBufFC",2/(Math.log(y.far+1)/Math.LN2)),A!==y&&(A=y,ti=!0,ls=!0),P.isShaderMaterial||P.isMeshPhongMaterial||P.isMeshToonMaterial||P.isMeshStandardMaterial||P.envMap){let pe=ie.map.cameraPosition;pe!==void 0&&pe.setValue(O,J.setFromMatrixPosition(y.matrixWorld))}(P.isMeshPhongMaterial||P.isMeshToonMaterial||P.isMeshLambertMaterial||P.isMeshBasicMaterial||P.isMeshStandardMaterial||P.isShaderMaterial)&&ie.setValue(O,"isOrthographic",y.isOrthographicCamera===!0),(P.isMeshPhongMaterial||P.isMeshToonMaterial||P.isMeshLambertMaterial||P.isMeshBasicMaterial||P.isMeshStandardMaterial||P.isShaderMaterial||P.isShadowMaterial||V.isSkinnedMesh)&&ie.setValue(O,"viewMatrix",y.matrixWorldInverse)}if(V.isSkinnedMesh){ie.setOptional(O,V,"bindMatrix"),ie.setOptional(O,V,"bindMatrixInverse");let pe=V.skeleton;pe&&(ut.floatVertexTextures?(pe.boneTexture===null&&pe.computeBoneTexture(),ie.setValue(O,"boneTexture",pe.boneTexture,xt),ie.setValue(O,"boneTextureSize",pe.boneTextureSize)):console.warn("THREE.WebGLRenderer: SkinnedMesh can only be used with WebGL 2. With WebGL 1 OES_texture_float and vertex textures support is required."))}let cs=B.morphAttributes;if((cs.position!==void 0||cs.normal!==void 0||cs.color!==void 0&&ut.isWebGL2===!0)&&tt.update(V,B,P,ln),(ti||Ct.receiveShadow!==V.receiveShadow)&&(Ct.receiveShadow=V.receiveShadow,ie.setValue(O,"receiveShadow",V.receiveShadow)),P.isMeshGouraudMaterial&&P.envMap!==null&&(cn.envMap.value=Tt,cn.flipEnvMap.value=Tt.isCubeTexture&&Tt.isRenderTargetTexture===!1?-1:1),ti&&(ie.setValue(O,"toneMappingExposure",p.toneMappingExposure),Ct.needsLights&&ao(cn,ls),pt&&P.fog===!0&&Fe.refreshFogUniforms(cn,pt),Fe.refreshMaterialUniforms(cn,P,X,L,Z),Wn.upload(O,Ct.uniformsList,cn,xt)),P.isShaderMaterial&&P.uniformsNeedUpdate===!0&&(Wn.upload(O,Ct.uniformsList,cn,xt),P.uniformsNeedUpdate=!1),P.isSpriteMaterial&&ie.setValue(O,"center",V.center),ie.setValue(O,"modelViewMatrix",V.modelViewMatrix),ie.setValue(O,"normalMatrix",V.normalMatrix),ie.setValue(O,"modelMatrix",V.matrixWorld),P.isShaderMaterial||P.isRawShaderMaterial){let pe=P.uniformsGroups;for(let hs=0,lo=pe.length;hs<lo;hs++)if(ut.isWebGL2){let Cr=pe[hs];mt.update(Cr,ln),mt.bind(Cr,ln)}else console.warn("THREE.WebGLRenderer: Uniform Buffer Objects can only be used with WebGL 2.")}return ln}function ao(y,D){y.ambientLightColor.needsUpdate=D,y.lightProbe.needsUpdate=D,y.directionalLights.needsUpdate=D,y.directionalLightShadows.needsUpdate=D,y.pointLights.needsUpdate=D,y.pointLightShadows.needsUpdate=D,y.spotLights.needsUpdate=D,y.spotLightShadows.needsUpdate=D,y.rectAreaLights.needsUpdate=D,y.hemisphereLights.needsUpdate=D}function oo(y){return y.isMeshLambertMaterial||y.isMeshToonMaterial||y.isMeshPhongMaterial||y.isMeshStandardMaterial||y.isShadowMaterial||y.isShaderMaterial&&y.lights===!0}this.getActiveCubeFace=function(){return v},this.getActiveMipmapLevel=function(){return T},this.getRenderTarget=function(){return b},this.setRenderTargetTextures=function(y,D,B){bt.get(y.texture).__webglTexture=D,bt.get(y.depthTexture).__webglTexture=B;let P=bt.get(y);P.__hasExternalTextures=!0,P.__hasExternalTextures&&(P.__autoAllocateDepthBuffer=B===void 0,P.__autoAllocateDepthBuffer||ht.has("WEBGL_multisampled_render_to_texture")===!0&&(console.warn("THREE.WebGLRenderer: Render-to-texture extension was disabled because an external texture was provided"),P.__useRenderToTexture=!1))},this.setRenderTargetFramebuffer=function(y,D){let B=bt.get(y);B.__webglFramebuffer=D,B.__useDefaultFramebuffer=D===void 0},this.setRenderTarget=function(y,D=0,B=0){b=y,v=D,T=B;let P=!0,V=null,pt=!1,vt=!1;if(y){let Tt=bt.get(y);Tt.__useDefaultFramebuffer!==void 0?(ot.bindFramebuffer(36160,null),P=!1):Tt.__webglFramebuffer===void 0?xt.setupRenderTarget(y):Tt.__hasExternalTextures&&xt.rebindTextures(y,bt.get(y.texture).__webglTexture,bt.get(y.depthTexture).__webglTexture);let Rt=y.texture;(Rt.isData3DTexture||Rt.isDataArrayTexture||Rt.isCompressedArrayTexture)&&(vt=!0);let At=bt.get(y).__webglFramebuffer;y.isWebGLCubeRenderTarget?(V=At[D],pt=!0):ut.isWebGL2&&y.samples>0&&xt.useMultisampledRTT(y)===!1?V=bt.get(y).__webglMultisampledFramebuffer:V=At,C.copy(y.viewport),I.copy(y.scissor),x=y.scissorTest}else C.copy(R).multiplyScalar(X).floor(),I.copy(G).multiplyScalar(X).floor(),x=Y;if(ot.bindFramebuffer(36160,V)&&ut.drawBuffers&&P&&ot.drawBuffers(y,V),ot.viewport(C),ot.scissor(I),ot.setScissorTest(x),pt){let Tt=bt.get(y.texture);O.framebufferTexture2D(36160,36064,34069+D,Tt.__webglTexture,B)}else if(vt){let Tt=bt.get(y.texture),Rt=D||0;O.framebufferTextureLayer(36160,36064,Tt.__webglTexture,B||0,Rt)}M=-1},this.readRenderTargetPixels=function(y,D,B,P,V,pt,vt){if(!(y&&y.isWebGLRenderTarget)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");return}let St=bt.get(y).__webglFramebuffer;if(y.isWebGLCubeRenderTarget&&vt!==void 0&&(St=St[vt]),St){ot.bindFramebuffer(36160,St);try{let Tt=y.texture,Rt=Tt.format,At=Tt.type;if(Rt!==Re&&rt.convert(Rt)!==O.getParameter(35739)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");return}let Et=At===mi&&(ht.has("EXT_color_buffer_half_float")||ut.isWebGL2&&ht.has("EXT_color_buffer_float"));if(At!==yn&&rt.convert(At)!==O.getParameter(35738)&&!(At===gn&&(ut.isWebGL2||ht.has("OES_texture_float")||ht.has("WEBGL_color_buffer_float")))&&!Et){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");return}D>=0&&D<=y.width-P&&B>=0&&B<=y.height-V&&O.readPixels(D,B,P,V,rt.convert(Rt),rt.convert(At),pt)}finally{let Tt=b!==null?bt.get(b).__webglFramebuffer:null;ot.bindFramebuffer(36160,Tt)}}},this.copyFramebufferToTexture=function(y,D,B=0){let P=Math.pow(2,-B),V=Math.floor(D.image.width*P),pt=Math.floor(D.image.height*P);xt.setTexture2D(D,0),O.copyTexSubImage2D(3553,B,0,0,y.x,y.y,V,pt),ot.unbindTexture()},this.copyTextureToTexture=function(y,D,B,P=0){let V=D.image.width,pt=D.image.height,vt=rt.convert(B.format),St=rt.convert(B.type);xt.setTexture2D(B,0),O.pixelStorei(37440,B.flipY),O.pixelStorei(37441,B.premultiplyAlpha),O.pixelStorei(3317,B.unpackAlignment),D.isDataTexture?O.texSubImage2D(3553,P,y.x,y.y,V,pt,vt,St,D.image.data):D.isCompressedTexture?O.compressedTexSubImage2D(3553,P,y.x,y.y,D.mipmaps[0].width,D.mipmaps[0].height,vt,D.mipmaps[0].data):O.texSubImage2D(3553,P,y.x,y.y,vt,St,D.image),P===0&&B.generateMipmaps&&O.generateMipmap(3553),ot.unbindTexture()},this.copyTextureToTexture3D=function(y,D,B,P,V=0){if(p.isWebGL1Renderer){console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.");return}let pt=y.max.x-y.min.x+1,vt=y.max.y-y.min.y+1,St=y.max.z-y.min.z+1,Tt=rt.convert(P.format),Rt=rt.convert(P.type),At;if(P.isData3DTexture)xt.setTexture3D(P,0),At=32879;else if(P.isDataArrayTexture)xt.setTexture2DArray(P,0),At=35866;else{console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.");return}O.pixelStorei(37440,P.flipY),O.pixelStorei(37441,P.premultiplyAlpha),O.pixelStorei(3317,P.unpackAlignment);let Et=O.getParameter(3314),kt=O.getParameter(32878),fe=O.getParameter(3316),Oe=O.getParameter(3315),on=O.getParameter(32877),Vt=B.isCompressedTexture?B.mipmaps[0]:B.image;O.pixelStorei(3314,Vt.width),O.pixelStorei(32878,Vt.height),O.pixelStorei(3316,y.min.x),O.pixelStorei(3315,y.min.y),O.pixelStorei(32877,y.min.z),B.isDataTexture||B.isData3DTexture?O.texSubImage3D(At,V,D.x,D.y,D.z,pt,vt,St,Tt,Rt,Vt.data):B.isCompressedArrayTexture?(console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture."),O.compressedTexSubImage3D(At,V,D.x,D.y,D.z,pt,vt,St,Tt,Vt.data)):O.texSubImage3D(At,V,D.x,D.y,D.z,pt,vt,St,Tt,Rt,Vt),O.pixelStorei(3314,Et),O.pixelStorei(32878,kt),O.pixelStorei(3316,fe),O.pixelStorei(3315,Oe),O.pixelStorei(32877,on),V===0&&P.generateMipmaps&&O.generateMipmap(At),ot.unbindTexture()},this.initTexture=function(y){y.isCubeTexture?xt.setTextureCube(y,0):y.isData3DTexture?xt.setTexture3D(y,0):y.isDataArrayTexture||y.isCompressedArrayTexture?xt.setTexture2DArray(y,0):xt.setTexture2D(y,0),ot.unbindTexture()},this.resetState=function(){v=0,T=0,b=null,ot.reset(),H.reset()},typeof __THREE_DEVTOOLS__!="undefined"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}var ur=class extends af{};ur.prototype.isWebGL1Renderer=!0;function Qe(r,t,e){return io(r)?new r.constructor(r.subarray(t,e!==void 0?e:r.length)):r.slice(t,e)}function Ui(r,t,e){return!r||!e&&r.constructor===t?r:typeof t.BYTES_PER_ELEMENT=="number"?new t(r):Array.prototype.slice.call(r)}function io(r){return ArrayBuffer.isView(r)&&!(r instanceof DataView)}var Kn=class{constructor(t,e,n,i){this.parameterPositions=t,this._cachedIndex=0,this.resultBuffer=i!==void 0?i:new e.constructor(n),this.sampleValues=e,this.valueSize=n,this.settings=null,this.DefaultSettings_={}}evaluate(t){let e=this.parameterPositions,n=this._cachedIndex,i=e[n],s=e[n-1];n:{t:{let o;e:{i:if(!(t<i)){for(let a=n+2;;){if(i===void 0){if(t<s)break i;return n=e.length,this._cachedIndex=n,this.copySampleValue_(n-1)}if(n===a)break;if(s=i,i=e[++n],t<i)break t}o=e.length;break e}if(!(t>=s)){let a=e[1];t<a&&(n=2,s=a);for(let c=n-2;;){if(s===void 0)return this._cachedIndex=0,this.copySampleValue_(0);if(n===c)break;if(i=s,s=e[--n-1],t>=s)break t}o=n,n=0;break e}break n}for(;n<o;){let a=n+o>>>1;t<e[a]?o=a:n=a+1}if(i=e[n],s=e[n-1],s===void 0)return this._cachedIndex=0,this.copySampleValue_(0);if(i===void 0)return n=e.length,this._cachedIndex=n,this.copySampleValue_(n-1)}this._cachedIndex=n,this.intervalChanged_(n,s,i)}return this.interpolate_(n,s,t,i)}getSettings_(){return this.settings||this.DefaultSettings_}copySampleValue_(t){let e=this.resultBuffer,n=this.sampleValues,i=this.valueSize,s=t*i;for(let o=0;o!==i;++o)e[o]=n[s+o];return e}interpolate_(){throw new Error("call to abstract method")}intervalChanged_(){}},dr=class extends Kn{constructor(t,e,n,i){super(t,e,n,i),this._weightPrev=-0,this._offsetPrev=-0,this._weightNext=-0,this._offsetNext=-0,this.DefaultSettings_={endingStart:ra,endingEnd:ra}}intervalChanged_(t,e,n){let i=this.parameterPositions,s=t-2,o=t+1,a=i[s],c=i[o];if(a===void 0)switch(this.getSettings_().endingStart){case aa:s=t,a=2*e-n;break;case oa:s=i.length-2,a=e+i[s]-i[s+1];break;default:s=t,a=n}if(c===void 0)switch(this.getSettings_().endingEnd){case aa:o=t,c=2*n-e;break;case oa:o=1,c=n+i[1]-i[0];break;default:o=t-1,c=e}let l=(n-e)*.5,h=this.valueSize;this._weightPrev=l/(e-a),this._weightNext=l/(c-n),this._offsetPrev=s*h,this._offsetNext=o*h}interpolate_(t,e,n,i){let s=this.resultBuffer,o=this.sampleValues,a=this.valueSize,c=t*a,l=c-a,h=this._offsetPrev,f=this._offsetNext,u=this._weightPrev,m=this._weightNext,_=(n-e)/(i-e),p=_*_,d=p*_,v=-u*d+2*u*p-u*_,T=(1+u)*d+(-1.5-2*u)*p+(-.5+u)*_+1,b=(-1-m)*d+(1.5+m)*p+.5*_,M=m*d-m*p;for(let A=0;A!==a;++A)s[A]=v*o[h+A]+T*o[l+A]+b*o[c+A]+M*o[f+A];return s}},fr=class extends Kn{constructor(t,e,n,i){super(t,e,n,i)}interpolate_(t,e,n,i){let s=this.resultBuffer,o=this.sampleValues,a=this.valueSize,c=t*a,l=c-a,h=(n-e)/(i-e),f=1-h;for(let u=0;u!==a;++u)s[u]=o[l+u]*f+o[c+u]*h;return s}},pr=class extends Kn{constructor(t,e,n,i){super(t,e,n,i)}interpolate_(t){return this.copySampleValue_(t-1)}},Le=class{constructor(t,e,n,i){if(t===void 0)throw new Error("THREE.KeyframeTrack: track name is undefined");if(e===void 0||e.length===0)throw new Error("THREE.KeyframeTrack: no keyframes in track named "+t);this.name=t,this.times=Ui(e,this.TimeBufferType),this.values=Ui(n,this.ValueBufferType),this.setInterpolation(i||this.DefaultInterpolation)}static toJSON(t){let e=t.constructor,n;if(e.toJSON!==this.toJSON)n=e.toJSON(t);else{n={name:t.name,times:Ui(t.times,Array),values:Ui(t.values,Array)};let i=t.getInterpolation();i!==t.DefaultInterpolation&&(n.interpolation=i)}return n.type=t.ValueTypeName,n}InterpolantFactoryMethodDiscrete(t){return new pr(this.times,this.values,this.getValueSize(),t)}InterpolantFactoryMethodLinear(t){return new fr(this.times,this.values,this.getValueSize(),t)}InterpolantFactoryMethodSmooth(t){return new dr(this.times,this.values,this.getValueSize(),t)}setInterpolation(t){let e;switch(t){case ki:e=this.InterpolantFactoryMethodDiscrete;break;case Vi:e=this.InterpolantFactoryMethodLinear;break;case _s:e=this.InterpolantFactoryMethodSmooth;break}if(e===void 0){let n="unsupported interpolation for "+this.ValueTypeName+" keyframe track named "+this.name;if(this.createInterpolant===void 0)if(t!==this.DefaultInterpolation)this.setInterpolation(this.DefaultInterpolation);else throw new Error(n);return console.warn("THREE.KeyframeTrack:",n),this}return this.createInterpolant=e,this}getInterpolation(){switch(this.createInterpolant){case this.InterpolantFactoryMethodDiscrete:return ki;case this.InterpolantFactoryMethodLinear:return Vi;case this.InterpolantFactoryMethodSmooth:return _s}}getValueSize(){return this.values.length/this.times.length}shift(t){if(t!==0){let e=this.times;for(let n=0,i=e.length;n!==i;++n)e[n]+=t}return this}scale(t){if(t!==1){let e=this.times;for(let n=0,i=e.length;n!==i;++n)e[n]*=t}return this}trim(t,e){let n=this.times,i=n.length,s=0,o=i-1;for(;s!==i&&n[s]<t;)++s;for(;o!==-1&&n[o]>e;)--o;if(++o,s!==0||o!==i){s>=o&&(o=Math.max(o,1),s=o-1);let a=this.getValueSize();this.times=Qe(n,s,o),this.values=Qe(this.values,s*a,o*a)}return this}validate(){let t=!0,e=this.getValueSize();e-Math.floor(e)!==0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),t=!1);let n=this.times,i=this.values,s=n.length;s===0&&(console.error("THREE.KeyframeTrack: Track is empty.",this),t=!1);let o=null;for(let a=0;a!==s;a++){let c=n[a];if(typeof c=="number"&&isNaN(c)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,a,c),t=!1;break}if(o!==null&&o>c){console.error("THREE.KeyframeTrack: Out of order keys.",this,a,c,o),t=!1;break}o=c}if(i!==void 0&&io(i))for(let a=0,c=i.length;a!==c;++a){let l=i[a];if(isNaN(l)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,a,l),t=!1;break}}return t}optimize(){let t=Qe(this.times),e=Qe(this.values),n=this.getValueSize(),i=this.getInterpolation()===_s,s=t.length-1,o=1;for(let a=1;a<s;++a){let c=!1,l=t[a],h=t[a+1];if(l!==h&&(a!==1||l!==t[0]))if(i)c=!0;else{let f=a*n,u=f-n,m=f+n;for(let _=0;_!==n;++_){let p=e[f+_];if(p!==e[u+_]||p!==e[m+_]){c=!0;break}}}if(c){if(a!==o){t[o]=t[a];let f=a*n,u=o*n;for(let m=0;m!==n;++m)e[u+m]=e[f+m]}++o}}if(s>0){t[o]=t[s];for(let a=s*n,c=o*n,l=0;l!==n;++l)e[c+l]=e[a+l];++o}return o!==t.length?(this.times=Qe(t,0,o),this.values=Qe(e,0,o*n)):(this.times=t,this.values=e),this}clone(){let t=Qe(this.times,0),e=Qe(this.values,0),n=this.constructor,i=new n(this.name,t,e);return i.createInterpolant=this.createInterpolant,i}};Le.prototype.TimeBufferType=Float32Array;Le.prototype.ValueBufferType=Float32Array;Le.prototype.DefaultInterpolation=Vi;var wn=class extends Le{};wn.prototype.ValueTypeName="bool";wn.prototype.ValueBufferType=Array;wn.prototype.DefaultInterpolation=ki;wn.prototype.InterpolantFactoryMethodLinear=void 0;wn.prototype.InterpolantFactoryMethodSmooth=void 0;var mr=class extends Le{};mr.prototype.ValueTypeName="color";var gr=class extends Le{};gr.prototype.ValueTypeName="number";var _r=class extends Kn{constructor(t,e,n,i){super(t,e,n,i)}interpolate_(t,e,n,i){let s=this.resultBuffer,o=this.sampleValues,a=this.valueSize,c=(n-e)/(i-e),l=t*a;for(let h=l+a;l!==h;l+=4)rn.slerpFlat(s,0,o,l-a,o,l,c);return s}},yi=class extends Le{InterpolantFactoryMethodLinear(t){return new _r(this.times,this.values,this.getValueSize(),t)}};yi.prototype.ValueTypeName="quaternion";yi.prototype.DefaultInterpolation=Vi;yi.prototype.InterpolantFactoryMethodSmooth=void 0;var Sn=class extends Le{};Sn.prototype.ValueTypeName="string";Sn.prototype.ValueBufferType=Array;Sn.prototype.DefaultInterpolation=ki;Sn.prototype.InterpolantFactoryMethodLinear=void 0;Sn.prototype.InterpolantFactoryMethodSmooth=void 0;var xr=class extends Le{};xr.prototype.ValueTypeName="vector";var wr="\\\\[\\\\]\\\\.:\\\\/",of=new RegExp("["+wr+"]","g"),Sr="[^"+wr+"]",lf="[^"+wr.replace("\\\\.","")+"]",cf=/((?:WC+[\\/:])*)/.source.replace("WC",Sr),hf=/(WCOD+)?/.source.replace("WCOD",lf),uf=/(?:\\.(WC+)(?:\\[(.+)\\])?)?/.source.replace("WC",Sr),df=/\\.(WC+)(?:\\[(.+)\\])?/.source.replace("WC",Sr),ff=new RegExp("^"+cf+hf+uf+df+"$"),pf=["material","materials","bones","map"],yr=class{constructor(t,e,n){let i=n||It.parseTrackName(e);this._targetGroup=t,this._bindings=t.subscribe_(e,i)}getValue(t,e){this.bind();let n=this._targetGroup.nCachedObjects_,i=this._bindings[n];i!==void 0&&i.getValue(t,e)}setValue(t,e){let n=this._bindings;for(let i=this._targetGroup.nCachedObjects_,s=n.length;i!==s;++i)n[i].setValue(t,e)}bind(){let t=this._bindings;for(let e=this._targetGroup.nCachedObjects_,n=t.length;e!==n;++e)t[e].bind()}unbind(){let t=this._bindings;for(let e=this._targetGroup.nCachedObjects_,n=t.length;e!==n;++e)t[e].unbind()}},It=class{constructor(t,e,n){this.path=e,this.parsedPath=n||It.parseTrackName(e),this.node=It.findNode(t,this.parsedPath.nodeName)||t,this.rootNode=t,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(t,e,n){return t&&t.isAnimationObjectGroup?new It.Composite(t,e,n):new It(t,e,n)}static sanitizeNodeName(t){return t.replace(/\\s/g,"_").replace(of,"")}static parseTrackName(t){let e=ff.exec(t);if(e===null)throw new Error("PropertyBinding: Cannot parse trackName: "+t);let n={nodeName:e[2],objectName:e[3],objectIndex:e[4],propertyName:e[5],propertyIndex:e[6]},i=n.nodeName&&n.nodeName.lastIndexOf(".");if(i!==void 0&&i!==-1){let s=n.nodeName.substring(i+1);pf.indexOf(s)!==-1&&(n.nodeName=n.nodeName.substring(0,i),n.objectName=s)}if(n.propertyName===null||n.propertyName.length===0)throw new Error("PropertyBinding: can not parse propertyName from trackName: "+t);return n}static findNode(t,e){if(e===void 0||e===""||e==="."||e===-1||e===t.name||e===t.uuid)return t;if(t.skeleton){let n=t.skeleton.getBoneByName(e);if(n!==void 0)return n}if(t.children){let n=function(s){for(let o=0;o<s.length;o++){let a=s[o];if(a.name===e||a.uuid===e)return a;let c=n(a.children);if(c)return c}return null},i=n(t.children);if(i)return i}return null}_getValue_unavailable(){}_setValue_unavailable(){}_getValue_direct(t,e){t[e]=this.targetObject[this.propertyName]}_getValue_array(t,e){let n=this.resolvedProperty;for(let i=0,s=n.length;i!==s;++i)t[e++]=n[i]}_getValue_arrayElement(t,e){t[e]=this.resolvedProperty[this.propertyIndex]}_getValue_toArray(t,e){this.resolvedProperty.toArray(t,e)}_setValue_direct(t,e){this.targetObject[this.propertyName]=t[e]}_setValue_direct_setNeedsUpdate(t,e){this.targetObject[this.propertyName]=t[e],this.targetObject.needsUpdate=!0}_setValue_direct_setMatrixWorldNeedsUpdate(t,e){this.targetObject[this.propertyName]=t[e],this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_array(t,e){let n=this.resolvedProperty;for(let i=0,s=n.length;i!==s;++i)n[i]=t[e++]}_setValue_array_setNeedsUpdate(t,e){let n=this.resolvedProperty;for(let i=0,s=n.length;i!==s;++i)n[i]=t[e++];this.targetObject.needsUpdate=!0}_setValue_array_setMatrixWorldNeedsUpdate(t,e){let n=this.resolvedProperty;for(let i=0,s=n.length;i!==s;++i)n[i]=t[e++];this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_arrayElement(t,e){this.resolvedProperty[this.propertyIndex]=t[e]}_setValue_arrayElement_setNeedsUpdate(t,e){this.resolvedProperty[this.propertyIndex]=t[e],this.targetObject.needsUpdate=!0}_setValue_arrayElement_setMatrixWorldNeedsUpdate(t,e){this.resolvedProperty[this.propertyIndex]=t[e],this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_fromArray(t,e){this.resolvedProperty.fromArray(t,e)}_setValue_fromArray_setNeedsUpdate(t,e){this.resolvedProperty.fromArray(t,e),this.targetObject.needsUpdate=!0}_setValue_fromArray_setMatrixWorldNeedsUpdate(t,e){this.resolvedProperty.fromArray(t,e),this.targetObject.matrixWorldNeedsUpdate=!0}_getValue_unbound(t,e){this.bind(),this.getValue(t,e)}_setValue_unbound(t,e){this.bind(),this.setValue(t,e)}bind(){let t=this.node,e=this.parsedPath,n=e.objectName,i=e.propertyName,s=e.propertyIndex;if(t||(t=It.findNode(this.rootNode,e.nodeName)||this.rootNode,this.node=t),this.getValue=this._getValue_unavailable,this.setValue=this._setValue_unavailable,!t){console.error("THREE.PropertyBinding: Trying to update node for track: "+this.path+" but it wasn't found.");return}if(n){let l=e.objectIndex;switch(n){case"materials":if(!t.material){console.error("THREE.PropertyBinding: Can not bind to material as node does not have a material.",this);return}if(!t.material.materials){console.error("THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.",this);return}t=t.material.materials;break;case"bones":if(!t.skeleton){console.error("THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.",this);return}t=t.skeleton.bones;for(let h=0;h<t.length;h++)if(t[h].name===l){l=h;break}break;case"map":if("map"in t){t=t.map;break}if(!t.material){console.error("THREE.PropertyBinding: Can not bind to material as node does not have a material.",this);return}if(!t.material.map){console.error("THREE.PropertyBinding: Can not bind to material.map as node.material does not have a map.",this);return}t=t.material.map;break;default:if(t[n]===void 0){console.error("THREE.PropertyBinding: Can not bind to objectName of node undefined.",this);return}t=t[n]}if(l!==void 0){if(t[l]===void 0){console.error("THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.",this,t);return}t=t[l]}}let o=t[i];if(o===void 0){let l=e.nodeName;console.error("THREE.PropertyBinding: Trying to update property for track: "+l+"."+i+" but it wasn't found.",t);return}let a=this.Versioning.None;this.targetObject=t,t.needsUpdate!==void 0?a=this.Versioning.NeedsUpdate:t.matrixWorldNeedsUpdate!==void 0&&(a=this.Versioning.MatrixWorldNeedsUpdate);let c=this.BindingType.Direct;if(s!==void 0){if(i==="morphTargetInfluences"){if(!t.geometry){console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.",this);return}if(!t.geometry.morphAttributes){console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.",this);return}t.morphTargetDictionary[s]!==void 0&&(s=t.morphTargetDictionary[s])}c=this.BindingType.ArrayElement,this.resolvedProperty=o,this.propertyIndex=s}else o.fromArray!==void 0&&o.toArray!==void 0?(c=this.BindingType.HasFromToArray,this.resolvedProperty=o):Array.isArray(o)?(c=this.BindingType.EntireArray,this.resolvedProperty=o):this.propertyName=i;this.getValue=this.GetterByBindingType[c],this.setValue=this.SetterByBindingTypeAndVersioning[c][a]}unbind(){this.node=null,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}};It.Composite=yr;It.prototype.BindingType={Direct:0,EntireArray:1,ArrayElement:2,HasFromToArray:3};It.prototype.Versioning={None:0,NeedsUpdate:1,MatrixWorldNeedsUpdate:2};It.prototype.GetterByBindingType=[It.prototype._getValue_direct,It.prototype._getValue_array,It.prototype._getValue_arrayElement,It.prototype._getValue_toArray];It.prototype.SetterByBindingTypeAndVersioning=[[It.prototype._setValue_direct,It.prototype._setValue_direct_setNeedsUpdate,It.prototype._setValue_direct_setMatrixWorldNeedsUpdate],[It.prototype._setValue_array,It.prototype._setValue_array_setNeedsUpdate,It.prototype._setValue_array_setMatrixWorldNeedsUpdate],[It.prototype._setValue_arrayElement,It.prototype._setValue_arrayElement_setNeedsUpdate,It.prototype._setValue_arrayElement_setMatrixWorldNeedsUpdate],[It.prototype._setValue_fromArray,It.prototype._setValue_fromArray_setNeedsUpdate,It.prototype._setValue_fromArray_setMatrixWorldNeedsUpdate]];var mf=new Float32Array(1);typeof __THREE_DEVTOOLS__!="undefined"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register",{detail:{revision:vr}}));typeof window!="undefined"&&(window.__THREE__?console.warn("WARNING: Multiple instances of Three.js being imported."):window.__THREE__=vr);var ss=new N,rs=new N,Tr=new N,as=new xe,so=self;so.addEventListener("message",async function(r){let t=JSON.parse(r.data),{id:e,position:n,index:i,thresholdAngle:s}=t;if(e&&n&&i&&s){let a=Math.pow(10,4),c=Math.cos(Za.DEG2RAD*s),l=i.type,h=n.type,f=new ce(new self[l](i.array),i.itemSize,i.normalized),u=new ce(new self[h](n.array),n.itemSize,n.normalized),m=f?f.count:u.count,_=[0,0,0],p=["a","b","c"],d=new Array(3),v={},T=[];for(let M=0;M<m;M+=3){f?(_[0]=f.getX(M),_[1]=f.getX(M+1),_[2]=f.getX(M+2)):(_[0]=M,_[1]=M+1,_[2]=M+2);let{a:A,b:C,c:I}=as;A.fromBufferAttribute(u,_[0]),C.fromBufferAttribute(u,_[1]),I.fromBufferAttribute(u,_[2]),as.getNormal(Tr);let x=S=>Math.round(S*a);if(d[0]=\`\${x(A.x)}, \${x(A.y)}, \${x(A.z)}\`,d[1]=\`\${x(C.x)}, \${x(C.y)}, \${x(C.z)}\`,d[2]=\`\${x(I.x)}, \${x(I.y)}, \${x(I.z)}\`,!(d[0]===d[1]||d[1]===d[2]||d[2]===d[0]))for(let S=0;S<3;S++){let L=(S+1)%3,X=d[S],q=d[L],z=as[p[S]],R=as[p[L]],G=\`\${X}_\${q}\`,Y=\`\${q}_\${X}\`;Y in v&&v[Y]?(Tr.dot(v[Y].normal)<=c&&(T.push(z.x,z.y,z.z),T.push(R.x,R.y,R.z)),v[Y]=null):G in v||(v[G]={index0:_[S],index1:_[L],normal:Tr.clone()})}}for(let M in v)if(v[M]){let{index0:A,index1:C}=v[M];ss.fromBufferAttribute(u,A),rs.fromBufferAttribute(u,C),T.push(ss.x,ss.y,ss.z),T.push(rs.x,rs.y,rs.z)}let b=new self[h](T);so.postMessage({id:e,vertices:b},[b.buffer])}});
|
||
/*! Bundled license information:
|
||
|
||
three/build/three.module.js:
|
||
(**
|
||
* @license
|
||
* Copyright 2010-2023 Three.js Authors
|
||
* SPDX-License-Identifier: MIT
|
||
*)
|
||
*/
|
||
`)}var MC=class{constructor(){this.worker=new bB;this.geometries=new Map;this.loadedGeometries=new Map;this.jobCount=0;this.init()}add(r,e){this.geometries.set(r,e),this.jobCount++}get(r){return this.geometries.get(r)}init(){this.worker.addEventListener("message",r=>{let e=this.geometries.get(r.data.id.toString());(e==null?void 0:e.length)>0&&(e.forEach(i=>{i!=null&&i.geometry&&(i!=null&&i.matrix)&&(i!=null&&i.geom)&&(i!=null&&i.line)&&(i.geom.parameters={geometry:i.geometry,thresholdAngle:5},i.geom.setAttribute("position",new ct(r.data.vertices,3)),i.geom.applyMatrix4(i.matrix),i.line.geometry=i.geom,i.line.visible=!0)}),this.geometries.delete(r.data.id.toString()),this.jobCount--),this.loadedGeometries.set(r.data.id.toString(),r.data.vertices)})}postMessage(r){this.worker.postMessage(JSON.stringify(r))}};var Fp=new MC,Vvt=new A(0,1,0),jg=class{static resetObjectStyle(r){this.revertWireframeMode(r),this.revertObjectOpacity(r,[]),this.revertAppliedMaterialToObject(r),this.revertVisibleForFloors(r)}static resetObjectStyleById(r,e){let i=this.getObjectById(r,e);this.resetObjectStyle(i)}static setObjectOpacity(r,e=.3,i,n){let s=[],a=l=>{s.find(c=>c.id===l.id)||(s.push({id:l.id,opacity:l.opacity,transparent:l.transparent,side:l.side}),l.opacity*=e,l.transparent=!0,l.side=wi)},o=l=>{let c=s.find(u=>u.id===l.id);if(!c){let u=l.clone();return s.push({id:l.id,opacity:l.opacity,transparent:l.transparent,side:l.side,material:l,clonedMaterial:u}),u.opacity*=e,u.transparent=!0,u}return c.clonedMaterial};return r.traverse(l=>{if(!(n&&n.indexOf(l.id)!==-1)&&!(i&&i.indexOf(l.id)===-1)&&l instanceof Je){let c=l;if(i||n){if(Array.isArray(c.material)){let u=[];c.material.forEach(h=>{let p=o(h);p&&u.push(p)}),c.material=u}else if(c.material){let u=o(c.material);u&&(c.material=u)}}else if(Array.isArray(c.material))c.material.forEach(u=>{a(u)});else if(c.material){let u=c.material;a(u)}}}),s}static revertObjectOpacity(r,e,i,n){let s=o=>{let l=e.find(c=>c.id===o.id);l&&(o.opacity=l.opacity,o.transparent=l.transparent,o.side=l.side)},a=o=>{let l=e.find(c=>c.clonedMaterial&&c.clonedMaterial.id===o.id);if(l)return l.material};r.traverse(o=>{if(!(n&&n.indexOf(o.id)!==-1)&&!(i&&i.indexOf(o.id)===-1)&&o instanceof Je){if(Array.isArray(o.material)){let l=[];o.material.forEach(c=>{let u=a(c);u?l.push(u):s(c)}),o.material=l}else if(o.material){let l=a(o.material);l?o.material=l:s(o.material)}}})}static setObjectOpacityById(r,e,i=.3,n,s){let a=r.getObjectById(e);if(!a)throw new Error(`Failed to find object by id: ${e}`);return jg.setObjectOpacity(a,i,n,s)}static revertObjectOpacityById(r,e,i,n,s){let a=r.getObjectById(e);if(!a)throw new Error(`Failed to find object by id: ${e}`);jg.revertObjectOpacity(a,i,n,s)}static applyMaterialToObject(r,e,i,n){r.traverse(s=>{n&&n.indexOf(s.id)!==-1||i&&i.indexOf(s.id)===-1||s instanceof Je&&(s.userData.originalMaterial||(s.userData.originalMaterial=s.material),s.material=e)})}static revertAppliedMaterialToObject(r,e,i){r.traverse(n=>{i&&i.indexOf(n.id)!==-1||e&&e.indexOf(n.id)===-1||n.userData.originalMaterial&&(n.material=n.userData.originalMaterial,n.userData.originalMaterial=void 0)})}static applyMaterialToObjectById(r,e,i,n,s){let a=r.getObjectById(e);if(!a)throw new Error(`Failed to find object by id: ${e}`);this.applyMaterialToObject(a,i,n,s)}static revertAppliedMaterialToObjectById(r,e,i,n){let s=r.getObjectById(e);if(!s)throw new Error(`Failed to find object by id: ${e}`);this.revertAppliedMaterialToObject(s,i,n)}static applyOpacityMaterialToObject(r,e,i){let n={color:0,transparent:!0,opacity:.05},s=new or(n);this.applyMaterialToObject(r,s,e,i)}static setWireframeMode(r){let e=new or({color:16732160,wireframe:!0,transparent:!0,opacity:.8});r.traverseVisible(i=>{if(i instanceof Je){let n=i;n.userData.materialForWireframe=n.material,n.material=e}})}static setWireframeModeById(r,e){let i=r.getObjectById(e);if(!i)throw new Error(`Failed to find object by id: ${e}`);jg.setWireframeMode(i)}static revertWireframeMode(r){r.traverseVisible(e=>{e instanceof Je&&e.userData.materialForWireframe&&(e.material=e.userData.materialForWireframe,e.userData.materialForWireframe=void 0)})}static revertWireframeModeById(r,e){let i=r.getObjectById(e);if(!i)throw new Error(`Failed to find object by id: ${e}`);jg.revertWireframeMode(i)}static findInner(r,e,i=[],n=!1){let s=e.toLowerCase(),a=[],o=u=>u.toLowerCase().indexOf(s)!==-1,l=u=>u.toString().indexOf(s)!==-1,c=u=>{if(u.name&&u.name.toLowerCase().indexOf(s)!==-1)return!0;if(u.gltfExtensions){let h=u.gltfExtensions,p=h.objectId&&h.objectId.Value||h.elementId&&h.elementId.Value;if(p&&p.toLowerCase().indexOf(s)!==-1)return!0}return!1};if(i.length>0)for(let u=0;u<i.length;++u){let h=i[u],p=r.getObjectById(h);if(p&&p.traverse(d=>{(o(d.name)||l(d.id)||c(d.userData))&&a.push(d)}),n&&a.length>0)return[a[0]]}else if(r.traverse(u=>{(o(u.name)||l(u.id)||c(u.userData))&&a.push(u)}),n&&a.length>0)return[a[0]];return a}static find(r,e,i=[],n=!1){return this.findInner(r,e,i,n)}static findFirst(r,e,i=[],n=!1){let s=this.findInner(r,e,i,n);if(s.length>0)return s[0]}static getFloorsFromString(r){let e=[],n=new RegExp(/(?:-?(?:\d+(?:\.5)?)F)(?=\W|$)/,"g").exec(r);return n&&n.length>0&&n.forEach(s=>{if(s){let a=s.replace("F",""),o=Number(a);o?e.push(o):console.log(`[OU] invalid floor: ${s}`)}}),e}static matchFloor(r,e){return this.getFloorsFromString(r).findIndex(s=>s===e)!==-1}static matchFloors(r,e){return this.getFloorsFromString(r).findIndex(s=>e.findIndex(o=>o===s)!==-1)!==-1}static distinctFloors(r,e){let i=[],n=s=>{this.getFloorsFromString(s).forEach(o=>{i[o]=!0})};return e.forEach(s=>{let a=r.getObjectById(s);a&&a.traverse(o=>{if(n(o.name),o.userData.gltfExtensions){let l=o.userData.gltfExtensions;l.level&&l.level.Value&&n(l.level.Value)}})}),Object.keys(i).sort()}static traverseObjectByFloors(r,e,i,n,s){let a=r.getObjectById(e);if(!a)return[];a.traverse(o=>{let l=this.matchFloors(o.name,i);if(!l&&o.userData&&o.userData.gltfExtensions){let c=o.userData.gltfExtensions;c.level&&c.level.Value&&(l=this.matchFloors(c.level.Value,i))}l&&n&&n(o),!l&&s&&s(o)})}static setVisibleForFloors(r,e,i,n=!0){this.traverseObjectByFloors(r,e,i,s=>{let a=s;for(;a;)a.visible=!0,a=a.parent||void 0},s=>{n&&(s.visible=!1)})}static revertVisibleForFloors(r){r.traverse(e=>{e.visible=!0})}static revertVisibleForFloorsById(r,e){let i=this.getObjectById(r,e);this.revertVisibleForFloors(i)}static getObjectById(r,e){let i=r.getObjectById(e);if(!i)throw new Error(`Failed to find object by id: ${e}`);return i}static createOutlines(r,e={visibleOnly:!0,meshOnly:!0,replaceOriginalObject:!1}){if(!r)return[];if(r.children.length===0&&(e.visibleOnly&&!r.visible||e.meshOnly&&!(r instanceof Je)))return[];let i=r,n=i.children.length;for(let a=n-1;a>=0;--a){let o=i.children[a];this.createOutlines(o,e).forEach(c=>c.applyMatrix4(i.matrixWorld))}if(!i.geometry)return[];let s=[];if(i instanceof tn)for(let a=0;a<i.count;++a){let o=new Ue;i.getMatrixAt(a,o);let l=this.createOutline(i.geometry,o);e.replaceOriginalObject&&i.parent?i.parent.children.push(l):i.children.push(l),s.push(l)}else if(i instanceof Je){let a=this.createOutline(i.geometry,i.matrix);if(e.replaceOriginalObject&&i.parent){let o=i.parent;a.userData=Object.assign(a.userData,i.userData),i.removeFromParent(),i.geometry.dispose(),o.children.push(a)}else i.children.push(a);s.push(a)}return s}static addOutlines(r,e={visibleOnly:!0,meshOnly:!0,replaceOriginalObject:!1}){let i=this.createOutlines(r,e);return Fp.loadedGeometries.clear(),i}static removeOutlines(r){if(!(!r||!Array.isArray(r.children)))for(let e=r.children.length-1;e>=0;--e){let i=r.children[e];i.children.length>0&&this.removeOutlines(i),i.userData.isOutline&&r.remove(i)}}static hasOutline(r){let e=!1;for(let i=0;i<r.children.length;++i){let n=r.children[i];if(n.userData.isOutline){e=!0;break}if(n.children.length>0&&(e=this.hasOutline(n),e))break}return e}static setOutlinesVisibility(r,e){r.traverse(i=>{i.userData.isOutline&&(i.visible=e)})}static createOutline(r,e,i=this.OUTLINE_MATERIAL){let n=new Ip,s=new oi(n,i);if(s.layers.set(11),s.userData.isOutline=!0,s.matrixAutoUpdate=!1,s.visible=!1,s.updateMatrix(),Fp.loadedGeometries.has(r.id.toString())){let a=Fp.loadedGeometries.get(r.id.toString());return n.parameters={geometry:r,thresholdAngle:5},n.setAttribute("position",new ct(a,3)),n.applyMatrix4(e),s.geometry=n,s.visible=!0,s}if(Fp.get(r.id.toString())||Fp.add(r.id.toString(),[]),!Fp.loadedGeometries.has(r.id.toString())){Fp.add(r.id.toString(),Fp.get(r.id.toString()).concat([{geometry:r,matrix:e,geom:n,line:s}]));let a=r.getAttribute("position");Fp.postMessage({id:r.id,position:a.toJSON(),index:r.getIndex(),thresholdAngle:5})}return s}static createOutlineSync(r,e,i=this.OUTLINE_MATERIAL){let n=new Ip(r,5),s=new oi(n,i);return s.layers.set(11),s.userData.isOutline=!0,s.matrixAutoUpdate=!1,s.applyMatrix4(e),s}static cloneObject(r,e=!0){let i=r.clone();return e&&i.traverse(n=>{(n instanceof Je||n instanceof _r)&&(n.material=Cs.cloneMaterial(n.material))}),i}static createBox(r,e,i,n=jg.BOX_FACE_MATERIAL,s=!0){let a=[],o=(u,h,p)=>{a.push(new A(u,h,p))};o(0,0,0),o(r,0,0),o(r,e,0),o(0,e,0),o(0,0,i),o(r,0,i),o(r,e,i),o(0,e,i);let l=new it;l.setFromPoints(a);let c=[0,3,2,0,2,1,4,6,7,4,5,6,0,7,3,0,4,7,3,6,2,3,7,6,1,6,5,1,2,6];return s&&c.push(0,5,4,0,1,5),l.setIndex(c),l.computeVertexNormals(),new Je(l,n)}static rebaseObjectOnRTC(r){let e=r;if(!(e.isMesh||e.isLine||e.isPoints)||!e.geometry||!(e.geometry instanceof it))return r;let i=e.geometry;if(!i.hasAttribute("position"))return r;let n=i.getAttribute("position");if(n.count===0)return r;let s=n.itemSize,a=n.array,o=[];for(let u=0;u<s;u++)o.push(a[u]);for(let u=0;u<n.count;u++)for(let h=0;h<s;h++)a[u*s+h]-=o[h];r.updateMatrix();let l=r.matrix.clone();r.matrix.makeTranslation(o[0],o[1],o.length>2?o[2]:0);let c=r.matrixAutoUpdate;return r.matrixAutoUpdate=!1,r.applyMatrix4(l),r.matrixAutoUpdate=c,r}static isEmptyObject(r){if(r.children.length===0){let i=r.geometry;if(!i||!i.hasAttribute("position")||i.getAttribute("position").count===0)return!0}return!1}static removeEmptyObjects(r){for(let e=0;e<r.children.length;)this.removeEmptyObjects(r.children[e])||++e;return this.isEmptyObject(r)?(r.removeFromParent(),!0):!1}static removeEmptyObjectsFromRemovingObjects(r,e){r.length!==0&&(r.forEach(i=>{i.removeFromParent()}),this.removeEmptyObjects(e))}static setSharedVariablesOfObject(r){r.uuid="",r.up=Vvt}static isLeafObject(r){return!(r instanceof Je)&&!(r instanceof _r)&&!(r instanceof rn)?!1:!(r.children.length>0||!r.geometry)}},Qr=jg;Qr.OUTLINE_MATERIAL=new Tr({name:"outline",color:0,transparent:!0,opacity:.2}),Qr.BOX_FACE_MATERIAL=new Ts({color:11648971,transparent:!0,opacity:.3,side:en});var DC=new Ue,zvt=new Ue,CC=class{static resetMergeInfo(){this.mergeInfo.removedObjects=0,this.mergeInfo.mergedMeshes=0,this.mergeInfo.mergedLines=0,this.mergeInfo.mergedPoints=0,this.mergeInfo.mergedUnknownTypeObjects=0,this.mergeInfo.elapsedTime=0}static merge(r,e=!0){let i=Date.now();this.mergeInner(r,e),this.mergeInfo.elapsedTime+=Date.now()-i}static mergeInner(r,e=!0){if(!r.children||r.children.length<1)return;let i=r.children.length,n={},s=[];for(let u=0;u<i;++u){let h=r.children[u];if(h.children.length>0){this.mergeInner(h,e);continue}if(h.userData.relativeToCenter||h.isInstancedMesh||!h.geometry||!(h.geometry instanceof it))continue;let d=!1,f=Object.values(n);for(let m=f.length-1;m>=0;--m){let g=f[m].indexes[0];if(d=this.tryHandleMergeableObjects(r,u,g,n,s),d)break}for(let m=s.length-1;!d&&m>=0;--m){let g=s[m];if(d=this.tryHandleMergeableObjects(r,u,g,n,s),d)break}d||s.push(u)}if(Object.keys(n).length<=0)return;let a=[],o=[],l=[],c=[];Object.values(n).forEach(u=>{let h=u.indexes,p=r.children[h[0]],d=[],f=0,m=0,g=0,y=[];if(h.forEach(b=>{var D,P,_;let x=r.children[b],S=x.geometry.clone();if(S.applyMatrix4(x.matrix),Wt.tryConvertInterleavedBufferAttributes(S),S.userData.isLineSegments=x.isLineSegments===!0,d.push(S),e){let w=(P=(D=S.attributes)==null?void 0:D.position)==null?void 0:P.count,F=((_=S.index)==null?void 0:_.count)||0;y.push({batchId:f,positionStart:m,positionCount:w,indexStart:g,indexCount:F}),m+=w,g+=F,f++}}),d.length===0)return;let E;if(p.isMesh){let b=qo(d);if(!b)return;b.userData={},E=new Je(b,p.material),a.push(E)}else if(p.isLine){let b=this.mergeLineGeometries(d,e,p.material instanceof Rp||p.material instanceof Yt,y);if(!b)return;E=new oi(b,p.material),o.push(E)}else if(p.isPoints){let b=qo(d);if(!b)return;b.userData={},E=new rn(b,p.material),l.push(E)}E&&(e?E.userData.batches=y:E.userData=p.userData,E.userData.layerName=p.userData.layerName,E.name=`[Merged] ${p.name}`,E.matrixAutoUpdate=!1,E.renderOrder=p.renderOrder,E.layers=p.layers,E.visible=p.visible,c.push(...h)),d.forEach(b=>{Wt.releaseGeometryManually(b)}),d=[]}),c.sort((u,h)=>h-u),c.forEach(u=>{let h=r.children[u];r.remove(h)}),[...a,...o,...l].forEach(u=>{r.add(u)}),r.updateMatrix(),this.mergeInfo.removedObjects+=c.length,this.mergeInfo.mergedMeshes+=a.length,this.mergeInfo.mergedLines+=o.length,this.mergeInfo.mergedPoints+=l.length}static tryHandleMergeableObjects(r,e,i,n,s){let a=!1,o=Array.isArray(r),l=o?r.length:r.children.length;if(e===i||e>=l||i>=l)return a;let c=o?r[e]:r.children[e],u=o?r[i]:r.children[i];return this.areObjectsMergeable(c,u)&&this.areGeometriesMergeable(c.geometry,u.geometry)&&Cs.materialsEquals(c.material,u.material)&&(n[i]||(n[i]={indexes:[i]},this.removeFromArray(s,i)),n[i].indexes.push(e),a=!0),a}static isFilteredByOtherFactors(r,e){let i=r;if(i.isMesh&&i.material.isShaderMaterial)return!0;let n=!1,s=r;for(;s&&s!==e;){let a=s.userData;if(a.relativeToCenter||a.spatialFilterHandle){n=!0;break}s=s.parent}return n}static deepMerge(r,e=void 0,i=!0,n=!0,s=!0){let a={added:[],removed:[]};if(r.length<=1)return a;let o=Date.now(),l={},c=[];for(let g=0;g<r.length;++g){let y=r[g];if(y.isInstancedMesh||!y.geometry||!(y.geometry instanceof it)||this.isFilteredByOtherFactors(r[g],e))continue;let E=!1,b=Object.values(l);for(let x=b.length-1;x>=0;--x){let S=b[x].indexes[0];if(E=this.tryHandleMergeableObjects(r,g,S,l,c),E)break}for(let x=c.length-1;!E&&x>=0;--x){let S=c[x];if(E=this.tryHandleMergeableObjects(r,g,S,l,c),E)break}E||c.push(g)}if(Object.keys(l).length<=0)return a;ne.debug(`[Merge] Built merged indexes for ${r.length} objects in ${(Date.now()-o)/1e3}s`),o=Date.now();let u=[],h=[],p=[],d=[];Object.values(l).forEach(g=>{let y=g.indexes;if(y.length<2)return;let E=r[y[0]],b=[],x=0,S=0,D=0,P=[];if(y.forEach(w=>{var H,he,C;let F=r[w],X=F.geometry.clone();if(E.material instanceof Tr&&X.deleteAttribute("lineDistance"),this.applyMatrix(X,F,e),X.userData.isLineSegments=F.isLineSegments===!0,b.push(X),s){let N=(he=(H=X.attributes)==null?void 0:H.position)==null?void 0:he.count,k=((C=X.index)==null?void 0:C.count)||0,G;E.isLine&&(X.boundingSphere||X.computeBoundingSphere(),G=X.boundingSphere.clone()),P.push({batchId:x,positionStart:S,positionCount:N,indexStart:D,indexCount:k,boundingSphere:G}),S+=N,D+=k,x++}}),b.length===0)return;let _;if(E.isMesh){let w=qo(b);if(!w)return;w.userData={},_=new Je(w,E.material),u.push(_)}else if(E.isLine){let w=this.mergeLineGeometries(b,s,E.material instanceof Rp||E.material instanceof Yt,P);if(!w)return;_=new oi(w,E.material),h.push(_)}else if(E.isPoints){let w=qo(b);if(!w)return;w.userData={},_=new rn(w,E.material),p.push(_)}_&&(s?_.userData.batches=P:_.userData=E.userData,_.userData.layerName=E.userData.layerName,_.name=`[Merged] ${E.name}`,_.matrixAutoUpdate=!1,_.renderOrder=E.renderOrder,_.layers=E.layers,_.visible=E.visible,y.forEach(w=>d.push(w))),b.forEach(w=>{Wt.releaseGeometryManually(w)}),b=[]}),ne.debug(`[Merge] Ran deepMerge() in ${(Date.now()-o)/1e3}s`);let f=a.removed;d.forEach(g=>{let y=r[g];f.push(y),i&&y.removeFromParent()});let m=a.added;return[...u,...h,...p].forEach(g=>{m.push(g),i&&e&&(e.add(g),g.updateWorldMatrix(!1,!1))}),this.mergeInfo.removedObjects+=d.length,this.mergeInfo.mergedMeshes+=u.length,this.mergeInfo.mergedLines+=h.length,this.mergeInfo.mergedPoints+=p.length,n&&e&&Qr.removeEmptyObjects(e),a}static applyMatrix(r,e,i){let n=e;for(DC.identity();n&&n!==i&&(DC.premultiply(n.matrix),!!n.parent);)n=n.parent;return DC.equals(zvt)?r:r.applyMatrix4(DC)}static mergeLineGeometries(r,e,i,n){let s;if(i)s=CC.mergeBufferGeometriesWithLinesToLineSegements(r,e,n);else{if(s=qo(r),!s)return;s.userData={};let a=[],o=0;r.forEach((l,c)=>{let u=l.attributes.position;if(!u)return;let h=l.index,p=l.userData.isLineSegments===!0,d=a.length;if(h)for(let f=0;f<h.count;f++){let m=h.array[f];p?a.push(o+m):f>0&&a.push(o+h.array[f-1],o+m)}else for(let f=0;f<u.count;f++)f>0&&(p?f%2===1&&a.push(o+f-1,o+f):a.push(o+f-1,o+f));o+=u.count,e&&n&&(n[c].indexStart=d,n[c].indexCount=a.length-d)}),s.setIndex(a)}return s}static mergeBufferGeometriesWithLinesToLineSegements(r,e,i){let n=new Set(Object.keys(r[0].attributes)),s={},a=new it,o=[],l=0;for(let c=0;c<r.length;++c){let u=r[c],h=u.userData.isLineSegments===!0;o.push(h),u.index&&(ne.debug(`[Merge] Geometry '${c}' contains index buffer, going to convert it to non-indexed.`),u=Wt.convertGeometryWithIndexedToNonIndexed(u));let p=0;for(let d in u.attributes){if(!n.has(d)){ne.error(`[Merge] mergeBufferGeometries() failed with geometry at index ${c}. All geometries must have compatible attributes; make sure ${d} attribute exists among all geometries, or in none of them`);return}s[d]||(s[d]=[]),s[d].push(u.attributes[d]),p++}if(p!==n.size){ne.error(`[Merge] mergeBufferGeometries() failed with geometry at index ${c}. Make sure all geometries have the same number of attributes.`);return}if(e&&i){let d=u.attributes.position;i[c].indexStart=l,i[c].indexCount=d.count,i[c].positionStart=l,i[c].positionCount=d.count,l+=d.count}}for(let c in s){let u=CC.mergeBufferAttributesWithLinesToLineSegements(s[c],o);if(!u){ne.error(`[Merge] mergeBufferGeometries() failed while trying to merge the ${c} attribute.`);return}a.setAttribute(c,u)}return a}static mergeBufferAttributesWithLinesToLineSegements(r,e){let i,n,s,a=0;for(let c=0;c<r.length;++c){let u=r[c];if(i===void 0&&(i=u.array.constructor),i!==u.array.constructor){ne.error("[Merge] mergeBufferAttributes() failed. THREE.BufferAttribute.array must be of consistent array types across matching attributes.");return}if(n===void 0&&(n=u.itemSize),n!==u.itemSize){ne.error("[Merge] mergeBufferAttributes() failed. THREE.BufferAttribute.itemSize must be consistent across matching attributes.");return}if(s===void 0&&(s=u.normalized),s!==u.normalized){ne.error("[Merge] mergeBufferAttributes() failed. THREE.BufferAttribute.normalized must be consistent across matching attributes.");return}let p=e[c]?0:u.count-2,d=u.count+p;a+=d*n}let o=new i(a),l=0;for(let c=0;c<r.length;++c){let u=e[c],h=r[c],p=u?0:h.count-2,d=h.count+p,f=h.itemSize,m=new i(d*f),g=0;for(let y=0;y<h.count;y++){let E=y*f,b=y!==0&&y!==h.count-1&&!u;for(let x=0;x<f;x++)m[g+x]=h.array[E+x],b&&(m[g+f+x]=h.array[E+x]);g+=b?2*f:f}o.set(m,l),l+=d*f}return new jt(o,n,s)}static removeFromArray(r,e){for(let i=r.length-1;i>=0;--i)if(r[i]===e){r.splice(i,1);return}}static removeObjectFromArray(r,e){for(let i=r.length-1;i>=0;--i)if(r[i]===e){r.splice(i,1);return}}static areGeometriesMergeable(r,e){if(!r||!e||r.type==="InstancedBufferGeometry"||e.type==="InstancedBufferGeometry"||!!r.index!=!!e.index)return!1;let i=Object.keys(r.attributes);if(i.length!==Object.keys(e.attributes).length)return!1;for(let n of i)if(!e.attributes[n])return!1;return!0}static areObjectsMergeable(r,e){if(r.layers.mask!==e.layers.mask||r.renderOrder!==e.renderOrder||r.visible!==e.visible||r.userData.layerName!==e.userData.layerName)return!1;if(r.type===e.type)return!0;let i=r,n=e;return i.isMesh&&n.isMesh||i.isLine&&n.isLine||i.isPoints&&n.isPoints}static isMergedMesh(r){return!!(r&&r.userData.batches)}static isFaceIndexInBatch(r,e,i){if(r.boundsTree){let s=r.index.getX(i*3);if(s>=e.positionStart&&s<e.positionStart+e.positionCount)return!0}else if(r.index){let n=e.indexStart/3,s=(e.indexStart+e.indexCount)/3-1;if(i>=n&&i<=s)return!0}else{let n=i*3;if(n>=e.positionStart&&n<e.positionStart+e.positionCount)return!0}return!1}static getBatchByFaceIndex(r,e){if(e<0){ne.error(`[Merge]: Invalid faceIndex: ${e}`);return}let i=r&&r.geometry&&r.userData.batches;if(i)for(let n=0;n<i.length;++n){let s=i[n];if(this.isFaceIndexInBatch(r.geometry,s,e))return s}}static getBatchIdByFaceIndex(r,e){let i=this.getBatchByFaceIndex(r,e);return i?i.batchId:-1}static getBatchByBatchId(r,e){let i=r&&r.geometry&&r.userData.batches;if(i)for(let n=0;n<i.length;++n){let s=i[n];if(s.batchId===e)return s}}static cloneGeometryForBatch(r,e){var m;let i=r&&r.geometry;if(!i)return;let n=i.attributes.position,s=n==null?void 0:n.array,a=(m=i.index)==null?void 0:m.array;if(!s||!a){ne.warn(`[Merge]: Unexpected position: ${s}, or index: ${a}!`);return}let o=new it,l=e.positionStart,c=e.positionStart+e.positionCount,u=i.attributes;for(let g in u){let y=u[g],E=y.itemSize,b=y.array.slice(l*E,c*E);o.setAttribute(g,new jt(b,E,y.normalized))}if(i.boundsTree&&(a=i.userData.originalIndex,!a)){ne.warn("[Merge] After building bvh, the original index data is not preserved !");return}let h=e.indexStart,p=e.indexStart+e.indexCount,d=[],f=0;for(let g=h;g<p&&g<a.length;++g)d[f++]=a[g]-e.positionStart;return o.setIndex(d),i.boundingBox&&o.computeBoundingBox(),i.boundingSphere&&o.computeBoundingSphere(),o}},ji=CC;ji.mergeInfo={removedObjects:0,mergedMeshes:0,mergedLines:0,mergedPoints:0,mergedUnknownTypeObjects:0,elapsedTime:0};var Wpe=Un(Bpe(),1);var Gpe={triangulate:function(t,r,e=2){let i=r&&r.length,n=i?r[0]*e:t.length,s=Vpe(t,0,n,e,!0),a=[];if(!s||s.next===s.prev)return a;let o,l,c,u,h,p,d;if(i&&(s=Syt(t,r,s,e)),t.length>80*e){o=c=t[0],l=u=t[1];for(let f=e;f<n;f+=e)h=t[f],p=t[f+1],h<o&&(o=h),p<l&&(l=p),h>c&&(c=h),p>u&&(u=p);d=Math.max(c-o,u-l),d=d!==0?32767/d:0}return Bx(s,a,e,o,l,d,0),a}};function Vpe(t,r,e,i,n){let s,a;if(n===Lyt(t,r,e,i)>0)for(s=r;s<e;s+=i)a=kpe(s,t[s],t[s+1],a);else for(s=e-i;s>=r;s-=i)a=kpe(s,t[s],t[s+1],a);return a&&BC(a,a.next)&&(Gx(a),a=a.next),a}function qg(t,r){if(!t)return t;r||(r=t);let e=t,i;do if(i=!1,!e.steiner&&(BC(e,e.next)||Pn(e.prev,e,e.next)===0)){if(Gx(e),e=r=e.prev,e===e.next)break;i=!0}else e=e.next;while(i||e!==r);return r}function Bx(t,r,e,i,n,s,a){if(!t)return;!a&&s&&Dyt(t,i,n,s);let o=t,l,c;for(;t.prev!==t.next;){if(l=t.prev,c=t.next,s?byt(t,i,n,s):Eyt(t)){r.push(l.i/e|0),r.push(t.i/e|0),r.push(c.i/e|0),Gx(t),t=c.next,o=c.next;continue}if(t=c,t===o){a?a===1?(t=xyt(qg(t),r,e),Bx(t,r,e,i,n,s,2)):a===2&&Iyt(t,r,e,i,n,s):Bx(qg(t),r,e,i,n,s,1);break}}}function Eyt(t){let r=t.prev,e=t,i=t.next;if(Pn(r,e,i)>=0)return!1;let n=r.x,s=e.x,a=i.x,o=r.y,l=e.y,c=i.y,u=n<s?n<a?n:a:s<a?s:a,h=o<l?o<c?o:c:l<c?l:c,p=n>s?n>a?n:a:s>a?s:a,d=o>l?o>c?o:c:l>c?l:c,f=i.next;for(;f!==r;){if(f.x>=u&&f.x<=p&&f.y>=h&&f.y<=d&&lT(n,o,s,l,a,c,f.x,f.y)&&Pn(f.prev,f,f.next)>=0)return!1;f=f.next}return!0}function byt(t,r,e,i){let n=t.prev,s=t,a=t.next;if(Pn(n,s,a)>=0)return!1;let o=n.x,l=s.x,c=a.x,u=n.y,h=s.y,p=a.y,d=o<l?o<c?o:c:l<c?l:c,f=u<h?u<p?u:p:h<p?h:p,m=o>l?o>c?o:c:l>c?l:c,g=u>h?u>p?u:p:h>p?h:p,y=MB(d,f,r,e,i),E=MB(m,g,r,e,i),b=t.prevZ,x=t.nextZ;for(;b&&b.z>=y&&x&&x.z<=E;){if(b.x>=d&&b.x<=m&&b.y>=f&&b.y<=g&&b!==n&&b!==a&&lT(o,u,l,h,c,p,b.x,b.y)&&Pn(b.prev,b,b.next)>=0||(b=b.prevZ,x.x>=d&&x.x<=m&&x.y>=f&&x.y<=g&&x!==n&&x!==a&&lT(o,u,l,h,c,p,x.x,x.y)&&Pn(x.prev,x,x.next)>=0))return!1;x=x.nextZ}for(;b&&b.z>=y;){if(b.x>=d&&b.x<=m&&b.y>=f&&b.y<=g&&b!==n&&b!==a&&lT(o,u,l,h,c,p,b.x,b.y)&&Pn(b.prev,b,b.next)>=0)return!1;b=b.prevZ}for(;x&&x.z<=E;){if(x.x>=d&&x.x<=m&&x.y>=f&&x.y<=g&&x!==n&&x!==a&&lT(o,u,l,h,c,p,x.x,x.y)&&Pn(x.prev,x,x.next)>=0)return!1;x=x.nextZ}return!0}function xyt(t,r,e){let i=t;do{let n=i.prev,s=i.next.next;!BC(n,s)&&zpe(n,i,i.next,s)&&kx(n,s)&&kx(s,n)&&(r.push(n.i/e|0),r.push(i.i/e|0),r.push(s.i/e|0),Gx(i),Gx(i.next),i=t=s),i=i.next}while(i!==t);return qg(i)}function Iyt(t,r,e,i,n,s){let a=t;do{let o=a.next.next;for(;o!==a.prev;){if(a.i!==o.i&&Oyt(a,o)){let l=jpe(a,o);a=qg(a,a.next),l=qg(l,l.next),Bx(a,r,e,i,n,s,0),Bx(l,r,e,i,n,s,0);return}o=o.next}a=a.next}while(a!==t)}function Syt(t,r,e,i){let n=[],s,a,o,l,c;for(s=0,a=r.length;s<a;s++)o=r[s]*i,l=s<a-1?r[s+1]*i:t.length,c=Vpe(t,o,l,i,!1),c===c.next&&(c.steiner=!0),n.push(Ayt(c));for(n.sort(_yt),s=0;s<n.length;s++)e=wyt(n[s],e);return e}function _yt(t,r){return t.x-r.x}function wyt(t,r){let e=Ryt(t,r);if(!e)return r;let i=jpe(e,t);return qg(i,i.next),qg(e,e.next)}function Ryt(t,r){let e=r,i=-1/0,n,s=t.x,a=t.y;do{if(a<=e.y&&a>=e.next.y&&e.next.y!==e.y){let p=e.x+(a-e.y)*(e.next.x-e.x)/(e.next.y-e.y);if(p<=s&&p>i&&(i=p,n=e.x<e.next.x?e:e.next,p===s))return n}e=e.next}while(e!==r);if(!n)return null;let o=n,l=n.x,c=n.y,u=1/0,h;e=n;do s>=e.x&&e.x>=l&&s!==e.x&&lT(a<c?s:i,a,l,c,a<c?i:s,a,e.x,e.y)&&(h=Math.abs(a-e.y)/(s-e.x),kx(e,t)&&(h<u||h===u&&(e.x>n.x||e.x===n.x&&Myt(n,e)))&&(n=e,u=h)),e=e.next;while(e!==o);return n}function Myt(t,r){return Pn(t.prev,t,r.prev)<0&&Pn(r.next,t,t.next)<0}function Dyt(t,r,e,i){let n=t;do n.z===0&&(n.z=MB(n.x,n.y,r,e,i)),n.prevZ=n.prev,n.nextZ=n.next,n=n.next;while(n!==t);n.prevZ.nextZ=null,n.prevZ=null,Cyt(n)}function Cyt(t){let r,e,i,n,s,a,o,l,c=1;do{for(e=t,t=null,s=null,a=0;e;){for(a++,i=e,o=0,r=0;r<c&&(o++,i=i.nextZ,!!i);r++);for(l=c;o>0||l>0&&i;)o!==0&&(l===0||!i||e.z<=i.z)?(n=e,e=e.nextZ,o--):(n=i,i=i.nextZ,l--),s?s.nextZ=n:t=n,n.prevZ=s,s=n;e=i}s.nextZ=null,c*=2}while(a>1);return t}function MB(t,r,e,i,n){return t=(t-e)*n|0,r=(r-i)*n|0,t=(t|t<<8)&16711935,t=(t|t<<4)&252645135,t=(t|t<<2)&858993459,t=(t|t<<1)&1431655765,r=(r|r<<8)&16711935,r=(r|r<<4)&252645135,r=(r|r<<2)&858993459,r=(r|r<<1)&1431655765,t|r<<1}function Ayt(t){let r=t,e=t;do(r.x<e.x||r.x===e.x&&r.y<e.y)&&(e=r),r=r.next;while(r!==t);return e}function lT(t,r,e,i,n,s,a,o){return(n-a)*(r-o)>=(t-a)*(s-o)&&(t-a)*(i-o)>=(e-a)*(r-o)&&(e-a)*(s-o)>=(n-a)*(i-o)}function Oyt(t,r){return t.next.i!==r.i&&t.prev.i!==r.i&&!Pyt(t,r)&&(kx(t,r)&&kx(r,t)&&Nyt(t,r)&&(Pn(t.prev,t,r.prev)||Pn(t,r.prev,r))||BC(t,r)&&Pn(t.prev,t,t.next)>0&&Pn(r.prev,r,r.next)>0)}function Pn(t,r,e){return(r.y-t.y)*(e.x-r.x)-(r.x-t.x)*(e.y-r.y)}function BC(t,r){return t.x===r.x&&t.y===r.y}function zpe(t,r,e,i){let n=UC(Pn(t,r,e)),s=UC(Pn(t,r,i)),a=UC(Pn(e,i,t)),o=UC(Pn(e,i,r));return!!(n!==s&&a!==o||n===0&&HC(t,e,r)||s===0&&HC(t,i,r)||a===0&&HC(e,t,i)||o===0&&HC(e,r,i))}function HC(t,r,e){return r.x<=Math.max(t.x,e.x)&&r.x>=Math.min(t.x,e.x)&&r.y<=Math.max(t.y,e.y)&&r.y>=Math.min(t.y,e.y)}function UC(t){return t>0?1:t<0?-1:0}function Pyt(t,r){let e=t;do{if(e.i!==t.i&&e.next.i!==t.i&&e.i!==r.i&&e.next.i!==r.i&&zpe(e,e.next,t,r))return!0;e=e.next}while(e!==t);return!1}function kx(t,r){return Pn(t.prev,t,t.next)<0?Pn(t,r,t.next)>=0&&Pn(t,t.prev,r)>=0:Pn(t,r,t.prev)<0||Pn(t,t.next,r)<0}function Nyt(t,r){let e=t,i=!1,n=(t.x+r.x)/2,s=(t.y+r.y)/2;do e.y>s!=e.next.y>s&&e.next.y!==e.y&&n<(e.next.x-e.x)*(s-e.y)/(e.next.y-e.y)+e.x&&(i=!i),e=e.next;while(e!==t);return i}function jpe(t,r){let e=new DB(t.i,t.x,t.y),i=new DB(r.i,r.x,r.y),n=t.next,s=r.prev;return t.next=r,r.prev=t,e.next=n,n.prev=e,i.next=e,e.prev=i,s.next=i,i.prev=s,i}function kpe(t,r,e,i){let n=new DB(t,r,e);return i?(n.next=i.next,n.prev=i,i.next.prev=n,i.next=n):(n.prev=n,n.next=n),n}function Gx(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ)}function DB(t,r,e){this.i=t,this.x=r,this.y=e,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}function Lyt(t,r,e,i){let n=0;for(let s=r,a=e-i;s<e;s+=i)n+=(t[a]-t[s])*(t[s+1]+t[a+1]),a=s;return n}var Fyt=.01,Mf=class{static getFaces(r){let e=r.map(s=>s.toArray()).reduce((s,a)=>(s.push(...a),s),[]),i=[];return Gpe.triangulate(e,[],3).forEach(s=>i.push(s)),i}static arePointsCoplanar(r){if(r.length<4)return!0;let e=r[1].clone().sub(r[0]),n=r[2].clone().sub(r[0]).cross(e).normalize();for(let s=3;s<r.length;s++)if(r[s].clone().sub(r[0]).projectOnVector(n).length()>Fyt)return!1;return!0}static isSelfIntersecting(r){let e=r.map(n=>n.toArray().slice(0,-1));return(0,Wpe.default)(e).length>0}};var CB=class{constructor(r,e,i=void 0,n=CB.DEFAULT_SCALE){this.isExplodeUp=!1;this.scene=r,this.objectId=e,e||console.log(`[EXP] Invalid objectId: ${e}`),this.scale=n,n<=0&&console.log(`[EXP] Invalid scale: ${n}`),i?this.position=i:(this.position=new A,this.getObjectCenter(this.position))}explode(){if(!this.objectId||!this.position||!this.scale){console.log(`[EXP] Invalid objectId: ${this.objectId}, or position: ${this.position}, or this.power: ${this.scale}`);return}let r=this.scene.getObjectById(this.objectId);if(!r||!r.children){console.log("[EXP] No children to explode!");return}console.log(`[EXP] Exploding ${r.name} at: ${this.position.x}, ${this.position.y}, ${this.position.z}`),this.explodeObject(r)}explodeObject(r){r.geometry?this.explodeLeafObject(r):r.children.length>0?r.children.forEach(e=>this.explodeObject(e)):this.explodeLeafObject(r)}explodeLeafObject(r){if(r.geometry){if(r.userData.originalPosition=r.position.clone(),r instanceof tn){let e=new Ue,i=new A,n=new Or,s=new A;for(let a=0;a<r.count;++a){if(r.getMatrixAt(a,e),e.decompose(i,n,s),this.isExplodeUp){let o=(i.z-this.position.z)*this.scale;i.setZ(i.z+o)}else{let o=i.clone().sub(this.position);i.addScaledVector(o,this.scale)}e.setPosition(i),r.setMatrixAt(a,e)}r.matrixWorldNeedsUpdate=!0,r.instanceMatrix.needsUpdate=!0}else{let e=r.position.clone();if(r instanceof Je&&r.geometry&&r.geometry.boundingBox?r.geometry.boundingBox.getCenter(e):console.warn(`[EXP] Failed to get center for ${r.type} '${r.name||r.id}', will use its position as center`),this.isExplodeUp){let i=(e.z-this.position.z)*this.scale;r.position.setZ(e.z+i)}else{let i=e.sub(this.position);r.position.addScaledVector(i,this.scale)}}r.updateMatrix()}}unexplode(){let r=this.scene.getObjectById(this.objectId);if(!r||!r.children){console.log("[EXP] No children to explode!");return}console.log(`[EXP] Unexploding ${r.name} at: ${this.position.x}, ${this.position.y}, ${this.position.z}`),this.unexplodeObject(r)}unexplodeObject(r){r.geometry?this.unexplodeLeafObject(r):r.children.length>0?r.children.forEach(e=>this.unexplodeObject(e)):this.unexplodeLeafObject(r)}unexplodeLeafObject(r){let e=r.userData.originalPosition;e&&(r.position.set(e.x,e.y,e.z),r.updateMatrix(),delete r.userData.originalPosition)}setOnlyExplodeUp(r){this.isExplodeUp=r}getObjectCenter(r){let e=new Ot;if(!this.objectId){console.log(`[EXP] Invalid objectId: ${this.objectId}`);return}let i=this.scene.getObjectById(this.objectId);if(!i||!i.children){console.log("[EXP] No children to explode!");return}i.traverse(n=>{e.expandByObject(n)}),e.getCenter(r)}},Vx=CB;Vx.DEFAULT_SCALE=1;var vn=class{static getVisibleObjectBoundingBox(r){let e=new Ot;return r.traverseVisible(i=>{i instanceof Je&&i.userData.selectable!==!1&&e.expandByObject(i)}),e}static getObjectsBoundingBox(r,e,i){let n=new Ot;return e.forEach(s=>{let a=r.getObjectById(s);if(a){let o=vn.getBoundingBox(a,i);o.isEmpty()||n.union(o)}}),n}static getBoundingBox(r,e=!0){let i=new Ot;if(r instanceof tn)return vn.getInstancedMeshBoundingBox(r);if(r.children.length===0)return i.expandByObject(r),i;let n=r.children.length,s=1;n>20&&(s=3),n>100&&(s=5),n>200&&(s=10),n>1e3&&(s=100),r.updateMatrixWorld(!1);for(let a=0;a<n;++a){let o=r.children[a];if(!e||a%s===0)if(o.updateMatrix(),o instanceof tn){let l=vn.getInstancedMeshBoundingBox(o);l.isEmpty()||i.union(l)}else if(St.isMatrixValid(o.matrixWorld)){let l=vn.getBoundingBox(o);l.isEmpty()||i.union(l)}else console.warn(`[SceneUtils] Found object(${o.type}) with invalid matrix: ${o.matrixWorld.elements}`)}return r.geometry&&i.expandByObject(r),i}static getInstancedMeshBoundingBox(r){let e=new Ot,i=new Ue;for(let n=0;n<r.count;++n){r.getMatrixAt(n,i);let s=r.geometry.clone();if(s.boundingBox){let a=s.boundingBox.applyMatrix4(i);!a.isEmpty()&&St.isBoxValid(a)&&e.union(a)}}return e.applyMatrix4(r.matrixWorld),e}static explodeObject(r,e,i,n=!1){i[r.id]&&i[r.id].unexplode();let s=new A;vn.getObjectCenter(r,s);let a=new Vx(e,r.id,s);a.setOnlyExplodeUp(n),a.explode(),i[r.id]=a}static explodeObjects(r,e,i,n=!1){return r.traverse(s=>{i.find(a=>a===s.id)&&(s.children&&s.children.length===1?vn.explodeObject(s.children[0],r,e,n):vn.explodeObject(s,r,e,n))}),e}static unexplodeObjects(r,e){r.traverse(i=>{let n=e[i.id];n&&(n.unexplode(),delete e[i.id])})}static getObjectCenter(r,e){let i=vn.getBoundingBox(r);i.getCenter(e),e.y=i.min.y}};var qu=class{static setMaterialSection(r,e,i=!1,n=!1){let s=i&&r.clippingPlanes?r.clippingPlanes:[];s.push(...e),r.clippingPlanes=s,r.clipIntersection=n}static removeSection(r){r&&r.traverse(e=>{let i=e.material;Array.isArray(i)?i.forEach(n=>{n.clippingPlanes=void 0}):i&&(i.clippingPlanes=void 0)})}static addSection(r,e,i=!1,n=!1){r&&r.traverse(s=>{let a=s.material;Array.isArray(a)?a.forEach(o=>{qu.setMaterialSection(o,e,i,n)}):a&&qu.setMaterialSection(a,e,i,n)})}static generateSectionPlanesByBox(r){let e=r.min,i=r.max;return[new Ei(new A(0,-1,0),i.y),new Ei(new A(0,1,0),-e.y),new Ei(new A(1,0,0),-e.x),new Ei(new A(-1,0,0),i.x)]}static generateSectionPlanesByPoints(r,e=!0){let i=r.length;if(i<2)return;let n=[];for(let s=0;s<i-1;s++){let a=r[s],o=r[(s+1)%i],l=new Ei;l.setFromCoplanarPoints(new A(a.x,a.y,-1),new A(a.x,a.y,0),new A(o.x,o.y,0)),e||l.negate(),n.push(l)}return n}};var Zpe=Un(qpe(),1);var AB=new A,Ype=new A,GC=class{modify(r,e){r=r.clone();let i=r.attributes;for(let p in i)p!=="position"&&r.deleteAttribute(p);r=Tpe(r);let n=[],s=[],a=r.getAttribute("position");for(let p=0;p<a.count;p++){let d=new A().fromBufferAttribute(a,p),f=new OB(d);n.push(f)}let o=r.getIndex();if(o!==null)for(let p=0;p<o.count;p+=3){let d=o.getX(p),f=o.getX(p+1),m=o.getX(p+2),g=new VC(n[d],n[f],n[m],d,f,m);s.push(g)}else for(let p=0;p<a.count;p+=3){let d=p,f=p+1,m=p+2,g=new VC(n[d],n[f],n[m],d,f,m);s.push(g)}for(let p=0,d=n.length;p<d;p++)$pe(n[p]);let l,c=e;for(;c--;){if(l=Gyt(n),!l){console.log("THREE.SimplifyModifier: No next vertex");break}kyt(n,s,l,l.collapseNeighbor)}let u=new it,h=[];o=[];for(let p=0;p<n.length;p++){let d=n[p].position;h.push(d.x,d.y,d.z),n[p].id=p}for(let p=0;p<s.length;p++){let d=s[p];o.push(d.v1.id,d.v2.id,d.v3.id)}return u.setAttribute("position",new ct(h,3)),u.setIndex(o),u}};function Hyt(t,r){t.indexOf(r)===-1&&t.push(r)}function Yg(t,r){let e=t.indexOf(r);e>-1&&t.splice(e,1)}function Uyt(t,r){let e=r.position.distanceTo(t.position),i=0,n=[];for(let o=0,l=t.faces.length;o<l;o++){let c=t.faces[o];c.hasVertex(r)&&n.push(c)}for(let o=0,l=t.faces.length;o<l;o++){let c=1,u=t.faces[o];for(let h=0;h<n.length;h++){let p=n[h],d=u.normal.dot(p.normal);c=Math.min(c,(1.001-d)/2)}i=Math.max(i,c)}let s=0;return n.length<2&&(i=1),e*i+s}function $pe(t){if(t.neighbors.length===0){t.collapseNeighbor=null,t.collapseCost=-.01;return}t.collapseCost=1e5,t.collapseNeighbor=null;for(let r=0;r<t.neighbors.length;r++){let e=Uyt(t,t.neighbors[r]);t.collapseNeighbor||(t.collapseNeighbor=t.neighbors[r],t.collapseCost=e,t.minCost=e,t.totalCost=0,t.costCount=0),t.costCount++,t.totalCost+=e,e<t.minCost&&(t.collapseNeighbor=t.neighbors[r],t.minCost=e)}t.collapseCost=t.totalCost/t.costCount}function Xpe(t,r){for(console.assert(t.faces.length===0);t.neighbors.length;){let e=t.neighbors.pop();Yg(e.neighbors,t)}Yg(r,t)}function Byt(t,r){Yg(r,t),t.v1&&Yg(t.v1.faces,t),t.v2&&Yg(t.v2.faces,t),t.v3&&Yg(t.v3.faces,t);let e=[t.v1,t.v2,t.v3];for(let i=0;i<3;i++){let n=e[i],s=e[(i+1)%3];!n||!s||(n.removeIfNonNeighbor(s),s.removeIfNonNeighbor(n))}}function kyt(t,r,e,i){if(!i){Xpe(e,t);return}let n=[];for(let s=0;s<e.neighbors.length;s++)n.push(e.neighbors[s]);for(let s=e.faces.length-1;s>=0;s--)e.faces[s]&&e.faces[s].hasVertex(i)&&Byt(e.faces[s],r);for(let s=e.faces.length-1;s>=0;s--)e.faces[s].replaceVertex(e,i);Xpe(e,t);for(let s=0;s<n.length;s++)$pe(n[s])}function Gyt(t){let r=t[0];for(let e=0;e<t.length;e++)t[e].collapseCost<r.collapseCost&&(r=t[e]);return r}var VC=class{constructor(r,e,i,n,s,a){this.a=n,this.b=s,this.c=a,this.v1=r,this.v2=e,this.v3=i,this.normal=new A,this.computeNormal(),r.faces.push(this),r.addUniqueNeighbor(e),r.addUniqueNeighbor(i),e.faces.push(this),e.addUniqueNeighbor(r),e.addUniqueNeighbor(i),i.faces.push(this),i.addUniqueNeighbor(r),i.addUniqueNeighbor(e)}computeNormal(){let r=this.v1.position,e=this.v2.position,i=this.v3.position;AB.subVectors(i,e),Ype.subVectors(r,e),AB.cross(Ype).normalize(),this.normal.copy(AB)}hasVertex(r){return r===this.v1||r===this.v2||r===this.v3}replaceVertex(r,e){r===this.v1?this.v1=e:r===this.v2?this.v2=e:r===this.v3&&(this.v3=e),Yg(r.faces,this),e.faces.push(this),r.removeIfNonNeighbor(this.v1),this.v1.removeIfNonNeighbor(r),r.removeIfNonNeighbor(this.v2),this.v2.removeIfNonNeighbor(r),r.removeIfNonNeighbor(this.v3),this.v3.removeIfNonNeighbor(r),this.v1.addUniqueNeighbor(this.v2),this.v1.addUniqueNeighbor(this.v3),this.v2.addUniqueNeighbor(this.v1),this.v2.addUniqueNeighbor(this.v3),this.v3.addUniqueNeighbor(this.v1),this.v3.addUniqueNeighbor(this.v2),this.computeNormal()}},OB=class{constructor(r){this.position=r,this.id=-1,this.faces=[],this.neighbors=[],this.collapseCost=0,this.collapseNeighbor=null}addUniqueNeighbor(r){Hyt(this.neighbors,r)}removeIfNonNeighbor(r){let e=this.neighbors,i=this.faces,n=e.indexOf(r);if(n!==-1){for(let s=0;s<i.length;s++)if(i[s].hasVertex(r))return;e.splice(n,1)}}};var zx=class{static simplifyGeometry(r,e){let i=this.getNumberOfVerticesToRemove(r,e);return i>0?new GC().modify(r,i):r}static simplifyPoints(r,e=1){let i=(0,Zpe.default)(r,e);return this.simplifiedInfo.total+=r.length,this.simplifiedInfo.removed+=r.length-i.length,i}static getNumberOfVerticesToRemove(r,e){let i=0;r instanceof it&&r.index&&(i=r.attributes.position.count);let n=Math.floor(i*e);return i<20?0:n}};zx.simplifiedInfo={total:0,removed:0};var Xg=class{static createSkyOfGradientRamp(r=4e3,e=32,i=15,n=new A,s=new A(0,.7,.5)){let a=this.COLOR_TEMPLATES.default,o={topColor:{value:new Ve(a[0])},skylineColor:{value:new Ve(a[1])},bottomColor:{value:new Ve(a[2])},offset:{value:400},exponent:{value:.9},skyCenter:{value:n||new A},sunDirection:{value:s.normalize()}},l=new ro(r,e,i),c=new Yt({uniforms:o,vertexShader:this.vertexShader,fragmentShader:this.fragmentShader,side:Gn}),u=new Je(l,c);return u.matrixAutoUpdate=!1,u.name=this.NAME,u.userData.selectable=!1,u.layers.set(11),u}static createSkyOfGradientRampByBoundingBox(r){let i=(r.max.x-r.min.x+(r.max.y-r.min.y)+(r.max.z-r.min.z))*2;i<Xg.MIN_SKY_RADIUS?i=Xg.MIN_SKY_RADIUS:i>Xg.MAX_SKY_RADIUS&&(i=Xg.MAX_SKY_RADIUS);let n=new A;r.getCenter(n);let s=Xg.createSkyOfGradientRamp(i,void 0,void 0,n);return s.position.set(n.x,0,n.z),s}static createSkyFromTextures(r){return ot(this,null,function*(){let e=new fx;return new Promise(i=>{e.load(r,n=>i(n))})})}},Xo=Xg;Xo.NAME="SKYBOX",Xo.MIN_SKY_RADIUS=4e3,Xo.MAX_SKY_RADIUS=2e4,Xo.vertexShader=`
|
||
varying vec3 vWorldPosition;
|
||
void main() {
|
||
vec4 worldPosition = modelMatrix * vec4( position, 1.0 );
|
||
vWorldPosition = worldPosition.xyz;
|
||
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
|
||
}`,Xo.fragmentShader=`
|
||
uniform vec3 topColor;
|
||
uniform vec3 skylineColor;
|
||
uniform vec3 bottomColor;
|
||
uniform float offset;
|
||
uniform float exponent;
|
||
uniform vec3 skyCenter;
|
||
uniform vec3 sunDirection;
|
||
varying vec3 vWorldPosition;
|
||
// Used to find the position to draw the sun. Sun size is bigger when this value is smaller
|
||
const float sunDirectionDotThreshold = 0.98;
|
||
|
||
void main() {
|
||
vec3 position = vec3(vWorldPosition.x - skyCenter.x, vWorldPosition.y - skyCenter.y, vWorldPosition.z - skyCenter.z);
|
||
vec3 normalizedPosition = normalize( position + offset );
|
||
float h = normalizedPosition.y;
|
||
vec3 color;
|
||
if (h > 0.0) {
|
||
color = mix( skylineColor, topColor, pow( h, exponent ) );
|
||
|
||
// draw the sun
|
||
float dotResult = dot(sunDirection, normalizedPosition);
|
||
if (dotResult > sunDirectionDotThreshold) {
|
||
const float sunSize = 1.0 - sunDirectionDotThreshold; // maximum sun size
|
||
const vec3 sunColor = vec3(1.0, 1.0, 1.0);
|
||
color = mix(color, sunColor, pow((dotResult + sunSize - 1.0) / sunSize, 3.0));
|
||
}
|
||
} else {
|
||
color = mix( skylineColor, bottomColor, pow( -h, exponent ) );
|
||
}
|
||
gl_FragColor = vec4(color , 1.0);
|
||
}`,Xo.COLOR_TEMPLATES={default:[8828661,16777215,10066329],blueSky:[11189247,16777215,6974058],boardwalk:[14413823,16777215,15459804]};var zC=class extends Ng{constructor(r){super(r),this.type=Go}parse(r){let o=function(b,x){switch(b){case 1:console.error("THREE.RGBELoader Read Error: "+(x||""));break;case 2:console.error("THREE.RGBELoader Write Error: "+(x||""));break;case 3:console.error("THREE.RGBELoader Bad File Format: "+(x||""));break;default:case 4:console.error("THREE.RGBELoader: Error: "+(x||""))}return-1},h=`
|
||
`,p=function(b,x,S){x=x||1024;let P=b.pos,_=-1,w=0,F="",X=String.fromCharCode.apply(null,new Uint16Array(b.subarray(P,P+128)));for(;0>(_=X.indexOf(h))&&w<x&&P<b.byteLength;)F+=X,w+=X.length,P+=128,X+=String.fromCharCode.apply(null,new Uint16Array(b.subarray(P,P+128)));return-1<_?(S!==!1&&(b.pos+=w+_+1),F+X.slice(0,_)):!1},d=function(b){let x=/^#\?(\S+)/,S=/^\s*GAMMA\s*=\s*(\d+(\.\d+)?)\s*$/,D=/^\s*EXPOSURE\s*=\s*(\d+(\.\d+)?)\s*$/,P=/^\s*FORMAT=(\S+)\s*$/,_=/^\s*\-Y\s+(\d+)\s+\+X\s+(\d+)\s*$/,w={valid:0,string:"",comments:"",programtype:"RGBE",format:"",gamma:1,exposure:1,width:0,height:0},F,X;if(b.pos>=b.byteLength||!(F=p(b)))return o(1,"no header found");if(!(X=F.match(x)))return o(3,"bad initial token");for(w.valid|=1,w.programtype=X[1],w.string+=F+`
|
||
`;F=p(b),F!==!1;){if(w.string+=F+`
|
||
`,F.charAt(0)==="#"){w.comments+=F+`
|
||
`;continue}if((X=F.match(S))&&(w.gamma=parseFloat(X[1])),(X=F.match(D))&&(w.exposure=parseFloat(X[1])),(X=F.match(P))&&(w.valid|=2,w.format=X[1]),(X=F.match(_))&&(w.valid|=4,w.height=parseInt(X[1],10),w.width=parseInt(X[2],10)),w.valid&2&&w.valid&4)break}return w.valid&2?w.valid&4?w:o(3,"missing image size specifier"):o(3,"missing format specifier")},f=function(b,x,S){let D=x;if(D<8||D>32767||b[0]!==2||b[1]!==2||b[2]&128)return new Uint8Array(b);if(D!==(b[2]<<8|b[3]))return o(3,"wrong scanline width");let P=new Uint8Array(4*x*S);if(!P.length)return o(4,"unable to allocate buffer space");let _=0,w=0,F=4*D,X=new Uint8Array(4),H=new Uint8Array(F),he=S;for(;he>0&&w<b.byteLength;){if(w+4>b.byteLength)return o(1);if(X[0]=b[w++],X[1]=b[w++],X[2]=b[w++],X[3]=b[w++],X[0]!=2||X[1]!=2||(X[2]<<8|X[3])!=D)return o(3,"bad rgbe scanline format");let C=0,N;for(;C<F&&w<b.byteLength;){N=b[w++];let G=N>128;if(G&&(N-=128),N===0||C+N>F)return o(3,"bad scanline data");if(G){let U=b[w++];for(let j=0;j<N;j++)H[C++]=U}else H.set(b.subarray(w,w+N),C),C+=N,w+=N}let k=D;for(let G=0;G<k;G++){let U=0;P[_]=H[G+U],U+=D,P[_+1]=H[G+U],U+=D,P[_+2]=H[G+U],U+=D,P[_+3]=H[G+U],_+=4}he--}return P},m=function(b,x,S,D){let P=b[x+3],_=Math.pow(2,P-128)/255;S[D+0]=b[x+0]*_,S[D+1]=b[x+1]*_,S[D+2]=b[x+2]*_,S[D+3]=1},g=function(b,x,S,D){let P=b[x+3],_=Math.pow(2,P-128)/255;S[D+0]=zy.toHalfFloat(Math.min(b[x+0]*_,65504)),S[D+1]=zy.toHalfFloat(Math.min(b[x+1]*_,65504)),S[D+2]=zy.toHalfFloat(Math.min(b[x+2]*_,65504)),S[D+3]=zy.toHalfFloat(1)},y=new Uint8Array(r);y.pos=0;let E=d(y);if(E!==-1){let b=E.width,x=E.height,S=f(y.subarray(y.pos),b,x);if(S!==-1){let D,P,_;switch(this.type){case _a:_=S.length/4;let w=new Float32Array(_*4);for(let X=0;X<_;X++)m(S,X*4,w,X*4);D=w,P=_a;break;case Go:_=S.length/4;let F=new Uint16Array(_*4);for(let X=0;X<_;X++)g(S,X*4,F,X*4);D=F,P=Go;break;default:console.error("THREE.RGBELoader: unsupported type: ",this.type);break}return{width:b,height:x,data:D,header:E.string,gamma:E.gamma,exposure:E.exposure,type:P}}}return null}setDataType(r){return this.type=r,this}load(r,e,i,n){function s(a,o){switch(a.type){case _a:case Go:a.encoding=wl,a.minFilter=ai,a.magFilter=ai,a.generateMipmaps=!1,a.flipY=!0;break}e&&e(a,o)}return super.load(r,s,i,n)}};var Lc=class{static createEnvTexture(r,e){return ot(this,null,function*(){let i=new zC;return new Promise(n=>{i.load(e,s=>{if(r){let a=r.fromEquirectangular(s).texture;r.dispose(),n(a)}})})})}static createEnvTextureFromDataArray(s){return ot(this,arguments,function*(r,e=this.HDR_CITY_STREET_64x32,i=64,n=32){if(r){let a=new _l(e,i,n);a.flipY=!0,a.magFilter=ai,a.minFilter=ai,a.type=Go,a.version=1;let o=r.fromEquirectangular(a).texture;return r.dispose(),Promise.resolve(o)}return Promise.reject("Invalid pmremGenerator!")})}};Lc.HDR_CITY_STREET_64x32=Uint16Array.from([11910,12340,12797,15360,11926,12348,12806,15360,11958,12364,12814,15360,11974,12380,12830,15360,11958,12364,12822,15360,11926,12348,12797,15360,11878,12324,12773,15360,11830,12308,12749,15360,11798,12292,12733,15360,11782,12279,12725,15360,11765,12263,12709,15360,11749,12247,12701,15360,11733,12231,12701,15360,11701,12215,12693,15360,11685,12199,12685,15360,11685,12199,12685,15360,11701,12215,12693,15360,11717,12231,12701,15360,11733,12247,12709,15360,11749,12263,12717,15360,11749,12279,12717,15360,11765,12279,12725,15360,11765,12279,12725,15360,11765,12292,12725,15360,11798,12300,12733,15360,11830,12316,12749,15360,11846,12324,12757,15360,11894,12340,12781,15360,11926,12356,12797,15360,11942,12356,12797,15360,11926,12348,12789,15360,11926,12348,12789,15360,11942,12356,12797,15360,11942,12356,12797,15360,11942,12348,12806,15360,11942,12356,12806,15360,11942,12356,12814,15360,11958,12372,12830,15360,11974,12372,12830,15360,11974,12372,12838,15360,11990,12388,12854,15360,12055,12420,12886,15360,12119,12452,12918,15360,12167,12476,12950,15360,12231,12500,12982,15360,12263,12516,12998,15360,12231,12500,12974,15360,12199,12484,12958,15360,12199,12484,12958,15360,12199,12492,12966,15360,12247,12508,12982,15360,12247,12508,12990,15360,12231,12500,12982,15360,12199,12484,12966,15360,12167,12468,12942,15360,12119,12444,12918,15360,12087,12436,12902,15360,12055,12420,12886,15360,12055,12412,12878,15360,12039,12412,12878,15360,12022,12396,12862,15360,12006,12388,12846,15360,11958,12364,12830,15360,11910,12340,12806,15360,12119,12508,13103,15360,12087,12484,13071,15360,12055,12468,13046,15360,12006,12436,13006,15360,11926,12396,12958,15360,11878,12364,12926,15360,11846,12348,12894,15360,11782,12308,12854,15360,11749,12292,12830,15360,11717,12263,12814,15360,11685,12247,12806,15360,11669,12215,12789,15360,11685,12231,12789,15360,11701,12247,12797,15360,11701,12247,12806,15360,11717,12263,12814,15360,11749,12292,12822,15360,11782,12308,12838,15360,11798,12316,12846,15360,11814,12332,12862,15360,11846,12340,12870,15360,11862,12348,12878,15360,11846,12340,12870,15360,11846,12340,12862,15360,11878,12356,12886,15360,11910,12372,12910,15360,11942,12396,12934,15360,11958,12412,12958,15360,12039,12452,12998,15360,12071,12468,13022,15360,12039,12452,12998,15360,12039,12452,12998,15360,12006,12444,13006,15360,11974,12436,12998,15360,11942,12412,12982,15360,11926,12396,12974,15360,11926,12404,12974,15360,11958,12420,12998,15360,12006,12452,13038,15360,12055,12476,13071,15360,12039,12476,13079,15360,12087,12508,13127,15360,12247,12597,13231,15360,12388,12693,13332,15360,12420,12741,13364,15360,12436,12757,13372,15360,12468,12773,13380,15360,12500,12806,13388,15360,12516,12822,13404,15360,12629,12934,13452,15360,12741,13046,13508,15360,12806,13095,13532,15360,12757,13046,13516,15360,12645,12950,13460,15360,12565,12870,13428,15360,12532,12838,13412,15360,12549,12854,13412,15360,12516,12838,13396,15360,12452,12757,13356,15360,12420,12725,13340,15360,12404,12709,13332,15360,12372,12677,13316,15360,12279,12589,13207,15360,12135,12516,13119,15360,12388,12709,13348,15360,12247,12581,13223,15360,12055,12476,13087,15360,11910,12388,12982,15360,11733,12308,12886,15360,11669,12247,12846,15360,11621,12199,12814,15360,11541,12103,12765,15360,11492,12055,12733,15360,11508,12055,12733,15360,11476,12022,12717,15360,11525,12055,12725,15360,11589,12135,12757,15360,11669,12199,12765,15360,11765,12292,12814,15360,11862,12348,12886,15360,11910,12372,12910,15360,12006,12420,12966,15360,12071,12452,12998,15360,12119,12476,13022,15360,12167,12492,13046,15360,12183,12500,13063,15360,12199,12524,13079,15360,12308,12589,13151,15360,12300,12581,13151,15360,12167,12516,13087,15360,12087,12468,13030,15360,12022,12444,13014,15360,11990,12420,12990,15360,11974,12420,12990,15360,11974,12420,12990,15360,11990,12436,13014,15360,11990,12444,13030,15360,12103,12500,13103,15360,12087,12508,13111,15360,12039,12484,13103,15360,12039,12476,13103,15360,11942,12436,13054,15360,11974,12452,13087,15360,12039,12492,13135,15360,12103,12532,13199,15360,12183,12581,13263,15360,12308,12661,13340,15360,12484,12822,13436,15360,12613,12918,13484,15360,12725,13046,13540,15360,13046,13332,13677,15360,13143,13380,13717,15360,13223,13420,13741,15360,13396,13540,13862,15360,13436,13589,13902,15360,13484,13629,13942,15360,13468,13621,13934,15360,13412,13564,13878,15360,13372,13524,13846,15360,13287,13452,13781,15360,13223,13428,13749,15360,13340,13492,13805,15360,13239,13428,13749,15360,13095,13364,13685,15360,12918,13223,13597,15360,12822,13111,13556,15360,12613,12934,13468,15360,12532,12854,13428,15360,12565,12870,13444,15360,12468,12789,13396,15360,12372,12693,13340,15360,12087,12492,13111,15360,11846,12364,12958,15360,11717,12300,12878,15360,11557,12135,12781,15360,11476,12055,12741,15360,11460,12022,12725,15360,11476,12022,12725,15360,11476,12022,12709,15360,11476,11958,12605,15360,11364,11733,12332,15360,11111,11412,11661,15360,11223,11476,11773,15360,11388,11669,12095,15360,11765,12119,12492,15360,12388,12613,13079,15360,12661,12902,13356,15360,12998,13255,13564,15360,13372,13508,13797,15360,13412,13548,13846,15360,13287,13436,13725,15360,13271,13428,13709,15360,13287,13428,13717,15360,13014,13287,13597,15360,12709,12998,13460,15360,12452,12741,13332,15360,12364,12653,13271,15360,12404,12693,13316,15360,12420,12709,13316,15360,12420,12709,13332,15360,12263,12589,13231,15360,12332,12661,13312,15360,12300,12629,13295,15360,12263,12605,13287,15360,12231,12597,13279,15360,12247,12613,13303,15360,12231,12597,13295,15360,12231,12605,13312,15360,12199,12597,13324,15360,12231,12613,13340,15360,12516,12870,13468,15360,12725,13063,13564,15360,12741,13079,13573,15360,12854,13175,13613,15360,12902,13223,13629,15360,13046,13348,13693,15360,13356,13516,13846,15360,13605,13765,14078,15360,13717,13870,14191,15360,13765,13918,14255,15360,13765,13910,14247,15360,13701,13854,14191,15360,13573,13733,14070,15360,13508,13677,14006,15360,13380,13548,13886,15360,13111,13380,13741,15360,13063,13348,13709,15360,12886,13207,13629,15360,12725,13046,13548,15360,12645,12966,13508,15360,12677,12982,13508,15360,12629,12950,13492,15360,12452,12789,13412,15360,12324,12661,13332,15360,12356,12677,13340,15360,12388,12693,13348,15360,12279,12597,13247,15360,11894,12396,12998,15360,11637,12231,12846,15360,11573,12135,12789,15360,11589,12151,12797,15360,11621,12167,12797,15360,11637,12119,12677,15360,11079,11404,11693,15360,10517,10701,10653,15360,10252,10348,10007,15360,9902,9999,9428,15360,9846,9886,9047,15360,10135,10260,9685,15360,10412,10533,10412,15360,11268,11436,11549,15360,12364,12605,13087,15360,12444,12709,13255,15360,12549,12822,13348,15360,12613,12886,13396,15360,12597,12886,13412,15360,12581,12870,13404,15360,12661,12950,13460,15360,12725,13014,13492,15360,13079,13332,13645,15360,12757,13046,13500,15360,12677,12982,13476,15360,12854,13143,13556,15360,12693,12982,13492,15360,12581,12886,13452,15360,12709,13030,13508,15360,12372,12709,13364,15360,12324,12661,13348,15360,12292,12645,13340,15360,12292,12645,13348,15360,12468,12806,13436,15360,12532,12854,13460,15360,12500,12854,13468,15360,12500,12854,13484,15360,12725,13063,13589,15360,12982,13324,13701,15360,13111,13388,13741,15360,13014,13340,13709,15360,13014,13332,13717,15360,13287,13476,13862,15360,13436,13621,13974,15360,13532,13717,14095,15360,13725,13902,14295,15360,13942,14103,14420,15360,13974,14135,14436,15360,13862,14022,14388,15360,13725,13894,14295,15360,13789,13958,14336,15360,13830,13990,14348,15360,13372,13548,13942,15360,13014,13332,13733,15360,12886,13239,13661,15360,12854,13207,13637,15360,12757,13095,13589,15360,12757,13079,13573,15360,12645,12982,13516,15360,12629,12966,13532,15360,12549,12870,13468,15360,12356,12693,13372,15360,12151,12549,13231,15360,12215,12573,13247,15360,12199,12565,13231,15360,12071,12492,13135,15360,12055,12468,13087,15360,11878,12372,12958,15360,11685,12199,12781,15360,10774,11159,11412,15360,9533,9621,8870,15360,9308,9340,8071,15360,9276,9300,7878,15360,9324,9332,8420,15360,9191,9216,7991,15360,8950,8983,7766,15360,9493,9525,8677,15360,10252,10332,10007,15360,10661,10846,10894,15360,10701,10926,10998,15360,10950,11276,11428,15360,11364,11637,12063,15360,11958,12388,12926,15360,12183,12540,13175,15360,12340,12645,13295,15360,12420,12693,13316,15360,12757,13030,13460,15360,13046,13324,13645,15360,13095,13348,13677,15360,13303,13460,13781,15360,13207,13404,13741,15360,13127,13372,13717,15360,13372,13524,13862,15360,12693,13030,13540,15360,12725,13046,13548,15360,12468,12822,13436,15360,12263,12629,13348,15360,12436,12773,13428,15360,12693,12998,13524,15360,12725,13046,13564,15360,12645,12982,13556,15360,12613,12966,13556,15360,12886,13255,13685,15360,13436,13629,14022,15360,13637,13813,14231,15360,13621,13789,14215,15360,13878,14038,14412,15360,14022,14183,14468,15360,13926,14119,14452,15360,14054,14231,14508,15360,14135,14311,14540,15360,14348,14436,14669,15360,14460,14540,14749,15360,14404,14484,14709,15360,14420,14500,14709,15360,14653,14717,14894,15360,14119,14279,14508,15360,13484,13669,14078,15360,13063,13380,13773,15360,12677,13079,13613,15360,12484,12886,13516,15360,12436,12822,13476,15360,12468,12838,13476,15360,12039,12532,13316,15360,12231,12613,13340,15360,12468,12789,13436,15360,12388,12725,13396,15360,12135,12557,13287,15360,12151,12557,13271,15360,12039,12484,13175,15360,11878,12396,13038,15360,11814,12348,12950,15360,11492,11894,12460,15360,9950,10103,9621,15360,8830,8838,7220,15360,8565,8533,7015,15360,8541,8501,6919,15360,8332,8300,6822,15360,8412,8372,7220,15360,8710,8701,7686,15360,9372,9404,8549,15360,9533,9621,9079,15360,9268,9292,8196,15360,9452,9460,8167,15360,9533,9581,8533,15360,9742,9870,9316,15360,11460,11814,12348,15360,11942,12388,12902,15360,11749,12167,12573,15360,11300,11492,11621,15360,11974,12332,12669,15360,12436,12741,13364,15360,12597,12886,13460,15360,12966,13271,13653,15360,12998,13303,13669,15360,13476,13629,13974,15360,13733,13886,14239,15360,13364,13524,13894,15360,13063,13356,13725,15360,12982,13287,13669,15360,12484,12806,13444,15360,12565,12902,13500,15360,12950,13287,13693,15360,12934,13271,13677,15360,12693,13046,13589,15360,12661,13030,13605,15360,12870,13271,13717,15360,13348,13548,13966,15360,13621,13813,14271,15360,13797,13974,14412,15360,13942,14119,14484,15360,14263,14388,14629,15360,14420,14508,14733,15360,14460,14548,14773,15360,14982,15046,15231,15360,15564,15580,15669,15360,15974,15982,16078,15360,15805,15821,15926,15360,15460,15476,15572,15360,15436,15460,15556,15360,14781,14862,15127,15360,13621,13813,14348,15360,12789,13207,13757,15360,12452,12886,13581,15360,12263,12709,13476,15360,12039,12597,13396,15360,11942,12516,13340,15360,11846,12468,13271,15360,11733,12380,13127,15360,11926,12460,13191,15360,12055,12524,13263,15360,11878,12428,13159,15360,11605,12231,12886,15360,11412,11990,12709,15360,11508,12103,12789,15360,11637,12231,12854,15360,10661,11079,11380,15360,9541,9685,9252,15360,8573,8605,7493,15360,8404,8388,7348,15360,8830,8822,8212,15360,9308,9324,9095,15360,9324,9364,9220,15360,9047,9119,8653,15360,9023,9055,8404,15360,9055,9063,8167,15360,8870,8846,7541,15360,8862,8806,7380,15360,8950,8910,7252,15360,9268,9284,7557,15360,10316,10468,10380,15360,11239,11476,11677,15360,10653,10942,11047,15360,9661,9814,9324,15360,10693,10958,11047,15360,11396,11653,11990,15360,11878,12292,12597,15360,12468,12789,13396,15360,12773,13095,13589,15360,13364,13516,13894,15360,13894,14054,14380,15360,13717,13870,14247,15360,13420,13589,13958,15360,13255,13452,13830,15360,12806,13143,13637,15360,13159,13412,13830,15360,13629,13813,14215,15360,13303,13500,13910,15360,13079,13396,13805,15360,13191,13452,13878,15360,13412,13621,14062,15360,14103,14279,14540,15360,14773,14854,15086,15360,14717,14805,15046,15360,14295,14420,14685,15360,14380,14476,14733,15360,14572,14661,14902,15360,15596,15612,15701,15360,16351,16335,16384,15360,16484,16476,16492,15360,16516,16500,16516,15360,16388,16375,16404,15360,16054,16054,16118,15360,15918,15926,16006,15360,15556,15572,15669,15360,14653,14725,14982,15360,13637,13838,14319,15360,13412,13613,14054,15360,12870,13287,13789,15360,12404,12838,13524,15360,12199,12677,13428,15360,12324,12741,13452,15360,11942,12516,13324,15360,11765,12380,13111,15360,11428,11942,12589,15360,10886,11388,11902,15360,10372,10717,11006,15360,9846,10240,10191,15360,10252,10549,10766,15360,10613,11079,11484,15360,10581,10998,11388,15360,9613,9846,9629,15360,8525,8557,7541,15360,8605,8613,7814,15360,9292,9324,9079,15360,9388,9396,9220,15360,10709,10846,11031,15360,9894,9966,9854,15360,9252,9236,8774,15360,8822,8790,8183,15360,8292,8260,6533,15360,8111,8007,6324,15360,8228,8183,6405,15360,8501,8501,6565,15360,8814,8878,7172,15360,9260,9364,8244,15360,8902,9095,8252,15360,9444,9581,9047,15360,9509,9637,8790,15360,9477,9613,8806,15360,10725,11063,11079,15360,11508,11910,12356,15360,12484,12789,13380,15360,12838,13159,13629,15360,13428,13589,13974,15360,14135,14279,14484,15360,13942,14087,14396,15360,13677,13846,14247,15360,13436,13613,14006,15360,13597,13781,14183,15360,14183,14340,14540,15360,14022,14215,14484,15360,13637,13838,14271,15360,14038,14231,14508,15360,14380,14476,14701,15360,14757,14854,15078,15360,15030,15111,15343,15360,15420,15452,15556,15360,15476,15500,15588,15360,15351,15388,15492,15360,15572,15596,15677,15360,15653,15669,15717,15360,15821,15821,15853,15360,15845,15845,15869,15360,15998,15990,16022,15360,15926,15926,15974,15360,15653,15669,15733,15360,15661,15677,15749,15360,15612,15629,15717,15360,15271,15335,15452,15360,14484,14572,14821,15360,14215,14372,14588,15360,13468,13677,14167,15360,12773,13175,13653,15360,12725,13143,13637,15360,12452,12886,13532,15360,12263,12709,13444,15360,11894,12436,13103,15360,10252,10533,10661,15360,8613,8693,7445,15360,8742,8782,7047,15360,8420,8412,6565,15360,7926,7910,6405,15360,8806,8854,7300,15360,9127,9228,8007,15360,8685,8750,7300,15360,8348,8356,6758,15360,8380,8340,7300,15360,8991,8918,8388,15360,9838,9790,9549,15360,10055,10127,10047,15360,9501,9493,9268,15360,9332,9292,8902,15360,9079,9007,8509,15360,8300,8260,7252,15360,8693,8701,8196,15360,8228,8212,7111,15360,8469,8501,7380,15360,8420,8501,6919,15360,8549,8645,6983,15360,8581,8661,6951,15360,9268,9332,7718,15360,9063,9207,7445,15360,9284,9380,7718,15360,9412,9557,8693,15360,10276,10517,10103,15360,11830,12279,12589,15360,12725,13079,13589,15360,13127,13396,13773,15360,14087,14231,14460,15360,13974,14119,14412,15360,13677,13854,14247,15360,14119,14279,14500,15360,13990,14167,14460,15360,14364,14452,14653,15360,14564,14653,14837,15360,14404,14492,14701,15360,14870,14942,15135,15360,15388,15420,15500,15360,15207,15287,15420,15360,14797,14894,15127,15360,15271,15335,15452,15360,15926,15942,15990,15360,16207,16207,16231,15360,16118,16110,16126,15360,15741,15733,15741,15360,16239,16207,16175,15360,16444,16460,16484,15360,16046,16022,16006,15360,15942,15950,15966,15360,15773,15789,15829,15360,15789,15797,15845,15360,15693,15709,15757,15360,15540,15564,15653,15360,15303,15364,15468,15360,14733,14813,15014,15360,13862,14054,14420,15360,12838,13255,13725,15360,12789,13207,13693,15360,12468,12918,13564,15360,12404,12838,13500,15360,11428,11862,12412,15360,9143,9276,8388,15360,8541,8533,6726,15360,8444,8428,6629,15360,8212,8183,6597,15360,8388,8380,7015,15360,8726,8710,6758,15360,8332,8316,6437,15360,8453,8428,6565,15360,8597,8605,7814,15360,8701,8661,8151,15360,9452,9396,9015,15360,10581,10557,10380,15360,10950,10974,10846,15360,10380,10356,10252,15360,10749,10741,10685,15360,9870,9854,9693,15360,9023,9039,8669,15360,8790,8854,8509,15360,8196,8167,7332,15360,7975,8015,7079,15360,8589,8750,7445,15360,9095,9260,7111,15360,8983,9135,7188,15360,8902,8991,7252,15360,8862,9007,7015,15360,8967,9111,7300,15360,8742,8878,7493,15360,9557,9999,9549,15360,11292,11613,11862,15360,12135,12468,12982,15360,12215,12460,12878,15360,13356,13468,13685,15360,13821,13934,14199,15360,13548,13701,14022,15360,14103,14263,14468,15360,14279,14388,14572,15360,14364,14452,14645,15360,14709,14789,14950,15360,15143,15199,15327,15360,15388,15412,15468,15360,15476,15500,15548,15360,15420,15444,15492,15360,15436,15460,15516,15360,15612,15637,15685,15360,16086,16086,16110,15360,16396,16388,16396,15360,16094,16094,16110,15360,15869,15861,15861,15360,16135,16110,16070,15360,16428,16420,16404,15360,15588,15556,15524,15360,15484,15500,15508,15360,15335,15364,15396,15360,15677,15685,15717,15360,15604,15621,15661,15360,15420,15444,15500,15360,15303,15372,15452,15360,14717,14805,14998,15360,14412,14508,14701,15360,13548,13765,14199,15360,13271,13508,13942,15360,12661,13159,13709,15360,12468,12854,13436,15360,10260,10484,10509,15360,8613,8669,6951,15360,8151,8143,6469,15360,8653,8629,7814,15360,8469,8444,7541,15360,8718,8693,7814,15360,8372,8332,6597,15360,8356,8308,7111,15360,9047,8983,8396,15360,8822,8798,8308,15360,9372,9348,8967,15360,10364,10364,10183,15360,10268,10260,9894,15360,10541,10533,10468,15360,10380,10364,10276,15360,10621,10613,10549,15360,9910,9942,9758,15360,8364,8380,7621,15360,8581,8637,8135,15360,8252,8300,7573,15360,8119,8175,7300,15360,8372,8453,7493,15360,8420,8501,6983,15360,8742,8822,7573,15360,8782,8854,8151,15360,8581,8661,7079,15360,9220,9268,8340,15360,9549,9645,8854,15360,11717,11950,12127,15360,12468,12741,13207,15360,12709,12966,13388,15360,12300,12508,12886,15360,12492,12709,13063,15360,13239,13372,13548,15360,12476,12597,12814,15360,13581,13685,13878,15360,14476,14548,14685,15360,14556,14629,14773,15360,14765,14829,14966,15360,15159,15207,15303,15360,15372,15396,15444,15360,15516,15532,15572,15360,15653,15661,15693,15360,15829,15837,15853,15360,16022,16014,16022,15360,16311,16295,16279,15360,16343,16319,16303,15360,16412,16388,16359,15360,15813,15797,15773,15360,13063,13151,13183,15360,11484,11701,11798,15360,12300,12412,12468,15360,14613,14637,14653,15360,11974,12215,12316,15360,14135,14215,14303,15360,15604,15629,15677,15360,15524,15548,15596,15360,15351,15380,15428,15360,14797,14894,15054,15360,13990,14231,14500,15360,13492,13709,14070,15360,12886,13316,13701,15360,12613,13207,13749,15360,11525,11974,12428,15360,9284,9412,8629,15360,8597,8653,6951,15360,7806,7790,6292,15360,7589,7541,6437,15360,7485,7437,6597,15360,7453,7404,6180,15360,7774,7686,6565,15360,8300,8260,7332,15360,9918,9942,9862,15360,10348,10372,10231,15360,9725,9709,9228,15360,10613,10621,10509,15360,10199,10175,9838,15360,10380,10388,10340,15360,11207,11255,11284,15360,10661,10717,10725,15360,10103,10135,9950,15360,8444,8436,7669,15360,8469,8501,7445,15360,8950,9111,8854,15360,9485,9798,10071,15360,8364,8501,8039,15360,7959,7951,6806,15360,8597,8605,8039,15360,8501,8533,7557,15360,8758,8830,7509,15360,10758,10830,10693,15360,11508,11605,11621,15360,13524,13669,13886,15360,13830,14022,14327,15360,13926,14103,14364,15360,13460,13621,13886,15360,12854,13191,13420,15360,13597,13733,13926,15360,13846,13990,14223,15360,13773,13942,14199,15360,13910,14087,14356,15360,13813,14022,14319,15360,14247,14396,14540,15360,14693,14765,14878,15360,15223,15279,15343,15360,15508,15524,15540,15360,15540,15548,15564,15360,15327,15335,15319,15360,15303,15311,15303,15360,15918,15910,15886,15360,16247,16207,16151,15360,16175,16143,16086,15360,14436,14452,14436,15360,12263,12380,12404,15360,11476,11701,11773,15360,12380,12492,12532,15360,14797,14797,14757,15360,11372,11589,11677,15360,12597,12934,13356,15360,13990,14364,14725,15360,14183,14444,14773,15360,14231,14444,14717,15360,14412,14532,14709,15360,14054,14199,14380,15360,12372,12500,12605,15360,12199,12565,13006,15360,12581,13175,13653,15360,10055,10380,10324,15360,8557,8573,6726,15360,8167,8196,6533,15360,7517,7485,6119,15360,7244,7172,5798,15360,7071,6959,5718,15360,7669,7581,6260,15360,8661,8605,7975,15360,10942,11079,11151,15360,12573,12741,13014,15360,11902,12030,12191,15360,10308,10332,10135,15360,11255,11300,11284,15360,11276,11348,11396,15360,10055,10215,10292,15360,12183,12332,12468,15360,9918,9966,9798,15360,8734,8742,8196,15360,8967,8950,8469,15360,10260,10276,10039,15360,9734,9758,9605,15360,9388,9404,9308,15360,7943,7878,7095,15360,7726,7637,6645,15360,8047,7983,7204,15360,9284,9236,8693,15360,9621,9565,9143,15360,11255,11268,11047,15360,13175,13332,13420,15360,13773,13934,14175,15360,13854,14022,14271,15360,13870,14038,14279,15360,13388,13516,13677,15360,12279,12629,12966,15360,13348,13452,13564,15360,13821,13918,14054,15360,13701,13846,14022,15360,13460,13605,13781,15360,13492,13637,13821,15360,13709,13821,13950,15360,14372,14428,14476,15360,14516,14572,14613,15360,14741,14789,14813,15360,14725,14749,14749,15360,13452,13484,13468,15360,13476,13500,13492,15360,14990,15022,15022,15360,14556,14572,14564,15360,15094,15111,15094,15360,13231,13287,13215,15360,11255,11380,11175,15360,10677,10886,10492,15360,11846,12006,11934,15360,14327,14340,14279,15360,10766,11039,10862,15360,12918,13255,13452,15360,14231,14548,14886,15360,13878,14380,14765,15360,13444,13862,14412,15360,12151,12404,12621,15360,12637,12902,13215,15360,11549,11749,11870,15360,12279,12653,13119,15360,13223,13404,13516,15360,9228,9260,8276,15360,8087,7991,6308,15360,7918,7814,6919,15360,7469,7364,6148,15360,7485,7380,6212,15360,8228,7991,7204,15360,9276,8967,8212,15360,9806,9573,8742,15360,10135,10087,9621,15360,11452,11452,11452,15360,10629,10637,10509,15360,10693,10733,10637,15360,11095,11111,10982,15360,11292,11348,11372,15360,10199,10244,10167,15360,10814,10926,10846,15360,8669,8774,7493,15360,7870,7910,6244,15360,8204,8183,6919,15360,9806,9758,9159,15360,9460,9436,8629,15360,9159,9087,8260,15360,7637,7509,6790,15360,7758,7629,6838,15360,7967,7918,6774,15360,10854,10749,10501,15360,11508,11412,11316,15360,12372,12300,12151,15360,12030,12119,12063,15360,12781,12910,12982,15360,13476,13581,13661,15360,13484,13589,13677,15360,12404,12428,12380,15360,11605,11765,11798,15360,11492,11533,11452,15360,11838,11886,11798,15360,12263,12372,12380,15360,12151,12231,12175,15360,11492,11508,11412,15360,11119,11111,10838,15360,12508,12581,12573,15360,12621,12693,12677,15360,12573,12629,12589,15360,12292,12324,12231,15360,12476,12565,12573,15360,11998,12159,12215,15360,12950,13071,13159,15360,12263,12372,12428,15360,12380,12428,12444,15360,11300,11308,11143,15360,10199,10244,9734,15360,9709,9701,9252,15360,10492,10581,10404,15360,11476,11516,11388,15360,9477,9517,8790,15360,11717,11854,11838,15360,14247,14420,14524,15360,14054,14311,14436,15360,13597,13805,13982,15360,11364,11533,11597,15360,12263,12428,12549,15360,11436,11605,11653,15360,13079,13324,13444,15360,12516,12613,12605,15360,10039,10015,9605,15360,8693,8621,7878,15360,7951,7862,6902,15360,8196,8204,7015,15360,8677,8589,7637,15360,9284,9031,8340,15360,9814,9605,8902,15360,10685,10428,9910,15360,10492,10260,9685,15360,9404,9252,7943,15360,8830,8766,7220,15360,9220,9047,7943,15360,9693,9669,9015,15360,11412,11468,11372,15360,11135,11159,11023,15360,10087,10055,9428,15360,9910,10007,9621,15360,9236,9300,8934,15360,9597,9557,8902,15360,10669,10549,9782,15360,9926,9870,9127,15360,9894,9918,9047,15360,8685,8742,7910,15360,9958,10167,10284,15360,10215,10332,10396,15360,11396,11428,11452,15360,11223,11255,11300,15360,11814,11862,11958,15360,10685,10846,10870,15360,10340,10380,10007,15360,11175,11207,10894,15360,12103,12207,12215,15360,11143,11103,10902,15360,9910,9966,9613,15360,10015,10079,9493,15360,10806,10846,10517,15360,10862,10934,10637,15360,10838,10942,10661,15360,10958,11087,10878,15360,10709,10838,10701,15360,10669,10741,10589,15360,10581,10669,10525,15360,10252,10348,9974,15360,11396,11500,11525,15360,11207,11255,11264,15360,10878,10910,10934,15360,11031,11063,11159,15360,11292,11324,11396,15360,11223,11255,11300,15360,10693,10685,10645,15360,10428,10420,10324,15360,10300,10252,9991,15360,10838,10846,10798,15360,10428,10428,10364,15360,9669,9605,9380,15360,10167,10244,10087,15360,11709,11854,11910,15360,11223,11284,11268,15360,10231,10244,9878,15360,10199,10244,9862,15360,10183,10260,9942,15360,10525,10653,10541,15360,12500,12597,12621,15360,11814,11741,11597,15360,11533,11460,11175,15360,11103,11006,10557,15360,10444,10396,9846,15360,10007,10023,9228,15360,9653,9790,8469,15360,9316,9372,8039,15360,9557,9830,8071,15360,9621,9918,8071,15360,9677,10015,8167,15360,9991,10284,8420,15360,10215,10436,8581,15360,10260,10484,8645,15360,10292,10476,8902,15360,10324,10468,9252,15360,9910,9894,8886,15360,10525,10573,9701,15360,9782,10039,8581,15360,9565,9814,8167,15360,9950,10039,8934,15360,10749,10758,10199,15360,10669,10685,10244,15360,10838,10838,10460,15360,11215,10910,10087,15360,11492,11364,10806,15360,11095,11159,11055,15360,11364,11388,11356,15360,11023,11039,10990,15360,11653,11653,11613,15360,11798,11725,11557,15360,11974,11862,11637,15360,12039,11942,11765,15360,12119,12047,11934,15360,12151,12071,11950,15360,12087,12006,11886,15360,12047,11966,11838,15360,11990,11926,11790,15360,11974,11910,11798,15360,11998,11934,11814,15360,12111,12039,11886,15360,12231,12143,11998,15360,12292,12199,12039,15360,12039,11974,11846,15360,11822,11782,11653,15360,11862,11838,11765,15360,11798,11765,11701,15360,11782,11733,11669,15360,11798,11749,11685,15360,11838,11790,11725,15360,11870,11822,11749,15360,11741,11701,11621,15360,11565,11541,11452,15360,11533,11500,11412,15360,11621,11581,11484,15360,11605,11557,11460,15360,11516,11468,11372,15360,11565,11533,11444,15360,11677,11637,11541,15360,11725,11661,11557,15360,11725,11661,11557,15360,11733,11669,11573,15360,11838,11773,11677,15360,11998,11926,11814,15360,12014,11926,11798,15360,11460,11404,11332,15360,11637,11557,11428,15360,12014,11894,11693,15360,12167,12022,11765,15360,12119,11982,11709,15360,11926,11806,11516,15360,11685,11589,11300,15360,11476,11404,10886,15360,11239,11151,10468,15360,10766,10733,9894,15360,10565,10565,9589,15360,10436,10444,9332,15360,10308,10308,9031,15360,10308,10316,8999,15360,10199,10244,8774,15360,9725,9645,8549,15360,10244,10276,8967,15360,10878,10838,10183,15360,11055,10966,10348,15360,11119,11006,10404,15360,11264,11135,10565,15360,11404,11316,10822,15360,11492,11388,10982,15360,11798,11613,11223,15360,12047,11830,11412,15360,12039,11894,11597,15360,12127,11990,11693,15360,12127,11990,11725,15360,12191,12055,11806,15360,12191,12055,11830,15360,11870,11773,11613,15360,11573,11516,11428,15360,11533,11484,11412,15360,11541,11492,11420,15360,11565,11516,11452,15360,11589,11541,11476,15360,11605,11557,11500,15360,11637,11589,11533,15360,11669,11621,11557,15360,11701,11645,11573,15360,11733,11669,11589,15360,11798,11717,11605,15360,11838,11749,11621,15360,11878,11782,11661,15360,11894,11798,11661,15360,11926,11806,11653,15360,11958,11822,11661,15360,11982,11846,11677,15360,12006,11870,11685,15360,12095,11950,11765,15360,12047,11910,11741,15360,11886,11765,11605,15360,11838,11733,11589,15360,11814,11717,11589,15360,11814,11709,11573,15360,11790,11693,11565,15360,11741,11677,11589,15360,11733,11677,11613,15360,11733,11685,11629,15360,11717,11669,11621,15360,11685,11645,11589,15360,11629,11589,11533,15360,11573,11525,11468,15360,11492,11444,11380,15360,11316,11255,11111,15360,11348,11292,11143,15360,11516,11436,11316,15360,11854,11749,11589,15360,12127,11990,11765,15360,12199,12055,11782,15360,12340,12231,11910,15360,12372,12292,11958,15360,12380,12300,11974,15360,12348,12247,11910,15360,12324,12215,11878,15360,12247,12103,11773,15360,12095,11958,11637,15360,12055,11926,11613,15360,11974,11854,11541,15360,11870,11765,11468,15360,11966,11854,11541,15360,12300,12151,11846,15360,12396,12316,12006,15360,12388,12308,11990,15360,12388,12308,12006,15360,12396,12316,12022,15360,12396,12308,12022,15360,12396,12308,12022,15360,12364,12279,11974,15360,12340,12247,11942,15360,12340,12231,11926,15360,12215,12071,11806,15360,12095,11966,11749,15360,11741,11645,11500,15360,11420,11356,11255,15360,11364,11308,11207,15360,11356,11300,11175,15360,11348,11292,11191,15360,11372,11324,11255,15360,11412,11364,11308,15360,11420,11372,11316,15360,11428,11380,11324,15360,11444,11388,11332,15360,11484,11428,11364,15360,11508,11460,11396,15360,11557,11500,11436,15360,11589,11533,11460,15360,11613,11557,11484,15360,11621,11557,11492,15360,11613,11557,11500,15360,11621,11557,11500,15360,11629,11573,11508,15360,11629,11573,11508,15360,11605,11557,11484,15360,11589,11533,11468,15360,11557,11508,11436,15360,11549,11500,11428,15360,11557,11500,11436,15360,11549,11492,11436,15360,11533,11484,11428,15360,11525,11476,11428,15360,11516,11476,11428,15360,11525,11484,11444,15360,11516,11476,11428,15360,11468,11428,11380,15360,11428,11388,11332,15360,11356,11308,11239,15360,11308,11255,11127,15360,11167,11071,10926,15360,11223,11119,10966,15360,11276,11175,10998,15360,11404,11332,11191,15360,11773,11693,11557,15360,11926,11798,11613,15360,12207,12039,11773,15360,12348,12231,11894,15360,12308,12151,11846,15360,12332,12215,11894,15360,12364,12279,11958,15360,12380,12292,11974,15360,12396,12316,12022,15360,12404,12316,12039,15360,12412,12332,12087,15360,12412,12332,12103,15360,12436,12356,12135,15360,12372,12292,12039,15360,12420,12332,12087,15360,12396,12316,12055,15360,12356,12263,11990,15360,12340,12231,11942,15360,12271,12127,11854,15360,12215,12071,11814,15360,12292,12135,11878,15360,12288,12135,11870,15360,12111,11982,11765,15360,11990,11886,11717,15360,11637,11557,11428,15360,11364,11300,11143,15360,11316,11239,11079,15360,11300,11207,11047,15360,11268,11159,11015,15360,11268,11159,11015,15360,11268,11159,11031,15360,11300,11223,11095,15360,11340,11292,11191,15360,11348,11300,11223,15360,11372,11324,11255,15360,11380,11332,11255,15360,11372,11316,11239,15360,11396,11340,11268,15360,11468,11404,11300,15360,11460,11404,11324,15360,11484,11428,11356,15360,11492,11436,11372,15360,11500,11444,11388,15360,11508,11460,11404,15360,11500,11452,11396,15360,11492,11436,11380,15360,11468,11412,11356,15360,11444,11388,11324,15360,11444,11388,11324,15360,11428,11380,11316,15360,11412,11356,11300,15360,11404,11348,11300,15360,11404,11356,11308,15360,11396,11356,11308,15360,11388,11348,11308,15360,11372,11340,11292,15360,11348,11308,11255,15360,11284,11223,11111,15360,11231,11143,11023,15360,11199,11111,10974,15360,11047,10958,10814,15360,11127,11023,10870,15360,11119,11006,10846,15360,11175,11055,10886,15360,11292,11191,10998,15360,11525,11404,11284,15360,11822,11637,11476,15360,11878,11733,11549,15360,11918,11790,11573,15360,12063,11918,11653,15360,12223,12063,11765,15360,12300,12151,11846,15360,12255,12103,11814,15360,12271,12127,11846,15360,12271,12127,11862,15360,12271,12127,11886,15360,12308,12183,11942,15360,12175,12039,11814,15360,12063,11934,11709,15360,12159,12014,11765,15360,12215,12063,11798,15360,12143,11998,11757,15360,12071,11934,11693,15360,11998,11870,11661,15360,11974,11870,11685,15360,11998,11910,11757,15360,11846,11765,11629,15360,11468,11396,11284,15360,11308,11223,11031,15360,11215,11103,10934,15360,11207,11095,10942,15360,11215,11103,10950,15360,11191,11087,10942,15360,11175,11079,10942,15360,11167,11063,10934,15360,11143,11031,10902,15360,11247,11143,11015,15360,11284,11191,11079,15360,11300,11223,11095,15360,11316,11268,11127,15360,11340,11284,11143,15360,11340,11284,11159,15360,11356,11300,11191,15360,11372,11316,11239,15360,11380,11324,11255,15360,11372,11316,11255,15360,11380,11324,11276,15360,11380,11324,11268,15360,11372,11316,11255,15360,11364,11316,11255,15360,11364,11308,11239,15360,11348,11292,11207,15360,11340,11284,11191,15360,11348,11292,11191,15360,11348,11292,11207,15360,11340,11292,11207,15360,11340,11292,11207,15360,11324,11276,11207,15360,11308,11255,11175,15360,11264,11175,11079,15360,11119,11039,10934,15360,11103,11015,10902,15360,11095,11006,10878,15360,11031,10942,10806,15360,10990,10902,10766,15360,11047,10942,10814,15360,11031,10926,10790,15360,11055,10942,10806,15360,11119,10998,10846,15360,11151,11015,10830,15360,11268,11095,10886,15360,11484,11396,11268,15360,11790,11701,11549,15360,11886,11790,11637,15360,11838,11741,11581,15360,11838,11725,11541,15360,11902,11782,11581,15360,11966,11838,11629,15360,11974,11846,11629,15360,11958,11838,11629,15360,11950,11838,11637,15360,11814,11701,11525,15360,11581,11492,11332,15360,11645,11541,11380,15360,11806,11701,11533,15360,11902,11806,11637,15360,11950,11862,11717,15360,12014,11934,11790,15360,11942,11862,11725,15360,11565,11492,11388,15360,11292,11191,11015,15360,11231,11111,10950,15360,11159,11047,10894,15360,11119,11006,10854,15360,11127,11023,10878,15360,11159,11055,10902,15360,11135,11031,10894,15360,11111,11006,10878,15360,11095,10990,10870,15360,11095,10998,10886,15360,11071,10966,10846,15360,11111,11006,10902,15360,11191,11095,10974,15360,11268,11159,11031,15360,11284,11191,11063,15360,11292,11207,11063,15360,11300,11223,11079,15360,11332,11268,11143,15360,11316,11255,11127,15360,11316,11255,11143,15360,11308,11239,11127,15360,11316,11255,11159,15360,11300,11223,11127,15360,11292,11207,11095,15360,11300,11223,11111,15360,11300,11223,11095,15360,11300,11223,11095,15360,11308,11239,11111,15360,11300,11223,11111,15360,11292,11207,11111,15360,11264,11167,11071,15360,11215,11127,11047,15360,11135,11055,10966,15360,11015,10934,10846,15360,10918,10838,10733,15360,10982,10894,10782,15360,10974,10886,10766,15360,10982,10894,10766,15360,10958,10862,10749,15360,10982,10886,10774,15360,10958,10862,10758,15360,10958,10862,10749,15360,11015,10910,10790,15360,11023,10910,10774,15360,11079,10958,10806,15360,11103,10974,10798,15360,11191,11047,10846,15360,11468,11388,11276,15360,11846,11765,11637,15360,12006,11918,11782,15360,11998,11910,11782,15360,11902,11822,11693,15360,11838,11749,11637,15360,11782,11709,11605,15360,11806,11741,11645,15360,11782,11717,11629,15360,11773,11717,11621,15360,11870,11806,11701,15360,11942,11862,11757,15360,12183,12103,11974,15360,11974,11894,11765,15360,11476,11404,11308,15360,11268,11143,10966,15360,11183,11063,10902,15360,11111,10998,10854,15360,11055,10942,10806,15360,11023,10910,10766,15360,11047,10934,10782,15360,11039,10926,10782,15360,11079,10966,10830,15360,11031,10918,10782,15360,11031,10926,10806,15360,10990,10894,10782,15360,10974,10886,10790,15360,10966,10870,10774,15360,11006,10902,10806,15360,11039,10942,10838,15360,11127,11023,10910,15360,11175,11079,10958,15360,11191,11087,10958,15360,11207,11095,10958,15360,11268,11143,11015,15360,11276,11175,11047,15360,11284,11191,11079,15360,11292,11191,11079,15360,11276,11175,11079,15360,11239,11135,11031,15360,11268,11159,11047,15360,11215,11111,11006,15360,11239,11127,11015,15360,11255,11143,11031,15360,11223,11119,11015,15360,11199,11103,10998,15360,11175,11087,10982,15360,11143,11047,10958,15360,11031,10942,10854,15360,10958,10878,10790,15360,10910,10830,10741,15360,10942,10862,10758,15360,10926,10838,10733,15360,10854,10758,10637,15360,10918,10830,10709,15360,10910,10822,10717,15360,10942,10846,10749,15360,10942,10854,10741,15360,10942,10854,10749,15360,10966,10870,10758,15360,10966,10870,10758,15360,10958,10854,10733,15360,10998,10886,10741,15360,10942,10830,10677,15360,11039,10918,10749,15360,11095,10974,10806,15360,11308,11223,11031,15360,11468,11396,11292,15360,11605,11533,11428,15360,11701,11621,11525,15360,11693,11629,11541,15360,11685,11621,11549,15360,11685,11629,11549,15360,11629,11565,11484,15360,11589,11533,11444,15360,11364,11308,11191,15360,11191,11087,10958,15360,11135,11031,10902,15360,11135,11031,10894,15360,11055,10950,10830,15360,11015,10910,10782,15360,10958,10854,10733,15360,10942,10838,10717,15360,10974,10870,10733,15360,10982,10878,10749,15360,10990,10886,10758,15360,11015,10910,10798,15360,10966,10862,10758,15360,10950,10854,10758,15360,10910,10822,10733,15360,10894,10798,10709,15360,10902,10814,10725,15360,10934,10846,10758,15360,10910,10822,10733,15360,10950,10854,10749,15360,10974,10878,10766,15360,11047,10942,10830,15360,11095,10990,10878,15360,11167,11055,10942,15360,11199,11103,10990,15360,11191,11087,10982,15360,11151,11047,10950,15360,11135,11031,10934,15360,11095,10998,10902,15360,11143,11047,10950,15360,11079,10990,10894,15360,11079,10990,10902,15360,11103,11006,10910,15360,11079,10982,10886,15360,11023,10926,10822,15360,10982,10894,10798,15360,10958,10870,10782,15360,10910,10814,10725,15360,10926,10838,10741,15360,10934,10838,10733,15360,10950,10854,10749,15360,10886,10798,10709,15360,10910,10814,10709,15360,10926,10830,10725,15360,10910,10814,10701,15360,10862,10774,10677,15360,10950,10854,10733,15360,10926,10830,10717,15360,10926,10838,10725,15360,10926,10830,10725,15360,10894,10798,10685,15360,10926,10830,10701,15360,10958,10854,10717,15360,10934,10830,10685,15360,10950,10846,10709,15360,10974,10862,10717,15360,10942,10830,10685,15360,10958,10846,10701,15360,11006,10894,10749,15360,10950,10846,10725,15360,10958,10862,10741,15360,10894,10806,10701,15360,10854,10774,10669,15360,10886,10806,10701,15360,10862,10790,10693,15360,10878,10806,10717,15360,10982,10902,10798,15360,10990,10902,10798,15360,10950,10862,10758,15360,10942,10846,10733,15360,10870,10774,10669,15360,10894,10798,10693,15360,10918,10830,10725,15360,10894,10806,10701,15360,10926,10830,10733,15360,10902,10830,10725,15360,10870,10790,10693,15360,10886,10814,10725,15360,10814,10741,10661,15360,10838,10766,10677,15360,10822,10741,10661,15360,10822,10741,10669,15360,10862,10790,10709,15360,10846,10758,10669,15360,10894,10798,10693,15360,10974,10878,10766,15360,10966,10870,10766,15360,11023,10926,10814,15360,11079,10974,10862,15360,11006,10910,10814,15360,10950,10862,10766,15360,10982,10894,10798,15360,10958,10862,10774,15360,10958,10870,10782,15360,10910,10830,10741,15360,10950,10862,10766,15360,10982,10886,10790,15360,10918,10822,10725,15360,10886,10798,10701,15360,10854,10766,10669,15360,10894,10806,10709,15360,10926,10830,10725,15360,10926,10830,10725,15360,10958,10862,10749,15360,10958,10862,10749,15360,10894,10806,10717,15360,10902,10814,10717,15360,10878,10790,10677,15360,10942,10838,10717,15360,10918,10814,10701,15360,10886,10790,10661,15360,10942,10838,10717,15360,10950,10854,10725,15360,10950,10854,10725,15360,10910,10814,10693,15360,10910,10814,10685,15360,10942,10838,10709,15360,10894,10790,10661,15360,10910,10806,10669,15360,10822,10725,10597,15360,10749,10661,10541,15360,10830,10733,10613,15360,10838,10741,10629,15360,10806,10709,10597,15360,10854,10766,10653,15360,10862,10774,10669,15360,10798,10725,10629,15360,10822,10749,10653,15360,10854,10782,10693,15360,10806,10741,10661,15360,10862,10790,10701,15360,10870,10790,10685,15360,10870,10790,10693,15360,10878,10790,10677,15360,10862,10782,10677,15360,10870,10790,10693,15360,10870,10782,10685,15360,10894,10814,10709,15360,10886,10814,10709,15360,10846,10782,10685,15360,10741,10669,10573,15360,10766,10693,10589,15360,10709,10637,10541,15360,10741,10669,10589,15360,10741,10677,10589,15360,10709,10637,10557,15360,10774,10701,10613,15360,10862,10774,10677,15360,11006,10918,10806,15360,11006,10902,10782,15360,10974,10870,10749,15360,10958,10854,10733,15360,10934,10838,10725,15360,10934,10838,10733,15360,10934,10838,10725,15360,10886,10790,10685,15360,10854,10766,10661,15360,10886,10798,10701,15360,10838,10749,10645,15360,10878,10782,10661,15360,10822,10725,10613,15360,10822,10717,10605,15360,10846,10749,10629,15360,10854,10749,10637,15360,10950,10854,10733,15360,10958,10854,10741,15360,10910,10806,10693,15360,10926,10822,10693,15360,10934,10838,10725,15360,10910,10822,10709,15360,10910,10822,10709,15360,10886,10782,10661,15360,10910,10814,10677,15360,10910,10806,10677,15360,10926,10822,10685,15360,10958,10854,10717,15360,10974,10870,10725,15360,10926,10830,10693,15360,10926,10830,10693,15360,10918,10822,10693,15360,10934,10838,10701,15360,10918,10814,10685,15360,10878,10782,10653,15360,10870,10774,10645,15360,10838,10749,10629,15360,10806,10717,10605,15360,10822,10733,10621,15360,10822,10733,10621,15360,10846,10758,10653,15360,10846,10766,10653,15360,10822,10741,10629,15360,10806,10733,10629,15360,10806,10725,10621,15360,10790,10709,10605,15360,10766,10693,10589,15360,10814,10741,10629,15360,10846,10766,10653,15360,10838,10758,10653,15360,10878,10790,10677,15360,10894,10798,10685,15360,10830,10741,10629,15360,10830,10758,10653,15360,10798,10725,10629,15360,10806,10733,10629,15360,10717,10637,10525,15360,10661,10581,10476,15360,10701,10621,10517,15360,10733,10661,10565,15360,10782,10685,10557,15360,10862,10758,10613,15360,10974,10862,10725,15360,10958,10846,10709,15360,11006,10902,10766,15360,11006,10902,10774,15360,11039,10934,10814,15360,11006,10902,10790,15360,11006,10910,10790,15360,10950,10854,10741,15360,10934,10830,10709,15360,10918,10814,10701,15360,10854,10758,10653,15360,10918,10814,10701,15360,10870,10766,10645,15360,10830,10733,10621,15360,10934,10830,10709,15360,10990,10886,10758,15360,10950,10838,10717,15360,10910,10814,10701,15360,10926,10822,10693,15360,10934,10830,10709,15360,10878,10774,10653,15360,10934,10830,10701,15360,10926,10822,10693,15360,10878,10782,10661,15360,10878,10782,10661,15360,10862,10766,10621,15360,10886,10782,10645,15360,10886,10782,10653,15360,10926,10822,10701,15360,10902,10806,10685,15360,10926,10822,10701,15360,10918,10814,10685,15360,10878,10782,10645,15360,10910,10806,10669,15360,10854,10758,10621,15360,10886,10790,10645,15360,10854,10758,10629,15360,10830,10741,10613,15360,10918,10814,10685,15360,10862,10766,10645,15360,10830,10741,10613,15360,10806,10717,10597,15360,10741,10661,10557,15360,10774,10693,10581,15360,10749,10669,10557,15360,10774,10693,10581,15360,10766,10685,10573,15360,10790,10709,10597,15360,10782,10701,10589,15360,10790,10709,10597,15360,10838,10749,10621,15360,10870,10774,10645,15360,10894,10790,10661,15360,10878,10782,10653,15360,10846,10741,10613,15360,10790,10693,10557,15360,10814,10717,10597,15360,10790,10701,10581,15360,10741,10645,10525,15360,10717,10629,10509,15360,10774,10685,10573,15360,10725,10637,10525,15360,10854,10749,10621,15360,10950,10846,10701,15360,10966,10854,10709,15360,10934,10814,10677,15360,10926,10822,10701,15360,10982,10878,10766,15360,10998,10894,10782,15360,10990,10878,10766,15360,10998,10894,10782,15360,10998,10886,10774,15360,10998,10886,10758,15360,11006,10894,10774,15360,10942,10838,10733,15360,10958,10854,10741,15360,10958,10854,10749,15360,11006,10902,10790,15360,11015,10902,10798,15360,10982,10870,10758,15360,10998,10894,10782,15360,10974,10870,10758,15360,11006,10902,10790,15360,10998,10894,10774,15360,10974,10870,10758,15360,10950,10854,10741,15360,10878,10790,10693,15360,10902,10814,10701,15360,10918,10822,10709,15360,10838,10733,10613,15360,10878,10782,10661,15360,10934,10838,10717,15360,10902,10806,10693,15360,10918,10822,10709,15360,10926,10830,10709,15360,10838,10733,10605,15360,10910,10806,10661,15360,10942,10838,10693,15360,10886,10782,10645,15360,10886,10782,10637,15360,10854,10749,10621,15360,10926,10830,10709,15360,10966,10862,10741,15360,10846,10749,10629,15360,10830,10733,10605,15360,10854,10758,10637,15360,10822,10725,10605,15360,10886,10790,10661,15360,10902,10806,10669,15360,10918,10814,10677,15360,10830,10733,10605,15360,10806,10717,10589,15360,10870,10774,10645,15360,10934,10838,10709,15360,10958,10862,10733,15360,10886,10790,10661,15360,10894,10798,10661,15360,10958,10854,10709,15360,10934,10830,10709,15360,10814,10717,10581,15360,10862,10758,10613,15360,10854,10741,10589,15360,10814,10717,10573,15360,10886,10782,10645,15360,10814,10725,10597,15360,10862,10766,10637,15360,10910,10806,10669,15360,10942,10838,10709,15360,10966,10862,10733,15360,10974,10870,10741,15360,10974,10870,10749,15360,10958,10862,10749,15360,11031,10934,10822,15360,10998,10894,10782,15360,10974,10870,10766,15360,11023,10918,10814,15360,11039,10926,10822,15360,10958,10846,10741,15360,10918,10814,10693,15360,10966,10870,10741,15360,10982,10886,10766,15360,10982,10878,10766,15360,10942,10846,10733,15360,10958,10862,10758,15360,10950,10854,10758,15360,10934,10830,10717,15360,10966,10862,10733,15360,10942,10846,10725,15360,10934,10846,10733,15360,10934,10846,10733,15360,10878,10798,10693,15360,10886,10798,10693,15360,10910,10814,10709,15360,10942,10846,10733,15360,10838,10733,10597,15360,10878,10774,10645,15360,10918,10822,10701,15360,10878,10782,10653,15360,10894,10790,10661,15360,10934,10838,10725,15360,10958,10854,10725,15360,10966,10862,10733,15360,10910,10806,10685,15360,10982,10878,10758,15360,10942,10854,10749,15360,10934,10838,10733,15360,10918,10814,10701,15360,10894,10798,10669,15360,10894,10798,10669,15360,10814,10725,10605,15360,10902,10798,10669,15360,10814,10725,10605,15360,10894,10798,10685,15360,10958,10862,10749,15360,10910,10814,10701,15360,10910,10806,10685,15360,10918,10814,10693,15360,10926,10822,10709,15360,10894,10790,10661,15360,10902,10806,10677,15360,10902,10806,10685,15360,10934,10838,10717,15360,10934,10838,10701,15360,10934,10838,10717,15360,10950,10854,10725,15360,10894,10798,10661,15360,10862,10749,10597,15360,10894,10798,10677,15360,10878,10782,10661,15360,10926,10838,10717,15360,10926,10838,10717,15360,10918,10822,10709,15360,10934,10838,10733,15360,10926,10838,10733,15360,10958,10870,10766,15360,10942,10854,10749,15360,10958,10870,10774,15360,10974,10878,10774,15360,10958,10854,10741,15360,10950,10846,10741,15360,10950,10854,10758,15360,10934,10838,10733,15360,10942,10846,10725,15360,10966,10862,10741,15360,10926,10838,10733,15360,10958,10862,10749,15360,10910,10822,10709,15360,10942,10854,10758,15360,10926,10838,10733,15360,10910,10822,10717,15360,10934,10838,10733,15360,10934,10846,10733,15360,10902,10814,10709,15360,10926,10830,10717,15360,10918,10822,10709,15360,10838,10749,10637,15360,10878,10790,10677,15360,10942,10846,10733,15360,10926,10822,10701,15360,10958,10862,10749,15360,10886,10790,10685,15360,10918,10814,10693,15360,10910,10814,10693,15360,10902,10806,10701,15360,10878,10774,10637,15360,10798,10693,10565,15360,10822,10725,10597,15360,10934,10838,10709,15360,10958,10854,10725,15360,10886,10790,10669,15360,10910,10806,10677,15360,10886,10782,10645,15360,10830,10725,10597,15360,10822,10717,10581,15360,10862,10758,10637,15360,10878,10782,10669,15360,10926,10822,10709,15360,10974,10878,10774,15360,10966,10870,10758,15360,10918,10822,10709,15360,10846,10749,10645,15360,10894,10798,10693,15360,10918,10822,10709,15360,10974,10878,10774,15360,10918,10822,10717,15360,10982,10886,10774,15360,10974,10878,10758,15360,10950,10854,10741,15360,10958,10854,10725,15360,10982,10886,10766,15360,10918,10822,10701,15360,10878,10782,10669,15360,10886,10790,10669,15360,10934,10838,10717,15360,10950,10854,10741,15360,10934,10838,10733,15360,10982,10886,10782,15360,10886,10798,10701,15360,10870,10782,10685,15360,10894,10814,10717,15360,10910,10822,10725,15360,10934,10838,10733,15360,10950,10846,10741,15360,10934,10838,10725,15360,10934,10846,10749,15360,10902,10814,10717,15360,10878,10790,10677,15360,10878,10782,10669,15360,10854,10766,10645,15360,10838,10749,10629,15360,10902,10814,10701,15360,10910,10814,10693,15360,10902,10798,10669,15360,10910,10806,10677,15360,10886,10782,10653,15360,10854,10749,10629,15360,10870,10774,10653,15360,10974,10870,10758,15360,10990,10878,10758,15360,10918,10822,10709,15360,10926,10838,10725,15360,10958,10854,10733,15360,10894,10790,10653,15360,10822,10725,10605,15360,10878,10782,10661,15360,10974,10870,10749,15360,10902,10806,10677,15360,10934,10838,10725,15360,10870,10774,10653,15360,10798,10701,10581,15360,10854,10749,10621,15360,10894,10798,10669,15360,10934,10822,10685,15360,10942,10830,10701,15360,10910,10806,10669,15360,10870,10758,10629,15360,10886,10774,10645,15360,10950,10838,10701,15360,10966,10870,10749,15360,10886,10790,10685,15360,10870,10782,10677,15360,10934,10838,10733,15360,10934,10838,10725,15360,10822,10725,10621,15360,10878,10790,10677,15360,10894,10798,10693,15360,10822,10733,10629,15360,10894,10798,10685,15360,10998,10902,10790,15360,11015,10918,10806,15360,10950,10854,10741,15360,10950,10846,10741,15360,10934,10838,10733,15360,10942,10846,10749,15360,10910,10822,10725,15360,10846,10758,10653,15360,10878,10790,10685,15360,10894,10798,10701,15360,10862,10774,10669,15360,10814,10725,10621,15360,10846,10758,10645,15360,10870,10774,10661,15360,10870,10774,10677,15360,10878,10790,10693,15360,10878,10782,10677,15360,10830,10741,10637,15360,10870,10782,10677,15360,10966,10870,10766,15360,11015,10918,10814,15360,10910,10814,10701,15360,10942,10846,10725,15360,10950,10846,10725,15360,10942,10838,10725,15360,10934,10830,10701,15360,10910,10798,10677,15360,10886,10782,10653,15360,10838,10733,10597,15360,10902,10806,10669,15360,10830,10733,10613,15360,10838,10741,10621,15360,10838,10741,10621,15360,10894,10798,10669,15360,10934,10830,10685,15360,10886,10790,10669,15360,10902,10806,10685,15360,10854,10749,10637,15360]);function Vyt(){let t=document.createElement("div");return t.setAttribute("style","height: 1in; visibility: hidden; position: absolute; margin: 0; padding: 0;"),document.body.appendChild(t),.0254/t.clientHeight}var pYt={file:1,m:1,mm:.001,cm:.01,ft:.3048,in:.0254,pt:Vyt()},zyt={file:"m",m:"m",mm:"mm",cm:"cm",ft:"ft",in:"in",pt:"pt"},jyt=t=>t===2?"\xB2":t===3?"\xB3":"",PB=(t,r=1)=>zyt[t]+jyt(r);var jC=class{static getCameraPositionByBboxAndView(r,e,i,n,s){let a=jC.getCameraDirectionByView(e);return this.getCameraPositionByBboxAndDirection(r,i,n,s,a)}static getCameraPositionByBboxAndDirection(r,e,i,n,s){if(r.isEmpty()||!n)return;let a=new A,o=new A,l=new A(0,1,0);r.getSize(o),r.getCenter(a);let c=(o.x+o.y+o.z)/3*1.5,u,h;if(!s||s!=null&&s.equals(new A))u=new A(a.x+c,a.y+c/1.5,a.z+c),h=u.clone().sub(a);else{let y=new A(c,c/1.5,c).length();h=new A(-s.x,-s.y,-s.z).normalize().multiplyScalar(y),u=h.clone().add(a)}c=h.length(),h=h.normalize();let p=new Ue;p.lookAt(u,a,l);let d=new Ue;d.makeTranslation(-u.x,-u.y,-u.z);let f=r.clone().applyMatrix4(d).applyMatrix4(p.invert()).applyMatrix4(n),m=Math.max(Math.abs(f.max.x),Math.abs(f.min.x)),g=Math.max(Math.abs(f.max.y),Math.abs(f.min.y));c*=Math.sqrt(Math.pow(m,2)+Math.pow(g,2))*1.1,u=h.multiplyScalar(c).add(a),i.set(a.x,a.y,a.z),e.set(u.x,u.y,u.z)}static getCameraDirectionByView(r){let e=new A(1,0,0);return r==="Top"?e.set(0,-1,0):r==="Bottom"?e.set(0,1,0):r==="Front"?e.set(0,0,-1):r==="Back"?e.set(0,0,1):r==="Left"?e.set(1,0,0):r==="Right"&&e.set(-1,0,0),e}static sleep(r){return ot(this,null,function*(){let e;return new Promise(i=>{e=setTimeout(()=>{i("")},r)}).then(()=>{clearTimeout(e)})})}static twinkle(r,e=500){return ot(this,null,function*(){let i=jC.twinklingObjectIds;i[r.id]||(i[r.id]=!0,r.visible=!r.visible,yield this.sleep(e),r.visible=!r.visible,yield this.sleep(e),r.visible=!r.visible,yield this.sleep(e),r.visible=!r.visible,yield this.sleep(e),r.visible=!r.visible,yield this.sleep(e),r.visible=!r.visible,delete i[r.id])})}},bs=jC;bs.twinklingObjectIds={};var Wyt=!1,po=class extends jo{constructor(e){super();this.DEFAULT_LINE_WIDTH=1;this.DEFAULT_STROKE_STYLE="#000000";this.DEFAULT_FILL_STYLE="#000000";this.lineWidth=this.DEFAULT_LINE_WIDTH;this.lineColor=this.DEFAULT_STROKE_STYLE;this.fillColor=this.DEFAULT_FILL_STYLE;this.x=0;this.y=0;this.points=[];this.userData={};this.width=0;this.height=0;this.tolerance=1;this.visible=!0;this.selected=!1;this.needsFrustumCulled=!0;this.editPointSize=3;this.editPointColor="#ffffff";this.matrix=new Ue;this.id=e||St.guid()}setTolerance(e){this.tolerance=e}render(e,i){this.ctx=e,this.draw(e,i),this.selected&&this.drawSelect(e,i),Wyt&&(this.drawBounds(e,i),this.drawCenter(e,i))}getData(){return{id:this.id,points:this.points.map(e=>[e.x,e.y]),lineWidth:this.lineWidth,lineColor:this.lineColor,fillColor:this.fillColor,type:this.getClassType()}}setData(e){this.id=e.id,this.setLineWidth(e.lineWidth),this.setLineColor(e.lineColor),this.setFillColor(e.fillColor)}getVertexs(){let e=new A(this.x,this.y,0),i=new A(this.x+this.width,this.y,0),n=new A(this.x+this.width,this.y+this.height,0),s=new A(this.x,this.y+this.height,0);return[e,i,n,s]}setLineWidth(e){this.lineWidth=e||this.DEFAULT_LINE_WIDTH}setLineColor(e){this.lineColor=e||this.DEFAULT_STROKE_STYLE}setFillColor(e){this.fillColor=e||this.DEFAULT_FILL_STYLE}isSelected(){return this.selected}getCenter(){return this.getBounds().getCenter(new A)}transToScreenCoord(e,i){return this.ctx?Mr.worldPosition2ScreenPoint(e,i,this.ctx.canvas):new le}drawBounds(e,i){let{min:n,max:s}=this.getBounds(),a=[],o=(l,c,u)=>a.push(new A(l,c,u));o(s.x,s.y,s.z),o(n.x,s.y,s.z),o(n.x,n.y,s.z),o(s.x,n.y,s.z),o(s.x,s.y,n.z),o(n.x,s.y,n.z),o(n.x,n.y,n.z),o(s.x,n.y,n.z),o(n.x,s.y,s.z),o(n.x,n.y,s.z),o(s.x,s.y,s.z),o(s.x,n.y,s.z),o(s.x,s.y,n.z),o(s.x,n.y,n.z),o(n.x,s.y,n.z),o(n.x,n.y,n.z),o(n.x,s.y,s.z),o(n.x,s.y,n.z),o(s.x,s.y,s.z),o(s.x,s.y,n.z),o(n.x,n.y,s.z),o(n.x,n.y,n.z),o(s.x,n.y,s.z),o(s.x,n.y,n.z),e.save(),e.strokeStyle="yellow",e.beginPath(),a.forEach((l,c)=>{let u=this.transToScreenCoord(l,i);c%2===0?e.moveTo(u.x,u.y):e.lineTo(u.x,u.y)}),e.closePath(),e.stroke(),e.restore()}drawCenter(e,i){let n=this.transToScreenCoord(this.getCenter(),i);e.save(),e.fillStyle="yellow",e.beginPath(),e.arc(n.x,n.y,5,0,Math.PI*2),e.closePath(),e.fill(),e.restore()}getBounds(){let e=this.getVertexs();return new Ot().setFromPoints(e)}};var $g=(i=>(i.LayoutChanged="LayoutChanged",i.RenderAfter="RenderAfter",i.CameraChanged="CameraChanged",i))($g||{});var Kpe={},Dr=class extends jo{constructor(e){super();this.drawableLists=[];this.frustum=new eo;this.projScreenMatrix=new Ue;this.viewer=e,this.init()}static _registerDrawableClass(e){Kpe[e.prototype.getClassType()]=e}static createDrawable(e){let i=Kpe[e.type];if(!i)throw new Error(`Invalid drawable type: ${i}`);let n=e.points.map(a=>new A(a[0],a[1],a[2]||0)),s=new i(e.id,n);return s.setData(e),s}get container(){return this.viewer.viewerContainer}get camera(){return this.viewer.camera}get raycaster(){return this.viewer.getRaycaster()}getPixelSize(e,i){let{clientWidth:n,clientHeight:s}=this.container,a=0;if(i.type==="OrthographicCamera"){let o=i;a=e*Math.max(o.right-o.left,o.top-o.bottom)/o.zoom/Math.max(n,s)}else if(i.type==="PerspectiveCamera"){let o=i,l=this.viewer.cameraCfg,c=l&&St.arrayToVector3(l.eye),u=l&&St.arrayToVector3(l.look),h=c.distanceTo(u)*Math.tan(o.fov/2*Math.PI/180);a=2*e*h/s}return a}init(){this.initCanvas(),this.viewer.addEventListener("RenderAfter",()=>{this.projScreenMatrix.multiplyMatrices(this.camera.projectionMatrix,this.camera.matrixWorldInverse),this.frustum.setFromProjectionMatrix(this.projScreenMatrix),this.render()})}initCanvas(){let e=this.canvas=document.createElement("canvas"),i=this.viewer.viewerContainer;e.classList.add("overlay-renderer"),e.style.pointerEvents="none",e.style.position="absolute",e.style.left="0px",e.style.top="0px",e.style.userSelect="none",this.context=e.getContext("2d",{willReadFrequently:!0});let{clientWidth:n,clientHeight:s}=i;this.setSize(n,s),i.appendChild(e)}toHighDpr(e,i,n){let s=Math.max(window.devicePixelRatio||1,1),a=this.canvas;return a.width=i*s,a.height=n*s,e.scale(s,s),a.style.width=`${i}px`,a.style.height=`${n}px`,e}clearCanvas(){var e,i,n;(n=this.context)==null||n.clearRect(0,0,(e=this.canvas)==null?void 0:e.width,(i=this.canvas)==null?void 0:i.height)}addDrawableList(e){this.drawableLists.push(e)}render(){this.clearCanvas();let e=this.getSortedDrawables(),i=new zi;for(let n=0;n<e.length;n++){let s=e[n];s.setTolerance(this.getPixelSize(1,this.camera)),!(!s.visible||(s.getBounds().getBoundingSphere(i),s.needsFrustumCulled&&!this.frustum.intersectsSphere(i)))&&s.render(this.context,this.camera)}}setSize(e,i){let n=this.canvas;n.width=e,n.height=i,n.style.width=`${e}px`,n.style.height=`${i}px`,this.toHighDpr(this.context,e,i)}getSortedDrawables(){let e=[];return this.drawableLists.forEach(i=>{e.push(...Array.from(i.getDrawables().values()))}),e.sort((i,n)=>n.getCenter().distanceTo(this.camera.position)-i.getCenter().distanceTo(this.camera.position)),e}getDrawablesByPosition(e,i){let n=this.getSortedDrawables().reverse(),s=[];for(let a=0;a<n.length;a++){let o=n[a];o.isPointInPath(e,i)&&s.push(o)}return s}measureTextLength(e,i){let n=this.context,s=e.split(`
|
||
`),a=0;for(let o=0;o<s.length;o++){let l=s[o];n.save(),n.font=i;let c=n.measureText(l).width;n.restore(),a=Math.max(a,c)}return a}screenshot(){return ot(this,arguments,function*(e={type:"image/png",quality:.8}){var a,o,l;if(!this.canvas)return;let i=yield St.canvasToImage(this.canvas),n=yield St.canvasToImage((a=this.viewer.renderer)==null?void 0:a.domElement);return this.clearCanvas(),(o=this.context)==null||o.drawImage(n,0,0,n.width/window.devicePixelRatio,n.height/window.devicePixelRatio),(l=this.context)==null||l.drawImage(i,0,0,i.width/window.devicePixelRatio,i.height/window.devicePixelRatio),this.canvas.toDataURL(e.type,e.quality)})}getImage(e={type:"image/png",quality:.8}){var i;return(i=this.canvas)==null?void 0:i.toDataURL(e.type,e.quality)}getCanvas(){return this.canvas}destroy(){var e;this.drawableLists.forEach(i=>i.clear()),this.drawableLists=[],this.canvas&&((e=this.viewer.viewerContainer)==null||e.removeChild(this.canvas),this.canvas=void 0)}};var Hp=class{constructor(r){this.drawableMap=new Map;this.category=r}addDrawable(r){this.drawableMap.set(r.id,r)}updateDrawable(r,e){r.setData(e)}removeDrawable(r){this.drawableMap.delete(r.id)}getDrawableById(r){return this.drawableMap.get(r)}clear(){this.drawableMap.clear()}getDrawables(){return this.drawableMap}getDrawableDatas(){return Array.from(this.drawableMap).map(([r,e])=>e.getData())}setDrawableDatas(r){for(let e=0;e<r.length;e++){let i=r[e],n=Dr.createDrawable(i);this.drawableMap.set(n.id,n)}}getDrawableByPosition(r,e){let i;for(let[n,s]of this.drawableMap)if(s.visible&&s.isPointInPath(r,e)){i=s;break}return i}};var jn=class extends po{constructor(e){super(e);this.editPointSize=3;this.editPointColor="#ffffff";this.id=e||St.guid()}isSelected(){return this.selected}drawSelect(e,i){let n=this.getVertexs();this.drawPoints(e,i,n)}drawPoints(e,i,n){e.save(),e.fillStyle=this.editPointColor,e.beginPath(),n.forEach(s=>{let a=this.transToScreenCoord(s,i);e.moveTo(a.x,a.y),e.arc(a.x,a.y,this.editPointSize,0,Math.PI*2)}),e.closePath(),e.fill(),e.restore()}setEditPointSize(e){this.editPointSize=e}setEditPointColor(e){this.editPointColor=e}getCenter(){return this.getBounds().getCenter(new A)}isPointInPath(e){let i=this.getVertexs().map(n=>new le(n.x,n.y));return Wt.isPointInPolygon(new le(e.x,e.y),i,!0)}setData(e){super.setData(e),this.update(e.points.map(i=>new A(i[0],i[1],0)))}translate(e,i){let n=new A(e,i,0);return this.points.forEach(s=>s.add(n)),this.update(this.points),this}rotate(){return this}scale(){return this}};var fo=(u=>(u.Arrow="ArrowMarkup",u.Circle="CircleMarkup",u.CloudLine="CloudLineMarkup",u.CloudLineRectangle="CloudRectMarkup",u.Dot="DotMarkup",u.Ellipse="EllipseMarkup",u.PolyLine="PolylineMarkup",u.Rectangle="RectMarkup",u.Text="TextMarkup",u.X="XMarkup",u))(fo||{});var NB=class extends jn{constructor(e,i){super(e);this.type="ArrowMarkup";this.update(i)}draw(e,i){let n=this.points.map(s=>this.transToScreenCoord(s,i));this.drawArrowLine(e,n),this.drawArrowHead(e,n[0],n[1],this.lineWidth+10,this.lineWidth+20)}drawArrowLine(e,i){e.save(),e.lineWidth=this.lineWidth,e.strokeStyle=this.lineColor;let[n,s]=i,a=new le().subVectors(s,n).normalize();e.beginPath(),e.moveTo(n.x,n.y);let o=s.clone().sub(a.multiplyScalar(this.lineWidth+5));e.lineTo(o.x,o.y),e.closePath(),e.stroke(),e.restore()}drawArrowHead(e,i,n,s,a){let o=Math.atan2(i.y-n.y,i.x-n.x)*180/Math.PI,l=(o+s)*Math.PI/180,c=(o-s)*Math.PI/180,u=a*Math.cos(l),h=a*Math.sin(l),p=a*Math.cos(c),d=a*Math.sin(c),f=new le(n.x+u,n.y+h),m=new le(n.x+p,n.y+d);e.save(),e.fillStyle=this.lineColor,e.beginPath(),e.moveTo(n.x,n.y),e.lineTo(f.x,f.y),e.lineTo(m.x,m.y),e.closePath(),e.fill(),e.restore()}getVertexs(){return this.points}update(e){let[i,n]=e;return this.points=e,this.x=Math.min(i.x,n.x),this.y=Math.min(i.y,n.y),this.width=Math.abs(n.x-i.x),this.height=Math.abs(n.y-i.y),this}isPointInPath(e){return Wt.isPointOnLineSegments(e,this.points,this.tolerance)}getClassType(){return"ArrowMarkup"}};Dr._registerDrawableClass(NB);var LB=class extends jn{constructor(e,i){super(e);this.radius=1;this.type="CircleMarkup";this.update(i)}draw(e,i){let[n,s]=this.points.map(a=>this.transToScreenCoord(a,i));this.radius=new le().subVectors(s,n).length(),e.save(),e.lineWidth=this.lineWidth,e.strokeStyle=this.lineColor,e.fillStyle=this.fillColor,e.beginPath(),e.arc(n.x,n.y,this.radius,0,Math.PI*2),e.closePath(),e.stroke(),e.restore()}update(e){let[i,n]=e,s=new A().subVectors(n,i).length();return this.width=s*2,this.height=s*2,this.x=i.x-this.width/2,this.y=i.y-this.height/2,this.points=e,this}isPointInPath(e){let[i,n]=this.points,s=new A().subVectors(i,n).length();return Math.abs(e.distanceTo(i)-s)<=this.tolerance*2}getClassType(){return"CircleMarkup"}};Dr._registerDrawableClass(LB);var qyt=new Ot,Up=class extends jn{constructor(e,i){super(e);this.type="CloudLineMarkup";this.update(i)}draw(e,i){let n=this.points,s=[];e.save(),e.lineWidth=this.lineWidth,e.strokeStyle=this.lineColor,e.fillStyle=this.fillColor,e.beginPath();for(let a=0;a<n.length-1;a++){let o=this.transToScreenCoord(n[a],i),l=this.transToScreenCoord(n[a+1],i),c=Up.getControlPointByTwoPoints(o,l);a===0&&e.moveTo(o.x,o.y),e.quadraticCurveTo(c.x,c.y,l.x,l.y),s.push(n[a],n[a+1])}e.stroke(),e.restore(),this.calculateWidthAndHeight(s)}static getControlPointByTwoPoints(e,i){let n=new le().subVectors(i,e),s=n.angle(),a=n.length(),o=wr.degToRad(45),l=a/2/Math.cos(o);return new le(e.x+l*Math.cos(o-s),e.y-l*Math.sin(o-s))}calculateWidthAndHeight(e){let i=new Ot;for(let a=0;a<e.length-1;a++){let o=e[a],l=e[a+1],c=new A().lerpVectors(o,l,.5),u=new A().subVectors(l,o).length(),h=new Ot().setFromCenterAndSize(c,new A(u,u,0));i.union(h)}let{min:n,max:s}=i;this.width=Math.abs(s.x-n.x),this.height=Math.abs(s.y-n.y),this.x=n.x,this.y=n.y}update(e){let{min:i,max:n}=qyt.setFromPoints(e);return this.x=i.x,this.y=i.y,this.width=Math.abs(n.x-i.x),this.height=Math.abs(n.y-i.y),this.points=e,this}getClassType(){return"CloudLineMarkup"}};Dr._registerDrawableClass(Up);var FB=class extends jn{constructor(e,i){super(e);this.type="CloudRectMarkup";this.update(i)}draw(e,i){e.save(),e.lineWidth=this.lineWidth,e.strokeStyle=this.lineColor,e.fillStyle=this.fillColor,e.beginPath();let n=this.getVertexs();n.push(n[0]);let s,a=[];for(let o=0;o<n.length-1;o++){let l=this.transToScreenCoord(n[o],i),c=this.transToScreenCoord(n[o+1],i),u=new le().subVectors(c,l);s||(s=u.length()/10);let h=u.length(),p=u.normalize(),d=Math.round(h/s);for(let f=0;f<d;f++)a.push(l.clone().add(p.clone().multiplyScalar(s*f)))}a.push(a[0]);for(let o=0;o<a.length-1;o++){let l=a[o],c=a[o+1],u=Up.getControlPointByTwoPoints(c,l);o===0&&e.moveTo(l.x,l.y),e.quadraticCurveTo(u.x,u.y,c.x,c.y)}e.closePath(),e.stroke(),e.restore()}update(e){let[i,n]=e;return this.points=e,this.x=Math.min(i.x,n.x),this.y=Math.min(i.y,n.y),this.width=Math.abs(n.x-i.x),this.height=Math.abs(n.y-i.y),this}isPointInPath(e){let i=this.getVertexs(),n=[];for(let s=0;s<i.length;s++){let a=i[s],o=i[s+1]||i[0];n.push(a,o)}return Wt.isPointOnLineSegments(e,n,this.tolerance*3)}getClassType(){return"CloudRectMarkup"}};Dr._registerDrawableClass(FB);var HB=class extends jn{constructor(e,i){super(e);this.radius=8;this.update(i)}draw(e,i){let n=this.transToScreenCoord(this.points[0],i);this.width=this.radius*2*this.tolerance,this.height=this.radius*2*this.tolerance,this.x=this.points[0].x-this.radius*this.tolerance,this.y=this.points[0].y-this.radius*this.tolerance,e.save(),e.lineWidth=this.lineWidth,e.strokeStyle=this.lineColor,e.fillStyle=this.fillColor,e.beginPath(),e.arc(n.x,n.y,this.radius,0,Math.PI*2),e.closePath(),e.fill(),e.stroke(),e.restore()}update(e){let i=e[0];return this.width=this.radius*2*this.tolerance,this.height=this.radius*2*this.tolerance,this.x=i.x-this.radius*this.tolerance,this.y=i.y-this.radius*this.tolerance,this.points=e,this}getClassType(){return"DotMarkup"}};Dr._registerDrawableClass(HB);var UB=class extends jn{constructor(e,i){super(e);this.radiusX=1;this.radiusY=1;this.type="EllipseMarkup";this.update(i)}draw(e,i){let[n,s]=this.points.map(o=>this.transToScreenCoord(o,i)),a=new le().lerpVectors(n,s,.5);this.radiusX=Math.abs(s.x-n.x)/2,this.radiusY=Math.abs(s.y-n.y)/2,e.save(),e.lineWidth=this.lineWidth,e.strokeStyle=this.lineColor,e.fillStyle=this.fillColor,e.beginPath(),e.ellipse(a.x,a.y,this.radiusX,this.radiusY,0,0,Math.PI*2),e.closePath(),e.stroke(),e.restore()}update(e){let[i,n]=e;return this.x=Math.min(i.x,n.x),this.y=Math.min(i.y,n.y),this.width=Math.abs(n.x-i.x),this.height=Math.abs(n.y-i.y),this.points=e,this}isPointInPath(e){let[i,n]=this.points,s=new A().lerpVectors(i,n,.5),a=Math.abs(n.x-i.x)/2,o=Math.abs(n.y-i.y)/2,l=Math.pow(e.x-s.x,2)/(a*a),c=Math.pow(e.y-s.y,2)/(o*o);return Math.abs(l+c-1)<=.1}getClassType(){return"EllipseMarkup"}};Dr._registerDrawableClass(UB);var BB=class extends jn{constructor(e,i){super(e);this.type="PolylineMarkup";this.update(i)}draw(e,i){e.save(),e.lineWidth=this.lineWidth,e.strokeStyle=this.lineColor,e.fillStyle=this.fillColor;let n=this.points;e.beginPath(),n.forEach((s,a)=>{let o=this.transToScreenCoord(s,i);a===0?e.moveTo(o.x,o.y):e.lineTo(o.x,o.y)}),e.stroke(),e.restore()}isPointInPath(e){let i=this.points,n=[];for(let s=0;s<i.length-1;s++)n.push(i[s],i[s+1]);return Wt.isPointOnLineSegments(e,n,this.tolerance*1)}getVertexs(){return this.points}update(e){let{min:i,max:n}=new Ot().setFromPoints(e);return this.x=i.x,this.y=i.y,this.width=Math.abs(n.x-i.x),this.height=Math.abs(n.y-i.y),this.points=e,this}getClassType(){return"PolylineMarkup"}};Dr._registerDrawableClass(BB);var kB=class extends jn{constructor(e,i){super(e);this.type="RectMarkup";this.update(i)}draw(e,i){e.save(),e.lineWidth=this.lineWidth,e.strokeStyle=this.lineColor,e.fillStyle=this.fillColor,e.beginPath(),this.getVertexs().forEach((s,a)=>{let o=this.transToScreenCoord(s,i);a===0?e.moveTo(o.x,o.y):e.lineTo(o.x,o.y)}),e.closePath(),e.stroke(),e.restore()}update(e){let[i,n]=e;return this.x=Math.min(i.x,n.x),this.y=Math.min(i.y,n.y),this.width=Math.abs(n.x-i.x),this.height=Math.abs(n.y-i.y),this.points=e,this}isPointInPath(e){let i=this.getVertexs(),n=[];for(let s=0;s<i.length;s++){let a=i[s],o=i[s+1]||i[0];n.push(a,o)}return Wt.isPointOnLineSegments(e,n,this.tolerance*2)}getClassType(){return"RectMarkup"}};Dr._registerDrawableClass(kB);var GB=class extends jn{constructor(e,i,n){super(e);this.text="";this.fontSize=12;this.textWidth=0;this.textRow=1;this.type="TextMarkup";this.update(i),this.text=n}draw(e,i){e.save(),e.lineWidth=this.lineWidth,e.strokeStyle=this.lineColor,e.fillStyle=this.lineColor,e.font=`${this.fontSize/this.tolerance}px Arial`;let n=this.formatText(e,this.text),s=this.transToScreenCoord(new A(this.x,this.y,0),i);this.drawText(e,n,s.x,s.y),e.restore()}drawText(e,i,n,s){for(let a=0;a<i.length;a++){let o=i[a];if(o.lineWidth<this.textWidth+2){let l=o.lineText;e.fillText(l,n,s-a*this.fontSize/this.tolerance-4)}}this.width||(this.width=this.textWidth*this.tolerance),this.height||(this.height=i.length*this.fontSize),this.textRow=i.length}formatText(e,i){let n=i.split(`
|
||
`),s=[];for(let a=0;a<n.length;a++){let o=n[a],l=e.measureText(o).width;l>this.textWidth&&(this.textWidth=l),s.push({lineWidth:l,lineText:o})}return this.textRow!==s.length&&(this.y-=(s.length-1)*this.fontSize),s.reverse()}setFontSize(e){this.fontSize=e}update(e){let i=e[0];return this.x=i.x,this.y=i.y,this.points=[i],this.textRow=1,this}setData(e){super.setData(e),this.text=e.text,this.setFontSize(e.fontSize)}updateText(e){this.text=e}getData(){return{id:this.id,points:this.points.map(e=>[e.x,e.y]),text:this.text,lineWidth:this.lineWidth,lineColor:this.lineColor,fillColor:this.fillColor,fontSize:this.fontSize,type:this.getClassType()}}getClassType(){return"TextMarkup"}};Dr._registerDrawableClass(GB);var VB=class extends jn{constructor(e,i){super(e);this.type="XMarkup";this.update(i)}draw(e,i){e.save(),e.lineWidth=this.lineWidth,e.strokeStyle=this.lineColor,e.beginPath();let[n,s,a,o]=this.getVertexs().map(l=>this.transToScreenCoord(l,i));e.moveTo(n.x,n.y),e.lineTo(a.x,a.y),e.moveTo(s.x,s.y),e.lineTo(o.x,o.y),e.closePath(),e.stroke(),e.restore()}isPointInPath(e){let[i,n,s,a]=this.getVertexs();return Wt.isPointOnLineSegments(e,[i,s,n,a],.1)}update(e){let[i,n]=e;return this.points=e,this.x=Math.min(i.x,n.x),this.y=Math.min(i.y,n.y),this.width=Math.abs(n.x-i.x),this.height=Math.abs(n.y-i.y),this}getClassType(){return"XMarkup"}};Dr._registerDrawableClass(VB);var Jpe={type:"change"},zB={type:"start"},Qpe={type:"end"},cT=class extends Ra{constructor(r,e){super(),this.object=r,this.domElement=e,this.domElement.style.touchAction="none",this.enabled=!0,this.target=new A,this.minDistance=0,this.maxDistance=1/0,this.minZoom=0,this.maxZoom=1/0,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.minAzimuthAngle=-1/0,this.maxAzimuthAngle=1/0,this.enableDamping=!1,this.dampingFactor=.05,this.enableZoom=!0,this.zoomSpeed=1,this.enableRotate=!0,this.rotateSpeed=1,this.enablePan=!0,this.panSpeed=1,this.screenSpacePanning=!0,this.keyPanSpeed=7,this.autoRotate=!1,this.autoRotateSpeed=2,this.keys={LEFT:"ArrowLeft",UP:"ArrowUp",RIGHT:"ArrowRight",BOTTOM:"ArrowDown"},this.mouseButtons={LEFT:bi.ROTATE,MIDDLE:bi.DOLLY,RIGHT:bi.PAN},this.touches={ONE:ao.ROTATE,TWO:ao.DOLLY_PAN},this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this._domElementKeyEvents=null,this.getPolarAngle=function(){return o.phi},this.getAzimuthalAngle=function(){return o.theta},this.getDistance=function(){return this.object.position.distanceTo(this.target)},this.listenToKeyEvents=function(ye){ye.addEventListener("keydown",me),this._domElementKeyEvents=ye},this.saveState=function(){i.target0.copy(i.target),i.position0.copy(i.object.position),i.zoom0=i.object.zoom},this.reset=function(){i.target.copy(i.target0),i.object.position.copy(i.position0),i.object.zoom=i.zoom0,i.object.updateProjectionMatrix(),i.dispatchEvent(Jpe),i.update(),s=n.NONE},this.update=function(){let ye=new A,Re=new Or().setFromUnitVectors(r.up,new A(0,1,0)),ut=Re.clone().invert(),vt=new A,Et=new Or,Ct=2*Math.PI;return function(){let cr=i.object.position;ye.copy(cr).sub(i.target),ye.applyQuaternion(Re),o.setFromVector3(ye),i.autoRotate&&s===n.NONE&&w(P()),i.enableDamping?(o.theta+=l.theta*i.dampingFactor,o.phi+=l.phi*i.dampingFactor):(o.theta+=l.theta,o.phi+=l.phi);let Xt=i.minAzimuthAngle,gr=i.maxAzimuthAngle;return isFinite(Xt)&&isFinite(gr)&&(Xt<-Math.PI?Xt+=Ct:Xt>Math.PI&&(Xt-=Ct),gr<-Math.PI?gr+=Ct:gr>Math.PI&&(gr-=Ct),Xt<=gr?o.theta=Math.max(Xt,Math.min(gr,o.theta)):o.theta=o.theta>(Xt+gr)/2?Math.max(Xt,o.theta):Math.min(gr,o.theta)),o.phi=Math.max(i.minPolarAngle,Math.min(i.maxPolarAngle,o.phi)),o.makeSafe(),o.radius*=c,o.radius=Math.max(i.minDistance,Math.min(i.maxDistance,o.radius)),i.enableDamping===!0?i.target.addScaledVector(u,i.dampingFactor):i.target.add(u),ye.setFromSpherical(o),ye.applyQuaternion(ut),cr.copy(i.target).add(ye),i.object.lookAt(i.target),i.enableDamping===!0?(l.theta*=1-i.dampingFactor,l.phi*=1-i.dampingFactor,u.multiplyScalar(1-i.dampingFactor)):(l.set(0,0,0),u.set(0,0,0)),c=1,h||vt.distanceToSquared(i.object.position)>a||8*(1-Et.dot(i.object.quaternion))>a?(i.dispatchEvent(Jpe),vt.copy(i.object.position),Et.copy(i.object.quaternion),h=!1,!0):!1}}(),this.dispose=function(){i.domElement.removeEventListener("contextmenu",xe),i.domElement.removeEventListener("pointerdown",nt),i.domElement.removeEventListener("pointercancel",_e),i.domElement.removeEventListener("wheel",re),i.domElement.removeEventListener("pointermove",bt),i.domElement.removeEventListener("pointerup",mt),i._domElementKeyEvents!==null&&i._domElementKeyEvents.removeEventListener("keydown",me)};let i=this,n={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6},s=n.NONE,a=1e-6,o=new Pc,l=new Pc,c=1,u=new A,h=!1,p=new le,d=new le,f=new le,m=new le,g=new le,y=new le,E=new le,b=new le,x=new le,S=[],D={};function P(){return 2*Math.PI/60/60*i.autoRotateSpeed}function _(){return Math.pow(.95,i.zoomSpeed)}function w(ye){l.theta-=ye}function F(ye){l.phi-=ye}let X=function(){let ye=new A;return function(ut,vt){ye.setFromMatrixColumn(vt,0),ye.multiplyScalar(-ut),u.add(ye)}}(),H=function(){let ye=new A;return function(ut,vt){i.screenSpacePanning===!0?ye.setFromMatrixColumn(vt,1):(ye.setFromMatrixColumn(vt,0),ye.crossVectors(i.object.up,ye)),ye.multiplyScalar(ut),u.add(ye)}}(),he=function(){let ye=new A;return function(ut,vt){let Et=i.domElement;if(i.object.isPerspectiveCamera){let Ct=i.object.position;ye.copy(Ct).sub(i.target);let Dt=ye.length();Dt*=Math.tan(i.object.fov/2*Math.PI/180),X(2*ut*Dt/Et.clientHeight,i.object.matrix),H(2*vt*Dt/Et.clientHeight,i.object.matrix)}else i.object.isOrthographicCamera?(X(ut*(i.object.right-i.object.left)/i.object.zoom/Et.clientWidth,i.object.matrix),H(vt*(i.object.top-i.object.bottom)/i.object.zoom/Et.clientHeight,i.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),i.enablePan=!1)}}();function C(ye){i.object.isPerspectiveCamera?c/=ye:i.object.isOrthographicCamera?(i.object.zoom=Math.max(i.minZoom,Math.min(i.maxZoom,i.object.zoom*ye)),i.object.updateProjectionMatrix(),h=!0):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),i.enableZoom=!1)}function N(ye){i.object.isPerspectiveCamera?c*=ye:i.object.isOrthographicCamera?(i.object.zoom=Math.max(i.minZoom,Math.min(i.maxZoom,i.object.zoom/ye)),i.object.updateProjectionMatrix(),h=!0):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),i.enableZoom=!1)}function k(ye){p.set(ye.clientX,ye.clientY)}function G(ye){E.set(ye.clientX,ye.clientY)}function U(ye){m.set(ye.clientX,ye.clientY)}function j(ye){d.set(ye.clientX,ye.clientY),f.subVectors(d,p).multiplyScalar(i.rotateSpeed);let Re=i.domElement;w(2*Math.PI*f.x/Re.clientHeight),F(2*Math.PI*f.y/Re.clientHeight),p.copy(d),i.update()}function ee(ye){b.set(ye.clientX,ye.clientY),x.subVectors(b,E),x.y>0?C(_()):x.y<0&&N(_()),E.copy(b),i.update()}function ae(ye){g.set(ye.clientX,ye.clientY),y.subVectors(g,m).multiplyScalar(i.panSpeed),he(y.x,y.y),m.copy(g),i.update()}function se(ye){ye.deltaY<0?N(_()):ye.deltaY>0&&C(_()),i.update()}function ue(ye){let Re=!1;switch(ye.code){case i.keys.UP:ye.ctrlKey||ye.metaKey||ye.shiftKey?F(2*Math.PI*i.rotateSpeed/i.domElement.clientHeight):he(0,i.keyPanSpeed),Re=!0;break;case i.keys.BOTTOM:ye.ctrlKey||ye.metaKey||ye.shiftKey?F(-2*Math.PI*i.rotateSpeed/i.domElement.clientHeight):he(0,-i.keyPanSpeed),Re=!0;break;case i.keys.LEFT:ye.ctrlKey||ye.metaKey||ye.shiftKey?w(2*Math.PI*i.rotateSpeed/i.domElement.clientHeight):he(i.keyPanSpeed,0),Re=!0;break;case i.keys.RIGHT:ye.ctrlKey||ye.metaKey||ye.shiftKey?w(-2*Math.PI*i.rotateSpeed/i.domElement.clientHeight):he(-i.keyPanSpeed,0),Re=!0;break}Re&&(ye.preventDefault(),i.update())}function ve(){if(S.length===1)p.set(S[0].pageX,S[0].pageY);else{let ye=.5*(S[0].pageX+S[1].pageX),Re=.5*(S[0].pageY+S[1].pageY);p.set(ye,Re)}}function be(){if(S.length===1)m.set(S[0].pageX,S[0].pageY);else{let ye=.5*(S[0].pageX+S[1].pageX),Re=.5*(S[0].pageY+S[1].pageY);m.set(ye,Re)}}function de(){let ye=S[0].pageX-S[1].pageX,Re=S[0].pageY-S[1].pageY,ut=Math.sqrt(ye*ye+Re*Re);E.set(0,ut)}function we(){i.enableZoom&&de(),i.enablePan&&be()}function Fe(){i.enableZoom&&de(),i.enableRotate&&ve()}function je(ye){if(S.length==1)d.set(ye.pageX,ye.pageY);else{let ut=gt(ye),vt=.5*(ye.pageX+ut.x),Et=.5*(ye.pageY+ut.y);d.set(vt,Et)}f.subVectors(d,p).multiplyScalar(i.rotateSpeed);let Re=i.domElement;w(2*Math.PI*f.x/Re.clientHeight),F(2*Math.PI*f.y/Re.clientHeight),p.copy(d)}function Oe(ye){if(S.length===1)g.set(ye.pageX,ye.pageY);else{let Re=gt(ye),ut=.5*(ye.pageX+Re.x),vt=.5*(ye.pageY+Re.y);g.set(ut,vt)}y.subVectors(g,m).multiplyScalar(i.panSpeed),he(y.x,y.y),m.copy(g)}function dt(ye){let Re=gt(ye),ut=ye.pageX-Re.x,vt=ye.pageY-Re.y,Et=Math.sqrt(ut*ut+vt*vt);b.set(0,Et),x.set(0,Math.pow(b.y/E.y,i.zoomSpeed)),C(x.y),E.copy(b)}function Be(ye){i.enableZoom&&dt(ye),i.enablePan&&Oe(ye)}function ke(ye){i.enableZoom&&dt(ye),i.enableRotate&&je(ye)}function nt(ye){i.enabled!==!1&&(S.length===0&&(i.domElement.setPointerCapture(ye.pointerId),i.domElement.addEventListener("pointermove",bt),i.domElement.addEventListener("pointerup",mt)),Ce(ye),ye.pointerType==="touch"?z(ye):J(ye))}function bt(ye){i.enabled!==!1&&(ye.pointerType==="touch"?Y(ye):$(ye))}function mt(ye){Ge(ye),S.length===0&&(i.domElement.releasePointerCapture(ye.pointerId),i.domElement.removeEventListener("pointermove",bt),i.domElement.removeEventListener("pointerup",mt)),i.dispatchEvent(Qpe),s=n.NONE}function _e(ye){Ge(ye)}function J(ye){let Re;switch(ye.button){case 0:Re=i.mouseButtons.LEFT;break;case 1:Re=i.mouseButtons.MIDDLE;break;case 2:Re=i.mouseButtons.RIGHT;break;default:Re=-1}switch(Re){case bi.DOLLY:if(i.enableZoom===!1)return;G(ye),s=n.DOLLY;break;case bi.ROTATE:if(ye.ctrlKey||ye.metaKey||ye.shiftKey){if(i.enablePan===!1)return;U(ye),s=n.PAN}else{if(i.enableRotate===!1)return;k(ye),s=n.ROTATE}break;case bi.PAN:if(ye.ctrlKey||ye.metaKey||ye.shiftKey){if(i.enableRotate===!1)return;k(ye),s=n.ROTATE}else{if(i.enablePan===!1)return;U(ye),s=n.PAN}break;default:s=n.NONE}s!==n.NONE&&i.dispatchEvent(zB)}function $(ye){switch(s){case n.ROTATE:if(i.enableRotate===!1)return;j(ye);break;case n.DOLLY:if(i.enableZoom===!1)return;ee(ye);break;case n.PAN:if(i.enablePan===!1)return;ae(ye);break}}function re(ye){i.enabled===!1||i.enableZoom===!1||s!==n.NONE||(ye.preventDefault(),i.dispatchEvent(zB),se(ye),i.dispatchEvent(Qpe))}function me(ye){i.enabled===!1||i.enablePan===!1||ue(ye)}function z(ye){switch(Ze(ye),S.length){case 1:switch(i.touches.ONE){case ao.ROTATE:if(i.enableRotate===!1)return;ve(),s=n.TOUCH_ROTATE;break;case ao.PAN:if(i.enablePan===!1)return;be(),s=n.TOUCH_PAN;break;default:s=n.NONE}break;case 2:switch(i.touches.TWO){case ao.DOLLY_PAN:if(i.enableZoom===!1&&i.enablePan===!1)return;we(),s=n.TOUCH_DOLLY_PAN;break;case ao.DOLLY_ROTATE:if(i.enableZoom===!1&&i.enableRotate===!1)return;Fe(),s=n.TOUCH_DOLLY_ROTATE;break;default:s=n.NONE}break;default:s=n.NONE}s!==n.NONE&&i.dispatchEvent(zB)}function Y(ye){switch(Ze(ye),s){case n.TOUCH_ROTATE:if(i.enableRotate===!1)return;je(ye),i.update();break;case n.TOUCH_PAN:if(i.enablePan===!1)return;Oe(ye),i.update();break;case n.TOUCH_DOLLY_PAN:if(i.enableZoom===!1&&i.enablePan===!1)return;Be(ye),i.update();break;case n.TOUCH_DOLLY_ROTATE:if(i.enableZoom===!1&&i.enableRotate===!1)return;ke(ye),i.update();break;default:s=n.NONE}}function xe(ye){i.enabled!==!1&&ye.preventDefault()}function Ce(ye){S.push(ye)}function Ge(ye){delete D[ye.pointerId];for(let Re=0;Re<S.length;Re++)if(S[Re].pointerId==ye.pointerId){S.splice(Re,1);return}}function Ze(ye){let Re=D[ye.pointerId];Re===void 0&&(Re=new le,D[ye.pointerId]=Re),Re.set(ye.pageX,ye.pageY)}function gt(ye){let Re=ye.pointerId===S[0].pointerId?S[1]:S[0];return D[Re.pointerId]}i.domElement.addEventListener("contextmenu",xe),i.domElement.addEventListener("pointerdown",nt),i.domElement.addEventListener("pointercancel",_e),i.domElement.addEventListener("wheel",re,{passive:!1}),this.update()}};var WC=class{constructor(r,e){this.flyDuration=500;this.autoRotateRemainingTime=0;this.automaticallyAdjustCameraPosition=!0;this.rotateIntervalStartTime=0;this.camera=r,this.controls=e}flyTo(r,e,i){let n=this.camera,s=this.controls;if(!n||!s)return;if(r.equals(e)){console.error("[BimViewer] camera position and lookAt cannot be the same!");return}else if(isNaN(r.x)||isNaN(r.y)||isNaN(r.z)||isNaN(e.x)||isNaN(e.y)||isNaN(e.z)){console.error("[BimViewer] invalid position or lookAt!");return}if(this.automaticallyAdjustCameraPosition){let h=r.distanceTo(e);h<n.near?(r=r.clone().sub(e).normalize().multiplyScalar(n.near*1.1),console.warn("[BimViewer] camera could be too close to see the object!")):h>n.far&&(r=r.clone().sub(e).normalize().multiplyScalar(n.far*.9),console.warn("[BimViewer] camera could be too far to see the object!"))}let a=(h,p)=>{n.lookAt(p),n.position.set(h.x,h.y,h.z),s.target.set(p.x,p.y,p.z),s.update()},o=n.position.clone(),l=s.target.clone(),c=this.flyDuration,u=Date.now();this.cameraUpdateInterval&&clearInterval(this.cameraUpdateInterval),this.cameraUpdateInterval=setInterval(()=>{let h=Date.now()-u;h>c&&(h=c);let p=(m,g,y)=>{let E=m.x+(g.x-m.x)*y,b=m.y+(g.y-m.y)*y,x=m.z+(g.z-m.z)*y;return new A(E,b,x)},d=p(o,r,h/c),f=p(l,e,h/c);a(d,f),h>=c&&(clearInterval(this.cameraUpdateInterval),this.cameraUpdateInterval=void 0,i&&i())},10)}lookTo(r){let e=this.camera,i=this.controls;if(!e||!i)return;let n=e.position,s=i.target.distanceTo(n),a=r.normalize().multiplyScalar(s),o=new A(n.x+a.x,n.y+a.y,n.z+a.z);this.flyTo(n,o)}startAutoRotate(){let r=this.camera,e=this.controls;if(!r||!e)return;e.autoRotate=!0;let i=new A;r.getWorldPosition(i);let n=e.target;if(n.y===i.y)return;let s=n.y-i.y,a=50,l=1500/a,c=s/a;for(let u=0;u<a;++u)setTimeout(()=>{let h=e.target.y-c;e.target.setY(h),e.update()},u*l)}delayAutoRotate(){this.autoRotateRemainingTime=5e3,this.controls&&(this.controls.autoRotate=!1)}startToRotate(r){let i=Date.now()-this.rotateIntervalStartTime;this.rotateIntervalStartTime=Date.now(),!(this.rotateInterval&&i<100)&&(this.rotateInterval&&clearInterval(this.rotateInterval),this.rotateInterval=setInterval(()=>{if(Date.now()-this.rotateIntervalStartTime>=100){clearInterval(this.rotateInterval),this.rotateInterval=void 0;return}let s=.3;r.code==="ArrowLeft"||r.code==="ArrowRight"?this.rotateLeftOrRight(s,r.code==="ArrowLeft"):(r.code==="ArrowUp"||r.code==="ArrowDown")&&this.rotateUpOrDown(s,r.code==="ArrowUp")},1))}rotateLeftOrRight(r,e=!0){let i=this.controls;if(!this.camera||!i)return;let n=this.camera.position,s=i.target,a=s.clone(),o=Math.PI*r/180;e&&(o=-o),a.x=(s.x-n.x)*Math.cos(o)-(s.z-n.z)*Math.sin(o)+n.x,a.z=(s.z-n.z)*Math.cos(o)+(s.x-n.x)*Math.sin(o)+n.z,this.camera.lookAt(a),i.target=a,i.update()}rotateUpOrDown(r,e=!0){let i=this.controls;if(!this.camera||!i)return;let n=this.camera.position,s=i.target,a=s.clone(),o=Math.PI*r/180,c=new A(s.x-n.x,s.y-n.y,s.z-n.z).length(),u=s.y-n.y;e||(o=-o);let h=Math.asin(u/c)+o;if(h<-Math.PI/2||h>Math.PI/2)return;let p=Math.sin(h)*c;a.y=s.y+(p-u),i.target=a,i.update()}};var qC=class{constructor(r){this.object=r}instantiate(){let r=Date.now();this.instantiateInner(this.object),console.log(`[Inst] instantiate() costed ${(Date.now()-r)/1e3}s`)}instantiateInner(r){if(!r.children||r.children.length===0)return;let e=r.children.length,i={},n=[];for(let o=0;o<e;++o){let l=r.children[o];if(this.instantiateInner(l),l.children&&l.children.length>0||!l.geometry)continue;let c=!1,u=Object.values(i);for(let h=u.length-1;h>=0;--h){let p=u[h].indexes[0],d=r.children[p];if(this.geometryEquals(l.geometry,d.geometry)&&Cs.materialsEquals(l.material,d.material)){i[p]||(i[p]={indexes:[p]},this.removeFromArray(n,p)),i[p].indexes.push(o),c=!0;break}}for(let h=n.length-1;!c&&h>=0;--h){let p=n[h],d=r.children[p];if(this.geometryEquals(l.geometry,d.geometry)&&Cs.materialsEquals(l.material,d.material)){i[p]||(i[p]={indexes:[p]},this.removeFromArray(n,p)),i[p].indexes.push(o),c=!0;break}}c||n.push(o)}if(Object.keys(i).length<=0)return;let s=[],a=[];Object.values(i).forEach(o=>{let l=o.indexes;a.push(...l);let c=r.children[l[0]],u=c.material;if(u instanceof Gr)u=u.clone();else if(Array.isArray(u)){let p=[];u.forEach(d=>p.push(d.clone())),u=p}let h=new tn(c.geometry,u,l.length);h.name=`[Instanced] ${c.name}`;for(let p=0;p<l.length;++p){let d=l[p],f=r.children[d];f.updateMatrix(),h.setMatrixAt(p,f.matrix)}h.matrixAutoUpdate=!1,!1||h.updateMatrix(),s.push(h)}),a.sort((o,l)=>l-o),a.forEach(o=>r.remove(r.children[o])),s.forEach(o=>{o.parent=r,r.children.push(o)}),r.updateMatrix(),console.log(`[Inst] ${a.length}(out of ${e}) objects instanced to ${s.length} InstancedMesh`)}removeFromArray(r,e){for(let i=r.length-1;i>=0;--i)if(r[i]===e){r.splice(i,1);return}}geometryEquals(r,e){return Wt.geometryEquals(r,e)}};var uT=class{constructor(){this.TIMEOUT="timeout";this.INTERVAL="interval";this.timeoutMap={};this.intervalMap={}}run(r=this.INTERVAL,e,i=16.7){let n=Date.now,s=n(),a=s,o=Symbol(""),l=()=>{this.setIdMap(o,r,l),a=n(),a-s>=i&&(r===this.intervalMap&&(s=n(),a=s),e(),r===this.TIMEOUT&&this.clearTimeout(o))};return this.setIdMap(o,r,l),o}setIdMap(r,e,i){let n=requestAnimationFrame(i);e===this.INTERVAL?this.intervalMap[r]=n:e===this.TIMEOUT&&(this.timeoutMap[r]=n)}setTimeout(r,e){return this.run(this.TIMEOUT,r,e)}clearTimeout(r){cancelAnimationFrame(this.timeoutMap[r])}setInterval(r,e){return this.run(this.INTERVAL,r,e)}clearInterval(r){cancelAnimationFrame(this.intervalMap[r])}};var qB=Un(ede(),1),Df=class{constructor(r,e){this.endian=e&&e==="big"?"big":"little",this.position=0,this.data=new DataView(r)}readAsciiString(r){if(this.data.byteLength<this.position+r)throw"range error";let e="";for(let i=0;i<r;i++)e+=String.fromCharCode(this.data.getInt8(this.position+i));return this.position+=r,e}readUtf8String(r){let e=this.readBytes(r);return this.decoder||(this.decoder=new TextDecoder("utf-8")),this.decoder.decode(e)}readBytes(r=1){if(this.data.byteLength<this.position+r)throw"range error";let e=new Uint8Array(r);for(let i=0;i<r;i++)e[i]=this.data.getUint8(this.position+i);return this.position+=r,e}readUint8(){if(this.data.byteLength<this.position+1)throw"range error";let r=this.data.getUint8(this.position);return this.position+=1,r}readInt8(){if(this.data.byteLength<this.position+1)throw"range error";let r=this.data.getInt8(this.position);return this.position+=1,r}readUint16(){if(this.data.byteLength<this.position+2)throw"range error";let r=this.data.getUint16(this.position,this.endian==="little");return this.position+=2,r}readInt16(){if(this.data.byteLength<this.position+2)throw"range error";let r=this.data.getInt16(this.position,this.endian==="little");return this.position+=2,r}readUint32(){if(this.data.byteLength<this.position+4)throw"range error";let r=this.data.getUint32(this.position,this.endian==="little");return this.position+=4,r}readInt32(){if(this.data.byteLength<this.position+4)throw"range error";let r=this.data.getInt32(this.position,this.endian==="little");return this.position+=4,r}readFloat32(){if(this.data.byteLength<this.position+4)throw"range error";let r=this.data.getFloat32(this.position,this.endian==="little");return this.position+=4,r}readFloat64(){if(this.data.byteLength<this.position+8)throw"range error";let r=this.data.getFloat64(this.position,this.endian==="little");return this.position+=8,r}readInt64(){if(this.data.byteLength<this.position+8)throw"range error";let r=qB.default.DataViewGetBigInt64(this.data,this.position,this.endian==="little");return this.position+=8,r}readUint64(){if(this.data.byteLength<this.position+8)throw"range error";let r=qB.default.DataViewGetBigUint64(this.data,this.position,this.endian==="little");return this.position+=8,r}getPosition(){return this.position}setPosition(r){if(this.data.byteLength<r)throw"range error";this.position=r}IsEnd(){return this.position===this.data.byteLength-1}};var jx=class extends Ng{constructor(r){super(r)}parse(r){function e(k){switch(k.image_type){case p:case m:(k.colormap_length>256||k.colormap_size!==24||k.colormap_type!==1)&&console.error("THREE.TGALoader: Invalid type colormap data for indexed type.");break;case d:case f:case g:case y:k.colormap_type&&console.error("THREE.TGALoader: Invalid type colormap data for colormap type.");break;case h:console.error("THREE.TGALoader: No data.");default:console.error('THREE.TGALoader: Invalid type "%s".',k.image_type)}(k.width<=0||k.height<=0)&&console.error("THREE.TGALoader: Invalid image size."),k.pixel_size!==8&&k.pixel_size!==16&&k.pixel_size!==24&&k.pixel_size!==32&&console.error('THREE.TGALoader: Invalid pixel size "%s".',k.pixel_size)}function i(k,G,U,j,ee){let ae,se,ue=U.pixel_size>>3,ve=U.width*U.height*ue;if(G&&(se=ee.subarray(j,j+=U.colormap_length*(U.colormap_size>>3))),k){ae=new Uint8Array(ve);let be,de,we,Fe=0,je=new Uint8Array(ue);for(;Fe<ve;)if(be=ee[j++],de=(be&127)+1,be&128){for(we=0;we<ue;++we)je[we]=ee[j++];for(we=0;we<de;++we)ae.set(je,Fe+we*ue);Fe+=ue*de}else{for(de*=ue,we=0;we<de;++we)ae[Fe+we]=ee[j++];Fe+=de}}else ae=ee.subarray(j,j+=G?U.width*U.height:ve);return{pixel_data:ae,palettes:se}}function n(k,G,U,j,ee,ae,se,ue,ve){let be=ve,de,we=0,Fe,je,Oe=F.width;for(je=G;je!==j;je+=U)for(Fe=ee;Fe!==se;Fe+=ae,we++)de=ue[we],k[(Fe+Oe*je)*4+3]=255,k[(Fe+Oe*je)*4+2]=be[de*3+0],k[(Fe+Oe*je)*4+1]=be[de*3+1],k[(Fe+Oe*je)*4+0]=be[de*3+2];return k}function s(k,G,U,j,ee,ae,se,ue){let ve,be=0,de,we,Fe=F.width;for(we=G;we!==j;we+=U)for(de=ee;de!==se;de+=ae,be+=2)ve=ue[be+0]+(ue[be+1]<<8),k[(de+Fe*we)*4+0]=(ve&31744)>>7,k[(de+Fe*we)*4+1]=(ve&992)>>2,k[(de+Fe*we)*4+2]=(ve&31)<<3,k[(de+Fe*we)*4+3]=ve&32768?0:255;return k}function a(k,G,U,j,ee,ae,se,ue){let ve=0,be,de,we=F.width;for(de=G;de!==j;de+=U)for(be=ee;be!==se;be+=ae,ve+=3)k[(be+we*de)*4+3]=255,k[(be+we*de)*4+2]=ue[ve+0],k[(be+we*de)*4+1]=ue[ve+1],k[(be+we*de)*4+0]=ue[ve+2];return k}function o(k,G,U,j,ee,ae,se,ue){let ve=0,be,de,we=F.width;for(de=G;de!==j;de+=U)for(be=ee;be!==se;be+=ae,ve+=4)k[(be+we*de)*4+2]=ue[ve+0],k[(be+we*de)*4+1]=ue[ve+1],k[(be+we*de)*4+0]=ue[ve+2],k[(be+we*de)*4+3]=ue[ve+3];return k}function l(k,G,U,j,ee,ae,se,ue){let ve,be=0,de,we,Fe=F.width;for(we=G;we!==j;we+=U)for(de=ee;de!==se;de+=ae,be++)ve=ue[be],k[(de+Fe*we)*4+0]=ve,k[(de+Fe*we)*4+1]=ve,k[(de+Fe*we)*4+2]=ve,k[(de+Fe*we)*4+3]=255;return k}function c(k,G,U,j,ee,ae,se,ue){let ve=0,be,de,we=F.width;for(de=G;de!==j;de+=U)for(be=ee;be!==se;be+=ae,ve+=2)k[(be+we*de)*4+0]=ue[ve+0],k[(be+we*de)*4+1]=ue[ve+0],k[(be+we*de)*4+2]=ue[ve+0],k[(be+we*de)*4+3]=ue[ve+1];return k}function u(k,G,U,j,ee){let ae,se,ue,ve,be,de;switch((F.flags&E)>>b){default:case D:ae=0,ue=1,be=G,se=0,ve=1,de=U;break;case x:ae=0,ue=1,be=G,se=U-1,ve=-1,de=-1;break;case P:ae=G-1,ue=-1,be=-1,se=0,ve=1,de=U;break;case S:ae=G-1,ue=-1,be=-1,se=U-1,ve=-1,de=-1;break}if(he)switch(F.pixel_size){case 8:l(k,se,ve,de,ae,ue,be,j);break;case 16:c(k,se,ve,de,ae,ue,be,j);break;default:console.error("THREE.TGALoader: Format not supported.");break}else switch(F.pixel_size){case 8:n(k,se,ve,de,ae,ue,be,j,ee);break;case 16:s(k,se,ve,de,ae,ue,be,j);break;case 24:a(k,se,ve,de,ae,ue,be,j);break;case 32:o(k,se,ve,de,ae,ue,be,j);break;default:console.error("THREE.TGALoader: Format not supported.");break}return k}let h=0,p=1,d=2,f=3,m=9,g=10,y=11,E=48,b=4,x=0,S=1,D=2,P=3;r.length<19&&console.error("THREE.TGALoader: Not enough data to contain header.");let _=0,w=new Uint8Array(r),F={id_length:w[_++],colormap_type:w[_++],image_type:w[_++],colormap_index:w[_++]|w[_++]<<8,colormap_length:w[_++]|w[_++]<<8,colormap_size:w[_++],origin:[w[_++]|w[_++]<<8,w[_++]|w[_++]<<8],width:w[_++]|w[_++]<<8,height:w[_++]|w[_++]<<8,pixel_size:w[_++],flags:w[_++]};e(F),F.id_length+_>r.length&&console.error("THREE.TGALoader: No data."),_+=F.id_length;let X=!1,H=!1,he=!1;switch(F.image_type){case m:X=!0,H=!0;break;case p:H=!0;break;case g:X=!0;break;case d:break;case y:X=!0,he=!0;break;case f:he=!0;break}let C=new Uint8Array(F.width*F.height*4),N=i(X,H,F,_,w);return u(C,F.width,F.height,N.pixel_data,N.palettes),{data:C,width:F.width,height:F.height,flipY:!0,generateMipmaps:!0,minFilter:wa}}};var YC=class extends li{constructor(r){super(r)}load(r,e,i,n){let s=this,a=s.path===""?ks.extractUrlBase(r):s.path,o=new ci(s.manager);o.setPath(s.path),o.setRequestHeader(s.requestHeader),o.setWithCredentials(s.withCredentials),o.load(r,function(l){try{e(s.parse(l,a))}catch(c){n?n(c):console.error(c),s.manager.itemError(r)}},i,n)}parse(r,e){function i(K,Z){let ce=[],oe=K.childNodes;for(let pe=0,qe=oe.length;pe<qe;pe++){let et=oe[pe];et.nodeName===Z&&ce.push(et)}return ce}function n(K){if(K.length===0)return[];let Z=K.trim().split(/\s+/),ce=new Array(Z.length);for(let oe=0,pe=Z.length;oe<pe;oe++)ce[oe]=Z[oe];return ce}function s(K){if(K.length===0)return[];let Z=K.trim().split(/\s+/),ce=new Array(Z.length);for(let oe=0,pe=Z.length;oe<pe;oe++)ce[oe]=parseFloat(Z[oe]);return ce}function a(K){if(K.length===0)return[];let Z=K.trim().split(/\s+/),ce=new Array(Z.length);for(let oe=0,pe=Z.length;oe<pe;oe++)ce[oe]=parseInt(Z[oe]);return ce}function o(K){return K.substring(1)}function l(){return"three_default_"+Zr++}function c(K){return Object.keys(K).length===0}function u(K){return{unit:h(i(K,"unit")[0]),upAxis:p(i(K,"up_axis")[0])}}function h(K){return K!==void 0&&K.hasAttribute("meter")===!0?parseFloat(K.getAttribute("meter")):1}function p(K){return K!==void 0?K.textContent:"Y_UP"}function d(K,Z,ce,oe){let pe=i(K,Z)[0];if(pe!==void 0){let qe=i(pe,ce);for(let et=0;et<qe.length;et++)oe(qe[et])}}function f(K,Z){for(let ce in K){let oe=K[ce];oe.build=Z(K[ce])}}function m(K,Z){return K.build!==void 0||(K.build=Z(K)),K.build}function g(K){let Z={sources:{},samplers:{},channels:{}},ce=!1;for(let oe=0,pe=K.childNodes.length;oe<pe;oe++){let qe=K.childNodes[oe];if(qe.nodeType!==1)continue;let et;switch(qe.nodeName){case"source":et=qe.getAttribute("id"),Z.sources[et]=lt(qe);break;case"sampler":et=qe.getAttribute("id"),Z.samplers[et]=y(qe);break;case"channel":et=qe.getAttribute("target"),Z.channels[et]=E(qe);break;case"animation":g(qe),ce=!0;break;default:console.log(qe)}}ce===!1&&(Qt.animations[K.getAttribute("id")||wr.generateUUID()]=Z)}function y(K){let Z={inputs:{}};for(let ce=0,oe=K.childNodes.length;ce<oe;ce++){let pe=K.childNodes[ce];if(pe.nodeType===1)switch(pe.nodeName){case"input":let qe=o(pe.getAttribute("source")),et=pe.getAttribute("semantic");Z.inputs[et]=qe;break}}return Z}function E(K){let Z={},oe=K.getAttribute("target").split("/"),pe=oe.shift(),qe=oe.shift(),et=qe.indexOf("(")!==-1,Ht=qe.indexOf(".")!==-1;if(Ht)oe=qe.split("."),qe=oe.shift(),Z.member=oe.shift();else if(et){let Mt=qe.split("(");qe=Mt.shift();for(let Ft=0;Ft<Mt.length;Ft++)Mt[Ft]=parseInt(Mt[Ft].replace(/\)/,""));Z.indices=Mt}return Z.id=pe,Z.sid=qe,Z.arraySyntax=et,Z.memberSyntax=Ht,Z.sampler=o(K.getAttribute("source")),Z}function b(K){let Z=[],ce=K.channels,oe=K.samplers,pe=K.sources;for(let qe in ce)if(ce.hasOwnProperty(qe)){let et=ce[qe],Ht=oe[et.sampler],Mt=Ht.inputs.INPUT,Ft=Ht.inputs.OUTPUT,$t=pe[Mt],pt=pe[Ft],qt=S(et,$t,pt);F(qt,Z)}return Z}function x(K){return m(Qt.animations[K],b)}function S(K,Z,ce){let oe=Qt.nodes[K.id],pe=En(oe.id),qe=oe.transforms[K.sid],et=oe.matrix.clone().transpose(),Ht,Mt,Ft,$t,pt,qt,zt={};switch(qe){case"matrix":for(Ft=0,$t=Z.array.length;Ft<$t;Ft++)if(Ht=Z.array[Ft],Mt=Ft*ce.stride,zt[Ht]===void 0&&(zt[Ht]={}),K.arraySyntax===!0){let xi=ce.array[Mt],ar=K.indices[0]+4*K.indices[1];zt[Ht][ar]=xi}else for(pt=0,qt=ce.stride;pt<qt;pt++)zt[Ht][pt]=ce.array[Mt+pt];break;case"translate":console.warn('THREE.ColladaLoader: Animation transform type "%s" not yet implemented.',qe);break;case"rotate":console.warn('THREE.ColladaLoader: Animation transform type "%s" not yet implemented.',qe);break;case"scale":console.warn('THREE.ColladaLoader: Animation transform type "%s" not yet implemented.',qe);break}let ur=D(zt,et);return{name:pe.uuid,keyframes:ur}}function D(K,Z){let ce=[];for(let pe in K)ce.push({time:parseFloat(pe),value:K[pe]});ce.sort(oe);for(let pe=0;pe<16;pe++)X(ce,pe,Z.elements[pe]);return ce;function oe(pe,qe){return pe.time-qe.time}}let P=new A,_=new A,w=new Or;function F(K,Z){let ce=K.keyframes,oe=K.name,pe=[],qe=[],et=[],Ht=[];for(let Mt=0,Ft=ce.length;Mt<Ft;Mt++){let $t=ce[Mt],pt=$t.time,qt=$t.value;ki.fromArray(qt).transpose(),ki.decompose(P,w,_),pe.push(pt),qe.push(P.x,P.y,P.z),et.push(w.x,w.y,w.z,w.w),Ht.push(_.x,_.y,_.z)}return qe.length>0&&Z.push(new no(oe+".position",pe,qe)),et.length>0&&Z.push(new Da(oe+".quaternion",pe,et)),Ht.length>0&&Z.push(new no(oe+".scale",pe,Ht)),Z}function X(K,Z,ce){let oe,pe=!0,qe,et;for(qe=0,et=K.length;qe<et;qe++)oe=K[qe],oe.value[Z]===void 0?oe.value[Z]=null:pe=!1;if(pe===!0)for(qe=0,et=K.length;qe<et;qe++)oe=K[qe],oe.value[Z]=ce;else H(K,Z)}function H(K,Z){let ce,oe;for(let pe=0,qe=K.length;pe<qe;pe++){let et=K[pe];if(et.value[Z]===null){if(ce=he(K,pe,Z),oe=C(K,pe,Z),ce===null){et.value[Z]=oe.value[Z];continue}if(oe===null){et.value[Z]=ce.value[Z];continue}N(et,ce,oe,Z)}}}function he(K,Z,ce){for(;Z>=0;){let oe=K[Z];if(oe.value[ce]!==null)return oe;Z--}return null}function C(K,Z,ce){for(;Z<K.length;){let oe=K[Z];if(oe.value[ce]!==null)return oe;Z++}return null}function N(K,Z,ce,oe){if(ce.time-Z.time===0){K.value[oe]=Z.value[oe];return}K.value[oe]=(K.time-Z.time)*(ce.value[oe]-Z.value[oe])/(ce.time-Z.time)+Z.value[oe]}function k(K){let Z={name:K.getAttribute("id")||"default",start:parseFloat(K.getAttribute("start")||0),end:parseFloat(K.getAttribute("end")||0),animations:[]};for(let ce=0,oe=K.childNodes.length;ce<oe;ce++){let pe=K.childNodes[ce];if(pe.nodeType===1)switch(pe.nodeName){case"instance_animation":Z.animations.push(o(pe.getAttribute("url")));break}}Qt.clips[K.getAttribute("id")]=Z}function G(K){let Z=[],ce=K.name,oe=K.end-K.start||-1,pe=K.animations;for(let qe=0,et=pe.length;qe<et;qe++){let Ht=x(pe[qe]);for(let Mt=0,Ft=Ht.length;Mt<Ft;Mt++)Z.push(Ht[Mt])}return new so(ce,oe,Z)}function U(K){return m(Qt.clips[K],G)}function j(K){let Z={};for(let ce=0,oe=K.childNodes.length;ce<oe;ce++){let pe=K.childNodes[ce];if(pe.nodeType===1)switch(pe.nodeName){case"skin":Z.id=o(pe.getAttribute("source")),Z.skin=ee(pe);break;case"morph":Z.id=o(pe.getAttribute("source")),console.warn("THREE.ColladaLoader: Morph target animation not supported yet.");break}}Qt.controllers[K.getAttribute("id")]=Z}function ee(K){let Z={sources:{}};for(let ce=0,oe=K.childNodes.length;ce<oe;ce++){let pe=K.childNodes[ce];if(pe.nodeType===1)switch(pe.nodeName){case"bind_shape_matrix":Z.bindShapeMatrix=s(pe.textContent);break;case"source":let qe=pe.getAttribute("id");Z.sources[qe]=lt(pe);break;case"joints":Z.joints=ae(pe);break;case"vertex_weights":Z.vertexWeights=se(pe);break}}return Z}function ae(K){let Z={inputs:{}};for(let ce=0,oe=K.childNodes.length;ce<oe;ce++){let pe=K.childNodes[ce];if(pe.nodeType===1)switch(pe.nodeName){case"input":let qe=pe.getAttribute("semantic"),et=o(pe.getAttribute("source"));Z.inputs[qe]=et;break}}return Z}function se(K){let Z={inputs:{}};for(let ce=0,oe=K.childNodes.length;ce<oe;ce++){let pe=K.childNodes[ce];if(pe.nodeType===1)switch(pe.nodeName){case"input":let qe=pe.getAttribute("semantic"),et=o(pe.getAttribute("source")),Ht=parseInt(pe.getAttribute("offset"));Z.inputs[qe]={id:et,offset:Ht};break;case"vcount":Z.vcount=a(pe.textContent);break;case"v":Z.v=a(pe.textContent);break}}return Z}function ue(K){let Z={id:K.id},ce=Qt.geometries[Z.id];return K.skin!==void 0&&(Z.skin=ve(K.skin),ce.sources.skinIndices=Z.skin.indices,ce.sources.skinWeights=Z.skin.weights),Z}function ve(K){let ce={joints:[],indices:{array:[],stride:4},weights:{array:[],stride:4}},oe=K.sources,pe=K.vertexWeights,qe=pe.vcount,et=pe.v,Ht=pe.inputs.JOINT.offset,Mt=pe.inputs.WEIGHT.offset,Ft=K.sources[K.joints.inputs.JOINT],$t=K.sources[K.joints.inputs.INV_BIND_MATRIX],pt=oe[pe.inputs.WEIGHT.id].array,qt=0,zt,ur,sr;for(zt=0,sr=qe.length;zt<sr;zt++){let ar=qe[zt],Zt=[];for(ur=0;ur<ar;ur++){let ti=et[qt+Ht],So=et[qt+Mt],as=pt[So];Zt.push({index:ti,weight:as}),qt+=2}for(Zt.sort(xi),ur=0;ur<4;ur++){let ti=Zt[ur];ti!==void 0?(ce.indices.array.push(ti.index),ce.weights.array.push(ti.weight)):(ce.indices.array.push(0),ce.weights.array.push(0))}}for(K.bindShapeMatrix?ce.bindMatrix=new Ue().fromArray(K.bindShapeMatrix).transpose():ce.bindMatrix=new Ue().identity(),zt=0,sr=Ft.array.length;zt<sr;zt++){let ar=Ft.array[zt],Zt=new Ue().fromArray($t.array,zt*$t.stride).transpose();ce.joints.push({name:ar,boneInverse:Zt})}return ce;function xi(ar,Zt){return Zt.weight-ar.weight}}function be(K){return m(Qt.controllers[K],ue)}function de(K){let Z={init_from:i(K,"init_from")[0].textContent};Qt.images[K.getAttribute("id")]=Z}function we(K){return K.build!==void 0?K.build:K.init_from}function Fe(K){let Z=Qt.images[K];return Z!==void 0?m(Z,we):(console.warn("THREE.ColladaLoader: Couldn't find image with ID:",K),null)}function je(K){let Z={};for(let ce=0,oe=K.childNodes.length;ce<oe;ce++){let pe=K.childNodes[ce];if(pe.nodeType===1)switch(pe.nodeName){case"profile_COMMON":Z.profile=Oe(pe);break}}Qt.effects[K.getAttribute("id")]=Z}function Oe(K){let Z={surfaces:{},samplers:{}};for(let ce=0,oe=K.childNodes.length;ce<oe;ce++){let pe=K.childNodes[ce];if(pe.nodeType===1)switch(pe.nodeName){case"newparam":dt(pe,Z);break;case"technique":Z.technique=nt(pe);break;case"extra":Z.extra=re(pe);break}}return Z}function dt(K,Z){let ce=K.getAttribute("sid");for(let oe=0,pe=K.childNodes.length;oe<pe;oe++){let qe=K.childNodes[oe];if(qe.nodeType===1)switch(qe.nodeName){case"surface":Z.surfaces[ce]=Be(qe);break;case"sampler2D":Z.samplers[ce]=ke(qe);break}}}function Be(K){let Z={};for(let ce=0,oe=K.childNodes.length;ce<oe;ce++){let pe=K.childNodes[ce];if(pe.nodeType===1)switch(pe.nodeName){case"init_from":Z.init_from=pe.textContent;break}}return Z}function ke(K){let Z={};for(let ce=0,oe=K.childNodes.length;ce<oe;ce++){let pe=K.childNodes[ce];if(pe.nodeType===1)switch(pe.nodeName){case"source":Z.source=pe.textContent;break}}return Z}function nt(K){let Z={};for(let ce=0,oe=K.childNodes.length;ce<oe;ce++){let pe=K.childNodes[ce];if(pe.nodeType===1)switch(pe.nodeName){case"constant":case"lambert":case"blinn":case"phong":Z.type=pe.nodeName,Z.parameters=bt(pe);break;case"extra":Z.extra=re(pe);break}}return Z}function bt(K){let Z={};for(let ce=0,oe=K.childNodes.length;ce<oe;ce++){let pe=K.childNodes[ce];if(pe.nodeType===1)switch(pe.nodeName){case"emission":case"diffuse":case"specular":case"bump":case"ambient":case"shininess":case"transparency":Z[pe.nodeName]=mt(pe);break;case"transparent":Z[pe.nodeName]={opaque:pe.hasAttribute("opaque")?pe.getAttribute("opaque"):"A_ONE",data:mt(pe)};break}}return Z}function mt(K){let Z={};for(let ce=0,oe=K.childNodes.length;ce<oe;ce++){let pe=K.childNodes[ce];if(pe.nodeType===1)switch(pe.nodeName){case"color":Z[pe.nodeName]=s(pe.textContent);break;case"float":Z[pe.nodeName]=parseFloat(pe.textContent);break;case"texture":Z[pe.nodeName]={id:pe.getAttribute("texture"),extra:_e(pe)};break}}return Z}function _e(K){let Z={technique:{}};for(let ce=0,oe=K.childNodes.length;ce<oe;ce++){let pe=K.childNodes[ce];if(pe.nodeType===1)switch(pe.nodeName){case"extra":J(pe,Z);break}}return Z}function J(K,Z){for(let ce=0,oe=K.childNodes.length;ce<oe;ce++){let pe=K.childNodes[ce];if(pe.nodeType===1)switch(pe.nodeName){case"technique":$(pe,Z);break}}}function $(K,Z){for(let ce=0,oe=K.childNodes.length;ce<oe;ce++){let pe=K.childNodes[ce];if(pe.nodeType===1)switch(pe.nodeName){case"repeatU":case"repeatV":case"offsetU":case"offsetV":Z.technique[pe.nodeName]=parseFloat(pe.textContent);break;case"wrapU":case"wrapV":pe.textContent.toUpperCase()==="TRUE"?Z.technique[pe.nodeName]=1:pe.textContent.toUpperCase()==="FALSE"?Z.technique[pe.nodeName]=0:Z.technique[pe.nodeName]=parseInt(pe.textContent);break;case"bump":Z[pe.nodeName]=z(pe);break}}}function re(K){let Z={};for(let ce=0,oe=K.childNodes.length;ce<oe;ce++){let pe=K.childNodes[ce];if(pe.nodeType===1)switch(pe.nodeName){case"technique":Z.technique=me(pe);break}}return Z}function me(K){let Z={};for(let ce=0,oe=K.childNodes.length;ce<oe;ce++){let pe=K.childNodes[ce];if(pe.nodeType===1)switch(pe.nodeName){case"double_sided":Z[pe.nodeName]=parseInt(pe.textContent);break;case"bump":Z[pe.nodeName]=z(pe);break}}return Z}function z(K){let Z={};for(let ce=0,oe=K.childNodes.length;ce<oe;ce++){let pe=K.childNodes[ce];if(pe.nodeType===1)switch(pe.nodeName){case"texture":Z[pe.nodeName]={id:pe.getAttribute("texture"),texcoord:pe.getAttribute("texcoord"),extra:_e(pe)};break}}return Z}function Y(K){return K}function xe(K){return m(Qt.effects[K],Y)}function Ce(K){let Z={name:K.getAttribute("name")};for(let ce=0,oe=K.childNodes.length;ce<oe;ce++){let pe=K.childNodes[ce];if(pe.nodeType===1)switch(pe.nodeName){case"instance_effect":Z.url=o(pe.getAttribute("url"));break}}Qt.materials[K.getAttribute("id")]=Z}function Ge(K){let Z,ce=K.slice((K.lastIndexOf(".")-1>>>0)+2);switch(ce=ce.toLowerCase(),ce){case"tga":Z=Ih;break;default:Z=xh}return Z}function Ze(K){let Z=xe(K.url),ce=Z.profile.technique,oe;switch(ce.type){case"phong":case"blinn":oe=new Ts;break;case"lambert":oe=new io;break;default:oe=new or;break}oe.name=K.name||"";function pe(Mt,Ft=null){let $t=Z.profile.samplers[Mt.id],pt=null;if($t!==void 0){let qt=Z.profile.surfaces[$t.source];pt=Fe(qt.init_from)}else console.warn("THREE.ColladaLoader: Undefined sampler. Access image directly (see #12530)."),pt=Fe(Mt.id);if(pt!==null){let qt=Ge(pt);if(qt!==void 0){let zt=qt.load(pt),ur=Mt.extra;if(ur!==void 0&&ur.technique!==void 0&&c(ur.technique)===!1){let sr=ur.technique;zt.wrapS=sr.wrapU?gn:mn,zt.wrapT=sr.wrapV?gn:mn,zt.offset.set(sr.offsetU||0,sr.offsetV||0),zt.repeat.set(sr.repeatU||1,sr.repeatV||1)}else zt.wrapS=gn,zt.wrapT=gn;return Ft!==null&&(zt.encoding=Ft),zt}else return console.warn("THREE.ColladaLoader: Loader for texture %s not found.",pt),null}else return console.warn("THREE.ColladaLoader: Couldn't create texture with ID:",Mt.id),null}let qe=ce.parameters;for(let Mt in qe){let Ft=qe[Mt];switch(Mt){case"diffuse":Ft.color&&oe.color.fromArray(Ft.color),Ft.texture&&(oe.map=pe(Ft.texture,yr));break;case"specular":Ft.color&&oe.specular&&oe.specular.fromArray(Ft.color),Ft.texture&&(oe.specularMap=pe(Ft.texture));break;case"bump":Ft.texture&&(oe.normalMap=pe(Ft.texture));break;case"ambient":Ft.texture&&(oe.lightMap=pe(Ft.texture,yr));break;case"shininess":Ft.float&&oe.shininess&&(oe.shininess=Ft.float);break;case"emission":Ft.color&&oe.emissive&&oe.emissive.fromArray(Ft.color),Ft.texture&&(oe.emissiveMap=pe(Ft.texture,yr));break}}oe.color.convertSRGBToLinear(),oe.specular&&oe.specular.convertSRGBToLinear(),oe.emissive&&oe.emissive.convertSRGBToLinear();let et=qe.transparent,Ht=qe.transparency;if(Ht===void 0&&et&&(Ht={float:1}),et===void 0&&Ht&&(et={opaque:"A_ONE",data:{color:[1,1,1,1]}}),et&&Ht)if(et.data.texture)oe.transparent=!0;else{let Mt=et.data.color;switch(et.opaque){case"A_ONE":oe.opacity=Mt[3]*Ht.float;break;case"RGB_ZERO":oe.opacity=1-Mt[0]*Ht.float;break;case"A_ZERO":oe.opacity=1-Mt[3]*Ht.float;break;case"RGB_ONE":oe.opacity=Mt[0]*Ht.float;break;default:console.warn('THREE.ColladaLoader: Invalid opaque type "%s" of transparent tag.',et.opaque)}oe.opacity<1&&(oe.transparent=!0)}if(ce.extra!==void 0&&ce.extra.technique!==void 0){let Mt=ce.extra.technique;for(let Ft in Mt){let $t=Mt[Ft];switch(Ft){case"double_sided":oe.side=$t===1?wi:en;break;case"bump":oe.normalMap=pe($t.texture),oe.normalScale=new le(1,1);break}}}return oe}function gt(K){return m(Qt.materials[K],Ze)}function ye(K){let Z={name:K.getAttribute("name")};for(let ce=0,oe=K.childNodes.length;ce<oe;ce++){let pe=K.childNodes[ce];if(pe.nodeType===1)switch(pe.nodeName){case"optics":Z.optics=Re(pe);break}}Qt.cameras[K.getAttribute("id")]=Z}function Re(K){for(let Z=0;Z<K.childNodes.length;Z++){let ce=K.childNodes[Z];switch(ce.nodeName){case"technique_common":return ut(ce)}}return{}}function ut(K){let Z={};for(let ce=0;ce<K.childNodes.length;ce++){let oe=K.childNodes[ce];switch(oe.nodeName){case"perspective":case"orthographic":Z.technique=oe.nodeName,Z.parameters=vt(oe);break}}return Z}function vt(K){let Z={};for(let ce=0;ce<K.childNodes.length;ce++){let oe=K.childNodes[ce];switch(oe.nodeName){case"xfov":case"yfov":case"xmag":case"ymag":case"znear":case"zfar":case"aspect_ratio":Z[oe.nodeName]=parseFloat(oe.textContent);break}}return Z}function Et(K){let Z;switch(K.optics.technique){case"perspective":Z=new qr(K.optics.parameters.yfov,K.optics.parameters.aspect_ratio,K.optics.parameters.znear,K.optics.parameters.zfar);break;case"orthographic":let ce=K.optics.parameters.ymag,oe=K.optics.parameters.xmag,pe=K.optics.parameters.aspect_ratio;oe=oe===void 0?ce*pe:oe,ce=ce===void 0?oe/pe:ce,oe*=.5,ce*=.5,Z=new Zi(-oe,oe,ce,-ce,K.optics.parameters.znear,K.optics.parameters.zfar);break;default:Z=new qr;break}return Z.name=K.name||"",Z}function Ct(K){let Z=Qt.cameras[K];return Z!==void 0?m(Z,Et):(console.warn("THREE.ColladaLoader: Couldn't find camera with ID:",K),null)}function Dt(K){let Z={};for(let ce=0,oe=K.childNodes.length;ce<oe;ce++){let pe=K.childNodes[ce];if(pe.nodeType===1)switch(pe.nodeName){case"technique_common":Z=cr(pe);break}}Qt.lights[K.getAttribute("id")]=Z}function cr(K){let Z={};for(let ce=0,oe=K.childNodes.length;ce<oe;ce++){let pe=K.childNodes[ce];if(pe.nodeType===1)switch(pe.nodeName){case"directional":case"point":case"spot":case"ambient":Z.technique=pe.nodeName,Z.parameters=Xt(pe)}}return Z}function Xt(K){let Z={};for(let ce=0,oe=K.childNodes.length;ce<oe;ce++){let pe=K.childNodes[ce];if(pe.nodeType===1)switch(pe.nodeName){case"color":let qe=s(pe.textContent);Z.color=new Ve().fromArray(qe).convertSRGBToLinear();break;case"falloff_angle":Z.falloffAngle=parseFloat(pe.textContent);break;case"quadratic_attenuation":let et=parseFloat(pe.textContent);Z.distance=et?Math.sqrt(1/et):0;break}}return Z}function gr(K){let Z;switch(K.technique){case"directional":Z=new $s;break;case"point":Z=new Ac;break;case"spot":Z=new Vu;break;case"ambient":Z=new Ol;break}return K.parameters.color&&Z.color.copy(K.parameters.color),K.parameters.distance&&(Z.distance=K.parameters.distance),Z}function Ae(K){let Z=Qt.lights[K];return Z!==void 0?m(Z,gr):(console.warn("THREE.ColladaLoader: Couldn't find light with ID:",K),null)}function Xe(K){let Z={name:K.getAttribute("name"),sources:{},vertices:{},primitives:[]},ce=i(K,"mesh")[0];if(ce!==void 0){for(let oe=0;oe<ce.childNodes.length;oe++){let pe=ce.childNodes[oe];if(pe.nodeType!==1)continue;let qe=pe.getAttribute("id");switch(pe.nodeName){case"source":Z.sources[qe]=lt(pe);break;case"vertices":Z.vertices=_t(pe);break;case"polygons":console.warn("THREE.ColladaLoader: Unsupported primitive type: ",pe.nodeName);break;case"lines":case"linestrips":case"polylist":case"triangles":Z.primitives.push(Vt(pe));break;default:console.log(pe)}}Qt.geometries[K.getAttribute("id")]=Z}}function lt(K){let Z={array:[],stride:3};for(let ce=0;ce<K.childNodes.length;ce++){let oe=K.childNodes[ce];if(oe.nodeType===1)switch(oe.nodeName){case"float_array":Z.array=s(oe.textContent);break;case"Name_array":Z.array=n(oe.textContent);break;case"technique_common":let pe=i(oe,"accessor")[0];pe!==void 0&&(Z.stride=parseInt(pe.getAttribute("stride")));break}}return Z}function _t(K){let Z={};for(let ce=0;ce<K.childNodes.length;ce++){let oe=K.childNodes[ce];oe.nodeType===1&&(Z[oe.getAttribute("semantic")]=o(oe.getAttribute("source")))}return Z}function Vt(K){let Z={type:K.nodeName,material:K.getAttribute("material"),count:parseInt(K.getAttribute("count")),inputs:{},stride:0,hasUV:!1};for(let ce=0,oe=K.childNodes.length;ce<oe;ce++){let pe=K.childNodes[ce];if(pe.nodeType===1)switch(pe.nodeName){case"input":let qe=o(pe.getAttribute("source")),et=pe.getAttribute("semantic"),Ht=parseInt(pe.getAttribute("offset")),Mt=parseInt(pe.getAttribute("set")),Ft=Mt>0?et+Mt:et;Z.inputs[Ft]={id:qe,offset:Ht},Z.stride=Math.max(Z.stride,Ht+1),et==="TEXCOORD"&&(Z.hasUV=!0);break;case"vcount":Z.vcount=a(pe.textContent);break;case"p":Z.p=a(pe.textContent);break}}return Z}function Rr(K){let Z={};for(let ce=0;ce<K.length;ce++){let oe=K[ce];Z[oe.type]===void 0&&(Z[oe.type]=[]),Z[oe.type].push(oe)}return Z}function Ki(K){let Z=0;for(let ce=0,oe=K.length;ce<oe;ce++)K[ce].hasUV===!0&&Z++;Z>0&&Z<K.length&&(K.uvsNeedsFix=!0)}function Pi(K){let Z={},ce=K.sources,oe=K.vertices,pe=K.primitives;if(pe.length===0)return{};let qe=Rr(pe);for(let et in qe){let Ht=qe[et];Ki(Ht),Z[et]=Fn(Ht,ce,oe)}return Z}function Fn(K,Z,ce){let oe={},pe={array:[],stride:0},qe={array:[],stride:0},et={array:[],stride:0},Ht={array:[],stride:0},Mt={array:[],stride:0},Ft={array:[],stride:4},$t={array:[],stride:4},pt=new it,qt=[],zt=0;for(let ur=0;ur<K.length;ur++){let sr=K[ur],xi=sr.inputs,ar=0;switch(sr.type){case"lines":case"linestrips":ar=sr.count*2;break;case"triangles":ar=sr.count*3;break;case"polylist":for(let Zt=0;Zt<sr.count;Zt++){let ti=sr.vcount[Zt];switch(ti){case 3:ar+=3;break;case 4:ar+=6;break;default:ar+=(ti-2)*3;break}}break;default:console.warn("THREE.ColladaLoader: Unknow primitive type:",sr.type)}pt.addGroup(zt,ar,ur),zt+=ar,sr.material&&qt.push(sr.material);for(let Zt in xi){let ti=xi[Zt];switch(Zt){case"VERTEX":for(let So in ce){let as=ce[So];switch(So){case"POSITION":let du=pe.array.length;if(Kt(sr,Z[as],ti.offset,pe.array),pe.stride=Z[as].stride,Z.skinWeights&&Z.skinIndices&&(Kt(sr,Z.skinIndices,ti.offset,Ft.array),Kt(sr,Z.skinWeights,ti.offset,$t.array)),sr.hasUV===!1&&K.uvsNeedsFix===!0){let SE=(pe.array.length-du)/pe.stride;for(let F0=0;F0<SE;F0++)et.array.push(0,0)}break;case"NORMAL":Kt(sr,Z[as],ti.offset,qe.array),qe.stride=Z[as].stride;break;case"COLOR":Kt(sr,Z[as],ti.offset,Mt.array),Mt.stride=Z[as].stride;break;case"TEXCOORD":Kt(sr,Z[as],ti.offset,et.array),et.stride=Z[as].stride;break;case"TEXCOORD1":Kt(sr,Z[as],ti.offset,Ht.array),et.stride=Z[as].stride;break;default:console.warn('THREE.ColladaLoader: Semantic "%s" not handled in geometry build process.',So)}}break;case"NORMAL":Kt(sr,Z[ti.id],ti.offset,qe.array),qe.stride=Z[ti.id].stride;break;case"COLOR":Kt(sr,Z[ti.id],ti.offset,Mt.array,!0),Mt.stride=Z[ti.id].stride;break;case"TEXCOORD":Kt(sr,Z[ti.id],ti.offset,et.array),et.stride=Z[ti.id].stride;break;case"TEXCOORD1":Kt(sr,Z[ti.id],ti.offset,Ht.array),Ht.stride=Z[ti.id].stride;break}}}return pe.array.length>0&&pt.setAttribute("position",new ct(pe.array,pe.stride)),qe.array.length>0&&pt.setAttribute("normal",new ct(qe.array,qe.stride)),Mt.array.length>0&&pt.setAttribute("color",new ct(Mt.array,Mt.stride)),et.array.length>0&&pt.setAttribute("uv",new ct(et.array,et.stride)),Ht.array.length>0&&pt.setAttribute("uv2",new ct(Ht.array,Ht.stride)),Ft.array.length>0&&pt.setAttribute("skinIndex",new ct(Ft.array,Ft.stride)),$t.array.length>0&&pt.setAttribute("skinWeight",new ct($t.array,$t.stride)),oe.data=pt,oe.type=K[0].type,oe.materialKeys=qt,oe}function Kt(K,Z,ce,oe,pe=!1){let qe=K.p,et=K.stride,Ht=K.vcount;function Mt(pt){let qt=qe[pt+ce]*$t,zt=qt+$t;for(;qt<zt;qt++)oe.push(Ft[qt]);if(pe){let ur=oe.length-$t-1;oc.setRGB(oe[ur+0],oe[ur+1],oe[ur+2]).convertSRGBToLinear(),oe[ur+0]=oc.r,oe[ur+1]=oc.g,oe[ur+2]=oc.b}}let Ft=Z.array,$t=Z.stride;if(K.vcount!==void 0){let pt=0;for(let qt=0,zt=Ht.length;qt<zt;qt++){let ur=Ht[qt];if(ur===4){let sr=pt+et*0,xi=pt+et*1,ar=pt+et*2,Zt=pt+et*3;Mt(sr),Mt(xi),Mt(Zt),Mt(xi),Mt(ar),Mt(Zt)}else if(ur===3){let sr=pt+et*0,xi=pt+et*1,ar=pt+et*2;Mt(sr),Mt(xi),Mt(ar)}else if(ur>4)for(let sr=1,xi=ur-2;sr<=xi;sr++){let ar=pt+et*0,Zt=pt+et*sr,ti=pt+et*(sr+1);Mt(ar),Mt(Zt),Mt(ti)}pt+=et*ur}}else for(let pt=0,qt=qe.length;pt<qt;pt+=et)Mt(pt)}function ds(K){return m(Qt.geometries[K],Pi)}function Is(K){let Z={name:K.getAttribute("name")||"",joints:{},links:[]};for(let ce=0;ce<K.childNodes.length;ce++){let oe=K.childNodes[ce];if(oe.nodeType===1)switch(oe.nodeName){case"technique_common":fd(oe,Z);break}}Qt.kinematicsModels[K.getAttribute("id")]=Z}function ic(K){return K.build!==void 0?K.build:K}function um(K){return m(Qt.kinematicsModels[K],ic)}function fd(K,Z){for(let ce=0;ce<K.childNodes.length;ce++){let oe=K.childNodes[ce];if(oe.nodeType===1)switch(oe.nodeName){case"joint":Z.joints[oe.getAttribute("sid")]=js(oe);break;case"link":Z.links.push(ze(oe));break}}}function js(K){let Z;for(let ce=0;ce<K.childNodes.length;ce++){let oe=K.childNodes[ce];if(oe.nodeType===1)switch(oe.nodeName){case"prismatic":case"revolute":Z=Te(oe);break}}return Z}function Te(K){let Z={sid:K.getAttribute("sid"),name:K.getAttribute("name")||"",axis:new A,limits:{min:0,max:0},type:K.nodeName,static:!1,zeroPosition:0,middlePosition:0};for(let ce=0;ce<K.childNodes.length;ce++){let oe=K.childNodes[ce];if(oe.nodeType===1)switch(oe.nodeName){case"axis":let pe=s(oe.textContent);Z.axis.fromArray(pe);break;case"limits":let qe=oe.getElementsByTagName("max")[0],et=oe.getElementsByTagName("min")[0];Z.limits.max=parseFloat(qe.textContent),Z.limits.min=parseFloat(et.textContent);break}}return Z.limits.min>=Z.limits.max&&(Z.static=!0),Z.middlePosition=(Z.limits.min+Z.limits.max)/2,Z}function ze(K){let Z={sid:K.getAttribute("sid"),name:K.getAttribute("name")||"",attachments:[],transforms:[]};for(let ce=0;ce<K.childNodes.length;ce++){let oe=K.childNodes[ce];if(oe.nodeType===1)switch(oe.nodeName){case"attachment_full":Z.attachments.push(Qe(oe));break;case"matrix":case"translate":case"rotate":Z.transforms.push(Le(oe));break}}return Z}function Qe(K){let Z={joint:K.getAttribute("joint").split("/").pop(),transforms:[],links:[]};for(let ce=0;ce<K.childNodes.length;ce++){let oe=K.childNodes[ce];if(oe.nodeType===1)switch(oe.nodeName){case"link":Z.links.push(ze(oe));break;case"matrix":case"translate":case"rotate":Z.transforms.push(Le(oe));break}}return Z}function Le(K){let Z={type:K.nodeName},ce=s(K.textContent);switch(Z.type){case"matrix":Z.obj=new Ue,Z.obj.fromArray(ce).transpose();break;case"translate":Z.obj=new A,Z.obj.fromArray(ce);break;case"rotate":Z.obj=new A,Z.obj.fromArray(ce),Z.angle=wr.degToRad(ce[3]);break}return Z}function Ke(K){let Z={name:K.getAttribute("name")||"",rigidBodies:{}};for(let ce=0;ce<K.childNodes.length;ce++){let oe=K.childNodes[ce];if(oe.nodeType===1)switch(oe.nodeName){case"rigid_body":Z.rigidBodies[oe.getAttribute("name")]={},Jt(oe,Z.rigidBodies[oe.getAttribute("name")]);break}}Qt.physicsModels[K.getAttribute("id")]=Z}function Jt(K,Z){for(let ce=0;ce<K.childNodes.length;ce++){let oe=K.childNodes[ce];if(oe.nodeType===1)switch(oe.nodeName){case"technique_common":Ir(oe,Z);break}}}function Ir(K,Z){for(let ce=0;ce<K.childNodes.length;ce++){let oe=K.childNodes[ce];if(oe.nodeType===1)switch(oe.nodeName){case"inertia":Z.inertia=s(oe.textContent);break;case"mass":Z.mass=s(oe.textContent)[0];break}}}function Nr(K){let Z={bindJointAxis:[]};for(let ce=0;ce<K.childNodes.length;ce++){let oe=K.childNodes[ce];if(oe.nodeType===1)switch(oe.nodeName){case"bind_joint_axis":Z.bindJointAxis.push(Fr(oe));break}}Qt.kinematicsScenes[o(K.getAttribute("url"))]=Z}function Fr(K){let Z={target:K.getAttribute("target").split("/").pop()};for(let ce=0;ce<K.childNodes.length;ce++){let oe=K.childNodes[ce];if(oe.nodeType===1)switch(oe.nodeName){case"axis":let pe=oe.getElementsByTagName("param")[0];Z.axis=pe.textContent;let qe=Z.axis.split("inst_").pop().split("axis")[0];Z.jointIndex=qe.substring(0,qe.length-1);break}}return Z}function Yr(K){return K.build!==void 0?K.build:K}function kt(K){return m(Qt.kinematicsScenes[K],Yr)}function Vr(){let K=Object.keys(Qt.kinematicsModels)[0],Z=Object.keys(Qt.kinematicsScenes)[0],ce=Object.keys(Qt.visualScenes)[0];if(K===void 0||Z===void 0)return;let oe=um(K),pe=kt(Z),qe=uu(ce),et=pe.bindJointAxis,Ht={};for(let $t=0,pt=et.length;$t<pt;$t++){let qt=et[$t],zt=Ni.querySelector('[sid="'+qt.target+'"]');if(zt){let ur=zt.parentElement;Mt(qt.jointIndex,ur)}}function Mt($t,pt){let qt=pt.getAttribute("name"),zt=oe.joints[$t];qe.traverse(function(ur){ur.name===qt&&(Ht[$t]={object:ur,transforms:ei(pt),joint:zt,position:zt.zeroPosition})})}let Ft=new Ue;al={joints:oe&&oe.joints,getJointValue:function($t){let pt=Ht[$t];if(pt)return pt.position;console.warn("THREE.ColladaLoader: Joint "+$t+" doesn't exist.")},setJointValue:function($t,pt){let qt=Ht[$t];if(qt){let zt=qt.joint;if(pt>zt.limits.max||pt<zt.limits.min)console.warn("THREE.ColladaLoader: Joint "+$t+" value "+pt+" outside of limits (min: "+zt.limits.min+", max: "+zt.limits.max+").");else if(zt.static)console.warn("THREE.ColladaLoader: Joint "+$t+" is static.");else{let ur=qt.object,sr=zt.axis,xi=qt.transforms;ki.identity();for(let ar=0;ar<xi.length;ar++){let Zt=xi[ar];if(Zt.sid&&Zt.sid.indexOf($t)!==-1)switch(zt.type){case"revolute":ki.multiply(Ft.makeRotationAxis(sr,wr.degToRad(pt)));break;case"prismatic":ki.multiply(Ft.makeTranslation(sr.x*pt,sr.y*pt,sr.z*pt));break;default:console.warn("THREE.ColladaLoader: Unknown joint type: "+zt.type);break}else switch(Zt.type){case"matrix":ki.multiply(Zt.obj);break;case"translate":ki.multiply(Ft.makeTranslation(Zt.obj.x,Zt.obj.y,Zt.obj.z));break;case"scale":ki.scale(Zt.obj);break;case"rotate":ki.multiply(Ft.makeRotationAxis(Zt.obj,Zt.angle));break}}ur.matrix.copy(ki),ur.matrix.decompose(ur.position,ur.quaternion,ur.scale),Ht[$t].position=pt}}else console.log("THREE.ColladaLoader: "+$t+" does not exist.")}}}function ei(K){let Z=[],ce=Ni.querySelector('[id="'+K.id+'"]');for(let oe=0;oe<ce.childNodes.length;oe++){let pe=ce.childNodes[oe];if(pe.nodeType!==1)continue;let qe,et;switch(pe.nodeName){case"matrix":qe=s(pe.textContent);let Ht=new Ue().fromArray(qe).transpose();Z.push({sid:pe.getAttribute("sid"),type:pe.nodeName,obj:Ht});break;case"translate":case"scale":qe=s(pe.textContent),et=new A().fromArray(qe),Z.push({sid:pe.getAttribute("sid"),type:pe.nodeName,obj:et});break;case"rotate":qe=s(pe.textContent),et=new A().fromArray(qe);let Mt=wr.degToRad(qe[3]);Z.push({sid:pe.getAttribute("sid"),type:pe.nodeName,obj:et,angle:Mt});break}}return Z}function dn(K){let Z=K.getElementsByTagName("node");for(let ce=0;ce<Z.length;ce++){let oe=Z[ce];oe.hasAttribute("id")===!1&&oe.setAttribute("id",l())}}let ki=new Ue,nr=new A;function q(K){let Z={name:K.getAttribute("name")||"",type:K.getAttribute("type"),id:K.getAttribute("id"),sid:K.getAttribute("sid"),matrix:new Ue,nodes:[],instanceCameras:[],instanceControllers:[],instanceLights:[],instanceGeometries:[],instanceNodes:[],transforms:{}};for(let ce=0;ce<K.childNodes.length;ce++){let oe=K.childNodes[ce];if(oe.nodeType!==1)continue;let pe;switch(oe.nodeName){case"node":Z.nodes.push(oe.getAttribute("id")),q(oe);break;case"instance_camera":Z.instanceCameras.push(o(oe.getAttribute("url")));break;case"instance_controller":Z.instanceControllers.push(er(oe));break;case"instance_light":Z.instanceLights.push(o(oe.getAttribute("url")));break;case"instance_geometry":Z.instanceGeometries.push(er(oe));break;case"instance_node":Z.instanceNodes.push(o(oe.getAttribute("url")));break;case"matrix":pe=s(oe.textContent),Z.matrix.multiply(ki.fromArray(pe).transpose()),Z.transforms[oe.getAttribute("sid")]=oe.nodeName;break;case"translate":pe=s(oe.textContent),nr.fromArray(pe),Z.matrix.multiply(ki.makeTranslation(nr.x,nr.y,nr.z)),Z.transforms[oe.getAttribute("sid")]=oe.nodeName;break;case"rotate":pe=s(oe.textContent);let qe=wr.degToRad(pe[3]);Z.matrix.multiply(ki.makeRotationAxis(nr.fromArray(pe),qe)),Z.transforms[oe.getAttribute("sid")]=oe.nodeName;break;case"scale":pe=s(oe.textContent),Z.matrix.scale(nr.fromArray(pe)),Z.transforms[oe.getAttribute("sid")]=oe.nodeName;break;case"extra":break;default:console.log(oe)}}return on(Z.id)?console.warn("THREE.ColladaLoader: There is already a node with ID %s. Exclude current node from further processing.",Z.id):Qt.nodes[Z.id]=Z,Z}function er(K){let Z={id:o(K.getAttribute("url")),materials:{},skeletons:[]};for(let ce=0;ce<K.childNodes.length;ce++){let oe=K.childNodes[ce];switch(oe.nodeName){case"bind_material":let pe=oe.getElementsByTagName("instance_material");for(let qe=0;qe<pe.length;qe++){let et=pe[qe],Ht=et.getAttribute("symbol"),Mt=et.getAttribute("target");Z.materials[Ht]=o(Mt)}break;case"skeleton":Z.skeletons.push(o(oe.textContent));break;default:break}}return Z}function cu(K,Z){let ce=[],oe=[],pe,qe,et;for(pe=0;pe<K.length;pe++){let Ft=K[pe],$t;if(on(Ft))$t=En(Ft),fn($t,Z,ce);else if(sc(Ft)){let qt=Qt.visualScenes[Ft].children;for(let zt=0;zt<qt.length;zt++){let ur=qt[zt];if(ur.type==="JOINT"){let sr=En(ur.id);fn(sr,Z,ce)}}}else console.error("THREE.ColladaLoader: Unable to find root bone of skeleton with ID:",Ft)}for(pe=0;pe<Z.length;pe++)for(qe=0;qe<ce.length;qe++)if(et=ce[qe],et.bone.name===Z[pe].name){oe[pe]=et,et.processed=!0;break}for(pe=0;pe<ce.length;pe++)et=ce[pe],et.processed===!1&&(oe.push(et),et.processed=!0);let Ht=[],Mt=[];for(pe=0;pe<oe.length;pe++)et=oe[pe],Ht.push(et.bone),Mt.push(et.boneInverse);return new Ml(Ht,Mt)}function fn(K,Z,ce){K.traverse(function(oe){if(oe.isBone===!0){let pe;for(let qe=0;qe<Z.length;qe++){let et=Z[qe];if(et.name===oe.name){pe=et.boneInverse;break}}pe===void 0&&(pe=new Ue),ce.push({bone:oe,boneInverse:pe,processed:!1})}})}function Ha(K){let Z=[],ce=K.matrix,oe=K.nodes,pe=K.type,qe=K.instanceCameras,et=K.instanceControllers,Ht=K.instanceLights,Mt=K.instanceGeometries,Ft=K.instanceNodes;for(let pt=0,qt=oe.length;pt<qt;pt++)Z.push(En(oe[pt]));for(let pt=0,qt=qe.length;pt<qt;pt++){let zt=Ct(qe[pt]);zt!==null&&Z.push(zt.clone())}for(let pt=0,qt=et.length;pt<qt;pt++){let zt=et[pt],ur=be(zt.id),sr=ds(ur.id),xi=oa(sr,zt.materials),ar=zt.skeletons,Zt=ur.skin.joints,ti=cu(ar,Zt);for(let So=0,as=xi.length;So<as;So++){let du=xi[So];du.isSkinnedMesh&&(du.bind(ti,ur.skin.bindMatrix),du.normalizeSkinWeights()),Z.push(du)}}for(let pt=0,qt=Ht.length;pt<qt;pt++){let zt=Ae(Ht[pt]);zt!==null&&Z.push(zt.clone())}for(let pt=0,qt=Mt.length;pt<qt;pt++){let zt=Mt[pt],ur=ds(zt.id),sr=oa(ur,zt.materials);for(let xi=0,ar=sr.length;xi<ar;xi++)Z.push(sr[xi])}for(let pt=0,qt=Ft.length;pt<qt;pt++)Z.push(En(Ft[pt]).clone());let $t;if(oe.length===0&&Z.length===1)$t=Z[0];else{$t=pe==="JOINT"?new Rl:new hr;for(let pt=0;pt<Z.length;pt++)$t.add(Z[pt])}return $t.name=pe==="JOINT"?K.sid:K.name,$t.matrix.copy(ce),$t.matrix.decompose($t.position,$t.quaternion,$t.scale),$t}let nc=new or({color:16711935});function aa(K,Z){let ce=[];for(let oe=0,pe=K.length;oe<pe;oe++){let qe=Z[K[oe]];qe===void 0?(console.warn("THREE.ColladaLoader: Material with key %s not found. Apply fallback material.",K[oe]),ce.push(nc)):ce.push(gt(qe))}return ce}function oa(K,Z){let ce=[];for(let oe in K){let pe=K[oe],qe=aa(pe.materialKeys,Z);if(qe.length===0&&(oe==="lines"||oe==="linestrips"?qe.push(new Tr):qe.push(new Ts)),oe==="lines"||oe==="linestrips")for(let Ft=0,$t=qe.length;Ft<$t;Ft++){let pt=qe[Ft];if(pt.isMeshPhongMaterial===!0||pt.isMeshLambertMaterial===!0){let qt=new Tr;qt.color.copy(pt.color),qt.opacity=pt.opacity,qt.transparent=pt.transparent,qe[Ft]=qt}}let et=pe.data.attributes.skinIndex!==void 0,Ht=qe.length===1?qe[0]:qe,Mt;switch(oe){case"lines":Mt=new oi(pe.data,Ht);break;case"linestrips":Mt=new _r(pe.data,Ht);break;case"triangles":case"polylist":et?Mt=new Bu(pe.data,Ht):Mt=new Je(pe.data,Ht);break}ce.push(Mt)}return ce}function on(K){return Qt.nodes[K]!==void 0}function En(K){return m(Qt.nodes[K],Ha)}function Io(K){let Z={name:K.getAttribute("name"),children:[]};dn(K);let ce=i(K,"node");for(let oe=0;oe<ce.length;oe++)Z.children.push(q(ce[oe]));Qt.visualScenes[K.getAttribute("id")]=Z}function Xn(K){let Z=new hr;Z.name=K.name;let ce=K.children;for(let oe=0;oe<ce.length;oe++){let pe=ce[oe];Z.add(En(pe.id))}return Z}function sc(K){return Qt.visualScenes[K]!==void 0}function uu(K){return m(Qt.visualScenes[K],Xn)}function ac(K){let Z=i(K,"instance_visual_scene")[0];return uu(o(Z.getAttribute("url")))}function hu(){let K=Qt.clips;if(c(K)===!0){if(c(Qt.animations)===!1){let Z=[];for(let ce in Qt.animations){let oe=x(ce);for(let pe=0,qe=oe.length;pe<qe;pe++)Z.push(oe[pe])}Xi.push(new so("default",-1,Z))}}else for(let Z in K)Xi.push(U(Z))}function hm(K){let Z="",ce=[K];for(;ce.length;){let oe=ce.shift();oe.nodeType===Node.TEXT_NODE?Z+=oe.textContent:(Z+=`
|
||
`,ce.push.apply(ce,oe.childNodes))}return Z.trim()}if(r.length===0)return{scene:new On};let bh=new DOMParser().parseFromString(r,"application/xml"),Ni=i(bh,"COLLADA")[0],md=bh.getElementsByTagName("parsererror")[0];if(md!==void 0){let K=i(md,"div")[0],Z;return K?Z=K.textContent:Z=hm(md),console.error(`THREE.ColladaLoader: Failed to parse collada file.
|
||
`,Z),null}let pu=Ni.getAttribute("version");console.debug("THREE.ColladaLoader: File version",pu);let L0=u(i(Ni,"asset")[0]),xh=new Es(this.manager);xh.setPath(this.resourcePath||e).setCrossOrigin(this.crossOrigin);let Ih;jx&&(Ih=new jx(this.manager),Ih.setPath(this.resourcePath||e));let oc=new Ve,Xi=[],al={},Zr=0,Qt={animations:{},clips:{},controllers:{},images:{},effects:{},materials:{},cameras:{},lights:{},geometries:{},nodes:{},visualScenes:{},kinematicsModels:{},physicsModels:{},kinematicsScenes:{}};d(Ni,"library_animations","animation",g),d(Ni,"library_animation_clips","animation_clip",k),d(Ni,"library_controllers","controller",j),d(Ni,"library_images","image",de),d(Ni,"library_effects","effect",je),d(Ni,"library_materials","material",Ce),d(Ni,"library_cameras","camera",ye),d(Ni,"library_lights","light",Dt),d(Ni,"library_geometries","geometry",Xe),d(Ni,"library_nodes","node",q),d(Ni,"library_visual_scenes","visual_scene",Io),d(Ni,"library_kinematics_models","kinematics_model",Is),d(Ni,"library_physics_models","physics_model",Ke),d(Ni,"scene","instance_kinematics_scene",Nr),f(Qt.animations,b),f(Qt.clips,G),f(Qt.controllers,ue),f(Qt.images,we),f(Qt.effects,Y),f(Qt.materials,Ze),f(Qt.cameras,Et),f(Qt.lights,gr),f(Qt.geometries,Pi),f(Qt.visualScenes,Xn),hu(),Vr();let Sh=ac(i(Ni,"scene")[0]);return Sh.animations=Xi,L0.upAxis==="Z_UP"&&(console.warn("THREE.ColladaLoader: You are loading an asset with a Z-UP coordinate system. The loader just rotates the asset to transform it into Y-UP. The vertex data are not converted, see #24289."),Sh.rotation.set(-Math.PI/2,0,0)),Sh.scale.multiplyScalar(L0.unit),{get animations(){return console.warn("THREE.ColladaLoader: Please access animations over scene.animations now."),Xi},kinematics:al,library:Qt,scene:Sh}}};var YB=new WeakMap,XC=class extends li{constructor(r){super(r),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(r){return this.decoderPath=r,this}setDecoderConfig(r){return this.decoderConfig=r,this}setWorkerLimit(r){return this.workerLimit=r,this}load(r,e,i,n){let s=new ci(this.manager);s.setPath(this.path),s.setResponseType("arraybuffer"),s.setRequestHeader(this.requestHeader),s.setWithCredentials(this.withCredentials),s.load(r,a=>{this.decodeDracoFile(a,e).catch(n)},i,n)}decodeDracoFile(r,e,i,n){let s={attributeIDs:i||this.defaultAttributeIDs,attributeTypes:n||this.defaultAttributeTypes,useUniqueIDs:!!i};return this.decodeGeometry(r,s).then(e)}decodeGeometry(r,e){let i=JSON.stringify(e);if(YB.has(r)){let l=YB.get(r);if(l.key===i)return l.promise;if(r.byteLength===0)throw new Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.")}let n,s=this.workerNextTaskID++,a=r.byteLength,o=this._getWorker(s,a).then(l=>(n=l,new Promise((c,u)=>{n._callbacks[s]={resolve:c,reject:u},n.postMessage({type:"decode",id:s,taskConfig:e,buffer:r},[r])}))).then(l=>this._createGeometry(l.geometry));return o.catch(()=>!0).then(()=>{n&&s&&this._releaseTask(n,s)}),YB.set(r,{key:i,promise:o}),o}_createGeometry(r){let e=new it;r.index&&e.setIndex(new jt(r.index.array,1));for(let i=0;i<r.attributes.length;i++){let n=r.attributes[i],s=n.name,a=n.array,o=n.itemSize;e.setAttribute(s,new jt(a,o))}return e}_loadLibrary(r,e){let i=new ci(this.manager);return i.setPath(this.decoderPath),i.setResponseType(e),i.setWithCredentials(this.withCredentials),new Promise((n,s)=>{i.load(r,n,void 0,s)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;let r=typeof WebAssembly!="object"||this.decoderConfig.type==="js",e=[];return r?e.push(this._loadLibrary("draco_decoder.js","text")):(e.push(this._loadLibrary("draco_wasm_wrapper.js","text")),e.push(this._loadLibrary("draco_decoder.wasm","arraybuffer"))),this.decoderPending=Promise.all(e).then(i=>{let n=i[0];r||(this.decoderConfig.wasmBinary=i[1]);let s=Yyt.toString(),a=["/* draco decoder */",n,"","/* worker */",s.substring(s.indexOf("{")+1,s.lastIndexOf("}"))].join(`
|
||
`);this.workerSourceURL=URL.createObjectURL(new Blob([a]))}),this.decoderPending}_getWorker(r,e){return this._initDecoder().then(()=>{if(this.workerPool.length<this.workerLimit){let n=new Worker(this.workerSourceURL);n._callbacks={},n._taskCosts={},n._taskLoad=0,n.postMessage({type:"init",decoderConfig:this.decoderConfig}),n.onmessage=function(s){let a=s.data;switch(a.type){case"decode":n._callbacks[a.id].resolve(a);break;case"error":n._callbacks[a.id].reject(a);break;default:console.error('THREE.DRACOLoader: Unexpected message, "'+a.type+'"')}},this.workerPool.push(n)}else this.workerPool.sort(function(n,s){return n._taskLoad>s._taskLoad?-1:1});let i=this.workerPool[this.workerPool.length-1];return i._taskCosts[r]=e,i._taskLoad+=e,i})}_releaseTask(r,e){r._taskLoad-=r._taskCosts[e],delete r._callbacks[e],delete r._taskCosts[e]}debug(){console.log("Task load: ",this.workerPool.map(r=>r._taskLoad))}dispose(){for(let r=0;r<this.workerPool.length;++r)this.workerPool[r].terminate();return this.workerPool.length=0,this.workerSourceURL!==""&&URL.revokeObjectURL(this.workerSourceURL),this}};function Yyt(){let t,r;onmessage=function(a){let o=a.data;switch(o.type){case"init":t=o.decoderConfig,r=new Promise(function(u){t.onModuleLoaded=function(h){u({draco:h})},DracoDecoderModule(t)});break;case"decode":let l=o.buffer,c=o.taskConfig;r.then(u=>{let h=u.draco,p=new h.Decoder,d=new h.DecoderBuffer;d.Init(new Int8Array(l),l.byteLength);try{let f=e(h,p,d,c),m=f.attributes.map(g=>g.array.buffer);f.index&&m.push(f.index.array.buffer),self.postMessage({type:"decode",id:o.id,geometry:f},m)}catch(f){console.error(f),self.postMessage({type:"error",id:o.id,error:f.message})}finally{h.destroy(d),h.destroy(p)}});break}};function e(a,o,l,c){let u=c.attributeIDs,h=c.attributeTypes,p,d,f=o.GetEncodedGeometryType(l);if(f===a.TRIANGULAR_MESH)p=new a.Mesh,d=o.DecodeBufferToMesh(l,p);else if(f===a.POINT_CLOUD)p=new a.PointCloud,d=o.DecodeBufferToPointCloud(l,p);else throw new Error("THREE.DRACOLoader: Unexpected geometry type.");if(!d.ok()||p.ptr===0)throw new Error("THREE.DRACOLoader: Decoding failed: "+d.error_msg());let m={index:null,attributes:[]};for(let g in u){let y=self[h[g]],E,b;if(c.useUniqueIDs)b=u[g],E=o.GetAttributeByUniqueId(p,b);else{if(b=o.GetAttributeId(p,a[u[g]]),b===-1)continue;E=o.GetAttribute(p,b)}m.attributes.push(n(a,o,p,g,y,E))}return f===a.TRIANGULAR_MESH&&(m.index=i(a,o,p)),a.destroy(p),m}function i(a,o,l){let u=l.num_faces()*3,h=u*4,p=a._malloc(h);o.GetTrianglesUInt32Array(l,h,p);let d=new Uint32Array(a.HEAPF32.buffer,p,u).slice();return a._free(p),{array:d,itemSize:1}}function n(a,o,l,c,u,h){let p=h.num_components(),f=l.num_points()*p,m=f*u.BYTES_PER_ELEMENT,g=s(a,u),y=a._malloc(m);o.GetAttributeDataArrayForAllPoints(l,h,g,m,y);let E=new u(a.HEAPF32.buffer,y,f).slice();return a._free(y),{name:c,array:E,itemSize:p}}function s(a,o){switch(o){case Float32Array:return a.DT_FLOAT32;case Int8Array:return a.DT_INT8;case Int16Array:return a.DT_INT16;case Int32Array:return a.DT_INT32;case Uint8Array:return a.DT_UINT8;case Uint16Array:return a.DT_UINT16;case Uint32Array:return a.DT_UINT32}}}var tde=function(t){return URL.createObjectURL(new Blob([t],{type:"text/javascript"}))},Xyt=function(t){return new Worker(t)};try{URL.revokeObjectURL(tde(""))}catch(t){tde=function(r){return"data:application/javascript;charset=UTF-8,"+encodeURI(r)},Xyt=function(r){return new Worker(r,{type:"module"})}}var Ul=Uint8Array,Cf=Uint16Array,ZB=Uint32Array,rde=new Ul([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),ide=new Ul([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),$yt=new Ul([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),nde=function(t,r){for(var e=new Cf(31),i=0;i<31;++i)e[i]=r+=1<<t[i-1];for(var n=new ZB(e[30]),i=1;i<30;++i)for(var s=e[i];s<e[i+1];++s)n[s]=s-e[i]<<5|i;return[e,n]},sde=nde(rde,2),ade=sde[0],Zyt=sde[1];ade[28]=258,Zyt[258]=28;var ode=nde(ide,0),Kyt=ode[0],T$t=ode[1],KB=new Cf(32768);for(Ui=0;Ui<32768;++Ui)Bp=(Ui&43690)>>>1|(Ui&21845)<<1,Bp=(Bp&52428)>>>2|(Bp&13107)<<2,Bp=(Bp&61680)>>>4|(Bp&3855)<<4,KB[Ui]=((Bp&65280)>>>8|(Bp&255)<<8)>>>1;var Bp,Ui,Wx=function(t,r,e){for(var i=t.length,n=0,s=new Cf(r);n<i;++n)++s[t[n]-1];var a=new Cf(r);for(n=0;n<r;++n)a[n]=a[n-1]+s[n-1]<<1;var o;if(e){o=new Cf(1<<r);var l=15-r;for(n=0;n<i;++n)if(t[n])for(var c=n<<4|t[n],u=r-t[n],h=a[t[n]-1]++<<u,p=h|(1<<u)-1;h<=p;++h)o[KB[h]>>>l]=c}else for(o=new Cf(i),n=0;n<i;++n)t[n]&&(o[n]=KB[a[t[n]-1]++]>>>15-t[n]);return o},qx=new Ul(288);for(Ui=0;Ui<144;++Ui)qx[Ui]=8;var Ui;for(Ui=144;Ui<256;++Ui)qx[Ui]=9;var Ui;for(Ui=256;Ui<280;++Ui)qx[Ui]=7;var Ui;for(Ui=280;Ui<288;++Ui)qx[Ui]=8;var Ui,lde=new Ul(32);for(Ui=0;Ui<32;++Ui)lde[Ui]=5;var Ui;var Jyt=Wx(qx,9,1);var Qyt=Wx(lde,5,1),XB=function(t){for(var r=t[0],e=1;e<t.length;++e)t[e]>r&&(r=t[e]);return r},Fc=function(t,r,e){var i=r/8|0;return(t[i]|t[i+1]<<8)>>(r&7)&e},$B=function(t,r){var e=r/8|0;return(t[e]|t[e+1]<<8|t[e+2]<<16)>>(r&7)},eTt=function(t){return(t/8|0)+(t&7&&1)},tTt=function(t,r,e){(r==null||r<0)&&(r=0),(e==null||e>t.length)&&(e=t.length);var i=new(t instanceof Cf?Cf:t instanceof ZB?ZB:Ul)(e-r);return i.set(t.subarray(r,e)),i},rTt=function(t,r,e){var i=t.length;if(!i||e&&!e.l&&i<5)return r||new Ul(0);var n=!r||e,s=!e||e.i;e||(e={}),r||(r=new Ul(i*3));var a=function(de){var we=r.length;if(de>we){var Fe=new Ul(Math.max(we*2,de));Fe.set(r),r=Fe}},o=e.f||0,l=e.p||0,c=e.b||0,u=e.l,h=e.d,p=e.m,d=e.n,f=i*8;do{if(!u){e.f=o=Fc(t,l,1);var m=Fc(t,l+1,3);if(l+=3,m)if(m==1)u=Jyt,h=Qyt,p=9,d=5;else if(m==2){var b=Fc(t,l,31)+257,x=Fc(t,l+10,15)+4,S=b+Fc(t,l+5,31)+1;l+=14;for(var D=new Ul(S),P=new Ul(19),_=0;_<x;++_)P[$yt[_]]=Fc(t,l+_*3,7);l+=x*3;for(var w=XB(P),F=(1<<w)-1,X=Wx(P,w,1),_=0;_<S;){var H=X[Fc(t,l,F)];l+=H&15;var g=H>>>4;if(g<16)D[_++]=g;else{var he=0,C=0;for(g==16?(C=3+Fc(t,l,3),l+=2,he=D[_-1]):g==17?(C=3+Fc(t,l,7),l+=3):g==18&&(C=11+Fc(t,l,127),l+=7);C--;)D[_++]=he}}var N=D.subarray(0,b),k=D.subarray(b);p=XB(N),d=XB(k),u=Wx(N,p,1),h=Wx(k,d,1)}else throw"invalid block type";else{var g=eTt(l)+4,y=t[g-4]|t[g-3]<<8,E=g+y;if(E>i){if(s)throw"unexpected EOF";break}n&&a(c+y),r.set(t.subarray(g,E),c),e.b=c+=y,e.p=l=E*8;continue}if(l>f){if(s)throw"unexpected EOF";break}}n&&a(c+131072);for(var G=(1<<p)-1,U=(1<<d)-1,j=l;;j=l){var he=u[$B(t,l)&G],ee=he>>>4;if(l+=he&15,l>f){if(s)throw"unexpected EOF";break}if(!he)throw"invalid length/literal";if(ee<256)r[c++]=ee;else if(ee==256){j=l,u=null;break}else{var ae=ee-254;if(ee>264){var _=ee-257,se=rde[_];ae=Fc(t,l,(1<<se)-1)+ade[_],l+=se}var ue=h[$B(t,l)&U],ve=ue>>>4;if(!ue)throw"invalid distance";l+=ue&15;var k=Kyt[ve];if(ve>3){var se=ide[ve];k+=$B(t,l)&(1<<se)-1,l+=se}if(l>f){if(s)throw"unexpected EOF";break}n&&a(c+131072);for(var be=c+ae;c<be;c+=4)r[c]=r[c-k],r[c+1]=r[c+1-k],r[c+2]=r[c+2-k],r[c+3]=r[c+3-k];c=be}}e.l=u,e.p=j,e.b=c,u&&(o=1,e.m=p,e.d=h,e.n=d)}while(!o);return c==r.length?r:tTt(r,0,c)};var iTt=new Ul(0);var nTt=function(t){if((t[0]&15)!=8||t[0]>>>4>7||(t[0]<<8|t[1])%31)throw"invalid zlib data";if(t[1]&32)throw"invalid zlib data: preset dictionaries not supported"};function cde(t,r){return rTt((nTt(t),t.subarray(2,-4)),r)}var sTt=typeof TextDecoder!="undefined"&&new TextDecoder,aTt=0;try{sTt.decode(iTt,{stream:!0}),aTt=1}catch(t){}function ude(t,r,e){let i=e.length-t-1;if(r>=e[i])return i-1;if(r<=e[t])return t;let n=t,s=i,a=Math.floor((n+s)/2);for(;r<e[a]||r>=e[a+1];)r<e[a]?s=a:n=a,a=Math.floor((n+s)/2);return a}function lTt(t,r,e,i){let n=[],s=[],a=[];n[0]=1;for(let o=1;o<=e;++o){s[o]=r-i[t+1-o],a[o]=i[t+o]-r;let l=0;for(let c=0;c<o;++c){let u=a[c+1],h=s[o-c],p=n[c]/(u+h);n[c]=l+u*p,l=h*p}n[o]=l}return n}function hde(t,r,e,i){let n=ude(t,i,r),s=lTt(n,i,t,r),a=new Jr(0,0,0,0);for(let o=0;o<=t;++o){let l=e[n-t+o],c=s[o],u=l.w*c;a.x+=l.x*u,a.y+=l.y*u,a.z+=l.z*u,a.w+=l.w*c}return a}function cTt(t,r,e,i,n){let s=[];for(let h=0;h<=e;++h)s[h]=0;let a=[];for(let h=0;h<=i;++h)a[h]=s.slice(0);let o=[];for(let h=0;h<=e;++h)o[h]=s.slice(0);o[0][0]=1;let l=s.slice(0),c=s.slice(0);for(let h=1;h<=e;++h){l[h]=r-n[t+1-h],c[h]=n[t+h]-r;let p=0;for(let d=0;d<h;++d){let f=c[d+1],m=l[h-d];o[h][d]=f+m;let g=o[d][h-1]/o[h][d];o[d][h]=p+f*g,p=m*g}o[h][h]=p}for(let h=0;h<=e;++h)a[0][h]=o[h][e];for(let h=0;h<=e;++h){let p=0,d=1,f=[];for(let m=0;m<=e;++m)f[m]=s.slice(0);f[0][0]=1;for(let m=1;m<=i;++m){let g=0,y=h-m,E=e-m;h>=m&&(f[d][0]=f[p][0]/o[E+1][y],g=f[d][0]*o[y][E]);let b=y>=-1?1:-y,x=h-1<=E?m-1:e-h;for(let D=b;D<=x;++D)f[d][D]=(f[p][D]-f[p][D-1])/o[E+1][y+D],g+=f[d][D]*o[y+D][E];h<=E&&(f[d][m]=-f[p][m-1]/o[E+1][h],g+=f[d][m]*o[h][E]),a[m][h]=g;let S=p;p=d,d=S}}let u=e;for(let h=1;h<=i;++h){for(let p=0;p<=e;++p)a[h][p]*=u;u*=e-h}return a}function uTt(t,r,e,i,n){let s=n<t?n:t,a=[],o=ude(t,i,r),l=cTt(o,i,t,s,r),c=[];for(let u=0;u<e.length;++u){let h=e[u].clone(),p=h.w;h.x*=p,h.y*=p,h.z*=p,c[u]=h}for(let u=0;u<=s;++u){let h=c[o-t].clone().multiplyScalar(l[u][0]);for(let p=1;p<=t;++p)h.add(c[o-t+p].clone().multiplyScalar(l[u][p]));a[u]=h}for(let u=s+1;u<=n+1;++u)a[u]=new Jr(0,0,0);return a}function hTt(t,r){let e=1;for(let n=2;n<=t;++n)e*=n;let i=1;for(let n=2;n<=r;++n)i*=n;for(let n=2;n<=t-r;++n)i*=n;return e/i}function pTt(t){let r=t.length,e=[],i=[];for(let s=0;s<r;++s){let a=t[s];e[s]=new A(a.x,a.y,a.z),i[s]=a.w}let n=[];for(let s=0;s<r;++s){let a=e[s].clone();for(let o=1;o<=s;++o)a.sub(n[s-o].clone().multiplyScalar(hTt(s,o)*i[o]));n[s]=a.divideScalar(i[0])}return n}function pde(t,r,e,i,n){let s=uTt(t,r,e,i,n);return pTt(s)}var $C=class extends Ma{constructor(r,e,i,n,s){super(),this.degree=r,this.knots=e,this.controlPoints=[],this.startKnot=n||0,this.endKnot=s||this.knots.length-1;for(let a=0;a<i.length;++a){let o=i[a];this.controlPoints[a]=new Jr(o.x,o.y,o.z,o.w)}}getPoint(r,e=new A){let i=e,n=this.knots[this.startKnot]+r*(this.knots[this.endKnot]-this.knots[this.startKnot]),s=hde(this.degree,this.knots,this.controlPoints,n);return s.w!==1&&s.divideScalar(s.w),i.set(s.x,s.y,s.z)}getTangent(r,e=new A){let i=e,n=this.knots[0]+r*(this.knots[this.knots.length-1]-this.knots[0]),s=pde(this.degree,this.knots,this.controlPoints,n,1);return i.copy(s[1]).normalize(),i}};var ui,rs,mo,KC=class extends li{constructor(r){super(r)}load(r,e,i,n){let s=this,a=s.path===""?ks.extractUrlBase(r):s.path,o=new ci(this.manager);o.setPath(s.path),o.setResponseType("arraybuffer"),o.setRequestHeader(s.requestHeader),o.setWithCredentials(s.withCredentials),o.load(r,function(l){try{e(s.parse(l,a))}catch(c){n?n(c):console.error(c),s.manager.itemError(r)}},i,n)}parse(r,e){if(fTt(r))ui=new nk().parse(r);else{let n=vde(r);if(!mTt(n))throw new Error("THREE.FBXLoader: Unknown format.");if(dde(n)<7e3)throw new Error("THREE.FBXLoader: FBX version not supported, FileVersion: "+dde(n));ui=new ik().parse(n)}let i=new Es(this.manager).setPath(this.resourcePath||e).setCrossOrigin(this.crossOrigin);return new ek(i,this.manager).parse(ui)}},ek=class{constructor(r,e){this.textureLoader=r,this.manager=e}parse(){rs=this.parseConnections();let r=this.parseImages(),e=this.parseTextures(r),i=this.parseMaterials(e),n=this.parseDeformers(),s=new tk().parse(n);return this.parseScene(n,s,i),mo}parseConnections(){let r=new Map;return"Connections"in ui&&ui.Connections.connections.forEach(function(i){let n=i[0],s=i[1],a=i[2];r.has(n)||r.set(n,{parents:[],children:[]});let o={ID:s,relationship:a};r.get(n).parents.push(o),r.has(s)||r.set(s,{parents:[],children:[]});let l={ID:n,relationship:a};r.get(s).children.push(l)}),r}parseImages(){let r={},e={};if("Video"in ui.Objects){let i=ui.Objects.Video;for(let n in i){let s=i[n],a=parseInt(n);if(r[a]=s.RelativeFilename||s.Filename,"Content"in s){let o=s.Content instanceof ArrayBuffer&&s.Content.byteLength>0,l=typeof s.Content=="string"&&s.Content!=="";if(o||l){let c=this.parseImage(i[n]);e[s.RelativeFilename||s.Filename]=c}}}}for(let i in r){let n=r[i];e[n]!==void 0?r[i]=e[n]:r[i]=r[i].split("\\").pop()}return r}parseImage(r){let e=r.Content,i=r.RelativeFilename||r.Filename,n=i.slice(i.lastIndexOf(".")+1).toLowerCase(),s;switch(n){case"bmp":s="image/bmp";break;case"jpg":case"jpeg":s="image/jpeg";break;case"png":s="image/png";break;case"tif":s="image/tiff";break;case"tga":this.manager.getHandler(".tga")===null&&console.warn("FBXLoader: TGA loader not found, skipping ",i),s="image/tga";break;default:console.warn('FBXLoader: Image type "'+n+'" is not supported.');return}if(typeof e=="string")return"data:"+s+";base64,"+e;{let a=new Uint8Array(e);return window.URL.createObjectURL(new Blob([a],{type:s}))}}parseTextures(r){let e=new Map;if("Texture"in ui.Objects){let i=ui.Objects.Texture;for(let n in i){let s=this.parseTexture(i[n],r);e.set(parseInt(n),s)}}return e}parseTexture(r,e){let i=this.loadTexture(r,e);i.ID=r.id,i.name=r.attrName;let n=r.WrapModeU,s=r.WrapModeV,a=n!==void 0?n.value:0,o=s!==void 0?s.value:0;if(i.wrapS=a===0?gn:mn,i.wrapT=o===0?gn:mn,"Scaling"in r){let l=r.Scaling.value;i.repeat.x=l[0],i.repeat.y=l[1]}if("Translation"in r){let l=r.Translation.value;i.offset.x=l[0],i.offset.y=l[1]}return i}loadTexture(r,e){let i,n=this.textureLoader.path,s=rs.get(r.id).children;s!==void 0&&s.length>0&&e[s[0].ID]!==void 0&&(i=e[s[0].ID],(i.indexOf("blob:")===0||i.indexOf("data:")===0)&&this.textureLoader.setPath(void 0));let a,o=r.FileName.slice(-3).toLowerCase();if(o==="tga"){let l=this.manager.getHandler(".tga");l===null?(console.warn("FBXLoader: TGA loader not found, creating placeholder texture for",r.RelativeFilename),a=new Hi):(l.setPath(this.textureLoader.path),a=l.load(i))}else o==="psd"?(console.warn("FBXLoader: PSD textures are not supported, creating placeholder texture for",r.RelativeFilename),a=new Hi):a=this.textureLoader.load(i);return this.textureLoader.setPath(n),a}parseMaterials(r){let e=new Map;if("Material"in ui.Objects){let i=ui.Objects.Material;for(let n in i){let s=this.parseMaterial(i[n],r);s!==null&&e.set(parseInt(n),s)}}return e}parseMaterial(r,e){let i=r.id,n=r.attrName,s=r.ShadingModel;if(typeof s=="object"&&(s=s.value),!rs.has(i))return null;let a=this.parseParameters(r,e,i),o;switch(s.toLowerCase()){case"phong":o=new Ts;break;case"lambert":o=new io;break;default:console.warn('THREE.FBXLoader: unknown material type "%s". Defaulting to MeshPhongMaterial.',s),o=new Ts;break}return o.setValues(a),o.name=n,o}parseParameters(r,e,i){let n={};r.BumpFactor&&(n.bumpScale=r.BumpFactor.value),r.Diffuse?n.color=new Ve().fromArray(r.Diffuse.value):r.DiffuseColor&&(r.DiffuseColor.type==="Color"||r.DiffuseColor.type==="ColorRGB")&&(n.color=new Ve().fromArray(r.DiffuseColor.value)),r.DisplacementFactor&&(n.displacementScale=r.DisplacementFactor.value),r.Emissive?n.emissive=new Ve().fromArray(r.Emissive.value):r.EmissiveColor&&(r.EmissiveColor.type==="Color"||r.EmissiveColor.type==="ColorRGB")&&(n.emissive=new Ve().fromArray(r.EmissiveColor.value)),r.EmissiveFactor&&(n.emissiveIntensity=parseFloat(r.EmissiveFactor.value)),r.Opacity&&(n.opacity=parseFloat(r.Opacity.value)),n.opacity<1&&(n.transparent=!0),r.ReflectionFactor&&(n.reflectivity=r.ReflectionFactor.value),r.Shininess&&(n.shininess=r.Shininess.value),r.Specular?n.specular=new Ve().fromArray(r.Specular.value):r.SpecularColor&&r.SpecularColor.type==="Color"&&(n.specular=new Ve().fromArray(r.SpecularColor.value));let s=this;return rs.get(i).children.forEach(function(a){let o=a.relationship;switch(o){case"Bump":n.bumpMap=s.getTexture(e,a.ID);break;case"Maya|TEX_ao_map":n.aoMap=s.getTexture(e,a.ID);break;case"DiffuseColor":case"Maya|TEX_color_map":n.map=s.getTexture(e,a.ID),n.map!==void 0&&(n.map.encoding=yr);break;case"DisplacementColor":n.displacementMap=s.getTexture(e,a.ID);break;case"EmissiveColor":n.emissiveMap=s.getTexture(e,a.ID),n.emissiveMap!==void 0&&(n.emissiveMap.encoding=yr);break;case"NormalMap":case"Maya|TEX_normal_map":n.normalMap=s.getTexture(e,a.ID);break;case"ReflectionColor":n.envMap=s.getTexture(e,a.ID),n.envMap!==void 0&&(n.envMap.mapping=mg,n.envMap.encoding=yr);break;case"SpecularColor":n.specularMap=s.getTexture(e,a.ID),n.specularMap!==void 0&&(n.specularMap.encoding=yr);break;case"TransparentColor":case"TransparencyFactor":n.alphaMap=s.getTexture(e,a.ID),n.transparent=!0;break;case"AmbientColor":case"ShininessExponent":case"SpecularFactor":case"VectorDisplacementColor":default:console.warn("THREE.FBXLoader: %s map is not supported in three.js, skipping texture.",o);break}}),n}getTexture(r,e){return"LayeredTexture"in ui.Objects&&e in ui.Objects.LayeredTexture&&(console.warn("THREE.FBXLoader: layered textures are not supported in three.js. Discarding all but first layer."),e=rs.get(e).children[0].ID),r.get(e)}parseDeformers(){let r={},e={};if("Deformer"in ui.Objects){let i=ui.Objects.Deformer;for(let n in i){let s=i[n],a=rs.get(parseInt(n));if(s.attrType==="Skin"){let o=this.parseSkeleton(a,i);o.ID=n,a.parents.length>1&&console.warn("THREE.FBXLoader: skeleton attached to more than one geometry is not supported."),o.geometryID=a.parents[0].ID,r[n]=o}else if(s.attrType==="BlendShape"){let o={id:n};o.rawTargets=this.parseMorphTargets(a,i),o.id=n,a.parents.length>1&&console.warn("THREE.FBXLoader: morph target attached to more than one geometry is not supported."),e[n]=o}}}return{skeletons:r,morphTargets:e}}parseSkeleton(r,e){let i=[];return r.children.forEach(function(n){let s=e[n.ID];if(s.attrType!=="Cluster")return;let a={ID:n.ID,indices:[],weights:[],transformLink:new Ue().fromArray(s.TransformLink.a)};"Indexes"in s&&(a.indices=s.Indexes.a,a.weights=s.Weights.a),i.push(a)}),{rawBones:i,bones:[]}}parseMorphTargets(r,e){let i=[];for(let n=0;n<r.children.length;n++){let s=r.children[n],a=e[s.ID],o={name:a.attrName,initialWeight:a.DeformPercent,id:a.id,fullWeights:a.FullWeights.a};if(a.attrType!=="BlendShapeChannel")return;o.geoID=rs.get(parseInt(s.ID)).children.filter(function(l){return l.relationship===void 0})[0].ID,i.push(o)}return i}parseScene(r,e,i){mo=new hr;let n=this.parseModels(r.skeletons,e,i),s=ui.Objects.Model,a=this;n.forEach(function(l){let c=s[l.ID];a.setLookAtProperties(l,c),rs.get(l.ID).parents.forEach(function(h){let p=n.get(h.ID);p!==void 0&&p.add(l)}),l.parent===null&&mo.add(l)}),this.bindSkeleton(r.skeletons,e,n),this.createAmbientLight(),mo.traverse(function(l){if(l.userData.transformData){l.parent&&(l.userData.transformData.parentMatrix=l.parent.matrix,l.userData.transformData.parentMatrixWorld=l.parent.matrixWorld);let c=mde(l.userData.transformData);l.applyMatrix4(c),l.updateWorldMatrix()}});let o=new rk().parse();mo.children.length===1&&mo.children[0].isGroup&&(mo.children[0].animations=o,mo=mo.children[0]),mo.animations=o}parseModels(r,e,i){let n=new Map,s=ui.Objects.Model;for(let a in s){let o=parseInt(a),l=s[a],c=rs.get(o),u=this.buildSkeleton(c,r,o,l.attrName);if(!u){switch(l.attrType){case"Camera":u=this.createCamera(c);break;case"Light":u=this.createLight(c);break;case"Mesh":u=this.createMesh(c,e,i);break;case"NurbsCurve":u=this.createCurve(c,e);break;case"LimbNode":case"Root":u=new Rl;break;case"Null":default:u=new hr;break}u.name=l.attrName?Cr.sanitizeNodeName(l.attrName):"",u.ID=o}this.getTransformData(u,l),n.set(o,u)}return n}buildSkeleton(r,e,i,n){let s=null;return r.parents.forEach(function(a){for(let o in e){let l=e[o];l.rawBones.forEach(function(c,u){if(c.ID===a.ID){let h=s;s=new Rl,s.matrixWorld.copy(c.transformLink),s.name=n?Cr.sanitizeNodeName(n):"",s.ID=i,l.bones[u]=s,h!==null&&s.add(h)}})}}),s}createCamera(r){let e,i;if(r.children.forEach(function(n){let s=ui.Objects.NodeAttribute[n.ID];s!==void 0&&(i=s)}),i===void 0)e=new pr;else{let n=0;i.CameraProjectionType!==void 0&&i.CameraProjectionType.value===1&&(n=1);let s=1;i.NearPlane!==void 0&&(s=i.NearPlane.value/1e3);let a=1e3;i.FarPlane!==void 0&&(a=i.FarPlane.value/1e3);let o=window.innerWidth,l=window.innerHeight;i.AspectWidth!==void 0&&i.AspectHeight!==void 0&&(o=i.AspectWidth.value,l=i.AspectHeight.value);let c=o/l,u=45;i.FieldOfView!==void 0&&(u=i.FieldOfView.value);let h=i.FocalLength?i.FocalLength.value:null;switch(n){case 0:e=new qr(u,c,s,a),h!==null&&e.setFocalLength(h);break;case 1:e=new Zi(-o/2,o/2,l/2,-l/2,s,a);break;default:console.warn("THREE.FBXLoader: Unknown camera type "+n+"."),e=new pr;break}}return e}createLight(r){let e,i;if(r.children.forEach(function(n){let s=ui.Objects.NodeAttribute[n.ID];s!==void 0&&(i=s)}),i===void 0)e=new pr;else{let n;i.LightType===void 0?n=0:n=i.LightType.value;let s=16777215;i.Color!==void 0&&(s=new Ve().fromArray(i.Color.value));let a=i.Intensity===void 0?1:i.Intensity.value/100;i.CastLightOnObject!==void 0&&i.CastLightOnObject.value===0&&(a=0);let o=0;i.FarAttenuationEnd!==void 0&&(i.EnableFarAttenuation!==void 0&&i.EnableFarAttenuation.value===0?o=0:o=i.FarAttenuationEnd.value);let l=1;switch(n){case 0:e=new Ac(s,a,o,l);break;case 1:e=new $s(s,a);break;case 2:let c=Math.PI/3;i.InnerAngle!==void 0&&(c=wr.degToRad(i.InnerAngle.value));let u=0;i.OuterAngle!==void 0&&(u=wr.degToRad(i.OuterAngle.value),u=Math.max(u,1)),e=new Vu(s,a,o,c,u,l);break;default:console.warn("THREE.FBXLoader: Unknown light type "+i.LightType.value+", defaulting to a PointLight."),e=new Ac(s,a);break}i.CastShadows!==void 0&&i.CastShadows.value===1&&(e.castShadow=!0)}return e}createMesh(r,e,i){let n,s=null,a=null,o=[];return r.children.forEach(function(l){e.has(l.ID)&&(s=e.get(l.ID)),i.has(l.ID)&&o.push(i.get(l.ID))}),o.length>1?a=o:o.length>0?a=o[0]:(a=new Ts({color:13421772}),o.push(a)),"color"in s.attributes&&o.forEach(function(l){l.vertexColors=!0}),s.FBX_Deformer?(n=new Bu(s,a),n.normalizeSkinWeights()):n=new Je(s,a),n}createCurve(r,e){let i=r.children.reduce(function(s,a){return e.has(a.ID)&&(s=e.get(a.ID)),s},null),n=new Tr({color:3342591,linewidth:1});return new _r(i,n)}getTransformData(r,e){let i={};"InheritType"in e&&(i.inheritType=parseInt(e.InheritType.value)),"RotationOrder"in e?i.eulerOrder=gde(e.RotationOrder.value):i.eulerOrder="ZYX","Lcl_Translation"in e&&(i.translation=e.Lcl_Translation.value),"PreRotation"in e&&(i.preRotation=e.PreRotation.value),"Lcl_Rotation"in e&&(i.rotation=e.Lcl_Rotation.value),"PostRotation"in e&&(i.postRotation=e.PostRotation.value),"Lcl_Scaling"in e&&(i.scale=e.Lcl_Scaling.value),"ScalingOffset"in e&&(i.scalingOffset=e.ScalingOffset.value),"ScalingPivot"in e&&(i.scalingPivot=e.ScalingPivot.value),"RotationOffset"in e&&(i.rotationOffset=e.RotationOffset.value),"RotationPivot"in e&&(i.rotationPivot=e.RotationPivot.value),r.userData.transformData=i}setLookAtProperties(r,e){"LookAtProperty"in e&&rs.get(r.ID).children.forEach(function(n){if(n.relationship==="LookAtProperty"){let s=ui.Objects.Model[n.ID];if("Lcl_Translation"in s){let a=s.Lcl_Translation.value;r.target!==void 0?(r.target.position.fromArray(a),mo.add(r.target)):r.lookAt(new A().fromArray(a))}}})}bindSkeleton(r,e,i){let n=this.parsePoseNodes();for(let s in r){let a=r[s];rs.get(parseInt(a.ID)).parents.forEach(function(l){if(e.has(l.ID)){let c=l.ID;rs.get(c).parents.forEach(function(h){i.has(h.ID)&&i.get(h.ID).bind(new Ml(a.bones),n[h.ID])})}})}}parsePoseNodes(){let r={};if("Pose"in ui.Objects){let e=ui.Objects.Pose;for(let i in e)if(e[i].attrType==="BindPose"&&e[i].NbPoseNodes>0){let n=e[i].PoseNode;Array.isArray(n)?n.forEach(function(s){r[s.Node]=new Ue().fromArray(s.Matrix.a)}):r[n.Node]=new Ue().fromArray(n.Matrix.a)}}return r}createAmbientLight(){if("GlobalSettings"in ui&&"AmbientColor"in ui.GlobalSettings){let r=ui.GlobalSettings.AmbientColor.value,e=r[0],i=r[1],n=r[2];if(e!==0||i!==0||n!==0){let s=new Ve(e,i,n);mo.add(new Ol(s,1))}}}},tk=class{constructor(){this.negativeMaterialIndices=!1}parse(r){let e=new Map;if("Geometry"in ui.Objects){let i=ui.Objects.Geometry;for(let n in i){let s=rs.get(parseInt(n)),a=this.parseGeometry(s,i[n],r);e.set(parseInt(n),a)}}return this.negativeMaterialIndices===!0&&console.warn("THREE.FBXLoader: The FBX file contains invalid (negative) material indices. The asset might not render as expected."),e}parseGeometry(r,e,i){switch(e.attrType){case"Mesh":return this.parseMeshGeometry(r,e,i);case"NurbsCurve":return this.parseNurbsGeometry(e)}}parseMeshGeometry(r,e,i){let n=i.skeletons,s=[],a=r.parents.map(function(h){return ui.Objects.Model[h.ID]});if(a.length===0)return;let o=r.children.reduce(function(h,p){return n[p.ID]!==void 0&&(h=n[p.ID]),h},null);r.children.forEach(function(h){i.morphTargets[h.ID]!==void 0&&s.push(i.morphTargets[h.ID])});let l=a[0],c={};"RotationOrder"in l&&(c.eulerOrder=gde(l.RotationOrder.value)),"InheritType"in l&&(c.inheritType=parseInt(l.InheritType.value)),"GeometricTranslation"in l&&(c.translation=l.GeometricTranslation.value),"GeometricRotation"in l&&(c.rotation=l.GeometricRotation.value),"GeometricScaling"in l&&(c.scale=l.GeometricScaling.value);let u=mde(c);return this.genGeometry(e,o,s,u)}genGeometry(r,e,i,n){let s=new it;r.attrName&&(s.name=r.attrName);let a=this.parseGeoNode(r,e),o=this.genBuffers(a),l=new ct(o.vertex,3);if(l.applyMatrix4(n),s.setAttribute("position",l),o.colors.length>0&&s.setAttribute("color",new ct(o.colors,3)),e&&(s.setAttribute("skinIndex",new gg(o.weightsIndices,4)),s.setAttribute("skinWeight",new ct(o.vertexWeights,4)),s.FBX_Deformer=e),o.normal.length>0){let c=new Qi().getNormalMatrix(n),u=new ct(o.normal,3);u.applyNormalMatrix(c),s.setAttribute("normal",u)}if(o.uvs.forEach(function(c,u){let h="uv"+(u+1).toString();u===0&&(h="uv"),s.setAttribute(h,new ct(o.uvs[u],2))}),a.material&&a.material.mappingType!=="AllSame"){let c=o.materialIndex[0],u=0;if(o.materialIndex.forEach(function(h,p){h!==c&&(s.addGroup(u,p-u,c),c=h,u=p)}),s.groups.length>0){let h=s.groups[s.groups.length-1],p=h.start+h.count;p!==o.materialIndex.length&&s.addGroup(p,o.materialIndex.length-p,c)}s.groups.length===0&&s.addGroup(0,o.materialIndex.length,o.materialIndex[0])}return this.addMorphTargets(s,r,i,n),s}parseGeoNode(r,e){let i={};if(i.vertexPositions=r.Vertices!==void 0?r.Vertices.a:[],i.vertexIndices=r.PolygonVertexIndex!==void 0?r.PolygonVertexIndex.a:[],r.LayerElementColor&&(i.color=this.parseVertexColors(r.LayerElementColor[0])),r.LayerElementMaterial&&(i.material=this.parseMaterialIndices(r.LayerElementMaterial[0])),r.LayerElementNormal&&(i.normal=this.parseNormals(r.LayerElementNormal[0])),r.LayerElementUV){i.uv=[];let n=0;for(;r.LayerElementUV[n];)r.LayerElementUV[n].UV&&i.uv.push(this.parseUVs(r.LayerElementUV[n])),n++}return i.weightTable={},e!==null&&(i.skeleton=e,e.rawBones.forEach(function(n,s){n.indices.forEach(function(a,o){i.weightTable[a]===void 0&&(i.weightTable[a]=[]),i.weightTable[a].push({id:s,weight:n.weights[o]})})})),i}genBuffers(r){let e={vertex:[],normal:[],colors:[],uvs:[],materialIndex:[],vertexWeights:[],weightsIndices:[]},i=0,n=0,s=!1,a=[],o=[],l=[],c=[],u=[],h=[],p=this;return r.vertexIndices.forEach(function(d,f){let m,g=!1;d<0&&(d=d^-1,g=!0);let y=[],E=[];if(a.push(d*3,d*3+1,d*3+2),r.color){let b=ZC(f,i,d,r.color);l.push(b[0],b[1],b[2])}if(r.skeleton){if(r.weightTable[d]!==void 0&&r.weightTable[d].forEach(function(b){E.push(b.weight),y.push(b.id)}),E.length>4){s||(console.warn("THREE.FBXLoader: Vertex has more than 4 skinning weights assigned to vertex. Deleting additional weights."),s=!0);let b=[0,0,0,0],x=[0,0,0,0];E.forEach(function(S,D){let P=S,_=y[D];x.forEach(function(w,F,X){if(P>w){X[F]=P,P=w;let H=b[F];b[F]=_,_=H}})}),y=b,E=x}for(;E.length<4;)E.push(0),y.push(0);for(let b=0;b<4;++b)u.push(E[b]),h.push(y[b])}if(r.normal){let b=ZC(f,i,d,r.normal);o.push(b[0],b[1],b[2])}r.material&&r.material.mappingType!=="AllSame"&&(m=ZC(f,i,d,r.material)[0],m<0&&(p.negativeMaterialIndices=!0,m=0)),r.uv&&r.uv.forEach(function(b,x){let S=ZC(f,i,d,b);c[x]===void 0&&(c[x]=[]),c[x].push(S[0]),c[x].push(S[1])}),n++,g&&(n>4&&console.warn("THREE.FBXLoader: Polygons with more than four sides are not supported. Make sure to triangulate the geometry during export."),p.genFace(e,r,a,m,o,l,c,u,h,n),i++,n=0,a=[],o=[],l=[],c=[],u=[],h=[])}),e}genFace(r,e,i,n,s,a,o,l,c,u){for(let h=2;h<u;h++)r.vertex.push(e.vertexPositions[i[0]]),r.vertex.push(e.vertexPositions[i[1]]),r.vertex.push(e.vertexPositions[i[2]]),r.vertex.push(e.vertexPositions[i[(h-1)*3]]),r.vertex.push(e.vertexPositions[i[(h-1)*3+1]]),r.vertex.push(e.vertexPositions[i[(h-1)*3+2]]),r.vertex.push(e.vertexPositions[i[h*3]]),r.vertex.push(e.vertexPositions[i[h*3+1]]),r.vertex.push(e.vertexPositions[i[h*3+2]]),e.skeleton&&(r.vertexWeights.push(l[0]),r.vertexWeights.push(l[1]),r.vertexWeights.push(l[2]),r.vertexWeights.push(l[3]),r.vertexWeights.push(l[(h-1)*4]),r.vertexWeights.push(l[(h-1)*4+1]),r.vertexWeights.push(l[(h-1)*4+2]),r.vertexWeights.push(l[(h-1)*4+3]),r.vertexWeights.push(l[h*4]),r.vertexWeights.push(l[h*4+1]),r.vertexWeights.push(l[h*4+2]),r.vertexWeights.push(l[h*4+3]),r.weightsIndices.push(c[0]),r.weightsIndices.push(c[1]),r.weightsIndices.push(c[2]),r.weightsIndices.push(c[3]),r.weightsIndices.push(c[(h-1)*4]),r.weightsIndices.push(c[(h-1)*4+1]),r.weightsIndices.push(c[(h-1)*4+2]),r.weightsIndices.push(c[(h-1)*4+3]),r.weightsIndices.push(c[h*4]),r.weightsIndices.push(c[h*4+1]),r.weightsIndices.push(c[h*4+2]),r.weightsIndices.push(c[h*4+3])),e.color&&(r.colors.push(a[0]),r.colors.push(a[1]),r.colors.push(a[2]),r.colors.push(a[(h-1)*3]),r.colors.push(a[(h-1)*3+1]),r.colors.push(a[(h-1)*3+2]),r.colors.push(a[h*3]),r.colors.push(a[h*3+1]),r.colors.push(a[h*3+2])),e.material&&e.material.mappingType!=="AllSame"&&(r.materialIndex.push(n),r.materialIndex.push(n),r.materialIndex.push(n)),e.normal&&(r.normal.push(s[0]),r.normal.push(s[1]),r.normal.push(s[2]),r.normal.push(s[(h-1)*3]),r.normal.push(s[(h-1)*3+1]),r.normal.push(s[(h-1)*3+2]),r.normal.push(s[h*3]),r.normal.push(s[h*3+1]),r.normal.push(s[h*3+2])),e.uv&&e.uv.forEach(function(p,d){r.uvs[d]===void 0&&(r.uvs[d]=[]),r.uvs[d].push(o[d][0]),r.uvs[d].push(o[d][1]),r.uvs[d].push(o[d][(h-1)*2]),r.uvs[d].push(o[d][(h-1)*2+1]),r.uvs[d].push(o[d][h*2]),r.uvs[d].push(o[d][h*2+1])})}addMorphTargets(r,e,i,n){if(i.length===0)return;r.morphTargetsRelative=!0,r.morphAttributes.position=[];let s=this;i.forEach(function(a){a.rawTargets.forEach(function(o){let l=ui.Objects.Geometry[o.geoID];l!==void 0&&s.genMorphGeometry(r,e,l,n,o.name)})})}genMorphGeometry(r,e,i,n,s){let a=e.PolygonVertexIndex!==void 0?e.PolygonVertexIndex.a:[],o=i.Vertices!==void 0?i.Vertices.a:[],l=i.Indexes!==void 0?i.Indexes.a:[],c=r.attributes.position.count*3,u=new Float32Array(c);for(let f=0;f<l.length;f++){let m=l[f]*3;u[m]=o[f*3],u[m+1]=o[f*3+1],u[m+2]=o[f*3+2]}let h={vertexIndices:a,vertexPositions:u},p=this.genBuffers(h),d=new ct(p.vertex,3);d.name=s||i.attrName,d.applyMatrix4(n),r.morphAttributes.position.push(d)}parseNormals(r){let e=r.MappingInformationType,i=r.ReferenceInformationType,n=r.Normals.a,s=[];return i==="IndexToDirect"&&("NormalIndex"in r?s=r.NormalIndex.a:"NormalsIndex"in r&&(s=r.NormalsIndex.a)),{dataSize:3,buffer:n,indices:s,mappingType:e,referenceType:i}}parseUVs(r){let e=r.MappingInformationType,i=r.ReferenceInformationType,n=r.UV.a,s=[];return i==="IndexToDirect"&&(s=r.UVIndex.a),{dataSize:2,buffer:n,indices:s,mappingType:e,referenceType:i}}parseVertexColors(r){let e=r.MappingInformationType,i=r.ReferenceInformationType,n=r.Colors.a,s=[];return i==="IndexToDirect"&&(s=r.ColorIndex.a),{dataSize:4,buffer:n,indices:s,mappingType:e,referenceType:i}}parseMaterialIndices(r){let e=r.MappingInformationType,i=r.ReferenceInformationType;if(e==="NoMappingInformation")return{dataSize:1,buffer:[0],indices:[0],mappingType:"AllSame",referenceType:i};let n=r.Materials.a,s=[];for(let a=0;a<n.length;++a)s.push(a);return{dataSize:1,buffer:n,indices:s,mappingType:e,referenceType:i}}parseNurbsGeometry(r){let e=parseInt(r.Order);if(isNaN(e))return console.error("THREE.FBXLoader: Invalid Order %s given for geometry ID: %s",r.Order,r.id),new it;let i=e-1,n=r.KnotVector.a,s=[],a=r.Points.a;for(let h=0,p=a.length;h<p;h+=4)s.push(new Jr().fromArray(a,h));let o,l;if(r.Form==="Closed")s.push(s[0]);else if(r.Form==="Periodic"){o=i,l=n.length-1-o;for(let h=0;h<i;++h)s.push(s[h])}let u=new $C(i,n,s,o,l).getPoints(s.length*12);return new it().setFromPoints(u)}},rk=class{parse(){let r=[],e=this.parseClips();if(e!==void 0)for(let i in e){let n=e[i],s=this.addClip(n);r.push(s)}return r}parseClips(){if(ui.Objects.AnimationCurve===void 0)return;let r=this.parseAnimationCurveNodes();this.parseAnimationCurves(r);let e=this.parseAnimationLayers(r);return this.parseAnimStacks(e)}parseAnimationCurveNodes(){let r=ui.Objects.AnimationCurveNode,e=new Map;for(let i in r){let n=r[i];if(n.attrName.match(/S|R|T|DeformPercent/)!==null){let s={id:n.id,attr:n.attrName,curves:{}};e.set(s.id,s)}}return e}parseAnimationCurves(r){let e=ui.Objects.AnimationCurve;for(let i in e){let n={id:e[i].id,times:e[i].KeyTime.a.map(gTt),values:e[i].KeyValueFloat.a},s=rs.get(n.id);if(s!==void 0){let a=s.parents[0].ID,o=s.parents[0].relationship;o.match(/X/)?r.get(a).curves.x=n:o.match(/Y/)?r.get(a).curves.y=n:o.match(/Z/)?r.get(a).curves.z=n:o.match(/d|DeformPercent/)&&r.has(a)&&(r.get(a).curves.morph=n)}}}parseAnimationLayers(r){let e=ui.Objects.AnimationLayer,i=new Map;for(let n in e){let s=[],a=rs.get(parseInt(n));a!==void 0&&(a.children.forEach(function(l,c){if(r.has(l.ID)){let u=r.get(l.ID);if(u.curves.x!==void 0||u.curves.y!==void 0||u.curves.z!==void 0){if(s[c]===void 0){let h=rs.get(l.ID).parents.filter(function(p){return p.relationship!==void 0})[0].ID;if(h!==void 0){let p=ui.Objects.Model[h.toString()];if(p===void 0){console.warn("THREE.FBXLoader: Encountered a unused curve.",l);return}let d={modelName:p.attrName?Cr.sanitizeNodeName(p.attrName):"",ID:p.id,initialPosition:[0,0,0],initialRotation:[0,0,0],initialScale:[1,1,1]};mo.traverse(function(f){f.ID===p.id&&(d.transform=f.matrix,f.userData.transformData&&(d.eulerOrder=f.userData.transformData.eulerOrder))}),d.transform||(d.transform=new Ue),"PreRotation"in p&&(d.preRotation=p.PreRotation.value),"PostRotation"in p&&(d.postRotation=p.PostRotation.value),s[c]=d}}s[c]&&(s[c][u.attr]=u)}else if(u.curves.morph!==void 0){if(s[c]===void 0){let h=rs.get(l.ID).parents.filter(function(y){return y.relationship!==void 0})[0].ID,p=rs.get(h).parents[0].ID,d=rs.get(p).parents[0].ID,f=rs.get(d).parents[0].ID,m=ui.Objects.Model[f],g={modelName:m.attrName?Cr.sanitizeNodeName(m.attrName):"",morphName:ui.Objects.Deformer[h].attrName};s[c]=g}s[c][u.attr]=u}}}),i.set(parseInt(n),s))}return i}parseAnimStacks(r){let e=ui.Objects.AnimationStack,i={};for(let n in e){let s=rs.get(parseInt(n)).children;s.length>1&&console.warn("THREE.FBXLoader: Encountered an animation stack with multiple layers, this is currently not supported. Ignoring subsequent layers.");let a=r.get(s[0].ID);i[n]={name:e[n].attrName,layer:a}}return i}addClip(r){let e=[],i=this;return r.layer.forEach(function(n){e=e.concat(i.generateTracks(n))}),new so(r.name,-1,e)}generateTracks(r){let e=[],i=new A,n=new Or,s=new A;if(r.transform&&r.transform.decompose(i,n,s),i=i.toArray(),n=new Sr().setFromQuaternion(n,r.eulerOrder).toArray(),s=s.toArray(),r.T!==void 0&&Object.keys(r.T.curves).length>0){let a=this.generateVectorTrack(r.modelName,r.T.curves,i,"position");a!==void 0&&e.push(a)}if(r.R!==void 0&&Object.keys(r.R.curves).length>0){let a=this.generateRotationTrack(r.modelName,r.R.curves,n,r.preRotation,r.postRotation,r.eulerOrder);a!==void 0&&e.push(a)}if(r.S!==void 0&&Object.keys(r.S.curves).length>0){let a=this.generateVectorTrack(r.modelName,r.S.curves,s,"scale");a!==void 0&&e.push(a)}if(r.DeformPercent!==void 0){let a=this.generateMorphTrack(r);a!==void 0&&e.push(a)}return e}generateVectorTrack(r,e,i,n){let s=this.getTimesForAllAxes(e),a=this.getKeyframeTrackValues(s,e,i);return new no(r+"."+n,s,a)}generateRotationTrack(r,e,i,n,s,a){e.x!==void 0&&(this.interpolateRotations(e.x),e.x.values=e.x.values.map(wr.degToRad)),e.y!==void 0&&(this.interpolateRotations(e.y),e.y.values=e.y.values.map(wr.degToRad)),e.z!==void 0&&(this.interpolateRotations(e.z),e.z.values=e.z.values.map(wr.degToRad));let o=this.getTimesForAllAxes(e),l=this.getKeyframeTrackValues(o,e,i);n!==void 0&&(n=n.map(wr.degToRad),n.push(a),n=new Sr().fromArray(n),n=new Or().setFromEuler(n)),s!==void 0&&(s=s.map(wr.degToRad),s.push(a),s=new Sr().fromArray(s),s=new Or().setFromEuler(s).invert());let c=new Or,u=new Sr,h=[];for(let p=0;p<l.length;p+=3)u.set(l[p],l[p+1],l[p+2],a),c.setFromEuler(u),n!==void 0&&c.premultiply(n),s!==void 0&&c.multiply(s),c.toArray(h,p/3*4);return new Da(r+".quaternion",o,h)}generateMorphTrack(r){let e=r.DeformPercent.curves.morph,i=e.values.map(function(s){return s/100}),n=mo.getObjectByName(r.modelName).morphTargetDictionary[r.morphName];return new Cc(r.modelName+".morphTargetInfluences["+n+"]",e.times,i)}getTimesForAllAxes(r){let e=[];if(r.x!==void 0&&(e=e.concat(r.x.times)),r.y!==void 0&&(e=e.concat(r.y.times)),r.z!==void 0&&(e=e.concat(r.z.times)),e=e.sort(function(i,n){return i-n}),e.length>1){let i=1,n=e[0];for(let s=1;s<e.length;s++){let a=e[s];a!==n&&(e[i]=a,n=a,i++)}e=e.slice(0,i)}return e}getKeyframeTrackValues(r,e,i){let n=i,s=[],a=-1,o=-1,l=-1;return r.forEach(function(c){if(e.x&&(a=e.x.times.indexOf(c)),e.y&&(o=e.y.times.indexOf(c)),e.z&&(l=e.z.times.indexOf(c)),a!==-1){let u=e.x.values[a];s.push(u),n[0]=u}else s.push(n[0]);if(o!==-1){let u=e.y.values[o];s.push(u),n[1]=u}else s.push(n[1]);if(l!==-1){let u=e.z.values[l];s.push(u),n[2]=u}else s.push(n[2])}),s}interpolateRotations(r){for(let e=1;e<r.values.length;e++){let i=r.values[e-1],n=r.values[e]-i,s=Math.abs(n);if(s>=180){let a=s/180,o=n/a,l=i+o,c=r.times[e-1],h=(r.times[e]-c)/a,p=c+h,d=[],f=[];for(;p<r.times[e];)d.push(p),p+=h,f.push(l),l+=o;r.times=fde(r.times,e,d),r.values=fde(r.values,e,f)}}}},ik=class{getPrevNode(){return this.nodeStack[this.currentIndent-2]}getCurrentNode(){return this.nodeStack[this.currentIndent-1]}getCurrentProp(){return this.currentProp}pushStack(r){this.nodeStack.push(r),this.currentIndent+=1}popStack(){this.nodeStack.pop(),this.currentIndent-=1}setCurrentProp(r,e){this.currentProp=r,this.currentPropName=e}parse(r){this.currentIndent=0,this.allNodes=new QC,this.nodeStack=[],this.currentProp=[],this.currentPropName="";let e=this,i=r.split(/[\r\n]+/);return i.forEach(function(n,s){let a=n.match(/^[\s\t]*;/),o=n.match(/^[\s\t]*$/);if(a||o)return;let l=n.match("^\\t{"+e.currentIndent+"}(\\w+):(.*){",""),c=n.match("^\\t{"+e.currentIndent+"}(\\w+):[\\s\\t\\r\\n](.*)"),u=n.match("^\\t{"+(e.currentIndent-1)+"}}");l?e.parseNodeBegin(n,l):c?e.parseNodeProperty(n,c,i[++s]):u?e.popStack():n.match(/^[^\s\t}]/)&&e.parseNodePropertyContinued(n)}),this.allNodes}parseNodeBegin(r,e){let i=e[1].trim().replace(/^"/,"").replace(/"$/,""),n=e[2].split(",").map(function(l){return l.trim().replace(/^"/,"").replace(/"$/,"")}),s={name:i},a=this.parseNodeAttr(n),o=this.getCurrentNode();this.currentIndent===0?this.allNodes.add(i,s):i in o?(i==="PoseNode"?o.PoseNode.push(s):o[i].id!==void 0&&(o[i]={},o[i][o[i].id]=o[i]),a.id!==""&&(o[i][a.id]=s)):typeof a.id=="number"?(o[i]={},o[i][a.id]=s):i!=="Properties70"&&(i==="PoseNode"?o[i]=[s]:o[i]=s),typeof a.id=="number"&&(s.id=a.id),a.name!==""&&(s.attrName=a.name),a.type!==""&&(s.attrType=a.type),this.pushStack(s)}parseNodeAttr(r){let e=r[0];r[0]!==""&&(e=parseInt(r[0]),isNaN(e)&&(e=r[0]));let i="",n="";return r.length>1&&(i=r[1].replace(/^(\w+)::/,""),n=r[2]),{id:e,name:i,type:n}}parseNodeProperty(r,e,i){let n=e[1].replace(/^"/,"").replace(/"$/,"").trim(),s=e[2].replace(/^"/,"").replace(/"$/,"").trim();n==="Content"&&s===","&&(s=i.replace(/"/g,"").replace(/,$/,"").trim());let a=this.getCurrentNode();if(a.name==="Properties70"){this.parseNodeSpecialProperty(r,n,s);return}if(n==="C"){let l=s.split(",").slice(1),c=parseInt(l[0]),u=parseInt(l[1]),h=s.split(",").slice(3);h=h.map(function(p){return p.trim().replace(/^"/,"")}),n="connections",s=[c,u],yTt(s,h),a[n]===void 0&&(a[n]=[])}n==="Node"&&(a.id=s),n in a&&Array.isArray(a[n])?a[n].push(s):n!=="a"?a[n]=s:a.a=s,this.setCurrentProp(a,n),n==="a"&&s.slice(-1)!==","&&(a.a=QB(s))}parseNodePropertyContinued(r){let e=this.getCurrentNode();e.a+=r,r.slice(-1)!==","&&(e.a=QB(e.a))}parseNodeSpecialProperty(r,e,i){let n=i.split('",').map(function(u){return u.trim().replace(/^\"/,"").replace(/\s/,"_")}),s=n[0],a=n[1],o=n[2],l=n[3],c=n[4];switch(a){case"int":case"enum":case"bool":case"ULongLong":case"double":case"Number":case"FieldOfView":c=parseFloat(c);break;case"Color":case"ColorRGB":case"Vector3D":case"Lcl_Translation":case"Lcl_Rotation":case"Lcl_Scaling":c=QB(c);break}this.getPrevNode()[s]={type:a,type2:o,flag:l,value:c},this.setCurrentProp(this.getPrevNode(),s)}},nk=class{parse(r){let e=new JC(r);e.skip(23);let i=e.getUint32();if(i<6400)throw new Error("THREE.FBXLoader: FBX version not supported, FileVersion: "+i);let n=new QC;for(;!this.endOfContent(e);){let s=this.parseNode(e,i);s!==null&&n.add(s.name,s)}return n}endOfContent(r){return r.size()%16===0?(r.getOffset()+160+16&-16)>=r.size():r.getOffset()+160+16>=r.size()}parseNode(r,e){let i={},n=e>=7500?r.getUint64():r.getUint32(),s=e>=7500?r.getUint64():r.getUint32();e>=7500?r.getUint64():r.getUint32();let a=r.getUint8(),o=r.getString(a);if(n===0)return null;let l=[];for(let p=0;p<s;p++)l.push(this.parseProperty(r));let c=l.length>0?l[0]:"",u=l.length>1?l[1]:"",h=l.length>2?l[2]:"";for(i.singleProperty=s===1&&r.getOffset()===n;n>r.getOffset();){let p=this.parseNode(r,e);p!==null&&this.parseSubNode(o,i,p)}return i.propertyList=l,typeof c=="number"&&(i.id=c),u!==""&&(i.attrName=u),h!==""&&(i.attrType=h),o!==""&&(i.name=o),i}parseSubNode(r,e,i){if(i.singleProperty===!0){let n=i.propertyList[0];Array.isArray(n)?(e[i.name]=i,i.a=n):e[i.name]=n}else if(r==="Connections"&&i.name==="C"){let n=[];i.propertyList.forEach(function(s,a){a!==0&&n.push(s)}),e.connections===void 0&&(e.connections=[]),e.connections.push(n)}else if(i.name==="Properties70")Object.keys(i).forEach(function(s){e[s]=i[s]});else if(r==="Properties70"&&i.name==="P"){let n=i.propertyList[0],s=i.propertyList[1],a=i.propertyList[2],o=i.propertyList[3],l;n.indexOf("Lcl ")===0&&(n=n.replace("Lcl ","Lcl_")),s.indexOf("Lcl ")===0&&(s=s.replace("Lcl ","Lcl_")),s==="Color"||s==="ColorRGB"||s==="Vector"||s==="Vector3D"||s.indexOf("Lcl_")===0?l=[i.propertyList[4],i.propertyList[5],i.propertyList[6]]:l=i.propertyList[4],e[n]={type:s,type2:a,flag:o,value:l}}else e[i.name]===void 0?typeof i.id=="number"?(e[i.name]={},e[i.name][i.id]=i):e[i.name]=i:i.name==="PoseNode"?(Array.isArray(e[i.name])||(e[i.name]=[e[i.name]]),e[i.name].push(i)):e[i.name][i.id]===void 0&&(e[i.name][i.id]=i)}parseProperty(r){let e=r.getString(1),i;switch(e){case"C":return r.getBoolean();case"D":return r.getFloat64();case"F":return r.getFloat32();case"I":return r.getInt32();case"L":return r.getInt64();case"R":return i=r.getUint32(),r.getArrayBuffer(i);case"S":return i=r.getUint32(),r.getString(i);case"Y":return r.getInt16();case"b":case"c":case"d":case"f":case"i":case"l":let n=r.getUint32(),s=r.getUint32(),a=r.getUint32();if(s===0)switch(e){case"b":case"c":return r.getBooleanArray(n);case"d":return r.getFloat64Array(n);case"f":return r.getFloat32Array(n);case"i":return r.getInt32Array(n);case"l":return r.getInt64Array(n)}let o=cde(new Uint8Array(r.getArrayBuffer(a))),l=new JC(o.buffer);switch(e){case"b":case"c":return l.getBooleanArray(n);case"d":return l.getFloat64Array(n);case"f":return l.getFloat32Array(n);case"i":return l.getInt32Array(n);case"l":return l.getInt64Array(n)}break;default:throw new Error("THREE.FBXLoader: Unknown property type "+e)}}},JC=class{constructor(r,e){this.dv=new DataView(r),this.offset=0,this.littleEndian=e!==void 0?e:!0,this._textDecoder=new TextDecoder}getOffset(){return this.offset}size(){return this.dv.buffer.byteLength}skip(r){this.offset+=r}getBoolean(){return(this.getUint8()&1)===1}getBooleanArray(r){let e=[];for(let i=0;i<r;i++)e.push(this.getBoolean());return e}getUint8(){let r=this.dv.getUint8(this.offset);return this.offset+=1,r}getInt16(){let r=this.dv.getInt16(this.offset,this.littleEndian);return this.offset+=2,r}getInt32(){let r=this.dv.getInt32(this.offset,this.littleEndian);return this.offset+=4,r}getInt32Array(r){let e=[];for(let i=0;i<r;i++)e.push(this.getInt32());return e}getUint32(){let r=this.dv.getUint32(this.offset,this.littleEndian);return this.offset+=4,r}getInt64(){let r,e;return this.littleEndian?(r=this.getUint32(),e=this.getUint32()):(e=this.getUint32(),r=this.getUint32()),e&2147483648?(e=~e&4294967295,r=~r&4294967295,r===4294967295&&(e=e+1&4294967295),r=r+1&4294967295,-(e*4294967296+r)):e*4294967296+r}getInt64Array(r){let e=[];for(let i=0;i<r;i++)e.push(this.getInt64());return e}getUint64(){let r,e;return this.littleEndian?(r=this.getUint32(),e=this.getUint32()):(e=this.getUint32(),r=this.getUint32()),e*4294967296+r}getFloat32(){let r=this.dv.getFloat32(this.offset,this.littleEndian);return this.offset+=4,r}getFloat32Array(r){let e=[];for(let i=0;i<r;i++)e.push(this.getFloat32());return e}getFloat64(){let r=this.dv.getFloat64(this.offset,this.littleEndian);return this.offset+=8,r}getFloat64Array(r){let e=[];for(let i=0;i<r;i++)e.push(this.getFloat64());return e}getArrayBuffer(r){let e=this.dv.buffer.slice(this.offset,this.offset+r);return this.offset+=r,e}getString(r){let e=this.offset,i=new Uint8Array(this.dv.buffer,e,r);this.skip(r);let n=i.indexOf(0);return n>=0&&(i=new Uint8Array(this.dv.buffer,e,n)),this._textDecoder.decode(i)}},QC=class{add(r,e){this[r]=e}};function fTt(t){let r="Kaydara FBX Binary \0";return t.byteLength>=r.length&&r===vde(t,0,r.length)}function mTt(t){let r=["K","a","y","d","a","r","a","\\","F","B","X","\\","B","i","n","a","r","y","\\","\\"],e=0;function i(n){let s=t[n-1];return t=t.slice(e+n),e++,s}for(let n=0;n<r.length;++n)if(i(1)===r[n])return!1;return!0}function dde(t){let r=/FBXVersion: (\d+)/,e=t.match(r);if(e)return parseInt(e[1]);throw new Error("THREE.FBXLoader: Cannot find the version number for the file given.")}function gTt(t){return t/46186158e3}var vTt=[];function ZC(t,r,e,i){let n;switch(i.mappingType){case"ByPolygonVertex":n=t;break;case"ByPolygon":n=r;break;case"ByVertice":n=e;break;case"AllSame":n=i.indices[0];break;default:console.warn("THREE.FBXLoader: unknown attribute mapping type "+i.mappingType)}i.referenceType==="IndexToDirect"&&(n=i.indices[n]);let s=n*i.dataSize,a=s+i.dataSize;return TTt(vTt,i.buffer,s,a)}var JB=new Sr,hT=new A;function mde(t){let r=new Ue,e=new Ue,i=new Ue,n=new Ue,s=new Ue,a=new Ue,o=new Ue,l=new Ue,c=new Ue,u=new Ue,h=new Ue,p=new Ue,d=t.inheritType?t.inheritType:0;if(t.translation&&r.setPosition(hT.fromArray(t.translation)),t.preRotation){let F=t.preRotation.map(wr.degToRad);F.push(t.eulerOrder||Sr.DEFAULT_ORDER),e.makeRotationFromEuler(JB.fromArray(F))}if(t.rotation){let F=t.rotation.map(wr.degToRad);F.push(t.eulerOrder||Sr.DEFAULT_ORDER),i.makeRotationFromEuler(JB.fromArray(F))}if(t.postRotation){let F=t.postRotation.map(wr.degToRad);F.push(t.eulerOrder||Sr.DEFAULT_ORDER),n.makeRotationFromEuler(JB.fromArray(F)),n.invert()}t.scale&&s.scale(hT.fromArray(t.scale)),t.scalingOffset&&o.setPosition(hT.fromArray(t.scalingOffset)),t.scalingPivot&&a.setPosition(hT.fromArray(t.scalingPivot)),t.rotationOffset&&l.setPosition(hT.fromArray(t.rotationOffset)),t.rotationPivot&&c.setPosition(hT.fromArray(t.rotationPivot)),t.parentMatrixWorld&&(h.copy(t.parentMatrix),u.copy(t.parentMatrixWorld));let f=e.clone().multiply(i).multiply(n),m=new Ue;m.extractRotation(u);let g=new Ue;g.copyPosition(u);let y=g.clone().invert().multiply(u),E=m.clone().invert().multiply(y),b=s,x=new Ue;if(d===0)x.copy(m).multiply(f).multiply(E).multiply(b);else if(d===1)x.copy(m).multiply(E).multiply(f).multiply(b);else{let X=new Ue().scale(new A().setFromMatrixScale(h)).clone().invert(),H=E.clone().multiply(X);x.copy(m).multiply(f).multiply(H).multiply(b)}let S=c.clone().invert(),D=a.clone().invert(),P=r.clone().multiply(l).multiply(c).multiply(e).multiply(i).multiply(n).multiply(S).multiply(o).multiply(a).multiply(s).multiply(D),_=new Ue().copyPosition(P),w=u.clone().multiply(_);return p.copyPosition(w),P=p.clone().multiply(x),P.premultiply(u.invert()),P}function gde(t){t=t||0;let r=["ZYX","YZX","XZY","ZXY","YXZ","XYZ"];return t===6?(console.warn("THREE.FBXLoader: unsupported Euler Order: Spherical XYZ. Animations and rotations may be incorrect."),r[0]):r[t]}function QB(t){return t.split(",").map(function(e){return parseFloat(e)})}function vde(t,r,e){return r===void 0&&(r=0),e===void 0&&(e=t.byteLength),new TextDecoder().decode(new Uint8Array(t,r,e))}function yTt(t,r){for(let e=0,i=t.length,n=r.length;e<n;e++,i++)t[i]=r[e]}function TTt(t,r,e,i){for(let n=e,s=0;n<i;n++,s++)t[s]=r[n];return t}function fde(t,r,e){return t.slice(0,r).concat(e).concat(t.slice(r))}var pT=class extends li{constructor(r){super(r)}load(r,e,i,n){let s=this,a=new ci(this.manager);a.setPath(this.path),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials),a.load(r,function(o){let l=s.parse(JSON.parse(o));e&&e(l)},i,n)}parse(r){return new Zg(r)}},Zg=class{constructor(r){this.isFont=!0,this.type="Font",this.data=r}generateShapes(r,e=100){let i=[],n=ETt(r,e,this.data);for(let s=0,a=n.length;s<a;s++)i.push(...n[s].toShapes());return i}};function ETt(t,r,e){let i=Array.from(t),n=r/e.resolution,s=(e.boundingBox.yMax-e.boundingBox.yMin+e.underlineThickness)*n,a=[],o=0,l=0;for(let c=0;c<i.length;c++){let u=i[c];if(u===`
|
||
`)o=0,l-=s;else{let h=bTt(u,n,o,l,e);o+=h.offsetX,a.push(h.path)}}return a}function bTt(t,r,e,i,n){let s=n.glyphs[t]||n.glyphs["?"];if(!s){console.error('THREE.Font: character "'+t+'" does not exists in font family '+n.familyName+".");return}let a=new xx,o,l,c,u,h,p,d,f;if(s.o){let m=s._cachedOutline||(s._cachedOutline=s.o.split(" "));for(let g=0,y=m.length;g<y;)switch(m[g++]){case"m":o=m[g++]*r+e,l=m[g++]*r+i,a.moveTo(o,l);break;case"l":o=m[g++]*r+e,l=m[g++]*r+i,a.lineTo(o,l);break;case"q":c=m[g++]*r+e,u=m[g++]*r+i,h=m[g++]*r+e,p=m[g++]*r+i,a.quadraticCurveTo(h,p,c,u);break;case"b":c=m[g++]*r+e,u=m[g++]*r+i,h=m[g++]*r+e,p=m[g++]*r+i,d=m[g++]*r+e,f=m[g++]*r+i,a.bezierCurveTo(h,p,d,f,c,u);break}}return{offsetX:s.ha*r,path:a}}var Yu=class extends li{constructor(r){super(r),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(e){return new uk(e)}),this.register(function(e){return new vk(e)}),this.register(function(e){return new yk(e)}),this.register(function(e){return new pk(e)}),this.register(function(e){return new dk(e)}),this.register(function(e){return new fk(e)}),this.register(function(e){return new mk(e)}),this.register(function(e){return new ck(e)}),this.register(function(e){return new gk(e)}),this.register(function(e){return new hk(e)}),this.register(function(e){return new ok(e)}),this.register(function(e){return new Tk(e)}),this.register(function(e){return new Ek(e)})}load(r,e,i,n){let s=this,a;this.resourcePath!==""?a=this.resourcePath:this.path!==""?a=this.path:a=ks.extractUrlBase(r),this.manager.itemStart(r);let o=function(c){n?n(c):console.error(c),s.manager.itemError(r),s.manager.itemEnd(r)},l=new ci(this.manager);l.setPath(this.path),l.setResponseType("arraybuffer"),l.setRequestHeader(this.requestHeader),l.setWithCredentials(this.withCredentials),l.load(r,function(c){try{s.parse(c,a,function(u){e(u),s.manager.itemEnd(r)},o)}catch(u){o(u)}},i,o)}setDRACOLoader(r){return this.dracoLoader=r,this}setDDSLoader(){throw new Error('THREE.GLTFLoader: "MSFT_texture_dds" no longer supported. Please update to "KHR_texture_basisu".')}setKTX2Loader(r){return this.ktx2Loader=r,this}setMeshoptDecoder(r){return this.meshoptDecoder=r,this}register(r){return this.pluginCallbacks.indexOf(r)===-1&&this.pluginCallbacks.push(r),this}unregister(r){return this.pluginCallbacks.indexOf(r)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(r),1),this}parse(r,e,i,n){let s,a={},o={},l=new TextDecoder;if(typeof r=="string")s=JSON.parse(r);else if(r instanceof ArrayBuffer)if(l.decode(new Uint8Array(r,0,4))===Ide){try{a[Ci.KHR_BINARY_GLTF]=new bk(r)}catch(h){n&&n(h);return}s=JSON.parse(a[Ci.KHR_BINARY_GLTF].content)}else s=JSON.parse(l.decode(r));else s=r;if(s.asset===void 0||s.asset.version[0]<2){n&&n(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));return}let c=new Mk(s,{path:e||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});c.fileLoader.setRequestHeader(this.requestHeader);for(let u=0;u<this.pluginCallbacks.length;u++){let h=this.pluginCallbacks[u](c);o[h.name]=h,a[h.name]=!0}if(s.extensionsUsed)for(let u=0;u<s.extensionsUsed.length;++u){let h=s.extensionsUsed[u],p=s.extensionsRequired||[];switch(h){case Ci.KHR_MATERIALS_UNLIT:a[h]=new lk;break;case Ci.KHR_DRACO_MESH_COMPRESSION:a[h]=new xk(s,this.dracoLoader);break;case Ci.KHR_TEXTURE_TRANSFORM:a[h]=new Ik;break;case Ci.KHR_MESH_QUANTIZATION:a[h]=new Sk;break;default:p.indexOf(h)>=0&&o[h]===void 0&&console.warn('THREE.GLTFLoader: Unknown extension "'+h+'".')}}c.setExtensions(a),c.setPlugins(o),c.parse(i,n)}parseAsync(r,e){let i=this;return new Promise(function(n,s){i.parse(r,e,n,s)})}};function xTt(){let t={};return{get:function(r){return t[r]},add:function(r,e){t[r]=e},remove:function(r){delete t[r]},removeAll:function(){t={}}}}var Ci={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_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_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_TEXTURE_WEBP:"EXT_texture_webp",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"},ok=class{constructor(r){this.parser=r,this.name=Ci.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){let r=this.parser,e=this.parser.json.nodes||[];for(let i=0,n=e.length;i<n;i++){let s=e[i];s.extensions&&s.extensions[this.name]&&s.extensions[this.name].light!==void 0&&r._addNodeRef(this.cache,s.extensions[this.name].light)}}_loadLight(r){let e=this.parser,i="light:"+r,n=e.cache.get(i);if(n)return n;let s=e.json,l=((s.extensions&&s.extensions[this.name]||{}).lights||[])[r],c,u=new Ve(16777215);l.color!==void 0&&u.fromArray(l.color);let h=l.range!==void 0?l.range:0;switch(l.type){case"directional":c=new $s(u),c.target.position.set(0,0,-1),c.add(c.target);break;case"point":c=new Ac(u),c.distance=h;break;case"spot":c=new Vu(u),c.distance=h,l.spot=l.spot||{},l.spot.innerConeAngle=l.spot.innerConeAngle!==void 0?l.spot.innerConeAngle:0,l.spot.outerConeAngle=l.spot.outerConeAngle!==void 0?l.spot.outerConeAngle:Math.PI/4,c.angle=l.spot.outerConeAngle,c.penumbra=1-l.spot.innerConeAngle/l.spot.outerConeAngle,c.target.position.set(0,0,-1),c.add(c.target);break;default:throw new Error("THREE.GLTFLoader: Unexpected light type: "+l.type)}return c.position.set(0,0,0),c.decay=2,Of(c,l),l.intensity!==void 0&&(c.intensity=l.intensity),c.name=e.createUniqueName(l.name||"light_"+r),n=Promise.resolve(c),e.cache.add(i,n),n}getDependency(r,e){if(r==="light")return this._loadLight(e)}createNodeAttachment(r){let e=this,i=this.parser,s=i.json.nodes[r],o=(s.extensions&&s.extensions[this.name]||{}).light;return o===void 0?null:this._loadLight(o).then(function(l){return i._getNodeRef(e.cache,o,l)})}},lk=class{constructor(){this.name=Ci.KHR_MATERIALS_UNLIT}getMaterialType(){return or}extendParams(r,e,i){let n=[];r.color=new Ve(1,1,1),r.opacity=1;let s=e.pbrMetallicRoughness;if(s){if(Array.isArray(s.baseColorFactor)){let a=s.baseColorFactor;r.color.fromArray(a),r.opacity=a[3]}s.baseColorTexture!==void 0&&n.push(i.assignTexture(r,"map",s.baseColorTexture,yr))}return Promise.all(n)}},ck=class{constructor(r){this.parser=r,this.name=Ci.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(r,e){let n=this.parser.json.materials[r];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();let s=n.extensions[this.name].emissiveStrength;return s!==void 0&&(e.emissiveIntensity=s),Promise.resolve()}},uk=class{constructor(r){this.parser=r,this.name=Ci.KHR_MATERIALS_CLEARCOAT}getMaterialType(r){let i=this.parser.json.materials[r];return!i.extensions||!i.extensions[this.name]?null:Cl}extendMaterialParams(r,e){let i=this.parser,n=i.json.materials[r];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();let s=[],a=n.extensions[this.name];if(a.clearcoatFactor!==void 0&&(e.clearcoat=a.clearcoatFactor),a.clearcoatTexture!==void 0&&s.push(i.assignTexture(e,"clearcoatMap",a.clearcoatTexture)),a.clearcoatRoughnessFactor!==void 0&&(e.clearcoatRoughness=a.clearcoatRoughnessFactor),a.clearcoatRoughnessTexture!==void 0&&s.push(i.assignTexture(e,"clearcoatRoughnessMap",a.clearcoatRoughnessTexture)),a.clearcoatNormalTexture!==void 0&&(s.push(i.assignTexture(e,"clearcoatNormalMap",a.clearcoatNormalTexture)),a.clearcoatNormalTexture.scale!==void 0)){let o=a.clearcoatNormalTexture.scale;e.clearcoatNormalScale=new le(o,o)}return Promise.all(s)}},hk=class{constructor(r){this.parser=r,this.name=Ci.KHR_MATERIALS_IRIDESCENCE}getMaterialType(r){let i=this.parser.json.materials[r];return!i.extensions||!i.extensions[this.name]?null:Cl}extendMaterialParams(r,e){let i=this.parser,n=i.json.materials[r];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();let s=[],a=n.extensions[this.name];return a.iridescenceFactor!==void 0&&(e.iridescence=a.iridescenceFactor),a.iridescenceTexture!==void 0&&s.push(i.assignTexture(e,"iridescenceMap",a.iridescenceTexture)),a.iridescenceIor!==void 0&&(e.iridescenceIOR=a.iridescenceIor),e.iridescenceThicknessRange===void 0&&(e.iridescenceThicknessRange=[100,400]),a.iridescenceThicknessMinimum!==void 0&&(e.iridescenceThicknessRange[0]=a.iridescenceThicknessMinimum),a.iridescenceThicknessMaximum!==void 0&&(e.iridescenceThicknessRange[1]=a.iridescenceThicknessMaximum),a.iridescenceThicknessTexture!==void 0&&s.push(i.assignTexture(e,"iridescenceThicknessMap",a.iridescenceThicknessTexture)),Promise.all(s)}},pk=class{constructor(r){this.parser=r,this.name=Ci.KHR_MATERIALS_SHEEN}getMaterialType(r){let i=this.parser.json.materials[r];return!i.extensions||!i.extensions[this.name]?null:Cl}extendMaterialParams(r,e){let i=this.parser,n=i.json.materials[r];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();let s=[];e.sheenColor=new Ve(0,0,0),e.sheenRoughness=0,e.sheen=1;let a=n.extensions[this.name];return a.sheenColorFactor!==void 0&&e.sheenColor.fromArray(a.sheenColorFactor),a.sheenRoughnessFactor!==void 0&&(e.sheenRoughness=a.sheenRoughnessFactor),a.sheenColorTexture!==void 0&&s.push(i.assignTexture(e,"sheenColorMap",a.sheenColorTexture,yr)),a.sheenRoughnessTexture!==void 0&&s.push(i.assignTexture(e,"sheenRoughnessMap",a.sheenRoughnessTexture)),Promise.all(s)}},dk=class{constructor(r){this.parser=r,this.name=Ci.KHR_MATERIALS_TRANSMISSION}getMaterialType(r){let i=this.parser.json.materials[r];return!i.extensions||!i.extensions[this.name]?null:Cl}extendMaterialParams(r,e){let i=this.parser,n=i.json.materials[r];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();let s=[],a=n.extensions[this.name];return a.transmissionFactor!==void 0&&(e.transmission=a.transmissionFactor),a.transmissionTexture!==void 0&&s.push(i.assignTexture(e,"transmissionMap",a.transmissionTexture)),Promise.all(s)}},fk=class{constructor(r){this.parser=r,this.name=Ci.KHR_MATERIALS_VOLUME}getMaterialType(r){let i=this.parser.json.materials[r];return!i.extensions||!i.extensions[this.name]?null:Cl}extendMaterialParams(r,e){let i=this.parser,n=i.json.materials[r];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();let s=[],a=n.extensions[this.name];e.thickness=a.thicknessFactor!==void 0?a.thicknessFactor:0,a.thicknessTexture!==void 0&&s.push(i.assignTexture(e,"thicknessMap",a.thicknessTexture)),e.attenuationDistance=a.attenuationDistance||1/0;let o=a.attenuationColor||[1,1,1];return e.attenuationColor=new Ve(o[0],o[1],o[2]),Promise.all(s)}},mk=class{constructor(r){this.parser=r,this.name=Ci.KHR_MATERIALS_IOR}getMaterialType(r){let i=this.parser.json.materials[r];return!i.extensions||!i.extensions[this.name]?null:Cl}extendMaterialParams(r,e){let n=this.parser.json.materials[r];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();let s=n.extensions[this.name];return e.ior=s.ior!==void 0?s.ior:1.5,Promise.resolve()}},gk=class{constructor(r){this.parser=r,this.name=Ci.KHR_MATERIALS_SPECULAR}getMaterialType(r){let i=this.parser.json.materials[r];return!i.extensions||!i.extensions[this.name]?null:Cl}extendMaterialParams(r,e){let i=this.parser,n=i.json.materials[r];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();let s=[],a=n.extensions[this.name];e.specularIntensity=a.specularFactor!==void 0?a.specularFactor:1,a.specularTexture!==void 0&&s.push(i.assignTexture(e,"specularIntensityMap",a.specularTexture));let o=a.specularColorFactor||[1,1,1];return e.specularColor=new Ve(o[0],o[1],o[2]),a.specularColorTexture!==void 0&&s.push(i.assignTexture(e,"specularColorMap",a.specularColorTexture,yr)),Promise.all(s)}},vk=class{constructor(r){this.parser=r,this.name=Ci.KHR_TEXTURE_BASISU}loadTexture(r){let e=this.parser,i=e.json,n=i.textures[r];if(!n.extensions||!n.extensions[this.name])return null;let s=n.extensions[this.name],a=e.options.ktx2Loader;if(!a){if(i.extensionsRequired&&i.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return e.loadTextureImage(r,s.source,a)}},yk=class{constructor(r){this.parser=r,this.name=Ci.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(r){let e=this.name,i=this.parser,n=i.json,s=n.textures[r];if(!s.extensions||!s.extensions[e])return null;let a=s.extensions[e],o=n.images[a.source],l=i.textureLoader;if(o.uri){let c=i.options.manager.getHandler(o.uri);c!==null&&(l=c)}return this.detectSupport().then(function(c){if(c)return i.loadTextureImage(r,a.source,l);if(n.extensionsRequired&&n.extensionsRequired.indexOf(e)>=0)throw new Error("THREE.GLTFLoader: WebP required by asset but unsupported.");return i.loadTexture(r)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(r){let e=new Image;e.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",e.onload=e.onerror=function(){r(e.height===1)}})),this.isSupported}},Tk=class{constructor(r){this.name=Ci.EXT_MESHOPT_COMPRESSION,this.parser=r}loadBufferView(r){let e=this.parser.json,i=e.bufferViews[r];if(i.extensions&&i.extensions[this.name]){let n=i.extensions[this.name],s=this.parser.getDependency("buffer",n.buffer),a=this.parser.options.meshoptDecoder;if(!a||!a.supported){if(e.extensionsRequired&&e.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return s.then(function(o){let l=n.byteOffset||0,c=n.byteLength||0,u=n.count,h=n.byteStride,p=new Uint8Array(o,l,c);return a.decodeGltfBufferAsync?a.decodeGltfBufferAsync(u,h,p,n.mode,n.filter).then(function(d){return d.buffer}):a.ready.then(function(){let d=new ArrayBuffer(u*h);return a.decodeGltfBuffer(new Uint8Array(d),u,h,p,n.mode,n.filter),d})})}else return null}},Ek=class{constructor(r){this.name=Ci.EXT_MESH_GPU_INSTANCING,this.parser=r}createNodeMesh(r){let e=this.parser.json,i=e.nodes[r];if(!i.extensions||!i.extensions[this.name]||i.mesh===void 0)return null;let n=e.meshes[i.mesh];for(let c of n.primitives)if(c.mode!==Bl.TRIANGLES&&c.mode!==Bl.TRIANGLE_STRIP&&c.mode!==Bl.TRIANGLE_FAN&&c.mode!==void 0)return null;let a=i.extensions[this.name].attributes,o=[],l={};for(let c in a)o.push(this.parser.getDependency("accessor",a[c]).then(u=>(l[c]=u,l[c])));return o.length<1?null:(o.push(this.parser.createNodeMesh(r)),Promise.all(o).then(c=>{let u=c.pop(),h=u.isGroup?u.children:[u],p=c[0].count,d=[];for(let f of h){let m=new Ue,g=new A,y=new Or,E=new A(1,1,1),b=new tn(f.geometry,f.material,p);for(let x=0;x<p;x++)l.TRANSLATION&&g.fromBufferAttribute(l.TRANSLATION,x),l.ROTATION&&y.fromBufferAttribute(l.ROTATION,x),l.SCALE&&E.fromBufferAttribute(l.SCALE,x),b.setMatrixAt(x,m.compose(g,y,E));for(let x in l)x!=="TRANSLATION"&&x!=="ROTATION"&&x!=="SCALE"&&f.geometry.setAttribute(x,l[x]);pr.prototype.copy.call(b,f),b.frustumCulled=!1,this.parser.assignFinalMaterial(b),d.push(b)}return u.isGroup?(u.clear(),u.add(...d),u):d[0]}))}},Ide="glTF",Yx=12,yde={JSON:1313821514,BIN:5130562},bk=class{constructor(r){this.name=Ci.KHR_BINARY_GLTF,this.content=null,this.body=null;let e=new DataView(r,0,Yx),i=new TextDecoder;if(this.header={magic:i.decode(new Uint8Array(r.slice(0,4))),version:e.getUint32(4,!0),length:e.getUint32(8,!0)},this.header.magic!==Ide)throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw new Error("THREE.GLTFLoader: Legacy binary file detected.");let n=this.header.length-Yx,s=new DataView(r,Yx),a=0;for(;a<n;){let o=s.getUint32(a,!0);a+=4;let l=s.getUint32(a,!0);if(a+=4,l===yde.JSON){let c=new Uint8Array(r,Yx+a,o);this.content=i.decode(c)}else if(l===yde.BIN){let c=Yx+a;this.body=r.slice(c,c+o)}a+=o}if(this.content===null)throw new Error("THREE.GLTFLoader: JSON content not found.")}},xk=class{constructor(r,e){if(!e)throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=Ci.KHR_DRACO_MESH_COMPRESSION,this.json=r,this.dracoLoader=e,this.dracoLoader.preload()}decodePrimitive(r,e){let i=this.json,n=this.dracoLoader,s=r.extensions[this.name].bufferView,a=r.extensions[this.name].attributes,o={},l={},c={};for(let u in a){let h=wk[u]||u.toLowerCase();o[h]=a[u]}for(let u in r.attributes){let h=wk[u]||u.toLowerCase();if(a[u]!==void 0){let p=i.accessors[r.attributes[u]],d=dT[p.componentType];c[h]=d.name,l[h]=p.normalized===!0}}return e.getDependency("bufferView",s).then(function(u){return new Promise(function(h){n.decodeDracoFile(u,function(p){for(let d in p.attributes){let f=p.attributes[d],m=l[d];m!==void 0&&(f.normalized=m)}h(p)},o,c)})})}},Ik=class{constructor(){this.name=Ci.KHR_TEXTURE_TRANSFORM}extendTexture(r,e){return e.texCoord!==void 0&&console.warn('THREE.GLTFLoader: Custom UV sets in "'+this.name+'" extension not yet supported.'),e.offset===void 0&&e.rotation===void 0&&e.scale===void 0||(r=r.clone(),e.offset!==void 0&&r.offset.fromArray(e.offset),e.rotation!==void 0&&(r.rotation=e.rotation),e.scale!==void 0&&r.repeat.fromArray(e.scale),r.needsUpdate=!0),r}},Sk=class{constructor(){this.name=Ci.KHR_MESH_QUANTIZATION}},eA=class extends Mp{constructor(r,e,i,n){super(r,e,i,n)}copySampleValue_(r){let e=this.resultBuffer,i=this.sampleValues,n=this.valueSize,s=r*n*3+n;for(let a=0;a!==n;a++)e[a]=i[s+a];return e}interpolate_(r,e,i,n){let s=this.resultBuffer,a=this.sampleValues,o=this.valueSize,l=o*2,c=o*3,u=n-e,h=(i-e)/u,p=h*h,d=p*h,f=r*c,m=f-c,g=-2*d+3*p,y=d-p,E=1-g,b=y-p+h;for(let x=0;x!==o;x++){let S=a[m+x+o],D=a[m+x+l]*u,P=a[f+x+o],_=a[f+x]*u;s[x]=E*S+b*D+g*P+y*_}return s}},ITt=new Or,_k=class extends eA{interpolate_(r,e,i,n){let s=super.interpolate_(r,e,i,n);return ITt.fromArray(s).normalize().toArray(s),s}},Bl={FLOAT:5126,FLOAT_MAT3:35675,FLOAT_MAT4:35676,FLOAT_VEC2:35664,FLOAT_VEC3:35665,FLOAT_VEC4:35666,LINEAR:9729,REPEAT:10497,SAMPLER_2D:35678,POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123},dT={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},Tde={9728:Di,9729:ai,9984:of,9985:Hg,9986:pp,9987:wa},Ede={33071:mn,33648:mp,10497:gn},sk={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},wk={POSITION:"position",NORMAL:"normal",TANGENT:"tangent",TEXCOORD_0:"uv",TEXCOORD_1:"uv2",COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},Af={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},STt={CUBICSPLINE:void 0,LINEAR:Hu,STEP:vp},ak={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"};function _Tt(t){return t.DefaultMaterial===void 0&&(t.DefaultMaterial=new Gu({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:en})),t.DefaultMaterial}function Xx(t,r,e){for(let i in e.extensions)t[i]===void 0&&(r.userData.gltfExtensions=r.userData.gltfExtensions||{},r.userData.gltfExtensions[i]=e.extensions[i])}function Of(t,r){r.extras!==void 0&&(typeof r.extras=="object"?Object.assign(t.userData,r.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+r.extras))}function wTt(t,r,e){let i=!1,n=!1,s=!1;for(let c=0,u=r.length;c<u;c++){let h=r[c];if(h.POSITION!==void 0&&(i=!0),h.NORMAL!==void 0&&(n=!0),h.COLOR_0!==void 0&&(s=!0),i&&n&&s)break}if(!i&&!n&&!s)return Promise.resolve(t);let a=[],o=[],l=[];for(let c=0,u=r.length;c<u;c++){let h=r[c];if(i){let p=h.POSITION!==void 0?e.getDependency("accessor",h.POSITION):t.attributes.position;a.push(p)}if(n){let p=h.NORMAL!==void 0?e.getDependency("accessor",h.NORMAL):t.attributes.normal;o.push(p)}if(s){let p=h.COLOR_0!==void 0?e.getDependency("accessor",h.COLOR_0):t.attributes.color;l.push(p)}}return Promise.all([Promise.all(a),Promise.all(o),Promise.all(l)]).then(function(c){let u=c[0],h=c[1],p=c[2];return i&&(t.morphAttributes.position=u),n&&(t.morphAttributes.normal=h),s&&(t.morphAttributes.color=p),t.morphTargetsRelative=!0,t})}function RTt(t,r){if(t.updateMorphTargets(),r.weights!==void 0)for(let e=0,i=r.weights.length;e<i;e++)t.morphTargetInfluences[e]=r.weights[e];if(r.extras&&Array.isArray(r.extras.targetNames)){let e=r.extras.targetNames;if(t.morphTargetInfluences.length===e.length){t.morphTargetDictionary={};for(let i=0,n=e.length;i<n;i++)t.morphTargetDictionary[e[i]]=i}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}function MTt(t){let r=t.extensions&&t.extensions[Ci.KHR_DRACO_MESH_COMPRESSION],e;return r?e="draco:"+r.bufferView+":"+r.indices+":"+bde(r.attributes):e=t.indices+":"+bde(t.attributes)+":"+t.mode,e}function bde(t){let r="",e=Object.keys(t).sort();for(let i=0,n=e.length;i<n;i++)r+=e[i]+":"+t[e[i]]+";";return r}function Rk(t){switch(t){case Int8Array:return 1/127;case Uint8Array:return 1/255;case Int16Array:return 1/32767;case Uint16Array:return 1/65535;default:throw new Error("THREE.GLTFLoader: Unsupported normalized accessor component type.")}}function DTt(t){return t.search(/\.jpe?g($|\?)/i)>0||t.search(/^data\:image\/jpeg/)===0?"image/jpeg":t.search(/\.webp($|\?)/i)>0||t.search(/^data\:image\/webp/)===0?"image/webp":"image/png"}var CTt=new Ue,Mk=class{constructor(r={},e={}){this.json=r,this.extensions={},this.plugins={},this.options=e,this.cache=new xTt,this.associations=new Map,this.primitiveCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={};let i=!1,n=!1,s=-1;typeof navigator!="undefined"&&(i=/^((?!chrome|android).)*safari/i.test(navigator.userAgent)===!0,n=navigator.userAgent.indexOf("Firefox")>-1,s=n?navigator.userAgent.match(/Firefox\/([0-9]+)\./)[1]:-1),typeof createImageBitmap=="undefined"||i||n&&s<98?this.textureLoader=new Es(this.options.manager):this.textureLoader=new gx(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new ci(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),this.options.crossOrigin==="use-credentials"&&this.fileLoader.setWithCredentials(!0)}setExtensions(r){this.extensions=r}setPlugins(r){this.plugins=r}parse(r,e){let i=this,n=this.json,s=this.extensions;this.cache.removeAll(),this._invokeAll(function(a){return a._markDefs&&a._markDefs()}),Promise.all(this._invokeAll(function(a){return a.beforeRoot&&a.beforeRoot()})).then(function(){return Promise.all([i.getDependencies("scene"),i.getDependencies("animation"),i.getDependencies("camera")])}).then(function(a){let o={scene:a[0][n.scene||0],scenes:a[0],animations:a[1],cameras:a[2],asset:n.asset,parser:i,userData:{}};Xx(s,o,n),Of(o,n),Promise.all(i._invokeAll(function(l){return l.afterRoot&&l.afterRoot(o)})).then(function(){r(o)})}).catch(e)}_markDefs(){let r=this.json.nodes||[],e=this.json.skins||[],i=this.json.meshes||[];for(let n=0,s=e.length;n<s;n++){let a=e[n].joints;for(let o=0,l=a.length;o<l;o++)r[a[o]].isBone=!0}for(let n=0,s=r.length;n<s;n++){let a=r[n];a.mesh!==void 0&&(this._addNodeRef(this.meshCache,a.mesh),a.skin!==void 0&&(i[a.mesh].isSkinnedMesh=!0)),a.camera!==void 0&&this._addNodeRef(this.cameraCache,a.camera)}}_addNodeRef(r,e){e!==void 0&&(r.refs[e]===void 0&&(r.refs[e]=r.uses[e]=0),r.refs[e]++)}_getNodeRef(r,e,i){if(r.refs[e]<=1)return i;let n=i.clone(),s=(a,o)=>{let l=this.associations.get(a);l!=null&&this.associations.set(o,l);for(let[c,u]of a.children.entries())s(u,o.children[c])};return s(i,n),n.name+="_instance_"+r.uses[e]++,n}_invokeOne(r){let e=Object.values(this.plugins);e.push(this);for(let i=0;i<e.length;i++){let n=r(e[i]);if(n)return n}return null}_invokeAll(r){let e=Object.values(this.plugins);e.unshift(this);let i=[];for(let n=0;n<e.length;n++){let s=r(e[n]);s&&i.push(s)}return i}getDependency(r,e){let i=r+":"+e,n=this.cache.get(i);if(!n){switch(r){case"scene":n=this.loadScene(e);break;case"node":n=this._invokeOne(function(s){return s.loadNode&&s.loadNode(e)});break;case"mesh":n=this._invokeOne(function(s){return s.loadMesh&&s.loadMesh(e)});break;case"accessor":n=this.loadAccessor(e);break;case"bufferView":n=this._invokeOne(function(s){return s.loadBufferView&&s.loadBufferView(e)});break;case"buffer":n=this.loadBuffer(e);break;case"material":n=this._invokeOne(function(s){return s.loadMaterial&&s.loadMaterial(e)});break;case"texture":n=this._invokeOne(function(s){return s.loadTexture&&s.loadTexture(e)});break;case"skin":n=this.loadSkin(e);break;case"animation":n=this._invokeOne(function(s){return s.loadAnimation&&s.loadAnimation(e)});break;case"camera":n=this.loadCamera(e);break;default:if(n=this._invokeOne(function(s){return s!=this&&s.getDependency&&s.getDependency(r,e)}),!n)throw new Error("Unknown type: "+r);break}this.cache.add(i,n)}return n}getDependencies(r){let e=this.cache.get(r);if(!e){let i=this,n=this.json[r+(r==="mesh"?"es":"s")]||[];e=Promise.all(n.map(function(s,a){return i.getDependency(r,a)})),this.cache.add(r,e)}return e}loadBuffer(r){let e=this.json.buffers[r],i=this.fileLoader;if(e.type&&e.type!=="arraybuffer")throw new Error("THREE.GLTFLoader: "+e.type+" buffer type is not supported.");if(e.uri===void 0&&r===0)return Promise.resolve(this.extensions[Ci.KHR_BINARY_GLTF].body);let n=this.options;return new Promise(function(s,a){i.load(ks.resolveURL(e.uri,n.path),s,void 0,function(){a(new Error('THREE.GLTFLoader: Failed to load buffer "'+e.uri+'".'))})})}loadBufferView(r){let e=this.json.bufferViews[r];return this.getDependency("buffer",e.buffer).then(function(i){let n=e.byteLength||0,s=e.byteOffset||0;return i.slice(s,s+n)})}loadAccessor(r){let e=this,i=this.json,n=this.json.accessors[r];if(n.bufferView===void 0&&n.sparse===void 0){let a=sk[n.type],o=dT[n.componentType],l=n.normalized===!0,c=new o(n.count*a);return Promise.resolve(new jt(c,a,l))}let s=[];return n.bufferView!==void 0?s.push(this.getDependency("bufferView",n.bufferView)):s.push(null),n.sparse!==void 0&&(s.push(this.getDependency("bufferView",n.sparse.indices.bufferView)),s.push(this.getDependency("bufferView",n.sparse.values.bufferView))),Promise.all(s).then(function(a){let o=a[0],l=sk[n.type],c=dT[n.componentType],u=c.BYTES_PER_ELEMENT,h=u*l,p=n.byteOffset||0,d=n.bufferView!==void 0?i.bufferViews[n.bufferView].byteStride:void 0,f=n.normalized===!0,m,g;if(d&&d!==h){let y=Math.floor(p/d),E="InterleavedBuffer:"+n.bufferView+":"+n.componentType+":"+y+":"+n.count,b=e.cache.get(E);b||(m=new c(o,y*d,n.count*d/u),b=new Ep(m,d/u),e.cache.add(E,b)),g=new to(b,l,p%d/u,f)}else o===null?m=new c(n.count*l):m=new c(o,p,n.count*l),g=new jt(m,l,f);if(n.sparse!==void 0){let y=sk.SCALAR,E=dT[n.sparse.indices.componentType],b=n.sparse.indices.byteOffset||0,x=n.sparse.values.byteOffset||0,S=new E(a[1],b,n.sparse.count*y),D=new c(a[2],x,n.sparse.count*l);o!==null&&(g=new jt(g.array.slice(),g.itemSize,g.normalized));for(let P=0,_=S.length;P<_;P++){let w=S[P];if(g.setX(w,D[P*l]),l>=2&&g.setY(w,D[P*l+1]),l>=3&&g.setZ(w,D[P*l+2]),l>=4&&g.setW(w,D[P*l+3]),l>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}}return g})}loadTexture(r){let e=this.json,i=this.options,s=e.textures[r].source,a=e.images[s],o=this.textureLoader;if(a.uri){let l=i.manager.getHandler(a.uri);l!==null&&(o=l)}return this.loadTextureImage(r,s,o)}loadTextureImage(r,e,i){let n=this,s=this.json,a=s.textures[r],o=s.images[e],l=(o.uri||o.bufferView)+":"+a.sampler;if(this.textureCache[l])return this.textureCache[l];let c=this.loadImageSource(e,i).then(function(u){u.flipY=!1,u.name=a.name||o.name||"";let p=(s.samplers||{})[a.sampler]||{};return u.magFilter=Tde[p.magFilter]||ai,u.minFilter=Tde[p.minFilter]||wa,u.wrapS=Ede[p.wrapS]||gn,u.wrapT=Ede[p.wrapT]||gn,n.associations.set(u,{textures:r}),u}).catch(function(){return null});return this.textureCache[l]=c,c}loadImageSource(r,e){let i=this,n=this.json,s=this.options;if(this.sourceCache[r]!==void 0)return this.sourceCache[r].then(h=>h.clone());let a=n.images[r],o=self.URL||self.webkitURL,l=a.uri||"",c=!1;if(a.bufferView!==void 0)l=i.getDependency("bufferView",a.bufferView).then(function(h){c=!0;let p=new Blob([h],{type:a.mimeType});return l=o.createObjectURL(p),l});else if(a.uri===void 0)throw new Error("THREE.GLTFLoader: Image "+r+" is missing URI and bufferView");let u=Promise.resolve(l).then(function(h){return new Promise(function(p,d){let f=p;e.isImageBitmapLoader===!0&&(f=function(m){let g=new Hi(m);g.needsUpdate=!0,p(g)}),e.load(ks.resolveURL(h,s.path),f,void 0,d)})}).then(function(h){return c===!0&&o.revokeObjectURL(l),h.userData.mimeType=a.mimeType||DTt(a.uri),h}).catch(function(h){throw console.error("THREE.GLTFLoader: Couldn't load texture",l),h});return this.sourceCache[r]=u,u}assignTexture(r,e,i,n){let s=this;return this.getDependency("texture",i.index).then(function(a){if(!a)return null;if(i.texCoord!==void 0&&i.texCoord!=0&&!(e==="aoMap"&&i.texCoord==1)&&console.warn("THREE.GLTFLoader: Custom UV set "+i.texCoord+" for texture "+e+" not yet supported."),s.extensions[Ci.KHR_TEXTURE_TRANSFORM]){let o=i.extensions!==void 0?i.extensions[Ci.KHR_TEXTURE_TRANSFORM]:void 0;if(o){let l=s.associations.get(a);a=s.extensions[Ci.KHR_TEXTURE_TRANSFORM].extendTexture(a,o),s.associations.set(a,l)}}return n!==void 0&&(a.encoding=n),r[e]=a,a})}assignFinalMaterial(r){let e=r.geometry,i=r.material,n=e.attributes.tangent===void 0,s=e.attributes.color!==void 0,a=e.attributes.normal===void 0;if(r.isPoints){let o="PointsMaterial:"+i.uuid,l=this.cache.get(o);l||(l=new Vn,Gr.prototype.copy.call(l,i),l.color.copy(i.color),l.map=i.map,l.sizeAttenuation=!1,this.cache.add(o,l)),i=l}else if(r.isLine){let o="LineBasicMaterial:"+i.uuid,l=this.cache.get(o);l||(l=new Tr,Gr.prototype.copy.call(l,i),l.color.copy(i.color),this.cache.add(o,l)),i=l}if(n||s||a){let o="ClonedMaterial:"+i.uuid+":";n&&(o+="derivative-tangents:"),s&&(o+="vertex-colors:"),a&&(o+="flat-shading:");let l=this.cache.get(o);l||(l=i.clone(),s&&(l.vertexColors=!0),a&&(l.flatShading=!0),n&&(l.normalScale&&(l.normalScale.y*=-1),l.clearcoatNormalScale&&(l.clearcoatNormalScale.y*=-1)),this.cache.add(o,l),this.associations.set(l,this.associations.get(i))),i=l}i.aoMap&&e.attributes.uv2===void 0&&e.attributes.uv!==void 0&&e.setAttribute("uv2",e.attributes.uv),r.material=i}getMaterialType(){return Gu}loadMaterial(r){let e=this,i=this.json,n=this.extensions,s=i.materials[r],a,o={},l=s.extensions||{},c=[];if(l[Ci.KHR_MATERIALS_UNLIT]){let h=n[Ci.KHR_MATERIALS_UNLIT];a=h.getMaterialType(),c.push(h.extendParams(o,s,e))}else{let h=s.pbrMetallicRoughness||{};if(o.color=new Ve(1,1,1),o.opacity=1,Array.isArray(h.baseColorFactor)){let p=h.baseColorFactor;o.color.fromArray(p),o.opacity=p[3]}h.baseColorTexture!==void 0&&c.push(e.assignTexture(o,"map",h.baseColorTexture,yr)),o.metalness=h.metallicFactor!==void 0?h.metallicFactor:1,o.roughness=h.roughnessFactor!==void 0?h.roughnessFactor:1,h.metallicRoughnessTexture!==void 0&&(c.push(e.assignTexture(o,"metalnessMap",h.metallicRoughnessTexture)),c.push(e.assignTexture(o,"roughnessMap",h.metallicRoughnessTexture))),a=this._invokeOne(function(p){return p.getMaterialType&&p.getMaterialType(r)}),c.push(Promise.all(this._invokeAll(function(p){return p.extendMaterialParams&&p.extendMaterialParams(r,o)})))}s.doubleSided===!0&&(o.side=wi);let u=s.alphaMode||ak.OPAQUE;if(u===ak.BLEND?(o.transparent=!0,o.depthWrite=!1):(o.transparent=!1,u===ak.MASK&&(o.alphaTest=s.alphaCutoff!==void 0?s.alphaCutoff:.5)),s.normalTexture!==void 0&&a!==or&&(c.push(e.assignTexture(o,"normalMap",s.normalTexture)),o.normalScale=new le(1,1),s.normalTexture.scale!==void 0)){let h=s.normalTexture.scale;o.normalScale.set(h,h)}return s.occlusionTexture!==void 0&&a!==or&&(c.push(e.assignTexture(o,"aoMap",s.occlusionTexture)),s.occlusionTexture.strength!==void 0&&(o.aoMapIntensity=s.occlusionTexture.strength)),s.emissiveFactor!==void 0&&a!==or&&(o.emissive=new Ve().fromArray(s.emissiveFactor)),s.emissiveTexture!==void 0&&a!==or&&c.push(e.assignTexture(o,"emissiveMap",s.emissiveTexture,yr)),Promise.all(c).then(function(){let h=new a(o);return s.name&&(h.name=s.name),Of(h,s),e.associations.set(h,{materials:r}),s.extensions&&Xx(n,h,s),h})}createUniqueName(r){let e=Cr.sanitizeNodeName(r||""),i=e;for(let n=1;this.nodeNamesUsed[i];++n)i=e+"_"+n;return this.nodeNamesUsed[i]=!0,i}loadGeometries(r){let e=this,i=this.extensions,n=this.primitiveCache;function s(o){return i[Ci.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(o,e).then(function(l){return xde(l,o,e)})}let a=[];for(let o=0,l=r.length;o<l;o++){let c=r[o],u=MTt(c),h=n[u];if(h)a.push(h.promise);else{let p;c.extensions&&c.extensions[Ci.KHR_DRACO_MESH_COMPRESSION]?p=s(c):p=xde(new it,c,e),n[u]={primitive:c,promise:p},a.push(p)}}return Promise.all(a)}loadMesh(r){let e=this,i=this.json,n=this.extensions,s=i.meshes[r],a=s.primitives,o=[];for(let l=0,c=a.length;l<c;l++){let u=a[l].material===void 0?_Tt(this.cache):this.getDependency("material",a[l].material);o.push(u)}return o.push(e.loadGeometries(a)),Promise.all(o).then(function(l){let c=l.slice(0,l.length-1),u=l[l.length-1],h=[];for(let d=0,f=u.length;d<f;d++){let m=u[d],g=a[d],y,E=c[d];if(g.mode===Bl.TRIANGLES||g.mode===Bl.TRIANGLE_STRIP||g.mode===Bl.TRIANGLE_FAN||g.mode===void 0)y=s.isSkinnedMesh===!0?new Bu(m,E):new Je(m,E),y.isSkinnedMesh===!0&&!y.geometry.attributes.skinWeight.normalized&&y.normalizeSkinWeights(),g.mode===Bl.TRIANGLE_STRIP?y.geometry=TB(y.geometry,wx):g.mode===Bl.TRIANGLE_FAN&&(y.geometry=TB(y.geometry,ky));else if(g.mode===Bl.LINES)y=new oi(m,E);else if(g.mode===Bl.LINE_STRIP)y=new _r(m,E);else if(g.mode===Bl.LINE_LOOP)y=new Ay(m,E);else if(g.mode===Bl.POINTS)y=new rn(m,E);else throw new Error("THREE.GLTFLoader: Primitive mode unsupported: "+g.mode);Object.keys(y.geometry.morphAttributes).length>0&&RTt(y,s),y.name=e.createUniqueName(s.name||"mesh_"+r),Of(y,s),g.extensions&&Xx(n,y,g),e.assignFinalMaterial(y),h.push(y)}for(let d=0,f=h.length;d<f;d++)e.associations.set(h[d],{meshes:r,primitives:d});if(h.length===1)return h[0];let p=new hr;e.associations.set(p,{meshes:r});for(let d=0,f=h.length;d<f;d++)p.add(h[d]);return p})}loadCamera(r){let e,i=this.json.cameras[r],n=i[i.type];if(!n){console.warn("THREE.GLTFLoader: Missing camera parameters.");return}return i.type==="perspective"?e=new qr(wr.radToDeg(n.yfov),n.aspectRatio||1,n.znear||1,n.zfar||2e6):i.type==="orthographic"&&(e=new Zi(-n.xmag,n.xmag,n.ymag,-n.ymag,n.znear,n.zfar)),i.name&&(e.name=this.createUniqueName(i.name)),Of(e,i),Promise.resolve(e)}loadSkin(r){let e=this.json.skins[r],i=[];for(let n=0,s=e.joints.length;n<s;n++)i.push(this.getDependency("node",e.joints[n]));return e.inverseBindMatrices!==void 0?i.push(this.getDependency("accessor",e.inverseBindMatrices)):i.push(null),Promise.all(i).then(function(n){let s=n.pop(),a=n,o=[],l=[];for(let c=0,u=a.length;c<u;c++){let h=a[c];if(h){o.push(h);let p=new Ue;s!==null&&p.fromArray(s.array,c*16),l.push(p)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',e.joints[c])}return new Ml(o,l)})}loadAnimation(r){let i=this.json.animations[r],n=[],s=[],a=[],o=[],l=[];for(let c=0,u=i.channels.length;c<u;c++){let h=i.channels[c],p=i.samplers[h.sampler],d=h.target,f=d.node,m=i.parameters!==void 0?i.parameters[p.input]:p.input,g=i.parameters!==void 0?i.parameters[p.output]:p.output;n.push(this.getDependency("node",f)),s.push(this.getDependency("accessor",m)),a.push(this.getDependency("accessor",g)),o.push(p),l.push(d)}return Promise.all([Promise.all(n),Promise.all(s),Promise.all(a),Promise.all(o),Promise.all(l)]).then(function(c){let u=c[0],h=c[1],p=c[2],d=c[3],f=c[4],m=[];for(let y=0,E=u.length;y<E;y++){let b=u[y],x=h[y],S=p[y],D=d[y],P=f[y];if(b===void 0)continue;b.updateMatrix();let _;switch(Af[P.path]){case Af.weights:_=Cc;break;case Af.rotation:_=Da;break;case Af.position:case Af.scale:default:_=no;break}let w=b.name?b.name:b.uuid,F=D.interpolation!==void 0?STt[D.interpolation]:Hu,X=[];Af[P.path]===Af.weights?b.traverse(function(he){he.morphTargetInfluences&&X.push(he.name?he.name:he.uuid)}):X.push(w);let H=S.array;if(S.normalized){let he=Rk(H.constructor),C=new Float32Array(H.length);for(let N=0,k=H.length;N<k;N++)C[N]=H[N]*he;H=C}for(let he=0,C=X.length;he<C;he++){let N=new _(X[he]+"."+Af[P.path],x.array,H,F);D.interpolation==="CUBICSPLINE"&&(N.createInterpolant=function(G){let U=this instanceof Da?_k:eA;return new U(this.times,this.values,this.getValueSize()/3,G)},N.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0),m.push(N)}}let g=i.name?i.name:"animation_"+r;return new so(g,void 0,m)})}createNodeMesh(r){let e=this.json,i=this,n=e.nodes[r];return n.mesh===void 0?null:i.getDependency("mesh",n.mesh).then(function(s){let a=i._getNodeRef(i.meshCache,n.mesh,s);return n.weights!==void 0&&a.traverse(function(o){if(o.isMesh)for(let l=0,c=n.weights.length;l<c;l++)o.morphTargetInfluences[l]=n.weights[l]}),a})}loadNode(r){let e=this.json,i=this.extensions,n=this,s=e.nodes[r],a=s.name?n.createUniqueName(s.name):"";return function(){let o=[],l=n._invokeOne(function(p){return p.createNodeMesh&&p.createNodeMesh(r)});l&&o.push(l),s.camera!==void 0&&o.push(n.getDependency("camera",s.camera).then(function(p){return n._getNodeRef(n.cameraCache,s.camera,p)})),n._invokeAll(function(p){return p.createNodeAttachment&&p.createNodeAttachment(r)}).forEach(function(p){o.push(p)});let c=[],u=s.children||[];for(let p=0,d=u.length;p<d;p++)c.push(n.getDependency("node",u[p]));let h=s.skin===void 0?Promise.resolve(null):n.getDependency("skin",s.skin);return Promise.all([Promise.all(o),Promise.all(c),h])}().then(function(o){let l=o[0],c=o[1],u=o[2],h;if(s.isBone===!0?h=new Rl:l.length>1?h=new hr:l.length===1?h=l[0]:h=new pr,h!==l[0])for(let p=0,d=l.length;p<d;p++)h.add(l[p]);if(s.name&&(h.userData.name=s.name,h.name=a),Of(h,s),s.extensions&&Xx(i,h,s),s.matrix!==void 0){let p=new Ue;p.fromArray(s.matrix),h.applyMatrix4(p)}else s.translation!==void 0&&h.position.fromArray(s.translation),s.rotation!==void 0&&h.quaternion.fromArray(s.rotation),s.scale!==void 0&&h.scale.fromArray(s.scale);n.associations.has(h)||n.associations.set(h,{}),n.associations.get(h).nodes=r,u!==null&&h.traverse(function(p){p.isSkinnedMesh&&p.bind(u,CTt)});for(let p=0,d=c.length;p<d;p++)h.add(c[p]);return h})}loadScene(r){let e=this.extensions,i=this.json.scenes[r],n=this,s=new hr;i.name&&(s.name=n.createUniqueName(i.name)),Of(s,i),i.extensions&&Xx(e,s,i);let a=i.nodes||[],o=[];for(let l=0,c=a.length;l<c;l++)o.push(n.getDependency("node",a[l]));return Promise.all(o).then(function(l){for(let u=0,h=l.length;u<h;u++)s.add(l[u]);let c=u=>{let h=new Map;for(let[p,d]of n.associations)(p instanceof Gr||p instanceof Hi)&&h.set(p,d);return u.traverse(p=>{let d=n.associations.get(p);d!=null&&h.set(p,d)}),h};return n.associations=c(s),s})}};function ATt(t,r,e){let i=r.attributes,n=new Ot;if(i.POSITION!==void 0){let o=e.json.accessors[i.POSITION],l=o.min,c=o.max;if(l!==void 0&&c!==void 0){if(n.set(new A(l[0],l[1],l[2]),new A(c[0],c[1],c[2])),o.normalized){let u=Rk(dT[o.componentType]);n.min.multiplyScalar(u),n.max.multiplyScalar(u)}}else{console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");return}}else return;let s=r.targets;if(s!==void 0){let o=new A,l=new A;for(let c=0,u=s.length;c<u;c++){let h=s[c];if(h.POSITION!==void 0){let p=e.json.accessors[h.POSITION],d=p.min,f=p.max;if(d!==void 0&&f!==void 0){if(l.setX(Math.max(Math.abs(d[0]),Math.abs(f[0]))),l.setY(Math.max(Math.abs(d[1]),Math.abs(f[1]))),l.setZ(Math.max(Math.abs(d[2]),Math.abs(f[2]))),p.normalized){let m=Rk(dT[p.componentType]);l.multiplyScalar(m)}o.max(l)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}n.expandByVector(o)}t.boundingBox=n;let a=new zi;n.getCenter(a.center),a.radius=n.min.distanceTo(n.max)/2,t.boundingSphere=a}function xde(t,r,e){let i=r.attributes,n=[];function s(a,o){return e.getDependency("accessor",a).then(function(l){t.setAttribute(o,l)})}for(let a in i){let o=wk[a]||a.toLowerCase();o in t.attributes||n.push(s(i[a],o))}if(r.indices!==void 0&&!t.index){let a=e.getDependency("accessor",r.indices).then(function(o){t.setIndex(o)});n.push(a)}return Of(t,r),ATt(t,r,e),Promise.all(n).then(function(){return r.targets!==void 0?wTt(t,r.targets,e):t})}var OTt=Object.defineProperty,Sde=Object.getOwnPropertySymbols,PTt=Object.prototype.hasOwnProperty,NTt=Object.prototype.propertyIsEnumerable,_de=(t,r,e)=>r in t?OTt(t,r,{enumerable:!0,configurable:!0,writable:!0,value:e}):t[r]=e,wde=(t,r)=>{for(var e in r||(r={}))PTt.call(r,e)&&_de(t,e,r[e]);if(Sde)for(var e of Sde(r))NTt.call(r,e)&&_de(t,e,r[e]);return t},Dk=t=>{if(typeof zP!="undefined")return zP(t);throw new Error('Dynamic require of "'+t+'" is not supported')},Mde=(t,r)=>function(){return r||(0,t[Object.keys(t)[0]])((r={exports:{}}).exports,r),r.exports},LTt=(t,r,e)=>new Promise((i,n)=>{var s=l=>{try{o(e.next(l))}catch(c){n(c)}},a=l=>{try{o(e.throw(l))}catch(c){n(c)}},o=l=>l.done?i(l.value):Promise.resolve(l.value).then(s,a);o((e=e.apply(t,r)).next())}),FTt=Mde({"(disabled):crypto"(){}}),HTt=Mde({"dist/web-ifc.js"(t,r){var e=function(){var i=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!="undefined"&&(i=i||__filename),function(n){n=n||{};var s=typeof n!="undefined"?n:{},a,o;s.ready=new Promise(function(I,M){a=I,o=M});var l={},c;for(c in s)s.hasOwnProperty(c)&&(l[c]=s[c]);var u=[],h="./this.program",p=function(I,M){throw M},d=!1,f=!1,m=!1,g=!1;d=typeof window=="object",f=typeof importScripts=="function",m=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",g=!d&&!m&&!f;var y="";function E(I){return s.locateFile?s.locateFile(I,y):y+I}var b,x,S,D,P,_;m?(f?y=Dk("path").dirname(y)+"/":y=__dirname+"/",b=function(M,L){return P||(P=Dk("fs")),_||(_=Dk("path")),M=_.normalize(M),P.readFileSync(M,L?null:"utf8")},S=function(M){var L=b(M,!0);return L.buffer||(L=new Uint8Array(L)),ee(L.buffer),L},process.argv.length>1&&(h=process.argv[1].replace(/\\/g,"/")),u=process.argv.slice(2),process.on("uncaughtException",function(I){if(!(I instanceof bd))throw I}),process.on("unhandledRejection",Kt),p=function(I){process.exit(I)},s.inspect=function(){return"[Emscripten Module object]"}):g?(typeof read!="undefined"&&(b=function(M){return read(M)}),S=function(M){var L;return typeof readbuffer=="function"?new Uint8Array(readbuffer(M)):(L=read(M,"binary"),ee(typeof L=="object"),L)},typeof scriptArgs!="undefined"?u=scriptArgs:typeof arguments!="undefined"&&(u=arguments),typeof quit=="function"&&(p=function(I){quit(I)}),typeof print!="undefined"&&(typeof console=="undefined"&&(console={}),console.log=print,console.warn=console.error=typeof printErr!="undefined"?printErr:print)):(d||f)&&(f?y=self.location.href:typeof document!="undefined"&&document.currentScript&&(y=document.currentScript.src),i&&(y=i),y.indexOf("blob:")!==0?y=y.slice(0,y.lastIndexOf("/")+1):y="",b=function(M){var L=new XMLHttpRequest;return L.open("GET",M,!1),L.send(null),L.responseText},f&&(S=function(M){var L=new XMLHttpRequest;return L.open("GET",M,!1),L.responseType="arraybuffer",L.send(null),new Uint8Array(L.response)}),x=function(M,L,W){var te=new XMLHttpRequest;te.open("GET",M,!0),te.responseType="arraybuffer",te.onload=function(){if(te.status==200||te.status==0&&te.response){L(te.response);return}W()},te.onerror=W,te.send(null)},D=function(I){document.title=I});var w=s.print||console.log.bind(console),F=s.printErr||console.warn.bind(console);for(c in l)l.hasOwnProperty(c)&&(s[c]=l[c]);l=null,s.arguments&&(u=s.arguments),s.thisProgram&&(h=s.thisProgram),s.quit&&(p=s.quit);var X=16;function H(I,M){return M||(M=X),Math.ceil(I/M)*M}var he=0,C=function(I){he=I},N;s.wasmBinary&&(N=s.wasmBinary);var k;s.noExitRuntime&&(k=s.noExitRuntime),typeof WebAssembly!="object"&&Kt("no native wasm support detected");var G,U=!1,j=0;function ee(I,M){I||Kt("Assertion failed: "+M)}var ae=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):void 0;function se(I,M,L){M>>>=0;for(var W=M+L,te=M;I[te>>>0]&&!(te>=W);)++te;if(te-M>16&&I.subarray&&ae)return ae.decode(I.subarray(M>>>0,te>>>0));for(var ge="";M<te;){var Ee=I[M++>>>0];if(!(Ee&128)){ge+=String.fromCharCode(Ee);continue}var Ie=I[M++>>>0]&63;if((Ee&224)==192){ge+=String.fromCharCode((Ee&31)<<6|Ie);continue}var De=I[M++>>>0]&63;if((Ee&240)==224?Ee=(Ee&15)<<12|Ie<<6|De:Ee=(Ee&7)<<18|Ie<<12|De<<6|I[M++>>>0]&63,Ee<65536)ge+=String.fromCharCode(Ee);else{var $e=Ee-65536;ge+=String.fromCharCode(55296|$e>>10,56320|$e&1023)}}return ge}function ue(I,M){return I>>>=0,I?se($,I,M):""}function ve(I,M,L,W){if(L>>>=0,!(W>0))return 0;for(var te=L,ge=L+W-1,Ee=0;Ee<I.length;++Ee){var Ie=I.charCodeAt(Ee);if(Ie>=55296&&Ie<=57343){var De=I.charCodeAt(++Ee);Ie=65536+((Ie&1023)<<10)|De&1023}if(Ie<=127){if(L>=ge)break;M[L++>>>0]=Ie}else if(Ie<=2047){if(L+1>=ge)break;M[L++>>>0]=192|Ie>>6,M[L++>>>0]=128|Ie&63}else if(Ie<=65535){if(L+2>=ge)break;M[L++>>>0]=224|Ie>>12,M[L++>>>0]=128|Ie>>6&63,M[L++>>>0]=128|Ie&63}else{if(L+3>=ge)break;M[L++>>>0]=240|Ie>>18,M[L++>>>0]=128|Ie>>12&63,M[L++>>>0]=128|Ie>>6&63,M[L++>>>0]=128|Ie&63}}return M[L>>>0]=0,L-te}function be(I,M,L){return ve(I,$,M,L)}function de(I){for(var M=0,L=0;L<I.length;++L){var W=I.charCodeAt(L);W>=55296&&W<=57343&&(W=65536+((W&1023)<<10)|I.charCodeAt(++L)&1023),W<=127?++M:W<=2047?M+=2:W<=65535?M+=3:M+=4}return M}var we=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):void 0;function Fe(I,M){for(var L=I,W=L>>1,te=W+M/2;!(W>=te)&&me[W>>>0];)++W;if(L=W<<1,L-I>32&&we)return we.decode($.subarray(I>>>0,L>>>0));for(var ge="",Ee=0;!(Ee>=M/2);++Ee){var Ie=re[I+Ee*2>>>1];if(Ie==0)break;ge+=String.fromCharCode(Ie)}return ge}function je(I,M,L){if(L===void 0&&(L=2147483647),L<2)return 0;L-=2;for(var W=M,te=L<I.length*2?L/2:I.length,ge=0;ge<te;++ge){var Ee=I.charCodeAt(ge);re[M>>>1]=Ee,M+=2}return re[M>>>1]=0,M-W}function Oe(I){return I.length*2}function dt(I,M){for(var L=0,W="";!(L>=M/4);){var te=z[I+L*4>>>2];if(te==0)break;if(++L,te>=65536){var ge=te-65536;W+=String.fromCharCode(55296|ge>>10,56320|ge&1023)}else W+=String.fromCharCode(te)}return W}function Be(I,M,L){if(M>>>=0,L===void 0&&(L=2147483647),L<4)return 0;for(var W=M,te=W+L-4,ge=0;ge<I.length;++ge){var Ee=I.charCodeAt(ge);if(Ee>=55296&&Ee<=57343){var Ie=I.charCodeAt(++ge);Ee=65536+((Ee&1023)<<10)|Ie&1023}if(z[M>>>2]=Ee,M+=4,M+4>te)break}return z[M>>>2]=0,M-W}function ke(I){for(var M=0,L=0;L<I.length;++L){var W=I.charCodeAt(L);W>=55296&&W<=57343&&++L,M+=4}return M}function nt(I,M){J.set(I,M>>>0)}function bt(I,M,L){for(var W=0;W<I.length;++W)J[M++>>>0]=I.charCodeAt(W);L||(J[M>>>0]=0)}function mt(I,M){return I%M>0&&(I+=M-I%M),I}var _e,J,$,re,me,z,Y,xe,Ce;function Ge(I){_e=I,s.HEAP8=J=new Int8Array(I),s.HEAP16=re=new Int16Array(I),s.HEAP32=z=new Int32Array(I),s.HEAPU8=$=new Uint8Array(I),s.HEAPU16=me=new Uint16Array(I),s.HEAPU32=Y=new Uint32Array(I),s.HEAPF32=xe=new Float32Array(I),s.HEAPF64=Ce=new Float64Array(I)}var Ze=s.INITIAL_MEMORY||16777216;s.wasmMemory?G=s.wasmMemory:G=new WebAssembly.Memory({initial:Ze/65536,maximum:65536}),G&&(_e=G.buffer),Ze=_e.byteLength,Ge(_e);var gt,ye=[],Re=[],ut=[],vt=[],Et=!1,Ct=!1;function Dt(){if(s.preRun)for(typeof s.preRun=="function"&&(s.preRun=[s.preRun]);s.preRun.length;)Xe(s.preRun.shift());Jt(ye)}function cr(){Et=!0,!s.noFSInit&&!q.init.initialized&&q.init(),dn.init(),Jt(Re)}function Xt(){q.ignorePermissions=!1,Jt(ut)}function gr(){Ct=!0}function Ae(){if(s.postRun)for(typeof s.postRun=="function"&&(s.postRun=[s.postRun]);s.postRun.length;)lt(s.postRun.shift());Jt(vt)}function Xe(I){ye.unshift(I)}function lt(I){vt.unshift(I)}var _t=0,Vt=null,Rr=null;function Ki(I){return I}function Pi(I){_t++,s.monitorRunDependencies&&s.monitorRunDependencies(_t)}function Fn(I){if(_t--,s.monitorRunDependencies&&s.monitorRunDependencies(_t),_t==0&&(Vt!==null&&(clearInterval(Vt),Vt=null),Rr)){var M=Rr;Rr=null,M()}}s.preloadedImages={},s.preloadedAudios={};function Kt(I){s.onAbort&&s.onAbort(I),I+="",F(I),U=!0,j=1,I="abort("+I+"). Build with -s ASSERTIONS=1 for more info.";var M=new WebAssembly.RuntimeError(I);throw o(M),M}function ds(I,M){return String.prototype.startsWith?I.startsWith(M):I.indexOf(M)===0}var Is="data:application/octet-stream;base64,";function ic(I){return ds(I,Is)}var um="file://";function fd(I){return ds(I,um)}var js=$we+"web-ifc.wasm";ic(js)||(js=E(js));function Te(){try{if(N)return new Uint8Array(N);if(S)return S(js);throw"both async and sync fetching of the wasm failed"}catch(I){Kt(I)}}function ze(){return!N&&(d||f)&&typeof fetch=="function"&&!fd(js)?fetch(js,{credentials:"same-origin"}).then(function(I){if(!I.ok)throw"failed to load wasm binary file at '"+js+"'";return I.arrayBuffer()}).catch(function(){return Te()}):Promise.resolve().then(Te)}function Qe(){var I={a:vu};function M(Ee,Ie){var De=Ee.exports;s.asm=De,gt=s.asm.X,Fn("wasm-instantiate")}Pi("wasm-instantiate");function L(Ee){M(Ee.instance)}function W(Ee){return ze().then(function(Ie){return WebAssembly.instantiate(Ie,I)}).then(Ee,function(Ie){F("failed to asynchronously prepare wasm: "+Ie),Kt(Ie)})}function te(){return!N&&typeof WebAssembly.instantiateStreaming=="function"&&!ic(js)&&!fd(js)&&typeof fetch=="function"?fetch(js,{credentials:"same-origin"}).then(function(Ee){var Ie=WebAssembly.instantiateStreaming(Ee,I);return Ie.then(L,function(De){return F("wasm streaming compile failed: "+De),F("falling back to ArrayBuffer instantiation"),W(L)})}):W(L)}if(s.instantiateWasm)try{var ge=s.instantiateWasm(I,M);return ge}catch(Ee){return F("Module.instantiateWasm callback failed with error: "+Ee),!1}return te().catch(o),{}}var Le,Ke;function Jt(I){for(;I.length>0;){var M=I.shift();if(typeof M=="function"){M(s);continue}var L=M.func;typeof L=="number"?M.arg===void 0?gt.get(L)():gt.get(L)(M.arg):L(M.arg===void 0?null:M.arg)}}function Ir(I,M,L){return L&&L.length?s["dynCall_"+I].apply(null,[M].concat(L)):s["dynCall_"+I].call(null,M)}function Nr(I,M,L){return I.indexOf("j")!=-1?Ir(I,M,L):gt.get(M).apply(null,L)}function Fr(I,M,L,W){Kt("Assertion failed: "+ue(I)+", at: "+[M?ue(M):"unknown filename",L,W?ue(W):"unknown function"])}function Yr(I){return z[zE()>>>2]=I,I}var kt={splitPath:function(I){var M=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return M.exec(I).slice(1)},normalizeArray:function(I,M){for(var L=0,W=I.length-1;W>=0;W--){var te=I[W];te==="."?I.splice(W,1):te===".."?(I.splice(W,1),L++):L&&(I.splice(W,1),L--)}if(M)for(;L;L--)I.unshift("..");return I},normalize:function(I){var M=I.charAt(0)==="/",L=I.slice(-1)==="/";return I=kt.normalizeArray(I.split("/").filter(function(W){return!!W}),!M).join("/"),!I&&!M&&(I="."),I&&L&&(I+="/"),(M?"/":"")+I},dirname:function(I){var M=kt.splitPath(I),L=M[0],W=M[1];return!L&&!W?".":(W&&(W=W.slice(0,W.length-1)),L+W)},basename:function(I){if(I==="/")return"/";I=kt.normalize(I),I=I.replace(/\/$/,"");var M=I.lastIndexOf("/");return M===-1?I:I.slice(M+1)},extname:function(I){return kt.splitPath(I)[3]},join:function(){var I=Array.prototype.slice.call(arguments,0);return kt.normalize(I.join("/"))},join2:function(I,M){return kt.normalize(I+"/"+M)}};function Vr(){if(typeof crypto=="object"&&typeof crypto.getRandomValues=="function"){var I=new Uint8Array(1);return function(){return crypto.getRandomValues(I),I[0]}}else if(m)try{var M=FTt();return function(){return M.randomBytes(1)[0]}}catch(L){}return function(){Kt("randomDevice")}}var ei={resolve:function(){for(var I="",M=!1,L=arguments.length-1;L>=-1&&!M;L--){var W=L>=0?arguments[L]:q.cwd();if(typeof W!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!W)return"";I=W+"/"+I,M=W.charAt(0)==="/"}return I=kt.normalizeArray(I.split("/").filter(function(te){return!!te}),!M).join("/"),(M?"/":"")+I||"."},relative:function(I,M){I=ei.resolve(I).slice(1),M=ei.resolve(M).slice(1);function L($e){for(var rt=0;rt<$e.length&&$e[rt]==="";rt++);for(var It=$e.length-1;It>=0&&$e[It]==="";It--);return rt>It?[]:$e.slice(rt,It-rt+1)}for(var W=L(I.split("/")),te=L(M.split("/")),ge=Math.min(W.length,te.length),Ee=ge,Ie=0;Ie<ge;Ie++)if(W[Ie]!==te[Ie]){Ee=Ie;break}for(var De=[],Ie=Ee;Ie<W.length;Ie++)De.push("..");return De=De.concat(te.slice(Ee)),De.join("/")}},dn={ttys:[],init:function(){},shutdown:function(){},register:function(I,M){dn.ttys[I]={input:[],output:[],ops:M},q.registerDevice(I,dn.stream_ops)},stream_ops:{open:function(I){var M=dn.ttys[I.node.rdev];if(!M)throw new q.ErrnoError(43);I.tty=M,I.seekable=!1},close:function(I){I.tty.ops.flush(I.tty)},flush:function(I){I.tty.ops.flush(I.tty)},read:function(I,M,L,W,te){if(!I.tty||!I.tty.ops.get_char)throw new q.ErrnoError(60);for(var ge=0,Ee=0;Ee<W;Ee++){var Ie;try{Ie=I.tty.ops.get_char(I.tty)}catch(De){throw new q.ErrnoError(29)}if(Ie===void 0&&ge===0)throw new q.ErrnoError(6);if(Ie==null)break;ge++,M[L+Ee]=Ie}return ge&&(I.node.timestamp=Date.now()),ge},write:function(I,M,L,W,te){if(!I.tty||!I.tty.ops.put_char)throw new q.ErrnoError(60);try{for(var ge=0;ge<W;ge++)I.tty.ops.put_char(I.tty,M[L+ge])}catch(Ee){throw new q.ErrnoError(29)}return W&&(I.node.timestamp=Date.now()),ge}},default_tty_ops:{get_char:function(I){if(!I.input.length){var M=null;if(m){var L=256,W=Buffer.alloc?Buffer.alloc(L):new Buffer(L),te=0;try{te=P.readSync(process.stdin.fd,W,0,L,null)}catch(ge){if(ge.toString().indexOf("EOF")!=-1)te=0;else throw ge}te>0?M=W.slice(0,te).toString("utf-8"):M=null}else typeof window!="undefined"&&typeof window.prompt=="function"?(M=window.prompt("Input: "),M!==null&&(M+=`
|
||
`)):typeof readline=="function"&&(M=readline(),M!==null&&(M+=`
|
||
`));if(!M)return null;I.input=Dh(M,!0)}return I.input.shift()},put_char:function(I,M){M===null||M===10?(w(se(I.output,0)),I.output=[]):M!=0&&I.output.push(M)},flush:function(I){I.output&&I.output.length>0&&(w(se(I.output,0)),I.output=[])}},default_tty1_ops:{put_char:function(I,M){M===null||M===10?(F(se(I.output,0)),I.output=[]):M!=0&&I.output.push(M)},flush:function(I){I.output&&I.output.length>0&&(F(se(I.output,0)),I.output=[])}}};function ki(I){for(var M=H(I,16384),L=fm(M);I<M;)J[L+I++>>>0]=0;return L}var nr={ops_table:null,mount:function(I){return nr.createNode(null,"/",16895,0)},createNode:function(I,M,L,W){if(q.isBlkdev(L)||q.isFIFO(L))throw new q.ErrnoError(63);nr.ops_table||(nr.ops_table={dir:{node:{getattr:nr.node_ops.getattr,setattr:nr.node_ops.setattr,lookup:nr.node_ops.lookup,mknod:nr.node_ops.mknod,rename:nr.node_ops.rename,unlink:nr.node_ops.unlink,rmdir:nr.node_ops.rmdir,readdir:nr.node_ops.readdir,symlink:nr.node_ops.symlink},stream:{llseek:nr.stream_ops.llseek}},file:{node:{getattr:nr.node_ops.getattr,setattr:nr.node_ops.setattr},stream:{llseek:nr.stream_ops.llseek,read:nr.stream_ops.read,write:nr.stream_ops.write,allocate:nr.stream_ops.allocate,mmap:nr.stream_ops.mmap,msync:nr.stream_ops.msync}},link:{node:{getattr:nr.node_ops.getattr,setattr:nr.node_ops.setattr,readlink:nr.node_ops.readlink},stream:{}},chrdev:{node:{getattr:nr.node_ops.getattr,setattr:nr.node_ops.setattr},stream:q.chrdev_stream_ops}});var te=q.createNode(I,M,L,W);return q.isDir(te.mode)?(te.node_ops=nr.ops_table.dir.node,te.stream_ops=nr.ops_table.dir.stream,te.contents={}):q.isFile(te.mode)?(te.node_ops=nr.ops_table.file.node,te.stream_ops=nr.ops_table.file.stream,te.usedBytes=0,te.contents=null):q.isLink(te.mode)?(te.node_ops=nr.ops_table.link.node,te.stream_ops=nr.ops_table.link.stream):q.isChrdev(te.mode)&&(te.node_ops=nr.ops_table.chrdev.node,te.stream_ops=nr.ops_table.chrdev.stream),te.timestamp=Date.now(),I&&(I.contents[M]=te),te},getFileDataAsRegularArray:function(I){if(I.contents&&I.contents.subarray){for(var M=[],L=0;L<I.usedBytes;++L)M.push(I.contents[L]);return M}return I.contents},getFileDataAsTypedArray:function(I){return I.contents?I.contents.subarray?I.contents.subarray(0,I.usedBytes):new Uint8Array(I.contents):new Uint8Array(0)},expandFileStorage:function(I,M){M>>>=0;var L=I.contents?I.contents.length:0;if(!(L>=M)){var W=1024*1024;M=Math.max(M,L*(L<W?2:1.125)>>>0),L!=0&&(M=Math.max(M,256));var te=I.contents;I.contents=new Uint8Array(M),I.usedBytes>0&&I.contents.set(te.subarray(0,I.usedBytes),0)}},resizeFileStorage:function(I,M){if(M>>>=0,I.usedBytes!=M){if(M==0){I.contents=null,I.usedBytes=0;return}if(!I.contents||I.contents.subarray){var L=I.contents;I.contents=new Uint8Array(M),L&&I.contents.set(L.subarray(0,Math.min(M,I.usedBytes))),I.usedBytes=M;return}if(I.contents||(I.contents=[]),I.contents.length>M)I.contents.length=M;else for(;I.contents.length<M;)I.contents.push(0);I.usedBytes=M}},node_ops:{getattr:function(I){var M={};return M.dev=q.isChrdev(I.mode)?I.id:1,M.ino=I.id,M.mode=I.mode,M.nlink=1,M.uid=0,M.gid=0,M.rdev=I.rdev,q.isDir(I.mode)?M.size=4096:q.isFile(I.mode)?M.size=I.usedBytes:q.isLink(I.mode)?M.size=I.link.length:M.size=0,M.atime=new Date(I.timestamp),M.mtime=new Date(I.timestamp),M.ctime=new Date(I.timestamp),M.blksize=4096,M.blocks=Math.ceil(M.size/M.blksize),M},setattr:function(I,M){M.mode!==void 0&&(I.mode=M.mode),M.timestamp!==void 0&&(I.timestamp=M.timestamp),M.size!==void 0&&nr.resizeFileStorage(I,M.size)},lookup:function(I,M){throw q.genericErrors[44]},mknod:function(I,M,L,W){return nr.createNode(I,M,L,W)},rename:function(I,M,L){if(q.isDir(I.mode)){var W;try{W=q.lookupNode(M,L)}catch(ge){}if(W)for(var te in W.contents)throw new q.ErrnoError(55)}delete I.parent.contents[I.name],I.name=L,M.contents[L]=I,I.parent=M},unlink:function(I,M){delete I.contents[M]},rmdir:function(I,M){var L=q.lookupNode(I,M);for(var W in L.contents)throw new q.ErrnoError(55);delete I.contents[M]},readdir:function(I){var M=[".",".."];for(var L in I.contents)I.contents.hasOwnProperty(L)&&M.push(L);return M},symlink:function(I,M,L){var W=nr.createNode(I,M,41471,0);return W.link=L,W},readlink:function(I){if(!q.isLink(I.mode))throw new q.ErrnoError(28);return I.link}},stream_ops:{read:function(I,M,L,W,te){var ge=I.node.contents;if(te>=I.node.usedBytes)return 0;var Ee=Math.min(I.node.usedBytes-te,W);if(Ee>8&&ge.subarray)M.set(ge.subarray(te,te+Ee),L);else for(var Ie=0;Ie<Ee;Ie++)M[L+Ie]=ge[te+Ie];return Ee},write:function(I,M,L,W,te,ge){if(M.buffer===J.buffer&&(ge=!1),!W)return 0;var Ee=I.node;if(Ee.timestamp=Date.now(),M.subarray&&(!Ee.contents||Ee.contents.subarray)){if(ge)return Ee.contents=M.subarray(L,L+W),Ee.usedBytes=W,W;if(Ee.usedBytes===0&&te===0)return Ee.contents=M.slice(L,L+W),Ee.usedBytes=W,W;if(te+W<=Ee.usedBytes)return Ee.contents.set(M.subarray(L,L+W),te),W}if(nr.expandFileStorage(Ee,te+W),Ee.contents.subarray&&M.subarray)Ee.contents.set(M.subarray(L,L+W),te);else for(var Ie=0;Ie<W;Ie++)Ee.contents[te+Ie]=M[L+Ie];return Ee.usedBytes=Math.max(Ee.usedBytes,te+W),W},llseek:function(I,M,L){var W=M;if(L===1?W+=I.position:L===2&&q.isFile(I.node.mode)&&(W+=I.node.usedBytes),W<0)throw new q.ErrnoError(28);return W},allocate:function(I,M,L){nr.expandFileStorage(I.node,M+L),I.node.usedBytes=Math.max(I.node.usedBytes,M+L)},mmap:function(I,M,L,W,te,ge){if(ee(M===0),!q.isFile(I.node.mode))throw new q.ErrnoError(43);var Ee,Ie,De=I.node.contents;if(!(ge&2)&&De.buffer===_e)Ie=!1,Ee=De.byteOffset;else{if((W>0||W+L<De.length)&&(De.subarray?De=De.subarray(W,W+L):De=Array.prototype.slice.call(De,W,W+L)),Ie=!0,Ee=ki(L),!Ee)throw new q.ErrnoError(48);Ee>>>=0,J.set(De,Ee>>>0)}return{ptr:Ee,allocated:Ie}},msync:function(I,M,L,W,te){if(!q.isFile(I.node.mode))throw new q.ErrnoError(43);if(te&2)return 0;var ge=nr.stream_ops.write(I,M,0,W,L,!1);return 0}}},q={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:function(I,M){if(I=ei.resolve(q.cwd(),I),M=M||{},!I)return{path:"",node:null};var L={follow_mount:!0,recurse_count:0};for(var W in L)M[W]===void 0&&(M[W]=L[W]);if(M.recurse_count>8)throw new q.ErrnoError(32);for(var te=kt.normalizeArray(I.split("/").filter(function(xt){return!!xt}),!1),ge=q.root,Ee="/",Ie=0;Ie<te.length;Ie++){var De=Ie===te.length-1;if(De&&M.parent)break;if(ge=q.lookupNode(ge,te[Ie]),Ee=kt.join2(Ee,te[Ie]),q.isMountpoint(ge)&&(!De||De&&M.follow_mount)&&(ge=ge.mounted.root),!De||M.follow)for(var $e=0;q.isLink(ge.mode);){var rt=q.readlink(Ee);Ee=ei.resolve(kt.dirname(Ee),rt);var It=q.lookupPath(Ee,{recurse_count:M.recurse_count});if(ge=It.node,$e++>40)throw new q.ErrnoError(32)}}return{path:Ee,node:ge}},getPath:function(I){for(var M;;){if(q.isRoot(I)){var L=I.mount.mountpoint;return M?L[L.length-1]!=="/"?L+"/"+M:L+M:L}M=M?I.name+"/"+M:I.name,I=I.parent}},hashName:function(I,M){for(var L=0,W=0;W<M.length;W++)L=(L<<5)-L+M.charCodeAt(W)|0;return(I+L>>>0)%q.nameTable.length},hashAddNode:function(I){var M=q.hashName(I.parent.id,I.name);I.name_next=q.nameTable[M],q.nameTable[M]=I},hashRemoveNode:function(I){var M=q.hashName(I.parent.id,I.name);if(q.nameTable[M]===I)q.nameTable[M]=I.name_next;else for(var L=q.nameTable[M];L;){if(L.name_next===I){L.name_next=I.name_next;break}L=L.name_next}},lookupNode:function(I,M){var L=q.mayLookup(I);if(L)throw new q.ErrnoError(L,I);for(var W=q.hashName(I.id,M),te=q.nameTable[W];te;te=te.name_next){var ge=te.name;if(te.parent.id===I.id&&ge===M)return te}return q.lookup(I,M)},createNode:function(I,M,L,W){var te=new q.FSNode(I,M,L,W);return q.hashAddNode(te),te},destroyNode:function(I){q.hashRemoveNode(I)},isRoot:function(I){return I===I.parent},isMountpoint:function(I){return!!I.mounted},isFile:function(I){return(I&61440)===32768},isDir:function(I){return(I&61440)===16384},isLink:function(I){return(I&61440)===40960},isChrdev:function(I){return(I&61440)===8192},isBlkdev:function(I){return(I&61440)===24576},isFIFO:function(I){return(I&61440)===4096},isSocket:function(I){return(I&49152)===49152},flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:function(I){var M=q.flagModes[I];if(typeof M=="undefined")throw new Error("Unknown file open mode: "+I);return M},flagsToPermissionString:function(I){var M=["r","w","rw"][I&3];return I&512&&(M+="w"),M},nodePermissions:function(I,M){return q.ignorePermissions?0:M.indexOf("r")!==-1&&!(I.mode&292)||M.indexOf("w")!==-1&&!(I.mode&146)||M.indexOf("x")!==-1&&!(I.mode&73)?2:0},mayLookup:function(I){var M=q.nodePermissions(I,"x");return M||(I.node_ops.lookup?0:2)},mayCreate:function(I,M){try{var L=q.lookupNode(I,M);return 20}catch(W){}return q.nodePermissions(I,"wx")},mayDelete:function(I,M,L){var W;try{W=q.lookupNode(I,M)}catch(ge){return ge.errno}var te=q.nodePermissions(I,"wx");if(te)return te;if(L){if(!q.isDir(W.mode))return 54;if(q.isRoot(W)||q.getPath(W)===q.cwd())return 10}else if(q.isDir(W.mode))return 31;return 0},mayOpen:function(I,M){return I?q.isLink(I.mode)?32:q.isDir(I.mode)&&(q.flagsToPermissionString(M)!=="r"||M&512)?31:q.nodePermissions(I,q.flagsToPermissionString(M)):44},MAX_OPEN_FDS:4096,nextfd:function(I,M){I=I||0,M=M||q.MAX_OPEN_FDS;for(var L=I;L<=M;L++)if(!q.streams[L])return L;throw new q.ErrnoError(33)},getStream:function(I){return q.streams[I]},createStream:function(I,M,L){q.FSStream||(q.FSStream=function(){},q.FSStream.prototype={object:{get:function(){return this.node},set:function(Ee){this.node=Ee}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}});var W=new q.FSStream;for(var te in I)W[te]=I[te];I=W;var ge=q.nextfd(M,L);return I.fd=ge,q.streams[ge]=I,I},closeStream:function(I){q.streams[I]=null},chrdev_stream_ops:{open:function(I){var M=q.getDevice(I.node.rdev);I.stream_ops=M.stream_ops,I.stream_ops.open&&I.stream_ops.open(I)},llseek:function(){throw new q.ErrnoError(70)}},major:function(I){return I>>8},minor:function(I){return I&255},makedev:function(I,M){return I<<8|M},registerDevice:function(I,M){q.devices[I]={stream_ops:M}},getDevice:function(I){return q.devices[I]},getMounts:function(I){for(var M=[],L=[I];L.length;){var W=L.pop();M.push(W),L.push.apply(L,W.mounts)}return M},syncfs:function(I,M){typeof I=="function"&&(M=I,I=!1),q.syncFSRequests++,q.syncFSRequests>1&&F("warning: "+q.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var L=q.getMounts(q.root.mount),W=0;function te(Ee){return q.syncFSRequests--,M(Ee)}function ge(Ee){if(Ee)return ge.errored?void 0:(ge.errored=!0,te(Ee));++W>=L.length&&te(null)}L.forEach(function(Ee){if(!Ee.type.syncfs)return ge(null);Ee.type.syncfs(Ee,I,ge)})},mount:function(I,M,L){var W=L==="/",te=!L,ge;if(W&&q.root)throw new q.ErrnoError(10);if(!W&&!te){var Ee=q.lookupPath(L,{follow_mount:!1});if(L=Ee.path,ge=Ee.node,q.isMountpoint(ge))throw new q.ErrnoError(10);if(!q.isDir(ge.mode))throw new q.ErrnoError(54)}var Ie={type:I,opts:M,mountpoint:L,mounts:[]},De=I.mount(Ie);return De.mount=Ie,Ie.root=De,W?q.root=De:ge&&(ge.mounted=Ie,ge.mount&&ge.mount.mounts.push(Ie)),De},unmount:function(I){var M=q.lookupPath(I,{follow_mount:!1});if(!q.isMountpoint(M.node))throw new q.ErrnoError(28);var L=M.node,W=L.mounted,te=q.getMounts(W);Object.keys(q.nameTable).forEach(function(Ee){for(var Ie=q.nameTable[Ee];Ie;){var De=Ie.name_next;te.indexOf(Ie.mount)!==-1&&q.destroyNode(Ie),Ie=De}}),L.mounted=null;var ge=L.mount.mounts.indexOf(W);L.mount.mounts.splice(ge,1)},lookup:function(I,M){return I.node_ops.lookup(I,M)},mknod:function(I,M,L){var W=q.lookupPath(I,{parent:!0}),te=W.node,ge=kt.basename(I);if(!ge||ge==="."||ge==="..")throw new q.ErrnoError(28);var Ee=q.mayCreate(te,ge);if(Ee)throw new q.ErrnoError(Ee);if(!te.node_ops.mknod)throw new q.ErrnoError(63);return te.node_ops.mknod(te,ge,M,L)},create:function(I,M){return M=M!==void 0?M:438,M&=4095,M|=32768,q.mknod(I,M,0)},mkdir:function(I,M){return M=M!==void 0?M:511,M&=1023,M|=16384,q.mknod(I,M,0)},mkdirTree:function(I,M){for(var L=I.split("/"),W="",te=0;te<L.length;++te)if(L[te]){W+="/"+L[te];try{q.mkdir(W,M)}catch(ge){if(ge.errno!=20)throw ge}}},mkdev:function(I,M,L){return typeof L=="undefined"&&(L=M,M=438),M|=8192,q.mknod(I,M,L)},symlink:function(I,M){if(!ei.resolve(I))throw new q.ErrnoError(44);var L=q.lookupPath(M,{parent:!0}),W=L.node;if(!W)throw new q.ErrnoError(44);var te=kt.basename(M),ge=q.mayCreate(W,te);if(ge)throw new q.ErrnoError(ge);if(!W.node_ops.symlink)throw new q.ErrnoError(63);return W.node_ops.symlink(W,te,I)},rename:function(I,M){var L=kt.dirname(I),W=kt.dirname(M),te=kt.basename(I),ge=kt.basename(M),Ee,Ie,De;if(Ee=q.lookupPath(I,{parent:!0}),Ie=Ee.node,Ee=q.lookupPath(M,{parent:!0}),De=Ee.node,!Ie||!De)throw new q.ErrnoError(44);if(Ie.mount!==De.mount)throw new q.ErrnoError(75);var $e=q.lookupNode(Ie,te),rt=ei.relative(I,W);if(rt.charAt(0)!==".")throw new q.ErrnoError(28);if(rt=ei.relative(M,L),rt.charAt(0)!==".")throw new q.ErrnoError(55);var It;try{It=q.lookupNode(De,ge)}catch(tr){}if($e!==It){var xt=q.isDir($e.mode),wt=q.mayDelete(Ie,te,xt);if(wt)throw new q.ErrnoError(wt);if(wt=It?q.mayDelete(De,ge,xt):q.mayCreate(De,ge),wt)throw new q.ErrnoError(wt);if(!Ie.node_ops.rename)throw new q.ErrnoError(63);if(q.isMountpoint($e)||It&&q.isMountpoint(It))throw new q.ErrnoError(10);if(De!==Ie&&(wt=q.nodePermissions(Ie,"w"),wt))throw new q.ErrnoError(wt);try{q.trackingDelegate.willMovePath&&q.trackingDelegate.willMovePath(I,M)}catch(tr){F("FS.trackingDelegate['willMovePath']('"+I+"', '"+M+"') threw an exception: "+tr.message)}q.hashRemoveNode($e);try{Ie.node_ops.rename($e,De,ge)}catch(tr){throw tr}finally{q.hashAddNode($e)}try{q.trackingDelegate.onMovePath&&q.trackingDelegate.onMovePath(I,M)}catch(tr){F("FS.trackingDelegate['onMovePath']('"+I+"', '"+M+"') threw an exception: "+tr.message)}}},rmdir:function(I){var M=q.lookupPath(I,{parent:!0}),L=M.node,W=kt.basename(I),te=q.lookupNode(L,W),ge=q.mayDelete(L,W,!0);if(ge)throw new q.ErrnoError(ge);if(!L.node_ops.rmdir)throw new q.ErrnoError(63);if(q.isMountpoint(te))throw new q.ErrnoError(10);try{q.trackingDelegate.willDeletePath&&q.trackingDelegate.willDeletePath(I)}catch(Ee){F("FS.trackingDelegate['willDeletePath']('"+I+"') threw an exception: "+Ee.message)}L.node_ops.rmdir(L,W),q.destroyNode(te);try{q.trackingDelegate.onDeletePath&&q.trackingDelegate.onDeletePath(I)}catch(Ee){F("FS.trackingDelegate['onDeletePath']('"+I+"') threw an exception: "+Ee.message)}},readdir:function(I){var M=q.lookupPath(I,{follow:!0}),L=M.node;if(!L.node_ops.readdir)throw new q.ErrnoError(54);return L.node_ops.readdir(L)},unlink:function(I){var M=q.lookupPath(I,{parent:!0}),L=M.node,W=kt.basename(I),te=q.lookupNode(L,W),ge=q.mayDelete(L,W,!1);if(ge)throw new q.ErrnoError(ge);if(!L.node_ops.unlink)throw new q.ErrnoError(63);if(q.isMountpoint(te))throw new q.ErrnoError(10);try{q.trackingDelegate.willDeletePath&&q.trackingDelegate.willDeletePath(I)}catch(Ee){F("FS.trackingDelegate['willDeletePath']('"+I+"') threw an exception: "+Ee.message)}L.node_ops.unlink(L,W),q.destroyNode(te);try{q.trackingDelegate.onDeletePath&&q.trackingDelegate.onDeletePath(I)}catch(Ee){F("FS.trackingDelegate['onDeletePath']('"+I+"') threw an exception: "+Ee.message)}},readlink:function(I){var M=q.lookupPath(I),L=M.node;if(!L)throw new q.ErrnoError(44);if(!L.node_ops.readlink)throw new q.ErrnoError(28);return ei.resolve(q.getPath(L.parent),L.node_ops.readlink(L))},stat:function(I,M){var L=q.lookupPath(I,{follow:!M}),W=L.node;if(!W)throw new q.ErrnoError(44);if(!W.node_ops.getattr)throw new q.ErrnoError(63);return W.node_ops.getattr(W)},lstat:function(I){return q.stat(I,!0)},chmod:function(I,M,L){var W;if(typeof I=="string"){var te=q.lookupPath(I,{follow:!L});W=te.node}else W=I;if(!W.node_ops.setattr)throw new q.ErrnoError(63);W.node_ops.setattr(W,{mode:M&4095|W.mode&-4096,timestamp:Date.now()})},lchmod:function(I,M){q.chmod(I,M,!0)},fchmod:function(I,M){var L=q.getStream(I);if(!L)throw new q.ErrnoError(8);q.chmod(L.node,M)},chown:function(I,M,L,W){var te;if(typeof I=="string"){var ge=q.lookupPath(I,{follow:!W});te=ge.node}else te=I;if(!te.node_ops.setattr)throw new q.ErrnoError(63);te.node_ops.setattr(te,{timestamp:Date.now()})},lchown:function(I,M,L){q.chown(I,M,L,!0)},fchown:function(I,M,L){var W=q.getStream(I);if(!W)throw new q.ErrnoError(8);q.chown(W.node,M,L)},truncate:function(I,M){if(M<0)throw new q.ErrnoError(28);var L;if(typeof I=="string"){var W=q.lookupPath(I,{follow:!0});L=W.node}else L=I;if(!L.node_ops.setattr)throw new q.ErrnoError(63);if(q.isDir(L.mode))throw new q.ErrnoError(31);if(!q.isFile(L.mode))throw new q.ErrnoError(28);var te=q.nodePermissions(L,"w");if(te)throw new q.ErrnoError(te);L.node_ops.setattr(L,{size:M,timestamp:Date.now()})},ftruncate:function(I,M){var L=q.getStream(I);if(!L)throw new q.ErrnoError(8);if(!(L.flags&2097155))throw new q.ErrnoError(28);q.truncate(L.node,M)},utime:function(I,M,L){var W=q.lookupPath(I,{follow:!0}),te=W.node;te.node_ops.setattr(te,{timestamp:Math.max(M,L)})},open:function(I,M,L,W,te){if(I==="")throw new q.ErrnoError(44);M=typeof M=="string"?q.modeStringToFlags(M):M,L=typeof L=="undefined"?438:L,M&64?L=L&4095|32768:L=0;var ge;if(typeof I=="object")ge=I;else{I=kt.normalize(I);try{var Ee=q.lookupPath(I,{follow:!(M&131072)});ge=Ee.node}catch(It){}}var Ie=!1;if(M&64)if(ge){if(M&128)throw new q.ErrnoError(20)}else ge=q.mknod(I,L,0),Ie=!0;if(!ge)throw new q.ErrnoError(44);if(q.isChrdev(ge.mode)&&(M&=-513),M&65536&&!q.isDir(ge.mode))throw new q.ErrnoError(54);if(!Ie){var De=q.mayOpen(ge,M);if(De)throw new q.ErrnoError(De)}M&512&&q.truncate(ge,0),M&=-131713;var $e=q.createStream({node:ge,path:q.getPath(ge),flags:M,seekable:!0,position:0,stream_ops:ge.stream_ops,ungotten:[],error:!1},W,te);$e.stream_ops.open&&$e.stream_ops.open($e),s.logReadFiles&&!(M&1)&&(q.readFiles||(q.readFiles={}),I in q.readFiles||(q.readFiles[I]=1,F("FS.trackingDelegate error on read file: "+I)));try{if(q.trackingDelegate.onOpenFile){var rt=0;(M&2097155)!==1&&(rt|=q.tracking.openFlags.READ),M&2097155&&(rt|=q.tracking.openFlags.WRITE),q.trackingDelegate.onOpenFile(I,rt)}}catch(It){F("FS.trackingDelegate['onOpenFile']('"+I+"', flags) threw an exception: "+It.message)}return $e},close:function(I){if(q.isClosed(I))throw new q.ErrnoError(8);I.getdents&&(I.getdents=null);try{I.stream_ops.close&&I.stream_ops.close(I)}catch(M){throw M}finally{q.closeStream(I.fd)}I.fd=null},isClosed:function(I){return I.fd===null},llseek:function(I,M,L){if(q.isClosed(I))throw new q.ErrnoError(8);if(!I.seekable||!I.stream_ops.llseek)throw new q.ErrnoError(70);if(L!=0&&L!=1&&L!=2)throw new q.ErrnoError(28);return I.position=I.stream_ops.llseek(I,M,L),I.ungotten=[],I.position},read:function(I,M,L,W,te){if(L>>>=0,W<0||te<0)throw new q.ErrnoError(28);if(q.isClosed(I))throw new q.ErrnoError(8);if((I.flags&2097155)===1)throw new q.ErrnoError(8);if(q.isDir(I.node.mode))throw new q.ErrnoError(31);if(!I.stream_ops.read)throw new q.ErrnoError(28);var ge=typeof te!="undefined";if(!ge)te=I.position;else if(!I.seekable)throw new q.ErrnoError(70);var Ee=I.stream_ops.read(I,M,L,W,te);return ge||(I.position+=Ee),Ee},write:function(I,M,L,W,te,ge){if(L>>>=0,W<0||te<0)throw new q.ErrnoError(28);if(q.isClosed(I))throw new q.ErrnoError(8);if(!(I.flags&2097155))throw new q.ErrnoError(8);if(q.isDir(I.node.mode))throw new q.ErrnoError(31);if(!I.stream_ops.write)throw new q.ErrnoError(28);I.seekable&&I.flags&1024&&q.llseek(I,0,2);var Ee=typeof te!="undefined";if(!Ee)te=I.position;else if(!I.seekable)throw new q.ErrnoError(70);var Ie=I.stream_ops.write(I,M,L,W,te,ge);Ee||(I.position+=Ie);try{I.path&&q.trackingDelegate.onWriteToFile&&q.trackingDelegate.onWriteToFile(I.path)}catch(De){F("FS.trackingDelegate['onWriteToFile']('"+I.path+"') threw an exception: "+De.message)}return Ie},allocate:function(I,M,L){if(q.isClosed(I))throw new q.ErrnoError(8);if(M<0||L<=0)throw new q.ErrnoError(28);if(!(I.flags&2097155))throw new q.ErrnoError(8);if(!q.isFile(I.node.mode)&&!q.isDir(I.node.mode))throw new q.ErrnoError(43);if(!I.stream_ops.allocate)throw new q.ErrnoError(138);I.stream_ops.allocate(I,M,L)},mmap:function(I,M,L,W,te,ge){if(M>>>=0,te&2&&!(ge&2)&&(I.flags&2097155)!==2)throw new q.ErrnoError(2);if((I.flags&2097155)===1)throw new q.ErrnoError(2);if(!I.stream_ops.mmap)throw new q.ErrnoError(43);return I.stream_ops.mmap(I,M,L,W,te,ge)},msync:function(I,M,L,W,te){return L>>>=0,!I||!I.stream_ops.msync?0:I.stream_ops.msync(I,M,L,W,te)},munmap:function(I){return 0},ioctl:function(I,M,L){if(!I.stream_ops.ioctl)throw new q.ErrnoError(59);return I.stream_ops.ioctl(I,M,L)},readFile:function(I,M){if(M=M||{},M.flags=M.flags||0,M.encoding=M.encoding||"binary",M.encoding!=="utf8"&&M.encoding!=="binary")throw new Error('Invalid encoding type "'+M.encoding+'"');var L,W=q.open(I,M.flags),te=q.stat(I),ge=te.size,Ee=new Uint8Array(ge);return q.read(W,Ee,0,ge,0),M.encoding==="utf8"?L=se(Ee,0):M.encoding==="binary"&&(L=Ee),q.close(W),L},writeFile:function(I,M,L){L=L||{},L.flags=L.flags||577;var W=q.open(I,L.flags,L.mode);if(typeof M=="string"){var te=new Uint8Array(de(M)+1),ge=ve(M,te,0,te.length);q.write(W,te,0,ge,void 0,L.canOwn)}else if(ArrayBuffer.isView(M))q.write(W,M,0,M.byteLength,void 0,L.canOwn);else throw new Error("Unsupported data type");q.close(W)},cwd:function(){return q.currentPath},chdir:function(I){var M=q.lookupPath(I,{follow:!0});if(M.node===null)throw new q.ErrnoError(44);if(!q.isDir(M.node.mode))throw new q.ErrnoError(54);var L=q.nodePermissions(M.node,"x");if(L)throw new q.ErrnoError(L);q.currentPath=M.path},createDefaultDirectories:function(){q.mkdir("/tmp"),q.mkdir("/home"),q.mkdir("/home/web_user")},createDefaultDevices:function(){q.mkdir("/dev"),q.registerDevice(q.makedev(1,3),{read:function(){return 0},write:function(M,L,W,te,ge){return te}}),q.mkdev("/dev/null",q.makedev(1,3)),dn.register(q.makedev(5,0),dn.default_tty_ops),dn.register(q.makedev(6,0),dn.default_tty1_ops),q.mkdev("/dev/tty",q.makedev(5,0)),q.mkdev("/dev/tty1",q.makedev(6,0));var I=Vr();q.createDevice("/dev","random",I),q.createDevice("/dev","urandom",I),q.mkdir("/dev/shm"),q.mkdir("/dev/shm/tmp")},createSpecialDirectories:function(){q.mkdir("/proc"),q.mkdir("/proc/self"),q.mkdir("/proc/self/fd"),q.mount({mount:function(){var I=q.createNode("/proc/self","fd",16895,73);return I.node_ops={lookup:function(M,L){var W=+L,te=q.getStream(W);if(!te)throw new q.ErrnoError(8);var ge={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:function(){return te.path}}};return ge.parent=ge,ge}},I}},{},"/proc/self/fd")},createStandardStreams:function(){s.stdin?q.createDevice("/dev","stdin",s.stdin):q.symlink("/dev/tty","/dev/stdin"),s.stdout?q.createDevice("/dev","stdout",null,s.stdout):q.symlink("/dev/tty","/dev/stdout"),s.stderr?q.createDevice("/dev","stderr",null,s.stderr):q.symlink("/dev/tty1","/dev/stderr");var I=q.open("/dev/stdin",0),M=q.open("/dev/stdout",1),L=q.open("/dev/stderr",1)},ensureErrnoError:function(){q.ErrnoError||(q.ErrnoError=function(M,L){this.node=L,this.setErrno=function(W){this.errno=W},this.setErrno(M),this.message="FS error"},q.ErrnoError.prototype=new Error,q.ErrnoError.prototype.constructor=q.ErrnoError,[44].forEach(function(I){q.genericErrors[I]=new q.ErrnoError(I),q.genericErrors[I].stack="<generic error, no stack>"}))},staticInit:function(){q.ensureErrnoError(),q.nameTable=new Array(4096),q.mount(nr,{},"/"),q.createDefaultDirectories(),q.createDefaultDevices(),q.createSpecialDirectories(),q.filesystems={MEMFS:nr}},init:function(I,M,L){q.init.initialized=!0,q.ensureErrnoError(),s.stdin=I||s.stdin,s.stdout=M||s.stdout,s.stderr=L||s.stderr,q.createStandardStreams()},quit:function(){q.init.initialized=!1;var I=s._fflush;I&&I(0);for(var M=0;M<q.streams.length;M++){var L=q.streams[M];L&&q.close(L)}},getMode:function(I,M){var L=0;return I&&(L|=365),M&&(L|=146),L},findObject:function(I,M){var L=q.analyzePath(I,M);return L.exists?L.object:null},analyzePath:function(I,M){try{var L=q.lookupPath(I,{follow:!M});I=L.path}catch(te){}var W={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var L=q.lookupPath(I,{parent:!0});W.parentExists=!0,W.parentPath=L.path,W.parentObject=L.node,W.name=kt.basename(I),L=q.lookupPath(I,{follow:!M}),W.exists=!0,W.path=L.path,W.object=L.node,W.name=L.node.name,W.isRoot=L.path==="/"}catch(te){W.error=te.errno}return W},createPath:function(I,M,L,W){I=typeof I=="string"?I:q.getPath(I);for(var te=M.split("/").reverse();te.length;){var ge=te.pop();if(ge){var Ee=kt.join2(I,ge);try{q.mkdir(Ee)}catch(Ie){}I=Ee}}return Ee},createFile:function(I,M,L,W,te){var ge=kt.join2(typeof I=="string"?I:q.getPath(I),M),Ee=q.getMode(W,te);return q.create(ge,Ee)},createDataFile:function(I,M,L,W,te,ge){var Ee=M?kt.join2(typeof I=="string"?I:q.getPath(I),M):I,Ie=q.getMode(W,te),De=q.create(Ee,Ie);if(L){if(typeof L=="string"){for(var $e=new Array(L.length),rt=0,It=L.length;rt<It;++rt)$e[rt]=L.charCodeAt(rt);L=$e}q.chmod(De,Ie|146);var xt=q.open(De,577);q.write(xt,L,0,L.length,0,ge),q.close(xt),q.chmod(De,Ie)}return De},createDevice:function(I,M,L,W){var te=kt.join2(typeof I=="string"?I:q.getPath(I),M),ge=q.getMode(!!L,!!W);q.createDevice.major||(q.createDevice.major=64);var Ee=q.makedev(q.createDevice.major++,0);return q.registerDevice(Ee,{open:function(Ie){Ie.seekable=!1},close:function(Ie){W&&W.buffer&&W.buffer.length&&W(10)},read:function(Ie,De,$e,rt,It){for(var xt=0,wt=0;wt<rt;wt++){var tr;try{tr=L()}catch(vi){throw new q.ErrnoError(29)}if(tr===void 0&&xt===0)throw new q.ErrnoError(6);if(tr==null)break;xt++,De[$e+wt]=tr}return xt&&(Ie.node.timestamp=Date.now()),xt},write:function(Ie,De,$e,rt,It){for(var xt=0;xt<rt;xt++)try{W(De[$e+xt])}catch(wt){throw new q.ErrnoError(29)}return rt&&(Ie.node.timestamp=Date.now()),xt}}),q.mkdev(te,ge,Ee)},forceLoadFile:function(I){if(I.isDevice||I.isFolder||I.link||I.contents)return!0;if(typeof XMLHttpRequest!="undefined")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(b)try{I.contents=Dh(b(I.url),!0),I.usedBytes=I.contents.length}catch(M){throw new q.ErrnoError(29)}else throw new Error("Cannot load without read() or XMLHttpRequest.")},createLazyFile:function(I,M,L,W,te){function ge(){this.lengthKnown=!1,this.chunks=[]}if(ge.prototype.get=function(xt){if(!(xt>this.length-1||xt<0)){var wt=xt%this.chunkSize,tr=xt/this.chunkSize|0;return this.getter(tr)[wt]}},ge.prototype.setDataGetter=function(xt){this.getter=xt},ge.prototype.cacheLength=function(){var xt=new XMLHttpRequest;if(xt.open("HEAD",L,!1),xt.send(null),!(xt.status>=200&&xt.status<300||xt.status===304))throw new Error("Couldn't load "+L+". Status: "+xt.status);var wt=Number(xt.getResponseHeader("Content-length")),tr,vi=(tr=xt.getResponseHeader("Accept-Ranges"))&&tr==="bytes",Mi=(tr=xt.getResponseHeader("Content-Encoding"))&&tr==="gzip",Ai=1024*1024;vi||(Ai=wt);var yt=function(Kr,Xr){if(Kr>Xr)throw new Error("invalid range ("+Kr+", "+Xr+") or no bytes requested!");if(Xr>wt-1)throw new Error("only "+wt+" bytes available! programmer error!");var ie=new XMLHttpRequest;if(ie.open("GET",L,!1),wt!==Ai&&ie.setRequestHeader("Range","bytes="+Kr+"-"+Xr),typeof Uint8Array!="undefined"&&(ie.responseType="arraybuffer"),ie.overrideMimeType&&ie.overrideMimeType("text/plain; charset=x-user-defined"),ie.send(null),!(ie.status>=200&&ie.status<300||ie.status===304))throw new Error("Couldn't load "+L+". Status: "+ie.status);return ie.response!==void 0?new Uint8Array(ie.response||[]):Dh(ie.responseText||"",!0)},Lt=this;Lt.setDataGetter(function(Kr){var Xr=Kr*Ai,ie=(Kr+1)*Ai-1;if(ie=Math.min(ie,wt-1),typeof Lt.chunks[Kr]=="undefined"&&(Lt.chunks[Kr]=yt(Xr,ie)),typeof Lt.chunks[Kr]=="undefined")throw new Error("doXHR failed!");return Lt.chunks[Kr]}),(Mi||!wt)&&(Ai=wt=1,wt=this.getter(0).length,Ai=wt,w("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=wt,this._chunkSize=Ai,this.lengthKnown=!0},typeof XMLHttpRequest!="undefined"){if(!f)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var Ee=new ge;Object.defineProperties(Ee,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var Ie={isDevice:!1,contents:Ee}}else var Ie={isDevice:!1,url:L};var De=q.createFile(I,M,Ie,W,te);Ie.contents?De.contents=Ie.contents:Ie.url&&(De.contents=null,De.url=Ie.url),Object.defineProperties(De,{usedBytes:{get:function(){return this.contents.length}}});var $e={},rt=Object.keys(De.stream_ops);return rt.forEach(function(It){var xt=De.stream_ops[It];$e[It]=function(){return q.forceLoadFile(De),xt.apply(null,arguments)}}),$e.read=function(xt,wt,tr,vi,Mi){q.forceLoadFile(De);var Ai=xt.node.contents;if(Mi>=Ai.length)return 0;var yt=Math.min(Ai.length-Mi,vi);if(Ai.slice)for(var Lt=0;Lt<yt;Lt++)wt[tr+Lt]=Ai[Mi+Lt];else for(var Lt=0;Lt<yt;Lt++)wt[tr+Lt]=Ai.get(Mi+Lt);return yt},De.stream_ops=$e,De},createPreloadedFile:function(I,M,L,W,te,ge,Ee,Ie,De,$e){Browser.init();var rt=M?ei.resolve(kt.join2(I,M)):I,It="cp "+rt;function xt(wt){function tr(Mi){$e&&$e(),Ie||q.createDataFile(I,M,Mi,W,te,De),ge&&ge(),Fn(It)}var vi=!1;s.preloadPlugins.forEach(function(Mi){vi||Mi.canHandle(rt)&&(Mi.handle(wt,rt,tr,function(){Ee&&Ee(),Fn(It)}),vi=!0)}),vi||tr(wt)}Pi(It),typeof L=="string"?Browser.asyncLoad(L,function(wt){xt(wt)},Ee):xt(L)},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(I,M,L){M=M||function(){},L=L||function(){};var W=q.indexedDB();try{var te=W.open(q.DB_NAME(),q.DB_VERSION)}catch(ge){return L(ge)}te.onupgradeneeded=function(){w("creating db");var Ee=te.result;Ee.createObjectStore(q.DB_STORE_NAME)},te.onsuccess=function(){var Ee=te.result,Ie=Ee.transaction([q.DB_STORE_NAME],"readwrite"),De=Ie.objectStore(q.DB_STORE_NAME),$e=0,rt=0,It=I.length;function xt(){rt==0?M():L()}I.forEach(function(wt){var tr=De.put(q.analyzePath(wt).object.contents,wt);tr.onsuccess=function(){$e++,$e+rt==It&&xt()},tr.onerror=function(){rt++,$e+rt==It&&xt()}}),Ie.onerror=L},te.onerror=L},loadFilesFromDB:function(I,M,L){M=M||function(){},L=L||function(){};var W=q.indexedDB();try{var te=W.open(q.DB_NAME(),q.DB_VERSION)}catch(ge){return L(ge)}te.onupgradeneeded=L,te.onsuccess=function(){var Ee=te.result;try{var Ie=Ee.transaction([q.DB_STORE_NAME],"readonly")}catch(wt){L(wt);return}var De=Ie.objectStore(q.DB_STORE_NAME),$e=0,rt=0,It=I.length;function xt(){rt==0?M():L()}I.forEach(function(wt){var tr=De.get(wt);tr.onsuccess=function(){q.analyzePath(wt).exists&&q.unlink(wt),q.createDataFile(kt.dirname(wt),kt.basename(wt),tr.result,!0,!0,!0),$e++,$e+rt==It&&xt()},tr.onerror=function(){rt++,$e+rt==It&&xt()}}),Ie.onerror=L},te.onerror=L}},er={mappings:{},DEFAULT_POLLMASK:5,umask:511,calculateAt:function(I,M){if(M[0]!=="/"){var L;if(I===-100)L=q.cwd();else{var W=q.getStream(I);if(!W)throw new q.ErrnoError(8);L=W.path}M=kt.join2(L,M)}return M},doStat:function(I,M,L){try{var W=I(M)}catch(te){if(te&&te.node&&kt.normalize(M)!==kt.normalize(q.getPath(te.node)))return-54;throw te}return z[L>>>2]=W.dev,z[L+4>>>2]=0,z[L+8>>>2]=W.ino,z[L+12>>>2]=W.mode,z[L+16>>>2]=W.nlink,z[L+20>>>2]=W.uid,z[L+24>>>2]=W.gid,z[L+28>>>2]=W.rdev,z[L+32>>>2]=0,Ke=[W.size>>>0,(Le=W.size,+Math.abs(Le)>=1?Le>0?(Math.min(+Math.floor(Le/4294967296),4294967295)|0)>>>0:~~+Math.ceil((Le-+(~~Le>>>0))/4294967296)>>>0:0)],z[L+40>>>2]=Ke[0],z[L+44>>>2]=Ke[1],z[L+48>>>2]=4096,z[L+52>>>2]=W.blocks,z[L+56>>>2]=W.atime.getTime()/1e3|0,z[L+60>>>2]=0,z[L+64>>>2]=W.mtime.getTime()/1e3|0,z[L+68>>>2]=0,z[L+72>>>2]=W.ctime.getTime()/1e3|0,z[L+76>>>2]=0,Ke=[W.ino>>>0,(Le=W.ino,+Math.abs(Le)>=1?Le>0?(Math.min(+Math.floor(Le/4294967296),4294967295)|0)>>>0:~~+Math.ceil((Le-+(~~Le>>>0))/4294967296)>>>0:0)],z[L+80>>>2]=Ke[0],z[L+84>>>2]=Ke[1],0},doMsync:function(I,M,L,W,te){var ge=$.slice(I,I+L);q.msync(M,ge,te,L,W)},doMkdir:function(I,M){return I=kt.normalize(I),I[I.length-1]==="/"&&(I=I.slice(0,I.length-1)),q.mkdir(I,M,0),0},doMknod:function(I,M,L){switch(M&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}return q.mknod(I,M,L),0},doReadlink:function(I,M,L){if(L<=0)return-28;var W=q.readlink(I),te=Math.min(L,de(W)),ge=J[M+te>>>0];return be(W,M,L+1),J[M+te>>>0]=ge,te},doAccess:function(I,M){if(M&-8)return-28;var L,W=q.lookupPath(I,{follow:!0});if(L=W.node,!L)return-44;var te="";return M&4&&(te+="r"),M&2&&(te+="w"),M&1&&(te+="x"),te&&q.nodePermissions(L,te)?-2:0},doDup:function(I,M,L){var W=q.getStream(L);return W&&q.close(W),q.open(I,M,0,L,L).fd},doReadv:function(I,M,L,W){for(var te=0,ge=0;ge<L;ge++){var Ee=z[M+ge*8>>>2],Ie=z[M+(ge*8+4)>>>2],De=q.read(I,J,Ee,Ie,W);if(De<0)return-1;if(te+=De,De<Ie)break}return te},doWritev:function(I,M,L,W){for(var te=0,ge=0;ge<L;ge++){var Ee=z[M+ge*8>>>2],Ie=z[M+(ge*8+4)>>>2],De=q.write(I,J,Ee,Ie,W);if(De<0)return-1;te+=De}return te},varargs:void 0,get:function(){er.varargs+=4;var I=z[er.varargs-4>>>2];return I},getStr:function(I){var M=ue(I);return M},getStreamFromFD:function(I){var M=q.getStream(I);if(!M)throw new q.ErrnoError(8);return M},get64:function(I,M){return I}};function cu(I,M,L){er.varargs=L;try{var W=er.getStreamFromFD(I);switch(M){case 0:{var te=er.get();if(te<0)return-28;var ge;return ge=q.open(W.path,W.flags,0,te),ge.fd}case 1:case 2:return 0;case 3:return W.flags;case 4:{var te=er.get();return W.flags|=te,0}case 12:{var te=er.get(),Ee=0;return re[te+Ee>>>1]=2,0}case 13:case 14:return 0;case 16:case 8:return-28;case 9:return Yr(28),-1;default:return-28}}catch(Ie){return(typeof q=="undefined"||!(Ie instanceof q.ErrnoError))&&Kt(Ie),-Ie.errno}}function fn(I,M,L){er.varargs=L;try{var W=er.getStreamFromFD(I);switch(M){case 21509:case 21505:return W.tty?0:-59;case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:return W.tty?0:-59;case 21519:{if(!W.tty)return-59;var te=er.get();return z[te>>>2]=0,0}case 21520:return W.tty?-28:-59;case 21531:{var te=er.get();return q.ioctl(W,M,te)}case 21523:return W.tty?0:-59;case 21524:return W.tty?0:-59;default:Kt("bad ioctl syscall "+M)}}catch(ge){return(typeof q=="undefined"||!(ge instanceof q.ErrnoError))&&Kt(ge),-ge.errno}}function Ha(I,M,L){er.varargs=L;try{var W=er.getStr(I),te=er.get(),ge=q.open(W,M,te);return ge.fd}catch(Ee){return(typeof q=="undefined"||!(Ee instanceof q.ErrnoError))&&Kt(Ee),-Ee.errno}}var nc={};function aa(I){for(;I.length;){var M=I.pop(),L=I.pop();L(M)}}function oa(I){return this.fromWireType(Y[I>>>2])}var on={},En={},Io={},Xn=48,sc=57;function uu(I){if(I===void 0)return"_unknown";I=I.replace(/[^a-zA-Z0-9_]/g,"$");var M=I.charCodeAt(0);return M>=Xn&&M<=sc?"_"+I:I}function ac(I,M){return I=uu(I),new Function("body","return function "+I+`() {
|
||
"use strict"; return body.apply(this, arguments);
|
||
};
|
||
`)(M)}function hu(I,M){var L=ac(M,function(W){this.name=M,this.message=W;var te=new Error(W).stack;te!==void 0&&(this.stack=this.toString()+`
|
||
`+te.replace(/^Error(:[^\n]*)?\n/,""))});return L.prototype=Object.create(I.prototype),L.prototype.constructor=L,L.prototype.toString=function(){return this.message===void 0?this.name:this.name+": "+this.message},L}var hm=void 0;function bh(I){throw new hm(I)}function Ni(I,M,L){I.forEach(function(Ie){Io[Ie]=M});function W(Ie){var De=L(Ie);De.length!==I.length&&bh("Mismatched type converter count");for(var $e=0;$e<I.length;++$e)Qt(I[$e],De[$e])}var te=new Array(M.length),ge=[],Ee=0;M.forEach(function(Ie,De){En.hasOwnProperty(Ie)?te[De]=En[Ie]:(ge.push(Ie),on.hasOwnProperty(Ie)||(on[Ie]=[]),on[Ie].push(function(){te[De]=En[Ie],++Ee,Ee===ge.length&&W(te)}))}),ge.length===0&&W(te)}function md(I){var M=nc[I];delete nc[I];var L=M.elements,W=L.length,te=L.map(function(Ie){return Ie.getterReturnType}).concat(L.map(function(Ie){return Ie.setterArgumentType})),ge=M.rawConstructor,Ee=M.rawDestructor;Ni([I],te,function(Ie){return L.forEach(function(De,$e){var rt=Ie[$e],It=De.getter,xt=De.getterContext,wt=Ie[$e+W],tr=De.setter,vi=De.setterContext;De.read=function(Mi){return rt.fromWireType(It(xt,Mi))},De.write=function(Mi,Ai){var yt=[];tr(vi,Mi,wt.toWireType(yt,Ai)),aa(yt)}}),[{name:M.name,fromWireType:function(De){for(var $e=new Array(W),rt=0;rt<W;++rt)$e[rt]=L[rt].read(De);return Ee(De),$e},toWireType:function(De,$e){if(W!==$e.length)throw new TypeError("Incorrect number of tuple elements for "+M.name+": expected="+W+", actual="+$e.length);for(var rt=ge(),It=0;It<W;++It)L[It].write(rt,$e[It]);return De!==null&&De.push(Ee,rt),rt},argPackAdvance:8,readValueFromPointer:oa,destructorFunction:Ee}]})}var pu={};function L0(I){var M=pu[I];delete pu[I];var L=M.rawConstructor,W=M.rawDestructor,te=M.fields,ge=te.map(function(Ee){return Ee.getterReturnType}).concat(te.map(function(Ee){return Ee.setterArgumentType}));Ni([I],ge,function(Ee){var Ie={};return te.forEach(function(De,$e){var rt=De.fieldName,It=Ee[$e],xt=De.getter,wt=De.getterContext,tr=Ee[$e+te.length],vi=De.setter,Mi=De.setterContext;Ie[rt]={read:function(Ai){return It.fromWireType(xt(wt,Ai))},write:function(Ai,yt){var Lt=[];vi(Mi,Ai,tr.toWireType(Lt,yt)),aa(Lt)}}}),[{name:M.name,fromWireType:function(De){var $e={};for(var rt in Ie)$e[rt]=Ie[rt].read(De);return W(De),$e},toWireType:function(De,$e){for(var rt in Ie)if(!(rt in $e))throw new TypeError('Missing field: "'+rt+'"');var It=L();for(rt in Ie)Ie[rt].write(It,$e[rt]);return De!==null&&De.push(W,It),It},argPackAdvance:8,readValueFromPointer:oa,destructorFunction:W}]})}function xh(I){switch(I){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+I)}}function Ih(){for(var I=new Array(256),M=0;M<256;++M)I[M]=String.fromCharCode(M);oc=I}var oc=void 0;function Xi(I){for(var M="",L=I;$[L>>>0];)M+=oc[$[L++>>>0]];return M}var al=void 0;function Zr(I){throw new al(I)}function Qt(I,M,L){if(L=L||{},!("argPackAdvance"in M))throw new TypeError("registerType registeredInstance requires argPackAdvance");var W=M.name;if(I||Zr('type "'+W+'" must have a positive integer typeid pointer'),En.hasOwnProperty(I)){if(L.ignoreDuplicateRegistrations)return;Zr("Cannot register type '"+W+"' twice")}if(En[I]=M,delete Io[I],on.hasOwnProperty(I)){var te=on[I];delete on[I],te.forEach(function(ge){ge()})}}function Sh(I,M,L,W,te){var ge=xh(L);M=Xi(M),Qt(I,{name:M,fromWireType:function(Ee){return!!Ee},toWireType:function(Ee,Ie){return Ie?W:te},argPackAdvance:8,readValueFromPointer:function(Ee){var Ie;if(L===1)Ie=J;else if(L===2)Ie=re;else if(L===4)Ie=z;else throw new TypeError("Unknown boolean type size: "+M);return this.fromWireType(Ie[Ee>>>ge])},destructorFunction:null})}function K(I){if(!(this instanceof xi)||!(I instanceof xi))return!1;for(var M=this.$$.ptrType.registeredClass,L=this.$$.ptr,W=I.$$.ptrType.registeredClass,te=I.$$.ptr;M.baseClass;)L=M.upcast(L),M=M.baseClass;for(;W.baseClass;)te=W.upcast(te),W=W.baseClass;return M===W&&L===te}function Z(I){return{count:I.count,deleteScheduled:I.deleteScheduled,preservePointerOnDelete:I.preservePointerOnDelete,ptr:I.ptr,ptrType:I.ptrType,smartPtr:I.smartPtr,smartPtrType:I.smartPtrType}}function ce(I){function M(L){return L.$$.ptrType.registeredClass.name}Zr(M(I)+" instance already deleted")}var oe=!1;function pe(I){}function qe(I){I.smartPtr?I.smartPtrType.rawDestructor(I.smartPtr):I.ptrType.registeredClass.rawDestructor(I.ptr)}function et(I){I.count.value-=1;var M=I.count.value===0;M&&qe(I)}function Ht(I){return typeof FinalizationGroup=="undefined"?(Ht=function(M){return M},I):(oe=new FinalizationGroup(function(M){for(var L=M.next();!L.done;L=M.next()){var W=L.value;W.ptr?et(W):console.warn("object already deleted: "+W.ptr)}}),Ht=function(M){return oe.register(M,M.$$,M.$$),M},pe=function(M){oe.unregister(M.$$)},Ht(I))}function Mt(){if(this.$$.ptr||ce(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var I=Ht(Object.create(Object.getPrototypeOf(this),{$$:{value:Z(this.$$)}}));return I.$$.count.value+=1,I.$$.deleteScheduled=!1,I}function Ft(){this.$$.ptr||ce(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Zr("Object already scheduled for deletion"),pe(this),et(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function $t(){return!this.$$.ptr}var pt=void 0,qt=[];function zt(){for(;qt.length;){var I=qt.pop();I.$$.deleteScheduled=!1,I.delete()}}function ur(){return this.$$.ptr||ce(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Zr("Object already scheduled for deletion"),qt.push(this),qt.length===1&&pt&&pt(zt),this.$$.deleteScheduled=!0,this}function sr(){xi.prototype.isAliasOf=K,xi.prototype.clone=Mt,xi.prototype.delete=Ft,xi.prototype.isDeleted=$t,xi.prototype.deleteLater=ur}function xi(){}var ar={};function Zt(I,M,L){if(I[M].overloadTable===void 0){var W=I[M];I[M]=function(){return I[M].overloadTable.hasOwnProperty(arguments.length)||Zr("Function '"+L+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+I[M].overloadTable+")!"),I[M].overloadTable[arguments.length].apply(this,arguments)},I[M].overloadTable=[],I[M].overloadTable[W.argCount]=W}}function ti(I,M,L){s.hasOwnProperty(I)?((L===void 0||s[I].overloadTable!==void 0&&s[I].overloadTable[L]!==void 0)&&Zr("Cannot register public name '"+I+"' twice"),Zt(s,I,I),s.hasOwnProperty(L)&&Zr("Cannot register multiple overloads of a function with the same number of arguments ("+L+")!"),s[I].overloadTable[L]=M):(s[I]=M,L!==void 0&&(s[I].numArguments=L))}function So(I,M,L,W,te,ge,Ee,Ie){this.name=I,this.constructor=M,this.instancePrototype=L,this.rawDestructor=W,this.baseClass=te,this.getActualType=ge,this.upcast=Ee,this.downcast=Ie,this.pureVirtualFunctions=[]}function as(I,M,L){for(;M!==L;)M.upcast||Zr("Expected null or instance of "+L.name+", got an instance of "+M.name),I=M.upcast(I),M=M.baseClass;return I}function du(I,M){if(M===null)return this.isReference&&Zr("null is not a valid "+this.name),0;M.$$||Zr('Cannot pass "'+Rh(M)+'" as a '+this.name),M.$$.ptr||Zr("Cannot pass deleted object as a pointer of type "+this.name);var L=M.$$.ptrType.registeredClass,W=as(M.$$.ptr,L,this.registeredClass);return W}function SE(I,M){var L;if(M===null)return this.isReference&&Zr("null is not a valid "+this.name),this.isSmartPointer?(L=this.rawConstructor(),I!==null&&I.push(this.rawDestructor,L),L):0;M.$$||Zr('Cannot pass "'+Rh(M)+'" as a '+this.name),M.$$.ptr||Zr("Cannot pass deleted object as a pointer of type "+this.name),!this.isConst&&M.$$.ptrType.isConst&&Zr("Cannot convert argument of type "+(M.$$.smartPtrType?M.$$.smartPtrType.name:M.$$.ptrType.name)+" to parameter type "+this.name);var W=M.$$.ptrType.registeredClass;if(L=as(M.$$.ptr,W,this.registeredClass),this.isSmartPointer)switch(M.$$.smartPtr===void 0&&Zr("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:M.$$.smartPtrType===this?L=M.$$.smartPtr:Zr("Cannot convert argument of type "+(M.$$.smartPtrType?M.$$.smartPtrType.name:M.$$.ptrType.name)+" to parameter type "+this.name);break;case 1:L=M.$$.smartPtr;break;case 2:if(M.$$.smartPtrType===this)L=M.$$.smartPtr;else{var te=M.clone();L=this.rawShare(L,_o(function(){te.delete()})),I!==null&&I.push(this.rawDestructor,L)}break;default:Zr("Unsupporting sharing policy")}return L}function F0(I,M){if(M===null)return this.isReference&&Zr("null is not a valid "+this.name),0;M.$$||Zr('Cannot pass "'+Rh(M)+'" as a '+this.name),M.$$.ptr||Zr("Cannot pass deleted object as a pointer of type "+this.name),M.$$.ptrType.isConst&&Zr("Cannot convert argument of type "+M.$$.ptrType.name+" to parameter type "+this.name);var L=M.$$.ptrType.registeredClass,W=as(M.$$.ptr,L,this.registeredClass);return W}function e_(I){return this.rawGetPointee&&(I=this.rawGetPointee(I)),I}function P3(I){this.rawDestructor&&this.rawDestructor(I)}function os(I){I!==null&&I.delete()}function H0(I,M,L){if(M===L)return I;if(L.baseClass===void 0)return null;var W=H0(I,M,L.baseClass);return W===null?null:L.downcast(W)}function _h(){return Object.keys(gd).length}function t_(){var I=[];for(var M in gd)gd.hasOwnProperty(M)&&I.push(gd[M]);return I}function _E(I){pt=I,qt.length&&pt&&pt(zt)}function Ua(){s.getInheritedInstanceCount=_h,s.getLiveInheritedInstances=t_,s.flushPendingDeletes=zt,s.setDelayFunction=_E}var gd={};function r_(I,M){for(M===void 0&&Zr("ptr should not be undefined");I.baseClass;)M=I.upcast(M),I=I.baseClass;return M}function i_(I,M){return M=r_(I,M),gd[M]}function pm(I,M){(!M.ptrType||!M.ptr)&&bh("makeClassHandle requires ptr and ptrType");var L=!!M.smartPtrType,W=!!M.smartPtr;return L!==W&&bh("Both smartPtrType and smartPtr must be specified"),M.count={value:1},Ht(Object.create(I,{$$:{value:M}}))}function n_(I){var M=this.getPointee(I);if(!M)return this.destructor(I),null;var L=i_(this.registeredClass,M);if(L!==void 0){if(L.$$.count.value===0)return L.$$.ptr=M,L.$$.smartPtr=I,L.clone();var W=L.clone();return this.destructor(I),W}function te(){return this.isSmartPointer?pm(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:M,smartPtrType:this,smartPtr:I}):pm(this.registeredClass.instancePrototype,{ptrType:this,ptr:I})}var ge=this.registeredClass.getActualType(M),Ee=ar[ge];if(!Ee)return te.call(this);var Ie;this.isConst?Ie=Ee.constPointerType:Ie=Ee.pointerType;var De=H0(M,this.registeredClass,Ie.registeredClass);return De===null?te.call(this):this.isSmartPointer?pm(Ie.registeredClass.instancePrototype,{ptrType:Ie,ptr:De,smartPtrType:this,smartPtr:I}):pm(Ie.registeredClass.instancePrototype,{ptrType:Ie,ptr:De})}function s_(){wn.prototype.getPointee=e_,wn.prototype.destructor=P3,wn.prototype.argPackAdvance=8,wn.prototype.readValueFromPointer=oa,wn.prototype.deleteObject=os,wn.prototype.fromWireType=n_}function wn(I,M,L,W,te,ge,Ee,Ie,De,$e,rt){this.name=I,this.registeredClass=M,this.isReference=L,this.isConst=W,this.isSmartPointer=te,this.pointeeType=ge,this.sharingPolicy=Ee,this.rawGetPointee=Ie,this.rawConstructor=De,this.rawShare=$e,this.rawDestructor=rt,!te&&M.baseClass===void 0?W?(this.toWireType=du,this.destructorFunction=null):(this.toWireType=F0,this.destructorFunction=null):this.toWireType=SE}function a_(I,M,L){s.hasOwnProperty(I)||bh("Replacing nonexistant public symbol"),s[I].overloadTable!==void 0&&L!==void 0?s[I].overloadTable[L]=M:(s[I]=M,s[I].argCount=L)}function Ba(I,M){ee(I.indexOf("j")>=0,"getDynCaller should only be called with i64 sigs");var L=[];return function(){L.length=arguments.length;for(var W=0;W<arguments.length;W++)L[W]=arguments[W];return Nr(I,M,L)}}function Fs(I,M){I=Xi(I);function L(){return I.indexOf("j")!=-1?Ba(I,M):gt.get(M)}var W=L();return typeof W!="function"&&Zr("unknown function pointer with signature "+I+": "+M),W}var wE=void 0;function lc(I){var M=VE(I),L=Xi(M);return ua(M),L}function wh(I,M){var L=[],W={};function te(ge){if(!W[ge]&&!En[ge]){if(Io[ge]){Io[ge].forEach(te);return}L.push(ge),W[ge]=!0}}throw M.forEach(te),new wE(I+": "+L.map(lc).join([", "]))}function RE(I,M,L,W,te,ge,Ee,Ie,De,$e,rt,It,xt){rt=Xi(rt),ge=Fs(te,ge),Ie&&(Ie=Fs(Ee,Ie)),$e&&($e=Fs(De,$e)),xt=Fs(It,xt);var wt=uu(rt);ti(wt,function(){wh("Cannot construct "+rt+" due to unbound types",[W])}),Ni([I,M,L],W?[W]:[],function(tr){tr=tr[0];var vi,Mi;W?(vi=tr.registeredClass,Mi=vi.instancePrototype):Mi=xi.prototype;var Ai=ac(wt,function(){if(Object.getPrototypeOf(this)!==yt)throw new al("Use 'new' to construct "+rt);if(Lt.constructor_body===void 0)throw new al(rt+" has no accessible constructor");var Ss=Lt.constructor_body[arguments.length];if(Ss===void 0)throw new al("Tried to invoke ctor of "+rt+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(Lt.constructor_body).toString()+") parameters instead!");return Ss.apply(this,arguments)}),yt=Object.create(Mi,{constructor:{value:Ai}});Ai.prototype=yt;var Lt=new So(rt,Ai,yt,xt,vi,ge,Ie,$e),Kr=new wn(rt,Lt,!0,!1,!1),Xr=new wn(rt+"*",Lt,!1,!1,!1),ie=new wn(rt+" const*",Lt,!1,!0,!1);return ar[I]={pointerType:Xr,constPointerType:ie},a_(wt,Ai),[Kr,Xr,ie]})}function Ji(I,M){for(var L=[],W=0;W<I;W++)L.push(z[(M>>2)+W>>>0]);return L}function fu(I,M,L,W,te,ge){ee(M>0);var Ee=Ji(M,L);te=Fs(W,te);var Ie=[ge],De=[];Ni([],[I],function($e){$e=$e[0];var rt="constructor "+$e.name;if($e.registeredClass.constructor_body===void 0&&($e.registeredClass.constructor_body=[]),$e.registeredClass.constructor_body[M-1]!==void 0)throw new al("Cannot register multiple constructors with identical number of parameters ("+(M-1)+") for class '"+$e.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return $e.registeredClass.constructor_body[M-1]=function(){wh("Cannot construct "+$e.name+" due to unbound types",Ee)},Ni([],Ee,function(It){return $e.registeredClass.constructor_body[M-1]=function(){arguments.length!==M-1&&Zr(rt+" called with "+arguments.length+" arguments, expected "+(M-1)),De.length=0,Ie.length=M;for(var wt=1;wt<M;++wt)Ie[wt]=It[wt].toWireType(De,arguments[wt-1]);var tr=te.apply(null,Ie);return aa(De),It[0].fromWireType(tr)},[]}),[]})}function ME(I,M){if(!(I instanceof Function))throw new TypeError("new_ called with constructor type "+typeof I+" which is not a function");var L=ac(I.name||"unknownFunctionName",function(){});L.prototype=I.prototype;var W=new L,te=I.apply(W,M);return te instanceof Object?te:W}function o_(I,M,L,W,te){var ge=M.length;ge<2&&Zr("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var Ee=M[1]!==null&&L!==null,Ie=!1,De=1;De<M.length;++De)if(M[De]!==null&&M[De].destructorFunction===void 0){Ie=!0;break}for(var $e=M[0].name!=="void",rt="",It="",De=0;De<ge-2;++De)rt+=(De!==0?", ":"")+"arg"+De,It+=(De!==0?", ":"")+"arg"+De+"Wired";var xt="return function "+uu(I)+"("+rt+`) {
|
||
if (arguments.length !== `+(ge-2)+`) {
|
||
throwBindingError('function `+I+" called with ' + arguments.length + ' arguments, expected "+(ge-2)+` args!');
|
||
}
|
||
`;Ie&&(xt+=`var destructors = [];
|
||
`);var wt=Ie?"destructors":"null",tr=["throwBindingError","invoker","fn","runDestructors","retType","classParam"],vi=[Zr,W,te,aa,M[0],M[1]];Ee&&(xt+="var thisWired = classParam.toWireType("+wt+`, this);
|
||
`);for(var De=0;De<ge-2;++De)xt+="var arg"+De+"Wired = argType"+De+".toWireType("+wt+", arg"+De+"); // "+M[De+2].name+`
|
||
`,tr.push("argType"+De),vi.push(M[De+2]);if(Ee&&(It="thisWired"+(It.length>0?", ":"")+It),xt+=($e?"var rv = ":"")+"invoker(fn"+(It.length>0?", ":"")+It+`);
|
||
`,Ie)xt+=`runDestructors(destructors);
|
||
`;else for(var De=Ee?1:2;De<M.length;++De){var Mi=De===1?"thisWired":"arg"+(De-2)+"Wired";M[De].destructorFunction!==null&&(xt+=Mi+"_dtor("+Mi+"); // "+M[De].name+`
|
||
`,tr.push(Mi+"_dtor"),vi.push(M[De].destructorFunction))}$e&&(xt+=`var ret = retType.fromWireType(rv);
|
||
return ret;
|
||
`),xt+=`}
|
||
`,tr.push(xt);var Ai=ME(Function,tr).apply(null,vi);return Ai}function DE(I,M,L,W,te,ge,Ee,Ie){var De=Ji(L,W);M=Xi(M),ge=Fs(te,ge),Ni([],[I],function($e){$e=$e[0];var rt=$e.name+"."+M;Ie&&$e.registeredClass.pureVirtualFunctions.push(M);function It(){wh("Cannot call "+rt+" due to unbound types",De)}var xt=$e.registeredClass.instancePrototype,wt=xt[M];return wt===void 0||wt.overloadTable===void 0&&wt.className!==$e.name&&wt.argCount===L-2?(It.argCount=L-2,It.className=$e.name,xt[M]=It):(Zt(xt,M,rt),xt[M].overloadTable[L-2]=It),Ni([],De,function(tr){var vi=o_(rt,tr,$e,ge,Ee);return xt[M].overloadTable===void 0?(vi.argCount=L-2,xt[M]=vi):xt[M].overloadTable[L-2]=vi,[]}),[]})}var CE=[],la=[{},{value:void 0},{value:null},{value:!0},{value:!1}];function AE(I){I>4&&--la[I].refcount===0&&(la[I]=void 0,CE.push(I))}function l_(){for(var I=0,M=5;M<la.length;++M)la[M]!==void 0&&++I;return I}function U0(){for(var I=5;I<la.length;++I)if(la[I]!==void 0)return la[I];return null}function vd(){s.count_emval_handles=l_,s.get_first_emval=U0}function _o(I){switch(I){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:{var M=CE.length?CE.pop():la.length;return la[M]={refcount:1,value:I},M}}}function c_(I,M){M=Xi(M),Qt(I,{name:M,fromWireType:function(L){var W=la[L].value;return AE(L),W},toWireType:function(L,W){return _o(W)},argPackAdvance:8,readValueFromPointer:oa,destructorFunction:null})}function Rh(I){if(I===null)return"null";var M=typeof I;return M==="object"||M==="array"||M==="function"?I.toString():""+I}function OE(I,M){switch(M){case 2:return function(L){return this.fromWireType(xe[L>>>2])};case 3:return function(L){return this.fromWireType(Ce[L>>>3])};default:throw new TypeError("Unknown float type: "+I)}}function PE(I,M,L){var W=xh(L);M=Xi(M),Qt(I,{name:M,fromWireType:function(te){return te},toWireType:function(te,ge){if(typeof ge!="number"&&typeof ge!="boolean")throw new TypeError('Cannot convert "'+Rh(ge)+'" to '+this.name);return ge},argPackAdvance:8,readValueFromPointer:OE(M,W),destructorFunction:null})}function u_(I,M,L,W,te,ge){var Ee=Ji(M,L);I=Xi(I),te=Fs(W,te),ti(I,function(){wh("Cannot call "+I+" due to unbound types",Ee)},M-1),Ni([],Ee,function(Ie){var De=[Ie[0],null].concat(Ie.slice(1));return a_(I,o_(I,De,null,te,ge),M-1),[]})}function N3(I,M,L){switch(M){case 0:return L?function(te){return J[te>>>0]}:function(te){return $[te>>>0]};case 1:return L?function(te){return re[te>>>1]}:function(te){return me[te>>>1]};case 2:return L?function(te){return z[te>>>2]}:function(te){return Y[te>>>2]};default:throw new TypeError("Unknown integer type: "+I)}}function NE(I,M,L,W,te){M=Xi(M),te===-1&&(te=4294967295);var ge=xh(L),Ee=function($e){return $e};if(W===0){var Ie=32-8*L;Ee=function($e){return $e<<Ie>>>Ie}}var De=M.indexOf("unsigned")!=-1;Qt(I,{name:M,fromWireType:Ee,toWireType:function($e,rt){if(typeof rt!="number"&&typeof rt!="boolean")throw new TypeError('Cannot convert "'+Rh(rt)+'" to '+this.name);if(rt<W||rt>te)throw new TypeError('Passing a number "'+Rh(rt)+'" from JS side to C/C++ side to an argument of type "'+M+'", which is outside the valid range ['+W+", "+te+"]!");return De?rt>>>0:rt|0},argPackAdvance:8,readValueFromPointer:N3(M,ge,W!==0),destructorFunction:null})}function LE(I,M,L){var W=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],te=W[M];function ge(Ee){Ee=Ee>>2;var Ie=Y,De=Ie[Ee>>>0],$e=Ie[Ee+1>>>0];return new te(_e,$e,De)}L=Xi(L),Qt(I,{name:L,fromWireType:ge,argPackAdvance:8,readValueFromPointer:ge},{ignoreDuplicateRegistrations:!0})}function L3(I,M){M=Xi(M);var L=M==="std::string";Qt(I,{name:M,fromWireType:function(W){var te=Y[W>>>2],ge;if(L)for(var Ee=W+4,Ie=0;Ie<=te;++Ie){var De=W+4+Ie;if(Ie==te||$[De>>>0]==0){var $e=De-Ee,rt=ue(Ee,$e);ge===void 0?ge=rt:(ge+=String.fromCharCode(0),ge+=rt),Ee=De+1}}else{for(var It=new Array(te),Ie=0;Ie<te;++Ie)It[Ie]=String.fromCharCode($[W+4+Ie>>>0]);ge=It.join("")}return ua(W),ge},toWireType:function(W,te){te instanceof ArrayBuffer&&(te=new Uint8Array(te));var ge,Ee=typeof te=="string";Ee||te instanceof Uint8Array||te instanceof Uint8ClampedArray||te instanceof Int8Array||Zr("Cannot pass non-string to std::string"),L&&Ee?ge=function(){return de(te)}:ge=function(){return te.length};var Ie=ge(),De=fm(4+Ie+1);if(De>>>=0,Y[De>>>2]=Ie,L&&Ee)be(te,De+4,Ie+1);else if(Ee)for(var $e=0;$e<Ie;++$e){var rt=te.charCodeAt($e);rt>255&&(ua(De),Zr("String has UTF-16 code units that do not fit in 8 bits")),$[De+4+$e>>>0]=rt}else for(var $e=0;$e<Ie;++$e)$[De+4+$e>>>0]=te[$e];return W!==null&&W.push(ua,De),De},argPackAdvance:8,readValueFromPointer:oa,destructorFunction:function(W){ua(W)}})}function h_(I,M,L){L=Xi(L);var W,te,ge,Ee,Ie;M===2?(W=Fe,te=je,Ee=Oe,ge=function(){return me},Ie=1):M===4&&(W=dt,te=Be,Ee=ke,ge=function(){return Y},Ie=2),Qt(I,{name:L,fromWireType:function(De){for(var $e=Y[De>>>2],rt=ge(),It,xt=De+4,wt=0;wt<=$e;++wt){var tr=De+4+wt*M;if(wt==$e||rt[tr>>>Ie]==0){var vi=tr-xt,Mi=W(xt,vi);It===void 0?It=Mi:(It+=String.fromCharCode(0),It+=Mi),xt=tr+M}}return ua(De),It},toWireType:function(De,$e){typeof $e!="string"&&Zr("Cannot pass non-string to C++ string type "+L);var rt=Ee($e),It=fm(4+rt+M);return It>>>=0,Y[It>>>2]=rt>>Ie,te($e,It+4,rt+M),De!==null&&De.push(ua,It),It},argPackAdvance:8,readValueFromPointer:oa,destructorFunction:function(De){ua(De)}})}function ca(I,M,L,W,te,ge){nc[I]={name:Xi(M),rawConstructor:Fs(L,W),rawDestructor:Fs(te,ge),elements:[]}}function FE(I,M,L,W,te,ge,Ee,Ie,De){nc[I].elements.push({getterReturnType:M,getter:Fs(L,W),getterContext:te,setterArgumentType:ge,setter:Fs(Ee,Ie),setterContext:De})}function dm(I,M,L,W,te,ge){pu[I]={name:Xi(M),rawConstructor:Fs(L,W),rawDestructor:Fs(te,ge),fields:[]}}function p_(I,M,L,W,te,ge,Ee,Ie,De,$e){pu[I].fields.push({fieldName:Xi(M),getterReturnType:L,getter:Fs(W,te),getterContext:ge,setterArgumentType:Ee,setter:Fs(Ie,De),setterContext:$e})}function d_(I,M){M=Xi(M),Qt(I,{isVoid:!0,name:M,argPackAdvance:0,fromWireType:function(){},toWireType:function(L,W){}})}function ol(I){return I||Zr("Cannot use deleted val. handle = "+I),la[I].value}function HE(I,M){var L=En[I];return L===void 0&&Zr(M+" has unknown type "+lc(I)),L}function F3(I,M,L){I=ol(I),M=HE(M,"emval::as");var W=[],te=_o(W);return z[L>>>2]=te,M.toWireType(W,I)}function H3(I,M){for(var L=new Array(I),W=0;W<I;++W)L[W]=HE(z[(M>>2)+W>>>0],"parameter "+W);return L}function U3(I,M,L,W){I=ol(I);for(var te=H3(M,L),ge=new Array(M),Ee=0;Ee<M;++Ee){var Ie=te[Ee];ge[Ee]=Ie.readValueFromPointer(W),W+=Ie.argPackAdvance}var De=I.apply(void 0,ge);return _o(De)}var yd={};function f_(I){var M=yd[I];return M===void 0?Xi(I):M}function m_(){return typeof globalThis=="object"?globalThis:function(){return Function}()("return this")()}function UE(I){return I===0?_o(m_()):(I=f_(I),_o(m_()[I]))}function g_(I,M){return I=ol(I),M=ol(M),_o(I[M])}function mu(I){I>4&&(la[I].refcount+=1)}function B0(I,M){return I=ol(I),M=ol(M),I instanceof M}function B3(I){return I=ol(I),typeof I=="number"}function k3(){return _o([])}function G3(I){return _o(f_(I))}function Td(){return _o({})}function wo(I){var M=la[I].value;aa(M),AE(I)}function v_(I,M,L){I=ol(I),M=ol(M),L=ol(L),I[M]=L}function V3(I,M){I=HE(I,"_emval_take_value");var L=I.readValueFromPointer(M);return _o(L)}function z3(){Kt()}var k0;m?k0=function(){var I=process.hrtime();return I[0]*1e3+I[1]/1e6}:typeof dateNow!="undefined"?k0=dateNow:k0=function(){return performance.now()};var j3=!0;function W3(I,M){var L;if(I===0)L=Date.now();else if((I===1||I===4)&&j3)L=k0();else return Yr(28),-1;return z[M>>>2]=L/1e3|0,z[M+4>>>2]=L%1e3*1e3*1e3|0,0}function gu(I,M,L){$.copyWithin(I>>>0,M>>>0,M+L>>>0)}function Pe(){return $.length}function tt(I){try{return G.grow(I-_e.byteLength+65535>>>16),Ge(G.buffer),1}catch(M){}}function Ye(I){I=I>>>0;var M=Pe(),L=4294967296;if(I>L)return!1;for(var W=16777216,te=1;te<=4;te*=2){var ge=M*(1+.2/te);ge=Math.min(ge,I+100663296);var Ee=Math.min(L,mt(Math.max(W,I,ge),65536)),Ie=tt(Ee);if(Ie)return!0}return!1}var Gt={};function Ar(){return h||"./this.program"}function ri(){if(!ri.strings){var I=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",M={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:I,_:Ar()};for(var L in Gt)M[L]=Gt[L];var W=[];for(var L in M)W.push(L+"="+M[L]);ri.strings=W}return ri.strings}function $n(I,M){try{var L=0;return ri().forEach(function(W,te){var ge=M+L;z[I+te*4>>>2]=ge,bt(W,ge),L+=W.length+1}),0}catch(W){return(typeof q=="undefined"||!(W instanceof q.ErrnoError))&&Kt(W),W.errno}}function $i(I,M){try{var L=ri();z[I>>>2]=L.length;var W=0;return L.forEach(function(te){W+=te.length+1}),z[M>>>2]=W,0}catch(te){return(typeof q=="undefined"||!(te instanceof q.ErrnoError))&&Kt(te),te.errno}}function BE(I){try{var M=er.getStreamFromFD(I);return q.close(M),0}catch(L){return(typeof q=="undefined"||!(L instanceof q.ErrnoError))&&Kt(L),L.errno}}function q3(I,M,L,W){try{var te=er.getStreamFromFD(I),ge=er.doReadv(te,M,L);return z[W>>>2]=ge,0}catch(Ee){return(typeof q=="undefined"||!(Ee instanceof q.ErrnoError))&&Kt(Ee),Ee.errno}}function ka(I,M,L,W,te){try{var ge=er.getStreamFromFD(I),Ee=4294967296,Ie=L*Ee+(M>>>0),De=9007199254740992;return Ie<=-De||Ie>=De?-61:(q.llseek(ge,Ie,W),Ke=[ge.position>>>0,(Le=ge.position,+Math.abs(Le)>=1?Le>0?(Math.min(+Math.floor(Le/4294967296),4294967295)|0)>>>0:~~+Math.ceil((Le-+(~~Le>>>0))/4294967296)>>>0:0)],z[te>>>2]=Ke[0],z[te+4>>>2]=Ke[1],ge.getdents&&Ie===0&&W===0&&(ge.getdents=null),0)}catch($e){return(typeof q=="undefined"||!($e instanceof q.ErrnoError))&&Kt($e),$e.errno}}function G0(I,M,L,W){try{var te=er.getStreamFromFD(I),ge=er.doWritev(te,M,L);return z[W>>>2]=ge,0}catch(Ee){return(typeof q=="undefined"||!(Ee instanceof q.ErrnoError))&&Kt(Ee),Ee.errno}}function Y3(I){C(I|0)}function cc(I){return I%4===0&&(I%100!==0||I%400===0)}function Ed(I,M){for(var L=0,W=0;W<=M;L+=I[W++]);return L}var Mh=[31,29,31,30,31,30,31,31,30,31,30,31],Ii=[31,28,31,30,31,30,31,31,30,31,30,31];function V0(I,M){for(var L=new Date(I.getTime());M>0;){var W=cc(L.getFullYear()),te=L.getMonth(),ge=(W?Mh:Ii)[te];if(M>ge-L.getDate())M-=ge-L.getDate()+1,L.setDate(1),te<11?L.setMonth(te+1):(L.setMonth(0),L.setFullYear(L.getFullYear()+1));else return L.setDate(L.getDate()+M),L}return L}function y_(I,M,L,W){var te=z[W+40>>>2],ge={tm_sec:z[W>>>2],tm_min:z[W+4>>>2],tm_hour:z[W+8>>>2],tm_mday:z[W+12>>>2],tm_mon:z[W+16>>>2],tm_year:z[W+20>>>2],tm_wday:z[W+24>>>2],tm_yday:z[W+28>>>2],tm_isdst:z[W+32>>>2],tm_gmtoff:z[W+36>>>2],tm_zone:te?ue(te):""},Ee=ue(L),Ie={"%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 De in Ie)Ee=Ee.replace(new RegExp(De,"g"),Ie[De]);var $e=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],rt=["January","February","March","April","May","June","July","August","September","October","November","December"];function It(yt,Lt,Kr){for(var Xr=typeof yt=="number"?yt.toString():yt||"";Xr.length<Lt;)Xr=Kr[0]+Xr;return Xr}function xt(yt,Lt){return It(yt,Lt,"0")}function wt(yt,Lt){function Kr(ie){return ie<0?-1:ie>0?1:0}var Xr;return(Xr=Kr(yt.getFullYear()-Lt.getFullYear()))===0&&(Xr=Kr(yt.getMonth()-Lt.getMonth()))===0&&(Xr=Kr(yt.getDate()-Lt.getDate())),Xr}function tr(yt){switch(yt.getDay()){case 0:return new Date(yt.getFullYear()-1,11,29);case 1:return yt;case 2:return new Date(yt.getFullYear(),0,3);case 3:return new Date(yt.getFullYear(),0,2);case 4:return new Date(yt.getFullYear(),0,1);case 5:return new Date(yt.getFullYear()-1,11,31);case 6:return new Date(yt.getFullYear()-1,11,30)}}function vi(yt){var Lt=V0(new Date(yt.tm_year+1900,0,1),yt.tm_yday),Kr=new Date(Lt.getFullYear(),0,4),Xr=new Date(Lt.getFullYear()+1,0,4),ie=tr(Kr),Ss=tr(Xr);return wt(ie,Lt)<=0?wt(Ss,Lt)<=0?Lt.getFullYear()+1:Lt.getFullYear():Lt.getFullYear()-1}var Mi={"%a":function(yt){return $e[yt.tm_wday].substring(0,3)},"%A":function(yt){return $e[yt.tm_wday]},"%b":function(yt){return rt[yt.tm_mon].substring(0,3)},"%B":function(yt){return rt[yt.tm_mon]},"%C":function(yt){var Lt=yt.tm_year+1900;return xt(Lt/100|0,2)},"%d":function(yt){return xt(yt.tm_mday,2)},"%e":function(yt){return It(yt.tm_mday,2," ")},"%g":function(yt){return vi(yt).toString().substring(2)},"%G":function(yt){return vi(yt)},"%H":function(yt){return xt(yt.tm_hour,2)},"%I":function(yt){var Lt=yt.tm_hour;return Lt==0?Lt=12:Lt>12&&(Lt-=12),xt(Lt,2)},"%j":function(yt){return xt(yt.tm_mday+Ed(cc(yt.tm_year+1900)?Mh:Ii,yt.tm_mon-1),3)},"%m":function(yt){return xt(yt.tm_mon+1,2)},"%M":function(yt){return xt(yt.tm_min,2)},"%n":function(){return`
|
||
`},"%p":function(yt){return yt.tm_hour>=0&&yt.tm_hour<12?"AM":"PM"},"%S":function(yt){return xt(yt.tm_sec,2)},"%t":function(){return" "},"%u":function(yt){return yt.tm_wday||7},"%U":function(yt){var Lt=new Date(yt.tm_year+1900,0,1),Kr=Lt.getDay()===0?Lt:V0(Lt,7-Lt.getDay()),Xr=new Date(yt.tm_year+1900,yt.tm_mon,yt.tm_mday);if(wt(Kr,Xr)<0){var ie=Ed(cc(Xr.getFullYear())?Mh:Ii,Xr.getMonth()-1)-31,Ss=31-Kr.getDate(),ll=Ss+ie+Xr.getDate();return xt(Math.ceil(ll/7),2)}return wt(Kr,Lt)===0?"01":"00"},"%V":function(yt){var Lt=new Date(yt.tm_year+1900,0,4),Kr=new Date(yt.tm_year+1901,0,4),Xr=tr(Lt),ie=tr(Kr),Ss=V0(new Date(yt.tm_year+1900,0,1),yt.tm_yday);if(wt(Ss,Xr)<0)return"53";if(wt(ie,Ss)<=0)return"01";var ll;return Xr.getFullYear()<yt.tm_year+1900?ll=yt.tm_yday+32-Xr.getDate():ll=yt.tm_yday+1-Xr.getDate(),xt(Math.ceil(ll/7),2)},"%w":function(yt){return yt.tm_wday},"%W":function(yt){var Lt=new Date(yt.tm_year,0,1),Kr=Lt.getDay()===1?Lt:V0(Lt,Lt.getDay()===0?1:7-Lt.getDay()+1),Xr=new Date(yt.tm_year+1900,yt.tm_mon,yt.tm_mday);if(wt(Kr,Xr)<0){var ie=Ed(cc(Xr.getFullYear())?Mh:Ii,Xr.getMonth()-1)-31,Ss=31-Kr.getDate(),ll=Ss+ie+Xr.getDate();return xt(Math.ceil(ll/7),2)}return wt(Kr,Lt)===0?"01":"00"},"%y":function(yt){return(yt.tm_year+1900).toString().substring(2)},"%Y":function(yt){return yt.tm_year+1900},"%z":function(yt){var Lt=yt.tm_gmtoff,Kr=Lt>=0;return Lt=Math.abs(Lt)/60,Lt=Lt/60*100+Lt%60,(Kr?"+":"-")+String("0000"+Lt).slice(-4)},"%Z":function(yt){return yt.tm_zone},"%%":function(){return"%"}};for(var De in Mi)Ee.indexOf(De)>=0&&(Ee=Ee.replace(new RegExp(De,"g"),Mi[De](ge)));var Ai=Dh(Ee,!1);return Ai.length>M?0:(nt(Ai,I),Ai.length-1)}function z0(I,M,L,W){return y_(I,M,L,W)}var T_=function(I,M,L,W){I||(I=this),this.parent=I,this.mount=I.mount,this.mounted=null,this.id=q.nextInode++,this.name=M,this.mode=L,this.node_ops={},this.stream_ops={},this.rdev=W},j0=365,W0=146;Object.defineProperties(T_.prototype,{read:{get:function(){return(this.mode&j0)===j0},set:function(I){I?this.mode|=j0:this.mode&=~j0}},write:{get:function(){return(this.mode&W0)===W0},set:function(I){I?this.mode|=W0:this.mode&=~W0}},isFolder:{get:function(){return q.isDir(this.mode)}},isDevice:{get:function(){return q.isChrdev(this.mode)}}}),q.FSNode=T_,q.staticInit(),s.FS_createPath=q.createPath,s.FS_createDataFile=q.createDataFile,s.FS_createPreloadedFile=q.createPreloadedFile,s.FS_createLazyFile=q.createLazyFile,s.FS_createDevice=q.createDevice,s.FS_unlink=q.unlink,hm=s.InternalError=hu(Error,"InternalError"),Ih(),al=s.BindingError=hu(Error,"BindingError"),sr(),s_(),Ua(),wE=s.UnboundTypeError=hu(Error,"UnboundTypeError"),vd();function Dh(I,M,L){var W=L>0?L:de(I)+1,te=new Array(W),ge=ve(I,te,0,te.length);return M&&(te.length=ge),te}Re.push({func:function(){GE()}});var vu={x:Fr,A:cu,P:fn,Q:Ha,U:md,s:L0,S:Sh,v:RE,u:fu,d:DE,R:c_,C:PE,h:u_,m:NE,k:LE,D:L3,w:h_,V:ca,g:FE,t:dm,j:p_,T:d_,q:F3,W:U3,b:AE,F:UE,n:g_,l:mu,N:B0,E:B3,y:k3,f:G3,r:Td,p:wo,i:v_,e:V3,c:z3,M:W3,I:gu,o:Ye,K:$n,L:$i,B:BE,O:q3,G:ka,z:G0,a:G,H:Y3,J:z0},kE=Qe(),GE=s.___wasm_call_ctors=function(){return(GE=s.___wasm_call_ctors=s.asm.Y).apply(null,arguments)},q0=s._main=function(){return(q0=s._main=s.asm.Z).apply(null,arguments)},fm=s._malloc=function(){return(fm=s._malloc=s.asm._).apply(null,arguments)},VE=s.___getTypeName=function(){return(VE=s.___getTypeName=s.asm.$).apply(null,arguments)},Y0=s.___embind_register_native_and_builtin_types=function(){return(Y0=s.___embind_register_native_and_builtin_types=s.asm.aa).apply(null,arguments)},zE=s.___errno_location=function(){return(zE=s.___errno_location=s.asm.ba).apply(null,arguments)},ua=s._free=function(){return(ua=s._free=s.asm.ca).apply(null,arguments)},Ch=s.dynCall_jiji=function(){return(Ch=s.dynCall_jiji=s.asm.da).apply(null,arguments)},X0=s.dynCall_viijii=function(){return(X0=s.dynCall_viijii=s.asm.ea).apply(null,arguments)},X3=s.dynCall_iiiiiijj=function(){return(X3=s.dynCall_iiiiiijj=s.asm.fa).apply(null,arguments)},$3=s.dynCall_iiiiij=function(){return($3=s.dynCall_iiiiij=s.asm.ga).apply(null,arguments)},Z3=s.dynCall_iiiiijj=function(){return(Z3=s.dynCall_iiiiijj=s.asm.ha).apply(null,arguments)};s.addRunDependency=Pi,s.removeRunDependency=Fn,s.FS_createPath=q.createPath,s.FS_createDataFile=q.createDataFile,s.FS_createPreloadedFile=q.createPreloadedFile,s.FS_createLazyFile=q.createLazyFile,s.FS_createDevice=q.createDevice,s.FS_unlink=q.unlink,s.FS=q;var Ah;function bd(I){this.name="ExitStatus",this.message="Program terminated with exit("+I+")",this.status=I}var jE=!1;Rr=function I(){Ah||$0(),Ah||(Rr=I)};function K3(I){var M=s._main,L=0,W=0;try{var te=M(L,W);J3(te,!0)}catch(Ee){if(Ee instanceof bd)return;if(Ee=="unwind"){k=!0;return}else{var ge=Ee;Ee&&typeof Ee=="object"&&Ee.stack&&(ge=[Ee,Ee.stack]),F("exception thrown: "+ge),p(1,Ee)}}finally{jE=!0}}function $0(I){if(I=I||u,_t>0||(Dt(),_t>0))return;function M(){Ah||(Ah=!0,s.calledRun=!0,!U&&(cr(),Xt(),a(s),s.onRuntimeInitialized&&s.onRuntimeInitialized(),E_&&K3(I),Ae()))}s.setStatus?(s.setStatus("Running..."),setTimeout(function(){setTimeout(function(){s.setStatus("")},1),M()},1)):M()}s.run=$0;function J3(I,M){M&&k&&I===0||(k||(j=I,gr(),s.onExit&&s.onExit(I),U=!0),p(I,new bd(I)))}if(s.preInit)for(typeof s.preInit=="function"&&(s.preInit=[s.preInit]);s.preInit.length>0;)s.preInit.pop()();var E_=!0;return s.noInitialRun&&(E_=!1),k=!0,$0(),n.ready}}();typeof t=="object"&&typeof r=="object"?r.exports=e:typeof define=="function"&&define.amd?define([],function(){return e}):typeof t=="object"&&(t.WebIFCWasm=e)}}),UTt=3821786052,BTt=2296667514,kTt=3630933823,GTt=4288193352,VTt=2874132201,zTt=618182010,jTt=1635779807,WTt=2603310189,qTt=3406155212,YTt=1634111441,XTt=177149247,$Tt=1411407467,ZTt=3352864051,KTt=2056796094,JTt=1871374353,QTt=3087945054,eEt=3001207471,tEt=325726236,rEt=749761778,iEt=3199563722,nEt=2483840362,sEt=3379348081,aEt=3239324667,oEt=4263986512,lEt=53199957,cEt=2029264950,uEt=3512275521,hEt=1674181508,pEt=669184980,dEt=639542469,fEt=411424972,mEt=130549933,gEt=3869604511,vEt=3798115385,yEt=1310608509,TEt=2705031697,EEt=3460190687,bEt=3207858831,xEt=277319702,IEt=1532957894,SEt=4261334040,_Et=3125803723,wEt=2740243338,REt=1967976161,MEt=2461110595,DEt=2887950389,CEt=167062518,AEt=753842376,OEt=2906023776,PEt=819618141,NEt=4196446775,LEt=3649138523,FEt=616511568,HEt=1334484129,UEt=32344328,BEt=231477066,kEt=3649129432,GEt=2736907675,VEt=4037036970,zEt=1136057603,jEt=1560379544,WEt=3367102660,qEt=1387855156,YEt=2069777674,XEt=1260505505,$Et=4182860854,ZEt=2581212453,KEt=2713105998,JEt=644574406,QEt=963979645,e1t=4031249490,t1t=3299480353,r1t=2979338954,i1t=39481116,n1t=1095909175,s1t=1909888760,a1t=1950629157,o1t=3124254112,l1t=1177604601,c1t=2938176219,u1t=2188180465,h1t=2898889636,p1t=635142910,d1t=395041908,f1t=3758799889,m1t=3293546465,g1t=1051757585,v1t=2674252688,y1t=4217484030,T1t=1285652485,E1t=3999819293,b1t=3203706013,x1t=1123145078,I1t=574549367,S1t=1675464909,_1t=2059837836,w1t=59481748,R1t=3749851601,M1t=3486308946,D1t=3331915920,C1t=1416205885,A1t=3150382593,O1t=3902619387,P1t=2951183804,N1t=3296154744,L1t=2197970202,F1t=2611217952,H1t=2937912522,U1t=1383045692,B1t=1062206242,k1t=1677625105,G1t=3893394355,V1t=747523909,z1t=647927063,j1t=2205249479,W1t=639361253,q1t=2301859152,Y1t=776857604,X1t=3285139300,$1t=3264961684,Z1t=843113511,K1t=905975707,J1t=300633059,Q1t=3221913625,ebt=400855858,tbt=2542286263,rbt=3875453745,ibt=3732776249,nbt=15328376,sbt=2485617015,abt=1485152156,obt=3571504051,lbt=3850581409,cbt=2272882330,ubt=2816379211,hbt=2510884976,pbt=370225590,dbt=1981873012,fbt=2859738748,mbt=45288368,gbt=2614616156,vbt=2732653382,ybt=775493141,Tbt=1959218052,Ebt=3898045240,bbt=2185764099,xbt=1060000209,Ibt=4105962743,Sbt=488727124,_bt=1525564444,wbt=2559216714,Rbt=2574617495,Mbt=3419103109,Dbt=3050246964,Cbt=3293443760,Abt=25142252,Obt=578613899,Pbt=2889183280,Nbt=2713554722,Lbt=4136498852,Fbt=335055490,Hbt=3640358203,Ubt=2954562838,Bbt=1785450214,kbt=1466758467,Gbt=3895139033,Vbt=1419761937,zbt=602808272,jbt=1973544240,Wbt=1916426348,qbt=3295246426,Ybt=1815067380,Xbt=2506170314,$bt=2147822146,Zbt=539742890,Kbt=3495092785,Jbt=1457835157,Qbt=2601014836,ext=2827736869,txt=2629017746,rxt=1186437898,ixt=3800577675,nxt=1105321065,sxt=2367409068,axt=3510044353,oxt=1213902940,lxt=4074379575,cxt=3961806047,uxt=3426335179,hxt=1306400036,pxt=3632507154,dxt=1765591967,fxt=1045800335,mxt=2949456006,gxt=32440307,vxt=1335981549,yxt=2635815018,Txt=1945343521,Ext=1052013943,bxt=1599208980,xxt=562808652,Ixt=1062813311,Sxt=2063403501,_xt=1945004755,wxt=3256556792,Rxt=3040386961,Mxt=3849074793,Dxt=3041715199,Cxt=3205830791,Axt=1154170062,Oxt=770865208,Pxt=3732053477,Nxt=395920057,Lxt=2963535650,Fxt=1714330368,Hxt=3242481149,Uxt=526551008,Bxt=2323601079,kxt=445594917,Gxt=4006246654,Vxt=342316401,zxt=869906466,jxt=3518393246,Wxt=3760055223,qxt=1360408905,Yxt=2030761528,Xxt=3900360178,$xt=476780140,Zxt=1472233963,Kxt=1904799276,Jxt=663422040,Qxt=862014818,eIt=2417008758,tIt=3310460725,rIt=3277789161,iIt=264262732,nIt=1534661035,sIt=402227799,aIt=1217240411,oIt=1003880860,lIt=712377611,cIt=1758889154,uIt=4123344466,hIt=2397081782,pIt=1623761950,dIt=2590856083,fIt=1883228015,mIt=339256511,gIt=2777663545,vIt=1704287377,yIt=2835456948,TIt=1658829314,EIt=2107101300,bIt=2814081492,xIt=132023988,IIt=3747195512,SIt=3174744832,_It=484807127,wIt=3390157468,RIt=4148101412,MIt=211053100,DIt=4024345920,CIt=297599258,AIt=4294318154,OIt=3200245327,PIt=1437805879,NIt=1209101575,LIt=2853485674,FIt=2242383968,HIt=1040185647,UIt=3548104201,BIt=477187591,kIt=2804161546,GIt=2556980723,VIt=2047409740,zIt=1809719519,jIt=803316827,WIt=3008276851,qIt=807026263,YIt=3737207727,XIt=24185140,$It=1310830890,ZIt=4219587988,KIt=3415622556,JIt=346874300,QIt=647756555,eSt=2489546625,tSt=2827207264,rSt=2143335405,iSt=1287392070,nSt=738692330,sSt=374418227,aSt=315944413,oSt=819412036,lSt=1810631287,cSt=1426591983,uSt=4222183408,hSt=2652556860,pSt=2058353004,dSt=3907093117,fSt=4278956645,mSt=3198132628,gSt=182646315,vSt=4037862832,ySt=2188021234,TSt=3815607619,ESt=3132237377,bSt=1482959167,xSt=987401354,ISt=1834744321,SSt=707683696,_St=1339347760,wSt=2223149337,RSt=2297155007,MSt=3508470533,DSt=3009222698,CSt=900683007,ASt=1893162501,OSt=263784265,PSt=4238390223,NSt=1509553395,LSt=1268542332,FSt=3493046030,HSt=4095422895,USt=987898635,BSt=3448662350,kSt=2453401579,GSt=4142052618,VSt=3590301190,zSt=3009204131,jSt=852622518,WSt=178086475,qSt=2706460486,YSt=812098782,XSt=3319311131,$St=1251058090,ZSt=2068733104,KSt=1806887404,JSt=1484403080,QSt=3905492369,e_t=3570813810,t_t=2571569899,r_t=178912537,i_t=2294589976,n_t=1437953363,s_t=2133299955,a_t=4175244083,o_t=3946677679,l_t=3113134337,c_t=2391368822,u_t=3741457305,h_t=3020489413,p_t=2176052936,d_t=4288270099,f_t=572779678,m_t=3827777499,g_t=428585644,v_t=1585845231,y_t=76236018,T_t=1051575348,E_t=2655187982,b_t=3452421091,x_t=4162380809,I_t=629592764,S_t=1161773419,__t=1566485204,w_t=1402838566,R_t=125510826,M_t=2604431987,D_t=4266656042,C_t=1520743889,A_t=3422422726,O_t=1281925730,P_t=3092502836,N_t=388784114,L_t=1154579445,F_t=2624227202,H_t=1008929658,U_t=1425443689,B_t=3057273783,k_t=2347385850,G_t=1838606355,V_t=1847130766,z_t=3708119e3,j_t=2852063980,W_t=760658860,q_t=2022407955,Y_t=248100487,X_t=3303938423,$_t=1303795690,Z_t=1847252529,K_t=2199411900,J_t=2235152071,Q_t=164193824,ewt=3079605661,twt=3404854881,rwt=552965576,iwt=3265635763,nwt=853536259,swt=1507914824,awt=2597039031,owt=377706215,lwt=2108223431,cwt=1437502449,uwt=1114901282,hwt=1073191201,pwt=1911478936,dwt=3181161470,fwt=3368373690,mwt=2998442950,gwt=2706619895,vwt=2474470126,ywt=977012517,Twt=1918398963,Ewt=3888040117,bwt=219451334,xwt=3701648758,Iwt=2251480897,Swt=4143007308,_wt=590820931,wwt=3388369263,Rwt=3505215534,Mwt=2485787929,Dwt=2665983363,Cwt=3588315303,Awt=3079942009,Owt=4251960020,Pwt=1411181986,Nwt=643959842,Lwt=1029017970,Fwt=144952367,Hwt=3694346114,Uwt=2837617999,Bwt=1207048766,kwt=2529465313,Gwt=2519244187,Vwt=1682466193,zwt=2382730787,jwt=3566463478,Wwt=3327091369,qwt=2077209135,Ywt=101040310,Xwt=3021840470,$wt=2483315170,Zwt=2226359599,Kwt=1687234759,Jwt=1158309216,Qwt=310824031,eRt=804291784,tRt=3612865200,rRt=4231323485,iRt=597895409,nRt=2004835150,sRt=603570806,aRt=1663979128,oRt=220341763,lRt=3171933400,cRt=1156407060,uRt=4017108033,hRt=2067069095,pRt=4022376103,dRt=1423911732,fRt=2924175390,mRt=2775532180,gRt=2839578677,vRt=3724593414,yRt=3740093272,TRt=1946335990,ERt=3355820592,bRt=759155922,xRt=2559016684,IRt=3727388367,SRt=3778827333,_Rt=3967405729,wRt=1775413392,RRt=677532197,MRt=2022622350,DRt=1304840413,CRt=3119450353,ARt=2417041796,ORt=2744685151,PRt=569719735,NRt=2945172077,LRt=4208778838,FRt=673634403,HRt=2095639259,URt=3958567839,BRt=2802850158,tA=103090709,kRt=653396225,GRt=2904328755,VRt=3843373140,zRt=3651124850,jRt=2598011224,WRt=986844984,qRt=871118103,YRt=1680319473,XRt=148025276,$Rt=4166981789,ZRt=3710013099,KRt=2752243245,JRt=941946838,QRt=1451395588,eMt=3357820518,tMt=492091185,rMt=3650150729,iMt=110355661,nMt=3521284610,sMt=1482703590,aMt=738039164,oMt=2295281155,lMt=655969474,cMt=1842657554,uMt=3219374653,hMt=90941305,pMt=2250791053,dMt=2044713172,fMt=2093928680,mMt=931644368,gMt=2090586900,vMt=3252649465,yMt=2405470396,TMt=825690147,EMt=2262370178,bMt=2893384427,xMt=3024970846,IMt=3283111854,SMt=2324767716,_Mt=1469900589,wMt=1232101972,RMt=683857671,MMt=2770003689,DMt=3615266464,CMt=2798486643,AMt=3454111270,OMt=3915482550,PMt=2433181523,NMt=4021432810,LMt=3413951693,FMt=1580146022,HMt=3765753017,UMt=979691226,BMt=2572171363,kMt=3027567501,GMt=964333572,VMt=2320036040,zMt=2310774935,Ck=160246688,jMt=3939117080,WMt=1683148259,qMt=2495723537,YMt=1307041759,XMt=1027710054,$Mt=4278684876,ZMt=2857406711,KMt=205026976,JMt=1865459582,QMt=4095574036,eDt=919958153,tDt=2728634034,rDt=982818633,iDt=3840914261,Ak=2655215786,nDt=826625072,sDt=1204542856,aDt=3945020480,oDt=4201705270,lDt=3190031847,cDt=2127690289,uDt=1638771189,hDt=504942748,pDt=3678494232,Ok=3242617779,dDt=886880790,fDt=2802773753,mDt=2565941209,gDt=2551354335,vDt=693640335,yDt=1462361463,Pk=4186316022,TDt=307848117,Nk=781010003,EDt=3940055652,bDt=279856033,xDt=427948657,IDt=3268803585,SDt=1441486842,_Dt=750771296,wDt=1245217292,RDt=4122056220,MDt=366585022,DDt=3451746338,CDt=3523091289,ADt=1521410863,ODt=1401173127,PDt=478536968,NDt=816062949,LDt=1076942058,FDt=3377609919,HDt=3008791417,UDt=1660063152,BDt=2914609552,kDt=2943643501,GDt=1608871552,VDt=2439245199,zDt=1042787934,jDt=1856042241,WDt=3243963512,qDt=4158566097,YDt=3626867408,XDt=2016517767,$Dt=2781568857,ZDt=2341007311,KDt=2778083089,JDt=448429030,QDt=3053780830,eCt=1768891740,tCt=1054537805,rCt=2157484638,iCt=2042790032,nCt=4165799628,sCt=1862484736,aCt=1290935644,oCt=1509187699,lCt=4086658281,cCt=1783015770,uCt=1329646415,hCt=4074543187,pCt=867548509,dCt=3982875396,fCt=4240577450,mCt=4124623270,gCt=3692461612,vCt=3663146110,yCt=4097777520,TCt=1529196076,ECt=3127900445,bCt=3027962421,xCt=2533589738,ICt=2609359061,SCt=3420628829,_Ct=1072016465,wCt=723233188,RCt=3856911033,MCt=1999602285,DCt=1305183839,CCt=3812236995,ACt=1412071761,OCt=710998568,PCt=2706606064,NCt=3893378262,LCt=463610769,FCt=2481509218,HCt=451544542,UCt=4015995234,BCt=1404847402,kCt=3112655638,GCt=331165859,VCt=4252922144,zCt=1039846685,jCt=338393293,WCt=682877961,qCt=3544373492,YCt=2515109513,XCt=1179482911,$Ct=2273995522,ZCt=1004757350,KCt=4243806635,JCt=214636428,QCt=2445595289,eAt=2757150158,tAt=3136571912,rAt=1807405624,iAt=2162789131,nAt=385403989,sAt=3478079324,aAt=1252848954,oAt=1595516126,lAt=609421318,cAt=2668620305,uAt=2473145415,hAt=1973038258,pAt=1597423693,dAt=1190533807,fAt=2525727697,mAt=3408363356,gAt=530289379,vAt=1621171031,yAt=2082059205,TAt=734778138,EAt=1235345126,bAt=3689010777,xAt=2986769608,IAt=3657597509,SAt=1975003073,_At=3979015343,wAt=2218152070,RAt=603775116,MAt=2830218821,DAt=3958052878,CAt=3049322572,AAt=148013059,OAt=4095615324,PAt=2233826070,NAt=2513912981,LAt=699246055,FAt=2028607225,HAt=3101698114,UAt=2809605785,BAt=4124788165,kAt=2934153892,GAt=1300840506,VAt=3303107099,zAt=1607154358,jAt=1878645084,WAt=846575682,qAt=1351298697,YAt=626085974,XAt=2247615214,$At=1260650574,ZAt=1096409881,KAt=230924584,JAt=1162798199,QAt=2315554128,eOt=2254336722,tOt=413509423,rOt=1580310250,iOt=3071757647,nOt=985171141,sOt=2043862942,aOt=531007025,oOt=812556717,lOt=5716631,cOt=3473067441,uOt=1549132990,hOt=2771591690,pOt=3206491090,dOt=912023232,fOt=3824725483,mOt=2347447852,gOt=3081323446,vOt=3663046924,yOt=2281632017,TOt=2415094496,EOt=2387106220,bOt=901063453,xOt=4282788508,IOt=3124975700,SOt=1447204868,_Ot=1983826977,wOt=2636378356,ROt=1640371178,MOt=280115917,DOt=1742049831,COt=2552916305,AOt=1210645708,OOt=3611470254,POt=1199560280,NOt=3101149627,LOt=581633288,FOt=1377556343,HOt=1735638870,UOt=1935646853,BOt=3825984169,kOt=1692211062,GOt=2595432518,VOt=1620046519,zOt=2097647324,jOt=2715220739,WOt=2916149573,qOt=1229763772,YOt=3593883385,XOt=3026737570,$Ot=1600972822,ZOt=1628702193,KOt=3736923433,JOt=2347495698,QOt=3698973494,e3t=427810014,t3t=180925521,r3t=630975310,i3t=3179687236,n3t=4292641817,s3t=1911125066,a3t=4207607924,o3t=728799441,l3t=1417489154,c3t=2799835756,u3t=2759199220,h3t=1907098498,p3t=1530820697,d3t=3956297820,f3t=2391383451,m3t=3313531582,g3t=2769231204,v3t=891718957,y3t=926996030,T3t=2391406946,E3t=4156078855,b3t=3512223829,x3t=1898987631,I3t=4237592921,S3t=1133259667,_3t=3304561284,w3t=336235671,R3t=512836454,M3t=486154966,D3t=1299126871,C3t=4009809668,A3t=4088093105,O3t=1028945134,P3t=4218914973,N3t=3342526732,L3t=1236880293,F3t=2543172580,H3t=1033361043;var O={};O[UTt]=t=>zde.FromTape(t.ID,t.type,t.arguments);O[BTt]=t=>jde.FromTape(t.ID,t.type,t.arguments);O[kTt]=t=>Wde.FromTape(t.ID,t.type,t.arguments);O[GTt]=t=>qde.FromTape(t.ID,t.type,t.arguments);O[VTt]=t=>Yde.FromTape(t.ID,t.type,t.arguments);O[zTt]=t=>Xde.FromTape(t.ID,t.type,t.arguments);O[jTt]=t=>$de.FromTape(t.ID,t.type,t.arguments);O[WTt]=t=>Zde.FromTape(t.ID,t.type,t.arguments);O[qTt]=t=>Kde.FromTape(t.ID,t.type,t.arguments);O[YTt]=t=>Jde.FromTape(t.ID,t.type,t.arguments);O[XTt]=t=>Qde.FromTape(t.ID,t.type,t.arguments);O[$Tt]=t=>efe.FromTape(t.ID,t.type,t.arguments);O[ZTt]=t=>tfe.FromTape(t.ID,t.type,t.arguments);O[KTt]=t=>rfe.FromTape(t.ID,t.type,t.arguments);O[JTt]=t=>ife.FromTape(t.ID,t.type,t.arguments);O[QTt]=t=>nfe.FromTape(t.ID,t.type,t.arguments);O[eEt]=t=>sfe.FromTape(t.ID,t.type,t.arguments);O[tEt]=t=>afe.FromTape(t.ID,t.type,t.arguments);O[rEt]=t=>ofe.FromTape(t.ID,t.type,t.arguments);O[iEt]=t=>lfe.FromTape(t.ID,t.type,t.arguments);O[nEt]=t=>cfe.FromTape(t.ID,t.type,t.arguments);O[sEt]=t=>ufe.FromTape(t.ID,t.type,t.arguments);O[aEt]=t=>hfe.FromTape(t.ID,t.type,t.arguments);O[oEt]=t=>pfe.FromTape(t.ID,t.type,t.arguments);O[lEt]=t=>dfe.FromTape(t.ID,t.type,t.arguments);O[cEt]=t=>ffe.FromTape(t.ID,t.type,t.arguments);O[uEt]=t=>mfe.FromTape(t.ID,t.type,t.arguments);O[hEt]=t=>gfe.FromTape(t.ID,t.type,t.arguments);O[pEt]=t=>vfe.FromTape(t.ID,t.type,t.arguments);O[dEt]=t=>yfe.FromTape(t.ID,t.type,t.arguments);O[fEt]=t=>Tfe.FromTape(t.ID,t.type,t.arguments);O[mEt]=t=>Efe.FromTape(t.ID,t.type,t.arguments);O[gEt]=t=>bfe.FromTape(t.ID,t.type,t.arguments);O[vEt]=t=>xfe.FromTape(t.ID,t.type,t.arguments);O[yEt]=t=>Ife.FromTape(t.ID,t.type,t.arguments);O[TEt]=t=>Sfe.FromTape(t.ID,t.type,t.arguments);O[EEt]=t=>_fe.FromTape(t.ID,t.type,t.arguments);O[bEt]=t=>wfe.FromTape(t.ID,t.type,t.arguments);O[xEt]=t=>Rfe.FromTape(t.ID,t.type,t.arguments);O[IEt]=t=>Mfe.FromTape(t.ID,t.type,t.arguments);O[SEt]=t=>Dfe.FromTape(t.ID,t.type,t.arguments);O[_Et]=t=>Cfe.FromTape(t.ID,t.type,t.arguments);O[wEt]=t=>Afe.FromTape(t.ID,t.type,t.arguments);O[REt]=t=>Ofe.FromTape(t.ID,t.type,t.arguments);O[MEt]=t=>Pfe.FromTape(t.ID,t.type,t.arguments);O[DEt]=t=>Nfe.FromTape(t.ID,t.type,t.arguments);O[CEt]=t=>Lfe.FromTape(t.ID,t.type,t.arguments);O[AEt]=t=>Ffe.FromTape(t.ID,t.type,t.arguments);O[OEt]=t=>Hfe.FromTape(t.ID,t.type,t.arguments);O[PEt]=t=>Ufe.FromTape(t.ID,t.type,t.arguments);O[NEt]=t=>Bfe.FromTape(t.ID,t.type,t.arguments);O[LEt]=t=>kfe.FromTape(t.ID,t.type,t.arguments);O[FEt]=t=>Gfe.FromTape(t.ID,t.type,t.arguments);O[HEt]=t=>Vfe.FromTape(t.ID,t.type,t.arguments);O[UEt]=t=>zfe.FromTape(t.ID,t.type,t.arguments);O[BEt]=t=>jfe.FromTape(t.ID,t.type,t.arguments);O[kEt]=t=>Wfe.FromTape(t.ID,t.type,t.arguments);O[GEt]=t=>qfe.FromTape(t.ID,t.type,t.arguments);O[VEt]=t=>Yfe.FromTape(t.ID,t.type,t.arguments);O[zEt]=t=>Xfe.FromTape(t.ID,t.type,t.arguments);O[jEt]=t=>$fe.FromTape(t.ID,t.type,t.arguments);O[WEt]=t=>Zfe.FromTape(t.ID,t.type,t.arguments);O[qEt]=t=>Kfe.FromTape(t.ID,t.type,t.arguments);O[YEt]=t=>Jfe.FromTape(t.ID,t.type,t.arguments);O[XEt]=t=>Qfe.FromTape(t.ID,t.type,t.arguments);O[$Et]=t=>eme.FromTape(t.ID,t.type,t.arguments);O[ZEt]=t=>tme.FromTape(t.ID,t.type,t.arguments);O[KEt]=t=>rme.FromTape(t.ID,t.type,t.arguments);O[JEt]=t=>ime.FromTape(t.ID,t.type,t.arguments);O[QEt]=t=>nme.FromTape(t.ID,t.type,t.arguments);O[e1t]=t=>sme.FromTape(t.ID,t.type,t.arguments);O[t1t]=t=>ame.FromTape(t.ID,t.type,t.arguments);O[r1t]=t=>ome.FromTape(t.ID,t.type,t.arguments);O[i1t]=t=>lme.FromTape(t.ID,t.type,t.arguments);O[n1t]=t=>cme.FromTape(t.ID,t.type,t.arguments);O[s1t]=t=>ume.FromTape(t.ID,t.type,t.arguments);O[a1t]=t=>hme.FromTape(t.ID,t.type,t.arguments);O[o1t]=t=>pme.FromTape(t.ID,t.type,t.arguments);O[l1t]=t=>dme.FromTape(t.ID,t.type,t.arguments);O[c1t]=t=>fme.FromTape(t.ID,t.type,t.arguments);O[u1t]=t=>mme.FromTape(t.ID,t.type,t.arguments);O[h1t]=t=>gme.FromTape(t.ID,t.type,t.arguments);O[p1t]=t=>vme.FromTape(t.ID,t.type,t.arguments);O[d1t]=t=>yme.FromTape(t.ID,t.type,t.arguments);O[f1t]=t=>Tme.FromTape(t.ID,t.type,t.arguments);O[m1t]=t=>Eme.FromTape(t.ID,t.type,t.arguments);O[g1t]=t=>bme.FromTape(t.ID,t.type,t.arguments);O[v1t]=t=>xme.FromTape(t.ID,t.type,t.arguments);O[y1t]=t=>Ime.FromTape(t.ID,t.type,t.arguments);O[T1t]=t=>Sme.FromTape(t.ID,t.type,t.arguments);O[E1t]=t=>_me.FromTape(t.ID,t.type,t.arguments);O[b1t]=t=>wme.FromTape(t.ID,t.type,t.arguments);O[x1t]=t=>Rme.FromTape(t.ID,t.type,t.arguments);O[I1t]=t=>Mme.FromTape(t.ID,t.type,t.arguments);O[S1t]=t=>Dme.FromTape(t.ID,t.type,t.arguments);O[_1t]=t=>Cme.FromTape(t.ID,t.type,t.arguments);O[w1t]=t=>Ame.FromTape(t.ID,t.type,t.arguments);O[R1t]=t=>Ome.FromTape(t.ID,t.type,t.arguments);O[M1t]=t=>Pme.FromTape(t.ID,t.type,t.arguments);O[D1t]=t=>Nme.FromTape(t.ID,t.type,t.arguments);O[C1t]=t=>Lme.FromTape(t.ID,t.type,t.arguments);O[A1t]=t=>Fme.FromTape(t.ID,t.type,t.arguments);O[O1t]=t=>Hme.FromTape(t.ID,t.type,t.arguments);O[P1t]=t=>Ume.FromTape(t.ID,t.type,t.arguments);O[N1t]=t=>Bme.FromTape(t.ID,t.type,t.arguments);O[L1t]=t=>kme.FromTape(t.ID,t.type,t.arguments);O[F1t]=t=>Gme.FromTape(t.ID,t.type,t.arguments);O[H1t]=t=>Vme.FromTape(t.ID,t.type,t.arguments);O[U1t]=t=>zme.FromTape(t.ID,t.type,t.arguments);O[B1t]=t=>jme.FromTape(t.ID,t.type,t.arguments);O[k1t]=t=>Wme.FromTape(t.ID,t.type,t.arguments);O[G1t]=t=>qme.FromTape(t.ID,t.type,t.arguments);O[V1t]=t=>Yme.FromTape(t.ID,t.type,t.arguments);O[z1t]=t=>Xme.FromTape(t.ID,t.type,t.arguments);O[j1t]=t=>$me.FromTape(t.ID,t.type,t.arguments);O[W1t]=t=>Zme.FromTape(t.ID,t.type,t.arguments);O[q1t]=t=>Kme.FromTape(t.ID,t.type,t.arguments);O[Y1t]=t=>Jme.FromTape(t.ID,t.type,t.arguments);O[X1t]=t=>Qme.FromTape(t.ID,t.type,t.arguments);O[$1t]=t=>ege.FromTape(t.ID,t.type,t.arguments);O[Z1t]=t=>tge.FromTape(t.ID,t.type,t.arguments);O[K1t]=t=>rge.FromTape(t.ID,t.type,t.arguments);O[J1t]=t=>ige.FromTape(t.ID,t.type,t.arguments);O[Q1t]=t=>nge.FromTape(t.ID,t.type,t.arguments);O[ebt]=t=>sge.FromTape(t.ID,t.type,t.arguments);O[tbt]=t=>age.FromTape(t.ID,t.type,t.arguments);O[rbt]=t=>oge.FromTape(t.ID,t.type,t.arguments);O[ibt]=t=>lge.FromTape(t.ID,t.type,t.arguments);O[nbt]=t=>cge.FromTape(t.ID,t.type,t.arguments);O[sbt]=t=>uge.FromTape(t.ID,t.type,t.arguments);O[abt]=t=>hge.FromTape(t.ID,t.type,t.arguments);O[obt]=t=>pge.FromTape(t.ID,t.type,t.arguments);O[lbt]=t=>dge.FromTape(t.ID,t.type,t.arguments);O[cbt]=t=>fge.FromTape(t.ID,t.type,t.arguments);O[ubt]=t=>mge.FromTape(t.ID,t.type,t.arguments);O[hbt]=t=>gge.FromTape(t.ID,t.type,t.arguments);O[pbt]=t=>vge.FromTape(t.ID,t.type,t.arguments);O[dbt]=t=>yge.FromTape(t.ID,t.type,t.arguments);O[fbt]=t=>Tge.FromTape(t.ID,t.type,t.arguments);O[mbt]=t=>Ege.FromTape(t.ID,t.type,t.arguments);O[gbt]=t=>bge.FromTape(t.ID,t.type,t.arguments);O[vbt]=t=>xge.FromTape(t.ID,t.type,t.arguments);O[ybt]=t=>Ige.FromTape(t.ID,t.type,t.arguments);O[Tbt]=t=>Sge.FromTape(t.ID,t.type,t.arguments);O[Ebt]=t=>_ge.FromTape(t.ID,t.type,t.arguments);O[bbt]=t=>wge.FromTape(t.ID,t.type,t.arguments);O[xbt]=t=>Rge.FromTape(t.ID,t.type,t.arguments);O[Ibt]=t=>Mge.FromTape(t.ID,t.type,t.arguments);O[Sbt]=t=>Dge.FromTape(t.ID,t.type,t.arguments);O[_bt]=t=>Cge.FromTape(t.ID,t.type,t.arguments);O[wbt]=t=>Age.FromTape(t.ID,t.type,t.arguments);O[Rbt]=t=>Oge.FromTape(t.ID,t.type,t.arguments);O[Mbt]=t=>Pge.FromTape(t.ID,t.type,t.arguments);O[Dbt]=t=>Nge.FromTape(t.ID,t.type,t.arguments);O[Cbt]=t=>Lge.FromTape(t.ID,t.type,t.arguments);O[Abt]=t=>Fge.FromTape(t.ID,t.type,t.arguments);O[Obt]=t=>Hge.FromTape(t.ID,t.type,t.arguments);O[Pbt]=t=>Uge.FromTape(t.ID,t.type,t.arguments);O[Nbt]=t=>Bge.FromTape(t.ID,t.type,t.arguments);O[Lbt]=t=>kge.FromTape(t.ID,t.type,t.arguments);O[Fbt]=t=>Gge.FromTape(t.ID,t.type,t.arguments);O[Hbt]=t=>Vge.FromTape(t.ID,t.type,t.arguments);O[Ubt]=t=>zge.FromTape(t.ID,t.type,t.arguments);O[Bbt]=t=>jge.FromTape(t.ID,t.type,t.arguments);O[kbt]=t=>Wge.FromTape(t.ID,t.type,t.arguments);O[Gbt]=t=>qge.FromTape(t.ID,t.type,t.arguments);O[Vbt]=t=>Yge.FromTape(t.ID,t.type,t.arguments);O[zbt]=t=>Xge.FromTape(t.ID,t.type,t.arguments);O[jbt]=t=>$ge.FromTape(t.ID,t.type,t.arguments);O[Wbt]=t=>Zge.FromTape(t.ID,t.type,t.arguments);O[qbt]=t=>Kge.FromTape(t.ID,t.type,t.arguments);O[Ybt]=t=>Jge.FromTape(t.ID,t.type,t.arguments);O[Xbt]=t=>Qge.FromTape(t.ID,t.type,t.arguments);O[$bt]=t=>e0e.FromTape(t.ID,t.type,t.arguments);O[Zbt]=t=>t0e.FromTape(t.ID,t.type,t.arguments);O[Kbt]=t=>r0e.FromTape(t.ID,t.type,t.arguments);O[Jbt]=t=>i0e.FromTape(t.ID,t.type,t.arguments);O[Qbt]=t=>n0e.FromTape(t.ID,t.type,t.arguments);O[ext]=t=>s0e.FromTape(t.ID,t.type,t.arguments);O[txt]=t=>a0e.FromTape(t.ID,t.type,t.arguments);O[rxt]=t=>o0e.FromTape(t.ID,t.type,t.arguments);O[ixt]=t=>l0e.FromTape(t.ID,t.type,t.arguments);O[nxt]=t=>c0e.FromTape(t.ID,t.type,t.arguments);O[sxt]=t=>u0e.FromTape(t.ID,t.type,t.arguments);O[axt]=t=>h0e.FromTape(t.ID,t.type,t.arguments);O[oxt]=t=>p0e.FromTape(t.ID,t.type,t.arguments);O[lxt]=t=>d0e.FromTape(t.ID,t.type,t.arguments);O[cxt]=t=>f0e.FromTape(t.ID,t.type,t.arguments);O[uxt]=t=>m0e.FromTape(t.ID,t.type,t.arguments);O[hxt]=t=>g0e.FromTape(t.ID,t.type,t.arguments);O[pxt]=t=>v0e.FromTape(t.ID,t.type,t.arguments);O[dxt]=t=>y0e.FromTape(t.ID,t.type,t.arguments);O[fxt]=t=>T0e.FromTape(t.ID,t.type,t.arguments);O[mxt]=t=>E0e.FromTape(t.ID,t.type,t.arguments);O[gxt]=t=>b0e.FromTape(t.ID,t.type,t.arguments);O[vxt]=t=>x0e.FromTape(t.ID,t.type,t.arguments);O[yxt]=t=>I0e.FromTape(t.ID,t.type,t.arguments);O[Txt]=t=>S0e.FromTape(t.ID,t.type,t.arguments);O[Ext]=t=>_0e.FromTape(t.ID,t.type,t.arguments);O[bxt]=t=>w0e.FromTape(t.ID,t.type,t.arguments);O[xxt]=t=>R0e.FromTape(t.ID,t.type,t.arguments);O[Ixt]=t=>M0e.FromTape(t.ID,t.type,t.arguments);O[Sxt]=t=>D0e.FromTape(t.ID,t.type,t.arguments);O[_xt]=t=>C0e.FromTape(t.ID,t.type,t.arguments);O[wxt]=t=>A0e.FromTape(t.ID,t.type,t.arguments);O[Rxt]=t=>O0e.FromTape(t.ID,t.type,t.arguments);O[Mxt]=t=>P0e.FromTape(t.ID,t.type,t.arguments);O[Dxt]=t=>N0e.FromTape(t.ID,t.type,t.arguments);O[Cxt]=t=>L0e.FromTape(t.ID,t.type,t.arguments);O[Axt]=t=>F0e.FromTape(t.ID,t.type,t.arguments);O[Oxt]=t=>H0e.FromTape(t.ID,t.type,t.arguments);O[Pxt]=t=>U0e.FromTape(t.ID,t.type,t.arguments);O[Nxt]=t=>B0e.FromTape(t.ID,t.type,t.arguments);O[Lxt]=t=>k0e.FromTape(t.ID,t.type,t.arguments);O[Fxt]=t=>G0e.FromTape(t.ID,t.type,t.arguments);O[Hxt]=t=>V0e.FromTape(t.ID,t.type,t.arguments);O[Uxt]=t=>z0e.FromTape(t.ID,t.type,t.arguments);O[Bxt]=t=>j0e.FromTape(t.ID,t.type,t.arguments);O[kxt]=t=>W0e.FromTape(t.ID,t.type,t.arguments);O[Gxt]=t=>q0e.FromTape(t.ID,t.type,t.arguments);O[Vxt]=t=>Y0e.FromTape(t.ID,t.type,t.arguments);O[zxt]=t=>X0e.FromTape(t.ID,t.type,t.arguments);O[jxt]=t=>$0e.FromTape(t.ID,t.type,t.arguments);O[Wxt]=t=>Z0e.FromTape(t.ID,t.type,t.arguments);O[qxt]=t=>K0e.FromTape(t.ID,t.type,t.arguments);O[Yxt]=t=>J0e.FromTape(t.ID,t.type,t.arguments);O[Xxt]=t=>Q0e.FromTape(t.ID,t.type,t.arguments);O[$xt]=t=>eve.FromTape(t.ID,t.type,t.arguments);O[Zxt]=t=>tve.FromTape(t.ID,t.type,t.arguments);O[Kxt]=t=>rve.FromTape(t.ID,t.type,t.arguments);O[Jxt]=t=>ive.FromTape(t.ID,t.type,t.arguments);O[Qxt]=t=>nve.FromTape(t.ID,t.type,t.arguments);O[eIt]=t=>sve.FromTape(t.ID,t.type,t.arguments);O[tIt]=t=>ave.FromTape(t.ID,t.type,t.arguments);O[rIt]=t=>ove.FromTape(t.ID,t.type,t.arguments);O[iIt]=t=>lve.FromTape(t.ID,t.type,t.arguments);O[nIt]=t=>cve.FromTape(t.ID,t.type,t.arguments);O[sIt]=t=>uve.FromTape(t.ID,t.type,t.arguments);O[aIt]=t=>hve.FromTape(t.ID,t.type,t.arguments);O[oIt]=t=>pve.FromTape(t.ID,t.type,t.arguments);O[lIt]=t=>dve.FromTape(t.ID,t.type,t.arguments);O[cIt]=t=>fve.FromTape(t.ID,t.type,t.arguments);O[uIt]=t=>mve.FromTape(t.ID,t.type,t.arguments);O[hIt]=t=>gve.FromTape(t.ID,t.type,t.arguments);O[pIt]=t=>vve.FromTape(t.ID,t.type,t.arguments);O[dIt]=t=>yve.FromTape(t.ID,t.type,t.arguments);O[fIt]=t=>Tve.FromTape(t.ID,t.type,t.arguments);O[mIt]=t=>Eve.FromTape(t.ID,t.type,t.arguments);O[gIt]=t=>bve.FromTape(t.ID,t.type,t.arguments);O[vIt]=t=>xve.FromTape(t.ID,t.type,t.arguments);O[yIt]=t=>Ive.FromTape(t.ID,t.type,t.arguments);O[TIt]=t=>Sve.FromTape(t.ID,t.type,t.arguments);O[EIt]=t=>_ve.FromTape(t.ID,t.type,t.arguments);O[bIt]=t=>wve.FromTape(t.ID,t.type,t.arguments);O[xIt]=t=>Rve.FromTape(t.ID,t.type,t.arguments);O[IIt]=t=>Mve.FromTape(t.ID,t.type,t.arguments);O[SIt]=t=>Dve.FromTape(t.ID,t.type,t.arguments);O[_It]=t=>Cve.FromTape(t.ID,t.type,t.arguments);O[wIt]=t=>Ave.FromTape(t.ID,t.type,t.arguments);O[RIt]=t=>Ove.FromTape(t.ID,t.type,t.arguments);O[MIt]=t=>Pve.FromTape(t.ID,t.type,t.arguments);O[DIt]=t=>Nve.FromTape(t.ID,t.type,t.arguments);O[CIt]=t=>Lve.FromTape(t.ID,t.type,t.arguments);O[AIt]=t=>Fve.FromTape(t.ID,t.type,t.arguments);O[OIt]=t=>Hve.FromTape(t.ID,t.type,t.arguments);O[PIt]=t=>Uve.FromTape(t.ID,t.type,t.arguments);O[NIt]=t=>Bve.FromTape(t.ID,t.type,t.arguments);O[LIt]=t=>kve.FromTape(t.ID,t.type,t.arguments);O[FIt]=t=>Gve.FromTape(t.ID,t.type,t.arguments);O[HIt]=t=>Vve.FromTape(t.ID,t.type,t.arguments);O[UIt]=t=>zve.FromTape(t.ID,t.type,t.arguments);O[BIt]=t=>jve.FromTape(t.ID,t.type,t.arguments);O[kIt]=t=>Wve.FromTape(t.ID,t.type,t.arguments);O[GIt]=t=>qve.FromTape(t.ID,t.type,t.arguments);O[VIt]=t=>Yve.FromTape(t.ID,t.type,t.arguments);O[zIt]=t=>Xve.FromTape(t.ID,t.type,t.arguments);O[jIt]=t=>$ve.FromTape(t.ID,t.type,t.arguments);O[WIt]=t=>Zve.FromTape(t.ID,t.type,t.arguments);O[qIt]=t=>Kve.FromTape(t.ID,t.type,t.arguments);O[YIt]=t=>Jve.FromTape(t.ID,t.type,t.arguments);O[XIt]=t=>Qve.FromTape(t.ID,t.type,t.arguments);O[$It]=t=>eye.FromTape(t.ID,t.type,t.arguments);O[ZIt]=t=>tye.FromTape(t.ID,t.type,t.arguments);O[KIt]=t=>rye.FromTape(t.ID,t.type,t.arguments);O[JIt]=t=>iye.FromTape(t.ID,t.type,t.arguments);O[QIt]=t=>nye.FromTape(t.ID,t.type,t.arguments);O[eSt]=t=>sye.FromTape(t.ID,t.type,t.arguments);O[tSt]=t=>aye.FromTape(t.ID,t.type,t.arguments);O[rSt]=t=>oye.FromTape(t.ID,t.type,t.arguments);O[iSt]=t=>lye.FromTape(t.ID,t.type,t.arguments);O[nSt]=t=>cye.FromTape(t.ID,t.type,t.arguments);O[sSt]=t=>uye.FromTape(t.ID,t.type,t.arguments);O[aSt]=t=>hye.FromTape(t.ID,t.type,t.arguments);O[oSt]=t=>pye.FromTape(t.ID,t.type,t.arguments);O[lSt]=t=>dye.FromTape(t.ID,t.type,t.arguments);O[cSt]=t=>fye.FromTape(t.ID,t.type,t.arguments);O[uSt]=t=>mye.FromTape(t.ID,t.type,t.arguments);O[hSt]=t=>gye.FromTape(t.ID,t.type,t.arguments);O[pSt]=t=>vye.FromTape(t.ID,t.type,t.arguments);O[dSt]=t=>yye.FromTape(t.ID,t.type,t.arguments);O[fSt]=t=>Tye.FromTape(t.ID,t.type,t.arguments);O[mSt]=t=>Eye.FromTape(t.ID,t.type,t.arguments);O[gSt]=t=>bye.FromTape(t.ID,t.type,t.arguments);O[vSt]=t=>xye.FromTape(t.ID,t.type,t.arguments);O[ySt]=t=>Iye.FromTape(t.ID,t.type,t.arguments);O[TSt]=t=>Sye.FromTape(t.ID,t.type,t.arguments);O[ESt]=t=>_ye.FromTape(t.ID,t.type,t.arguments);O[bSt]=t=>wye.FromTape(t.ID,t.type,t.arguments);O[xSt]=t=>Rye.FromTape(t.ID,t.type,t.arguments);O[ISt]=t=>Mye.FromTape(t.ID,t.type,t.arguments);O[SSt]=t=>Dye.FromTape(t.ID,t.type,t.arguments);O[_St]=t=>Cye.FromTape(t.ID,t.type,t.arguments);O[wSt]=t=>Aye.FromTape(t.ID,t.type,t.arguments);O[RSt]=t=>Oye.FromTape(t.ID,t.type,t.arguments);O[MSt]=t=>Pye.FromTape(t.ID,t.type,t.arguments);O[DSt]=t=>Nye.FromTape(t.ID,t.type,t.arguments);O[CSt]=t=>Lye.FromTape(t.ID,t.type,t.arguments);O[ASt]=t=>Fye.FromTape(t.ID,t.type,t.arguments);O[OSt]=t=>Hye.FromTape(t.ID,t.type,t.arguments);O[PSt]=t=>Uye.FromTape(t.ID,t.type,t.arguments);O[NSt]=t=>Bye.FromTape(t.ID,t.type,t.arguments);O[LSt]=t=>kye.FromTape(t.ID,t.type,t.arguments);O[FSt]=t=>Gye.FromTape(t.ID,t.type,t.arguments);O[HSt]=t=>Vye.FromTape(t.ID,t.type,t.arguments);O[USt]=t=>zye.FromTape(t.ID,t.type,t.arguments);O[BSt]=t=>jye.FromTape(t.ID,t.type,t.arguments);O[kSt]=t=>Wye.FromTape(t.ID,t.type,t.arguments);O[GSt]=t=>qye.FromTape(t.ID,t.type,t.arguments);O[VSt]=t=>Yye.FromTape(t.ID,t.type,t.arguments);O[zSt]=t=>Xye.FromTape(t.ID,t.type,t.arguments);O[jSt]=t=>$ye.FromTape(t.ID,t.type,t.arguments);O[WSt]=t=>Zye.FromTape(t.ID,t.type,t.arguments);O[qSt]=t=>Kye.FromTape(t.ID,t.type,t.arguments);O[YSt]=t=>Jye.FromTape(t.ID,t.type,t.arguments);O[XSt]=t=>Qye.FromTape(t.ID,t.type,t.arguments);O[$St]=t=>eTe.FromTape(t.ID,t.type,t.arguments);O[ZSt]=t=>tTe.FromTape(t.ID,t.type,t.arguments);O[KSt]=t=>rTe.FromTape(t.ID,t.type,t.arguments);O[JSt]=t=>iTe.FromTape(t.ID,t.type,t.arguments);O[QSt]=t=>nTe.FromTape(t.ID,t.type,t.arguments);O[e_t]=t=>sTe.FromTape(t.ID,t.type,t.arguments);O[t_t]=t=>aTe.FromTape(t.ID,t.type,t.arguments);O[r_t]=t=>oTe.FromTape(t.ID,t.type,t.arguments);O[i_t]=t=>lTe.FromTape(t.ID,t.type,t.arguments);O[n_t]=t=>cTe.FromTape(t.ID,t.type,t.arguments);O[s_t]=t=>uTe.FromTape(t.ID,t.type,t.arguments);O[a_t]=t=>hTe.FromTape(t.ID,t.type,t.arguments);O[o_t]=t=>pTe.FromTape(t.ID,t.type,t.arguments);O[l_t]=t=>dTe.FromTape(t.ID,t.type,t.arguments);O[c_t]=t=>fTe.FromTape(t.ID,t.type,t.arguments);O[u_t]=t=>mTe.FromTape(t.ID,t.type,t.arguments);O[h_t]=t=>gTe.FromTape(t.ID,t.type,t.arguments);O[p_t]=t=>vTe.FromTape(t.ID,t.type,t.arguments);O[d_t]=t=>yTe.FromTape(t.ID,t.type,t.arguments);O[f_t]=t=>TTe.FromTape(t.ID,t.type,t.arguments);O[m_t]=t=>ETe.FromTape(t.ID,t.type,t.arguments);O[g_t]=t=>bTe.FromTape(t.ID,t.type,t.arguments);O[v_t]=t=>xTe.FromTape(t.ID,t.type,t.arguments);O[y_t]=t=>ITe.FromTape(t.ID,t.type,t.arguments);O[T_t]=t=>STe.FromTape(t.ID,t.type,t.arguments);O[E_t]=t=>_Te.FromTape(t.ID,t.type,t.arguments);O[b_t]=t=>wTe.FromTape(t.ID,t.type,t.arguments);O[x_t]=t=>RTe.FromTape(t.ID,t.type,t.arguments);O[I_t]=t=>MTe.FromTape(t.ID,t.type,t.arguments);O[S_t]=t=>DTe.FromTape(t.ID,t.type,t.arguments);O[__t]=t=>CTe.FromTape(t.ID,t.type,t.arguments);O[w_t]=t=>ATe.FromTape(t.ID,t.type,t.arguments);O[R_t]=t=>OTe.FromTape(t.ID,t.type,t.arguments);O[M_t]=t=>PTe.FromTape(t.ID,t.type,t.arguments);O[D_t]=t=>NTe.FromTape(t.ID,t.type,t.arguments);O[C_t]=t=>LTe.FromTape(t.ID,t.type,t.arguments);O[A_t]=t=>FTe.FromTape(t.ID,t.type,t.arguments);O[O_t]=t=>HTe.FromTape(t.ID,t.type,t.arguments);O[P_t]=t=>UTe.FromTape(t.ID,t.type,t.arguments);O[N_t]=t=>BTe.FromTape(t.ID,t.type,t.arguments);O[L_t]=t=>kTe.FromTape(t.ID,t.type,t.arguments);O[F_t]=t=>GTe.FromTape(t.ID,t.type,t.arguments);O[H_t]=t=>VTe.FromTape(t.ID,t.type,t.arguments);O[U_t]=t=>zTe.FromTape(t.ID,t.type,t.arguments);O[B_t]=t=>jTe.FromTape(t.ID,t.type,t.arguments);O[k_t]=t=>WTe.FromTape(t.ID,t.type,t.arguments);O[G_t]=t=>qTe.FromTape(t.ID,t.type,t.arguments);O[V_t]=t=>YTe.FromTape(t.ID,t.type,t.arguments);O[z_t]=t=>XTe.FromTape(t.ID,t.type,t.arguments);O[j_t]=t=>$Te.FromTape(t.ID,t.type,t.arguments);O[W_t]=t=>ZTe.FromTape(t.ID,t.type,t.arguments);O[q_t]=t=>KTe.FromTape(t.ID,t.type,t.arguments);O[Y_t]=t=>JTe.FromTape(t.ID,t.type,t.arguments);O[X_t]=t=>QTe.FromTape(t.ID,t.type,t.arguments);O[$_t]=t=>eEe.FromTape(t.ID,t.type,t.arguments);O[Z_t]=t=>tEe.FromTape(t.ID,t.type,t.arguments);O[K_t]=t=>rEe.FromTape(t.ID,t.type,t.arguments);O[J_t]=t=>iEe.FromTape(t.ID,t.type,t.arguments);O[Q_t]=t=>nEe.FromTape(t.ID,t.type,t.arguments);O[ewt]=t=>sEe.FromTape(t.ID,t.type,t.arguments);O[twt]=t=>aEe.FromTape(t.ID,t.type,t.arguments);O[rwt]=t=>oEe.FromTape(t.ID,t.type,t.arguments);O[iwt]=t=>lEe.FromTape(t.ID,t.type,t.arguments);O[nwt]=t=>cEe.FromTape(t.ID,t.type,t.arguments);O[swt]=t=>uEe.FromTape(t.ID,t.type,t.arguments);O[awt]=t=>hEe.FromTape(t.ID,t.type,t.arguments);O[owt]=t=>pEe.FromTape(t.ID,t.type,t.arguments);O[lwt]=t=>dEe.FromTape(t.ID,t.type,t.arguments);O[cwt]=t=>fEe.FromTape(t.ID,t.type,t.arguments);O[uwt]=t=>mEe.FromTape(t.ID,t.type,t.arguments);O[hwt]=t=>gEe.FromTape(t.ID,t.type,t.arguments);O[pwt]=t=>vEe.FromTape(t.ID,t.type,t.arguments);O[dwt]=t=>yEe.FromTape(t.ID,t.type,t.arguments);O[fwt]=t=>TEe.FromTape(t.ID,t.type,t.arguments);O[mwt]=t=>EEe.FromTape(t.ID,t.type,t.arguments);O[gwt]=t=>bEe.FromTape(t.ID,t.type,t.arguments);O[vwt]=t=>xEe.FromTape(t.ID,t.type,t.arguments);O[ywt]=t=>IEe.FromTape(t.ID,t.type,t.arguments);O[Twt]=t=>SEe.FromTape(t.ID,t.type,t.arguments);O[Ewt]=t=>_Ee.FromTape(t.ID,t.type,t.arguments);O[bwt]=t=>wEe.FromTape(t.ID,t.type,t.arguments);O[xwt]=t=>REe.FromTape(t.ID,t.type,t.arguments);O[Iwt]=t=>MEe.FromTape(t.ID,t.type,t.arguments);O[Swt]=t=>DEe.FromTape(t.ID,t.type,t.arguments);O[_wt]=t=>CEe.FromTape(t.ID,t.type,t.arguments);O[wwt]=t=>AEe.FromTape(t.ID,t.type,t.arguments);O[Rwt]=t=>OEe.FromTape(t.ID,t.type,t.arguments);O[Mwt]=t=>PEe.FromTape(t.ID,t.type,t.arguments);O[Dwt]=t=>NEe.FromTape(t.ID,t.type,t.arguments);O[Cwt]=t=>LEe.FromTape(t.ID,t.type,t.arguments);O[Awt]=t=>FEe.FromTape(t.ID,t.type,t.arguments);O[Owt]=t=>HEe.FromTape(t.ID,t.type,t.arguments);O[Pwt]=t=>UEe.FromTape(t.ID,t.type,t.arguments);O[Nwt]=t=>BEe.FromTape(t.ID,t.type,t.arguments);O[Lwt]=t=>kEe.FromTape(t.ID,t.type,t.arguments);O[Fwt]=t=>GEe.FromTape(t.ID,t.type,t.arguments);O[Hwt]=t=>VEe.FromTape(t.ID,t.type,t.arguments);O[Uwt]=t=>zEe.FromTape(t.ID,t.type,t.arguments);O[Bwt]=t=>jEe.FromTape(t.ID,t.type,t.arguments);O[kwt]=t=>WEe.FromTape(t.ID,t.type,t.arguments);O[Gwt]=t=>qEe.FromTape(t.ID,t.type,t.arguments);O[Vwt]=t=>YEe.FromTape(t.ID,t.type,t.arguments);O[zwt]=t=>XEe.FromTape(t.ID,t.type,t.arguments);O[jwt]=t=>$Ee.FromTape(t.ID,t.type,t.arguments);O[Wwt]=t=>ZEe.FromTape(t.ID,t.type,t.arguments);O[qwt]=t=>KEe.FromTape(t.ID,t.type,t.arguments);O[Ywt]=t=>JEe.FromTape(t.ID,t.type,t.arguments);O[Xwt]=t=>QEe.FromTape(t.ID,t.type,t.arguments);O[$wt]=t=>e1e.FromTape(t.ID,t.type,t.arguments);O[Zwt]=t=>t1e.FromTape(t.ID,t.type,t.arguments);O[Kwt]=t=>r1e.FromTape(t.ID,t.type,t.arguments);O[Jwt]=t=>i1e.FromTape(t.ID,t.type,t.arguments);O[Qwt]=t=>n1e.FromTape(t.ID,t.type,t.arguments);O[eRt]=t=>s1e.FromTape(t.ID,t.type,t.arguments);O[tRt]=t=>a1e.FromTape(t.ID,t.type,t.arguments);O[rRt]=t=>o1e.FromTape(t.ID,t.type,t.arguments);O[iRt]=t=>l1e.FromTape(t.ID,t.type,t.arguments);O[nRt]=t=>c1e.FromTape(t.ID,t.type,t.arguments);O[sRt]=t=>u1e.FromTape(t.ID,t.type,t.arguments);O[aRt]=t=>h1e.FromTape(t.ID,t.type,t.arguments);O[oRt]=t=>p1e.FromTape(t.ID,t.type,t.arguments);O[lRt]=t=>d1e.FromTape(t.ID,t.type,t.arguments);O[cRt]=t=>f1e.FromTape(t.ID,t.type,t.arguments);O[uRt]=t=>m1e.FromTape(t.ID,t.type,t.arguments);O[hRt]=t=>g1e.FromTape(t.ID,t.type,t.arguments);O[pRt]=t=>v1e.FromTape(t.ID,t.type,t.arguments);O[dRt]=t=>y1e.FromTape(t.ID,t.type,t.arguments);O[fRt]=t=>T1e.FromTape(t.ID,t.type,t.arguments);O[mRt]=t=>E1e.FromTape(t.ID,t.type,t.arguments);O[gRt]=t=>b1e.FromTape(t.ID,t.type,t.arguments);O[vRt]=t=>x1e.FromTape(t.ID,t.type,t.arguments);O[yRt]=t=>I1e.FromTape(t.ID,t.type,t.arguments);O[TRt]=t=>S1e.FromTape(t.ID,t.type,t.arguments);O[ERt]=t=>_1e.FromTape(t.ID,t.type,t.arguments);O[bRt]=t=>w1e.FromTape(t.ID,t.type,t.arguments);O[xRt]=t=>R1e.FromTape(t.ID,t.type,t.arguments);O[IRt]=t=>M1e.FromTape(t.ID,t.type,t.arguments);O[SRt]=t=>D1e.FromTape(t.ID,t.type,t.arguments);O[_Rt]=t=>C1e.FromTape(t.ID,t.type,t.arguments);O[wRt]=t=>A1e.FromTape(t.ID,t.type,t.arguments);O[RRt]=t=>O1e.FromTape(t.ID,t.type,t.arguments);O[MRt]=t=>P1e.FromTape(t.ID,t.type,t.arguments);O[DRt]=t=>N1e.FromTape(t.ID,t.type,t.arguments);O[CRt]=t=>L1e.FromTape(t.ID,t.type,t.arguments);O[ARt]=t=>F1e.FromTape(t.ID,t.type,t.arguments);O[ORt]=t=>H1e.FromTape(t.ID,t.type,t.arguments);O[PRt]=t=>U1e.FromTape(t.ID,t.type,t.arguments);O[NRt]=t=>B1e.FromTape(t.ID,t.type,t.arguments);O[LRt]=t=>k1e.FromTape(t.ID,t.type,t.arguments);O[FRt]=t=>G1e.FromTape(t.ID,t.type,t.arguments);O[HRt]=t=>V1e.FromTape(t.ID,t.type,t.arguments);O[URt]=t=>z1e.FromTape(t.ID,t.type,t.arguments);O[BRt]=t=>j1e.FromTape(t.ID,t.type,t.arguments);O[tA]=t=>W1e.FromTape(t.ID,t.type,t.arguments);O[kRt]=t=>q1e.FromTape(t.ID,t.type,t.arguments);O[GRt]=t=>Y1e.FromTape(t.ID,t.type,t.arguments);O[VRt]=t=>X1e.FromTape(t.ID,t.type,t.arguments);O[zRt]=t=>$1e.FromTape(t.ID,t.type,t.arguments);O[jRt]=t=>Z1e.FromTape(t.ID,t.type,t.arguments);O[WRt]=t=>K1e.FromTape(t.ID,t.type,t.arguments);O[qRt]=t=>J1e.FromTape(t.ID,t.type,t.arguments);O[YRt]=t=>Q1e.FromTape(t.ID,t.type,t.arguments);O[XRt]=t=>ebe.FromTape(t.ID,t.type,t.arguments);O[$Rt]=t=>tbe.FromTape(t.ID,t.type,t.arguments);O[ZRt]=t=>rbe.FromTape(t.ID,t.type,t.arguments);O[KRt]=t=>ibe.FromTape(t.ID,t.type,t.arguments);O[JRt]=t=>nbe.FromTape(t.ID,t.type,t.arguments);O[QRt]=t=>sbe.FromTape(t.ID,t.type,t.arguments);O[eMt]=t=>abe.FromTape(t.ID,t.type,t.arguments);O[tMt]=t=>obe.FromTape(t.ID,t.type,t.arguments);O[rMt]=t=>lbe.FromTape(t.ID,t.type,t.arguments);O[iMt]=t=>cbe.FromTape(t.ID,t.type,t.arguments);O[nMt]=t=>ube.FromTape(t.ID,t.type,t.arguments);O[sMt]=t=>hbe.FromTape(t.ID,t.type,t.arguments);O[aMt]=t=>pbe.FromTape(t.ID,t.type,t.arguments);O[oMt]=t=>dbe.FromTape(t.ID,t.type,t.arguments);O[lMt]=t=>fbe.FromTape(t.ID,t.type,t.arguments);O[cMt]=t=>mbe.FromTape(t.ID,t.type,t.arguments);O[uMt]=t=>gbe.FromTape(t.ID,t.type,t.arguments);O[hMt]=t=>vbe.FromTape(t.ID,t.type,t.arguments);O[pMt]=t=>ybe.FromTape(t.ID,t.type,t.arguments);O[dMt]=t=>Tbe.FromTape(t.ID,t.type,t.arguments);O[fMt]=t=>Ebe.FromTape(t.ID,t.type,t.arguments);O[mMt]=t=>bbe.FromTape(t.ID,t.type,t.arguments);O[gMt]=t=>xbe.FromTape(t.ID,t.type,t.arguments);O[vMt]=t=>Ibe.FromTape(t.ID,t.type,t.arguments);O[yMt]=t=>Sbe.FromTape(t.ID,t.type,t.arguments);O[TMt]=t=>_be.FromTape(t.ID,t.type,t.arguments);O[EMt]=t=>wbe.FromTape(t.ID,t.type,t.arguments);O[bMt]=t=>Rbe.FromTape(t.ID,t.type,t.arguments);O[xMt]=t=>Mbe.FromTape(t.ID,t.type,t.arguments);O[IMt]=t=>Dbe.FromTape(t.ID,t.type,t.arguments);O[SMt]=t=>Cbe.FromTape(t.ID,t.type,t.arguments);O[_Mt]=t=>Abe.FromTape(t.ID,t.type,t.arguments);O[wMt]=t=>Obe.FromTape(t.ID,t.type,t.arguments);O[RMt]=t=>Pbe.FromTape(t.ID,t.type,t.arguments);O[MMt]=t=>Nbe.FromTape(t.ID,t.type,t.arguments);O[DMt]=t=>Lbe.FromTape(t.ID,t.type,t.arguments);O[CMt]=t=>Fbe.FromTape(t.ID,t.type,t.arguments);O[AMt]=t=>Hbe.FromTape(t.ID,t.type,t.arguments);O[OMt]=t=>Ube.FromTape(t.ID,t.type,t.arguments);O[PMt]=t=>Bbe.FromTape(t.ID,t.type,t.arguments);O[NMt]=t=>kbe.FromTape(t.ID,t.type,t.arguments);O[LMt]=t=>Gbe.FromTape(t.ID,t.type,t.arguments);O[FMt]=t=>Vbe.FromTape(t.ID,t.type,t.arguments);O[HMt]=t=>zbe.FromTape(t.ID,t.type,t.arguments);O[UMt]=t=>jbe.FromTape(t.ID,t.type,t.arguments);O[BMt]=t=>Wbe.FromTape(t.ID,t.type,t.arguments);O[kMt]=t=>qbe.FromTape(t.ID,t.type,t.arguments);O[GMt]=t=>Ybe.FromTape(t.ID,t.type,t.arguments);O[VMt]=t=>Xbe.FromTape(t.ID,t.type,t.arguments);O[zMt]=t=>$be.FromTape(t.ID,t.type,t.arguments);O[Ck]=t=>Zbe.FromTape(t.ID,t.type,t.arguments);O[jMt]=t=>Kbe.FromTape(t.ID,t.type,t.arguments);O[WMt]=t=>Jbe.FromTape(t.ID,t.type,t.arguments);O[qMt]=t=>Qbe.FromTape(t.ID,t.type,t.arguments);O[YMt]=t=>exe.FromTape(t.ID,t.type,t.arguments);O[XMt]=t=>txe.FromTape(t.ID,t.type,t.arguments);O[$Mt]=t=>rxe.FromTape(t.ID,t.type,t.arguments);O[ZMt]=t=>ixe.FromTape(t.ID,t.type,t.arguments);O[KMt]=t=>nxe.FromTape(t.ID,t.type,t.arguments);O[JMt]=t=>sxe.FromTape(t.ID,t.type,t.arguments);O[QMt]=t=>axe.FromTape(t.ID,t.type,t.arguments);O[eDt]=t=>oxe.FromTape(t.ID,t.type,t.arguments);O[tDt]=t=>lxe.FromTape(t.ID,t.type,t.arguments);O[rDt]=t=>cxe.FromTape(t.ID,t.type,t.arguments);O[iDt]=t=>uxe.FromTape(t.ID,t.type,t.arguments);O[Ak]=t=>hxe.FromTape(t.ID,t.type,t.arguments);O[nDt]=t=>pxe.FromTape(t.ID,t.type,t.arguments);O[sDt]=t=>dxe.FromTape(t.ID,t.type,t.arguments);O[aDt]=t=>fxe.FromTape(t.ID,t.type,t.arguments);O[oDt]=t=>mxe.FromTape(t.ID,t.type,t.arguments);O[lDt]=t=>gxe.FromTape(t.ID,t.type,t.arguments);O[cDt]=t=>vxe.FromTape(t.ID,t.type,t.arguments);O[uDt]=t=>yxe.FromTape(t.ID,t.type,t.arguments);O[hDt]=t=>Txe.FromTape(t.ID,t.type,t.arguments);O[pDt]=t=>Exe.FromTape(t.ID,t.type,t.arguments);O[Ok]=t=>bxe.FromTape(t.ID,t.type,t.arguments);O[dDt]=t=>xxe.FromTape(t.ID,t.type,t.arguments);O[fDt]=t=>Ixe.FromTape(t.ID,t.type,t.arguments);O[mDt]=t=>Sxe.FromTape(t.ID,t.type,t.arguments);O[gDt]=t=>_xe.FromTape(t.ID,t.type,t.arguments);O[vDt]=t=>wxe.FromTape(t.ID,t.type,t.arguments);O[yDt]=t=>Rxe.FromTape(t.ID,t.type,t.arguments);O[Pk]=t=>Mxe.FromTape(t.ID,t.type,t.arguments);O[TDt]=t=>Dxe.FromTape(t.ID,t.type,t.arguments);O[Nk]=t=>Cxe.FromTape(t.ID,t.type,t.arguments);O[EDt]=t=>Axe.FromTape(t.ID,t.type,t.arguments);O[bDt]=t=>Oxe.FromTape(t.ID,t.type,t.arguments);O[xDt]=t=>Pxe.FromTape(t.ID,t.type,t.arguments);O[IDt]=t=>Nxe.FromTape(t.ID,t.type,t.arguments);O[SDt]=t=>Lxe.FromTape(t.ID,t.type,t.arguments);O[_Dt]=t=>Fxe.FromTape(t.ID,t.type,t.arguments);O[wDt]=t=>Hxe.FromTape(t.ID,t.type,t.arguments);O[RDt]=t=>Uxe.FromTape(t.ID,t.type,t.arguments);O[MDt]=t=>Bxe.FromTape(t.ID,t.type,t.arguments);O[DDt]=t=>kxe.FromTape(t.ID,t.type,t.arguments);O[CDt]=t=>Gxe.FromTape(t.ID,t.type,t.arguments);O[ADt]=t=>Vxe.FromTape(t.ID,t.type,t.arguments);O[ODt]=t=>zxe.FromTape(t.ID,t.type,t.arguments);O[PDt]=t=>jxe.FromTape(t.ID,t.type,t.arguments);O[NDt]=t=>Wxe.FromTape(t.ID,t.type,t.arguments);O[LDt]=t=>qxe.FromTape(t.ID,t.type,t.arguments);O[FDt]=t=>Yxe.FromTape(t.ID,t.type,t.arguments);O[HDt]=t=>Xxe.FromTape(t.ID,t.type,t.arguments);O[UDt]=t=>$xe.FromTape(t.ID,t.type,t.arguments);O[BDt]=t=>Zxe.FromTape(t.ID,t.type,t.arguments);O[kDt]=t=>Kxe.FromTape(t.ID,t.type,t.arguments);O[GDt]=t=>Jxe.FromTape(t.ID,t.type,t.arguments);O[VDt]=t=>Qxe.FromTape(t.ID,t.type,t.arguments);O[zDt]=t=>eIe.FromTape(t.ID,t.type,t.arguments);O[jDt]=t=>tIe.FromTape(t.ID,t.type,t.arguments);O[WDt]=t=>rIe.FromTape(t.ID,t.type,t.arguments);O[qDt]=t=>iIe.FromTape(t.ID,t.type,t.arguments);O[YDt]=t=>nIe.FromTape(t.ID,t.type,t.arguments);O[XDt]=t=>sIe.FromTape(t.ID,t.type,t.arguments);O[$Dt]=t=>aIe.FromTape(t.ID,t.type,t.arguments);O[ZDt]=t=>oIe.FromTape(t.ID,t.type,t.arguments);O[KDt]=t=>lIe.FromTape(t.ID,t.type,t.arguments);O[JDt]=t=>cIe.FromTape(t.ID,t.type,t.arguments);O[QDt]=t=>uIe.FromTape(t.ID,t.type,t.arguments);O[eCt]=t=>hIe.FromTape(t.ID,t.type,t.arguments);O[tCt]=t=>pIe.FromTape(t.ID,t.type,t.arguments);O[rCt]=t=>dIe.FromTape(t.ID,t.type,t.arguments);O[iCt]=t=>fIe.FromTape(t.ID,t.type,t.arguments);O[nCt]=t=>mIe.FromTape(t.ID,t.type,t.arguments);O[sCt]=t=>gIe.FromTape(t.ID,t.type,t.arguments);O[aCt]=t=>vIe.FromTape(t.ID,t.type,t.arguments);O[oCt]=t=>yIe.FromTape(t.ID,t.type,t.arguments);O[lCt]=t=>TIe.FromTape(t.ID,t.type,t.arguments);O[cCt]=t=>EIe.FromTape(t.ID,t.type,t.arguments);O[uCt]=t=>bIe.FromTape(t.ID,t.type,t.arguments);O[hCt]=t=>xIe.FromTape(t.ID,t.type,t.arguments);O[pCt]=t=>IIe.FromTape(t.ID,t.type,t.arguments);O[dCt]=t=>SIe.FromTape(t.ID,t.type,t.arguments);O[fCt]=t=>_Ie.FromTape(t.ID,t.type,t.arguments);O[mCt]=t=>wIe.FromTape(t.ID,t.type,t.arguments);O[gCt]=t=>RIe.FromTape(t.ID,t.type,t.arguments);O[vCt]=t=>MIe.FromTape(t.ID,t.type,t.arguments);O[yCt]=t=>DIe.FromTape(t.ID,t.type,t.arguments);O[TCt]=t=>CIe.FromTape(t.ID,t.type,t.arguments);O[ECt]=t=>AIe.FromTape(t.ID,t.type,t.arguments);O[bCt]=t=>OIe.FromTape(t.ID,t.type,t.arguments);O[xCt]=t=>PIe.FromTape(t.ID,t.type,t.arguments);O[ICt]=t=>NIe.FromTape(t.ID,t.type,t.arguments);O[SCt]=t=>LIe.FromTape(t.ID,t.type,t.arguments);O[_Ct]=t=>FIe.FromTape(t.ID,t.type,t.arguments);O[wCt]=t=>HIe.FromTape(t.ID,t.type,t.arguments);O[RCt]=t=>UIe.FromTape(t.ID,t.type,t.arguments);O[MCt]=t=>BIe.FromTape(t.ID,t.type,t.arguments);O[DCt]=t=>kIe.FromTape(t.ID,t.type,t.arguments);O[CCt]=t=>GIe.FromTape(t.ID,t.type,t.arguments);O[ACt]=t=>VIe.FromTape(t.ID,t.type,t.arguments);O[OCt]=t=>zIe.FromTape(t.ID,t.type,t.arguments);O[PCt]=t=>jIe.FromTape(t.ID,t.type,t.arguments);O[NCt]=t=>WIe.FromTape(t.ID,t.type,t.arguments);O[LCt]=t=>qIe.FromTape(t.ID,t.type,t.arguments);O[FCt]=t=>YIe.FromTape(t.ID,t.type,t.arguments);O[HCt]=t=>XIe.FromTape(t.ID,t.type,t.arguments);O[UCt]=t=>$Ie.FromTape(t.ID,t.type,t.arguments);O[BCt]=t=>ZIe.FromTape(t.ID,t.type,t.arguments);O[kCt]=t=>KIe.FromTape(t.ID,t.type,t.arguments);O[GCt]=t=>JIe.FromTape(t.ID,t.type,t.arguments);O[VCt]=t=>QIe.FromTape(t.ID,t.type,t.arguments);O[zCt]=t=>eSe.FromTape(t.ID,t.type,t.arguments);O[jCt]=t=>tSe.FromTape(t.ID,t.type,t.arguments);O[WCt]=t=>rSe.FromTape(t.ID,t.type,t.arguments);O[qCt]=t=>iSe.FromTape(t.ID,t.type,t.arguments);O[YCt]=t=>nSe.FromTape(t.ID,t.type,t.arguments);O[XCt]=t=>sSe.FromTape(t.ID,t.type,t.arguments);O[$Ct]=t=>aSe.FromTape(t.ID,t.type,t.arguments);O[ZCt]=t=>oSe.FromTape(t.ID,t.type,t.arguments);O[KCt]=t=>lSe.FromTape(t.ID,t.type,t.arguments);O[JCt]=t=>cSe.FromTape(t.ID,t.type,t.arguments);O[QCt]=t=>uSe.FromTape(t.ID,t.type,t.arguments);O[eAt]=t=>hSe.FromTape(t.ID,t.type,t.arguments);O[tAt]=t=>pSe.FromTape(t.ID,t.type,t.arguments);O[rAt]=t=>dSe.FromTape(t.ID,t.type,t.arguments);O[iAt]=t=>fSe.FromTape(t.ID,t.type,t.arguments);O[nAt]=t=>mSe.FromTape(t.ID,t.type,t.arguments);O[sAt]=t=>gSe.FromTape(t.ID,t.type,t.arguments);O[aAt]=t=>vSe.FromTape(t.ID,t.type,t.arguments);O[oAt]=t=>ySe.FromTape(t.ID,t.type,t.arguments);O[lAt]=t=>TSe.FromTape(t.ID,t.type,t.arguments);O[cAt]=t=>ESe.FromTape(t.ID,t.type,t.arguments);O[uAt]=t=>bSe.FromTape(t.ID,t.type,t.arguments);O[hAt]=t=>xSe.FromTape(t.ID,t.type,t.arguments);O[pAt]=t=>ISe.FromTape(t.ID,t.type,t.arguments);O[dAt]=t=>SSe.FromTape(t.ID,t.type,t.arguments);O[fAt]=t=>_Se.FromTape(t.ID,t.type,t.arguments);O[mAt]=t=>wSe.FromTape(t.ID,t.type,t.arguments);O[gAt]=t=>RSe.FromTape(t.ID,t.type,t.arguments);O[vAt]=t=>MSe.FromTape(t.ID,t.type,t.arguments);O[yAt]=t=>DSe.FromTape(t.ID,t.type,t.arguments);O[TAt]=t=>CSe.FromTape(t.ID,t.type,t.arguments);O[EAt]=t=>ASe.FromTape(t.ID,t.type,t.arguments);O[bAt]=t=>OSe.FromTape(t.ID,t.type,t.arguments);O[xAt]=t=>PSe.FromTape(t.ID,t.type,t.arguments);O[IAt]=t=>NSe.FromTape(t.ID,t.type,t.arguments);O[SAt]=t=>LSe.FromTape(t.ID,t.type,t.arguments);O[_At]=t=>FSe.FromTape(t.ID,t.type,t.arguments);O[wAt]=t=>HSe.FromTape(t.ID,t.type,t.arguments);O[RAt]=t=>USe.FromTape(t.ID,t.type,t.arguments);O[MAt]=t=>BSe.FromTape(t.ID,t.type,t.arguments);O[DAt]=t=>kSe.FromTape(t.ID,t.type,t.arguments);O[CAt]=t=>GSe.FromTape(t.ID,t.type,t.arguments);O[AAt]=t=>VSe.FromTape(t.ID,t.type,t.arguments);O[OAt]=t=>zSe.FromTape(t.ID,t.type,t.arguments);O[PAt]=t=>jSe.FromTape(t.ID,t.type,t.arguments);O[NAt]=t=>WSe.FromTape(t.ID,t.type,t.arguments);O[LAt]=t=>qSe.FromTape(t.ID,t.type,t.arguments);O[FAt]=t=>YSe.FromTape(t.ID,t.type,t.arguments);O[HAt]=t=>XSe.FromTape(t.ID,t.type,t.arguments);O[UAt]=t=>$Se.FromTape(t.ID,t.type,t.arguments);O[BAt]=t=>ZSe.FromTape(t.ID,t.type,t.arguments);O[kAt]=t=>KSe.FromTape(t.ID,t.type,t.arguments);O[GAt]=t=>JSe.FromTape(t.ID,t.type,t.arguments);O[VAt]=t=>QSe.FromTape(t.ID,t.type,t.arguments);O[zAt]=t=>e_e.FromTape(t.ID,t.type,t.arguments);O[jAt]=t=>t_e.FromTape(t.ID,t.type,t.arguments);O[WAt]=t=>r_e.FromTape(t.ID,t.type,t.arguments);O[qAt]=t=>i_e.FromTape(t.ID,t.type,t.arguments);O[YAt]=t=>n_e.FromTape(t.ID,t.type,t.arguments);O[XAt]=t=>s_e.FromTape(t.ID,t.type,t.arguments);O[$At]=t=>a_e.FromTape(t.ID,t.type,t.arguments);O[ZAt]=t=>o_e.FromTape(t.ID,t.type,t.arguments);O[KAt]=t=>l_e.FromTape(t.ID,t.type,t.arguments);O[JAt]=t=>c_e.FromTape(t.ID,t.type,t.arguments);O[QAt]=t=>u_e.FromTape(t.ID,t.type,t.arguments);O[eOt]=t=>h_e.FromTape(t.ID,t.type,t.arguments);O[tOt]=t=>p_e.FromTape(t.ID,t.type,t.arguments);O[rOt]=t=>d_e.FromTape(t.ID,t.type,t.arguments);O[iOt]=t=>f_e.FromTape(t.ID,t.type,t.arguments);O[nOt]=t=>m_e.FromTape(t.ID,t.type,t.arguments);O[sOt]=t=>g_e.FromTape(t.ID,t.type,t.arguments);O[aOt]=t=>v_e.FromTape(t.ID,t.type,t.arguments);O[oOt]=t=>y_e.FromTape(t.ID,t.type,t.arguments);O[lOt]=t=>T_e.FromTape(t.ID,t.type,t.arguments);O[cOt]=t=>E_e.FromTape(t.ID,t.type,t.arguments);O[uOt]=t=>b_e.FromTape(t.ID,t.type,t.arguments);O[hOt]=t=>x_e.FromTape(t.ID,t.type,t.arguments);O[pOt]=t=>I_e.FromTape(t.ID,t.type,t.arguments);O[dOt]=t=>S_e.FromTape(t.ID,t.type,t.arguments);O[fOt]=t=>__e.FromTape(t.ID,t.type,t.arguments);O[mOt]=t=>w_e.FromTape(t.ID,t.type,t.arguments);O[gOt]=t=>R_e.FromTape(t.ID,t.type,t.arguments);O[vOt]=t=>M_e.FromTape(t.ID,t.type,t.arguments);O[yOt]=t=>D_e.FromTape(t.ID,t.type,t.arguments);O[TOt]=t=>C_e.FromTape(t.ID,t.type,t.arguments);O[EOt]=t=>A_e.FromTape(t.ID,t.type,t.arguments);O[bOt]=t=>O_e.FromTape(t.ID,t.type,t.arguments);O[xOt]=t=>P_e.FromTape(t.ID,t.type,t.arguments);O[IOt]=t=>N_e.FromTape(t.ID,t.type,t.arguments);O[SOt]=t=>L_e.FromTape(t.ID,t.type,t.arguments);O[_Ot]=t=>F_e.FromTape(t.ID,t.type,t.arguments);O[wOt]=t=>H_e.FromTape(t.ID,t.type,t.arguments);O[ROt]=t=>U_e.FromTape(t.ID,t.type,t.arguments);O[MOt]=t=>B_e.FromTape(t.ID,t.type,t.arguments);O[DOt]=t=>k_e.FromTape(t.ID,t.type,t.arguments);O[COt]=t=>G_e.FromTape(t.ID,t.type,t.arguments);O[AOt]=t=>V_e.FromTape(t.ID,t.type,t.arguments);O[OOt]=t=>z_e.FromTape(t.ID,t.type,t.arguments);O[POt]=t=>j_e.FromTape(t.ID,t.type,t.arguments);O[NOt]=t=>W_e.FromTape(t.ID,t.type,t.arguments);O[LOt]=t=>q_e.FromTape(t.ID,t.type,t.arguments);O[FOt]=t=>Y_e.FromTape(t.ID,t.type,t.arguments);O[HOt]=t=>X_e.FromTape(t.ID,t.type,t.arguments);O[UOt]=t=>$_e.FromTape(t.ID,t.type,t.arguments);O[BOt]=t=>Z_e.FromTape(t.ID,t.type,t.arguments);O[kOt]=t=>K_e.FromTape(t.ID,t.type,t.arguments);O[GOt]=t=>J_e.FromTape(t.ID,t.type,t.arguments);O[VOt]=t=>Q_e.FromTape(t.ID,t.type,t.arguments);O[zOt]=t=>ewe.FromTape(t.ID,t.type,t.arguments);O[jOt]=t=>twe.FromTape(t.ID,t.type,t.arguments);O[WOt]=t=>rwe.FromTape(t.ID,t.type,t.arguments);O[qOt]=t=>iwe.FromTape(t.ID,t.type,t.arguments);O[YOt]=t=>nwe.FromTape(t.ID,t.type,t.arguments);O[XOt]=t=>swe.FromTape(t.ID,t.type,t.arguments);O[$Ot]=t=>awe.FromTape(t.ID,t.type,t.arguments);O[ZOt]=t=>owe.FromTape(t.ID,t.type,t.arguments);O[KOt]=t=>lwe.FromTape(t.ID,t.type,t.arguments);O[JOt]=t=>cwe.FromTape(t.ID,t.type,t.arguments);O[QOt]=t=>uwe.FromTape(t.ID,t.type,t.arguments);O[e3t]=t=>hwe.FromTape(t.ID,t.type,t.arguments);O[t3t]=t=>pwe.FromTape(t.ID,t.type,t.arguments);O[r3t]=t=>dwe.FromTape(t.ID,t.type,t.arguments);O[i3t]=t=>fwe.FromTape(t.ID,t.type,t.arguments);O[n3t]=t=>mwe.FromTape(t.ID,t.type,t.arguments);O[s3t]=t=>gwe.FromTape(t.ID,t.type,t.arguments);O[a3t]=t=>vwe.FromTape(t.ID,t.type,t.arguments);O[o3t]=t=>ywe.FromTape(t.ID,t.type,t.arguments);O[l3t]=t=>Twe.FromTape(t.ID,t.type,t.arguments);O[c3t]=t=>Ewe.FromTape(t.ID,t.type,t.arguments);O[u3t]=t=>bwe.FromTape(t.ID,t.type,t.arguments);O[h3t]=t=>xwe.FromTape(t.ID,t.type,t.arguments);O[p3t]=t=>Iwe.FromTape(t.ID,t.type,t.arguments);O[d3t]=t=>Swe.FromTape(t.ID,t.type,t.arguments);O[f3t]=t=>_we.FromTape(t.ID,t.type,t.arguments);O[m3t]=t=>wwe.FromTape(t.ID,t.type,t.arguments);O[g3t]=t=>Rwe.FromTape(t.ID,t.type,t.arguments);O[v3t]=t=>Mwe.FromTape(t.ID,t.type,t.arguments);O[y3t]=t=>Dwe.FromTape(t.ID,t.type,t.arguments);O[T3t]=t=>Cwe.FromTape(t.ID,t.type,t.arguments);O[E3t]=t=>Awe.FromTape(t.ID,t.type,t.arguments);O[b3t]=t=>Owe.FromTape(t.ID,t.type,t.arguments);O[x3t]=t=>Pwe.FromTape(t.ID,t.type,t.arguments);O[I3t]=t=>Nwe.FromTape(t.ID,t.type,t.arguments);O[S3t]=t=>Lwe.FromTape(t.ID,t.type,t.arguments);O[_3t]=t=>Fwe.FromTape(t.ID,t.type,t.arguments);O[w3t]=t=>Hwe.FromTape(t.ID,t.type,t.arguments);O[R3t]=t=>Uwe.FromTape(t.ID,t.type,t.arguments);O[M3t]=t=>Bwe.FromTape(t.ID,t.type,t.arguments);O[D3t]=t=>kwe.FromTape(t.ID,t.type,t.arguments);O[C3t]=t=>Gwe.FromTape(t.ID,t.type,t.arguments);O[A3t]=t=>Vwe.FromTape(t.ID,t.type,t.arguments);O[O3t]=t=>zwe.FromTape(t.ID,t.type,t.arguments);O[P3t]=t=>jwe.FromTape(t.ID,t.type,t.arguments);O[N3t]=t=>Wwe.FromTape(t.ID,t.type,t.arguments);O[L3t]=t=>qwe.FromTape(t.ID,t.type,t.arguments);O[F3t]=t=>Ywe.FromTape(t.ID,t.type,t.arguments);O[H3t]=t=>Xwe.FromTape(t.ID,t.type,t.arguments);var Kg=class{constructor(t){this.value=t}};Kg.EMAIL="EMAIL";Kg.FAX="FAX";Kg.PHONE="PHONE";Kg.POST="POST";Kg.VERBAL="VERBAL";Kg.USERDEFINED="USERDEFINED";Kg.NOTDEFINED="NOTDEFINED";var pn=class{constructor(t){this.value=t}};pn.DEAD_LOAD_G="DEAD_LOAD_G";pn.COMPLETION_G1="COMPLETION_G1";pn.LIVE_LOAD_Q="LIVE_LOAD_Q";pn.SNOW_S="SNOW_S";pn.WIND_W="WIND_W";pn.PRESTRESSING_P="PRESTRESSING_P";pn.SETTLEMENT_U="SETTLEMENT_U";pn.TEMPERATURE_T="TEMPERATURE_T";pn.EARTHQUAKE_E="EARTHQUAKE_E";pn.FIRE="FIRE";pn.IMPULSE="IMPULSE";pn.IMPACT="IMPACT";pn.TRANSPORT="TRANSPORT";pn.ERECTION="ERECTION";pn.PROPPING="PROPPING";pn.SYSTEM_IMPERFECTION="SYSTEM_IMPERFECTION";pn.SHRINKAGE="SHRINKAGE";pn.CREEP="CREEP";pn.LACK_OF_FIT="LACK_OF_FIT";pn.BUOYANCY="BUOYANCY";pn.ICE="ICE";pn.CURRENT="CURRENT";pn.WAVE="WAVE";pn.RAIN="RAIN";pn.BRAKES="BRAKES";pn.USERDEFINED="USERDEFINED";pn.NOTDEFINED="NOTDEFINED";var $x=class{constructor(t){this.value=t}};$x.PERMANENT_G="PERMANENT_G";$x.VARIABLE_Q="VARIABLE_Q";$x.EXTRAORDINARY_A="EXTRAORDINARY_A";$x.USERDEFINED="USERDEFINED";$x.NOTDEFINED="NOTDEFINED";var Jg=class{constructor(t){this.value=t}};Jg.ELECTRICACTUATOR="ELECTRICACTUATOR";Jg.HANDOPERATEDACTUATOR="HANDOPERATEDACTUATOR";Jg.HYDRAULICACTUATOR="HYDRAULICACTUATOR";Jg.PNEUMATICACTUATOR="PNEUMATICACTUATOR";Jg.THERMOSTATICACTUATOR="THERMOSTATICACTUATOR";Jg.USERDEFINED="USERDEFINED";Jg.NOTDEFINED="NOTDEFINED";var Zx=class{constructor(t){this.value=t}};Zx.OFFICE="OFFICE";Zx.SITE="SITE";Zx.HOME="HOME";Zx.DISTRIBUTIONPOINT="DISTRIBUTIONPOINT";Zx.USERDEFINED="USERDEFINED";var Kx=class{constructor(t){this.value=t}};Kx.CONSTANTFLOW="CONSTANTFLOW";Kx.VARIABLEFLOWPRESSUREDEPENDANT="VARIABLEFLOWPRESSUREDEPENDANT";Kx.VARIABLEFLOWPRESSUREINDEPENDANT="VARIABLEFLOWPRESSUREINDEPENDANT";Kx.USERDEFINED="USERDEFINED";Kx.NOTDEFINED="NOTDEFINED";var fT=class{constructor(t){this.value=t}};fT.DIFFUSER="DIFFUSER";fT.GRILLE="GRILLE";fT.LOUVRE="LOUVRE";fT.REGISTER="REGISTER";fT.USERDEFINED="USERDEFINED";fT.NOTDEFINED="NOTDEFINED";var Hc=class{constructor(t){this.value=t}};Hc.FIXEDPLATECOUNTERFLOWEXCHANGER="FIXEDPLATECOUNTERFLOWEXCHANGER";Hc.FIXEDPLATECROSSFLOWEXCHANGER="FIXEDPLATECROSSFLOWEXCHANGER";Hc.FIXEDPLATEPARALLELFLOWEXCHANGER="FIXEDPLATEPARALLELFLOWEXCHANGER";Hc.ROTARYWHEEL="ROTARYWHEEL";Hc.RUNAROUNDCOILLOOP="RUNAROUNDCOILLOOP";Hc.HEATPIPE="HEATPIPE";Hc.TWINTOWERENTHALPYRECOVERYLOOPS="TWINTOWERENTHALPYRECOVERYLOOPS";Hc.THERMOSIPHONSEALEDTUBEHEATEXCHANGERS="THERMOSIPHONSEALEDTUBEHEATEXCHANGERS";Hc.THERMOSIPHONCOILTYPEHEATEXCHANGERS="THERMOSIPHONCOILTYPEHEATEXCHANGERS";Hc.USERDEFINED="USERDEFINED";Hc.NOTDEFINED="NOTDEFINED";var Pf=class{constructor(t){this.value=t}};Pf.BELL="BELL";Pf.BREAKGLASSBUTTON="BREAKGLASSBUTTON";Pf.LIGHT="LIGHT";Pf.MANUALPULLBOX="MANUALPULLBOX";Pf.SIREN="SIREN";Pf.WHISTLE="WHISTLE";Pf.USERDEFINED="USERDEFINED";Pf.NOTDEFINED="NOTDEFINED";var Dde=class{constructor(t){this.value=t}};Dde.USERDEFINED="USERDEFINED";Dde.NOTDEFINED="NOTDEFINED";var Jx=class{constructor(t){this.value=t}};Jx.IN_PLANE_LOADING_2D="IN_PLANE_LOADING_2D";Jx.OUT_PLANE_LOADING_2D="OUT_PLANE_LOADING_2D";Jx.LOADING_3D="LOADING_3D";Jx.USERDEFINED="USERDEFINED";Jx.NOTDEFINED="NOTDEFINED";var mT=class{constructor(t){this.value=t}};mT.FIRST_ORDER_THEORY="FIRST_ORDER_THEORY";mT.SECOND_ORDER_THEORY="SECOND_ORDER_THEORY";mT.THIRD_ORDER_THEORY="THIRD_ORDER_THEORY";mT.FULL_NONLINEAR_THEORY="FULL_NONLINEAR_THEORY";mT.USERDEFINED="USERDEFINED";mT.NOTDEFINED="NOTDEFINED";var rA=class{constructor(t){this.value=t}};rA.ADD="ADD";rA.DIVIDE="DIVIDE";rA.MULTIPLY="MULTIPLY";rA.SUBTRACT="SUBTRACT";var Lk=class{constructor(t){this.value=t}};Lk.SITE="SITE";Lk.FACTORY="FACTORY";Lk.NOTDEFINED="NOTDEFINED";var $o=class{constructor(t){this.value=t}};$o.AMPLIFIER="AMPLIFIER";$o.CAMERA="CAMERA";$o.DISPLAY="DISPLAY";$o.MICROPHONE="MICROPHONE";$o.PLAYER="PLAYER";$o.PROJECTOR="PROJECTOR";$o.RECEIVER="RECEIVER";$o.SPEAKER="SPEAKER";$o.SWITCHER="SWITCHER";$o.TELEPHONE="TELEPHONE";$o.TUNER="TUNER";$o.USERDEFINED="USERDEFINED";$o.NOTDEFINED="NOTDEFINED";var gT=class{constructor(t){this.value=t}};gT.POLYLINE_FORM="POLYLINE_FORM";gT.CIRCULAR_ARC="CIRCULAR_ARC";gT.ELLIPTIC_ARC="ELLIPTIC_ARC";gT.PARABOLIC_ARC="PARABOLIC_ARC";gT.HYPERBOLIC_ARC="HYPERBOLIC_ARC";gT.UNSPECIFIED="UNSPECIFIED";var Uc=class{constructor(t){this.value=t}};Uc.PLANE_SURF="PLANE_SURF";Uc.CYLINDRICAL_SURF="CYLINDRICAL_SURF";Uc.CONICAL_SURF="CONICAL_SURF";Uc.SPHERICAL_SURF="SPHERICAL_SURF";Uc.TOROIDAL_SURF="TOROIDAL_SURF";Uc.SURF_OF_REVOLUTION="SURF_OF_REVOLUTION";Uc.RULED_SURF="RULED_SURF";Uc.GENERALISED_CONE="GENERALISED_CONE";Uc.QUADRIC_SURF="QUADRIC_SURF";Uc.SURF_OF_LINEAR_EXTRUSION="SURF_OF_LINEAR_EXTRUSION";Uc.UNSPECIFIED="UNSPECIFIED";var go=class{constructor(t){this.value=t}};go.BEAM="BEAM";go.JOIST="JOIST";go.HOLLOWCORE="HOLLOWCORE";go.LINTEL="LINTEL";go.SPANDREL="SPANDREL";go.T_BEAM="T_BEAM";go.GIRDER_SEGMENT="GIRDER_SEGMENT";go.DIAPHRAGM="DIAPHRAGM";go.PIERCAP="PIERCAP";go.HATSTONE="HATSTONE";go.CORNICE="CORNICE";go.EDGEBEAM="EDGEBEAM";go.USERDEFINED="USERDEFINED";go.NOTDEFINED="NOTDEFINED";var Qx=class{constructor(t){this.value=t}};Qx.FIXED_MOVEMENT="FIXED_MOVEMENT";Qx.GUIDED_LONGITUDINAL="GUIDED_LONGITUDINAL";Qx.GUIDED_TRANSVERSAL="GUIDED_TRANSVERSAL";Qx.FREE_MOVEMENT="FREE_MOVEMENT";Qx.NOTDEFINED="NOTDEFINED";var Xu=class{constructor(t){this.value=t}};Xu.CYLINDRICAL="CYLINDRICAL";Xu.SPHERICAL="SPHERICAL";Xu.ELASTOMERIC="ELASTOMERIC";Xu.POT="POT";Xu.GUIDE="GUIDE";Xu.ROCKER="ROCKER";Xu.ROLLER="ROLLER";Xu.DISK="DISK";Xu.USERDEFINED="USERDEFINED";Xu.NOTDEFINED="NOTDEFINED";var $u=class{constructor(t){this.value=t}};$u.GREATERTHAN="GREATERTHAN";$u.GREATERTHANOREQUALTO="GREATERTHANOREQUALTO";$u.LESSTHAN="LESSTHAN";$u.LESSTHANOREQUALTO="LESSTHANOREQUALTO";$u.EQUALTO="EQUALTO";$u.NOTEQUALTO="NOTEQUALTO";$u.INCLUDES="INCLUDES";$u.NOTINCLUDES="NOTINCLUDES";$u.INCLUDEDIN="INCLUDEDIN";$u.NOTINCLUDEDIN="NOTINCLUDEDIN";var iA=class{constructor(t){this.value=t}};iA.WATER="WATER";iA.STEAM="STEAM";iA.USERDEFINED="USERDEFINED";iA.NOTDEFINED="NOTDEFINED";var Fk=class{constructor(t){this.value=t}};Fk.UNION="UNION";Fk.INTERSECTION="INTERSECTION";Fk.DIFFERENCE="DIFFERENCE";var kl=class{constructor(t){this.value=t}};kl.ABUTMENT="ABUTMENT";kl.DECK="DECK";kl.DECK_SEGMENT="DECK_SEGMENT";kl.FOUNDATION="FOUNDATION";kl.PIER="PIER";kl.PIER_SEGMENT="PIER_SEGMENT";kl.PYLON="PYLON";kl.SUBSTRUCTURE="SUBSTRUCTURE";kl.SUPERSTRUCTURE="SUPERSTRUCTURE";kl.SURFACESTRUCTURE="SURFACESTRUCTURE";kl.USERDEFINED="USERDEFINED";kl.NOTDEFINED="NOTDEFINED";var Zu=class{constructor(t){this.value=t}};Zu.ARCHED="ARCHED";Zu.CABLE_STAYED="CABLE_STAYED";Zu.CANTILEVER="CANTILEVER";Zu.CULVERT="CULVERT";Zu.FRAMEWORK="FRAMEWORK";Zu.GIRDER="GIRDER";Zu.SUSPENSION="SUSPENSION";Zu.TRUSS="TRUSS";Zu.USERDEFINED="USERDEFINED";Zu.NOTDEFINED="NOTDEFINED";var eI=class{constructor(t){this.value=t}};eI.INSULATION="INSULATION";eI.PRECASTPANEL="PRECASTPANEL";eI.APRON="APRON";eI.USERDEFINED="USERDEFINED";eI.NOTDEFINED="NOTDEFINED";var Qg=class{constructor(t){this.value=t}};Qg.COMPLEX="COMPLEX";Qg.ELEMENT="ELEMENT";Qg.PARTIAL="PARTIAL";Qg.PROVISIONFORVOID="PROVISIONFORVOID";Qg.PROVISIONFORSPACE="PROVISIONFORSPACE";Qg.USERDEFINED="USERDEFINED";Qg.NOTDEFINED="NOTDEFINED";var Ku=class{constructor(t){this.value=t}};Ku.FENESTRATION="FENESTRATION";Ku.FOUNDATION="FOUNDATION";Ku.LOADBEARING="LOADBEARING";Ku.OUTERSHELL="OUTERSHELL";Ku.SHADING="SHADING";Ku.TRANSPORT="TRANSPORT";Ku.REINFORCING="REINFORCING";Ku.PRESTRESSING="PRESTRESSING";Ku.USERDEFINED="USERDEFINED";Ku.NOTDEFINED="NOTDEFINED";var Cde=class{constructor(t){this.value=t}};Cde.USERDEFINED="USERDEFINED";Cde.NOTDEFINED="NOTDEFINED";var vT=class{constructor(t){this.value=t}};vT.BEND="BEND";vT.CROSS="CROSS";vT.REDUCER="REDUCER";vT.TEE="TEE";vT.USERDEFINED="USERDEFINED";vT.NOTDEFINED="NOTDEFINED";var yT=class{constructor(t){this.value=t}};yT.CABLELADDERSEGMENT="CABLELADDERSEGMENT";yT.CABLETRAYSEGMENT="CABLETRAYSEGMENT";yT.CABLETRUNKINGSEGMENT="CABLETRUNKINGSEGMENT";yT.CONDUITSEGMENT="CONDUITSEGMENT";yT.USERDEFINED="USERDEFINED";yT.NOTDEFINED="NOTDEFINED";var e0=class{constructor(t){this.value=t}};e0.CONNECTOR="CONNECTOR";e0.ENTRY="ENTRY";e0.EXIT="EXIT";e0.JUNCTION="JUNCTION";e0.TRANSITION="TRANSITION";e0.USERDEFINED="USERDEFINED";e0.NOTDEFINED="NOTDEFINED";var TT=class{constructor(t){this.value=t}};TT.BUSBARSEGMENT="BUSBARSEGMENT";TT.CABLESEGMENT="CABLESEGMENT";TT.CONDUCTORSEGMENT="CONDUCTORSEGMENT";TT.CORESEGMENT="CORESEGMENT";TT.USERDEFINED="USERDEFINED";TT.NOTDEFINED="NOTDEFINED";var nA=class{constructor(t){this.value=t}};nA.WELL="WELL";nA.CAISSON="CAISSON";nA.USERDEFINED="USERDEFINED";nA.NOTDEFINED="NOTDEFINED";var tI=class{constructor(t){this.value=t}};tI.NOCHANGE="NOCHANGE";tI.MODIFIED="MODIFIED";tI.ADDED="ADDED";tI.DELETED="DELETED";tI.NOTDEFINED="NOTDEFINED";var rI=class{constructor(t){this.value=t}};rI.AIRCOOLED="AIRCOOLED";rI.WATERCOOLED="WATERCOOLED";rI.HEATRECOVERY="HEATRECOVERY";rI.USERDEFINED="USERDEFINED";rI.NOTDEFINED="NOTDEFINED";var Ade=class{constructor(t){this.value=t}};Ade.USERDEFINED="USERDEFINED";Ade.NOTDEFINED="NOTDEFINED";var kp=class{constructor(t){this.value=t}};kp.DXCOOLINGCOIL="DXCOOLINGCOIL";kp.ELECTRICHEATINGCOIL="ELECTRICHEATINGCOIL";kp.GASHEATINGCOIL="GASHEATINGCOIL";kp.HYDRONICCOIL="HYDRONICCOIL";kp.STEAMHEATINGCOIL="STEAMHEATINGCOIL";kp.WATERCOOLINGCOIL="WATERCOOLINGCOIL";kp.WATERHEATINGCOIL="WATERHEATINGCOIL";kp.USERDEFINED="USERDEFINED";kp.NOTDEFINED="NOTDEFINED";var t0=class{constructor(t){this.value=t}};t0.COLUMN="COLUMN";t0.PILASTER="PILASTER";t0.PIERSTEM="PIERSTEM";t0.PIERSTEM_SEGMENT="PIERSTEM_SEGMENT";t0.STANDCOLUMN="STANDCOLUMN";t0.USERDEFINED="USERDEFINED";t0.NOTDEFINED="NOTDEFINED";var vo=class{constructor(t){this.value=t}};vo.ANTENNA="ANTENNA";vo.COMPUTER="COMPUTER";vo.FAX="FAX";vo.GATEWAY="GATEWAY";vo.MODEM="MODEM";vo.NETWORKAPPLIANCE="NETWORKAPPLIANCE";vo.NETWORKBRIDGE="NETWORKBRIDGE";vo.NETWORKHUB="NETWORKHUB";vo.PRINTER="PRINTER";vo.REPEATER="REPEATER";vo.ROUTER="ROUTER";vo.SCANNER="SCANNER";vo.USERDEFINED="USERDEFINED";vo.NOTDEFINED="NOTDEFINED";var Ode=class{constructor(t){this.value=t}};Ode.P_COMPLEX="P_COMPLEX";Ode.Q_COMPLEX="Q_COMPLEX";var Gs=class{constructor(t){this.value=t}};Gs.DYNAMIC="DYNAMIC";Gs.RECIPROCATING="RECIPROCATING";Gs.ROTARY="ROTARY";Gs.SCROLL="SCROLL";Gs.TROCHOIDAL="TROCHOIDAL";Gs.SINGLESTAGE="SINGLESTAGE";Gs.BOOSTER="BOOSTER";Gs.OPENTYPE="OPENTYPE";Gs.HERMETIC="HERMETIC";Gs.SEMIHERMETIC="SEMIHERMETIC";Gs.WELDEDSHELLHERMETIC="WELDEDSHELLHERMETIC";Gs.ROLLINGPISTON="ROLLINGPISTON";Gs.ROTARYVANE="ROTARYVANE";Gs.SINGLESCREW="SINGLESCREW";Gs.TWINSCREW="TWINSCREW";Gs.USERDEFINED="USERDEFINED";Gs.NOTDEFINED="NOTDEFINED";var Gp=class{constructor(t){this.value=t}};Gp.AIRCOOLED="AIRCOOLED";Gp.EVAPORATIVECOOLED="EVAPORATIVECOOLED";Gp.WATERCOOLED="WATERCOOLED";Gp.WATERCOOLEDBRAZEDPLATE="WATERCOOLEDBRAZEDPLATE";Gp.WATERCOOLEDSHELLCOIL="WATERCOOLEDSHELLCOIL";Gp.WATERCOOLEDSHELLTUBE="WATERCOOLEDSHELLTUBE";Gp.WATERCOOLEDTUBEINTUBE="WATERCOOLEDTUBEINTUBE";Gp.USERDEFINED="USERDEFINED";Gp.NOTDEFINED="NOTDEFINED";var sA=class{constructor(t){this.value=t}};sA.ATPATH="ATPATH";sA.ATSTART="ATSTART";sA.ATEND="ATEND";sA.NOTDEFINED="NOTDEFINED";var iI=class{constructor(t){this.value=t}};iI.HARD="HARD";iI.SOFT="SOFT";iI.ADVISORY="ADVISORY";iI.USERDEFINED="USERDEFINED";iI.NOTDEFINED="NOTDEFINED";var Ju=class{constructor(t){this.value=t}};Ju.DEMOLISHING="DEMOLISHING";Ju.EARTHMOVING="EARTHMOVING";Ju.ERECTING="ERECTING";Ju.HEATING="HEATING";Ju.LIGHTING="LIGHTING";Ju.PAVING="PAVING";Ju.PUMPING="PUMPING";Ju.TRANSPORTING="TRANSPORTING";Ju.USERDEFINED="USERDEFINED";Ju.NOTDEFINED="NOTDEFINED";var Bc=class{constructor(t){this.value=t}};Bc.AGGREGATES="AGGREGATES";Bc.CONCRETE="CONCRETE";Bc.DRYWALL="DRYWALL";Bc.FUEL="FUEL";Bc.GYPSUM="GYPSUM";Bc.MASONRY="MASONRY";Bc.METAL="METAL";Bc.PLASTIC="PLASTIC";Bc.WOOD="WOOD";Bc.NOTDEFINED="NOTDEFINED";Bc.USERDEFINED="USERDEFINED";var aA=class{constructor(t){this.value=t}};aA.ASSEMBLY="ASSEMBLY";aA.FORMWORK="FORMWORK";aA.USERDEFINED="USERDEFINED";aA.NOTDEFINED="NOTDEFINED";var r0=class{constructor(t){this.value=t}};r0.FLOATING="FLOATING";r0.PROGRAMMABLE="PROGRAMMABLE";r0.PROPORTIONAL="PROPORTIONAL";r0.MULTIPOSITION="MULTIPOSITION";r0.TWOPOSITION="TWOPOSITION";r0.USERDEFINED="USERDEFINED";r0.NOTDEFINED="NOTDEFINED";var oA=class{constructor(t){this.value=t}};oA.ACTIVE="ACTIVE";oA.PASSIVE="PASSIVE";oA.USERDEFINED="USERDEFINED";oA.NOTDEFINED="NOTDEFINED";var nI=class{constructor(t){this.value=t}};nI.NATURALDRAFT="NATURALDRAFT";nI.MECHANICALINDUCEDDRAFT="MECHANICALINDUCEDDRAFT";nI.MECHANICALFORCEDDRAFT="MECHANICALFORCEDDRAFT";nI.USERDEFINED="USERDEFINED";nI.NOTDEFINED="NOTDEFINED";var Pde=class{constructor(t){this.value=t}};Pde.USERDEFINED="USERDEFINED";Pde.NOTDEFINED="NOTDEFINED";var Vp=class{constructor(t){this.value=t}};Vp.BUDGET="BUDGET";Vp.COSTPLAN="COSTPLAN";Vp.ESTIMATE="ESTIMATE";Vp.TENDER="TENDER";Vp.PRICEDBILLOFQUANTITIES="PRICEDBILLOFQUANTITIES";Vp.UNPRICEDBILLOFQUANTITIES="UNPRICEDBILLOFQUANTITIES";Vp.SCHEDULEOFRATES="SCHEDULEOFRATES";Vp.USERDEFINED="USERDEFINED";Vp.NOTDEFINED="NOTDEFINED";var Zo=class{constructor(t){this.value=t}};Zo.CEILING="CEILING";Zo.FLOORING="FLOORING";Zo.CLADDING="CLADDING";Zo.ROOFING="ROOFING";Zo.MOLDING="MOLDING";Zo.SKIRTINGBOARD="SKIRTINGBOARD";Zo.INSULATION="INSULATION";Zo.MEMBRANE="MEMBRANE";Zo.SLEEVING="SLEEVING";Zo.WRAPPING="WRAPPING";Zo.COPING="COPING";Zo.USERDEFINED="USERDEFINED";Zo.NOTDEFINED="NOTDEFINED";var lA=class{constructor(t){this.value=t}};lA.OFFICE="OFFICE";lA.SITE="SITE";lA.USERDEFINED="USERDEFINED";lA.NOTDEFINED="NOTDEFINED";var Nde=class{constructor(t){this.value=t}};Nde.USERDEFINED="USERDEFINED";Nde.NOTDEFINED="NOTDEFINED";var cA=class{constructor(t){this.value=t}};cA.LINEAR="LINEAR";cA.LOG_LINEAR="LOG_LINEAR";cA.LOG_LOG="LOG_LOG";cA.NOTDEFINED="NOTDEFINED";var Ko=class{constructor(t){this.value=t}};Ko.BACKDRAFTDAMPER="BACKDRAFTDAMPER";Ko.BALANCINGDAMPER="BALANCINGDAMPER";Ko.BLASTDAMPER="BLASTDAMPER";Ko.CONTROLDAMPER="CONTROLDAMPER";Ko.FIREDAMPER="FIREDAMPER";Ko.FIRESMOKEDAMPER="FIRESMOKEDAMPER";Ko.FUMEHOODEXHAUST="FUMEHOODEXHAUST";Ko.GRAVITYDAMPER="GRAVITYDAMPER";Ko.GRAVITYRELIEFDAMPER="GRAVITYRELIEFDAMPER";Ko.RELIEFDAMPER="RELIEFDAMPER";Ko.SMOKEDAMPER="SMOKEDAMPER";Ko.USERDEFINED="USERDEFINED";Ko.NOTDEFINED="NOTDEFINED";var sI=class{constructor(t){this.value=t}};sI.MEASURED="MEASURED";sI.PREDICTED="PREDICTED";sI.SIMULATED="SIMULATED";sI.USERDEFINED="USERDEFINED";sI.NOTDEFINED="NOTDEFINED";var dr=class{constructor(t){this.value=t}};dr.ANGULARVELOCITYUNIT="ANGULARVELOCITYUNIT";dr.AREADENSITYUNIT="AREADENSITYUNIT";dr.COMPOUNDPLANEANGLEUNIT="COMPOUNDPLANEANGLEUNIT";dr.DYNAMICVISCOSITYUNIT="DYNAMICVISCOSITYUNIT";dr.HEATFLUXDENSITYUNIT="HEATFLUXDENSITYUNIT";dr.INTEGERCOUNTRATEUNIT="INTEGERCOUNTRATEUNIT";dr.ISOTHERMALMOISTURECAPACITYUNIT="ISOTHERMALMOISTURECAPACITYUNIT";dr.KINEMATICVISCOSITYUNIT="KINEMATICVISCOSITYUNIT";dr.LINEARVELOCITYUNIT="LINEARVELOCITYUNIT";dr.MASSDENSITYUNIT="MASSDENSITYUNIT";dr.MASSFLOWRATEUNIT="MASSFLOWRATEUNIT";dr.MOISTUREDIFFUSIVITYUNIT="MOISTUREDIFFUSIVITYUNIT";dr.MOLECULARWEIGHTUNIT="MOLECULARWEIGHTUNIT";dr.SPECIFICHEATCAPACITYUNIT="SPECIFICHEATCAPACITYUNIT";dr.THERMALADMITTANCEUNIT="THERMALADMITTANCEUNIT";dr.THERMALCONDUCTANCEUNIT="THERMALCONDUCTANCEUNIT";dr.THERMALRESISTANCEUNIT="THERMALRESISTANCEUNIT";dr.THERMALTRANSMITTANCEUNIT="THERMALTRANSMITTANCEUNIT";dr.VAPORPERMEABILITYUNIT="VAPORPERMEABILITYUNIT";dr.VOLUMETRICFLOWRATEUNIT="VOLUMETRICFLOWRATEUNIT";dr.ROTATIONALFREQUENCYUNIT="ROTATIONALFREQUENCYUNIT";dr.TORQUEUNIT="TORQUEUNIT";dr.MOMENTOFINERTIAUNIT="MOMENTOFINERTIAUNIT";dr.LINEARMOMENTUNIT="LINEARMOMENTUNIT";dr.LINEARFORCEUNIT="LINEARFORCEUNIT";dr.PLANARFORCEUNIT="PLANARFORCEUNIT";dr.MODULUSOFELASTICITYUNIT="MODULUSOFELASTICITYUNIT";dr.SHEARMODULUSUNIT="SHEARMODULUSUNIT";dr.LINEARSTIFFNESSUNIT="LINEARSTIFFNESSUNIT";dr.ROTATIONALSTIFFNESSUNIT="ROTATIONALSTIFFNESSUNIT";dr.MODULUSOFSUBGRADEREACTIONUNIT="MODULUSOFSUBGRADEREACTIONUNIT";dr.ACCELERATIONUNIT="ACCELERATIONUNIT";dr.CURVATUREUNIT="CURVATUREUNIT";dr.HEATINGVALUEUNIT="HEATINGVALUEUNIT";dr.IONCONCENTRATIONUNIT="IONCONCENTRATIONUNIT";dr.LUMINOUSINTENSITYDISTRIBUTIONUNIT="LUMINOUSINTENSITYDISTRIBUTIONUNIT";dr.MASSPERLENGTHUNIT="MASSPERLENGTHUNIT";dr.MODULUSOFLINEARSUBGRADEREACTIONUNIT="MODULUSOFLINEARSUBGRADEREACTIONUNIT";dr.MODULUSOFROTATIONALSUBGRADEREACTIONUNIT="MODULUSOFROTATIONALSUBGRADEREACTIONUNIT";dr.PHUNIT="PHUNIT";dr.ROTATIONALMASSUNIT="ROTATIONALMASSUNIT";dr.SECTIONAREAINTEGRALUNIT="SECTIONAREAINTEGRALUNIT";dr.SECTIONMODULUSUNIT="SECTIONMODULUSUNIT";dr.SOUNDPOWERLEVELUNIT="SOUNDPOWERLEVELUNIT";dr.SOUNDPOWERUNIT="SOUNDPOWERUNIT";dr.SOUNDPRESSURELEVELUNIT="SOUNDPRESSURELEVELUNIT";dr.SOUNDPRESSUREUNIT="SOUNDPRESSUREUNIT";dr.TEMPERATUREGRADIENTUNIT="TEMPERATUREGRADIENTUNIT";dr.TEMPERATURERATEOFCHANGEUNIT="TEMPERATURERATEOFCHANGEUNIT";dr.THERMALEXPANSIONCOEFFICIENTUNIT="THERMALEXPANSIONCOEFFICIENTUNIT";dr.WARPINGCONSTANTUNIT="WARPINGCONSTANTUNIT";dr.WARPINGMOMENTUNIT="WARPINGMOMENTUNIT";dr.USERDEFINED="USERDEFINED";var Lde=class{constructor(t){this.value=t}};Lde.POSITIVE="POSITIVE";Lde.NEGATIVE="NEGATIVE";var ET=class{constructor(t){this.value=t}};ET.ANCHORPLATE="ANCHORPLATE";ET.BRACKET="BRACKET";ET.SHOE="SHOE";ET.EXPANSION_JOINT_DEVICE="EXPANSION_JOINT_DEVICE";ET.USERDEFINED="USERDEFINED";ET.NOTDEFINED="NOTDEFINED";var Qu=class{constructor(t){this.value=t}};Qu.FORMEDDUCT="FORMEDDUCT";Qu.INSPECTIONCHAMBER="INSPECTIONCHAMBER";Qu.INSPECTIONPIT="INSPECTIONPIT";Qu.MANHOLE="MANHOLE";Qu.METERCHAMBER="METERCHAMBER";Qu.SUMP="SUMP";Qu.TRENCH="TRENCH";Qu.VALVECHAMBER="VALVECHAMBER";Qu.USERDEFINED="USERDEFINED";Qu.NOTDEFINED="NOTDEFINED";var bT=class{constructor(t){this.value=t}};bT.CABLE="CABLE";bT.CABLECARRIER="CABLECARRIER";bT.DUCT="DUCT";bT.PIPE="PIPE";bT.USERDEFINED="USERDEFINED";bT.NOTDEFINED="NOTDEFINED";var Lr=class{constructor(t){this.value=t}};Lr.AIRCONDITIONING="AIRCONDITIONING";Lr.AUDIOVISUAL="AUDIOVISUAL";Lr.CHEMICAL="CHEMICAL";Lr.CHILLEDWATER="CHILLEDWATER";Lr.COMMUNICATION="COMMUNICATION";Lr.COMPRESSEDAIR="COMPRESSEDAIR";Lr.CONDENSERWATER="CONDENSERWATER";Lr.CONTROL="CONTROL";Lr.CONVEYING="CONVEYING";Lr.DATA="DATA";Lr.DISPOSAL="DISPOSAL";Lr.DOMESTICCOLDWATER="DOMESTICCOLDWATER";Lr.DOMESTICHOTWATER="DOMESTICHOTWATER";Lr.DRAINAGE="DRAINAGE";Lr.EARTHING="EARTHING";Lr.ELECTRICAL="ELECTRICAL";Lr.ELECTROACOUSTIC="ELECTROACOUSTIC";Lr.EXHAUST="EXHAUST";Lr.FIREPROTECTION="FIREPROTECTION";Lr.FUEL="FUEL";Lr.GAS="GAS";Lr.HAZARDOUS="HAZARDOUS";Lr.HEATING="HEATING";Lr.LIGHTING="LIGHTING";Lr.LIGHTNINGPROTECTION="LIGHTNINGPROTECTION";Lr.MUNICIPALSOLIDWASTE="MUNICIPALSOLIDWASTE";Lr.OIL="OIL";Lr.OPERATIONAL="OPERATIONAL";Lr.POWERGENERATION="POWERGENERATION";Lr.RAINWATER="RAINWATER";Lr.REFRIGERATION="REFRIGERATION";Lr.SECURITY="SECURITY";Lr.SEWAGE="SEWAGE";Lr.SIGNAL="SIGNAL";Lr.STORMWATER="STORMWATER";Lr.TELEPHONE="TELEPHONE";Lr.TV="TV";Lr.VACUUM="VACUUM";Lr.VENT="VENT";Lr.VENTILATION="VENTILATION";Lr.WASTEWATER="WASTEWATER";Lr.WATERSUPPLY="WATERSUPPLY";Lr.USERDEFINED="USERDEFINED";Lr.NOTDEFINED="NOTDEFINED";var xT=class{constructor(t){this.value=t}};xT.PUBLIC="PUBLIC";xT.RESTRICTED="RESTRICTED";xT.CONFIDENTIAL="CONFIDENTIAL";xT.PERSONAL="PERSONAL";xT.USERDEFINED="USERDEFINED";xT.NOTDEFINED="NOTDEFINED";var aI=class{constructor(t){this.value=t}};aI.DRAFT="DRAFT";aI.FINALDRAFT="FINALDRAFT";aI.FINAL="FINAL";aI.REVISION="REVISION";aI.NOTDEFINED="NOTDEFINED";var zp=class{constructor(t){this.value=t}};zp.SWINGING="SWINGING";zp.DOUBLE_ACTING="DOUBLE_ACTING";zp.SLIDING="SLIDING";zp.FOLDING="FOLDING";zp.REVOLVING="REVOLVING";zp.ROLLINGUP="ROLLINGUP";zp.FIXEDPANEL="FIXEDPANEL";zp.USERDEFINED="USERDEFINED";zp.NOTDEFINED="NOTDEFINED";var uA=class{constructor(t){this.value=t}};uA.LEFT="LEFT";uA.MIDDLE="MIDDLE";uA.RIGHT="RIGHT";uA.NOTDEFINED="NOTDEFINED";var jp=class{constructor(t){this.value=t}};jp.ALUMINIUM="ALUMINIUM";jp.HIGH_GRADE_STEEL="HIGH_GRADE_STEEL";jp.STEEL="STEEL";jp.WOOD="WOOD";jp.ALUMINIUM_WOOD="ALUMINIUM_WOOD";jp.ALUMINIUM_PLASTIC="ALUMINIUM_PLASTIC";jp.PLASTIC="PLASTIC";jp.USERDEFINED="USERDEFINED";jp.NOTDEFINED="NOTDEFINED";var As=class{constructor(t){this.value=t}};As.SINGLE_SWING_LEFT="SINGLE_SWING_LEFT";As.SINGLE_SWING_RIGHT="SINGLE_SWING_RIGHT";As.DOUBLE_DOOR_SINGLE_SWING="DOUBLE_DOOR_SINGLE_SWING";As.DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT="DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT";As.DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT="DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT";As.DOUBLE_SWING_LEFT="DOUBLE_SWING_LEFT";As.DOUBLE_SWING_RIGHT="DOUBLE_SWING_RIGHT";As.DOUBLE_DOOR_DOUBLE_SWING="DOUBLE_DOOR_DOUBLE_SWING";As.SLIDING_TO_LEFT="SLIDING_TO_LEFT";As.SLIDING_TO_RIGHT="SLIDING_TO_RIGHT";As.DOUBLE_DOOR_SLIDING="DOUBLE_DOOR_SLIDING";As.FOLDING_TO_LEFT="FOLDING_TO_LEFT";As.FOLDING_TO_RIGHT="FOLDING_TO_RIGHT";As.DOUBLE_DOOR_FOLDING="DOUBLE_DOOR_FOLDING";As.REVOLVING="REVOLVING";As.ROLLINGUP="ROLLINGUP";As.USERDEFINED="USERDEFINED";As.NOTDEFINED="NOTDEFINED";var oI=class{constructor(t){this.value=t}};oI.DOOR="DOOR";oI.GATE="GATE";oI.TRAPDOOR="TRAPDOOR";oI.USERDEFINED="USERDEFINED";oI.NOTDEFINED="NOTDEFINED";var hs=class{constructor(t){this.value=t}};hs.SINGLE_SWING_LEFT="SINGLE_SWING_LEFT";hs.SINGLE_SWING_RIGHT="SINGLE_SWING_RIGHT";hs.DOUBLE_DOOR_SINGLE_SWING="DOUBLE_DOOR_SINGLE_SWING";hs.DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT="DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT";hs.DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT="DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT";hs.DOUBLE_SWING_LEFT="DOUBLE_SWING_LEFT";hs.DOUBLE_SWING_RIGHT="DOUBLE_SWING_RIGHT";hs.DOUBLE_DOOR_DOUBLE_SWING="DOUBLE_DOOR_DOUBLE_SWING";hs.SLIDING_TO_LEFT="SLIDING_TO_LEFT";hs.SLIDING_TO_RIGHT="SLIDING_TO_RIGHT";hs.DOUBLE_DOOR_SLIDING="DOUBLE_DOOR_SLIDING";hs.FOLDING_TO_LEFT="FOLDING_TO_LEFT";hs.FOLDING_TO_RIGHT="FOLDING_TO_RIGHT";hs.DOUBLE_DOOR_FOLDING="DOUBLE_DOOR_FOLDING";hs.REVOLVING="REVOLVING";hs.ROLLINGUP="ROLLINGUP";hs.SWING_FIXED_LEFT="SWING_FIXED_LEFT";hs.SWING_FIXED_RIGHT="SWING_FIXED_RIGHT";hs.USERDEFINED="USERDEFINED";hs.NOTDEFINED="NOTDEFINED";var Wp=class{constructor(t){this.value=t}};Wp.BEND="BEND";Wp.CONNECTOR="CONNECTOR";Wp.ENTRY="ENTRY";Wp.EXIT="EXIT";Wp.JUNCTION="JUNCTION";Wp.OBSTRUCTION="OBSTRUCTION";Wp.TRANSITION="TRANSITION";Wp.USERDEFINED="USERDEFINED";Wp.NOTDEFINED="NOTDEFINED";var hA=class{constructor(t){this.value=t}};hA.RIGIDSEGMENT="RIGIDSEGMENT";hA.FLEXIBLESEGMENT="FLEXIBLESEGMENT";hA.USERDEFINED="USERDEFINED";hA.NOTDEFINED="NOTDEFINED";var lI=class{constructor(t){this.value=t}};lI.FLATOVAL="FLATOVAL";lI.RECTANGULAR="RECTANGULAR";lI.ROUND="ROUND";lI.USERDEFINED="USERDEFINED";lI.NOTDEFINED="NOTDEFINED";var Os=class{constructor(t){this.value=t}};Os.DISHWASHER="DISHWASHER";Os.ELECTRICCOOKER="ELECTRICCOOKER";Os.FREESTANDINGELECTRICHEATER="FREESTANDINGELECTRICHEATER";Os.FREESTANDINGFAN="FREESTANDINGFAN";Os.FREESTANDINGWATERHEATER="FREESTANDINGWATERHEATER";Os.FREESTANDINGWATERCOOLER="FREESTANDINGWATERCOOLER";Os.FREEZER="FREEZER";Os.FRIDGE_FREEZER="FRIDGE_FREEZER";Os.HANDDRYER="HANDDRYER";Os.KITCHENMACHINE="KITCHENMACHINE";Os.MICROWAVE="MICROWAVE";Os.PHOTOCOPIER="PHOTOCOPIER";Os.REFRIGERATOR="REFRIGERATOR";Os.TUMBLEDRYER="TUMBLEDRYER";Os.VENDINGMACHINE="VENDINGMACHINE";Os.WASHINGMACHINE="WASHINGMACHINE";Os.USERDEFINED="USERDEFINED";Os.NOTDEFINED="NOTDEFINED";var IT=class{constructor(t){this.value=t}};IT.CONSUMERUNIT="CONSUMERUNIT";IT.DISTRIBUTIONBOARD="DISTRIBUTIONBOARD";IT.MOTORCONTROLCENTRE="MOTORCONTROLCENTRE";IT.SWITCHBOARD="SWITCHBOARD";IT.USERDEFINED="USERDEFINED";IT.NOTDEFINED="NOTDEFINED";var i0=class{constructor(t){this.value=t}};i0.BATTERY="BATTERY";i0.CAPACITORBANK="CAPACITORBANK";i0.HARMONICFILTER="HARMONICFILTER";i0.INDUCTORBANK="INDUCTORBANK";i0.UPS="UPS";i0.USERDEFINED="USERDEFINED";i0.NOTDEFINED="NOTDEFINED";var cI=class{constructor(t){this.value=t}};cI.CHP="CHP";cI.ENGINEGENERATOR="ENGINEGENERATOR";cI.STANDALONE="STANDALONE";cI.USERDEFINED="USERDEFINED";cI.NOTDEFINED="NOTDEFINED";var n0=class{constructor(t){this.value=t}};n0.DC="DC";n0.INDUCTION="INDUCTION";n0.POLYPHASE="POLYPHASE";n0.RELUCTANCESYNCHRONOUS="RELUCTANCESYNCHRONOUS";n0.SYNCHRONOUS="SYNCHRONOUS";n0.USERDEFINED="USERDEFINED";n0.NOTDEFINED="NOTDEFINED";var uI=class{constructor(t){this.value=t}};uI.TIMECLOCK="TIMECLOCK";uI.TIMEDELAY="TIMEDELAY";uI.RELAY="RELAY";uI.USERDEFINED="USERDEFINED";uI.NOTDEFINED="NOTDEFINED";var Js=class{constructor(t){this.value=t}};Js.ACCESSORY_ASSEMBLY="ACCESSORY_ASSEMBLY";Js.ARCH="ARCH";Js.BEAM_GRID="BEAM_GRID";Js.BRACED_FRAME="BRACED_FRAME";Js.GIRDER="GIRDER";Js.REINFORCEMENT_UNIT="REINFORCEMENT_UNIT";Js.RIGID_FRAME="RIGID_FRAME";Js.SLAB_FIELD="SLAB_FIELD";Js.TRUSS="TRUSS";Js.ABUTMENT="ABUTMENT";Js.PIER="PIER";Js.PYLON="PYLON";Js.CROSS_BRACING="CROSS_BRACING";Js.DECK="DECK";Js.USERDEFINED="USERDEFINED";Js.NOTDEFINED="NOTDEFINED";var Hk=class{constructor(t){this.value=t}};Hk.COMPLEX="COMPLEX";Hk.ELEMENT="ELEMENT";Hk.PARTIAL="PARTIAL";var pA=class{constructor(t){this.value=t}};pA.EXTERNALCOMBUSTION="EXTERNALCOMBUSTION";pA.INTERNALCOMBUSTION="INTERNALCOMBUSTION";pA.USERDEFINED="USERDEFINED";pA.NOTDEFINED="NOTDEFINED";var kc=class{constructor(t){this.value=t}};kc.DIRECTEVAPORATIVERANDOMMEDIAAIRCOOLER="DIRECTEVAPORATIVERANDOMMEDIAAIRCOOLER";kc.DIRECTEVAPORATIVERIGIDMEDIAAIRCOOLER="DIRECTEVAPORATIVERIGIDMEDIAAIRCOOLER";kc.DIRECTEVAPORATIVESLINGERSPACKAGEDAIRCOOLER="DIRECTEVAPORATIVESLINGERSPACKAGEDAIRCOOLER";kc.DIRECTEVAPORATIVEPACKAGEDROTARYAIRCOOLER="DIRECTEVAPORATIVEPACKAGEDROTARYAIRCOOLER";kc.DIRECTEVAPORATIVEAIRWASHER="DIRECTEVAPORATIVEAIRWASHER";kc.INDIRECTEVAPORATIVEPACKAGEAIRCOOLER="INDIRECTEVAPORATIVEPACKAGEAIRCOOLER";kc.INDIRECTEVAPORATIVEWETCOIL="INDIRECTEVAPORATIVEWETCOIL";kc.INDIRECTEVAPORATIVECOOLINGTOWERORCOILCOOLER="INDIRECTEVAPORATIVECOOLINGTOWERORCOILCOOLER";kc.INDIRECTDIRECTCOMBINATION="INDIRECTDIRECTCOMBINATION";kc.USERDEFINED="USERDEFINED";kc.NOTDEFINED="NOTDEFINED";var Nf=class{constructor(t){this.value=t}};Nf.DIRECTEXPANSION="DIRECTEXPANSION";Nf.DIRECTEXPANSIONSHELLANDTUBE="DIRECTEXPANSIONSHELLANDTUBE";Nf.DIRECTEXPANSIONTUBEINTUBE="DIRECTEXPANSIONTUBEINTUBE";Nf.DIRECTEXPANSIONBRAZEDPLATE="DIRECTEXPANSIONBRAZEDPLATE";Nf.FLOODEDSHELLANDTUBE="FLOODEDSHELLANDTUBE";Nf.SHELLANDCOIL="SHELLANDCOIL";Nf.USERDEFINED="USERDEFINED";Nf.NOTDEFINED="NOTDEFINED";var ST=class{constructor(t){this.value=t}};ST.EVENTRULE="EVENTRULE";ST.EVENTMESSAGE="EVENTMESSAGE";ST.EVENTTIME="EVENTTIME";ST.EVENTCOMPLEX="EVENTCOMPLEX";ST.USERDEFINED="USERDEFINED";ST.NOTDEFINED="NOTDEFINED";var hI=class{constructor(t){this.value=t}};hI.STARTEVENT="STARTEVENT";hI.ENDEVENT="ENDEVENT";hI.INTERMEDIATEEVENT="INTERMEDIATEEVENT";hI.USERDEFINED="USERDEFINED";hI.NOTDEFINED="NOTDEFINED";var _T=class{constructor(t){this.value=t}};_T.EXTERNAL="EXTERNAL";_T.EXTERNAL_EARTH="EXTERNAL_EARTH";_T.EXTERNAL_WATER="EXTERNAL_WATER";_T.EXTERNAL_FIRE="EXTERNAL_FIRE";_T.USERDEFINED="USERDEFINED";_T.NOTDEFINED="NOTDEFINED";var qp=class{constructor(t){this.value=t}};qp.CENTRIFUGALFORWARDCURVED="CENTRIFUGALFORWARDCURVED";qp.CENTRIFUGALRADIAL="CENTRIFUGALRADIAL";qp.CENTRIFUGALBACKWARDINCLINEDCURVED="CENTRIFUGALBACKWARDINCLINEDCURVED";qp.CENTRIFUGALAIRFOIL="CENTRIFUGALAIRFOIL";qp.TUBEAXIAL="TUBEAXIAL";qp.VANEAXIAL="VANEAXIAL";qp.PROPELLORAXIAL="PROPELLORAXIAL";qp.USERDEFINED="USERDEFINED";qp.NOTDEFINED="NOTDEFINED";var pI=class{constructor(t){this.value=t}};pI.GLUE="GLUE";pI.MORTAR="MORTAR";pI.WELD="WELD";pI.USERDEFINED="USERDEFINED";pI.NOTDEFINED="NOTDEFINED";var Lf=class{constructor(t){this.value=t}};Lf.AIRPARTICLEFILTER="AIRPARTICLEFILTER";Lf.COMPRESSEDAIRFILTER="COMPRESSEDAIRFILTER";Lf.ODORFILTER="ODORFILTER";Lf.OILFILTER="OILFILTER";Lf.STRAINER="STRAINER";Lf.WATERFILTER="WATERFILTER";Lf.USERDEFINED="USERDEFINED";Lf.NOTDEFINED="NOTDEFINED";var s0=class{constructor(t){this.value=t}};s0.BREECHINGINLET="BREECHINGINLET";s0.FIREHYDRANT="FIREHYDRANT";s0.HOSEREEL="HOSEREEL";s0.SPRINKLER="SPRINKLER";s0.SPRINKLERDEFLECTOR="SPRINKLERDEFLECTOR";s0.USERDEFINED="USERDEFINED";s0.NOTDEFINED="NOTDEFINED";var dA=class{constructor(t){this.value=t}};dA.SOURCE="SOURCE";dA.SINK="SINK";dA.SOURCEANDSINK="SOURCEANDSINK";dA.NOTDEFINED="NOTDEFINED";var eh=class{constructor(t){this.value=t}};eh.PRESSUREGAUGE="PRESSUREGAUGE";eh.THERMOMETER="THERMOMETER";eh.AMMETER="AMMETER";eh.FREQUENCYMETER="FREQUENCYMETER";eh.POWERFACTORMETER="POWERFACTORMETER";eh.PHASEANGLEMETER="PHASEANGLEMETER";eh.VOLTMETER_PEAK="VOLTMETER_PEAK";eh.VOLTMETER_RMS="VOLTMETER_RMS";eh.USERDEFINED="USERDEFINED";eh.NOTDEFINED="NOTDEFINED";var wT=class{constructor(t){this.value=t}};wT.ENERGYMETER="ENERGYMETER";wT.GASMETER="GASMETER";wT.OILMETER="OILMETER";wT.WATERMETER="WATERMETER";wT.USERDEFINED="USERDEFINED";wT.NOTDEFINED="NOTDEFINED";var a0=class{constructor(t){this.value=t}};a0.CAISSON_FOUNDATION="CAISSON_FOUNDATION";a0.FOOTING_BEAM="FOOTING_BEAM";a0.PAD_FOOTING="PAD_FOOTING";a0.PILE_CAP="PILE_CAP";a0.STRIP_FOOTING="STRIP_FOOTING";a0.USERDEFINED="USERDEFINED";a0.NOTDEFINED="NOTDEFINED";var Yp=class{constructor(t){this.value=t}};Yp.CHAIR="CHAIR";Yp.TABLE="TABLE";Yp.DESK="DESK";Yp.BED="BED";Yp.FILECABINET="FILECABINET";Yp.SHELF="SHELF";Yp.SOFA="SOFA";Yp.USERDEFINED="USERDEFINED";Yp.NOTDEFINED="NOTDEFINED";var fA=class{constructor(t){this.value=t}};fA.TERRAIN="TERRAIN";fA.SOIL_BORING_POINT="SOIL_BORING_POINT";fA.USERDEFINED="USERDEFINED";fA.NOTDEFINED="NOTDEFINED";var Xp=class{constructor(t){this.value=t}};Xp.GRAPH_VIEW="GRAPH_VIEW";Xp.SKETCH_VIEW="SKETCH_VIEW";Xp.MODEL_VIEW="MODEL_VIEW";Xp.PLAN_VIEW="PLAN_VIEW";Xp.REFLECTED_PLAN_VIEW="REFLECTED_PLAN_VIEW";Xp.SECTION_VIEW="SECTION_VIEW";Xp.ELEVATION_VIEW="ELEVATION_VIEW";Xp.USERDEFINED="USERDEFINED";Xp.NOTDEFINED="NOTDEFINED";var Fde=class{constructor(t){this.value=t}};Fde.GLOBAL_COORDS="GLOBAL_COORDS";Fde.LOCAL_COORDS="LOCAL_COORDS";var RT=class{constructor(t){this.value=t}};RT.RECTANGULAR="RECTANGULAR";RT.RADIAL="RADIAL";RT.TRIANGULAR="TRIANGULAR";RT.IRREGULAR="IRREGULAR";RT.USERDEFINED="USERDEFINED";RT.NOTDEFINED="NOTDEFINED";var mA=class{constructor(t){this.value=t}};mA.PLATE="PLATE";mA.SHELLANDTUBE="SHELLANDTUBE";mA.USERDEFINED="USERDEFINED";mA.NOTDEFINED="NOTDEFINED";var Aa=class{constructor(t){this.value=t}};Aa.STEAMINJECTION="STEAMINJECTION";Aa.ADIABATICAIRWASHER="ADIABATICAIRWASHER";Aa.ADIABATICPAN="ADIABATICPAN";Aa.ADIABATICWETTEDELEMENT="ADIABATICWETTEDELEMENT";Aa.ADIABATICATOMIZING="ADIABATICATOMIZING";Aa.ADIABATICULTRASONIC="ADIABATICULTRASONIC";Aa.ADIABATICRIGIDMEDIA="ADIABATICRIGIDMEDIA";Aa.ADIABATICCOMPRESSEDAIRNOZZLE="ADIABATICCOMPRESSEDAIRNOZZLE";Aa.ASSISTEDELECTRIC="ASSISTEDELECTRIC";Aa.ASSISTEDNATURALGAS="ASSISTEDNATURALGAS";Aa.ASSISTEDPROPANE="ASSISTEDPROPANE";Aa.ASSISTEDBUTANE="ASSISTEDBUTANE";Aa.ASSISTEDSTEAM="ASSISTEDSTEAM";Aa.USERDEFINED="USERDEFINED";Aa.NOTDEFINED="NOTDEFINED";var MT=class{constructor(t){this.value=t}};MT.CYCLONIC="CYCLONIC";MT.GREASE="GREASE";MT.OIL="OIL";MT.PETROL="PETROL";MT.USERDEFINED="USERDEFINED";MT.NOTDEFINED="NOTDEFINED";var DT=class{constructor(t){this.value=t}};DT.INTERNAL="INTERNAL";DT.EXTERNAL="EXTERNAL";DT.EXTERNAL_EARTH="EXTERNAL_EARTH";DT.EXTERNAL_WATER="EXTERNAL_WATER";DT.EXTERNAL_FIRE="EXTERNAL_FIRE";DT.NOTDEFINED="NOTDEFINED";var dI=class{constructor(t){this.value=t}};dI.ASSETINVENTORY="ASSETINVENTORY";dI.SPACEINVENTORY="SPACEINVENTORY";dI.FURNITUREINVENTORY="FURNITUREINVENTORY";dI.USERDEFINED="USERDEFINED";dI.NOTDEFINED="NOTDEFINED";var gA=class{constructor(t){this.value=t}};gA.DATA="DATA";gA.POWER="POWER";gA.USERDEFINED="USERDEFINED";gA.NOTDEFINED="NOTDEFINED";var vA=class{constructor(t){this.value=t}};vA.UNIFORM_KNOTS="UNIFORM_KNOTS";vA.QUASI_UNIFORM_KNOTS="QUASI_UNIFORM_KNOTS";vA.PIECEWISE_BEZIER_KNOTS="PIECEWISE_BEZIER_KNOTS";vA.UNSPECIFIED="UNSPECIFIED";var is=class{constructor(t){this.value=t}};is.ADMINISTRATION="ADMINISTRATION";is.CARPENTRY="CARPENTRY";is.CLEANING="CLEANING";is.CONCRETE="CONCRETE";is.DRYWALL="DRYWALL";is.ELECTRIC="ELECTRIC";is.FINISHING="FINISHING";is.FLOORING="FLOORING";is.GENERAL="GENERAL";is.HVAC="HVAC";is.LANDSCAPING="LANDSCAPING";is.MASONRY="MASONRY";is.PAINTING="PAINTING";is.PAVING="PAVING";is.PLUMBING="PLUMBING";is.ROOFING="ROOFING";is.SITEGRADING="SITEGRADING";is.STEELWORK="STEELWORK";is.SURVEYING="SURVEYING";is.USERDEFINED="USERDEFINED";is.NOTDEFINED="NOTDEFINED";var Gc=class{constructor(t){this.value=t}};Gc.COMPACTFLUORESCENT="COMPACTFLUORESCENT";Gc.FLUORESCENT="FLUORESCENT";Gc.HALOGEN="HALOGEN";Gc.HIGHPRESSUREMERCURY="HIGHPRESSUREMERCURY";Gc.HIGHPRESSURESODIUM="HIGHPRESSURESODIUM";Gc.LED="LED";Gc.METALHALIDE="METALHALIDE";Gc.OLED="OLED";Gc.TUNGSTENFILAMENT="TUNGSTENFILAMENT";Gc.USERDEFINED="USERDEFINED";Gc.NOTDEFINED="NOTDEFINED";var Uk=class{constructor(t){this.value=t}};Uk.AXIS1="AXIS1";Uk.AXIS2="AXIS2";Uk.AXIS3="AXIS3";var yA=class{constructor(t){this.value=t}};yA.TYPE_A="TYPE_A";yA.TYPE_B="TYPE_B";yA.TYPE_C="TYPE_C";yA.NOTDEFINED="NOTDEFINED";var Vc=class{constructor(t){this.value=t}};Vc.COMPACTFLUORESCENT="COMPACTFLUORESCENT";Vc.FLUORESCENT="FLUORESCENT";Vc.HIGHPRESSUREMERCURY="HIGHPRESSUREMERCURY";Vc.HIGHPRESSURESODIUM="HIGHPRESSURESODIUM";Vc.LIGHTEMITTINGDIODE="LIGHTEMITTINGDIODE";Vc.LOWPRESSURESODIUM="LOWPRESSURESODIUM";Vc.LOWVOLTAGEHALOGEN="LOWVOLTAGEHALOGEN";Vc.MAINVOLTAGEHALOGEN="MAINVOLTAGEHALOGEN";Vc.METALHALIDE="METALHALIDE";Vc.TUNGSTENFILAMENT="TUNGSTENFILAMENT";Vc.NOTDEFINED="NOTDEFINED";var fI=class{constructor(t){this.value=t}};fI.POINTSOURCE="POINTSOURCE";fI.DIRECTIONSOURCE="DIRECTIONSOURCE";fI.SECURITYLIGHTING="SECURITYLIGHTING";fI.USERDEFINED="USERDEFINED";fI.NOTDEFINED="NOTDEFINED";var mI=class{constructor(t){this.value=t}};mI.LOAD_GROUP="LOAD_GROUP";mI.LOAD_CASE="LOAD_CASE";mI.LOAD_COMBINATION="LOAD_COMBINATION";mI.USERDEFINED="USERDEFINED";mI.NOTDEFINED="NOTDEFINED";var gI=class{constructor(t){this.value=t}};gI.LOGICALAND="LOGICALAND";gI.LOGICALOR="LOGICALOR";gI.LOGICALXOR="LOGICALXOR";gI.LOGICALNOTAND="LOGICALNOTAND";gI.LOGICALNOTOR="LOGICALNOTOR";var Jo=class{constructor(t){this.value=t}};Jo.ANCHORBOLT="ANCHORBOLT";Jo.BOLT="BOLT";Jo.DOWEL="DOWEL";Jo.NAIL="NAIL";Jo.NAILPLATE="NAILPLATE";Jo.RIVET="RIVET";Jo.SCREW="SCREW";Jo.SHEARCONNECTOR="SHEARCONNECTOR";Jo.STAPLE="STAPLE";Jo.STUDSHEARCONNECTOR="STUDSHEARCONNECTOR";Jo.COUPLER="COUPLER";Jo.USERDEFINED="USERDEFINED";Jo.NOTDEFINED="NOTDEFINED";var o0=class{constructor(t){this.value=t}};o0.AIRSTATION="AIRSTATION";o0.FEEDAIRUNIT="FEEDAIRUNIT";o0.OXYGENGENERATOR="OXYGENGENERATOR";o0.OXYGENPLANT="OXYGENPLANT";o0.VACUUMSTATION="VACUUMSTATION";o0.USERDEFINED="USERDEFINED";o0.NOTDEFINED="NOTDEFINED";var xs=class{constructor(t){this.value=t}};xs.BRACE="BRACE";xs.CHORD="CHORD";xs.COLLAR="COLLAR";xs.MEMBER="MEMBER";xs.MULLION="MULLION";xs.PLATE="PLATE";xs.POST="POST";xs.PURLIN="PURLIN";xs.RAFTER="RAFTER";xs.STRINGER="STRINGER";xs.STRUT="STRUT";xs.STUD="STUD";xs.STIFFENING_RIB="STIFFENING_RIB";xs.ARCH_SEGMENT="ARCH_SEGMENT";xs.SUSPENSION_CABLE="SUSPENSION_CABLE";xs.SUSPENDER="SUSPENDER";xs.STAY_CABLE="STAY_CABLE";xs.USERDEFINED="USERDEFINED";xs.NOTDEFINED="NOTDEFINED";var vI=class{constructor(t){this.value=t}};vI.BELTDRIVE="BELTDRIVE";vI.COUPLING="COUPLING";vI.DIRECTDRIVE="DIRECTDRIVE";vI.USERDEFINED="USERDEFINED";vI.NOTDEFINED="NOTDEFINED";var U3t=class{constructor(t){this.value=t}};U3t.NULL="NULL";var Ff=class{constructor(t){this.value=t}};Ff.PRODUCT="PRODUCT";Ff.PROCESS="PROCESS";Ff.CONTROL="CONTROL";Ff.RESOURCE="RESOURCE";Ff.ACTOR="ACTOR";Ff.GROUP="GROUP";Ff.PROJECT="PROJECT";Ff.NOTDEFINED="NOTDEFINED";var Qo=class{constructor(t){this.value=t}};Qo.CODECOMPLIANCE="CODECOMPLIANCE";Qo.CODEWAIVER="CODEWAIVER";Qo.DESIGNINTENT="DESIGNINTENT";Qo.EXTERNAL="EXTERNAL";Qo.HEALTHANDSAFETY="HEALTHANDSAFETY";Qo.MERGECONFLICT="MERGECONFLICT";Qo.MODELVIEW="MODELVIEW";Qo.PARAMETER="PARAMETER";Qo.REQUIREMENT="REQUIREMENT";Qo.SPECIFICATION="SPECIFICATION";Qo.TRIGGERCONDITION="TRIGGERCONDITION";Qo.USERDEFINED="USERDEFINED";Qo.NOTDEFINED="NOTDEFINED";var $p=class{constructor(t){this.value=t}};$p.ASSIGNEE="ASSIGNEE";$p.ASSIGNOR="ASSIGNOR";$p.LESSEE="LESSEE";$p.LESSOR="LESSOR";$p.LETTINGAGENT="LETTINGAGENT";$p.OWNER="OWNER";$p.TENANT="TENANT";$p.USERDEFINED="USERDEFINED";$p.NOTDEFINED="NOTDEFINED";var TA=class{constructor(t){this.value=t}};TA.OPENING="OPENING";TA.RECESS="RECESS";TA.USERDEFINED="USERDEFINED";TA.NOTDEFINED="NOTDEFINED";var l0=class{constructor(t){this.value=t}};l0.AUDIOVISUALOUTLET="AUDIOVISUALOUTLET";l0.COMMUNICATIONSOUTLET="COMMUNICATIONSOUTLET";l0.POWEROUTLET="POWEROUTLET";l0.DATAOUTLET="DATAOUTLET";l0.TELEPHONEOUTLET="TELEPHONEOUTLET";l0.USERDEFINED="USERDEFINED";l0.NOTDEFINED="NOTDEFINED";var Hde=class{constructor(t){this.value=t}};Hde.USERDEFINED="USERDEFINED";Hde.NOTDEFINED="NOTDEFINED";var yI=class{constructor(t){this.value=t}};yI.GRILL="GRILL";yI.LOUVER="LOUVER";yI.SCREEN="SCREEN";yI.USERDEFINED="USERDEFINED";yI.NOTDEFINED="NOTDEFINED";var TI=class{constructor(t){this.value=t}};TI.ACCESS="ACCESS";TI.BUILDING="BUILDING";TI.WORK="WORK";TI.USERDEFINED="USERDEFINED";TI.NOTDEFINED="NOTDEFINED";var Bk=class{constructor(t){this.value=t}};Bk.PHYSICAL="PHYSICAL";Bk.VIRTUAL="VIRTUAL";Bk.NOTDEFINED="NOTDEFINED";var CT=class{constructor(t){this.value=t}};CT.CAST_IN_PLACE="CAST_IN_PLACE";CT.COMPOSITE="COMPOSITE";CT.PRECAST_CONCRETE="PRECAST_CONCRETE";CT.PREFAB_STEEL="PREFAB_STEEL";CT.USERDEFINED="USERDEFINED";CT.NOTDEFINED="NOTDEFINED";var Hf=class{constructor(t){this.value=t}};Hf.BORED="BORED";Hf.DRIVEN="DRIVEN";Hf.JETGROUTING="JETGROUTING";Hf.COHESION="COHESION";Hf.FRICTION="FRICTION";Hf.SUPPORT="SUPPORT";Hf.USERDEFINED="USERDEFINED";Hf.NOTDEFINED="NOTDEFINED";var Zp=class{constructor(t){this.value=t}};Zp.BEND="BEND";Zp.CONNECTOR="CONNECTOR";Zp.ENTRY="ENTRY";Zp.EXIT="EXIT";Zp.JUNCTION="JUNCTION";Zp.OBSTRUCTION="OBSTRUCTION";Zp.TRANSITION="TRANSITION";Zp.USERDEFINED="USERDEFINED";Zp.NOTDEFINED="NOTDEFINED";var c0=class{constructor(t){this.value=t}};c0.CULVERT="CULVERT";c0.FLEXIBLESEGMENT="FLEXIBLESEGMENT";c0.RIGIDSEGMENT="RIGIDSEGMENT";c0.GUTTER="GUTTER";c0.SPOOL="SPOOL";c0.USERDEFINED="USERDEFINED";c0.NOTDEFINED="NOTDEFINED";var zc=class{constructor(t){this.value=t}};zc.CURTAIN_PANEL="CURTAIN_PANEL";zc.SHEET="SHEET";zc.FLANGE_PLATE="FLANGE_PLATE";zc.WEB_PLATE="WEB_PLATE";zc.STIFFENER_PLATE="STIFFENER_PLATE";zc.GUSSET_PLATE="GUSSET_PLATE";zc.COVER_PLATE="COVER_PLATE";zc.SPLICE_PLATE="SPLICE_PLATE";zc.BASE_PLATE="BASE_PLATE";zc.USERDEFINED="USERDEFINED";zc.NOTDEFINED="NOTDEFINED";var kk=class{constructor(t){this.value=t}};kk.CURVE3D="CURVE3D";kk.PCURVE_S1="PCURVE_S1";kk.PCURVE_S2="PCURVE_S2";var Kp=class{constructor(t){this.value=t}};Kp.ADVICE_CAUTION="ADVICE_CAUTION";Kp.ADVICE_NOTE="ADVICE_NOTE";Kp.ADVICE_WARNING="ADVICE_WARNING";Kp.CALIBRATION="CALIBRATION";Kp.DIAGNOSTIC="DIAGNOSTIC";Kp.SHUTDOWN="SHUTDOWN";Kp.STARTUP="STARTUP";Kp.USERDEFINED="USERDEFINED";Kp.NOTDEFINED="NOTDEFINED";var Ude=class{constructor(t){this.value=t}};Ude.CURVE="CURVE";Ude.AREA="AREA";var u0=class{constructor(t){this.value=t}};u0.CHANGEORDER="CHANGEORDER";u0.MAINTENANCEWORKORDER="MAINTENANCEWORKORDER";u0.MOVEORDER="MOVEORDER";u0.PURCHASEORDER="PURCHASEORDER";u0.WORKORDER="WORKORDER";u0.USERDEFINED="USERDEFINED";u0.NOTDEFINED="NOTDEFINED";var Bde=class{constructor(t){this.value=t}};Bde.PROJECTED_LENGTH="PROJECTED_LENGTH";Bde.TRUE_LENGTH="TRUE_LENGTH";var EA=class{constructor(t){this.value=t}};EA.BLISTER="BLISTER";EA.DEVIATOR="DEVIATOR";EA.USERDEFINED="USERDEFINED";EA.NOTDEFINED="NOTDEFINED";var Uf=class{constructor(t){this.value=t}};Uf.PSET_TYPEDRIVENONLY="PSET_TYPEDRIVENONLY";Uf.PSET_TYPEDRIVENOVERRIDE="PSET_TYPEDRIVENOVERRIDE";Uf.PSET_OCCURRENCEDRIVEN="PSET_OCCURRENCEDRIVEN";Uf.PSET_PERFORMANCEDRIVEN="PSET_PERFORMANCEDRIVEN";Uf.QTO_TYPEDRIVENONLY="QTO_TYPEDRIVENONLY";Uf.QTO_TYPEDRIVENOVERRIDE="QTO_TYPEDRIVENOVERRIDE";Uf.QTO_OCCURRENCEDRIVEN="QTO_OCCURRENCEDRIVEN";Uf.NOTDEFINED="NOTDEFINED";var AT=class{constructor(t){this.value=t}};AT.ELECTRONIC="ELECTRONIC";AT.ELECTROMAGNETIC="ELECTROMAGNETIC";AT.RESIDUALCURRENT="RESIDUALCURRENT";AT.THERMAL="THERMAL";AT.USERDEFINED="USERDEFINED";AT.NOTDEFINED="NOTDEFINED";var Jp=class{constructor(t){this.value=t}};Jp.CIRCUITBREAKER="CIRCUITBREAKER";Jp.EARTHLEAKAGECIRCUITBREAKER="EARTHLEAKAGECIRCUITBREAKER";Jp.EARTHINGSWITCH="EARTHINGSWITCH";Jp.FUSEDISCONNECTOR="FUSEDISCONNECTOR";Jp.RESIDUALCURRENTCIRCUITBREAKER="RESIDUALCURRENTCIRCUITBREAKER";Jp.RESIDUALCURRENTSWITCH="RESIDUALCURRENTSWITCH";Jp.VARISTOR="VARISTOR";Jp.USERDEFINED="USERDEFINED";Jp.NOTDEFINED="NOTDEFINED";var Qp=class{constructor(t){this.value=t}};Qp.CIRCULATOR="CIRCULATOR";Qp.ENDSUCTION="ENDSUCTION";Qp.SPLITCASE="SPLITCASE";Qp.SUBMERSIBLEPUMP="SUBMERSIBLEPUMP";Qp.SUMPPUMP="SUMPPUMP";Qp.VERTICALINLINE="VERTICALINLINE";Qp.VERTICALTURBINE="VERTICALTURBINE";Qp.USERDEFINED="USERDEFINED";Qp.NOTDEFINED="NOTDEFINED";var EI=class{constructor(t){this.value=t}};EI.HANDRAIL="HANDRAIL";EI.GUARDRAIL="GUARDRAIL";EI.BALUSTRADE="BALUSTRADE";EI.USERDEFINED="USERDEFINED";EI.NOTDEFINED="NOTDEFINED";var bA=class{constructor(t){this.value=t}};bA.STRAIGHT="STRAIGHT";bA.SPIRAL="SPIRAL";bA.USERDEFINED="USERDEFINED";bA.NOTDEFINED="NOTDEFINED";var Bf=class{constructor(t){this.value=t}};Bf.STRAIGHT_RUN_RAMP="STRAIGHT_RUN_RAMP";Bf.TWO_STRAIGHT_RUN_RAMP="TWO_STRAIGHT_RUN_RAMP";Bf.QUARTER_TURN_RAMP="QUARTER_TURN_RAMP";Bf.TWO_QUARTER_TURN_RAMP="TWO_QUARTER_TURN_RAMP";Bf.HALF_TURN_RAMP="HALF_TURN_RAMP";Bf.SPIRAL_RAMP="SPIRAL_RAMP";Bf.USERDEFINED="USERDEFINED";Bf.NOTDEFINED="NOTDEFINED";var kf=class{constructor(t){this.value=t}};kf.DAILY="DAILY";kf.WEEKLY="WEEKLY";kf.MONTHLY_BY_DAY_OF_MONTH="MONTHLY_BY_DAY_OF_MONTH";kf.MONTHLY_BY_POSITION="MONTHLY_BY_POSITION";kf.BY_DAY_COUNT="BY_DAY_COUNT";kf.BY_WEEKDAY_COUNT="BY_WEEKDAY_COUNT";kf.YEARLY_BY_DAY_OF_MONTH="YEARLY_BY_DAY_OF_MONTH";kf.YEARLY_BY_POSITION="YEARLY_BY_POSITION";var bI=class{constructor(t){this.value=t}};bI.KILOPOINT="KILOPOINT";bI.MILEPOINT="MILEPOINT";bI.STATION="STATION";bI.USERDEFINED="USERDEFINED";bI.NOTDEFINED="NOTDEFINED";var th=class{constructor(t){this.value=t}};th.BLINN="BLINN";th.FLAT="FLAT";th.GLASS="GLASS";th.MATT="MATT";th.METAL="METAL";th.MIRROR="MIRROR";th.PHONG="PHONG";th.PLASTIC="PLASTIC";th.STRAUSS="STRAUSS";th.NOTDEFINED="NOTDEFINED";var rh=class{constructor(t){this.value=t}};rh.MAIN="MAIN";rh.SHEAR="SHEAR";rh.LIGATURE="LIGATURE";rh.STUD="STUD";rh.PUNCHING="PUNCHING";rh.EDGE="EDGE";rh.RING="RING";rh.ANCHORING="ANCHORING";rh.USERDEFINED="USERDEFINED";rh.NOTDEFINED="NOTDEFINED";var kde=class{constructor(t){this.value=t}};kde.PLAIN="PLAIN";kde.TEXTURED="TEXTURED";var jc=class{constructor(t){this.value=t}};jc.ANCHORING="ANCHORING";jc.EDGE="EDGE";jc.LIGATURE="LIGATURE";jc.MAIN="MAIN";jc.PUNCHING="PUNCHING";jc.RING="RING";jc.SHEAR="SHEAR";jc.STUD="STUD";jc.SPACEBAR="SPACEBAR";jc.USERDEFINED="USERDEFINED";jc.NOTDEFINED="NOTDEFINED";var Gde=class{constructor(t){this.value=t}};Gde.USERDEFINED="USERDEFINED";Gde.NOTDEFINED="NOTDEFINED";var Nn=class{constructor(t){this.value=t}};Nn.SUPPLIER="SUPPLIER";Nn.MANUFACTURER="MANUFACTURER";Nn.CONTRACTOR="CONTRACTOR";Nn.SUBCONTRACTOR="SUBCONTRACTOR";Nn.ARCHITECT="ARCHITECT";Nn.STRUCTURALENGINEER="STRUCTURALENGINEER";Nn.COSTENGINEER="COSTENGINEER";Nn.CLIENT="CLIENT";Nn.BUILDINGOWNER="BUILDINGOWNER";Nn.BUILDINGOPERATOR="BUILDINGOPERATOR";Nn.MECHANICALENGINEER="MECHANICALENGINEER";Nn.ELECTRICALENGINEER="ELECTRICALENGINEER";Nn.PROJECTMANAGER="PROJECTMANAGER";Nn.FACILITIESMANAGER="FACILITIESMANAGER";Nn.CIVILENGINEER="CIVILENGINEER";Nn.COMMISSIONINGENGINEER="COMMISSIONINGENGINEER";Nn.ENGINEER="ENGINEER";Nn.OWNER="OWNER";Nn.CONSULTANT="CONSULTANT";Nn.CONSTRUCTIONMANAGER="CONSTRUCTIONMANAGER";Nn.FIELDCONSTRUCTIONMANAGER="FIELDCONSTRUCTIONMANAGER";Nn.RESELLER="RESELLER";Nn.USERDEFINED="USERDEFINED";var Oa=class{constructor(t){this.value=t}};Oa.FLAT_ROOF="FLAT_ROOF";Oa.SHED_ROOF="SHED_ROOF";Oa.GABLE_ROOF="GABLE_ROOF";Oa.HIP_ROOF="HIP_ROOF";Oa.HIPPED_GABLE_ROOF="HIPPED_GABLE_ROOF";Oa.GAMBREL_ROOF="GAMBREL_ROOF";Oa.MANSARD_ROOF="MANSARD_ROOF";Oa.BARREL_ROOF="BARREL_ROOF";Oa.RAINBOW_ROOF="RAINBOW_ROOF";Oa.BUTTERFLY_ROOF="BUTTERFLY_ROOF";Oa.PAVILION_ROOF="PAVILION_ROOF";Oa.DOME_ROOF="DOME_ROOF";Oa.FREEFORM="FREEFORM";Oa.USERDEFINED="USERDEFINED";Oa.NOTDEFINED="NOTDEFINED";var Qs=class{constructor(t){this.value=t}};Qs.EXA="EXA";Qs.PETA="PETA";Qs.TERA="TERA";Qs.GIGA="GIGA";Qs.MEGA="MEGA";Qs.KILO="KILO";Qs.HECTO="HECTO";Qs.DECA="DECA";Qs.DECI="DECI";Qs.CENTI="CENTI";Qs.MILLI="MILLI";Qs.MICRO="MICRO";Qs.NANO="NANO";Qs.PICO="PICO";Qs.FEMTO="FEMTO";Qs.ATTO="ATTO";var Wi=class{constructor(t){this.value=t}};Wi.AMPERE="AMPERE";Wi.BECQUEREL="BECQUEREL";Wi.CANDELA="CANDELA";Wi.COULOMB="COULOMB";Wi.CUBIC_METRE="CUBIC_METRE";Wi.DEGREE_CELSIUS="DEGREE_CELSIUS";Wi.FARAD="FARAD";Wi.GRAM="GRAM";Wi.GRAY="GRAY";Wi.HENRY="HENRY";Wi.HERTZ="HERTZ";Wi.JOULE="JOULE";Wi.KELVIN="KELVIN";Wi.LUMEN="LUMEN";Wi.LUX="LUX";Wi.METRE="METRE";Wi.MOLE="MOLE";Wi.NEWTON="NEWTON";Wi.OHM="OHM";Wi.PASCAL="PASCAL";Wi.RADIAN="RADIAN";Wi.SECOND="SECOND";Wi.SIEMENS="SIEMENS";Wi.SIEVERT="SIEVERT";Wi.SQUARE_METRE="SQUARE_METRE";Wi.STERADIAN="STERADIAN";Wi.TESLA="TESLA";Wi.VOLT="VOLT";Wi.WATT="WATT";Wi.WEBER="WEBER";var Gl=class{constructor(t){this.value=t}};Gl.BATH="BATH";Gl.BIDET="BIDET";Gl.CISTERN="CISTERN";Gl.SHOWER="SHOWER";Gl.SINK="SINK";Gl.SANITARYFOUNTAIN="SANITARYFOUNTAIN";Gl.TOILETPAN="TOILETPAN";Gl.URINAL="URINAL";Gl.WASHHANDBASIN="WASHHANDBASIN";Gl.WCSEAT="WCSEAT";Gl.USERDEFINED="USERDEFINED";Gl.NOTDEFINED="NOTDEFINED";var Vde=class{constructor(t){this.value=t}};Vde.UNIFORM="UNIFORM";Vde.TAPERED="TAPERED";var yn=class{constructor(t){this.value=t}};yn.COSENSOR="COSENSOR";yn.CO2SENSOR="CO2SENSOR";yn.CONDUCTANCESENSOR="CONDUCTANCESENSOR";yn.CONTACTSENSOR="CONTACTSENSOR";yn.FIRESENSOR="FIRESENSOR";yn.FLOWSENSOR="FLOWSENSOR";yn.FROSTSENSOR="FROSTSENSOR";yn.GASSENSOR="GASSENSOR";yn.HEATSENSOR="HEATSENSOR";yn.HUMIDITYSENSOR="HUMIDITYSENSOR";yn.IDENTIFIERSENSOR="IDENTIFIERSENSOR";yn.IONCONCENTRATIONSENSOR="IONCONCENTRATIONSENSOR";yn.LEVELSENSOR="LEVELSENSOR";yn.LIGHTSENSOR="LIGHTSENSOR";yn.MOISTURESENSOR="MOISTURESENSOR";yn.MOVEMENTSENSOR="MOVEMENTSENSOR";yn.PHSENSOR="PHSENSOR";yn.PRESSURESENSOR="PRESSURESENSOR";yn.RADIATIONSENSOR="RADIATIONSENSOR";yn.RADIOACTIVITYSENSOR="RADIOACTIVITYSENSOR";yn.SMOKESENSOR="SMOKESENSOR";yn.SOUNDSENSOR="SOUNDSENSOR";yn.TEMPERATURESENSOR="TEMPERATURESENSOR";yn.WINDSENSOR="WINDSENSOR";yn.USERDEFINED="USERDEFINED";yn.NOTDEFINED="NOTDEFINED";var OT=class{constructor(t){this.value=t}};OT.START_START="START_START";OT.START_FINISH="START_FINISH";OT.FINISH_START="FINISH_START";OT.FINISH_FINISH="FINISH_FINISH";OT.USERDEFINED="USERDEFINED";OT.NOTDEFINED="NOTDEFINED";var xI=class{constructor(t){this.value=t}};xI.JALOUSIE="JALOUSIE";xI.SHUTTER="SHUTTER";xI.AWNING="AWNING";xI.USERDEFINED="USERDEFINED";xI.NOTDEFINED="NOTDEFINED";var Vl=class{constructor(t){this.value=t}};Vl.P_SINGLEVALUE="P_SINGLEVALUE";Vl.P_ENUMERATEDVALUE="P_ENUMERATEDVALUE";Vl.P_BOUNDEDVALUE="P_BOUNDEDVALUE";Vl.P_LISTVALUE="P_LISTVALUE";Vl.P_TABLEVALUE="P_TABLEVALUE";Vl.P_REFERENCEVALUE="P_REFERENCEVALUE";Vl.Q_LENGTH="Q_LENGTH";Vl.Q_AREA="Q_AREA";Vl.Q_VOLUME="Q_VOLUME";Vl.Q_COUNT="Q_COUNT";Vl.Q_WEIGHT="Q_WEIGHT";Vl.Q_TIME="Q_TIME";var ih=class{constructor(t){this.value=t}};ih.FLOOR="FLOOR";ih.ROOF="ROOF";ih.LANDING="LANDING";ih.BASESLAB="BASESLAB";ih.APPROACH_SLAB="APPROACH_SLAB";ih.PAVING="PAVING";ih.WEARING="WEARING";ih.SIDEWALK="SIDEWALK";ih.USERDEFINED="USERDEFINED";ih.NOTDEFINED="NOTDEFINED";var xA=class{constructor(t){this.value=t}};xA.SOLARCOLLECTOR="SOLARCOLLECTOR";xA.SOLARPANEL="SOLARPANEL";xA.USERDEFINED="USERDEFINED";xA.NOTDEFINED="NOTDEFINED";var IA=class{constructor(t){this.value=t}};IA.CONVECTOR="CONVECTOR";IA.RADIATOR="RADIATOR";IA.USERDEFINED="USERDEFINED";IA.NOTDEFINED="NOTDEFINED";var h0=class{constructor(t){this.value=t}};h0.SPACE="SPACE";h0.PARKING="PARKING";h0.GFA="GFA";h0.INTERNAL="INTERNAL";h0.EXTERNAL="EXTERNAL";h0.USERDEFINED="USERDEFINED";h0.NOTDEFINED="NOTDEFINED";var nh=class{constructor(t){this.value=t}};nh.CONSTRUCTION="CONSTRUCTION";nh.FIRESAFETY="FIRESAFETY";nh.LIGHTING="LIGHTING";nh.OCCUPANCY="OCCUPANCY";nh.SECURITY="SECURITY";nh.THERMAL="THERMAL";nh.TRANSPORT="TRANSPORT";nh.VENTILATION="VENTILATION";nh.USERDEFINED="USERDEFINED";nh.NOTDEFINED="NOTDEFINED";var II=class{constructor(t){this.value=t}};II.BIRDCAGE="BIRDCAGE";II.COWL="COWL";II.RAINWATERHOPPER="RAINWATERHOPPER";II.USERDEFINED="USERDEFINED";II.NOTDEFINED="NOTDEFINED";var p0=class{constructor(t){this.value=t}};p0.STRAIGHT="STRAIGHT";p0.WINDER="WINDER";p0.SPIRAL="SPIRAL";p0.CURVED="CURVED";p0.FREEFORM="FREEFORM";p0.USERDEFINED="USERDEFINED";p0.NOTDEFINED="NOTDEFINED";var ea=class{constructor(t){this.value=t}};ea.STRAIGHT_RUN_STAIR="STRAIGHT_RUN_STAIR";ea.TWO_STRAIGHT_RUN_STAIR="TWO_STRAIGHT_RUN_STAIR";ea.QUARTER_WINDING_STAIR="QUARTER_WINDING_STAIR";ea.QUARTER_TURN_STAIR="QUARTER_TURN_STAIR";ea.HALF_WINDING_STAIR="HALF_WINDING_STAIR";ea.HALF_TURN_STAIR="HALF_TURN_STAIR";ea.TWO_QUARTER_WINDING_STAIR="TWO_QUARTER_WINDING_STAIR";ea.TWO_QUARTER_TURN_STAIR="TWO_QUARTER_TURN_STAIR";ea.THREE_QUARTER_WINDING_STAIR="THREE_QUARTER_WINDING_STAIR";ea.THREE_QUARTER_TURN_STAIR="THREE_QUARTER_TURN_STAIR";ea.SPIRAL_STAIR="SPIRAL_STAIR";ea.DOUBLE_RETURN_STAIR="DOUBLE_RETURN_STAIR";ea.CURVED_RUN_STAIR="CURVED_RUN_STAIR";ea.TWO_CURVED_RUN_STAIR="TWO_CURVED_RUN_STAIR";ea.USERDEFINED="USERDEFINED";ea.NOTDEFINED="NOTDEFINED";var SI=class{constructor(t){this.value=t}};SI.READWRITE="READWRITE";SI.READONLY="READONLY";SI.LOCKED="LOCKED";SI.READWRITELOCKED="READWRITELOCKED";SI.READONLYLOCKED="READONLYLOCKED";var ed=class{constructor(t){this.value=t}};ed.CONST="CONST";ed.LINEAR="LINEAR";ed.POLYGONAL="POLYGONAL";ed.EQUIDISTANT="EQUIDISTANT";ed.SINUS="SINUS";ed.PARABOLA="PARABOLA";ed.DISCRETE="DISCRETE";ed.USERDEFINED="USERDEFINED";ed.NOTDEFINED="NOTDEFINED";var d0=class{constructor(t){this.value=t}};d0.RIGID_JOINED_MEMBER="RIGID_JOINED_MEMBER";d0.PIN_JOINED_MEMBER="PIN_JOINED_MEMBER";d0.CABLE="CABLE";d0.TENSION_MEMBER="TENSION_MEMBER";d0.COMPRESSION_MEMBER="COMPRESSION_MEMBER";d0.USERDEFINED="USERDEFINED";d0.NOTDEFINED="NOTDEFINED";var PT=class{constructor(t){this.value=t}};PT.CONST="CONST";PT.BILINEAR="BILINEAR";PT.DISCRETE="DISCRETE";PT.ISOCONTOUR="ISOCONTOUR";PT.USERDEFINED="USERDEFINED";PT.NOTDEFINED="NOTDEFINED";var _I=class{constructor(t){this.value=t}};_I.BENDING_ELEMENT="BENDING_ELEMENT";_I.MEMBRANE_ELEMENT="MEMBRANE_ELEMENT";_I.SHELL="SHELL";_I.USERDEFINED="USERDEFINED";_I.NOTDEFINED="NOTDEFINED";var SA=class{constructor(t){this.value=t}};SA.PURCHASE="PURCHASE";SA.WORK="WORK";SA.USERDEFINED="USERDEFINED";SA.NOTDEFINED="NOTDEFINED";var NT=class{constructor(t){this.value=t}};NT.MARK="MARK";NT.TAG="TAG";NT.TREATMENT="TREATMENT";NT.DEFECT="DEFECT";NT.USERDEFINED="USERDEFINED";NT.NOTDEFINED="NOTDEFINED";var Gk=class{constructor(t){this.value=t}};Gk.POSITIVE="POSITIVE";Gk.NEGATIVE="NEGATIVE";Gk.BOTH="BOTH";var Wc=class{constructor(t){this.value=t}};Wc.CONTACTOR="CONTACTOR";Wc.DIMMERSWITCH="DIMMERSWITCH";Wc.EMERGENCYSTOP="EMERGENCYSTOP";Wc.KEYPAD="KEYPAD";Wc.MOMENTARYSWITCH="MOMENTARYSWITCH";Wc.SELECTORSWITCH="SELECTORSWITCH";Wc.STARTER="STARTER";Wc.SWITCHDISCONNECTOR="SWITCHDISCONNECTOR";Wc.TOGGLESWITCH="TOGGLESWITCH";Wc.USERDEFINED="USERDEFINED";Wc.NOTDEFINED="NOTDEFINED";var _A=class{constructor(t){this.value=t}};_A.PANEL="PANEL";_A.WORKSURFACE="WORKSURFACE";_A.USERDEFINED="USERDEFINED";_A.NOTDEFINED="NOTDEFINED";var td=class{constructor(t){this.value=t}};td.BASIN="BASIN";td.BREAKPRESSURE="BREAKPRESSURE";td.EXPANSION="EXPANSION";td.FEEDANDEXPANSION="FEEDANDEXPANSION";td.PRESSUREVESSEL="PRESSUREVESSEL";td.STORAGE="STORAGE";td.VESSEL="VESSEL";td.USERDEFINED="USERDEFINED";td.NOTDEFINED="NOTDEFINED";var Vk=class{constructor(t){this.value=t}};Vk.ELAPSEDTIME="ELAPSEDTIME";Vk.WORKTIME="WORKTIME";Vk.NOTDEFINED="NOTDEFINED";var yo=class{constructor(t){this.value=t}};yo.ATTENDANCE="ATTENDANCE";yo.CONSTRUCTION="CONSTRUCTION";yo.DEMOLITION="DEMOLITION";yo.DISMANTLE="DISMANTLE";yo.DISPOSAL="DISPOSAL";yo.INSTALLATION="INSTALLATION";yo.LOGISTIC="LOGISTIC";yo.MAINTENANCE="MAINTENANCE";yo.MOVE="MOVE";yo.OPERATION="OPERATION";yo.REMOVAL="REMOVAL";yo.RENOVATION="RENOVATION";yo.USERDEFINED="USERDEFINED";yo.NOTDEFINED="NOTDEFINED";var wI=class{constructor(t){this.value=t}};wI.COUPLER="COUPLER";wI.FIXED_END="FIXED_END";wI.TENSIONING_END="TENSIONING_END";wI.USERDEFINED="USERDEFINED";wI.NOTDEFINED="NOTDEFINED";var f0=class{constructor(t){this.value=t}};f0.DUCT="DUCT";f0.COUPLER="COUPLER";f0.GROUTING_DUCT="GROUTING_DUCT";f0.TRUMPET="TRUMPET";f0.DIABOLO="DIABOLO";f0.USERDEFINED="USERDEFINED";f0.NOTDEFINED="NOTDEFINED";var LT=class{constructor(t){this.value=t}};LT.BAR="BAR";LT.COATED="COATED";LT.STRAND="STRAND";LT.WIRE="WIRE";LT.USERDEFINED="USERDEFINED";LT.NOTDEFINED="NOTDEFINED";var wA=class{constructor(t){this.value=t}};wA.LEFT="LEFT";wA.RIGHT="RIGHT";wA.UP="UP";wA.DOWN="DOWN";var m0=class{constructor(t){this.value=t}};m0.CONTINUOUS="CONTINUOUS";m0.DISCRETE="DISCRETE";m0.DISCRETEBINARY="DISCRETEBINARY";m0.PIECEWISEBINARY="PIECEWISEBINARY";m0.PIECEWISECONSTANT="PIECEWISECONSTANT";m0.PIECEWISECONTINUOUS="PIECEWISECONTINUOUS";m0.NOTDEFINED="NOTDEFINED";var g0=class{constructor(t){this.value=t}};g0.CURRENT="CURRENT";g0.FREQUENCY="FREQUENCY";g0.INVERTER="INVERTER";g0.RECTIFIER="RECTIFIER";g0.VOLTAGE="VOLTAGE";g0.USERDEFINED="USERDEFINED";g0.NOTDEFINED="NOTDEFINED";var RA=class{constructor(t){this.value=t}};RA.DISCONTINUOUS="DISCONTINUOUS";RA.CONTINUOUS="CONTINUOUS";RA.CONTSAMEGRADIENT="CONTSAMEGRADIENT";RA.CONTSAMEGRADIENTSAMECURVATURE="CONTSAMEGRADIENTSAMECURVATURE";var FT=class{constructor(t){this.value=t}};FT.BIQUADRATICPARABOLA="BIQUADRATICPARABOLA";FT.BLOSSCURVE="BLOSSCURVE";FT.CLOTHOIDCURVE="CLOTHOIDCURVE";FT.COSINECURVE="COSINECURVE";FT.CUBICPARABOLA="CUBICPARABOLA";FT.SINECURVE="SINECURVE";var v0=class{constructor(t){this.value=t}};v0.ELEVATOR="ELEVATOR";v0.ESCALATOR="ESCALATOR";v0.MOVINGWALKWAY="MOVINGWALKWAY";v0.CRANEWAY="CRANEWAY";v0.LIFTINGGEAR="LIFTINGGEAR";v0.USERDEFINED="USERDEFINED";v0.NOTDEFINED="NOTDEFINED";var zk=class{constructor(t){this.value=t}};zk.CARTESIAN="CARTESIAN";zk.PARAMETER="PARAMETER";zk.UNSPECIFIED="UNSPECIFIED";var jk=class{constructor(t){this.value=t}};jk.FINNED="FINNED";jk.USERDEFINED="USERDEFINED";jk.NOTDEFINED="NOTDEFINED";var qi=class{constructor(t){this.value=t}};qi.ABSORBEDDOSEUNIT="ABSORBEDDOSEUNIT";qi.AMOUNTOFSUBSTANCEUNIT="AMOUNTOFSUBSTANCEUNIT";qi.AREAUNIT="AREAUNIT";qi.DOSEEQUIVALENTUNIT="DOSEEQUIVALENTUNIT";qi.ELECTRICCAPACITANCEUNIT="ELECTRICCAPACITANCEUNIT";qi.ELECTRICCHARGEUNIT="ELECTRICCHARGEUNIT";qi.ELECTRICCONDUCTANCEUNIT="ELECTRICCONDUCTANCEUNIT";qi.ELECTRICCURRENTUNIT="ELECTRICCURRENTUNIT";qi.ELECTRICRESISTANCEUNIT="ELECTRICRESISTANCEUNIT";qi.ELECTRICVOLTAGEUNIT="ELECTRICVOLTAGEUNIT";qi.ENERGYUNIT="ENERGYUNIT";qi.FORCEUNIT="FORCEUNIT";qi.FREQUENCYUNIT="FREQUENCYUNIT";qi.ILLUMINANCEUNIT="ILLUMINANCEUNIT";qi.INDUCTANCEUNIT="INDUCTANCEUNIT";qi.LENGTHUNIT="LENGTHUNIT";qi.LUMINOUSFLUXUNIT="LUMINOUSFLUXUNIT";qi.LUMINOUSINTENSITYUNIT="LUMINOUSINTENSITYUNIT";qi.MAGNETICFLUXDENSITYUNIT="MAGNETICFLUXDENSITYUNIT";qi.MAGNETICFLUXUNIT="MAGNETICFLUXUNIT";qi.MASSUNIT="MASSUNIT";qi.PLANEANGLEUNIT="PLANEANGLEUNIT";qi.POWERUNIT="POWERUNIT";qi.PRESSUREUNIT="PRESSUREUNIT";qi.RADIOACTIVITYUNIT="RADIOACTIVITYUNIT";qi.SOLIDANGLEUNIT="SOLIDANGLEUNIT";qi.THERMODYNAMICTEMPERATUREUNIT="THERMODYNAMICTEMPERATUREUNIT";qi.TIMEUNIT="TIMEUNIT";qi.VOLUMEUNIT="VOLUMEUNIT";qi.USERDEFINED="USERDEFINED";var sh=class{constructor(t){this.value=t}};sh.ALARMPANEL="ALARMPANEL";sh.CONTROLPANEL="CONTROLPANEL";sh.GASDETECTIONPANEL="GASDETECTIONPANEL";sh.INDICATORPANEL="INDICATORPANEL";sh.MIMICPANEL="MIMICPANEL";sh.HUMIDISTAT="HUMIDISTAT";sh.THERMOSTAT="THERMOSTAT";sh.WEATHERSTATION="WEATHERSTATION";sh.USERDEFINED="USERDEFINED";sh.NOTDEFINED="NOTDEFINED";var y0=class{constructor(t){this.value=t}};y0.AIRHANDLER="AIRHANDLER";y0.AIRCONDITIONINGUNIT="AIRCONDITIONINGUNIT";y0.DEHUMIDIFIER="DEHUMIDIFIER";y0.SPLITSYSTEM="SPLITSYSTEM";y0.ROOFTOPUNIT="ROOFTOPUNIT";y0.USERDEFINED="USERDEFINED";y0.NOTDEFINED="NOTDEFINED";var Ln=class{constructor(t){this.value=t}};Ln.AIRRELEASE="AIRRELEASE";Ln.ANTIVACUUM="ANTIVACUUM";Ln.CHANGEOVER="CHANGEOVER";Ln.CHECK="CHECK";Ln.COMMISSIONING="COMMISSIONING";Ln.DIVERTING="DIVERTING";Ln.DRAWOFFCOCK="DRAWOFFCOCK";Ln.DOUBLECHECK="DOUBLECHECK";Ln.DOUBLEREGULATING="DOUBLEREGULATING";Ln.FAUCET="FAUCET";Ln.FLUSHING="FLUSHING";Ln.GASCOCK="GASCOCK";Ln.GASTAP="GASTAP";Ln.ISOLATING="ISOLATING";Ln.MIXING="MIXING";Ln.PRESSUREREDUCING="PRESSUREREDUCING";Ln.PRESSURERELIEF="PRESSURERELIEF";Ln.REGULATING="REGULATING";Ln.SAFETYCUTOFF="SAFETYCUTOFF";Ln.STEAMTRAP="STEAMTRAP";Ln.STOPCOCK="STOPCOCK";Ln.USERDEFINED="USERDEFINED";Ln.NOTDEFINED="NOTDEFINED";var Gf=class{constructor(t){this.value=t}};Gf.BENDING_YIELD="BENDING_YIELD";Gf.SHEAR_YIELD="SHEAR_YIELD";Gf.AXIAL_YIELD="AXIAL_YIELD";Gf.FRICTION="FRICTION";Gf.VISCOUS="VISCOUS";Gf.RUBBER="RUBBER";Gf.USERDEFINED="USERDEFINED";Gf.NOTDEFINED="NOTDEFINED";var RI=class{constructor(t){this.value=t}};RI.COMPRESSION="COMPRESSION";RI.SPRING="SPRING";RI.BASE="BASE";RI.USERDEFINED="USERDEFINED";RI.NOTDEFINED="NOTDEFINED";var Vf=class{constructor(t){this.value=t}};Vf.CUTOUT="CUTOUT";Vf.NOTCH="NOTCH";Vf.HOLE="HOLE";Vf.MITER="MITER";Vf.CHAMFER="CHAMFER";Vf.EDGE="EDGE";Vf.USERDEFINED="USERDEFINED";Vf.NOTDEFINED="NOTDEFINED";var zl=class{constructor(t){this.value=t}};zl.MOVABLE="MOVABLE";zl.PARAPET="PARAPET";zl.PARTITIONING="PARTITIONING";zl.PLUMBINGWALL="PLUMBINGWALL";zl.SHEAR="SHEAR";zl.SOLIDWALL="SOLIDWALL";zl.STANDARD="STANDARD";zl.POLYGONAL="POLYGONAL";zl.ELEMENTEDWALL="ELEMENTEDWALL";zl.RETAININGWALL="RETAININGWALL";zl.USERDEFINED="USERDEFINED";zl.NOTDEFINED="NOTDEFINED";var rd=class{constructor(t){this.value=t}};rd.FLOORTRAP="FLOORTRAP";rd.FLOORWASTE="FLOORWASTE";rd.GULLYSUMP="GULLYSUMP";rd.GULLYTRAP="GULLYTRAP";rd.ROOFDRAIN="ROOFDRAIN";rd.WASTEDISPOSALUNIT="WASTEDISPOSALUNIT";rd.WASTETRAP="WASTETRAP";rd.USERDEFINED="USERDEFINED";rd.NOTDEFINED="NOTDEFINED";var To=class{constructor(t){this.value=t}};To.SIDEHUNGRIGHTHAND="SIDEHUNGRIGHTHAND";To.SIDEHUNGLEFTHAND="SIDEHUNGLEFTHAND";To.TILTANDTURNRIGHTHAND="TILTANDTURNRIGHTHAND";To.TILTANDTURNLEFTHAND="TILTANDTURNLEFTHAND";To.TOPHUNG="TOPHUNG";To.BOTTOMHUNG="BOTTOMHUNG";To.PIVOTHORIZONTAL="PIVOTHORIZONTAL";To.PIVOTVERTICAL="PIVOTVERTICAL";To.SLIDINGHORIZONTAL="SLIDINGHORIZONTAL";To.SLIDINGVERTICAL="SLIDINGVERTICAL";To.REMOVABLECASEMENT="REMOVABLECASEMENT";To.FIXEDCASEMENT="FIXEDCASEMENT";To.OTHEROPERATION="OTHEROPERATION";To.NOTDEFINED="NOTDEFINED";var HT=class{constructor(t){this.value=t}};HT.LEFT="LEFT";HT.MIDDLE="MIDDLE";HT.RIGHT="RIGHT";HT.BOTTOM="BOTTOM";HT.TOP="TOP";HT.NOTDEFINED="NOTDEFINED";var zf=class{constructor(t){this.value=t}};zf.ALUMINIUM="ALUMINIUM";zf.HIGH_GRADE_STEEL="HIGH_GRADE_STEEL";zf.STEEL="STEEL";zf.WOOD="WOOD";zf.ALUMINIUM_WOOD="ALUMINIUM_WOOD";zf.PLASTIC="PLASTIC";zf.OTHER_CONSTRUCTION="OTHER_CONSTRUCTION";zf.NOTDEFINED="NOTDEFINED";var qc=class{constructor(t){this.value=t}};qc.SINGLE_PANEL="SINGLE_PANEL";qc.DOUBLE_PANEL_VERTICAL="DOUBLE_PANEL_VERTICAL";qc.DOUBLE_PANEL_HORIZONTAL="DOUBLE_PANEL_HORIZONTAL";qc.TRIPLE_PANEL_VERTICAL="TRIPLE_PANEL_VERTICAL";qc.TRIPLE_PANEL_BOTTOM="TRIPLE_PANEL_BOTTOM";qc.TRIPLE_PANEL_TOP="TRIPLE_PANEL_TOP";qc.TRIPLE_PANEL_LEFT="TRIPLE_PANEL_LEFT";qc.TRIPLE_PANEL_RIGHT="TRIPLE_PANEL_RIGHT";qc.TRIPLE_PANEL_HORIZONTAL="TRIPLE_PANEL_HORIZONTAL";qc.USERDEFINED="USERDEFINED";qc.NOTDEFINED="NOTDEFINED";var MI=class{constructor(t){this.value=t}};MI.WINDOW="WINDOW";MI.SKYLIGHT="SKYLIGHT";MI.LIGHTDOME="LIGHTDOME";MI.USERDEFINED="USERDEFINED";MI.NOTDEFINED="NOTDEFINED";var Yc=class{constructor(t){this.value=t}};Yc.SINGLE_PANEL="SINGLE_PANEL";Yc.DOUBLE_PANEL_VERTICAL="DOUBLE_PANEL_VERTICAL";Yc.DOUBLE_PANEL_HORIZONTAL="DOUBLE_PANEL_HORIZONTAL";Yc.TRIPLE_PANEL_VERTICAL="TRIPLE_PANEL_VERTICAL";Yc.TRIPLE_PANEL_BOTTOM="TRIPLE_PANEL_BOTTOM";Yc.TRIPLE_PANEL_TOP="TRIPLE_PANEL_TOP";Yc.TRIPLE_PANEL_LEFT="TRIPLE_PANEL_LEFT";Yc.TRIPLE_PANEL_RIGHT="TRIPLE_PANEL_RIGHT";Yc.TRIPLE_PANEL_HORIZONTAL="TRIPLE_PANEL_HORIZONTAL";Yc.USERDEFINED="USERDEFINED";Yc.NOTDEFINED="NOTDEFINED";var DI=class{constructor(t){this.value=t}};DI.FIRSTSHIFT="FIRSTSHIFT";DI.SECONDSHIFT="SECONDSHIFT";DI.THIRDSHIFT="THIRDSHIFT";DI.USERDEFINED="USERDEFINED";DI.NOTDEFINED="NOTDEFINED";var CI=class{constructor(t){this.value=t}};CI.ACTUAL="ACTUAL";CI.BASELINE="BASELINE";CI.PLANNED="PLANNED";CI.USERDEFINED="USERDEFINED";CI.NOTDEFINED="NOTDEFINED";var AI=class{constructor(t){this.value=t}};AI.ACTUAL="ACTUAL";AI.BASELINE="BASELINE";AI.PLANNED="PLANNED";AI.USERDEFINED="USERDEFINED";AI.NOTDEFINED="NOTDEFINED";var zde=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.PredefinedType=l,this.Status=c,this.LongDescription=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new zde(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.Identification),t.push(this.PredefinedType),t.push(this.Status),t.push(this.LongDescription),t}},jde=class{constructor(t,r,e,i,n,s,a,o){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.TheActor=o}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++];return new jde(t,r,n,s,a,o,l,c)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.TheActor),t}},Wde=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.Role=e,this.UserDefinedRole=i,this.Description=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new Wde(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.Role),t.push(this.UserDefinedRole),t.push(this.Description),t}},qde=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new qde(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},Yde=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new Yde(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},Xde=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.Purpose=e,this.Description=i,this.UserDefinedPurpose=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new Xde(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.Purpose),t.push(this.Description),t.push(this.UserDefinedPurpose),t}},$de=class{constructor(t,r,e){this.expressID=t,this.type=r,this.Outer=e}static FromTape(t,r,e){let i=0,n=e[i++];return new $de(t,r,n)}ToTape(){let t=[];return t.push(this.Outer),t}},Zde=class{constructor(t,r,e,i){this.expressID=t,this.type=r,this.Outer=e,this.Voids=i}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++];return new Zde(t,r,n,s)}ToTape(){let t=[];return t.push(this.Outer),t.push(this.Voids),t}},Kde=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.Bounds=e,this.FaceSurface=i,this.SameSense=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new Kde(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.Bounds),t.push(this.FaceSurface),t.push(this.SameSense),t}},Jde=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new Jde(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},Qde=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new Qde(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},efe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new efe(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},tfe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new tfe(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},rfe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new rfe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},ife=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new ife(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},nfe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new nfe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},sfe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new sfe(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},afe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Axis=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new afe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Axis),t.push(this.PredefinedType),t}},ofe=class{constructor(t,r,e,i){this.expressID=t,this.type=r,this.StartDistAlong=e,this.Segments=i}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++];return new ofe(t,r,n,s)}ToTape(){let t=[];return t.push(this.StartDistAlong),t.push(this.Segments),t}},lfe=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.TangentialContinuity=e,this.StartTag=i,this.EndTag=n,this.CurveGeometry=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new lfe(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.TangentialContinuity),t.push(this.StartTag),t.push(this.EndTag),t.push(this.CurveGeometry),t}},cfe=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.TangentialContinuity=e,this.StartTag=i,this.EndTag=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new cfe(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.TangentialContinuity),t.push(this.StartTag),t.push(this.EndTag),t}},ufe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.TangentialContinuity=e,this.StartTag=i,this.EndTag=n,this.StartDistAlong=s,this.HorizontalLength=a,this.StartHeight=o,this.StartGradient=l,this.Radius=c,this.IsConvex=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new ufe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.TangentialContinuity),t.push(this.StartTag),t.push(this.EndTag),t.push(this.StartDistAlong),t.push(this.HorizontalLength),t.push(this.StartHeight),t.push(this.StartGradient),t.push(this.Radius),t.push(this.IsConvex),t}},hfe=class{constructor(t,r,e,i,n,s,a,o,l){this.expressID=t,this.type=r,this.TangentialContinuity=e,this.StartTag=i,this.EndTag=n,this.StartDistAlong=s,this.HorizontalLength=a,this.StartHeight=o,this.StartGradient=l}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++];return new hfe(t,r,n,s,a,o,l,c,u)}ToTape(){let t=[];return t.push(this.TangentialContinuity),t.push(this.StartTag),t.push(this.EndTag),t.push(this.StartDistAlong),t.push(this.HorizontalLength),t.push(this.StartHeight),t.push(this.StartGradient),t}},pfe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.TangentialContinuity=e,this.StartTag=i,this.EndTag=n,this.StartDistAlong=s,this.HorizontalLength=a,this.StartHeight=o,this.StartGradient=l,this.ParabolaConstant=c,this.IsConvex=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new pfe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.TangentialContinuity),t.push(this.StartTag),t.push(this.EndTag),t.push(this.StartDistAlong),t.push(this.HorizontalLength),t.push(this.StartHeight),t.push(this.StartGradient),t.push(this.ParabolaConstant),t.push(this.IsConvex),t}},dfe=class{constructor(t,r,e){this.expressID=t,this.type=r,this.Segments=e}static FromTape(t,r,e){let i=0,n=e[i++];return new dfe(t,r,n)}ToTape(){let t=[];return t.push(this.Segments),t}},ffe=class{constructor(t,r,e,i,n,s,a,o,l){this.expressID=t,this.type=r,this.TangentialContinuity=e,this.StartTag=i,this.EndTag=n,this.StartDistAlong=s,this.HorizontalLength=a,this.StartHeight=o,this.StartGradient=l}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++];return new ffe(t,r,n,s,a,o,l,c,u)}ToTape(){let t=[];return t.push(this.TangentialContinuity),t.push(this.StartTag),t.push(this.EndTag),t.push(this.StartDistAlong),t.push(this.HorizontalLength),t.push(this.StartHeight),t.push(this.StartGradient),t}},mfe=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.Horizontal=e,this.Vertical=i,this.Tag=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new mfe(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.Horizontal),t.push(this.Vertical),t.push(this.Tag),t}},gfe=class{constructor(t,r,e,i,n,s,a,o,l){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++];return new gfe(t,r,n,s,a,o,l,c,u)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t}},vfe=class{constructor(t,r,e,i){this.expressID=t,this.type=r,this.OuterBoundary=e,this.InnerBoundaries=i}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++];return new vfe(t,r,n,s)}ToTape(){let t=[];return t.push(this.OuterBoundary),t.push(this.InnerBoundaries),t}},yfe=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.ApplicationDeveloper=e,this.Version=i,this.ApplicationFullName=n,this.ApplicationIdentifier=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new yfe(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.ApplicationDeveloper),t.push(this.Version),t.push(this.ApplicationFullName),t.push(this.ApplicationIdentifier),t}},Tfe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.Name=e,this.Description=i,this.AppliedValue=n,this.UnitBasis=s,this.ApplicableDate=a,this.FixedUntilDate=o,this.Category=l,this.Condition=c,this.ArithmeticOperator=u,this.Components=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new Tfe(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.Name),t.push(this.Description),t.push(this.AppliedValue),t.push(this.UnitBasis),t.push(this.ApplicableDate),t.push(this.FixedUntilDate),t.push(this.Category),t.push(this.Condition),t.push(this.ArithmeticOperator),t.push(this.Components),t}},Efe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.Identifier=e,this.Name=i,this.Description=n,this.TimeOfApproval=s,this.Status=a,this.Level=o,this.Qualifier=l,this.RequestingApproval=c,this.GivingApproval=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new Efe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.Identifier),t.push(this.Name),t.push(this.Description),t.push(this.TimeOfApproval),t.push(this.Status),t.push(this.Level),t.push(this.Qualifier),t.push(this.RequestingApproval),t.push(this.GivingApproval),t}},bfe=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.Name=e,this.Description=i,this.RelatingApproval=n,this.RelatedApprovals=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new bfe(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.Name),t.push(this.Description),t.push(this.RelatingApproval),t.push(this.RelatedApprovals),t}},xfe=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.ProfileType=e,this.ProfileName=i,this.OuterCurve=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new xfe(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.ProfileType),t.push(this.ProfileName),t.push(this.OuterCurve),t}},Ife=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.ProfileType=e,this.ProfileName=i,this.Curve=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new Ife(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.ProfileType),t.push(this.ProfileName),t.push(this.Curve),t}},Sfe=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.ProfileType=e,this.ProfileName=i,this.OuterCurve=n,this.InnerCurves=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new Sfe(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.ProfileType),t.push(this.ProfileName),t.push(this.OuterCurve),t.push(this.InnerCurves),t}},_fe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p,d,f,m){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.OriginalValue=l,this.CurrentValue=c,this.TotalReplacementCost=u,this.Owner=h,this.User=p,this.ResponsiblePerson=d,this.IncorporationDate=f,this.DepreciatedValue=m}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++],m=e[i++],g=e[i++],y=e[i++];return new _fe(t,r,n,s,a,o,l,c,u,h,p,d,f,m,g,y)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.Identification),t.push(this.OriginalValue),t.push(this.CurrentValue),t.push(this.TotalReplacementCost),t.push(this.Owner),t.push(this.User),t.push(this.ResponsiblePerson),t.push(this.IncorporationDate),t.push(this.DepreciatedValue),t}},wfe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p,d,f,m,g){this.expressID=t,this.type=r,this.ProfileType=e,this.ProfileName=i,this.Position=n,this.BottomFlangeWidth=s,this.OverallDepth=a,this.WebThickness=o,this.BottomFlangeThickness=l,this.BottomFlangeFilletRadius=c,this.TopFlangeWidth=u,this.TopFlangeThickness=h,this.TopFlangeFilletRadius=p,this.BottomFlangeEdgeRadius=d,this.BottomFlangeSlope=f,this.TopFlangeEdgeRadius=m,this.TopFlangeSlope=g}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++],m=e[i++],g=e[i++],y=e[i++],E=e[i++];return new wfe(t,r,n,s,a,o,l,c,u,h,p,d,f,m,g,y,E)}ToTape(){let t=[];return t.push(this.ProfileType),t.push(this.ProfileName),t.push(this.Position),t.push(this.BottomFlangeWidth),t.push(this.OverallDepth),t.push(this.WebThickness),t.push(this.BottomFlangeThickness),t.push(this.BottomFlangeFilletRadius),t.push(this.TopFlangeWidth),t.push(this.TopFlangeThickness),t.push(this.TopFlangeFilletRadius),t.push(this.BottomFlangeEdgeRadius),t.push(this.BottomFlangeSlope),t.push(this.TopFlangeEdgeRadius),t.push(this.TopFlangeSlope),t}},Rfe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new Rfe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},Mfe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new Mfe(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},Dfe=class{constructor(t,r,e,i){this.expressID=t,this.type=r,this.Location=e,this.Axis=i}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++];return new Dfe(t,r,n,s)}ToTape(){let t=[];return t.push(this.Location),t.push(this.Axis),t}},Cfe=class{constructor(t,r,e,i){this.expressID=t,this.type=r,this.Location=e,this.RefDirection=i}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++];return new Cfe(t,r,n,s)}ToTape(){let t=[];return t.push(this.Location),t.push(this.RefDirection),t}},Afe=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.Location=e,this.Axis=i,this.RefDirection=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new Afe(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.Location),t.push(this.Axis),t.push(this.RefDirection),t}},Ofe=class{constructor(t,r,e,i,n,s,a){this.expressID=t,this.type=r,this.Degree=e,this.ControlPointsList=i,this.CurveForm=n,this.ClosedCurve=s,this.SelfIntersect=a}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++];return new Ofe(t,r,n,s,a,o,l)}ToTape(){let t=[];return t.push(this.Degree),t.push(this.ControlPointsList),t.push(this.CurveForm),t.push(this.ClosedCurve),t.push(this.SelfIntersect),t}},Pfe=class{constructor(t,r,e,i,n,s,a,o,l,c){this.expressID=t,this.type=r,this.Degree=e,this.ControlPointsList=i,this.CurveForm=n,this.ClosedCurve=s,this.SelfIntersect=a,this.KnotMultiplicities=o,this.Knots=l,this.KnotSpec=c}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++];return new Pfe(t,r,n,s,a,o,l,c,u,h)}ToTape(){let t=[];return t.push(this.Degree),t.push(this.ControlPointsList),t.push(this.CurveForm),t.push(this.ClosedCurve),t.push(this.SelfIntersect),t.push(this.KnotMultiplicities),t.push(this.Knots),t.push(this.KnotSpec),t}},Nfe=class{constructor(t,r,e,i,n,s,a,o,l){this.expressID=t,this.type=r,this.UDegree=e,this.VDegree=i,this.ControlPointsList=n,this.SurfaceForm=s,this.UClosed=a,this.VClosed=o,this.SelfIntersect=l}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++];return new Nfe(t,r,n,s,a,o,l,c,u)}ToTape(){let t=[];return t.push(this.UDegree),t.push(this.VDegree),t.push(this.ControlPointsList),t.push(this.SurfaceForm),t.push(this.UClosed),t.push(this.VClosed),t.push(this.SelfIntersect),t}},Lfe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p,d){this.expressID=t,this.type=r,this.UDegree=e,this.VDegree=i,this.ControlPointsList=n,this.SurfaceForm=s,this.UClosed=a,this.VClosed=o,this.SelfIntersect=l,this.UMultiplicities=c,this.VMultiplicities=u,this.UKnots=h,this.VKnots=p,this.KnotSpec=d}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++],m=e[i++];return new Lfe(t,r,n,s,a,o,l,c,u,h,p,d,f,m)}ToTape(){let t=[];return t.push(this.UDegree),t.push(this.VDegree),t.push(this.ControlPointsList),t.push(this.SurfaceForm),t.push(this.UClosed),t.push(this.VClosed),t.push(this.SelfIntersect),t.push(this.UMultiplicities),t.push(this.VMultiplicities),t.push(this.UKnots),t.push(this.VKnots),t.push(this.KnotSpec),t}},Ffe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new Ffe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},Hfe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new Hfe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},Ufe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new Ufe(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},Bfe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new Bfe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},kfe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new kfe(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},Gfe=class{constructor(t,r,e,i,n,s,a,o,l){this.expressID=t,this.type=r,this.RepeatS=e,this.RepeatT=i,this.Mode=n,this.TextureTransform=s,this.Parameter=a,this.RasterFormat=o,this.RasterCode=l}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++];return new Gfe(t,r,n,s,a,o,l,c,u)}ToTape(){let t=[];return t.push(this.RepeatS),t.push(this.RepeatT),t.push(this.Mode),t.push(this.TextureTransform),t.push(this.Parameter),t.push(this.RasterFormat),t.push(this.RasterCode),t}},Vfe=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.Position=e,this.XLength=i,this.YLength=n,this.ZLength=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new Vfe(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.Position),t.push(this.XLength),t.push(this.YLength),t.push(this.ZLength),t}},zfe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new zfe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},jfe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new jfe(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},Wfe=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.Operator=e,this.FirstOperand=i,this.SecondOperand=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new Wfe(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.Operator),t.push(this.FirstOperand),t.push(this.SecondOperand),t}},qfe=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.Operator=e,this.FirstOperand=i,this.SecondOperand=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new qfe(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.Operator),t.push(this.FirstOperand),t.push(this.SecondOperand),t}},Yfe=class{constructor(t,r,e){this.expressID=t,this.type=r,this.Name=e}static FromTape(t,r,e){let i=0,n=e[i++];return new Yfe(t,r,n)}ToTape(){let t=[];return t.push(this.Name),t}},Xfe=class{constructor(t,r,e,i){this.expressID=t,this.type=r,this.Segments=e,this.SelfIntersect=i}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++];return new Xfe(t,r,n,s)}ToTape(){let t=[];return t.push(this.Segments),t.push(this.SelfIntersect),t}},$fe=class{constructor(t,r,e,i,n,s,a,o,l){this.expressID=t,this.type=r,this.Name=e,this.TranslationalStiffnessByLengthX=i,this.TranslationalStiffnessByLengthY=n,this.TranslationalStiffnessByLengthZ=s,this.RotationalStiffnessByLengthX=a,this.RotationalStiffnessByLengthY=o,this.RotationalStiffnessByLengthZ=l}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++];return new $fe(t,r,n,s,a,o,l,c,u)}ToTape(){let t=[];return t.push(this.Name),t.push(this.TranslationalStiffnessByLengthX),t.push(this.TranslationalStiffnessByLengthY),t.push(this.TranslationalStiffnessByLengthZ),t.push(this.RotationalStiffnessByLengthX),t.push(this.RotationalStiffnessByLengthY),t.push(this.RotationalStiffnessByLengthZ),t}},Zfe=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.Name=e,this.TranslationalStiffnessByAreaX=i,this.TranslationalStiffnessByAreaY=n,this.TranslationalStiffnessByAreaZ=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new Zfe(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.Name),t.push(this.TranslationalStiffnessByAreaX),t.push(this.TranslationalStiffnessByAreaY),t.push(this.TranslationalStiffnessByAreaZ),t}},Kfe=class{constructor(t,r,e,i,n,s,a,o,l){this.expressID=t,this.type=r,this.Name=e,this.TranslationalStiffnessX=i,this.TranslationalStiffnessY=n,this.TranslationalStiffnessZ=s,this.RotationalStiffnessX=a,this.RotationalStiffnessY=o,this.RotationalStiffnessZ=l}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++];return new Kfe(t,r,n,s,a,o,l,c,u)}ToTape(){let t=[];return t.push(this.Name),t.push(this.TranslationalStiffnessX),t.push(this.TranslationalStiffnessY),t.push(this.TranslationalStiffnessZ),t.push(this.RotationalStiffnessX),t.push(this.RotationalStiffnessY),t.push(this.RotationalStiffnessZ),t}},Jfe=class{constructor(t,r,e,i,n,s,a,o,l,c){this.expressID=t,this.type=r,this.Name=e,this.TranslationalStiffnessX=i,this.TranslationalStiffnessY=n,this.TranslationalStiffnessZ=s,this.RotationalStiffnessX=a,this.RotationalStiffnessY=o,this.RotationalStiffnessZ=l,this.WarpingStiffness=c}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++];return new Jfe(t,r,n,s,a,o,l,c,u,h)}ToTape(){let t=[];return t.push(this.Name),t.push(this.TranslationalStiffnessX),t.push(this.TranslationalStiffnessY),t.push(this.TranslationalStiffnessZ),t.push(this.RotationalStiffnessX),t.push(this.RotationalStiffnessY),t.push(this.RotationalStiffnessZ),t.push(this.WarpingStiffness),t}},Qfe=class{constructor(t,r){this.expressID=t,this.type=r}static FromTape(t,r,e){let i=0;return new Qfe(t,r)}ToTape(){return[]}},eme=class{constructor(t,r){this.expressID=t,this.type=r}static FromTape(t,r,e){let i=0;return new eme(t,r)}ToTape(){return[]}},tme=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.Corner=e,this.XDim=i,this.YDim=n,this.ZDim=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new tme(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.Corner),t.push(this.XDim),t.push(this.YDim),t.push(this.ZDim),t}},rme=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.BaseSurface=e,this.AgreementFlag=i,this.Enclosure=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new rme(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.BaseSurface),t.push(this.AgreementFlag),t.push(this.Enclosure),t}},ime=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.LongName=c,this.CompositionType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new ime(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.LongName),t.push(this.CompositionType),t.push(this.PredefinedType),t}},nme=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.LongName=c,this.CompositionType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new nme(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.LongName),t.push(this.CompositionType),t.push(this.PredefinedType),t}},sme=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p,d){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.LongName=c,this.CompositionType=u,this.ElevationOfRefHeight=h,this.ElevationOfTerrain=p,this.BuildingAddress=d}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++],m=e[i++];return new sme(t,r,n,s,a,o,l,c,u,h,p,d,f,m)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.LongName),t.push(this.CompositionType),t.push(this.ElevationOfRefHeight),t.push(this.ElevationOfTerrain),t.push(this.BuildingAddress),t}},ame=class{constructor(t,r,e,i,n,s,a,o,l,c){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++];return new ame(t,r,n,s,a,o,l,c,u,h)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t}},ome=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new ome(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},lme=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new lme(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},cme=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new cme(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},ume=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new ume(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},hme=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new hme(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t}},pme=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.LongName=c,this.CompositionType=u,this.Elevation=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new pme(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.LongName),t.push(this.CompositionType),t.push(this.Elevation),t}},dme=class{constructor(t,r,e,i,n,s,a,o,l){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.PredefinedType=o,this.LongName=l}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++];return new dme(t,r,n,s,a,o,l,c,u)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.PredefinedType),t.push(this.LongName),t}},fme=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new fme(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},mme=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new mme(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},gme=class{constructor(t,r,e,i,n,s,a,o,l,c){this.expressID=t,this.type=r,this.ProfileType=e,this.ProfileName=i,this.Position=n,this.Depth=s,this.Width=a,this.WallThickness=o,this.Girth=l,this.InternalFilletRadius=c}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++];return new gme(t,r,n,s,a,o,l,c,u,h)}ToTape(){let t=[];return t.push(this.ProfileType),t.push(this.ProfileName),t.push(this.Position),t.push(this.Depth),t.push(this.Width),t.push(this.WallThickness),t.push(this.Girth),t.push(this.InternalFilletRadius),t}},vme=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new vme(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},yme=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new yme(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},Tme=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new Tme(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},Eme=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new Eme(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},bme=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new bme(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},xme=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new xme(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},Ime=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new Ime(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},Sme=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new Sme(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},_me=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new _me(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},wme=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new wme(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},Rme=class{constructor(t,r,e){this.expressID=t,this.type=r,this.Coordinates=e}static FromTape(t,r,e){let i=0,n=e[i++];return new Rme(t,r,n)}ToTape(){let t=[];return t.push(this.Coordinates),t}},Mme=class{constructor(t,r){this.expressID=t,this.type=r}static FromTape(t,r,e){let i=0;return new Mme(t,r)}ToTape(){return[]}},Dme=class{constructor(t,r,e,i){this.expressID=t,this.type=r,this.CoordList=e,this.TagList=i}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++];return new Dme(t,r,n,s)}ToTape(){let t=[];return t.push(this.CoordList),t.push(this.TagList),t}},Cme=class{constructor(t,r,e,i){this.expressID=t,this.type=r,this.CoordList=e,this.TagList=i}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++];return new Cme(t,r,n,s)}ToTape(){let t=[];return t.push(this.CoordList),t.push(this.TagList),t}},Ame=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.Axis1=e,this.Axis2=i,this.LocalOrigin=n,this.Scale=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new Ame(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.Axis1),t.push(this.Axis2),t.push(this.LocalOrigin),t.push(this.Scale),t}},Ome=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.Axis1=e,this.Axis2=i,this.LocalOrigin=n,this.Scale=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new Ome(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.Axis1),t.push(this.Axis2),t.push(this.LocalOrigin),t.push(this.Scale),t}},Pme=class{constructor(t,r,e,i,n,s,a){this.expressID=t,this.type=r,this.Axis1=e,this.Axis2=i,this.LocalOrigin=n,this.Scale=s,this.Scale2=a}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++];return new Pme(t,r,n,s,a,o,l)}ToTape(){let t=[];return t.push(this.Axis1),t.push(this.Axis2),t.push(this.LocalOrigin),t.push(this.Scale),t.push(this.Scale2),t}},Nme=class{constructor(t,r,e,i,n,s,a){this.expressID=t,this.type=r,this.Axis1=e,this.Axis2=i,this.LocalOrigin=n,this.Scale=s,this.Axis3=a}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++];return new Nme(t,r,n,s,a,o,l)}ToTape(){let t=[];return t.push(this.Axis1),t.push(this.Axis2),t.push(this.LocalOrigin),t.push(this.Scale),t.push(this.Axis3),t}},Lme=class{constructor(t,r,e,i,n,s,a,o,l){this.expressID=t,this.type=r,this.Axis1=e,this.Axis2=i,this.LocalOrigin=n,this.Scale=s,this.Axis3=a,this.Scale2=o,this.Scale3=l}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++];return new Lme(t,r,n,s,a,o,l,c,u)}ToTape(){let t=[];return t.push(this.Axis1),t.push(this.Axis2),t.push(this.LocalOrigin),t.push(this.Scale),t.push(this.Axis3),t.push(this.Scale2),t.push(this.Scale3),t}},Fme=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.ProfileType=e,this.ProfileName=i,this.Curve=n,this.Thickness=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new Fme(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.ProfileType),t.push(this.ProfileName),t.push(this.Curve),t.push(this.Thickness),t}},Hme=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new Hme(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},Ume=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new Ume(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},Bme=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new Bme(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},kme=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new kme(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},Gme=class{constructor(t,r,e,i){this.expressID=t,this.type=r,this.Position=e,this.Radius=i}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++];return new Gme(t,r,n,s)}ToTape(){let t=[];return t.push(this.Position),t.push(this.Radius),t}},Vme=class{constructor(t,r,e,i,n,s,a){this.expressID=t,this.type=r,this.ProfileType=e,this.ProfileName=i,this.Position=n,this.Radius=s,this.WallThickness=a}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++];return new Vme(t,r,n,s,a,o,l)}ToTape(){let t=[];return t.push(this.ProfileType),t.push(this.ProfileName),t.push(this.Position),t.push(this.Radius),t.push(this.WallThickness),t}},zme=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.ProfileType=e,this.ProfileName=i,this.Position=n,this.Radius=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new zme(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.ProfileType),t.push(this.ProfileName),t.push(this.Position),t.push(this.Radius),t}},jme=class{constructor(t,r,e,i,n,s,a){this.expressID=t,this.type=r,this.StartPoint=e,this.StartDirection=i,this.SegmentLength=n,this.Radius=s,this.IsCCW=a}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++];return new jme(t,r,n,s,a,o,l)}ToTape(){let t=[];return t.push(this.StartPoint),t.push(this.StartDirection),t.push(this.SegmentLength),t.push(this.Radius),t.push(this.IsCCW),t}},Wme=class{constructor(t,r,e,i,n,s,a,o,l,c){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++];return new Wme(t,r,n,s,a,o,l,c,u,h)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t}},qme=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new qme(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t}},Yme=class{constructor(t,r,e,i,n,s,a,o,l){this.expressID=t,this.type=r,this.Source=e,this.Edition=i,this.EditionDate=n,this.Name=s,this.Description=a,this.Location=o,this.ReferenceTokens=l}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++];return new Yme(t,r,n,s,a,o,l,c,u)}ToTape(){let t=[];return t.push(this.Source),t.push(this.Edition),t.push(this.EditionDate),t.push(this.Name),t.push(this.Description),t.push(this.Location),t.push(this.ReferenceTokens),t}},Xme=class{constructor(t,r,e,i,n,s,a,o){this.expressID=t,this.type=r,this.Location=e,this.Identification=i,this.Name=n,this.ReferencedSource=s,this.Description=a,this.Sort=o}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++];return new Xme(t,r,n,s,a,o,l,c)}ToTape(){let t=[];return t.push(this.Location),t.push(this.Identification),t.push(this.Name),t.push(this.ReferencedSource),t.push(this.Description),t.push(this.Sort),t}},$me=class{constructor(t,r,e){this.expressID=t,this.type=r,this.CfsFaces=e}static FromTape(t,r,e){let i=0,n=e[i++];return new $me(t,r,n)}ToTape(){let t=[];return t.push(this.CfsFaces),t}},Zme=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new Zme(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},Kme=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new Kme(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},Jme=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.Name=e,this.Red=i,this.Green=n,this.Blue=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new Jme(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.Name),t.push(this.Red),t.push(this.Green),t.push(this.Blue),t}},Qme=class{constructor(t,r,e){this.expressID=t,this.type=r,this.ColourList=e}static FromTape(t,r,e){let i=0,n=e[i++];return new Qme(t,r,n)}ToTape(){let t=[];return t.push(this.ColourList),t}},ege=class{constructor(t,r,e){this.expressID=t,this.type=r,this.Name=e}static FromTape(t,r,e){let i=0,n=e[i++];return new ege(t,r,n)}ToTape(){let t=[];return t.push(this.Name),t}},tge=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new tge(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},rge=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new rge(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},ige=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new ige(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},nge=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new nge(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},sge=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new sge(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},age=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.Name=e,this.Description=i,this.UsageName=n,this.HasProperties=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new age(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.Name),t.push(this.Description),t.push(this.UsageName),t.push(this.HasProperties),t}},oge=class{constructor(t,r,e,i,n,s,a,o,l){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.UsageName=a,this.TemplateType=o,this.HasPropertyTemplates=l}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++];return new oge(t,r,n,s,a,o,l,c,u)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.UsageName),t.push(this.TemplateType),t.push(this.HasPropertyTemplates),t}},lge=class{constructor(t,r,e,i){this.expressID=t,this.type=r,this.Segments=e,this.SelfIntersect=i}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++];return new lge(t,r,n,s)}ToTape(){let t=[];return t.push(this.Segments),t.push(this.SelfIntersect),t}},cge=class{constructor(t,r,e,i){this.expressID=t,this.type=r,this.Segments=e,this.SelfIntersect=i}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++];return new cge(t,r,n,s)}ToTape(){let t=[];return t.push(this.Segments),t.push(this.SelfIntersect),t}},uge=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.Transition=e,this.SameSense=i,this.ParentCurve=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new uge(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.Transition),t.push(this.SameSense),t.push(this.ParentCurve),t}},hge=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.ProfileType=e,this.ProfileName=i,this.Profiles=n,this.Label=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new hge(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.ProfileType),t.push(this.ProfileName),t.push(this.Profiles),t.push(this.Label),t}},pge=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new pge(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},dge=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new dge(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},fge=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new fge(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},mge=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new mge(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},gge=class{constructor(t,r,e){this.expressID=t,this.type=r,this.Position=e}static FromTape(t,r,e){let i=0,n=e[i++];return new gge(t,r,n)}ToTape(){let t=[];return t.push(this.Position),t}},vge=class{constructor(t,r,e){this.expressID=t,this.type=r,this.CfsFaces=e}static FromTape(t,r,e){let i=0,n=e[i++];return new vge(t,r,n)}ToTape(){let t=[];return t.push(this.CfsFaces),t}},yge=class{constructor(t,r,e,i){this.expressID=t,this.type=r,this.CurveOnRelatingElement=e,this.CurveOnRelatedElement=i}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++];return new yge(t,r,n,s)}ToTape(){let t=[];return t.push(this.CurveOnRelatingElement),t.push(this.CurveOnRelatedElement),t}},Tge=class{constructor(t,r){this.expressID=t,this.type=r}static FromTape(t,r,e){let i=0;return new Tge(t,r)}ToTape(){return[]}},Ege=class{constructor(t,r,e,i,n,s,a){this.expressID=t,this.type=r,this.PointOnRelatingElement=e,this.PointOnRelatedElement=i,this.EccentricityInX=n,this.EccentricityInY=s,this.EccentricityInZ=a}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++];return new Ege(t,r,n,s,a,o,l)}ToTape(){let t=[];return t.push(this.PointOnRelatingElement),t.push(this.PointOnRelatedElement),t.push(this.EccentricityInX),t.push(this.EccentricityInY),t.push(this.EccentricityInZ),t}},bge=class{constructor(t,r,e,i){this.expressID=t,this.type=r,this.PointOnRelatingElement=e,this.PointOnRelatedElement=i}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++];return new bge(t,r,n,s)}ToTape(){let t=[];return t.push(this.PointOnRelatingElement),t.push(this.PointOnRelatedElement),t}},xge=class{constructor(t,r,e,i){this.expressID=t,this.type=r,this.SurfaceOnRelatingElement=e,this.SurfaceOnRelatedElement=i}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++];return new xge(t,r,n,s)}ToTape(){let t=[];return t.push(this.SurfaceOnRelatingElement),t.push(this.SurfaceOnRelatedElement),t}},Ige=class{constructor(t,r,e,i){this.expressID=t,this.type=r,this.VolumeOnRelatingElement=e,this.VolumeOnRelatedElement=i}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++];return new Ige(t,r,n,s)}ToTape(){let t=[];return t.push(this.VolumeOnRelatingElement),t.push(this.VolumeOnRelatedElement),t}},Sge=class{constructor(t,r,e,i,n,s,a,o,l){this.expressID=t,this.type=r,this.Name=e,this.Description=i,this.ConstraintGrade=n,this.ConstraintSource=s,this.CreatingActor=a,this.CreationTime=o,this.UserDefinedGrade=l}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++];return new Sge(t,r,n,s,a,o,l,c,u)}ToTape(){let t=[];return t.push(this.Name),t.push(this.Description),t.push(this.ConstraintGrade),t.push(this.ConstraintSource),t.push(this.CreatingActor),t.push(this.CreationTime),t.push(this.UserDefinedGrade),t}},_ge=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.LongDescription=l,this.Usage=c,this.BaseCosts=u,this.BaseQuantity=h,this.PredefinedType=p}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++];return new _ge(t,r,n,s,a,o,l,c,u,h,p,d,f)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.Identification),t.push(this.LongDescription),t.push(this.Usage),t.push(this.BaseCosts),t.push(this.BaseQuantity),t.push(this.PredefinedType),t}},wge=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p,d){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.Identification=l,this.LongDescription=c,this.ResourceType=u,this.BaseCosts=h,this.BaseQuantity=p,this.PredefinedType=d}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++],m=e[i++];return new wge(t,r,n,s,a,o,l,c,u,h,p,d,f,m)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.Identification),t.push(this.LongDescription),t.push(this.ResourceType),t.push(this.BaseCosts),t.push(this.BaseQuantity),t.push(this.PredefinedType),t}},Rge=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.LongDescription=l,this.Usage=c,this.BaseCosts=u,this.BaseQuantity=h,this.PredefinedType=p}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++];return new Rge(t,r,n,s,a,o,l,c,u,h,p,d,f)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.Identification),t.push(this.LongDescription),t.push(this.Usage),t.push(this.BaseCosts),t.push(this.BaseQuantity),t.push(this.PredefinedType),t}},Mge=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p,d){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.Identification=l,this.LongDescription=c,this.ResourceType=u,this.BaseCosts=h,this.BaseQuantity=p,this.PredefinedType=d}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++],m=e[i++];return new Mge(t,r,n,s,a,o,l,c,u,h,p,d,f,m)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.Identification),t.push(this.LongDescription),t.push(this.ResourceType),t.push(this.BaseCosts),t.push(this.BaseQuantity),t.push(this.PredefinedType),t}},Dge=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.LongDescription=l,this.Usage=c,this.BaseCosts=u,this.BaseQuantity=h,this.PredefinedType=p}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++];return new Dge(t,r,n,s,a,o,l,c,u,h,p,d,f)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.Identification),t.push(this.LongDescription),t.push(this.Usage),t.push(this.BaseCosts),t.push(this.BaseQuantity),t.push(this.PredefinedType),t}},Cge=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p,d){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.Identification=l,this.LongDescription=c,this.ResourceType=u,this.BaseCosts=h,this.BaseQuantity=p,this.PredefinedType=d}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++],m=e[i++];return new Cge(t,r,n,s,a,o,l,c,u,h,p,d,f,m)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.Identification),t.push(this.LongDescription),t.push(this.ResourceType),t.push(this.BaseCosts),t.push(this.BaseQuantity),t.push(this.PredefinedType),t}},Age=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.LongDescription=l,this.Usage=c,this.BaseCosts=u,this.BaseQuantity=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new Age(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.Identification),t.push(this.LongDescription),t.push(this.Usage),t.push(this.BaseCosts),t.push(this.BaseQuantity),t}},Oge=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.Identification=l,this.LongDescription=c,this.ResourceType=u,this.BaseCosts=h,this.BaseQuantity=p}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++];return new Oge(t,r,n,s,a,o,l,c,u,h,p,d,f)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.Identification),t.push(this.LongDescription),t.push(this.ResourceType),t.push(this.BaseCosts),t.push(this.BaseQuantity),t}},Pge=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.LongName=o,this.Phase=l,this.RepresentationContexts=c,this.UnitsInContext=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new Pge(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.LongName),t.push(this.Phase),t.push(this.RepresentationContexts),t.push(this.UnitsInContext),t}},Nge=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.Dimensions=e,this.UnitType=i,this.Name=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new Nge(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.Dimensions),t.push(this.UnitType),t.push(this.Name),t}},Lge=class{constructor(t,r,e,i,n,s,a,o){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++];return new Lge(t,r,n,s,a,o,l,c)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.Identification),t}},Fge=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new Fge(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},Hge=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new Hge(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},Uge=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.Dimensions=e,this.UnitType=i,this.Name=n,this.ConversionFactor=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new Uge(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.Dimensions),t.push(this.UnitType),t.push(this.Name),t.push(this.ConversionFactor),t}},Bge=class{constructor(t,r,e,i,n,s,a){this.expressID=t,this.type=r,this.Dimensions=e,this.UnitType=i,this.Name=n,this.ConversionFactor=s,this.ConversionOffset=a}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++];return new Bge(t,r,n,s,a,o,l)}ToTape(){let t=[];return t.push(this.Dimensions),t.push(this.UnitType),t.push(this.Name),t.push(this.ConversionFactor),t.push(this.ConversionOffset),t}},kge=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new kge(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},Gge=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new Gge(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},Vge=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new Vge(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},zge=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new zge(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},jge=class{constructor(t,r,e,i){this.expressID=t,this.type=r,this.SourceCRS=e,this.TargetCRS=i}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++];return new jge(t,r,n,s)}ToTape(){let t=[];return t.push(this.SourceCRS),t.push(this.TargetCRS),t}},Wge=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.Name=e,this.Description=i,this.GeodeticDatum=n,this.VerticalDatum=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new Wge(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.Name),t.push(this.Description),t.push(this.GeodeticDatum),t.push(this.VerticalDatum),t}},qge=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.PredefinedType=l,this.CostValues=c,this.CostQuantities=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new qge(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.Identification),t.push(this.PredefinedType),t.push(this.CostValues),t.push(this.CostQuantities),t}},Yge=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.PredefinedType=l,this.Status=c,this.SubmittedOn=u,this.UpdateDate=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new Yge(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.Identification),t.push(this.PredefinedType),t.push(this.Status),t.push(this.SubmittedOn),t.push(this.UpdateDate),t}},Xge=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.Name=e,this.Description=i,this.AppliedValue=n,this.UnitBasis=s,this.ApplicableDate=a,this.FixedUntilDate=o,this.Category=l,this.Condition=c,this.ArithmeticOperator=u,this.Components=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new Xge(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.Name),t.push(this.Description),t.push(this.AppliedValue),t.push(this.UnitBasis),t.push(this.ApplicableDate),t.push(this.FixedUntilDate),t.push(this.Category),t.push(this.Condition),t.push(this.ArithmeticOperator),t.push(this.Components),t}},$ge=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new $ge(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},Zge=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new Zge(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},Kge=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.LongDescription=l,this.Usage=c,this.BaseCosts=u,this.BaseQuantity=h,this.PredefinedType=p}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++];return new Kge(t,r,n,s,a,o,l,c,u,h,p,d,f)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.Identification),t.push(this.LongDescription),t.push(this.Usage),t.push(this.BaseCosts),t.push(this.BaseQuantity),t.push(this.PredefinedType),t}},Jge=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p,d){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.Identification=l,this.LongDescription=c,this.ResourceType=u,this.BaseCosts=h,this.BaseQuantity=p,this.PredefinedType=d}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++],m=e[i++];return new Jge(t,r,n,s,a,o,l,c,u,h,p,d,f,m)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.Identification),t.push(this.LongDescription),t.push(this.ResourceType),t.push(this.BaseCosts),t.push(this.BaseQuantity),t.push(this.PredefinedType),t}},Qge=class{constructor(t,r,e){this.expressID=t,this.type=r,this.Position=e}static FromTape(t,r,e){let i=0,n=e[i++];return new Qge(t,r,n)}ToTape(){let t=[];return t.push(this.Position),t}},e0e=class{constructor(t,r,e){this.expressID=t,this.type=r,this.TreeRootExpression=e}static FromTape(t,r,e){let i=0,n=e[i++];return new e0e(t,r,n)}ToTape(){let t=[];return t.push(this.TreeRootExpression),t}},t0e=class{constructor(t,r,e,i,n,s,a,o,l){this.expressID=t,this.type=r,this.Name=e,this.Description=i,this.RelatingMonetaryUnit=n,this.RelatedMonetaryUnit=s,this.ExchangeRate=a,this.RateDateTime=o,this.RateSource=l}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++];return new t0e(t,r,n,s,a,o,l,c,u)}ToTape(){let t=[];return t.push(this.Name),t.push(this.Description),t.push(this.RelatingMonetaryUnit),t.push(this.RelatedMonetaryUnit),t.push(this.ExchangeRate),t.push(this.RateDateTime),t.push(this.RateSource),t}},r0e=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new r0e(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},i0e=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new i0e(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},n0e=class{constructor(t,r){this.expressID=t,this.type=r}static FromTape(t,r,e){let i=0;return new n0e(t,r)}ToTape(){return[]}},s0e=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.BasisSurface=e,this.OuterBoundary=i,this.InnerBoundaries=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new s0e(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.BasisSurface),t.push(this.OuterBoundary),t.push(this.InnerBoundaries),t}},a0e=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.BasisSurface=e,this.Boundaries=i,this.ImplicitOuter=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new a0e(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.BasisSurface),t.push(this.Boundaries),t.push(this.ImplicitOuter),t}},o0e=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.StartPoint=e,this.StartDirection=i,this.SegmentLength=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new o0e(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.StartPoint),t.push(this.StartDirection),t.push(this.SegmentLength),t}},l0e=class{constructor(t,r,e,i,n,s,a){this.expressID=t,this.type=r,this.Name=e,this.CurveFont=i,this.CurveWidth=n,this.CurveColour=s,this.ModelOrDraughting=a}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++];return new l0e(t,r,n,s,a,o,l)}ToTape(){let t=[];return t.push(this.Name),t.push(this.CurveFont),t.push(this.CurveWidth),t.push(this.CurveColour),t.push(this.ModelOrDraughting),t}},c0e=class{constructor(t,r,e,i){this.expressID=t,this.type=r,this.Name=e,this.PatternList=i}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++];return new c0e(t,r,n,s)}ToTape(){let t=[];return t.push(this.Name),t.push(this.PatternList),t}},u0e=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.Name=e,this.CurveFont=i,this.CurveFontScaling=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new u0e(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.Name),t.push(this.CurveFont),t.push(this.CurveFontScaling),t}},h0e=class{constructor(t,r,e,i){this.expressID=t,this.type=r,this.VisibleSegmentLength=e,this.InvisibleSegmentLength=i}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++];return new h0e(t,r,n,s)}ToTape(){let t=[];return t.push(this.VisibleSegmentLength),t.push(this.InvisibleSegmentLength),t}},p0e=class{constructor(t,r,e,i){this.expressID=t,this.type=r,this.Position=e,this.Radius=i}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++];return new p0e(t,r,n,s)}ToTape(){let t=[];return t.push(this.Position),t.push(this.Radius),t}},d0e=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new d0e(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},f0e=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new f0e(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},m0e=class{constructor(t,r,e,i,n,s,a,o,l,c){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++];return new m0e(t,r,n,s,a,o,l,c,u,h)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t}},g0e=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new g0e(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t}},v0e=class{constructor(t,r,e,i,n,s,a){this.expressID=t,this.type=r,this.ProfileType=e,this.ProfileName=i,this.ParentProfile=n,this.Operator=s,this.Label=a}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++];return new v0e(t,r,n,s,a,o,l)}ToTape(){let t=[];return t.push(this.ProfileType),t.push(this.ProfileName),t.push(this.ParentProfile),t.push(this.Operator),t.push(this.Label),t}},y0e=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.Elements=e,this.UnitType=i,this.UserDefinedType=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new y0e(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.Elements),t.push(this.UnitType),t.push(this.UserDefinedType),t}},T0e=class{constructor(t,r,e,i){this.expressID=t,this.type=r,this.Unit=e,this.Exponent=i}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++];return new T0e(t,r,n,s)}ToTape(){let t=[];return t.push(this.Unit),t.push(this.Exponent),t}},E0e=class{constructor(t,r,e,i,n,s,a,o,l){this.expressID=t,this.type=r,this.LengthExponent=e,this.MassExponent=i,this.TimeExponent=n,this.ElectricCurrentExponent=s,this.ThermodynamicTemperatureExponent=a,this.AmountOfSubstanceExponent=o,this.LuminousIntensityExponent=l}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++];return new E0e(t,r,n,s,a,o,l,c,u)}ToTape(){let t=[];return t.push(this.LengthExponent),t.push(this.MassExponent),t.push(this.TimeExponent),t.push(this.ElectricCurrentExponent),t.push(this.ThermodynamicTemperatureExponent),t.push(this.AmountOfSubstanceExponent),t.push(this.LuminousIntensityExponent),t}},b0e=class{constructor(t,r,e){this.expressID=t,this.type=r,this.DirectionRatios=e}static FromTape(t,r,e){let i=0,n=e[i++];return new b0e(t,r,n)}ToTape(){let t=[];return t.push(this.DirectionRatios),t}},x0e=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new x0e(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},I0e=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new I0e(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},S0e=class{constructor(t,r,e,i,n,s,a){this.expressID=t,this.type=r,this.DistanceAlong=e,this.OffsetLateral=i,this.OffsetVertical=n,this.OffsetLongitudinal=s,this.AlongHorizontal=a}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++];return new S0e(t,r,n,s,a,o,l)}ToTape(){let t=[];return t.push(this.DistanceAlong),t.push(this.OffsetLateral),t.push(this.OffsetVertical),t.push(this.OffsetLongitudinal),t.push(this.AlongHorizontal),t}},_0e=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new _0e(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},w0e=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new w0e(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},R0e=class{constructor(t,r,e,i,n,s,a,o,l){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.LongName=o,this.PredefinedType=l}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++];return new R0e(t,r,n,s,a,o,l,c,u)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.LongName),t.push(this.PredefinedType),t}},M0e=class{constructor(t,r,e,i,n,s,a,o,l,c){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++];return new M0e(t,r,n,s,a,o,l,c,u,h)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t}},D0e=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new D0e(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t}},C0e=class{constructor(t,r,e,i,n,s,a,o,l,c){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++];return new C0e(t,r,n,s,a,o,l,c,u,h)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t}},A0e=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new A0e(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t}},O0e=class{constructor(t,r,e,i,n,s,a,o,l,c){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++];return new O0e(t,r,n,s,a,o,l,c,u,h)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t}},P0e=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new P0e(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t}},N0e=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.FlowDirection=c,this.PredefinedType=u,this.SystemType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new N0e(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.FlowDirection),t.push(this.PredefinedType),t.push(this.SystemType),t}},L0e=class{constructor(t,r,e,i,n,s,a,o,l){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.LongName=o,this.PredefinedType=l}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++];return new L0e(t,r,n,s,a,o,l,c,u)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.LongName),t.push(this.PredefinedType),t}},F0e=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p,d,f,m,g,y,E){this.expressID=t,this.type=r,this.Identification=e,this.Name=i,this.Description=n,this.Location=s,this.Purpose=a,this.IntendedUse=o,this.Scope=l,this.Revision=c,this.DocumentOwner=u,this.Editors=h,this.CreationTime=p,this.LastRevisionTime=d,this.ElectronicFormat=f,this.ValidFrom=m,this.ValidUntil=g,this.Confidentiality=y,this.Status=E}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++],m=e[i++],g=e[i++],y=e[i++],E=e[i++],b=e[i++],x=e[i++];return new F0e(t,r,n,s,a,o,l,c,u,h,p,d,f,m,g,y,E,b,x)}ToTape(){let t=[];return t.push(this.Identification),t.push(this.Name),t.push(this.Description),t.push(this.Location),t.push(this.Purpose),t.push(this.IntendedUse),t.push(this.Scope),t.push(this.Revision),t.push(this.DocumentOwner),t.push(this.Editors),t.push(this.CreationTime),t.push(this.LastRevisionTime),t.push(this.ElectronicFormat),t.push(this.ValidFrom),t.push(this.ValidUntil),t.push(this.Confidentiality),t.push(this.Status),t}},H0e=class{constructor(t,r,e,i,n,s,a){this.expressID=t,this.type=r,this.Name=e,this.Description=i,this.RelatingDocument=n,this.RelatedDocuments=s,this.RelationshipType=a}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++];return new H0e(t,r,n,s,a,o,l)}ToTape(){let t=[];return t.push(this.Name),t.push(this.Description),t.push(this.RelatingDocument),t.push(this.RelatedDocuments),t.push(this.RelationshipType),t}},U0e=class{constructor(t,r,e,i,n,s,a){this.expressID=t,this.type=r,this.Location=e,this.Identification=i,this.Name=n,this.Description=s,this.ReferencedDocument=a}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++];return new U0e(t,r,n,s,a,o,l)}ToTape(){let t=[];return t.push(this.Location),t.push(this.Identification),t.push(this.Name),t.push(this.Description),t.push(this.ReferencedDocument),t}},B0e=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p,d,f){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.OverallHeight=u,this.OverallWidth=h,this.PredefinedType=p,this.OperationType=d,this.UserDefinedOperationType=f}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++],m=e[i++],g=e[i++];return new B0e(t,r,n,s,a,o,l,c,u,h,p,d,f,m,g)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.OverallHeight),t.push(this.OverallWidth),t.push(this.PredefinedType),t.push(this.OperationType),t.push(this.UserDefinedOperationType),t}},k0e=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p,d,f,m,g,y,E){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.LiningDepth=a,this.LiningThickness=o,this.ThresholdDepth=l,this.ThresholdThickness=c,this.TransomThickness=u,this.TransomOffset=h,this.LiningOffset=p,this.ThresholdOffset=d,this.CasingThickness=f,this.CasingDepth=m,this.ShapeAspectStyle=g,this.LiningToPanelOffsetX=y,this.LiningToPanelOffsetY=E}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++],m=e[i++],g=e[i++],y=e[i++],E=e[i++],b=e[i++],x=e[i++];return new k0e(t,r,n,s,a,o,l,c,u,h,p,d,f,m,g,y,E,b,x)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.LiningDepth),t.push(this.LiningThickness),t.push(this.ThresholdDepth),t.push(this.ThresholdThickness),t.push(this.TransomThickness),t.push(this.TransomOffset),t.push(this.LiningOffset),t.push(this.ThresholdOffset),t.push(this.CasingThickness),t.push(this.CasingDepth),t.push(this.ShapeAspectStyle),t.push(this.LiningToPanelOffsetX),t.push(this.LiningToPanelOffsetY),t}},G0e=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.PanelDepth=a,this.PanelOperation=o,this.PanelWidth=l,this.PanelPosition=c,this.ShapeAspectStyle=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new G0e(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.PanelDepth),t.push(this.PanelOperation),t.push(this.PanelWidth),t.push(this.PanelPosition),t.push(this.ShapeAspectStyle),t}},V0e=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p,d,f){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.OverallHeight=u,this.OverallWidth=h,this.PredefinedType=p,this.OperationType=d,this.UserDefinedOperationType=f}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++],m=e[i++],g=e[i++];return new V0e(t,r,n,s,a,o,l,c,u,h,p,d,f,m,g)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.OverallHeight),t.push(this.OverallWidth),t.push(this.PredefinedType),t.push(this.OperationType),t.push(this.UserDefinedOperationType),t}},z0e=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p,d){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.OperationType=u,this.ConstructionType=h,this.ParameterTakesPrecedence=p,this.Sizeable=d}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++],m=e[i++];return new z0e(t,r,n,s,a,o,l,c,u,h,p,d,f,m)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.OperationType),t.push(this.ConstructionType),t.push(this.ParameterTakesPrecedence),t.push(this.Sizeable),t}},j0e=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p,d,f){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h,this.OperationType=p,this.ParameterTakesPrecedence=d,this.UserDefinedOperationType=f}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++],m=e[i++],g=e[i++];return new j0e(t,r,n,s,a,o,l,c,u,h,p,d,f,m,g)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t.push(this.OperationType),t.push(this.ParameterTakesPrecedence),t.push(this.UserDefinedOperationType),t}},W0e=class{constructor(t,r,e){this.expressID=t,this.type=r,this.Name=e}static FromTape(t,r,e){let i=0,n=e[i++];return new W0e(t,r,n)}ToTape(){let t=[];return t.push(this.Name),t}},q0e=class{constructor(t,r,e){this.expressID=t,this.type=r,this.Name=e}static FromTape(t,r,e){let i=0,n=e[i++];return new q0e(t,r,n)}ToTape(){let t=[];return t.push(this.Name),t}},Y0e=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new Y0e(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},X0e=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new X0e(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},$0e=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new $0e(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},Z0e=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new Z0e(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},K0e=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new K0e(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},J0e=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new J0e(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},Q0e=class{constructor(t,r,e,i){this.expressID=t,this.type=r,this.EdgeStart=e,this.EdgeEnd=i}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++];return new Q0e(t,r,n,s)}ToTape(){let t=[];return t.push(this.EdgeStart),t.push(this.EdgeEnd),t}},eve=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.EdgeStart=e,this.EdgeEnd=i,this.EdgeGeometry=n,this.SameSense=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new eve(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.EdgeStart),t.push(this.EdgeEnd),t.push(this.EdgeGeometry),t.push(this.SameSense),t}},tve=class{constructor(t,r,e){this.expressID=t,this.type=r,this.EdgeList=e}static FromTape(t,r,e){let i=0,n=e[i++];return new tve(t,r,n)}ToTape(){let t=[];return t.push(this.EdgeList),t}},rve=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new rve(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},ive=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new ive(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},nve=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new nve(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},sve=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new sve(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},ave=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new ave(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},ove=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new ove(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},lve=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new lve(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},cve=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new cve(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},uve=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new uve(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},hve=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new hve(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},pve=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new pve(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},dve=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new dve(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},fve=class{constructor(t,r,e,i,n,s,a,o,l,c){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++];return new fve(t,r,n,s,a,o,l,c,u,h)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t}},mve=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.AssemblyPlace=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new mve(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.AssemblyPlace),t.push(this.PredefinedType),t}},gve=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new gve(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},vve=class{constructor(t,r,e,i,n,s,a,o,l,c){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++];return new vve(t,r,n,s,a,o,l,c,u,h)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t}},yve=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new yve(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t}},Tve=class{constructor(t,r,e,i,n,s,a,o){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.MethodOfMeasurement=a,this.Quantities=o}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++];return new Tve(t,r,n,s,a,o,l,c)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.MethodOfMeasurement),t.push(this.Quantities),t}},Eve=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new Eve(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t}},bve=class{constructor(t,r,e){this.expressID=t,this.type=r,this.Position=e}static FromTape(t,r,e){let i=0,n=e[i++];return new bve(t,r,n)}ToTape(){let t=[];return t.push(this.Position),t}},xve=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.Position=e,this.SemiAxis1=i,this.SemiAxis2=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new xve(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.Position),t.push(this.SemiAxis1),t.push(this.SemiAxis2),t}},Ive=class{constructor(t,r,e,i,n,s,a){this.expressID=t,this.type=r,this.ProfileType=e,this.ProfileName=i,this.Position=n,this.SemiAxis1=s,this.SemiAxis2=a}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++];return new Ive(t,r,n,s,a,o,l)}ToTape(){let t=[];return t.push(this.ProfileType),t.push(this.ProfileName),t.push(this.Position),t.push(this.SemiAxis1),t.push(this.SemiAxis2),t}},Sve=class{constructor(t,r,e,i,n,s,a,o,l,c){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++];return new Sve(t,r,n,s,a,o,l,c,u,h)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t}},_ve=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new _ve(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t}},wve=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new wve(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},Rve=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new Rve(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},Mve=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new Mve(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},Dve=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new Dve(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},Cve=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new Cve(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},Ave=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new Ave(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},Ove=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.LongDescription=l,this.PredefinedType=c,this.EventTriggerType=u,this.UserDefinedEventTriggerType=h,this.EventOccurenceTime=p}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++];return new Ove(t,r,n,s,a,o,l,c,u,h,p,d,f)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.Identification),t.push(this.LongDescription),t.push(this.PredefinedType),t.push(this.EventTriggerType),t.push(this.UserDefinedEventTriggerType),t.push(this.EventOccurenceTime),t}},Pve=class{constructor(t,r,e,i,n,s,a,o,l){this.expressID=t,this.type=r,this.Name=e,this.DataOrigin=i,this.UserDefinedDataOrigin=n,this.ActualDate=s,this.EarlyDate=a,this.LateDate=o,this.ScheduleDate=l}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++];return new Pve(t,r,n,s,a,o,l,c,u)}ToTape(){let t=[];return t.push(this.Name),t.push(this.DataOrigin),t.push(this.UserDefinedDataOrigin),t.push(this.ActualDate),t.push(this.EarlyDate),t.push(this.LateDate),t.push(this.ScheduleDate),t}},Nve=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p,d){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.Identification=l,this.LongDescription=c,this.ProcessType=u,this.PredefinedType=h,this.EventTriggerType=p,this.UserDefinedEventTriggerType=d}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++],m=e[i++];return new Nve(t,r,n,s,a,o,l,c,u,h,p,d,f,m)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.Identification),t.push(this.LongDescription),t.push(this.ProcessType),t.push(this.PredefinedType),t.push(this.EventTriggerType),t.push(this.UserDefinedEventTriggerType),t}},Lve=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.Name=e,this.Description=i,this.Properties=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new Lve(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.Name),t.push(this.Description),t.push(this.Properties),t}},Fve=class{constructor(t,r){this.expressID=t,this.type=r}static FromTape(t,r,e){let i=0;return new Fve(t,r)}ToTape(){return[]}},Hve=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.Location=e,this.Identification=i,this.Name=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new Hve(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.Location),t.push(this.Identification),t.push(this.Name),t}},Uve=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.Name=e,this.Description=i,this.RelatingReference=n,this.RelatedResourceObjects=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new Uve(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.Name),t.push(this.Description),t.push(this.RelatingReference),t.push(this.RelatedResourceObjects),t}},Bve=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.LongName=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new Bve(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.LongName),t.push(this.PredefinedType),t}},kve=class{constructor(t,r,e,i,n,s,a,o,l,c){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.LongName=c}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++];return new kve(t,r,n,s,a,o,l,c,u,h)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.LongName),t}},Gve=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.Location=e,this.Identification=i,this.Name=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new Gve(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.Location),t.push(this.Identification),t.push(this.Name),t}},Vve=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.Location=e,this.Identification=i,this.Name=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new Vve(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.Location),t.push(this.Identification),t.push(this.Name),t}},zve=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.Location=e,this.Identification=i,this.Name=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new zve(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.Location),t.push(this.Identification),t.push(this.Name),t}},jve=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.SweptArea=e,this.Position=i,this.ExtrudedDirection=n,this.Depth=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new jve(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.SweptArea),t.push(this.Position),t.push(this.ExtrudedDirection),t.push(this.Depth),t}},Wve=class{constructor(t,r,e,i,n,s,a){this.expressID=t,this.type=r,this.SweptArea=e,this.Position=i,this.ExtrudedDirection=n,this.Depth=s,this.EndSweptArea=a}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++];return new Wve(t,r,n,s,a,o,l)}ToTape(){let t=[];return t.push(this.SweptArea),t.push(this.Position),t.push(this.ExtrudedDirection),t.push(this.Depth),t.push(this.EndSweptArea),t}},qve=class{constructor(t,r,e){this.expressID=t,this.type=r,this.Bounds=e}static FromTape(t,r,e){let i=0,n=e[i++];return new qve(t,r,n)}ToTape(){let t=[];return t.push(this.Bounds),t}},Yve=class{constructor(t,r,e){this.expressID=t,this.type=r,this.FbsmFaces=e}static FromTape(t,r,e){let i=0,n=e[i++];return new Yve(t,r,n)}ToTape(){let t=[];return t.push(this.FbsmFaces),t}},Xve=class{constructor(t,r,e,i){this.expressID=t,this.type=r,this.Bound=e,this.Orientation=i}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++];return new Xve(t,r,n,s)}ToTape(){let t=[];return t.push(this.Bound),t.push(this.Orientation),t}},$ve=class{constructor(t,r,e,i){this.expressID=t,this.type=r,this.Bound=e,this.Orientation=i}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++];return new $ve(t,r,n,s)}ToTape(){let t=[];return t.push(this.Bound),t.push(this.Orientation),t}},Zve=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.Bounds=e,this.FaceSurface=i,this.SameSense=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new Zve(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.Bounds),t.push(this.FaceSurface),t.push(this.SameSense),t}},Kve=class{constructor(t,r,e){this.expressID=t,this.type=r,this.Outer=e}static FromTape(t,r,e){let i=0,n=e[i++];return new Kve(t,r,n)}ToTape(){let t=[];return t.push(this.Outer),t}},Jve=class{constructor(t,r,e,i){this.expressID=t,this.type=r,this.Outer=e,this.Voids=i}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++];return new Jve(t,r,n,s)}ToTape(){let t=[];return t.push(this.Outer),t.push(this.Voids),t}},Qve=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.LongName=c,this.CompositionType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new Qve(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.LongName),t.push(this.CompositionType),t}},eye=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.LongName=c,this.CompositionType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new eye(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.LongName),t.push(this.CompositionType),t}},tye=class{constructor(t,r,e,i,n,s,a,o,l){this.expressID=t,this.type=r,this.Name=e,this.TensionFailureX=i,this.TensionFailureY=n,this.TensionFailureZ=s,this.CompressionFailureX=a,this.CompressionFailureY=o,this.CompressionFailureZ=l}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++];return new tye(t,r,n,s,a,o,l,c,u)}ToTape(){let t=[];return t.push(this.Name),t.push(this.TensionFailureX),t.push(this.TensionFailureY),t.push(this.TensionFailureZ),t.push(this.CompressionFailureX),t.push(this.CompressionFailureY),t.push(this.CompressionFailureZ),t}},rye=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new rye(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},iye=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new iye(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},nye=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new nye(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},sye=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new sye(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},aye=class{constructor(t,r,e,i,n,s,a,o,l,c){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++];return new aye(t,r,n,s,a,o,l,c,u,h)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t}},oye=class{constructor(t,r,e,i,n,s,a,o,l,c){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++];return new oye(t,r,n,s,a,o,l,c,u,h)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t}},lye=class{constructor(t,r,e,i,n,s,a,o,l,c){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++];return new lye(t,r,n,s,a,o,l,c,u,h)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t}},cye=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.Name=e,this.FillStyles=i,this.ModelorDraughting=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new cye(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.Name),t.push(this.FillStyles),t.push(this.ModelorDraughting),t}},uye=class{constructor(t,r,e,i,n,s,a){this.expressID=t,this.type=r,this.HatchLineAppearance=e,this.StartOfNextHatchLine=i,this.PointOfReferenceHatchLine=n,this.PatternStart=s,this.HatchLineAngle=a}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++];return new uye(t,r,n,s,a,o,l)}ToTape(){let t=[];return t.push(this.HatchLineAppearance),t.push(this.StartOfNextHatchLine),t.push(this.PointOfReferenceHatchLine),t.push(this.PatternStart),t.push(this.HatchLineAngle),t}},hye=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.TilingPattern=e,this.Tiles=i,this.TilingScale=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new hye(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.TilingPattern),t.push(this.Tiles),t.push(this.TilingScale),t}},pye=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new pye(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},dye=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new dye(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},fye=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new fye(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},mye=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new mye(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},gye=class{constructor(t,r,e,i,n,s,a,o){this.expressID=t,this.type=r,this.SweptArea=e,this.Position=i,this.Directrix=n,this.StartParam=s,this.EndParam=a,this.FixedReference=o}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++];return new gye(t,r,n,s,a,o,l,c)}ToTape(){let t=[];return t.push(this.SweptArea),t.push(this.Position),t.push(this.Directrix),t.push(this.StartParam),t.push(this.EndParam),t.push(this.FixedReference),t}},vye=class{constructor(t,r,e,i,n,s,a,o,l,c){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++];return new vye(t,r,n,s,a,o,l,c,u,h)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t}},yye=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new yye(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t}},Tye=class{constructor(t,r,e,i,n,s,a,o,l,c){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++];return new Tye(t,r,n,s,a,o,l,c,u,h)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t}},Eye=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new Eye(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t}},bye=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new bye(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},xye=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new xye(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},Iye=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new Iye(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},Sye=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new Sye(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},_ye=class{constructor(t,r,e,i,n,s,a,o,l,c){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++];return new _ye(t,r,n,s,a,o,l,c,u,h)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t}},wye=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new wye(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t}},Rye=class{constructor(t,r,e,i,n,s,a,o,l,c){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++];return new Rye(t,r,n,s,a,o,l,c,u,h)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t}},Mye=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new Mye(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t}},Dye=class{constructor(t,r,e,i,n,s,a,o,l,c){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++];return new Dye(t,r,n,s,a,o,l,c,u,h)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t}},Cye=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new Cye(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t}},Aye=class{constructor(t,r,e,i,n,s,a,o,l,c){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++];return new Aye(t,r,n,s,a,o,l,c,u,h)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t}},Oye=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new Oye(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t}},Pye=class{constructor(t,r,e,i,n,s,a,o,l,c){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++];return new Pye(t,r,n,s,a,o,l,c,u,h)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t}},Nye=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new Nye(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t}},Lye=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new Lye(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},Fye=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new Fye(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},Hye=class{constructor(t,r,e,i,n,s,a,o,l,c){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++];return new Hye(t,r,n,s,a,o,l,c,u,h)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t}},Uye=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new Uye(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t}},Bye=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new Bye(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},kye=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.AssemblyPlace=h,this.PredefinedType=p}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++];return new kye(t,r,n,s,a,o,l,c,u,h,p,d,f)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.AssemblyPlace),t.push(this.PredefinedType),t}},Gye=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new Gye(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},Vye=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new Vye(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},zye=class{constructor(t,r,e){this.expressID=t,this.type=r,this.Elements=e}static FromTape(t,r,e){let i=0,n=e[i++];return new zye(t,r,n)}ToTape(){let t=[];return t.push(this.Elements),t}},jye=class{constructor(t,r,e,i,n,s,a,o){this.expressID=t,this.type=r,this.ContextIdentifier=e,this.ContextType=i,this.CoordinateSpaceDimension=n,this.Precision=s,this.WorldCoordinateSystem=a,this.TrueNorth=o}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++];return new jye(t,r,n,s,a,o,l,c)}ToTape(){let t=[];return t.push(this.ContextIdentifier),t.push(this.ContextType),t.push(this.CoordinateSpaceDimension),t.push(this.Precision),t.push(this.WorldCoordinateSystem),t.push(this.TrueNorth),t}},Wye=class{constructor(t,r){this.expressID=t,this.type=r}static FromTape(t,r,e){let i=0;return new Wye(t,r)}ToTape(){return[]}},qye=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.ContextIdentifier=e,this.ContextType=i,this.CoordinateSpaceDimension=n,this.Precision=s,this.WorldCoordinateSystem=a,this.TrueNorth=o,this.ParentContext=l,this.TargetScale=c,this.TargetView=u,this.UserDefinedTargetView=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new qye(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.ContextIdentifier),t.push(this.ContextType),t.push(this.CoordinateSpaceDimension),t.push(this.Precision),t.push(this.WorldCoordinateSystem),t.push(this.TrueNorth),t.push(this.ParentContext),t.push(this.TargetScale),t.push(this.TargetView),t.push(this.UserDefinedTargetView),t}},Yye=class{constructor(t,r,e){this.expressID=t,this.type=r,this.Elements=e}static FromTape(t,r,e){let i=0,n=e[i++];return new Yye(t,r,n)}ToTape(){let t=[];return t.push(this.Elements),t}},Xye=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.UAxes=c,this.VAxes=u,this.WAxes=h,this.PredefinedType=p}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++];return new Xye(t,r,n,s,a,o,l,c,u,h,p,d,f)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.UAxes),t.push(this.VAxes),t.push(this.WAxes),t.push(this.PredefinedType),t}},$ye=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.AxisTag=e,this.AxisCurve=i,this.SameSense=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new $ye(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.AxisTag),t.push(this.AxisCurve),t.push(this.SameSense),t}},Zye=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.PlacementRelTo=e,this.PlacementLocation=i,this.PlacementRefDirection=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new Zye(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.PlacementRelTo),t.push(this.PlacementLocation),t.push(this.PlacementRefDirection),t}},Kye=class{constructor(t,r,e,i,n,s,a){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++];return new Kye(t,r,n,s,a,o,l)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t}},Jye=class{constructor(t,r,e,i){this.expressID=t,this.type=r,this.BaseSurface=e,this.AgreementFlag=i}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++];return new Jye(t,r,n,s)}ToTape(){let t=[];return t.push(this.BaseSurface),t.push(this.AgreementFlag),t}},Qye=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new Qye(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},eTe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new eTe(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},tTe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new tTe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},rTe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new rTe(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},iTe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.ProfileType=e,this.ProfileName=i,this.Position=n,this.OverallWidth=s,this.OverallDepth=a,this.WebThickness=o,this.FlangeThickness=l,this.FilletRadius=c,this.FlangeEdgeRadius=u,this.FlangeSlope=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new iTe(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.ProfileType),t.push(this.ProfileName),t.push(this.Position),t.push(this.OverallWidth),t.push(this.OverallDepth),t.push(this.WebThickness),t.push(this.FlangeThickness),t.push(this.FilletRadius),t.push(this.FlangeEdgeRadius),t.push(this.FlangeSlope),t}},nTe=class{constructor(t,r,e,i,n,s,a,o){this.expressID=t,this.type=r,this.RepeatS=e,this.RepeatT=i,this.Mode=n,this.TextureTransform=s,this.Parameter=a,this.URLReference=o}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++];return new nTe(t,r,n,s,a,o,l,c)}ToTape(){let t=[];return t.push(this.RepeatS),t.push(this.RepeatT),t.push(this.Mode),t.push(this.TextureTransform),t.push(this.Parameter),t.push(this.URLReference),t}},sTe=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.MappedTo=e,this.Opacity=i,this.Colours=n,this.ColourIndex=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new sTe(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.MappedTo),t.push(this.Opacity),t.push(this.Colours),t.push(this.ColourIndex),t}},aTe=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.Points=e,this.Segments=i,this.SelfIntersect=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new aTe(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.Points),t.push(this.Segments),t.push(this.SelfIntersect),t}},oTe=class{constructor(t,r,e){this.expressID=t,this.type=r,this.CoordIndex=e}static FromTape(t,r,e){let i=0,n=e[i++];return new oTe(t,r,n)}ToTape(){let t=[];return t.push(this.CoordIndex),t}},lTe=class{constructor(t,r,e,i){this.expressID=t,this.type=r,this.CoordIndex=e,this.InnerCoordIndices=i}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++];return new lTe(t,r,n,s)}ToTape(){let t=[];return t.push(this.CoordIndex),t.push(this.InnerCoordIndices),t}},cTe=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.Maps=e,this.MappedTo=i,this.TexCoords=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new cTe(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.Maps),t.push(this.MappedTo),t.push(this.TexCoords),t}},uTe=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.Maps=e,this.MappedTo=i,this.TexCoords=n,this.TexCoordIndex=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new uTe(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.Maps),t.push(this.MappedTo),t.push(this.TexCoords),t.push(this.TexCoordIndex),t}},hTe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new hTe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},pTe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new pTe(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},dTe=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.Curve3D=e,this.AssociatedGeometry=i,this.MasterRepresentation=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new dTe(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.Curve3D),t.push(this.AssociatedGeometry),t.push(this.MasterRepresentation),t}},fTe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.PredefinedType=o,this.Jurisdiction=l,this.ResponsiblePersons=c,this.LastUpdateDate=u,this.CurrentValue=h,this.OriginalValue=p}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++];return new fTe(t,r,n,s,a,o,l,c,u,h,p,d,f)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.PredefinedType),t.push(this.Jurisdiction),t.push(this.ResponsiblePersons),t.push(this.LastUpdateDate),t.push(this.CurrentValue),t.push(this.OriginalValue),t}},mTe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.Name=e,this.Description=i,this.StartTime=n,this.EndTime=s,this.TimeSeriesDataType=a,this.DataOrigin=o,this.UserDefinedDataOrigin=l,this.Unit=c,this.Values=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new mTe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.Name),t.push(this.Description),t.push(this.StartTime),t.push(this.EndTime),t.push(this.TimeSeriesDataType),t.push(this.DataOrigin),t.push(this.UserDefinedDataOrigin),t.push(this.Unit),t.push(this.Values),t}},gTe=class{constructor(t,r,e,i){this.expressID=t,this.type=r,this.TimeStamp=e,this.ListValues=i}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++];return new gTe(t,r,n,s)}ToTape(){let t=[];return t.push(this.TimeStamp),t.push(this.ListValues),t}},vTe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new vTe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},yTe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new yTe(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},TTe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.ProfileType=e,this.ProfileName=i,this.Position=n,this.Depth=s,this.Width=a,this.Thickness=o,this.FilletRadius=l,this.EdgeRadius=c,this.LegSlope=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new TTe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.ProfileType),t.push(this.ProfileName),t.push(this.Position),t.push(this.Depth),t.push(this.Width),t.push(this.Thickness),t.push(this.FilletRadius),t.push(this.EdgeRadius),t.push(this.LegSlope),t}},ETe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.LongDescription=l,this.Usage=c,this.BaseCosts=u,this.BaseQuantity=h,this.PredefinedType=p}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++];return new ETe(t,r,n,s,a,o,l,c,u,h,p,d,f)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.Identification),t.push(this.LongDescription),t.push(this.Usage),t.push(this.BaseCosts),t.push(this.BaseQuantity),t.push(this.PredefinedType),t}},bTe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p,d){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.Identification=l,this.LongDescription=c,this.ResourceType=u,this.BaseCosts=h,this.BaseQuantity=p,this.PredefinedType=d}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++],m=e[i++];return new bTe(t,r,n,s,a,o,l,c,u,h,p,d,f,m)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.Identification),t.push(this.LongDescription),t.push(this.ResourceType),t.push(this.BaseCosts),t.push(this.BaseQuantity),t.push(this.PredefinedType),t}},xTe=class{constructor(t,r,e,i,n,s,a){this.expressID=t,this.type=r,this.Name=e,this.DataOrigin=i,this.UserDefinedDataOrigin=n,this.LagValue=s,this.DurationType=a}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++];return new xTe(t,r,n,s,a,o,l)}ToTape(){let t=[];return t.push(this.Name),t.push(this.DataOrigin),t.push(this.UserDefinedDataOrigin),t.push(this.LagValue),t.push(this.DurationType),t}},ITe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new ITe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},STe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new STe(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},_Te=class{constructor(t,r,e,i,n,s,a,o){this.expressID=t,this.type=r,this.Name=e,this.Version=i,this.Publisher=n,this.VersionDate=s,this.Location=a,this.Description=o}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++];return new _Te(t,r,n,s,a,o,l,c)}ToTape(){let t=[];return t.push(this.Name),t.push(this.Version),t.push(this.Publisher),t.push(this.VersionDate),t.push(this.Location),t.push(this.Description),t}},wTe=class{constructor(t,r,e,i,n,s,a,o){this.expressID=t,this.type=r,this.Location=e,this.Identification=i,this.Name=n,this.Description=s,this.Language=a,this.ReferencedLibrary=o}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++];return new wTe(t,r,n,s,a,o,l,c)}ToTape(){let t=[];return t.push(this.Location),t.push(this.Identification),t.push(this.Name),t.push(this.Description),t.push(this.Language),t.push(this.ReferencedLibrary),t}},RTe=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.MainPlaneAngle=e,this.SecondaryPlaneAngle=i,this.LuminousIntensity=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new RTe(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.MainPlaneAngle),t.push(this.SecondaryPlaneAngle),t.push(this.LuminousIntensity),t}},MTe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new MTe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},DTe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new DTe(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},CTe=class{constructor(t,r,e,i){this.expressID=t,this.type=r,this.LightDistributionCurve=e,this.DistributionData=i}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++];return new CTe(t,r,n,s)}ToTape(){let t=[];return t.push(this.LightDistributionCurve),t.push(this.DistributionData),t}},ATe=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.Name=e,this.LightColour=i,this.AmbientIntensity=n,this.Intensity=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new ATe(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.Name),t.push(this.LightColour),t.push(this.AmbientIntensity),t.push(this.Intensity),t}},OTe=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.Name=e,this.LightColour=i,this.AmbientIntensity=n,this.Intensity=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new OTe(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.Name),t.push(this.LightColour),t.push(this.AmbientIntensity),t.push(this.Intensity),t}},PTe=class{constructor(t,r,e,i,n,s,a){this.expressID=t,this.type=r,this.Name=e,this.LightColour=i,this.AmbientIntensity=n,this.Intensity=s,this.Orientation=a}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++];return new PTe(t,r,n,s,a,o,l)}ToTape(){let t=[];return t.push(this.Name),t.push(this.LightColour),t.push(this.AmbientIntensity),t.push(this.Intensity),t.push(this.Orientation),t}},NTe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.Name=e,this.LightColour=i,this.AmbientIntensity=n,this.Intensity=s,this.Position=a,this.ColourAppearance=o,this.ColourTemperature=l,this.LuminousFlux=c,this.LightEmissionSource=u,this.LightDistributionDataSource=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new NTe(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.Name),t.push(this.LightColour),t.push(this.AmbientIntensity),t.push(this.Intensity),t.push(this.Position),t.push(this.ColourAppearance),t.push(this.ColourTemperature),t.push(this.LuminousFlux),t.push(this.LightEmissionSource),t.push(this.LightDistributionDataSource),t}},LTe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.Name=e,this.LightColour=i,this.AmbientIntensity=n,this.Intensity=s,this.Position=a,this.Radius=o,this.ConstantAttenuation=l,this.DistanceAttenuation=c,this.QuadricAttenuation=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new LTe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.Name),t.push(this.LightColour),t.push(this.AmbientIntensity),t.push(this.Intensity),t.push(this.Position),t.push(this.Radius),t.push(this.ConstantAttenuation),t.push(this.DistanceAttenuation),t.push(this.QuadricAttenuation),t}},FTe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p,d,f){this.expressID=t,this.type=r,this.Name=e,this.LightColour=i,this.AmbientIntensity=n,this.Intensity=s,this.Position=a,this.Radius=o,this.ConstantAttenuation=l,this.DistanceAttenuation=c,this.QuadricAttenuation=u,this.Orientation=h,this.ConcentrationExponent=p,this.SpreadAngle=d,this.BeamWidthAngle=f}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++],m=e[i++],g=e[i++];return new FTe(t,r,n,s,a,o,l,c,u,h,p,d,f,m,g)}ToTape(){let t=[];return t.push(this.Name),t.push(this.LightColour),t.push(this.AmbientIntensity),t.push(this.Intensity),t.push(this.Position),t.push(this.Radius),t.push(this.ConstantAttenuation),t.push(this.DistanceAttenuation),t.push(this.QuadricAttenuation),t.push(this.Orientation),t.push(this.ConcentrationExponent),t.push(this.SpreadAngle),t.push(this.BeamWidthAngle),t}},HTe=class{constructor(t,r,e,i){this.expressID=t,this.type=r,this.Pnt=e,this.Dir=i}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++];return new HTe(t,r,n,s)}ToTape(){let t=[];return t.push(this.Pnt),t.push(this.Dir),t}},UTe=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.StartPoint=e,this.StartDirection=i,this.SegmentLength=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new UTe(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.StartPoint),t.push(this.StartDirection),t.push(this.SegmentLength),t}},BTe=class{constructor(t,r,e,i,n,s,a){this.expressID=t,this.type=r,this.PlacementRelTo=e,this.PlacementMeasuredAlong=i,this.Distance=n,this.Orientation=s,this.CartesianPosition=a}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++];return new BTe(t,r,n,s,a,o,l)}ToTape(){let t=[];return t.push(this.PlacementRelTo),t.push(this.PlacementMeasuredAlong),t.push(this.Distance),t.push(this.Orientation),t.push(this.CartesianPosition),t}},kTe=class{constructor(t,r,e,i,n,s,a,o,l,c){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Axis=c}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++];return new kTe(t,r,n,s,a,o,l,c,u,h)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Axis),t}},GTe=class{constructor(t,r,e,i){this.expressID=t,this.type=r,this.PlacementRelTo=e,this.RelativePlacement=i}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++];return new GTe(t,r,n,s)}ToTape(){let t=[];return t.push(this.PlacementRelTo),t.push(this.RelativePlacement),t}},VTe=class{constructor(t,r){this.expressID=t,this.type=r}static FromTape(t,r,e){let i=0;return new VTe(t,r)}ToTape(){return[]}},zTe=class{constructor(t,r,e){this.expressID=t,this.type=r,this.Outer=e}static FromTape(t,r,e){let i=0,n=e[i++];return new zTe(t,r,n)}ToTape(){let t=[];return t.push(this.Outer),t}},jTe=class{constructor(t,r,e,i,n,s,a,o,l,c){this.expressID=t,this.type=r,this.SourceCRS=e,this.TargetCRS=i,this.Eastings=n,this.Northings=s,this.OrthogonalHeight=a,this.XAxisAbscissa=o,this.XAxisOrdinate=l,this.Scale=c}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++];return new jTe(t,r,n,s,a,o,l,c,u,h)}ToTape(){let t=[];return t.push(this.SourceCRS),t.push(this.TargetCRS),t.push(this.Eastings),t.push(this.Northings),t.push(this.OrthogonalHeight),t.push(this.XAxisAbscissa),t.push(this.XAxisOrdinate),t.push(this.Scale),t}},WTe=class{constructor(t,r,e,i){this.expressID=t,this.type=r,this.MappingSource=e,this.MappingTarget=i}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++];return new WTe(t,r,n,s)}ToTape(){let t=[];return t.push(this.MappingSource),t.push(this.MappingTarget),t}},qTe=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.Name=e,this.Description=i,this.Category=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new qTe(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.Name),t.push(this.Description),t.push(this.Category),t}},YTe=class{constructor(t,r,e,i){this.expressID=t,this.type=r,this.MaterialClassifications=e,this.ClassifiedMaterial=i}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++];return new YTe(t,r,n,s)}ToTape(){let t=[];return t.push(this.MaterialClassifications),t.push(this.ClassifiedMaterial),t}},XTe=class{constructor(t,r,e,i,n,s,a){this.expressID=t,this.type=r,this.Name=e,this.Description=i,this.Material=n,this.Fraction=s,this.Category=a}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++];return new XTe(t,r,n,s,a,o,l)}ToTape(){let t=[];return t.push(this.Name),t.push(this.Description),t.push(this.Material),t.push(this.Fraction),t.push(this.Category),t}},$Te=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.Name=e,this.Description=i,this.MaterialConstituents=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new $Te(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.Name),t.push(this.Description),t.push(this.MaterialConstituents),t}},ZTe=class{constructor(t,r){this.expressID=t,this.type=r}static FromTape(t,r,e){let i=0;return new ZTe(t,r)}ToTape(){return[]}},KTe=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.Name=e,this.Description=i,this.Representations=n,this.RepresentedMaterial=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new KTe(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.Name),t.push(this.Description),t.push(this.Representations),t.push(this.RepresentedMaterial),t}},JTe=class{constructor(t,r,e,i,n,s,a,o,l){this.expressID=t,this.type=r,this.Material=e,this.LayerThickness=i,this.IsVentilated=n,this.Name=s,this.Description=a,this.Category=o,this.Priority=l}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++];return new JTe(t,r,n,s,a,o,l,c,u)}ToTape(){let t=[];return t.push(this.Material),t.push(this.LayerThickness),t.push(this.IsVentilated),t.push(this.Name),t.push(this.Description),t.push(this.Category),t.push(this.Priority),t}},QTe=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.MaterialLayers=e,this.LayerSetName=i,this.Description=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new QTe(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.MaterialLayers),t.push(this.LayerSetName),t.push(this.Description),t}},eEe=class{constructor(t,r,e,i,n,s,a){this.expressID=t,this.type=r,this.ForLayerSet=e,this.LayerSetDirection=i,this.DirectionSense=n,this.OffsetFromReferenceLine=s,this.ReferenceExtent=a}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++];return new eEe(t,r,n,s,a,o,l)}ToTape(){let t=[];return t.push(this.ForLayerSet),t.push(this.LayerSetDirection),t.push(this.DirectionSense),t.push(this.OffsetFromReferenceLine),t.push(this.ReferenceExtent),t}},tEe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.Material=e,this.LayerThickness=i,this.IsVentilated=n,this.Name=s,this.Description=a,this.Category=o,this.Priority=l,this.OffsetDirection=c,this.OffsetValues=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new tEe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.Material),t.push(this.LayerThickness),t.push(this.IsVentilated),t.push(this.Name),t.push(this.Description),t.push(this.Category),t.push(this.Priority),t.push(this.OffsetDirection),t.push(this.OffsetValues),t}},rEe=class{constructor(t,r,e){this.expressID=t,this.type=r,this.Materials=e}static FromTape(t,r,e){let i=0,n=e[i++];return new rEe(t,r,n)}ToTape(){let t=[];return t.push(this.Materials),t}},iEe=class{constructor(t,r,e,i,n,s,a,o){this.expressID=t,this.type=r,this.Name=e,this.Description=i,this.Material=n,this.Profile=s,this.Priority=a,this.Category=o}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++];return new iEe(t,r,n,s,a,o,l,c)}ToTape(){let t=[];return t.push(this.Name),t.push(this.Description),t.push(this.Material),t.push(this.Profile),t.push(this.Priority),t.push(this.Category),t}},nEe=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.Name=e,this.Description=i,this.MaterialProfiles=n,this.CompositeProfile=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new nEe(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.Name),t.push(this.Description),t.push(this.MaterialProfiles),t.push(this.CompositeProfile),t}},sEe=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.ForProfileSet=e,this.CardinalPoint=i,this.ReferenceExtent=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new sEe(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.ForProfileSet),t.push(this.CardinalPoint),t.push(this.ReferenceExtent),t}},aEe=class{constructor(t,r,e,i,n,s,a){this.expressID=t,this.type=r,this.ForProfileSet=e,this.CardinalPoint=i,this.ReferenceExtent=n,this.ForProfileEndSet=s,this.CardinalEndPoint=a}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++];return new aEe(t,r,n,s,a,o,l)}ToTape(){let t=[];return t.push(this.ForProfileSet),t.push(this.CardinalPoint),t.push(this.ReferenceExtent),t.push(this.ForProfileEndSet),t.push(this.CardinalEndPoint),t}},oEe=class{constructor(t,r,e,i,n,s,a,o,l){this.expressID=t,this.type=r,this.Name=e,this.Description=i,this.Material=n,this.Profile=s,this.Priority=a,this.Category=o,this.OffsetValues=l}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++];return new oEe(t,r,n,s,a,o,l,c,u)}ToTape(){let t=[];return t.push(this.Name),t.push(this.Description),t.push(this.Material),t.push(this.Profile),t.push(this.Priority),t.push(this.Category),t.push(this.OffsetValues),t}},lEe=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.Name=e,this.Description=i,this.Properties=n,this.Material=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new lEe(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.Name),t.push(this.Description),t.push(this.Properties),t.push(this.Material),t}},cEe=class{constructor(t,r,e,i,n,s,a){this.expressID=t,this.type=r,this.Name=e,this.Description=i,this.RelatingMaterial=n,this.RelatedMaterials=s,this.Expression=a}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++];return new cEe(t,r,n,s,a,o,l)}ToTape(){let t=[];return t.push(this.Name),t.push(this.Description),t.push(this.RelatingMaterial),t.push(this.RelatedMaterials),t.push(this.Expression),t}},uEe=class{constructor(t,r){this.expressID=t,this.type=r}static FromTape(t,r,e){let i=0;return new uEe(t,r)}ToTape(){return[]}},hEe=class{constructor(t,r,e,i){this.expressID=t,this.type=r,this.ValueComponent=e,this.UnitComponent=i}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++];return new hEe(t,r,n,s)}ToTape(){let t=[];return t.push(this.ValueComponent),t.push(this.UnitComponent),t}},pEe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.NominalDiameter=u,this.NominalLength=h,this.PredefinedType=p}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++];return new pEe(t,r,n,s,a,o,l,c,u,h,p,d,f)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.NominalDiameter),t.push(this.NominalLength),t.push(this.PredefinedType),t}},dEe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p,d){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h,this.NominalDiameter=p,this.NominalLength=d}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++],m=e[i++];return new dEe(t,r,n,s,a,o,l,c,u,h,p,d,f,m)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t.push(this.NominalDiameter),t.push(this.NominalLength),t}},fEe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new fEe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},mEe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new mEe(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},gEe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new gEe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},vEe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new vEe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},yEe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new yEe(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},TEe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p){this.expressID=t,this.type=r,this.Name=e,this.Description=i,this.ConstraintGrade=n,this.ConstraintSource=s,this.CreatingActor=a,this.CreationTime=o,this.UserDefinedGrade=l,this.Benchmark=c,this.ValueSource=u,this.DataValue=h,this.ReferencePath=p}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++];return new TEe(t,r,n,s,a,o,l,c,u,h,p,d,f)}ToTape(){let t=[];return t.push(this.Name),t.push(this.Description),t.push(this.ConstraintGrade),t.push(this.ConstraintSource),t.push(this.CreatingActor),t.push(this.CreationTime),t.push(this.UserDefinedGrade),t.push(this.Benchmark),t.push(this.ValueSource),t.push(this.DataValue),t.push(this.ReferencePath),t}},EEe=class{constructor(t,r,e,i,n,s,a){this.expressID=t,this.type=r,this.ProfileType=e,this.ProfileName=i,this.ParentProfile=n,this.Operator=s,this.Label=a}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++];return new EEe(t,r,n,s,a,o,l)}ToTape(){let t=[];return t.push(this.ProfileType),t.push(this.ProfileName),t.push(this.ParentProfile),t.push(this.Operator),t.push(this.Label),t}},bEe=class{constructor(t,r,e){this.expressID=t,this.type=r,this.Currency=e}static FromTape(t,r,e){let i=0,n=e[i++];return new bEe(t,r,n)}ToTape(){let t=[];return t.push(this.Currency),t}},xEe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new xEe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},IEe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new IEe(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},SEe=class{constructor(t,r,e,i){this.expressID=t,this.type=r,this.Dimensions=e,this.UnitType=i}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++];return new SEe(t,r,n,s)}ToTape(){let t=[];return t.push(this.Dimensions),t.push(this.UnitType),t}},_Ee=class{constructor(t,r,e,i,n,s,a){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++];return new _Ee(t,r,n,s,a,o,l)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t}},wEe=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new wEe(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t}},REe=class{constructor(t,r,e){this.expressID=t,this.type=r,this.PlacementRelTo=e}static FromTape(t,r,e){let i=0,n=e[i++];return new REe(t,r,n)}ToTape(){let t=[];return t.push(this.PlacementRelTo),t}},MEe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p){this.expressID=t,this.type=r,this.Name=e,this.Description=i,this.ConstraintGrade=n,this.ConstraintSource=s,this.CreatingActor=a,this.CreationTime=o,this.UserDefinedGrade=l,this.BenchmarkValues=c,this.LogicalAggregator=u,this.ObjectiveQualifier=h,this.UserDefinedQualifier=p}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++];return new MEe(t,r,n,s,a,o,l,c,u,h,p,d,f)}ToTape(){let t=[];return t.push(this.Name),t.push(this.Description),t.push(this.ConstraintGrade),t.push(this.ConstraintSource),t.push(this.CreatingActor),t.push(this.CreationTime),t.push(this.UserDefinedGrade),t.push(this.BenchmarkValues),t.push(this.LogicalAggregator),t.push(this.ObjectiveQualifier),t.push(this.UserDefinedQualifier),t}},DEe=class{constructor(t,r,e,i,n,s,a,o,l){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.TheActor=o,this.PredefinedType=l}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++];return new DEe(t,r,n,s,a,o,l,c,u)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.TheActor),t.push(this.PredefinedType),t}},CEe=class{constructor(t,r,e){this.expressID=t,this.type=r,this.BasisCurve=e}static FromTape(t,r,e){let i=0,n=e[i++];return new CEe(t,r,n)}ToTape(){let t=[];return t.push(this.BasisCurve),t}},AEe=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.BasisCurve=e,this.Distance=i,this.SelfIntersect=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new AEe(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.BasisCurve),t.push(this.Distance),t.push(this.SelfIntersect),t}},OEe=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.BasisCurve=e,this.Distance=i,this.SelfIntersect=n,this.RefDirection=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new OEe(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.BasisCurve),t.push(this.Distance),t.push(this.SelfIntersect),t.push(this.RefDirection),t}},PEe=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.BasisCurve=e,this.OffsetValues=i,this.Tag=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new PEe(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.BasisCurve),t.push(this.OffsetValues),t.push(this.Tag),t}},NEe=class{constructor(t,r,e){this.expressID=t,this.type=r,this.CfsFaces=e}static FromTape(t,r,e){let i=0,n=e[i++];return new NEe(t,r,n)}ToTape(){let t=[];return t.push(this.CfsFaces),t}},LEe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new LEe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},FEe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new FEe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},HEe=class{constructor(t,r,e,i,n,s,a){this.expressID=t,this.type=r,this.Identification=e,this.Name=i,this.Description=n,this.Roles=s,this.Addresses=a}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++];return new HEe(t,r,n,s,a,o,l)}ToTape(){let t=[];return t.push(this.Identification),t.push(this.Name),t.push(this.Description),t.push(this.Roles),t.push(this.Addresses),t}},UEe=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.Name=e,this.Description=i,this.RelatingOrganization=n,this.RelatedOrganizations=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new UEe(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.Name),t.push(this.Description),t.push(this.RelatingOrganization),t.push(this.RelatedOrganizations),t}},BEe=class{constructor(t,r,e,i){this.expressID=t,this.type=r,this.LateralAxisDirection=e,this.VerticalAxisDirection=i}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++];return new BEe(t,r,n,s)}ToTape(){let t=[];return t.push(this.LateralAxisDirection),t.push(this.VerticalAxisDirection),t}},kEe=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.EdgeStart=e,this.EdgeEnd=i,this.EdgeElement=n,this.Orientation=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new kEe(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.EdgeStart),t.push(this.EdgeEnd),t.push(this.EdgeElement),t.push(this.Orientation),t}},GEe=class{constructor(t,r,e,i){this.expressID=t,this.type=r,this.Segments=e,this.SelfIntersect=i}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++];return new GEe(t,r,n,s)}ToTape(){let t=[];return t.push(this.Segments),t.push(this.SelfIntersect),t}},VEe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new VEe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},zEe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new zEe(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},jEe=class{constructor(t,r,e,i,n,s,a,o,l,c){this.expressID=t,this.type=r,this.OwningUser=e,this.OwningApplication=i,this.State=n,this.ChangeAction=s,this.LastModifiedDate=a,this.LastModifyingUser=o,this.LastModifyingApplication=l,this.CreationDate=c}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++];return new jEe(t,r,n,s,a,o,l,c,u,h)}ToTape(){let t=[];return t.push(this.OwningUser),t.push(this.OwningApplication),t.push(this.State),t.push(this.ChangeAction),t.push(this.LastModifiedDate),t.push(this.LastModifyingUser),t.push(this.LastModifyingApplication),t.push(this.CreationDate),t}},WEe=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.ProfileType=e,this.ProfileName=i,this.Position=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new WEe(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.ProfileType),t.push(this.ProfileName),t.push(this.Position),t}},qEe=class{constructor(t,r,e){this.expressID=t,this.type=r,this.EdgeList=e}static FromTape(t,r,e){let i=0,n=e[i++];return new qEe(t,r,n)}ToTape(){let t=[];return t.push(this.EdgeList),t}},YEe=class{constructor(t,r,e,i){this.expressID=t,this.type=r,this.BasisSurface=e,this.ReferenceCurve=i}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++];return new YEe(t,r,n,s)}ToTape(){let t=[];return t.push(this.BasisSurface),t.push(this.ReferenceCurve),t}},XEe=class{constructor(t,r,e,i,n,s,a,o,l,c){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.LifeCyclePhase=l,this.PredefinedType=c}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++];return new XEe(t,r,n,s,a,o,l,c,u,h)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.Identification),t.push(this.LifeCyclePhase),t.push(this.PredefinedType),t}},$Ee=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.OperationType=a,this.PanelPosition=o,this.FrameDepth=l,this.FrameThickness=c,this.ShapeAspectStyle=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new $Ee(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.OperationType),t.push(this.PanelPosition),t.push(this.FrameDepth),t.push(this.FrameThickness),t.push(this.ShapeAspectStyle),t}},ZEe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.PredefinedType=l,this.Status=c,this.LongDescription=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new ZEe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.Identification),t.push(this.PredefinedType),t.push(this.Status),t.push(this.LongDescription),t}},KEe=class{constructor(t,r,e,i,n,s,a,o,l,c){this.expressID=t,this.type=r,this.Identification=e,this.FamilyName=i,this.GivenName=n,this.MiddleNames=s,this.PrefixTitles=a,this.SuffixTitles=o,this.Roles=l,this.Addresses=c}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++];return new KEe(t,r,n,s,a,o,l,c,u,h)}ToTape(){let t=[];return t.push(this.Identification),t.push(this.FamilyName),t.push(this.GivenName),t.push(this.MiddleNames),t.push(this.PrefixTitles),t.push(this.SuffixTitles),t.push(this.Roles),t.push(this.Addresses),t}},JEe=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.ThePerson=e,this.TheOrganization=i,this.Roles=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new JEe(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.ThePerson),t.push(this.TheOrganization),t.push(this.Roles),t}},QEe=class{constructor(t,r,e,i,n,s,a,o){this.expressID=t,this.type=r,this.Name=e,this.Description=i,this.HasQuantities=n,this.Discrimination=s,this.Quality=a,this.Usage=o}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++];return new QEe(t,r,n,s,a,o,l,c)}ToTape(){let t=[];return t.push(this.Name),t.push(this.Description),t.push(this.HasQuantities),t.push(this.Discrimination),t.push(this.Quality),t.push(this.Usage),t}},e1e=class{constructor(t,r,e,i){this.expressID=t,this.type=r,this.Name=e,this.Description=i}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++];return new e1e(t,r,n,s)}ToTape(){let t=[];return t.push(this.Name),t.push(this.Description),t}},t1e=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.Name=e,this.Description=i,this.Unit=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new t1e(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.Name),t.push(this.Description),t.push(this.Unit),t}},r1e=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u,this.ConstructionType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new r1e(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t.push(this.ConstructionType),t}},i1e=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new i1e(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},n1e=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new n1e(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},s1e=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new s1e(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},a1e=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new a1e(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},o1e=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new o1e(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},l1e=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.RepeatS=e,this.RepeatT=i,this.Mode=n,this.TextureTransform=s,this.Parameter=a,this.Width=o,this.Height=l,this.ColourComponents=c,this.Pixel=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new l1e(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.RepeatS),t.push(this.RepeatT),t.push(this.Mode),t.push(this.TextureTransform),t.push(this.Parameter),t.push(this.Width),t.push(this.Height),t.push(this.ColourComponents),t.push(this.Pixel),t}},c1e=class{constructor(t,r,e){this.expressID=t,this.type=r,this.Location=e}static FromTape(t,r,e){let i=0,n=e[i++];return new c1e(t,r,n)}ToTape(){let t=[];return t.push(this.Location),t}},u1e=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.SizeInX=e,this.SizeInY=i,this.Placement=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new u1e(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.SizeInX),t.push(this.SizeInY),t.push(this.Placement),t}},h1e=class{constructor(t,r,e,i){this.expressID=t,this.type=r,this.SizeInX=e,this.SizeInY=i}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++];return new h1e(t,r,n,s)}ToTape(){let t=[];return t.push(this.SizeInX),t.push(this.SizeInY),t}},p1e=class{constructor(t,r,e){this.expressID=t,this.type=r,this.Position=e}static FromTape(t,r,e){let i=0,n=e[i++];return new p1e(t,r,n)}ToTape(){let t=[];return t.push(this.Position),t}},d1e=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new d1e(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},f1e=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new f1e(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},m1e=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new m1e(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},g1e=class{constructor(t,r){this.expressID=t,this.type=r}static FromTape(t,r,e){let i=0;return new g1e(t,r)}ToTape(){return[]}},v1e=class{constructor(t,r,e,i){this.expressID=t,this.type=r,this.BasisCurve=e,this.PointParameter=i}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++];return new v1e(t,r,n,s)}ToTape(){let t=[];return t.push(this.BasisCurve),t.push(this.PointParameter),t}},y1e=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.BasisSurface=e,this.PointParameterU=i,this.PointParameterV=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new y1e(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.BasisSurface),t.push(this.PointParameterU),t.push(this.PointParameterV),t}},T1e=class{constructor(t,r,e){this.expressID=t,this.type=r,this.Polygon=e}static FromTape(t,r,e){let i=0,n=e[i++];return new T1e(t,r,n)}ToTape(){let t=[];return t.push(this.Polygon),t}},E1e=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.BaseSurface=e,this.AgreementFlag=i,this.Position=n,this.PolygonalBoundary=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new E1e(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.BaseSurface),t.push(this.AgreementFlag),t.push(this.Position),t.push(this.PolygonalBoundary),t}},b1e=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.Coordinates=e,this.Closed=i,this.Faces=n,this.PnIndex=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new b1e(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.Coordinates),t.push(this.Closed),t.push(this.Faces),t.push(this.PnIndex),t}},x1e=class{constructor(t,r,e){this.expressID=t,this.type=r,this.Points=e}static FromTape(t,r,e){let i=0,n=e[i++];return new x1e(t,r,n)}ToTape(){let t=[];return t.push(this.Points),t}},I1e=class{constructor(t,r,e,i,n,s,a,o,l){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++];return new I1e(t,r,n,s,a,o,l,c,u)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t}},S1e=class{constructor(t,r,e,i,n,s,a,o,l){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++];return new S1e(t,r,n,s,a,o,l,c,u)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t}},_1e=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.Purpose=e,this.Description=i,this.UserDefinedPurpose=n,this.InternalLocation=s,this.AddressLines=a,this.PostalBox=o,this.Town=l,this.Region=c,this.PostalCode=u,this.Country=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new _1e(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.Purpose),t.push(this.Description),t.push(this.UserDefinedPurpose),t.push(this.InternalLocation),t.push(this.AddressLines),t.push(this.PostalBox),t.push(this.Town),t.push(this.Region),t.push(this.PostalCode),t.push(this.Country),t}},w1e=class{constructor(t,r,e){this.expressID=t,this.type=r,this.Name=e}static FromTape(t,r,e){let i=0,n=e[i++];return new w1e(t,r,n)}ToTape(){let t=[];return t.push(this.Name),t}},R1e=class{constructor(t,r,e){this.expressID=t,this.type=r,this.Name=e}static FromTape(t,r,e){let i=0,n=e[i++];return new R1e(t,r,n)}ToTape(){let t=[];return t.push(this.Name),t}},M1e=class{constructor(t,r,e){this.expressID=t,this.type=r,this.Name=e}static FromTape(t,r,e){let i=0,n=e[i++];return new M1e(t,r,n)}ToTape(){let t=[];return t.push(this.Name),t}},D1e=class{constructor(t,r){this.expressID=t,this.type=r}static FromTape(t,r,e){let i=0;return new D1e(t,r)}ToTape(){return[]}},C1e=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new C1e(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t}},A1e=class{constructor(t,r,e){this.expressID=t,this.type=r,this.Name=e}static FromTape(t,r,e){let i=0,n=e[i++];return new A1e(t,r,n)}ToTape(){let t=[];return t.push(this.Name),t}},O1e=class{constructor(t,r){this.expressID=t,this.type=r}static FromTape(t,r,e){let i=0;return new O1e(t,r)}ToTape(){return[]}},P1e=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.Name=e,this.Description=i,this.AssignedItems=n,this.Identifier=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new P1e(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.Name),t.push(this.Description),t.push(this.AssignedItems),t.push(this.Identifier),t}},N1e=class{constructor(t,r,e,i,n,s,a,o,l,c){this.expressID=t,this.type=r,this.Name=e,this.Description=i,this.AssignedItems=n,this.Identifier=s,this.LayerOn=a,this.LayerFrozen=o,this.LayerBlocked=l,this.LayerStyles=c}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++];return new N1e(t,r,n,s,a,o,l,c,u,h)}ToTape(){let t=[];return t.push(this.Name),t.push(this.Description),t.push(this.AssignedItems),t.push(this.Identifier),t.push(this.LayerOn),t.push(this.LayerFrozen),t.push(this.LayerBlocked),t.push(this.LayerStyles),t}},L1e=class{constructor(t,r,e){this.expressID=t,this.type=r,this.Name=e}static FromTape(t,r,e){let i=0,n=e[i++];return new L1e(t,r,n)}ToTape(){let t=[];return t.push(this.Name),t}},F1e=class{constructor(t,r,e){this.expressID=t,this.type=r,this.Styles=e}static FromTape(t,r,e){let i=0,n=e[i++];return new F1e(t,r,n)}ToTape(){let t=[];return t.push(this.Styles),t}},H1e=class{constructor(t,r,e,i,n,s,a,o,l,c){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.LongDescription=l,this.PredefinedType=c}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++];return new H1e(t,r,n,s,a,o,l,c,u,h)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.Identification),t.push(this.LongDescription),t.push(this.PredefinedType),t}},U1e=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.Identification=l,this.LongDescription=c,this.ProcessType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new U1e(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.Identification),t.push(this.LongDescription),t.push(this.ProcessType),t.push(this.PredefinedType),t}},B1e=class{constructor(t,r,e,i,n,s,a,o,l){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.LongDescription=l}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++];return new B1e(t,r,n,s,a,o,l,c,u)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.Identification),t.push(this.LongDescription),t}},k1e=class{constructor(t,r,e,i,n,s,a,o,l){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++];return new k1e(t,r,n,s,a,o,l,c,u)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t}},G1e=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.Name=e,this.Description=i,this.Representations=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new G1e(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.Name),t.push(this.Description),t.push(this.Representations),t}},V1e=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.Name=e,this.Description=i,this.Representations=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new V1e(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.Name),t.push(this.Description),t.push(this.Representations),t}},z1e=class{constructor(t,r,e,i){this.expressID=t,this.type=r,this.ProfileType=e,this.ProfileName=i}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++];return new z1e(t,r,n,s)}ToTape(){let t=[];return t.push(this.ProfileType),t.push(this.ProfileName),t}},j1e=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.Name=e,this.Description=i,this.Properties=n,this.ProfileDefinition=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new j1e(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.Name),t.push(this.Description),t.push(this.Properties),t.push(this.ProfileDefinition),t}},W1e=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.LongName=o,this.Phase=l,this.RepresentationContexts=c,this.UnitsInContext=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new W1e(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.LongName),t.push(this.Phase),t.push(this.RepresentationContexts),t.push(this.UnitsInContext),t}},q1e=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.LongName=o,this.Phase=l,this.RepresentationContexts=c,this.UnitsInContext=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new q1e(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.LongName),t.push(this.Phase),t.push(this.RepresentationContexts),t.push(this.UnitsInContext),t}},Y1e=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.PredefinedType=l,this.Status=c,this.LongDescription=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new Y1e(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.Identification),t.push(this.PredefinedType),t.push(this.Status),t.push(this.LongDescription),t}},X1e=class{constructor(t,r,e,i,n,s,a,o,l){this.expressID=t,this.type=r,this.Name=e,this.Description=i,this.GeodeticDatum=n,this.VerticalDatum=s,this.MapProjection=a,this.MapZone=o,this.MapUnit=l}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++];return new X1e(t,r,n,s,a,o,l,c,u)}ToTape(){let t=[];return t.push(this.Name),t.push(this.Description),t.push(this.GeodeticDatum),t.push(this.VerticalDatum),t.push(this.MapProjection),t.push(this.MapZone),t.push(this.MapUnit),t}},$1e=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new $1e(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},Z1e=class{constructor(t,r,e,i){this.expressID=t,this.type=r,this.Name=e,this.Description=i}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++];return new Z1e(t,r,n,s)}ToTape(){let t=[];return t.push(this.Name),t.push(this.Description),t}},K1e=class{constructor(t,r){this.expressID=t,this.type=r}static FromTape(t,r,e){let i=0;return new K1e(t,r)}ToTape(){return[]}},J1e=class{constructor(t,r,e,i,n,s,a,o){this.expressID=t,this.type=r,this.Name=e,this.Description=i,this.UpperBoundValue=n,this.LowerBoundValue=s,this.Unit=a,this.SetPointValue=o}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++];return new J1e(t,r,n,s,a,o,l,c)}ToTape(){let t=[];return t.push(this.Name),t.push(this.Description),t.push(this.UpperBoundValue),t.push(this.LowerBoundValue),t.push(this.Unit),t.push(this.SetPointValue),t}},Q1e=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new Q1e(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t}},ebe=class{constructor(t,r,e,i,n,s,a){this.expressID=t,this.type=r,this.Name=e,this.Description=i,this.DependingProperty=n,this.DependantProperty=s,this.Expression=a}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++];return new ebe(t,r,n,s,a,o,l)}ToTape(){let t=[];return t.push(this.Name),t.push(this.Description),t.push(this.DependingProperty),t.push(this.DependantProperty),t.push(this.Expression),t}},tbe=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.Name=e,this.Description=i,this.EnumerationValues=n,this.EnumerationReference=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new tbe(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.Name),t.push(this.Description),t.push(this.EnumerationValues),t.push(this.EnumerationReference),t}},rbe=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.Name=e,this.EnumerationValues=i,this.Unit=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new rbe(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.Name),t.push(this.EnumerationValues),t.push(this.Unit),t}},ibe=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.Name=e,this.Description=i,this.ListValues=n,this.Unit=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new ibe(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.Name),t.push(this.Description),t.push(this.ListValues),t.push(this.Unit),t}},nbe=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.Name=e,this.Description=i,this.UsageName=n,this.PropertyReference=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new nbe(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.Name),t.push(this.Description),t.push(this.UsageName),t.push(this.PropertyReference),t}},sbe=class{constructor(t,r,e,i,n,s,a){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.HasProperties=a}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++];return new sbe(t,r,n,s,a,o,l)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.HasProperties),t}},abe=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new abe(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t}},obe=class{constructor(t,r,e,i,n,s,a,o,l){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.TemplateType=a,this.ApplicableEntity=o,this.HasPropertyTemplates=l}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++];return new obe(t,r,n,s,a,o,l,c,u)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.TemplateType),t.push(this.ApplicableEntity),t.push(this.HasPropertyTemplates),t}},lbe=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.Name=e,this.Description=i,this.NominalValue=n,this.Unit=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new lbe(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.Name),t.push(this.Description),t.push(this.NominalValue),t.push(this.Unit),t}},cbe=class{constructor(t,r,e,i,n,s,a,o,l,c){this.expressID=t,this.type=r,this.Name=e,this.Description=i,this.DefiningValues=n,this.DefinedValues=s,this.Expression=a,this.DefiningUnit=o,this.DefinedUnit=l,this.CurveInterpolation=c}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++];return new cbe(t,r,n,s,a,o,l,c,u,h)}ToTape(){let t=[];return t.push(this.Name),t.push(this.Description),t.push(this.DefiningValues),t.push(this.DefinedValues),t.push(this.Expression),t.push(this.DefiningUnit),t.push(this.DefinedUnit),t.push(this.CurveInterpolation),t}},ube=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new ube(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t}},hbe=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new hbe(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t}},pbe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new pbe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},dbe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new dbe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},fbe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new fbe(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},mbe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new mbe(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},gbe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.ProxyType=c,this.Tag=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new gbe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.ProxyType),t.push(this.Tag),t}},vbe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new vbe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},ybe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new ybe(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},Tbe=class{constructor(t,r,e,i,n,s,a){this.expressID=t,this.type=r,this.Name=e,this.Description=i,this.Unit=n,this.AreaValue=s,this.Formula=a}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++];return new Tbe(t,r,n,s,a,o,l)}ToTape(){let t=[];return t.push(this.Name),t.push(this.Description),t.push(this.Unit),t.push(this.AreaValue),t.push(this.Formula),t}},Ebe=class{constructor(t,r,e,i,n,s,a){this.expressID=t,this.type=r,this.Name=e,this.Description=i,this.Unit=n,this.CountValue=s,this.Formula=a}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++];return new Ebe(t,r,n,s,a,o,l)}ToTape(){let t=[];return t.push(this.Name),t.push(this.Description),t.push(this.Unit),t.push(this.CountValue),t.push(this.Formula),t}},bbe=class{constructor(t,r,e,i,n,s,a){this.expressID=t,this.type=r,this.Name=e,this.Description=i,this.Unit=n,this.LengthValue=s,this.Formula=a}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++];return new bbe(t,r,n,s,a,o,l)}ToTape(){let t=[];return t.push(this.Name),t.push(this.Description),t.push(this.Unit),t.push(this.LengthValue),t.push(this.Formula),t}},xbe=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new xbe(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t}},Ibe=class{constructor(t,r,e,i,n,s,a){this.expressID=t,this.type=r,this.Name=e,this.Description=i,this.Unit=n,this.TimeValue=s,this.Formula=a}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++];return new Ibe(t,r,n,s,a,o,l)}ToTape(){let t=[];return t.push(this.Name),t.push(this.Description),t.push(this.Unit),t.push(this.TimeValue),t.push(this.Formula),t}},Sbe=class{constructor(t,r,e,i,n,s,a){this.expressID=t,this.type=r,this.Name=e,this.Description=i,this.Unit=n,this.VolumeValue=s,this.Formula=a}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++];return new Sbe(t,r,n,s,a,o,l)}ToTape(){let t=[];return t.push(this.Name),t.push(this.Description),t.push(this.Unit),t.push(this.VolumeValue),t.push(this.Formula),t}},_be=class{constructor(t,r,e,i,n,s,a){this.expressID=t,this.type=r,this.Name=e,this.Description=i,this.Unit=n,this.WeightValue=s,this.Formula=a}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++];return new _be(t,r,n,s,a,o,l)}ToTape(){let t=[];return t.push(this.Name),t.push(this.Description),t.push(this.Unit),t.push(this.WeightValue),t.push(this.Formula),t}},wbe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new wbe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},Rbe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new Rbe(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},Mbe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new Mbe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},Dbe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new Dbe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},Cbe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new Cbe(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},Abe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new Abe(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},Obe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.Degree=e,this.ControlPointsList=i,this.CurveForm=n,this.ClosedCurve=s,this.SelfIntersect=a,this.KnotMultiplicities=o,this.Knots=l,this.KnotSpec=c,this.WeightsData=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new Obe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.Degree),t.push(this.ControlPointsList),t.push(this.CurveForm),t.push(this.ClosedCurve),t.push(this.SelfIntersect),t.push(this.KnotMultiplicities),t.push(this.Knots),t.push(this.KnotSpec),t.push(this.WeightsData),t}},Pbe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p,d,f){this.expressID=t,this.type=r,this.UDegree=e,this.VDegree=i,this.ControlPointsList=n,this.SurfaceForm=s,this.UClosed=a,this.VClosed=o,this.SelfIntersect=l,this.UMultiplicities=c,this.VMultiplicities=u,this.UKnots=h,this.VKnots=p,this.KnotSpec=d,this.WeightsData=f}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++],m=e[i++],g=e[i++];return new Pbe(t,r,n,s,a,o,l,c,u,h,p,d,f,m,g)}ToTape(){let t=[];return t.push(this.UDegree),t.push(this.VDegree),t.push(this.ControlPointsList),t.push(this.SurfaceForm),t.push(this.UClosed),t.push(this.VClosed),t.push(this.SelfIntersect),t.push(this.UMultiplicities),t.push(this.VMultiplicities),t.push(this.UKnots),t.push(this.VKnots),t.push(this.KnotSpec),t.push(this.WeightsData),t}},Nbe=class{constructor(t,r,e,i,n,s,a,o,l,c){this.expressID=t,this.type=r,this.ProfileType=e,this.ProfileName=i,this.Position=n,this.XDim=s,this.YDim=a,this.WallThickness=o,this.InnerFilletRadius=l,this.OuterFilletRadius=c}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++];return new Nbe(t,r,n,s,a,o,l,c,u,h)}ToTape(){let t=[];return t.push(this.ProfileType),t.push(this.ProfileName),t.push(this.Position),t.push(this.XDim),t.push(this.YDim),t.push(this.WallThickness),t.push(this.InnerFilletRadius),t.push(this.OuterFilletRadius),t}},Lbe=class{constructor(t,r,e,i,n,s,a){this.expressID=t,this.type=r,this.ProfileType=e,this.ProfileName=i,this.Position=n,this.XDim=s,this.YDim=a}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++];return new Lbe(t,r,n,s,a,o,l)}ToTape(){let t=[];return t.push(this.ProfileType),t.push(this.ProfileName),t.push(this.Position),t.push(this.XDim),t.push(this.YDim),t}},Fbe=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.Position=e,this.XLength=i,this.YLength=n,this.Height=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new Fbe(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.Position),t.push(this.XLength),t.push(this.YLength),t.push(this.Height),t}},Hbe=class{constructor(t,r,e,i,n,s,a,o,l){this.expressID=t,this.type=r,this.BasisSurface=e,this.U1=i,this.V1=n,this.U2=s,this.V2=a,this.Usense=o,this.Vsense=l}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++];return new Hbe(t,r,n,s,a,o,l,c,u)}ToTape(){let t=[];return t.push(this.BasisSurface),t.push(this.U1),t.push(this.V1),t.push(this.U2),t.push(this.V2),t.push(this.Usense),t.push(this.Vsense),t}},Ube=class{constructor(t,r,e,i,n,s,a,o,l,c){this.expressID=t,this.type=r,this.RecurrenceType=e,this.DayComponent=i,this.WeekdayComponent=n,this.MonthComponent=s,this.Position=a,this.Interval=o,this.Occurrences=l,this.TimePeriods=c}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++];return new Ube(t,r,n,s,a,o,l,c,u,h)}ToTape(){let t=[];return t.push(this.RecurrenceType),t.push(this.DayComponent),t.push(this.WeekdayComponent),t.push(this.MonthComponent),t.push(this.Position),t.push(this.Interval),t.push(this.Occurrences),t.push(this.TimePeriods),t}},Bbe=class{constructor(t,r,e,i,n,s,a){this.expressID=t,this.type=r,this.TypeIdentifier=e,this.AttributeIdentifier=i,this.InstanceName=n,this.ListPositions=s,this.InnerReference=a}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++];return new Bbe(t,r,n,s,a,o,l)}ToTape(){let t=[];return t.push(this.TypeIdentifier),t.push(this.AttributeIdentifier),t.push(this.InstanceName),t.push(this.ListPositions),t.push(this.InnerReference),t}},kbe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.PredefinedType=c,this.RestartDistance=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new kbe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.PredefinedType),t.push(this.RestartDistance),t}},Gbe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.Name=e,this.Description=i,this.StartTime=n,this.EndTime=s,this.TimeSeriesDataType=a,this.DataOrigin=o,this.UserDefinedDataOrigin=l,this.Unit=c,this.TimeStep=u,this.Values=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new Gbe(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.Name),t.push(this.Description),t.push(this.StartTime),t.push(this.EndTime),t.push(this.TimeSeriesDataType),t.push(this.DataOrigin),t.push(this.UserDefinedDataOrigin),t.push(this.Unit),t.push(this.TimeStep),t.push(this.Values),t}},Vbe=class{constructor(t,r,e,i,n,s,a,o){this.expressID=t,this.type=r,this.TotalCrossSectionArea=e,this.SteelGrade=i,this.BarSurface=n,this.EffectiveDepth=s,this.NominalBarDiameter=a,this.BarCount=o}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++];return new Vbe(t,r,n,s,a,o,l,c)}ToTape(){let t=[];return t.push(this.TotalCrossSectionArea),t.push(this.SteelGrade),t.push(this.BarSurface),t.push(this.EffectiveDepth),t.push(this.NominalBarDiameter),t.push(this.BarCount),t}},zbe=class{constructor(t,r,e,i,n,s,a,o){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.DefinitionType=a,this.ReinforcementSectionDefinitions=o}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++];return new zbe(t,r,n,s,a,o,l,c)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.DefinitionType),t.push(this.ReinforcementSectionDefinitions),t}},jbe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p,d,f,m){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.SteelGrade=u,this.NominalDiameter=h,this.CrossSectionArea=p,this.BarLength=d,this.PredefinedType=f,this.BarSurface=m}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++],m=e[i++],g=e[i++],y=e[i++];return new jbe(t,r,n,s,a,o,l,c,u,h,p,d,f,m,g,y)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.SteelGrade),t.push(this.NominalDiameter),t.push(this.CrossSectionArea),t.push(this.BarLength),t.push(this.PredefinedType),t.push(this.BarSurface),t}},Wbe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p,d,f,m,g,y){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h,this.NominalDiameter=p,this.CrossSectionArea=d,this.BarLength=f,this.BarSurface=m,this.BendingShapeCode=g,this.BendingParameters=y}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++],m=e[i++],g=e[i++],y=e[i++],E=e[i++],b=e[i++];return new Wbe(t,r,n,s,a,o,l,c,u,h,p,d,f,m,g,y,E,b)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t.push(this.NominalDiameter),t.push(this.CrossSectionArea),t.push(this.BarLength),t.push(this.BarSurface),t.push(this.BendingShapeCode),t.push(this.BendingParameters),t}},qbe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.SteelGrade=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new qbe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.SteelGrade),t}},Ybe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new Ybe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t}},Xbe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p,d,f,m,g,y,E,b){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.SteelGrade=u,this.MeshLength=h,this.MeshWidth=p,this.LongitudinalBarNominalDiameter=d,this.TransverseBarNominalDiameter=f,this.LongitudinalBarCrossSectionArea=m,this.TransverseBarCrossSectionArea=g,this.LongitudinalBarSpacing=y,this.TransverseBarSpacing=E,this.PredefinedType=b}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++],m=e[i++],g=e[i++],y=e[i++],E=e[i++],b=e[i++],x=e[i++],S=e[i++];return new Xbe(t,r,n,s,a,o,l,c,u,h,p,d,f,m,g,y,E,b,x,S)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.SteelGrade),t.push(this.MeshLength),t.push(this.MeshWidth),t.push(this.LongitudinalBarNominalDiameter),t.push(this.TransverseBarNominalDiameter),t.push(this.LongitudinalBarCrossSectionArea),t.push(this.TransverseBarCrossSectionArea),t.push(this.LongitudinalBarSpacing),t.push(this.TransverseBarSpacing),t.push(this.PredefinedType),t}},$be=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p,d,f,m,g,y,E,b,x,S){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h,this.MeshLength=p,this.MeshWidth=d,this.LongitudinalBarNominalDiameter=f,this.TransverseBarNominalDiameter=m,this.LongitudinalBarCrossSectionArea=g,this.TransverseBarCrossSectionArea=y,this.LongitudinalBarSpacing=E,this.TransverseBarSpacing=b,this.BendingShapeCode=x,this.BendingParameters=S}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++],m=e[i++],g=e[i++],y=e[i++],E=e[i++],b=e[i++],x=e[i++],S=e[i++],D=e[i++],P=e[i++];return new $be(t,r,n,s,a,o,l,c,u,h,p,d,f,m,g,y,E,b,x,S,D,P)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t.push(this.MeshLength),t.push(this.MeshWidth),t.push(this.LongitudinalBarNominalDiameter),t.push(this.TransverseBarNominalDiameter),t.push(this.LongitudinalBarCrossSectionArea),t.push(this.TransverseBarCrossSectionArea),t.push(this.LongitudinalBarSpacing),t.push(this.TransverseBarSpacing),t.push(this.BendingShapeCode),t.push(this.BendingParameters),t}},Zbe=class{constructor(t,r,e,i,n,s,a,o){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.RelatingObject=a,this.RelatedObjects=o}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++];return new Zbe(t,r,n,s,a,o,l,c)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.RelatingObject),t.push(this.RelatedObjects),t}},Kbe=class{constructor(t,r,e,i,n,s,a,o){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.RelatedObjects=a,this.RelatedObjectsType=o}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++];return new Kbe(t,r,n,s,a,o,l,c)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.RelatedObjects),t.push(this.RelatedObjectsType),t}},Jbe=class{constructor(t,r,e,i,n,s,a,o,l,c){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.RelatedObjects=a,this.RelatedObjectsType=o,this.RelatingActor=l,this.ActingRole=c}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++];return new Jbe(t,r,n,s,a,o,l,c,u,h)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.RelatedObjects),t.push(this.RelatedObjectsType),t.push(this.RelatingActor),t.push(this.ActingRole),t}},Qbe=class{constructor(t,r,e,i,n,s,a,o,l){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.RelatedObjects=a,this.RelatedObjectsType=o,this.RelatingControl=l}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++];return new Qbe(t,r,n,s,a,o,l,c,u)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.RelatedObjects),t.push(this.RelatedObjectsType),t.push(this.RelatingControl),t}},exe=class{constructor(t,r,e,i,n,s,a,o,l){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.RelatedObjects=a,this.RelatedObjectsType=o,this.RelatingGroup=l}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++];return new exe(t,r,n,s,a,o,l,c,u)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.RelatedObjects),t.push(this.RelatedObjectsType),t.push(this.RelatingGroup),t}},txe=class{constructor(t,r,e,i,n,s,a,o,l,c){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.RelatedObjects=a,this.RelatedObjectsType=o,this.RelatingGroup=l,this.Factor=c}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++];return new txe(t,r,n,s,a,o,l,c,u,h)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.RelatedObjects),t.push(this.RelatedObjectsType),t.push(this.RelatingGroup),t.push(this.Factor),t}},rxe=class{constructor(t,r,e,i,n,s,a,o,l,c){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.RelatedObjects=a,this.RelatedObjectsType=o,this.RelatingProcess=l,this.QuantityInProcess=c}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++];return new rxe(t,r,n,s,a,o,l,c,u,h)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.RelatedObjects),t.push(this.RelatedObjectsType),t.push(this.RelatingProcess),t.push(this.QuantityInProcess),t}},ixe=class{constructor(t,r,e,i,n,s,a,o,l){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.RelatedObjects=a,this.RelatedObjectsType=o,this.RelatingProduct=l}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++];return new ixe(t,r,n,s,a,o,l,c,u)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.RelatedObjects),t.push(this.RelatedObjectsType),t.push(this.RelatingProduct),t}},nxe=class{constructor(t,r,e,i,n,s,a,o,l){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.RelatedObjects=a,this.RelatedObjectsType=o,this.RelatingResource=l}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++];return new nxe(t,r,n,s,a,o,l,c,u)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.RelatedObjects),t.push(this.RelatedObjectsType),t.push(this.RelatingResource),t}},sxe=class{constructor(t,r,e,i,n,s,a){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.RelatedObjects=a}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++];return new sxe(t,r,n,s,a,o,l)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.RelatedObjects),t}},axe=class{constructor(t,r,e,i,n,s,a,o){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.RelatedObjects=a,this.RelatingApproval=o}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++];return new axe(t,r,n,s,a,o,l,c)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.RelatedObjects),t.push(this.RelatingApproval),t}},oxe=class{constructor(t,r,e,i,n,s,a,o){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.RelatedObjects=a,this.RelatingClassification=o}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++];return new oxe(t,r,n,s,a,o,l,c)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.RelatedObjects),t.push(this.RelatingClassification),t}},lxe=class{constructor(t,r,e,i,n,s,a,o,l){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.RelatedObjects=a,this.Intent=o,this.RelatingConstraint=l}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++];return new lxe(t,r,n,s,a,o,l,c,u)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.RelatedObjects),t.push(this.Intent),t.push(this.RelatingConstraint),t}},cxe=class{constructor(t,r,e,i,n,s,a,o){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.RelatedObjects=a,this.RelatingDocument=o}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++];return new cxe(t,r,n,s,a,o,l,c)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.RelatedObjects),t.push(this.RelatingDocument),t}},uxe=class{constructor(t,r,e,i,n,s,a,o){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.RelatedObjects=a,this.RelatingLibrary=o}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++];return new uxe(t,r,n,s,a,o,l,c)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.RelatedObjects),t.push(this.RelatingLibrary),t}},hxe=class{constructor(t,r,e,i,n,s,a,o){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.RelatedObjects=a,this.RelatingMaterial=o}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++];return new hxe(t,r,n,s,a,o,l,c)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.RelatedObjects),t.push(this.RelatingMaterial),t}},pxe=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new pxe(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t}},dxe=class{constructor(t,r,e,i,n,s,a,o,l){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ConnectionGeometry=a,this.RelatingElement=o,this.RelatedElement=l}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++];return new dxe(t,r,n,s,a,o,l,c,u)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ConnectionGeometry),t.push(this.RelatingElement),t.push(this.RelatedElement),t}},fxe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ConnectionGeometry=a,this.RelatingElement=o,this.RelatedElement=l,this.RelatingPriorities=c,this.RelatedPriorities=u,this.RelatedConnectionType=h,this.RelatingConnectionType=p}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++];return new fxe(t,r,n,s,a,o,l,c,u,h,p,d,f)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ConnectionGeometry),t.push(this.RelatingElement),t.push(this.RelatedElement),t.push(this.RelatingPriorities),t.push(this.RelatedPriorities),t.push(this.RelatedConnectionType),t.push(this.RelatingConnectionType),t}},mxe=class{constructor(t,r,e,i,n,s,a,o){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.RelatingPort=a,this.RelatedElement=o}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++];return new mxe(t,r,n,s,a,o,l,c)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.RelatingPort),t.push(this.RelatedElement),t}},gxe=class{constructor(t,r,e,i,n,s,a,o,l){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.RelatingPort=a,this.RelatedPort=o,this.RealizingElement=l}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++];return new gxe(t,r,n,s,a,o,l,c,u)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.RelatingPort),t.push(this.RelatedPort),t.push(this.RealizingElement),t}},vxe=class{constructor(t,r,e,i,n,s,a,o){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.RelatingElement=a,this.RelatedStructuralActivity=o}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++];return new vxe(t,r,n,s,a,o,l,c)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.RelatingElement),t.push(this.RelatedStructuralActivity),t}},yxe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.RelatingStructuralMember=a,this.RelatedStructuralConnection=o,this.AppliedCondition=l,this.AdditionalConditions=c,this.SupportedLength=u,this.ConditionCoordinateSystem=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new yxe(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.RelatingStructuralMember),t.push(this.RelatedStructuralConnection),t.push(this.AppliedCondition),t.push(this.AdditionalConditions),t.push(this.SupportedLength),t.push(this.ConditionCoordinateSystem),t}},Txe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.RelatingStructuralMember=a,this.RelatedStructuralConnection=o,this.AppliedCondition=l,this.AdditionalConditions=c,this.SupportedLength=u,this.ConditionCoordinateSystem=h,this.ConnectionConstraint=p}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++];return new Txe(t,r,n,s,a,o,l,c,u,h,p,d,f)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.RelatingStructuralMember),t.push(this.RelatedStructuralConnection),t.push(this.AppliedCondition),t.push(this.AdditionalConditions),t.push(this.SupportedLength),t.push(this.ConditionCoordinateSystem),t.push(this.ConnectionConstraint),t}},Exe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ConnectionGeometry=a,this.RelatingElement=o,this.RelatedElement=l,this.RealizingElements=c,this.ConnectionType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new Exe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ConnectionGeometry),t.push(this.RelatingElement),t.push(this.RelatedElement),t.push(this.RealizingElements),t.push(this.ConnectionType),t}},bxe=class{constructor(t,r,e,i,n,s,a,o){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.RelatedElements=a,this.RelatingStructure=o}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++];return new bxe(t,r,n,s,a,o,l,c)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.RelatedElements),t.push(this.RelatingStructure),t}},xxe=class{constructor(t,r,e,i,n,s,a,o){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.RelatingBuildingElement=a,this.RelatedCoverings=o}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++];return new xxe(t,r,n,s,a,o,l,c)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.RelatingBuildingElement),t.push(this.RelatedCoverings),t}},Ixe=class{constructor(t,r,e,i,n,s,a,o){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.RelatingSpace=a,this.RelatedCoverings=o}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++];return new Ixe(t,r,n,s,a,o,l,c)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.RelatingSpace),t.push(this.RelatedCoverings),t}},Sxe=class{constructor(t,r,e,i,n,s,a,o){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.RelatingContext=a,this.RelatedDefinitions=o}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++];return new Sxe(t,r,n,s,a,o,l,c)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.RelatingContext),t.push(this.RelatedDefinitions),t}},_xe=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new _xe(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t}},wxe=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new wxe(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t}},Rxe=class{constructor(t,r,e,i,n,s,a,o){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.RelatedObjects=a,this.RelatingObject=o}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++];return new Rxe(t,r,n,s,a,o,l,c)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.RelatedObjects),t.push(this.RelatingObject),t}},Mxe=class{constructor(t,r,e,i,n,s,a,o){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.RelatedObjects=a,this.RelatingPropertyDefinition=o}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++];return new Mxe(t,r,n,s,a,o,l,c)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.RelatedObjects),t.push(this.RelatingPropertyDefinition),t}},Dxe=class{constructor(t,r,e,i,n,s,a,o){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.RelatedPropertySets=a,this.RelatingTemplate=o}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++];return new Dxe(t,r,n,s,a,o,l,c)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.RelatedPropertySets),t.push(this.RelatingTemplate),t}},Cxe=class{constructor(t,r,e,i,n,s,a,o){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.RelatedObjects=a,this.RelatingType=o}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++];return new Cxe(t,r,n,s,a,o,l,c)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.RelatedObjects),t.push(this.RelatingType),t}},Axe=class{constructor(t,r,e,i,n,s,a,o){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.RelatingOpeningElement=a,this.RelatedBuildingElement=o}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++];return new Axe(t,r,n,s,a,o,l,c)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.RelatingOpeningElement),t.push(this.RelatedBuildingElement),t}},Oxe=class{constructor(t,r,e,i,n,s,a,o){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.RelatedControlElements=a,this.RelatingFlowElement=o}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++];return new Oxe(t,r,n,s,a,o,l,c)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.RelatedControlElements),t.push(this.RelatingFlowElement),t}},Pxe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.RelatingElement=a,this.RelatedElement=o,this.InterferenceGeometry=l,this.InterferenceType=c,this.ImpliedOrder=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new Pxe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.RelatingElement),t.push(this.RelatedElement),t.push(this.InterferenceGeometry),t.push(this.InterferenceType),t.push(this.ImpliedOrder),t}},Nxe=class{constructor(t,r,e,i,n,s,a,o){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.RelatingObject=a,this.RelatedObjects=o}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++];return new Nxe(t,r,n,s,a,o,l,c)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.RelatingObject),t.push(this.RelatedObjects),t}},Lxe=class{constructor(t,r,e,i,n,s,a,o){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.RelatingPositioningElement=a,this.RelatedProducts=o}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++];return new Lxe(t,r,n,s,a,o,l,c)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.RelatingPositioningElement),t.push(this.RelatedProducts),t}},Fxe=class{constructor(t,r,e,i,n,s,a,o){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.RelatingElement=a,this.RelatedFeatureElement=o}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++];return new Fxe(t,r,n,s,a,o,l,c)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.RelatingElement),t.push(this.RelatedFeatureElement),t}},Hxe=class{constructor(t,r,e,i,n,s,a,o){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.RelatedElements=a,this.RelatingStructure=o}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++];return new Hxe(t,r,n,s,a,o,l,c)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.RelatedElements),t.push(this.RelatingStructure),t}},Uxe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.RelatingProcess=a,this.RelatedProcess=o,this.TimeLag=l,this.SequenceType=c,this.UserDefinedSequenceType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new Uxe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.RelatingProcess),t.push(this.RelatedProcess),t.push(this.TimeLag),t.push(this.SequenceType),t.push(this.UserDefinedSequenceType),t}},Bxe=class{constructor(t,r,e,i,n,s,a,o){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.RelatingSystem=a,this.RelatedBuildings=o}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++];return new Bxe(t,r,n,s,a,o,l,c)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.RelatingSystem),t.push(this.RelatedBuildings),t}},kxe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.RelatingSpace=a,this.RelatedBuildingElement=o,this.ConnectionGeometry=l,this.PhysicalOrVirtualBoundary=c,this.InternalOrExternalBoundary=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new kxe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.RelatingSpace),t.push(this.RelatedBuildingElement),t.push(this.ConnectionGeometry),t.push(this.PhysicalOrVirtualBoundary),t.push(this.InternalOrExternalBoundary),t}},Gxe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.RelatingSpace=a,this.RelatedBuildingElement=o,this.ConnectionGeometry=l,this.PhysicalOrVirtualBoundary=c,this.InternalOrExternalBoundary=u,this.ParentBoundary=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new Gxe(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.RelatingSpace),t.push(this.RelatedBuildingElement),t.push(this.ConnectionGeometry),t.push(this.PhysicalOrVirtualBoundary),t.push(this.InternalOrExternalBoundary),t.push(this.ParentBoundary),t}},Vxe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.RelatingSpace=a,this.RelatedBuildingElement=o,this.ConnectionGeometry=l,this.PhysicalOrVirtualBoundary=c,this.InternalOrExternalBoundary=u,this.ParentBoundary=h,this.CorrespondingBoundary=p}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++];return new Vxe(t,r,n,s,a,o,l,c,u,h,p,d,f)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.RelatingSpace),t.push(this.RelatedBuildingElement),t.push(this.ConnectionGeometry),t.push(this.PhysicalOrVirtualBoundary),t.push(this.InternalOrExternalBoundary),t.push(this.ParentBoundary),t.push(this.CorrespondingBoundary),t}},zxe=class{constructor(t,r,e,i,n,s,a,o){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.RelatingBuildingElement=a,this.RelatedOpeningElement=o}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++];return new zxe(t,r,n,s,a,o,l,c)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.RelatingBuildingElement),t.push(this.RelatedOpeningElement),t}},jxe=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new jxe(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t}},Wxe=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.Transition=e,this.SameSense=i,this.ParentCurve=n,this.ParamLength=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new Wxe(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.Transition),t.push(this.SameSense),t.push(this.ParentCurve),t.push(this.ParamLength),t}},qxe=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.ContextOfItems=e,this.RepresentationIdentifier=i,this.RepresentationType=n,this.Items=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new qxe(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.ContextOfItems),t.push(this.RepresentationIdentifier),t.push(this.RepresentationType),t.push(this.Items),t}},Yxe=class{constructor(t,r,e,i){this.expressID=t,this.type=r,this.ContextIdentifier=e,this.ContextType=i}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++];return new Yxe(t,r,n,s)}ToTape(){let t=[];return t.push(this.ContextIdentifier),t.push(this.ContextType),t}},Xxe=class{constructor(t,r){this.expressID=t,this.type=r}static FromTape(t,r,e){let i=0;return new Xxe(t,r)}ToTape(){return[]}},$xe=class{constructor(t,r,e,i){this.expressID=t,this.type=r,this.MappingOrigin=e,this.MappedRepresentation=i}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++];return new $xe(t,r,n,s)}ToTape(){let t=[];return t.push(this.MappingOrigin),t.push(this.MappedRepresentation),t}},Zxe=class{constructor(t,r,e,i,n,s,a,o,l){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.LongDescription=l}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++];return new Zxe(t,r,n,s,a,o,l,c,u)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.Identification),t.push(this.LongDescription),t}},Kxe=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.Name=e,this.Description=i,this.RelatedResourceObjects=n,this.RelatingApproval=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new Kxe(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.Name),t.push(this.Description),t.push(this.RelatedResourceObjects),t.push(this.RelatingApproval),t}},Jxe=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.Name=e,this.Description=i,this.RelatingConstraint=n,this.RelatedResourceObjects=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new Jxe(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.Name),t.push(this.Description),t.push(this.RelatingConstraint),t.push(this.RelatedResourceObjects),t}},Qxe=class{constructor(t,r,e,i){this.expressID=t,this.type=r,this.Name=e,this.Description=i}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++];return new Qxe(t,r,n,s)}ToTape(){let t=[];return t.push(this.Name),t.push(this.Description),t}},eIe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p,d,f,m,g,y,E,b){this.expressID=t,this.type=r,this.Name=e,this.DataOrigin=i,this.UserDefinedDataOrigin=n,this.ScheduleWork=s,this.ScheduleUsage=a,this.ScheduleStart=o,this.ScheduleFinish=l,this.ScheduleContour=c,this.LevelingDelay=u,this.IsOverAllocated=h,this.StatusTime=p,this.ActualWork=d,this.ActualUsage=f,this.ActualStart=m,this.ActualFinish=g,this.RemainingWork=y,this.RemainingUsage=E,this.Completion=b}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++],m=e[i++],g=e[i++],y=e[i++],E=e[i++],b=e[i++],x=e[i++],S=e[i++];return new eIe(t,r,n,s,a,o,l,c,u,h,p,d,f,m,g,y,E,b,x,S)}ToTape(){let t=[];return t.push(this.Name),t.push(this.DataOrigin),t.push(this.UserDefinedDataOrigin),t.push(this.ScheduleWork),t.push(this.ScheduleUsage),t.push(this.ScheduleStart),t.push(this.ScheduleFinish),t.push(this.ScheduleContour),t.push(this.LevelingDelay),t.push(this.IsOverAllocated),t.push(this.StatusTime),t.push(this.ActualWork),t.push(this.ActualUsage),t.push(this.ActualStart),t.push(this.ActualFinish),t.push(this.RemainingWork),t.push(this.RemainingUsage),t.push(this.Completion),t}},tIe=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.SweptArea=e,this.Position=i,this.Axis=n,this.Angle=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new tIe(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.SweptArea),t.push(this.Position),t.push(this.Axis),t.push(this.Angle),t}},rIe=class{constructor(t,r,e,i,n,s,a){this.expressID=t,this.type=r,this.SweptArea=e,this.Position=i,this.Axis=n,this.Angle=s,this.EndSweptArea=a}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++];return new rIe(t,r,n,s,a,o,l)}ToTape(){let t=[];return t.push(this.SweptArea),t.push(this.Position),t.push(this.Axis),t.push(this.Angle),t.push(this.EndSweptArea),t}},iIe=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.Position=e,this.Height=i,this.BottomRadius=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new iIe(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.Position),t.push(this.Height),t.push(this.BottomRadius),t}},nIe=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.Position=e,this.Height=i,this.Radius=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new nIe(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.Position),t.push(this.Height),t.push(this.Radius),t}},sIe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new sIe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},aIe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new aIe(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},oIe=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new oIe(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t}},lIe=class{constructor(t,r,e,i,n,s,a,o){this.expressID=t,this.type=r,this.ProfileType=e,this.ProfileName=i,this.Position=n,this.XDim=s,this.YDim=a,this.RoundingRadius=o}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++];return new lIe(t,r,n,s,a,o,l,c)}ToTape(){let t=[];return t.push(this.ProfileType),t.push(this.ProfileName),t.push(this.Position),t.push(this.XDim),t.push(this.YDim),t.push(this.RoundingRadius),t}},cIe=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.Dimensions=e,this.UnitType=i,this.Prefix=n,this.Name=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new cIe(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.Dimensions),t.push(this.UnitType),t.push(this.Prefix),t.push(this.Name),t}},uIe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new uIe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},hIe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new hIe(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},pIe=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.Name=e,this.DataOrigin=i,this.UserDefinedDataOrigin=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new pIe(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.Name),t.push(this.DataOrigin),t.push(this.UserDefinedDataOrigin),t}},dIe=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.Curve3D=e,this.AssociatedGeometry=i,this.MasterRepresentation=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new dIe(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.Curve3D),t.push(this.AssociatedGeometry),t.push(this.MasterRepresentation),t}},fIe=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.SectionType=e,this.StartProfile=i,this.EndProfile=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new fIe(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.SectionType),t.push(this.StartProfile),t.push(this.EndProfile),t}},mIe=class{constructor(t,r,e,i,n,s,a,o){this.expressID=t,this.type=r,this.LongitudinalStartPosition=e,this.LongitudinalEndPosition=i,this.TransversePosition=n,this.ReinforcementRole=s,this.SectionDefinition=a,this.CrossSectionReinforcementDefinitions=o}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++];return new mIe(t,r,n,s,a,o,l,c)}ToTape(){let t=[];return t.push(this.LongitudinalStartPosition),t.push(this.LongitudinalEndPosition),t.push(this.TransversePosition),t.push(this.ReinforcementRole),t.push(this.SectionDefinition),t.push(this.CrossSectionReinforcementDefinitions),t}},gIe=class{constructor(t,r,e,i){this.expressID=t,this.type=r,this.Directrix=e,this.CrossSections=i}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++];return new gIe(t,r,n,s)}ToTape(){let t=[];return t.push(this.Directrix),t.push(this.CrossSections),t}},vIe=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.Directrix=e,this.CrossSections=i,this.CrossSectionPositions=n,this.FixedAxisVertical=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new vIe(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.Directrix),t.push(this.CrossSections),t.push(this.CrossSectionPositions),t.push(this.FixedAxisVertical),t}},yIe=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.SpineCurve=e,this.CrossSections=i,this.CrossSectionPositions=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new yIe(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.SpineCurve),t.push(this.CrossSections),t.push(this.CrossSectionPositions),t}},TIe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new TIe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},EIe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new EIe(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},bIe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new bIe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},xIe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new xIe(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},IIe=class{constructor(t,r,e,i,n,s,a){this.expressID=t,this.type=r,this.ShapeRepresentations=e,this.Name=i,this.Description=n,this.ProductDefinitional=s,this.PartOfProductDefinitionShape=a}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++];return new IIe(t,r,n,s,a,o,l)}ToTape(){let t=[];return t.push(this.ShapeRepresentations),t.push(this.Name),t.push(this.Description),t.push(this.ProductDefinitional),t.push(this.PartOfProductDefinitionShape),t}},SIe=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.ContextOfItems=e,this.RepresentationIdentifier=i,this.RepresentationType=n,this.Items=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new SIe(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.ContextOfItems),t.push(this.RepresentationIdentifier),t.push(this.RepresentationType),t.push(this.Items),t}},_Ie=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.ContextOfItems=e,this.RepresentationIdentifier=i,this.RepresentationType=n,this.Items=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new _Ie(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.ContextOfItems),t.push(this.RepresentationIdentifier),t.push(this.RepresentationType),t.push(this.Items),t}},wIe=class{constructor(t,r,e){this.expressID=t,this.type=r,this.SbsmBoundary=e}static FromTape(t,r,e){let i=0,n=e[i++];return new wIe(t,r,n)}ToTape(){let t=[];return t.push(this.SbsmBoundary),t}},RIe=class{constructor(t,r,e,i){this.expressID=t,this.type=r,this.Name=e,this.Description=i}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++];return new RIe(t,r,n,s)}ToTape(){let t=[];return t.push(this.Name),t.push(this.Description),t}},MIe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p,d){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.TemplateType=a,this.PrimaryMeasureType=o,this.SecondaryMeasureType=l,this.Enumerators=c,this.PrimaryUnit=u,this.SecondaryUnit=h,this.Expression=p,this.AccessState=d}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++],m=e[i++];return new MIe(t,r,n,s,a,o,l,c,u,h,p,d,f,m)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.TemplateType),t.push(this.PrimaryMeasureType),t.push(this.SecondaryMeasureType),t.push(this.Enumerators),t.push(this.PrimaryUnit),t.push(this.SecondaryUnit),t.push(this.Expression),t.push(this.AccessState),t}},DIe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p,d,f,m){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.LongName=c,this.CompositionType=u,this.RefLatitude=h,this.RefLongitude=p,this.RefElevation=d,this.LandTitleNumber=f,this.SiteAddress=m}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++],m=e[i++],g=e[i++],y=e[i++];return new DIe(t,r,n,s,a,o,l,c,u,h,p,d,f,m,g,y)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.LongName),t.push(this.CompositionType),t.push(this.RefLatitude),t.push(this.RefLongitude),t.push(this.RefElevation),t.push(this.LandTitleNumber),t.push(this.SiteAddress),t}},CIe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new CIe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},AIe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new AIe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},OIe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new OIe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},PIe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new PIe(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},NIe=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.Name=e,this.SlippageX=i,this.SlippageY=n,this.SlippageZ=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new NIe(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.Name),t.push(this.SlippageX),t.push(this.SlippageY),t.push(this.SlippageZ),t}},LIe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new LIe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},FIe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new FIe(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},HIe=class{constructor(t,r){this.expressID=t,this.type=r}static FromTape(t,r,e){let i=0;return new HIe(t,r)}ToTape(){return[]}},UIe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.LongName=c,this.CompositionType=u,this.PredefinedType=h,this.ElevationWithFlooring=p}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++];return new UIe(t,r,n,s,a,o,l,c,u,h,p,d,f)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.LongName),t.push(this.CompositionType),t.push(this.PredefinedType),t.push(this.ElevationWithFlooring),t}},BIe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new BIe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},kIe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new kIe(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},GIe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h,this.LongName=p}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++];return new GIe(t,r,n,s,a,o,l,c,u,h,p,d,f)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t.push(this.LongName),t}},VIe=class{constructor(t,r,e,i,n,s,a,o,l,c){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.LongName=c}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++];return new VIe(t,r,n,s,a,o,l,c,u,h)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.LongName),t}},zIe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new zIe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t}},jIe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.LongName=c,this.CompositionType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new jIe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.LongName),t.push(this.CompositionType),t}},WIe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new WIe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t}},qIe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.LongName=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new qIe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.LongName),t.push(this.PredefinedType),t}},YIe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h,this.LongName=p}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++];return new YIe(t,r,n,s,a,o,l,c,u,h,p,d,f)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t.push(this.LongName),t}},XIe=class{constructor(t,r,e,i){this.expressID=t,this.type=r,this.Position=e,this.Radius=i}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++];return new XIe(t,r,n,s)}ToTape(){let t=[];return t.push(this.Position),t.push(this.Radius),t}},$Ie=class{constructor(t,r,e,i){this.expressID=t,this.type=r,this.Position=e,this.Radius=i}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++];return new $Ie(t,r,n,s)}ToTape(){let t=[];return t.push(this.Position),t.push(this.Radius),t}},ZIe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new ZIe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},KIe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new KIe(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},JIe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new JIe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},QIe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p,d,f){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.NumberOfRisers=u,this.NumberOfTreads=h,this.RiserHeight=p,this.TreadLength=d,this.PredefinedType=f}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++],m=e[i++],g=e[i++];return new QIe(t,r,n,s,a,o,l,c,u,h,p,d,f,m,g)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.NumberOfRisers),t.push(this.NumberOfTreads),t.push(this.RiserHeight),t.push(this.TreadLength),t.push(this.PredefinedType),t}},eSe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new eSe(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},tSe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new tSe(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},rSe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.AppliedLoad=c,this.GlobalOrLocal=u,this.DestabilizingLoad=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new rSe(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.AppliedLoad),t.push(this.GlobalOrLocal),t.push(this.DestabilizingLoad),t}},iSe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.AppliedLoad=c,this.GlobalOrLocal=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new iSe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.AppliedLoad),t.push(this.GlobalOrLocal),t}},nSe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.PredefinedType=o,this.OrientationOf2DPlane=l,this.LoadedBy=c,this.HasResults=u,this.SharedPlacement=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new nSe(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.PredefinedType),t.push(this.OrientationOf2DPlane),t.push(this.LoadedBy),t.push(this.HasResults),t.push(this.SharedPlacement),t}},sSe=class{constructor(t,r,e,i,n,s,a,o,l,c){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.AppliedCondition=c}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++];return new sSe(t,r,n,s,a,o,l,c,u,h)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.AppliedCondition),t}},aSe=class{constructor(t,r,e){this.expressID=t,this.type=r,this.Name=e}static FromTape(t,r,e){let i=0,n=e[i++];return new aSe(t,r,n)}ToTape(){let t=[];return t.push(this.Name),t}},oSe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p,d){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.AppliedLoad=c,this.GlobalOrLocal=u,this.DestabilizingLoad=h,this.ProjectedOrTrue=p,this.PredefinedType=d}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++],m=e[i++];return new oSe(t,r,n,s,a,o,l,c,u,h,p,d,f,m)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.AppliedLoad),t.push(this.GlobalOrLocal),t.push(this.DestabilizingLoad),t.push(this.ProjectedOrTrue),t.push(this.PredefinedType),t}},lSe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.AppliedCondition=c,this.Axis=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new lSe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.AppliedCondition),t.push(this.Axis),t}},cSe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.PredefinedType=c,this.Axis=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new cSe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.PredefinedType),t.push(this.Axis),t}},uSe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.PredefinedType=c,this.Axis=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new uSe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.PredefinedType),t.push(this.Axis),t}},hSe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.AppliedLoad=c,this.GlobalOrLocal=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new hSe(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.AppliedLoad),t.push(this.GlobalOrLocal),t.push(this.PredefinedType),t}},pSe=class{constructor(t,r,e,i,n,s,a,o,l){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++];return new pSe(t,r,n,s,a,o,l,c,u)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t}},dSe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p,d){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.AppliedLoad=c,this.GlobalOrLocal=u,this.DestabilizingLoad=h,this.ProjectedOrTrue=p,this.PredefinedType=d}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++],m=e[i++];return new dSe(t,r,n,s,a,o,l,c,u,h,p,d,f,m)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.AppliedLoad),t.push(this.GlobalOrLocal),t.push(this.DestabilizingLoad),t.push(this.ProjectedOrTrue),t.push(this.PredefinedType),t}},fSe=class{constructor(t,r,e){this.expressID=t,this.type=r,this.Name=e}static FromTape(t,r,e){let i=0,n=e[i++];return new fSe(t,r,n)}ToTape(){let t=[];return t.push(this.Name),t}},mSe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.PredefinedType=o,this.ActionType=l,this.ActionSource=c,this.Coefficient=u,this.Purpose=h,this.SelfWeightCoefficients=p}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++];return new mSe(t,r,n,s,a,o,l,c,u,h,p,d,f)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.PredefinedType),t.push(this.ActionType),t.push(this.ActionSource),t.push(this.Coefficient),t.push(this.Purpose),t.push(this.SelfWeightCoefficients),t}},gSe=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.Name=e,this.Values=i,this.Locations=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new gSe(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.Name),t.push(this.Values),t.push(this.Locations),t}},vSe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.PredefinedType=o,this.ActionType=l,this.ActionSource=c,this.Coefficient=u,this.Purpose=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new vSe(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.PredefinedType),t.push(this.ActionType),t.push(this.ActionSource),t.push(this.Coefficient),t.push(this.Purpose),t}},ySe=class{constructor(t,r,e,i,n,s,a,o,l){this.expressID=t,this.type=r,this.Name=e,this.LinearForceX=i,this.LinearForceY=n,this.LinearForceZ=s,this.LinearMomentX=a,this.LinearMomentY=o,this.LinearMomentZ=l}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++];return new ySe(t,r,n,s,a,o,l,c,u)}ToTape(){let t=[];return t.push(this.Name),t.push(this.LinearForceX),t.push(this.LinearForceY),t.push(this.LinearForceZ),t.push(this.LinearMomentX),t.push(this.LinearMomentY),t.push(this.LinearMomentZ),t}},TSe=class{constructor(t,r,e){this.expressID=t,this.type=r,this.Name=e}static FromTape(t,r,e){let i=0,n=e[i++];return new TSe(t,r,n)}ToTape(){let t=[];return t.push(this.Name),t}},ESe=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.Name=e,this.PlanarForceX=i,this.PlanarForceY=n,this.PlanarForceZ=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new ESe(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.Name),t.push(this.PlanarForceX),t.push(this.PlanarForceY),t.push(this.PlanarForceZ),t}},bSe=class{constructor(t,r,e,i,n,s,a,o,l){this.expressID=t,this.type=r,this.Name=e,this.DisplacementX=i,this.DisplacementY=n,this.DisplacementZ=s,this.RotationalDisplacementRX=a,this.RotationalDisplacementRY=o,this.RotationalDisplacementRZ=l}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++];return new bSe(t,r,n,s,a,o,l,c,u)}ToTape(){let t=[];return t.push(this.Name),t.push(this.DisplacementX),t.push(this.DisplacementY),t.push(this.DisplacementZ),t.push(this.RotationalDisplacementRX),t.push(this.RotationalDisplacementRY),t.push(this.RotationalDisplacementRZ),t}},xSe=class{constructor(t,r,e,i,n,s,a,o,l,c){this.expressID=t,this.type=r,this.Name=e,this.DisplacementX=i,this.DisplacementY=n,this.DisplacementZ=s,this.RotationalDisplacementRX=a,this.RotationalDisplacementRY=o,this.RotationalDisplacementRZ=l,this.Distortion=c}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++];return new xSe(t,r,n,s,a,o,l,c,u,h)}ToTape(){let t=[];return t.push(this.Name),t.push(this.DisplacementX),t.push(this.DisplacementY),t.push(this.DisplacementZ),t.push(this.RotationalDisplacementRX),t.push(this.RotationalDisplacementRY),t.push(this.RotationalDisplacementRZ),t.push(this.Distortion),t}},ISe=class{constructor(t,r,e,i,n,s,a,o,l){this.expressID=t,this.type=r,this.Name=e,this.ForceX=i,this.ForceY=n,this.ForceZ=s,this.MomentX=a,this.MomentY=o,this.MomentZ=l}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++];return new ISe(t,r,n,s,a,o,l,c,u)}ToTape(){let t=[];return t.push(this.Name),t.push(this.ForceX),t.push(this.ForceY),t.push(this.ForceZ),t.push(this.MomentX),t.push(this.MomentY),t.push(this.MomentZ),t}},SSe=class{constructor(t,r,e,i,n,s,a,o,l,c){this.expressID=t,this.type=r,this.Name=e,this.ForceX=i,this.ForceY=n,this.ForceZ=s,this.MomentX=a,this.MomentY=o,this.MomentZ=l,this.WarpingMoment=c}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++];return new SSe(t,r,n,s,a,o,l,c,u,h)}ToTape(){let t=[];return t.push(this.Name),t.push(this.ForceX),t.push(this.ForceY),t.push(this.ForceZ),t.push(this.MomentX),t.push(this.MomentY),t.push(this.MomentZ),t.push(this.WarpingMoment),t}},_Se=class{constructor(t,r,e){this.expressID=t,this.type=r,this.Name=e}static FromTape(t,r,e){let i=0,n=e[i++];return new _Se(t,r,n)}ToTape(){let t=[];return t.push(this.Name),t}},wSe=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.Name=e,this.DeltaTConstant=i,this.DeltaTY=n,this.DeltaTZ=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new wSe(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.Name),t.push(this.DeltaTConstant),t.push(this.DeltaTY),t.push(this.DeltaTZ),t}},RSe=class{constructor(t,r,e,i,n,s,a,o,l){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++];return new RSe(t,r,n,s,a,o,l,c,u)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t}},MSe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p,d){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.AppliedLoad=c,this.GlobalOrLocal=u,this.DestabilizingLoad=h,this.ProjectedOrTrue=p,this.PredefinedType=d}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++],m=e[i++];return new MSe(t,r,n,s,a,o,l,c,u,h,p,d,f,m)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.AppliedLoad),t.push(this.GlobalOrLocal),t.push(this.DestabilizingLoad),t.push(this.ProjectedOrTrue),t.push(this.PredefinedType),t}},DSe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.AppliedLoad=c,this.GlobalOrLocal=u,this.DestabilizingLoad=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new DSe(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.AppliedLoad),t.push(this.GlobalOrLocal),t.push(this.DestabilizingLoad),t}},CSe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.AppliedCondition=c,this.ConditionCoordinateSystem=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new CSe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.AppliedCondition),t.push(this.ConditionCoordinateSystem),t}},ASe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.AppliedLoad=c,this.GlobalOrLocal=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new ASe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.AppliedLoad),t.push(this.GlobalOrLocal),t}},OSe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.AppliedLoad=c,this.GlobalOrLocal=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new OSe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.AppliedLoad),t.push(this.GlobalOrLocal),t}},PSe=class{constructor(t,r,e,i,n,s,a,o,l,c){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.TheoryType=o,this.ResultForLoadGroup=l,this.IsLinear=c}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++];return new PSe(t,r,n,s,a,o,l,c,u,h)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.TheoryType),t.push(this.ResultForLoadGroup),t.push(this.IsLinear),t}},NSe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p,d){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.AppliedLoad=c,this.GlobalOrLocal=u,this.DestabilizingLoad=h,this.ProjectedOrTrue=p,this.PredefinedType=d}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++],m=e[i++];return new NSe(t,r,n,s,a,o,l,c,u,h,p,d,f,m)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.AppliedLoad),t.push(this.GlobalOrLocal),t.push(this.DestabilizingLoad),t.push(this.ProjectedOrTrue),t.push(this.PredefinedType),t}},LSe=class{constructor(t,r,e,i,n,s,a,o,l,c){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.AppliedCondition=c}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++];return new LSe(t,r,n,s,a,o,l,c,u,h)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.AppliedCondition),t}},FSe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.PredefinedType=c,this.Thickness=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new FSe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.PredefinedType),t.push(this.Thickness),t}},HSe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.PredefinedType=c,this.Thickness=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new HSe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.PredefinedType),t.push(this.Thickness),t}},USe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.AppliedLoad=c,this.GlobalOrLocal=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new USe(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.AppliedLoad),t.push(this.GlobalOrLocal),t.push(this.PredefinedType),t}},BSe=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.ContextOfItems=e,this.RepresentationIdentifier=i,this.RepresentationType=n,this.Items=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new BSe(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.ContextOfItems),t.push(this.RepresentationIdentifier),t.push(this.RepresentationType),t.push(this.Items),t}},kSe=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.Item=e,this.Styles=i,this.Name=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new kSe(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.Item),t.push(this.Styles),t.push(this.Name),t}},GSe=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.ContextOfItems=e,this.RepresentationIdentifier=i,this.RepresentationType=n,this.Items=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new GSe(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.ContextOfItems),t.push(this.RepresentationIdentifier),t.push(this.RepresentationType),t.push(this.Items),t}},VSe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.LongDescription=l,this.Usage=c,this.BaseCosts=u,this.BaseQuantity=h,this.PredefinedType=p}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++];return new VSe(t,r,n,s,a,o,l,c,u,h,p,d,f)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.Identification),t.push(this.LongDescription),t.push(this.Usage),t.push(this.BaseCosts),t.push(this.BaseQuantity),t.push(this.PredefinedType),t}},zSe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p,d){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.Identification=l,this.LongDescription=c,this.ResourceType=u,this.BaseCosts=h,this.BaseQuantity=p,this.PredefinedType=d}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++],m=e[i++];return new zSe(t,r,n,s,a,o,l,c,u,h,p,d,f,m)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.Identification),t.push(this.LongDescription),t.push(this.ResourceType),t.push(this.BaseCosts),t.push(this.BaseQuantity),t.push(this.PredefinedType),t}},jSe=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.EdgeStart=e,this.EdgeEnd=i,this.ParentEdge=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new jSe(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.EdgeStart),t.push(this.EdgeEnd),t.push(this.ParentEdge),t}},WSe=class{constructor(t,r){this.expressID=t,this.type=r}static FromTape(t,r,e){let i=0;return new WSe(t,r)}ToTape(){return[]}},qSe=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.Curve3D=e,this.AssociatedGeometry=i,this.MasterRepresentation=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new qSe(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.Curve3D),t.push(this.AssociatedGeometry),t.push(this.MasterRepresentation),t}},YSe=class{constructor(t,r,e,i,n,s,a,o){this.expressID=t,this.type=r,this.SweptArea=e,this.Position=i,this.Directrix=n,this.StartParam=s,this.EndParam=a,this.ReferenceSurface=o}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++];return new YSe(t,r,n,s,a,o,l,c)}ToTape(){let t=[];return t.push(this.SweptArea),t.push(this.Position),t.push(this.Directrix),t.push(this.StartParam),t.push(this.EndParam),t.push(this.ReferenceSurface),t}},XSe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new XSe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},$Se=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.SweptCurve=e,this.Position=i,this.ExtrudedDirection=n,this.Depth=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new $Se(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.SweptCurve),t.push(this.Position),t.push(this.ExtrudedDirection),t.push(this.Depth),t}},ZSe=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.SweptCurve=e,this.Position=i,this.AxisPosition=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new ZSe(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.SweptCurve),t.push(this.Position),t.push(this.AxisPosition),t}},KSe=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.Name=e,this.SurfaceReinforcement1=i,this.SurfaceReinforcement2=n,this.ShearReinforcement=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new KSe(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.Name),t.push(this.SurfaceReinforcement1),t.push(this.SurfaceReinforcement2),t.push(this.ShearReinforcement),t}},JSe=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.Name=e,this.Side=i,this.Styles=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new JSe(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.Name),t.push(this.Side),t.push(this.Styles),t}},QSe=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.DiffuseTransmissionColour=e,this.DiffuseReflectionColour=i,this.TransmissionColour=n,this.ReflectanceColour=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new QSe(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.DiffuseTransmissionColour),t.push(this.DiffuseReflectionColour),t.push(this.TransmissionColour),t.push(this.ReflectanceColour),t}},e_e=class{constructor(t,r,e,i){this.expressID=t,this.type=r,this.RefractionIndex=e,this.DispersionFactor=i}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++];return new e_e(t,r,n,s)}ToTape(){let t=[];return t.push(this.RefractionIndex),t.push(this.DispersionFactor),t}},t_e=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.SurfaceColour=e,this.Transparency=i,this.DiffuseColour=n,this.TransmissionColour=s,this.DiffuseTransmissionColour=a,this.ReflectionColour=o,this.SpecularColour=l,this.SpecularHighlight=c,this.ReflectanceMethod=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new t_e(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.SurfaceColour),t.push(this.Transparency),t.push(this.DiffuseColour),t.push(this.TransmissionColour),t.push(this.DiffuseTransmissionColour),t.push(this.ReflectionColour),t.push(this.SpecularColour),t.push(this.SpecularHighlight),t.push(this.ReflectanceMethod),t}},r_e=class{constructor(t,r,e,i){this.expressID=t,this.type=r,this.SurfaceColour=e,this.Transparency=i}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++];return new r_e(t,r,n,s)}ToTape(){let t=[];return t.push(this.SurfaceColour),t.push(this.Transparency),t}},i_e=class{constructor(t,r,e){this.expressID=t,this.type=r,this.Textures=e}static FromTape(t,r,e){let i=0,n=e[i++];return new i_e(t,r,n)}ToTape(){let t=[];return t.push(this.Textures),t}},n_e=class{constructor(t,r,e,i,n,s,a){this.expressID=t,this.type=r,this.RepeatS=e,this.RepeatT=i,this.Mode=n,this.TextureTransform=s,this.Parameter=a}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++];return new n_e(t,r,n,s,a,o,l)}ToTape(){let t=[];return t.push(this.RepeatS),t.push(this.RepeatT),t.push(this.Mode),t.push(this.TextureTransform),t.push(this.Parameter),t}},s_e=class{constructor(t,r,e,i){this.expressID=t,this.type=r,this.SweptArea=e,this.Position=i}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++];return new s_e(t,r,n,s)}ToTape(){let t=[];return t.push(this.SweptArea),t.push(this.Position),t}},a_e=class{constructor(t,r,e,i,n,s,a){this.expressID=t,this.type=r,this.Directrix=e,this.Radius=i,this.InnerRadius=n,this.StartParam=s,this.EndParam=a}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++];return new a_e(t,r,n,s,a,o,l)}ToTape(){let t=[];return t.push(this.Directrix),t.push(this.Radius),t.push(this.InnerRadius),t.push(this.StartParam),t.push(this.EndParam),t}},o_e=class{constructor(t,r,e,i,n,s,a,o){this.expressID=t,this.type=r,this.Directrix=e,this.Radius=i,this.InnerRadius=n,this.StartParam=s,this.EndParam=a,this.FilletRadius=o}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++];return new o_e(t,r,n,s,a,o,l,c)}ToTape(){let t=[];return t.push(this.Directrix),t.push(this.Radius),t.push(this.InnerRadius),t.push(this.StartParam),t.push(this.EndParam),t.push(this.FilletRadius),t}},l_e=class{constructor(t,r,e,i){this.expressID=t,this.type=r,this.SweptCurve=e,this.Position=i}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++];return new l_e(t,r,n,s)}ToTape(){let t=[];return t.push(this.SweptCurve),t.push(this.Position),t}},c_e=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new c_e(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},u_e=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new u_e(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},h_e=class{constructor(t,r,e,i,n,s,a){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++];return new h_e(t,r,n,s,a,o,l)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t}},p_e=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new p_e(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},d_e=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new d_e(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},f_e=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p,d){this.expressID=t,this.type=r,this.ProfileType=e,this.ProfileName=i,this.Position=n,this.Depth=s,this.FlangeWidth=a,this.WebThickness=o,this.FlangeThickness=l,this.FilletRadius=c,this.FlangeEdgeRadius=u,this.WebEdgeRadius=h,this.WebSlope=p,this.FlangeSlope=d}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++],m=e[i++];return new f_e(t,r,n,s,a,o,l,c,u,h,p,d,f,m)}ToTape(){let t=[];return t.push(this.ProfileType),t.push(this.ProfileName),t.push(this.Position),t.push(this.Depth),t.push(this.FlangeWidth),t.push(this.WebThickness),t.push(this.FlangeThickness),t.push(this.FilletRadius),t.push(this.FlangeEdgeRadius),t.push(this.WebEdgeRadius),t.push(this.WebSlope),t.push(this.FlangeSlope),t}},m_e=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.Name=e,this.Rows=i,this.Columns=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new m_e(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.Name),t.push(this.Rows),t.push(this.Columns),t}},g_e=class{constructor(t,r,e,i,n,s,a){this.expressID=t,this.type=r,this.Identifier=e,this.Name=i,this.Description=n,this.Unit=s,this.ReferencePath=a}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++];return new g_e(t,r,n,s,a,o,l)}ToTape(){let t=[];return t.push(this.Identifier),t.push(this.Name),t.push(this.Description),t.push(this.Unit),t.push(this.ReferencePath),t}},v_e=class{constructor(t,r,e,i){this.expressID=t,this.type=r,this.RowCells=e,this.IsHeading=i}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++];return new v_e(t,r,n,s)}ToTape(){let t=[];return t.push(this.RowCells),t.push(this.IsHeading),t}},y_e=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new y_e(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},T_e=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new T_e(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},E_e=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p,d,f){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.LongDescription=l,this.Status=c,this.WorkMethod=u,this.IsMilestone=h,this.Priority=p,this.TaskTime=d,this.PredefinedType=f}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++],m=e[i++],g=e[i++];return new E_e(t,r,n,s,a,o,l,c,u,h,p,d,f,m,g)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.Identification),t.push(this.LongDescription),t.push(this.Status),t.push(this.WorkMethod),t.push(this.IsMilestone),t.push(this.Priority),t.push(this.TaskTime),t.push(this.PredefinedType),t}},b_e=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p,d,f,m,g,y,E,b,x,S){this.expressID=t,this.type=r,this.Name=e,this.DataOrigin=i,this.UserDefinedDataOrigin=n,this.DurationType=s,this.ScheduleDuration=a,this.ScheduleStart=o,this.ScheduleFinish=l,this.EarlyStart=c,this.EarlyFinish=u,this.LateStart=h,this.LateFinish=p,this.FreeFloat=d,this.TotalFloat=f,this.IsCritical=m,this.StatusTime=g,this.ActualDuration=y,this.ActualStart=E,this.ActualFinish=b,this.RemainingTime=x,this.Completion=S}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++],m=e[i++],g=e[i++],y=e[i++],E=e[i++],b=e[i++],x=e[i++],S=e[i++],D=e[i++],P=e[i++];return new b_e(t,r,n,s,a,o,l,c,u,h,p,d,f,m,g,y,E,b,x,S,D,P)}ToTape(){let t=[];return t.push(this.Name),t.push(this.DataOrigin),t.push(this.UserDefinedDataOrigin),t.push(this.DurationType),t.push(this.ScheduleDuration),t.push(this.ScheduleStart),t.push(this.ScheduleFinish),t.push(this.EarlyStart),t.push(this.EarlyFinish),t.push(this.LateStart),t.push(this.LateFinish),t.push(this.FreeFloat),t.push(this.TotalFloat),t.push(this.IsCritical),t.push(this.StatusTime),t.push(this.ActualDuration),t.push(this.ActualStart),t.push(this.ActualFinish),t.push(this.RemainingTime),t.push(this.Completion),t}},x_e=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p,d,f,m,g,y,E,b,x,S,D){this.expressID=t,this.type=r,this.Name=e,this.DataOrigin=i,this.UserDefinedDataOrigin=n,this.DurationType=s,this.ScheduleDuration=a,this.ScheduleStart=o,this.ScheduleFinish=l,this.EarlyStart=c,this.EarlyFinish=u,this.LateStart=h,this.LateFinish=p,this.FreeFloat=d,this.TotalFloat=f,this.IsCritical=m,this.StatusTime=g,this.ActualDuration=y,this.ActualStart=E,this.ActualFinish=b,this.RemainingTime=x,this.Completion=S,this.Recurrence=D}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++],m=e[i++],g=e[i++],y=e[i++],E=e[i++],b=e[i++],x=e[i++],S=e[i++],D=e[i++],P=e[i++],_=e[i++];return new x_e(t,r,n,s,a,o,l,c,u,h,p,d,f,m,g,y,E,b,x,S,D,P,_)}ToTape(){let t=[];return t.push(this.Name),t.push(this.DataOrigin),t.push(this.UserDefinedDataOrigin),t.push(this.DurationType),t.push(this.ScheduleDuration),t.push(this.ScheduleStart),t.push(this.ScheduleFinish),t.push(this.EarlyStart),t.push(this.EarlyFinish),t.push(this.LateStart),t.push(this.LateFinish),t.push(this.FreeFloat),t.push(this.TotalFloat),t.push(this.IsCritical),t.push(this.StatusTime),t.push(this.ActualDuration),t.push(this.ActualStart),t.push(this.ActualFinish),t.push(this.RemainingTime),t.push(this.Completion),t.push(this.Recurrence),t}},I_e=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.Identification=l,this.LongDescription=c,this.ProcessType=u,this.PredefinedType=h,this.WorkMethod=p}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++];return new I_e(t,r,n,s,a,o,l,c,u,h,p,d,f)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.Identification),t.push(this.LongDescription),t.push(this.ProcessType),t.push(this.PredefinedType),t.push(this.WorkMethod),t}},S_e=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.Purpose=e,this.Description=i,this.UserDefinedPurpose=n,this.TelephoneNumbers=s,this.FacsimileNumbers=a,this.PagerNumber=o,this.ElectronicMailAddresses=l,this.WWWHomePageURL=c,this.MessagingIDs=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new S_e(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.Purpose),t.push(this.Description),t.push(this.UserDefinedPurpose),t.push(this.TelephoneNumbers),t.push(this.FacsimileNumbers),t.push(this.PagerNumber),t.push(this.ElectronicMailAddresses),t.push(this.WWWHomePageURL),t.push(this.MessagingIDs),t}},__e=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p,d,f,m,g,y,E){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.SteelGrade=u,this.PredefinedType=h,this.NominalDiameter=p,this.CrossSectionArea=d,this.TensionForce=f,this.PreStress=m,this.FrictionCoefficient=g,this.AnchorageSlip=y,this.MinCurvatureRadius=E}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++],m=e[i++],g=e[i++],y=e[i++],E=e[i++],b=e[i++],x=e[i++];return new __e(t,r,n,s,a,o,l,c,u,h,p,d,f,m,g,y,E,b,x)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.SteelGrade),t.push(this.PredefinedType),t.push(this.NominalDiameter),t.push(this.CrossSectionArea),t.push(this.TensionForce),t.push(this.PreStress),t.push(this.FrictionCoefficient),t.push(this.AnchorageSlip),t.push(this.MinCurvatureRadius),t}},w_e=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.SteelGrade=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new w_e(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.SteelGrade),t.push(this.PredefinedType),t}},R_e=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new R_e(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},M_e=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.SteelGrade=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new M_e(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.SteelGrade),t.push(this.PredefinedType),t}},D_e=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new D_e(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},C_e=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p,d,f){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h,this.NominalDiameter=p,this.CrossSectionArea=d,this.SheathDiameter=f}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++],m=e[i++],g=e[i++];return new C_e(t,r,n,s,a,o,l,c,u,h,p,d,f,m,g)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t.push(this.NominalDiameter),t.push(this.CrossSectionArea),t.push(this.SheathDiameter),t}},A_e=class{constructor(t,r,e){this.expressID=t,this.type=r,this.Coordinates=e}static FromTape(t,r,e){let i=0,n=e[i++];return new A_e(t,r,n)}ToTape(){let t=[];return t.push(this.Coordinates),t}},O_e=class{constructor(t,r){this.expressID=t,this.type=r}static FromTape(t,r,e){let i=0;return new O_e(t,r)}ToTape(){return[]}},P_e=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.Literal=e,this.Placement=i,this.Path=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new P_e(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.Literal),t.push(this.Placement),t.push(this.Path),t}},N_e=class{constructor(t,r,e,i,n,s,a){this.expressID=t,this.type=r,this.Literal=e,this.Placement=i,this.Path=n,this.Extent=s,this.BoxAlignment=a}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++];return new N_e(t,r,n,s,a,o,l)}ToTape(){let t=[];return t.push(this.Literal),t.push(this.Placement),t.push(this.Path),t.push(this.Extent),t.push(this.BoxAlignment),t}},L_e=class{constructor(t,r,e,i,n,s,a){this.expressID=t,this.type=r,this.Name=e,this.TextCharacterAppearance=i,this.TextStyle=n,this.TextFontStyle=s,this.ModelOrDraughting=a}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++];return new L_e(t,r,n,s,a,o,l)}ToTape(){let t=[];return t.push(this.Name),t.push(this.TextCharacterAppearance),t.push(this.TextStyle),t.push(this.TextFontStyle),t.push(this.ModelOrDraughting),t}},F_e=class{constructor(t,r,e,i,n,s,a,o){this.expressID=t,this.type=r,this.Name=e,this.FontFamily=i,this.FontStyle=n,this.FontVariant=s,this.FontWeight=a,this.FontSize=o}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++];return new F_e(t,r,n,s,a,o,l,c)}ToTape(){let t=[];return t.push(this.Name),t.push(this.FontFamily),t.push(this.FontStyle),t.push(this.FontVariant),t.push(this.FontWeight),t.push(this.FontSize),t}},H_e=class{constructor(t,r,e,i){this.expressID=t,this.type=r,this.Colour=e,this.BackgroundColour=i}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++];return new H_e(t,r,n,s)}ToTape(){let t=[];return t.push(this.Colour),t.push(this.BackgroundColour),t}},U_e=class{constructor(t,r,e,i,n,s,a,o,l){this.expressID=t,this.type=r,this.TextIndent=e,this.TextAlign=i,this.TextDecoration=n,this.LetterSpacing=s,this.WordSpacing=a,this.TextTransform=o,this.LineHeight=l}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++];return new U_e(t,r,n,s,a,o,l,c,u)}ToTape(){let t=[];return t.push(this.TextIndent),t.push(this.TextAlign),t.push(this.TextDecoration),t.push(this.LetterSpacing),t.push(this.WordSpacing),t.push(this.TextTransform),t.push(this.LineHeight),t}},B_e=class{constructor(t,r,e){this.expressID=t,this.type=r,this.Maps=e}static FromTape(t,r,e){let i=0,n=e[i++];return new B_e(t,r,n)}ToTape(){let t=[];return t.push(this.Maps),t}},k_e=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.Maps=e,this.Mode=i,this.Parameter=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new k_e(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.Maps),t.push(this.Mode),t.push(this.Parameter),t}},G_e=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.Maps=e,this.Vertices=i,this.MappedTo=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new G_e(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.Maps),t.push(this.Vertices),t.push(this.MappedTo),t}},V_e=class{constructor(t,r,e){this.expressID=t,this.type=r,this.Coordinates=e}static FromTape(t,r,e){let i=0,n=e[i++];return new V_e(t,r,n)}ToTape(){let t=[];return t.push(this.Coordinates),t}},z_e=class{constructor(t,r,e){this.expressID=t,this.type=r,this.TexCoordsList=e}static FromTape(t,r,e){let i=0,n=e[i++];return new z_e(t,r,n)}ToTape(){let t=[];return t.push(this.TexCoordsList),t}},j_e=class{constructor(t,r,e,i){this.expressID=t,this.type=r,this.StartTime=e,this.EndTime=i}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++];return new j_e(t,r,n,s)}ToTape(){let t=[];return t.push(this.StartTime),t.push(this.EndTime),t}},W_e=class{constructor(t,r,e,i,n,s,a,o,l,c){this.expressID=t,this.type=r,this.Name=e,this.Description=i,this.StartTime=n,this.EndTime=s,this.TimeSeriesDataType=a,this.DataOrigin=o,this.UserDefinedDataOrigin=l,this.Unit=c}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++];return new W_e(t,r,n,s,a,o,l,c,u,h)}ToTape(){let t=[];return t.push(this.Name),t.push(this.Description),t.push(this.StartTime),t.push(this.EndTime),t.push(this.TimeSeriesDataType),t.push(this.DataOrigin),t.push(this.UserDefinedDataOrigin),t.push(this.Unit),t}},q_e=class{constructor(t,r,e){this.expressID=t,this.type=r,this.ListValues=e}static FromTape(t,r,e){let i=0,n=e[i++];return new q_e(t,r,n)}ToTape(){let t=[];return t.push(this.ListValues),t}},Y_e=class{constructor(t,r){this.expressID=t,this.type=r}static FromTape(t,r,e){let i=0;return new Y_e(t,r)}ToTape(){return[]}},X_e=class{constructor(t,r,e,i,n,s){this.expressID=t,this.type=r,this.ContextOfItems=e,this.RepresentationIdentifier=i,this.RepresentationType=n,this.Items=s}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++];return new X_e(t,r,n,s,a,o)}ToTape(){let t=[];return t.push(this.ContextOfItems),t.push(this.RepresentationIdentifier),t.push(this.RepresentationType),t.push(this.Items),t}},$_e=class{constructor(t,r,e,i,n){this.expressID=t,this.type=r,this.Position=e,this.MajorRadius=i,this.MinorRadius=n}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++];return new $_e(t,r,n,s,a)}ToTape(){let t=[];return t.push(this.Position),t.push(this.MajorRadius),t.push(this.MinorRadius),t}},Z_e=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new Z_e(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},K_e=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new K_e(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},J_e=class{constructor(t,r,e,i,n,s,a,o,l,c){this.expressID=t,this.type=r,this.StartPoint=e,this.StartDirection=i,this.SegmentLength=n,this.StartRadius=s,this.EndRadius=a,this.IsStartRadiusCCW=o,this.IsEndRadiusCCW=l,this.TransitionCurveType=c}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++];return new J_e(t,r,n,s,a,o,l,c,u,h)}ToTape(){let t=[];return t.push(this.StartPoint),t.push(this.StartDirection),t.push(this.SegmentLength),t.push(this.StartRadius),t.push(this.EndRadius),t.push(this.IsStartRadiusCCW),t.push(this.IsEndRadiusCCW),t.push(this.TransitionCurveType),t}},Q_e=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new Q_e(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},ewe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new ewe(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},twe=class{constructor(t,r,e,i,n,s,a,o,l){this.expressID=t,this.type=r,this.ProfileType=e,this.ProfileName=i,this.Position=n,this.BottomXDim=s,this.TopXDim=a,this.YDim=o,this.TopXOffset=l}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++];return new twe(t,r,n,s,a,o,l,c,u)}ToTape(){let t=[];return t.push(this.ProfileType),t.push(this.ProfileName),t.push(this.Position),t.push(this.BottomXDim),t.push(this.TopXDim),t.push(this.YDim),t.push(this.TopXOffset),t}},rwe=class{constructor(t,r,e,i,n,s,a){this.expressID=t,this.type=r,this.Coordinates=e,this.Normals=i,this.Closed=n,this.CoordIndex=s,this.PnIndex=a}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++];return new rwe(t,r,n,s,a,o,l)}ToTape(){let t=[];return t.push(this.Coordinates),t.push(this.Normals),t.push(this.Closed),t.push(this.CoordIndex),t.push(this.PnIndex),t}},iwe=class{constructor(t,r,e,i,n,s,a,o){this.expressID=t,this.type=r,this.Coordinates=e,this.Normals=i,this.Closed=n,this.CoordIndex=s,this.PnIndex=a,this.Flags=o}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++];return new iwe(t,r,n,s,a,o,l,c)}ToTape(){let t=[];return t.push(this.Coordinates),t.push(this.Normals),t.push(this.Closed),t.push(this.CoordIndex),t.push(this.PnIndex),t.push(this.Flags),t}},nwe=class{constructor(t,r,e,i,n,s,a){this.expressID=t,this.type=r,this.BasisCurve=e,this.Trim1=i,this.Trim2=n,this.SenseAgreement=s,this.MasterRepresentation=a}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++];return new nwe(t,r,n,s,a,o,l)}ToTape(){let t=[];return t.push(this.BasisCurve),t.push(this.Trim1),t.push(this.Trim2),t.push(this.SenseAgreement),t.push(this.MasterRepresentation),t}},swe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new swe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},awe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new awe(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},owe=class{constructor(t,r,e,i,n,s,a,o){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++];return new owe(t,r,n,s,a,o,l,c)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t}},lwe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.Identification=l,this.LongDescription=c,this.ProcessType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new lwe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.Identification),t.push(this.LongDescription),t.push(this.ProcessType),t}},cwe=class{constructor(t,r,e,i,n,s,a,o,l,c){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++];return new cwe(t,r,n,s,a,o,l,c,u,h)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t}},uwe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.Identification=l,this.LongDescription=c,this.ResourceType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new uwe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.Identification),t.push(this.LongDescription),t.push(this.ResourceType),t}},hwe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.ProfileType=e,this.ProfileName=i,this.Position=n,this.Depth=s,this.FlangeWidth=a,this.WebThickness=o,this.FlangeThickness=l,this.FilletRadius=c,this.EdgeRadius=u,this.FlangeSlope=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new hwe(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.ProfileType),t.push(this.ProfileName),t.push(this.Position),t.push(this.Depth),t.push(this.FlangeWidth),t.push(this.WebThickness),t.push(this.FlangeThickness),t.push(this.FilletRadius),t.push(this.EdgeRadius),t.push(this.FlangeSlope),t}},pwe=class{constructor(t,r,e){this.expressID=t,this.type=r,this.Units=e}static FromTape(t,r,e){let i=0,n=e[i++];return new pwe(t,r,n)}ToTape(){let t=[];return t.push(this.Units),t}},dwe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new dwe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},fwe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new fwe(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},mwe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new mwe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},gwe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new gwe(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},vwe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new vwe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},ywe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new ywe(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},Twe=class{constructor(t,r,e,i){this.expressID=t,this.type=r,this.Orientation=e,this.Magnitude=i}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++];return new Twe(t,r,n,s)}ToTape(){let t=[];return t.push(this.Orientation),t.push(this.Magnitude),t}},Ewe=class{constructor(t,r){this.expressID=t,this.type=r}static FromTape(t,r,e){let i=0;return new Ewe(t,r)}ToTape(){return[]}},bwe=class{constructor(t,r,e){this.expressID=t,this.type=r,this.LoopVertex=e}static FromTape(t,r,e){let i=0,n=e[i++];return new bwe(t,r,n)}ToTape(){let t=[];return t.push(this.LoopVertex),t}},xwe=class{constructor(t,r,e){this.expressID=t,this.type=r,this.VertexGeometry=e}static FromTape(t,r,e){let i=0,n=e[i++];return new xwe(t,r,n)}ToTape(){let t=[];return t.push(this.VertexGeometry),t}},Iwe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new Iwe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},Swe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new Swe(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},_we=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new _we(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},wwe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new wwe(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},Rwe=class{constructor(t,r,e,i,n,s,a,o,l,c){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++];return new Rwe(t,r,n,s,a,o,l,c,u,h)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t}},Mwe=class{constructor(t,r,e,i){this.expressID=t,this.type=r,this.IntersectingAxes=e,this.OffsetDistances=i}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++];return new Mwe(t,r,n,s)}ToTape(){let t=[];return t.push(this.IntersectingAxes),t.push(this.OffsetDistances),t}},Dwe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new Dwe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},Cwe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new Cwe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},Awe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new Awe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},Owe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new Owe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},Pwe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new Pwe(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},Nwe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new Nwe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.PredefinedType),t}},Lwe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++];return new Lwe(t,r,n,s,a,o,l,c,u,h,p,d)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t}},Fwe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p,d,f){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.OverallHeight=u,this.OverallWidth=h,this.PredefinedType=p,this.PartitioningType=d,this.UserDefinedPartitioningType=f}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++],m=e[i++],g=e[i++];return new Fwe(t,r,n,s,a,o,l,c,u,h,p,d,f,m,g)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.OverallHeight),t.push(this.OverallWidth),t.push(this.PredefinedType),t.push(this.PartitioningType),t.push(this.UserDefinedPartitioningType),t}},Hwe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p,d,f,m,g,y){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.LiningDepth=a,this.LiningThickness=o,this.TransomThickness=l,this.MullionThickness=c,this.FirstTransomOffset=u,this.SecondTransomOffset=h,this.FirstMullionOffset=p,this.SecondMullionOffset=d,this.ShapeAspectStyle=f,this.LiningOffset=m,this.LiningToPanelOffsetX=g,this.LiningToPanelOffsetY=y}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++],m=e[i++],g=e[i++],y=e[i++],E=e[i++],b=e[i++];return new Hwe(t,r,n,s,a,o,l,c,u,h,p,d,f,m,g,y,E,b)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.LiningDepth),t.push(this.LiningThickness),t.push(this.TransomThickness),t.push(this.MullionThickness),t.push(this.FirstTransomOffset),t.push(this.SecondTransomOffset),t.push(this.FirstMullionOffset),t.push(this.SecondMullionOffset),t.push(this.ShapeAspectStyle),t.push(this.LiningOffset),t.push(this.LiningToPanelOffsetX),t.push(this.LiningToPanelOffsetY),t}},Uwe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.OperationType=a,this.PanelPosition=o,this.FrameDepth=l,this.FrameThickness=c,this.ShapeAspectStyle=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new Uwe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.OperationType),t.push(this.PanelPosition),t.push(this.FrameDepth),t.push(this.FrameThickness),t.push(this.ShapeAspectStyle),t}},Bwe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p,d,f){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=c,this.OverallHeight=u,this.OverallWidth=h,this.PredefinedType=p,this.PartitioningType=d,this.UserDefinedPartitioningType=f}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++],m=e[i++],g=e[i++];return new Bwe(t,r,n,s,a,o,l,c,u,h,p,d,f,m,g)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.ObjectPlacement),t.push(this.Representation),t.push(this.Tag),t.push(this.OverallHeight),t.push(this.OverallWidth),t.push(this.PredefinedType),t.push(this.PartitioningType),t.push(this.UserDefinedPartitioningType),t}},kwe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p,d){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ConstructionType=u,this.OperationType=h,this.ParameterTakesPrecedence=p,this.Sizeable=d}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++],m=e[i++];return new kwe(t,r,n,s,a,o,l,c,u,h,p,d,f,m)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ConstructionType),t.push(this.OperationType),t.push(this.ParameterTakesPrecedence),t.push(this.Sizeable),t}},Gwe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p,d,f){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=c,this.ElementType=u,this.PredefinedType=h,this.PartitioningType=p,this.ParameterTakesPrecedence=d,this.UserDefinedPartitioningType=f}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++],m=e[i++],g=e[i++];return new Gwe(t,r,n,s,a,o,l,c,u,h,p,d,f,m,g)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ApplicableOccurrence),t.push(this.HasPropertySets),t.push(this.RepresentationMaps),t.push(this.Tag),t.push(this.ElementType),t.push(this.PredefinedType),t.push(this.PartitioningType),t.push(this.ParameterTakesPrecedence),t.push(this.UserDefinedPartitioningType),t}},Vwe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.WorkingTimes=l,this.ExceptionTimes=c,this.PredefinedType=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new Vwe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.Identification),t.push(this.WorkingTimes),t.push(this.ExceptionTimes),t.push(this.PredefinedType),t}},zwe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p,d,f){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.CreationDate=l,this.Creators=c,this.Purpose=u,this.Duration=h,this.TotalFloat=p,this.StartTime=d,this.FinishTime=f}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++],m=e[i++],g=e[i++];return new zwe(t,r,n,s,a,o,l,c,u,h,p,d,f,m,g)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.Identification),t.push(this.CreationDate),t.push(this.Creators),t.push(this.Purpose),t.push(this.Duration),t.push(this.TotalFloat),t.push(this.StartTime),t.push(this.FinishTime),t}},jwe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p,d,f,m){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.CreationDate=l,this.Creators=c,this.Purpose=u,this.Duration=h,this.TotalFloat=p,this.StartTime=d,this.FinishTime=f,this.PredefinedType=m}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++],m=e[i++],g=e[i++],y=e[i++];return new jwe(t,r,n,s,a,o,l,c,u,h,p,d,f,m,g,y)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.Identification),t.push(this.CreationDate),t.push(this.Creators),t.push(this.Purpose),t.push(this.Duration),t.push(this.TotalFloat),t.push(this.StartTime),t.push(this.FinishTime),t.push(this.PredefinedType),t}},Wwe=class{constructor(t,r,e,i,n,s,a,o,l,c,u,h,p,d,f,m){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.CreationDate=l,this.Creators=c,this.Purpose=u,this.Duration=h,this.TotalFloat=p,this.StartTime=d,this.FinishTime=f,this.PredefinedType=m}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++],d=e[i++],f=e[i++],m=e[i++],g=e[i++],y=e[i++];return new Wwe(t,r,n,s,a,o,l,c,u,h,p,d,f,m,g,y)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.Identification),t.push(this.CreationDate),t.push(this.Creators),t.push(this.Purpose),t.push(this.Duration),t.push(this.TotalFloat),t.push(this.StartTime),t.push(this.FinishTime),t.push(this.PredefinedType),t}},qwe=class{constructor(t,r,e,i,n,s,a,o){this.expressID=t,this.type=r,this.Name=e,this.DataOrigin=i,this.UserDefinedDataOrigin=n,this.RecurrencePattern=s,this.Start=a,this.Finish=o}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++];return new qwe(t,r,n,s,a,o,l,c)}ToTape(){let t=[];return t.push(this.Name),t.push(this.DataOrigin),t.push(this.UserDefinedDataOrigin),t.push(this.RecurrencePattern),t.push(this.Start),t.push(this.Finish),t}},Ywe=class{constructor(t,r,e,i,n,s,a,o,l,c,u){this.expressID=t,this.type=r,this.ProfileType=e,this.ProfileName=i,this.Position=n,this.Depth=s,this.FlangeWidth=a,this.WebThickness=o,this.FlangeThickness=l,this.FilletRadius=c,this.EdgeRadius=u}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++],u=e[i++],h=e[i++],p=e[i++];return new Ywe(t,r,n,s,a,o,l,c,u,h,p)}ToTape(){let t=[];return t.push(this.ProfileType),t.push(this.ProfileName),t.push(this.Position),t.push(this.Depth),t.push(this.FlangeWidth),t.push(this.WebThickness),t.push(this.FlangeThickness),t.push(this.FilletRadius),t.push(this.EdgeRadius),t}},Xwe=class{constructor(t,r,e,i,n,s,a,o){this.expressID=t,this.type=r,this.GlobalId=e,this.OwnerHistory=i,this.Name=n,this.Description=s,this.ObjectType=a,this.LongName=o}static FromTape(t,r,e){let i=0,n=e[i++],s=e[i++],a=e[i++],o=e[i++],l=e[i++],c=e[i++];return new Xwe(t,r,n,s,a,o,l,c)}ToTape(){let t=[];return t.push(this.GlobalId),t.push(this.OwnerHistory),t.push(this.Name),t.push(this.Description),t.push(this.ObjectType),t.push(this.LongName),t}},Rde=HTt();var Wk=class{constructor(){this.wasmModule=void 0,this.fs=void 0}Init(){return LTt(this,null,function*(){Rde?(this.wasmModule=yield Rde({noInitialRun:!0}),this.fs=this.wasmModule.FS):console.error("Could not find wasm module at './web-ifc' from web-ifc-api.ts")})}OpenModel(t,r){this.wasmModule.FS_createDataFile("/","filename",t,!0,!0,!0);let e=wde({COORDINATE_TO_ORIGIN:!1,USE_FAST_BOOLS:!1,CIRCLE_SEGMENTS_LOW:5,CIRCLE_SEGMENTS_MEDIUM:8,CIRCLE_SEGMENTS_HIGH:12},r),i=this.wasmModule.OpenModel(e);return this.wasmModule.FS_unlink("/filename"),i}CreateModel(t){let r=wde({COORDINATE_TO_ORIGIN:!1,USE_FAST_BOOLS:!1,CIRCLE_SEGMENTS_LOW:5,CIRCLE_SEGMENTS_MEDIUM:8,CIRCLE_SEGMENTS_HIGH:12},t);return this.wasmModule.CreateModel(r)}ExportFileAsIFC(t){this.wasmModule.ExportFileAsIFC(t);let r=this.fs.readFile("/export.ifc");return this.wasmModule.FS_unlink("/export.ifc"),r}GetGeometry(t,r){return this.wasmModule.GetGeometry(t,r)}GetLine(t,r,e=!1){let i=this.GetRawLineData(t,r),n=O[i.type](i);return e&&this.FlattenLine(t,n),n}WriteLine(t,r){Object.keys(r).forEach(i=>{let n=r[i];if(n&&n.expressID!==void 0)this.WriteLine(t,n),r[i]={type:5,value:n.expressID};else if(Array.isArray(n)&&n.length>0)for(let s=0;s<n.length;s++)n[s].expressID!==void 0&&(this.WriteLine(t,n[s]),r[i][s]={type:5,value:n[s].expressID})});let e={ID:r.expressID,type:r.type,arguments:r.ToTape()};this.WriteRawLineData(t,e)}FlattenLine(t,r){Object.keys(r).forEach(e=>{let i=r[e];if(i&&i.type===5)r[e]=this.GetLine(t,i.value,!0);else if(Array.isArray(i)&&i.length>0&&i[0].type===5)for(let n=0;n<i.length;n++)r[e][n]=this.GetLine(t,i[n].value,!0)})}GetRawLineData(t,r){return this.wasmModule.GetLine(t,r)}WriteRawLineData(t,r){return this.wasmModule.WriteLine(t,r.ID,r.type,r.arguments)}GetLineIDsWithType(t,r){return this.wasmModule.GetLineIDsWithType(t,r)}GetAllLines(t){return this.wasmModule.GetAllLines(t)}SetGeometryTransformation(t,r){if(r.length!=16){console.log(`Bad transformation matrix size: ${r.length}`);return}this.wasmModule.SetGeometryTransformation(t,r)}GetVertexArray(t,r){return this.getSubArray(this.wasmModule.HEAPF32,t,r)}GetIndexArray(t,r){return this.getSubArray(this.wasmModule.HEAPU32,t,r)}getSubArray(t,r,e){return t.subarray(r/4,r/4+e).slice(0)}CloseModel(t){this.wasmModule.CloseModel(t)}StreamAllMeshes(t,r){this.wasmModule.StreamAllMeshes(t,r)}IsModelOpen(t){return this.wasmModule.IsModelOpen(t)}LoadAllGeometry(t){return this.wasmModule.LoadAllGeometry(t)}GetFlatMesh(t,r){return this.wasmModule.GetFlatMesh(t,r)}SetWasmPath(t){$we=t}};var $we="";var Kwe="expressID",UT=(t,r=!1)=>qo(t,r),Zwe=(t,r)=>new jt(new Float32Array(t),r),B3t=(t,r)=>new jt(new Uint32Array(t),r),qk="default",jl={aggregates:{name:Ck,relating:"RelatingObject",related:"RelatedObjects",key:"children"},spatial:{name:Ok,relating:"RelatingStructure",related:"RelatedElements",key:"children"},psets:{name:Pk,relating:"RelatingPropertyDefinition",related:"RelatedObjects",key:"hasPsets"},materials:{name:Ak,relating:"RelatingMaterial",related:"RelatedObjects",key:"hasMaterial"},type:{name:Nk,relating:"RelatingType",related:"RelatedObjects",key:"hasType"}},Yk=class{constructor(r,e){this.state=r,this.BVH=e,this.loadedModels=0,this.currentWebIfcID=-1,this.currentModelID=-1}parse(r){return ot(this,null,function*(){return this.state.api.wasmModule===void 0&&(yield this.state.api.Init()),this.newIfcModel(r),this.loadedModels++,this.loadAllGeometry()})}newIfcModel(r){let e=new Uint8Array(r);this.currentWebIfcID=this.state.api.OpenModel(e,this.state.webIfcSettings),this.currentModelID=this.state.useJSON?this.loadedModels:this.currentWebIfcID,this.state.models[this.currentModelID]={modelID:this.currentModelID,mesh:{},items:{},types:{},jsonData:{}}}loadAllGeometry(){return this.saveAllPlacedGeometriesByMaterial(),this.generateAllGeometriesByMaterial()}generateAllGeometriesByMaterial(){let{geometry:r,materials:e}=this.getGeometryAndMaterials();this.BVH.applyThreeMeshBVH(r);let i=new Je(r,e);return i.modelID=this.currentModelID,this.state.models[this.currentModelID].mesh=i,i}getGeometryAndMaterials(){let r=this.state.models[this.currentModelID].items,e=[],i=[];for(let s in r){i.push(r[s].material);let a=Object.values(r[s].geometries);e.push(UT(a))}return{geometry:UT(e,!0),materials:i}}saveAllPlacedGeometriesByMaterial(){let r=this.state.api.LoadAllGeometry(this.currentWebIfcID);for(let e=0;e<r.size();e++){let i=r.get(e),n=i.geometries;for(let s=0;s<n.size();s++)this.savePlacedGeometry(n.get(s),i.expressID)}}savePlacedGeometry(r,e){let i=this.getBufferGeometry(r);i.computeVertexNormals();let n=this.getMeshMatrix(r.flatTransformation);i.applyMatrix4(n),this.saveGeometryByMaterial(i,r,e)}getBufferGeometry(r){let e=this.state.api.GetGeometry(this.currentWebIfcID,r.geometryExpressID),i=this.getVertices(e),n=this.getIndices(e),{vertices:s,normals:a}=this.extractVertexData(i);return this.ifcGeomToBufferGeom(s,a,n)}getVertices(r){let e=r.GetVertexData(),i=r.GetVertexDataSize();return this.state.api.GetVertexArray(e,i)}getIndices(r){let e=r.GetIndexData(),i=r.GetIndexDataSize();return this.state.api.GetIndexArray(e,i)}getMeshMatrix(r){let e=new Ue;return e.fromArray(r),e}ifcGeomToBufferGeom(r,e,i){let n=new it;return n.setAttribute("position",Zwe(r,3)),n.setAttribute("normal",Zwe(e,3)),n.setIndex(new jt(i,1)),n}extractVertexData(r){let e=[],i=[],n=!1;for(let s=0;s<r.length;s++)n?i.push(r[s]):e.push(r[s]),(s+1)%3==0&&(n=!n);return{vertices:e,normals:i}}saveGeometryByMaterial(r,e,i){let n=e.color,s=`${n.x}${n.y}${n.z}${n.w}`;this.storeGeometryAttribute(i,r),this.createMaterial(s,n);let a=this.state.models[this.currentModelID].items[s],o=a.geometries[i];if(!o)return a.geometries[i]=r;let l=UT([o,r]);a.geometries[i]=l}storeGeometryAttribute(r,e){let i=e.attributes.position.count,n=new Array(i).fill(r);e.setAttribute(Kwe,B3t(n,1))}createMaterial(r,e){let i=this.state.models[this.currentModelID].items;if(i[r])return;let n=new Ve(e.x,e.y,e.z),s=new io({color:n,side:wi});s.transparent=e.w!==1,s.transparent&&(s.opacity=e.w),i[r]={material:s,geometries:{}}}},Xk=class{constructor(r,e){this.selected={},this.state=r,this.BVH=e}getSubset(r,e){let i=this.matIDNoConfig(r,e);return this.selected[i]?this.selected[i].mesh:null}removeSubset(r,e,i){let n=this.matIDNoConfig(r,i);this.selected[n]&&(e&&e.remove(this.selected[n].mesh),delete this.selected[n])}createSubset(r){if(this.isConfigValid(r)&&!this.isPreviousSelection(r))return this.isEasySelection(r)?this.addToPreviousSelection(r):(this.updatePreviousSelection(r.scene,r),this.createSelectionInScene(r))}createSelectionInScene(r){let e=this.filter(r),{geomsByMaterial:i,materials:n}=this.getGeomAndMat(e),s=this.isDefaultMat(r),a=this.getMergedGeometry(i,s),o=s?n:r.material;this.BVH.applyThreeMeshBVH(a);let l=new Je(a,o);return this.selected[this.matID(r)].mesh=l,l.modelID=r.modelID,r.scene.add(l),l}getMergedGeometry(r,e){return r.length>0?UT(r,e):new it}isConfigValid(r){return this.isValid(r.scene)&&this.isValid(r.modelID)&&this.isValid(r.ids)&&this.isValid(r.removePrevious)}isValid(r){return r!=null}getGeomAndMat(r){let e=[],i=[];for(let n in r){let s=Object.values(r[n].geometries);s.length&&(i.push(r[n].material),s.length>1?e.push(UT(s)):e.push(...s))}return{geomsByMaterial:e,materials:i}}updatePreviousSelection(r,e){let i=this.selected[this.matID(e)];if(!i)return this.newSelectionGroup(e);r.remove(i.mesh),e.removePrevious?i.ids=new Set(e.ids):e.ids.forEach(n=>i.ids.add(n))}newSelectionGroup(r){this.selected[this.matID(r)]={ids:new Set(r.ids),mesh:{}}}isPreviousSelection(r){if(!this.selected[this.matID(r)])return!1;if(this.containsIds(r))return!0;let e=this.selected[this.matID(r)].ids;return JSON.stringify(r.ids)===JSON.stringify(e)}containsIds(r){let e=r.ids,i=Array.from(this.selected[this.matID(r)].ids);return e.every((n=>s=>n=i.indexOf(s,n)+1)(0))}addToPreviousSelection(r){let e=this.selected[this.matID(r)],i=this.filter(r),n=Object.values(i).map(a=>Object.values(a.geometries)).flat(),s=e.mesh.geometry;e.mesh.geometry=UT([s,...n]),r.ids.forEach(a=>e.ids.add(a))}filter(r){let e=this.selected[this.matID(r)].ids,i=this.state.models[r.modelID].items,n={};for(let s in i)n[s]={material:i[s].material,geometries:this.filterGeometries(e,i[s].geometries)};return n}filterGeometries(r,e){let i=Array.from(r);return Object.keys(e).filter(n=>i.includes(parseInt(n,10))).reduce((n,s)=>Mn(Ur({},n),{[s]:e[s]}),{})}isEasySelection(r){let e=this.matID(r);if(!r.removePrevious&&!this.isDefaultMat(r)&&this.selected[e])return!0}isDefaultMat(r){return this.matIDNoConfig(r.modelID)===this.matID(r)}matID(r){let e;return r.material?e=r.material.uuid||qk:e=qk,e.concat(" - ").concat(r.modelID.toString())}matIDNoConfig(r,e){let i=qk;return e&&(i=e.uuid),i.concat(" - ").concat(r.toString())}},t8={103090709:"IFCPROJECT",4097777520:"IFCSITE",4031249490:"IFCBUILDING",3124254112:"IFCBUILDINGSTOREY",3856911033:"IFCSPACE",1674181508:"IFCANNOTATION",25142252:"IFCCONTROLLER",32344328:"IFCBOILER",76236018:"IFCLAMP",90941305:"IFCPUMP",177149247:"IFCAIRTERMINALBOX",182646315:"IFCFLOWINSTRUMENT",263784265:"IFCFURNISHINGELEMENT",264262732:"IFCELECTRICGENERATOR",277319702:"IFCAUDIOVISUALAPPLIANCE",310824031:"IFCPIPEFITTING",331165859:"IFCSTAIR",342316401:"IFCDUCTFITTING",377706215:"IFCMECHANICALFASTENER",395920057:"IFCDOOR",402227799:"IFCELECTRICMOTOR",413509423:"IFCSYSTEMFURNITUREELEMENT",484807127:"IFCEVAPORATOR",486154966:"IFCWINDOWSTANDARDCASE",629592764:"IFCLIGHTFIXTURE",630975310:"IFCUNITARYCONTROLELEMENT",635142910:"IFCCABLECARRIERFITTING",639361253:"IFCCOIL",647756555:"IFCFASTENER",707683696:"IFCFLOWSTORAGEDEVICE",738039164:"IFCPROTECTIVEDEVICE",753842376:"IFCBEAM",812556717:"IFCTANK",819412036:"IFCFILTER",843113511:"IFCCOLUMN",862014818:"IFCELECTRICDISTRIBUTIONBOARD",900683007:"IFCFOOTING",905975707:"IFCCOLUMNSTANDARDCASE",926996030:"IFCVOIDINGFEATURE",979691226:"IFCREINFORCINGBAR",987401354:"IFCFLOWSEGMENT",1003880860:"IFCELECTRICTIMECONTROL",1051757585:"IFCCABLEFITTING",1052013943:"IFCDISTRIBUTIONCHAMBERELEMENT",1062813311:"IFCDISTRIBUTIONCONTROLELEMENT",1073191201:"IFCMEMBER",1095909175:"IFCBUILDINGELEMENTPROXY",1156407060:"IFCPLATESTANDARDCASE",1162798199:"IFCSWITCHINGDEVICE",1329646415:"IFCSHADINGDEVICE",1335981549:"IFCDISCRETEACCESSORY",1360408905:"IFCDUCTSILENCER",1404847402:"IFCSTACKTERMINAL",1426591983:"IFCFIRESUPPRESSIONTERMINAL",1437502449:"IFCMEDICALDEVICE",1509553395:"IFCFURNITURE",1529196076:"IFCSLAB",1620046519:"IFCTRANSPORTELEMENT",1634111441:"IFCAIRTERMINAL",1658829314:"IFCENERGYCONVERSIONDEVICE",1677625105:"IFCCIVILELEMENT",1687234759:"IFCPILE",1904799276:"IFCELECTRICAPPLIANCE",1911478936:"IFCMEMBERSTANDARDCASE",1945004755:"IFCDISTRIBUTIONELEMENT",1973544240:"IFCCOVERING",1999602285:"IFCSPACEHEATER",2016517767:"IFCROOF",2056796094:"IFCAIRTOAIRHEATRECOVERY",2058353004:"IFCFLOWCONTROLLER",2068733104:"IFCHUMIDIFIER",2176052936:"IFCJUNCTIONBOX",2188021234:"IFCFLOWMETER",2223149337:"IFCFLOWTERMINAL",2262370178:"IFCRAILING",2272882330:"IFCCONDENSER",2295281155:"IFCPROTECTIVEDEVICETRIPPINGUNIT",2320036040:"IFCREINFORCINGMESH",2347447852:"IFCTENDONANCHOR",2391383451:"IFCVIBRATIONISOLATOR",2391406946:"IFCWALL",2474470126:"IFCMOTORCONNECTION",2769231204:"IFCVIRTUALELEMENT",2814081492:"IFCENGINE",2906023776:"IFCBEAMSTANDARDCASE",2938176219:"IFCBURNER",2979338954:"IFCBUILDINGELEMENTPART",3024970846:"IFCRAMP",3026737570:"IFCTUBEBUNDLE",3027962421:"IFCSLABSTANDARDCASE",3040386961:"IFCDISTRIBUTIONFLOWELEMENT",3053780830:"IFCSANITARYTERMINAL",3079942009:"IFCOPENINGSTANDARDCASE",3087945054:"IFCALARM",3101698114:"IFCSURFACEFEATURE",3127900445:"IFCSLABELEMENTEDCASE",3132237377:"IFCFLOWMOVINGDEVICE",3171933400:"IFCPLATE",3221913625:"IFCCOMMUNICATIONSAPPLIANCE",3242481149:"IFCDOORSTANDARDCASE",3283111854:"IFCRAMPFLIGHT",3296154744:"IFCCHIMNEY",3304561284:"IFCWINDOW",3310460725:"IFCELECTRICFLOWSTORAGEDEVICE",3319311131:"IFCHEATEXCHANGER",3415622556:"IFCFAN",3420628829:"IFCSOLARDEVICE",3493046030:"IFCGEOGRAPHICELEMENT",3495092785:"IFCCURTAINWALL",3508470533:"IFCFLOWTREATMENTDEVICE",3512223829:"IFCWALLSTANDARDCASE",3518393246:"IFCDUCTSEGMENT",3571504051:"IFCCOMPRESSOR",3588315303:"IFCOPENINGELEMENT",3612865200:"IFCPIPESEGMENT",3640358203:"IFCCOOLINGTOWER",3651124850:"IFCPROJECTIONELEMENT",3694346114:"IFCOUTLET",3747195512:"IFCEVAPORATIVECOOLER",3758799889:"IFCCABLECARRIERSEGMENT",3824725483:"IFCTENDON",3825984169:"IFCTRANSFORMER",3902619387:"IFCCHILLER",4074379575:"IFCDAMPER",4086658281:"IFCSENSOR",4123344466:"IFCELEMENTASSEMBLY",4136498852:"IFCCOOLEDBEAM",4156078855:"IFCWALLELEMENTEDCASE",4175244083:"IFCINTERCEPTOR",4207607924:"IFCVALVE",4217484030:"IFCCABLESEGMENT",4237592921:"IFCWASTETERMINAL",4252922144:"IFCSTAIRFLIGHT",4278956645:"IFCFLOWFITTING",4288193352:"IFCACTUATOR",4292641817:"IFCUNITARYEQUIPMENT",3009204131:"IFCGRID"},k3t={3821786052:"IFCACTIONREQUEST",2296667514:"IFCACTOR",3630933823:"IFCACTORROLE",4288193352:"IFCACTUATOR",2874132201:"IFCACTUATORTYPE",618182010:"IFCADDRESS",1635779807:"IFCADVANCEDBREP",2603310189:"IFCADVANCEDBREPWITHVOIDS",3406155212:"IFCADVANCEDFACE",1634111441:"IFCAIRTERMINAL",177149247:"IFCAIRTERMINALBOX",1411407467:"IFCAIRTERMINALBOXTYPE",3352864051:"IFCAIRTERMINALTYPE",2056796094:"IFCAIRTOAIRHEATRECOVERY",1871374353:"IFCAIRTOAIRHEATRECOVERYTYPE",3087945054:"IFCALARM",3001207471:"IFCALARMTYPE",325726236:"IFCALIGNMENT",749761778:"IFCALIGNMENT2DHORIZONTAL",3199563722:"IFCALIGNMENT2DHORIZONTALSEGMENT",2483840362:"IFCALIGNMENT2DSEGMENT",3379348081:"IFCALIGNMENT2DVERSEGCIRCULARARC",3239324667:"IFCALIGNMENT2DVERSEGLINE",4263986512:"IFCALIGNMENT2DVERSEGPARABOLICARC",53199957:"IFCALIGNMENT2DVERTICAL",2029264950:"IFCALIGNMENT2DVERTICALSEGMENT",3512275521:"IFCALIGNMENTCURVE",1674181508:"IFCANNOTATION",669184980:"IFCANNOTATIONFILLAREA",639542469:"IFCAPPLICATION",411424972:"IFCAPPLIEDVALUE",130549933:"IFCAPPROVAL",3869604511:"IFCAPPROVALRELATIONSHIP",3798115385:"IFCARBITRARYCLOSEDPROFILEDEF",1310608509:"IFCARBITRARYOPENPROFILEDEF",2705031697:"IFCARBITRARYPROFILEDEFWITHVOIDS",3460190687:"IFCASSET",3207858831:"IFCASYMMETRICISHAPEPROFILEDEF",277319702:"IFCAUDIOVISUALAPPLIANCE",1532957894:"IFCAUDIOVISUALAPPLIANCETYPE",4261334040:"IFCAXIS1PLACEMENT",3125803723:"IFCAXIS2PLACEMENT2D",2740243338:"IFCAXIS2PLACEMENT3D",1967976161:"IFCBSPLINECURVE",2461110595:"IFCBSPLINECURVEWITHKNOTS",2887950389:"IFCBSPLINESURFACE",167062518:"IFCBSPLINESURFACEWITHKNOTS",753842376:"IFCBEAM",2906023776:"IFCBEAMSTANDARDCASE",819618141:"IFCBEAMTYPE",4196446775:"IFCBEARING",3649138523:"IFCBEARINGTYPE",616511568:"IFCBLOBTEXTURE",1334484129:"IFCBLOCK",32344328:"IFCBOILER",231477066:"IFCBOILERTYPE",3649129432:"IFCBOOLEANCLIPPINGRESULT",2736907675:"IFCBOOLEANRESULT",4037036970:"IFCBOUNDARYCONDITION",1136057603:"IFCBOUNDARYCURVE",1560379544:"IFCBOUNDARYEDGECONDITION",3367102660:"IFCBOUNDARYFACECONDITION",1387855156:"IFCBOUNDARYNODECONDITION",2069777674:"IFCBOUNDARYNODECONDITIONWARPING",1260505505:"IFCBOUNDEDCURVE",4182860854:"IFCBOUNDEDSURFACE",2581212453:"IFCBOUNDINGBOX",2713105998:"IFCBOXEDHALFSPACE",644574406:"IFCBRIDGE",963979645:"IFCBRIDGEPART",4031249490:"IFCBUILDING",3299480353:"IFCBUILDINGELEMENT",2979338954:"IFCBUILDINGELEMENTPART",39481116:"IFCBUILDINGELEMENTPARTTYPE",1095909175:"IFCBUILDINGELEMENTPROXY",1909888760:"IFCBUILDINGELEMENTPROXYTYPE",1950629157:"IFCBUILDINGELEMENTTYPE",3124254112:"IFCBUILDINGSTOREY",1177604601:"IFCBUILDINGSYSTEM",2938176219:"IFCBURNER",2188180465:"IFCBURNERTYPE",2898889636:"IFCCSHAPEPROFILEDEF",635142910:"IFCCABLECARRIERFITTING",395041908:"IFCCABLECARRIERFITTINGTYPE",3758799889:"IFCCABLECARRIERSEGMENT",3293546465:"IFCCABLECARRIERSEGMENTTYPE",1051757585:"IFCCABLEFITTING",2674252688:"IFCCABLEFITTINGTYPE",4217484030:"IFCCABLESEGMENT",1285652485:"IFCCABLESEGMENTTYPE",3999819293:"IFCCAISSONFOUNDATION",3203706013:"IFCCAISSONFOUNDATIONTYPE",1123145078:"IFCCARTESIANPOINT",574549367:"IFCCARTESIANPOINTLIST",1675464909:"IFCCARTESIANPOINTLIST2D",2059837836:"IFCCARTESIANPOINTLIST3D",59481748:"IFCCARTESIANTRANSFORMATIONOPERATOR",3749851601:"IFCCARTESIANTRANSFORMATIONOPERATOR2D",3486308946:"IFCCARTESIANTRANSFORMATIONOPERATOR2DNONUNIFORM",3331915920:"IFCCARTESIANTRANSFORMATIONOPERATOR3D",1416205885:"IFCCARTESIANTRANSFORMATIONOPERATOR3DNONUNIFORM",3150382593:"IFCCENTERLINEPROFILEDEF",3902619387:"IFCCHILLER",2951183804:"IFCCHILLERTYPE",3296154744:"IFCCHIMNEY",2197970202:"IFCCHIMNEYTYPE",2611217952:"IFCCIRCLE",2937912522:"IFCCIRCLEHOLLOWPROFILEDEF",1383045692:"IFCCIRCLEPROFILEDEF",1062206242:"IFCCIRCULARARCSEGMENT2D",1677625105:"IFCCIVILELEMENT",3893394355:"IFCCIVILELEMENTTYPE",747523909:"IFCCLASSIFICATION",647927063:"IFCCLASSIFICATIONREFERENCE",2205249479:"IFCCLOSEDSHELL",639361253:"IFCCOIL",2301859152:"IFCCOILTYPE",776857604:"IFCCOLOURRGB",3285139300:"IFCCOLOURRGBLIST",3264961684:"IFCCOLOURSPECIFICATION",843113511:"IFCCOLUMN",905975707:"IFCCOLUMNSTANDARDCASE",300633059:"IFCCOLUMNTYPE",3221913625:"IFCCOMMUNICATIONSAPPLIANCE",400855858:"IFCCOMMUNICATIONSAPPLIANCETYPE",2542286263:"IFCCOMPLEXPROPERTY",3875453745:"IFCCOMPLEXPROPERTYTEMPLATE",3732776249:"IFCCOMPOSITECURVE",15328376:"IFCCOMPOSITECURVEONSURFACE",2485617015:"IFCCOMPOSITECURVESEGMENT",1485152156:"IFCCOMPOSITEPROFILEDEF",3571504051:"IFCCOMPRESSOR",3850581409:"IFCCOMPRESSORTYPE",2272882330:"IFCCONDENSER",2816379211:"IFCCONDENSERTYPE",2510884976:"IFCCONIC",370225590:"IFCCONNECTEDFACESET",1981873012:"IFCCONNECTIONCURVEGEOMETRY",2859738748:"IFCCONNECTIONGEOMETRY",45288368:"IFCCONNECTIONPOINTECCENTRICITY",2614616156:"IFCCONNECTIONPOINTGEOMETRY",2732653382:"IFCCONNECTIONSURFACEGEOMETRY",775493141:"IFCCONNECTIONVOLUMEGEOMETRY",1959218052:"IFCCONSTRAINT",3898045240:"IFCCONSTRUCTIONEQUIPMENTRESOURCE",2185764099:"IFCCONSTRUCTIONEQUIPMENTRESOURCETYPE",1060000209:"IFCCONSTRUCTIONMATERIALRESOURCE",4105962743:"IFCCONSTRUCTIONMATERIALRESOURCETYPE",488727124:"IFCCONSTRUCTIONPRODUCTRESOURCE",1525564444:"IFCCONSTRUCTIONPRODUCTRESOURCETYPE",2559216714:"IFCCONSTRUCTIONRESOURCE",2574617495:"IFCCONSTRUCTIONRESOURCETYPE",3419103109:"IFCCONTEXT",3050246964:"IFCCONTEXTDEPENDENTUNIT",3293443760:"IFCCONTROL",25142252:"IFCCONTROLLER",578613899:"IFCCONTROLLERTYPE",2889183280:"IFCCONVERSIONBASEDUNIT",2713554722:"IFCCONVERSIONBASEDUNITWITHOFFSET",4136498852:"IFCCOOLEDBEAM",335055490:"IFCCOOLEDBEAMTYPE",3640358203:"IFCCOOLINGTOWER",2954562838:"IFCCOOLINGTOWERTYPE",1785450214:"IFCCOORDINATEOPERATION",1466758467:"IFCCOORDINATEREFERENCESYSTEM",3895139033:"IFCCOSTITEM",1419761937:"IFCCOSTSCHEDULE",602808272:"IFCCOSTVALUE",1973544240:"IFCCOVERING",1916426348:"IFCCOVERINGTYPE",3295246426:"IFCCREWRESOURCE",1815067380:"IFCCREWRESOURCETYPE",2506170314:"IFCCSGPRIMITIVE3D",2147822146:"IFCCSGSOLID",539742890:"IFCCURRENCYRELATIONSHIP",3495092785:"IFCCURTAINWALL",1457835157:"IFCCURTAINWALLTYPE",2601014836:"IFCCURVE",2827736869:"IFCCURVEBOUNDEDPLANE",2629017746:"IFCCURVEBOUNDEDSURFACE",1186437898:"IFCCURVESEGMENT2D",3800577675:"IFCCURVESTYLE",1105321065:"IFCCURVESTYLEFONT",2367409068:"IFCCURVESTYLEFONTANDSCALING",3510044353:"IFCCURVESTYLEFONTPATTERN",1213902940:"IFCCYLINDRICALSURFACE",4074379575:"IFCDAMPER",3961806047:"IFCDAMPERTYPE",3426335179:"IFCDEEPFOUNDATION",1306400036:"IFCDEEPFOUNDATIONTYPE",3632507154:"IFCDERIVEDPROFILEDEF",1765591967:"IFCDERIVEDUNIT",1045800335:"IFCDERIVEDUNITELEMENT",2949456006:"IFCDIMENSIONALEXPONENTS",32440307:"IFCDIRECTION",1335981549:"IFCDISCRETEACCESSORY",2635815018:"IFCDISCRETEACCESSORYTYPE",1945343521:"IFCDISTANCEEXPRESSION",1052013943:"IFCDISTRIBUTIONCHAMBERELEMENT",1599208980:"IFCDISTRIBUTIONCHAMBERELEMENTTYPE",562808652:"IFCDISTRIBUTIONCIRCUIT",1062813311:"IFCDISTRIBUTIONCONTROLELEMENT",2063403501:"IFCDISTRIBUTIONCONTROLELEMENTTYPE",1945004755:"IFCDISTRIBUTIONELEMENT",3256556792:"IFCDISTRIBUTIONELEMENTTYPE",3040386961:"IFCDISTRIBUTIONFLOWELEMENT",3849074793:"IFCDISTRIBUTIONFLOWELEMENTTYPE",3041715199:"IFCDISTRIBUTIONPORT",3205830791:"IFCDISTRIBUTIONSYSTEM",1154170062:"IFCDOCUMENTINFORMATION",770865208:"IFCDOCUMENTINFORMATIONRELATIONSHIP",3732053477:"IFCDOCUMENTREFERENCE",395920057:"IFCDOOR",2963535650:"IFCDOORLININGPROPERTIES",1714330368:"IFCDOORPANELPROPERTIES",3242481149:"IFCDOORSTANDARDCASE",526551008:"IFCDOORSTYLE",2323601079:"IFCDOORTYPE",445594917:"IFCDRAUGHTINGPREDEFINEDCOLOUR",4006246654:"IFCDRAUGHTINGPREDEFINEDCURVEFONT",342316401:"IFCDUCTFITTING",869906466:"IFCDUCTFITTINGTYPE",3518393246:"IFCDUCTSEGMENT",3760055223:"IFCDUCTSEGMENTTYPE",1360408905:"IFCDUCTSILENCER",2030761528:"IFCDUCTSILENCERTYPE",3900360178:"IFCEDGE",476780140:"IFCEDGECURVE",1472233963:"IFCEDGELOOP",1904799276:"IFCELECTRICAPPLIANCE",663422040:"IFCELECTRICAPPLIANCETYPE",862014818:"IFCELECTRICDISTRIBUTIONBOARD",2417008758:"IFCELECTRICDISTRIBUTIONBOARDTYPE",3310460725:"IFCELECTRICFLOWSTORAGEDEVICE",3277789161:"IFCELECTRICFLOWSTORAGEDEVICETYPE",264262732:"IFCELECTRICGENERATOR",1534661035:"IFCELECTRICGENERATORTYPE",402227799:"IFCELECTRICMOTOR",1217240411:"IFCELECTRICMOTORTYPE",1003880860:"IFCELECTRICTIMECONTROL",712377611:"IFCELECTRICTIMECONTROLTYPE",1758889154:"IFCELEMENT",4123344466:"IFCELEMENTASSEMBLY",2397081782:"IFCELEMENTASSEMBLYTYPE",1623761950:"IFCELEMENTCOMPONENT",2590856083:"IFCELEMENTCOMPONENTTYPE",1883228015:"IFCELEMENTQUANTITY",339256511:"IFCELEMENTTYPE",2777663545:"IFCELEMENTARYSURFACE",1704287377:"IFCELLIPSE",2835456948:"IFCELLIPSEPROFILEDEF",1658829314:"IFCENERGYCONVERSIONDEVICE",2107101300:"IFCENERGYCONVERSIONDEVICETYPE",2814081492:"IFCENGINE",132023988:"IFCENGINETYPE",3747195512:"IFCEVAPORATIVECOOLER",3174744832:"IFCEVAPORATIVECOOLERTYPE",484807127:"IFCEVAPORATOR",3390157468:"IFCEVAPORATORTYPE",4148101412:"IFCEVENT",211053100:"IFCEVENTTIME",4024345920:"IFCEVENTTYPE",297599258:"IFCEXTENDEDPROPERTIES",4294318154:"IFCEXTERNALINFORMATION",3200245327:"IFCEXTERNALREFERENCE",1437805879:"IFCEXTERNALREFERENCERELATIONSHIP",1209101575:"IFCEXTERNALSPATIALELEMENT",2853485674:"IFCEXTERNALSPATIALSTRUCTUREELEMENT",2242383968:"IFCEXTERNALLYDEFINEDHATCHSTYLE",1040185647:"IFCEXTERNALLYDEFINEDSURFACESTYLE",3548104201:"IFCEXTERNALLYDEFINEDTEXTFONT",477187591:"IFCEXTRUDEDAREASOLID",2804161546:"IFCEXTRUDEDAREASOLIDTAPERED",2556980723:"IFCFACE",2047409740:"IFCFACEBASEDSURFACEMODEL",1809719519:"IFCFACEBOUND",803316827:"IFCFACEOUTERBOUND",3008276851:"IFCFACESURFACE",807026263:"IFCFACETEDBREP",3737207727:"IFCFACETEDBREPWITHVOIDS",24185140:"IFCFACILITY",1310830890:"IFCFACILITYPART",4219587988:"IFCFAILURECONNECTIONCONDITION",3415622556:"IFCFAN",346874300:"IFCFANTYPE",647756555:"IFCFASTENER",2489546625:"IFCFASTENERTYPE",2827207264:"IFCFEATUREELEMENT",2143335405:"IFCFEATUREELEMENTADDITION",1287392070:"IFCFEATUREELEMENTSUBTRACTION",738692330:"IFCFILLAREASTYLE",374418227:"IFCFILLAREASTYLEHATCHING",315944413:"IFCFILLAREASTYLETILES",819412036:"IFCFILTER",1810631287:"IFCFILTERTYPE",1426591983:"IFCFIRESUPPRESSIONTERMINAL",4222183408:"IFCFIRESUPPRESSIONTERMINALTYPE",2652556860:"IFCFIXEDREFERENCESWEPTAREASOLID",2058353004:"IFCFLOWCONTROLLER",3907093117:"IFCFLOWCONTROLLERTYPE",4278956645:"IFCFLOWFITTING",3198132628:"IFCFLOWFITTINGTYPE",182646315:"IFCFLOWINSTRUMENT",4037862832:"IFCFLOWINSTRUMENTTYPE",2188021234:"IFCFLOWMETER",3815607619:"IFCFLOWMETERTYPE",3132237377:"IFCFLOWMOVINGDEVICE",1482959167:"IFCFLOWMOVINGDEVICETYPE",987401354:"IFCFLOWSEGMENT",1834744321:"IFCFLOWSEGMENTTYPE",707683696:"IFCFLOWSTORAGEDEVICE",1339347760:"IFCFLOWSTORAGEDEVICETYPE",2223149337:"IFCFLOWTERMINAL",2297155007:"IFCFLOWTERMINALTYPE",3508470533:"IFCFLOWTREATMENTDEVICE",3009222698:"IFCFLOWTREATMENTDEVICETYPE",900683007:"IFCFOOTING",1893162501:"IFCFOOTINGTYPE",263784265:"IFCFURNISHINGELEMENT",4238390223:"IFCFURNISHINGELEMENTTYPE",1509553395:"IFCFURNITURE",1268542332:"IFCFURNITURETYPE",3493046030:"IFCGEOGRAPHICELEMENT",4095422895:"IFCGEOGRAPHICELEMENTTYPE",987898635:"IFCGEOMETRICCURVESET",3448662350:"IFCGEOMETRICREPRESENTATIONCONTEXT",2453401579:"IFCGEOMETRICREPRESENTATIONITEM",4142052618:"IFCGEOMETRICREPRESENTATIONSUBCONTEXT",3590301190:"IFCGEOMETRICSET",3009204131:"IFCGRID",852622518:"IFCGRIDAXIS",178086475:"IFCGRIDPLACEMENT",2706460486:"IFCGROUP",812098782:"IFCHALFSPACESOLID",3319311131:"IFCHEATEXCHANGER",1251058090:"IFCHEATEXCHANGERTYPE",2068733104:"IFCHUMIDIFIER",1806887404:"IFCHUMIDIFIERTYPE",1484403080:"IFCISHAPEPROFILEDEF",3905492369:"IFCIMAGETEXTURE",3570813810:"IFCINDEXEDCOLOURMAP",2571569899:"IFCINDEXEDPOLYCURVE",178912537:"IFCINDEXEDPOLYGONALFACE",2294589976:"IFCINDEXEDPOLYGONALFACEWITHVOIDS",1437953363:"IFCINDEXEDTEXTUREMAP",2133299955:"IFCINDEXEDTRIANGLETEXTUREMAP",4175244083:"IFCINTERCEPTOR",3946677679:"IFCINTERCEPTORTYPE",3113134337:"IFCINTERSECTIONCURVE",2391368822:"IFCINVENTORY",3741457305:"IFCIRREGULARTIMESERIES",3020489413:"IFCIRREGULARTIMESERIESVALUE",2176052936:"IFCJUNCTIONBOX",4288270099:"IFCJUNCTIONBOXTYPE",572779678:"IFCLSHAPEPROFILEDEF",3827777499:"IFCLABORRESOURCE",428585644:"IFCLABORRESOURCETYPE",1585845231:"IFCLAGTIME",76236018:"IFCLAMP",1051575348:"IFCLAMPTYPE",2655187982:"IFCLIBRARYINFORMATION",3452421091:"IFCLIBRARYREFERENCE",4162380809:"IFCLIGHTDISTRIBUTIONDATA",629592764:"IFCLIGHTFIXTURE",1161773419:"IFCLIGHTFIXTURETYPE",1566485204:"IFCLIGHTINTENSITYDISTRIBUTION",1402838566:"IFCLIGHTSOURCE",125510826:"IFCLIGHTSOURCEAMBIENT",2604431987:"IFCLIGHTSOURCEDIRECTIONAL",4266656042:"IFCLIGHTSOURCEGONIOMETRIC",1520743889:"IFCLIGHTSOURCEPOSITIONAL",3422422726:"IFCLIGHTSOURCESPOT",1281925730:"IFCLINE",3092502836:"IFCLINESEGMENT2D",388784114:"IFCLINEARPLACEMENT",1154579445:"IFCLINEARPOSITIONINGELEMENT",2624227202:"IFCLOCALPLACEMENT",1008929658:"IFCLOOP",1425443689:"IFCMANIFOLDSOLIDBREP",3057273783:"IFCMAPCONVERSION",2347385850:"IFCMAPPEDITEM",1838606355:"IFCMATERIAL",1847130766:"IFCMATERIALCLASSIFICATIONRELATIONSHIP",3708119e3:"IFCMATERIALCONSTITUENT",2852063980:"IFCMATERIALCONSTITUENTSET",760658860:"IFCMATERIALDEFINITION",2022407955:"IFCMATERIALDEFINITIONREPRESENTATION",248100487:"IFCMATERIALLAYER",3303938423:"IFCMATERIALLAYERSET",1303795690:"IFCMATERIALLAYERSETUSAGE",1847252529:"IFCMATERIALLAYERWITHOFFSETS",2199411900:"IFCMATERIALLIST",2235152071:"IFCMATERIALPROFILE",164193824:"IFCMATERIALPROFILESET",3079605661:"IFCMATERIALPROFILESETUSAGE",3404854881:"IFCMATERIALPROFILESETUSAGETAPERING",552965576:"IFCMATERIALPROFILEWITHOFFSETS",3265635763:"IFCMATERIALPROPERTIES",853536259:"IFCMATERIALRELATIONSHIP",1507914824:"IFCMATERIALUSAGEDEFINITION",2597039031:"IFCMEASUREWITHUNIT",377706215:"IFCMECHANICALFASTENER",2108223431:"IFCMECHANICALFASTENERTYPE",1437502449:"IFCMEDICALDEVICE",1114901282:"IFCMEDICALDEVICETYPE",1073191201:"IFCMEMBER",1911478936:"IFCMEMBERSTANDARDCASE",3181161470:"IFCMEMBERTYPE",3368373690:"IFCMETRIC",2998442950:"IFCMIRROREDPROFILEDEF",2706619895:"IFCMONETARYUNIT",2474470126:"IFCMOTORCONNECTION",977012517:"IFCMOTORCONNECTIONTYPE",1918398963:"IFCNAMEDUNIT",3888040117:"IFCOBJECT",219451334:"IFCOBJECTDEFINITION",3701648758:"IFCOBJECTPLACEMENT",2251480897:"IFCOBJECTIVE",4143007308:"IFCOCCUPANT",590820931:"IFCOFFSETCURVE",3388369263:"IFCOFFSETCURVE2D",3505215534:"IFCOFFSETCURVE3D",2485787929:"IFCOFFSETCURVEBYDISTANCES",2665983363:"IFCOPENSHELL",3588315303:"IFCOPENINGELEMENT",3079942009:"IFCOPENINGSTANDARDCASE",4251960020:"IFCORGANIZATION",1411181986:"IFCORGANIZATIONRELATIONSHIP",643959842:"IFCORIENTATIONEXPRESSION",1029017970:"IFCORIENTEDEDGE",144952367:"IFCOUTERBOUNDARYCURVE",3694346114:"IFCOUTLET",2837617999:"IFCOUTLETTYPE",1207048766:"IFCOWNERHISTORY",2529465313:"IFCPARAMETERIZEDPROFILEDEF",2519244187:"IFCPATH",1682466193:"IFCPCURVE",2382730787:"IFCPERFORMANCEHISTORY",3566463478:"IFCPERMEABLECOVERINGPROPERTIES",3327091369:"IFCPERMIT",2077209135:"IFCPERSON",101040310:"IFCPERSONANDORGANIZATION",3021840470:"IFCPHYSICALCOMPLEXQUANTITY",2483315170:"IFCPHYSICALQUANTITY",2226359599:"IFCPHYSICALSIMPLEQUANTITY",1687234759:"IFCPILE",1158309216:"IFCPILETYPE",310824031:"IFCPIPEFITTING",804291784:"IFCPIPEFITTINGTYPE",3612865200:"IFCPIPESEGMENT",4231323485:"IFCPIPESEGMENTTYPE",597895409:"IFCPIXELTEXTURE",2004835150:"IFCPLACEMENT",603570806:"IFCPLANARBOX",1663979128:"IFCPLANAREXTENT",220341763:"IFCPLANE",3171933400:"IFCPLATE",1156407060:"IFCPLATESTANDARDCASE",4017108033:"IFCPLATETYPE",2067069095:"IFCPOINT",4022376103:"IFCPOINTONCURVE",1423911732:"IFCPOINTONSURFACE",2924175390:"IFCPOLYLOOP",2775532180:"IFCPOLYGONALBOUNDEDHALFSPACE",2839578677:"IFCPOLYGONALFACESET",3724593414:"IFCPOLYLINE",3740093272:"IFCPORT",1946335990:"IFCPOSITIONINGELEMENT",3355820592:"IFCPOSTALADDRESS",759155922:"IFCPREDEFINEDCOLOUR",2559016684:"IFCPREDEFINEDCURVEFONT",3727388367:"IFCPREDEFINEDITEM",3778827333:"IFCPREDEFINEDPROPERTIES",3967405729:"IFCPREDEFINEDPROPERTYSET",1775413392:"IFCPREDEFINEDTEXTFONT",677532197:"IFCPRESENTATIONITEM",2022622350:"IFCPRESENTATIONLAYERASSIGNMENT",1304840413:"IFCPRESENTATIONLAYERWITHSTYLE",3119450353:"IFCPRESENTATIONSTYLE",2417041796:"IFCPRESENTATIONSTYLEASSIGNMENT",2744685151:"IFCPROCEDURE",569719735:"IFCPROCEDURETYPE",2945172077:"IFCPROCESS",4208778838:"IFCPRODUCT",673634403:"IFCPRODUCTDEFINITIONSHAPE",2095639259:"IFCPRODUCTREPRESENTATION",3958567839:"IFCPROFILEDEF",2802850158:"IFCPROFILEPROPERTIES",103090709:"IFCPROJECT",653396225:"IFCPROJECTLIBRARY",2904328755:"IFCPROJECTORDER",3843373140:"IFCPROJECTEDCRS",3651124850:"IFCPROJECTIONELEMENT",2598011224:"IFCPROPERTY",986844984:"IFCPROPERTYABSTRACTION",871118103:"IFCPROPERTYBOUNDEDVALUE",1680319473:"IFCPROPERTYDEFINITION",148025276:"IFCPROPERTYDEPENDENCYRELATIONSHIP",4166981789:"IFCPROPERTYENUMERATEDVALUE",3710013099:"IFCPROPERTYENUMERATION",2752243245:"IFCPROPERTYLISTVALUE",941946838:"IFCPROPERTYREFERENCEVALUE",1451395588:"IFCPROPERTYSET",3357820518:"IFCPROPERTYSETDEFINITION",492091185:"IFCPROPERTYSETTEMPLATE",3650150729:"IFCPROPERTYSINGLEVALUE",110355661:"IFCPROPERTYTABLEVALUE",3521284610:"IFCPROPERTYTEMPLATE",1482703590:"IFCPROPERTYTEMPLATEDEFINITION",738039164:"IFCPROTECTIVEDEVICE",2295281155:"IFCPROTECTIVEDEVICETRIPPINGUNIT",655969474:"IFCPROTECTIVEDEVICETRIPPINGUNITTYPE",1842657554:"IFCPROTECTIVEDEVICETYPE",3219374653:"IFCPROXY",90941305:"IFCPUMP",2250791053:"IFCPUMPTYPE",2044713172:"IFCQUANTITYAREA",2093928680:"IFCQUANTITYCOUNT",931644368:"IFCQUANTITYLENGTH",2090586900:"IFCQUANTITYSET",3252649465:"IFCQUANTITYTIME",2405470396:"IFCQUANTITYVOLUME",825690147:"IFCQUANTITYWEIGHT",2262370178:"IFCRAILING",2893384427:"IFCRAILINGTYPE",3024970846:"IFCRAMP",3283111854:"IFCRAMPFLIGHT",2324767716:"IFCRAMPFLIGHTTYPE",1469900589:"IFCRAMPTYPE",1232101972:"IFCRATIONALBSPLINECURVEWITHKNOTS",683857671:"IFCRATIONALBSPLINESURFACEWITHKNOTS",2770003689:"IFCRECTANGLEHOLLOWPROFILEDEF",3615266464:"IFCRECTANGLEPROFILEDEF",2798486643:"IFCRECTANGULARPYRAMID",3454111270:"IFCRECTANGULARTRIMMEDSURFACE",3915482550:"IFCRECURRENCEPATTERN",2433181523:"IFCREFERENCE",4021432810:"IFCREFERENT",3413951693:"IFCREGULARTIMESERIES",1580146022:"IFCREINFORCEMENTBARPROPERTIES",3765753017:"IFCREINFORCEMENTDEFINITIONPROPERTIES",979691226:"IFCREINFORCINGBAR",2572171363:"IFCREINFORCINGBARTYPE",3027567501:"IFCREINFORCINGELEMENT",964333572:"IFCREINFORCINGELEMENTTYPE",2320036040:"IFCREINFORCINGMESH",2310774935:"IFCREINFORCINGMESHTYPE",160246688:"IFCRELAGGREGATES",3939117080:"IFCRELASSIGNS",1683148259:"IFCRELASSIGNSTOACTOR",2495723537:"IFCRELASSIGNSTOCONTROL",1307041759:"IFCRELASSIGNSTOGROUP",1027710054:"IFCRELASSIGNSTOGROUPBYFACTOR",4278684876:"IFCRELASSIGNSTOPROCESS",2857406711:"IFCRELASSIGNSTOPRODUCT",205026976:"IFCRELASSIGNSTORESOURCE",1865459582:"IFCRELASSOCIATES",4095574036:"IFCRELASSOCIATESAPPROVAL",919958153:"IFCRELASSOCIATESCLASSIFICATION",2728634034:"IFCRELASSOCIATESCONSTRAINT",982818633:"IFCRELASSOCIATESDOCUMENT",3840914261:"IFCRELASSOCIATESLIBRARY",2655215786:"IFCRELASSOCIATESMATERIAL",826625072:"IFCRELCONNECTS",1204542856:"IFCRELCONNECTSELEMENTS",3945020480:"IFCRELCONNECTSPATHELEMENTS",4201705270:"IFCRELCONNECTSPORTTOELEMENT",3190031847:"IFCRELCONNECTSPORTS",2127690289:"IFCRELCONNECTSSTRUCTURALACTIVITY",1638771189:"IFCRELCONNECTSSTRUCTURALMEMBER",504942748:"IFCRELCONNECTSWITHECCENTRICITY",3678494232:"IFCRELCONNECTSWITHREALIZINGELEMENTS",3242617779:"IFCRELCONTAINEDINSPATIALSTRUCTURE",886880790:"IFCRELCOVERSBLDGELEMENTS",2802773753:"IFCRELCOVERSSPACES",2565941209:"IFCRELDECLARES",2551354335:"IFCRELDECOMPOSES",693640335:"IFCRELDEFINES",1462361463:"IFCRELDEFINESBYOBJECT",4186316022:"IFCRELDEFINESBYPROPERTIES",307848117:"IFCRELDEFINESBYTEMPLATE",781010003:"IFCRELDEFINESBYTYPE",3940055652:"IFCRELFILLSELEMENT",279856033:"IFCRELFLOWCONTROLELEMENTS",427948657:"IFCRELINTERFERESELEMENTS",3268803585:"IFCRELNESTS",1441486842:"IFCRELPOSITIONS",750771296:"IFCRELPROJECTSELEMENT",1245217292:"IFCRELREFERENCEDINSPATIALSTRUCTURE",4122056220:"IFCRELSEQUENCE",366585022:"IFCRELSERVICESBUILDINGS",3451746338:"IFCRELSPACEBOUNDARY",3523091289:"IFCRELSPACEBOUNDARY1STLEVEL",1521410863:"IFCRELSPACEBOUNDARY2NDLEVEL",1401173127:"IFCRELVOIDSELEMENT",478536968:"IFCRELATIONSHIP",816062949:"IFCREPARAMETRISEDCOMPOSITECURVESEGMENT",1076942058:"IFCREPRESENTATION",3377609919:"IFCREPRESENTATIONCONTEXT",3008791417:"IFCREPRESENTATIONITEM",1660063152:"IFCREPRESENTATIONMAP",2914609552:"IFCRESOURCE",2943643501:"IFCRESOURCEAPPROVALRELATIONSHIP",1608871552:"IFCRESOURCECONSTRAINTRELATIONSHIP",2439245199:"IFCRESOURCELEVELRELATIONSHIP",1042787934:"IFCRESOURCETIME",1856042241:"IFCREVOLVEDAREASOLID",3243963512:"IFCREVOLVEDAREASOLIDTAPERED",4158566097:"IFCRIGHTCIRCULARCONE",3626867408:"IFCRIGHTCIRCULARCYLINDER",2016517767:"IFCROOF",2781568857:"IFCROOFTYPE",2341007311:"IFCROOT",2778083089:"IFCROUNDEDRECTANGLEPROFILEDEF",448429030:"IFCSIUNIT",3053780830:"IFCSANITARYTERMINAL",1768891740:"IFCSANITARYTERMINALTYPE",1054537805:"IFCSCHEDULINGTIME",2157484638:"IFCSEAMCURVE",2042790032:"IFCSECTIONPROPERTIES",4165799628:"IFCSECTIONREINFORCEMENTPROPERTIES",1862484736:"IFCSECTIONEDSOLID",1290935644:"IFCSECTIONEDSOLIDHORIZONTAL",1509187699:"IFCSECTIONEDSPINE",4086658281:"IFCSENSOR",1783015770:"IFCSENSORTYPE",1329646415:"IFCSHADINGDEVICE",4074543187:"IFCSHADINGDEVICETYPE",867548509:"IFCSHAPEASPECT",3982875396:"IFCSHAPEMODEL",4240577450:"IFCSHAPEREPRESENTATION",4124623270:"IFCSHELLBASEDSURFACEMODEL",3692461612:"IFCSIMPLEPROPERTY",3663146110:"IFCSIMPLEPROPERTYTEMPLATE",4097777520:"IFCSITE",1529196076:"IFCSLAB",3127900445:"IFCSLABELEMENTEDCASE",3027962421:"IFCSLABSTANDARDCASE",2533589738:"IFCSLABTYPE",2609359061:"IFCSLIPPAGECONNECTIONCONDITION",3420628829:"IFCSOLARDEVICE",1072016465:"IFCSOLARDEVICETYPE",723233188:"IFCSOLIDMODEL",3856911033:"IFCSPACE",1999602285:"IFCSPACEHEATER",1305183839:"IFCSPACEHEATERTYPE",3812236995:"IFCSPACETYPE",1412071761:"IFCSPATIALELEMENT",710998568:"IFCSPATIALELEMENTTYPE",2706606064:"IFCSPATIALSTRUCTUREELEMENT",3893378262:"IFCSPATIALSTRUCTUREELEMENTTYPE",463610769:"IFCSPATIALZONE",2481509218:"IFCSPATIALZONETYPE",451544542:"IFCSPHERE",4015995234:"IFCSPHERICALSURFACE",1404847402:"IFCSTACKTERMINAL",3112655638:"IFCSTACKTERMINALTYPE",331165859:"IFCSTAIR",4252922144:"IFCSTAIRFLIGHT",1039846685:"IFCSTAIRFLIGHTTYPE",338393293:"IFCSTAIRTYPE",682877961:"IFCSTRUCTURALACTION",3544373492:"IFCSTRUCTURALACTIVITY",2515109513:"IFCSTRUCTURALANALYSISMODEL",1179482911:"IFCSTRUCTURALCONNECTION",2273995522:"IFCSTRUCTURALCONNECTIONCONDITION",1004757350:"IFCSTRUCTURALCURVEACTION",4243806635:"IFCSTRUCTURALCURVECONNECTION",214636428:"IFCSTRUCTURALCURVEMEMBER",2445595289:"IFCSTRUCTURALCURVEMEMBERVARYING",2757150158:"IFCSTRUCTURALCURVEREACTION",3136571912:"IFCSTRUCTURALITEM",1807405624:"IFCSTRUCTURALLINEARACTION",2162789131:"IFCSTRUCTURALLOAD",385403989:"IFCSTRUCTURALLOADCASE",3478079324:"IFCSTRUCTURALLOADCONFIGURATION",1252848954:"IFCSTRUCTURALLOADGROUP",1595516126:"IFCSTRUCTURALLOADLINEARFORCE",609421318:"IFCSTRUCTURALLOADORRESULT",2668620305:"IFCSTRUCTURALLOADPLANARFORCE",2473145415:"IFCSTRUCTURALLOADSINGLEDISPLACEMENT",1973038258:"IFCSTRUCTURALLOADSINGLEDISPLACEMENTDISTORTION",1597423693:"IFCSTRUCTURALLOADSINGLEFORCE",1190533807:"IFCSTRUCTURALLOADSINGLEFORCEWARPING",2525727697:"IFCSTRUCTURALLOADSTATIC",3408363356:"IFCSTRUCTURALLOADTEMPERATURE",530289379:"IFCSTRUCTURALMEMBER",1621171031:"IFCSTRUCTURALPLANARACTION",2082059205:"IFCSTRUCTURALPOINTACTION",734778138:"IFCSTRUCTURALPOINTCONNECTION",1235345126:"IFCSTRUCTURALPOINTREACTION",3689010777:"IFCSTRUCTURALREACTION",2986769608:"IFCSTRUCTURALRESULTGROUP",3657597509:"IFCSTRUCTURALSURFACEACTION",1975003073:"IFCSTRUCTURALSURFACECONNECTION",3979015343:"IFCSTRUCTURALSURFACEMEMBER",2218152070:"IFCSTRUCTURALSURFACEMEMBERVARYING",603775116:"IFCSTRUCTURALSURFACEREACTION",2830218821:"IFCSTYLEMODEL",3958052878:"IFCSTYLEDITEM",3049322572:"IFCSTYLEDREPRESENTATION",148013059:"IFCSUBCONTRACTRESOURCE",4095615324:"IFCSUBCONTRACTRESOURCETYPE",2233826070:"IFCSUBEDGE",2513912981:"IFCSURFACE",699246055:"IFCSURFACECURVE",2028607225:"IFCSURFACECURVESWEPTAREASOLID",3101698114:"IFCSURFACEFEATURE",2809605785:"IFCSURFACEOFLINEAREXTRUSION",4124788165:"IFCSURFACEOFREVOLUTION",2934153892:"IFCSURFACEREINFORCEMENTAREA",1300840506:"IFCSURFACESTYLE",3303107099:"IFCSURFACESTYLELIGHTING",1607154358:"IFCSURFACESTYLEREFRACTION",1878645084:"IFCSURFACESTYLERENDERING",846575682:"IFCSURFACESTYLESHADING",1351298697:"IFCSURFACESTYLEWITHTEXTURES",626085974:"IFCSURFACETEXTURE",2247615214:"IFCSWEPTAREASOLID",1260650574:"IFCSWEPTDISKSOLID",1096409881:"IFCSWEPTDISKSOLIDPOLYGONAL",230924584:"IFCSWEPTSURFACE",1162798199:"IFCSWITCHINGDEVICE",2315554128:"IFCSWITCHINGDEVICETYPE",2254336722:"IFCSYSTEM",413509423:"IFCSYSTEMFURNITUREELEMENT",1580310250:"IFCSYSTEMFURNITUREELEMENTTYPE",3071757647:"IFCTSHAPEPROFILEDEF",985171141:"IFCTABLE",2043862942:"IFCTABLECOLUMN",531007025:"IFCTABLEROW",812556717:"IFCTANK",5716631:"IFCTANKTYPE",3473067441:"IFCTASK",1549132990:"IFCTASKTIME",2771591690:"IFCTASKTIMERECURRING",3206491090:"IFCTASKTYPE",912023232:"IFCTELECOMADDRESS",3824725483:"IFCTENDON",2347447852:"IFCTENDONANCHOR",3081323446:"IFCTENDONANCHORTYPE",3663046924:"IFCTENDONCONDUIT",2281632017:"IFCTENDONCONDUITTYPE",2415094496:"IFCTENDONTYPE",2387106220:"IFCTESSELLATEDFACESET",901063453:"IFCTESSELLATEDITEM",4282788508:"IFCTEXTLITERAL",3124975700:"IFCTEXTLITERALWITHEXTENT",1447204868:"IFCTEXTSTYLE",1983826977:"IFCTEXTSTYLEFONTMODEL",2636378356:"IFCTEXTSTYLEFORDEFINEDFONT",1640371178:"IFCTEXTSTYLETEXTMODEL",280115917:"IFCTEXTURECOORDINATE",1742049831:"IFCTEXTURECOORDINATEGENERATOR",2552916305:"IFCTEXTUREMAP",1210645708:"IFCTEXTUREVERTEX",3611470254:"IFCTEXTUREVERTEXLIST",1199560280:"IFCTIMEPERIOD",3101149627:"IFCTIMESERIES",581633288:"IFCTIMESERIESVALUE",1377556343:"IFCTOPOLOGICALREPRESENTATIONITEM",1735638870:"IFCTOPOLOGYREPRESENTATION",1935646853:"IFCTOROIDALSURFACE",3825984169:"IFCTRANSFORMER",1692211062:"IFCTRANSFORMERTYPE",2595432518:"IFCTRANSITIONCURVESEGMENT2D",1620046519:"IFCTRANSPORTELEMENT",2097647324:"IFCTRANSPORTELEMENTTYPE",2715220739:"IFCTRAPEZIUMPROFILEDEF",2916149573:"IFCTRIANGULATEDFACESET",1229763772:"IFCTRIANGULATEDIRREGULARNETWORK",3593883385:"IFCTRIMMEDCURVE",3026737570:"IFCTUBEBUNDLE",1600972822:"IFCTUBEBUNDLETYPE",1628702193:"IFCTYPEOBJECT",3736923433:"IFCTYPEPROCESS",2347495698:"IFCTYPEPRODUCT",3698973494:"IFCTYPERESOURCE",427810014:"IFCUSHAPEPROFILEDEF",180925521:"IFCUNITASSIGNMENT",630975310:"IFCUNITARYCONTROLELEMENT",3179687236:"IFCUNITARYCONTROLELEMENTTYPE",4292641817:"IFCUNITARYEQUIPMENT",1911125066:"IFCUNITARYEQUIPMENTTYPE",4207607924:"IFCVALVE",728799441:"IFCVALVETYPE",1417489154:"IFCVECTOR",2799835756:"IFCVERTEX",2759199220:"IFCVERTEXLOOP",1907098498:"IFCVERTEXPOINT",1530820697:"IFCVIBRATIONDAMPER",3956297820:"IFCVIBRATIONDAMPERTYPE",2391383451:"IFCVIBRATIONISOLATOR",3313531582:"IFCVIBRATIONISOLATORTYPE",2769231204:"IFCVIRTUALELEMENT",891718957:"IFCVIRTUALGRIDINTERSECTION",926996030:"IFCVOIDINGFEATURE",2391406946:"IFCWALL",4156078855:"IFCWALLELEMENTEDCASE",3512223829:"IFCWALLSTANDARDCASE",1898987631:"IFCWALLTYPE",4237592921:"IFCWASTETERMINAL",1133259667:"IFCWASTETERMINALTYPE",3304561284:"IFCWINDOW",336235671:"IFCWINDOWLININGPROPERTIES",512836454:"IFCWINDOWPANELPROPERTIES",486154966:"IFCWINDOWSTANDARDCASE",1299126871:"IFCWINDOWSTYLE",4009809668:"IFCWINDOWTYPE",4088093105:"IFCWORKCALENDAR",1028945134:"IFCWORKCONTROL",4218914973:"IFCWORKPLAN",3342526732:"IFCWORKSCHEDULE",1236880293:"IFCWORKTIME",2543172580:"IFCZSHAPEPROFILEDEF",1033361043:"IFCZONE"},$k=class{constructor(r){this.state=r}getExpressId(r,e){if(!r.index)return;let i=r.index.array;return r.attributes[Kwe].getX(i[3*e])}getItemProperties(r,e,i=!1){return this.state.useJSON?Ur({},this.state.models[r].jsonData[e]):this.state.api.GetLine(r,e,i)}getAllItemsOfType(r,e,i){return this.state.useJSON?this.getAllItemsOfTypeJSON(r,e,i):this.getAllItemsOfTypeWebIfcAPI(r,e,i)}getPropertySets(r,e,i=!1){return this.state.useJSON?this.getPropertyJSON(r,e,i,jl.psets):this.getPropertyWebIfcAPI(r,e,i,jl.psets)}getTypeProperties(r,e,i=!1){return this.state.useJSON?this.getPropertyJSON(r,e,i,jl.type):this.getPropertyWebIfcAPI(r,e,i,jl.type)}getMaterialsProperties(r,e,i=!1){return this.state.useJSON?this.getPropertyJSON(r,e,i,jl.materials):this.getPropertyWebIfcAPI(r,e,i,jl.materials)}getSpatialStructure(r){return this.state.useJSON?this.getSpatialStructureJSON(r):this.getSpatialStructureWebIfcAPI(r)}getSpatialStructureJSON(r){let e=this.getSpatialTreeChunks(r),i=this.getAllItemsOfTypeJSON(r,tA,!1)[0],n=this.newIfcProject(i);return this.getSpatialNode(r,n,e),Ur({},n)}getSpatialStructureWebIfcAPI(r){let e=this.getSpatialTreeChunks(r),i=this.state.api.GetLineIDsWithType(r,tA).get(0),n=this.newIfcProject(i);return this.getSpatialNode(r,n,e),n}getAllItemsOfTypeJSON(r,e,i){let n=this.state.models[r].jsonData,s=k3t[e];if(!s)throw new Error(`Type not found: ${e}`);return this.filterJSONItemsByType(n,s,i)}filterJSONItemsByType(r,e,i){let n=[];return Object.keys(r).forEach(s=>{let a=parseInt(s);r[a].type.toUpperCase()===e&&n.push(i?Ur({},r[a]):a)}),n}getItemsByIDJSON(r,e){let i=this.state.models[r].jsonData,n=[];return e.forEach(s=>n.push(Ur({},i[s]))),n}getPropertyJSON(r,e,i=!1,n){let s=this.getAllRelatedItemsOfTypeJSON(r,e,n),a=this.getItemsByIDJSON(r,s);return i&&a.forEach(o=>this.getJSONReferencesRecursively(r,o)),a}getJSONReferencesRecursively(r,e){if(e==null)return;let i=Object.keys(e);for(let n=0;n<i.length;n++){let s=i[n];this.getJSONItem(r,e,s)}}getJSONItem(r,e,i){if(Array.isArray(e[i]))return this.getMultipleJSONItems(r,e,i);e[i]&&e[i].type===5&&(e[i]=this.getItemsByIDJSON(r,[e[i].value])[0],this.getJSONReferencesRecursively(r,e[i]))}getMultipleJSONItems(r,e,i){e[i]=e[i].map(n=>(n.type===5&&(n=this.getItemsByIDJSON(r,[n.value])[0],this.getJSONReferencesRecursively(r,n)),n))}getPropertyWebIfcAPI(r,e,i=!1,n){return this.getAllRelatedItemsOfTypeWebIfcAPI(r,e,n).map(a=>this.state.api.GetLine(r,a,i))}getAllItemsOfTypeWebIfcAPI(r,e,i){let n=[],s=this.state.api.GetLineIDsWithType(r,e);for(let a=0;a<s.size();a++)n.push(s.get(a));return i?n.map(a=>this.state.api.GetLine(r,a)):n}newIfcProject(r){return{expressID:r,type:"IFCPROJECT",children:[]}}getSpatialTreeChunks(r){let e={};return this.state.useJSON?(this.getChunksJSON(r,e,jl.aggregates),this.getChunksJSON(r,e,jl.spatial)):(this.getChunksWebIfcAPI(r,e,jl.aggregates),this.getChunksWebIfcAPI(r,e,jl.spatial)),e}getChunksJSON(r,e,i){this.getAllItemsOfTypeJSON(r,i.name,!0).forEach(s=>{this.saveChunk(e,i,s)})}getChunksWebIfcAPI(r,e,i){let n=this.state.api.GetLineIDsWithType(r,i.name);for(let s=0;s<n.size();s++){let a=this.state.api.GetLine(r,n.get(s),!1);this.saveChunk(e,i,a)}}saveChunk(r,e,i){let n=i[e.relating].value,s=i[e.related].map(a=>a.value);r[n]==null?r[n]=s:r[n]=r[n].concat(s)}getSpatialNode(r,e,i){this.getChildren(r,e,i,jl.aggregates),this.getChildren(r,e,i,jl.spatial)}getChildren(r,e,i,n){let s=i[e.expressID];if(s==null)return;let a=n.key;e[a]=s.map(o=>{let l=this.newNode(r,o);return this.getSpatialNode(r,l,i),l})}newNode(r,e){let i=this.getNodeType(r,e);return{expressID:e,type:i,children:[]}}getNodeType(r,e){if(this.state.useJSON)return this.state.models[r].jsonData[e].type;let i=this.state.models[r].types[e];return t8[i]}getAllRelatedItemsOfTypeJSON(r,e,i){let n=this.getAllItemsOfTypeJSON(r,i.name,!0),s=[];return n.forEach(a=>{this.isRelated(e,a,i)&&this.getRelated(a,i,s)}),s}getAllRelatedItemsOfTypeWebIfcAPI(r,e,i){let n=this.state.api.GetLineIDsWithType(r,i.name),s=[];for(let a=0;a<n.size();a++){let o=this.state.api.GetLine(r,n.get(a));this.isRelated(e,o,i)&&this.getRelated(o,i,s)}return s}getRelated(r,e,i){let n=r[e.relating];Array.isArray(n)?n.forEach(s=>i.push(s.value)):i.push(n.value)}isRelated(r,e,i){let n=e[i.related];return Array.isArray(n)?n.map(a=>a.value).includes(r):n.value===r}},Zk=class{constructor(r){this.state=r}getAllTypes(){for(let r in this.state.models){let e=this.state.models[r].types;Object.keys(e).length==0&&this.getAllTypesOfModel(parseInt(r))}}getAllTypesOfModel(r){let e=Object.keys(t8).map(n=>parseInt(n)),i=this.state.models[r].types;e.forEach(n=>{let s=this.state.api.GetLineIDsWithType(r,n);for(let a=0;a<s.size();a++)i[s.get(a)]=n})}},G3t=0,ta="IfcManager is null!",Kk=class extends Je{constructor(){super(...arguments),this.modelID=G3t++,this.ifcManager=null,this.mesh=this}setIFCManager(r){this.ifcManager=r}setWasmPath(r){if(this.ifcManager===null)throw new Error(ta);this.ifcManager.setWasmPath(r)}close(r){if(this.ifcManager===null)throw new Error(ta);this.ifcManager.close(this.modelID,r)}getExpressId(r,e){if(this.ifcManager===null)throw new Error(ta);return this.ifcManager.getExpressId(r,e)}getAllItemsOfType(r,e){if(this.ifcManager===null)throw new Error(ta);return this.ifcManager.getAllItemsOfType(this.modelID,r,e)}getItemProperties(r,e=!1){if(this.ifcManager===null)throw new Error(ta);return this.ifcManager.getItemProperties(this.modelID,r,e)}getPropertySets(r,e=!1){if(this.ifcManager===null)throw new Error(ta);return this.ifcManager.getPropertySets(this.modelID,r,e)}getTypeProperties(r,e=!1){if(this.ifcManager===null)throw new Error(ta);return this.ifcManager.getTypeProperties(this.modelID,r,e)}getIfcType(r){if(this.ifcManager===null)throw new Error(ta);return this.ifcManager.getIfcType(this.modelID,r)}getSpatialStructure(){if(this.ifcManager===null)throw new Error(ta);return this.ifcManager.getSpatialStructure(this.modelID)}getSubset(r){if(this.ifcManager===null)throw new Error(ta);return this.ifcManager.getSubset(this.modelID,r)}removeSubset(r,e){if(this.ifcManager===null)throw new Error(ta);this.ifcManager.removeSubset(this.modelID,r,e)}createSubset(r){if(this.ifcManager===null)throw new Error(ta);let e=Mn(Ur({},r),{modelID:this.modelID});return this.ifcManager.createSubset(e)}hideItems(r){if(this.ifcManager===null)throw new Error(ta);this.ifcManager.hideItems(this.modelID,r)}hideAllItems(){if(this.ifcManager===null)throw new Error(ta);this.ifcManager.hideAllItems(this.modelID)}showItems(r){if(this.ifcManager===null)throw new Error(ta);this.ifcManager.showItems(this.modelID,r)}showAllItems(){if(this.ifcManager===null)throw new Error(ta);this.ifcManager.showAllItems(this.modelID)}},Jk=class{initializeMeshBVH(r,e,i){this.computeBoundsTree=r,this.disposeBoundsTree=e,this.acceleratedRaycast=i,this.setupThreeMeshBVH()}applyThreeMeshBVH(r){this.computeBoundsTree&&r.computeBoundsTree()}setupThreeMeshBVH(){!this.computeBoundsTree||!this.disposeBoundsTree||!this.acceleratedRaycast||(it.prototype.computeBoundsTree=this.computeBoundsTree,it.prototype.disposeBoundsTree=this.disposeBoundsTree,Je.prototype.raycast=this.acceleratedRaycast)}},Qk=class{constructor(r){this.modelCoordinates={},this.expressIDCoordinatesMap={},this.state=r}processCoordinates(r){let e=this.getAttributes(r),i=Array.from(e.expressID.array);this.expressIDCoordinatesMap[r]={};for(let n=0;n<i.length;n++)this.expressIDCoordinatesMap[r][i[n]]||(this.expressIDCoordinatesMap[r][i[n]]=[]),this.expressIDCoordinatesMap[r][i[n]].push(3*n);this.initializeCoordinates(r)}hideItems(r,e){this.editCoordinates(r,e,!0)}showItems(r,e){this.editCoordinates(r,e,!1)}editCoordinates(r,e,i){let n=this.expressIDCoordinatesMap[r],s=[];e.forEach(l=>{n[l]&&s.push(...n[l])});let a=this.getCoordinates(r),o=this.modelCoordinates[r];i?s.forEach(l=>a.set([0,0,0],l)):s.forEach(l=>a.set([o[l],o[l+1],o[l+2]],l)),this.getAttributes(r).position.needsUpdate=!0}showAllItems(r){this.modelCoordinates[r]&&(this.resetCoordinates(r),this.getAttributes(r).position.needsUpdate=!0)}hideAllItems(r){this.getCoordinates(r).fill(0),this.getAttributes(r).position.needsUpdate=!0}initializeCoordinates(r){let e=this.getCoordinates(r);this.modelCoordinates[r]||(this.modelCoordinates[r]=new Float32Array(e))}resetCoordinates(r){let e=this.modelCoordinates[r];this.getCoordinates(r).set(e)}getCoordinates(r){return this.getAttributes(r).position.array}getAttributes(r){return this.state.models[r].mesh.geometry.attributes}},e8=class{constructor(){this.state={models:[],api:new Wk,useJSON:!1},this.BVH=new Jk,this.parser=new Yk(this.state,this.BVH),this.subsets=new Xk(this.state,this.BVH),this.properties=new $k(this.state),this.types=new Zk(this.state),this.hider=new Qk(this.state)}parse(r){return ot(this,null,function*(){let e=yield this.parser.parse(r);this.state.useJSON?this.disposeMemory():this.types.getAllTypes(),this.hider.processCoordinates(e.modelID);let i=new Kk(e.geometry,e.material);return i.setIFCManager(this),i})}setWasmPath(r){this.state.api.SetWasmPath(r)}applyWebIfcConfig(r){this.state.webIfcSettings=r}useJSONData(r=!0){this.state.useJSON=r,this.disposeMemory()}addModelJSONData(r,e){let i=this.state.models[r];i&&(i.jsonData=e)}disposeMemory(){this.state.api=null,this.state.api=new Wk}setupThreeMeshBVH(r,e,i){this.BVH.initializeMeshBVH(r,e,i)}close(r,e){this.state.api.CloseModel(r),e&&e.remove(this.state.models[r].mesh),delete this.state.models[r]}getExpressId(r,e){return this.properties.getExpressId(r,e)}getAllItemsOfType(r,e,i){return this.properties.getAllItemsOfType(r,e,i)}getItemProperties(r,e,i=!1){return this.properties.getItemProperties(r,e,i)}getPropertySets(r,e,i=!1){return this.properties.getPropertySets(r,e,i)}getTypeProperties(r,e,i=!1){return this.properties.getTypeProperties(r,e,i)}getMaterialsProperties(r,e,i=!1){return this.properties.getMaterialsProperties(r,e,i)}getIfcType(r,e){let i=this.state.models[r].types[e];return t8[i]}getSpatialStructure(r){return this.properties.getSpatialStructure(r)}getSubset(r,e){return this.subsets.getSubset(r,e)}removeSubset(r,e,i){this.subsets.removeSubset(r,e,i)}createSubset(r){return this.subsets.createSubset(r)}hideItems(r,e){this.hider.hideItems(r,e)}hideAllItems(r){this.hider.hideAllItems(r)}showItems(r,e){this.hider.showItems(r,e)}showAllItems(r){this.hider.showAllItems(r)}},MA=class extends li{constructor(r){super(r),this.ifcManager=new e8}load(r,e,i,n){let s=this,a=new ci(s.manager);a.setPath(s.path),a.setResponseType("arraybuffer"),a.setRequestHeader(s.requestHeader),a.setWithCredentials(s.withCredentials),a.load(r,function(o){return ot(this,null,function*(){try{if(typeof o=="string")throw new Error("IFC files must be given as a buffer!");e(yield s.parse(o))}catch(l){n?n(l):console.error(l),s.manager.itemError(r)}})},i,n)}parse(r){return this.ifcManager.parse(r)}};var DA=class extends li{constructor(r){super(r)}load(r,e,i,n){let s=this,a=this.path===""?ks.extractUrlBase(r):this.path,o=new ci(this.manager);o.setPath(this.path),o.setRequestHeader(this.requestHeader),o.setWithCredentials(this.withCredentials),o.load(r,function(l){try{e(s.parse(l,a))}catch(c){n?n(c):console.error(c),s.manager.itemError(r)}},i,n)}setMaterialOptions(r){return this.materialOptions=r,this}parse(r,e){let i=r.split(`
|
||
`),n={},s=/\s+/,a={};for(let l=0;l<i.length;l++){let c=i[l];if(c=c.trim(),c.length===0||c.charAt(0)==="#")continue;let u=c.indexOf(" "),h=u>=0?c.substring(0,u):c;h=h.toLowerCase();let p=u>=0?c.substring(u+1):"";if(p=p.trim(),h==="newmtl")n={name:p},a[p]=n;else if(h==="ka"||h==="kd"||h==="ks"||h==="ke"){let d=p.split(s,3);n[h]=[parseFloat(d[0]),parseFloat(d[1]),parseFloat(d[2])]}else n[h]=p}let o=new r8(this.resourcePath||e,this.materialOptions);return o.setCrossOrigin(this.crossOrigin),o.setManager(this.manager),o.setMaterials(a),o}},r8=class{constructor(r="",e={}){this.baseUrl=r,this.options=e,this.materialsInfo={},this.materials={},this.materialsArray=[],this.nameLookup={},this.crossOrigin="anonymous",this.side=this.options.side!==void 0?this.options.side:en,this.wrap=this.options.wrap!==void 0?this.options.wrap:gn}setCrossOrigin(r){return this.crossOrigin=r,this}setManager(r){this.manager=r}setMaterials(r){this.materialsInfo=this.convert(r),this.materials={},this.materialsArray=[],this.nameLookup={}}convert(r){if(!this.options)return r;let e={};for(let i in r){let n=r[i],s={};e[i]=s;for(let a in n){let o=!0,l=n[a],c=a.toLowerCase();switch(c){case"kd":case"ka":case"ks":this.options&&this.options.normalizeRGB&&(l=[l[0]/255,l[1]/255,l[2]/255]),this.options&&this.options.ignoreZeroRGBs&&l[0]===0&&l[1]===0&&l[2]===0&&(o=!1);break;default:break}o&&(s[c]=l)}}return e}preload(){for(let r in this.materialsInfo)this.create(r)}getIndex(r){return this.nameLookup[r]}getAsArray(){let r=0;for(let e in this.materialsInfo)this.materialsArray[r]=this.create(e),this.nameLookup[e]=r,r++;return this.materialsArray}create(r){return this.materials[r]===void 0&&this.createMaterial_(r),this.materials[r]}createMaterial_(r){let e=this,i=this.materialsInfo[r],n={name:r,side:this.side};function s(o,l){return typeof l!="string"||l===""?"":/^https?:\/\//i.test(l)?l:o+l}function a(o,l){if(n[o])return;let c=e.getTextureParams(l,n),u=e.loadTexture(s(e.baseUrl,c.url));u.repeat.copy(c.scale),u.offset.copy(c.offset),u.wrapS=e.wrap,u.wrapT=e.wrap,(o==="map"||o==="emissiveMap")&&(u.encoding=yr),n[o]=u}for(let o in i){let l=i[o],c;if(l!=="")switch(o.toLowerCase()){case"kd":n.color=new Ve().fromArray(l).convertSRGBToLinear();break;case"ks":n.specular=new Ve().fromArray(l).convertSRGBToLinear();break;case"ke":n.emissive=new Ve().fromArray(l).convertSRGBToLinear();break;case"map_kd":a("map",l);break;case"map_ks":a("specularMap",l);break;case"map_ke":a("emissiveMap",l);break;case"norm":a("normalMap",l);break;case"map_bump":case"bump":a("bumpMap",l);break;case"map_d":a("alphaMap",l),n.transparent=!0;break;case"ns":n.shininess=parseFloat(l);break;case"d":c=parseFloat(l),c<1&&(n.opacity=c,n.transparent=!0);break;case"tr":c=parseFloat(l),this.options&&this.options.invertTrProperty&&(c=1-c),c>0&&(n.opacity=1-c,n.transparent=!0);break;default:break}}return this.materials[r]=new Ts(n),this.materials[r]}getTextureParams(r,e){let i={scale:new le(1,1),offset:new le(0,0)},n=r.split(/\s+/),s;return s=n.indexOf("-bm"),s>=0&&(e.bumpScale=parseFloat(n[s+1]),n.splice(s,2)),s=n.indexOf("-s"),s>=0&&(i.scale.set(parseFloat(n[s+1]),parseFloat(n[s+2])),n.splice(s,4)),s=n.indexOf("-o"),s>=0&&(i.offset.set(parseFloat(n[s+1]),parseFloat(n[s+2])),n.splice(s,4)),i.url=n.join(" ").trim(),i}loadTexture(r,e,i,n,s){let a=this.manager!==void 0?this.manager:oo,o=a.getHandler(r);o===null&&(o=new Es(a)),o.setCrossOrigin&&o.setCrossOrigin(this.crossOrigin);let l=o.load(r,i,n,s);return e!==void 0&&(l.mapping=e),l}};var V3t=/^[og]\s*(.+)?/,z3t=/^mtllib /,j3t=/^usemtl /,W3t=/^usemap /,Jwe=/\s+/,Qwe=new A,i8=new A,eRe=new A,tRe=new A,Wl=new A,CA=new Ve;function q3t(){let t={objects:[],object:{},vertices:[],normals:[],colors:[],uvs:[],materials:{},materialLibraries:[],startObject:function(r,e){if(this.object&&this.object.fromDeclaration===!1){this.object.name=r,this.object.fromDeclaration=e!==!1;return}let i=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:r||"",fromDeclaration:e!==!1,geometry:{vertices:[],normals:[],colors:[],uvs:[],hasUVIndices:!1},materials:[],smooth:!0,startMaterial:function(n,s){let a=this._finalize(!1);a&&(a.inherited||a.groupCount<=0)&&this.materials.splice(a.index,1);let o={index:this.materials.length,name:n||"",mtllib:Array.isArray(s)&&s.length>0?s[s.length-1]:"",smooth:a!==void 0?a.smooth:this.smooth,groupStart:a!==void 0?a.groupEnd:0,groupEnd:-1,groupCount:-1,inherited:!1,clone:function(l){let c={index:typeof l=="number"?l:this.index,name:this.name,mtllib:this.mtllib,smooth:this.smooth,groupStart:0,groupEnd:-1,groupCount:-1,inherited:!1};return c.clone=this.clone.bind(c),c}};return this.materials.push(o),o},currentMaterial:function(){if(this.materials.length>0)return this.materials[this.materials.length-1]},_finalize:function(n){let s=this.currentMaterial();if(s&&s.groupEnd===-1&&(s.groupEnd=this.geometry.vertices.length/3,s.groupCount=s.groupEnd-s.groupStart,s.inherited=!1),n&&this.materials.length>1)for(let a=this.materials.length-1;a>=0;a--)this.materials[a].groupCount<=0&&this.materials.splice(a,1);return n&&this.materials.length===0&&this.materials.push({name:"",smooth:this.smooth}),s}},i&&i.name&&typeof i.clone=="function"){let n=i.clone(0);n.inherited=!0,this.object.materials.push(n)}this.objects.push(this.object)},finalize:function(){this.object&&typeof this.object._finalize=="function"&&this.object._finalize(!0)},parseVertexIndex:function(r,e){let i=parseInt(r,10);return(i>=0?i-1:i+e/3)*3},parseNormalIndex:function(r,e){let i=parseInt(r,10);return(i>=0?i-1:i+e/3)*3},parseUVIndex:function(r,e){let i=parseInt(r,10);return(i>=0?i-1:i+e/2)*2},addVertex:function(r,e,i){let n=this.vertices,s=this.object.geometry.vertices;s.push(n[r+0],n[r+1],n[r+2]),s.push(n[e+0],n[e+1],n[e+2]),s.push(n[i+0],n[i+1],n[i+2])},addVertexPoint:function(r){let e=this.vertices;this.object.geometry.vertices.push(e[r+0],e[r+1],e[r+2])},addVertexLine:function(r){let e=this.vertices;this.object.geometry.vertices.push(e[r+0],e[r+1],e[r+2])},addNormal:function(r,e,i){let n=this.normals,s=this.object.geometry.normals;s.push(n[r+0],n[r+1],n[r+2]),s.push(n[e+0],n[e+1],n[e+2]),s.push(n[i+0],n[i+1],n[i+2])},addFaceNormal:function(r,e,i){let n=this.vertices,s=this.object.geometry.normals;Qwe.fromArray(n,r),i8.fromArray(n,e),eRe.fromArray(n,i),Wl.subVectors(eRe,i8),tRe.subVectors(Qwe,i8),Wl.cross(tRe),Wl.normalize(),s.push(Wl.x,Wl.y,Wl.z),s.push(Wl.x,Wl.y,Wl.z),s.push(Wl.x,Wl.y,Wl.z)},addColor:function(r,e,i){let n=this.colors,s=this.object.geometry.colors;n[r]!==void 0&&s.push(n[r+0],n[r+1],n[r+2]),n[e]!==void 0&&s.push(n[e+0],n[e+1],n[e+2]),n[i]!==void 0&&s.push(n[i+0],n[i+1],n[i+2])},addUV:function(r,e,i){let n=this.uvs,s=this.object.geometry.uvs;s.push(n[r+0],n[r+1]),s.push(n[e+0],n[e+1]),s.push(n[i+0],n[i+1])},addDefaultUV:function(){let r=this.object.geometry.uvs;r.push(0,0),r.push(0,0),r.push(0,0)},addUVLine:function(r){let e=this.uvs;this.object.geometry.uvs.push(e[r+0],e[r+1])},addFace:function(r,e,i,n,s,a,o,l,c){let u=this.vertices.length,h=this.parseVertexIndex(r,u),p=this.parseVertexIndex(e,u),d=this.parseVertexIndex(i,u);if(this.addVertex(h,p,d),this.addColor(h,p,d),o!==void 0&&o!==""){let f=this.normals.length;h=this.parseNormalIndex(o,f),p=this.parseNormalIndex(l,f),d=this.parseNormalIndex(c,f),this.addNormal(h,p,d)}else this.addFaceNormal(h,p,d);if(n!==void 0&&n!==""){let f=this.uvs.length;h=this.parseUVIndex(n,f),p=this.parseUVIndex(s,f),d=this.parseUVIndex(a,f),this.addUV(h,p,d),this.object.geometry.hasUVIndices=!0}else this.addDefaultUV()},addPointGeometry:function(r){this.object.geometry.type="Points";let e=this.vertices.length;for(let i=0,n=r.length;i<n;i++){let s=this.parseVertexIndex(r[i],e);this.addVertexPoint(s),this.addColor(s)}},addLineGeometry:function(r,e){this.object.geometry.type="Line";let i=this.vertices.length,n=this.uvs.length;for(let s=0,a=r.length;s<a;s++)this.addVertexLine(this.parseVertexIndex(r[s],i));for(let s=0,a=e.length;s<a;s++)this.addUVLine(this.parseUVIndex(e[s],n))}};return t.startObject("",!1),t}var AA=class extends li{constructor(r){super(r),this.materials=null}load(r,e,i,n){let s=this,a=new ci(this.manager);a.setPath(this.path),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials),a.load(r,function(o){try{e(s.parse(o))}catch(l){n?n(l):console.error(l),s.manager.itemError(r)}},i,n)}setMaterials(r){return this.materials=r,this}parse(r){let e=new q3t;r.indexOf(`\r
|
||
`)!==-1&&(r=r.replace(/\r\n/g,`
|
||
`)),r.indexOf(`\\
|
||
`)!==-1&&(r=r.replace(/\\\n/g,""));let i=r.split(`
|
||
`),n=[];for(let o=0,l=i.length;o<l;o++){let c=i[o].trimStart();if(c.length===0)continue;let u=c.charAt(0);if(u!=="#")if(u==="v"){let h=c.split(Jwe);switch(h[0]){case"v":e.vertices.push(parseFloat(h[1]),parseFloat(h[2]),parseFloat(h[3])),h.length>=7?(CA.setRGB(parseFloat(h[4]),parseFloat(h[5]),parseFloat(h[6])).convertSRGBToLinear(),e.colors.push(CA.r,CA.g,CA.b)):e.colors.push(void 0,void 0,void 0);break;case"vn":e.normals.push(parseFloat(h[1]),parseFloat(h[2]),parseFloat(h[3]));break;case"vt":e.uvs.push(parseFloat(h[1]),parseFloat(h[2]));break}}else if(u==="f"){let p=c.slice(1).trim().split(Jwe),d=[];for(let m=0,g=p.length;m<g;m++){let y=p[m];if(y.length>0){let E=y.split("/");d.push(E)}}let f=d[0];for(let m=1,g=d.length-1;m<g;m++){let y=d[m],E=d[m+1];e.addFace(f[0],y[0],E[0],f[1],y[1],E[1],f[2],y[2],E[2])}}else if(u==="l"){let h=c.substring(1).trim().split(" "),p=[],d=[];if(c.indexOf("/")===-1)p=h;else for(let f=0,m=h.length;f<m;f++){let g=h[f].split("/");g[0]!==""&&p.push(g[0]),g[1]!==""&&d.push(g[1])}e.addLineGeometry(p,d)}else if(u==="p"){let p=c.slice(1).trim().split(" ");e.addPointGeometry(p)}else if((n=V3t.exec(c))!==null){let h=(" "+n[0].slice(1).trim()).slice(1);e.startObject(h)}else if(j3t.test(c))e.object.startMaterial(c.substring(7).trim(),e.materialLibraries);else if(z3t.test(c))e.materialLibraries.push(c.substring(7).trim());else if(W3t.test(c))console.warn('THREE.OBJLoader: Rendering identifier "usemap" not supported. Textures must be defined in MTL files.');else if(u==="s"){if(n=c.split(" "),n.length>1){let p=n[1].trim().toLowerCase();e.object.smooth=p!=="0"&&p!=="off"}else e.object.smooth=!0;let h=e.object.currentMaterial();h&&(h.smooth=e.object.smooth)}else{if(c==="\0")continue;console.warn('THREE.OBJLoader: Unexpected line: "'+c+'"')}}e.finalize();let s=new hr;if(s.materialLibraries=[].concat(e.materialLibraries),!(e.objects.length===1&&e.objects[0].geometry.vertices.length===0)===!0)for(let o=0,l=e.objects.length;o<l;o++){let c=e.objects[o],u=c.geometry,h=c.materials,p=u.type==="Line",d=u.type==="Points",f=!1;if(u.vertices.length===0)continue;let m=new it;m.setAttribute("position",new ct(u.vertices,3)),u.normals.length>0&&m.setAttribute("normal",new ct(u.normals,3)),u.colors.length>0&&(f=!0,m.setAttribute("color",new ct(u.colors,3))),u.hasUVIndices===!0&&m.setAttribute("uv",new ct(u.uvs,2));let g=[];for(let E=0,b=h.length;E<b;E++){let x=h[E],S=x.name+"_"+x.smooth+"_"+f,D=e.materials[S];if(this.materials!==null){if(D=this.materials.create(x.name),p&&D&&!(D instanceof Tr)){let P=new Tr;Gr.prototype.copy.call(P,D),P.color.copy(D.color),D=P}else if(d&&D&&!(D instanceof Vn)){let P=new Vn({size:10,sizeAttenuation:!1});Gr.prototype.copy.call(P,D),P.color.copy(D.color),P.map=D.map,D=P}}D===void 0&&(p?D=new Tr:d?D=new Vn({size:1,sizeAttenuation:!1}):D=new Ts,D.name=x.name,D.flatShading=!x.smooth,D.vertexColors=f,e.materials[S]=D),g.push(D)}let y;if(g.length>1){for(let E=0,b=h.length;E<b;E++){let x=h[E];m.addGroup(x.groupStart,x.groupCount,E)}p?y=new oi(m,g):d?y=new rn(m,g):y=new Je(m,g)}else p?y=new oi(m,g[0]):d?y=new rn(m,g[0]):y=new Je(m,g[0]);y.name=c.name,s.add(y)}else if(e.vertices.length>0){let o=new Vn({size:1,sizeAttenuation:!1}),l=new it;l.setAttribute("position",new ct(e.vertices,3)),e.colors.length>0&&e.colors[0]!==void 0&&(l.setAttribute("color",new ct(e.colors,3)),o.vertexColors=!0);let c=new rn(l,o);s.add(c)}return s}};var OA=new Ve,PA=class extends li{constructor(r){super(r),this.propertyNameMapping={},this.customPropertyMapping={}}load(r,e,i,n){let s=this,a=new ci(this.manager);a.setPath(this.path),a.setResponseType("arraybuffer"),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials),a.load(r,function(o){try{e(s.parse(o))}catch(l){n?n(l):console.error(l),s.manager.itemError(r)}},i,n)}setPropertyNameMapping(r){this.propertyNameMapping=r}setCustomPropertyNameMapping(r){this.customPropertyMapping=r}parse(r){function e(g){let y=/^ply([\s\S]*)end_header(\r\n|\r|\n)/,E="",b=0,x=y.exec(g);x!==null&&(E=x[1],b=new Blob([x[0]]).size);let S={comments:[],elements:[],headerLength:b,objInfo:""},D=E.split(/\r\n|\r|\n/),P;function _(w,F){let X={type:w[0]};return X.type==="list"?(X.name=w[3],X.countType=w[1],X.itemType=w[2]):X.name=w[1],X.name in F&&(X.name=F[X.name]),X}for(let w=0;w<D.length;w++){let F=D[w];if(F=F.trim(),F==="")continue;let X=F.split(/\s+/),H=X.shift();switch(F=X.join(" "),H){case"format":S.format=X[0],S.version=X[1];break;case"comment":S.comments.push(F);break;case"element":P!==void 0&&S.elements.push(P),P={},P.name=X[0],P.count=parseInt(X[1]),P.properties=[];break;case"property":P.properties.push(_(X,m.propertyNameMapping));break;case"obj_info":S.objInfo=F;break;default:console.log("unhandled",H,X)}}return P!==void 0&&S.elements.push(P),S}function i(g,y){switch(y){case"char":case"uchar":case"short":case"ushort":case"int":case"uint":case"int8":case"uint8":case"int16":case"uint16":case"int32":case"uint32":return parseInt(g);case"float":case"double":case"float32":case"float64":return parseFloat(g)}}function n(g,y){let E=y.split(/\s+/),b={};for(let x=0;x<g.length;x++)if(g[x].type==="list"){let S=[],D=i(E.shift(),g[x].countType);for(let P=0;P<D;P++)S.push(i(E.shift(),g[x].itemType));b[g[x].name]=S}else b[g[x].name]=i(E.shift(),g[x].type);return b}function s(){let g={indices:[],vertices:[],normals:[],uvs:[],faceVertexUvs:[],colors:[]};for(let y of Object.keys(m.customPropertyMapping))g[y]=[];return g}function a(g){let y=g.map(b=>b.name);function E(b){for(let x=0,S=b.length;x<S;x++){let D=b[x];if(y.includes(D))return D}return null}return{attrX:E(["x","px","posx"])||"x",attrY:E(["y","py","posy"])||"y",attrZ:E(["z","pz","posz"])||"z",attrNX:E(["nx","normalx"]),attrNY:E(["ny","normaly"]),attrNZ:E(["nz","normalz"]),attrS:E(["s","u","texture_u","tx"]),attrT:E(["t","v","texture_v","ty"]),attrR:E(["red","diffuse_red","r","diffuse_r"]),attrG:E(["green","diffuse_green","g","diffuse_g"]),attrB:E(["blue","diffuse_blue","b","diffuse_b"])}}function o(g,y){let E=s(),b,x=/end_header\s([\s\S]*)$/,S="";(b=x.exec(g))!==null&&(S=b[1]);let D=S.split(/\r\n|\r|\n/),P=0,_=0,w=y.elements[P],F=a(w.properties);for(let X=0;X<D.length;X++){let H=D[X];if(H=H.trim(),H==="")continue;_>=w.count&&(P++,_=0,w=y.elements[P],F=a(w.properties));let he=n(w.properties,H);c(E,w.name,he,F),_++}return l(E)}function l(g){let y=new it;g.indices.length>0&&y.setIndex(g.indices),y.setAttribute("position",new ct(g.vertices,3)),g.normals.length>0&&y.setAttribute("normal",new ct(g.normals,3)),g.uvs.length>0&&y.setAttribute("uv",new ct(g.uvs,2)),g.colors.length>0&&y.setAttribute("color",new ct(g.colors,3)),g.faceVertexUvs.length>0&&(y=y.toNonIndexed(),y.setAttribute("uv",new ct(g.faceVertexUvs,2)));for(let E of Object.keys(m.customPropertyMapping))g[E].length>0&&y.setAttribute(E,new ct(g[E],m.customPropertyMapping[E].length));return y.computeBoundingSphere(),y}function c(g,y,E,b){if(y==="vertex"){g.vertices.push(E[b.attrX],E[b.attrY],E[b.attrZ]),b.attrNX!==null&&b.attrNY!==null&&b.attrNZ!==null&&g.normals.push(E[b.attrNX],E[b.attrNY],E[b.attrNZ]),b.attrS!==null&&b.attrT!==null&&g.uvs.push(E[b.attrS],E[b.attrT]),b.attrR!==null&&b.attrG!==null&&b.attrB!==null&&(OA.setRGB(E[b.attrR]/255,E[b.attrG]/255,E[b.attrB]/255).convertSRGBToLinear(),g.colors.push(OA.r,OA.g,OA.b));for(let x of Object.keys(m.customPropertyMapping))for(let S of m.customPropertyMapping[x])g[x].push(E[S])}else if(y==="face"){let x=E.vertex_indices||E.vertex_index,S=E.texcoord;x.length===3?(g.indices.push(x[0],x[1],x[2]),S&&S.length===6&&(g.faceVertexUvs.push(S[0],S[1]),g.faceVertexUvs.push(S[2],S[3]),g.faceVertexUvs.push(S[4],S[5]))):x.length===4&&(g.indices.push(x[0],x[1],x[3]),g.indices.push(x[1],x[2],x[3]))}}function u(g,y){let E={},b=0;for(let x=0;x<y.length;x++){let S=y[x],D=S.valueReader;if(S.type==="list"){let P=[],_=S.countReader.read(g+b);b+=S.countReader.size;for(let w=0;w<_;w++)P.push(D.read(g+b)),b+=D.size;E[S.name]=P}else E[S.name]=D.read(g+b),b+=D.size}return[E,b]}function h(g,y,E){function b(x,S,D){switch(S){case"int8":case"char":return{read:P=>x.getInt8(P),size:1};case"uint8":case"uchar":return{read:P=>x.getUint8(P),size:1};case"int16":case"short":return{read:P=>x.getInt16(P,D),size:2};case"uint16":case"ushort":return{read:P=>x.getUint16(P,D),size:2};case"int32":case"int":return{read:P=>x.getInt32(P,D),size:4};case"uint32":case"uint":return{read:P=>x.getUint32(P,D),size:4};case"float32":case"float":return{read:P=>x.getFloat32(P,D),size:4};case"float64":case"double":return{read:P=>x.getFloat64(P,D),size:8}}}for(let x=0,S=g.length;x<S;x++){let D=g[x];D.type==="list"?(D.countReader=b(y,D.countType,E),D.valueReader=b(y,D.itemType,E)):D.valueReader=b(y,D.type,E)}}function p(g,y){let E=s(),b=y.format==="binary_little_endian",x=new DataView(g,y.headerLength),S,D=0;for(let P=0;P<y.elements.length;P++){let _=y.elements[P],w=_.properties,F=a(w);h(w,x,b);for(let X=0;X<_.count;X++){S=u(D,w),D+=S[1];let H=S[0];c(E,_.name,H,F)}}return l(E)}function d(g){let y=0,E=!0,b="",x=[];do{let S=String.fromCharCode(g[y++]);S!==`
|
||
`&&S!=="\r"?b+=S:(b==="end_header"&&(E=!1),b!==""&&(x.push(b),b=""))}while(E&&y<g.length);return x.join("\r")+"\r"}let f,m=this;if(r instanceof ArrayBuffer){let g=new Uint8Array(r),y=d(g),E=e(y);if(E.format==="ascii"){let b=new TextDecoder().decode(g);f=o(b,E)}else f=p(r,E)}else f=o(r,e(r));return f}};var NA=class extends li{constructor(r){super(r)}load(r,e,i,n){let s=this,a=new ci(this.manager);a.setPath(this.path),a.setResponseType("arraybuffer"),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials),a.load(r,function(o){try{e(s.parse(o))}catch(l){n?n(l):console.error(l),s.manager.itemError(r)}},i,n)}parse(r){function e(c){let u=new DataView(c),h=32/8*3+32/8*3*3+16/8,p=u.getUint32(80,!0);if(80+32/8+p*h===u.byteLength)return!0;let f=[115,111,108,105,100];for(let m=0;m<5;m++)if(i(f,u,m))return!1;return!0}function i(c,u,h){for(let p=0,d=c.length;p<d;p++)if(c[p]!==u.getUint8(h+p))return!1;return!0}function n(c){let u=new DataView(c),h=u.getUint32(80,!0),p,d,f,m=!1,g,y,E,b,x;for(let F=0;F<80-10;F++)u.getUint32(F,!1)==1129270351&&u.getUint8(F+4)==82&&u.getUint8(F+5)==61&&(m=!0,g=new Float32Array(h*3*3),y=u.getUint8(F+6)/255,E=u.getUint8(F+7)/255,b=u.getUint8(F+8)/255,x=u.getUint8(F+9)/255);let S=84,D=12*4+2,P=new it,_=new Float32Array(h*3*3),w=new Float32Array(h*3*3);for(let F=0;F<h;F++){let X=S+F*D,H=u.getFloat32(X,!0),he=u.getFloat32(X+4,!0),C=u.getFloat32(X+8,!0);if(m){let N=u.getUint16(X+48,!0);N&32768?(p=y,d=E,f=b):(p=(N&31)/31,d=(N>>5&31)/31,f=(N>>10&31)/31)}for(let N=1;N<=3;N++){let k=X+N*12,G=F*3*3+(N-1)*3;_[G]=u.getFloat32(k,!0),_[G+1]=u.getFloat32(k+4,!0),_[G+2]=u.getFloat32(k+8,!0),w[G]=H,w[G+1]=he,w[G+2]=C,m&&(g[G]=p,g[G+1]=d,g[G+2]=f)}}return P.setAttribute("position",new jt(_,3)),P.setAttribute("normal",new jt(w,3)),m&&(P.setAttribute("color",new jt(g,3)),P.hasColors=!0,P.alpha=x),P}function s(c){let u=new it,h=/solid([\s\S]*?)endsolid/g,p=/facet([\s\S]*?)endfacet/g,d=0,f=/[\s]+([+-]?(?:\d*)(?:\.\d*)?(?:[eE][+-]?\d+)?)/.source,m=new RegExp("vertex"+f+f+f,"g"),g=new RegExp("normal"+f+f+f,"g"),y=[],E=[],b=new A,x,S=0,D=0,P=0;for(;(x=h.exec(c))!==null;){D=P;let _=x[0];for(;(x=p.exec(_))!==null;){let X=0,H=0,he=x[0];for(;(x=g.exec(he))!==null;)b.x=parseFloat(x[1]),b.y=parseFloat(x[2]),b.z=parseFloat(x[3]),H++;for(;(x=m.exec(he))!==null;)y.push(parseFloat(x[1]),parseFloat(x[2]),parseFloat(x[3])),E.push(b.x,b.y,b.z),X++,P++;H!==1&&console.error("THREE.STLLoader: Something isn't right with the normal of face number "+d),X!==3&&console.error("THREE.STLLoader: Something isn't right with the vertices of face number "+d),d++}let w=D,F=P-D;u.addGroup(w,F,S),S++}return u.setAttribute("position",new ct(y,3)),u.setAttribute("normal",new ct(E,3)),u}function a(c){return typeof c!="string"?new TextDecoder().decode(c):c}function o(c){if(typeof c=="string"){let u=new Uint8Array(c.length);for(let h=0;h<c.length;h++)u[h]=c.charCodeAt(h)&255;return u.buffer||u}else return c}let l=o(r);return e(l)?n(l):s(a(r))}};var _Me=Un(yRe(),1);var SRe="3.7.2",rPt=SRe,iPt=typeof atob=="function",nPt=typeof btoa=="function",GT=typeof Buffer=="function",TRe=typeof TextDecoder=="function"?new TextDecoder:void 0,ERe=typeof TextEncoder=="function"?new TextEncoder:void 0,sPt="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",OI=Array.prototype.slice.call(sPt),BA=(t=>{let r={};return t.forEach((e,i)=>r[e]=i),r})(OI),aPt=/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/,Vs=String.fromCharCode.bind(String),bRe=typeof Uint8Array.from=="function"?Uint8Array.from.bind(Uint8Array):(t,r=e=>e)=>new Uint8Array(Array.prototype.slice.call(t,0).map(r)),_Re=t=>t.replace(/=/g,"").replace(/[+\/]/g,r=>r=="+"?"-":"_"),wRe=t=>t.replace(/[^A-Za-z0-9\+\/]/g,""),RRe=t=>{let r,e,i,n,s="",a=t.length%3;for(let o=0;o<t.length;){if((e=t.charCodeAt(o++))>255||(i=t.charCodeAt(o++))>255||(n=t.charCodeAt(o++))>255)throw new TypeError("invalid character found");r=e<<16|i<<8|n,s+=OI[r>>18&63]+OI[r>>12&63]+OI[r>>6&63]+OI[r&63]}return a?s.slice(0,a-3)+"===".substring(a):s},f8=nPt?t=>btoa(t):GT?t=>Buffer.from(t,"binary").toString("base64"):RRe,p8=GT?t=>Buffer.from(t).toString("base64"):t=>{let e=[];for(let i=0,n=t.length;i<n;i+=4096)e.push(Vs.apply(null,t.subarray(i,i+4096)));return f8(e.join(""))},kA=(t,r=!1)=>r?_Re(p8(t)):p8(t),oPt=t=>{if(t.length<2){var r=t.charCodeAt(0);return r<128?t:r<2048?Vs(192|r>>>6)+Vs(128|r&63):Vs(224|r>>>12&15)+Vs(128|r>>>6&63)+Vs(128|r&63)}else{var r=65536+(t.charCodeAt(0)-55296)*1024+(t.charCodeAt(1)-56320);return Vs(240|r>>>18&7)+Vs(128|r>>>12&63)+Vs(128|r>>>6&63)+Vs(128|r&63)}},lPt=/[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g,MRe=t=>t.replace(lPt,oPt),xRe=GT?t=>Buffer.from(t,"utf8").toString("base64"):ERe?t=>p8(ERe.encode(t)):t=>f8(MRe(t)),kT=(t,r=!1)=>r?_Re(xRe(t)):xRe(t),IRe=t=>kT(t,!0),cPt=/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g,uPt=t=>{switch(t.length){case 4:var r=(7&t.charCodeAt(0))<<18|(63&t.charCodeAt(1))<<12|(63&t.charCodeAt(2))<<6|63&t.charCodeAt(3),e=r-65536;return Vs((e>>>10)+55296)+Vs((e&1023)+56320);case 3:return Vs((15&t.charCodeAt(0))<<12|(63&t.charCodeAt(1))<<6|63&t.charCodeAt(2));default:return Vs((31&t.charCodeAt(0))<<6|63&t.charCodeAt(1))}},DRe=t=>t.replace(cPt,uPt),CRe=t=>{if(t=t.replace(/\s+/g,""),!aPt.test(t))throw new TypeError("malformed base64.");t+="==".slice(2-(t.length&3));let r,e="",i,n;for(let s=0;s<t.length;)r=BA[t.charAt(s++)]<<18|BA[t.charAt(s++)]<<12|(i=BA[t.charAt(s++)])<<6|(n=BA[t.charAt(s++)]),e+=i===64?Vs(r>>16&255):n===64?Vs(r>>16&255,r>>8&255):Vs(r>>16&255,r>>8&255,r&255);return e},m8=iPt?t=>atob(wRe(t)):GT?t=>Buffer.from(t,"base64").toString("binary"):CRe,ARe=GT?t=>bRe(Buffer.from(t,"base64")):t=>bRe(m8(t),r=>r.charCodeAt(0)),ORe=t=>ARe(PRe(t)),hPt=GT?t=>Buffer.from(t,"base64").toString("utf8"):TRe?t=>TRe.decode(ARe(t)):t=>DRe(m8(t)),PRe=t=>wRe(t.replace(/[-_]/g,r=>r=="-"?"+":"/")),d8=t=>hPt(PRe(t)),pPt=t=>{if(typeof t!="string")return!1;let r=t.replace(/\s+/g,"").replace(/={0,2}$/,"");return!/[^\s0-9a-zA-Z\+/]/.test(r)||!/[^\s0-9a-zA-Z\-_]/.test(r)},NRe=t=>({value:t,enumerable:!1,writable:!0,configurable:!0}),LRe=function(){let t=(r,e)=>Object.defineProperty(String.prototype,r,NRe(e));t("fromBase64",function(){return d8(this)}),t("toBase64",function(r){return kT(this,r)}),t("toBase64URI",function(){return kT(this,!0)}),t("toBase64URL",function(){return kT(this,!0)}),t("toUint8Array",function(){return ORe(this)})},FRe=function(){let t=(r,e)=>Object.defineProperty(Uint8Array.prototype,r,NRe(e));t("toBase64",function(r){return kA(this,r)}),t("toBase64URI",function(){return kA(this,!0)}),t("toBase64URL",function(){return kA(this,!0)})},dPt=()=>{LRe(),FRe()},HRe={version:SRe,VERSION:rPt,atob:m8,atobPolyfill:CRe,btoa:f8,btoaPolyfill:RRe,fromBase64:d8,toBase64:kT,encode:kT,encodeURI:IRe,encodeURL:IRe,utob:MRe,btou:DRe,decode:d8,isValid:pPt,fromUint8Array:kA,toUint8Array:ORe,extendString:LRe,extendUint8Array:FRe,extendBuiltins:dPt};var $l=Un(tMe(),1);var GA=class extends Sp{constructor(r,e={}){let i=e.font;if(i===void 0)super();else{let n=i.generateShapes(r,e.size);e.depth=e.height!==void 0?e.height:50,e.bevelThickness===void 0&&(e.bevelThickness=10),e.bevelSize===void 0&&(e.bevelSize=8),e.bevelEnabled===void 0&&(e.bevelEnabled=!1),super(n,e)}this.type="TextGeometry"}};var VA="BYLAYER",g8="BYBLOCK";var T0=["INSERT","DIMENSION"];var wTr=Un(aMe(),1);var zA=[0,16711680,16776960,65280,65535,255,16711935,16777215,8421504,12632256,16711680,16744319,13369344,13395558,10027008,10046540,8323072,8339263,4980736,4990502,16727808,16752511,13382400,13401958,10036736,10051404,8331008,8343359,4985600,4992806,16744192,16760703,13395456,13408614,10046464,10056268,8339200,8347455,4990464,4995366,16760576,16768895,13408512,13415014,10056192,10061132,8347392,8351551,4995328,4997670,16776960,16777087,13421568,13421670,10000384,10000460,8355584,8355647,5000192,5000230,12582656,14679935,10079232,11717734,7510016,8755276,6258432,7307071,3755008,4344870,8388352,12582783,6736896,10079334,5019648,7510092,4161280,6258495,2509824,3755046,4194048,10485631,3394560,8375398,2529280,6264908,2064128,5209919,1264640,3099686,65280,8388479,52224,6736998,38912,5019724,32512,4161343,19456,2509862,65343,8388511,52275,6737023,38950,5019743,32543,4161359,19475,2509871,65407,8388543,52326,6737049,38988,5019762,32575,4161375,19494,2509881,65471,8388575,52377,6737074,39026,5019781,32607,4161391,19513,2509890,65535,8388607,52428,6737100,39064,5019800,32639,4161407,19532,2509900,49151,8380415,39372,6730444,29336,5014936,24447,4157311,14668,2507340,32767,8372223,26316,6724044,19608,5010072,16255,4153215,9804,2505036,16383,8364031,13260,6717388,9880,5005208,8063,4149119,4940,2502476,255,8355839,204,6710988,152,5000344,127,4145023,76,2500172,4129023,10452991,3342540,8349388,2490520,6245528,2031743,5193599,1245260,3089996,8323327,12550143,6684876,10053324,4980888,7490712,4128895,6242175,2490444,3745356,12517631,14647295,10027212,11691724,7471256,8735896,6226047,7290751,3735628,4335180,16711935,16744447,13369548,13395660,9961624,9981080,8323199,8339327,4980812,4990540,16711871,16744415,13369497,13395634,9961586,9981061,8323167,8339311,4980793,4990530,16711807,16744383,13369446,13395609,9961548,9981042,8323135,8339295,4980774,4990521,16711743,16744351,13369395,13395583,9961510,9981023,8323103,8339279,4980755,4990511,3355443,5987163,8684676,11382189,14079702,16777215];var VT=class{constructor(){this.pointer=0;this.eof=!1}};var oMe=1e3,BI=class extends VT{constructor(e){super();this.int8Array=new Int8Array(oMe);this.caches=new Map;this.reader=new Df(e);let i=this.reader.readBytes(22),n="";for(let s=0;s<18;s++)n+=String.fromCharCode(i[s]);if(n!="AutoCAD Binary DXF")throw new Error("Invalid DXF file")}next(){if(!this.hasNext())throw this.eof?new Error("Cannot call 'next' after EOF group has been read"):new Error("Unexpected end of input: EOF group not read before end of file.");let e={code:this.reader.readInt16()};return e.value=this.parseGroupValue(e.code),e.code===0&&e.value==="EOF"&&(this.eof=!0),this.lastReadGroup=e,e}hasNext(){return this.eof?!1:!this.reader.IsEnd()}isEOF(){return this.eof}parseGroupValue(e){if(e>=0&&e<=9)return this.readNullTerminatedString();if(e>=10&&e<=59)return this.reader.readFloat64();if(e>=60&&e<=79)return this.reader.readInt16();if(e>=90&&e<=99)return this.reader.readInt32();if(e>=100&&e<=109)return this.readNullTerminatedString();if(e>=110&&e<=149)return this.reader.readFloat64();if(e>=160&&e<=169)return this.reader.readInt64();if(e>=170&&e<=179)return this.reader.readInt16();if(e>=210&&e<=239)return this.reader.readFloat64();if(e>=270&&e<=289)return this.reader.readInt16();if(e>=290&&e<=299)return this.reader.readInt8()>0;if(e>=300&&e<=309)return this.readNullTerminatedString();if(e>=310&&e<=319){let i=this.ReadBinaryData();return lMe(i)}if(e>=320&&e<=369)return this.readNullTerminatedString();if(e>=370&&e<=389)return this.reader.readInt16();if(e>=390&&e<=399)return this.readNullTerminatedString();if(e>=400&&e<=409)return this.reader.readInt16();if(e>=410&&e<=419)return this.readNullTerminatedString();if(e>=420&&e<=429)return this.reader.readInt32();if(e>=430&&e<=439)return this.readNullTerminatedString();if(e>=440&&e<=459)return this.reader.readInt32();if(e>=460&&e<=469)return this.reader.readFloat64();if(e>=470&&e<=481)return this.readNullTerminatedString();if(e===999)throw new Error("The comment group 999, is not used in binary DXF files at byte address!");if(e===1004){let i=this.ReadBinaryData();return lMe(i)}if(e>=1e3&&e<=1009)return this.readNullTerminatedString();if(e>=1010&&e<=1059)return this.reader.readFloat64();if(e>=1060&&e<=1070)return this.reader.readInt16();if(e===1071)return this.reader.readInt32();ne.warn(`[DxfBinReader] Invalid code '${e}' at byte address ${this.reader.getPosition()}`)}readNullTerminatedString(){var o;this.decoder||(this.decoder=new TextDecoder("utf-8"));let e=0,i=this.reader.readInt8();for(;i!==0;)this.int8Array[e++]=i,i=this.reader.readInt8();if(e===0)return"";if(e>oMe)return ne.warn(`[DxfBinReader] Failed to read string! The number of bytes is ${e} !`),"";let n=this.int8Array.subarray(0,e),s=n.toString();if(this.caches.get(s))return this.caches.get(s);let a=(o=this.decoder)==null?void 0:o.decode(n);return this.caches.set(s,a),a}ReadBinaryData(){let e=this.reader.readUint8();return this.reader.readBytes(e)}};function lMe(t){return Array.prototype.map.call(t,r=>("00"+r.toString(16)).slice(-2)).join("")}var zT=class extends VT{constructor(e){super();this.data=e}next(){if(!this.hasNext())throw this.eof?new Error("Cannot call 'next' after EOF group has been read"):new Error("Unexpected end of input: EOF group not read before end of file. Ended on code "+this.data[this.pointer]);let e={code:parseInt(this.data[this.pointer])};return this.pointer++,e.value=_Pt(e.code,this.data[this.pointer].trim()),this.pointer++,e.code===0&&e.value==="EOF"&&(this.eof=!0),this.lastReadGroup=e,e}hasNext(){return!(this.eof||this.pointer>this.data.length-2)}isEOF(){return this.eof}};function _Pt(t,r){return t>=0&&t<=9?r:t>=10&&t<=59?parseFloat(r):t>=60&&t<=99?parseInt(r):t>=100&&t<=109?r:t>=110&&t<=149?parseFloat(r):t>=160&&t<=179?parseInt(r):t>=210&&t<=239?parseFloat(r):t>=270&&t<=289?parseInt(r):t>=290&&t<=299?wPt(r):t>=300&&t<=369?r:t>=370&&t<=389?parseInt(r):t>=390&&t<=399?r:t>=400&&t<=409?parseInt(r):t>=410&&t<=419?r:t>=420&&t<=429?parseInt(r):t>=430&&t<=439?r:t>=440&&t<=459?parseInt(r):t>=460&&t<=469?parseFloat(r):t>=470&&t<=481||t===999||t>=1e3&&t<=1009?r:t>=1010&&t<=1059?parseFloat(r):t>=1060&&t<=1071?parseInt(r):(ne.info("WARNING: Group code does not have a defined type: %j",{code:t,value:r}),r)}function wPt(t){if(t==="0")return!1;if(t==="1")return!0;throw TypeError("String '"+t+"' cannot be cast to Boolean type")}var hMe=Un(Yl(),1);var RPt="OriginalHandle",MPt="OriginalType",DPt="Outlines",cMe=["PROXY","REGION","INSERT","HATCH"];function E0(t){return zA[t]}function ft(t){let r={},e=t.lastReadGroup,i=e.code;if(r.x=e.value,i+=10,e=t.next(),e.code!=i)throw new Error(`Expected code for point value to be ${i} but got ${e.code}`);return r.y=e.value,i+=10,e=t.next(),e.code!=i||(r.z=e.value,t.next()),r}function uMe(t,r){let e=t.lastReadGroup,i=[];for(let n=0;n<16;n++){if(e.code!==r)throw new Error(`Expected code for matrix value to be ${r} but got ${e.code}`);i.push(e.value),e=t.next()}return i}function fr(t,r){switch(r.code){case 0:t.type=r.value;break;case 5:t.handle=r.value;break;case 6:t.lineType=r.value.toUpperCase();break;case 8:t.layer=r.value;break;case 48:t.lineTypeScale=r.value,t.lineTypeScale<=0&&(t.lineTypeScale=1);break;case 60:t.visible=r.value===0;break;case 62:t.isTrueColor||(t.colorIndex=r.value,t.colorIndex<0&&ne.warn("[DxfParser] a negative value of colorIndex indicates that the layer is turned off"),t.color=E0(Math.abs(r.value)));break;case 67:t.inPaperSpace=r.value!==0;break;case 100:break;case 330:t.ownerHandle=r.value;break;case 347:t.materialObjectHandle=r.value;break;case 370:t.lineweight=r.value;break;case 410:t.layoutName=r.value;break;case 420:t.isTrueColor=!0,t.color=r.value;break;case 1e3:if(r.value&&r.value.includes(RPt)){let e=r.value.split(":").map(i=>i.trim());t.extendedData||(t.extendedData={}),t.extendedData.originalHandle=e[1]}if(t.extendedData&&t.extendedData.outlines)try{t.extendedData.outlines=JSON.parse(r.value||"[]")}catch(e){t.extendedData.outlines=void 0}if(r.value&&r.value.includes(DPt)&&(t.extendedData||(t.extendedData={}),t.extendedData.outlines=[]),r.value&&r.value.includes(MPt)){let e=r.value.split(":").map(i=>i.trim());t.extendedData||(t.extendedData={}),t.extendedData.originalType=e[1]}break;case 1001:break;default:return!1}return!0}function ah(t,r){switch(r.code){case 0:t.type=r.value;break;case 5:t.handle=r.value;break;case 330:t.ownerHandle=r.value;break;case 1e3:break;case 1001:break;default:return!1}return!0}var GI=class{constructor(){this.ForEntityName="3DFACE"}parseEntity(r,e){let i={type:e.value,vertices:[]};for(e=r.next();!r.isEOF()&&e.code!==0;)switch(e.code){case 70:{if(e.value!==0){let n=Math.log2(e.value)-1;i.vertices.splice(n,1)}e=r.next()}break;case 10:i.vertices=CPt(r,e),e=r.lastReadGroup;break;case 101:for(;e.code!=0;)e=r.next();break;default:fr(i,e),e=r.next();break}return i}};function CPt(t,r){let e=[],i=!1,n=!1,s=4;for(let a=0;a<=s;a++){let o={};for(;!t.isEOF()&&!(r.code===0||n);){switch(r.code){case 10:case 11:case 12:case 13:if(i){n=!0;continue}o.x=r.value,i=!0;break;case 20:case 21:case 22:case 23:o.y=r.value;break;case 30:case 31:case 32:case 33:o.z=r.value;break;default:return e}r=t.next()}(0,hMe.isEmpty)(o)||e.push(o),i=!1,n=!1}return e}var VI=class{constructor(){this.ForEntityName="ARC"}parseEntity(r,e){let i={type:e.value};for(e=r.next();!r.isEOF()&&e.code!==0;)switch(e.code){case 10:i.center=ft(r),e=r.lastReadGroup;break;case 40:i.radius=e.value,e=r.next();break;case 50:i.startAngle=Math.PI/180*e.value,e=r.next();break;case 51:i.endAngle=Math.PI/180*e.value,i.angleLength=i.endAngle-i.startAngle,e=r.next();break;case 210:i.extrusionDirectionX=e.value,e=r.next();break;case 220:i.extrusionDirectionY=e.value,e=r.next();break;case 230:i.extrusionDirectionZ=e.value,e=r.next();break;case 101:for(;e.code!=0;)e=r.next();break;default:fr(i,e),e=r.next();break}return i}};var zI=class{constructor(){this.ForEntityName="ATTDEF"}parseEntity(r,e){let i={type:e.value,xScale:1,textStyle:"STANDARD"};for(e=r.next();!r.isEOF()&&e.code!==0;)switch(e.code){case 1:i.text=e.value,e=r.next();break;case 2:i.tag=e.value,e=r.next();break;case 3:i.prompt=e.value,e=r.next();break;case 7:i.textStyle=e.value,e=r.next();break;case 10:i.startPoint=ft(r),e=r.lastReadGroup;break;case 11:i.endPoint=ft(r),e=r.lastReadGroup;break;case 39:i.thickness=e.value,e=r.next();break;case 40:i.textHeight=e.value,e=r.next();break;case 41:i.xScale=e.value,e=r.next();break;case 50:i.rotation=e.value,e=r.next();break;case 51:i.obliqueAngle=e.value,e=r.next();break;case 70:i.invisible=!!(e.value&1),i.constant=!!(e.value&2),i.verificationRequired=!!(e.value&4),i.preset=!!(e.value&8),e=r.next();break;case 71:i.backwards=!!(e.value&2),i.mirrored=!!(e.value&4),e=r.next();break;case 72:i.horizontalJustification=e.value,e=r.next();break;case 73:i.fieldLength=e.value,e=r.next();break;case 74:i.verticalJustification=e.value,e=r.next();break;case 100:e=r.next();break;case 210:i.extrusionDirectionX=e.value,e=r.next();break;case 220:i.extrusionDirectionY=e.value,e=r.next();break;case 230:i.extrusionDirectionZ=e.value,e=r.next();break;case 101:for(;e.code!=0;)e=r.next();break;default:fr(i,e),e=r.next();break}return i}};var jI=class{constructor(){this.ForEntityName="ATTRIB"}parseEntity(r,e){let i={type:e.value,xScale:1,textStyle:"STANDARD"};for(e=r.next();!r.isEOF()&&e.code!==0;)switch(e.code){case 1:i.text=e.value,e=r.next();break;case 2:i.tag=e.value,e=r.next();break;case 3:i.prompt=e.value,e=r.next();break;case 7:i.textStyle=e.value,e=r.next();break;case 10:i.startPoint=ft(r),e=r.lastReadGroup;break;case 11:i.endPoint=ft(r),e=r.lastReadGroup;break;case 39:i.thickness=e.value,e=r.next();break;case 40:i.textHeight=e.value,e=r.next();break;case 41:i.xScale=e.value,e=r.next();break;case 50:i.rotation=e.value,e=r.next();break;case 51:i.obliqueAngle=e.value,e=r.next();break;case 70:i.invisible=!!(e.value&1),i.constant=!!(e.value&2),i.verificationRequired=!!(e.value&4),i.preset=!!(e.value&8),e=r.next();break;case 71:i.backwards=!!(e.value&2),i.mirrored=!!(e.value&4),e=r.next();break;case 72:i.horizontalJustification=e.value,e=r.next();break;case 73:i.fieldLength=e.value,e=r.next();break;case 74:i.verticalJustification=e.value,e=r.next();break;case 100:e=r.next();break;case 210:i.extrusionDirectionX=e.value,e=r.next();break;case 220:i.extrusionDirectionY=e.value,e=r.next();break;case 230:i.extrusionDirectionZ=e.value,e=r.next();break;case 101:for(;e.code!=0;)e=r.next();break;default:fr(i,e),e=r.next();break}return i}};var WI=class{constructor(){this.ForEntityName="CIRCLE"}parseEntity(r,e){let i={type:e.value};for(e=r.next();!r.isEOF()&&e.code!==0;)switch(e.code){case 10:i.center=ft(r),e=r.lastReadGroup;break;case 40:i.radius=e.value,e=r.next();break;case 50:i.startAngle=Math.PI/180*e.value,e=r.next();break;case 51:let n=Math.PI/180*e.value;n<i.startAngle?i.angleLength=n+2*Math.PI-i.startAngle:i.angleLength=n-i.startAngle,i.endAngle=n,e=r.next();break;case 101:for(;e.code!=0;)e=r.next();break;default:fr(i,e),e=r.next();break}return i}};var qI=class{constructor(){this.ForEntityName="DIMENSION"}parseEntity(r,e){let i={type:e.value};for(e=r.next();!r.isEOF()&&e.code!==0;)switch(e.code){case 2:i.block=e.value,e=r.next();break;case 3:i.dimStyleName=e.value,e=r.next();break;case 10:i.anchorPoint=ft(r),e=r.lastReadGroup;break;case 11:i.middleOfText=ft(r),e=r.lastReadGroup;break;case 12:i.insertionPoint=ft(r),e=r.lastReadGroup;break;case 13:i.linearOrAngularPoint1=ft(r),e=r.lastReadGroup;break;case 14:i.linearOrAngularPoint2=ft(r),e=r.lastReadGroup;break;case 15:i.diameterOrRadiusPoint=ft(r),e=r.lastReadGroup;break;case 16:i.arcPoint=ft(r),e=r.lastReadGroup;break;case 70:i.dimensionType=e.value,e=r.next();break;case 71:i.attachmentPoint=e.value,e=r.next();break;case 42:i.actualMeasurement=e.value,e=r.next();break;case 1:i.text=e.value,e=r.next();break;case 50:i.angle=e.value,e=r.next();break;case 101:for(;e.code!=0;)e=r.next();break;default:fr(i,e),e=r.next();break}return i}};var YI=class{constructor(){this.ForEntityName="ELLIPSE"}parseEntity(r,e){let i={type:e.value};for(e=r.next();!r.isEOF()&&e.code!==0;)switch(e.code){case 10:i.center=ft(r),e=r.lastReadGroup;break;case 11:i.majorAxisEndPoint=ft(r),e=r.lastReadGroup;break;case 40:i.axisRatio=e.value,e=r.next();break;case 41:i.startAngle=e.value,e=r.next();break;case 42:i.endAngle=e.value,e=r.next();break;case 210:i.extrusionDirection=ft(r),e=r.lastReadGroup;break;case 2:i.name=e.value,e=r.next();break;default:fr(i,e),e=r.next();break}return i}};var b0=class{constructor(r){this.type=r}},v8=class extends b0{constructor(){super(0);this.points=[];this.isClosed=!0}},y8=class extends b0{constructor(){super(1);this.startPoint={x:0,y:0,z:0},this.endPoint={x:0,y:0,z:0}}},T8=class extends b0{constructor(){super(2);this.center={x:0,y:0,z:0},this.radius=0,this.startAngle=0,this.endAngle=0,this.bCounterclockwise=!1}},E8=class extends b0{constructor(){super(3);this.center={x:0,y:0,z:0},this.majorAxisEndPoint={x:0,y:0,z:0},this.minorRatio=0,this.startAngle=0,this.endAngle=0,this.bCounterclockwise=!1}},b8=class extends b0{constructor(){super(4);this.controlPoints=[],this.numControlPoints=0,this.knotValues=[],this.numKnots=0,this.bPeriodic=!1,this.bRational=!1,this.degreeOfSplineCurve=0}};var XI=class{constructor(){this.ForEntityName="HATCH"}parseEntity(r,e){let i={type:e.value,boundaryPaths:[]};for(e=r.next();!r.isEOF()&&e.code!==0;)switch(e.code){case 2:i.patternName=e.value,e=r.next();break;case 10:i.elevationX=e.value,e=r.next();break;case 20:i.elevationY=e.value,e=r.next();break;case 30:i.elevationZ=e.value,e=r.next();break;case 41:i.patternScale=e.value,e=r.next();break;case 47:i.pixelSize=e.value,e=r.next();break;case 52:i.patternAngle=e.value,e=r.next();break;case 63:i.patternFillColor=e.value,e=r.next();break;case 70:i.solidFill=(e.value&1)!==0,e=r.next();break;case 71:i.associativity=(e.value&1)!==0,e=r.next();break;case 73:i.annotatedBoundary=(e.value&1)!==0,e=r.next();break;case 75:i.style=e.value,e=r.next();break;case 76:i.patternType=e.value,e=r.next();break;case 78:i.patternLines=NPt(e.value,r),e=r.lastReadGroup;break;case 91:i.boundaryPathsCount=e.value,i.boundaryPaths=PPt(i.boundaryPathsCount,r),e=r.lastReadGroup;break;case 98:i.seedPointsCount=e.value,e=r.next();break;case 210:i.extrusionDirectionX=e.value,e=r.next();break;case 220:i.extrusionDirectionY=e.value,e=r.next();break;case 230:i.extrusionDirectionZ=e.value,e=r.next();break;case 450:i.isGradientColor=e.value===1,e=r.next();break;case 451:e=r.next();break;case 452:e=r.next();break;case 453:i.gradientColorCount=e.value,i.gradientColors=LPt(i.gradientColorCount,r),e=r.next();break;case 460:e=r.next();break;case 461:e=r.next();break;case 462:e=r.next();break;case 463:e=r.next();break;case 470:e=r.next();break;case 101:for(;e.code!=0;)e=r.next();break;default:fr(i,e),e=r.next();break}return i}};function APt(t){let r=new v8,e=t.next(),i=e.value!==0;e=t.next(),r.isClosed=e.value!==0,e=t.next();let n=e.value;e=t.next();for(let a=0;a<n;a++){let o=ft(t);e=t.lastReadGroup,i&&(o.bulge=e.value,e=t.next()),r.points.push(o)}e=t.lastReadGroup,console.assert(e.code===97,"The reference count code 97 was expected.");let s=e.value;e=t.next();for(let a=0;a<s;a++)console.assert(e.code===330,"The reference handle code 330 was expected."),e=t.next();return{edges:[r],pathTypeFlag:-1}}function OPt(t,r){let e=[],i=r.next();for(;e.length<t;){if(i.code!==72){i=r.next();continue}switch(i.value){case 1:{i=r.next();let a=new y8;a.startPoint=ft(r),a.endPoint=ft(r),i=r.lastReadGroup,e.push(a);break}case 2:{i=r.next();let a=new T8;a.center=ft(r),i=r.lastReadGroup,a.radius=i.value,i=r.next(),a.startAngle=i.value,i=r.next(),a.endAngle=i.value,i=r.next(),a.bCounterclockwise=i.value!==0,i=r.next(),e.push(a);break}case 3:{i=r.next();let a=new E8;a.center=ft(r),a.majorAxisEndPoint=ft(r),i=r.lastReadGroup,a.minorRatio=i.value,i=r.next(),a.startAngle=i.value,i=r.next(),a.endAngle=i.value,i=r.next(),a.bCounterclockwise=i.value!==0,i=r.next(),e.push(a);break}case 4:{i=r.next();let a=new b8;a.degreeOfSplineCurve=i.value,i=r.next(),a.bRational=i.value!==0,i=r.next(),a.bPeriodic=i.value!==0,i=r.next(),a.numKnots=i.value,i=r.next(),a.numControlPoints=i.value,i=r.next();for(let o=0;o<a.numKnots;o++)a.knotValues.push(i.value),i=r.next();for(let o=0;o<a.numControlPoints;o++){let l=i.value;i=r.next();let c=i.value,u=1;i=r.next(),i.code===42&&(u=i.value,i=r.next()),a.controlPoints.push({x:l,y:c,z:u})}e.push(a);break}default:i=r.next();break}}i=r.lastReadGroup,console.assert(i.code===97,"The reference count code 97 was expected.");let n=i.value;i=r.next();for(let s=0;s<n;s++)console.assert(i.code===330,"The reference handle code 330 was expected."),i=r.next();return{edges:e,pathTypeFlag:-1}}function PPt(t,r){let e=[],i=-1,n=r.next();for(;e.length<t;){let s;switch(n.code){case 92:if(i=n.value,i&2){if(s=APt(r),s)s.pathTypeFlag=i,e.push(s);else throw new Error("[Hatch] Failed to parse hatch polyline boundary path !");n=r.lastReadGroup}else n=r.next();break;case 93:{let a=n.value;s=OPt(a,r),s.pathTypeFlag=i,e.push(s),n=r.lastReadGroup;break}default:n=r.next();break}}return e}function NPt(t,r){if(t<=0)return;let e=[],i=r.next();for(let n=0;n<t;n++){let s=0,a={x:0,y:0},o={x:0,y:0},l=-1,c=[];for(;!r.isEOF()&&i.code!==0;){let u=!1;switch(i.code){case 53:s=i.value;break;case 43:a.x=i.value;break;case 44:a.y=i.value;break;case 45:o.x=i.value;break;case 46:o.y=i.value;break;case 79:l=i.value;break;case 49:c.push(i.value);break;default:u=!0}if(i=r.next(),u||c.length===l)break}l>=0&&e.push({angle:s,origin:a,delta:o,dashPattern:c})}return e}function LPt(t,r){let e=[],i=r.next();for(;e.length<t;)switch(i.code){case 63:i=r.next();break;case 421:e.push(i.value),i=r.next();break;default:i=r.next();break}return e}var $I=class{constructor(){this.ForEntityName="INSERT"}parseEntity(r,e){let i={type:e.value};for(e=r.next();!r.isEOF()&&e.code!==0;)switch(e.code){case 2:i.block=e.value,e=r.next();break;case 66:i.attributesFollow=e.value!=0,e=r.next();break;case 41:i.xScale=e.value,e=r.next();break;case 42:i.yScale=e.value,e=r.next();break;case 43:i.zScale=e.value,e=r.next();break;case 10:i.position=ft(r),e=r.lastReadGroup;break;case 50:i.rotation=e.value,e=r.next();break;case 70:i.columnCount=e.value,e=r.next();break;case 71:i.rowCount=e.value,e=r.next();break;case 44:i.columnSpacing=e.value,e=r.next();break;case 45:i.rowSpacing=e.value,e=r.next();break;case 210:i.extrusionDirection=ft(r),e=r.lastReadGroup;break;case 101:for(;e.code!=0;)e=r.next();break;default:fr(i,e),e=r.next();break}return i}};var ZI=class{constructor(){this.ForEntityName="LEADER"}parseEntity(r,e){let i={type:e.value,arrowFlag:1,vertices:[]};e=r.next();let n=!1;for(;!r.isEOF()&&e.code!==0;)switch(e.code){case 10:i.vertices.push(ft(r)),e=r.lastReadGroup;break;case 3:i.dimensionStyle=e.value,e=r.next();break;case 40:i.textHeight=e.value,e=r.next();break;case 41:i.textWidth=e.value,e=r.next();break;case 71:i.arrowFlag=e.value,e=r.next();break;case 72:i.pathType=e.value,e=r.next();break;case 73:i.creationFlag=e.value,e=r.next();break;case 74:i.direction=e.value,e=r.next();break;case 75:i.hasHookline=e.value===1,e=r.next();break;case 1001:n=e.value==="ACAD",e=r.next();break;case 1070:if(n){let s=FPt(e.value);s&&(e=r.next(),(e.code==1005||e.code==1040||e.code==1070)&&(s==="DIMLDRBLK"&&(i.arrowHeadBlockHandle=e.value),s==="DIMASZ"&&(i.arrowHeight=e.value),s==="DIMSCALE"&&(i.arrowHeadScale=e.value),s==="DIMCLRD"&&e.value>0&&(i.colorIndex=e.value,i.color=E0(Math.abs(e.value)))))}e=r.next();break;default:fr(i,e),e=r.next();break}return i}};function FPt(t){switch(t){case 40:return"DIMSCALE";case 41:return"DIMASZ";case 42:return"DIMEXO";case 44:return"DIMEXE";case 75:return"DIMSE1";case 76:return"DIMSE2";case 77:return"DIMTAD";case 140:return"DIMTXT";case 144:return"DIMLFAC";case 147:return"DIMGAP";case 176:return"DIMCLRD";case 178:return"DIMCLRT";case 271:return"DIMDEC";case 341:return"DIMLDRBLK";default:return null}}var KI=class{constructor(){this.ForEntityName="LINE"}parseEntity(r,e){let i={type:e.value,vertices:[]};for(e=r.next();!r.isEOF()&&e.code!==0;)switch(e.code){case 10:i.vertices.unshift(ft(r)),e=r.lastReadGroup;break;case 11:i.vertices.push(ft(r)),e=r.lastReadGroup;break;case 210:i.extrusionDirection=ft(r),e=r.lastReadGroup;break;case 100:e=r.next();break;case 101:for(;e.code!=0;)e=r.next();break;default:fr(i,e),e=r.next();break}return i}};var JI=class{constructor(){this.ForEntityName="LWPOLYLINE"}parseEntity(r,e){let i={type:e.value,vertices:[]},n=0;for(e=r.next();!r.isEOF()&&e.code!==0;)switch(e.code){case 38:i.elevation=e.value,e=r.next();break;case 39:i.thickness=e.value,e=r.next();break;case 70:i.shape=(e.value&1)===1,i.hasContinuousLinetypePattern=(e.value&128)===128,e=r.next();break;case 90:n=e.value,e=r.next();break;case 10:i.vertices.push(...HPt(n,r)),e=r.lastReadGroup;break;case 43:e.value!==0&&(i.constantWidth=e.value),e=r.next();break;case 210:i.extrusionDirectionX=e.value,e=r.next();break;case 220:i.extrusionDirectionY=e.value,e=r.next();break;case 230:i.extrusionDirectionZ=e.value,e=r.next();break;case 101:for(;e.code!=0;)e=r.next();break;default:fr(i,e),e=r.next();break}return i}};function HPt(t,r){if(!t||t<=0)throw Error("n must be greater than 0 verticies");let e=[],i=!1,n=!1,s=r.lastReadGroup,a={};for(;!r.isEOF()&&!(s.code===0||n);)switch(s.code){case 10:if(i){n=!0;continue}a.x=s.value,i=!0,s=r.next();break;case 20:a.y=s.value,s=r.next();break;case 30:a.z=s.value,s=r.next();break;case 40:a.startWidth=s.value,s=r.next();break;case 41:a.endWidth=s.value,s=r.next();break;case 42:s.value!=0&&(a.bulge=s.value),s=r.next();break;default:return i&&e.push(a),e}return e.push(a),i=!1,n=!1,e}var QI=class{constructor(){this.ForEntityName="MULTILEADER"}parseEntity(r,e){let i={type:e.value};i.contextData={leaders:[]},e=r.next();function n(){for(;!r.isEOF();)switch(e.code){case 0:return;case 340:i.leaderStyleId=e.value,e=r.next();break;case 170:i.leaderLineType=e.value,e=r.next();break;case 91:i.leaderLineColor=e.value,e=r.next();break;case 341:i.leaderLineTypeId=e.value,e=r.next();break;case 171:i.leaderLineWeight=e.value,e=r.next();break;case 41:i.doglegLength=e.value,e=r.next();break;case 290:i.enableLanding=e.value,e=r.next();break;case 291:i.enableDogLeg=e.value,e=r.next();break;case 342:i.arrowHeadId=e.value,e=r.next();break;case 42:i.arrowHeadSize=e.value,e=r.next();break;case 172:i.contentType=e.value,e=r.next();break;case 173:i.textLeftAttachmentType=e.value,e=r.next();break;case 95:i.textLeftAttachmentType=e.value,e=r.next();break;case 174:i.textAngleType=e.value,e=r.next();break;case 175:i.textAlignmentType=e.value,e=r.next();break;case 343:i.textStyleId=e.value,e=r.next();break;case 92:i.textColor=e.value,e=r.next();break;case 292:i.enableFrameText=e.value,e=r.next();break;case 344:i.blockContentId=e.value,e=r.next();break;case 93:i.blockContentColor=e.value,e=r.next();break;case 10:i.blockContentScale=ft(r),e=r.lastReadGroup;break;case 43:i.blockContentRotation=e.value,e=r.next();break;case 176:i.blockContentConnectionType=e.value,e=r.next();break;case 293:i.enableAnotationScale=e.value,e=r.next();break;case 94:i.arrowHeadIndex=e.value,e=r.next();break;case 177:i.blockAttributeIndex=e.value,e=r.next();break;case 44:i.blockAttributeWidth=e.value,e=r.next();break;case 302:i.blockAttributeTextString=e.value,e=r.next();break;case 294:i.textDirectionNegative=e.value,e=r.next();break;case 178:i.textAlignInIPE=e.value,e=r.next();break;case 179:i.textAttachmentPoint=e.value,e=r.next();break;case 271:i.textAttachmentDirectionMText=e.value,e=r.next();break;case 272:i.textAttachmentDirectionBottom=e.value,e=r.next();break;case 273:i.textAttachmentDirectionTop=e.value,e=r.next();break;case 300:s(),e=r.lastReadGroup;break;case 101:for(;e.code!=0;)e=r.next();break;default:fr(i,e),e=r.next();break}}function s(){for(;!r.isEOF();)switch(e.code){case 40:i.contextData.contentScale=e.value,e=r.next();break;case 10:i.contextData.contentBasePosition=ft(r),e=r.lastReadGroup;break;case 145:i.contextData.landingGap=e.value,e=r.next();break;case 290:i.contextData.hasMText=e.value,e=r.next();break;case 304:i.contextData.defaultTextContents=e.value,e=r.next();break;case 11:i.contextData.textNormalDirection=ft(r),e=r.lastReadGroup;break;case 12:i.contextData.textLocation=ft(r),e=r.lastReadGroup;break;case 13:i.contextData.textDirection=ft(r),e=r.lastReadGroup;break;case 140:i.contextData.arrowHeadSize=e.value,e=r.next();break;case 41:i.contextData.textHeight=e.value,e=r.next();break;case 42:i.contextData.textRotation=e.value,e=r.next();break;case 43:i.contextData.textWidth=e.value,e=r.next();break;case 44:e=r.next();break;case 45:i.contextData.textLineSpacingFactor=e.value,e=r.next();break;case 90:i.contextData.textColor=e.value,e=r.next();break;case 170:i.contextData.textLineSpacingStyle=e.value,e=r.next();break;case 171:i.contextData.textAttachment=e.value,e=r.next();break;case 172:i.contextData.textFlowDirection=e.value,e=r.next();break;case 141:i.contextData.textBackgroundScaleFactor=e.value,e=r.next();break;case 92:i.contextData.textBackgroundTransparency=e.value,e=r.next();break;case 291:i.contextData.textBackgroundColorOn=e.value,e=r.next();break;case 292:i.contextData.textBackgroundFillOn=e.value,e=r.next();break;case 293:i.contextData.textUseAutoHeight=e.value,e=r.next();break;case 173:i.contextData.textColumnType=e.value,e=r.next();break;case 142:i.contextData.textColumnWidth=e.value,e=r.next();break;case 143:i.contextData.textColumnGutterWidth=e.value,e=r.next();break;case 144:i.contextData.textColumnHeight=e.value,e=r.next();break;case 295:i.contextData.textUseWordBreak=e.value,e=r.next();break;case 296:i.contextData.hasBlock=e.value,e=r.next();break;case 341:i.contextData.blockContentId=e.value,e=r.next();break;case 14:i.contextData.blockContentNormalDirection=ft(r),e=r.lastReadGroup;break;case 15:i.contextData.blockContentPosition=ft(r),e=r.lastReadGroup;break;case 16:i.contextData.blockContentScale=e.value,e=r.next();break;case 46:i.contextData.blockContentRotation=e.value,e=r.next();break;case 93:i.contextData.blockContentColor=e.value,e=r.next();break;case 47:i.contextData.blockTransformationMatrix=uMe(r,47),e=r.lastReadGroup;break;case 110:i.contextData.planeOriginPoint=ft(r),e=r.lastReadGroup;break;case 111:i.contextData.planeXAxisDirection=ft(r),e=r.lastReadGroup;break;case 112:i.contextData.planeYAxisDirection=ft(r),e=r.lastReadGroup;break;case 297:i.contextData.planeNormalReversed=e.value,e=r.next();break;case 301:return;case 302:a(),e=r.lastReadGroup;break;default:e=r.next();break}}function a(){let l={leaderLines:[]};for(i.contextData.leaders.push(l);!r.isEOF();)switch(e.code){case 290:l.hasSetLastLeaderLinePoint=e.value,e=r.next();break;case 291:l.hasSetDoglegVector=e.value,e=r.next();break;case 10:l.lastLeaderLinePoint=ft(r),e=r.lastReadGroup;break;case 11:l.doglegVector=ft(r),e=r.lastReadGroup;break;case 90:l.leaderBranchIndex=e.value,e=r.next();break;case 40:l.doglegLength=e.value,e=r.next();break;case 303:return;case 304:o(),e=r.lastReadGroup;break;default:e=r.next();break}}function o(){let l=i.contextData.leaders[i.contextData.leaders.length-1],c={vertices:[[]]};for(l.leaderLines.push(c);!r.isEOF();)switch(e.code){case 10:c.vertices[0].push(ft(r)),e=r.lastReadGroup;break;case 305:return;default:e=r.next();break}}return n(),i}};var eS=class{constructor(){this.ForEntityName="MTEXT"}parseEntity(r,e){let i={type:e.value};for(e=r.next();!r.isEOF()&&e.code!==0;)switch(e.code){case 3:i.text?i.text+=e.value:i.text=e.value,e=r.next();break;case 1:i.text?i.text+=e.value:i.text=e.value,e=r.next();break;case 10:i.position=ft(r),e=r.lastReadGroup;break;case 7:i.textStyle=e.value,e=r.next();break;case 44:i.lineSpaceFactor=e.value,e=r.next();break;case 11:i.directionVector=ft(r),e=r.lastReadGroup;break;case 40:i.height=e.value,e=r.next();break;case 41:i.width=e.value,e=r.next();break;case 50:i.rotation=e.value,e=r.next();break;case 71:i.attachmentPoint=e.value,e=r.next();break;case 72:i.drawingDirection=e.value,e=r.next();break;case 101:for(;e.code!=0;)e=r.next();break;default:fr(i,e),e=r.next();break}return i}};var tS=class{constructor(){this.ForEntityName="OLE2FRAME"}parseEntity(r,e){let i={type:e.value,binaryData:""};for(e=r.next();e.value!=="OLE"&&e.code!==0;)switch(e.code){case 3:i.documentType=e.value,e=r.next();break;case 70:i.version=e.value,e=r.next();break;case 10:i.leftUpX=e.value,e=r.next();break;case 20:i.leftUpY=e.value,e=r.next();break;case 30:i.leftUpZ=e.value,e=r.next();break;case 11:i.rightDownX=e.value,e=r.next();break;case 21:i.rightDownY=e.value,e=r.next();break;case 31:i.rightDownZ=e.value,e=r.next();break;case 90:i.lengthOfBinaryData=e.value,e=r.next();break;case 310:i.binaryData+=e.value,e=r.next();break;case 101:for(;e.code!=0;)e=r.next();break;default:fr(i,e),e=r.next();break}return i}};var rS=class{constructor(){this.ForEntityName="POINT"}parseEntity(r,e){let n={type:e.value};for(e=r.next();!r.isEOF()&&e.code!==0;)switch(e.code){case 10:n.position=ft(r),e=r.lastReadGroup;break;case 39:n.thickness=e.value,e=r.next();break;case 210:n.extrusionDirection=ft(r),e=r.lastReadGroup;break;case 100:e=r.next();break;case 101:for(;e.code!=0;)e=r.next();break;default:fr(n,e),e=r.next();break}return n}};var iS=class{constructor(){this.ForEntityName="VERTEX"}parseEntity(r,e){var i={type:e.value};for(e=r.next();!r.isEOF()&&e.code!==0;)switch(e.code){case 10:i.x=e.value,e=r.next();break;case 20:i.y=e.value,e=r.next();break;case 30:i.z=e.value,e=r.next();break;case 40:e=r.next();break;case 41:e=r.next();break;case 42:e.value!=0&&(i.bulge=e.value),e=r.next();break;case 70:i.curveFittingVertex=(e.value&1)!==0,i.curveFitTangent=(e.value&2)!==0,i.splineVertex=(e.value&8)!==0,i.splineControlPoint=(e.value&16)!==0,i.threeDPolylineVertex=(e.value&32)!==0,i.threeDPolylineMesh=(e.value&64)!==0,i.polyfaceMeshVertex=(e.value&128)!==0,e=r.next();break;case 50:e=r.next();break;case 71:i.faceA=e.value,e=r.next();break;case 72:i.faceB=e.value,e=r.next();break;case 73:i.faceC=e.value,e=r.next();break;case 74:i.faceD=e.value,e=r.next();break;case 101:for(;e.code!=0;)e=r.next();break;default:fr(i,e),e=r.next();break}return i}};var nS=class{constructor(){this.ForEntityName="POLYLINE"}parseEntity(r,e){var i={type:e.value,vertices:[]};for(e=r.next();!r.isEOF()&&e.code!==0;)switch(e.code){case 10:e=r.next();break;case 20:e=r.next();break;case 30:e=r.next();break;case 39:e=r.next(),i.thickness=e.value;break;case 40:e=r.next();break;case 41:e=r.next();break;case 70:i.shape=(e.value&1)!==0,i.includesCurveFitVertices=(e.value&2)!==0,i.includesSplineFitVertices=(e.value&4)!==0,i.is3dPolyline=(e.value&8)!==0,i.is3dPolygonMesh=(e.value&16)!==0,i.is3dPolygonMeshClosed=(e.value&32)!==0,i.isPolyfaceMesh=(e.value&64)!==0,i.hasContinuousLinetypePattern=(e.value&128)!==0,e=r.next();break;case 71:e=r.next();break;case 72:e=r.next();break;case 73:e=r.next();break;case 74:e=r.next();break;case 75:e=r.next();break;case 210:i.extrusionDirection=ft(r),e=r.lastReadGroup;break;case 101:for(;e.code!=0;)e=r.next();break;default:fr(i,e),e=r.next();break}return i.vertices=UPt(r,e),i}};function UPt(t,r){let e=new iS,i=[];for(;!t.isEOF();)if(r.code===0){if(r.value==="VERTEX")i.push(e.parseEntity(t,r)),r=t.lastReadGroup;else if(r.value==="SEQEND"){BPt(t,r);break}}return i}function BPt(t,r){let e={type:r.value};for(r=t.next();!t.isEOF()&&r.code!==0;)if(r.code===101)for(;r.code!=0;)r=t.next();else fr(e,r),r=t.next();return e}var sS=class{constructor(){this.ForEntityName="RAY"}parseEntity(r,e){let i={type:e.value,vertices:[]};for(e=r.next();!r.isEOF()&&e.code!==0;)switch(e.code){case 10:i.vertices.unshift(ft(r)),e=r.lastReadGroup;break;case 11:i.directionVector=ft(r),e=r.lastReadGroup;break;case 100:e=r.next();break;case 101:for(;e.code!=0;)e=r.next();break;default:fr(i,e),e=r.next();break}return i}};var aS=class{constructor(){this.ForEntityName="REGION"}parseEntity(r,e){let n={type:e.value};for(e=r.next();!r.isEOF()&&e.code!==0;)switch(e.code){case 70:n.modelerVersion=e.value,e=r.next();break;case 1:n.proprietaryData=e.value,e=r.next();break;case 3:n.proprietaryData+=e.value,e=r.next();break;case 101:for(;e.code!=0;)e=r.next();break;default:fr(n,e),e=r.next();break}return n}};var oS=class{constructor(){this.ForEntityName="SEQEND"}parseEntity(r,e){let i={type:e.value};for(e=r.next();!r.isEOF()&&e.code!==0;)switch(e.code){case-2:break;default:fr(i,e),e=r.next();break}return i}};var lS=class{constructor(){this.ForEntityName="SOLID"}parseEntity(r,e){let i={type:e.value,points:[]};for(e=r.next();!r.isEOF()&&e.code!==0;)switch(e.code){case 10:i.points[0]=ft(r),e=r.lastReadGroup;break;case 11:i.points[1]=ft(r),e=r.lastReadGroup;break;case 12:i.points[2]=ft(r),e=r.lastReadGroup;break;case 13:i.points[3]=ft(r),e=r.lastReadGroup;break;case 210:i.extrusionDirection=ft(r),e=r.lastReadGroup;break;case 101:for(;e.code!=0;)e=r.next();break;default:fr(i,e),e=r.next();break}return i}};var cS=class{constructor(){this.ForEntityName="SPLINE"}parseEntity(r,e){let i={type:e.value};for(e=r.next();!r.isEOF()&&e.code!==0;)switch(e.code){case 10:i.controlPoints||(i.controlPoints=[]),i.controlPoints.push(ft(r)),e=r.lastReadGroup;break;case 11:i.fitPoints||(i.fitPoints=[]),i.fitPoints.push(ft(r)),e=r.lastReadGroup;break;case 12:i.startTangent=ft(r),e=r.lastReadGroup;break;case 13:i.endTangent=ft(r),e=r.lastReadGroup;break;case 40:i.knotValues||(i.knotValues=[]),i.knotValues.push(e.value),e=r.next();break;case 70:e.value&1&&(i.closed=!0),e.value&2&&(i.periodic=!0),e.value&4&&(i.rational=!0),e.value&8&&(i.planar=!0),e.value&16&&(i.planar=!0,i.linear=!0),e=r.next();break;case 71:i.degreeOfSplineCurve=e.value,e=r.next();break;case 72:i.numberOfKnots=e.value,e=r.next();break;case 73:i.numberOfControlPoints=e.value,e=r.next();break;case 74:i.numberOfFitPoints=e.value,e=r.next();break;case 210:i.normalVector=ft(r),e=r.lastReadGroup;break;case 101:for(;e.code!=0;)e=r.next();break;default:fr(i,e),e=r.next();break}return i}};var uS=class{constructor(){this.ForEntityName="TEXT"}parseEntity(r,e){let i={type:e.value};for(e=r.next();!r.isEOF()&&e.code!==0;)switch(e.code){case 10:i.startPoint=ft(r),e=r.lastReadGroup;break;case 11:i.endPoint=ft(r),e=r.lastReadGroup;break;case 40:i.textHeight=e.value,e=r.next();break;case 41:i.xScale=e.value,e=r.next();break;case 50:i.rotation=e.value,e=r.next();break;case 1:i.text=e.value,e=r.next();break;case 72:i.halign=e.value,e=r.next();break;case 73:i.valign=e.value,e=r.next();break;case 7:i.textStyle=e.value,e=r.next();break;case 71:i.mirrored=e.value,e=r.next();break;case 101:for(;e.code!=0;)e=r.next();break;default:fr(i,e),e=r.next();break}return i}};var hS=class{constructor(){this.ForEntityName="VIEWPORT"}parseEntity(r,e){let i={type:e.value};for(e=r.next();!r.isEOF()&&e.code!==0;)switch(e.code){case 68:i.viewportStatus=e.value,e=r.next();break;case 40:i.width_paperSpace=e.value,e=r.next();break;case 41:i.height_paperSpace=e.value,e=r.next();break;case 69:i.viewportId=e.value,e=r.next();break;case 10:i.centerPoint=ft(r),e=r.lastReadGroup;break;case 12:i.centerPoint_dcs=ft(r),e=r.lastReadGroup;break;case 13:i.snapBasePoint_dcs=ft(r),e=r.lastReadGroup;break;case 14:i.snapSpacing_dcs=ft(r),e=r.lastReadGroup;break;case 15:i.gridSpacing_dcs=ft(r),e=r.lastReadGroup;break;case 16:i.viewDirection=ft(r),e=r.lastReadGroup;break;case 17:i.viewTarget=ft(r),e=r.lastReadGroup;break;case 42:i.perspectiveLens=e.value,e=r.next();break;case 43:i.frontClippingPlaneZ=e.value,e=r.next();break;case 44:i.backClippingPlaneZ=e.value,e=r.next();break;case 45:i.viewHeight=e.value,e=r.next();break;case 50:i.snapAngle=e.value,e=r.next();break;case 51:i.viewTwistAngle=e.value,e=r.next();break;case 72:i.circleZoomPercent=e.value,e=r.next();break;case 331:i.frozenLayerHandles=i.frozenLayerHandles||[],i.frozenLayerHandles.push(e.value),e=r.next();break;case 90:i.viewportStatusFlags=e.value,e=r.next();break;case 340:i.viewportClippingBoundaryhandleId=e.value,e=r.next();break;case 1:i.plotStyleSheetName=e.value,e=r.next();break;case 281:i.renderMode=e.value,e=r.next();break;case 71:i.viewportFlag_ucs=e.value,e=r.next();break;case 74:i.ucsIcon=e.value,e=r.next();break;case 110:i.ucsOrigin=ft(r),e=r.lastReadGroup;break;case 111:i.ucsXAxis=ft(r),e=r.lastReadGroup;break;case 112:i.ucsYAxis=ft(r),e=r.lastReadGroup;break;case 345:i.ucsTableRecordHandle=e.value,e=r.next();break;case 346:i.baseUcsTableRecordHandle=e.value,e=r.next();break;case 79:i.orthographicType=e.value,e=r.next();break;case 146:i.elevation=e.value,e=r.next();break;case 170:i.shadePlotMode=e.value,e=r.next();break;case 61:i.frequency=e.value,e=r.next();break;case 292:i.lightingFlag=e.value,e=r.next();break;case 282:i.lightingType=e.value,e=r.next();break;case 141:i.viewBrightness=e.value,e=r.next();break;case 142:i.viewContrast=e.value,e=r.next();break;case 101:for(;e.code!=0;)e=r.next();break;default:fr(i,e),e=r.next();break}return i}};var pS=class{constructor(){this.ForEntityName="XLINE"}parseEntity(r,e){let i={type:e.value,vertices:[]};for(e=r.next();!r.isEOF()&&e.code!==0;)switch(e.code){case 10:i.vertices.unshift(ft(r)),e=r.lastReadGroup;break;case 11:i.directionVector=ft(r),e=r.lastReadGroup;break;case 100:e=r.next();break;case 101:for(;e.code!=0;)e=r.next();break;default:fr(i,e),e=r.next();break}return i}};var jA=class{constructor(){this.ForObjectName="DICTIONARY"}parseObject(r,e){let n={type:e.value},s=[],a=[];for(e=r.next();!r.isEOF()&&e.code!==0;)switch(e.code){case 280:n.isHardOwner=e.value===1,e=r.next();break;case 281:n.cloningFlag=e.value,e=r.next();break;case 3:s.push(e.value),e=r.next();break;case 350:a.push(e.value),e=r.next();break;case 360:a.push(e.value),e=r.next();break;case 100:e=r.next();break;case 102:e=r.next();break;default:ah(n,e),e=r.next();break}if(s.length!==a.length)throw new Error("The number of Dictionary entries does not match !");return n.entries={},s.forEach((o,l)=>{n.entries[a[l]]=o}),n}};var WA=class{constructor(){this.ForObjectName="LAYOUT"}parseObject(r,e){let n={type:e.value};for(e=r.next();!r.isEOF()&&e.code!==0;)switch(e.code){case 100:e=r.next();break;case 1:n.layoutName=e.value,e=r.next();break;case 70:n.flag=e.value,e=r.next();break;case 71:n.tabOrder=e.value,e=r.next();break;case 76:n.orthographicType=e.value,e=r.next();break;case 10:n.minLimit=ft(r),e=r.lastReadGroup;break;case 11:n.maxLimit=ft(r),e=r.lastReadGroup;break;case 12:n.basePoint=ft(r),e=r.lastReadGroup;break;case 13:n.origin=ft(r),e=r.lastReadGroup;break;case 14:n.minExtent=ft(r),e=r.lastReadGroup;break;case 15:n.maxExtent=ft(r),e=r.lastReadGroup;break;case 16:n.XAxis=ft(r),e=r.lastReadGroup;break;case 17:n.YAxis=ft(r),e=r.lastReadGroup;break;case 146:n.elevation=e.value,e=r.next();break;case 331:n.viewportHandle=e.value,e=r.next();break;default:ah(n,e),e=r.next();break}return n.blockTableHandle=n.ownerHandle,n}};var qA=class{constructor(){this.ForObjectName="SORTENTSTABLE"}parseObject(r,e){let n={type:e.value},s=!1;n.sortEntsObject={},n.sortEntsObject.entityHandles=[];let a=[];for(e=r.next();!r.isEOF()&&e.code!==0;)switch(e.code){case 5:s?(a.push(e.value),n.sortEntsObject.entityHandles.push(a),a=[]):n.handle=e.value,e=r.next();break;case 100:e=r.next(),s=!0;break;case 102:e=r.next();break;case 330:s?n.sortEntsObject.ownerHandle=e.value:n.ownerHandle=e.value,e=r.next();break;case 331:a.push(e.value),e=r.next();break;default:ah(n,e),e=r.next();break}return n}};var YA=class{constructor(){this.ForObjectName="SPATIAL_FILTER"}parseObject(r,e){let n={type:e.value};n.vertices=[];let s,a;for(e=r.next();!r.isEOF()&&e.code!==0;)switch(e.code){case 11:n.origin=ft(r),e=r.lastReadGroup;break;case 70:n.numberOfPointsOnClipBoundary=e.value,n.numberOfPointsOnClipBoundary===2?(e=r.next(),s=ft(r),e=r.lastReadGroup,a=ft(r),e=r.lastReadGroup,n.vertices.push(s,{x:a.x,y:s.y},a,{x:s.x,y:a.y},s)):n.numberOfPointsOnClipBoundary>2?(n.vertices=kPt(n.numberOfPointsOnClipBoundary,r),e=r.lastReadGroup):e=r.next();break;case 71:n.clipBoundaryVisible=e.value===1,e=r.next();break;case 72:n.frontClippingPlaneFlag=e.value===1,e=r.next(),n.frontClippingPlaneFlag&&e.code===40&&(n.frontClippingPlaneDistance=e.value,e=r.next());break;case 73:n.backClippingPlaneFlag=e.value===1,e=r.next(),n.backClippingPlaneFlag&&e.code===41&&(n.backClippingPlaneDistance=e.value,e=r.next());break;case 100:e=r.next();break;case 102:e=r.next();break;case 210:n.extrusionDirectionX=e.value,e=r.next();break;case 220:n.extrusionDirectionY=e.value,e=r.next();break;case 230:n.extrusionDirectionZ=e.value,e=r.next();break;case 40:n.invertBlockMatrix=pMe(r,40),n.matrix=pMe(r,40),e=r.lastReadGroup;break;default:ah(n,e),e=r.next();break}return n}};function kPt(t,r){r.next();let e=[];for(;e.length<t;)e.push(ft(r));return e}function pMe(t,r){let e=t.lastReadGroup,i=[];for(let n=0;n<12;n++){if(e.code!==r)throw new Error(`Expected code for matrix value to be ${r} but got ${e.code}`);i.push(e.value),e=t.next()}return i}var XA=class{constructor(){this.ForObjectName="XRECORD"}parseObject(r,e){let n={type:e.value,binaryData:""};for(e=r.next();!r.isEOF()&&e.code!==0;)switch(e.code){case 100:e=r.next();break;case 280:n.cloningFlag=e.value,e=r.next();break;case 310:n.binaryData+=e.value,e=r.next();break;case 311:e=r.next();break;default:ah(n,e),e=r.next();break}return n}};function GPt(t){t.registerEntityHandler(GI),t.registerEntityHandler(VI),t.registerEntityHandler(zI),t.registerEntityHandler(jI),t.registerEntityHandler(WI),t.registerEntityHandler(qI),t.registerEntityHandler(QI),t.registerEntityHandler(YI),t.registerEntityHandler(XI),t.registerEntityHandler($I),t.registerEntityHandler(ZI),t.registerEntityHandler(KI),t.registerEntityHandler(JI),t.registerEntityHandler(eS),t.registerEntityHandler(tS),t.registerEntityHandler(rS),t.registerEntityHandler(nS),t.registerEntityHandler(aS),t.registerEntityHandler(sS),t.registerEntityHandler(oS),t.registerEntityHandler(lS),t.registerEntityHandler(cS),t.registerEntityHandler(uS),t.registerEntityHandler(hS),t.registerEntityHandler(pS)}function VPt(t){t.registerObjectHandler(jA),t.registerObjectHandler(WA),t.registerObjectHandler(qA),t.registerObjectHandler(YA),t.registerObjectHandler(XA)}function zPt(t){let e=new Df(t).readBytes(22),i="";for(let n=0;n<18;n++)i+=String.fromCharCode(e[n]);return i==="AutoCAD Binary DXF"}var x0=class{constructor(){this._entityHandlers={};this._objectHandlers={};this._layoutBlocks={};this.unhandledSections={};this.unhandledObjects={};this.unhandledEntities={};this.unsupportedLineTypes={};GPt(this),VPt(this)}parse(r){if(typeof r=="string"){let e=this.splitByLineSeparator(r),i=new zT(e);return this._parse(i)}else{let e;if(zPt(r))e=new BI(r);else{let i=new TextDecoder().decode(r),n=Date.now(),s=this.splitByLineSeparator(i);ne.info(`[DxfParser] string.split costed ${(Date.now()-n)/1e3}s, it is avoidable by using dxf in binary.`),e=new zT(s)}return this._parse(e)}}registerEntityHandler(r){let e=new r;this._entityHandlers[e.ForEntityName]=e}registerObjectHandler(r){let e=new r;this._objectHandlers[e.ForObjectName]=e}parseSync(r){return this.parse(r)}parseStream(r){let e="",i=this;return new Promise((n,s)=>{r.on("data",a=>{e+=a}),r.on("end",()=>{try{n(i.parse(e))}catch(a){s(a)}}),r.on("error",a=>{s(a)})})}_parse(r){let e={},i=0;if(!r.hasNext())throw Error("Empty file");let n=this,s;function a(){for(s=r.next();s.code===999;)s=r.next();for(;!r.isEOF();)if(s.code===0&&s.value==="SECTION"){if(s=r.next(),s.code!==2){ne.error("Unexpected code %s after 0:SECTION",dMe(s)),s=r.next();continue}if(s.value==="HEADER")ne.trace("> HEADER"),e.header=o(),ne.trace("<");else if(s.value==="TABLES")ne.trace("> TABLES"),e.tables=u(),ne.trace("<");else if(s.value==="BLOCKS")ne.trace("> BLOCKS"),e.blocks=l(),ne.trace("<");else if(s.value==="ENTITIES")ne.trace("> ENTITIES"),e.entities=x(!1),ne.trace("<");else if(s.value==="OBJECTS")ne.trace("> OBJECTS"),e.objects=S(),ne.trace("<");else if(s.value==="EOF")ne.trace("EOF");else{let w=s.value;n.unhandledSections[w]?n.unhandledSections[w]++:n.unhandledSections[w]=1}}else s=r.next();let _=(w,F)=>{Object.keys(F).length>0&&ne.warn(w,F)};n.unhandledSections={},n.unhandledEntities={},n.unhandledObjects={},n.unsupportedLineTypes={}}function o(){let _=null,w=null,F={};for(s=r.next();;){if(tl(s,0,"ENDSEC")){_&&(F[_]=w);break}else s.code===9?(_&&(F[_]=w),_=s.value):s.code===10?w={x:s.value}:s.code===20?w.y=s.value:s.code===30?w.z=s.value:w=s.value;s=r.next()}return s=r.next(),F}function l(){let _={};for(s=r.next();s.value!=="EOF"&&!tl(s,0,"ENDSEC");)if(tl(s,0,"BLOCK")){ne.trace("block {");let w=c();ne.trace("}"),P(w),w.name?_[w.name]=w:ne.error(`[DxfParser] Block with handle '${w.handle}' is missing a name, ignored!`)}else id(s),s=r.next();return _}function c(){let _={};for(s=r.next();s.value!=="EOF";){switch(s.code){case 1:_.xrefPath=s.value,s=r.next();break;case 2:_.name=s.value,s=r.next();break;case 3:_.name2=s.value,s=r.next();break;case 4:_.description=s.value,s=r.next();break;case 5:_.handle=s.value,s=r.next();break;case 8:_.layer=s.value,s=r.next();break;case 10:_.position=D(s),s=r.lastReadGroup;break;case 67:_.paperSpace=!!(s.value&&s.value===1),s=r.next();break;case 70:_.blockType=s.value,s=r.next();break;case 100:s=r.next();break;case 330:_.ownerHandle=s.value,s=r.next();break;case 0:if(s.value=="ENDBLK")break;_.entities=x(!0);break;default:id(s),s=r.next();break}if(tl(s,0,"ENDBLK")){s=r.next();break}}return _}function u(){let _={};for(s=r.next();s.value!=="EOF"&&!tl(s,0,"ENDSEC");)tl(s,0,"TABLE")?(s=r.next(),b[s.value]?(ne.trace(s.value+" Table {"),_[b[s.value].tableName]=p(s),ne.trace("}")):ne.trace("Unhandled Table "+s.value)):s=r.next();return s=r.next(),_}let h="ENDTAB";function p(_){let w=b[_.value],F={},X=0;for(s=r.next();!tl(s,0,h);)switch(s.code){case 5:F.handle=s.value,s=r.next();break;case 330:F.ownerHandle=s.value,s=r.next();break;case 100:s.value==="AcDbSymbolTable"||id(s),s=r.next();break;case 70:X=s.value,s=r.next();break;case 0:s.value===w.dxfSymbolName?F[w.tableRecordsProperty]=w.parseTableRecords():(id(s),s=r.next());break;default:id(s),s=r.next();break}let H=F[w.tableRecordsProperty];if(H){let he=(()=>{if(H.constructor===Array)return H.length;if(typeof H=="object")return Object.keys(H).length})();X!==he&&ne.warn(`[DxfParser] Parsed ${he} ${w.dxfSymbolName}s but expected ${X}`)}return s=r.next(),F}function d(){let _=[],w={};for(ne.trace("ViewPort {"),s=r.next();!tl(s,0,h);)switch(s.code){case 2:w.name=s.value,s=r.next();break;case 10:w.lowerLeftCorner=D(s),s=r.lastReadGroup;break;case 11:w.upperRightCorner=D(s),s=r.lastReadGroup;break;case 12:w.center=D(s),s=r.lastReadGroup;break;case 13:w.snapBasePoint=D(s),s=r.lastReadGroup;break;case 14:w.snapSpacing=D(s),s=r.lastReadGroup;break;case 15:w.gridSpacing=D(s),s=r.lastReadGroup;break;case 16:w.viewDirectionFromTarget=D(s),s=r.lastReadGroup;break;case 17:w.viewTarget=D(s),s=r.lastReadGroup;break;case 40:w.viewHeight=s.value,s=r.next();break;case 41:w.aspectRatio=s.value,s=r.next();break;case 42:w.lensLength=s.value,s=r.next();break;case 43:w.frontClippingPlane=s.value,s=r.next();break;case 44:w.backClippingPlane=s.value,s=r.next();break;case 45:w.viewHeight=s.value,s=r.next();break;case 50:w.snapRotationAngle=s.value,s=r.next();break;case 51:w.viewTwistAngle=s.value,s=r.next();break;case 79:w.orthographicType=s.value,s=r.next();break;case 110:w.ucsOrigin=D(s),s=r.lastReadGroup;break;case 111:w.ucsXAxis=D(s),s=r.lastReadGroup;break;case 112:w.ucsYAxis=D(s),s=r.lastReadGroup;break;case 281:w.renderMode=s.value,s=r.next();break;case 282:w.defaultLightingType=s.value,s=r.next();break;case 292:w.defaultLightingOn=s.value,s=r.next();break;case 330:w.ownerHandle=s.value,s=r.next();break;case 63:case 421:case 431:w.ambientColor=s.value,s=r.next();break;case 0:s.value==="VPORT"&&(ne.trace("}"),_.push(w),ne.trace("ViewPort {"),w={},s=r.next());break;default:id(s),s=r.next();break}return ne.trace("}"),_.push(w),_}function f(){let _={},w={},F=0,X="",H=!1;for(ne.trace("LType {"),s=r.next();!tl(s,0,"ENDTAB");)switch(s.code){case 2:w.name=s.value.toUpperCase(),X=w.name,s=r.next();break;case 3:w.description=s.value,s=r.next();break;case 9:s=r.next();break;case 40:w.patternLength=s.value,s=r.next();break;case 44:s=r.next();break;case 45:s=r.next();break;case 46:s=r.next();break;case 49:let he=s.value;H&&(he=Math.abs(he),H=!1),w.pattern.push(he),s=r.next();break;case 70:s=r.next();break;case 73:F=s.value,F>0&&(w.pattern=[]),s=r.next();break;case 74:s.value!==0&&(H=!0,n.unsupportedLineTypes[w.name]?n.unsupportedLineTypes[w.name]++:n.unsupportedLineTypes[w.name]=1),s=r.next();break;case 75:s=r.next();break;case 0:ne.trace("}"),F>0&&F!==w.pattern.length&&ne.warn("[DxfParser] lengths do not match on LTYPE pattern"),_[X]=w,w={},ne.trace("LType {"),s=r.next();break;default:s=r.next();break}return ne.trace("}"),_[X]=w,_}function m(){let _={},w={},F;for(ne.trace("Layer {"),s=r.next();!tl(s,0,"ENDTAB");)switch(s.code){case 2:w.name=s.value,F=s.value,s=r.next();break;case 5:w.handle=s.value,s=r.next();break;case 62:w.visible=s.value>=0,w.colorIndex=Math.abs(s.value),w.color=jPt(w.colorIndex),s=r.next();break;case 70:w.flag=s.value,w.frozen=(w.flag&1)>0,s=r.next();break;case 420:w.color=Math.abs(s.value),s=r.next();break;case 6:w.lineType=s.value.toUpperCase(),s=r.next();break;case 370:w.lineweight=s.value,s=r.next();break;case 0:s.value==="LAYER"&&(ne.trace("}"),F&&(_[F]=w),ne.trace("Layer {"),w={},F=void 0,s=r.next());break;default:id(s),s=r.next();break}return ne.trace("}"),F&&(_[F]=w),_}function g(){let _={},w={},F;for(ne.trace("Style {"),s=r.next();!tl(s,0,"ENDTAB");)switch(s.code){case 2:w.styleName=s.value,F=s.value,s=r.next();break;case 3:w.fontFile=s.value,s=r.next();break;case 4:w.bigFontFile=s.value,s=r.next();break;case 5:w.handle=s.value,s=r.next();break;case 7:w.textStyle=s.value,s=r.next();break;case 40:w.textHeight=s.value,s=r.next();break;case 41:w.xScale=s.value,s=r.next();break;case 42:w.priorTextHeight=s.value,s=r.next();break;case 50:w.rotation=s.value,s=r.next();break;case 70:s=r.next();break;case 71:w.mirroreType=s.value,s=r.next();break;case 330:w.ownerHandle=s.value,s=r.next();break;case 0:s.value==="STYLE"&&(ne.trace("}"),F&&(_[F]=w),ne.trace("Style {"),w={},F=void 0,s=r.next());break;default:s=r.next();break}return ne.trace("}"),F&&(_[F]=w),_}function y(){let _={},w={},F;for(ne.trace("DimStyle {"),s=r.next();!tl(s,0,"ENDTAB");)switch(s.code){case 2:w.styleName=s.value,F=s.value,s=r.next();break;case 40:w.DIMSCALE=s.value,s=r.next();break;case 41:w.DIMASZ=s.value,s=r.next();break;case 42:w.DIMEXO=s.value,s=r.next();break;case 44:w.DIMEXE=s.value,s=r.next();break;case 75:w.DIMSE1=s.value,s=r.next();break;case 76:w.DIMSE2=s.value,s=r.next();break;case 77:w.DIMTAD=s.value,s=r.next();break;case 140:w.DIMTXT=s.value,s=r.next();break;case 144:w.DIMLFAC=s.value,s=r.next();break;case 147:w.DIMGAP=s.value,s=r.next();break;case 176:w.DIMCLRD=s.value,s=r.next();break;case 178:w.DIMCLRT=s.value,s=r.next();break;case 271:w.DIMDEC=s.value,s=r.next();break;case 341:w.DIMLDRBLK=s.value,s=r.next();break;case 70:s=r.next();break;case 0:s.value==="DIMSTYLE"&&(ne.trace("}"),F&&(_[F]=w),ne.trace("DimStyle {"),w={},F=void 0,s=r.next());break;default:s=r.next();break}return ne.trace("}"),F&&(_[F]=w),_}function E(){let _={},w={},F;for(ne.trace("BlockRecord {"),s=r.next();!tl(s,0,"ENDTAB");)switch(s.code){case 5:w.handle=s.value,s=r.next();break;case 330:w.ownerHandle=s.value,s=r.next();break;case 2:w.blockName=s.value,F=w.blockName,s=r.next();break;case 340:w.layoutHandle=s.value,s=r.next();break;case 70:w.blockInsertUnits=s.value,s=r.next();break;case 280:w.blockExplodability=s.value,s=r.next();break;case 281:w.blockScalability=s.value,s=r.next();break;case 310:w.bitmap=s.value,s=r.next();break;case 0:if(s.value==="BLOCK_RECORD"){ne.trace("}"),F&&(_[F]=w);let H=w.layoutHandle;F&&H&&H.length>0&&H!=="0"&&(n._layoutBlocks[H]=w),ne.trace("BlockRecord {"),w={},F=void 0,s=r.next()}else id(s),s=r.next();break;default:id(s),s=r.next();break}ne.trace("}"),F&&(_[F]=w);let X=w.layoutHandle;return F&&X&&X.length>0&&X!=="0"&&(n._layoutBlocks[X]=w),_}let b={VPORT:{tableRecordsProperty:"viewPorts",tableName:"viewPort",dxfSymbolName:"VPORT",parseTableRecords:d},LTYPE:{tableRecordsProperty:"lineTypes",tableName:"lineType",dxfSymbolName:"LTYPE",parseTableRecords:f},LAYER:{tableRecordsProperty:"layers",tableName:"layer",dxfSymbolName:"LAYER",parseTableRecords:m},BLOCK_RECORD:{tableRecordsProperty:"blockRecords",tableName:"blockRecord",dxfSymbolName:"BLOCK_RECORD",parseTableRecords:E},STYLE:{tableRecordsProperty:"styles",tableName:"style",dxfSymbolName:"STYLE",parseTableRecords:g},DIMSTYLE:{tableRecordsProperty:"dimStyles",tableName:"dimStyle",dxfSymbolName:"DIMSTYLE",parseTableRecords:y}};function x(_){let w=[],F=_?"ENDBLK":"ENDSEC";for(_||(s=r.next());;)if(s.code===0){if(s.value===F)break;let X=n._entityHandlers[s.value];if(X!=null){ne.trace(s.value+" {");let H=X.parseEntity(r,s);H&&(H.layer||(H.layer="0"),H.colorIndex===void 0&&(H.colorIndex=256),H.lineType||(H.lineType=VA)),s=r.lastReadGroup,ne.trace("}"),P(H),w.push(H)}else{let H=s.value;n.unhandledEntities[H]||(n.unhandledEntities[H]=0),n.unhandledEntities[H]++,s=r.next();continue}}else s=r.next();return F=="ENDSEC"&&(s=r.next()),w}function S(){let _={},w="ENDSEC";for(s=r.next();s.value!=="EOF";)if(s.code===0){if(s.value===w)break;let F=n._objectHandlers[s.value];if(F!=null){ne.trace(s.value+" {");let X=F.parseObject(r,s),H=s.value;s=r.lastReadGroup,ne.trace("}"),P(X),_[H]||(_[H]=[]),_[H].push(X)}else{let X=s.value;n.unhandledObjects[X]||(n.unhandledObjects[X]=0),n.unhandledObjects[X]++,s=r.next();continue}}else s=r.next();return s=r.next(),_.LAYOUT&&(Object.keys(n._layoutBlocks).length!==_.LAYOUT.length&&ne.warn("[DxfParser] The number of layout and block associations does not match!"),_.LAYOUT.forEach(F=>{n._layoutBlocks[F.handle]&&(F.associatedBlockName=n._layoutBlocks[F.handle].blockName)}),_.LAYOUT.sort((F,X)=>F.tabOrder-X.tabOrder)),_}function D(_){let w={},F=_.code;if(w.x=_.value,F+=10,_=r.next(),_.code!=F)throw new Error(`Expected code for point value to be ${F} but got ${_.code}.`);return w.y=_.value,F+=10,_=r.next(),_.code!=F||(w.z=_.value,_=r.next()),w}function P(_){if(!_)throw new TypeError("entity cannot be undefined or null");_.handle||(_.handle=(i++).toString())}return a(),e}splitByLineSeparator(r){let e=[],i=0;for(let n=0,s=r.length;n<s;++n){let a=r[n];if(a==="\r"||a===`
|
||
`){let o=r.substring(i,n);e.push(o),a==="\r"&&r[n+1]===`
|
||
`&&n++,i=n+1}}return e.push(r.substring(i,r.length)),e}};function tl(t,r,e){return t.code===r&&t.value===e}function id(t){ne.trace("unhandled group "+dMe(t))}function dMe(t){return t.code+":"+t.value}function jPt(t){return zA[t]}var ZA=(n=>(n.Added="Added",n.Removed="Removed",n.Modified="Modified",n.NoChange="NoChange",n))(ZA||{}),zs=1,$A=class{constructor(r,e){this.changes={};this.comparedBlocks=new Map;this.isComparingBlock=!1;this.isComparingDimension=!1;if(this.dxf1=r,this.dxf2=e,!r||!e)throw new Error("Invalid dxf data to compare!")}getLayerFrozen(r,e){var n,s,a;let i=(s=(n=r.tables)==null?void 0:n.layer)==null?void 0:s.layers;return i&&((a=i[e.layer])==null?void 0:a.frozen)}compare(r){return ot(this,null,function*(){this.changes={};let e=[],i=new Map;return this.dxf1.entities.forEach(n=>{if(n.inPaperSpace!==!0){let s=this.getLayerFrozen(this.dxf1,n)===!0;!$A.ignoreEntityTypes.includes(n.type)&&!s&&e.push(n)}}),this.dxf2.entities.forEach(n=>{if(n.inPaperSpace!==!0){let s=this.getLayerFrozen(this.dxf2,n)===!0;!$A.ignoreEntityTypes.includes(n.type)&&!s&&i.set(n.handle,n)}}),yield this.compareEntities(e,i,void 0,r),Promise.resolve(this.changes)})}isDimensionBlock(r){return r.includes("*D")}compareInsertOrDemensionEntities(r,e,i,n){if(!r.block||!e.block)return;let s=r.block,a;if(this.isComparingBlock=!0,this.isDimensionBlock(s)){let o=this.dxf1.blocks[r.block],l=this.dxf2.blocks[e.block],c=Date.now();this.isComparingDimension=!0,a=this.compareBlock(o,l),this.isComparingDimension=!1,ne.debug(`[DxfCompare] compare block: ${s} cost ${(Date.now()-c)/1e3}s`)}else{if(!this.comparedBlocks.has(s)){let o=this.dxf1.blocks[s],l=this.dxf2.blocks[s],c=Date.now(),u=this.compareBlock(o,l);this.comparedBlocks.set(s,u),ne.debug(`[DxfCompare] compare block: ${s} cost ${(Date.now()-c)/1e3}s`)}a=this.comparedBlocks.get(s)}return a==null||a.forEach(o=>{if(o.parentHandles||(o.parentHandles=[]),i&&n)o.type==="Added"?o.parentHandles.push(n):o.type==="Removed"&&o.parentHandles.push(i);else{let l=[...o.parentHandles,r.handle];o.type==="Added"?this.changes[zs]=Mn(Ur({id:zs},o),{parentHandles:l}):o.type==="Removed"&&(this.changes[zs]=Mn(Ur({id:zs},o),{parentHandles:l})),zs++}}),!i&&!n&&(this.isComparingBlock=!1),a}compareBlock(r,e){var o,l;let i=[],n=[];(o=r==null?void 0:r.entities)==null||o.forEach(c=>{c.type!=="ATTDEF"&&!this.bIgnoreChildEntitiesOriginalType(c)&&i.push(c)}),(l=e==null?void 0:e.entities)==null||l.forEach(c=>{c.type!=="ATTDEF"&&!this.bIgnoreChildEntitiesOriginalType(c)&&n.push(c)});let s=[],a=[];for(let c=0;c<i.length;c++){let u=i[c],h=!1;n.length===0&&(h=!0),this.isComparingDimension||(this.isComparingDimension=u.type==="DIMENSION");for(let p=0;p<n.length;p++){let d=n[p];if(!this.entitiesEqual(u,d))h=!0;else if(u.type==="INSERT"&&d.type==="INSERT"||u.type==="DIMENSION"&&d.type==="DIMENSION"){let f=this.compareInsertOrDemensionEntities(u,d,u.handle,d.handle);f&&f.length>0&&s.push(...f),h=!1,n.splice(p--,1);break}else{h=!1,n.splice(p--,1);break}}h&&(s.push({type:"Removed",handle:u.handle}),a.push(u.handle))}return n.forEach(c=>{a.includes(c.handle)||s.push({type:"Added",handle:c.handle})}),s}compareEntities(r,e,i,n){return ot(this,null,function*(){var c,u;let s=r.length,a=Math.round(Math.pow(s,.5)),o=Date.now(),l=h=>ot(this,null,function*(){if(n&&(h%a===0||h===s-1)){n(new ProgressEvent("compareProgress",{loaded:h+1,total:s}));let p=500,d=Date.now();(d-o>p||h===s-1)&&(yield bs.sleep(0),o=d)}});for(let h=0;h<r.length;h++){let p=r[h].handle;if(!e.has(p))this.changes[zs]={id:zs,type:"Removed",handle:p},i&&(this.changes[zs].parentHandles=[i]),zs++;else{let d=r[h],f=e.get(p);if(this.entitiesEqual(d,f)){if(T0.includes(d.type)){if(this.bIgnoreChildEntitiesOriginalType(d)){e.delete(p),ne.warn(`[DxfCompare] We cannot compare insert (handle '${d.handle}') yet, ignored!`);continue}this.compareInsertOrDemensionEntities(d,f)}}else{if((c=d.extendedData)!=null&&c.originalType&&((u=f.extendedData)!=null&&u.originalType)&&d.block!==f.block){e.delete(p);continue}this.changes[zs]={id:zs,type:"Modified",handle:p},i&&(this.changes[zs].parentHandles=[i]),zs++}e.delete(p)}yield l(h)}for(let h of e){let p=h[0];this.changes[zs]={id:zs,type:"Added",handle:p},i&&(this.changes[zs].parentHandles=[i]),zs++}})}bIgnoreChildEntitiesOriginalType(r){var e;return cMe.includes((e=r.extendedData)==null?void 0:e.originalType)}entitiesEqual(r,e){if(!this.baseEntitiesEqual(r,e))return!1;let i=r.type,n=!0;return i==="CIRCLE"||i==="ARC"?n=this.arcsEqual(r,e):i==="LWPOLYLINE"||i==="LINE"?n=this.linesEqual(r,e):i==="POLYLINE"?n=this.polylinesEqual(r,e):i==="TEXT"?n=this.textsEqual(r,e):i==="SOLID"?n=this.solidsEqual(r,e):i==="POINT"?n=this.pointEntitiesEqual(r,e):i==="INSERT"?n=this.insertsEqual(r,e):i==="SPLINE"?n=this.splinesEqual(r,e):i==="MTEXT"?n=this.mtextsEqual(r,e):i==="ELLIPSE"?n=this.ellipsesEqual(r,e):i==="DIMENSION"?n=this.dimensionsEqual(r,e):i==="REGION"?n=this.regionsEqual(r,e):i==="ATTDEF"?n=this.attDefsEqual(r,e):i==="ATTRIB"?n=this.attribsEqual(r,e):i==="HATCH"?n=this.hatchesEqual(r,e):i==="VIEWPORT"?n=this.viewportsEqual(r,e):i==="LEADER"?n=this.leadersEqual(r,e):i==="MULTILEADER"?n=this.mleadersEqual(r,e):i==="OLE2FRAME"&&(n=this.ole2framesEqual(r,e)),n}baseEntitiesEqual(r,e){var i,n;return!(((i=r.extendedData)==null?void 0:i.originalType)!==((n=e.extendedData)==null?void 0:n.originalType)||!this.isComparingBlock&&!this.isComparingDimension&&r.handle!==e.handle||!this.isComparingDimension&&r.ownerHandle!==e.ownerHandle||r.type!==e.type)}arcsEqual(r,e){return!(!this.vectorsEqual(r.center,e.center)||!this.numberEqual(r.radius,e.radius)||!this.numberEqual(r.startAngle,e.startAngle)||!this.numberEqual(r.endAngle,e.endAngle))}linesEqual(r,e){return!(!this.verticesEqual(r.vertices,e.vertices)||r.shape!==e.shape)}polylinesEqual(r,e){return!(!this.vertexEntitiesEqual(r.vertices,e.vertices)||r.shape!==e.shape||r.isPolyfaceMesh!==e.isPolyfaceMesh)}textsEqual(r,e){if(r.halign!==e.halign)return!1;if(r.halign===3||r.halign===5){if(!this.pointsEqual(r.startPoint,e.startPoint))return!1}else if(!this.pointsEqual(r.endPoint,e.endPoint))return!1;return r.text===e.text}solidsEqual(r,e){return!!this.verticesEqual(r.points,e.points)}pointEntitiesEqual(r,e){return!!this.pointsEqual(r.position,e.position)}splinesEqual(r,e){return!(!this.verticesEqual(r.controlPoints,e.controlPoints)||!this.numbersEqual(r.knotValues,e.knotValues)||!this.numberEqual(r.degreeOfSplineCurve,e.degreeOfSplineCurve))}mtextsEqual(r,e){return!(!this.pointsEqual(r.position,e.position)||r.text!==e.text||!this.numberEqual(r.rotation,e.rotation))}ellipsesEqual(r,e){return!(!this.pointsEqual(r.center,e.center)||!this.pointsEqual(r.majorAxisEndPoint,e.majorAxisEndPoint)||!this.numberEqual(r.axisRatio,e.axisRatio)||!this.numberEqual(r.startAngle,e.startAngle)||!this.numberEqual(r.endAngle,e.endAngle))}attDefsEqual(r,e){return!(!this.pointsEqual(r.startPoint,e.startPoint)||!this.pointsEqual(r.endPoint,e.endPoint)||!this.numberEqual(r.xScale,e.xScale)||r.text!==e.text||r.tag!==e.tag||r.prompt!==e.prompt)}attribsEqual(r,e){return this.attDefsEqual(r,e)}hatchesEqual(r,e){let i=r,n=e;return!(!this.numberEqual(i.elevationX,n.elevationX)||!this.numberEqual(i.elevationY,n.elevationY)||!this.numberEqual(i.elevationZ,n.elevationZ)||!this.hatchBoundaryPathArraysEqual(i.boundaryPaths,n.boundaryPaths))}viewportsEqual(r,e){let i=r,n=e;return!(!this.pointsEqual(i.centerPoint,n.centerPoint)||!this.pointsEqual(i.centerPoint_dcs,n.centerPoint_dcs)||!this.pointsEqual(i.viewDirection,n.viewDirection)||!this.numberEqual(i.viewHeight,n.viewHeight)||i.width_paperSpace!==n.width_paperSpace||i.height_paperSpace!==n.height_paperSpace)}leadersEqual(r,e){return!(!this.pointsEqual(r.position,e.position)||!this.verticesEqual(r.vertices,e.vertices)||r.arrowHeadBlockHandle!==e.arrowHeadBlockHandle||!this.numberEqual(r.arrowHeadSize,e.arrowHeadSize)||!this.numberEqual(r.rotation,e.rotation)||r.block!==e.block)}mleadersEqual(r,e){return r.arrowHeadId!==e.arrowHeadId||!this.numberEqual(r.arrowHeadSize,e.arrowHeadSize)?!1:this.mleaderContextEqual(r.contextData,e.contextData)}ole2framesEqual(r,e){return!(r.leftUpX!==e.leftUpX||r.leftUpY!==e.leftUpY||r.leftUpZ!==e.leftUpZ||r.rightDownX!==e.rightDownX||r.rightDownY!==e.rightDownY||r.rightDownZ!==e.rightDownZ)}insertsEqual(r,e){var i,n,s,a;return((i=r.extendedData)==null?void 0:i.originalType)==="INSERT"&&((n=e.extendedData)==null?void 0:n.originalType)==="INSERT"?(ne.warn(`[DxfCompare] We cannot compare insert (handle '${r.handle}') yet, ignored!`),!0):!(!this.pointsEqual(r.position,e.position)||!this.numberEqual(r.xScale===void 0?1:r.xScale,e.xScale===void 0?1:e.xScale)||!this.numberEqual(r.yScale===void 0?1:r.yScale,e.yScale===void 0?1:e.yScale)||!this.numberEqual(r.zScale===void 0?1:r.zScale,e.zScale===void 0?1:e.zScale)||r.block!==e.block||((s=r.entities)==null?void 0:s.length)!==((a=e.entities)==null?void 0:a.length))}dimensionsEqual(r,e){return!!this.pointsEqual(r.anchorPoint,e.anchorPoint)}regionsEqual(r,e){return ne.warn("Cannot compare region yet!"),!0}vectorsEqual(r,e){return!r&&!e?!0:r&&e?this.numberEqual(r.x,e.x)&&this.numberEqual(r.y,e.y)&&this.numberEqual(r.z,e.z):!1}pointsEqual(r,e){return!r&&!e?!0:r&&e?this.numberEqual(r.x,e.x)&&this.numberEqual(r.y,e.y)&&this.numberEqual(r.z,e.z)&&this.numberEqual(r.bulge,e.bulge):!1}vertexEntityEqual(r,e){return!r&&!e?!0:r&&e?!(!this.pointsEqual(r,e)||r.polyfaceMeshVertex!==e.polyfaceMeshVertex||r.threeDPolylineMesh!==e.threeDPolylineMesh):!1}numbersEqual(r,e){if(!r&&!e)return!0;if(r&&e){if(r.length!==e.length)return!1;for(let i=0;i<r.length;++i)if(!this.numberEqual(r[i],e[i]))return!1;return!0}return!1}numberEqual(r,e){return r==null&&e==null?!0:r!=null&&e!=null?lr.areNumbersEqual(r,e):!1}vectorArraysEqual(r,e){if(!r&&!e)return!0;if(r&&e){if(r.length!==e.length)return!1;for(let i=0;i<r.length;++i)if(!this.vectorsEqual(r[i],e[i]))return!1;return!0}return!1}verticesEqual(r,e){if(!r&&!e)return!0;if(r&&e){if(r.length!==e.length)return!1;for(let i=0;i<r.length;++i)if(!this.pointsEqual(r[i],e[i]))return!1;return!0}return!1}verticesArrayEqual(r,e){if(!r&&!e)return!0;if(r&&e){if(r.length!==e.length)return!1;for(let i=0;i<r.length;++i)if(!this.verticesEqual(r[i],e[i]))return!1;return!0}return!1}vertexEntitiesEqual(r,e){if(!r&&!e)return!0;if(r&&e){if(r.length!==e.length)return!1;for(let i=0;i<r.length;++i)if(!this.vertexEntityEqual(r[i],e[i]))return!1;return!0}return!1}hatchEdgesEqual(r,e){return!r&&!e?!0:r&&e?r.type===e.type:!1}hatchEdgeArraysEqual(r,e){if(!r&&!e)return!0;if(r&&e){if(r.length!==e.length)return!1;for(let i=0;i<r.length;++i)if(!this.hatchEdgesEqual(r[i],e[i]))return!1;return!0}return!1}hatchBoundaryPathsEqual(r,e){return!r&&!e?!0:r&&e?r.pathTypeFlag!==e.pathTypeFlag?!1:this.hatchEdgeArraysEqual(r.edges,e.edges):!1}hatchBoundaryPathArraysEqual(r,e){if(!r&&!e)return!0;if(r&&e){if(r.length!==e.length)return!1;for(let i=0;i<r.length;++i)if(!this.hatchBoundaryPathsEqual(r[i],e[i]))return!1;return!0}return!1}mleaderLineEqual(r,e){return!r&&!e?!0:r&&e?!(!this.verticesArrayEqual(r.vertices,e.vertices)||r.leaderLineIndex!==e.leaderLineIndex):!1}mleaderLinesEqual(r,e){if(!r&&!e)return!0;if(r&&e){if(r.length!==e.length)return!1;for(let i=0;i<r.length;++i)if(!this.mleaderLineEqual(r[i],e[i]))return!1;return!0}return!1}mleaderLeaderEqual(r,e){return!r&&!e?!0:r&&e?!(!this.pointsEqual(r.lastLeaderLinePoint,e.lastLeaderLinePoint)||!this.pointsEqual(r.doglegVector,e.doglegVector)||!this.mleaderLinesEqual(r.leaderLines,e.leaderLines)):!1}mleaderLeadersEqual(r,e){if(!r&&!e)return!0;if(r&&e){if(r.length!==e.length)return!1;for(let i=0;i<r.length;++i)if(!this.mleaderLeaderEqual(r[i],e[i]))return!1;return!0}return!1}mleaderContextEqual(r,e){return!r&&!e?!0:r&&e?!(!this.pointsEqual(r.contentBasePosition,e.contentBasePosition)||!this.pointsEqual(r.blockContentPosition,e.blockContentPosition)||!this.mleaderLeadersEqual(r.leaders,e.leaders)):!1}compareHexStrings(r,e){return parseInt(r,16)-parseInt(e,16)}},Wn=$A;Wn.ENTITY_COLOR_ADDED=65280,Wn.ENTITY_COLOR_REMOVED=16711680,Wn.ENTITY_COLOR_NO_CHANGE=10066329,Wn.ENTITY_COLOR_MARKUP=16744231,Wn.ignoreEntityTypes=["ATTRIB","SEQEND"];function fMe(t,r,e,i){let n={u_cameraZoom:e,u_patternLines:{value:t},u_patternAngle:{value:r},u_color:{value:i}},s=`
|
||
varying vec3 v_pos;
|
||
|
||
#include <clipping_planes_pars_vertex>
|
||
void main() {
|
||
//vec4 worldPosition = modelMatrix * vec4(position, 1.0);
|
||
v_pos = position;
|
||
|
||
#include <begin_vertex>
|
||
#include <project_vertex>
|
||
#include <clipping_planes_vertex>
|
||
}`,a=`
|
||
uniform mat4 modelMatrix;
|
||
uniform float u_cameraZoom;
|
||
uniform vec3 u_color;
|
||
varying vec3 v_pos;
|
||
|
||
struct PatternLine {
|
||
vec2 origin;
|
||
vec2 delta;
|
||
float angle;
|
||
float pattern[MAX_PATTERN_SEGMENT_COUNT];
|
||
float patternSum[MAX_PATTERN_SEGMENT_COUNT+1];
|
||
float patternLength;
|
||
};
|
||
|
||
uniform PatternLine u_patternLines[${t.length}];
|
||
uniform float u_patternAngle;
|
||
|
||
#include <clipping_planes_pars_fragment>
|
||
|
||
// Clamp [0..1] range
|
||
#define saturate(a) clamp(a, 0.0, 1.0)
|
||
|
||
const float EPS = 0.000001;
|
||
|
||
vec2 getWorldScale() {
|
||
return vec2(length(modelMatrix[0].xyz), length(modelMatrix[1].xyz));
|
||
}
|
||
|
||
vec2 rotate(vec2 st, float rotation) {
|
||
const float PI = 3.1415926;
|
||
float angle = rotation * PI/180.0;
|
||
float sine = sin(angle), cosine = cos(angle);
|
||
return vec2(cosine * st.x - sine * st.y, cosine * st.y + sine * st.x);
|
||
}
|
||
|
||
vec2 translate(vec2 samplePosition, vec2 offset) {
|
||
//move samplepoint in the opposite direction that we want to move shapes in
|
||
return samplePosition - offset;
|
||
}
|
||
|
||
vec2 scale(vec2 samplePosition, float scale) {
|
||
return samplePosition / scale;
|
||
}
|
||
|
||
float sdfLine(vec2 st, vec2 a, vec2 b) {
|
||
vec2 ap = st - a;
|
||
vec2 ab = b - a;
|
||
return abs(((ap.x * ab.y) - (ab.x * ap.y))) / length(ab);
|
||
}
|
||
|
||
float drawSpaceLine(vec2 st, float distanceBetweenLines, float thick) {
|
||
float dist = sdfLine(st , vec2(0.0, 0.0) , vec2(1.0, 0.0));
|
||
|
||
//vec2 tt = dFdy(st);
|
||
//float scale = (abs(tt.x)+abs(tt.y))/2.0;
|
||
//float scale = length(fwidth(st)) * 0.5;
|
||
// close to a pixel
|
||
//float thick = 2.0;
|
||
//thick = (thick * 0.5 - 0.5) * scale;
|
||
|
||
float lineDistance = abs(fract(dist / distanceBetweenLines + 0.5) - 0.5) * distanceBetweenLines;
|
||
//float distanceChange = fwidth(dist) * 0.5;
|
||
//float thresold = smoothstep(thick - distanceChange, thick + distanceChange, lineDistance);
|
||
//float thresold = step(thick,lineDistance);
|
||
// remove gradient
|
||
float thresold = step(thick,lineDistance);
|
||
|
||
return saturate(thresold);
|
||
}
|
||
|
||
float drawSolidLine(PatternLine patternLine, float thick) {
|
||
vec2 origin = patternLine.origin;
|
||
vec2 delta = patternLine.delta;
|
||
float distanceBetweenLines = length(delta);
|
||
|
||
origin = rotate(origin,u_patternAngle);
|
||
vec2 st = rotate(v_pos.xy - origin, -(patternLine.angle + u_patternAngle));
|
||
|
||
return drawSpaceLine(st, distanceBetweenLines , thick);
|
||
}
|
||
|
||
int getPatternIndex(PatternLine patternLine, float u ) {
|
||
u = mod(u, patternLine.patternLength);
|
||
float distance = 0.0;
|
||
|
||
#pragma unroll_loop_start
|
||
for(int i = 1; i < patternLine.patternSum.length(); i++){
|
||
if(u < patternLine.patternSum[i]) {
|
||
distance = u - patternLine.patternSum[i-1];
|
||
return i - 1;
|
||
}
|
||
}
|
||
#pragma unroll_loop_end
|
||
|
||
return -1;
|
||
}
|
||
|
||
float drawDashedLine(PatternLine patternLine, float thick){
|
||
float thresold = 1.0;
|
||
vec2 origin = patternLine.origin;
|
||
vec2 delta = patternLine.delta;
|
||
float distanceBetweenLines = length(delta.y);
|
||
|
||
origin = rotate(origin, u_patternAngle);
|
||
vec2 st = rotate(v_pos.xy - origin, -(patternLine.angle + u_patternAngle));
|
||
|
||
float offsetX = st.y * delta.x/delta.y;
|
||
float u = st.x - offsetX;
|
||
int index = getPatternIndex(patternLine, u);
|
||
if(index < 0){
|
||
return thresold;
|
||
}
|
||
|
||
float size = patternLine.pattern[index];
|
||
if(size >= 0.0) {
|
||
thresold = drawSpaceLine(st, distanceBetweenLines , thick);
|
||
}
|
||
|
||
return thresold;
|
||
}
|
||
|
||
float drawLine(PatternLine patternLine, float thick) {
|
||
float t = 0.0;
|
||
if(patternLine.patternLength > 0.0) {
|
||
t = drawDashedLine(patternLine, thick);
|
||
} else {
|
||
t = drawSolidLine(patternLine, thick);
|
||
}
|
||
return t;
|
||
}
|
||
|
||
void main() {
|
||
#include <clipping_planes_fragment>
|
||
|
||
if(u_cameraZoom < EPS){
|
||
gl_FragColor = vec4(u_color, 1.0);
|
||
return;
|
||
}
|
||
|
||
vec2 worldScale = getWorldScale();
|
||
float averageScale = (abs(worldScale.x) + abs(worldScale.y))/2.0;
|
||
float thick = (0.7 / averageScale) / u_cameraZoom;
|
||
|
||
float total = 0.0;
|
||
|
||
#if ${t.length} > 1
|
||
#pragma unroll_loop_start
|
||
for (int i = 0; i < u_patternLines.length(); i++) {
|
||
PatternLine pl = u_patternLines[i];
|
||
float t = drawLine(pl, thick);
|
||
total += (1.0 - t);
|
||
}
|
||
#pragma unroll_loop_end
|
||
#else
|
||
float t = drawLine(u_patternLines[0], thick);
|
||
total += (1.0 - t);
|
||
#endif
|
||
|
||
total = saturate(total);
|
||
if (total < 0.01) {
|
||
discard;
|
||
}
|
||
|
||
gl_FragColor = vec4(u_color * total, 1.0);
|
||
}
|
||
`;return new Yt({uniforms:n,vertexShader:s,fragmentShader:a,clipping:!0})}var KA=class{static createLineShaderMaterial(r,e,i,n,s){let a=0,o=[];for(let h=0;h<r.length;h++)o[h]=r[h],o[h]===0&&(o[h]=.5),o[h]*=i,a+=Math.abs(o[h]);let l=hn.merge([At.common,{pattern:{type:"fv1",value:o},patternLength:{type:"f",value:a},u_color:{value:new Ve(e)}}]);l.u_viewportScale=n,l.u_cameraZoom=s;let c=`
|
||
attribute float lineDistance;
|
||
varying float vLineDistance;
|
||
|
||
#include <clipping_planes_pars_vertex>
|
||
|
||
void main() {
|
||
vLineDistance = lineDistance;
|
||
|
||
#include <begin_vertex>
|
||
#include <project_vertex>
|
||
#include <clipping_planes_vertex>
|
||
}`,u=`
|
||
uniform mat4 modelMatrix;
|
||
uniform vec3 diffuse;
|
||
uniform vec3 u_color;
|
||
uniform float opacity;
|
||
uniform float pattern[${r.length}];
|
||
uniform float patternLength;
|
||
uniform float u_viewportScale;
|
||
uniform float u_cameraZoom;
|
||
varying float vLineDistance;
|
||
|
||
#include <clipping_planes_pars_fragment>
|
||
|
||
vec2 getWorldScale() {
|
||
return vec2(length(modelMatrix[0].xyz), length(modelMatrix[1].xyz));
|
||
}
|
||
|
||
void main() {
|
||
|
||
#include <clipping_planes_fragment>
|
||
|
||
// vec2 worldScale = getWorldScale();
|
||
// float averageScale = (abs(worldScale.x) + abs(worldScale.y))/2.0;
|
||
// When zoomed out to a certain extent, it is displayed as a solid line.
|
||
if(patternLength * u_viewportScale * u_cameraZoom/1.5 < 1.0){
|
||
gl_FragColor = vec4(u_color, opacity);
|
||
return;
|
||
}
|
||
|
||
float pos = mod(vLineDistance, patternLength * u_viewportScale);
|
||
|
||
for ( int i = 0; i < ${r.length}; i++ ) {
|
||
pos = pos - abs(pattern[i] * u_viewportScale);
|
||
if ( pos < 0.0 ) {
|
||
if ( pattern[i] > 0.0 ) {
|
||
gl_FragColor = vec4(u_color, opacity);
|
||
break;
|
||
}
|
||
discard;
|
||
}
|
||
}
|
||
}`;return new Yt({uniforms:l,vertexShader:c,fragmentShader:u,clipping:!0})}};var _8={};z_(_8,{default:()=>S8});var I8={};z_(I8,{default:()=>x8});var x8=(t,r)=>typeof r=="undefined"||+r==0?Math.round(t):(t=+t,r=+r,isNaN(t)||!(typeof r=="number"&&r%1===0)?NaN:(t=t.toString().split("e"),t=Math.round(+(t[0]+"e"+(t[1]?+t[1]-r:-r))),t=t.toString().split("e"),+(t[0]+"e"+(t[1]?+t[1]+r:r))));var S8=(t,r,e,i,n)=>{let s=e.length,a=e[0].length;if(t<0||t>1)throw new Error("t out of bounds [0,1]: "+t);if(r<1)throw new Error("degree must be at least 1 (linear)");if(r>s-1)throw new Error("degree must be less than or equal to point count - 1");if(i){if(i.length!==s+r+1)throw new Error("bad knot vector length")}else{i=[];for(let f=0;f<s+r+1;f++)i[f]=f}let o=[r,i.length-1-r],l=i[o[0]],c=i[o[1]];t=t*(c-l)+l,t=Math.max(t,l),t=Math.min(t,c);let u;for(u=o[0];u<o[1]&&!(t>=i[u]&&t<=i[u+1]);u++);let h=[];for(let f=0;f<s;f++){h[f]=[];let m=n?n[f]:1;for(let g=0;g<a;g++)h[f][g]=e[f][g]*m;h[f][a]=m}let p;for(let f=1;f<=r+1;f++)for(let m=u;m>u-r-1+f;m--){p=(t-i[m])/(i[m+r+1-f]-i[m]);for(let g=0;g<a+1;g++)h[m][g]=(1-p)*h[m-1][g]+p*h[m][g]}let d=[];for(let f=0;f<a;f++)d[f]=x8(h[u][f]/h[u][a],-9);return d};var WPt={d:"\xB0",c:"\u2300",p:"\xB1"},JA=(t,r)=>{t=t.replace(/%%(.)/g,(l,c)=>WPt[c]||c);let e=r==null?void 0:r.encoding,i=e instanceof TextDecoder?e:void 0,n="",s,a=[],o=l=>{n&&(a.push(n),n=""),a.push(l)};for(let l=0;l<t.length;l++)switch(s=t[l]){default:n+=s,s===";"&&o(n);break;case"\\":{switch(s=t[++l]){default:n+=s;break;case"P":n+=`
|
||
`;break;case"f":case"F":{let p="";for(;s=t[++l];){if(s===";"){o({f:p});break}if(s==="|"){let d={f:p},f=t.indexOf(";",++l);for(let m of t.slice(l,f).split("|"))d[m[0]]=+m.slice(1);l=f,o(d);break}p+=s==="\\"?t[++l]:s}break}case"S":{let p="",d,f="";for(;s=t[++l];){if(s===";"){d&&o({S:[p,d,f]});break}s==="\\"?d?f+=t[++l]:p+=t[++l]:d?f+=s:s==="^"||s==="/"||s==="#"?d=s:p+=s}break}case"H":case"W":let c=++l,[,u,h]=t.slice(c,l=t.indexOf(";",l)).match(/^(\d*(?:\.\d+)?)(\D*)$/);o({[s]:[+u,h]});break;case"Q":case"A":case"C":case"c":case"T":{let p=++l;o({[s]:+t.slice(p,l=t.indexOf(";",l))});break}case"L":case"O":case"K":o({[s]:1});break;case"l":case"o":case"k":o({[s.toUpperCase()]:0});break;case"U":case"u":t[l+1]==="+"?(n+=String.fromCodePoint(parseInt(t.substr(l+2,4),16)),l+=5):n+=s;break;case"M":case"m":e?t[l+1]==="+"&&(t[l+2]==="0"||t[l+2]==="1")?(n+=(i=i||new TextDecoder(e)).decode(new Uint8Array([parseInt(t.substr(l+3,2),16),parseInt(t.substr(l+5,2),16)])),l+=6):n+=s:n+="\\"+s;break}break}case"{":{let c=1,u=l;for(;s=t[++l];)if(s==="{")c++;else if(s==="}"){if(--c===0){o(JA(t.slice(u+1,l)));break}}else s==="\\"&&l++;break}}return n&&a.push(n),a};var qPt={d:"\xB0",c:"\u2300",p:"\xB1"},YPt=(t,r)=>(t=XPt(t),r?$Pt(t,r):t),XPt=t=>t.replace(/\\[uU]\+([0-9a-fA-F]{4})/g,(r,e)=>String.fromCodePoint(parseInt(e,16))),$Pt=(t,r)=>{let e=r instanceof TextDecoder?r:new TextDecoder(r);return t.replace(/\\[mM]\+[0|1]([0-9a-fA-F]{2})([0-9a-fA-F]{2})/g,(i,n,s)=>(e=e||new TextDecoder(r)).decode(new Uint8Array([parseInt(n,16),parseInt(s,16)])))},QA=(t,r)=>{t=YPt(t,r==null?void 0:r.encoding);let e=0,i={text:""},n=[i],s=t.matchAll(/%%(\d\d\d|.)/g);for(let a of s){i.text+=t.slice(e,a.index);let l=a[1].toLowerCase(),c=qPt[l];c?i.text+=c:l.length===3?i.text+=String.fromCodePoint(+l):l==="k"||l==="o"||l==="u"?(i=Mn(Ur({},i),{text:""}),i[l]?delete i[l]:i[l]=1,n.push(i)):i.text+=l,e=a.index+a[0].length}return i.text+=t.slice(e),n.filter(a=>a.text)};var mMe=t=>t==="Unitless"?1:t==="Inches"?.0254:t==="Feet"?.3048:t==="Millimeters"?.001:t==="Centimeters"?.01:(t==="Meters"||console.warn(`[Units] Unsupported unit '${t}', will return 1 for unit scale.`),1),w8=(t,r)=>mMe(t)/mMe(r);var WT="0.2.23";var gMe="VERSION",KPt=()=>window.localStorage.getItem(gMe),JPt=()=>{window.localStorage.setItem(gMe,WT)},vMe=()=>KPt()!==WT?(JPt(),!0):!1;var qT=class{constructor(){this.DATABASE_NAME="gemini_viewer_db";this.TABLES=[{name:"viewpoint",options:{keyPath:"id",autoIncrement:!0},indexArray:[]},{name:"annotation",options:{keyPath:"id",autoIncrement:!0},indexArray:[]},{name:"dxfdata",options:{keyPath:"dxfDataId",autoIncrement:!1},indexArray:[]},{name:"fontdata",options:{keyPath:"url",autoIncrement:!0},indexArray:[]}];this.db=void 0}static instance(){return qT._instance||(qT._instance=new qT),qT._instance}getDatabase(){return ot(this,null,function*(){let r=yield this.getDB(this.DATABASE_NAME);return this.db||(r.close(),vMe()&&(yield this.deleteDataBase(this.DATABASE_NAME)),r=yield this.getUpgradedDB(r)),r.onclose=()=>{this.db=void 0,ne.debug(`[DB] Db ${r.name} is closed.`)},r.onerror=e=>{this.db=void 0,ne.debug(`[DB] Db ${r.name} encountered error.`,e)},r.onabort=e=>{this.db=void 0,ne.debug(`[DB] Db ${r.name} aborted.`,e)},r.onversionchange=e=>{ne.debug("onversionchange",e)},this.db=r,Promise.resolve(this.db)})}closeDatabase(){this.db&&this.db.close()}deleteDataBase(r){return new Promise((e,i)=>{let n=window.indexedDB.deleteDatabase(r);n.onerror=s=>{ne.debug(s),i(s)},n.onsuccess=s=>{let a=s.target;ne.debug(`[DB] Db ${r} delete old version ${s.oldVersion}.`),e(a)}})}getDB(r){return ot(this,null,function*(){return new Promise((e,i)=>{let n=window.indexedDB.open(r);n.onerror=i,n.onsuccess=s=>{let a=s.target.result;ne.debug(`[DB] Db ${a.name} opened (version ${a.version}).`),e(a)}})})}getUpgradedDB(r){return ot(this,null,function*(){return new Promise((e,i)=>{ne.debug(`[DB] Upgrading db ${r.name} (version ${r.version})`);let n=window.indexedDB.open(r.name,r.version+1);n.onerror=i,n.onblocked=s=>{ne.debug("onblocked",s)},n.onupgradeneeded=s=>{let a=s.target.transaction;a.oncomplete=()=>{ne.debug(`[DB] Upgrade is done (new version: ${o.version}).`)};let o=s.target.result,l=[];for(let c=0;c<this.TABLES.length;++c){let u=this.TABLES[c];if(!o.objectStoreNames.contains(u.name)){ne.debug(`[DB] Creating table ${u.name}...`);let h=this.createTable(o,u.name,u.options,u.indexArray);l.push(h)}}l.length>0&&Promise.all(l).then(()=>{ne.debug(`[DB] All(${l.length}) tables created.`)})},n.onsuccess=s=>{let a=s.target.result;ne.debug(`[DB] Db ${a.name} opened (version ${a.version}).`),e(a)}})})}createTable(r,e,i,n){return ot(this,null,function*(){return new Promise(s=>{let a=r.createObjectStore(e,i);n&&n.forEach(o=>{a.createIndex(o.name,o.fields,{unique:o.unique})}),ne.debug(`[DB] Table ${e} created.`),s(r)})})}},ns=qT;ns._instance=void 0;var oh=class{constructor(){this.db=void 0;this.isCreatingTable=!1;if(ns.instance().TABLES.findIndex(e=>e.name===this.tableName())===-1)throw new Error(`Make sure to add table '${this.tableName()}' to IndexedDbManager.TABLES!`)}tableName(){throw new Error("Derived class have to override 'tableName', and set a proper table name!")}add(r,e,i){let n=this.tableName();ns.instance().getDatabase().then(s=>{let o=s.transaction([n],"readwrite").objectStore(n).add(r);o.onsuccess=e,o.onerror=i}).finally(()=>{ns.instance().closeDatabase()}).catch(s=>{i&&i(s)})}save(r,e,i){let n=this.tableName();ns.instance().getDatabase().then(s=>{let o=s.transaction([n],"readwrite").objectStore(n).put(r);o.onsuccess=e,o.onerror=i}).finally(()=>{ns.instance().closeDatabase()})}delete(r,e,i){let n=this.tableName();ns.instance().getDatabase().then(s=>{let o=s.transaction([n],"readwrite").objectStore(n).delete(r);o.onsuccess=e,o.onerror=i}).finally(()=>{ns.instance().closeDatabase()})}update(){ns.instance().getDatabase().then(()=>{})}query(r,e){let i=this.tableName();ns.instance().getDatabase().then(n=>{let a=n.transaction([i],"readonly").objectStore(i).openCursor();a.onsuccess=o=>{let l=o.target.result;l&&l.continue(),r&&r(l)},a.onerror=e}).finally(()=>{ns.instance().closeDatabase()})}queryAll(r,e){let i=this.tableName();ns.instance().getDatabase().then(n=>{let a=n.transaction([i],"readonly").objectStore(i).getAll();a.onsuccess=o=>{r&&r(a.result)},a.onerror=e}).finally(()=>{ns.instance().closeDatabase()})}clearAll(r,e){let i=this.tableName();ns.instance().getDatabase().then(n=>{let a=n.transaction([i],"readwrite").objectStore(i).clear();a.onsuccess=o=>{r&&r(o)},a.onerror=o=>{e&&e(o)}}).finally(()=>{ns.instance().closeDatabase()})}};var YT=class extends oh{tableName(){return"annotation"}static instance(){return YT._instance||(YT._instance=new YT),YT._instance}query(r,e,i){let n=[];super.query(s=>{if(!s){e&&e(n);return}!s.value||s.value.projectId!==r||n.push(s.value)},s=>{console.log(s)})}},R8=YT;R8._instance=void 0;var XT=class extends oh{tableName(){return"viewpoint"}static instance(){return XT._instance||(XT._instance=new XT),XT._instance}query(r,e,i){let n=[];super.query(s=>{if(!s){e&&e(n);return}!s.value||s.value.projectId!==r||n.push(s.value)},s=>{i&&i(),console.log(s)})}},M8=XT;M8._instance=void 0;var $T=class extends oh{tableName(){return"dxfdata"}static instance(){return $T._instance||($T._instance=new $T),$T._instance}query(r,e,i){let n=[],s=this.tableName();ns.instance().getDatabase().then(a=>{let l=a.transaction([s],"readonly").objectStore(s).get(r);l.onerror=c=>{i&&i(c),ne.info("[DxfDataTable] Failed to query !",c)},l.onsuccess=()=>{l.result&&n.push(l.result),e&&e(n)}}).finally(()=>{ns.instance().closeDatabase()})}},ZT=$T;ZT._instance=void 0;var I0=class extends oh{tableName(){return"fontdata"}static instance(){return I0._instance||(I0._instance=new I0),I0._instance}query(r,e,i){let n;super.query(s=>{if(!s){e&&e(n);return}!s.value||s.value.url!==r||(n=s.value)},s=>{i&&i(),console.log(s)})}queryAll(){return ot(this,null,function*(){return new Promise((r,e)=>{C7(I0.prototype,this,"queryAll").call(this,i=>{r(i)},i=>{e(i)})})})}},lh=I0;lh._instance=void 0;var eO=12;var nd=class extends Ja{constructor(e,i){super();this.width=0;this.lastPoint=e,this.polyLines=i,this.width=this.calcWidth(i)}offset(e){let i=[];for(let n=0;n<this.polyLines.length;n++){let s=this.polyLines[n],a=[];for(let o=0;o<s.length;o++){let l=s[o];a.push(l.clone().add(e))}i.push(a)}return new nd(this.lastPoint,i)}transform(e){let i=[];for(let n=0;n<this.polyLines.length;n++){let s=this.polyLines[n],a=[];for(let o=0;o<s.length;o++){let l=s[o];a.push(l.clone().applyMatrix3(e))}i.push(a)}return new nd(this.lastPoint.clone().applyMatrix3(e),i)}calcWidth(e){let i=new Ds(new le,new le);for(let a=0;a<e.length;a++){let o=e[a];for(let l=0;l<o.length;l++){let c=o[l];i.expandByPoint(c)}}let n=i.min.x||0;return(i.max.x||0)-n}toThreeGeometry(){let e=this.polyLines,i=[],n=[],s=0,a=new it;for(let o=0;o<e.length;o++){let l=e[o];for(let c=0;c<l.length;c++){let u=l[c];i.push(u.x,u.y,0),c===l.length-1||n.push(s,s+1),s++}}return a.setAttribute("position",new ct(i,3)),a.setIndex(n),a}};var tO;function QPt(){let t=[[161,169,161,254],[176,247,161,254],[129,160,64,254],[170,254,64,160],[168,169,64,160],[170,175,161,254],[248,254,161,254],[161,167,64,160]],r=new Uint16Array(23940),e=0;for(let[n,s,a,o]of t)for(let l=a;l<=o;l++)if(l!==127)for(let c=n;c<=s;c++)r[e++]=l<<8|c;let i=new TextDecoder("gbk").decode(r);for(tO=new Uint16Array(65536),e=0;e<i.length;e++)tO[i.charCodeAt(e)]=r[e]}function yMe(t){tO||QPt();let r=new Uint8Array(t.length*2),e=0;for(let i=0;i<t.length;i++){let n=t.charCodeAt(i);if(n<128)r[e++]=n;else{let s=tO[n];r[e++]=s&255,r[e++]=s>>8}}return r.subarray(0,e)}var e2t="\u554A\u963F\u57C3\u6328\u54CE\u5509\u54C0\u7691\u764C\u853C\u77EE\u827E\u788D\u7231\u9698\u978D\u6C28\u5B89\u4FFA\u6309\u6697\u5CB8\u80FA\u6848\u80AE\u6602\u76CE\u51F9\u6556\u71AC\u7FF1\u8884\u50B2\u5965\u61CA\u6FB3\u82AD\u634C\u6252\u53ED\u5427\u7B06\u516B\u75A4\u5DF4\u62D4\u8DCB\u9776\u628A\u8019\u575D\u9738\u7F62\u7238\u767D\u67CF\u767E\u6446\u4F70\u8D25\u62DC\u7A17\u6591\u73ED\u642C\u6273\u822C\u9881\u677F\u7248\u626E\u62CC\u4F34\u74E3\u534A\u529E\u7ECA\u90A6\u5E2E\u6886\u699C\u8180\u7ED1\u68D2\u78C5\u868C\u9551\u508D\u8C24\u82DE\u80DE\u5305\u8912\u5265\u8584\u96F9\u4FDD\u5821\u9971\u5B9D\u62B1\u62A5\u66B4\u8C79\u9C8D\u7206\u676F\u7891\u60B2\u5351\u5317\u8F88\u80CC\u8D1D\u94A1\u500D\u72C8\u5907\u60EB\u7119\u88AB\u5954\u82EF\u672C\u7B28\u5D29\u7EF7\u752D\u6CF5\u8E66\u8FF8\u903C\u9F3B\u6BD4\u9119\u7B14\u5F7C\u78A7\u84D6\u853D\u6BD5\u6BD9\u6BD6\u5E01\u5E87\u75F9\u95ED\u655D\u5F0A\u5FC5\u8F9F\u58C1\u81C2\u907F\u965B\u97AD\u8FB9\u7F16\u8D2C\u6241\u4FBF\u53D8\u535E\u8FA8\u8FA9\u8FAB\u904D\u6807\u5F6A\u8198\u8868\u9CD6\u618B\u522B\u762A\u5F6C\u658C\u6FD2\u6EE8\u5BBE\u6448\u5175\u51B0\u67C4\u4E19\u79C9\u997C\u70B3\u75C5\u5E76\u73BB\u83E0\u64AD\u62E8\u94B5\u6CE2\u535A\u52C3\u640F\u94C2\u7B94\u4F2F\u5E1B\u8236\u8116\u818A\u6E24\u6CCA\u9A73\u6355\u535C\u54FA\u8865\u57E0\u4E0D\u5E03\u6B65\u7C3F\u90E8\u6016\u64E6\u731C\u88C1\u6750\u624D\u8D22\u776C\u8E29\u91C7\u5F69\u83DC\u8521\u9910\u53C2\u8695\u6B8B\u60ED\u60E8\u707F\u82CD\u8231\u4ED3\u6CA7\u85CF\u64CD\u7CD9\u69FD\u66F9\u8349\u5395\u7B56\u4FA7\u518C\u6D4B\u5C42\u8E6D\u63D2\u53C9\u832C\u8336\u67E5\u78B4\u643D\u5BDF\u5C94\u5DEE\u8BE7\u62C6\u67F4\u8C7A\u6400\u63BA\u8749\u998B\u8C17\u7F20\u94F2\u4EA7\u9610\u98A4\u660C\u7316\u573A\u5C1D\u5E38\u957F\u507F\u80A0\u5382\u655E\u7545\u5531\u5021\u8D85\u6284\u949E\u671D\u5632\u6F6E\u5DE2\u5435\u7092\u8F66\u626F\u64A4\u63A3\u5F7B\u6F88\u90F4\u81E3\u8FB0\u5C18\u6668\u5FF1\u6C89\u9648\u8D81\u886C\u6491\u79F0\u57CE\u6A59\u6210\u5448\u4E58\u7A0B\u60E9\u6F84\u8BDA\u627F\u901E\u9A8B\u79E4\u5403\u75F4\u6301\u5319\u6C60\u8FDF\u5F1B\u9A70\u803B\u9F7F\u4F88\u5C3A\u8D64\u7FC5\u65A5\u70BD\u5145\u51B2\u866B\u5D07\u5BA0\u62BD\u916C\u7574\u8E0C\u7A20\u6101\u7B79\u4EC7\u7EF8\u7785\u4E11\u81ED\u521D\u51FA\u6A71\u53A8\u8E87\u9504\u96CF\u6EC1\u9664\u695A\u7840\u50A8\u77D7\u6410\u89E6\u5904\u63E3\u5DDD\u7A7F\u693D\u4F20\u8239\u5598\u4E32\u75AE\u7A97\u5E62\u5E8A\u95EF\u521B\u5439\u708A\u6376\u9524\u5782\u6625\u693F\u9187\u5507\u6DF3\u7EAF\u8822\u6233\u7EF0\u75B5\u8328\u78C1\u96CC\u8F9E\u6148\u74F7\u8BCD\u6B64\u523A\u8D50\u6B21\u806A\u8471\u56F1\u5306\u4ECE\u4E1B\u51D1\u7C97\u918B\u7C07\u4FC3\u8E7F\u7BE1\u7A9C\u6467\u5D14\u50AC\u8106\u7601\u7CB9\u6DEC\u7FE0\u6751\u5B58\u5BF8\u78CB\u64AE\u6413\u63AA\u632B\u9519\u642D\u8FBE\u7B54\u7629\u6253\u5927\u5446\u6B79\u50A3\u6234\u5E26\u6B86\u4EE3\u8D37\u888B\u5F85\u902E\u6020\u803D\u62C5\u4E39\u5355\u90F8\u63B8\u80C6\u65E6\u6C2E\u4F46\u60EE\u6DE1\u8BDE\u5F39\u86CB\u5F53\u6321\u515A\u8361\u6863\u5200\u6363\u8E48\u5012\u5C9B\u7977\u5BFC\u5230\u7A3B\u60BC\u9053\u76D7\u5FB7\u5F97\u7684\u8E6C\u706F\u767B\u7B49\u77AA\u51F3\u9093\u5824\u4F4E\u6EF4\u8FEA\u654C\u7B1B\u72C4\u6DA4\u7FDF\u5AE1\u62B5\u5E95\u5730\u8482\u7B2C\u5E1D\u5F1F\u9012\u7F14\u98A0\u6382\u6EC7\u7898\u70B9\u5178\u975B\u57AB\u7535\u4F43\u7538\u5E97\u60E6\u5960\u6DC0\u6BBF\u7889\u53FC\u96D5\u51CB\u5201\u6389\u540A\u9493\u8C03\u8DCC\u7239\u789F\u8776\u8FED\u8C0D\u53E0\u4E01\u76EF\u53EE\u9489\u9876\u9F0E\u952D\u5B9A\u8BA2\u4E22\u4E1C\u51AC\u8463\u61C2\u52A8\u680B\u4F97\u606B\u51BB\u6D1E\u515C\u6296\u6597\u9661\u8C46\u9017\u75D8\u90FD\u7763\u6BD2\u728A\u72EC\u8BFB\u5835\u7779\u8D4C\u675C\u9540\u809A\u5EA6\u6E21\u5992\u7AEF\u77ED\u953B\u6BB5\u65AD\u7F0E\u5806\u5151\u961F\u5BF9\u58A9\u5428\u8E72\u6566\u987F\u56E4\u949D\u76FE\u9041\u6387\u54C6\u591A\u593A\u579B\u8EB2\u6735\u8DFA\u8235\u5241\u60F0\u5815\u86FE\u5CE8\u9E45\u4FC4\u989D\u8BB9\u5A25\u6076\u5384\u627C\u904F\u9102\u997F\u6069\u800C\u513F\u8033\u5C14\u9975\u6D31\u4E8C\u8D30\u53D1\u7F5A\u7B4F\u4F10\u4E4F\u9600\u6CD5\u73D0\u85E9\u5E06\u756A\u7FFB\u6A0A\u77FE\u9492\u7E41\u51E1\u70E6\u53CD\u8FD4\u8303\u8D29\u72AF\u996D\u6CDB\u574A\u82B3\u65B9\u80AA\u623F\u9632\u59A8\u4EFF\u8BBF\u7EBA\u653E\u83F2\u975E\u5561\u98DE\u80A5\u532A\u8BFD\u5420\u80BA\u5E9F\u6CB8\u8D39\u82AC\u915A\u5429\u6C1B\u5206\u7EB7\u575F\u711A\u6C7E\u7C89\u594B\u4EFD\u5FFF\u6124\u7CAA\u4E30\u5C01\u67AB\u8702\u5CF0\u950B\u98CE\u75AF\u70FD\u9022\u51AF\u7F1D\u8BBD\u5949\u51E4\u4F5B\u5426\u592B\u6577\u80A4\u5B75\u6276\u62C2\u8F90\u5E45\u6C1F\u7B26\u4F0F\u4FD8\u670D\u6D6E\u6DAA\u798F\u88B1\u5F17\u752B\u629A\u8F85\u4FEF\u91DC\u65A7\u812F\u8151\u5E9C\u8150\u8D74\u526F\u8986\u8D4B\u590D\u5085\u4ED8\u961C\u7236\u8179\u8D1F\u5BCC\u8BA3\u9644\u5987\u7F1A\u5490\u5676\u560E\u8BE5\u6539\u6982\u9499\u76D6\u6E89\u5E72\u7518\u6746\u67D1\u7AFF\u809D\u8D76\u611F\u79C6\u6562\u8D63\u5188\u521A\u94A2\u7F38\u809B\u7EB2\u5C97\u6E2F\u6760\u7BD9\u768B\u9AD8\u818F\u7F94\u7CD5\u641E\u9550\u7A3F\u544A\u54E5\u6B4C\u6401\u6208\u9E3D\u80F3\u7599\u5272\u9769\u845B\u683C\u86E4\u9601\u9694\u94EC\u4E2A\u5404\u7ED9\u6839\u8DDF\u8015\u66F4\u5E9A\u7FB9\u57C2\u803F\u6897\u5DE5\u653B\u529F\u606D\u9F9A\u4F9B\u8EAC\u516C\u5BAB\u5F13\u5DE9\u6C5E\u62F1\u8D21\u5171\u94A9\u52FE\u6C9F\u82DF\u72D7\u57A2\u6784\u8D2D\u591F\u8F9C\u83C7\u5495\u7B8D\u4F30\u6CBD\u5B64\u59D1\u9F13\u53E4\u86CA\u9AA8\u8C37\u80A1\u6545\u987E\u56FA\u96C7\u522E\u74DC\u5250\u5BE1\u6302\u8902\u4E56\u62D0\u602A\u68FA\u5173\u5B98\u51A0\u89C2\u7BA1\u9986\u7F50\u60EF\u704C\u8D2F\u5149\u5E7F\u901B\u7470\u89C4\u572D\u7845\u5F52\u9F9F\u95FA\u8F68\u9B3C\u8BE1\u7678\u6842\u67DC\u8DEA\u8D35\u523D\u8F8A\u6EDA\u68CD\u9505\u90ED\u56FD\u679C\u88F9\u8FC7\u54C8\u9AB8\u5B69\u6D77\u6C26\u4EA5\u5BB3\u9A87\u9163\u61A8\u90AF\u97E9\u542B\u6DB5\u5BD2\u51FD\u558A\u7F55\u7FF0\u64BC\u634D\u65F1\u61BE\u608D\u710A\u6C57\u6C49\u592F\u676D\u822A\u58D5\u568E\u8C6A\u6BEB\u90DD\u597D\u8017\u53F7\u6D69\u5475\u559D\u8377\u83CF\u6838\u79BE\u548C\u4F55\u5408\u76D2\u8C89\u9602\u6CB3\u6DB8\u8D6B\u8910\u9E64\u8D3A\u563F\u9ED1\u75D5\u5F88\u72E0\u6068\u54FC\u4EA8\u6A2A\u8861\u6052\u8F70\u54C4\u70D8\u8679\u9E3F\u6D2A\u5B8F\u5F18\u7EA2\u5589\u4FAF\u7334\u543C\u539A\u5019\u540E\u547C\u4E4E\u5FFD\u745A\u58F6\u846B\u80E1\u8774\u72D0\u7CCA\u6E56\u5F27\u864E\u552C\u62A4\u4E92\u6CAA\u6237\u82B1\u54D7\u534E\u733E\u6ED1\u753B\u5212\u5316\u8BDD\u69D0\u5F8A\u6000\u6DEE\u574F\u6B22\u73AF\u6853\u8FD8\u7F13\u6362\u60A3\u5524\u75EA\u8C62\u7115\u6DA3\u5BA6\u5E7B\u8352\u614C\u9EC4\u78FA\u8757\u7C27\u7687\u51F0\u60F6\u714C\u6643\u5E4C\u604D\u8C0E\u7070\u6325\u8F89\u5FBD\u6062\u86D4\u56DE\u6BC1\u6094\u6167\u5349\u60E0\u6666\u8D3F\u79FD\u4F1A\u70E9\u6C47\u8BB3\u8BF2\u7ED8\u8364\u660F\u5A5A\u9B42\u6D51\u6DF7\u8C41\u6D3B\u4F19\u706B\u83B7\u6216\u60D1\u970D\u8D27\u7978\u51FB\u573E\u57FA\u673A\u7578\u7A3D\u79EF\u7B95\u808C\u9965\u8FF9\u6FC0\u8BA5\u9E21\u59EC\u7EE9\u7F09\u5409\u6781\u68D8\u8F91\u7C4D\u96C6\u53CA\u6025\u75BE\u6C72\u5373\u5AC9\u7EA7\u6324\u51E0\u810A\u5DF1\u84DF\u6280\u5180\u5B63\u4F0E\u796D\u5242\u60B8\u6D4E\u5BC4\u5BC2\u8BA1\u8BB0\u65E2\u5FCC\u9645\u7EE7\u7EAA\u5609\u67B7\u5939\u4F73\u5BB6\u52A0\u835A\u988A\u8D3E\u7532\u94BE\u5047\u7A3C\u4EF7\u67B6\u9A7E\u5AC1\u6B7C\u76D1\u575A\u5C16\u7B3A\u95F4\u714E\u517C\u80A9\u8270\u5978\u7F04\u8327\u68C0\u67EC\u78B1\u7877\u62E3\u6361\u7B80\u4FED\u526A\u51CF\u8350\u69DB\u9274\u8DF5\u8D31\u89C1\u952E\u7BAD\u4EF6\u5065\u8230\u5251\u996F\u6E10\u6E85\u6DA7\u5EFA\u50F5\u59DC\u5C06\u6D46\u6C5F\u7586\u848B\u6868\u5956\u8BB2\u5320\u9171\u964D\u8549\u6912\u7901\u7126\u80F6\u4EA4\u90CA\u6D47\u9A84\u5A07\u56BC\u6405\u94F0\u77EB\u4FA5\u811A\u72E1\u89D2\u997A\u7F34\u7EDE\u527F\u6559\u9175\u8F7F\u8F83\u53EB\u7A96\u63ED\u63A5\u7686\u79F8\u8857\u9636\u622A\u52AB\u8282\u830E\u775B\u6676\u9CB8\u4EAC\u60CA\u7CBE\u7CB3\u7ECF\u4E95\u8B66\u666F\u9888\u9759\u5883\u656C\u955C\u5F84\u75C9\u9756\u7ADF\u7ADE\u51C0\u70AF\u7A98\u63EA\u7A76\u7EA0\u7396\u97ED\u4E45\u7078\u4E5D\u9152\u53A9\u6551\u65E7\u81FC\u8205\u548E\u5C31\u759A\u97A0\u62D8\u72D9\u75BD\u5C45\u9A79\u83CA\u5C40\u5480\u77E9\u4E3E\u6CAE\u805A\u62D2\u636E\u5DE8\u5177\u8DDD\u8E1E\u952F\u4FF1\u53E5\u60E7\u70AC\u5267\u6350\u9E43\u5A1F\u5026\u7737\u5377\u7EE2\u6485\u652B\u6289\u6398\u5014\u7235\u6854\u6770\u6377\u776B\u7AED\u6D01\u7ED3\u89E3\u59D0\u6212\u85C9\u82A5\u754C\u501F\u4ECB\u75A5\u8BEB\u5C4A\u5DFE\u7B4B\u65A4\u91D1\u4ECA\u6D25\u895F\u7D27\u9526\u4EC5\u8C28\u8FDB\u9773\u664B\u7981\u8FD1\u70EC\u6D78\u5C3D\u52B2\u8346\u5162\u89C9\u51B3\u8BC0\u7EDD\u5747\u83CC\u94A7\u519B\u541B\u5CFB\u4FCA\u7AE3\u6D5A\u90E1\u9A8F\u5580\u5496\u5361\u54AF\u5F00\u63E9\u6977\u51EF\u6168\u520A\u582A\u52D8\u574E\u780D\u770B\u5EB7\u6177\u7CE0\u625B\u6297\u4EA2\u7095\u8003\u62F7\u70E4\u9760\u5777\u82DB\u67EF\u68F5\u78D5\u9897\u79D1\u58F3\u54B3\u53EF\u6E34\u514B\u523B\u5BA2\u8BFE\u80AF\u5543\u57A6\u6073\u5751\u542D\u7A7A\u6050\u5B54\u63A7\u62A0\u53E3\u6263\u5BC7\u67AF\u54ED\u7A9F\u82E6\u9177\u5E93\u88E4\u5938\u57AE\u630E\u8DE8\u80EF\u5757\u7B77\u4FA9\u5FEB\u5BBD\u6B3E\u5321\u7B50\u72C2\u6846\u77FF\u7736\u65F7\u51B5\u4E8F\u76D4\u5CBF\u7AA5\u8475\u594E\u9B41\u5080\u9988\u6127\u6E83\u5764\u6606\u6346\u56F0\u62EC\u6269\u5ED3\u9614\u5783\u62C9\u5587\u8721\u814A\u8FA3\u5566\u83B1\u6765\u8D56\u84DD\u5A6A\u680F\u62E6\u7BEE\u9611\u5170\u6F9C\u8C30\u63FD\u89C8\u61D2\u7F06\u70C2\u6EE5\u7405\u6994\u72FC\u5ECA\u90CE\u6717\u6D6A\u635E\u52B3\u7262\u8001\u4F6C\u59E5\u916A\u70D9\u6D9D\u52D2\u4E50\u96F7\u956D\u857E\u78CA\u7D2F\u5121\u5792\u64C2\u808B\u7C7B\u6CEA\u68F1\u695E\u51B7\u5398\u68A8\u7281\u9ECE\u7BF1\u72F8\u79BB\u6F13\u7406\u674E\u91CC\u9CA4\u793C\u8389\u8354\u540F\u6817\u4E3D\u5389\u52B1\u783E\u5386\u5229\u5088\u4F8B\u4FD0\u75E2\u7ACB\u7C92\u6CA5\u96B6\u529B\u7483\u54E9\u4FE9\u8054\u83B2\u8FDE\u9570\u5EC9\u601C\u6D9F\u5E18\u655B\u8138\u94FE\u604B\u70BC\u7EC3\u7CAE\u51C9\u6881\u7CB1\u826F\u4E24\u8F86\u91CF\u667E\u4EAE\u8C05\u64A9\u804A\u50DA\u7597\u71CE\u5BE5\u8FBD\u6F66\u4E86\u6482\u9563\u5ED6\u6599\u5217\u88C2\u70C8\u52A3\u730E\u7433\u6797\u78F7\u9716\u4E34\u90BB\u9CDE\u6DCB\u51DB\u8D41\u541D\u62CE\u73B2\u83F1\u96F6\u9F84\u94C3\u4F36\u7F9A\u51CC\u7075\u9675\u5CAD\u9886\u53E6\u4EE4\u6E9C\u7409\u69B4\u786B\u998F\u7559\u5218\u7624\u6D41\u67F3\u516D\u9F99\u804B\u5499\u7B3C\u7ABF\u9686\u5784\u62E2\u9647\u697C\u5A04\u6402\u7BD3\u6F0F\u964B\u82A6\u5362\u9885\u5E90\u7089\u63B3\u5364\u864F\u9C81\u9E93\u788C\u9732\u8DEF\u8D42\u9E7F\u6F5E\u7984\u5F55\u9646\u622E\u9A74\u5415\u94DD\u4FA3\u65C5\u5C65\u5C61\u7F15\u8651\u6C2F\u5F8B\u7387\u6EE4\u7EFF\u5CE6\u631B\u5B6A\u6EE6\u5375\u4E71\u63A0\u7565\u62A1\u8F6E\u4F26\u4ED1\u6CA6\u7EB6\u8BBA\u841D\u87BA\u7F57\u903B\u9523\u7BA9\u9AA1\u88F8\u843D\u6D1B\u9A86\u7EDC\u5988\u9EBB\u739B\u7801\u8682\u9A6C\u9A82\u561B\u5417\u57CB\u4E70\u9EA6\u5356\u8FC8\u8109\u7792\u9992\u86EE\u6EE1\u8513\u66FC\u6162\u6F2B\u8C29\u8292\u832B\u76F2\u6C13\u5FD9\u83BD\u732B\u8305\u951A\u6BDB\u77DB\u94C6\u536F\u8302\u5192\u5E3D\u8C8C\u8D38\u4E48\u73AB\u679A\u6885\u9176\u9709\u7164\u6CA1\u7709\u5A92\u9541\u6BCF\u7F8E\u6627\u5BD0\u59B9\u5A9A\u95E8\u95F7\u4EEC\u840C\u8499\u6AAC\u76DF\u9530\u731B\u68A6\u5B5F\u772F\u919A\u9761\u7CDC\u8FF7\u8C1C\u5F25\u7C73\u79D8\u89C5\u6CCC\u871C\u5BC6\u5E42\u68C9\u7720\u7EF5\u5195\u514D\u52C9\u5A29\u7F05\u9762\u82D7\u63CF\u7784\u85D0\u79D2\u6E3A\u5E99\u5999\u8511\u706D\u6C11\u62BF\u76BF\u654F\u60AF\u95FD\u660E\u879F\u9E23\u94ED\u540D\u547D\u8C2C\u6478\u6479\u8611\u6A21\u819C\u78E8\u6469\u9B54\u62B9\u672B\u83AB\u58A8\u9ED8\u6CAB\u6F20\u5BDE\u964C\u8C0B\u725F\u67D0\u62C7\u7261\u4EA9\u59C6\u6BCD\u5893\u66AE\u5E55\u52DF\u6155\u6728\u76EE\u7766\u7267\u7A46\u62FF\u54EA\u5450\u94A0\u90A3\u5A1C\u7EB3\u6C16\u4E43\u5976\u8010\u5948\u5357\u7537\u96BE\u56CA\u6320\u8111\u607C\u95F9\u6DD6\u5462\u9981\u5185\u5AE9\u80FD\u59AE\u9713\u502A\u6CE5\u5C3C\u62DF\u4F60\u533F\u817B\u9006\u6EBA\u852B\u62C8\u5E74\u78BE\u64B5\u637B\u5FF5\u5A18\u917F\u9E1F\u5C3F\u634F\u8042\u5B7D\u556E\u954A\u954D\u6D85\u60A8\u67E0\u72DE\u51DD\u5B81\u62E7\u6CDE\u725B\u626D\u94AE\u7EBD\u8113\u6D53\u519C\u5F04\u5974\u52AA\u6012\u5973\u6696\u8650\u759F\u632A\u61E6\u7CEF\u8BFA\u54E6\u6B27\u9E25\u6BB4\u85D5\u5455\u5076\u6CA4\u556A\u8DB4\u722C\u5E15\u6015\u7436\u62CD\u6392\u724C\u5F98\u6E43\u6D3E\u6500\u6F58\u76D8\u78D0\u76FC\u7554\u5224\u53DB\u4E53\u5E9E\u65C1\u802A\u80D6\u629B\u5486\u5228\u70AE\u888D\u8DD1\u6CE1\u5478\u80DA\u57F9\u88F4\u8D54\u966A\u914D\u4F69\u6C9B\u55B7\u76C6\u7830\u62A8\u70F9\u6F8E\u5F6D\u84EC\u68DA\u787C\u7BF7\u81A8\u670B\u9E4F\u6367\u78B0\u576F\u7812\u9739\u6279\u62AB\u5288\u7435\u6BD7\u5564\u813E\u75B2\u76AE\u5339\u75DE\u50FB\u5C41\u8B6C\u7BC7\u504F\u7247\u9A97\u98D8\u6F02\u74E2\u7968\u6487\u77A5\u62FC\u9891\u8D2B\u54C1\u8058\u4E52\u576A\u82F9\u840D\u5E73\u51ED\u74F6\u8BC4\u5C4F\u5761\u6CFC\u9887\u5A46\u7834\u9B44\u8FEB\u7C95\u5256\u6251\u94FA\u4EC6\u8386\u8461\u83E9\u84B2\u57D4\u6734\u5703\u666E\u6D66\u8C31\u66DD\u7011\u671F\u6B3A\u6816\u621A\u59BB\u4E03\u51C4\u6F06\u67D2\u6C8F\u5176\u68CB\u5947\u6B67\u7566\u5D0E\u8110\u9F50\u65D7\u7948\u7941\u9A91\u8D77\u5C82\u4E5E\u4F01\u542F\u5951\u780C\u5668\u6C14\u8FC4\u5F03\u6C7D\u6CE3\u8BAB\u6390\u6D3D\u7275\u6266\u948E\u94C5\u5343\u8FC1\u7B7E\u4EDF\u8C26\u4E7E\u9ED4\u94B1\u94B3\u524D\u6F5C\u9063\u6D45\u8C34\u5811\u5D4C\u6B20\u6B49\u67AA\u545B\u8154\u7F8C\u5899\u8537\u5F3A\u62A2\u6A47\u9539\u6572\u6084\u6865\u77A7\u4E54\u4FA8\u5DE7\u9798\u64AC\u7FD8\u5CED\u4FCF\u7A8D\u5207\u8304\u4E14\u602F\u7A83\u94A6\u4FB5\u4EB2\u79E6\u7434\u52E4\u82B9\u64D2\u79BD\u5BDD\u6C81\u9752\u8F7B\u6C22\u503E\u537F\u6E05\u64CE\u6674\u6C30\u60C5\u9877\u8BF7\u5E86\u743C\u7A77\u79CB\u4E18\u90B1\u7403\u6C42\u56DA\u914B\u6CC5\u8D8B\u533A\u86C6\u66F2\u8EAF\u5C48\u9A71\u6E20\u53D6\u5A36\u9F8B\u8DA3\u53BB\u5708\u98A7\u6743\u919B\u6CC9\u5168\u75CA\u62F3\u72AC\u5238\u529D\u7F3A\u7094\u7638\u5374\u9E4A\u69B7\u786E\u96C0\u88D9\u7FA4\u7136\u71C3\u5189\u67D3\u74E4\u58E4\u6518\u56B7\u8BA9\u9976\u6270\u7ED5\u60F9\u70ED\u58EC\u4EC1\u4EBA\u5FCD\u97E7\u4EFB\u8BA4\u5203\u598A\u7EAB\u6254\u4ECD\u65E5\u620E\u8338\u84C9\u8363\u878D\u7194\u6EB6\u5BB9\u7ED2\u5197\u63C9\u67D4\u8089\u8339\u8815\u5112\u5B7A\u5982\u8FB1\u4E73\u6C5D\u5165\u8925\u8F6F\u962E\u854A\u745E\u9510\u95F0\u6DA6\u82E5\u5F31\u6492\u6D12\u8428\u816E\u9CC3\u585E\u8D5B\u4E09\u53C1\u4F1E\u6563\u6851\u55D3\u4E27\u6414\u9A9A\u626B\u5AC2\u745F\u8272\u6DA9\u68EE\u50E7\u838E\u7802\u6740\u5239\u6C99\u7EB1\u50BB\u5565\u715E\u7B5B\u6652\u73CA\u82EB\u6749\u5C71\u5220\u717D\u886B\u95EA\u9655\u64C5\u8D61\u81B3\u5584\u6C55\u6247\u7F2E\u5892\u4F24\u5546\u8D4F\u664C\u4E0A\u5C1A\u88F3\u68A2\u634E\u7A0D\u70E7\u828D\u52FA\u97F6\u5C11\u54E8\u90B5\u7ECD\u5962\u8D4A\u86C7\u820C\u820D\u8D66\u6444\u5C04\u6151\u6D89\u793E\u8BBE\u7837\u7533\u547B\u4F38\u8EAB\u6DF1\u5A20\u7EC5\u795E\u6C88\u5BA1\u5A76\u751A\u80BE\u614E\u6E17\u58F0\u751F\u7525\u7272\u5347\u7EF3\u7701\u76DB\u5269\u80DC\u5723\u5E08\u5931\u72EE\u65BD\u6E7F\u8BD7\u5C38\u8671\u5341\u77F3\u62FE\u65F6\u4EC0\u98DF\u8680\u5B9E\u8BC6\u53F2\u77E2\u4F7F\u5C4E\u9A76\u59CB\u5F0F\u793A\u58EB\u4E16\u67FF\u4E8B\u62ED\u8A93\u901D\u52BF\u662F\u55DC\u566C\u9002\u4ED5\u4F8D\u91CA\u9970\u6C0F\u5E02\u6043\u5BA4\u89C6\u8BD5\u6536\u624B\u9996\u5B88\u5BFF\u6388\u552E\u53D7\u7626\u517D\u852C\u67A2\u68B3\u6B8A\u6292\u8F93\u53D4\u8212\u6DD1\u758F\u4E66\u8D4E\u5B70\u719F\u85AF\u6691\u66D9\u7F72\u8700\u9ECD\u9F20\u5C5E\u672F\u8FF0\u6811\u675F\u620D\u7AD6\u5885\u5EB6\u6570\u6F31\u6055\u5237\u800D\u6454\u8870\u7529\u5E05\u6813\u62F4\u971C\u53CC\u723D\u8C01\u6C34\u7761\u7A0E\u542E\u77AC\u987A\u821C\u8BF4\u7855\u6714\u70C1\u65AF\u6495\u5636\u601D\u79C1\u53F8\u4E1D\u6B7B\u8086\u5BFA\u55E3\u56DB\u4F3A\u4F3C\u9972\u5DF3\u677E\u8038\u6002\u9882\u9001\u5B8B\u8BBC\u8BF5\u641C\u8258\u64DE\u55FD\u82CF\u9165\u4FD7\u7D20\u901F\u7C9F\u50F3\u5851\u6EAF\u5BBF\u8BC9\u8083\u9178\u849C\u7B97\u867D\u968B\u968F\u7EE5\u9AD3\u788E\u5C81\u7A57\u9042\u96A7\u795F\u5B59\u635F\u7B0B\u84D1\u68AD\u5506\u7F29\u7410\u7D22\u9501\u6240\u584C\u4ED6\u5B83\u5979\u5854\u736D\u631E\u8E4B\u8E0F\u80CE\u82D4\u62AC\u53F0\u6CF0\u915E\u592A\u6001\u6C70\u574D\u644A\u8D2A\u762B\u6EE9\u575B\u6A80\u75F0\u6F6D\u8C2D\u8C08\u5766\u6BEF\u8892\u78B3\u63A2\u53F9\u70AD\u6C64\u5858\u642A\u5802\u68E0\u819B\u5510\u7CD6\u5018\u8EBA\u6DCC\u8D9F\u70EB\u638F\u6D9B\u6ED4\u7EE6\u8404\u6843\u9003\u6DD8\u9676\u8BA8\u5957\u7279\u85E4\u817E\u75BC\u8A8A\u68AF\u5254\u8E22\u9511\u63D0\u9898\u8E44\u557C\u4F53\u66FF\u568F\u60D5\u6D95\u5243\u5C49\u5929\u6DFB\u586B\u7530\u751C\u606C\u8214\u8146\u6311\u6761\u8FE2\u773A\u8DF3\u8D34\u94C1\u5E16\u5385\u542C\u70C3\u6C40\u5EF7\u505C\u4EAD\u5EAD\u633A\u8247\u901A\u6850\u916E\u77B3\u540C\u94DC\u5F64\u7AE5\u6876\u6345\u7B52\u7EDF\u75DB\u5077\u6295\u5934\u900F\u51F8\u79C3\u7A81\u56FE\u5F92\u9014\u6D82\u5C60\u571F\u5410\u5154\u6E4D\u56E2\u63A8\u9893\u817F\u8715\u892A\u9000\u541E\u5C6F\u81C0\u62D6\u6258\u8131\u9E35\u9640\u9A6E\u9A7C\u692D\u59A5\u62D3\u553E\u6316\u54C7\u86D9\u6D3C\u5A03\u74E6\u889C\u6B6A\u5916\u8C4C\u5F2F\u6E7E\u73A9\u987D\u4E38\u70F7\u5B8C\u7897\u633D\u665A\u7696\u60CB\u5B9B\u5A49\u4E07\u8155\u6C6A\u738B\u4EA1\u6789\u7F51\u5F80\u65FA\u671B\u5FD8\u5984\u5A01\u5DCD\u5FAE\u5371\u97E6\u8FDD\u6845\u56F4\u552F\u60DF\u4E3A\u6F4D\u7EF4\u82C7\u840E\u59D4\u4F1F\u4F2A\u5C3E\u7EAC\u672A\u851A\u5473\u754F\u80C3\u5582\u9B4F\u4F4D\u6E2D\u8C13\u5C09\u6170\u536B\u761F\u6E29\u868A\u6587\u95FB\u7EB9\u543B\u7A33\u7D0A\u95EE\u55E1\u7FC1\u74EE\u631D\u8717\u6DA1\u7A9D\u6211\u65A1\u5367\u63E1\u6C83\u5DEB\u545C\u94A8\u4E4C\u6C61\u8BEC\u5C4B\u65E0\u829C\u68A7\u543E\u5434\u6BCB\u6B66\u4E94\u6342\u5348\u821E\u4F0D\u4FAE\u575E\u620A\u96FE\u6664\u7269\u52FF\u52A1\u609F\u8BEF\u6614\u7199\u6790\u897F\u7852\u77FD\u6670\u563B\u5438\u9521\u727A\u7A00\u606F\u5E0C\u6089\u819D\u5915\u60DC\u7184\u70EF\u6EAA\u6C50\u7280\u6A84\u88AD\u5E2D\u4E60\u5AB3\u559C\u94E3\u6D17\u7CFB\u9699\u620F\u7EC6\u778E\u867E\u5323\u971E\u8F96\u6687\u5CE1\u4FA0\u72ED\u4E0B\u53A6\u590F\u5413\u6380\u9528\u5148\u4ED9\u9C9C\u7EA4\u54B8\u8D24\u8854\u8237\u95F2\u6D8E\u5F26\u5ACC\u663E\u9669\u73B0\u732E\u53BF\u817A\u9985\u7FA1\u5BAA\u9677\u9650\u7EBF\u76F8\u53A2\u9576\u9999\u7BB1\u8944\u6E58\u4E61\u7FD4\u7965\u8BE6\u60F3\u54CD\u4EAB\u9879\u5DF7\u6A61\u50CF\u5411\u8C61\u8427\u785D\u9704\u524A\u54EE\u56A3\u9500\u6D88\u5BB5\u6DC6\u6653\u5C0F\u5B5D\u6821\u8096\u5578\u7B11\u6548\u6954\u4E9B\u6B47\u874E\u978B\u534F\u631F\u643A\u90AA\u659C\u80C1\u8C10\u5199\u68B0\u5378\u87F9\u61C8\u6CC4\u6CFB\u8C22\u5C51\u85AA\u82AF\u950C\u6B23\u8F9B\u65B0\u5FFB\u5FC3\u4FE1\u8845\u661F\u8165\u7329\u60FA\u5174\u5211\u578B\u5F62\u90A2\u884C\u9192\u5E78\u674F\u6027\u59D3\u5144\u51F6\u80F8\u5308\u6C79\u96C4\u718A\u4F11\u4FEE\u7F9E\u673D\u55C5\u9508\u79C0\u8896\u7EE3\u589F\u620C\u9700\u865A\u5618\u987B\u5F90\u8BB8\u84C4\u9157\u53D9\u65ED\u5E8F\u755C\u6064\u7D6E\u5A7F\u7EEA\u7EED\u8F69\u55A7\u5BA3\u60AC\u65CB\u7384\u9009\u7663\u7729\u7EDA\u9774\u859B\u5B66\u7A74\u96EA\u8840\u52CB\u718F\u5FAA\u65EC\u8BE2\u5BFB\u9A6F\u5DE1\u6B89\u6C5B\u8BAD\u8BAF\u900A\u8FC5\u538B\u62BC\u9E26\u9E2D\u5440\u4E2B\u82BD\u7259\u869C\u5D16\u8859\u6DAF\u96C5\u54D1\u4E9A\u8BB6\u7109\u54BD\u9609\u70DF\u6DF9\u76D0\u4E25\u7814\u8712\u5CA9\u5EF6\u8A00\u989C\u960E\u708E\u6CBF\u5944\u63A9\u773C\u884D\u6F14\u8273\u5830\u71D5\u538C\u781A\u96C1\u5501\u5F66\u7130\u5BB4\u8C1A\u9A8C\u6B83\u592E\u9E2F\u79E7\u6768\u626C\u4F6F\u75A1\u7F8A\u6D0B\u9633\u6C27\u4EF0\u75D2\u517B\u6837\u6F3E\u9080\u8170\u5996\u7476\u6447\u5C27\u9065\u7A91\u8C23\u59DA\u54AC\u8200\u836F\u8981\u8000\u6930\u564E\u8036\u7237\u91CE\u51B6\u4E5F\u9875\u6396\u4E1A\u53F6\u66F3\u814B\u591C\u6DB2\u4E00\u58F9\u533B\u63D6\u94F1\u4F9D\u4F0A\u8863\u9890\u5937\u9057\u79FB\u4EEA\u80F0\u7591\u6C82\u5B9C\u59E8\u5F5D\u6905\u8681\u501A\u5DF2\u4E59\u77E3\u4EE5\u827A\u6291\u6613\u9091\u5C79\u4EBF\u5F79\u81C6\u9038\u8084\u75AB\u4EA6\u88D4\u610F\u6BC5\u5FC6\u4E49\u76CA\u6EA2\u8BE3\u8BAE\u8C0A\u8BD1\u5F02\u7FFC\u7FCC\u7ECE\u8335\u836B\u56E0\u6BB7\u97F3\u9634\u59FB\u541F\u94F6\u6DEB\u5BC5\u996E\u5C39\u5F15\u9690\u5370\u82F1\u6A31\u5A74\u9E70\u5E94\u7F28\u83B9\u8424\u8425\u8367\u8747\u8FCE\u8D62\u76C8\u5F71\u9896\u786C\u6620\u54DF\u62E5\u4F63\u81C3\u75C8\u5EB8\u96CD\u8E0A\u86F9\u548F\u6CF3\u6D8C\u6C38\u607F\u52C7\u7528\u5E7D\u4F18\u60A0\u5FE7\u5C24\u7531\u90AE\u94C0\u72B9\u6CB9\u6E38\u9149\u6709\u53CB\u53F3\u4F51\u91C9\u8BF1\u53C8\u5E7C\u8FC2\u6DE4\u4E8E\u76C2\u6986\u865E\u611A\u8206\u4F59\u4FDE\u903E\u9C7C\u6109\u6E1D\u6E14\u9685\u4E88\u5A31\u96E8\u4E0E\u5C7F\u79B9\u5B87\u8BED\u7FBD\u7389\u57DF\u828B\u90C1\u5401\u9047\u55BB\u5CEA\u5FA1\u6108\u6B32\u72F1\u80B2\u8A89\u6D74\u5BD3\u88D5\u9884\u8C6B\u9A6D\u9E33\u6E0A\u51A4\u5143\u57A3\u8881\u539F\u63F4\u8F95\u56ED\u5458\u5706\u733F\u6E90\u7F18\u8FDC\u82D1\u613F\u6028\u9662\u66F0\u7EA6\u8D8A\u8DC3\u94A5\u5CB3\u7CA4\u6708\u60A6\u9605\u8018\u4E91\u90E7\u5300\u9668\u5141\u8FD0\u8574\u915D\u6655\u97F5\u5B55\u531D\u7838\u6742\u683D\u54C9\u707E\u5BB0\u8F7D\u518D\u5728\u54B1\u6512\u6682\u8D5E\u8D43\u810F\u846C\u906D\u7CDF\u51FF\u85FB\u67A3\u65E9\u6FA1\u86A4\u8E81\u566A\u9020\u7682\u7076\u71E5\u8D23\u62E9\u5219\u6CFD\u8D3C\u600E\u589E\u618E\u66FE\u8D60\u624E\u55B3\u6E23\u672D\u8F67\u94E1\u95F8\u7728\u6805\u69A8\u548B\u4E4D\u70B8\u8BC8\u6458\u658B\u5B85\u7A84\u503A\u5BE8\u77BB\u6BE1\u8A79\u7C98\u6CBE\u76CF\u65A9\u8F97\u5D2D\u5C55\u8638\u6808\u5360\u6218\u7AD9\u6E5B\u7EFD\u6A1F\u7AE0\u5F70\u6F33\u5F20\u638C\u6DA8\u6756\u4E08\u5E10\u8D26\u4ED7\u80C0\u7634\u969C\u62DB\u662D\u627E\u6CBC\u8D75\u7167\u7F69\u5146\u8087\u53EC\u906E\u6298\u54F2\u86F0\u8F99\u8005\u9517\u8517\u8FD9\u6D59\u73CD\u659F\u771F\u7504\u7827\u81FB\u8D1E\u9488\u4FA6\u6795\u75B9\u8BCA\u9707\u632F\u9547\u9635\u84B8\u6323\u7741\u5F81\u72F0\u4E89\u6014\u6574\u62EF\u6B63\u653F\u5E27\u75C7\u90D1\u8BC1\u829D\u679D\u652F\u5431\u8718\u77E5\u80A2\u8102\u6C41\u4E4B\u7EC7\u804C\u76F4\u690D\u6B96\u6267\u503C\u4F84\u5740\u6307\u6B62\u8DBE\u53EA\u65E8\u7EB8\u5FD7\u631A\u63B7\u81F3\u81F4\u7F6E\u5E1C\u5CD9\u5236\u667A\u79E9\u7A1A\u8D28\u7099\u75D4\u6EDE\u6CBB\u7A92\u4E2D\u76C5\u5FE0\u949F\u8877\u7EC8\u79CD\u80BF\u91CD\u4EF2\u4F17\u821F\u5468\u5DDE\u6D32\u8BCC\u7CA5\u8F74\u8098\u5E1A\u5492\u76B1\u5B99\u663C\u9AA4\u73E0\u682A\u86DB\u6731\u732A\u8BF8\u8BDB\u9010\u7AF9\u70DB\u716E\u62C4\u77A9\u5631\u4E3B\u8457\u67F1\u52A9\u86C0\u8D2E\u94F8\u7B51\u4F4F\u6CE8\u795D\u9A7B\u6293\u722A\u62FD\u4E13\u7816\u8F6C\u64B0\u8D5A\u7BC6\u6869\u5E84\u88C5\u5986\u649E\u58EE\u72B6\u690E\u9525\u8FFD\u8D58\u5760\u7F00\u8C06\u51C6\u6349\u62D9\u5353\u684C\u7422\u8301\u914C\u5544\u7740\u707C\u6D4A\u5179\u54A8\u8D44\u59FF\u6ECB\u6DC4\u5B5C\u7D2B\u4ED4\u7C7D\u6ED3\u5B50\u81EA\u6E0D\u5B57\u9B03\u68D5\u8E2A\u5B97\u7EFC\u603B\u7EB5\u90B9\u8D70\u594F\u63CD\u79DF\u8DB3\u5352\u65CF\u7956\u8BC5\u963B\u7EC4\u94BB\u7E82\u5634\u9189\u6700\u7F6A\u5C0A\u9075\u6628\u5DE6\u4F50\u67DE\u505A\u4F5C\u5750\u5EA7\u9515\u55F3\u5AD2\u7477\u66A7\u972D\u8C19\u94F5\u9E4C\u5AAA\u9A9C\u9CCC\u94AF\u5457\u94A3\u9E28\u9F85\u9E4E\u8D32\u951B\u835C\u54D4\u6ED7\u94CB\u7B5A\u8DF8\u82C4\u7F0F\u7B3E\u9AA0\u98D1\u98D9\u9556\u9573\u9CD4\u50A7\u7F24\u69DF\u6BA1\u8191\u9554\u9ACC\u9B13\u7980\u997D\u94B9\u9E41\u94B8\u9A96\u9EEA\u607B\u9538\u4FAA\u9497\u5181\u8C04\u8C36\u8487\u5FCF\u5A75\u9AA3\u89C7\u7985\u9561\u4F25\u82CC\u6005\u960A\u9CB3\u7817\u4F27\u8C0C\u6987\u789C\u9F80\u67A8\u67FD\u94D6\u94DB\u996C\u9E31\u94F3\u4FE6\u5E31\u96E0\u520D\u7ECC\u8E70\u948F\u6006\u7F0D\u9E51\u8F8D\u9F8A\u9E5A\u82C1\u9AA2\u679E\u8F8F\u64BA\u9509\u9E7E\u54D2\u9791\u9A80\u7ED0\u6B9A\u8D55\u7605\u7BAA\u8C20\u7800\u88C6\u7118\u956B\u7C74\u8BCB\u8C1B\u7EE8\u89CC\u955D\u5DC5\u94BF\u766B\u94EB\u9CB7\u9CBD\u94E4\u94E5\u5CBD\u9E2B\u7AA6\u6E0E\u691F\u724D\u7B03\u9EE9\u7C16\u603C\u9566\u7096\u8DB8\u94CE\u8C14\u57A9\u960F\u8F6D\u9507\u9537\u9E57\u989A\u989B\u9CC4\u8BF6\u8FE9\u94D2\u9E38\u9C95\u94AB\u9C82\u7EEF\u9544\u9CB1\u507E\u6CA3\u51EB\u9A78\u7EC2\u7ECB\u8D59\u9EB8\u9C8B\u9CC6\u9486\u8D45\u5C34\u64C0\u7EC0\u6206\u777E\u8BF0\u7F1F\u9506\u7EA5\u9549\u988D\u4E98\u8D53\u7EE0\u9CA0\u8BDF\u7F11\u89CF\u8BC2\u6BC2\u94B4\u9522\u9E2A\u9E44\u9E58\u9E39\u63B4\u8BD6\u63BC\u9E73\u9CCF\u72B7\u5326\u523F\u59AB\u6867\u9C91\u9CDC\u886E\u7EF2\u9CA7\u57DA\u5459\u5E3C\u6901\u8748\u94EA\u961A\u7ED7\u9889\u704F\u98A2\u8BC3\u9616\u86CE\u9EC9\u8BA7\u836D\u95F3\u9C8E\u6D52\u9E55\u9A85\u6866\u94E7\u5942\u7F33\u953E\u9CA9\u9CC7\u8BD9\u835F\u54D5\u6D4D\u7F0B\u73F2\u6656\u8BE8\u9984\u960D\u94AC\u956C\u8BA6\u8BD8\u8360\u53FD\u54DC\u9AA5\u7391\u89CA\u9F51\u77F6\u7F81\u867F\u8DFB\u9701\u9C9A\u9CAB\u90CF\u6D43\u94D7\u9553\u86F2\u8C0F\u7F23\u620B\u622C\u7751\u9E63\u7B15\u9CA3\u97AF\u7EDB\u7F30\u6322\u5CE4\u9E6A\u9C9B\u7596\u988C\u9C92\u537A\u8369\u9991\u7F19\u8D46\u89D0\u522D\u6CFE\u8FF3\u5F2A\u80EB\u9753\u9604\u9E20\u9E6B\u8BB5\u5C66\u6989\u98D3\u949C\u9514\u7AAD\u9F83\u9529\u954C\u96BD\u8C32\u73CF\u76B2\u5240\u57B2\u5FFE\u607A\u94E0\u9534\u9F9B\u95F6\u94AA\u94D0\u9A92\u7F02\u8F72\u94B6\u951E\u9894\u9F88\u94FF\u55BE\u90D0\u54D9\u810D\u72EF\u9ACB\u8BD3\u8BF3\u909D\u5739\u7EA9\u8D36\u532E\u8489\u6126\u8069\u7BD1\u9603\u951F\u9CB2\u86F4\u5D03\u5F95\u6D9E\u6FD1\u8D49\u7750\u94FC\u765E\u7C41\u5C9A\u6984\u6593\u9567\u8934\u9606\u9512\u5520\u5D02\u94D1\u94F9\u75E8\u9CD3\u8BD4\u7F27\u4FEA\u90E6\u575C\u82C8\u8385\u84E0\u5456\u9026\u9A8A\u7F21\u67A5\u680E\u8F79\u783A\u9502\u9E42\u75A0\u7C9D\u8DDE\u96F3\u9CA1\u9CE2\u8539\u5941\u6F4B\u740F\u6B93\u88E2\u88E3\u9CA2\u9B49\u7F2D\u948C\u9E69\u853A\u5EEA\u6AA9\u8F9A\u8E8F\u7EEB\u68C2\u86CF\u9CAE\u6D4F\u9A9D\u7EFA\u954F\u9E68\u830F\u6CF7\u73D1\u680A\u80E7\u783B\u507B\u848C\u55BD\u5D5D\u9542\u7618\u8027\u877C\u9AC5\u5786\u64B8\u565C\u95FE\u6CF8\u6E0C\u680C\u6A79\u8F73\u8F82\u8F98\u6C07\u80EA\u9E2C\u9E6D\u823B\u9C88\u8114\u5A08\u683E\u9E3E\u92AE\u56F5\u8366\u7321\u6CFA\u6924\u8136\u9559\u6988\u891B\u950A\u5452\u551B\u5B37\u6769\u52A2\u7F26\u9558\u98A1\u9CD7\u9EBD\u626A\u7116\u61D1\u9494\u8288\u8C27\u7315\u7962\u6E11\u817C\u9EFE\u7F08\u7F2A\u95F5\u7F17\u8C1F\u84E6\u998D\u6B81\u9546\u94BC\u94D9\u8BB7\u94CC\u9CB5\u8F87\u9CB6\u8311\u8885\u9667\u8616\u55EB\u989F\u8E51\u82CE\u549B\u804D\u4FAC\u54DD\u9A7D\u9495\u50A9\u8BB4\u6004\u74EF\u8E52\u75B1\u8F94\u7EB0\u7F74\u94CD\u8C1D\u9A88\u7F25\u5AD4\u948B\u9564\u9568\u8572\u9A90\u7EEE\u6864\u789B\u9880\u9883\u9CCD\u4F65\u8368\u60AD\u9A9E\u7F31\u6920\u94A4\u5AF1\u6A2F\u6217\u709D\u9516\u9535\u956A\u7F9F\u8DC4\u8BEE\u8C2F\u835E\u7F32\u7857\u8DF7\u60EC\u9532\u7BA7\u9513\u63FF\u9CAD\u8315\u86F1\u5DEF\u8D47\u866E\u9CC5\u8BCE\u5C96\u9612\u89D1\u9E32\u8BE0\u7EFB\u8F81\u94E8\u9615\u9619\u60AB\u835B\u5A06\u6861\u996A\u8F6B\u5D58\u877E\u7F1B\u94F7\u98A6\u86AC\u98D2\u6BF5\u7CC1\u7F2B\u556C\u94EF\u7A51\u94E9\u9CA8\u917E\u8BAA\u59D7\u9A9F\u9490\u9CDD\u57A7\u6B87\u89DE\u538D\u6EE0\u7572\u8BDC\u8C02\u6E16\u8C25\u57D8\u83B3\u5F11\u8F7C\u8D33\u94C8\u9CA5\u7EF6\u6445\u7EBE\u95E9\u94C4\u53AE\u9A77\u7F0C\u9536\u9E36\u85AE\u998A\u98D5\u953C\u8C21\u7A23\u8C07\u836A\u72F2\u5522\u7743\u95FC\u94CA\u9CCE\u949B\u9C90\u6619\u94BD\u952C\u9878\u50A5\u9967\u94F4\u9557\u97EC\u94FD\u7F07\u9E48\u9617\u7C9C\u9F86\u9CA6\u6078\u94AD\u948D\u629F\u9968\u7BA8\u9F0D\u5A32\u817D\u7EA8\u7EFE\u8F8B\u8BFF\u5E0F\u95F1\u6CA9\u6DA0\u73AE\u97EA\u709C\u9C94\u960C\u83B4\u9F8C\u90AC\u5E91\u6003\u59A9\u9A9B\u9E49\u9E5C\u9969\u960B\u73BA\u89CB\u7856\u82CB\u83B6\u85D3\u5C98\u7303\u5A34\u9E47\u75EB\u869D\u7C7C\u8DF9\u8297\u9977\u9AA7\u7F03\u98E8\u54D3\u6F47\u9A81\u7EE1\u67AD\u7BAB\u4EB5\u64B7\u7EC1\u7F2C\u9649\u8365\u9990\u9E3A\u8BE9\u987C\u8C16\u94C9\u955F\u8C11\u6CF6\u9CD5\u57D9\u6D54\u9C9F\u57AD\u5A05\u6860\u6C29\u53A3\u8D5D\u4FE8\u5156\u8C33\u6079\u95EB\u917D\u9B47\u990D\u9F39\u7080\u8F7A\u9E5E\u9CD0\u9765\u8C12\u90BA\u6654\u70E8\u8BD2\u5453\u5CC4\u9974\u603F\u9A7F\u7F22\u8F76\u8D3B\u9487\u9552\u9571\u7617\u8223\u94DF\u763E\u8314\u83BA\u8426\u84E5\u6484\u5624\u6EE2\u6F46\u748E\u9E66\u763F\u988F\u7F42\u955B\u83B8\u94D5\u9C7F\u4F1B\u4FE3\u8C00\u8C15\u84E3\u5D5B\u996B\u9608\u59AA\u7EA1\u89CE\u6B24\u94B0\u9E46\u9E6C\u9F89\u6A7C\u9E22\u9F0B\u94BA\u90D3\u82B8\u607D\u6120\u7EAD\u97EB\u6B92\u6C32\u74D2\u8DB1\u933E\u9A75\u8D5C\u5567\u5E3B\u7BA6\u8C2E\u7F2F\u8C35\u8BCF\u948A\u8C2A\u8F84\u9E67\u6D48\u7F1C\u6862\u8F78\u8D48\u796F\u9E29\u8BE4\u5CE5\u94B2\u94EE\u7B5D\u9A98\u6809\u6800\u8F75\u8F7E\u8D3D\u9E37\u86F3\u7D77\u8E2C\u8E2F\u89EF\u953A\u7EA3\u7EC9\u4F2B\u69E0\u94E2\u556D\u9994\u989E\u9A93\u7F12\u8BFC\u956F\u8C18\u7F01\u8F8E\u8D40\u7726\u9531\u9F87\u9CBB\u506C\u8BF9\u9A7A\u9CB0\u955E\u7F35\u8E9C\u9CDF\u8BA0\u8C2B\u90C4\u52D0\u51FC\u5742\u5785\u57B4\u57EF\u57DD\u82D8\u836C\u836E\u839C\u83BC\u83F0\u85C1\u63F8\u5412\u5423\u5494\u549D\u54B4\u5658\u567C\u56AF\u5E5E\u5C99\u5D74\u5F77\u5FBC\u72B8\u72CD\u9980\u9987\u9993\u9995\u6123\u61B7\u61D4\u4E2C\u6E86\u6EDF\u6EB7\u6F24\u6F74\u6FB9\u752F\u7E9F\u7ED4\u7EF1\u73C9\u67A7\u684A\u6849\u69D4\u6A65\u8F71\u8F77\u8D4D\u80B7\u80E8\u98DA\u7173\u7145\u7198\u610D\u6DFC\u781C\u78D9\u770D\u949A\u94B7\u94D8\u94DE\u9503\u950D\u950E\u950F\u9518\u951D\u952A\u952B\u953F\u9545\u954E\u9562\u9565\u9569\u9572\u7A06\u9E4B\u9E5B\u9E71\u75AC\u75B4\u75D6\u766F\u88E5\u8941\u8022\u98A5\u87A8\u9EB4\u9C85\u9C86\u9C87\u9C9E\u9CB4\u9CBA\u9CBC\u9CCA\u9CCB\u9CD8\u9CD9\u9792\u97B4\u9F44",TMe="\u554A\u963F\u57C3\u6328\u54CE\u5509\u54C0\u769A\u764C\u85F9\u77EE\u827E\u7919\u611B\u9698\u978D\u6C28\u5B89\u4FFA\u6309\u6697\u5CB8\u80FA\u6848\u9AAF\u6602\u76CE\u51F9\u6556\u71AC\u7FFA\u8956\u50B2\u5967\u61CA\u6FB3\u82AD\u634C\u6252\u53ED\u5427\u7B06\u516B\u75A4\u5DF4\u62D4\u8DCB\u9776\u628A\u8019\u58E9\u9738\u7F77\u7238\u767D\u67CF\u767E\u64FA\u4F70\u6557\u62DC\u7A17\u6591\u73ED\u642C\u6273\u822C\u9812\u677F\u7248\u626E\u62CC\u4F34\u74E3\u534A\u8FA6\u7D46\u90A6\u5E6B\u6886\u699C\u8180\u7D81\u68D2\u78C5\u868C\u938A\u508D\u8B17\u82DE\u80DE\u5305\u8912\u525D\u8584\u96F9\u4FDD\u5821\u98FD\u5BF6\u62B1\u5831\u66B4\u8C79\u9B91\u7206\u676F\u7891\u60B2\u5351\u5317\u8F29\u80CC\u8C9D\u92C7\u500D\u72FD\u5099\u618A\u7119\u88AB\u5954\u82EF\u672C\u7B28\u5D29\u7E43\u752D\u6CF5\u8E66\u8FF8\u903C\u9F3B\u6BD4\u9119\u7B46\u5F7C\u78A7\u84D6\u853D\u7562\u6583\u6BD6\u5E63\u5E87\u75F9\u9589\u655D\u5F0A\u5FC5\u8F9F\u58C1\u81C2\u907F\u965B\u97AD\u908A\u7DE8\u8CB6\u6241\u4FBF\u8B8A\u535E\u8FA8\u8FAF\u8FAE\u904D\u6A19\u5F6A\u8198\u8868\u9C49\u618B\u5225\u765F\u5F6C\u658C\u7015\u6FF1\u8CD3\u64EF\u5175\u51B0\u67C4\u4E19\u79C9\u9905\u70B3\u75C5\u4E26\u73BB\u83E0\u64AD\u64A5\u7F3D\u6CE2\u535A\u52C3\u640F\u9251\u7B94\u4F2F\u5E1B\u8236\u8116\u818A\u6E24\u6CCA\u99C1\u6355\u8514\u54FA\u88DC\u57E0\u4E0D\u5E03\u6B65\u7C3F\u90E8\u6016\u64E6\u731C\u88C1\u6750\u624D\u8CA1\u776C\u8E29\u91C7\u5F69\u83DC\u8521\u9910\u53C3\u8836\u6B98\u615A\u6158\u71E6\u84BC\u8259\u5009\u6EC4\u85CF\u64CD\u7CD9\u69FD\u66F9\u8349\u5EC1\u7B56\u5074\u518A\u6E2C\u5C64\u8E6D\u63D2\u53C9\u832C\u8336\u67E5\u78B4\u643D\u5BDF\u5C94\u5DEE\u8A6B\u62C6\u67F4\u8C7A\u6519\u647B\u87EC\u995E\u8B92\u7E8F\u93DF\u7522\u95E1\u986B\u660C\u7316\u5834\u5617\u5E38\u9577\u511F\u8178\u5EE0\u655E\u66A2\u5531\u5021\u8D85\u6284\u9214\u671D\u5632\u6F6E\u5DE2\u5435\u7092\u8ECA\u626F\u64A4\u63A3\u5FB9\u6F88\u90F4\u81E3\u8FB0\u5875\u6668\u5FF1\u6C88\u9673\u8D81\u896F\u6490\u7A31\u57CE\u6A59\u6210\u5448\u4E58\u7A0B\u61F2\u6F84\u8AA0\u627F\u901E\u9A01\u79E4\u5403\u7661\u6301\u5319\u6C60\u9072\u5F1B\u99B3\u6065\u9F52\u4F88\u5C3A\u8D64\u7FC5\u65A5\u71BE\u5145\u6C96\u87F2\u5D07\u5BF5\u62BD\u916C\u7587\u8E8A\u7A20\u6101\u7C4C\u4EC7\u7DA2\u7785\u919C\u81ED\u521D\u51FA\u6AE5\u5EDA\u8E87\u92E4\u96DB\u6EC1\u9664\u695A\u790E\u5132\u77D7\u6410\u89F8\u8655\u63E3\u5DDD\u7A7F\u693D\u50B3\u8239\u5598\u4E32\u7621\u7A97\u5E62\u5E8A\u95D6\u5275\u5439\u708A\u6376\u9318\u5782\u6625\u693F\u9187\u5507\u6DF3\u7D14\u8822\u6233\u7DBD\u75B5\u8328\u78C1\u96CC\u8FAD\u6148\u74F7\u8A5E\u6B64\u523A\u8CDC\u6B21\u8070\u8525\u56EA\u5306\u5F9E\u53E2\u6E4A\u7C97\u918B\u7C07\u4FC3\u8EA5\u7BE1\u7AC4\u6467\u5D14\u50AC\u8106\u7601\u7CB9\u6DEC\u7FE0\u6751\u5B58\u5BF8\u78CB\u64AE\u6413\u63AA\u632B\u932F\u642D\u9054\u7B54\u7629\u6253\u5927\u5446\u6B79\u50A3\u6234\u5E36\u6B86\u4EE3\u8CB8\u888B\u5F85\u902E\u6020\u803D\u64D4\u4E39\u55AE\u9132\u64A3\u81BD\u65E6\u6C2E\u4F46\u619A\u6DE1\u8A95\u5F48\u86CB\u7576\u64CB\u9EE8\u8569\u6A94\u5200\u6417\u8E48\u5012\u5CF6\u79B1\u5C0E\u5230\u7A3B\u60BC\u9053\u76DC\u5FB7\u5F97\u7684\u8E6C\u71C8\u767B\u7B49\u77AA\u51F3\u9127\u5824\u4F4E\u6EF4\u8FEA\u6575\u7B1B\u72C4\u6ECC\u7FDF\u5AE1\u62B5\u5E95\u5730\u8482\u7B2C\u5E1D\u5F1F\u905E\u7DE0\u985B\u6382\u6EC7\u7898\u9EDE\u5178\u975B\u588A\u96FB\u4F43\u7538\u5E97\u60E6\u5960\u6FB1\u6BBF\u7889\u53FC\u96D5\u96D5\u5201\u6389\u540A\u91E3\u8ABF\u8DCC\u7239\u789F\u8776\u53E0\u8ADC\u758A\u4E01\u76EF\u53EE\u91D8\u9802\u9F0E\u9320\u5B9A\u8A02\u4E1F\u6771\u51AC\u8463\u61C2\u52D5\u68DF\u4F97\u606B\u51CD\u6D1E\u515C\u6296\u9B25\u9661\u8C46\u9017\u75D8\u90FD\u7763\u6BD2\u72A2\u7368\u8B80\u5835\u7779\u8CED\u675C\u934D\u809A\u5EA6\u6E21\u5992\u7AEF\u77ED\u935B\u6BB5\u65B7\u7DDE\u5806\u514C\u968A\u5C0D\u58A9\u5678\u8E72\u6566\u9813\u56E4\u920D\u76FE\u9041\u6387\u54C6\u591A\u596A\u579B\u8EB2\u6735\u8DFA\u8235\u5241\u60F0\u58AE\u86FE\u5CE8\u9D5D\u4FC4\u984D\u8A1B\u5A25\u60E1\u5384\u627C\u904F\u9102\u9913\u6069\u800C\u5152\u8033\u723E\u990C\u6D31\u4E8C\u8CB3\u767C\u7F70\u7B4F\u4F10\u4E4F\u95A5\u6CD5\u743A\u85E9\u5E06\u756A\u7FFB\u6A0A\u792C\u91E9\u7E41\u51E1\u7169\u53CD\u8FD4\u7BC4\u8CA9\u72AF\u98EF\u6CDB\u574A\u82B3\u65B9\u80AA\u623F\u9632\u59A8\u4EFF\u8A2A\u7D21\u653E\u83F2\u975E\u5561\u98DB\u80A5\u532A\u8AB9\u5420\u80BA\u5EE2\u6CB8\u8CBB\u82AC\u915A\u5429\u6C1B\u5206\u7D1B\u58B3\u711A\u6C7E\u7C89\u596E\u4EFD\u5FFF\u61A4\u7CDE\u8C50\u5C01\u6953\u8702\u5CF0\u92D2\u98A8\u760B\u70FD\u9022\u99AE\u7E2B\u8AF7\u5949\u9CF3\u4F5B\u5426\u592B\u6577\u819A\u5B75\u6276\u62C2\u8F3B\u5E45\u6C1F\u7B26\u4F0F\u4FD8\u670D\u6D6E\u6DAA\u798F\u88B1\u5F17\u752B\u64AB\u8F14\u4FEF\u91DC\u65A7\u812F\u8151\u5E9C\u8150\u8D74\u526F\u8986\u8CE6\u5FA9\u5085\u4ED8\u961C\u7236\u8179\u8CA0\u5BCC\u8A03\u9644\u5A66\u7E1B\u5490\u5676\u560E\u8A72\u6539\u6982\u9223\u84CB\u6E89\u5E79\u7518\u687F\u67D1\u7AFF\u809D\u8D95\u611F\u7A08\u6562\u8D1B\u5CA1\u525B\u92FC\u7F38\u809B\u7DB1\u5D17\u6E2F\u6760\u7BD9\u81EF\u9AD8\u818F\u7F94\u7CD5\u641E\u93AC\u7A3F\u544A\u54E5\u6B4C\u64F1\u6208\u9D3F\u80F3\u7599\u5272\u9769\u845B\u683C\u86E4\u95A3\u9694\u927B\u500B\u5404\u7D66\u6839\u8DDF\u8015\u66F4\u5E9A\u7FB9\u57C2\u803F\u6897\u5DE5\u653B\u529F\u606D\u9F94\u4F9B\u8EAC\u516C\u5BAE\u5F13\u978F\u6C5E\u62F1\u8CA2\u5171\u9264\u52FE\u6E9D\u830D\u72D7\u57A2\u69CB\u8CFC\u5920\u8F9C\u83C7\u5495\u7B8D\u4F30\u6CBD\u5B64\u59D1\u9F13\u53E4\u8831\u9AA8\u8C37\u80A1\u6545\u9867\u56FA\u96C7\u522E\u74DC\u526E\u5BE1\u639B\u8902\u4E56\u62D0\u602A\u68FA\u95DC\u5B98\u51A0\u89C0\u7BA1\u9928\u7F50\u6163\u704C\u8CAB\u5149\u5EE3\u901B\u7470\u898F\u572D\u77FD\u6B78\u9F9C\u95A8\u8ECC\u9B3C\u8A6D\u7678\u6842\u6AC3\u8DEA\u8CB4\u528A\u8F25\u6EFE\u68CD\u934B\u90ED\u570B\u679C\u88F9\u904E\u54C8\u9AB8\u5B69\u6D77\u6C26\u4EA5\u5BB3\u99ED\u9163\u61A8\u90AF\u97D3\u542B\u6DB5\u5BD2\u51FD\u558A\u7F55\u7FF0\u64BC\u634D\u65F1\u61BE\u608D\u710A\u6C57\u6F22\u592F\u676D\u822A\u58D5\u568E\u8C6A\u6BEB\u90DD\u597D\u8017\u865F\u6D69\u5475\u559D\u8377\u83CF\u6838\u79BE\u548C\u4F55\u5408\u76D2\u8C89\u95A1\u6CB3\u6DB8\u8D6B\u8910\u9DB4\u8CC0\u563F\u9ED1\u75D5\u5F88\u72E0\u6068\u54FC\u4EA8\u6A6B\u8861\u6052\u8F5F\u54C4\u70D8\u8679\u9D3B\u6D2A\u5B8F\u5F18\u7D05\u5589\u4FAF\u7334\u543C\u539A\u5019\u5F8C\u547C\u4E4E\u5FFD\u745A\u58FA\u846B\u80E1\u8774\u72D0\u7CCA\u6E56\u5F27\u864E\u552C\u8B77\u4E92\u6EEC\u6236\u82B1\u5629\u83EF\u733E\u6ED1\u756B\u5283\u5316\u8A71\u69D0\u5F8A\u61F7\u6DEE\u58DE\u6B61\u74B0\u6853\u9084\u7DE9\u63DB\u60A3\u559A\u7613\u8C62\u7165\u6E19\u5BA6\u5E7B\u8352\u614C\u9EC3\u78FA\u8757\u7C27\u7687\u51F0\u60F6\u714C\u6643\u5E4C\u604D\u8B0A\u7070\u63EE\u8F1D\u5FBD\u6062\u86D4\u56DE\u6BC0\u6094\u6167\u5349\u60E0\u6666\u8CC4\u7A62\u6703\u71F4\u532F\u8AF1\u8AA8\u7E6A\u8477\u660F\u5A5A\u9B42\u6E3E\u6DF7\u8C41\u6D3B\u5925\u706B\u7372\u6216\u60D1\u970D\u8CA8\u798D\u64CA\u573E\u57FA\u6A5F\u7578\u7A3D\u7A4D\u7B95\u808C\u9951\u8DE1\u6FC0\u8B4F\u96DE\u59EC\u7E3E\u7DDD\u5409\u6975\u68D8\u8F2F\u7C4D\u96C6\u53CA\u6025\u75BE\u6C72\u5373\u5AC9\u7D1A\u64E0\u5E7E\u810A\u5DF1\u858A\u6280\u5180\u5B63\u4F0E\u796D\u5291\u60B8\u6FDF\u5BC4\u5BC2\u8A08\u8A18\u65E2\u5FCC\u969B\u7E7C\u7D00\u5609\u67B7\u593E\u4F73\u5BB6\u52A0\u83A2\u9830\u8CC8\u7532\u9240\u5047\u7A3C\u50F9\u67B6\u99D5\u5AC1\u6BB2\u76E3\u5805\u5C16\u7B8B\u9593\u714E\u517C\u80A9\u8271\u5978\u7DD8\u7E6D\u6AA2\u67EC\u583F\u9E7C\u63C0\u64BF\u7C21\u5109\u526A\u6E1B\u85A6\u6ABB\u9452\u8E10\u8CE4\u898B\u9375\u7BAD\u4EF6\u5065\u8266\u528D\u991E\u6F38\u6FFA\u6F97\u5EFA\u50F5\u59DC\u5C07\u6F3F\u6C5F\u7586\u8523\u69F3\u734E\u8B1B\u5320\u91AC\u964D\u8549\u6912\u7901\u7126\u81A0\u4EA4\u90CA\u6F86\u9A55\u5B0C\u56BC\u652A\u9278\u77EF\u50E5\u8173\u72E1\u89D2\u9903\u7E73\u7D5E\u527F\u6559\u9175\u8F4E\u8F03\u53EB\u7A96\u63ED\u63A5\u7686\u7A2D\u8857\u968E\u622A\u52AB\u7BC0\u8396\u775B\u6676\u9BE8\u4EAC\u9A5A\u7CBE\u7CB3\u7D93\u4E95\u8B66\u666F\u9838\u975C\u5883\u656C\u93E1\u5F91\u75D9\u9756\u7ADF\u7AF6\u51C8\u70AF\u7A98\u63EA\u7A76\u7CFE\u7396\u97ED\u4E45\u7078\u4E5D\u9152\u5EC4\u6551\u820A\u81FC\u8205\u548E\u5C31\u759A\u97A0\u62D8\u72D9\u75BD\u5C45\u99D2\u83CA\u5C40\u5480\u77E9\u8209\u6CAE\u805A\u62D2\u64DA\u5DE8\u5177\u8DDD\u8E1E\u92F8\u4FF1\u53E5\u61FC\u70AC\u5287\u6350\u9D51\u5A1F\u5026\u7737\u5377\u7D79\u6485\u652B\u6289\u6398\u5014\u7235\u6854\u5091\u6377\u776B\u7AED\u6F54\u7D50\u89E3\u59D0\u6212\u85C9\u82A5\u754C\u501F\u4ECB\u75A5\u8AA1\u5C46\u5DFE\u7B4B\u65A4\u91D1\u4ECA\u6D25\u895F\u7DCA\u9326\u50C5\u8B39\u9032\u9773\u6649\u7981\u8FD1\u71FC\u6D78\u76E1\u52C1\u834A\u5162\u89BA\u6C7A\u8A23\u7D55\u5747\u83CC\u921E\u8ECD\u541B\u5CFB\u4FCA\u7AE3\u6D5A\u90E1\u99FF\u5580\u5496\u5361\u54AF\u958B\u63E9\u6977\u51F1\u6168\u520A\u582A\u52D8\u574E\u780D\u770B\u5EB7\u6177\u7CE0\u625B\u6297\u4EA2\u7095\u8003\u62F7\u70E4\u9760\u5777\u82DB\u67EF\u68F5\u78D5\u9846\u79D1\u6BBC\u54B3\u53EF\u6E34\u514B\u523B\u5BA2\u8AB2\u80AF\u5543\u58BE\u61C7\u5751\u542D\u7A7A\u6050\u5B54\u63A7\u6473\u53E3\u6263\u5BC7\u67AF\u54ED\u7A9F\u82E6\u9177\u5EAB\u8932\u8A87\u57AE\u630E\u8DE8\u80EF\u584A\u7B77\u5108\u5FEB\u5BEC\u6B3E\u5321\u7B50\u72C2\u6846\u7926\u7736\u66E0\u6CC1\u8667\u76D4\u5DCB\u7ABA\u8475\u594E\u9B41\u5080\u994B\u6127\u6F70\u5764\u6606\u6346\u56F0\u62EC\u64F4\u5ED3\u95CA\u5783\u62C9\u5587\u881F\u81D8\u8FA3\u5566\u840A\u4F86\u8CF4\u85CD\u5A6A\u6B04\u6514\u7C43\u95CC\u862D\u703E\u8B95\u652C\u89BD\u61F6\u7E9C\u721B\u6FEB\u746F\u6994\u72FC\u5ECA\u90CE\u6717\u6D6A\u6488\u52DE\u7262\u8001\u4F6C\u59E5\u916A\u70D9\u6F87\u52D2\u6A02\u96F7\u9433\u857E\u78CA\u7D2F\u5121\u58D8\u64C2\u808B\u985E\u6DDA\u68F1\u695E\u51B7\u5398\u68A8\u7281\u9ECE\u7C6C\u8C8D\u96E2\u6F13\u7406\u674E\u88CF\u9BC9\u79AE\u8389\u8354\u540F\u6817\u9E97\u53B2\u52F5\u792B\u6B77\u5229\u5088\u4F8B\u4FD0\u75E2\u7ACB\u7C92\u701D\u96B8\u529B\u7483\u54E9\u5006\u806F\u84EE\u9023\u942E\u5EC9\u6190\u6F23\u7C3E\u6582\u81C9\u93C8\u6200\u7149\u7DF4\u7CE7\u6DBC\u6881\u7CB1\u826F\u5169\u8F1B\u91CF\u667E\u4EAE\u8AD2\u64A9\u804A\u50DA\u7642\u71CE\u5BE5\u907C\u6F66\u4E86\u6482\u9410\u5ED6\u6599\u5217\u88C2\u70C8\u52A3\u7375\u7433\u6797\u78F7\u9716\u81E8\u9130\u9C57\u6DCB\u51DC\u8CC3\u541D\u62CE\u73B2\u83F1\u96F6\u9F61\u9234\u4F36\u7F9A\u6DE9\u9748\u9675\u5DBA\u9818\u53E6\u4EE4\u6E9C\u7409\u69B4\u786B\u993E\u7559\u5289\u7624\u6D41\u67F3\u516D\u9F8D\u807E\u56A8\u7C60\u7ABF\u9686\u58DF\u650F\u96B4\u6A13\u5A41\u645F\u7C0D\u6F0F\u964B\u8606\u76E7\u9871\u5EEC\u7210\u64C4\u9E75\u865C\u9B6F\u9E93\u788C\u9732\u8DEF\u8CC2\u9E7F\u6F5E\u797F\u9304\u9678\u622E\u9A62\u5442\u92C1\u4FB6\u65C5\u5C65\u5C62\u7E37\u616E\u6C2F\u5F8B\u7387\u6FFE\u7DA0\u5DD2\u6523\u5B7F\u7064\u5375\u4E82\u63A0\u7565\u6384\u8F2A\u502B\u4F96\u6DEA\u7DB8\u8AD6\u863F\u87BA\u7F85\u908F\u947C\u7C6E\u9A3E\u88F8\u843D\u6D1B\u99F1\u7D61\u5ABD\u9EBB\u746A\u78BC\u879E\u99AC\u7F75\u561B\u55CE\u57CB\u8CB7\u9EA5\u8CE3\u9081\u8108\u779E\u9945\u883B\u6EFF\u8513\u66FC\u6162\u6F2B\u8B3E\u8292\u832B\u76F2\u6C13\u5FD9\u83BD\u8C93\u8305\u9328\u6BDB\u77DB\u925A\u536F\u8302\u5192\u5E3D\u8C8C\u8CBF\u9EBD\u73AB\u679A\u6885\u9176\u9EF4\u7164\u6C92\u7709\u5A92\u9382\u6BCF\u7F8E\u6627\u5BD0\u59B9\u5A9A\u9580\u60B6\u5011\u840C\u8499\u6AAC\u76DF\u9333\u731B\u5922\u5B5F\u7787\u919A\u9761\u7CDC\u8FF7\u8B0E\u5F4C\u7C73\u79D8\u8993\u6CCC\u871C\u5BC6\u51AA\u68C9\u7720\u7DBF\u5195\u514D\u52C9\u5A29\u7DEC\u9762\u82D7\u63CF\u7784\u85D0\u79D2\u6E3A\u5EDF\u5999\u8511\u6EC5\u6C11\u62BF\u76BF\u654F\u61AB\u95A9\u660E\u879F\u9CF4\u9298\u540D\u547D\u8B2C\u6478\u6479\u8611\u6A21\u819C\u78E8\u6469\u9B54\u62B9\u672B\u83AB\u58A8\u9ED8\u6CAB\u6F20\u5BDE\u964C\u8B00\u725F\u67D0\u62C7\u7261\u755D\u59C6\u6BCD\u5893\u66AE\u5E55\u52DF\u6155\u6728\u76EE\u7766\u7267\u7A46\u62FF\u54EA\u5436\u9209\u90A3\u5A1C\u7D0D\u6C16\u4E43\u5976\u8010\u5948\u5357\u7537\u96E3\u56CA\u6493\u8166\u60F1\u9B27\u6DD6\u5462\u9912\u5167\u5AE9\u80FD\u59AE\u9713\u502A\u6CE5\u5C3C\u64EC\u59B3\u533F\u81A9\u9006\u6EBA\u852B\u62C8\u5E74\u78BE\u6506\u649A\u5FF5\u5A18\u91C0\u9CE5\u5C3F\u634F\u8076\u5B7D\u5699\u9477\u93B3\u6D85\u60A8\u6AB8\u7370\u51DD\u5BE7\u64F0\u6FD8\u725B\u626D\u9215\u7D10\u81BF\u6FC3\u8FB2\u5F04\u5974\u52AA\u6012\u5973\u6696\u8650\u7627\u632A\u61E6\u7CEF\u8AFE\u54E6\u6B50\u9DD7\u6BC6\u85D5\u5614\u5076\u6F1A\u556A\u8DB4\u722C\u5E15\u6015\u7436\u62CD\u6392\u724C\u5F98\u6E43\u6D3E\u6500\u6F58\u76E4\u78D0\u76FC\u7554\u5224\u53DB\u4E53\u9F90\u65C1\u802A\u80D6\u62CB\u5486\u5228\u70AE\u888D\u8DD1\u6CE1\u5478\u80DA\u57F9\u88F4\u8CE0\u966A\u914D\u4F69\u6C9B\u5674\u76C6\u7830\u62A8\u70F9\u6F8E\u5F6D\u84EC\u68DA\u787C\u7BF7\u81A8\u670B\u9D6C\u6367\u78B0\u576F\u7812\u9739\u6279\u62AB\u5288\u7435\u6BD7\u5564\u813E\u75B2\u76AE\u5339\u75DE\u50FB\u5C41\u8B6C\u7BC7\u504F\u7247\u9A19\u98C4\u6F02\u74E2\u7968\u6487\u77A5\u62FC\u983B\u8CA7\u54C1\u8058\u4E52\u576A\u860B\u840D\u5E73\u6191\u74F6\u8A55\u5C4F\u5761\u6F51\u9817\u5A46\u7834\u9B44\u8FEB\u7C95\u5256\u64B2\u92EA\u4EC6\u8386\u8461\u83E9\u84B2\u57D4\u6A38\u5703\u666E\u6D66\u8B5C\u66DD\u7011\u671F\u6B3A\u68F2\u621A\u59BB\u4E03\u6DD2\u6F06\u67D2\u6C8F\u5176\u68CB\u5947\u6B67\u7566\u5D0E\u81CD\u9F4A\u65D7\u7948\u7941\u9A0E\u8D77\u8C48\u4E5E\u4F01\u555F\u5951\u780C\u5668\u6C23\u8FC4\u68C4\u6C7D\u6CE3\u8A16\u6390\u6D3D\u727D\u6261\u91EC\u925B\u5343\u9077\u7C3D\u4EDF\u8B19\u4E7E\u9ED4\u9322\u9257\u524D\u6F5B\u9063\u6DFA\u8B74\u5879\u5D4C\u6B20\u6B49\u69CD\u55C6\u8154\u7F8C\u58BB\u8594\u5F37\u6436\u6A47\u936C\u6572\u6084\u6A4B\u77A7\u55AC\u50D1\u5DE7\u9798\u64AC\u7FF9\u5CED\u4FCF\u7AC5\u5207\u8304\u4E14\u602F\u7ACA\u6B3D\u4FB5\u89AA\u79E6\u7434\u52E4\u82B9\u64D2\u79BD\u5BE2\u6C81\u9752\u8F15\u6C2B\u50BE\u537F\u6E05\u64CE\u6674\u6C30\u60C5\u9803\u8ACB\u6176\u74CA\u7AAE\u79CB\u4E18\u90B1\u7403\u6C42\u56DA\u914B\u6CC5\u8DA8\u5340\u86C6\u66F2\u8EC0\u5C48\u9A45\u6E20\u53D6\u5A36\u9F72\u8DA3\u53BB\u5708\u9874\u6B0A\u919B\u6CC9\u5168\u75CA\u62F3\u72AC\u5238\u52F8\u7F3A\u7094\u7638\u537B\u9D72\u69B7\u78BA\u96C0\u88D9\u7FA4\u7136\u71C3\u5189\u67D3\u74E4\u58E4\u6518\u56B7\u8B93\u9952\u64FE\u7E5E\u60F9\u71B1\u58EC\u4EC1\u4EBA\u5FCD\u97CC\u4EFB\u8A8D\u5203\u598A\u7D09\u6254\u4ECD\u65E5\u620E\u8338\u84C9\u69AE\u878D\u7194\u6EB6\u5BB9\u7D68\u5197\u63C9\u67D4\u8089\u8339\u8815\u5112\u5B7A\u5982\u8FB1\u4E73\u6C5D\u5165\u8925\u8EDF\u962E\u854A\u745E\u92B3\u958F\u6F64\u82E5\u5F31\u6492\u7051\u85A9\u816E\u9C13\u585E\u8CFD\u4E09\u4E09\u5098\u6563\u6851\u55D3\u55AA\u6414\u9A37\u6383\u5AC2\u745F\u8272\u6F80\u68EE\u50E7\u838E\u7802\u6BBA\u524E\u6C99\u7D17\u50BB\u5565\u715E\u7BE9\u66EC\u73CA\u82EB\u6749\u5C71\u522A\u717D\u886B\u9583\u965C\u64C5\u8D0D\u81B3\u5584\u6C55\u6247\u7E55\u5891\u50B7\u5546\u8CDE\u664C\u4E0A\u5C1A\u88F3\u68A2\u634E\u7A0D\u71D2\u828D\u52FA\u97F6\u5C11\u54E8\u90B5\u7D39\u5962\u8CD2\u86C7\u820C\u820D\u8D66\u651D\u5C04\u61FE\u6D89\u793E\u8A2D\u7837\u7533\u547B\u4F38\u8EAB\u6DF1\u5A20\u7D33\u795E\u6C88\u5BE9\u5B38\u751A\u814E\u614E\u6EF2\u8072\u751F\u7525\u7272\u5347\u7E69\u7701\u76DB\u5269\u52DD\u8056\u5E2B\u5931\u7345\u65BD\u6FD5\u8A69\u5C4D\u8671\u5341\u77F3\u62FE\u6642\u4EC0\u98DF\u8755\u5BE6\u8B58\u53F2\u77E2\u4F7F\u5C4E\u99DB\u59CB\u5F0F\u793A\u58EB\u4E16\u67FF\u4E8B\u62ED\u8A93\u901D\u52E2\u662F\u55DC\u566C\u9069\u4ED5\u4F8D\u91CB\u98FE\u6C0F\u5E02\u6043\u5BA4\u8996\u8A66\u6536\u624B\u9996\u5B88\u58FD\u6388\u552E\u53D7\u7626\u7378\u852C\u6A1E\u68B3\u6B8A\u6292\u8F38\u53D4\u8212\u6DD1\u758F\u66F8\u8D16\u5B70\u719F\u85AF\u6691\u66D9\u7F72\u8700\u9ECD\u9F20\u5C6C\u8853\u8FF0\u6A39\u675F\u620D\u8C4E\u5885\u5EB6\u6578\u6F31\u6055\u5237\u800D\u6454\u8870\u7529\u5E25\u6813\u62F4\u971C\u96D9\u723D\u8AB0\u6C34\u7761\u7A05\u542E\u77AC\u9806\u821C\u8AAA\u78A9\u6714\u720D\u65AF\u6495\u5636\u601D\u79C1\u53F8\u7D72\u6B7B\u8086\u5BFA\u55E3\u56DB\u4F3A\u4F3C\u98FC\u5DF3\u677E\u8073\u616B\u980C\u9001\u5B8B\u8A1F\u8AA6\u641C\u8258\u64FB\u55FD\u8607\u9165\u4FD7\u7D20\u901F\u7C9F\u50F3\u5851\u6EAF\u5BBF\u8A34\u8085\u9178\u849C\u7B97\u96D6\u968B\u96A8\u7D8F\u9AD3\u788E\u6B72\u7A57\u9042\u96A7\u795F\u5B6B\u640D\u7B4D\u84D1\u68AD\u5506\u7E2E\u7463\u7D22\u9396\u6240\u584C\u4ED6\u5B83\u5979\u5854\u737A\u64BB\u8E4B\u8E0F\u80CE\u82D4\u64E1\u81FA\u6CF0\u915E\u592A\u614B\u6C70\u574D\u6524\u8CAA\u7671\u7058\u58C7\u6A80\u75F0\u6F6D\u8B5A\u8AC7\u5766\u6BEF\u8892\u78B3\u63A2\u5606\u70AD\u6E6F\u5858\u642A\u5802\u68E0\u819B\u5510\u7CD6\u5018\u8EBA\u6DCC\u8D9F\u71D9\u638F\u6FE4\u6ED4\u7D73\u8404\u6843\u9003\u6DD8\u9676\u8A0E\u5957\u7279\u85E4\u9A30\u75BC\u8B04\u68AF\u5254\u8E22\u92BB\u63D0\u984C\u8E44\u557C\u9AD4\u66FF\u568F\u60D5\u6D95\u5243\u5C5C\u5929\u6DFB\u586B\u7530\u751C\u606C\u8214\u8146\u6311\u689D\u8FE2\u773A\u8DF3\u8CBC\u9435\u5E16\u5EF3\u807D\u70F4\u6C40\u5EF7\u505C\u4EAD\u5EAD\u633A\u8247\u901A\u6850\u916E\u77B3\u540C\u9285\u5F64\u7AE5\u6876\u6345\u7B52\u7D71\u75DB\u5077\u6295\u982D\u900F\u51F8\u79BF\u7A81\u5716\u5F92\u9014\u5857\u5C60\u571F\u5410\u5154\u6E4D\u5718\u63A8\u9839\u817F\u86FB\u892A\u9000\u541E\u5C6F\u81C0\u62D6\u6258\u812B\u9D15\u9640\u99B1\u99DD\u6A62\u59A5\u62D3\u553E\u6316\u54C7\u86D9\u7AAA\u5A03\u74E6\u896A\u6B6A\u5916\u8C4C\u5F4E\u7063\u73A9\u9811\u4E38\u70F7\u5B8C\u7897\u633D\u665A\u7696\u60CB\u5B9B\u5A49\u842C\u8155\u6C6A\u738B\u4EA1\u6789\u7DB2\u5F80\u65FA\u671B\u5FD8\u5984\u5A01\u5DCD\u5FAE\u5371\u97CB\u9055\u6845\u570D\u552F\u60DF\u70BA\u6FF0\u7DAD\u8466\u840E\u59D4\u5049\u507D\u5C3E\u7DEF\u672A\u851A\u5473\u754F\u80C3\u9935\u9B4F\u4F4D\u6E2D\u8B02\u5C09\u6170\u885B\u761F\u6EAB\u868A\u6587\u805E\u7D0B\u543B\u7A69\u7D0A\u554F\u55E1\u7FC1\u7515\u64BE\u8778\u6E26\u7AA9\u6211\u65A1\u81E5\u63E1\u6C83\u5DEB\u55DA\u93A2\u70CF\u6C59\u8AA3\u5C4B\u7121\u856A\u68A7\u543E\u5433\u6BCB\u6B66\u4E94\u6342\u5348\u821E\u4F0D\u4FAE\u5862\u620A\u9727\u6664\u7269\u52FF\u52D9\u609F\u8AA4\u6614\u7199\u6790\u897F\u7852\u77FD\u6670\u563B\u5438\u932B\u72A7\u7A00\u606F\u5E0C\u6089\u819D\u5915\u60DC\u7184\u70EF\u6EAA\u6C50\u7280\u6A84\u8972\u5E2D\u7FD2\u5AB3\u559C\u9291\u6D17\u7CFB\u9699\u6232\u7D30\u778E\u8766\u5323\u971E\u8F44\u6687\u5CFD\u4FE0\u72F9\u4E0B\u5EC8\u590F\u5687\u6380\u9341\u5148\u4ED9\u9BAE\u7E96\u9E79\u8CE2\u929C\u8237\u9591\u6D8E\u5F26\u5ACC\u986F\u96AA\u73FE\u737B\u7E23\u817A\u9921\u7FA8\u61B2\u9677\u9650\u7DDA\u76F8\u5EC2\u9472\u9999\u7BB1\u8944\u6E58\u9109\u7FD4\u7965\u8A73\u60F3\u97FF\u4EAB\u9805\u5DF7\u6A61\u50CF\u5411\u8C61\u856D\u785D\u9704\u524A\u54EE\u56C2\u92B7\u6D88\u5BB5\u6DC6\u66C9\u5C0F\u5B5D\u6821\u8096\u562F\u7B11\u6548\u6954\u4E9B\u6B47\u880D\u978B\u5354\u633E\u651C\u90AA\u659C\u8105\u8AE7\u5BEB\u68B0\u5378\u87F9\u61C8\u6CC4\u7009\u8B1D\u5C51\u85AA\u82AF\u92C5\u6B23\u8F9B\u65B0\u5FFB\u5FC3\u4FE1\u91C1\u661F\u8165\u7329\u60FA\u8208\u5211\u578B\u5F62\u90A2\u884C\u9192\u5E78\u674F\u6027\u59D3\u5144\u5147\u80F8\u5308\u6D36\u96C4\u718A\u4F11\u4FEE\u7F9E\u673D\u55C5\u92B9\u79C0\u8896\u7E61\u589F\u620C\u9700\u865B\u5653\u9808\u5F90\u8A31\u84C4\u9157\u6558\u65ED\u5E8F\u755C\u6064\u7D6E\u5A7F\u7DD2\u7E8C\u8ED2\u55A7\u5BA3\u61F8\u65CB\u7384\u9078\u766C\u7729\u7D62\u9774\u859B\u5B78\u7A74\u96EA\u8840\u52DB\u718F\u5FAA\u65EC\u8A62\u5C0B\u99B4\u5DE1\u6B89\u6C5B\u8A13\u8A0A\u905C\u8FC5\u58D3\u62BC\u9D09\u9D28\u5440\u4E2B\u82BD\u7259\u869C\u5D16\u8859\u6DAF\u96C5\u555E\u4E9E\u8A1D\u7109\u54BD\u95B9\u7159\u6DF9\u9E7D\u56B4\u7814\u8712\u5DD6\u5EF6\u8A00\u984F\u95BB\u708E\u6CBF\u5944\u63A9\u773C\u884D\u6F14\u8277\u5830\u71D5\u53AD\u786F\u96C1\u5501\u5F65\u7130\u5BB4\u8AFA\u9A57\u6B83\u592E\u9D26\u79E7\u694A\u63DA\u4F6F\u760D\u7F8A\u6D0B\u967D\u6C27\u4EF0\u7662\u990A\u6A23\u6F3E\u9080\u8170\u5996\u7464\u6416\u582F\u9059\u7AAF\u8B20\u59DA\u54AC\u8200\u85E5\u8981\u8000\u6930\u564E\u8036\u723A\u91CE\u51B6\u4E5F\u9801\u6396\u696D\u8449\u66F3\u814B\u591C\u6DB2\u58F9\u58F9\u91AB\u63D6\u92A5\u4F9D\u4F0A\u8863\u9824\u5937\u907A\u79FB\u5100\u80F0\u7591\u6C82\u5B9C\u59E8\u5F5C\u6905\u87FB\u501A\u5DF2\u4E59\u77E3\u4EE5\u85DD\u6291\u6613\u9091\u5C79\u5104\u5F79\u81C6\u9038\u8084\u75AB\u4EA6\u88D4\u610F\u6BC5\u61B6\u7FA9\u76CA\u6EA2\u8A63\u8B70\u8ABC\u8B6F\u7570\u7FFC\u7FCC\u7E79\u8335\u852D\u56E0\u6BB7\u97F3\u9670\u59FB\u541F\u9280\u6DEB\u5BC5\u98F2\u5C39\u5F15\u96B1\u5370\u82F1\u6AFB\u5B30\u9DF9\u61C9\u7E93\u7469\u87A2\u71DF\u7192\u8805\u8FCE\u8D0F\u76C8\u5F71\u7A4E\u786C\u6620\u55B2\u64C1\u50AD\u81C3\u7670\u5EB8\u96CD\u8E34\u86F9\u8A60\u6CF3\u6E67\u6C38\u607F\u52C7\u7528\u5E7D\u512A\u60A0\u6182\u5C24\u7531\u90F5\u923E\u7336\u6CB9\u904A\u9149\u6709\u53CB\u53F3\u4F51\u91C9\u8A98\u53C8\u5E7C\u8FC2\u6DE4\u65BC\u76C2\u6986\u865E\u611A\u8F3F\u4F59\u4FDE\u903E\u9B5A\u6109\u6E1D\u6F01\u9685\u4E88\u5A1B\u96E8\u8207\u5DBC\u79B9\u5B87\u8A9E\u7FBD\u7389\u57DF\u828B\u90C1\u7C72\u9047\u55BB\u5CEA\u79A6\u6108\u6B32\u7344\u80B2\u8B7D\u6D74\u5BD3\u88D5\u9810\u8C6B\u99AD\u9D1B\u6DF5\u51A4\u5143\u57A3\u8881\u539F\u63F4\u8F45\u5712\u54E1\u5713\u733F\u6E90\u7DE3\u9060\u82D1\u9858\u6028\u9662\u66F0\u7D04\u8D8A\u8E8D\u9470\u5DBD\u7CB5\u6708\u6085\u95B1\u8018\u96F2\u9116\u52FB\u9695\u5141\u904B\u860A\u919E\u6688\u97FB\u5B55\u531D\u7838\u96DC\u683D\u54C9\u707D\u5BB0\u8F09\u518D\u5728\u54B1\u6522\u66AB\u8D0A\u8D13\u81DF\u846C\u906D\u7CDF\u947F\u85FB\u68D7\u65E9\u6FA1\u86A4\u8E81\u566A\u9020\u7682\u7AC8\u71E5\u8CAC\u64C7\u5247\u6FA4\u8CCA\u600E\u589E\u618E\u66FE\u8D08\u7D2E\u55B3\u6E23\u5284\u8ECB\u9358\u9598\u7728\u67F5\u69A8\u548B\u4E4D\u70B8\u8A50\u6458\u9F4B\u5B85\u7A84\u50B5\u5BE8\u77BB\u6C08\u8A79\u7C98\u6CBE\u76DE\u65AC\u8F3E\u5D84\u5C55\u8638\u68E7\u5360\u6230\u7AD9\u6E5B\u7DBB\u6A1F\u7AE0\u5F70\u6F33\u5F35\u638C\u6F32\u6756\u4E08\u5E33\u8CEC\u4ED7\u8139\u7634\u969C\u62DB\u662D\u627E\u6CBC\u8D99\u7167\u7F69\u5146\u8087\u53EC\u906E\u6298\u54F2\u87C4\u8F4D\u8005\u937A\u8517\u9019\u6D59\u73CD\u659F\u771F\u7504\u7827\u81FB\u8C9E\u91DD\u5075\u6795\u75B9\u8A3A\u9707\u632F\u93AE\u9663\u84B8\u6399\u775C\u5F81\u7319\u722D\u6014\u6574\u62EF\u6B63\u653F\u5E40\u7665\u912D\u8B49\u829D\u679D\u652F\u5431\u8718\u77E5\u80A2\u8102\u6C41\u4E4B\u7E54\u8077\u76F4\u690D\u6B96\u57F7\u503C\u4F84\u5740\u6307\u6B62\u8DBE\u53EA\u65E8\u7D19\u8A8C\u646F\u64F2\u81F3\u81F4\u7F6E\u5E5F\u5CD9\u5236\u667A\u79E9\u7A1A\u8CEA\u7099\u75D4\u6EEF\u6CBB\u7A92\u4E2D\u76C5\u5FE0\u9418\u8877\u7D42\u7A2E\u816B\u91CD\u4EF2\u773E\u821F\u5468\u5DDE\u6D32\u8B05\u7CA5\u8EF8\u8098\u5E1A\u5492\u76BA\u5B99\u665D\u9A5F\u73E0\u682A\u86DB\u6731\u8C6C\u8AF8\u8A85\u9010\u7AF9\u71ED\u716E\u62C4\u77DA\u56D1\u4E3B\u8457\u67F1\u52A9\u86C0\u8CAF\u9444\u7BC9\u4F4F\u8A3B\u795D\u99D0\u6293\u722A\u62FD\u5C08\u78DA\u8F49\u64B0\u8CFA\u7BC6\u6A01\u838A\u88DD\u599D\u649E\u58EF\u72C0\u690E\u9310\u8FFD\u8D05\u589C\u7DB4\u8AC4\u6E96\u6349\u62D9\u5353\u684C\u7422\u8301\u914C\u5544\u8457\u707C\u6FC1\u8332\u54A8\u8CC7\u59FF\u6ECB\u6DC4\u5B5C\u7D2B\u4ED4\u7C7D\u6ED3\u5B50\u81EA\u6F2C\u5B57\u9B03\u68D5\u8E64\u5B97\u7D9C\u7E3D\u7E31\u9112\u8D70\u594F\u63CD\u79DF\u8DB3\u5352\u65CF\u7956\u8A5B\u963B\u7D44\u9246\u7E82\u5634\u9189\u6700\u7F6A\u5C0A\u9075\u6628\u5DE6\u4F50\u67DE\u505A\u4F5C\u5750\u5EA7\u9312\u566F\u5B21\u74A6\u66D6\u9744\u8AF3\u92A8\u9D6A\u5ABC\u9A41\u9C32\u9200\u5504\u9211\u9D07\u9F59\u9D6F\u8CC1\u931B\u84FD\u55F6\u6F77\u924D\u7BF3\u8E55\u8290\u7DF6\u7C69\u9A43\u98AE\u98C6\u93E2\u9463\u9C3E\u5110\u7E7D\u6AB3\u6BAF\u81CF\u944C\u9AD5\u9B22\u7A1F\u9911\u9238\u9D53\u923D\u9A42\u9EF2\u60FB\u9364\u5115\u91F5\u56C5\u8AC2\u8B96\u8546\u61FA\u5B0B\u9A4F\u8998\u79AA\u9414\u5000\u8407\u60B5\u95B6\u9BE7\u7868\u5096\u8AF6\u6AEC\u78E3\u9F54\u68D6\u6A89\u92EE\u943A\u98ED\u9D1F\u9283\u5114\u5E6C\u8B8E\u82BB\u7D40\u8E95\u91E7\u6134\u7D9E\u9D89\u8F1F\u9F6A\u9DBF\u84EF\u9A44\u6A05\u8F33\u651B\u92BC\u9E7A\u5660\u97C3\u99D8\u7D3F\u6BAB\u8CE7\u7649\u7C1E\u8B9C\u78AD\u8960\u71FE\u9419\u7CF4\u8A46\u8AE6\u7D88\u89BF\u93D1\u5DD4\u923F\u7672\u929A\u9BDB\u9C08\u92CC\u92A9\u5D20\u9D87\u7AC7\u7006\u6ADD\u7258\u7BE4\u9EF7\u7C6A\u61DF\u9413\u71C9\u8E89\u9438\u8AE4\u580A\u95BC\u8EDB\u92E8\u9354\u9D9A\u984E\u9853\u9C77\u8A92\u9087\u927A\u9D2F\u9B9E\u9201\u9B74\u7DCB\u9428\u9BE1\u50E8\u7043\u9CE7\u99D9\u7D31\u7D3C\u8CFB\u9EA9\u9B92\u9C12\u91D3\u8CC5\u5C37\u641F\u7D3A\u6207\u776A\u8AA5\u7E1E\u92EF\u7D07\u9398\u6F41\u4E99\u8CE1\u7D86\u9BC1\u8A6C\u7DF1\u89AF\u8A41\u8F42\u9237\u932E\u9D23\u9D60\u9DBB\u9D30\u6451\u8A7F\u645C\u9E1B\u9C25\u7377\u532D\u528C\u5AAF\u6A9C\u9BAD\u9C56\u889E\u7DC4\u9BC0\u581D\u54BC\u5E57\u69E8\u87C8\u927F\u95DE\u7D4E\u9821\u705D\u9865\u8A36\u95D4\u8823\u9ECC\u8A0C\u8452\u958E\u9C5F\u6EF8\u9D98\u9A4A\u6A3A\u93F5\u5950\u7E6F\u9370\u9BC7\u9C09\u8A7C\u8588\u5666\u6FAE\u7E62\u743F\u6689\u8AE2\u991B\u95BD\u9225\u944A\u8A10\u8A70\u85BA\u5630\u568C\u9A65\u74A3\u89AC\u9F4F\u78EF\u7F88\u8806\u8E8B\u973D\u9C6D\u9BFD\u90DF\u6D79\u92CF\u93B5\u87EF\u8AEB\u7E11\u6214\u6229\u77BC\u9DBC\u7B67\u9C39\u97C9\u7D73\u97C1\u649F\u5DA0\u9DE6\u9BAB\u7664\u981C\u9B9A\u5DF9\u85CE\u9949\u7E09\u8D10\u89B2\u5244\u6D87\u9015\u5F33\u811B\u975A\u9B2E\u9CE9\u9DF2\u8A4E\u5C68\u6AF8\u98B6\u9245\u92E6\u7AB6\u9F5F\u9308\u942B\u96CB\u8B4E\u73A8\u76B8\u5274\u584F\u613E\u6137\u93A7\u9347\u9F95\u958C\u9227\u92AC\u9A0D\u7DD9\u8EFB\u9233\u9301\u9837\u9F66\u93D7\u56B3\u9136\u5672\u81BE\u736A\u9AD6\u8A86\u8A91\u913A\u58D9\u7E8A\u8CBA\u5331\u8562\u6192\u8075\u7C23\u95AB\u9315\u9BE4\u8810\u5D0D\u5FA0\u6DF6\u7028\u8CDA\u775E\u9338\u7669\u7C5F\u5D50\u6B16\u6595\u946D\u8964\u95AC\u92C3\u562E\u5D97\u92A0\u9412\u7646\u9C33\u8A84\u7E32\u5137\u9148\u58E2\u85F6\u849E\u863A\u56A6\u9090\u9A6A\u7E2D\u6AEA\u6ADF\u8F62\u792A\u92F0\u9E1D\u7658\u7CF2\u8E92\u9742\u9C7A\u9C67\u861E\u5969\u7032\u7489\u6BAE\u8933\u895D\u9C31\u9B4E\u7E5A\u91D5\u9DEF\u85FA\u5EE9\u6A81\u8F54\u8EAA\u7DBE\u6B1E\u87F6\u9BEA\u700F\u9A2E\u7DB9\u93A6\u9DDA\u8622\u7027\u74CF\u6AF3\u6727\u7931\u50C2\u851E\u560D\u5D81\u93E4\u763A\u802C\u87BB\u9ACF\u58DA\u64FC\u5695\u95AD\u7018\u6DE5\u6AE8\u6AD3\u8F64\u8F05\u8F46\u6C0C\u81DA\u9E15\u9DFA\u826B\u9C78\u81E0\u5B4C\u6B12\u9E1E\u947E\u5707\u7296\u7380\u6FFC\u6B0F\u8161\u93CD\u6ADA\u8938\u92DD\u5638\u561C\u5B24\u69AA\u52F1\u7E35\u93DD\u9859\u9C3B\u9EBC\u636B\u71DC\u61E3\u9346\u7F8B\u8B10\u737C\u79B0\u6FA0\u9766\u9EFD\u7DF2\u7E46\u9594\u7DE1\u8B28\u9A40\u9943\u6B7F\u93CC\u926C\u9403\u8A25\u922E\u9BE2\u8F26\u9BF0\u8526\u88CA\u9689\u8617\u56C1\u9862\u8EA1\u82E7\u5680\u8079\u5102\u5665\u99D1\u91F9\u513A\u8B33\u616A\u750C\u8E63\u76B0\u8F61\u7D15\u7F86\u9239\u8ADE\u99E2\u7E39\u5B2A\u91D9\u93F7\u9420\u8604\u9A0F\u7DBA\u69BF\u78E7\u980E\u980F\u9C2D\u50C9\u8541\u6173\u9A2B\u7E7E\u69E7\u9210\u5B19\u6AA3\u6227\u7197\u9306\u93D8\u93F9\u7FA5\u8E4C\u8A9A\u8B59\u854E\u7E70\u78FD\u8E7A\u611C\u9365\u7BCB\u92DF\u64B3\u9BD6\u7162\u86FA\u5DF0\u8CD5\u87E3\u9C0D\u8A58\u5D87\u95C3\u89B7\u9D1D\u8A6E\u7DA3\u8F07\u9293\u95CB\u95D5\u6128\u8558\u5B08\u6A48\u98EA\u8ED4\u5DB8\u8811\u7E1F\u92A3\u9870\u8706\u98AF\u6BFF\u7CDD\u7E45\u55C7\u92AB\u7A61\u93A9\u9BCA\u91C3\u8A15\u59CD\u9A38\u91E4\u9C54\u5770\u6BA4\u89F4\u5399\u7044\u756C\u8A75\u8AD7\u700B\u8B1A\u5852\u8494\u5F12\u8EFE\u8CB0\u9230\u9C23\u7DAC\u6504\u7D13\u9582\u9460\u5EDD\u99DF\u7DE6\u9376\u9DE5\u85EA\u993F\u98BC\u93AA\u8B16\u7A4C\u8AB6\u84C0\u733B\u55E9\u8127\u95E5\u9248\u9C28\u9226\u9B90\u66C7\u926D\u931F\u9807\u513B\u9933\u940B\u93DC\u97DC\u92F1\u7DF9\u9D5C\u95D0\u7CF6\u9F60\u9C37\u615F\u9204\u91F7\u6476\u98E9\u7C5C\u9F09\u5AA7\u8183\u7D08\u7DB0\u8F1E\u8AC9\u5E43\u95C8\u6E88\u6F7F\u744B\u97D9\u7152\u9BAA\u95BF\u8435\u9F77\u9114\u5EE1\u61AE\u5AF5\u9A16\u9D61\u9DA9\u993C\u9B29\u74BD\u89A1\u7864\u83A7\u859F\u861A\u5CF4\u736B\u5AFB\u9DF4\u7647\u8814\u79C8\u8E9A\u858C\u9909\u9A64\u7DD7\u9957\u5635\u701F\u9A4D\u7D83\u689F\u7C2B\u893B\u64F7\u7D32\u7E88\u9658\u6ECE\u9948\u9D42\u8A61\u980A\u8AFC\u9249\u93C7\u8B14\u6FA9\u9C48\u5864\u6F6F\u9C58\u57E1\u5A6D\u690F\u6C2C\u53B4\u8D17\u513C\u5157\u8B9E\u61E8\u9586\u91C5\u9B58\u995C\u9F34\u716C\u8EFA\u9DC2\u9C29\u9768\u8B01\u9134\u66C4\u71C1\u8A52\u56C8\u5DA7\u98F4\u61CC\u9A5B\u7E0A\u8EFC\u8CBD\u91D4\u93B0\u943F\u761E\u8264\u92A6\u766E\u584B\u9DAF\u7E08\u93A3\u6516\u56B6\u7005\u7020\u74D4\u9E1A\u766D\u9826\u7F4C\u93DE\u8555\u92AA\u9B77\u50B4\u4FC1\u8ADB\u8AED\u8577\u5D33\u98EB\u95BE\u5AD7\u7D06\u89A6\u6B5F\u923A\u9D52\u9DF8\u9F6C\u6ADE\u9CF6\u9EFF\u925E\u9106\u8553\u60F2\u614D\u7D1C\u97DE\u6B9E\u6C33\u74DA\u8DB2\u93E8\u99D4\u8CFE\u5616\u5E58\u7C00\u8B56\u7E52\u8B6B\u8A54\u91D7\u8B2B\u8F12\u9DD3\u6E5E\u7E1D\u6968\u8EEB\u8CD1\u798E\u9D06\u8ACD\u5D22\u9266\u931A\u7B8F\u9A2D\u6ADB\u6894\u8EF9\u8F0A\u8D04\u9DD9\u8784\u7E36\u8E93\u8E91\u89F6\u937E\u7D02\u7E10\u4F47\u6AE7\u9296\u56C0\u994C\u9873\u9A05\u7E0B\u8AD1\u9432\u8AEE\u7DC7\u8F1C\u8CB2\u7725\u9319\u9F5C\u9BD4\u50AF\u8ACF\u9A36\u9BEB\u93C3\u7E98\u8EA6\u9C52\u8A01\u8B7E\u90E4\u731B\u6C39\u962A\u58DF\u5816\u57B5\u588A\u6ABE\u8552\u8464\u84E7\u8493\u83C7\u69C1\u6463\u54A4\u551A\u54E2\u565D\u5645\u6485\u5288\u8B14\u8946\u5DB4\u810A\u4EFF\u50E5\u7341\u9E85\u9918\u9937\u994A\u9962\u695E\u6035\u61CD\u723F\u6F35\u7069\u6DF7\u6FEB\u7026\u6DE1\u5BE7\u7CF8\u7D5D\u7DD4\u7449\u6898\u68EC\u6848\u6A70\u6AEB\u8EF2\u8EE4\u8CEB\u8181\u8156\u98C8\u7CCA\u7146\u6E9C\u6E63\u6E3A\u78B8\u6EFE\u7798\u9208\u9255\u92E3\u92B1\u92E5\u92F6\u9426\u9427\u9369\u9340\u9343\u9307\u9384\u9387\u93BF\u941D\u9465\u9479\u9454\u7A6D\u9D93\u9DA5\u9E0C\u7667\u5C59\u7602\u81D2\u8947\u7E48\u802E\u986C\u87CE\u9EAF\u9B81\u9B83\u9B8E\u9BD7\u9BDD\u9BF4\u9C5D\u9BFF\u9C20\u9C35\u9C45\u97BD\u97DD\u9F47";function EMe(t){return e2t.charAt(TMe.indexOf(t.charAt(0)))}var C1r=new RegExp("[\u4E00-\u9FA5]+");function bMe(t){return TMe.includes(t)}var hi=class{static GetBytes(r){switch(typeof r){case"string":{let e=new Uint16Array(r.length);for(let i=0;i<r.length;i++)e[i]=r.charCodeAt(i);return new Uint8Array(e.buffer)}case"number":return r-Math.floor(r)==0?r>4294967295?function(e){return e[0]=r,new Uint8Array(e.buffer)}(new Float64Array(1)):function(e){return e[0]=r,new Uint8Array(e.buffer)}(new Int32Array(1)):function(e){return e[0]=r,new Uint8Array(e.buffer)}(new Float64Array(1));case"boolean":return function(e){return e[0]=Number(r),e}(new Uint8Array(1));default:if(r instanceof Array){let e=[];for(let a=0;a<r.length;a++)e.push(hi.GetBytes(r[a]));let i=0;for(let a=0;a<e.length;a++)i+=e[a].length;let n=new Uint8Array(i),s=0;for(let a=0;a<e.length;a++)for(let o=0;o<e[a].length;o++)n[s++]=e[a][o];return n}throw"Can't Convert To Bytes!!"}}static Get1Bytes(r){switch(typeof r){case"number":case"boolean":return new Uint8Array([Number(r)]);default:if(r instanceof Array){let e=[];for(let a=0;a<r.length;a++)e.push(this.Get1Bytes(r[a]));let i=0;for(let a=0;a<e.length;a++)i+=e[a].length;let n=new Uint8Array(i),s=0;for(let a=0;a<e.length;a++)for(let o=0;o<e[a].length;o++)n[s++]=e[a][o];return n}throw"Can't Convert To Bytes!!"}}static byteTosbyte(r){return(r&127)-(r&128?128:0)}static ToBoolean(r,e){return e=e||0,!!r[e]}static ToInt8(r,e){return e=e||0,r[e]&128?-((r[e]^255)+1):r[e]}static ToUInt8(r,e){return e=e||0,r[e]}static ToInt16(r,e){e=e||0;let i=r.slice(e,e+2);return new Int16Array(i.buffer,0,1)[0]}static ToInt32(r,e){e=e||0;let i=r.slice(e,e+4);return new Int32Array(i.buffer,0,1)[0]}static ToUInt16(r,e){e=e||0;let i=r.slice(e,e+2);return new Uint16Array(i.buffer,0,1)[0]}static ToUInt32(r,e){e=e||0;let i=r.slice(e,e+4);return new Uint32Array(i.buffer,0,1)[0]}static ToChar(r,e){e=e||0;let i=r.slice(e,e+2);return String.fromCharCode(new Uint16Array(i.buffer,0,1)[0])}static ToAscii(r,e){return e=e||0,String.fromCharCode(r[e])}static ToAsciiString(r,e,i){e=e||0,i=i||r.length,i+e>r.length&&(i-=e);let n="";for(let s=0;s<i;s++)n+=String.fromCharCode(r[e+s]||0);return n}static ToUTF16String(r,e,i){e=e||0,i=i||r.length,i+e>r.length&&(i-=e);let n=new Uint8Array(i);for(let s=0;s<i;s++)n[s]=r[e+s]||0;return String.fromCharCode.apply(null,Array.from(new Uint16Array(n.buffer,0,i/2)))}static ToFloat32(r,e){e=e||0;let i=r.slice(e,e+4);return new Float32Array(i.buffer,0,1)[0]}static ToFloat64(r,e){e=e||0;let i=r.slice(e,e+8);return new Float64Array(i.buffer,0,1)[0]}};var jf=class{static parserHeader(r,e){let i="",n=!1,s=0,a=!0;for(;a;){let o=r.readInt8(),l=String.fromCharCode(o);if(n)l===e[s]?s++:(n=!1,s=0);else{if(l===e[s]){n=!0,s++;continue}i+=l}if(n&&s===e.length)break}return i}static getCode(r){let e=yMe(r);return e.length<2?e[0]:e.length<4?hi.ToUInt16(e,0):hi.ToUInt32(e,0)}static parserCode(r,e,i){let n=new le,s=[],a=[],o=[],l=!1;for(let c=0;c<e.length;c++){let u=e[c];switch(u){case 0:break;case 1:l=!0,a.push(n.clone());break;case 2:l=!1,a.length>1&&(s.push(a.slice()),a=[]);break;case 3:c++,i/=e[c];break;case 4:c++,i*=e[c];break;case 5:if(o.length===4)throw"The position stack is only four locations deep";o.push(n);break;case 6:n=o.pop(),a.length>1&&(s.push(a.slice()),a=[]),l&&a.push(n.clone());break;case 7:{let h=0,p,d=i*r.baseUp,f=n.clone();switch(a.length>1&&(s.push(a.slice()),a=[]),r.type){case 0:c++,h=e[c];break;case 1:c++,h=e[c],h==0&&(c++,h=hi.ToUInt16(new Uint8Array([e[c++],e[c++]]),0),f.x=e[c++]*i,f.y=e[c++]*i,d=e[c]*i);break;case 2:c+=2,h=hi.ToUInt16(new Uint8Array([e[c-1],e[c]]),0);break;default:break}h!==0&&(p=r.getGraphicTextShape(h,d,f),p&&(s.push(...p.polyLines.slice()),n=p.lastPoint.clone()))}break;case 8:{let h=new le;h.x=hi.byteTosbyte(e[++c]),h.y=hi.byteTosbyte(e[++c]),n.add(h.multiplyScalar(i)),l&&a.push(n.clone())}break;case 9:for(;;){let p=new le;if(p.x=hi.byteTosbyte(e[++c]),p.y=hi.byteTosbyte(e[++c]),p.x==0&&p.y==0)break;n.add(p.multiplyScalar(i)),l&&a.push(n.clone())}break;case 10:{let h=e[++c]*i,p=hi.byteTosbyte(e[++c]),d=(p&112)>>4,f=p&7;f==0&&(f=8);let m=Math.PI/4,g=m*f,y=jf.CICLESPAN;p<0&&(y=-y,g=-g);let E=m*d,b=E+g,x=n.clone().sub(new le(Math.cos(E)*h,Math.sin(E)*h));if(n=x.clone().add(new le(Math.cos(b)*h,Math.sin(b)*h)),l){let S=E,D=!0;for(;D&&(S+=y,p>=0&&S<b||p<0&&S>b);)a.push(x.clone().add(new le(h*Math.cos(S),h*Math.sin(S))));a.push(n.clone())}}break;case 11:{let h=e[++c],p=e[++c],d=e[++c],f=e[++c],m=(d*255+f)*i,g=hi.byteTosbyte(e[++c]),y=(g&112)>>4,E=g&7;E==0&&(E=8),p!=0&&E--;let b=Math.PI/4,x=b*E,S=jf.CICLESPAN,D=1;g<0&&(S=-S,x=-x,D=-1);let P=b*y,_=P+x;P+=b*h/256*D,_+=b*p/256*D;let w=n.clone().sub(new le(m*Math.cos(P),m*Math.sin(P)));if(n=w.clone().add(new le(m*Math.cos(_),m*Math.sin(_))),l){let F=P,X=!0;for(;X&&(F+=S,g>0&&F<_||g<0&&F>_);)a.push(w.clone().add(new le(m*Math.cos(F),m*Math.sin(F))));a.push(n.clone())}}break;case 12:{let h=new le;h.x=hi.byteTosbyte(e[++c])*i,h.y=hi.byteTosbyte(e[++c])*i;let p=hi.byteTosbyte(e[++c]);p<-127&&(p=-127),l&&(p==0?a.push(n.clone().add(h)):a.push(jf._generateArcPoints(n,h,p/127))),n.add(h)}break;case 13:for(;;){let p=new le;if(p.x=hi.byteTosbyte(e[++c])*i,p.y=hi.byteTosbyte(e[++c])*i,p.x==0&&p.y==0)break;let d=hi.byteTosbyte(e[++c]);d<-127&&(d=-127),l&&(d==0?a.push(n.clone().add(p)):a.push(jf._generateArcPoints(n.clone(),p,d/127))),n.add(p)}break;case 14:c=jf.skipCode(r,e,++c);break;default:if(u>15){let h=(u&240)>>4,p=u&15,d=new le;switch(p){case 0:d.x=1;break;case 1:d.x=1,d.y=.5;break;case 2:d.x=1,d.y=1;break;case 3:d.x=.5,d.y=1;break;case 4:d.y=1;break;case 5:d.x=-.5,d.y=1;break;case 6:d.x=-1,d.y=1;break;case 7:d.x=-1,d.y=.5;break;case 8:d.x=-1;break;case 9:d.x=-1,d.y=-.5;break;case 10:d.x=-1,d.y=-1;break;case 11:d.x=-.5,d.y=-1;break;case 12:d.y=-1;break;case 13:d.x=.5,d.y=-1;break;case 14:d.x=1,d.y=-1;break;case 15:d.x=1,d.y=-.5;break}n.add(d.multiplyScalar(h*i)),l&&a.push(n.clone())}break}}return new nd(n,s)}static skipCode(r,e,i){switch(e[i]){case 0:break;case 1:break;case 2:break;case 3:case 4:i++;break;case 5:break;case 6:break;case 7:switch(r.type){case 0:i++;break;case 1:i++,e[i]==0&&(i+=6);break;case 2:i+=2;break}break;case 8:i+=2;break;case 9:for(;;){let a=e[++i],o=e[++i];if(a==0&&o==0)break}break;case 10:i+=2;break;case 11:i+=5;break;case 12:i+=3;break;case 13:for(;;){let a=e[++i],o=e[++i];if(a==0&&o==0)break;let l=e[++i]}break;case 14:break;default:break}return i}static _generateArcPoints(r,e,i){let n=r.clone().add(e),s=i<0,a=!1;i=Math.abs(i);let o=e.length()/2,l=o*i,c=2*Math.atan(1/i),u=new le(e.y,-e.x);u.normalize(),u.multiplyScalar(l);let h=Math.abs(o/Math.sin(c/2)),p=r.add(e.divideScalar(2));a!==s?p.add(u):p.sub(u);let d=r.sub(p),f=n.sub(p),m=Math.atan2(d.y,d.x),g=Math.atan2(f.y,f.x),y=jf.CICLESPAN;s?(y=-y,m<g&&(m+=2*Math.PI)):m>g&&(m-=2*Math.PI);let E=m,b=!0;for(;b;){if(E+=y,!s&&E<g||s&&E>g)return p.add(new le(h*Math.cos(E),h*Math.sin(E)));break}return n}},Xl=jf;Xl.stopFlag="0x00",Xl.FILE_STOP_FLAG=["\r",`
|
||
`,""],Xl.CICLESPAN=Math.PI/18;var rO={130:[[[5,0],[5,9.5]],[[4,7.1],[2.6,6.6],[2.1,6.2],[1.7,5.4],[1.6,4],[2.1,3],[2.6,2.6],[3.9,2.2],[6.1,2.2],[7.5,2.6],[8,3.1],[8.4,3.9],[8.4,5.2],[7.9,6.1],[7.5,6.6],[6.1,7.1],[4,7.1]]],131:[[[3,0],[7,0]],[[5,0],[5,9.5]],[[4,7.1],[2.6,6.6],[2.1,6.2],[1.7,5.4],[1.6,4],[2.1,3],[2.6,2.6],[3.9,2.2],[6.1,2.2],[7.5,2.6],[8,3.1],[8.4,3.9],[8.4,5.2],[7.9,6.1],[7.5,6.6],[6.1,7.1],[4,7.1]]],132:[[[3,0],[7,0]],[[4,0],[4,9.5]],[[6,0],[6,9.5]],[[4,7.1],[2.6,6.6],[2.1,6.2],[1.7,5.4],[1.6,4],[2.1,3],[2.6,2.6],[3.9,2.2],[6.1,2.2],[7.5,2.6],[8,3.1],[8.4,3.9],[8.4,5.2],[7.9,6.1],[7.5,6.6],[6.1,7.1],[4,7.1]]],133:[[[3,0],[7,0]],[[4,0],[4,9.5]],[[6,0],[6,9.5]],[[4,7.1],[2.6,6.6],[2.1,6.2],[1.7,5.4],[1.6,4],[2.1,3],[2.6,2.6],[3.9,2.2],[6.1,2.2],[7.5,2.6],[8,3.1],[8.4,3.9],[8.4,5.2],[7.9,6.1],[7.5,6.6],[6.1,7.1],[4,7.1]],[[3,9.5],[7,9.5]]],134:[[[3,0],[7,0]],[[5,0],[5,9.5]],[[4,7.1],[2.6,6.6],[2.1,6.2],[1.7,5.4],[1.6,4],[2.1,3],[2.6,2.6],[3.9,2.2],[6.1,2.2],[7.5,2.6],[8,3.1],[8.4,3.9],[8.4,5.2],[7.9,6.1],[7.5,6.6],[6.1,7.1],[4,7.1]],[[12,10],[9,10],[9,6]],[[9,8],[11,8]]],135:[[[3,0],[7,0]],[[4,0],[4,9.5]],[[6,0],[6,9.5]],[[4,7.1],[2.6,6.6],[2.1,6.2],[1.7,5.4],[1.6,4],[2.1,3],[2.6,2.6],[3.9,2.2],[6.1,2.2],[7.5,2.6],[8,3.1],[8.4,3.9],[8.4,5.2],[7.9,6.1],[7.5,6.6],[6.1,7.1],[4,7.1]],[[12,10],[9,10],[9,6]],[[9,8],[11,8]]],136:[[[3,0],[7,0]],[[4,0],[4,9.5]],[[6,0],[6,9.5]],[[4,7.1],[2.6,6.6],[2.1,6.2],[1.7,5.4],[1.6,4],[2.1,3],[2.6,2.6],[3.9,2.2],[6.1,2.2],[7.5,2.6],[8,3.1],[8.4,3.9],[8.4,5.2],[7.9,6.1],[7.5,6.6],[6.1,7.1],[4,7.1]],[[3,9.5],[7,9.5]],[[12,10],[9,10],[9,6]],[[9,8],[11,8]]],178:[[[1.142,9.285],[1.142,9.428],[1.285,9.714],[1.428,9.857],[1.714,10],[2.285,10],[2.571,9.857],[2.714,9.714],[2.857,9.428],[2.857,9.142],[2.714,8.857],[2.428,8.428],[1,7],[3,7]]],8960:[[[2.9,8],[1.7,7.4],[.6,6.3],[0,4.6],[0,3.4],[.6,1.7],[1.7,.6],[2.9,0],[4.6,0],[5.7,.6],[6.9,1.7],[7.4,3.4],[7.4,4.6],[6.9,6.3],[5.7,7.4],[4.6,8],[2.9,8]],[[0,0],[8,8]]],20393:[[[0,0],[0,6.666]],[[0,4.761],[1.428,6.19],[2.38,6.666],[3.809,6.666],[4.761,6.19],[5.238,4.761],[5.238,0]],[[5.238,4.761],[6.666,6.19],[7.619,6.666],[9.047,6.666],[10,6.19],[10.476,4.761],[10.476,0]],[[11.142,9.285],[11.142,9.428],[11.285,9.714],[11.428,9.857],[11.714,10],[12.285,10],[12.571,9.857],[12.714,9.714],[12.857,9.428],[12.857,9.142],[12.714,8.857],[12.428,8.428],[11,7],[13,7]]],41123:[],55714:[[[2,5.9],[2.6,6.1],[3.4,7],[3.4,1]],[[2.9,8],[1.7,7.4],[.6,6.3],[0,4.6],[0,3.4],[.6,1.7],[1.7,.6],[2.9,0],[4.6,0],[5.7,.6],[6.9,1.7],[7.4,3.4],[7.4,4.6],[6.9,6.3],[5.7,7.4],[4.6,8],[2.9,8]]],55970:[[[2.3,5.6],[2.3,5.9],[2.6,6.4],[2.9,6.7],[3.4,7],[4.6,7],[5.1,6.7],[5.4,6.4],[5.7,5.9],[5.7,5.3],[5.4,4.7],[4.9,3.9],[2,1],[6,1]],[[2.9,8],[1.7,7.4],[.6,6.3],[0,4.6],[0,3.4],[.6,1.7],[1.7,.6],[2.9,0],[4.6,0],[5.7,.6],[6.9,1.7],[7.4,3.4],[7.4,4.6],[6.9,6.3],[5.7,7.4],[4.6,8],[2.9,8]]],56226:[[[2.6,7],[5.7,7],[4,4.7],[4.9,4.7],[5.4,4.4],[5.7,4.1],[6,3.3],[6,2.7],[5.7,1.9],[5.1,1.3],[4.3,1],[3.4,1],[2.6,1.3],[2.3,1.6],[2,2.1]],[[2.9,8],[1.7,7.4],[.6,6.3],[0,4.6],[0,3.4],[.6,1.7],[1.7,.6],[2.9,0],[4.6,0],[5.7,.6],[6.9,1.7],[7.4,3.4],[7.4,4.6],[6.9,6.3],[5.7,7.4],[4.6,8],[2.9,8]]],56482:[[[4.9,7],[2,3],[6.3,3]],[[4.9,7],[4.9,1]],[[2.9,8],[1.7,7.4],[.6,6.3],[0,4.6],[0,3.4],[.6,1.7],[1.7,.6],[2.9,0],[4.6,0],[5.7,.6],[6.9,1.7],[7.4,3.4],[7.4,4.6],[6.9,6.3],[5.7,7.4],[4.6,8],[2.9,8]]],56738:[[[5.4,7],[2.6,7],[2.3,4.4],[2.6,4.7],[3.4,5],[4.3,5],[5.1,4.7],[5.7,4.1],[6,3.3],[6,2.7],[5.7,1.9],[5.1,1.3],[4.3,1],[3.4,1],[2.6,1.3],[2.3,1.6],[2,2.1]],[[2.9,8],[1.7,7.4],[.6,6.3],[0,4.6],[0,3.4],[.6,1.7],[1.7,.6],[2.9,0],[4.6,0],[5.7,.6],[6.9,1.7],[7.4,3.4],[7.4,4.6],[6.9,6.3],[5.7,7.4],[4.6,8],[2.9,8]]],56994:[[[5.4,6.1],[5.1,6.7],[4.3,7],[3.7,7],[2.9,6.7],[2.3,5.9],[2,4.4],[2,3],[2.3,1.9],[2.9,1.3],[3.7,1],[4,1],[4.9,1.3],[5.4,1.9],[5.7,2.7],[5.7,3],[5.4,3.9],[4.9,4.4],[4,4.7],[3.7,4.7],[2.9,4.4],[2.3,3.9],[2,3]],[[2.9,8],[1.7,7.4],[.6,6.3],[0,4.6],[0,3.4],[.6,1.7],[1.7,.6],[2.9,0],[4.6,0],[5.7,.6],[6.9,1.7],[7.4,3.4],[7.4,4.6],[6.9,6.3],[5.7,7.4],[4.6,8],[2.9,8]]],57250:[[[2,7],[6,7],[3.1,1]],[[2.9,8],[1.7,7.4],[.6,6.3],[0,4.6],[0,3.4],[.6,1.7],[1.7,.6],[2.9,0],[4.6,0],[5.7,.6],[6.9,1.7],[7.4,3.4],[7.4,4.6],[6.9,6.3],[5.7,7.4],[4.6,8],[2.9,8]]],57506:[[[3.4,7],[2.6,6.7],[2.3,6.1],[2.3,5.6],[2.6,5],[3.1,4.7],[4.3,4.4],[5.1,4.1],[5.7,3.6],[6,3],[6,2.1],[5.7,1.6],[5.4,1.3],[4.6,1],[3.4,1],[2.6,1.3],[2.3,1.6],[2,2.1],[2,3],[2.3,3.6],[2.9,4.1],[3.7,4.4],[4.9,4.7],[5.4,5],[5.7,5.6],[5.7,6.1],[5.4,6.7],[4.6,7],[3.4,7]],[[2.9,8],[1.7,7.4],[.6,6.3],[0,4.6],[0,3.4],[.6,1.7],[1.7,.6],[2.9,0],[4.6,0],[5.7,.6],[6.9,1.7],[7.4,3.4],[7.4,4.6],[6.9,6.3],[5.7,7.4],[4.6,8],[2.9,8]]],57762:[[[5.7,5],[5.4,4.1],[4.9,3.6],[4,3.3],[3.7,3.3],[2.9,3.6],[2.3,4.1],[2,5],[2,5.3],[2.3,6.1],[2.9,6.7],[3.7,7],[4,7],[4.9,6.7],[5.4,6.1],[5.7,5],[5.7,3.6],[5.4,2.1],[4.9,1.3],[4,1],[3.4,1],[2.6,1.3],[2.3,1.9]],[[2.9,8],[1.7,7.4],[.6,6.3],[0,4.6],[0,3.4],[.6,1.7],[1.7,.6],[2.9,0],[4.6,0],[5.7,.6],[6.9,1.7],[7.4,3.4],[7.4,4.6],[6.9,6.3],[5.7,7.4],[4.6,8],[2.9,8]]],60070:[[[0,6],[10,6],[10,4]]],60326:[[[0,7],[0,5],[10,5]]]};var iO=new Qi,Wf=class{constructor(r){this.type=1;this.info="";this.orientation=0;this.baseUp=0;this.baseDown=0;this.fileHeader="";this.fileVersion="";this.datas={};this.graphicData=new Map;this.url=r}getGraphicDataByCode(r,e){if(r===0)return;let i=this.datas;if(!this.graphicData.has(r))if(i[r]){let n=i[r],s=eO/this.baseUp,a=Xl.parserCode(this,n,s);this.graphicData.set(r,a)}else{if(rO[r]){let n=[];for(let o=0;o<rO[r].length;o++)n.push(rO[r][o].map(l=>new le(l[0],l[1])));let s=new nd(new le,n),a=e/eO;return iO.identity().scale(a,a),s.transform(iO)}return}if(this.graphicData.has(r)){let n=e/eO;return iO.identity().scale(n,n),this.graphicData.get(r).transform(iO)}}getGraphicTextShape(r,e,i){var n;return(n=this.getGraphicDataByCode(r,e))==null?void 0:n.offset(i)}getFontFile(){return{url:this.url,type:this.type,datas:this.datas,info:this.info,orientation:this.orientation,baseUp:this.baseUp,baseDown:this.baseDown,fileHeader:this.fileHeader,fileVersion:this.fileVersion}}setFontFile(r){this.url=r.url,this.type=r.type,this.datas=r.datas,this.info=r.info,this.orientation=r.orientation,this.baseUp=r.baseUp,this.baseDown=r.baseDown,this.fileHeader=r.fileHeader,this.fileVersion=r.fileVersion}releaseFontData(){this.datas={},this.graphicData.clear()}setFontDataToIndexedDb(){return ot(this,null,function*(){let r=this.getFontFile();return new Promise((e,i)=>{lh.instance().save(r,()=>{console.log(`[FontFile] Saved '${this.url}' (${this.fileHeader}) to indexedDb`),e()},n=>i(`[FontFile] Failed to save '${this.url}' (${this.fileHeader}) to indexedDb! ${n}`))})})}getFontDataByIndexedDb(){return ot(this,null,function*(){return new Promise((r,e)=>{lh.instance().query(this.url,i=>{r(i)},()=>e("[FontFile] Failed to get FontData from IndexedDB"))})})}};var fS=class extends Wf{constructor(e){super(e);this.isExtend=!1;this.type=1}init(e){hi.ToInt16(e.readBytes(2),0);let i=hi.ToInt16(e.readBytes(2),0),n=hi.ToInt16(e.readBytes(2),0);for(let u=0;u<n;u++)e.readBytes(2),e.readBytes(2);let s=[];for(let u=0;u<i;u++){let h=e.readBytes(8),p=hi.ToUInt16(new Uint8Array([h[1],h[0]]),0),d=hi.ToUInt16(h,2),f=hi.ToUInt32(h,4);if(p===0&&d===0&&f===0)continue;let m=new D8;m.code=p,m.length=d,m.offset=f,s.push(m)}let a={};for(let u of s)e.setPosition(u.offset),a[u.code]=e.readBytes(u.length);let o=a[0],c=(this.info=t2t(o)).indexOf("\0")+1;o.length-c===4?(this.baseUp=o[c++],this.baseDown=o[c++],this.orientation=o[c++]):(this.baseUp=o[c++],c++,this.orientation=o[c++],this.baseDown=o[c++],this.isExtend=!0),this.datas=a}},D8=class{constructor(){this.code=0;this.length=0;this.offset=0}};function t2t(t){let r,e,i,n,s;r="";let a=t.length;for(e=0;e<a;)switch(i=t[e++],i>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:r+=String.fromCharCode(i);break;case 12:case 13:n=t[e++],r+=String.fromCharCode((i&31)<<6|n&63);break;case 14:n=t[e++],s=t[e++],r+=String.fromCharCode((i&15)<<12|(n&63)<<6|(s&63)<<0);break}return r}var mS=class extends Wf{constructor(e){super(e);this.type=0}init(e){e.readBytes(2),e.readBytes(2);let i=hi.ToInt16(e.readBytes(2),0),n=[];for(let c=0;c<i;c++){let u=new C8;u.code=hi.ToUInt16(e.readBytes(2),0),u.length=hi.ToUInt16(e.readBytes(2),0),n.push(u)}let s={};for(let c of n)s[c.code]=e.readBytes(c.length);let a=s[0],l=(this.info=new TextDecoder().decode(a)).indexOf("\0");this.baseUp=a[++l],this.baseDown=a[++l],this.orientation=a[++l],this.datas=s}},C8=class{constructor(){this.code=0;this.length=0}};var gS=class extends Wf{constructor(e){super(e);this.type=2;this.isUniCode=!0;this.isEmbedded=!1}init(e){let i=hi.ToInt32(e.readBytes(4),0),n=hi.ToInt16(e.readBytes(2),0),s=e.readBytes(n),o=(this.info=new TextDecoder().decode(s)).indexOf("\0");this.baseUp=s[++o],this.baseDown=s[++o],this.orientation=s[++o],this.isUniCode=s[++o]==0,this.isEmbedded=s[++o]==0;let l={},c=[];for(let u=0;u<i-1;u++){let h=new A8;h.code=hi.ToUInt16(e.readBytes(2),0),h.length=hi.ToUInt16(e.readBytes(2),0),l[h.code]=e.readBytes(h.length),c.push(h)}this.datas=l}},A8=class{constructor(){this.code=0;this.length=0}};var nO=new le,sO=class extends Zg{constructor(e){super("");this.unsupportedChars={};this.textShapesCache=new Map;this.files=[],this.filesMap=new Map,e&&this.loadFiles(e)}loadFiles(e){return ot(this,null,function*(){for(let i=0;i<e.length;i++){let n=e[i];this.files.push(this.loadFile(n))}yield this.saveFontDataToIndexdb(),this.releaseFontData()})}loadFile(e){let{url:i,arrayBuffer:n}=e,s=new Df(n),o=Xl.parserHeader(s,Xl.FILE_STOP_FLAG).split(" "),l=null;switch(o[1]){case"shapes":l=new mS(i);break;case"bigfont":l=new fS(i);break;case"unifont":l=new gS(i);break;default:break}return l&&(l.fileHeader=o[0],l.fileVersion=o[2],l.init(s),this.filesMap.set(i,l)),ne.info(`[ShxFont] shx font loaded.The font file is ${o[0]} ${o[2]}`),l}getGraphicDataByChar(e,i){let n=Xl.getCode(e);return n===0&&(n=e.charCodeAt(0)),this.getGraphicDataByCode(n,i)}getGraphicDataByCode(e,i){let n=`${e}_${i}`;if(this.textShapesCache.has(n))return this.textShapesCache.get(n);let s;for(let a=0;a<this.files.length&&(s=this.files[a].getGraphicDataByCode(e,i),!s);a++);return s&&this.textShapesCache.set(n,s),s}getGraphicTextShape(e,i,n){var s;return(s=this.getGraphicDataByCode(e,i))==null?void 0:s.offset(n)}getGraphicData(e,i=sO.DEFAULT_SIZE,n=0,s=0,a=0,o,l=!1){let c=[],u=e.split(`
|
||
`),h=(u.length-1)*(s+n),p=0,d=!1;for(let f=0;f<u.length;f++){let m=u[f];for(let g=0;g<m.length;g++){let y=m[g];bMe(y)&&(y=EMe(y));let E=this.getGraphicDataByChar(y,i);if(E||(E=this.getNotFoundTextShape(i),this.addUnsupportedChar(y)),!E){this.addUnsupportedChar(y);continue}if(E.polyLines.length===0&&(E.width=i+a,p+=a),d||o&&p+E.width>o){d?(p+=E.width+a,d=!1):(d=!0,p=0,h-=s+n),nO.set(p,h);let b=E.offset(nO);c.push(b),!d&&(p+=E.width+a)}else{nO.set(p,h);let b=E.offset(nO);c.push(b),p+=E.width+a}}d=!1,p=0,h-=s+n}return c}getNotFoundTextShape(e){let i=Xl.getCode("\uFF1F");return this.getGraphicDataByCode(i,e)}generateShapes(e,i=sO.DEFAULT_SIZE,n=0,s=0,a=0){return this.getGraphicData(e,i,n,s,a)}addUnsupportedChar(e){this.unsupportedChars[e]||(this.unsupportedChars[e]=0),this.unsupportedChars[e]++}static checkFontIsLoaded(e){return ot(this,null,function*(){let i=!1,n=yield lh.instance().queryAll();if(n.length!==e.length)return!1;for(let s=0;s<n.length;s++){let a=n[s];if(a.datas instanceof Map){i=!1;break}else if(Object.keys(a.datas).length===0){i=!1;break}if(e.includes(a.url))i=!0;else{i=!1;break}}return i})}saveFontDataToIndexdb(){return ot(this,null,function*(){lh.instance().clearAll();let e=this.files.map(i=>i.setFontDataToIndexedDb());return yield Promise.all(e).then(()=>{ne.debug("[ShxFont] Saves font data to IndexDB")})})}getFontData(){return ot(this,null,function*(){let e=yield lh.instance().queryAll(),i=[],n=new Map;for(let s=0;s<e.length;s++){let a=e[s],o;switch(a.type){case 1:o=new fS(a.url);break;case 0:o=new mS(a.url);break;case 2:o=new gS(a.url);break;default:break}o&&(o.setFontFile(a),i.push(o),n.set(a.url,o))}this.files=i,this.filesMap=n,ne.debug("[ShxFont] Loaded font data from cache.")})}releaseFontData(){for(let e=0;e<this.files.length;e++)this.files[e].releaseFontData();this.files=[],this.filesMap.clear(),this.textShapesCache.clear()}destroy(){}},Xc=sO;Xc.DEFAULT_SIZE=12;var S0=class extends pT{constructor(r){super(r)}load(r,e,i,n){Array.isArray(r)||(r=[r]);let s=[];for(let a=0;a<r.length;a++){let o=r[a];if(!S0.isShxFile(o)){console.warn(`[ShxFontLoader] Invalid shx file: '${o}'`);continue}s.push(this.loadFile(o,i))}Promise.all(s).then(a=>{let o=this.parse(a);e&&e(o)}).catch(a=>{n&&n(a)})}loadFile(r,e){return ot(this,null,function*(){return new Promise((n,s)=>{let a=new ci(this.manager);a.setResponseType("arraybuffer"),a.load(r,o=>{n({url:r,arrayBuffer:o})},e,o=>{s(o)})})})}loadAsync(r,e){return ot(this,null,function*(){return Array.isArray(r)||(r=[r]),(yield Xc.checkFontIsLoaded(r))?Promise.resolve(new Xc):new Promise((n,s)=>{this.load(r,n,e,s)})})}parse(r){return new Xc(r)}static isShxFile(r){var e;return((e=r.split(".").pop())==null?void 0:e.toLowerCase())==="shx"}};var qf=new A(1,0,0),O8=new A(0,1,0),aO=new A(0,0,1),xMe=new A(0,0,0),Yf=0,i2t="CONTINUOUS",P8=new Vn({color:Yf}),Pa=new Tr({color:Yf}),vS=new or({color:Yf}),IMe=new Ue;var N8=new Ue,$c=new Ue,ps=new A,yS=new A,TS=new le,SMe=new Or,n2t=t=>t.viewDirectionFromTarget!==void 0,s2t=t=>{if(t){let r=t.match(/data:([a-zA-Z0-9]+\/[a-zA-Z0-9-.+]+).*,.*/);if(r&&r.length>0){let e=r[1],i=t.replace("data:"+e+";","").split(",");if(i&&i.length===2&&i[0]==="base64"){let n=i[1];return HRe.decode(n)}}}return null},KT={Math:{}};KT.Math.angle2=function(t,r){let e=new le(t.x,t.y),i=new le(r.x,r.y);return i.sub(e),i.normalize(),i.y<0?-Math.acos(i.x):Math.acos(i.x)};KT.Math.polar=function(t,r,e){return{x:t.x+r*Math.cos(e),y:t.y+r*Math.sin(e)}};var a2t=(t,r,e,i)=>{let n=t?new le(t.x,t.y):new le(0,0),s=r?new le(r.x,r.y):new le(1,0);e=e||1;let a=4*Math.atan(e),o=n.distanceTo(s)/2/Math.sin(a/2),l=KT.Math.polar(t,o,KT.Math.angle2(n,s)+(Math.PI/2-a/2));i=i||Math.max(Math.abs(Math.ceil(a/(Math.PI/18))),6);let c=KT.Math.angle2(l,n),u=a/i,h=[];h.push(new A(n.x,n.y,0));for(let p=1;p<=i-1;p++){let d=KT.Math.polar(l,Math.abs(o),c+u*p);h.push(new A(d.x,d.y,0))}return h},o2t=(t,r,e,i=t.length*2,n)=>{let s=[],a=t.map(o=>[o.x,o.y]);for(let o=0;o<1;o+=1/i){let l=S8(o,r,a,e,n);s.push(new A(l[0],l[1],0))}return s},L8=(t,r=!1)=>{let e=[],i=t.length;for(let n=0;n<i;n++){let s=t[n];if(s.bulge&&(n!==i-1||r)){let a=s.bulge,o=n+1<i?t[n+1]:e[0],l=a2t(s,o,a);e.push(...l)}else e.push(new A(s.x,s.y,0))}return e},l2t=t=>{let r=[];return t.faceA&&r.push(t.faceA),t.faceB&&r.push(t.faceB),t.faceC&&r.push(t.faceC),t.faceD&&r.push(t.faceD),r},c2t=t=>{let r=[],e=[];t.forEach(n=>{n.polyfaceMeshVertex&&(n.threeDPolylineMesh?r.push(new A(n.x,n.y,n.z)):e.push(l2t(n)))});let i=[];for(let n=0;n<e.length;n++){let s=e[n];if(s.length===0)continue;let a=[],o=!0;for(let l=0;l<s.length;l++){let c=s[l]-1;if(c>=r.length||c<0){o=!1;break}a.push(r[c])}!o||a.length===0||(a.push(a[0]),i.push(a))}return i},Ri=class extends li{constructor(e=!1,i=!0){super();this.timer=Date.now();this.ignorePaperSpace=!1;this.angBase=0;this.angDir=0;this.header=void 0;this.pointsMaterials={};this.lineBasicMaterials={};this.lineShaderMaterials={};this.meshBasicMaterials={};this.meshTextureMaterials={};this.hatchShaderMaterials=[];this.entityCount=0;this.curveCount=0;this.averageCurveSize=0;this.enableRenderOrder=!1;this.enableLocalCache=!0;this.enableReleaseData=!0;this.enableMerge=!0;this.enableSimplify=!0;this.enableRTC=!0;this.enableWidthLine=!1;this.dxfDataId=void 0;this.compareContext=void 0;this.statsInfo={unsupportedEntity:{},unsupportedEntityTypes:{},unsupportedTextStyles:{},unsupportedHatchPatterns:{},invisibleEntities:{},ignoredFrozenLayersAndEntityCount:{},ignoredInserts:{},entityTypesAndMeshCount:{},ignoredPaperSpaceEntityTypesAndCount:{},rebasedEntityCount:0};this.blockReferencesCache={};this.blockRecordsCache=void 0;this.entitiesCache=void 0;this.blocksCache=void 0;this.dictionaryOwnerHandleAndSpatialFilterHandlesCache=void 0;this.spatialFiltersCache=void 0;this.entityThreejsCache=void 0;this.entityTypesAndTimes=void 0;this.nonSnapableTypes=new Set(["ATTDEF","ATTRIB","LEADER","MTEXT","MULTILEADER","OLE2FRAME","TEXT"]);this.entityHandlesWithRenderOrder={};this.addViewport=(e,i)=>{if(e.type==="VIEWPORT"){i[e.ownerHandle]||(i[e.ownerHandle]=[]);let n=e;i[e.ownerHandle].push(n)}};Ri.abortJobs=!1,this.ignorePaperSpace=e,this.enableLocalCache=i,this.pointsMaterials[Yf]=P8,this.lineBasicMaterials[Yf]=Pa,this.meshBasicMaterials[Yf]=vS}setFont(e){return this.font=e,this}download(e,i){return ot(this,null,function*(){let n=s2t(e);if(!n){let s=Date.now(),a=new ci(this.manager);a.setResponseType("arraybuffer"),a.setPath(this.path),n=yield a.loadAsync(e,i),ne.info(`[DxfLoader] ${e} dxf file downloaded in ${(Date.now()-s)/1e3}s`)}return n})}load(e,i,n){return ot(this,null,function*(){return this.enableLocalCache&&i&&(i=i.trim()).length>0&&(this.dxfDataId=i),this.loadAsync(e,n)})}loadAsync(e,i){return ot(this,null,function*(){let n=(u,h,p)=>{let d=u.loaded*100/u.total;d=d*(p-h)/100+h,i&&i(new ProgressEvent(u.type,{loaded:d,total:100}))},s=u=>n(u,0,50),a=u=>n(u,50,100),o=u=>n(u,10,100);if(this.enableLocalCache&&this.dxfDataId){let u;try{if(this.timer=Date.now(),u=yield this.getDxfDataFromIndexedDb(this.dxfDataId),u){ne.info(`[DxfLoader] Loaded DxfData from indexedDb in ${(Date.now()-this.timer)/1e3}s`);let h=yield this.loadEntities(u,o);return Promise.resolve(h)}}catch(h){ne.warn("[DxfLoader] Failed to parse data from indexedDb",h)}}let l=yield this.parse(e,s);return yield this.loadEntities(l,a)})}parse(e,i){return ot(this,null,function*(){let n=c=>{i&&i(new ProgressEvent("",{loaded:c,total:100}))},s=(c,u,h)=>{let p=c.loaded*100/c.total;p=p*(h-u)/100+u,p>h&&(ne.warn("[DxfLoader] Invalid ProgressEvent:",c),p=h),i&&i(new ProgressEvent(c.type,{loaded:p,total:100}))},a=c=>s(c,0,40),o=yield this.download(e,a);if(!o)return Promise.reject(`[DxfLoader] Failed to download ${e}`);if(Ri.abortJobs)return Promise.reject("[DXFLoader] Job aborted");this.timer=Date.now(),ne.info("[DxfLoader] Start parsing...");let l=new x0().parseSync(o);if(n(80),ne.info(`[DxfLoader] Parsed in ${(Date.now()-this.timer)/1e3}s, creating entities...`),Ri.abortJobs)return Promise.reject("[DXFLoader] Job aborted");if(l&&(l.objects.LAYOUT||(ne.warn("[DxfLoader] No layout defined! Will add a default 'Model' layout!"),l.objects.LAYOUT=[{layoutName:Ri.MODEL_LAYOUT_NAME}]),this.enableLocalCache&&this.dxfDataId)){let c=Date.now();try{yield this.setDxfDataToIndexedDb(this.dxfDataId,l),ne.info(`[DxfLoader] Saved to indexedDb in ${(Date.now()-c)/1e3}s`)}catch(u){ne.warn(`[DxfLoader] Failed to save '${this.dxfDataId}' to indexedDb!`,u)}}return n(100),l})}parseHeader(e){if(!e){ne.error("[DxfLoader]: Invalid header!");return}this.header=e;let i=e.$ACADVER.toString();i!=="AC1032"&&ne.warn(`[DxfLoader] Unexpected version: ${i}. But we'll try to continue.`),this.angBase=e.$ANGBASE||0,this.angDir=e.$ANGDIR||0}loadEntities(e,i){return ot(this,null,function*(){let n=Date.now();this.parseHeader(e.header),this.enableRenderOrder&&(this.initRenderOrderInfo(e),this.enableMerge=!1);let s=0,a=e.entities.length;this.entityCount=a,Object.keys(e.blocks).forEach(x=>{var S;this.entityCount+=((S=e.blocks[x].entities)==null?void 0:S.length)||0});let o=Math.round(Math.pow(a,.5)),l=Date.now(),c=x=>ot(this,null,function*(){if(i&&(x%o===0||x===a-1)){i(new ProgressEvent("parseProgress",{loaded:x+1,total:a}));let S=500,D=Date.now();(D-l>S||x===a-1)&&(yield bs.sleep(0),l=D)}}),u={};e.objects.LAYOUT.forEach(x=>{let S=x;u[S.layoutName]=S});let h={},p=x=>{let S=x.userData.layerName,D=h[S];D||(D=[],h[S]=D),D.push(x)},d={},f={},m=new hr;Qr.setSharedVariablesOfObject(m);for(let x=0;x<a&&!Ri.abortJobs;x++){let S=e.entities[x];this.addViewport(S,d);let D=this.drawEntity(S,e);if(D||(yield c(x)),!D)continue;this.enableMerge&&ji.merge(D,!1);let _=this.getLayout(e,S).layoutName,w=m.children.find(H=>H.name===_);w||(w=new hr,Qr.setSharedVariablesOfObject(w),w.name=_,w.userData.isLayoutLevelObject=!0,m.add(w)),s++,f[_]||(f[_]={object:w,layerObjects:{}});let F=f[_],X;if(_!==Ri.MODEL_LAYOUT_NAME){let H=u[_];H.directAssociatedLeafObjectSet||(H.directAssociatedLeafObjectSet=new Set),X=H.directAssociatedLeafObjectSet}if(this.enableMerge&&D.geometry){Qr.setSharedVariablesOfObject(D);let H=D.userData.layerName;this.getLayerVisible(e,H)===!1&&(D.visible=!1),F.layerObjects[H]||(F.layerObjects[H]=[]),F.layerObjects[H].push(D)}else w.add(D),D.traverse(H=>{if(Qr.setSharedVariablesOfObject(H),H.geometry){let he=H.userData.layerName;this.getLayerVisible(e,he)===!1&&(H.visible=!1),p(H),X&&X.add(H)}});yield c(x)}e.objects.LAYOUT.forEach(x=>{let S=x,D=S.layoutName;if(this.ignorePaperSpace&&D!==Ri.MODEL_LAYOUT_NAME)return;let P=S.associatedBlockName,_=e.blocks[P];_&&this.drawLayout(_,e,S,m,h,d)}),ne.debug(`[DxfLoader] Drew entities in ${(Date.now()-n)/1e3}s`);for(let x in f){let S=f[x],D=S.object,P;if(x!==Ri.MODEL_LAYOUT_NAME){let _=u[x];_.directAssociatedLeafObjectSet||(_.directAssociatedLeafObjectSet=new Set),P=_.directAssociatedLeafObjectSet}for(let _ in S.layerObjects){let w=S.layerObjects[_],F=ji.deepMerge(w,void 0,!1,!1,!0),X=F.added,H=F.removed;if(H.length!==w.length){let he=H;H.length>=100&&(he=new Set(H));let C=N=>Array.isArray(he)?he.indexOf(N)>=0:he.has(N);for(let N=0,k=w.length;N<k;N++){let G=w[N];C(G)||(D.add(G),p(G),P&&P.add(G))}}for(let he=0;he<X.length;he++){let C=X[he];Qr.setSharedVariablesOfObject(C),D.add(C),p(C),P&&P.add(C)}S.layerObjects[_]=[]}}for(let x in this.entityTypesAndTimes)this.entityTypesAndTimes[x].averageTime=this.entityTypesAndTimes[x].totalTime/this.entityTypesAndTimes[x].createCount;if(ne.debug("[DxfLoader] Entity types and cost times in ms:",this.entityTypesAndTimes),ne.debug("[DxfLoader] Entity types and mesh count:",this.statsInfo.entityTypesAndMeshCount),this.enableSimplify){let x=zx.simplifiedInfo;ne.debug(`[DxfLoader] Totally simplified/removed ${x.removed}(out of ${x.total}) points`)}let y=0;if(Object.values(this.statsInfo.entityTypesAndMeshCount).forEach(x=>{y+=x}),this.enableRTC&&ne.debug(`[DxfLoader] Totally rebased ${this.statsInfo.rebasedEntityCount}(out of ${y}) entities`),this.enableMerge){let x=ji.mergeInfo;ne.debug(`[DxfLoader] Inner merged ${x.removedObjects} objects to ${x.mergedMeshes} meshes, ${x.mergedLines} lines, ${x.mergedPoints} points, ${x.mergedUnknownTypeObjects?x.mergedUnknownTypeObjects+" unknown type,":""} in ${x.elapsedTime/1e3}s`)}let E=(x,S,...D)=>{Object.keys(S).length>0};E("[DxfLoader] Unsupported entity types and count:",this.statsInfo.unsupportedEntityTypes),E("[DxfLoader] Unsupported text style names and count:",this.statsInfo.unsupportedTextStyles),E("[DxfLoader] Unsupported hatch pattern names and count:",this.statsInfo.unsupportedHatchPatterns,". Filling in solid lines instead."),E("[DxfLoader] Ignored invisible entity types and count:",this.statsInfo.invisibleEntities),E("[DxfLoader] Ignored frozen layers and entity count:",this.statsInfo.ignoredFrozenLayersAndEntityCount),E("[DxfLoader] Ignored inserts and count (may because they don't contain anything):",this.statsInfo.ignoredInserts),this.ignorePaperSpace&&E("[DxfLoader] Ignored paper space entity count:",this.statsInfo.ignoredPaperSpaceEntityTypesAndCount),this.font.unsupportedChars&&E("[DxfLoader] Unsupported chars and count:",this.font.unsupportedChars),this.enableReleaseData&&(this.releaseCachedData(),this.releaseDxfData(e)),ne.info(`[DxfLoader] loadEntities() done in ${(Date.now()-n)/1e3}s`);let b=Mn(Ur({},e),{threejsObject:m,layersAndThreejsObjects:h,loadedEntityCount:s,layoutViewportsMap:d});return Promise.resolve(b)})}loadEntitiesForCompare(e,i,n,s){return ot(this,null,function*(){let a=e.entities.length,o=i.entities.length,l=()=>ot(this,null,function*(){var S;let u=this.compareContext,h=u.isTheFirstFile,p=h?e:i,d=new hr,f=h?a:o,m=p.entities.length;this.entityCount=m,Object.keys(p.blocks).forEach(D=>{var P;this.entityCount+=((P=p.blocks[D].entities)==null?void 0:P.length)||0});let g=Math.round(Math.pow(f,.5)),y=Date.now(),E=D=>ot(this,null,function*(){if(s&&(D%g===0||D===f-1)){let P=D+1;h||(P+=a),s(new ProgressEvent("parseProgress",{loaded:P,total:a+o}));let _=500,w=Date.now();(w-y>_||D===f-1)&&(yield bs.sleep(0),y=w)}});this.parseHeader(p.header);let b={};for(let D=0;D<f;D++){if(Ri.abortJobs)return;let P=p.entities[D];if(this.getLayout(p,P).layoutName!==Ri.MODEL_LAYOUT_NAME){yield E(D);continue}let w=this.drawEntity(P,p);if(w||(yield E(D)),!w)continue;let F=d.children[0];F||(F=new hr,F.name=Ri.MODEL_LAYOUT_NAME,F.userData.isLayoutLevelObject=!0,d.add(F)),F.add(w),w.traverse(X=>{if(X.geometry){let H=X.userData.layerName;this.getLayerVisible(p,H)===!1&&(X.visible=!1);let he=b[H];he||(he=[],b[H]=he),he.push(X)}}),yield E(D)}let x=p;x.threejsObject=d,d.updateMatrixWorld(!0),x.layersAndThreejsObjects=b,x.layoutViewportsMap={},h&&(u.preservedHandles||(u.preservedHandles=new Set));for(let D in n){let P=n[D];h&&(P.type==="Added"||P.type==="Modified")&&((S=u.preservedHandles)==null||S.add(P.handle),P.parentHandles&&P.parentHandles.forEach(w=>{var F;return(F=u.preservedHandles)==null?void 0:F.add(w)}));let _=this.entityThreejsCache&&this.entityThreejsCache[P.handle];P.parentHandles&&(_=this.entityThreejsCache&&this.entityThreejsCache[P.parentHandles[P.parentHandles.length-1]]),_&&(_=this.setObjectColorByChange(_,P)),P.type!=="NoChange"&&_&&(P.type==="Added"?!h&&(P.box=new Ot().setFromObject(_)):P.type==="Removed"?h&&(P.box=new Ot().setFromObject(_)):P.type==="Modified"&&(P.box?P.box.union(new Ot().setFromObject(_)):P.box=new Ot().setFromObject(_)))}Ri.merge(x)}),c=Date.now();this.compareContext={changes:n,isTheFirstFile:!0},St.printMemory("Before loading entities for first dxf"),yield l(),ne.info(`[DxfLoader] loadEntities for first dxf in ${(Date.now()-c)/1e3}s`),St.printMemory("After loading entities for first dxf"),this.releaseCachedData(!1),this.releaseDxfData(e),St.printMemory("Before loading entities for second dxf"),c=Date.now(),this.compareContext.isTheFirstFile=!1,yield l(),ne.info(`[DxfLoader] loadEntities for second dxf in ${(Date.now()-c)/1e3}s`);for(let u of Object.values(n))u.box||delete n[u.handle];this.compareContext.preservedHandles=void 0,this.enableReleaseData&&(this.releaseCachedData(),this.releaseDxfData(i)),St.printMemory("After loading entities for second dxf")})}setObjectColorByChange(e,i){let n=o=>{var c;let l=Wn.ENTITY_COLOR_NO_CHANGE;return o.type==="Added"?l=Wn.ENTITY_COLOR_ADDED:o.type==="Removed"?l=Wn.ENTITY_COLOR_REMOVED:o.type==="Modified"&&(l=(c=this.compareContext)!=null&&c.isTheFirstFile?Wn.ENTITY_COLOR_REMOVED:Wn.ENTITY_COLOR_ADDED),l},s=(o,l)=>{o.traverse(c=>{if(c.material){if(c.material instanceof Tr)c.material=this.getLineBasicMaterial(l);else if(c.material instanceof or)c.material=this.getMeshBasicMaterial(l);else if(c.material instanceof Vn)c.material=this.getPointsMaterial(l);else if(c.material instanceof Yt){let u=c.material.clone();this.updateMaterialUniforms(u),u.uniforms.u_color.value.set(l),c.material=u}}})},a=n(i);return e.traverse(o=>{i.parentHandles?o.userData&&o.userData.handle&&o.userData.handle===i.handle&&(s(o,a),e=o):s(o,a)}),e}releaseCachedData(e=!0){e&&(this.pointsMaterials={},this.lineBasicMaterials={},this.lineShaderMaterials={},this.meshBasicMaterials={},this.meshTextureMaterials={},this.hatchShaderMaterials=[]),this.header=void 0,this.blockReferencesCache={},this.blockRecordsCache=void 0,this.blocksCache=void 0,this.entitiesCache=void 0,this.dictionaryOwnerHandleAndSpatialFilterHandlesCache=void 0,this.spatialFiltersCache=void 0,this.entityThreejsCache=void 0,this.entityTypesAndTimes=void 0,this.entityHandlesWithRenderOrder={},this.statsInfo={unsupportedEntity:{},unsupportedEntityTypes:{},unsupportedTextStyles:{},unsupportedHatchPatterns:{},invisibleEntities:{},ignoredFrozenLayersAndEntityCount:{},ignoredInserts:{},entityTypesAndMeshCount:{},ignoredPaperSpaceEntityTypesAndCount:{},rebasedEntityCount:0}}releaseEntity(e){e.vertices&&(e.vertices=void 0),e.knotValues&&(e.knotValues=void 0),e.controlPoints&&(e.controlPoints=void 0),e.binaryData&&(e.binaryData=void 0),e.text&&(e.text=void 0),e.extendedData&&(e.extendedData=void 0),e.contextData&&(e.contextData=void 0);let i=e;i.boundaryPaths&&(i.boundaryPaths=[]),i.patternLines&&(i.patternLines=void 0)}releaseDxfData(e){delete e.objects.DICTIONARY,delete e.objects.SORTENTSTABLE,delete e.objects.XRECORD,delete e.tables.dimStyle,delete e.tables.lineType,delete e.tables.style,delete e.tables.blockRecord,e.entities=[],e.blocks={}}drawEntity(e,i,n,s=!1){if(this.compareContext&&this.compareContext.preservedHandles&&this.compareContext.preservedHandles.has(e.handle)&&T0.includes(e.type)&&(s=!0),!s&&this.compareContext&&this.compareContext.preservedHandles&&!T0.includes(e.type)&&!this.compareContext.preservedHandles.has(e.handle)&&(!n||n&&!this.compareContext.preservedHandles.has(n.handle)))return;if(this.getLayerFrozen(i,e)===!0){let u=e.layer;this.statsInfo.ignoredFrozenLayersAndEntityCount[u]||(this.statsInfo.ignoredFrozenLayersAndEntityCount[u]=0),this.statsInfo.ignoredFrozenLayersAndEntityCount[u]++;return}if(e.visible===!1||e.invisible){this.statsInfo.invisibleEntities[e.type]||(this.statsInfo.invisibleEntities[e.type]=0),this.statsInfo.invisibleEntities[e.type]++;return}if(this.ignorePaperSpace&&e.inPaperSpace){this.statsInfo.ignoredPaperSpaceEntityTypesAndCount[e.type]||(this.statsInfo.ignoredPaperSpaceEntityTypesAndCount[e.type]=0),this.statsInfo.ignoredPaperSpaceEntityTypesAndCount[e.type]++;return}this.entityThreejsCache||(this.entityThreejsCache={});let o=Date.now(),l,c=!1;if(!this.compareContext&&this.entityThreejsCache[e.handle])l=this.entityThreejsCache[e.handle].clone(),c=!0;else if(!this.statsInfo.unsupportedEntity[e.handle]){if(e.type==="CIRCLE"||e.type==="ARC")l=this.drawArc(e,i,n);else if(e.type==="LINE"||e.type==="POLYLINE")l=this.drawLine(e);else if(e.type==="XLINE")l=this.drawXLine(e);else if(e.type!=="SEQEND"){if(e.type==="RAY")l=this.drawRay(e);else if(e.type==="LWPOLYLINE")l=this.drawLWPolyline(e,i,n);else if(e.type==="3DFACE")l=this.draw3DFace(e);else if(e.type==="TEXT")l=this.drawText(e,i,n);else if(e.type==="SOLID")l=this.drawSolid(e,i,n);else if(e.type==="POINT")l=this.drawPoint(e,i,n);else if(e.type==="INSERT")l=this.drawInsert(e,i,s);else if(e.type==="SPLINE")l=this.drawSpline(e,n);else if(e.type==="MTEXT")l=this.drawMText(e,i,n);else if(e.type==="ELLIPSE")l=this.drawEllipse(e,i,n);else if(e.type==="DIMENSION")l=this.drawDimension(e,i);else if(e.type!=="REGION")if(e.type==="ATTDEF")l=this.drawAttDef(e,i,n);else if(e.type==="ATTRIB"){if(!n)for(let u=0;u<i.entities.length;u++){let h=i.entities[u];if(e.ownerHandle===h.handle&&(n=h,n.attributesFollow))break}l=this.drawAttrib(e,i,n)}else e.type==="HATCH"?l=this.drawHatch(e,i,n):e.type==="VIEWPORT"?l=this.drawViewport(e,i,n):e.type==="LEADER"?l=this.drawLeader(e,i,n):e.type==="MULTILEADER"?l=this.drawMLeader(e,i,n):e.type==="OLE2FRAME"&&(l=this.drawOle2frame(e,i))}l&&(this.entityThreejsCache[e.handle]=l),this.enableReleaseData&&!this.compareContext&&this.releaseEntity(e)}if(l){l.matrixAutoUpdate=!1,l.updateMatrix();let u=this.getLayerName(e,i,n),h=this.getLayerVisible(i,u);l.userData.handle=e.handle,Qr.setSharedVariablesOfObject(l),e.type!=="INSERT"&&e.type!=="DIMENSION"&&l.traverse(p=>{Qr.setSharedVariablesOfObject(p),p.matrixAutoUpdate=!1,p.updateMatrix(),p.geometry&&(h===!1&&(p.userData.layerVisible=!1),p.userData.layerName=u,this.setMaterial(p,e,i,n))}),c||(this.nonSnapableTypes.has(e.type)&&l.traverse(p=>{p.layers.set(10)}),this.enableRenderOrder&&(this.entityHandlesWithRenderOrder[e.handle]?l.renderOrder=parseInt(this.entityHandlesWithRenderOrder[e.handle],16)+.1:l.renderOrder=parseInt(e.handle,16)))}return T0.includes(e.type)||(this.entityTypesAndTimes||(this.entityTypesAndTimes={}),this.entityTypesAndTimes[e.type]||(this.entityTypesAndTimes[e.type]={createCount:0,totalTime:0,averageTime:0}),this.entityTypesAndTimes[e.type].createCount++,this.entityTypesAndTimes[e.type].totalTime+=Date.now()-o),l?this.statsInfo.entityTypesAndMeshCount[e.type]?this.statsInfo.entityTypesAndMeshCount[e.type]++:this.statsInfo.entityTypesAndMeshCount[e.type]=1:(this.statsInfo.unsupportedEntityTypes[e.type]?this.statsInfo.unsupportedEntityTypes[e.type]++:this.statsInfo.unsupportedEntityTypes[e.type]=1,T0.includes(e.type)||(this.statsInfo.unsupportedEntity[e.handle]?this.statsInfo.unsupportedEntity[e.handle]++:this.statsInfo.unsupportedEntity[e.handle]=1)),l}drawEllipse(e,i,n){if(!e.majorAxisEndPoint||!e.center||e.axisRatio===void 0||e.startAngle===void 0||e.endAngle===void 0)return;let s=e.startAngle,a=e.endAngle;if(e.extrusionDirection&&e.extrusionDirection.z<0&&(s=Math.PI*2-e.endAngle,a=Math.PI*2-e.startAngle),lr.areNumbersEqual(s,a,1e-5)){ne.warn("[DxfLoader] Ellipse entity (handle '%s') contains the same start and end angle, ignored!",e.handle);return}let o=a-s;for(;o>Math.PI*2;)o-=Math.PI*2;Math.abs(o)<=1e-5&&(a=lr.floorNumber(s+Math.PI*2,5));let l=Math.sqrt(Math.pow(e.majorAxisEndPoint.x,2)+Math.pow(e.majorAxisEndPoint.y,2)),c=l*e.axisRatio,u=Math.atan2(e.majorAxisEndPoint.y,e.majorAxisEndPoint.x),h=new xp(e.center.x,e.center.y,l,c,s,a,!1,u),p=1,d=n;d!=null&&d.xScale&&(d!=null&&d.yScale)&&(p=Math.max(Math.abs(d.xScale),Math.abs(d.yScale)));let f=this.getDivision(s,a,Math.max(l,c)*p),m=h.getPoints(f),g=[],y=m.length;for(let D=0;D<y-1;D++)lr.areVector2sEqual(m[D],m[D+1],1e-9)||g.push(m[D]);if(g.push(m[y-1]),g.length<2){ne.warn("[DxfLoader] Ellipse entity (handle '%s') contains less than 2 points, ignored!",e.handle);return}let E=new A,b=!1;this.enableRTC&&(b=Wt.checkAndRebasePositionsOnRTC(g,E));let x=new it().setFromPoints(g),S=new _r(x,Pa);return b&&(this.setRTCUserData(S),S.position.x+=E.x,S.position.y+=E.y),S}drawMText(e,i,n){if(!e.text)return;if(!this.font){ne.info("[DxfLoader] Font parameter not set. Ignoring text entity.");return}let s=i.tables.style.styles[e.textStyle]||this.getDefaultTextStyle(i),a=JA(e.text,{encoding:this.getTextEncoding(s)}),o=this.mtextContentAndFormattingToTextAndStyle(a,e),l=this.getMTextGroup(o.text,e,i,n,o);if(!l)return;e.position&&(l.position.x+=e.position.x,l.position.y+=e.position.y);let u=new Ot().setFromObject(l).getSize(ps),h=u.x,p=u.y,d=0,f=0;switch(e.attachmentPoint){case 1:d=0,f=0;break;case 2:d-=h/2,f=0;break;case 3:d-=h,f=0;break;case 4:d=0,f+=p/2;break;case 5:d-=h/2,f+=p/2;break;case 6:d-=h,f+=p/2;break;case 7:d=0,f+=p;break;case 8:d-=h/2,f+=p;break;case 9:d-=h,f+=p;break;default:return}switch(o.style.horizontalAlignment){case"left":d=0;break;case"center":d=0,d-=h/2;break;case"right":d=0,d-=h;break;default:break}if(l.traverse(g=>{g.geometry&&g.geometry.translate(d,f,0)}),e.rotation&&(l.rotation.z=e.rotation*Math.PI/180),e.directionVector){let g=e.directionVector,y=new A(g.x,g.y,g.z),E=y.clone().cross(qf),b=new A(1,0,0).angleTo(y);l.rotateZ(E.z>0?-b:b)}return o.lineLength>1?l.position.y-=u.y+o.style.textHeight:l.position.y-=u.y,l}getMTextGroup(e,i,n,s,a){var h;if(e.length===0)return;let o=(a?a.style.textHeight:i.textHeight)||0;if(i.textStyle){let p=n.tables.style.styles[i.textStyle];o=o||p.textHeight}let l=o/1.5,c=o/2,u=new hr;for(let p=0;p<e.length;p++){let{text:d,colorIndex:f,lineNum:m}=e[p],g=this.getTextMesh(d,i,n,s,a);if(!g)continue;let y=((h=d.match(new RegExp("\\n","g")))==null?void 0:h.length)||0;g.position.y-=(m+y)*(l+c),f!==void 0&&f!==256&&(i.color=E0(f),i.colorIndex=f);let E=this.getColor(i,n,s);(g.material instanceof or||g.material instanceof Tr)&&g.material.color.set(E),u.add(g)}if(u.children.length!==0)return ji.merge(u,!1),a&&u.translateY(a.lineLength*(l+c)),u}mtextContentAndFormattingToTextAndStyle(e,i){let n={horizontalAlignment:"",textHeight:i.height||i.contextData&&i.contextData.textHeight},s=1,a=[];for(let o=0;o<e.length;o++){let l=e[o];if(typeof l=="string"){if(l.startsWith("\\pxq")&&l.endsWith(";"))l.indexOf("c")!==-1?n.horizontalAlignment="center":l.indexOf("l")!==-1?n.horizontalAlignment="left":l.indexOf("r")!==-1?n.horizontalAlignment="right":l.indexOf("j")!==-1&&(n.horizontalAlignment="justify");else if(!l.startsWith("pi")){if(!l.startsWith("pxt")){if(!l.startsWith("pt")){let c=this.getTextLineNum(l);a&&a[a.length-1]&&a[a.length-1].colorIndex===void 0?a[a.length-1].text+=l:a.push({text:l,lineNum:s}),s+=c}}}}else if(Array.isArray(l)){let c=this.mtextContentAndFormattingToTextAndStyle(l,i);c.text.forEach(u=>{a&&a[a.length-1]&&a[a.length-1].colorIndex===u.colorIndex?a[a.length-1].text+=u.text:a.push(u)}),s=c.lineLength}else if(typeof l=="object"){if(l.S&&l.S.length===3){let c=l.S[0]+"/"+l.S[2],u=this.getTextLineNum(c);a&&a[a.length-1]&&a[a.length-1].colorIndex===void 0?a[a.length-1].text+=c:a.push({text:l.S[0]+"/"+l.S[2],lineNum:s}),s+=u}else if(l.C!==void 0&&(o++,typeof e[o]=="string")){let c=this.getTextLineNum(e[o]);a&&a[a.length-1]&&a[a.length-1].colorIndex===l.C?a[a.length-1].text+=e[o]:a.push({colorIndex:l.C,text:e[o],lineNum:s}),s+=c}}}return{text:a,lineLength:s,style:n}}getTextLineNum(e){let i=e.match(new RegExp("\\n","g"));return i?i.length:0}draw3DFace(e){if(!e.vertices||e.vertices.length===0){ne.warn("[DxfLoader] Entity is missing vertices:",e.handle);return}let i=e.vertices.map(l=>new A(l.x,l.y,l.z));if(i.length===0)return;lr.areVector3sEqual(i[0],i[i.length-1])||i.push(i[0]);let n=new A,s=!1;this.enableRTC&&(s=Wt.checkAndRebasePositionsOnRTC(i,n));let a=new it().setFromPoints(i),o=new _r(a,Pa);return s&&(this.setRTCUserData(o),o.position.x+=n.x,o.position.y+=n.y),o.renderOrder=2,o}drawSpline(e,i){if(!e.controlPoints||!e.degreeOfSplineCurve||!e.knotValues)return;let n=1/0,s=1/0,a=-1/0,o=-1/0;for(let E of e.controlPoints)E.x<n&&(n=E.x),E.y<s&&(s=E.y),E.x>a&&(a=E.x),E.y>o&&(o=E.y);let l=1,c=i;c!=null&&c.xScale&&(c!=null&&c.yScale)&&(l=Math.max(Math.abs(c.xScale),Math.abs(c.yScale)));let u=Math.max(a-n,o-s),h=this.getBSplineInterpolationsPerSplineSegment(e.controlPoints.length,u*l),p=o2t(e.controlPoints,e.degreeOfSplineCurve,e.knotValues,h),d=new A,f=!1;this.enableRTC&&(f=Wt.checkAndRebasePositionsOnRTC(p,d));let m=Wt.getAdjacentNonRepeatPoints(p);if(m.length<2){ne.warn("[DxfLoader] Spline entity (handle '%s') contains less than 2 points, ignored!",e.handle);return}let g=new it().setFromPoints(m),y=new _r(g,Pa);return f&&(this.setRTCUserData(y),y.position.x+=d.x,y.position.y+=d.y),y}drawXLine(e){if(!e.vertices||e.vertices.length===0){ne.warn("[DxfLoader] Entity is missing vertices:",e.handle);return}let i=St.arrayOrObjectToVector3(e.directionVector),n=new A(e.vertices[0].x,e.vertices[0].y,0),s=[];if(s.push(i.clone().multiplyScalar(-1e6).add(n)),s.push(i.clone().multiplyScalar(1e6).add(n)),s.length===0)return;let a=new A,o=!1;this.enableRTC&&(o=Wt.checkAndRebasePositionsOnRTC(s,a));let l=new it().setFromPoints(s),c=new _r(l,Pa);return o&&(this.setRTCUserData(c),c.position.x+=a.x,c.position.y+=a.y),c.renderOrder=2,c}drawRay(e){if(!e.vertices||e.vertices.length===0){ne.warn("[DxfLoader] Entity is missing vertices:",e.handle);return}let i=St.arrayOrObjectToVector3(e.directionVector),n=e.vertices.map(c=>new A(c.x,c.y,0));if(n.push(i.multiplyScalar(1e6).add(n[0])),n.length===0)return;let s=new A,a=!1;this.enableRTC&&(a=Wt.checkAndRebasePositionsOnRTC(n,s));let o=new it().setFromPoints(n),l=new _r(o,Pa);return a&&(this.setRTCUserData(l),l.position.x+=s.x,l.position.y+=s.y),l.renderOrder=2,l}drawLine(e){if(!e.vertices||e.vertices.length===0){ne.warn("[DxfLoader] Entity is missing vertices:",e.handle);return}let i=[];if(e.isPolyfaceMesh)i=c2t(e.vertices);else{let l=L8(e.vertices,e.shape);e.shape&&l.length>0&&l.push(l[0]),l.length>0&&(i=[l])}if(i.length===0)return;let n=[];for(let l=0;l<i.length;){let[c,u]=i[l];lr.areVector3sEqual(c,u)?(n.push(c),i.splice(l,1)):l++}let s=new A,a=!1,o;if(i.length>0){if(this.enableRTC){let m=0;i.forEach(g=>{g.forEach(y=>{s.add(y),m++})}),s.divideScalar(m),a=Wt.shouldRebasePositionOnRTC(s)}let l=[],c=[],u=0,h=0,p=0,d=0;i.forEach(m=>{for(let g=0;g<m.length;g++)a?(h=m[g].x-s.x,p=m[g].y-s.y,d=m[g].z-s.z,l.push(new A(h,p,d))):l.push(m[g]),g>0&&c.push(u+g-1,u+g);u=m.length});let f=new it().setFromPoints(l);f.setIndex(c),o=new oi(f,Pa)}if(n.length>0){this.enableRTC&&(a=Wt.checkAndRebasePositionsOnRTC(n,s));let l=new it().setFromPoints(n);o=new rn(l,P8)}if(o)return a&&(this.setRTCUserData(o),o.position.x+=s.x,o.position.y+=s.y),o}drawLWPolyline(e,i,n){var h;if(!e.vertices||e.vertices.length<2){ne.warn("[DxfLoader] Invalid LWPolyline entity (handle '%s'), ignored!",e.handle);return}let s=e;if(s.extrusionDirectionX!==void 0&&s.extrusionDirectionY!==void 0&&s.extrusionDirectionZ!==void 0){ps.set(s.extrusionDirectionX,s.extrusionDirectionY,s.extrusionDirectionZ);let p=Ri.getOcsMatrix(ps).invert(),d=0;s.elevation!==void 0&&s.elevation>0&&(d=s.elevation),s.vertices.forEach(f=>{let m=ps.set(f.x,f.y,d).applyMatrix4(p);f.x=m.x,f.y=m.y})}let a=L8(e.vertices,e.shape);if(e.shape&&a.length>0&&!lr.areVector3sEqual(a[0],a[a.length-1])&&a.push(a[0]),a.length<2){ne.warn("[DxfLoader] Invalid LWPolyline entity (handle '%s'), ignored!",e.handle);return}(h=e.extendedData)!=null&&h.outlines&&e.extendedData.outlines.forEach(d=>{let f=d.map(m=>new A(m[0],m[1],0));lr.areVectorsClose(f[0],f[f.length-1])||f.push(f[0]),a.push(...f)});let o=new A,l=!1;this.enableRTC&&(l=Wt.checkAndRebasePositionsOnRTC(a,o));let c=Wt.getAdjacentNonRepeatPoints(a);if(c.length<2){ne.warn("[DxfLoader] Invalid LWPolyline entity (handle '%s'), ignored!",e.handle);return}let u;if(this.enableWidthLine&&s.constantWidth!==void 0&&s.constantWidth>1){let p=i.tables.lineType.lineTypes[this.getLineType(e,i,n)];if(!(p&&p.pattern&&p.pattern.length!==0)){let d=Wt.convertWidthLineToMeshGeometry(c,s.constantWidth);if(!d)ne.warn("[DxfLoader] Failed to convert width line to mesh geometry: %s ",e.handle);else{let f=new Je(d,vS);u=new hr,u.add(f);let m=Qr.createOutlineSync(d,f.matrix,Pa);m.layers.set(10),u.add(m)}}}return u||(u=new _r(new it().setFromPoints(c),Pa)),l&&(this.setRTCUserData(u),u.position.x+=o.x,u.position.y+=o.y,u.position.z+=o.z),u}drawMLeader(e,i,n){var u,h,p,d,f,m,g,y;let s=i.tables.dimStyle.dimStyles[e.dimensionStyle]||this.getDefaultDimensionStyle(i),a=new hr,o=JA((u=e.contextData)==null?void 0:u.defaultTextContents),l=this.mtextContentAndFormattingToTextAndStyle(o,e),c=this.getMTextGroup(l.text,e,i,n,l);if(c){(h=e.contextData)!=null&&h.textLocation&&(c.position.x+=e.contextData.textLocation.x,c.position.y+=e.contextData.textLocation.y);let E=((p=e.contextData)==null?void 0:p.textWidth)||1;switch(l.style.horizontalAlignment){case"left":break;case"center":E&&(c.position.x+=E/2);break;case"right":E&&(c.position.x+=E);break;default:break}let S=new Ot().setFromObject(c).getSize(ps),D=S.x,P=S.y,_=0,w=0;switch((d=e.contextData)==null?void 0:d.textAttachment){case 1:_=0,w=0;break;case 2:_-=D/2,w=0;break;case 3:_-=D,w=0;break;case 4:_=0,w+=P/2;break;case 5:_-=D/2,w+=P/2;break;case 6:_-=D,w+=P/2;break;case 7:_=0,w+=P;break;case 8:_-=D/2,w+=P;break;case 9:_-=D,w+=P;break;default:return}if(c.traverse(F=>{F.geometry&&F.geometry.translate(_,w,0)}),(f=e.contextData)!=null&&f.textRotation&&(c.rotation.z=e.contextData.textRotation*Math.PI/180),(m=e.contextData)!=null&&m.textDirection){let F=e.contextData.textDirection,X=new A(F.x,F.y,F.z),H=X.clone().cross(new A(1,0,0)),he=new A(1,0,0).angleTo(X);c.rotateZ(H.z>0?-he:he)}c.renderOrder=5,a.add(c)}if(e.leaderLineType!==0){let E=[],b=(g=e.contextData)==null?void 0:g.leaders[0];if(!b)return a;let x=b.lastLeaderLinePoint;if(e.enableDogLeg){let F=new A(x.x,x.y,x.z),X=b.doglegLength,he=new A(b.doglegVector.x,b.doglegVector.y,b.doglegVector.z).multiplyScalar(X),C=F.clone().add(he);E.push(C,F)}let S=((y=e.contextData)==null?void 0:y.leaders[0].leaderLines)||[];for(let F=0;F<S.length;F++){let H=S[F].vertices[0].reverse().map(j=>new A(j.x,j.y,j.z)),he=new A(x.x,x.y,x.z);for(let j=0;j<H.length;j++)E.push(he,H[j]),he=H[j];let C=ps.subVectors(E[0],E[1]).length(),N=e.arrowHeadSize||s.DIMASZ||2.5,k=e.arrowHeadScale||s.DIMSCALE||1,G=N*k;e.leaderLineType;let U="";if(e.arrowHeadId?U=e.arrowHeadId:s&&s.DIMLDRBLK&&(U=s.DIMLDRBLK),U){let j=this.getBlockByHandle(i.blocks,U);if(j&&j.entities)for(let ee=0;ee<j.entities.length;ee++){let ae=this.drawEntity(j.entities[ee],i,e);if(ae){let se=new A(E[E.length-1].x,E[E.length-1].y,E[E.length-1].z),ue=new A(E[E.length-2].x,E[E.length-2].y,E[E.length-2].z),ve=Math.atan2(se.y-ue.y,se.x-ue.x);ae.position.copy(se),ae.quaternion.identity(),ae.scale.setScalar(G),ae.rotateZ(ve),ae.updateMatrix(),a.add(ae)}}}else this.drawDefaultLeadArrow(E[E.length-2],E[E.length-1],C/2e3,E)}let D=new A,P=!1;this.enableRTC&&(P=Wt.checkAndRebasePositionsOnRTC(E,D));let _=new it().setFromPoints(E),w=new oi(_,Pa);w.renderOrder=2,P?(this.setRTCUserData(w),w.position.x+=D.x,w.position.y+=D.y):Wt.shouldRebasePositionOnRTC(w.position)&&this.setRTCUserData(w),a.add(w)}else return c;return ji.merge(a,!1),a}drawLeader(e,i,n){let s=[];if(!e.vertices){ne.warn("[DxfLoader] Entity is missing vertices:",e.handle);return}if(e.vertices.length<2){ne.warn("leader's vertices number must be greater than 2");return}let a=i.tables.dimStyle.dimStyles[e.dimensionStyle]||this.getDefaultDimensionStyle(i),o=e.vertices;if(e.pathType===1&&(o=new bg(e.vertices).getPoints(50)),e.textWidth){let y=e.textWidth,E=new A(o[o.length-1].x,o[o.length-1].y,o[o.length-1].z);if(e.direction===0){let b=new A(1,0,0).multiplyScalar(y);o.push(b.add(E))}else{let b=new A(-1,0,0).multiplyScalar(y);o.push(b.add(E))}}for(let y=0;y<o.length-1;y++){let E=o[y],b=o[y+1];s.push(E,b)}let l=ps.subVectors(s[0],s[1]).setZ(0).length(),c=e.arrowHeight||a.DIMASZ||2.5,u=e.arrowHeadScale||a.DIMSCALE||1,h=c*u,p=new hr;if(e.arrowFlag===1){let y="";e.arrowHeadBlockHandle?y=e.arrowHeadBlockHandle:a&&a.DIMLDRBLK&&(y=a.DIMLDRBLK);let E=this.getBlockByHandle(i.blocks,y);if(E&&E.entities){a&&(e.colorIndex=a.DIMCLRD||256,e.color=E0(e.colorIndex));for(let b=0;b<E.entities.length;b++){let x=this.drawEntity(E.entities[b],i,e);if(x){let S=new A(s[0].x,s[0].y,s[0].z),D=new A(s[1].x,s[1].y,s[1].z),P=Math.atan2(S.y-D.y,S.x-D.x);x.position.copy(S),x.quaternion.identity(),x.scale.setScalar(h),x.rotateZ(P),x.updateMatrix(),p.add(x)}}}else this.drawDefaultLeadArrow(s[1],s[0],h/l/2,s)}if(s.length===0)return;let d=new A,f=!1;this.enableRTC&&(f=Wt.checkAndRebasePositionsOnRTC(s,d));let m=new it().setFromPoints(s),g=new oi(m,Pa);return g.renderOrder=2,f?(this.setRTCUserData(g),g.position.x+=d.x,g.position.y+=d.y):Wt.shouldRebasePositionOnRTC(g.position)&&this.setRTCUserData(g),p.children.length>0?(p.add(g),ji.merge(p,!1),p):g}drawDefaultLeadArrow(e,i,n,s){let a=n*(e.x-i.x),o=n*(e.y-i.y),l=o,c=-a,u=new A(i.x+a+l/6,i.y+o+c/6,0),h=new A(i.x+a-l/6,i.y+o-c/6,0);s.push(i,u),s.push(i,h),s.push(u,h)}getBlockByHandle(e,i){if(!this.blocksCache){this.blocksCache={};for(let n in e){let s=e[n];this.blocksCache[s.ownerHandle]||(this.blocksCache[s.ownerHandle]=s)}}return this.blocksCache[i]}static transformAngleByOcsMatrix(e,i){let a=ps.set(Math.cos(i)*1,Math.sin(i)*1,0).applyMatrix4(e);return Math.atan2(a.y,a.x)}static getArcAnglesByOcsMatrix(e,i,n){let s=lr.getArcAngleSpanRad(i,n),a=Ri.transformAngleByOcsMatrix(e,i),o=Ri.transformAngleByOcsMatrix(e,n),l;if(lr.areNumbersClose(s,Math.PI)){s=1;let c=Ri.transformAngleByOcsMatrix(e,i+s);l=lr.getArcAngleSpanRad(a,c)}else{if(lr.areNumbersClose(s,Math.PI*2))return[a,a+Math.PI*2];l=lr.getArcAngleSpanRad(a,o)}return lr.areNumbersClose(s,l,1e-8)?[a,o]:[o,a]}drawArc(e,i,n){var x,S,D;if(!e.radius||e.radius<.001){ne.warn(`[DxfLoader] The radius of arc (handle '${e.handle}') is undefined, ignored!`);return}if(!e.radius||e.radius<.001){ne.warn(`[DxfLoader] The radius of arc (handle '${e.handle}') is too small, ignored!`);return}let s=new A(0,0,1);e.extrusionDirectionX!==void 0&&e.extrusionDirectionY!==void 0&&e.extrusionDirectionZ!==void 0&&s.set(e.extrusionDirectionX,e.extrusionDirectionY,e.extrusionDirectionZ);let a=Ri.getOcsMatrix(s),o,l;if(e.type==="CIRCLE")o=e.startAngle||0,l=o+2*Math.PI;else{if(e.startAngle==null||e.endAngle==null||(o=e.startAngle,l=e.endAngle,lr.areNumbersEqual(o,l,.001)))return;if(!lr.areNumbersClose(lr.getArcAngleSpanRad(o,l),Math.PI*2)){let P=Ri.getArcAnglesByOcsMatrix(a,o,l);o=P[0],l=P[1]}}let c=new Eg(0,0,e.radius,o,l,this.angBase!==0),u=1,h=n;h!=null&&h.xScale&&(h!=null&&h.yScale)&&(u=Math.max(Math.abs(h.xScale),Math.abs(h.yScale)));let p=this.getDivision(o,l,e.radius*u),d=c.getPoints(p),f=new A,m=!1;this.enableRTC&&(m=Wt.checkAndRebasePositionsOnRTC(d,f));let g=new it().setFromPoints(d),y=new _r(g,Pa),E=new A;e.center&&(E.x=e.center.x,E.y=e.center.y);let b=new A((x=e.center)==null?void 0:x.x,(S=e.center)==null?void 0:S.y,(D=e.center)==null?void 0:D.z).applyMatrix4(a.invert());return E.x=b.x,E.y=b.y,y.position.copy(E),m?(this.setRTCUserData(y),y.position.x+=f.x,y.position.y+=f.y):Wt.shouldRebasePositionOnRTC(y.position)&&this.setRTCUserData(y),y}addTriangleFacingCamera(e,i,n,s){let a=new A,o=new A;a.subVectors(n,i),o.subVectors(s,i),a.cross(o);let l=new A(i.x,i.y,i.z),c=new A(n.x,n.y,n.z),u=new A(s.x,s.y,s.z);a.z<0?e.push(u,c,l):e.push(l,c,u)}drawSolid(e,i,n){let s=e.points;if(!s||s.length<4)return;if(e.extrusionDirection&&e.extrusionDirection.z){ps.set(0,0,e.extrusionDirection.z);let p=Ri.getOcsMatrix(ps).invert();s.forEach(d=>{let f=ps.set(d.x,d.y,0).applyMatrix4(p);d.x=f.x,d.y=f.y})}let a=[],o=[];this.addTriangleFacingCamera(a,s[0],s[1],s[2]),o.push(0,1,2),this.addTriangleFacingCamera(a,s[1],s[2],s[3]),o.push(3,4,5);let l=new A,c=!1;this.enableRTC&&(c=Wt.checkAndRebasePositionsOnRTC(a,l));let u=new it().setFromPoints(a);u.setIndex(o);let h=new Je(u,vS);return c&&(this.setRTCUserData(h),h.position.x+=l.x,h.position.y+=l.y),h}getDefaultTextStyle(e){return e.tables.style.styles.STANDARD||e.tables.style.styles.Standard||{}}getDefaultDimensionStyle(e){return e.tables.dimStyle.dimStyles.STANDARD||e.tables.dimStyle.dimStyles.Standard||{}}getTextEncoding(e){return e.bigFontFile&&e.bigFontFile.toUpperCase().startsWith("GB")?"gbk":"utf8"}getTextMesh(e,i,n,s,a){if(!e)return;i.textStyle&&(this.statsInfo.unsupportedTextStyles[i.textStyle]||(this.statsInfo.unsupportedTextStyles[i.textStyle]=0),this.statsInfo.unsupportedTextStyles[i.textStyle]++);let o,l=(a?a.style.textHeight:i.textHeight)||0,c=.67,u={_TCH_DIM:1.45};if(i.textStyle&&u[i.textStyle]&&(c=u[i.textStyle]),i.xScale&&(c*=i.xScale),i.textStyle){let p=n.tables.style.styles[i.textStyle];c*=(p==null?void 0:p.xScale)||1,l=l||p.textHeight}let h=0;if(i.width&&(h=i.width/c+2),i.contextData&&i.contextData.textWidth&&i.contextData.textHeight<i.contextData.textWidth&&(h=i.contextData.textWidth),this.font instanceof Xc){let p=this.font.getGraphicData(e,l,l/1.5,l/2,l/8,h,i.drawingDirection===3);if(p.length===0)return;let d=p.map(m=>m.toThreeGeometry()),f=qo(d);f.scale(c,1,1),o=new oi(f,Pa)}else if(this.font instanceof Zg){let p={font:this.font,height:0,size:l||12,curveSegments:3,bevelSegments:3},d=new GA(e,p);o=new Je(d,vS)}return o}transformTextMesh(e,i){let s=new Ot().setFromObject(i).getSize(ps),{halign:a,valign:o}=e,l=e.width||s.x,c=s.y;if(a===void 0&&o===void 0&&e.startPoint||[3,5].includes(a)&&e.startPoint?(i.position.x+=e.startPoint.x,i.position.y+=e.startPoint.y,i.position.z+=e.startPoint.z):e.endPoint&&(i.position.x+=e.endPoint.x,i.position.y+=e.endPoint.y,i.position.z+=e.endPoint.z),a!==3&&a!==5){if(e.rotation){let u=e.rotation*Math.PI/180;i.rotateZ(u)}e.mirrored===2?i.rotateY(Math.PI):e.mirrored===4&&i.rotateX(Math.PI)}switch(a){case 0:break;case 1:i.translateX(-l/2);break;case 2:i.translateX(-l);break;case 3:if(e.startPoint&&e.endPoint){let u=new A(e.startPoint.x,e.startPoint.y,e.startPoint.z),h=new A(e.endPoint.x,e.endPoint.y,e.endPoint.z),p=new A().subVectors(u,h),f=p.length()/l;i.scale.multiplyScalar(f);let m=p.clone().cross(qf),g=p.angleTo(qf);i.rotateZ(m.z>0?Math.PI-g:g-Math.PI),(e.mirrored===2||e.mirrored===4)&&i.rotateX(Math.PI)}break;case 4:i.translateX(-l/2),i.translateY(-c/2);break;case 5:if(e.startPoint&&e.endPoint){let u=new A(e.startPoint.x,e.startPoint.y,e.startPoint.z),h=new A(e.endPoint.x,e.endPoint.y,e.endPoint.z),p=new A().subVectors(u,h),f=p.length()/l;i.scale.setX(f);let m=p.clone().cross(qf),g=p.angleTo(qf);i.rotateZ(m.z>0?Math.PI-g:g-Math.PI),(e.mirrored===2||e.mirrored===4)&&i.rotateX(Math.PI)}break;default:break}switch(o){case 0:break;case 1:break;case 2:i.translateY(-c/2);break;case 3:i.translateY(-c);break;default:break}return i.position.z=0,i}drawText(e,i,n){let s=e.text;if(!s||!this.font)return;let a=i.tables.style.styles[e.textStyle]||this.getDefaultTextStyle(i);s=QA(s,{encoding:this.getTextEncoding(a)}).map(u=>u.text).join("");let l=this.getTextMesh(s,e,i,n);if(!l)return;let c=l.geometry;if(l instanceof Je&&!c.getIndex()){let u=c.getAttribute("position"),h=[];for(let p=0;p<u.count;p+=3)h.push(p,p+1,p+2);c.setIndex(h)}if(c.hasAttribute("uv")&&c.deleteAttribute("uv"),c.hasAttribute("normal")&&c.deleteAttribute("normal"),this.transformTextMesh(e,l),Wt.shouldRebasePositionOnRTC(l.position))this.setRTCUserData(l);else{let u=Wt.caculateGeometryCenter(c);u&&Wt.shouldRebasePositionOnRTC(u)&&this.setRTCUserData(l)}return l}drawAttDef(e,i,n){let s=e.tag||e.text||e.prompt;if(!s||!this.font)return;s=QA(s).map(c=>c.text).join();let o=this.getTextMesh(s,e,i,n);if(!o)return;let l=o.geometry;if(l.hasAttribute("uv")&&l.deleteAttribute("uv"),l.hasAttribute("normal")&&l.deleteAttribute("normal"),this.transformTextMesh(e,o),Wt.shouldRebasePositionOnRTC(o.position))this.setRTCUserData(o);else{let c=Wt.caculateGeometryCenter(l);c&&Wt.shouldRebasePositionOnRTC(c)&&this.setRTCUserData(o)}return o}drawAttrib(e,i,n){let s=e.text;if(!s||!this.font)return;s=QA(s).map(c=>c.text).join();let o=this.getTextMesh(s,e,i,n);if(!o)return;let l=o.geometry;if(l.hasAttribute("uv")&&l.deleteAttribute("uv"),l.hasAttribute("normal")&&l.deleteAttribute("normal"),this.transformTextMesh(e,o),Wt.shouldRebasePositionOnRTC(o.position))this.setRTCUserData(o);else{let c=Wt.caculateGeometryCenter(l);c&&Wt.shouldRebasePositionOnRTC(c)&&this.setRTCUserData(o)}return o}drawPoint(e,i,n){if(!e.position)return;let s=new it,a=[new A(e.position.x,e.position.y,e.position.z)];ps.set(0,0,0);let o=ps,l=!1;this.enableRTC&&(l=Wt.checkAndRebasePositionsOnRTC(a,o)),s.setFromPoints(a);let c=new rn(s,P8);return l&&(this.setRTCUserData(c),c.position.x+=o.x,c.position.y+=o.y),c}drawDimension(e,i){if(!e.block)return;let n=i.blocks[e.block];if(!n||!n.entities)return;let s=i.tables.dimStyle.dimStyles[e.dimStyleName]||this.getDefaultDimensionStyle(i);s&&s.DIMCLRD>0&&(e.colorIndex=s.DIMCLRD,e.color=E0(e.colorIndex));let a=new hr;for(let l=0;l<n.entities.length;l++){let c=this.drawEntity(n.entities[l],i,e);c&&a.add(c)}if(a.children.length===0){a=void 0;let l=e.name||e.block;this.statsInfo.ignoredInserts[l]||(this.statsInfo.ignoredInserts[l]=0),this.statsInfo.ignoredInserts[l]++;return}else{this.blockReferencesCache[e.block]||(this.blockReferencesCache[e.block]={referenceCount:0});let l=this.blockReferencesCache[e.block];l.referenceCount++}a.name=`${e.type}<${n.name}>`,a.userData.entityType=e.type;let o=e==null?void 0:e.insertionPoint;return o&&(a.position.x+=o.x,a.position.y+=o.y),Wt.shouldRebasePositionOnRTC(a.position)&&this.setRTCUserData(a),a}drawInsert(e,i,n=!1){if(!e.block)return;let s=i.blocks[e.block];if(!s.entities)return;e.blockPosition=s.position;let a=new hr;for(let h=0;h<s.entities.length;h++){if(s.entities[h].type==="ATTDEF")continue;let p=this.drawEntity(s.entities[h],i,e,n);p&&a.add(p)}if(a.children.length===0){a=void 0;let h=e.name||e.block;this.statsInfo.ignoredInserts[h]||(this.statsInfo.ignoredInserts[h]=0),this.statsInfo.ignoredInserts[h]++;return}else{this.blockReferencesCache[e.block]||(this.blockReferencesCache[e.block]={referenceCount:0});let h=this.blockReferencesCache[e.block];h.referenceCount++}a.name=`${e.type}<${s.name}>`,a.userData.entityType=e.type,e!=null&&e.blockPosition&&(a.position.x-=e.blockPosition.x,a.position.y-=e.blockPosition.y,a.updateMatrix());let o=ps.set(1,1,1);e.xScale&&(o.x=e.xScale),e.yScale&&(o.y=e.yScale);let l=new Sr;e.rotation&&(l.z=e.rotation*Math.PI/180),SMe.setFromEuler(l,!1);let c=yS.set(0,0,0);e.position&&(c.x=e.position.x,c.y=e.position.y),$c.compose(c,SMe,o),e.extrusionDirection&&e.extrusionDirection.z<0&&$c.premultiply(IMe.identity().makeScale(-1,1,1)),N8.copy(a.matrix),a.applyMatrix4($c),Wt.shouldRebasePositionOnRTC(a.position)&&this.setRTCUserData(a);let u=this.findSpatialFilterByHandle(e.handle,i);if(u){let h=this.drawSpatialFilter(u),p=u;p&&p.clipPolylines&&p.clipPolylines.length>0&&(a.userData.spatialFilterHandle=u.handle,this.cloneMaterialsForSpatialFilter(a),h&&h.applyMatrix4(N8.invert()),ne.debug("[DxfLoader] Spatial filter:",e.associatedSpatialFilter))}return a}drawSpatialFilter(e){let i=e;if(i.threejsObject)return i.threejsObject.clone();let n=e.invertBlockMatrix;$c.set(n[0],n[1],n[2],n[3],n[4],n[5],n[6],n[7],n[8],n[9],n[10],n[11],0,0,0,1);let s=[];e.vertices.forEach(l=>{s.push(new A(l.x,l.y,0))});let a={polyline:[],bConcave:!1,bReversed:!1};if(e.numberOfPointsOnClipBoundary===2)a.polyline=s;else{let l=e.numberOfPointsOnClipBoundary,c=3;if(l<c){ne.warn(`[DxfLoader] Invalid clipBoundary: ${e.handle} !`);return}let u=[],h=-1;for(let f=0;f<l;f++){let m=s[f];for(let g=l-1;g>f;g--){let y=s[g];if(lr.areVector3sEqual(m,y)&&f+1<g-1&&f+1<l-1&&lr.areVector3sEqual(s[f+1],s[g-1])){u.push(m),h=g;break}}if(h>0)break;u.push(m)}if(h>0)for(let f=h+1;f<l;f++)u.push(s[f]);if(u.length<c){ne.warn(`[DxfLoader] Invalid clipBoundary: ${e.handle}!`);return}let p=[],d=[];if(u.forEach(f=>{p.push(new le(f.x,f.y)),d.push([f.x,f.y])}),!Wt.isConvex(p)){ne.warn(`[DxfLoader] Concave polygon is not supported for spatial filter (handle '${e.handle}'), converting to convex polygon!`);let f=(0,_Me.default)(d,1/0);u=[],f.forEach(m=>{u.push(new A(m[0],m[1],0))})}lr.areVector3sEqual(u[0],u[u.length-1])||u.push(u[0]),a.polyline=u,a.bReversed=h>0}let o;return this.enableReleaseData&&(e.vertices=[],e.matrix=[],e.invertBlockMatrix=[]),i.localMatrix=$c.clone(),i.clipPolylines=[],i.clipPolylines.push(a),o}drawLayout(e,i,n,s,a,o){if(!e.entities)return;let l;if(n.layoutName!==Ri.MODEL_LAYOUT_NAME){let p=n;p.directAssociatedLeafObjectSet||(p.directAssociatedLeafObjectSet=new Set),l=p.directAssociatedLeafObjectSet}let c=new hr;Qr.setSharedVariablesOfObject(c);for(let p=0;p<e.entities.length;p++){let d=e.entities[p];this.addViewport(d,o);let f=this.drawEntity(d,i);f&&(this.enableMerge&&ji.merge(f,!1),c.add(f),f.traverse(m=>{if(m.geometry){let g=m.userData.layerName;this.getLayerVisible(i,g)===!1&&(m.visible=!1);let y=a[g];y||(y=[],a[g]=y),y.push(m),l&&l.add(m)}}))}if(c.children.length===0)return;c.userData.layerName=e.layer;let u=n.layoutName,h=s.children.find(p=>p.name===u);h||(h=new hr,Qr.setSharedVariablesOfObject(h),h.name=u,h.userData.isLayoutLevelObject=!0,s.add(h)),h.add(c),e.position&&c.position.set(e.position.x,e.position.y,e.position.z||0),c.matrixAutoUpdate=!1,c.updateMatrix()}convertEdgeToPoints(e){let i=[];switch(e.type){case 1:{let s=e;i.push(new le(s.startPoint.x,s.startPoint.y)),i.push(new le(s.endPoint.x,s.endPoint.y));break}case 2:{let s=e,a=s.startAngle*wr.DEG2RAD,o=s.endAngle*wr.DEG2RAD;s.bCounterclockwise||(a=Math.PI*2-a,o=Math.PI*2-o);let l=new Eg(s.center.x,s.center.y,s.radius,a,o,!s.bCounterclockwise),c=this.getDivision(a,o,s.radius);i.push(...l.getPoints(c));break}case 3:{let s=e,a=Math.sqrt(Math.pow(s.majorAxisEndPoint.x,2)+Math.pow(s.majorAxisEndPoint.y,2)),o=a*s.minorRatio,l=Math.atan2(s.majorAxisEndPoint.y,s.majorAxisEndPoint.x),c=s.startAngle*wr.DEG2RAD,u=s.endAngle*wr.DEG2RAD;s.bCounterclockwise||(c=Math.PI*2-c,u=Math.PI*2-u);let h=new xp(s.center.x,s.center.y,a,o,c,u,!s.bCounterclockwise,l),p=this.getDivision(c,u,Math.max(a,o));i.push(...h.getPoints(p));break}case 4:{let s=e;i.push(...s.controlPoints);break}case 0:{let s=e;i.push(...L8(s.points,s.isClosed));break}}return i}drawHatch(e,i,n){var y;let s=e;if(s.boundaryPaths.length==0)return;let a=[],o=[],l=[];if(s.boundaryPaths.forEach((E,b)=>{if(this.IsfilteredByPathTypeFlag(E.pathTypeFlag)){let P="[DxfLoader] The %d path type flag is filtered at the %dth boundrayPath (hatch handle '%s')";ne.info(P,E.pathTypeFlag,b,s.handle);return}let x=E.edges;if(x.length===0)return;let S=[];for(let P=0;P<x.length;P++){let _=this.convertEdgeToPoints(x[P]);if(_.length<2){let w="[DxfLoader] The %dth edge of the %dth boundaryPath (hatch handle '%s') has less than 2 points, ignored!";ne.warn(w,P,b,s.handle);continue}S.push(..._)}if(S.length<3){let P="[DxfLoader] The %dth boundaryPath (hatch handle '%s') has less than 3 points, ignored!";ne.warn(P,b,s.handle);return}if(E.pathTypeFlag>31&&!(_=>{for(let w=1;w<_.length;++w){let F=_[w-1].endPoint,X=_[w].startPoint;if(!F||!X||!lr.areVector2sEqual(F,X))return!1}return!0})(E.edges)){let _="[DxfLoader] The %dth boundaryPath (hatch handle '%s') has unknown path, ignored!";ne.warn(_,b,s.handle);return}lr.areVector2sEqual(S[0],S[S.length-1])||S.push(S[0]);let D=S.map(P=>new le(St.roundNumber(P.x,7),St.roundNumber(P.y,7)));if((D==null?void 0:D.length)>0){a.push(D);let P=new Ds().setFromPoints(D);o.push(P);let _=P.getSize(TS),w=_.x*_.y;l.push({area:w,index:a.length-1})}}),a.length===0)return;let c=new le,u=this.checkAndRebasePolygonsOnRTC(a,c);l.sort((E,b)=>E.area-b.area);let h=[];l.forEach(E=>{h.push(E.index)});let p=this.buildContainHierarchyTree(a,o,h),d=[];this.buildHatchGeometry(a,p,d);let f;if(d.length>0&&(f=qo(d)),!f||!f.getIndex()||((y=f.getIndex())==null?void 0:y.count)===0){ne.warn("[DxfLoader] Failed to convert hatch boundaries!");return}let m=new Je(f,vS);m.layers.set(10),this.setHatchMaterial(m,s,i,c,n);let g=m;return u?(this.setRTCUserData(m),g.position.x+=c.x,g.position.y+=c.y):Wt.shouldRebasePositionOnRTC(g.position)&&this.setRTCUserData(g),g}drawOle2frame(e,i){let{leftUpX:n,leftUpY:s,rightDownX:a,rightDownY:o}=e;if(!n||!s||!a||!o)return;let l=[new le(n,s),new le(n,o),new le(a,o),new le(a,s),new le(n,s)],c=new A,u=!1;this.enableRTC&&(u=Wt.checkAndRebasePositionsOnRTC(l,c));let h=new it().setFromPoints(l),p=this.getLineBasicMaterial(16777215),d=new _r(h,p);u&&(this.setRTCUserData(d),d.position.x+=c.x,d.position.y+=c.y);let f=new hr;f.add(d);let m,g=i.objects.DICTIONARY;for(let E of g){let b=E;for(let x in b.entries)if(b.entries[x]===e.handle){m=x;break}}let y;if(m)if(this.meshTextureMaterials[m])y=this.meshTextureMaterials[m];else for(let E=0;E<i.objects.XRECORD.length;E++){let b=i.objects.XRECORD[E];if(b.handle===m){let x=b.binaryData,D="data:image/jpg;base64,"+St.hexToBase64(x),P=new or({transparent:!0,map:new Es(this.manager).load(D)});this.meshTextureMaterials[m]=P,y=P;break}}if(y){let E=new Ds().setFromPoints(l),b=E.getSize(TS),x=new ts(b.x,b.y),S=new Je(x,y),D=E.getCenter(TS);S.position.set(D.x,D.y,0),u&&(this.setRTCUserData(S),S.position.x+=c.x,S.position.y+=c.y),f.add(S)}return f.children.length>1?f:d}static getOcsMatrix(e){let i=qf,n=O8,s=aO,a=new A(0,1,0),o=new A(0,0,1);return lr.areVectorsClose(e,o)?$c.identity():(s=e.clone().normalize(),lr.areVectorsClose(s,o)||(Math.abs(s.x)<1/64&&Math.abs(s.y)<1/64?i=a.cross(s).normalize():i=o.cross(s).normalize(),n=s.clone().cross(i).normalize()),$c.set(i.x,i.y,i.z,0,n.x,n.y,n.z,0,s.x,s.y,s.z,0,0,0,0,1))}static getDcs2WcsMatrix(e,i){let n;n2t(e)?n=e.viewDirectionFromTarget:n=e.viewDirection;let s=new A(n.x,n.y,n.z),a=new A(e.viewTarget.x,e.viewTarget.y,e.viewTarget.z),o=e.viewTwistAngle,l,c,u;u=s.clone().normalize(),l=aO.clone().cross(s),l.length()>0?(l.normalize(),c=u.clone().cross(l)):u.z<0?(l=qf.clone().negate(),c=O8,u=aO.clone().negate()):(l=qf,c=O8,u=aO);let h=new Ue,p=$c.identity();return p.makeBasis(l,c,u),h.premultiply(p),h.premultiply($c.identity().compose(a.clone(),new Or().setFromAxisAngle(new A(0,0,1),wr.degToRad(i?o:-o)),new A(1,1,1))),h}getViewportMsToPsMatrix(e){let i=new A(e.centerPoint_dcs.x,e.centerPoint_dcs.y,0),n=new A(e.centerPoint.x,e.centerPoint.y,e.centerPoint.z),s=e.viewHeight,a=e.height_paperSpace,o=s/a,l=Ri.getDcs2WcsMatrix(e,this.angDir),c=new Ue;c.setPosition(xMe.clone().sub(n));let u=IMe.identity();u.scale(ps.set(o,o,o));let h=N8.identity().setPosition(xMe.clone().sub(n));u.premultiply(h.clone().invert()).multiply(h),c.multiply(u);let p=$c.identity();p.setPosition(i),l.multiply(p);let d=$c.identity();return c.invert().multiply(d).multiply(l.invert())}drawViewport(e,i,n){let s=e;if(s.viewportId=="1"){e.psBBox=new Ot,e.msToPsMatrix=new Ue;return}let a=[],o=s.centerPoint,l=s.width_paperSpace/2,c=s.height_paperSpace/2;a.push(new A(o.x-l,o.y-c,0)),a.push(new A(o.x-l,o.y+c,0)),a.push(new A(o.x+l,o.y+c,0)),a.push(new A(o.x+l,o.y-c,0)),a.push(a[0]),e.psBBox=new Ot(a[0],a[2]),e.msToPsMatrix=this.getViewportMsToPsMatrix(s);let u=new A,h=!1;this.enableRTC&&(h=Wt.checkAndRebasePositionsOnRTC(a,u));let p=new it().setFromPoints(a),d=new _r(p,Pa);h&&(this.setRTCUserData(d),d.position.x+=u.x,d.position.y+=u.y),d.userData.entityType=e.type;let f=new hr;f.add(d);let m=e.psBBox.clone();m.applyMatrix4(e.msToPsMatrix.clone().invert()),m.min.z=0,m.max.z=0;let g=[];g.push(m.min),g.push(new A(m.min.x,m.max.y,0)),g.push(m.max),g.push(new A(m.max.x,m.min.y,0)),g.push(g[0]);let y=new A,E=!1;this.enableRTC&&(E=Wt.checkAndRebasePositionsOnRTC(g,y));let b=new it().setFromPoints(g),x=new _r(b,Pa);return E&&(this.setRTCUserData(x),x.position.x+=y.x,x.position.y+=y.y),x.userData.entityType=e.type,x.userData.inPaperSpace=!0,f.add(x),d}getColor(e,i,n){var a,o,l,c,u,h;if(this.compareContext){let p=e.compareChangeType;return p==="Added"?Wn.ENTITY_COLOR_ADDED:p==="Removed"?Wn.ENTITY_COLOR_REMOVED:p==="Modified"?this.compareContext.isTheFirstFile?Wn.ENTITY_COLOR_REMOVED:Wn.ENTITY_COLOR_ADDED:Wn.ENTITY_COLOR_NO_CHANGE}let s=e;if(s&&s.isGradientColor){let p=s.gradientColors;if(p&&p.length>=2){if(p[0]!==p[1]){let d=`[DxfLoader] Gradient colors are not supported for hatch '${e.handle}', will use the first color!`;ne.warn(d)}return p[0]}}if(e.isTrueColor||e.colorIndex>0&&e.colorIndex<256)return e.color;if(e.colorIndex===0)return n?this.getColor(n,i):(o=(a=i.tables)==null?void 0:a.layer)==null?void 0:o.layers[0].color;if(e.colorIndex===256){let p=(c=(l=i.tables)==null?void 0:l.layer)==null?void 0:c.layers,d=p&&p[e.layer],f=p&&n&&p[n.layer],m=Yf;return d&&d.name!=="0"?m=d.color:f?m=f.color:d?m=d.color:m=(h=(u=i.tables)==null?void 0:u.layer)==null?void 0:h.layers[0].color,m}return ne.warn("[DxfLoader] Unknown colorIndex"),Yf}getLineType(e,i,n){var o,l;if(n&&n.type==="DIMENSION")return this.getLineType(n,i);if(e.lineType!==VA&&e.lineType!==g8)return e.lineType;if(e.lineType===g8)return n?this.getLineType(n,i):e.lineType;let s=(l=(o=i.tables)==null?void 0:o.layer)==null?void 0:l.layers,a=i2t;if(e.layer!=="0"){let c=s&&s[e.layer];if(c)return c.lineType}else if(n){let c=s&&s[n.layer];if(c)return c.lineType}return a}getLayerName(e,i,n){var c,u;let s=(u=(c=i.tables)==null?void 0:c.layer)==null?void 0:u.layers,a=s&&s[e.layer],o=s&&n&&s[n.layer],l=a.name;return a&&a.name==="0"&&o&&(l=o.name),l||"0"}setMaterial(e,i,n,s){let a=e;if(!a.geometry||(this.setRenderOrderByObjectType(e),i.type==="OLE2FRAME"))return;if(i.type==="MTEXT"){e.renderOrder=5;return}if(i.type==="HATCH"){TS.set(0,0),this.setHatchMaterial(e,i,n,TS,s);return}let o,l=this.getColor(i,n,s);if(i.type==="LWPOLYLINE"&&(a.isMesh?(o=this.getMeshBasicMaterial(l),e.renderOrder=1):e.userData.isOutline&&(o=this.getLineBasicMaterial(l),e.renderOrder=3),o)){a.material=o;return}if(i.type==="SOLID")o=this.getMeshBasicMaterial(l);else if(i.type==="TEXT"||i.type==="ATTDEF"||i.type==="ATTRIB")o=this.getLineBasicMaterial(l),e.renderOrder=5;else if(i.type==="LEADER"||i.type==="MULTILEADER"||i.type==="VIEWPORT")o=this.getLineBasicMaterial(l);else if(i.type==="POINT")o=this.getPointsMaterial(l);else{if(e.material instanceof Vn){o=this.getPointsMaterial(l),a.material=o;return}let c=n.tables.lineType.lineTypes[this.getLineType(i,n,s)],u=i.lineTypeScale||1;c&&c.pattern&&c.pattern.length!==0?(o=this.getLineShaderMaterial(c,l,u),e.renderOrder=3):o=this.getLineBasicMaterial(l)}a.material=o}setHatchMaterial(e,i,n,s,a){let o=e;if(!o.geometry)return;let l=this.getColor(i,n,a);if(o.isLine){o.material=this.getLineBasicMaterial(l);return}let c=-1,u;if(i.solidFill)u=this.getMeshBasicMaterial(l);else{if(o.material instanceof Yt){u=o.material;let h=new Ve(l);o.material.uniforms.u_color.value.equals(h)||(u=o.material.clone(),this.updateMaterialUniforms(u),u.uniforms.u_color.value.set(l))}else u=this.getHatchShaderMaterial(i,l,s);c=0}u||(u=this.getMeshBasicMaterial(l),c=-1),o.material=u,o.renderOrder=c}setRenderOrderByObjectType(e){let i=e,n=0;i.isMesh?n=-1:i.isLine?n=2:i.isPoints&&(n=4),e.renderOrder=n}getPointsMaterial(e){return this.pointsMaterials[e]||(this.pointsMaterials[e]=new Vn({size:.2,color:e})),this.pointsMaterials[e]}getLineBasicMaterial(e){return this.lineBasicMaterials[e]||(this.lineBasicMaterials[e]=new Tr({color:e})),this.lineBasicMaterials[e]}getLineShaderMaterial(e,i,n){let s=`${e.name}_${i}_${n}`;if(!this.lineShaderMaterials[s]){let a=this.getLineTypeScales(),o=a.ltScale*a.celtScale*n;this.lineShaderMaterials[s]=KA.createLineShaderMaterial(e.pattern,i,o,Ri.viewportScaleUniform,Ri.cameraZoomUniform)}return this.lineShaderMaterials[s]}getMeshBasicMaterial(e){return this.meshBasicMaterials[e]||(this.meshBasicMaterials[e]=new or({color:e})),this.meshBasicMaterials[e]}getHatchShaderMaterial(e,i,n){if(!e.patternLines||e.patternLines.length<1)return;let s=this.findMatchedHatchShaderMaterial(e,i);if(s)return s;let a=.005,o=.05,l=2;e.patternLines.forEach(d=>{l=Math.max(d.dashPattern.length,l)});let c=0,u=[],h=new le;for(let d of e.patternLines){let f=new le(d.origin.x,d.origin.y).sub(n).rotateAround(h,-wr.degToRad(e.patternAngle)),m=new le(d.delta.x,d.delta.y).rotateAround(h,-wr.degToRad(d.angle));if(m.y===0){ne.warn("[DxfLoader] delta.y is equal to zero !");return}let g=d.dashPattern.length,y=!0,E=0;for(let _=0;_<g;++_){let w=d.dashPattern[_];w>0&&(y=!1),E+=Math.abs(w)}let b=y?o:a,x=[],S=[],D=0;S[0]=D;for(let _=0;_<g;++_)x[_]=d.dashPattern[_],x[_]===0&&(x[_]=b*E),D+=Math.abs(x[_]),S[_+1]=D;for(let _=g;_<l;++_)x[_]=0;for(let _=S.length;_<l+1;++_)S[_]=D;let P={origin:f,delta:m,angle:d.angle-e.patternAngle,pattern:x,patternSum:S,patternLength:D};if(c+=4,c+=l,c+=l+1,c>Ri.maxFragmentUniforms){ne.warn("[DxfLoader] There will be warning in fragment shader when number of uniforms exceeds 1024, so extra hatch line patterns are ignored here!");break}u.push(P)}let p=fMe(u,e.patternAngle,Ri.cameraZoomUniform,new Ve(i));return p.defines={MAX_PATTERN_SEGMENT_COUNT:l},this.hatchShaderMaterials.push({patternLines:e.patternLines,patternAngle:e.patternAngle,color:i,material:p}),p}getDivision(e,i,n){let s=Math.round(5e4/this.entityCount);s=Math.max(s,2),s=Math.min(s,10);let a=s*5,l=s*2;if(this.averageCurveSize){let h=Math.pow(n/this.averageCurveSize,.5);l*=h,l=Math.max(l,s),l=Math.min(l,a)}let c=i-e;c<0&&(c+=Math.PI*2),l=Math.ceil(l*(c/Math.PI));let u=8;return c<.087?u=2:c<.174?u=3:c<.52?u=4:c<1.57?u=5:c<3.14?u=6:c<4.71&&(u=7),l=Math.max(l,u),this.averageCurveSize=(this.averageCurveSize*this.curveCount+n)/(this.curveCount+1),this.curveCount++,Math.max(l,12)}getBSplineInterpolationsPerSplineSegment(e,i){let n=1;this.averageCurveSize&&(n=Math.pow(i/this.averageCurveSize,.5),n=Math.max(n,.5),n=Math.min(n,2)),this.averageCurveSize=(this.averageCurveSize*this.curveCount+i)/(this.curveCount+1),this.curveCount++;let s=e*2*n;if(e>20){let a=Math.log10(e);s/=a}return s}getSimplifyTolerance(){return .03}setDxfDataToIndexedDb(e,i){return ot(this,null,function*(){let n={dxfDataId:e,dxf:i};return new Promise((s,a)=>{ZT.instance().add(n,()=>{ne.info(`[DxfLoader] Saved '${e}' to indexedDb`),s()},o=>{a(o)})})})}getDxfDataFromIndexedDb(e){return ot(this,null,function*(){return new Promise((i,n)=>{ZT.instance().query(e,s=>{s&&s.length>0&&i(s[0].dxf),i(void 0)},()=>n())})})}buildContainHierarchyTree(e,i,n){var l;let s=new Map,a=n.length;for(let c=0;c<a;c++)s.set(n[c],{index:n[c],children:[]});let o={index:-1,children:[]};for(let c=0;c<a;c++){let u=n[c],h=e[u],p=i[u],d=c+1;for(;d<a;d++){let f=n[d],m=e[f];if(i[f].containsBox(p)&&Wt.isPointInPolygon(h[St.generateRandomInt(0,h.length-1)],m)){(l=s.get(f))==null||l.children.push(s.get(u));break}}d===a&&o.children.push(s.get(u))}return o}buildHatchGeometry(e,i,n){if(i.children.length===0)return;let s=[],a=new Map;i.children.forEach(c=>{c.children.length===0?s.push(c.index):a.set(c.index,c.children.map(u=>u.index))});let o=c=>{try{let u=new _p(c);u.hasAttribute("uv")&&u.deleteAttribute("uv"),u.hasAttribute("normal")&&u.deleteAttribute("normal"),n.push(u)}catch(u){ne.warn(`[DxfLoader] triangulate shape error: ${c.getPoints().map(h=>h.toArray()).toString()}`)}};s.forEach(c=>{let u=e[c];if(u.length===0)return;let h=new Ja(u);o(h)});let l=c=>c.map(u=>u.toArray());for(let c of a){let u=new Ja(e[c[0]]),h={regions:[],inverted:!1},p=this.findIntersectHole(e,c[1]);p.forEach(f=>{let m={regions:[],inverted:!1};try{f.forEach((g,y)=>{if($l.epsilon(lr.getVector2RelativeEps(e[g][0]),1e-6),y===0)m=$l.segments({regions:[l(e[g])],inverted:!1});else{let E=$l.segments({regions:[l(e[g])],inverted:!1}),b=$l.combine(m,E);h=$l.polygon($l.selectUnion(b)),h.regions.length>0?h.regions.forEach(x=>{if(x.length===0)return;let S=x.map(D=>new le(D[0],D[1]));u.holes.push(new ku(S))}):ne.warn("[DxfLoader] mergedHoles.regions is empty")}})}catch(g){ne.warn(`[DxfLoader] polybooljs has error: ${g}, epsilon is ${$l.epsilon()}`)}});let d=p.flat(2);for(let f=0;f<c[1].length;f++){let m=c[1][f];d.includes(m)||u.holes.push(new ku(e[m]))}o(u)}i.children.forEach(c=>{c.children.forEach(u=>{this.buildHatchGeometry(e,u,n)})})}findIntersectHole(e,i){let n=i.length,s=[];for(let a=0;a<n;a++){let o=e[i[a]],l=!1,c=[];for(let u=a+1;u<n;u++){let h=e[i[u]];Wt.arePolygonsIntersect(o,h)&&(l=!0,c.push(i[u]))}l&&(c.push(i[a]),s.push(c))}return s}checkAndRebasePolygonsOnRTC(e,i){if(!this.enableRTC||e.length===0)return!1;let n=0;e.forEach(a=>{a.forEach(o=>{i.add(o),n++})}),i.divideScalar(n);let s=!1;if(this.enableRTC&&Wt.shouldRebasePositionOnRTC(i)){s=!0;for(let a=0;a<e.length;a++){let o=e[a];for(let l=0;l<o.length;l++){let c=o[l].x-i.x,u=o[l].y-i.y;o[l]=new le(c,u)}}}else i.set(0,0);return s}setRTCUserData(e){e.userData.relativeToCenter=!0,this.statsInfo.rebasedEntityCount++}IsfilteredByPathTypeFlag(e){return e<0}findSpatialFilterByHandle(e,i){let n=i.objects.DICTIONARY;if(!this.dictionaryOwnerHandleAndSpatialFilterHandlesCache){this.dictionaryOwnerHandleAndSpatialFilterHandlesCache={};for(let a of n){let o=a,l="";for(let c in o.entries)if(o.entries[c]==="ACAD_FILTER"){l=c;break}l&&(this.dictionaryOwnerHandleAndSpatialFilterHandlesCache[a.ownerHandle]&&ne.warn("[DxfLoader] Why this.dictionaryObjectsCache[obj.ownerHandle] already exist?",a.ownerHandle),this.dictionaryOwnerHandleAndSpatialFilterHandlesCache[a.ownerHandle]=l)}}let s=this.dictionaryOwnerHandleAndSpatialFilterHandlesCache[e];if(s){if(!this.spatialFiltersCache){this.spatialFiltersCache={};let a=i.objects.SPATIAL_FILTER||[];for(let o of a){let l=o;l.numberOfPointsOnClipBoundary<2||(this.spatialFiltersCache[l.ownerHandle]&&ne.warn("[DxfLoader] Why this.spatialFiltersCache[spatialFilterObj.ownerHandle] already exist?",s),this.spatialFiltersCache[l.ownerHandle]=l)}}return this.spatialFiltersCache[s]}}initRenderOrderInfo(e){let i=new Set,n=e.objects.DICTIONARY;for(let a of n){let o=a;Object.keys(o.entries).forEach(l=>{o.entries[l]&&o.entries[l]==="ACAD_SORTENTS"&&i.add(l)})}if(i.size===0)return;let s=e.objects.SORTENTSTABLE;if(s)for(let a=0;a<s.length;++a){let o=s[a];if(i.has(o.handle)){for(let l=0;l<o.sortEntsObject.entityHandles.length;++l){let c=o.sortEntsObject.entityHandles[l];c.length===2&&!this.entityHandlesWithRenderOrder[c[0]]?this.entityHandlesWithRenderOrder[c[0]]=c[1]:ne.warn(`[DxfLoader] Failed to handle sortEntsTable: ${o.handle}.`)}break}}}findMatchedHatchShaderMaterial(e,i){let n=e.patternLines;if(!n||n.length<1)return;let s=(u,h)=>Math.abs(u-h)<1e-5,a=(u,h)=>{if(u.length!==h.length)return!1;for(let p=0;p<u.length;++p)if(!s(u[p],h[p]))return!1;return!0},o=(u,h)=>s(u.angle,h.angle)&&s(u.delta.x,h.delta.x)&&s(u.delta.y,h.delta.y)&&s(u.origin.x,h.origin.x)&&s(u.origin.y,h.origin.y)&&a(u.dashPattern,h.dashPattern),l=(u,h)=>{if(u.length!==h.length)return!1;for(let p=0;p<u.length;++p)if(!o(u[p],h[p]))return!1;return!0},c=this.hatchShaderMaterials.find(u=>u.color===i&&u.patternAngle===e.patternAngle&&l(u.patternLines,n));return c==null?void 0:c.material}getLayout(e,i){if(!this.blockRecordsCache){this.blockRecordsCache={};let a=this.blockRecordsCache,o=e.tables.blockRecord.blockRecords;Object.values(o).forEach(l=>{a[l.handle]=l.layoutHandle})}let n=this.blockRecordsCache[i.ownerHandle];if(n){let o=e.objects.LAYOUT.find(l=>l.handle===n);if(o)return o}if(!this.entitiesCache){this.entitiesCache={};let a=this.entitiesCache;Object.values(e.entities).forEach(o=>{a[o.handle]=o})}let s=this.entitiesCache[i.ownerHandle];return s?this.getLayout(e,s):(ne.warn("[DxfLoader] Failed to find layout name for entity:",i),e.objects.LAYOUT.find(a=>a.layoutName===Ri.MODEL_LAYOUT_NAME))}getLayerVisible(e,i){var s,a,o;let n=(a=(s=e.tables)==null?void 0:s.layer)==null?void 0:a.layers;return n&&((o=n[i])==null?void 0:o.visible)}getLayerFrozen(e,i){var s,a,o;let n=(a=(s=e.tables)==null?void 0:s.layer)==null?void 0:a.layers;return n&&((o=n[i.layer])==null?void 0:o.frozen)}updateMaterialUniforms(e){e instanceof Yt&&(e.uniforms.u_cameraZoom&&(e.uniforms.u_cameraZoom=Ri.cameraZoomUniform),e.uniforms.u_viewportScale&&(e.uniforms.u_viewportScale=Ri.viewportScaleUniform))}cloneMaterialsForSpatialFilter(e){let i=new Map,n=s=>{let a;return Array.isArray(s)?(a=[],s.forEach(o=>{if(i.has(o.id))a.push(i.get(o.id));else{let l=o.clone();this.updateMaterialUniforms(l),i.set(o.id,l),a.push(l)}})):s&&(i.has(s.id)?a=i.get(s.id):(a=s.clone(),this.updateMaterialUniforms(a),i.set(s.id,a))),a};e.traverse(s=>{s.material&&(s.material=n(s.material))})}getLineTypeScales(){let e={ltScale:1,celtScale:1};return this.header&&(e.ltScale=this.header.$LTSCALE||1,e.celtScale=this.header.$CELTSCALE||1),e}static getDxfUnits(e){switch(e||0){case 0:return"Unitless";case 1:return"Inches";case 2:return"Feet";case 4:return"Millimeters";case 5:return"Centimeters";case 6:return"Meters";default:ne.warn(`[DxfLoader] Unsupported $INSUNITS '${e}'`);break}return"Unitless"}static computeLineDistance(e){let i=e.isLineSegments===!0,n=e.geometry,s=e.matrixWorld;if(n.index&&(ne.debug(`[DxfLoader] Line with id '${e.id}' contains index buffer, going to convert it to non-indexed.`),n=Wt.convertGeometryWithIndexedToNonIndexed(n)),n.index===null){let a=n.attributes.position;if(!a||a.count===0)return;let o=[];if(i)for(let l=0,c=a.count;l<c;l+=2)ps.fromBufferAttribute(a,l).applyMatrix4(s),yS.fromBufferAttribute(a,l+1).applyMatrix4(s),o[l]=l===0?0:o[l-1],o[l+1]=o[l]+ps.distanceTo(yS);else{o[0]=0;for(let l=1,c=a.count;l<c;l++)ps.fromBufferAttribute(a,l-1).applyMatrix4(s),yS.fromBufferAttribute(a,l).applyMatrix4(s),o[l]=o[l-1],o[l]+=ps.distanceTo(yS)}n.setAttribute("lineDistance",new ct(o,1))}else ne.warn("[DxfLoader] computeLineDistances only possible with non-indexed BufferGeometry.")}static computeLineDistances(e){let i=Date.now();e.traverse(n=>{let s=n;s.isLine&&s.material instanceof Yt&&Ri.computeLineDistance(s)}),ne.debug(`[DxfLoader] Computed line distances in ${(Date.now()-i)/1e3}s`)}static merge(e){let i={};e.objects.LAYOUT.forEach(p=>{var f;let d=p;i[d.layoutName]=d,(f=d.directAssociatedLeafObjectSet)==null||f.clear()});let n=Date.now(),s={},a={},o=15e3,l=0,c=0,u=()=>{let p=Date.now();for(let d in s){let f=s[d];Ri.removeEmptyObjectsFromRemovingMarkedObjects(f.children,f.object),f.children=[]}l=0,c+=Date.now()-p};for(let p in e.layersAndThreejsObjects){let d=e.layersAndThreejsObjects[p];if(d.length<=1)continue;let f=Date.now(),m={};for(let y of d){let E,b=y;for(;b;){if(b.userData.isLayoutLevelObject){E=b;break}b=b.parent}if(!E)continue;let x=E.name;m[x]||(m[x]={object:E,children:[]}),m[x].children.push(y)}let g=[];for(let y in m){let E;if(y!==Ri.MODEL_LAYOUT_NAME){let _=i[y];_.directAssociatedLeafObjectSet||(_.directAssociatedLeafObjectSet=new Set),E=_.directAssociatedLeafObjectSet}let b=m[y],x=ji.deepMerge(b.children,b.object,!1,!1,!0),S=x.added,D=x.removed;s[y]||(s[y]={object:b.object,children:[]}),a[y]||(a[y]={object:b.object,children:[]});let P=D.length>o;if(P){let _=Date.now();Ri.removeEmptyObjectsFromRemovingMarkedObjects(D,b.object),c+=Date.now()-_}else l+=D.length;if(D.length===b.children.length)P||D.forEach(_=>{s[y].children.push(_)});else{let _=D;D.length>=100&&(_=new Set(D));let w=F=>Array.isArray(_)?_.indexOf(F)>=0:_.has(F);for(let F=0;F<b.children.length;F++){let X=b.children[F];w(X)?P||s[y].children.push(X):(g.push(X),E&&E.add(X))}}for(let _=0;_<S.length;_++){let w=S[_];Qr.setSharedVariablesOfObject(w),g.push(w),a[y].children.push(w),E&&E.add(w)}l>o&&u()}e.layersAndThreejsObjects[p]=g,ne.debug(`[DxfLoader] Merged layer '${p}' in ${(Date.now()-f)/1e3}s`)}l>0&&u();for(let p in a){let d=a[p];e.threejsObject.children.find(m=>m.name===p)||e.threejsObject.add(d.object),d.children.forEach(m=>{d.object.add(m),m.updateWorldMatrix(!1,!1)}),d.children=[]}ne.debug(`[DxfLoader] MergeUtils.deepMerge costed ${ji.mergeInfo.elapsedTime/1e3}s`),ne.debug(`[DxfLoader] The remove operation of deep merge costed ${c/1e3}s`),ne.debug(`[DxfLoader] Deep merge totally costed ${(Date.now()-n)/1e3}s`);let h=ji.mergeInfo;ne.debug(`[DxfLoader] Totally merged ${h.removedObjects} objects to ${h.mergedMeshes} meshes, ${h.mergedLines} lines, ${h.mergedPoints} points, ${h.mergedUnknownTypeObjects?h.mergedUnknownTypeObjects+" unknown type,":""} `)}static statLayoutAndLayerObjects(e){let i=new WeakSet,n=0;for(let o in e.layersAndThreejsObjects)e.layersAndThreejsObjects[o].forEach(c=>{c.geometry&&(n++,i.has(c)?console.warn(c):i.add(c))});let s=new WeakSet,a=0;if(e.threejsObject.traverse(o=>{o.geometry&&(a++,s.has(o)?console.warn(o):s.add(o))}),n!=a)for(let o in e.layersAndThreejsObjects)e.layersAndThreejsObjects[o].forEach(c=>{c.geometry&&(s.has(c)||console.warn(c))});ne.info(`[DxfLoader] The count of layer objects is ${n},The count of layout objects is ${a} `)}static removeEmptyObjectsFromRemovingMarkedObjects(e,i){if(e.length===0)return;let n=s=>{let a=[];for(let o of s){o.userData.validCount=0;let l=o.parent;l&&l!==i&&(l.userData.validCount===void 0&&(l.userData.validCount=l.children.length),--l.userData.validCount===0&&a.push(l))}a.length>0&&n(a)};n(e),this.removeEmptyObjectsFromMark(i)}static removeEmptyObjectsFromMark(e){if(e.userData.validCount===0||Qr.isEmptyObject(e))return e.removeFromParent(),!0;for(let i=0;i<e.children.length;)this.removeEmptyObjectsFromMark(e.children[i])||++i;return!1}},xr=Ri;xr.MODEL_LAYOUT_NAME="Model",xr.cameraZoomUniform={value:1},xr.viewportScaleUniform={value:1},xr.transformMatrixUniform={value:new Ue},xr.resolutionUniform={value:new le},xr.maxFragmentUniforms=1024,xr.abortJobs=!1;var _0=class{constructor(r){this.buffer=r,this.u8=new Uint8Array(r)}getBit(r){var e=this.u8[r>>3],i=r&7;return(e&128>>i)>>7-i}setBit(r,e){var i=r>>3,n=this.u8[i],s=r&7;e?this.u8[i]=n|128>>s:this.u8[i]=n&~(128>>s)}getInt12(r){var e=r/8|0,i=this.u8[e],n=this.u8[e+1],s=this.u8[e+2],a=r%8,o=8-a,l=Math.min(12-o,8),c=Math.max(12-o-l,0),u=~(255<<o),h=255<<8-l,p=255<<8-c;return i&=u,n&=h,s&=p,((i<<16)+(n<<8)+s>>12-a)-2048}setInt12(r,e){e+=2048;var i=r/8|0,n=r%8,s=e<<12-n,a=(s&16711680)>>16,o=(s&65280)>>8,l=s&255,c=8-n,u=Math.min(12-c,8),h=Math.max(12-c-u,0),p=255<<c;this.u8[i]=(this.u8[i]&p)+a;var d=~(255<<8-u);this.u8[i+1]=(this.u8[i+1]&d)+o;var f=~(255<<8-h);this.u8[i+2]=(this.u8[i+2]&f)+l}getInt6(r){var e=r/8|0,i=this.u8[e],n=this.u8[e+1],s=r%8,a=8-s,o=Math.max(6-a,0),l=~((255<<a)+(255>>8-(2-s))),c=255<<8-o;return i&=l,n&=c,((i<<8)+n>>10-s)-32}setInt6(r,e){e+=32;var i=r/8|0,n=r%8,s=e<<10-n,a=(s&65280)>>8,o=s&255,l=8-n,c=Math.max(6-l,0),u=(255<<l)+(255>>8-(2-n));this.u8[i]=(this.u8[i]&u)+a;var h=~(255<<8-c);this.u8[i+1]=(this.u8[i+1]&h)+o}test(){var r=new ArrayBuffer(3),e=new _0(r),i,n;for(n=0;n<12;n++)for(i=-2048;i<2048;i++)if(e.setInt12(n,i),e.getInt12(n)!=i){console.log("12-bit prob at",n,i),console.log("expected",i,"got",e.getInt12(n));break}for(n=0;n<18;n++)for(i=-32;i<32;i++)if(e.setInt6(n,i),e.getInt6(n)!=i){console.log("6-bit prob at",n,i),console.log("expected",i,"got",e.getInt6(n));break}return e}};var oO=class{parse(r){var e={},i=new DataView(r),n=0;if(e.fileCode=i.getInt32(n,!1),e.fileCode!=9994)throw new Error("Unknown file code: "+e.fileCode);for(n+=6*4,e.wordLength=i.getInt32(n,!1),e.byteLength=e.wordLength*2,n+=4,e.version=i.getInt32(n,!0),n+=4,e.shapeType=i.getInt32(n,!0),n+=4,e.minX=i.getFloat64(n,!0),e.minY=i.getFloat64(n+8,!0),e.maxX=i.getFloat64(n+16,!0),e.maxY=i.getFloat64(n+24,!0),e.minZ=i.getFloat64(n+32,!0),e.maxZ=i.getFloat64(n+40,!0),e.minM=i.getFloat64(n+48,!0),e.maxM=i.getFloat64(n+56,!0),n+=8*8,e.records=[];n<e.byteLength;){var s={};s.number=i.getInt32(n,!1),n+=4,s.length=i.getInt32(n,!1),n+=4;try{s.shape=this.parseShape(i,n,s.length)}catch(a){console.log(a,s)}n+=s.length*2,e.records.push(s)}return e}parseShape(r,e,i){var n=0,s=null,a={};switch(a.type=r.getInt32(e,!0),e+=4,a.type){case 0:break;case 1:a.content={x:r.getFloat64(e,!0),y:r.getFloat64(e+8,!0)};break;case 3:case 5:for(s=a.content={minX:r.getFloat64(e,!0),minY:r.getFloat64(e+8,!0),maxX:r.getFloat64(e+16,!0),maxY:r.getFloat64(e+24,!0),parts:new Int32Array(r.getInt32(e+32,!0)),points:new Float64Array(r.getInt32(e+36,!0)*2)},e+=40,n=0;n<s.parts.length;n++)s.parts[n]=r.getInt32(e,!0),e+=4;for(n=0;n<s.points.length;n++)s.points[n]=r.getFloat64(e,!0),e+=8;break;case 8:case 11:case 13:case 15:case 18:case 21:case 23:case 25:case 28:case 31:throw new Error("Shape type not supported: "+a.type+":"+ +a.type);default:throw new Error("Unknown shape type at "+(e-4)+": "+a.type)}return a}};var lO=class{constructor(){this.LINE_MATERIAL=new Tr({color:0,linewidth:2,opacity:.8,transparent:!0});this.MESH_MATERIAL=new or({color:1926655,opacity:.8,transparent:!0})}createModel(r){for(var e=[],i=[],n=0;n<r.records.length;n++){var s=r.records[n].shape;if(s.type===3||s.type===5)for(var a=s.content.points,o=s.content.parts,l=0;l<o.length;l++){let f=[];for(var c=o[l],u=o[l+1]||a.length/2;c<u;c++){var h=a[c*2],p=a[c*2+1];f.push(new A(h,p,0))}if(s.type===5){let m=es.triangulateShape(f,[]),g=[];m.forEach(b=>g.push(...b));let y=new it;y.setFromPoints(f),y.setIndex(g),e.push(y);let E=new it;f.length>2&&!f[0].equals(f[f.length-1])&&f.push(f[0]),E.setFromPoints(f),i.push(E)}else{let m=new it;m.setFromPoints(f),i.push(m)}}}for(var d=new pr,n=0;n<i.length;n++)d.add(new _r(i[n],this.LINE_MATERIAL));for(var n=0;n<e.length;n++)d.add(new Je(e[n],this.MESH_MATERIAL));return console.log("parsed",e.length,i.length),d}loadCompressed(r){for(var e=this.deltaDecode6(r),i=[],n=[],s=0;s<e.length;s++){let h=[];if(e[s]===-32768){for(var a=[],o=1;o<h.length;o++)h[o-1].x==h[o].x&&h[o-1].y==h[o].y||a.push(h[o]);let p=new it;p.setFromPoints(a),i.push(p),h=[];continue}var l=e[s]*180/32767,c=e[s+1]*180/32767;s++,h.push(new A(l,c,0))}for(var u=new pr,s=0;s<n.length;s++)u.add(new _r(n[s],this.LINE_MATERIAL));for(var s=0;s<i.length;s++)u.add(new Je(i[s],this.MESH_MATERIAL));return console.log("parsed compressed",i.length,n.length),u}compress(r){for(var e=[],i=0;i<r.records.length;i++){var n=r.records[i].shape;if(n.type===5)for(var s=n.content.points,a=n.content.parts,o=0;o<a.length;o++){for(var l=a[o],c=a[o+1]||s.length/2;l<c;l++){var u=s[l*2],h=s[l*2+1];e.push(u/180*32767,h/180*32767)}e.push(-32768)}}var p=new Int16Array(e);console.log("16-bit quantized byteLength",p.buffer.byteLength);var d=this.deltaEncode6(p);return console.log("delta-encoded byteLength",d.byteLength),d}deltaEncode(r){for(var e=[],i=[],n=[],s=0,a=0,o=0,l=0;l<r.length;l++){if(r[l]==-32768){i.push(n),e.push(i),i=[],n=[],o+=3;continue}n.length==0?(s=r[l],a=r[l+1],n.push(s,a),o+=4,l++):Math.abs(s-r[l])>1023||Math.abs(a-r[l+1])>1023?(i.push(n),o+=1,n=[],s=r[l],a=r[l+1],n.push(s,a),o+=4,l++):(n.push((r[l]-s)/8,(r[l+1]-a)/8),s+=((r[l]-s)/8|0)*8,a+=((r[l+1]-a)/8|0)*8,o+=2,l++)}return this.storeDeltas(o,e)}deltaEncode6(r){var e=[],i=[],n=[],s=0,a=0,o=0,l=0;for(o=0;o<r.length;o++)r[o]=0|r[o]/16;for(o=0;o<r.length;o++){if(r[o]===-2048){i.push(n),e.push(i),i=[],n=[],l+=3;continue}n.length==0?(s=r[o],a=r[o+1],n.push(s,a),l+=4,o++):Math.abs(s-r[o])>31||Math.abs(a-r[o+1])>31?(i.push(n),l+=1,n=[],s=r[o],a=r[o+1],n.push(s,a),l+=4,o++):(n.push(r[o]-s,r[o+1]-a),s+=r[o]-s,a+=r[o+1]-a,l+=2,o++)}return this.storeDeltas6(l,e)}storeDeltas(r,e){for(var i=new ArrayBuffer(r),n=new DataView(i),s=0,a=0;a<e.length;a++){for(var o=e[a],l=0;l<o.length;l++){var c=o[l];n.setInt16(s,c[0]),s+=2,n.setInt16(s,c[1]),s+=2;for(var u=2;u<c.length;u++)n.setInt8(s++,c[u]);n.setInt8(s,-128),s+=1}n.setInt16(s,-32768),s+=2}return i}deltaDecode(r){for(var e=new DataView(r),i=0,n=[];i<r.byteLength;){var s=e.getInt16(i);if(i+=2,s===-32768){n.push(-32768);continue}var a=e.getInt16(i);for(i+=2,n.push(s,a);i<r.byteLength;){var o=e.getInt8(i);if(i++,o==-128)break;var l=e.getInt8(i);i++,s+=o*8,a+=l*8,n.push(s,a)}}return n}storeDeltas6(r,e){for(var i=new ArrayBuffer(Math.ceil(r*.75)+4),n=new _0(i),s=32,a=0;a<e.length;a++){for(var o=e[a],l=0;l<o.length;l++){var c=o[l];n.setInt12(s,c[0]),s+=12,n.setInt12(s,c[1]),s+=12;for(var u=2;u<c.length;u++)n.setInt6(s,c[u]),s+=6;n.setInt6(s,-32),s+=6}n.setInt12(s,-2048),s+=12}return new DataView(i).setUint32(0,s),i}deltaDecode6(r){for(var e=new DataView(r).getUint32(0),i=new _0(r),n=32,s=[];n<e;){var a=i.getInt12(n);if(n+=12,a===-2048){s.push(-2048);continue}var o=i.getInt12(n);for(n+=12,s.push(a,o);n<e;){var l=i.getInt6(n);if(n+=6,l===-32)break;var c=i.getInt6(n);n+=6,a+=l,o+=c,s.push(a,o)}}for(var u=0;u<s.length;u++)s[u]*=16;return s}};var cO=class{load(r,e,i,n){return ot(this,null,function*(){this.updateProgress(i,0);let s=new XMLHttpRequest;s.responseType="arraybuffer",s.onload=()=>{this.updateProgress(i,50);let o=new oO().parse(s.response),l=new lO().createModel(o);this.updateProgress(i,99),e(l)},s.onerror=n,s.open("GET",r),s.send(null)})}updateProgress(r,e){if(r){let i={lengthComputable:!0,loaded:e,total:100};r(new ProgressEvent("progress",i))}}};var u2t="three/js/libs/draco/gltf/",Zc=class{constructor(r){this.manager=r}loadLocalModel(r,e,i){return ot(this,null,function*(){let n=e.toLowerCase();return n.endsWith("fbx")?this.loadFbx(r,i):n.endsWith("obj")?this.loadObj(r,i):n.endsWith("stl")?this.loadStl(r,i):n.endsWith("ifc")?this.loadIfc(r,i):n.endsWith("shp")?this.loadShp(r,i):n.endsWith("dae")?this.loadDae(r,i):n.endsWith("dxf")?this.loadDxf(r,i):n.endsWith("jpg")||n.endsWith("jpeg")||n.endsWith("png")?this.loadImage(r,i):this.loadGltf(r,i)})}loadModel(r,e,i){return ot(this,null,function*(){let n=r;if(!n)return Promise.resolve();let s=(e==null?void 0:e.toLowerCase())||"";if(!s){let a=n.split("?")[0].toLowerCase();if(a){let o=a.lastIndexOf(".");o!==-1&&(s=a.slice(o+1))}}return s.endsWith("fbx")?this.loadFbx(n,i):s.endsWith("obj")?this.loadObj(n,i):s.endsWith("stl")?this.loadStl(n,i):s.endsWith("ifc")?this.loadIfc(n,i):s.endsWith("shp")?this.loadShp(n,i):s.endsWith("dae")?this.loadDae(n,i):s.endsWith("dxf")?this.loadDxf(n,i):s.endsWith("jpg")||s.endsWith("jpeg")||s.endsWith("png")?this.loadImage(n,i):this.loadGltf(n,i)})}loadGltf(r,e){return ot(this,null,function*(){let i=this.getGltfLoader();r.indexOf("#")!==-1&&console.warn(`[LoadingHelper] '#' is not allowed in filename ${r}`),r=r.replace(/#/g,encodeURIComponent("#"));let n=yield i.loadAsync(r,e);return Promise.resolve(n.scene)})}parseGltf(r,e,i,n){return this.getGltfLoader().parse(r,e,a=>i(a.scene),n)}loadFbx(r,e){return ot(this,null,function*(){let n=yield new KC(this.manager).loadAsync(r,e);return Promise.resolve(n)})}loadObj(r,e){return ot(this,null,function*(){let i=new AA(this.manager),n=new DA(this.manager),s=r.replace(".obj",".mtl"),a=yield n.loadAsync(s,e);a.preload(),i.setMaterials(a);let o=yield i.loadAsync(r,e);return Promise.resolve(o)})}loadStl(r,e){return ot(this,null,function*(){let n=yield new NA(this.manager).loadAsync(r,e);return Promise.resolve(new Je(n))})}loadIfc(r,e){return ot(this,null,function*(){let i=new MA(this.manager),n=i.ifcManager;n&&typeof n.setWasmPath=="function"&&n.setWasmPath("../three/js/libs/ifc/");let s=yield i.loadAsync(r,e);return Promise.resolve(s.mesh)})}loadShp(r,e){return ot(this,null,function*(){let i=new cO;return new Promise((n,s)=>{i.load(r,a=>{n(a)},e,a=>{s(a)})})})}loadDae(r,e){return ot(this,null,function*(){let n=yield new YC(this.manager).loadAsync(r,e);return Promise.resolve(n.scene)})}loadDxf(r,e){return ot(this,null,function*(){this.font||console.warn("[LoadingHelper] Should set font first!");let i=new xr;try{let n=yield i.loadAsync(r,e);return Promise.resolve(n.threejsObject)}catch(n){let s=new ErrorEvent("");return Promise.reject(s)}})}loadPly(r,e){return ot(this,null,function*(){let n=yield new PA(this.manager).loadAsync(r,e);return Promise.resolve(new Je(n))})}loadImage(r,e){return ot(this,null,function*(){let n=yield new Es(this.manager).loadAsync(r,e);if(!n)return Promise.reject("Failed to load image!");let s=10,a=n.image,o=a&&a.height||s,l=a&&a.width||s;o=s/l*o,l=s;let c=new or({map:n,side:wi,transparent:!0}),u=new ts(l,o),h=new Je(u,c);return Promise.resolve(h)})}loadDxfDataAsync(r,e,i,n,s,a){return ot(this,null,function*(){var l;this.font||console.warn("[LoadingHelper] Should set font first!");let o=new xr(s,a);return o.setFont(this.font),o.manager.onLoad=()=>{n&&n()},this.font.getFontData&&(yield(l=this.font)==null?void 0:l.getFontData()),o.load(r,e,i)})}setFont(r){this.font=r}getGltfLoader(){if(!this.gltfLoader){this.gltfLoader=new Yu(this.manager);let r=new XC(this.manager);r.setDecoderPath(u2t),this.gltfLoader.setDRACOLoader(r)}return this.gltfLoader}};var JT=class{constructor(r){this.running=!1;this.workers=[];let e=1;r?e=r:window.navigator&&(e=Math.max(e,window.navigator.hardwareConcurrency-1));for(let i=0;i<e;i++)this.workers[i]=new RC}isRunning(){return this.running}generate(i){return ot(this,arguments,function*(r,e={}){if(this.running){ne.warn("[BVHHelper] Already running job.");return}if(this.workers.length===0){ne.warn("[BVHHelper] Worker has been disposed.");return}return this.running=!0,new Promise(n=>{let s=this.workers.length,a=r.length,o=[],l=Math.floor(a/s),c=a%s,u=0,h=0;for(let p=0;p<s;p++){let d=this.workers[p];if(p<c?(u=p*l+p,h=u+l+1):(u=p*l+c,h=u+l),u=Math.min(u,a),h=Math.min(h,a),u>=h)break;ne.debug("startIndex: "+u+" endIndex: "+h),o.push(d.generate(r.slice(u,h),e))}Promise.allSettled(o).then(()=>{this.running=!1,n()})})})}dispose(){for(let r=0;r<this.workers.length;r++)this.workers[r].dispose();this.workers=[]}static createMeshBvhSync(r,e={}){let i=new Set;r.forEach(n=>{n.traverse(s=>{let a=s;if(a.isMesh&&a.geometry&&ji.isMergedMesh(a)&&!(a instanceof tn)){if(i.has(a.geometry.id))return;a.geometry.index&&e.saveOriginalIndex&&(a.geometry.userData.originalIndex=a.geometry.index.array.slice()),a.geometry.boundsTree=new Nc(a.geometry,e),i.add(a.geometry.id)}})})}static createMeshBvhAsync(r,e={}){let i=new Set,n=[];r.forEach(a=>{a.traverse(o=>{let l=o;if(l.isMesh&&l.geometry&&ji.isMergedMesh(l)&&!(l instanceof tn)){if(i.has(l.geometry.id))return;n.push(l.geometry),i.add(l.geometry.id)}})});let s=new JT;s.generate(n,e).then(()=>{s.dispose()})}};function QT(t){return{type:t}}var ch={movable:!1,startDistBetweenFingers:0,scale:1},eE=2*Math.PI,wMe=1e-6,uO=class extends Ra{constructor(e,i,n=!1){super();this.enabled=!0;this.target=new A;this.enableZoom=!1;this.enablePan=!1;this.enableRotate=!0;this.state=-1;this.rotateSpeed=1;this.zoomSpeed=1;this.panSpeed=1;this.scale=1;this.minZoom=0;this.maxZoom=1/0;this.screenSpacePanning=!0;this.autoRotate=!0;this.autoRotateSpeed=2;this.enableDamping=!1;this.dampingFactor=.05;this.minAzimuthAngle=-1/0;this.maxAzimuthAngle=1/0;this.minPolarAngle=0;this.maxPolarAngle=Math.PI;this.minDistance=0;this.maxDistance=1/0;this.keyPanSpeed=7;this.minFov=50;this.maxFov=95;this.zoomChanged=!1;this.panOffset=new A;this.pointerPositions={};this.rotateStart=new le;this.rotateEnd=new le;this.rotateDelta=new le;this.dollyStart=new le;this.dollyEnd=new le;this.dollyDelta=new le;this.panStart=new le;this.panEnd=new le;this.panDelta=new le;this.pointers=[];this.spherical=new Pc;this.sphericalDelta=new Pc;this.update=function(e){let i=new A,n=new A,s=new Or;return function(){let o=e.quat,l=o.clone().invert(),c=e.object.position;i.copy(c).sub(e.target),i.applyQuaternion(o),e.spherical.setFromVector3(i),e.autoRotate&&e.state===-1&&(e.isVRMode?e.sphericalDelta.theta+=eE/60/60*e.autoRotateSpeed:e.sphericalDelta.theta-=eE/60/60*e.autoRotateSpeed),e.enableDamping?(e.spherical.theta+=e.sphericalDelta.theta*e.dampingFactor,e.spherical.phi+=e.sphericalDelta.phi*e.dampingFactor):(e.spherical.theta+=e.sphericalDelta.theta,e.spherical.phi+=e.sphericalDelta.phi);let u=e.minAzimuthAngle,h=e.maxAzimuthAngle;return isFinite(u)&&isFinite(h)&&(u<-Math.PI?u+=eE:u>Math.PI&&(u-=eE),h<-Math.PI?h+=eE:h>Math.PI&&(h-=eE),u<=h?e.spherical.theta=Math.max(u,Math.min(h,e.spherical.theta)):e.spherical.theta=e.spherical.theta>(u+h)/2?Math.max(u,e.spherical.theta):Math.min(h,e.spherical.theta)),e.spherical.phi=Math.max(e.minPolarAngle,Math.min(e.maxPolarAngle,e.spherical.phi)),e.spherical.makeSafe(),e.spherical.radius*=e.scale,e.spherical.radius=Math.max(e.minDistance,Math.min(e.maxDistance,e.spherical.radius)),e.enableDamping===!0?e.target.addScaledVector(e.panOffset,e.dampingFactor):e.target.add(e.panOffset),i.setFromSpherical(e.spherical),i.applyQuaternion(l),c.copy(e.target).add(i),e.object.lookAt(e.target),e.enableDamping===!0?(e.sphericalDelta.theta*=1-e.dampingFactor,e.sphericalDelta.phi*=1-e.dampingFactor,e.panOffset.multiplyScalar(1-e.dampingFactor)):(e.sphericalDelta.set(0,0,0),e.panOffset.set(0,0,0)),e.scale=1,e.zoomChanged||n.distanceToSquared(e.object.position)>wMe||8*(1-s.dot(e.object.quaternion))>wMe?(e.dispatchEvent(QT("change")),n.copy(e.object.position),s.copy(e.object.quaternion),e.zoomChanged=!1,!0):!1}}(this);this.onContextMenu=function(e){return i=>{e.enabled!==!1&&i.preventDefault()}}(this);this.onPointerDown=function(e){return i=>{e.enabled!==!1&&(e.pointers.length===0&&(e.domElement.setPointerCapture(i.pointerId),e.domElement.addEventListener("pointermove",e.onPointerMove),e.domElement.addEventListener("pointerup",e.onPointerUp)),e.addPointer(i),i.pointerType==="touch"?e.onTouchStart(i):e.onMouseDown(i))}}(this);this.onPointerMove=function(e){return i=>{e.enabled!==!1&&(i.pointerType==="touch"?e.onTouchMove(i):e.onMouseMove(i))}}(this);this.onPointerUp=function(e){return i=>{e.removePointer(i),e.pointers.length===0&&(e.domElement.releasePointerCapture(i.pointerId),e.domElement.removeEventListener("pointermove",e.onPointerMove),e.domElement.removeEventListener("pointerup",e.onPointerUp)),i.pointerType==="touch"&&e.handlerTouchEnd(i),e.dispatchEvent(QT("end")),e.state=-1}}(this);this.onPointerCancel=function(e){return i=>{e.removePointer(i),e.handlerTouchEnd(i)}}(this);this.onMouseWheel=function(e){return i=>{e.enabled===!1||e.enableZoom===!1||e.state!==-1||(i.preventDefault(),i.stopPropagation(),e.dispatchEvent(QT("start")),e.handleMouseWheel(i),e.dispatchEvent(QT("end")))}}(this);this.pan=function(e){let i=new A;return function(s,a){let o=e.domElement;if(e.object instanceof qr){let l=e.object.position;i.copy(l).sub(e.target);let c=i.length();c*=Math.tan(e.object.fov/2*Math.PI/180),e.panLeft(2*s*c/o.clientHeight,e.object.matrix),e.panUp(2*a*c/o.clientHeight,e.object.matrix)}else console.warn("WARNING: VRControls.js encountered an unknown camera type - pan disabled."),e.enablePan=!1}}(this);this.panLeft=function(e){let i=new A;return function(s,a){i.setFromMatrixColumn(a,0),i.multiplyScalar(-s),e.panOffset.add(i)}}(this);this.panUp=function(e){let i=new A;return function(s,a){e.screenSpacePanning===!0?i.setFromMatrixColumn(a,1):(i.setFromMatrixColumn(a,0),i.crossVectors(e.object.up,i)),i.multiplyScalar(s),e.panOffset.add(i)}}(this);this.onKeyDown=e=>{this.enabled===!1||this.enablePan===!1||this.handleKeyDown(e)};this.object=e,this.domElement=i,this.isVRMode=n,this.quat=new Or().setFromUnitVectors(this.object.up,new A(0,1,0)),this.domElement&&this.domElement.style&&(this.domElement.style.touchAction="none"),this.domElement.addEventListener("contextmenu",this.onContextMenu),this.domElement.addEventListener("pointerdown",this.onPointerDown),this.domElement.addEventListener("pointercancel",this.onPointerCancel),this.domElement.addEventListener("wheel",this.onMouseWheel,{passive:!1}),this.update()}dispose(){this.domElement.removeEventListener("contextmenu",this.onContextMenu),this.domElement.removeEventListener("pointerdown",this.onPointerDown),this.domElement.removeEventListener("pointercancel",this.onPointerCancel),this.domElement.removeEventListener("wheel",this.onMouseWheel),this.domElement.removeEventListener("pointermove",this.onPointerMove),this.domElement.removeEventListener("pointerup",this.onPointerUp),this.domElementKeyEvents&&this.domElementKeyEvents.removeEventListener("keydown",this.onKeyDown)}addPointer(e){this.pointers.push(e)}removePointer(e){delete this.pointerPositions[e.pointerId];for(let i=0;i<this.pointers.length;i++)if(this.pointers[i].pointerId==e.pointerId){this.pointers.splice(i,1);return}}getDist(e,i){return Math.hypot(i[0]-e[0],i[1]-e[1])}trackPointer(e){let i=this.pointerPositions[e.pointerId];i===void 0&&(i=new le,this.pointerPositions[e.pointerId]=i),i.set(e.pageX,e.pageY)}onTouchStart(e){switch(this.trackPointer(e),this.pointers.length){case 1:if(this.enableRotate===!1)return;this.handleTouchStartRotate(),this.state=3;break;case 2:this.handleTouchStartDolly(this.pointers),this.state=4;break;default:this.state=-1}this.state!==-1&&this.dispatchEvent(QT("start"))}onMouseDown(e){switch(e.button){case 0:if(this.enableRotate===!1)return;this.handleMouseDownRotate(e),this.state=0;break;case 1:if(this.enableZoom===!1)return;this.handleMouseDownDolly(e),this.state=1;break;case 2:if(e.ctrlKey||e.metaKey||e.shiftKey){if(this.enablePan===!1)return;this.handleMouseDownPan(e),this.state=2}else{if(this.enableRotate===!1)return;this.handleMouseDownRotate(e),this.state=0}break;default:this.state=-1}this.state!==-1&&this.dispatchEvent(QT("start"))}onTouchMove(e){switch(this.trackPointer(e),this.state){case 3:if(this.enableRotate===!1)return;this.handleTouchMoveRotate(e);break;case 4:this.handleTouchMoveDolly(e)}}onMouseMove(e){if(this.enabled!==!1)switch(this.state){case 0:if(this.enableRotate===!1)return;this.handleMouseMoveRotate(e);break;case 1:if(this.enableZoom===!1)return;this.handleMouseMoveDolly(e);break;case 2:if(this.enablePan===!1)return;this.handleMouseMovePan(e);break}}handlerTouchEnd(e){ch.movable=!1,ch.scale=1}handleMouseWheel(e){let i=Math.pow(.95,this.zoomSpeed);e.deltaY<0?this.dollyIn(i):e.deltaY>0&&this.dollyOut(i),this.update()}handleMouseDownRotate(e){this.rotateStart.set(e.clientX,e.clientY)}handleMouseDownDolly(e){this.dollyStart.set(e.clientX,e.clientY)}handleMouseDownPan(e){this.panStart.set(e.clientX,e.clientY)}handleTouchStartRotate(){if(this.pointers.length===1)this.rotateStart.set(this.pointers[0].pageX,this.pointers[0].pageY);else{let e=.5*(this.pointers[0].pageX+this.pointers[1].pageX),i=.5*(this.pointers[0].pageY+this.pointers[1].pageY);this.rotateStart.set(e,i)}}handleTouchStartDolly(e){if(e.length<2)return;let i=e[0],n=e[1];ch.startDistBetweenFingers=this.getDist([i.pageX,i.pageY],[n.pageX,n.pageY]),ch.movable=!0,ch.scale=1}updateRotate(){let e=this.isVRMode,i=this.sphericalDelta;this.rotateDelta.subVectors(this.rotateEnd,this.rotateStart).multiplyScalar(this.rotateSpeed);let n=this.domElement;e?(i.theta+=2*Math.PI*this.rotateDelta.x/n.clientHeight,i.phi+=2*Math.PI*this.rotateDelta.y/n.clientHeight):(i.theta-=2*Math.PI*this.rotateDelta.x/n.clientHeight,i.phi-=2*Math.PI*this.rotateDelta.y/n.clientHeight),this.rotateStart.copy(this.rotateEnd)}handleMouseMoveRotate(e){this.rotateEnd.set(e.clientX,e.clientY),this.updateRotate()}dollyOut(e){this.object instanceof qr?this.scale/=e:(console.warn("WARNING: VRControls.js encountered an unknown camera type - dolly/zoom disabled."),this.enableZoom=!1)}dollyIn(e){this.object instanceof qr?this.scale*=e:(console.warn("WARNING: VRControls.js encountered an unknown camera type - dolly/zoom disabled."),this.enableZoom=!1)}handleMouseMoveDolly(e){this.dollyEnd.set(e.clientX,e.clientY),this.dollyDelta.subVectors(this.dollyEnd,this.dollyStart);let i=Math.pow(.95,this.zoomSpeed);this.dollyDelta.y>0?this.dollyOut(i):this.dollyIn(i),this.dollyStart.copy(this.dollyEnd)}handleMouseMovePan(e){this.panEnd.set(e.clientX,e.clientY),this.panDelta.subVectors(this.panEnd,this.panStart).multiplyScalar(this.panSpeed),this.pan(this.panDelta.x,this.panDelta.y),this.panStart.copy(this.panEnd)}getSecondPointerPosition(e){let i=e.pointerId===this.pointers[0].pointerId?this.pointers[1]:this.pointers[0];return this.pointerPositions[i.pointerId]}handleTouchMoveRotate(e){if(this.pointers.length==1)this.rotateEnd.set(e.pageX,e.pageY);else{let i=this.getSecondPointerPosition(e),n=.5*(e.pageX+i.x),s=.5*(e.pageY+i.y);this.rotateEnd.set(n,s)}this.updateRotate()}updateFov(e){var u;let i=this.object;if(!i||!(i instanceof qr)){console.warn("WARNING: VRControls.js encountered an unknown camera type - updateFov disabled.");return}let n=this.minFov,s=this.maxFov,a=h=>{let p=i.fov+h;p=Math.min(p,s),p=Math.max(p,n),i.fov!==p&&(i.fov=p,i.updateProjectionMatrix(),this.dispatchEvent({type:"change"}))},o=20,l=5,c=e/o;for(let h=0;h<o;++h)setTimeout(()=>a(c),h*l);this.autoRotate&&((u=this.controlsHelper)==null||u.delayAutoRotate())}handleTouchMoveDolly(e){if(!ch.movable||this.pointers.length<2)return;let i=this.getSecondPointerPosition(e),n=[e.pageX,e.pageY],s=[i.x,i.y],a=ch.startDistBetweenFingers,o=this.getDist(n,s);if(!a||!o||Math.abs(a-o)<10)return;let l=o/a;console.log(l);let c=3;l=Math.min(l,c),l=Math.max(l,1/c);let u=.05,h=l-ch.scale;if(Math.abs(h)<u)return;let p=h>0,d=0;p?d=-h*10:d=(ch.scale/l-1)*10,this.updateFov(d),ch.scale=l}handleKeyDown(e){let i=!1;switch(e.code){case"ArrowUp":this.pan(0,this.keyPanSpeed),i=!0;break;case"ArrowDown":this.pan(0,-this.keyPanSpeed),i=!0;break;case"ArrowLeft":this.pan(this.keyPanSpeed,0),i=!0;break;case"ArrowRight":this.pan(-this.keyPanSpeed,0),i=!0;break}i&&(e.preventDefault(),this.update())}listenToKeyEvents(e){e.addEventListener("keydown",this.onKeyDown),this.domElementKeyEvents=e}};var Ps={LEFT:1,RIGHT:2,MIDDLE:4},Nt=Object.freeze({NONE:0,ROTATE:1,TRUCK:2,OFFSET:4,DOLLY:8,ZOOM:16,TOUCH_ROTATE:32,TOUCH_TRUCK:64,TOUCH_OFFSET:128,TOUCH_DOLLY:256,TOUCH_ZOOM:512,TOUCH_DOLLY_TRUCK:1024,TOUCH_DOLLY_OFFSET:2048,TOUCH_DOLLY_ROTATE:4096,TOUCH_ZOOM_TRUCK:8192,TOUCH_ZOOM_OFFSET:16384,TOUCH_ZOOM_ROTATE:32768});function w0(t){return t.isPerspectiveCamera}function Xf(t){return t.isOrthographicCamera}var tE=Math.PI*2,RMe=Math.PI/2,FMe=1e-5;function _n(t,r=FMe){return Math.abs(t)<r}function Sn(t,r,e=FMe){return _n(t-r,e)}function MMe(t,r){return Math.round(t/r)*r}function ES(t){return isFinite(t)?t:t<0?-Number.MAX_VALUE:Number.MAX_VALUE}function bS(t){return Math.abs(t)<Number.MAX_VALUE?t:t*(1/0)}function F8(t,r){r.set(0,0),t.forEach(e=>{r.x+=e.clientX,r.y+=e.clientY}),r.x/=t.length,r.y/=t.length}function H8(t,r){return Xf(t)?(console.warn(`${r} is not supported in OrthographicCamera`),!0):!1}function DMe(t){return t.invert?t.invert():t.inverse(),t}var V8=class{constructor(){this._listeners={}}addEventListener(r,e){let i=this._listeners;i[r]===void 0&&(i[r]=[]),i[r].indexOf(e)===-1&&i[r].push(e)}removeEventListener(r,e){let n=this._listeners[r];if(n!==void 0){let s=n.indexOf(e);s!==-1&&n.splice(s,1)}}removeAllEventListeners(r){if(!r){this._listeners={};return}Array.isArray(this._listeners[r])&&(this._listeners[r].length=0)}dispatchEvent(r){let i=this._listeners[r.type];if(i!==void 0){r.target=this;let n=i.slice(0);for(let s=0,a=n.length;s<a;s++)n[s].call(this,r)}}},HMe=typeof window!="undefined",h2t=HMe&&/Mac/.test(navigator.platform),CMe=!(HMe&&"PointerEvent"in window),hO=1/8,mr,AMe,pO,U8,bo,pi,sn,rE,uh,hh,R0,OMe,PMe,Kc,xS,iE,NMe,B8,LMe,k8,G8,dO,qn=class extends V8{constructor(r,e){if(super(),this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.minAzimuthAngle=-1/0,this.maxAzimuthAngle=1/0,this.minDistance=0,this.maxDistance=1/0,this.infinityDolly=!1,this.minZoom=.01,this.maxZoom=1/0,this.dampingFactor=.05,this.draggingDampingFactor=.25,this.azimuthRotateSpeed=1,this.polarRotateSpeed=1,this.dollySpeed=1,this.truckSpeed=2,this.dollyToCursor=!1,this.dragToOffset=!1,this.verticalDragToForward=!1,this.boundaryFriction=0,this.restThreshold=.01,this.colliderMeshes=[],this.cancel=()=>{},this._enabled=!0,this._state=Nt.NONE,this._viewport=null,this._dollyControlAmount=0,this._hasRested=!0,this._boundaryEnclosesCamera=!1,this._needsUpdate=!0,this._updatedLastTime=!1,this._elementRect=new DOMRect,this._activePointers=[],this._truckInternal=(i,n,s)=>{if(w0(this._camera)){let a=pi.copy(this._camera.position).sub(this._target),o=this._camera.getEffectiveFOV()*mr.MathUtils.DEG2RAD,l=a.length()*Math.tan(o*.5),c=this.truckSpeed*i*l/this._elementRect.height,u=this.truckSpeed*n*l/this._elementRect.height;this.verticalDragToForward?(s?this.setFocalOffset(this._focalOffsetEnd.x+c,this._focalOffsetEnd.y,this._focalOffsetEnd.z,!0):this.truck(c,0,!0),this.forward(-u,!0)):s?this.setFocalOffset(this._focalOffsetEnd.x+c,this._focalOffsetEnd.y+u,this._focalOffsetEnd.z,!0):this.truck(c,u,!0)}else if(Xf(this._camera)){let a=this._camera,o=i*(a.right-a.left)/a.zoom/this._elementRect.width,l=n*(a.top-a.bottom)/a.zoom/this._elementRect.height;s?this.setFocalOffset(this._focalOffsetEnd.x+o,this._focalOffsetEnd.y+l,this._focalOffsetEnd.z,!0):this.truck(o,l,!0)}},this._rotateInternal=(i,n)=>{let s=tE*this.azimuthRotateSpeed*i/this._elementRect.height,a=tE*this.polarRotateSpeed*n/this._elementRect.height;this.rotate(s,a,!0)},this._dollyInternal=(i,n,s)=>{let a=Math.pow(.95,-i*this.dollySpeed),o=this._sphericalEnd.radius*a,l=this._sphericalEnd.radius,c=l*(i>=0?-1:1);this.dollyTo(o),this.infinityDolly&&(o<this.minDistance||this.maxDistance===this.minDistance)&&(this._camera.getWorldDirection(pi),this._targetEnd.add(pi.normalize().multiplyScalar(c)),this._target.add(pi.normalize().multiplyScalar(c))),this.dollyToCursor&&(this._dollyControlAmount+=this._sphericalEnd.radius-l,this.infinityDolly&&(o<this.minDistance||this.maxDistance===this.minDistance)&&(this._dollyControlAmount-=c),this._dollyControlCoord.set(n,s))},this._zoomInternal=(i,n,s)=>{let a=Math.pow(.95,i*this.dollySpeed),o=this._zoomEnd;this.zoomTo(this._zoom*a),this.dollyToCursor&&(this._dollyControlAmount+=this._zoomEnd-o,this._dollyControlCoord.set(n,s))},typeof mr=="undefined"&&console.error("camera-controls: `THREE` is undefined. You must first run `CameraControls.install( { THREE: THREE } )`. Check the docs for further information."),this._camera=r,this._yAxisUpSpace=new mr.Quaternion().setFromUnitVectors(this._camera.up,pO),this._yAxisUpSpaceInverse=DMe(this._yAxisUpSpace.clone()),this._state=Nt.NONE,this._domElement=e,this._domElement.style.touchAction="none",this._domElement.style.userSelect="none",this._domElement.style.webkitUserSelect="none",this._target=new mr.Vector3,this._targetEnd=this._target.clone(),this._focalOffset=new mr.Vector3,this._focalOffsetEnd=this._focalOffset.clone(),this._spherical=new mr.Spherical().setFromVector3(pi.copy(this._camera.position).applyQuaternion(this._yAxisUpSpace)),this._sphericalEnd=this._spherical.clone(),this._zoom=this._camera.zoom,this._zoomEnd=this._zoom,this._nearPlaneCorners=[new mr.Vector3,new mr.Vector3,new mr.Vector3,new mr.Vector3],this._updateNearPlaneCorners(),this._boundary=new mr.Box3(new mr.Vector3(-1/0,-1/0,-1/0),new mr.Vector3(1/0,1/0,1/0)),this._target0=this._target.clone(),this._position0=this._camera.position.clone(),this._zoom0=this._zoom,this._focalOffset0=this._focalOffset.clone(),this._dollyControlAmount=0,this._dollyControlCoord=new mr.Vector2,this.mouseButtons={left:Nt.ROTATE,middle:Nt.DOLLY,right:Nt.TRUCK,wheel:w0(this._camera)?Nt.DOLLY:Xf(this._camera)?Nt.ZOOM:Nt.NONE},this.touches={one:Nt.TOUCH_ROTATE,two:w0(this._camera)?Nt.TOUCH_DOLLY_TRUCK:Xf(this._camera)?Nt.TOUCH_ZOOM_TRUCK:Nt.NONE,three:Nt.TOUCH_TRUCK},this._domElement){let i=new mr.Vector2,n=new mr.Vector2,s=new mr.Vector2,a=S=>{if(!this._enabled)return;let D={pointerId:S.pointerId,clientX:S.clientX,clientY:S.clientY,deltaX:0,deltaY:0};this._activePointers.push(D),this._domElement.ownerDocument.removeEventListener("pointermove",c,{passive:!1}),this._domElement.ownerDocument.removeEventListener("pointerup",p),this._domElement.ownerDocument.addEventListener("pointermove",c,{passive:!1}),this._domElement.ownerDocument.addEventListener("pointerup",p),E(S)},o=S=>{if(!this._enabled)return;let D={pointerId:0,clientX:S.clientX,clientY:S.clientY,deltaX:0,deltaY:0};this._activePointers.push(D),this._domElement.ownerDocument.removeEventListener("mousemove",u),this._domElement.ownerDocument.removeEventListener("mouseup",d),this._domElement.ownerDocument.addEventListener("mousemove",u),this._domElement.ownerDocument.addEventListener("mouseup",d),E(S)},l=S=>{this._enabled&&(S.preventDefault(),Array.prototype.forEach.call(S.changedTouches,D=>{let P={pointerId:D.identifier,clientX:D.clientX,clientY:D.clientY,deltaX:0,deltaY:0};this._activePointers.push(P)}),this._domElement.ownerDocument.removeEventListener("touchmove",h,{passive:!1}),this._domElement.ownerDocument.removeEventListener("touchend",f),this._domElement.ownerDocument.addEventListener("touchmove",h,{passive:!1}),this._domElement.ownerDocument.addEventListener("touchend",f),E(S))},c=S=>{S.cancelable&&S.preventDefault();let D=S.pointerId,P=this._findPointerById(D);if(P){if(P.clientX=S.clientX,P.clientY=S.clientY,P.deltaX=S.movementX,P.deltaY=S.movementY,S.pointerType==="touch")switch(this._activePointers.length){case 1:this._state=this.touches.one;break;case 2:this._state=this.touches.two;break;case 3:this._state=this.touches.three;break}else this._state=0,(S.buttons&Ps.LEFT)===Ps.LEFT&&(this._state=this._state|this.mouseButtons.left),(S.buttons&Ps.MIDDLE)===Ps.MIDDLE&&(this._state=this._state|this.mouseButtons.middle),(S.buttons&Ps.RIGHT)===Ps.RIGHT&&(this._state=this._state|this.mouseButtons.right);b()}},u=S=>{let D=this._findPointerById(0);D&&(D.clientX=S.clientX,D.clientY=S.clientY,D.deltaX=S.movementX,D.deltaY=S.movementY,this._state=0,(S.buttons&Ps.LEFT)===Ps.LEFT&&(this._state=this._state|this.mouseButtons.left),(S.buttons&Ps.MIDDLE)===Ps.MIDDLE&&(this._state=this._state|this.mouseButtons.middle),(S.buttons&Ps.RIGHT)===Ps.RIGHT&&(this._state=this._state|this.mouseButtons.right),b())},h=S=>{S.cancelable&&S.preventDefault(),Array.prototype.forEach.call(S.changedTouches,D=>{let P=D.identifier,_=this._findPointerById(P);_&&(_.clientX=D.clientX,_.clientY=D.clientY)}),b()},p=S=>{let D=S.pointerId,P=this._findPointerById(D);if(P&&this._activePointers.splice(this._activePointers.indexOf(P),1),S.pointerType==="touch")switch(this._activePointers.length){case 0:this._state=Nt.NONE;break;case 1:this._state=this.touches.one;break;case 2:this._state=this.touches.two;break;case 3:this._state=this.touches.three;break}else this._state=Nt.NONE;x()},d=()=>{let S=this._findPointerById(0);S&&this._activePointers.splice(this._activePointers.indexOf(S),1),this._state=Nt.NONE,x()},f=S=>{switch(Array.prototype.forEach.call(S.changedTouches,D=>{let P=D.identifier,_=this._findPointerById(P);_&&this._activePointers.splice(this._activePointers.indexOf(_),1)}),this._activePointers.length){case 0:this._state=Nt.NONE;break;case 1:this._state=this.touches.one;break;case 2:this._state=this.touches.two;break;case 3:this._state=this.touches.three;break}x()},m=-1,g=S=>{if(!this._enabled||this.mouseButtons.wheel===Nt.NONE)return;if(S.preventDefault(),this.dollyToCursor||this.mouseButtons.wheel===Nt.ROTATE||this.mouseButtons.wheel===Nt.TRUCK){let F=performance.now();m-F<1e3&&this._getClientRect(this._elementRect),m=F}let D=h2t?-1:-3,P=S.deltaMode===1?S.deltaY/D:S.deltaY/(D*10),_=this.dollyToCursor?(S.clientX-this._elementRect.x)/this._elementRect.width*2-1:0,w=this.dollyToCursor?(S.clientY-this._elementRect.y)/this._elementRect.height*-2+1:0;switch(this.mouseButtons.wheel){case Nt.ROTATE:{this._rotateInternal(S.deltaX,S.deltaY);break}case Nt.TRUCK:{this._truckInternal(S.deltaX,S.deltaY,!1);break}case Nt.OFFSET:{this._truckInternal(S.deltaX,S.deltaY,!0);break}case Nt.DOLLY:{this._dollyInternal(-P,_,w);break}case Nt.ZOOM:{this._zoomInternal(-P,_,w);break}}this.dispatchEvent({type:"control"})},y=S=>{this._enabled&&S.preventDefault()},E=S=>{if(!this._enabled)return;if(F8(this._activePointers,bo),this._getClientRect(this._elementRect),i.copy(bo),n.copy(bo),this._activePointers.length>=2){let P=bo.x-this._activePointers[1].clientX,_=bo.y-this._activePointers[1].clientY,w=Math.sqrt(P*P+_*_);s.set(0,w);let F=(this._activePointers[0].clientX+this._activePointers[1].clientX)*.5,X=(this._activePointers[0].clientY+this._activePointers[1].clientY)*.5;n.set(F,X)}if("touches"in S||"pointerType"in S&&S.pointerType==="touch")switch(this._activePointers.length){case 1:this._state=this.touches.one;break;case 2:this._state=this.touches.two;break;case 3:this._state=this.touches.three;break}else this._state=0,(S.buttons&Ps.LEFT)===Ps.LEFT&&(this._state=this._state|this.mouseButtons.left),(S.buttons&Ps.MIDDLE)===Ps.MIDDLE&&(this._state=this._state|this.mouseButtons.middle),(S.buttons&Ps.RIGHT)===Ps.RIGHT&&(this._state=this._state|this.mouseButtons.right);this.dispatchEvent({type:"controlstart"})},b=()=>{if(!this._enabled)return;F8(this._activePointers,bo);let S=this._domElement&&document.pointerLockElement===this._domElement,D=S?-this._activePointers[0].deltaX:n.x-bo.x,P=S?-this._activePointers[0].deltaY:n.y-bo.y;if(n.copy(bo),((this._state&Nt.ROTATE)===Nt.ROTATE||(this._state&Nt.TOUCH_ROTATE)===Nt.TOUCH_ROTATE||(this._state&Nt.TOUCH_DOLLY_ROTATE)===Nt.TOUCH_DOLLY_ROTATE||(this._state&Nt.TOUCH_ZOOM_ROTATE)===Nt.TOUCH_ZOOM_ROTATE)&&this._rotateInternal(D,P),(this._state&Nt.DOLLY)===Nt.DOLLY||(this._state&Nt.ZOOM)===Nt.ZOOM){let _=this.dollyToCursor?(i.x-this._elementRect.x)/this._elementRect.width*2-1:0,w=this.dollyToCursor?(i.y-this._elementRect.y)/this._elementRect.height*-2+1:0;this._state===Nt.DOLLY?this._dollyInternal(P*hO,_,w):this._zoomInternal(P*hO,_,w)}if((this._state&Nt.TOUCH_DOLLY)===Nt.TOUCH_DOLLY||(this._state&Nt.TOUCH_ZOOM)===Nt.TOUCH_ZOOM||(this._state&Nt.TOUCH_DOLLY_TRUCK)===Nt.TOUCH_DOLLY_TRUCK||(this._state&Nt.TOUCH_ZOOM_TRUCK)===Nt.TOUCH_ZOOM_TRUCK||(this._state&Nt.TOUCH_DOLLY_OFFSET)===Nt.TOUCH_DOLLY_OFFSET||(this._state&Nt.TOUCH_ZOOM_OFFSET)===Nt.TOUCH_ZOOM_OFFSET||(this._state&Nt.TOUCH_DOLLY_ROTATE)===Nt.TOUCH_DOLLY_ROTATE||(this._state&Nt.TOUCH_ZOOM_ROTATE)===Nt.TOUCH_ZOOM_ROTATE){let _=bo.x-this._activePointers[1].clientX,w=bo.y-this._activePointers[1].clientY,F=Math.sqrt(_*_+w*w),X=s.y-F;s.set(0,F);let H=this.dollyToCursor?(n.x-this._elementRect.x)/this._elementRect.width*2-1:0,he=this.dollyToCursor?(n.y-this._elementRect.y)/this._elementRect.height*-2+1:0;this._state===Nt.TOUCH_DOLLY||this._state===Nt.TOUCH_DOLLY_ROTATE||this._state===Nt.TOUCH_DOLLY_TRUCK||this._state===Nt.TOUCH_DOLLY_OFFSET?this._dollyInternal(X*hO,H,he):this._zoomInternal(X*hO,H,he)}((this._state&Nt.TRUCK)===Nt.TRUCK||(this._state&Nt.TOUCH_TRUCK)===Nt.TOUCH_TRUCK||(this._state&Nt.TOUCH_DOLLY_TRUCK)===Nt.TOUCH_DOLLY_TRUCK||(this._state&Nt.TOUCH_ZOOM_TRUCK)===Nt.TOUCH_ZOOM_TRUCK)&&this._truckInternal(D,P,!1),((this._state&Nt.OFFSET)===Nt.OFFSET||(this._state&Nt.TOUCH_OFFSET)===Nt.TOUCH_OFFSET||(this._state&Nt.TOUCH_DOLLY_OFFSET)===Nt.TOUCH_DOLLY_OFFSET||(this._state&Nt.TOUCH_ZOOM_OFFSET)===Nt.TOUCH_ZOOM_OFFSET)&&this._truckInternal(D,P,!0),this.dispatchEvent({type:"control"})},x=()=>{F8(this._activePointers,bo),n.copy(bo),this._activePointers.length===0&&(this._domElement.ownerDocument.removeEventListener("pointermove",c,{passive:!1}),this._domElement.ownerDocument.removeEventListener("pointerup",p),this._domElement.ownerDocument.removeEventListener("touchmove",h,{passive:!1}),this._domElement.ownerDocument.removeEventListener("touchend",f),this.dispatchEvent({type:"controlend"}))};this._domElement.addEventListener("pointerdown",a),CMe&&this._domElement.addEventListener("mousedown",o),CMe&&this._domElement.addEventListener("touchstart",l),this._domElement.addEventListener("pointercancel",p),this._domElement.addEventListener("wheel",g,{passive:!1}),this._domElement.addEventListener("contextmenu",y),this._removeAllEventListeners=()=>{this._domElement.removeEventListener("pointerdown",a),this._domElement.removeEventListener("mousedown",o),this._domElement.removeEventListener("touchstart",l),this._domElement.removeEventListener("pointercancel",p),this._domElement.removeEventListener("wheel",g,{passive:!1}),this._domElement.removeEventListener("contextmenu",y),this._domElement.ownerDocument.removeEventListener("pointermove",c,{passive:!1}),this._domElement.ownerDocument.removeEventListener("mousemove",u),this._domElement.ownerDocument.removeEventListener("touchmove",h,{passive:!1}),this._domElement.ownerDocument.removeEventListener("pointerup",p),this._domElement.ownerDocument.removeEventListener("mouseup",d),this._domElement.ownerDocument.removeEventListener("touchend",f)},this.cancel=()=>{this._state!==Nt.NONE&&(this._state=Nt.NONE,this._activePointers.length=0,x())}}this.update(0)}static install(r){mr=r.THREE,AMe=Object.freeze(new mr.Vector3(0,0,0)),pO=Object.freeze(new mr.Vector3(0,1,0)),U8=Object.freeze(new mr.Vector3(0,0,1)),bo=new mr.Vector2,pi=new mr.Vector3,sn=new mr.Vector3,rE=new mr.Vector3,uh=new mr.Vector3,hh=new mr.Vector3,R0=new mr.Vector3,OMe=new mr.Vector3,PMe=new mr.Vector3,Kc=new mr.Spherical,xS=new mr.Spherical,iE=new mr.Box3,NMe=new mr.Box3,B8=new mr.Sphere,LMe=new mr.Quaternion,k8=new mr.Quaternion,G8=new mr.Matrix4,dO=new mr.Raycaster}static get ACTION(){return Nt}get camera(){return this._camera}set camera(r){this._camera=r,this.updateCameraUp(),this._camera.updateProjectionMatrix(),this._updateNearPlaneCorners(),this._needsUpdate=!0}get enabled(){return this._enabled}set enabled(r){this._enabled=r,r?(this._domElement.style.touchAction="none",this._domElement.style.userSelect="none",this._domElement.style.webkitUserSelect="none"):(this.cancel(),this._domElement.style.touchAction="",this._domElement.style.userSelect="",this._domElement.style.webkitUserSelect="")}get active(){return!this._hasRested}get currentAction(){return this._state}get distance(){return this._spherical.radius}set distance(r){this._spherical.radius===r&&this._sphericalEnd.radius===r||(this._spherical.radius=r,this._sphericalEnd.radius=r,this._needsUpdate=!0)}get azimuthAngle(){return this._spherical.theta}set azimuthAngle(r){this._spherical.theta===r&&this._sphericalEnd.theta===r||(this._spherical.theta=r,this._sphericalEnd.theta=r,this._needsUpdate=!0)}get polarAngle(){return this._spherical.phi}set polarAngle(r){this._spherical.phi===r&&this._sphericalEnd.phi===r||(this._spherical.phi=r,this._sphericalEnd.phi=r,this._needsUpdate=!0)}get boundaryEnclosesCamera(){return this._boundaryEnclosesCamera}set boundaryEnclosesCamera(r){this._boundaryEnclosesCamera=r,this._needsUpdate=!0}addEventListener(r,e){super.addEventListener(r,e)}removeEventListener(r,e){super.removeEventListener(r,e)}rotate(r,e,i=!1){return this.rotateTo(this._sphericalEnd.theta+r,this._sphericalEnd.phi+e,i)}rotateAzimuthTo(r,e=!1){return this.rotateTo(r,this._sphericalEnd.phi,e)}rotatePolarTo(r,e=!1){return this.rotateTo(this._sphericalEnd.theta,r,e)}rotateTo(r,e,i=!1){let n=mr.MathUtils.clamp(r,this.minAzimuthAngle,this.maxAzimuthAngle),s=mr.MathUtils.clamp(e,this.minPolarAngle,this.maxPolarAngle);this._sphericalEnd.theta=n,this._sphericalEnd.phi=s,this._sphericalEnd.makeSafe(),this._needsUpdate=!0,i||(this._spherical.theta=this._sphericalEnd.theta,this._spherical.phi=this._sphericalEnd.phi);let a=!i||Sn(this._spherical.theta,this._sphericalEnd.theta,this.restThreshold)&&Sn(this._spherical.phi,this._sphericalEnd.phi,this.restThreshold);return this._createOnRestPromise(a)}dolly(r,e=!1){return this.dollyTo(this._sphericalEnd.radius-r,e)}dollyTo(r,e=!1){let i=this._sphericalEnd.radius,n=mr.MathUtils.clamp(r,this.minDistance,this.maxDistance);if(this.colliderMeshes.length>=1){let o=this._collisionTest(),l=Sn(o,this._spherical.radius);if(!(i>n)&&l)return Promise.resolve();this._sphericalEnd.radius=Math.min(n,o)}else this._sphericalEnd.radius=n;this._needsUpdate=!0,e||(this._spherical.radius=this._sphericalEnd.radius);let a=!e||Sn(this._spherical.radius,this._sphericalEnd.radius,this.restThreshold);return this._createOnRestPromise(a)}zoom(r,e=!1){return this.zoomTo(this._zoomEnd+r,e)}zoomTo(r,e=!1){this._zoomEnd=mr.MathUtils.clamp(r,this.minZoom,this.maxZoom),this._needsUpdate=!0,e||(this._zoom=this._zoomEnd);let i=!e||Sn(this._zoom,this._zoomEnd,this.restThreshold);return this._createOnRestPromise(i)}pan(r,e,i=!1){return console.warn("`pan` has been renamed to `truck`"),this.truck(r,e,i)}truck(r,e,i=!1){this._camera.updateMatrix(),uh.setFromMatrixColumn(this._camera.matrix,0),hh.setFromMatrixColumn(this._camera.matrix,1),uh.multiplyScalar(r),hh.multiplyScalar(-e);let n=pi.copy(uh).add(hh),s=sn.copy(this._targetEnd).add(n);return this.moveTo(s.x,s.y,s.z,i)}forward(r,e=!1){pi.setFromMatrixColumn(this._camera.matrix,0),pi.crossVectors(this._camera.up,pi),pi.multiplyScalar(r);let i=sn.copy(this._targetEnd).add(pi);return this.moveTo(i.x,i.y,i.z,e)}moveTo(r,e,i,n=!1){let s=pi.set(r,e,i).sub(this._targetEnd);this._encloseToBoundary(this._targetEnd,s,this.boundaryFriction),this._needsUpdate=!0,n||this._target.copy(this._targetEnd);let a=!n||Sn(this._target.x,this._targetEnd.x,this.restThreshold)&&Sn(this._target.y,this._targetEnd.y,this.restThreshold)&&Sn(this._target.z,this._targetEnd.z,this.restThreshold);return this._createOnRestPromise(a)}fitToBox(r,e,{cover:i=!1,paddingLeft:n=0,paddingRight:s=0,paddingBottom:a=0,paddingTop:o=0}={}){let l=[],c=r.isBox3?iE.copy(r):iE.setFromObject(r);c.isEmpty()&&(console.warn("camera-controls: fitTo() cannot be used with an empty box. Aborting"),Promise.resolve());let u=MMe(this._sphericalEnd.theta,RMe),h=MMe(this._sphericalEnd.phi,RMe);l.push(this.rotateTo(u,h,e));let p=pi.setFromSpherical(this._sphericalEnd).normalize(),d=LMe.setFromUnitVectors(p,U8),f=Sn(Math.abs(p.y),1);f&&d.multiply(k8.setFromAxisAngle(pO,u)),d.multiply(this._yAxisUpSpaceInverse);let m=NMe.makeEmpty();sn.copy(c.min).applyQuaternion(d),m.expandByPoint(sn),sn.copy(c.min).setX(c.max.x).applyQuaternion(d),m.expandByPoint(sn),sn.copy(c.min).setY(c.max.y).applyQuaternion(d),m.expandByPoint(sn),sn.copy(c.max).setZ(c.min.z).applyQuaternion(d),m.expandByPoint(sn),sn.copy(c.min).setZ(c.max.z).applyQuaternion(d),m.expandByPoint(sn),sn.copy(c.max).setY(c.min.y).applyQuaternion(d),m.expandByPoint(sn),sn.copy(c.max).setX(c.min.x).applyQuaternion(d),m.expandByPoint(sn),sn.copy(c.max).applyQuaternion(d),m.expandByPoint(sn),m.min.x-=n,m.min.y-=a,m.max.x+=s,m.max.y+=o,d.setFromUnitVectors(U8,p),f&&d.premultiply(k8.invert()),d.premultiply(this._yAxisUpSpace);let g=m.getSize(pi),y=m.getCenter(sn).applyQuaternion(d);if(w0(this._camera)){let E=this.getDistanceToFitBox(g.x,g.y,g.z,i);l.push(this.moveTo(y.x,y.y,y.z,e)),l.push(this.dollyTo(E,e)),l.push(this.setFocalOffset(0,0,0,e))}else if(Xf(this._camera)){let E=this._camera,b=E.right-E.left,x=E.top-E.bottom,S=i?Math.max(b/g.x,x/g.y):Math.min(b/g.x,x/g.y);l.push(this.moveTo(y.x,y.y,y.z,e)),l.push(this.zoomTo(S,e)),l.push(this.setFocalOffset(0,0,0,e))}return Promise.all(l)}fitToSphere(r,e){let i=[],s=r instanceof mr.Sphere?B8.copy(r):p2t(r,B8);if(i.push(this.moveTo(s.center.x,s.center.y,s.center.z,e)),w0(this._camera)){let a=this.getDistanceToFitSphere(s.radius);i.push(this.dollyTo(a,e))}else if(Xf(this._camera)){let a=this._camera.right-this._camera.left,o=this._camera.top-this._camera.bottom,l=2*s.radius,c=Math.min(a/l,o/l);i.push(this.zoomTo(c,e))}return i.push(this.setFocalOffset(0,0,0,e)),Promise.all(i)}setLookAt(r,e,i,n,s,a,o=!1){let l=sn.set(n,s,a),c=pi.set(r,e,i);this._targetEnd.copy(l),this._sphericalEnd.setFromVector3(c.sub(l).applyQuaternion(this._yAxisUpSpace)),this.normalizeRotations(),this._needsUpdate=!0,o||(this._target.copy(this._targetEnd),this._spherical.copy(this._sphericalEnd));let u=!o||Sn(this._target.x,this._targetEnd.x,this.restThreshold)&&Sn(this._target.y,this._targetEnd.y,this.restThreshold)&&Sn(this._target.z,this._targetEnd.z,this.restThreshold)&&Sn(this._spherical.theta,this._sphericalEnd.theta,this.restThreshold)&&Sn(this._spherical.phi,this._sphericalEnd.phi,this.restThreshold)&&Sn(this._spherical.radius,this._sphericalEnd.radius,this.restThreshold);return this._createOnRestPromise(u)}lerpLookAt(r,e,i,n,s,a,o,l,c,u,h,p,d,f=!1){let m=pi.set(n,s,a),g=sn.set(r,e,i);Kc.setFromVector3(g.sub(m).applyQuaternion(this._yAxisUpSpace));let y=rE.set(u,h,p),E=sn.set(o,l,c);xS.setFromVector3(E.sub(y).applyQuaternion(this._yAxisUpSpace)),this._targetEnd.copy(m.lerp(y,d));let b=xS.theta-Kc.theta,x=xS.phi-Kc.phi,S=xS.radius-Kc.radius;this._sphericalEnd.set(Kc.radius+S*d,Kc.phi+x*d,Kc.theta+b*d),this.normalizeRotations(),this._needsUpdate=!0,f||(this._target.copy(this._targetEnd),this._spherical.copy(this._sphericalEnd));let D=!f||Sn(this._target.x,this._targetEnd.x,this.restThreshold)&&Sn(this._target.y,this._targetEnd.y,this.restThreshold)&&Sn(this._target.z,this._targetEnd.z,this.restThreshold)&&Sn(this._spherical.theta,this._sphericalEnd.theta,this.restThreshold)&&Sn(this._spherical.phi,this._sphericalEnd.phi,this.restThreshold)&&Sn(this._spherical.radius,this._sphericalEnd.radius,this.restThreshold);return this._createOnRestPromise(D)}setPosition(r,e,i,n=!1){return this.setLookAt(r,e,i,this._targetEnd.x,this._targetEnd.y,this._targetEnd.z,n)}setTarget(r,e,i,n=!1){let s=this.getPosition(pi);return this.setLookAt(s.x,s.y,s.z,r,e,i,n)}setFocalOffset(r,e,i,n=!1){this._focalOffsetEnd.set(r,e,i),this._needsUpdate=!0,n||this._focalOffset.copy(this._focalOffsetEnd);let s=!n||Sn(this._focalOffset.x,this._focalOffsetEnd.x,this.restThreshold)&&Sn(this._focalOffset.y,this._focalOffsetEnd.y,this.restThreshold)&&Sn(this._focalOffset.z,this._focalOffsetEnd.z,this.restThreshold);return this._createOnRestPromise(s)}setOrbitPoint(r,e,i){this._camera.updateMatrixWorld(),uh.setFromMatrixColumn(this._camera.matrixWorldInverse,0),hh.setFromMatrixColumn(this._camera.matrixWorldInverse,1),R0.setFromMatrixColumn(this._camera.matrixWorldInverse,2);let n=pi.set(r,e,i),s=n.distanceTo(this._camera.position),a=n.sub(this._camera.position);uh.multiplyScalar(a.x),hh.multiplyScalar(a.y),R0.multiplyScalar(a.z),pi.copy(uh).add(hh).add(R0),pi.z=pi.z+s,this.dollyTo(s,!1),this.setFocalOffset(-pi.x,pi.y,-pi.z,!1),this.moveTo(r,e,i,!1)}setBoundary(r){if(!r){this._boundary.min.set(-1/0,-1/0,-1/0),this._boundary.max.set(1/0,1/0,1/0),this._needsUpdate=!0;return}this._boundary.copy(r),this._boundary.clampPoint(this._targetEnd,this._targetEnd),this._needsUpdate=!0}setViewport(r,e,i,n){if(r===null){this._viewport=null;return}this._viewport=this._viewport||new mr.Vector4,typeof r=="number"?this._viewport.set(r,e,i,n):this._viewport.copy(r)}getDistanceToFitBox(r,e,i,n=!1){if(H8(this._camera,"getDistanceToFitBox"))return this._spherical.radius;let s=r/e,a=this._camera.getEffectiveFOV()*mr.MathUtils.DEG2RAD,o=this._camera.aspect;return((n?s>o:s<o)?e:r/o)*.5/Math.tan(a*.5)+i*.5}getDistanceToFitSphere(r){if(H8(this._camera,"getDistanceToFitSphere"))return this._spherical.radius;let e=this._camera.getEffectiveFOV()*mr.MathUtils.DEG2RAD,i=Math.atan(Math.tan(e*.5)*this._camera.aspect)*2,n=1<this._camera.aspect?e:i;return r/Math.sin(n*.5)}getTarget(r){return(r&&r.isVector3?r:new mr.Vector3).copy(this._targetEnd)}getPosition(r){return(r&&r.isVector3?r:new mr.Vector3).setFromSpherical(this._sphericalEnd).applyQuaternion(this._yAxisUpSpaceInverse).add(this._targetEnd)}getFocalOffset(r){return(r&&r.isVector3?r:new mr.Vector3).copy(this._focalOffsetEnd)}normalizeRotations(){this._sphericalEnd.theta=this._sphericalEnd.theta%tE,this._sphericalEnd.theta<0&&(this._sphericalEnd.theta+=tE),this._spherical.theta+=tE*Math.round((this._sphericalEnd.theta-this._spherical.theta)/tE)}reset(r=!1){let e=[this.setLookAt(this._position0.x,this._position0.y,this._position0.z,this._target0.x,this._target0.y,this._target0.z,r),this.setFocalOffset(this._focalOffset0.x,this._focalOffset0.y,this._focalOffset0.z,r),this.zoomTo(this._zoom0,r)];return Promise.all(e)}saveState(){this.getTarget(this._target0),this.getPosition(this._position0),this._zoom0=this._zoom,this._focalOffset0.copy(this._focalOffset)}updateCameraUp(){this._yAxisUpSpace.setFromUnitVectors(this._camera.up,pO),DMe(this._yAxisUpSpaceInverse.copy(this._yAxisUpSpace))}update(r){let e=this._state===Nt.NONE?this.dampingFactor:this.draggingDampingFactor,i=Math.min(e*r*60,1),n=this._sphericalEnd.theta-this._spherical.theta,s=this._sphericalEnd.phi-this._spherical.phi,a=this._sphericalEnd.radius-this._spherical.radius,o=OMe.subVectors(this._targetEnd,this._target),l=PMe.subVectors(this._focalOffsetEnd,this._focalOffset);if(!_n(n)||!_n(s)||!_n(a)||!_n(o.x)||!_n(o.y)||!_n(o.z)||!_n(l.x)||!_n(l.y)||!_n(l.z)?(this._spherical.set(this._spherical.radius+a*i,this._spherical.phi+s*i,this._spherical.theta+n*i),this._target.add(o.multiplyScalar(i)),this._focalOffset.add(l.multiplyScalar(i)),this._needsUpdate=!0):(this._spherical.copy(this._sphericalEnd),this._target.copy(this._targetEnd),this._focalOffset.copy(this._focalOffsetEnd)),this._dollyControlAmount!==0){if(w0(this._camera)){let d=this._camera,f=pi.setFromSpherical(this._sphericalEnd).applyQuaternion(this._yAxisUpSpaceInverse).normalize().negate(),m=sn.copy(f).cross(d.up).normalize();m.lengthSq()===0&&(m.x=1);let g=rE.crossVectors(m,f),y=this._sphericalEnd.radius*Math.tan(d.getEffectiveFOV()*mr.MathUtils.DEG2RAD*.5),b=(this._sphericalEnd.radius-this._dollyControlAmount-this._sphericalEnd.radius)/this._sphericalEnd.radius,x=pi.copy(this._targetEnd).add(m.multiplyScalar(this._dollyControlCoord.x*y*d.aspect)).add(g.multiplyScalar(this._dollyControlCoord.y*y));this._targetEnd.lerp(x,b)}else if(Xf(this._camera)){let d=this._camera,f=d.getWorldDirection(pi.clone()),m=this._targetEnd.x*f.x+this._targetEnd.y*f.y+this._targetEnd.z*f.z,g=pi.set(this._dollyControlCoord.x,this._dollyControlCoord.y,(d.near+d.far)/(d.near-d.far)).unproject(d),y=sn.set(0,0,-1).applyQuaternion(d.quaternion),E=rE.copy(g).add(y.multiplyScalar(-g.dot(d.up))),x=-(this._zoom-this._dollyControlAmount-this._zoomEnd)/this._zoom;this._targetEnd.lerp(E,x);let S=this._targetEnd.x*f.x+this._targetEnd.y*f.y+this._targetEnd.z*f.z,D=f.multiplyScalar(S-m);this._targetEnd.sub(D)}this._target.copy(this._targetEnd),this._boundary.clampPoint(this._targetEnd,this._targetEnd),this._dollyControlAmount=0}let c=this._collisionTest();this._spherical.radius=Math.min(this._spherical.radius,c),this._spherical.makeSafe(),this._camera.position.setFromSpherical(this._spherical).applyQuaternion(this._yAxisUpSpaceInverse).add(this._target),this._camera.lookAt(this._target),(!_n(this._focalOffset.x)||!_n(this._focalOffset.y)||!_n(this._focalOffset.z))&&(this._camera.updateMatrix(),uh.setFromMatrixColumn(this._camera.matrix,0),hh.setFromMatrixColumn(this._camera.matrix,1),R0.setFromMatrixColumn(this._camera.matrix,2),uh.multiplyScalar(this._focalOffset.x),hh.multiplyScalar(-this._focalOffset.y),R0.multiplyScalar(this._focalOffset.z),pi.copy(uh).add(hh).add(R0),this._camera.position.add(pi)),this._boundaryEnclosesCamera&&this._encloseToBoundary(this._camera.position.copy(this._target),pi.setFromSpherical(this._spherical).applyQuaternion(this._yAxisUpSpaceInverse),1);let h=this._zoomEnd-this._zoom;this._zoom+=h*i,this._camera.zoom!==this._zoom&&(_n(h)&&(this._zoom=this._zoomEnd),this._camera.zoom=this._zoom,this._camera.updateProjectionMatrix(),this._updateNearPlaneCorners(),this._needsUpdate=!0);let p=this._needsUpdate;return p&&!this._updatedLastTime?(this._hasRested=!1,this.dispatchEvent({type:"wake"}),this.dispatchEvent({type:"update"})):p?(this.dispatchEvent({type:"update"}),_n(n,this.restThreshold)&&_n(s,this.restThreshold)&&_n(a,this.restThreshold)&&_n(o.x,this.restThreshold)&&_n(o.y,this.restThreshold)&&_n(o.z,this.restThreshold)&&_n(l.x,this.restThreshold)&&_n(l.y,this.restThreshold)&&_n(l.z,this.restThreshold)&&_n(h,this.restThreshold)&&!this._hasRested&&(this._hasRested=!0,this.dispatchEvent({type:"rest"}))):!p&&this._updatedLastTime&&this.dispatchEvent({type:"sleep"}),this._updatedLastTime=p,this._needsUpdate=!1,p}toJSON(){return JSON.stringify({enabled:this._enabled,minDistance:this.minDistance,maxDistance:ES(this.maxDistance),minZoom:this.minZoom,maxZoom:ES(this.maxZoom),minPolarAngle:this.minPolarAngle,maxPolarAngle:ES(this.maxPolarAngle),minAzimuthAngle:ES(this.minAzimuthAngle),maxAzimuthAngle:ES(this.maxAzimuthAngle),dampingFactor:this.dampingFactor,draggingDampingFactor:this.draggingDampingFactor,dollySpeed:this.dollySpeed,truckSpeed:this.truckSpeed,dollyToCursor:this.dollyToCursor,verticalDragToForward:this.verticalDragToForward,target:this._targetEnd.toArray(),position:pi.setFromSpherical(this._sphericalEnd).add(this._targetEnd).toArray(),zoom:this._zoomEnd,focalOffset:this._focalOffsetEnd.toArray(),target0:this._target0.toArray(),position0:this._position0.toArray(),zoom0:this._zoom0,focalOffset0:this._focalOffset0.toArray()})}fromJSON(r,e=!1){let i=JSON.parse(r),n=pi.fromArray(i.position);this.enabled=i.enabled,this.minDistance=i.minDistance,this.maxDistance=bS(i.maxDistance),this.minZoom=i.minZoom,this.maxZoom=bS(i.maxZoom),this.minPolarAngle=i.minPolarAngle,this.maxPolarAngle=bS(i.maxPolarAngle),this.minAzimuthAngle=bS(i.minAzimuthAngle),this.maxAzimuthAngle=bS(i.maxAzimuthAngle),this.dampingFactor=i.dampingFactor,this.draggingDampingFactor=i.draggingDampingFactor,this.dollySpeed=i.dollySpeed,this.truckSpeed=i.truckSpeed,this.dollyToCursor=i.dollyToCursor,this.verticalDragToForward=i.verticalDragToForward,this._target0.fromArray(i.target0),this._position0.fromArray(i.position0),this._zoom0=i.zoom0,this._focalOffset0.fromArray(i.focalOffset0),this.moveTo(i.target[0],i.target[1],i.target[2],e),Kc.setFromVector3(n.sub(this._targetEnd).applyQuaternion(this._yAxisUpSpace)),this.rotateTo(Kc.theta,Kc.phi,e),this.zoomTo(i.zoom,e),this.setFocalOffset(i.focalOffset[0],i.focalOffset[1],i.focalOffset[2],e),this._needsUpdate=!0}dispose(){this._removeAllEventListeners()}_findPointerById(r){let e=null;return this._activePointers.some(i=>i.pointerId===r?(e=i,!0):!1),e}_encloseToBoundary(r,e,i){let n=e.lengthSq();if(n===0)return r;let s=sn.copy(e).add(r),o=this._boundary.clampPoint(s,rE).sub(s),l=o.lengthSq();if(l===0)return r.add(e);if(l===n)return r;if(i===0)return r.add(e).add(o);{let c=1+i*l/e.dot(o);return r.add(sn.copy(e).multiplyScalar(c)).add(o.multiplyScalar(1-i))}}_updateNearPlaneCorners(){if(w0(this._camera)){let r=this._camera,e=r.near,i=r.getEffectiveFOV()*mr.MathUtils.DEG2RAD,n=Math.tan(i*.5)*e,s=n*r.aspect;this._nearPlaneCorners[0].set(-s,-n,0),this._nearPlaneCorners[1].set(s,-n,0),this._nearPlaneCorners[2].set(s,n,0),this._nearPlaneCorners[3].set(-s,n,0)}else if(Xf(this._camera)){let r=this._camera,e=1/r.zoom,i=r.left*e,n=r.right*e,s=r.top*e,a=r.bottom*e;this._nearPlaneCorners[0].set(i,s,0),this._nearPlaneCorners[1].set(n,s,0),this._nearPlaneCorners[2].set(n,a,0),this._nearPlaneCorners[3].set(i,a,0)}}_collisionTest(){let r=1/0;if(!(this.colliderMeshes.length>=1)||H8(this._camera,"_collisionTest"))return r;let i=pi.setFromSpherical(this._spherical).divideScalar(this._spherical.radius);G8.lookAt(AMe,i,this._camera.up);for(let n=0;n<4;n++){let s=sn.copy(this._nearPlaneCorners[n]);s.applyMatrix4(G8);let a=rE.addVectors(this._target,s);dO.set(a,i),dO.far=this._spherical.radius+1;let o=dO.intersectObjects(this.colliderMeshes);o.length!==0&&o[0].distance<r&&(r=o[0].distance)}return r}_getClientRect(r){let e=this._domElement.getBoundingClientRect();return r.x=e.left,r.y=e.top,this._viewport?(r.x+=this._viewport.x,r.y+=e.height-this._viewport.w-this._viewport.y,r.width=this._viewport.z,r.height=this._viewport.w):(r.width=e.width,r.height=e.height),r}_createOnRestPromise(r){return r?Promise.resolve():(this._hasRested=!1,this.dispatchEvent({type:"transitionstart"}),new Promise(e=>{let i=()=>{this.removeEventListener("rest",i),e()};this.addEventListener("rest",i)}))}_removeAllEventListeners(){}};function p2t(t,r){let e=r,i=e.center;iE.makeEmpty(),t.traverseVisible(s=>{s.isMesh&&iE.expandByObject(s)}),iE.getCenter(i);let n=0;return t.traverseVisible(s=>{if(!s.isMesh)return;let a=s,o=a.geometry.clone();if(o.applyMatrix4(a.matrixWorld),o.isBufferGeometry){let c=o.attributes.position;for(let u=0,h=c.count;u<h;u++)pi.fromBufferAttribute(c,u),n=Math.max(n,i.distanceToSquared(pi))}else{let l=o.attributes.position,c=new mr.Vector3;for(let u=0,h=l.count;u<h;u++)c.fromBufferAttribute(l,u),n=Math.max(n,i.distanceToSquared(c))}}),e.radius=Math.sqrt(n),e}function z8(t){return t.isPerspectiveCamera}function j8(t){return t.isOrthographicCamera}function d2t(t){return[qn.ACTION.ROTATE,z8(t)?qn.ACTION.DOLLY:j8(t)?qn.ACTION.ZOOM:qn.ACTION.NONE,qn.ACTION.TRUCK]}function f2t(t){return[qn.ACTION.TOUCH_ROTATE,qn.ACTION.TOUCH_TRUCK,z8(t)?qn.ACTION.TOUCH_DOLLY_TRUCK:j8(t)?qn.ACTION.TOUCH_ZOOM_TRUCK:qn.ACTION.NONE,z8(t)?qn.ACTION.TOUCH_DOLLY_ROTATE:j8(t)?qn.ACTION.TOUCH_ZOOM_ROTATE:qn.ACTION.NONE]}var fO=class{constructor(r,e){this.center=new A;this._enableDamping=!0;this._enableZoom=!0;this._enableRotate=!0;this._enablePan=!0;this._rotateToCursor=!1;this._mouseButtons={};this._touches={};this.clock=new df;this.keyPanSpeed=7;this.autoRotate=!1;this.autoRotateSpeed=2;this.keys={LEFT:"ArrowLeft",UP:"ArrowUp",RIGHT:"ArrowRight",BOTTOM:"ArrowDown"};this.onKeyDown=r=>{!this.enabled||!this.enablePan||this.handleKeyDown(r)};qn.install({THREE:Pt}),this.cameraControls=new qn(r,e),this.object=r,this.domElement=e,this.dampingFactor=.05,this.zoomSpeed=.05,this.rotateSpeed=1,this.panSpeed=1,this.mouseButtons={LEFT:bi.ROTATE,MIDDLE:bi.DOLLY,RIGHT:bi.PAN},this.touches={ONE:ao.ROTATE,TWO:ao.DOLLY_PAN}}get minDistance(){return this.cameraControls.minDistance}set minDistance(r){this.cameraControls.minDistance=r}get maxDistance(){return this.cameraControls.maxDistance}set maxDistance(r){this.cameraControls.maxDistance=r}get minZoom(){return this.cameraControls.minZoom}set minZoom(r){this.cameraControls.minZoom=r}get maxZoom(){return this.cameraControls.maxZoom}set maxZoom(r){this.cameraControls.maxZoom=r}get minPolarAngle(){return this.cameraControls.minPolarAngle}set minPolarAngle(r){this.cameraControls.minPolarAngle=r}get maxPolarAngle(){return this.cameraControls.maxPolarAngle}set maxPolarAngle(r){this.cameraControls.maxPolarAngle=r}get minAzimuthAngle(){return this.cameraControls.minAzimuthAngle}set minAzimuthAngle(r){this.cameraControls.minAzimuthAngle=r}get maxAzimuthAngle(){return this.cameraControls.maxAzimuthAngle}set maxAzimuthAngle(r){this.cameraControls.maxAzimuthAngle=r}get enabled(){return this.cameraControls.enabled}set enabled(r){this.cameraControls.enabled=r}get position(){return this.cameraControls.getPosition(new A)}set position(r){this.cameraControls.setPosition(r.x,r.y,r.z)}get target(){let r=new A;return this.cameraControls.getTarget(r),r}set target(r){this.cameraControls.setTarget(r.x,r.y,r.z)}get enableDamping(){return this._enableDamping}set enableDamping(r){this._enableDamping=r,r||(this.dampingFactorValue=this.cameraControls.dampingFactor),this.cameraControls.dampingFactor=r?this.dampingFactorValue:1,this.cameraControls.draggingDampingFactor=r?this.dampingFactorValue:1,r&&(this.dampingFactorValue=void 0)}get dampingFactor(){return this.cameraControls.dampingFactor}set dampingFactor(r){this.cameraControls.dampingFactor=r,this.cameraControls.draggingDampingFactor=r}get enableZoom(){return this._enableZoom}set enableZoom(r){this._enableZoom=r,r||(this.dollySpeedValue=this.cameraControls.dollySpeed),this.cameraControls.dollySpeed=r?this.dollySpeedValue:0,r&&(this.dollySpeedValue=void 0)}get zoomSpeed(){return this.cameraControls.dollySpeed}set zoomSpeed(r){this.cameraControls.dollySpeed=r}get enableRotate(){return this._enableRotate}set enableRotate(r){this._enableRotate=r,r||(this.rotateSpeedValue=this.cameraControls.azimuthRotateSpeed),this.cameraControls.azimuthRotateSpeed=r?this.rotateSpeedValue:0,this.cameraControls.polarRotateSpeed=r?this.rotateSpeedValue:0,r&&(this.rotateSpeedValue=void 0)}get rotateSpeed(){return this.cameraControls.azimuthRotateSpeed}set rotateSpeed(r){this.cameraControls.azimuthRotateSpeed=r,this.cameraControls.polarRotateSpeed=r}get enablePan(){return this._enablePan}set enablePan(r){this._enablePan=r,r||(this.panSpeedValue=this.cameraControls.truckSpeed),this.cameraControls.truckSpeed=r?this.panSpeedValue:0,r&&(this.panSpeedValue=void 0)}get panSpeed(){return this.cameraControls.truckSpeed}set panSpeed(r){this.cameraControls.truckSpeed=r}get dollyToCursor(){return this.cameraControls.dollyToCursor}set dollyToCursor(r){this.cameraControls.dollyToCursor=r}get screenSpacePanning(){return!this.cameraControls.verticalDragToForward}set screenSpacePanning(r){this.cameraControls.verticalDragToForward=!r}get mouseButtons(){return this._mouseButtons}set mouseButtons(r){this._mouseButtons=r;for(let e in r){let i=d2t(this.object)[r[e]];e==="MIDDLE"?this.cameraControls.mouseButtons.wheel=i:this.cameraControls.mouseButtons[e.toLowerCase()]=i}this.cameraControls.mouseButtons.middle=qn.ACTION.NONE}get touches(){return this._touches}set touches(r){this._touches=r;for(let e in r){let i=f2t(this.object)[r[e]],n=e.toLowerCase();if(n==="one"){(i===qn.ACTION.TOUCH_ROTATE||i===qn.ACTION.TOUCH_TRUCK)&&(this.cameraControls.touches[n]=i);continue}this.cameraControls.touches[n]=i}}get target0(){let r=JSON.parse(this.cameraControls.toJSON()).target0;return new A(r[0],r[1],r[2])}set target0(r){let e=JSON.parse(this.cameraControls.toJSON());e.target0=r.toArray(),this.cameraControls.fromJSON(JSON.stringify(e))}get position0(){let r=JSON.parse(this.cameraControls.toJSON()).position0;return new A(r[0],r[1],r[2])}set position0(r){let e=JSON.parse(this.cameraControls.toJSON());e.position0=r.toArray(),this.cameraControls.fromJSON(JSON.stringify(e))}get zoom0(){return JSON.parse(this.cameraControls.toJSON()).zoom0}set zoom0(r){let e=JSON.parse(this.cameraControls.toJSON());e.zoom0=r,this.cameraControls.fromJSON(JSON.stringify(e))}handleKeyDown(r){let e=!1;switch(r.code){case this.keys.UP:r.ctrlKey||r.metaKey||r.shiftKey?this.cameraControls.rotateAzimuthTo(2*Math.PI*this.cameraControls.azimuthRotateSpeed/this.domElement.clientHeight,!1):this.cameraControls.truck(0,this.keyPanSpeed*.05/this.panSpeed,!1),e=!0;break;case this.keys.BOTTOM:r.ctrlKey||r.metaKey||r.shiftKey?this.cameraControls.rotateAzimuthTo(-2*Math.PI*this.cameraControls.azimuthRotateSpeed/this.domElement.clientHeight,!1):this.cameraControls.truck(0,-this.keyPanSpeed*.05/this.panSpeed,!1),e=!0;break;case this.keys.LEFT:r.ctrlKey||r.metaKey||r.shiftKey?this.cameraControls.rotatePolarTo(2*Math.PI*this.cameraControls.polarRotateSpeed/this.domElement.clientHeight,!1):this.cameraControls.truck(this.keyPanSpeed*.05/this.panSpeed,0,!1),e=!0;break;case this.keys.RIGHT:r.ctrlKey||r.metaKey||r.shiftKey?this.cameraControls.rotatePolarTo(-2*Math.PI*this.cameraControls.polarRotateSpeed/this.domElement.clientHeight,!1):this.cameraControls.truck(-this.keyPanSpeed*.05/this.panSpeed,0,!1),e=!0;break}e&&(r.preventDefault(),this.update())}getAutoRotationAngle(){return 2*Math.PI/60/60*this.autoRotateSpeed}listenToKeyEvents(r){r.addEventListener("keydown",this.onKeyDown),this.domElementKeyEvents=r}update(){let r=this.clock.getDelta();this.cameraControls.update(r),this.autoRotate&&this.cameraControls.currentAction===qn.ACTION.NONE&&this.cameraControls.rotate(this.getAutoRotationAngle(),0,!1)}saveState(){this.cameraControls.saveState()}reset(){this.cameraControls.reset(!0)}dispose(){this.cameraControls.dispose()}getPolarAngle(){return this.cameraControls.polarAngle}getAzimuthalAngle(){return this.cameraControls.azimuthAngle}getDistance(){return this.cameraControls.distance}addEventListener(r,e){this.cameraControls.addEventListener(r,e)}removeEventListener(r,e){this.cameraControls.removeEventListener(r,e)}dispatchEvent(r){this.cameraControls.dispatchEvent(r)}setLookAt(r,e){this.cameraControls.setLookAt(r.x,r.y,r.z,e.x,e.y,e.z,!1),this.cameraControls.setFocalOffset(0,0,0,!1)}setOrbitPoint(r){this.cameraControls.setOrbitPoint(r.x,r.y,r.z)}};var mO,rl=class extends po{constructor(e){super(St.guid());this.needsFrustumCulled=!1;this.snapType="Dot";this.snapLineVisible=!1;this.snapType=e,this.drawSnapFunctions={Dot:this.drawDot.bind(this),Square:this.drawSquare.bind(this),Cross:this.drawCross.bind(this),Triangle:this.drawTriangle.bind(this),Perpendicular:this.drawPerpendicular.bind(this)}}setSnapLineVisible(e){this.snapLineVisible=e}draw(e,i){this.osnapInfo&&(this.snapLineVisible&&this.drawSnapLine(e,i),e.save(),e.fillStyle=rl.FILL_COLOR,e.strokeStyle=rl.LINE_COLOR,e.lineWidth=rl.LINE_WIDTH,e.beginPath(),this.drawSnapFunctions[this.snapType](e,i),mO&&this.drawDebug(e,i),e.closePath(),e.fill(),e.stroke(),e.restore())}drawDebug(e,i){mO==null||mO.forEach(n=>{let s=this.transToScreenCoord(n.start,i),a=this.transToScreenCoord(n.end,i);e.moveTo(s.x,s.y),e.lineTo(a.x,a.y)})}drawSelect(e,i){}isPointInPath(e){return!1}drawSnapLine(e,i){e.save(),e.strokeStyle=rl.SNAP_LINE_COLOR,e.lineWidth=rl.LINE_WIDTH;let n=this.transToScreenCoord(this.osnapInfo.line.start,i),s=this.transToScreenCoord(this.osnapInfo.line.end,i);e.moveTo(n.x,n.y),e.lineTo(s.x,s.y),e.stroke(),e.restore()}drawDot(e,i){let n=this.transToScreenCoord(this.osnapInfo.point,i);e.arc(n.x,n.y,rl.SNAP_ICON_SIZE/3,0,Math.PI*2)}drawSquare(e,i){let n=this.transToScreenCoord(this.osnapInfo.point,i),s=rl.SNAP_ICON_SIZE/1.2,a=rl.SNAP_ICON_SIZE/1.2;e.rect(n.x-s/2,n.y-a/2,s,a)}drawTriangle(e,i){let n=this.transToScreenCoord(this.osnapInfo.point,i),s=rl.SNAP_ICON_SIZE/1.2/2,a=new le(0,-s).add(n),o=new le(-.87*s,s/2).add(n),l=new le(.87*s,s/2).add(n);e.moveTo(a.x,a.y),e.lineTo(o.x,o.y),e.lineTo(l.x,l.y),e.closePath()}drawCross(e,i){let n=this.transToScreenCoord(this.osnapInfo.point,i),s=rl.SNAP_ICON_SIZE/1.2/2,a=new le(-s,-s).add(n),o=new le(s,s).add(n),l=new le(s,-s).add(n),c=new le(-s,s).add(n);e.moveTo(a.x,a.y),e.lineTo(o.x,o.y),e.moveTo(l.x,l.y),e.lineTo(c.x,c.y)}drawPerpendicular(e,i){let n=this.transToScreenCoord(this.osnapInfo.point,i),s=rl.SNAP_ICON_SIZE/1.2/2;[new le(0,0).add(n),new le(-s,0).add(n),new le(0,0).add(n),new le(0,s).add(n),new le(s,s).add(n),new le(-s,s).add(n),new le(-s,s).add(n),new le(-s,-s).add(n)].forEach((o,l)=>{l===0?e.moveTo(o.x,o.y):e.lineTo(o.x,o.y)})}update(e){this.osnapInfo=e}getClassType(){return"SnapDrawable"}},il=rl;il.LINE_COLOR="rgba(255, 240, 0, 0.8)",il.FILL_COLOR="rgba(135, 206, 250, 0.5)",il.SNAP_LINE_COLOR="rgba(255, 240, 0, 0.3)",il.LINE_WIDTH=2.5,il.SNAP_ICON_SIZE=10;Dr._registerDrawableClass(il);var m2t=1e-5,gO=class{constructor(r){this.drawableList=new Hp("snap");this.markers={};this.activeOSnapType=0;this.snapTolerance=1;var e;this.overlayRender=r,(e=this.overlayRender)==null||e.addDrawableList(this.drawableList),this.initOSnapMarkers()}initOSnapMarkers(){let r=new il("Square"),e=new il("Triangle"),i=new il("Dot"),n=new il("Cross"),s=new il("Perpendicular");this.markers[2]=r,this.markers[4]=r,this.markers[8]=e,this.markers[1]=i,this.markers[32]=n,this.markers[16]=s,Object.values(this.markers).forEach(a=>{a.visible=!1,this.drawableList.addDrawable(a)})}updateSnapTolerance(r){this.snapTolerance=r}getSnapTolerance(){return this.snapTolerance}getMarker(r){return this.markers[r]}deactivate(){this.activeOSnapType&&(this.markers[this.activeOSnapType].visible=!1),this.activeOSnapType=0}destroy(){}handleSnap(r,e,i,n){if(!(e!=null&&e.length)){this.activateMarker(0);return}let s=this.getInteractionLines(r,e);if(s){let a=this.getSnapInfo(r,s,n);if(!a||a.type===0){this.activateMarker(0);return}return this.activateMarker(a.type,i,a),a.point}this.activateMarker(0)}activateMarker(r,e=!1,i){var s;this.activeOSnapType&&(this.markers[this.activeOSnapType].visible=!1),this.activeOSnapType=r;let n=this.markers[r];n&&i&&(n.setSnapLineVisible(e),n.update(i),n.visible=!0),(s=this.overlayRender)==null||s.render()}getFootOfPerpendicular(r,e,i=m2t){let{start:n,end:s}=e,a=n.x-s.x,o=n.y-s.y,l=n.z-s.z;if(n.distanceTo(s)<i)return n.clone();let c=(r.x-n.x)*(n.x-s.x)+(r.y-n.y)*(n.y-s.y)+(r.z-n.z)*(n.z-s.z);return c=c/(a*a+o*o+l*l),new A(n.x+c*a,n.y+c*o,n.z+c*l)}getInteractionLines(r,e){if(!e.length)return;let i=[],n=new Ot;n.setFromCenterAndSize(r,new A(1,1,1).multiplyScalar(this.snapTolerance*5));let s=new Ot;for(let a=0;a<e.length;a++){let l=e[a].object;if(l instanceof _r){let c=l instanceof oi?2:1,u=l.geometry.index,h=l.geometry.attributes.position;if(u)for(let p=0,d=u.count;p<d;p+=c){let f=u.getX(p),m=u.getX(p+1),g=new A,y=new A;g.fromBufferAttribute(h,f),y.fromBufferAttribute(h,m),g.applyMatrix4(l.matrixWorld),y.applyMatrix4(l.matrixWorld),s.setFromPoints([g,y]),n.intersectsBox(s)&&i.push({start:g,end:y})}else for(let p=1,d=h.count;p<d;p+=c){let f=new A,m=new A;f.fromBufferAttribute(h,p-1),m.fromBufferAttribute(h,p),f.applyMatrix4(l.matrixWorld),m.applyMatrix4(l.matrixWorld),s.setFromPoints([f,m]),n.intersectsBox(s)&&i.push({start:f,end:m})}}}return i}getSnapInfo(r,e,i){let n=[],s;for(let a=0;a<e.length;a++){let o=e[a],{start:l,end:c}=e[a];if(i){let p=this.getFootOfPerpendicular(i,o,this.snapTolerance),d=r.distanceTo(p);if(d<this.snapTolerance){n.push({distance:lr.floorNumber(d,7),type:16,point:p,line:o});continue}}let u=r.distanceTo(l),h=r.distanceTo(c);if(u<this.snapTolerance){n.push({distance:lr.floorNumber(u,7),type:2,point:l,line:o});continue}else if(h<this.snapTolerance){n.push({distance:lr.floorNumber(h,7),type:4,point:c,line:o});continue}if(Wt.isPointOnLineSegment(r,o,this.snapTolerance)){let p=c.clone().add(l).multiplyScalar(.5),d=p.distanceTo(r);if(d<this.snapTolerance){n.push({point:p,distance:lr.floorNumber(d,7),type:8,line:o});continue}if(s){let f=Wt.getLineSegmentsIntersectingPoint(s,o);if(f){let m=r.distanceTo(f)/2;if(m<this.snapTolerance){n.push({point:f,distance:lr.floorNumber(m,7),type:32,line:o}),s=void 0;continue}continue}}else{let f=this.getFootOfPerpendicular(r,o,this.snapTolerance),m=r.distanceTo(f);if(m<this.snapTolerance){n.push({point:f,distance:lr.floorNumber(m,7),type:1,line:o}),s=o;continue}}}}return n=n.sort((a,o)=>o.type-a.type),n[0]}};var W8=Un(Yl(),1);var ph=class{constructor(r,e,i){this.follow=r=>{let{x:e,y:i}=Mr.getScreenPointByEvent(r,this.parentNode);this.node.style.left=e+15+"px",this.node.style.top=i-30+"px"};this.show=()=>this.node.hasAttribute("hidden")&&this.node.removeAttribute("hidden");this.hide=()=>!this.node.hasAttribute("hidden")&&this.node.setAttribute("hidden","");this.destroy=()=>{this.target?this.target.removeEventListener(wf,this.follow):document.removeEventListener(wf,this.follow),this.parentNode.removeChild(this.node)};this.node=document.createElement("div"),this.node.id=r,e&&this.node.append(e),this.childNode=document.createElement("div"),this.target=i==null?void 0:i.target,this.parentNode=(i==null?void 0:i.parentNode)||document.body,i!=null&&i.followPointer&&(this.node.classList.add("follow-tooltip"),this.target?this.target.addEventListener(wf,this.follow):document.addEventListener(wf,this.follow)),this.parentNode.appendChild(this.node),!(i!=null&&i.showOnCreate)&&this.node.setAttribute("hidden","")}setContent(r){this.node.textContent&&(this.node.textContent=null),(0,W8.forEach)(this.node.children,e=>{this.node.removeChild(e)}),this.node.append(r),this.node.appendChild(this.childNode)}updateChildContent(r){this.childNode.textContent&&(this.childNode.textContent=null),(0,W8.forEach)(this.childNode.children,e=>{this.childNode.removeChild(e)}),this.childNode.append(r)}};var vO=class{constructor(r){this.mouseDown=!1;this.mouseMove=!1;this.mouseDownPositionX=-1;this.mouseDownPositionY=-1;this.tempEnableRotate=!1;this.actived=!1;this.isResolvedOrRejected=!1;this.mousedown=r=>{var e,i;if(r.preventDefault(),r.button===0){this.mouseDown=!0;let n=Mr.getScreenPointByEvent(r,this.viewerContainer);this.mouseDownPositionX=n.x,this.mouseDownPositionY=n.y,(e=this.tooltip)==null||e.hide(),(i=this.tooltip)==null||i.destroy(),this.tooltip=void 0}};this.mousemove=r=>{if(r.preventDefault(),!this.mouseDown)return;let e=Mr.getScreenPointByEvent(r,this.viewerContainer);if(this.mouseDownPositionX>=0&&this.mouseDownPositionY>=0&&(Math.abs(e.x-this.mouseDownPositionX)>=5||Math.abs(e.y-this.mouseDownPositionY)>=5)){this.mouseMove=!0;let n=new le(Math.min(this.mouseDownPositionX,e.x),Math.min(this.mouseDownPositionY,e.y)),s=new le(Math.max(this.mouseDownPositionX,e.x),Math.max(this.mouseDownPositionY,e.y));this.drawRect(n,s)}};this.mouseup=r=>{if(r.preventDefault(),this.mouseDown&&this.mouseMove){let e=Mr.getScreenPointByEvent(r,this.viewerContainer),i=new le(Math.min(this.mouseDownPositionX,e.x),Math.min(this.mouseDownPositionY,e.y)),n=new le(Math.max(this.mouseDownPositionX,e.x),Math.max(this.mouseDownPositionY,e.y)),s=new Ds(i,n);this.deactivate(),this.setRectDomVisible(!1),this.resolve&&(this.resolve(s),this.isResolvedOrRejected=!0)}this.mouseDown=!1,this.mouseMove=!1,this.mouseDownPositionX=-1,this.mouseDownPositionY=-1};this.viewer=r}get viewerContainer(){return this.viewer.viewerContainer}isActived(){return this.actived}activate(){var i;if(this.isActived()){this.reject&&(this.reject("BoxSelectHelper is already actived!"),this.isResolvedOrRejected=!0);return}this.actived=!0,this.viewerContainer.addEventListener("pointerdown",this.mousedown),this.viewerContainer.addEventListener("pointermove",this.mousemove),this.viewerContainer.addEventListener("pointerup",this.mouseup);let r=this.viewer.controls;this.tempKey=r.mouseButtons.LEFT,this.tempEnableRotate=r.enableRotate,r.mouseButtons.LEFT=-1,r.enableRotate=!1;let e=this.viewer.translate;if(e){this.tooltip=new ph("box-select-tooltip",e("Tooltip.boxSelect"),{followPointer:!0,showOnCreate:!0,parentNode:this.viewer.widgetContainer,target:this.viewerContainer});let n=document.getElementById("box-select-tooltip");n&&(n.style.pointerEvents="none");let s=e("Tooltip.boxSelect");s&&this.tooltip&&((i=this.tooltip)==null||i.setContent(s))}}deactivate(){var r,e;this.actived=!1,this.viewerContainer.removeEventListener("pointerdown",this.mousedown),this.viewerContainer.removeEventListener("pointermove",this.mousemove),this.viewerContainer.removeEventListener("pointerup",this.mouseup),(r=this.tooltip)==null||r.hide(),(e=this.tooltip)==null||e.destroy(),this.tooltip=void 0,this.viewer.controls.mouseButtons.LEFT=this.tempKey,this.viewer.controls.enableRotate=this.tempEnableRotate}drawRect(r,e){this.rectDom||(this.rectDom=document.createElement("div"),this.rectDom.style.cssText=`position: absolute;border: ${vO.BORDER_WIDTH} solid ${vO.BORDER_COLOR};`,this.viewerContainer.appendChild(this.rectDom)),this.setRectDomVisible(!0),this.rectDom.style.left=`${r.x}px`,this.rectDom.style.top=`${r.y}px`;let i=Math.abs(e.x-r.x),n=Math.abs(e.y-r.y);this.rectDom.style.width=`${i}px`,this.rectDom.style.height=`${n}px`}setRectDomVisible(r){this.rectDom&&(this.rectDom.style.display=r?"inline-block":"none")}select(){return ot(this,null,function*(){return new Promise((r,e)=>{this.resolve=r,this.reject=e,this.activate()})})}destroy(){var r;this.deactivate(),(r=this.rectDom)==null||r.remove(),this.rectDom=void 0,this.isResolvedOrRejected||this.reject&&this.reject("BoxSelectHelper is not done for some reason!")}},$f=vO;$f.BORDER_COLOR="#fff000",$f.BORDER_WIDTH="2px";var UMe=Un(Yl(),1),nE=class{constructor(r){this.history=[];this.step=0;this.maxCount=50;this.maxCount=r||this.maxCount}addRecord(r,e){this.history.length===this.maxCount&&this.history.shift(),this.step!==this.history.length&&this.history.splice(this.step),this.history.push({type:r,payload:(0,UMe.cloneDeep)(e)}),this.step++}undo(){if(this.step!==0)return this.step--,this.history[this.step]}redo(){if(this.step!==this.history.length)return this.step++,this.history[this.step-1]}clear(){this.history=[],this.step=0}destroy(){this.clear(),this.maxCount=0}};function Jc(t){return Jc=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(r){return typeof r}:function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},Jc(t)}function Zl(t,r){if(!(t instanceof r))throw new TypeError("Cannot call a class as a function")}function BMe(t,r){for(var e=0;e<r.length;e++){var i=r[e];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function Kl(t,r,e){return r&&BMe(t.prototype,r),e&&BMe(t,e),Object.defineProperty(t,"prototype",{writable:!1}),t}function Qc(t){if(t===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function IS(t,r){return IS=Object.setPrototypeOf||function(i,n){return i.__proto__=n,i},IS(t,r)}function sE(t,r){if(typeof r!="function"&&r!==null)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(r&&r.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),r&&IS(t,r)}function M0(t,r){if(r&&(Jc(r)==="object"||typeof r=="function"))return r;if(r!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return Qc(t)}function Jl(t){return Jl=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},Jl(t)}function dh(t,r,e){return r in t?Object.defineProperty(t,r,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[r]=e,t}function q8(t){if(Array.isArray(t))return t}function Y8(t){if(typeof Symbol!="undefined"&&t[Symbol.iterator]!=null||t["@@iterator"]!=null)return Array.from(t)}function yO(t,r){(r==null||r>t.length)&&(r=t.length);for(var e=0,i=new Array(r);e<r;e++)i[e]=t[e];return i}function X8(t,r){if(t){if(typeof t=="string")return yO(t,r);var e=Object.prototype.toString.call(t).slice(8,-1);if(e==="Object"&&t.constructor&&(e=t.constructor.name),e==="Map"||e==="Set")return Array.from(t);if(e==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e))return yO(t,r)}}function $8(){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 Z8(t){return q8(t)||Y8(t)||X8(t)||$8()}function kMe(t,r){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);r&&(i=i.filter(function(n){return Object.getOwnPropertyDescriptor(t,n).enumerable})),e.push.apply(e,i)}return e}function GMe(t){for(var r=1;r<arguments.length;r++){var e=arguments[r]!=null?arguments[r]:{};r%2?kMe(Object(e),!0).forEach(function(i){dh(t,i,e[i])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):kMe(Object(e)).forEach(function(i){Object.defineProperty(t,i,Object.getOwnPropertyDescriptor(e,i))})}return t}var g2t={type:"logger",log:function(r){this.output("log",r)},warn:function(r){this.output("warn",r)},error:function(r){this.output("error",r)},output:function(r,e){console&&console[r]&&console[r].apply(console,e)}},v2t=function(){function t(r){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};Zl(this,t),this.init(r,e)}return Kl(t,[{key:"init",value:function(e){var i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.prefix=i.prefix||"i18next:",this.logger=e||g2t,this.options=i,this.debug=i.debug}},{key:"setDebug",value:function(e){this.debug=e}},{key:"log",value:function(){for(var e=arguments.length,i=new Array(e),n=0;n<e;n++)i[n]=arguments[n];return this.forward(i,"log","",!0)}},{key:"warn",value:function(){for(var e=arguments.length,i=new Array(e),n=0;n<e;n++)i[n]=arguments[n];return this.forward(i,"warn","",!0)}},{key:"error",value:function(){for(var e=arguments.length,i=new Array(e),n=0;n<e;n++)i[n]=arguments[n];return this.forward(i,"error","")}},{key:"deprecate",value:function(){for(var e=arguments.length,i=new Array(e),n=0;n<e;n++)i[n]=arguments[n];return this.forward(i,"warn","WARNING DEPRECATED: ",!0)}},{key:"forward",value:function(e,i,n,s){return s&&!this.debug?null:(typeof e[0]=="string"&&(e[0]="".concat(n).concat(this.prefix," ").concat(e[0])),this.logger[i](e))}},{key:"create",value:function(e){return new t(this.logger,GMe(GMe({},{prefix:"".concat(this.prefix,":").concat(e,":")}),this.options))}}]),t}(),mh=new v2t,Kf=function(){function t(){Zl(this,t),this.observers={}}return Kl(t,[{key:"on",value:function(e,i){var n=this;return e.split(" ").forEach(function(s){n.observers[s]=n.observers[s]||[],n.observers[s].push(i)}),this}},{key:"off",value:function(e,i){if(this.observers[e]){if(!i){delete this.observers[e];return}this.observers[e]=this.observers[e].filter(function(n){return n!==i})}}},{key:"emit",value:function(e){for(var i=arguments.length,n=new Array(i>1?i-1:0),s=1;s<i;s++)n[s-1]=arguments[s];if(this.observers[e]){var a=[].concat(this.observers[e]);a.forEach(function(l){l.apply(void 0,n)})}if(this.observers["*"]){var o=[].concat(this.observers["*"]);o.forEach(function(l){l.apply(l,[e].concat(n))})}}}]),t}();function SS(){var t,r,e=new Promise(function(i,n){t=i,r=n});return e.resolve=t,e.reject=r,e}function VMe(t){return t==null?"":""+t}function y2t(t,r,e){t.forEach(function(i){r[i]&&(e[i]=r[i])})}function J8(t,r,e){function i(o){return o&&o.indexOf("###")>-1?o.replace(/###/g,"."):o}function n(){return!t||typeof t=="string"}for(var s=typeof r!="string"?[].concat(r):r.split(".");s.length>1;){if(n())return{};var a=i(s.shift());!t[a]&&e&&(t[a]=new e),Object.prototype.hasOwnProperty.call(t,a)?t=t[a]:t={}}return n()?{}:{obj:t,k:i(s.shift())}}function zMe(t,r,e){var i=J8(t,r,Object),n=i.obj,s=i.k;n[s]=e}function T2t(t,r,e,i){var n=J8(t,r,Object),s=n.obj,a=n.k;s[a]=s[a]||[],i&&(s[a]=s[a].concat(e)),i||s[a].push(e)}function bO(t,r){var e=J8(t,r),i=e.obj,n=e.k;if(i)return i[n]}function jMe(t,r,e){var i=bO(t,e);return i!==void 0?i:bO(r,e)}function rDe(t,r,e){for(var i in r)i!=="__proto__"&&i!=="constructor"&&(i in t?typeof t[i]=="string"||t[i]instanceof String||typeof r[i]=="string"||r[i]instanceof String?e&&(t[i]=r[i]):rDe(t[i],r[i],e):t[i]=r[i]);return t}function aE(t){return t.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}var E2t={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};function b2t(t){return typeof t=="string"?t.replace(/[&<>"'\/]/g,function(r){return E2t[r]}):t}var IO=typeof window!="undefined"&&window.navigator&&window.navigator.userAgent&&window.navigator.userAgent.indexOf("MSIE")>-1,x2t=[" ",",","?","!",";"];function I2t(t,r,e){r=r||"",e=e||"";var i=x2t.filter(function(o){return r.indexOf(o)<0&&e.indexOf(o)<0});if(i.length===0)return!0;var n=new RegExp("(".concat(i.map(function(o){return o==="?"?"\\?":o}).join("|"),")")),s=!n.test(t);if(!s){var a=t.indexOf(e);a>0&&!n.test(t.substring(0,a))&&(s=!0)}return s}function WMe(t,r){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);r&&(i=i.filter(function(n){return Object.getOwnPropertyDescriptor(t,n).enumerable})),e.push.apply(e,i)}return e}function TO(t){for(var r=1;r<arguments.length;r++){var e=arguments[r]!=null?arguments[r]:{};r%2?WMe(Object(e),!0).forEach(function(i){dh(t,i,e[i])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):WMe(Object(e)).forEach(function(i){Object.defineProperty(t,i,Object.getOwnPropertyDescriptor(e,i))})}return t}function S2t(t){var r=_2t();return function(){var i=Jl(t),n;if(r){var s=Jl(this).constructor;n=Reflect.construct(i,arguments,s)}else n=i.apply(this,arguments);return M0(this,n)}}function _2t(){if(typeof Reflect=="undefined"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(t){return!1}}function iDe(t,r){var e=arguments.length>2&&arguments[2]!==void 0?arguments[2]:".";if(t){if(t[r])return t[r];for(var i=r.split(e),n=t,s=0;s<i.length;++s){if(!n||typeof n[i[s]]=="string"&&s+1<i.length)return;if(n[i[s]]===void 0){for(var a=2,o=i.slice(s,s+a).join(e),l=n[o];l===void 0&&i.length>s+a;)a++,o=i.slice(s,s+a).join(e),l=n[o];if(l===void 0)return;if(r.endsWith(o)){if(typeof l=="string")return l;if(o&&typeof l[o]=="string")return l[o]}var c=i.slice(s+a).join(e);return c?iDe(l,c,e):void 0}n=n[i[s]]}return n}}var w2t=function(t){sE(e,t);var r=S2t(e);function e(i){var n,s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{ns:["translation"],defaultNS:"translation"};return Zl(this,e),n=r.call(this),IO&&Kf.call(Qc(n)),n.data=i||{},n.options=s,n.options.keySeparator===void 0&&(n.options.keySeparator="."),n.options.ignoreJSONStructure===void 0&&(n.options.ignoreJSONStructure=!0),n}return Kl(e,[{key:"addNamespaces",value:function(n){this.options.ns.indexOf(n)<0&&this.options.ns.push(n)}},{key:"removeNamespaces",value:function(n){var s=this.options.ns.indexOf(n);s>-1&&this.options.ns.splice(s,1)}},{key:"getResource",value:function(n,s,a){var o=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},l=o.keySeparator!==void 0?o.keySeparator:this.options.keySeparator,c=o.ignoreJSONStructure!==void 0?o.ignoreJSONStructure:this.options.ignoreJSONStructure,u=[n,s];a&&typeof a!="string"&&(u=u.concat(a)),a&&typeof a=="string"&&(u=u.concat(l?a.split(l):a)),n.indexOf(".")>-1&&(u=n.split("."));var h=bO(this.data,u);return h||!c||typeof a!="string"?h:iDe(this.data&&this.data[n]&&this.data[n][s],a,l)}},{key:"addResource",value:function(n,s,a,o){var l=arguments.length>4&&arguments[4]!==void 0?arguments[4]:{silent:!1},c=this.options.keySeparator;c===void 0&&(c=".");var u=[n,s];a&&(u=u.concat(c?a.split(c):a)),n.indexOf(".")>-1&&(u=n.split("."),o=s,s=u[1]),this.addNamespaces(s),zMe(this.data,u,o),l.silent||this.emit("added",n,s,a,o)}},{key:"addResources",value:function(n,s,a){var o=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{silent:!1};for(var l in a)(typeof a[l]=="string"||Object.prototype.toString.apply(a[l])==="[object Array]")&&this.addResource(n,s,l,a[l],{silent:!0});o.silent||this.emit("added",n,s,a)}},{key:"addResourceBundle",value:function(n,s,a,o,l){var c=arguments.length>5&&arguments[5]!==void 0?arguments[5]:{silent:!1},u=[n,s];n.indexOf(".")>-1&&(u=n.split("."),o=a,a=s,s=u[1]),this.addNamespaces(s);var h=bO(this.data,u)||{};o?rDe(h,a,l):h=TO(TO({},h),a),zMe(this.data,u,h),c.silent||this.emit("added",n,s,a)}},{key:"removeResourceBundle",value:function(n,s){this.hasResourceBundle(n,s)&&delete this.data[n][s],this.removeNamespaces(s),this.emit("removed",n,s)}},{key:"hasResourceBundle",value:function(n,s){return this.getResource(n,s)!==void 0}},{key:"getResourceBundle",value:function(n,s){return s||(s=this.options.defaultNS),this.options.compatibilityAPI==="v1"?TO(TO({},{}),this.getResource(n,s)):this.getResource(n,s)}},{key:"getDataByLanguage",value:function(n){return this.data[n]}},{key:"hasLanguageSomeTranslations",value:function(n){var s=this.getDataByLanguage(n),a=s&&Object.keys(s)||[];return!!a.find(function(o){return s[o]&&Object.keys(s[o]).length>0})}},{key:"toJSON",value:function(){return this.data}}]),e}(Kf),nDe={processors:{},addPostProcessor:function(r){this.processors[r.name]=r},handle:function(r,e,i,n,s){var a=this;return r.forEach(function(o){a.processors[o]&&(e=a.processors[o].process(e,i,n,s))}),e}};function qMe(t,r){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);r&&(i=i.filter(function(n){return Object.getOwnPropertyDescriptor(t,n).enumerable})),e.push.apply(e,i)}return e}function Na(t){for(var r=1;r<arguments.length;r++){var e=arguments[r]!=null?arguments[r]:{};r%2?qMe(Object(e),!0).forEach(function(i){dh(t,i,e[i])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):qMe(Object(e)).forEach(function(i){Object.defineProperty(t,i,Object.getOwnPropertyDescriptor(e,i))})}return t}function R2t(t){var r=M2t();return function(){var i=Jl(t),n;if(r){var s=Jl(this).constructor;n=Reflect.construct(i,arguments,s)}else n=i.apply(this,arguments);return M0(this,n)}}function M2t(){if(typeof Reflect=="undefined"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(t){return!1}}var YMe={},XMe=function(t){sE(e,t);var r=R2t(e);function e(i){var n,s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return Zl(this,e),n=r.call(this),IO&&Kf.call(Qc(n)),y2t(["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"],i,Qc(n)),n.options=s,n.options.keySeparator===void 0&&(n.options.keySeparator="."),n.logger=mh.create("translator"),n}return Kl(e,[{key:"changeLanguage",value:function(n){n&&(this.language=n)}},{key:"exists",value:function(n){var s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{interpolation:{}};if(n==null)return!1;var a=this.resolve(n,s);return a&&a.res!==void 0}},{key:"extractFromKey",value:function(n,s){var a=s.nsSeparator!==void 0?s.nsSeparator:this.options.nsSeparator;a===void 0&&(a=":");var o=s.keySeparator!==void 0?s.keySeparator:this.options.keySeparator,l=s.ns||this.options.defaultNS||[],c=a&&n.indexOf(a)>-1,u=!this.options.userDefinedKeySeparator&&!s.keySeparator&&!this.options.userDefinedNsSeparator&&!s.nsSeparator&&!I2t(n,a,o);if(c&&!u){var h=n.match(this.interpolator.nestingRegexp);if(h&&h.length>0)return{key:n,namespaces:l};var p=n.split(a);(a!==o||a===o&&this.options.ns.indexOf(p[0])>-1)&&(l=p.shift()),n=p.join(o)}return typeof l=="string"&&(l=[l]),{key:n,namespaces:l}}},{key:"translate",value:function(n,s,a){var o=this;if(Jc(s)!=="object"&&this.options.overloadTranslationOptionHandler&&(s=this.options.overloadTranslationOptionHandler(arguments)),s||(s={}),n==null)return"";Array.isArray(n)||(n=[String(n)]);var l=s.returnDetails!==void 0?s.returnDetails:this.options.returnDetails,c=s.keySeparator!==void 0?s.keySeparator:this.options.keySeparator,u=this.extractFromKey(n[n.length-1],s),h=u.key,p=u.namespaces,d=p[p.length-1],f=s.lng||this.language,m=s.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if(f&&f.toLowerCase()==="cimode"){if(m){var g=s.nsSeparator||this.options.nsSeparator;return l?(y.res="".concat(d).concat(g).concat(h),y):"".concat(d).concat(g).concat(h)}return l?(y.res=h,y):h}var y=this.resolve(n,s),E=y&&y.res,b=y&&y.usedKey||h,x=y&&y.exactUsedKey||h,S=Object.prototype.toString.apply(E),D=["[object Number]","[object Function]","[object RegExp]"],P=s.joinArrays!==void 0?s.joinArrays:this.options.joinArrays,_=!this.i18nFormat||this.i18nFormat.handleAsObject,w=typeof E!="string"&&typeof E!="boolean"&&typeof E!="number";if(_&&E&&w&&D.indexOf(S)<0&&!(typeof P=="string"&&S==="[object Array]")){if(!s.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn("accessing an object - but returnObjects options is not enabled!");var F=this.options.returnedObjectHandler?this.options.returnedObjectHandler(b,E,Na(Na({},s),{},{ns:p})):"key '".concat(h," (").concat(this.language,")' returned an object instead of string.");return l?(y.res=F,y):F}if(c){var X=S==="[object Array]",H=X?[]:{},he=X?x:b;for(var C in E)if(Object.prototype.hasOwnProperty.call(E,C)){var N="".concat(he).concat(c).concat(C);H[C]=this.translate(N,Na(Na({},s),{joinArrays:!1,ns:p})),H[C]===N&&(H[C]=E[C])}E=H}}else if(_&&typeof P=="string"&&S==="[object Array]")E=E.join(P),E&&(E=this.extendTranslation(E,n,s,a));else{var k=!1,G=!1,U=s.count!==void 0&&typeof s.count!="string",j=e.hasDefaultValue(s),ee=U?this.pluralResolver.getSuffix(f,s.count,s):"",ae=s["defaultValue".concat(ee)]||s.defaultValue;!this.isValidLookup(E)&&j&&(k=!0,E=ae),this.isValidLookup(E)||(G=!0,E=h);var se=s.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey,ue=se&&G?void 0:E,ve=j&&ae!==E&&this.options.updateMissing;if(G||k||ve){if(this.logger.log(ve?"updateKey":"missingKey",f,d,h,ve?ae:E),c){var be=this.resolve(h,Na(Na({},s),{},{keySeparator:!1}));be&&be.res&&this.logger.warn("Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.")}var de=[],we=this.languageUtils.getFallbackCodes(this.options.fallbackLng,s.lng||this.language);if(this.options.saveMissingTo==="fallback"&&we&&we[0])for(var Fe=0;Fe<we.length;Fe++)de.push(we[Fe]);else this.options.saveMissingTo==="all"?de=this.languageUtils.toResolveHierarchy(s.lng||this.language):de.push(s.lng||this.language);var je=function(dt,Be,ke){var nt=j&&ke!==E?ke:ue;o.options.missingKeyHandler?o.options.missingKeyHandler(dt,d,Be,nt,ve,s):o.backendConnector&&o.backendConnector.saveMissing&&o.backendConnector.saveMissing(dt,d,Be,nt,ve,s),o.emit("missingKey",dt,d,Be,E)};this.options.saveMissing&&(this.options.saveMissingPlurals&&U?de.forEach(function(Oe){o.pluralResolver.getSuffixes(Oe,s).forEach(function(dt){je([Oe],h+dt,s["defaultValue".concat(dt)]||ae)})}):je(de,h,ae))}E=this.extendTranslation(E,n,s,y,a),G&&E===h&&this.options.appendNamespaceToMissingKey&&(E="".concat(d,":").concat(h)),(G||k)&&this.options.parseMissingKeyHandler&&(this.options.compatibilityAPI!=="v1"?E=this.options.parseMissingKeyHandler(h,k?E:void 0):E=this.options.parseMissingKeyHandler(E))}return l?(y.res=E,y):E}},{key:"extendTranslation",value:function(n,s,a,o,l){var c=this;if(this.i18nFormat&&this.i18nFormat.parse)n=this.i18nFormat.parse(n,Na(Na({},this.options.interpolation.defaultVariables),a),o.usedLng,o.usedNS,o.usedKey,{resolved:o});else if(!a.skipInterpolation){a.interpolation&&this.interpolator.init(Na(Na({},a),{interpolation:Na(Na({},this.options.interpolation),a.interpolation)}));var u=typeof n=="string"&&(a&&a.interpolation&&a.interpolation.skipOnVariables!==void 0?a.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables),h;if(u){var p=n.match(this.interpolator.nestingRegexp);h=p&&p.length}var d=a.replace&&typeof a.replace!="string"?a.replace:a;if(this.options.interpolation.defaultVariables&&(d=Na(Na({},this.options.interpolation.defaultVariables),d)),n=this.interpolator.interpolate(n,d,a.lng||this.language,a),u){var f=n.match(this.interpolator.nestingRegexp),m=f&&f.length;h<m&&(a.nest=!1)}a.nest!==!1&&(n=this.interpolator.nest(n,function(){for(var E=arguments.length,b=new Array(E),x=0;x<E;x++)b[x]=arguments[x];return l&&l[0]===b[0]&&!a.context?(c.logger.warn("It seems you are nesting recursively key: ".concat(b[0]," in key: ").concat(s[0])),null):c.translate.apply(c,b.concat([s]))},a)),a.interpolation&&this.interpolator.reset()}var g=a.postProcess||this.options.postProcess,y=typeof g=="string"?[g]:g;return n!=null&&y&&y.length&&a.applyPostProcessor!==!1&&(n=nDe.handle(y,n,s,this.options&&this.options.postProcessPassResolved?Na({i18nResolved:o},a):a,this)),n}},{key:"resolve",value:function(n){var s=this,a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},o,l,c,u,h;return typeof n=="string"&&(n=[n]),n.forEach(function(p){if(!s.isValidLookup(o)){var d=s.extractFromKey(p,a),f=d.key;l=f;var m=d.namespaces;s.options.fallbackNS&&(m=m.concat(s.options.fallbackNS));var g=a.count!==void 0&&typeof a.count!="string",y=g&&!a.ordinal&&a.count===0&&s.pluralResolver.shouldUseIntlApi(),E=a.context!==void 0&&(typeof a.context=="string"||typeof a.context=="number")&&a.context!=="",b=a.lngs?a.lngs:s.languageUtils.toResolveHierarchy(a.lng||s.language,a.fallbackLng);m.forEach(function(x){s.isValidLookup(o)||(h=x,!YMe["".concat(b[0],"-").concat(x)]&&s.utils&&s.utils.hasLoadedNamespace&&!s.utils.hasLoadedNamespace(h)&&(YMe["".concat(b[0],"-").concat(x)]=!0,s.logger.warn('key "'.concat(l,'" for languages "').concat(b.join(", "),`" won't get resolved as namespace "`).concat(h,'" was not yet loaded'),"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")),b.forEach(function(S){if(!s.isValidLookup(o)){u=S;var D=[f];if(s.i18nFormat&&s.i18nFormat.addLookupKeys)s.i18nFormat.addLookupKeys(D,f,S,x,a);else{var P;g&&(P=s.pluralResolver.getSuffix(S,a.count,a));var _="_zero";if(g&&(D.push(f+P),y&&D.push(f+_)),E){var w="".concat(f).concat(s.options.contextSeparator).concat(a.context);D.push(w),g&&(D.push(w+P),y&&D.push(w+_))}}for(var F;F=D.pop();)s.isValidLookup(o)||(c=F,o=s.getResource(S,x,F,a))}}))})}}),{res:o,usedKey:l,exactUsedKey:c,usedLng:u,usedNS:h}}},{key:"isValidLookup",value:function(n){return n!==void 0&&!(!this.options.returnNull&&n===null)&&!(!this.options.returnEmptyString&&n==="")}},{key:"getResource",value:function(n,s,a){var o=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};return this.i18nFormat&&this.i18nFormat.getResource?this.i18nFormat.getResource(n,s,a,o):this.resourceStore.getResource(n,s,a,o)}}],[{key:"hasDefaultValue",value:function(n){var s="defaultValue";for(var a in n)if(Object.prototype.hasOwnProperty.call(n,a)&&s===a.substring(0,s.length)&&n[a]!==void 0)return!0;return!1}}]),e}(Kf);function K8(t){return t.charAt(0).toUpperCase()+t.slice(1)}var D2t=function(){function t(r){Zl(this,t),this.options=r,this.supportedLngs=this.options.supportedLngs||!1,this.logger=mh.create("languageUtils")}return Kl(t,[{key:"getScriptPartFromCode",value:function(e){if(!e||e.indexOf("-")<0)return null;var i=e.split("-");return i.length===2||(i.pop(),i[i.length-1].toLowerCase()==="x")?null:this.formatLanguageCode(i.join("-"))}},{key:"getLanguagePartFromCode",value:function(e){if(!e||e.indexOf("-")<0)return e;var i=e.split("-");return this.formatLanguageCode(i[0])}},{key:"formatLanguageCode",value:function(e){if(typeof e=="string"&&e.indexOf("-")>-1){var i=["hans","hant","latn","cyrl","cans","mong","arab"],n=e.split("-");return this.options.lowerCaseLng?n=n.map(function(s){return s.toLowerCase()}):n.length===2?(n[0]=n[0].toLowerCase(),n[1]=n[1].toUpperCase(),i.indexOf(n[1].toLowerCase())>-1&&(n[1]=K8(n[1].toLowerCase()))):n.length===3&&(n[0]=n[0].toLowerCase(),n[1].length===2&&(n[1]=n[1].toUpperCase()),n[0]!=="sgn"&&n[2].length===2&&(n[2]=n[2].toUpperCase()),i.indexOf(n[1].toLowerCase())>-1&&(n[1]=K8(n[1].toLowerCase())),i.indexOf(n[2].toLowerCase())>-1&&(n[2]=K8(n[2].toLowerCase()))),n.join("-")}return this.options.cleanCode||this.options.lowerCaseLng?e.toLowerCase():e}},{key:"isSupportedCode",value:function(e){return(this.options.load==="languageOnly"||this.options.nonExplicitSupportedLngs)&&(e=this.getLanguagePartFromCode(e)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.indexOf(e)>-1}},{key:"getBestMatchFromCodes",value:function(e){var i=this;if(!e)return null;var n;return e.forEach(function(s){if(!n){var a=i.formatLanguageCode(s);(!i.options.supportedLngs||i.isSupportedCode(a))&&(n=a)}}),!n&&this.options.supportedLngs&&e.forEach(function(s){if(!n){var a=i.getLanguagePartFromCode(s);if(i.isSupportedCode(a))return n=a;n=i.options.supportedLngs.find(function(o){if(o.indexOf(a)===0)return o})}}),n||(n=this.getFallbackCodes(this.options.fallbackLng)[0]),n}},{key:"getFallbackCodes",value:function(e,i){if(!e)return[];if(typeof e=="function"&&(e=e(i)),typeof e=="string"&&(e=[e]),Object.prototype.toString.apply(e)==="[object Array]")return e;if(!i)return e.default||[];var n=e[i];return n||(n=e[this.getScriptPartFromCode(i)]),n||(n=e[this.formatLanguageCode(i)]),n||(n=e[this.getLanguagePartFromCode(i)]),n||(n=e.default),n||[]}},{key:"toResolveHierarchy",value:function(e,i){var n=this,s=this.getFallbackCodes(i||this.options.fallbackLng||[],e),a=[],o=function(c){c&&(n.isSupportedCode(c)?a.push(c):n.logger.warn("rejecting language code not found in supportedLngs: ".concat(c)))};return typeof e=="string"&&e.indexOf("-")>-1?(this.options.load!=="languageOnly"&&o(this.formatLanguageCode(e)),this.options.load!=="languageOnly"&&this.options.load!=="currentOnly"&&o(this.getScriptPartFromCode(e)),this.options.load!=="currentOnly"&&o(this.getLanguagePartFromCode(e))):typeof e=="string"&&o(this.formatLanguageCode(e)),s.forEach(function(l){a.indexOf(l)<0&&o(n.formatLanguageCode(l))}),a}}]),t}(),C2t=[{lngs:["ach","ak","am","arn","br","fil","gun","ln","mfe","mg","mi","oc","pt","pt-BR","tg","tl","ti","tr","uz","wa"],nr:[1,2],fc:1},{lngs:["af","an","ast","az","bg","bn","ca","da","de","dev","el","en","eo","es","et","eu","fi","fo","fur","fy","gl","gu","ha","hi","hu","hy","ia","it","kk","kn","ku","lb","mai","ml","mn","mr","nah","nap","nb","ne","nl","nn","no","nso","pa","pap","pms","ps","pt-PT","rm","sco","se","si","so","son","sq","sv","sw","ta","te","tk","ur","yo"],nr:[1,2],fc:2},{lngs:["ay","bo","cgg","fa","ht","id","ja","jbo","ka","km","ko","ky","lo","ms","sah","su","th","tt","ug","vi","wo","zh"],nr:[1],fc:3},{lngs:["be","bs","cnr","dz","hr","ru","sr","uk"],nr:[1,2,5],fc:4},{lngs:["ar"],nr:[0,1,2,3,11,100],fc:5},{lngs:["cs","sk"],nr:[1,2,5],fc:6},{lngs:["csb","pl"],nr:[1,2,5],fc:7},{lngs:["cy"],nr:[1,2,3,8],fc:8},{lngs:["fr"],nr:[1,2],fc:9},{lngs:["ga"],nr:[1,2,3,7,11],fc:10},{lngs:["gd"],nr:[1,2,3,20],fc:11},{lngs:["is"],nr:[1,2],fc:12},{lngs:["jv"],nr:[0,1],fc:13},{lngs:["kw"],nr:[1,2,3,4],fc:14},{lngs:["lt"],nr:[1,2,10],fc:15},{lngs:["lv"],nr:[1,2,0],fc:16},{lngs:["mk"],nr:[1,2],fc:17},{lngs:["mnk"],nr:[0,1,2],fc:18},{lngs:["mt"],nr:[1,2,11,20],fc:19},{lngs:["or"],nr:[2,1],fc:2},{lngs:["ro"],nr:[1,2,20],fc:20},{lngs:["sl"],nr:[5,1,2,3],fc:21},{lngs:["he","iw"],nr:[1,2,20,21],fc:22}],A2t={1:function(r){return Number(r>1)},2:function(r){return Number(r!=1)},3:function(r){return 0},4:function(r){return Number(r%10==1&&r%100!=11?0:r%10>=2&&r%10<=4&&(r%100<10||r%100>=20)?1:2)},5:function(r){return Number(r==0?0:r==1?1:r==2?2:r%100>=3&&r%100<=10?3:r%100>=11?4:5)},6:function(r){return Number(r==1?0:r>=2&&r<=4?1:2)},7:function(r){return Number(r==1?0:r%10>=2&&r%10<=4&&(r%100<10||r%100>=20)?1:2)},8:function(r){return Number(r==1?0:r==2?1:r!=8&&r!=11?2:3)},9:function(r){return Number(r>=2)},10:function(r){return Number(r==1?0:r==2?1:r<7?2:r<11?3:4)},11:function(r){return Number(r==1||r==11?0:r==2||r==12?1:r>2&&r<20?2:3)},12:function(r){return Number(r%10!=1||r%100==11)},13:function(r){return Number(r!==0)},14:function(r){return Number(r==1?0:r==2?1:r==3?2:3)},15:function(r){return Number(r%10==1&&r%100!=11?0:r%10>=2&&(r%100<10||r%100>=20)?1:2)},16:function(r){return Number(r%10==1&&r%100!=11?0:r!==0?1:2)},17:function(r){return Number(r==1||r%10==1&&r%100!=11?0:1)},18:function(r){return Number(r==0?0:r==1?1:2)},19:function(r){return Number(r==1?0:r==0||r%100>1&&r%100<11?1:r%100>10&&r%100<20?2:3)},20:function(r){return Number(r==1?0:r==0||r%100>0&&r%100<20?1:2)},21:function(r){return Number(r%100==1?1:r%100==2?2:r%100==3||r%100==4?3:0)},22:function(r){return Number(r==1?0:r==2?1:(r<0||r>10)&&r%10==0?2:3)}},O2t=["v1","v2","v3"],$Me={zero:0,one:1,two:2,few:3,many:4,other:5};function P2t(){var t={};return C2t.forEach(function(r){r.lngs.forEach(function(e){t[e]={numbers:r.nr,plurals:A2t[r.fc]}})}),t}var N2t=function(){function t(r){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};Zl(this,t),this.languageUtils=r,this.options=e,this.logger=mh.create("pluralResolver"),(!this.options.compatibilityJSON||this.options.compatibilityJSON==="v4")&&(typeof Intl=="undefined"||!Intl.PluralRules)&&(this.options.compatibilityJSON="v3",this.logger.error("Your environment seems not to be Intl API compatible, use an Intl.PluralRules polyfill. Will fallback to the compatibilityJSON v3 format handling.")),this.rules=P2t()}return Kl(t,[{key:"addRule",value:function(e,i){this.rules[e]=i}},{key:"getRule",value:function(e){var i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(this.shouldUseIntlApi())try{return new Intl.PluralRules(e,{type:i.ordinal?"ordinal":"cardinal"})}catch(n){return}return this.rules[e]||this.rules[this.languageUtils.getLanguagePartFromCode(e)]}},{key:"needsPlural",value:function(e){var i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=this.getRule(e,i);return this.shouldUseIntlApi()?n&&n.resolvedOptions().pluralCategories.length>1:n&&n.numbers.length>1}},{key:"getPluralFormsOfKey",value:function(e,i){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return this.getSuffixes(e,n).map(function(s){return"".concat(i).concat(s)})}},{key:"getSuffixes",value:function(e){var i=this,n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},s=this.getRule(e,n);return s?this.shouldUseIntlApi()?s.resolvedOptions().pluralCategories.sort(function(a,o){return $Me[a]-$Me[o]}).map(function(a){return"".concat(i.options.prepend).concat(a)}):s.numbers.map(function(a){return i.getSuffix(e,a,n)}):[]}},{key:"getSuffix",value:function(e,i){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},s=this.getRule(e,n);return s?this.shouldUseIntlApi()?"".concat(this.options.prepend).concat(s.select(i)):this.getSuffixRetroCompatible(s,i):(this.logger.warn("no plural rule found for: ".concat(e)),"")}},{key:"getSuffixRetroCompatible",value:function(e,i){var n=this,s=e.noAbs?e.plurals(i):e.plurals(Math.abs(i)),a=e.numbers[s];this.options.simplifyPluralSuffix&&e.numbers.length===2&&e.numbers[0]===1&&(a===2?a="plural":a===1&&(a=""));var o=function(){return n.options.prepend&&a.toString()?n.options.prepend+a.toString():a.toString()};return this.options.compatibilityJSON==="v1"?a===1?"":typeof a=="number"?"_plural_".concat(a.toString()):o():this.options.compatibilityJSON==="v2"||this.options.simplifyPluralSuffix&&e.numbers.length===2&&e.numbers[0]===1?o():this.options.prepend&&s.toString()?this.options.prepend+s.toString():s.toString()}},{key:"shouldUseIntlApi",value:function(){return!O2t.includes(this.options.compatibilityJSON)}}]),t}();function ZMe(t,r){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);r&&(i=i.filter(function(n){return Object.getOwnPropertyDescriptor(t,n).enumerable})),e.push.apply(e,i)}return e}function eu(t){for(var r=1;r<arguments.length;r++){var e=arguments[r]!=null?arguments[r]:{};r%2?ZMe(Object(e),!0).forEach(function(i){dh(t,i,e[i])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):ZMe(Object(e)).forEach(function(i){Object.defineProperty(t,i,Object.getOwnPropertyDescriptor(e,i))})}return t}var L2t=function(){function t(){var r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Zl(this,t),this.logger=mh.create("interpolator"),this.options=r,this.format=r.interpolation&&r.interpolation.format||function(e){return e},this.init(r)}return Kl(t,[{key:"init",value:function(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};e.interpolation||(e.interpolation={escapeValue:!0});var i=e.interpolation;this.escape=i.escape!==void 0?i.escape:b2t,this.escapeValue=i.escapeValue!==void 0?i.escapeValue:!0,this.useRawValueToEscape=i.useRawValueToEscape!==void 0?i.useRawValueToEscape:!1,this.prefix=i.prefix?aE(i.prefix):i.prefixEscaped||"{{",this.suffix=i.suffix?aE(i.suffix):i.suffixEscaped||"}}",this.formatSeparator=i.formatSeparator?i.formatSeparator:i.formatSeparator||",",this.unescapePrefix=i.unescapeSuffix?"":i.unescapePrefix||"-",this.unescapeSuffix=this.unescapePrefix?"":i.unescapeSuffix||"",this.nestingPrefix=i.nestingPrefix?aE(i.nestingPrefix):i.nestingPrefixEscaped||aE("$t("),this.nestingSuffix=i.nestingSuffix?aE(i.nestingSuffix):i.nestingSuffixEscaped||aE(")"),this.nestingOptionsSeparator=i.nestingOptionsSeparator?i.nestingOptionsSeparator:i.nestingOptionsSeparator||",",this.maxReplaces=i.maxReplaces?i.maxReplaces:1e3,this.alwaysFormat=i.alwaysFormat!==void 0?i.alwaysFormat:!1,this.resetRegExp()}},{key:"reset",value:function(){this.options&&this.init(this.options)}},{key:"resetRegExp",value:function(){var e="".concat(this.prefix,"(.+?)").concat(this.suffix);this.regexp=new RegExp(e,"g");var i="".concat(this.prefix).concat(this.unescapePrefix,"(.+?)").concat(this.unescapeSuffix).concat(this.suffix);this.regexpUnescape=new RegExp(i,"g");var n="".concat(this.nestingPrefix,"(.+?)").concat(this.nestingSuffix);this.nestingRegexp=new RegExp(n,"g")}},{key:"interpolate",value:function(e,i,n,s){var a=this,o,l,c,u=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{};function h(g){return g.replace(/\$/g,"$$$$")}var p=function(y){if(y.indexOf(a.formatSeparator)<0){var E=jMe(i,u,y);return a.alwaysFormat?a.format(E,void 0,n,eu(eu(eu({},s),i),{},{interpolationkey:y})):E}var b=y.split(a.formatSeparator),x=b.shift().trim(),S=b.join(a.formatSeparator).trim();return a.format(jMe(i,u,x),S,n,eu(eu(eu({},s),i),{},{interpolationkey:x}))};this.resetRegExp();var d=s&&s.missingInterpolationHandler||this.options.missingInterpolationHandler,f=s&&s.interpolation&&s.interpolation.skipOnVariables!==void 0?s.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables,m=[{regex:this.regexpUnescape,safeValue:function(y){return h(y)}},{regex:this.regexp,safeValue:function(y){return a.escapeValue?h(a.escape(y)):h(y)}}];return m.forEach(function(g){for(c=0;o=g.regex.exec(e);){var y=o[1].trim();if(l=p(y),l===void 0)if(typeof d=="function"){var E=d(e,o,s);l=typeof E=="string"?E:""}else if(s&&s.hasOwnProperty(y))l="";else if(f){l=o[0];continue}else a.logger.warn("missed to pass in variable ".concat(y," for interpolating ").concat(e)),l="";else typeof l!="string"&&!a.useRawValueToEscape&&(l=VMe(l));var b=g.safeValue(l);if(e=e.replace(o[0],b),f?(g.regex.lastIndex+=b.length,g.regex.lastIndex-=o[0].length):g.regex.lastIndex=0,c++,c>=a.maxReplaces)break}}),e}},{key:"nest",value:function(e,i){var n=this,s=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},a,o,l=eu({},s);l.applyPostProcessor=!1,delete l.defaultValue;function c(d,f){var m=this.nestingOptionsSeparator;if(d.indexOf(m)<0)return d;var g=d.split(new RegExp("".concat(m,"[ ]*{"))),y="{".concat(g[1]);d=g[0],y=this.interpolate(y,l),y=y.replace(/'/g,'"');try{l=JSON.parse(y),f&&(l=eu(eu({},f),l))}catch(E){return this.logger.warn("failed parsing options string in nesting for key ".concat(d),E),"".concat(d).concat(m).concat(y)}return delete l.defaultValue,d}for(;a=this.nestingRegexp.exec(e);){var u=[],h=!1;if(a[0].indexOf(this.formatSeparator)!==-1&&!/{.*}/.test(a[1])){var p=a[1].split(this.formatSeparator).map(function(d){return d.trim()});a[1]=p.shift(),u=p,h=!0}if(o=i(c.call(this,a[1].trim(),l),l),o&&a[0]===e&&typeof o!="string")return o;typeof o!="string"&&(o=VMe(o)),o||(this.logger.warn("missed to resolve ".concat(a[1]," for nesting ").concat(e)),o=""),h&&(o=u.reduce(function(d,f){return n.format(d,f,s.lng,eu(eu({},s),{},{interpolationkey:a[1].trim()}))},o.trim())),e=e.replace(a[0],o),this.regexp.lastIndex=0}return e}}]),t}();function KMe(t,r){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);r&&(i=i.filter(function(n){return Object.getOwnPropertyDescriptor(t,n).enumerable})),e.push.apply(e,i)}return e}function Zf(t){for(var r=1;r<arguments.length;r++){var e=arguments[r]!=null?arguments[r]:{};r%2?KMe(Object(e),!0).forEach(function(i){dh(t,i,e[i])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):KMe(Object(e)).forEach(function(i){Object.defineProperty(t,i,Object.getOwnPropertyDescriptor(e,i))})}return t}function F2t(t){var r=t.toLowerCase().trim(),e={};if(t.indexOf("(")>-1){var i=t.split("(");r=i[0].toLowerCase().trim();var n=i[1].substring(0,i[1].length-1);if(r==="currency"&&n.indexOf(":")<0)e.currency||(e.currency=n.trim());else if(r==="relativetime"&&n.indexOf(":")<0)e.range||(e.range=n.trim());else{var s=n.split(";");s.forEach(function(a){if(a){var o=a.split(":"),l=Z8(o),c=l[0],u=l.slice(1),h=u.join(":");e[c.trim()]||(e[c.trim()]=h.trim()),h.trim()==="false"&&(e[c.trim()]=!1),h.trim()==="true"&&(e[c.trim()]=!0),isNaN(h.trim())||(e[c.trim()]=parseInt(h.trim(),10))}})}}return{formatName:r,formatOptions:e}}var H2t=function(){function t(){var r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Zl(this,t),this.logger=mh.create("formatter"),this.options=r,this.formats={number:function(i,n,s){return new Intl.NumberFormat(n,s).format(i)},currency:function(i,n,s){return new Intl.NumberFormat(n,Zf(Zf({},s),{},{style:"currency"})).format(i)},datetime:function(i,n,s){return new Intl.DateTimeFormat(n,Zf({},s)).format(i)},relativetime:function(i,n,s){return new Intl.RelativeTimeFormat(n,Zf({},s)).format(i,s.range||"day")},list:function(i,n,s){return new Intl.ListFormat(n,Zf({},s)).format(i)}},this.init(r)}return Kl(t,[{key:"init",value:function(e){var i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{interpolation:{}},n=i.interpolation;this.formatSeparator=n.formatSeparator?n.formatSeparator:n.formatSeparator||","}},{key:"add",value:function(e,i){this.formats[e.toLowerCase().trim()]=i}},{key:"format",value:function(e,i,n,s){var a=this,o=i.split(this.formatSeparator),l=o.reduce(function(c,u){var h=F2t(u),p=h.formatName,d=h.formatOptions;if(a.formats[p]){var f=c;try{var m=s&&s.formatParams&&s.formatParams[s.interpolationkey]||{},g=m.locale||m.lng||s.locale||s.lng||n;f=a.formats[p](c,g,Zf(Zf(Zf({},d),s),m))}catch(y){a.logger.warn(y)}return f}else a.logger.warn("there was no format function for ".concat(p));return c},e);return l}}]),t}();function JMe(t,r){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);r&&(i=i.filter(function(n){return Object.getOwnPropertyDescriptor(t,n).enumerable})),e.push.apply(e,i)}return e}function QMe(t){for(var r=1;r<arguments.length;r++){var e=arguments[r]!=null?arguments[r]:{};r%2?JMe(Object(e),!0).forEach(function(i){dh(t,i,e[i])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):JMe(Object(e)).forEach(function(i){Object.defineProperty(t,i,Object.getOwnPropertyDescriptor(e,i))})}return t}function U2t(t){var r=B2t();return function(){var i=Jl(t),n;if(r){var s=Jl(this).constructor;n=Reflect.construct(i,arguments,s)}else n=i.apply(this,arguments);return M0(this,n)}}function B2t(){if(typeof Reflect=="undefined"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(t){return!1}}function k2t(t,r){delete t.pending[r],t.pendingCount--}var G2t=function(t){sE(e,t);var r=U2t(e);function e(i,n,s){var a,o=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};return Zl(this,e),a=r.call(this),IO&&Kf.call(Qc(a)),a.backend=i,a.store=n,a.services=s,a.languageUtils=s.languageUtils,a.options=o,a.logger=mh.create("backendConnector"),a.waitingReads=[],a.maxParallelReads=o.maxParallelReads||10,a.readingCalls=0,a.state={},a.queue=[],a.backend&&a.backend.init&&a.backend.init(s,o.backend,o),a}return Kl(e,[{key:"queueLoad",value:function(n,s,a,o){var l=this,c={},u={},h={},p={};return n.forEach(function(d){var f=!0;s.forEach(function(m){var g="".concat(d,"|").concat(m);!a.reload&&l.store.hasResourceBundle(d,m)?l.state[g]=2:l.state[g]<0||(l.state[g]===1?u[g]===void 0&&(u[g]=!0):(l.state[g]=1,f=!1,u[g]===void 0&&(u[g]=!0),c[g]===void 0&&(c[g]=!0),p[m]===void 0&&(p[m]=!0)))}),f||(h[d]=!0)}),(Object.keys(c).length||Object.keys(u).length)&&this.queue.push({pending:u,pendingCount:Object.keys(u).length,loaded:{},errors:[],callback:o}),{toLoad:Object.keys(c),pending:Object.keys(u),toLoadLanguages:Object.keys(h),toLoadNamespaces:Object.keys(p)}}},{key:"loaded",value:function(n,s,a){var o=n.split("|"),l=o[0],c=o[1];s&&this.emit("failedLoading",l,c,s),a&&this.store.addResourceBundle(l,c,a),this.state[n]=s?-1:2;var u={};this.queue.forEach(function(h){T2t(h.loaded,[l],c),k2t(h,n),s&&h.errors.push(s),h.pendingCount===0&&!h.done&&(Object.keys(h.loaded).forEach(function(p){u[p]||(u[p]={});var d=Object.keys(u[p]);d.length&&d.forEach(function(f){d[f]!==void 0&&(u[p][f]=!0)})}),h.done=!0,h.errors.length?h.callback(h.errors):h.callback())}),this.emit("loaded",u),this.queue=this.queue.filter(function(h){return!h.done})}},{key:"read",value:function(n,s,a){var o=this,l=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0,c=arguments.length>4&&arguments[4]!==void 0?arguments[4]:350,u=arguments.length>5?arguments[5]:void 0;if(!n.length)return u(null,{});if(this.readingCalls>=this.maxParallelReads){this.waitingReads.push({lng:n,ns:s,fcName:a,tried:l,wait:c,callback:u});return}return this.readingCalls++,this.backend[a](n,s,function(h,p){if(h&&p&&l<5){setTimeout(function(){o.read.call(o,n,s,a,l+1,c*2,u)},c);return}if(o.readingCalls--,o.waitingReads.length>0){var d=o.waitingReads.shift();o.read(d.lng,d.ns,d.fcName,d.tried,d.wait,d.callback)}u(h,p)})}},{key:"prepareLoading",value:function(n,s){var a=this,o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},l=arguments.length>3?arguments[3]:void 0;if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),l&&l();typeof n=="string"&&(n=this.languageUtils.toResolveHierarchy(n)),typeof s=="string"&&(s=[s]);var c=this.queueLoad(n,s,o,l);if(!c.toLoad.length)return c.pending.length||l(),null;c.toLoad.forEach(function(u){a.loadOne(u)})}},{key:"load",value:function(n,s,a){this.prepareLoading(n,s,{},a)}},{key:"reload",value:function(n,s,a){this.prepareLoading(n,s,{reload:!0},a)}},{key:"loadOne",value:function(n){var s=this,a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"",o=n.split("|"),l=o[0],c=o[1];this.read(l,c,"read",void 0,void 0,function(u,h){u&&s.logger.warn("".concat(a,"loading namespace ").concat(c," for language ").concat(l," failed"),u),!u&&h&&s.logger.log("".concat(a,"loaded namespace ").concat(c," for language ").concat(l),h),s.loaded(n,u,h)})}},{key:"saveMissing",value:function(n,s,a,o,l){var c=arguments.length>5&&arguments[5]!==void 0?arguments[5]:{};if(this.services.utils&&this.services.utils.hasLoadedNamespace&&!this.services.utils.hasLoadedNamespace(s)){this.logger.warn('did not save key "'.concat(a,'" as the namespace "').concat(s,'" was not yet loaded'),"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!");return}a==null||a===""||(this.backend&&this.backend.create&&this.backend.create(n,s,a,o,null,QMe(QMe({},c),{},{isUpdate:l})),!(!n||!n[0])&&this.store.addResource(n[0],s,a,o))}}]),e}(Kf);function V2t(){return{debug:!1,initImmediate:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:"all",preload:!1,simplifyPluralSuffix:!0,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:"fallback",saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!0,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:function(r){var e={};if(Jc(r[1])==="object"&&(e=r[1]),typeof r[1]=="string"&&(e.defaultValue=r[1]),typeof r[2]=="string"&&(e.tDescription=r[2]),Jc(r[2])==="object"||Jc(r[3])==="object"){var i=r[3]||r[2];Object.keys(i).forEach(function(n){e[n]=i[n]})}return e},interpolation:{escapeValue:!0,format:function(r,e,i,n){return r},prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!0}}}function eDe(t){return typeof t.ns=="string"&&(t.ns=[t.ns]),typeof t.fallbackLng=="string"&&(t.fallbackLng=[t.fallbackLng]),typeof t.fallbackNS=="string"&&(t.fallbackNS=[t.fallbackNS]),t.supportedLngs&&t.supportedLngs.indexOf("cimode")<0&&(t.supportedLngs=t.supportedLngs.concat(["cimode"])),t}function tDe(t,r){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);r&&(i=i.filter(function(n){return Object.getOwnPropertyDescriptor(t,n).enumerable})),e.push.apply(e,i)}return e}function fh(t){for(var r=1;r<arguments.length;r++){var e=arguments[r]!=null?arguments[r]:{};r%2?tDe(Object(e),!0).forEach(function(i){dh(t,i,e[i])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):tDe(Object(e)).forEach(function(i){Object.defineProperty(t,i,Object.getOwnPropertyDescriptor(e,i))})}return t}function z2t(t){var r=j2t();return function(){var i=Jl(t),n;if(r){var s=Jl(this).constructor;n=Reflect.construct(i,arguments,s)}else n=i.apply(this,arguments);return M0(this,n)}}function j2t(){if(typeof Reflect=="undefined"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(t){return!1}}function EO(){}function W2t(t){var r=Object.getOwnPropertyNames(Object.getPrototypeOf(t));r.forEach(function(e){typeof t[e]=="function"&&(t[e]=t[e].bind(t))})}var xO=function(t){sE(e,t);var r=z2t(e);function e(){var i,n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},s=arguments.length>1?arguments[1]:void 0;if(Zl(this,e),i=r.call(this),IO&&Kf.call(Qc(i)),i.options=eDe(n),i.services={},i.logger=mh,i.modules={external:[]},W2t(Qc(i)),s&&!i.isInitialized&&!n.isClone){if(!i.options.initImmediate)return i.init(n,s),M0(i,Qc(i));setTimeout(function(){i.init(n,s)},0)}return i}return Kl(e,[{key:"init",value:function(){var n=this,s=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},a=arguments.length>1?arguments[1]:void 0;typeof s=="function"&&(a=s,s={}),!s.defaultNS&&s.ns&&(typeof s.ns=="string"?s.defaultNS=s.ns:s.ns.indexOf("translation")<0&&(s.defaultNS=s.ns[0]));var o=V2t();this.options=fh(fh(fh({},o),this.options),eDe(s)),this.options.compatibilityAPI!=="v1"&&(this.options.interpolation=fh(fh({},o.interpolation),this.options.interpolation)),s.keySeparator!==void 0&&(this.options.userDefinedKeySeparator=s.keySeparator),s.nsSeparator!==void 0&&(this.options.userDefinedNsSeparator=s.nsSeparator);function l(y){return y?typeof y=="function"?new y:y:null}if(!this.options.isClone){this.modules.logger?mh.init(l(this.modules.logger),this.options):mh.init(null,this.options);var c;this.modules.formatter?c=this.modules.formatter:typeof Intl!="undefined"&&(c=H2t);var u=new D2t(this.options);this.store=new w2t(this.options.resources,this.options);var h=this.services;h.logger=mh,h.resourceStore=this.store,h.languageUtils=u,h.pluralResolver=new N2t(u,{prepend:this.options.pluralSeparator,compatibilityJSON:this.options.compatibilityJSON,simplifyPluralSuffix:this.options.simplifyPluralSuffix}),c&&(!this.options.interpolation.format||this.options.interpolation.format===o.interpolation.format)&&(h.formatter=l(c),h.formatter.init(h,this.options),this.options.interpolation.format=h.formatter.format.bind(h.formatter)),h.interpolator=new L2t(this.options),h.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},h.backendConnector=new G2t(l(this.modules.backend),h.resourceStore,h,this.options),h.backendConnector.on("*",function(y){for(var E=arguments.length,b=new Array(E>1?E-1:0),x=1;x<E;x++)b[x-1]=arguments[x];n.emit.apply(n,[y].concat(b))}),this.modules.languageDetector&&(h.languageDetector=l(this.modules.languageDetector),h.languageDetector.init(h,this.options.detection,this.options)),this.modules.i18nFormat&&(h.i18nFormat=l(this.modules.i18nFormat),h.i18nFormat.init&&h.i18nFormat.init(this)),this.translator=new XMe(this.services,this.options),this.translator.on("*",function(y){for(var E=arguments.length,b=new Array(E>1?E-1:0),x=1;x<E;x++)b[x-1]=arguments[x];n.emit.apply(n,[y].concat(b))}),this.modules.external.forEach(function(y){y.init&&y.init(n)})}if(this.format=this.options.interpolation.format,a||(a=EO),this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){var p=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);p.length>0&&p[0]!=="dev"&&(this.options.lng=p[0])}!this.services.languageDetector&&!this.options.lng&&this.logger.warn("init: no languageDetector is used and no lng is defined");var d=["getResource","hasResourceBundle","getResourceBundle","getDataByLanguage"];d.forEach(function(y){n[y]=function(){var E;return(E=n.store)[y].apply(E,arguments)}});var f=["addResource","addResources","addResourceBundle","removeResourceBundle"];f.forEach(function(y){n[y]=function(){var E;return(E=n.store)[y].apply(E,arguments),n}});var m=SS(),g=function(){var E=function(x,S){n.isInitialized&&!n.initializedStoreOnce&&n.logger.warn("init: i18next is already initialized. You should call init just once!"),n.isInitialized=!0,n.options.isClone||n.logger.log("initialized",n.options),n.emit("initialized",n.options),m.resolve(S),a(x,S)};if(n.languages&&n.options.compatibilityAPI!=="v1"&&!n.isInitialized)return E(null,n.t.bind(n));n.changeLanguage(n.options.lng,E)};return this.options.resources||!this.options.initImmediate?g():setTimeout(g,0),m}},{key:"loadResources",value:function(n){var s=this,a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:EO,o=a,l=typeof n=="string"?n:this.language;if(typeof n=="function"&&(o=n),!this.options.resources||this.options.partialBundledLanguages){if(l&&l.toLowerCase()==="cimode")return o();var c=[],u=function(d){if(d){var f=s.services.languageUtils.toResolveHierarchy(d);f.forEach(function(m){c.indexOf(m)<0&&c.push(m)})}};if(l)u(l);else{var h=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);h.forEach(function(p){return u(p)})}this.options.preload&&this.options.preload.forEach(function(p){return u(p)}),this.services.backendConnector.load(c,this.options.ns,function(p){!p&&!s.resolvedLanguage&&s.language&&s.setResolvedLanguage(s.language),o(p)})}else o(null)}},{key:"reloadResources",value:function(n,s,a){var o=SS();return n||(n=this.languages),s||(s=this.options.ns),a||(a=EO),this.services.backendConnector.reload(n,s,function(l){o.resolve(),a(l)}),o}},{key:"use",value:function(n){if(!n)throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");if(!n.type)throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");return n.type==="backend"&&(this.modules.backend=n),(n.type==="logger"||n.log&&n.warn&&n.error)&&(this.modules.logger=n),n.type==="languageDetector"&&(this.modules.languageDetector=n),n.type==="i18nFormat"&&(this.modules.i18nFormat=n),n.type==="postProcessor"&&nDe.addPostProcessor(n),n.type==="formatter"&&(this.modules.formatter=n),n.type==="3rdParty"&&this.modules.external.push(n),this}},{key:"setResolvedLanguage",value:function(n){if(!(!n||!this.languages)&&!(["cimode","dev"].indexOf(n)>-1))for(var s=0;s<this.languages.length;s++){var a=this.languages[s];if(!(["cimode","dev"].indexOf(a)>-1)&&this.store.hasLanguageSomeTranslations(a)){this.resolvedLanguage=a;break}}}},{key:"changeLanguage",value:function(n,s){var a=this;this.isLanguageChangingTo=n;var o=SS();this.emit("languageChanging",n);var l=function(p){a.language=p,a.languages=a.services.languageUtils.toResolveHierarchy(p),a.resolvedLanguage=void 0,a.setResolvedLanguage(p)},c=function(p,d){d?(l(d),a.translator.changeLanguage(d),a.isLanguageChangingTo=void 0,a.emit("languageChanged",d),a.logger.log("languageChanged",d)):a.isLanguageChangingTo=void 0,o.resolve(function(){return a.t.apply(a,arguments)}),s&&s(p,function(){return a.t.apply(a,arguments)})},u=function(p){!n&&!p&&a.services.languageDetector&&(p=[]);var d=typeof p=="string"?p:a.services.languageUtils.getBestMatchFromCodes(p);d&&(a.language||l(d),a.translator.language||a.translator.changeLanguage(d),a.services.languageDetector&&a.services.languageDetector.cacheUserLanguage(d)),a.loadResources(d,function(f){c(f,d)})};return!n&&this.services.languageDetector&&!this.services.languageDetector.async?u(this.services.languageDetector.detect()):!n&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect(u):u(n),o}},{key:"getFixedT",value:function(n,s,a){var o=this,l=function c(u,h){var p;if(Jc(h)!=="object"){for(var d=arguments.length,f=new Array(d>2?d-2:0),m=2;m<d;m++)f[m-2]=arguments[m];p=o.options.overloadTranslationOptionHandler([u,h].concat(f))}else p=fh({},h);p.lng=p.lng||c.lng,p.lngs=p.lngs||c.lngs,p.ns=p.ns||c.ns;var g=o.options.keySeparator||".",y=a?"".concat(a).concat(g).concat(u):u;return o.t(y,p)};return typeof n=="string"?l.lng=n:l.lngs=n,l.ns=s,l.keyPrefix=a,l}},{key:"t",value:function(){var n;return this.translator&&(n=this.translator).translate.apply(n,arguments)}},{key:"exists",value:function(){var n;return this.translator&&(n=this.translator).exists.apply(n,arguments)}},{key:"setDefaultNamespace",value:function(n){this.options.defaultNS=n}},{key:"hasLoadedNamespace",value:function(n){var s=this,a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(!this.isInitialized)return this.logger.warn("hasLoadedNamespace: i18next was not initialized",this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty",this.languages),!1;var o=this.resolvedLanguage||this.languages[0],l=this.options?this.options.fallbackLng:!1,c=this.languages[this.languages.length-1];if(o.toLowerCase()==="cimode")return!0;var u=function(d,f){var m=s.services.backendConnector.state["".concat(d,"|").concat(f)];return m===-1||m===2};if(a.precheck){var h=a.precheck(this,u);if(h!==void 0)return h}return!!(this.hasResourceBundle(o,n)||!this.services.backendConnector.backend||this.options.resources&&!this.options.partialBundledLanguages||u(o,n)&&(!l||u(c,n)))}},{key:"loadNamespaces",value:function(n,s){var a=this,o=SS();return this.options.ns?(typeof n=="string"&&(n=[n]),n.forEach(function(l){a.options.ns.indexOf(l)<0&&a.options.ns.push(l)}),this.loadResources(function(l){o.resolve(),s&&s(l)}),o):(s&&s(),Promise.resolve())}},{key:"loadLanguages",value:function(n,s){var a=SS();typeof n=="string"&&(n=[n]);var o=this.options.preload||[],l=n.filter(function(c){return o.indexOf(c)<0});return l.length?(this.options.preload=o.concat(l),this.loadResources(function(c){a.resolve(),s&&s(c)}),a):(s&&s(),Promise.resolve())}},{key:"dir",value:function(n){if(n||(n=this.resolvedLanguage||(this.languages&&this.languages.length>0?this.languages[0]:this.language)),!n)return"rtl";var s=["ar","shu","sqr","ssh","xaa","yhd","yud","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","afb","ajp","apc","apd","arb","arq","ars","ary","arz","auz","avl","ayh","ayl","ayn","ayp","bbz","pga","he","iw","ps","pbt","pbu","pst","prp","prd","ug","ur","ydd","yds","yih","ji","yi","hbo","men","xmn","fa","jpr","peo","pes","prs","dv","sam","ckb"];return s.indexOf(this.services.languageUtils.getLanguagePartFromCode(n))>-1||n.toLowerCase().indexOf("-arab")>1?"rtl":"ltr"}},{key:"cloneInstance",value:function(){var n=this,s=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:EO,o=fh(fh(fh({},this.options),s),{isClone:!0}),l=new e(o),c=["store","services","language"];return c.forEach(function(u){l[u]=n[u]}),l.services=fh({},this.services),l.services.utils={hasLoadedNamespace:l.hasLoadedNamespace.bind(l)},l.translator=new XMe(l.services,l.options),l.translator.on("*",function(u){for(var h=arguments.length,p=new Array(h>1?h-1:0),d=1;d<h;d++)p[d-1]=arguments[d];l.emit.apply(l,[u].concat(p))}),l.init(o,a),l.translator.options=l.options,l.translator.backendConnector.services.utils={hasLoadedNamespace:l.hasLoadedNamespace.bind(l)},l}},{key:"toJSON",value:function(){return{options:this.options,store:this.store,language:this.language,languages:this.languages,resolvedLanguage:this.resolvedLanguage}}}]),e}(Kf);dh(xO,"createInstance",function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},r=arguments.length>1?arguments[1]:void 0;return new xO(t,r)});var La=xO.createInstance();La.createInstance=xO.createInstance;var NSr=La.createInstance,LSr=La.init,FSr=La.loadResources,HSr=La.reloadResources,USr=La.use,BSr=La.changeLanguage,kSr=La.getFixedT,gh=La.t,GSr=La.exists,VSr=La.setDefaultNamespace,zSr=La.hasLoadedNamespace,jSr=La.loadNamespaces,WSr=La.loadLanguages,Q8=La;var Jf=class extends jo{constructor(e){super();this.name="BaseViewer";this.translate=this.initLocalization();this.height=0;this.width=0;this.enableOverlayRenderer=!0;this.viewerCfg=e,this.initLocalization(),this.initViewerContainer(),this.initWidgetContainer()}initLocalization(){var i;let e=((i=this.viewerCfg)==null?void 0:i.language)||"cn";return Q8.init({lng:e,debug:!1,resources:{en:{translation:gpe},cn:{translation:vpe}}}),Q8.t}initViewerContainer(){let e=document.getElementById(this.viewerCfg.containerId);e||(ne.error("[BaseViewer] containerId:",this.viewerCfg.containerId,"is not found in dom tree! will append to document body"),e=document.body);let i=document.createElement("div");i.classList.add("viewer-container"),i.style.cssText="width: 100%; height: 100%; position: absolute; overflow: hidden;",e.appendChild(i),this.width=i.clientWidth,this.height=i.clientHeight,this.viewerContainer=i}initWidgetContainer(){var i;let e=document.createElement("div");e.classList.add("widget-container"),(i=this.viewerContainer)==null||i.appendChild(e),this.widgetContainer=e}destroy(){var e,i,n;(e=this.widgetContainer)==null||e.remove(),this.widgetContainer=void 0,(i=this.viewerContainer)==null||i.remove(),this.viewerContainer=void 0,(n=this.scene)==null||n.clear(),this.scene=void 0,this.renderer&&(this.renderer.domElement.remove(),this.renderer.clear(),this.renderer.dispose(),this.renderer.forceContextLoss(),this.renderer=void 0),this.overlayRender&&(this.overlayRender.destroy(),this.overlayRender=void 0),this.camera=void 0,this.controls&&(this.controls.dispose(),this.controls=void 0),this.groundPlane&&(this.groundPlane.geometry.dispose(),this.groundPlane.clear(),this.groundPlane=void 0)}enableRender(){}getRaycaster(){}getRaycastableObjectsByMouse(e){return[]}getBBox(){}getActiveSection(){}flyTo(e,i){}is3d(){return!0}deactivateMeasurement(){}setMeasurementsVisibility(e){}screenshot(e){return ot(this,null,function*(){})}showStats(){}hideStats(){}};var oE=class{constructor(r){this.viewer=r,this.boxSelectHelper=new $f(r)}get viewerContainer(){return this.viewer.viewerContainer}get camera(){return this.viewer.camera}get raycaster(){return this.viewer.getRaycaster()}activate(){var r;(r=this.boxSelectHelper)==null||r.select().then(e=>{this.handleZoomToRect(e.min,e.max)})}deactivate(){var r;(r=this.boxSelectHelper)==null||r.deactivate(),this.boxSelectHelper=void 0}pickPositionByScreenPoint(r){let e=Mr.screenPoint2NdcPoint(r,this.camera,this.viewerContainer);this.raycaster.setFromCamera(e,this.camera);let i=[];this.viewer.name==="BimViewer"?i=this.viewer.getRaycastableObjectsByMouse({clientX:r.x,clientY:r.y}):this.viewer.name==="DxfViewer"&&(i=[this.viewer.groundPlane]);let n=this.raycaster.intersectObjects(i)||[];if(n.length>0)return n[0].point}handleZoomToRect(r,e){let i=this.pickPositionByScreenPoint(r),n=this.pickPositionByScreenPoint(e);if(i&&n){let s=new A(Math.min(i.x,n.x),Math.min(i.y,n.y),Math.min(i.z,n.z)),a=new A(Math.max(i.x,n.x),Math.max(i.y,n.y),Math.max(i.z,n.z)),o=new Ot(s,a);this.viewer.zoomToBBox(o)}}destroy(){this.deactivate()}};var _O=class extends nE{constructor(e,i){super(i);this.manager=e}undo(){let e=super.undo();switch(e==null?void 0:e.type){case"Add":{let i=this.manager.getMarkupById(e.payload.id);i&&this.manager.removeMarkup(i,!1)}break;case"Remove":{let i=this.manager.createMarkup(e.payload);i&&this.manager.addMarkup(i,!1)}break;case"Update":{let{from:i,to:n}=e.payload,s=this.manager.getMarkupById(i.id);s&&this.manager.updateMarkup(s,i,!1)}break;default:break}return e}redo(){let e=super.redo();switch(e==null?void 0:e.type){case"Add":{let i=this.manager.createMarkup(e.payload);i&&this.manager.addMarkup(i,!1)}break;case"Remove":{let i=this.manager.getMarkupById(e.payload.id);i&&this.manager.removeMarkup(i,!1)}break;case"Update":{let{from:i,to:n}=e.payload,s=this.manager.getMarkupById(n.id);s&&this.manager.updateMarkup(s,n,!1)}break;default:break}return e}};var sDe=new A,D0=class extends jo{constructor(e){var i;super();this.drawableList=new Hp("markup");this.lineWidth=2;this.lineColor="#ff0000";this.fillColor="rgba(255, 0, 0, 0.3)";this.fontSize=20;this.mouseDown=!1;this.mouseDownPositionX=void 0;this.mouseDownPositionY=void 0;this.isDrawing=!1;this.tempPoints=[];this.actived=!1;this.undoRedoHelper=new _O(this);this.mousedown=e=>{var n;let i=this.pickThreejsPositionByMouse(e);if(this.mouseDownPositionX=i.x,this.mouseDownPositionY=i.y,e.button===0&&(this.mouseDown=!0),e.button===2&&(this.creatingShape&&this.tempPoints.length<2?(this.removeMarkup(this.creatingShape,!1),this.creatingShape=void 0):(n=this.creatingShape)==null||n.update(this.tempPoints),this.isDrawing&&this.endDraw(this.creatingShape)),this.selectedShape&&(this.selectedShape.selected=!1,this.selectedShape=void 0,this.render()),!this.isDrawing){let s=this.drawableList.getDrawableByPosition(i);s&&(this.selectedShape=s,s.selected=!0,this.render(),this.textInput&&(this.textInput.style.display="none"))}if(this.isCreateTextMode()&&this.mouseDown&&!this.selectedShape&&((!this.textInitialPosition||this.textInput&&this.textInput.value.length===0)&&(this.textInitialPosition=i.clone()),this.addInput(e.clientX,e.clientY)),this.isCreateLineMode()&&this.mouseDown&&!this.selectedShape){if(this.tempPoints.length>0){let s=this.tempPoints[0];if(sDe.subVectors(s,i).length()<this.overlayRender.getPixelSize(5,this.camera)){i=this.tempPoints[0].clone(),this.tempPoints.push(i),this.endDraw(this.creatingShape);return}}this.isDrawing=!0,this.tempPoints.push(i)}if(this.isCreateDotMode()&&this.mouseDown&&!this.selectedShape){if(!this.creatingShape){let s=this.creatingShape=this.drawShape(i);s&&this.addMarkup(s,!0)}this.isDrawing=!0,this.render()}};this.mousemove=e=>{e.preventDefault();let i=this.pickThreejsPositionByMouse(e);if(this.selectedShape){if(this.mouseDown&&this.mouseDownPositionX!==void 0&&this.mouseDownPositionY!==void 0){this.isEditing()||(this.initialDataForEditing=this.selectedShape.getData());let n=i.x-this.mouseDownPositionX,s=i.y-this.mouseDownPositionY;this.selectedShape.translate(n,s),this.render(),this.mouseDownPositionX=i.x,this.mouseDownPositionY=i.y}}else{if(this.isCreateDotMode())return;if(this.mouseDown&&this.isCreateShapeMode()&&this.mouseDownPositionX!==void 0&&this.mouseDownPositionY!==void 0){let n=new A(this.mouseDownPositionX,this.mouseDownPositionY,0);if(!this.creatingShape){let s=this.creatingShape=this.drawShape(n,i);s&&this.addMarkup(s,!1)}this.creatingShape.update([n,i]),this.isDrawing=!0,this.render()}if(this.isCreateLineMode()&&this.tempPoints.length>0&&this.isDrawing){if(!this.creatingShape){let s=this.creatingShape=this.drawLine([...this.tempPoints,i]);s&&this.addMarkup(s,!1)}let n=this.tempPoints[0];sDe.subVectors(n,i).length()<this.overlayRender.getPixelSize(5,this.camera)&&(i=this.tempPoints[0].clone()),this.creatingShape.update([...this.tempPoints,i]),this.render()}}};this.mouseup=e=>{e.preventDefault(),this.mouseDown=!1,this.selectedShape&&this.isEditing()&&this.endEdit(this.selectedShape),this.isCreateShapeMode()&&this.isDrawing&&this.endDraw(this.creatingShape)};this.keydown=e=>{e.code==="Delete"?this.selectedShape&&this.removeMarkup(this.selectedShape):e.ctrlKey&&e.code==="KeyZ"?this.undo():e.ctrlKey&&e.code==="KeyY"?this.redo():e.code==="Escape"&&this.cancelDraw(this.creatingShape)};this.viewer=e,this.overlayRender=this.viewer.overlayRender,(i=this.overlayRender)==null||i.addDrawableList(this.drawableList)}get viewerCanvas(){var e;return(e=this.viewer.renderer)==null?void 0:e.domElement}get camera(){return this.viewer.camera}get raycaster(){return this.viewer.getRaycaster()}removeMarkupEventFromViewer(){}setMarkupsVisibility(e){this.drawableList.getDrawables().forEach(i=>i.visible=e)}clearAll(){this.drawableList.clear(),this.textInput&&(this.textInput.style.display="none"),this.undoRedoHelper.clear(),this.isDrawing&&this.endDraw(),this.render()}isMarkupActive(){return this.actived}activate(){this.actived=!0,this.viewerCanvas.addEventListener("pointerdown",this.mousedown),this.viewerCanvas.addEventListener("pointermove",this.mousemove),this.viewerCanvas.addEventListener("pointerup",this.mouseup),window.addEventListener("keydown",this.keydown);let e=this.viewer.controls;this.tempKey=e.mouseButtons.LEFT,e.mouseButtons.LEFT=-1,this.tempArrowKeys=e.keys,e.keys={},this.render()}deactivate(){this.actived=!1;let e=this.viewerCanvas;e&&(e.removeEventListener("pointerdown",this.mousedown),e.removeEventListener("pointermove",this.mousemove),e.removeEventListener("pointerup",this.mouseup)),window.removeEventListener("keydown",this.keydown),this.viewer.controls.mouseButtons.LEFT=this.tempKey,this.viewer.controls.keys=this.tempArrowKeys,this.textInput&&this.textInput.remove(),this.textInput=void 0,this.textInitialPosition=void 0,this.mouseDown=!1,this.selectedShape=void 0,this.tempPoints=[],this.isDrawing=!1,this.creatingShape=void 0}getActiveMarkupType(){return this.type}setDrawType(e){this.type=e,this.endDraw()}setLineWidth(e){this.lineWidth=e}getLineWidth(){return this.lineWidth}setLineColor(e){this.lineColor=e}getLineColor(){return this.lineColor}setFillColor(e){this.fillColor=e}getFillColor(){return this.fillColor}setFontSize(e){this.fontSize=e}getFontSize(){return this.fontSize}pickPositionByScreenPoint(e){let i=new A,n=Mr.screenPoint2NdcPoint(e,this.camera,this.viewerCanvas);this.raycaster.setFromCamera(n,this.camera);let s=this.viewer.scene,a=this.raycaster.intersectObject(this.viewer.groundPlane||s)||[];return a.length>0&&i.copy(a[0].point),i}pickThreejsPositionByMouse(e){let i=Mr.getScreenPointByEvent(e,this.viewerCanvas);return this.pickPositionByScreenPoint(i)}isEditing(){return!!this.initialDataForEditing}endEdit(e){this.undoRedoHelper.addRecord("Update",{from:this.initialDataForEditing,to:e.getData()}),this.initialDataForEditing=void 0}endDraw(e){e&&this.undoRedoHelper.addRecord("Add",e.getData()),this.reset()}cancelDraw(e){e&&this.removeMarkup(e,!1),this.reset()}reset(){this.textInput&&(this.textInput.style.display="none",this.textInput.value=""),this.textInitialPosition=void 0,this.tempPoints=[],this.isDrawing=!1,this.creatingShape=void 0,this.mouseDownPositionX=void 0,this.mouseDownPositionY=void 0,this.render()}render(){var e;(e=this.overlayRender)==null||e.render()}addMarkup(e,i=!0){this.drawableList.addDrawable(e),this.render(),i&&this.undoRedoHelper.addRecord("Add",e.getData())}updateMarkup(e,i,n=!0){this.drawableList.updateDrawable(e,i),this.render(),n&&this.undoRedoHelper.addRecord("Update",e.getData())}removeMarkup(e,i=!0){this.drawableList.removeDrawable(e),this.render(),i&&this.undoRedoHelper.addRecord("Remove",e.getData())}removeMarkupById(e,i=!0){let n=this.getMarkupById(e);this.drawableList.removeDrawable(n),this.render(),i&&this.undoRedoHelper.addRecord("Remove",n.getData())}createMarkup(e){return Dr.createDrawable(e)}getMarkupById(e){return this.drawableList.getDrawableById(e)}getMarkupData(){return this.drawableList.getDrawableDatas()}setMarkupData(e){this.drawableList.clear(),this.drawableList.setDrawableDatas(e),this.render()}isCreateLineMode(){return["PolylineMarkup","CloudLineMarkup"].includes(this.type)}isCreateDotMode(){return["DotMarkup"].includes(this.type)}isCreateTextMode(){return["TextMarkup"].includes(this.type)}isCreateShapeMode(){return["XMarkup","RectMarkup","CloudRectMarkup","CircleMarkup","EllipseMarkup","ArrowMarkup","DotMarkup"].includes(this.type)}drawShape(e,i){let n=[[e.x,e.y]];return i&&n.push([i.x,i.y]),Dr.createDrawable({id:St.guid(),lineWidth:this.lineWidth,lineColor:this.lineColor,fillColor:this.fillColor,type:this.type,points:n})}drawLine(e){return Dr.createDrawable({id:St.guid(),lineWidth:this.lineWidth,lineColor:this.lineColor,fillColor:this.fillColor,type:this.type,points:e.map(i=>[i.x,i.y])})}drawText(e,i){return Dr.createDrawable({id:St.guid(),lineWidth:this.lineWidth,lineColor:this.lineColor,fillColor:this.fillColor,fontSize:this.fontSize*this.overlayRender.getPixelSize(1,this.camera),type:this.type,text:i,points:[[e.x,e.y]]})}addInput(e,i){var s;if(!this.textInput){let a=document.createElement("textarea");a.style.cssText=`
|
||
position: fixed;
|
||
border: 1px solid red;
|
||
background: transparent;
|
||
outline: none;
|
||
resize: none;
|
||
overflow: hidden;
|
||
z-index: 1000;
|
||
box-sizing: content-box;
|
||
padding: 0px 2px;
|
||
color: ${this.lineColor}`,a.setAttribute("wrap","off"),a.onkeydown=l=>{if(l.key==="Enter"){let c=parseInt(a.style.height);a.style.height=`${c+this.fontSize}px`}this.isDrawing=!0};let o;a.onkeyup=l=>{var h;let c=l.target.value,u=((h=this.overlayRender)==null?void 0:h.measureTextLength(c,`${this.fontSize}px Arial`))||0;u>50&&(o&&clearTimeout(o),o=setTimeout(()=>{l.target.style.width=`${u+4}px`},0))},a.onfocus=()=>{},a.onblur=l=>{let c=l.target.value;if(c.length>0&&this.textInitialPosition){let u=this.creatingShape=this.drawText(this.textInitialPosition,c);u.setTolerance(this.overlayRender.getPixelSize(1,this.camera)),this.addMarkup(u,!1),this.endDraw(this.creatingShape)}},(s=this.viewer.viewerContainer)==null||s.appendChild(a),this.textInput=a}setTimeout(()=>{this.textInput.focus()},0),this.textInput.style.width=`${50}px`,this.textInput.style.height=`${this.fontSize}px`,this.textInput.style.lineHeight=`${this.fontSize}px`,this.textInput.style.fontSize=`${this.fontSize}px`,this.textInput.style.color=this.lineColor,this.textInput.style.display="inline-block",this.textInput.style.left=e+4+"px",this.textInput.style.top=i-this.fontSize+"px"}undo(){this.undoRedoHelper.undo()}redo(){this.undoRedoHelper.redo()}clearUndoRedo(){this.undoRedoHelper.clear()}destroy(){this.deactivate(),this.clearAll()}};var aDe=new A,wO=class extends po{constructor(e,i){super(e);this.lineSegments=[];this.boxes=i,this.lineColor="red",this.lineWidth=2,this.calculateCloudLineSegments(i)}calculateCloudLineSegments(e){var i;for(let n=0;n<e.length;n++){let s=e[n],a=[new A(s.min.x,s.min.y),new A(s.max.x,s.min.y),new A(s.max.x,s.max.y),new A(s.min.x,s.max.y),new A(s.min.x,s.min.y)],o=aDe.subVectors(a[0],a[2]).length()/10||1e-4,l=[];for(let c=0;c<a.length-1;c++){let u=a[c],h=a[c+1],p=aDe.subVectors(h,u),d=p.length(),f=p.normalize(),m=Math.ceil(d/o);for(let g=0;g<m;g++)l.push(u.clone().add(f.clone().multiplyScalar(o*g)))}l.push(l[0]),(i=this.lineSegments)==null||i.push(l)}}draw(e,i){e.save(),e.lineWidth=this.lineWidth,e.strokeStyle=this.lineColor,e.fillStyle=this.fillColor;for(let n=0;n<this.lineSegments.length;n++){let s=this.lineSegments[n];this.drawBox(e,i,s)}}drawBox(e,i,n){e.beginPath();for(let s=0;s<n.length-1;s++){let a=this.transToScreenCoord(n[s],i),o=this.transToScreenCoord(n[s+1],i),l=Up.getControlPointByTwoPoints(o,a);s===0&&e.moveTo(a.x,a.y),e.quadraticCurveTo(l.x,l.y,o.x,o.y)}e.stroke()}drawSelect(e,i){throw new Error("Method not implemented.")}isPointInPath(e){return!1}getBounds(){let e=new Ot;for(let i=0;i<this.boxes.length;i++){let n=this.boxes[i];e.union(n)}return e}getClassType(){return"CompareDrawable"}};Dr._registerDrawableClass(wO);var Yn=Un(Yl(),1);function lE(t){return{all:t=t||new Map,on:function(r,e){var i=t.get(r);i?i.push(e):t.set(r,[e])},off:function(r,e){var i=t.get(r);i&&(e?i.splice(i.indexOf(e)>>>0,1):t.set(r,[]))},emit:function(r,e){var i=t.get(r);i&&i.slice().map(function(n){n(e)}),(i=t.get("*"))&&i.slice().map(function(n){n(r,e)})}}}var cE=(Oe=>(Oe.HomeView="HomeView",Oe.OrthoMode="OrthoMode",Oe.Measure="Measure",Oe.MeasureDistance="MeasureDistance",Oe.MeasureArea="MeasureArea",Oe.MeasureAngle="MeasureAngle",Oe.MeasureCoordinate="MeasureCoordinate",Oe.MeasureClear="MeasureClear",Oe.Markup="Markup",Oe.MarkupArrow="Arrow",Oe.MarkupRect="Rect",Oe.MarkupCloudRect="CloudRect",Oe.MarkupPolyLine="PolyLine",Oe.MarkupCloudLine="CloudLine",Oe.MarkupEllipse="Ellipse",Oe.MarkupCircle="Circle",Oe.MarkupDot="Dot",Oe.MarkupText="Text",Oe.MarkupX="X",Oe.MarkupStrokeStyle="StrokeStyle",Oe.MarkupLineWidth="LineWidth",Oe.MarkupLineWidth2="LineWidth2",Oe.MarkupLineWidth5="LineWidth5",Oe.MarkupLineWidth10="LineWidth10",Oe.MarkupFontSize="FontSize",Oe.MarkupFontSize14="FontSize14",Oe.MarkupFontSize18="FontSize18",Oe.MarkupFontSize24="FontSize24",Oe.MarkupClear="MarkupClear",Oe.MarkupQuit="MarkupQuit",Oe.Section="Section",Oe.SectionBox="SectionBox",Oe.SectionPlane="SectionPlane",Oe.SectionAxis="SectionAxis",Oe.BimTree="BimTree",Oe.Viewpoint="Viewpoint",Oe.Annotation="Annotation",Oe.Property="Property",Oe.Settings="Settings",Oe.Compared="Compared",Oe.QuitCompare="QuitCompare",Oe.Fullscreen="FullScreen",Oe.SceneClear="SceneClear",Oe.Layers="Layers",Oe.ZoomToRectangle="ZoomToRectangle",Oe.Screenshot="GetScreenshot",Oe))(cE||{}),oDe=[["HomeView","OrthoMode","FullScreen","ZoomToRectangle","GetScreenshot"],["Measure","Markup","Section"],["BimTree","Viewpoint","Annotation","Property","Compared","QuitCompare","Layers"],["Settings"]];var vh=class{constructor(r,e,i=[...oDe]){this.bimViewer=r;this.menuConfig=e;this.groupConfig=i;this.visible=!0;this.menuList=new Map;this.keydown=r=>{this.visible&&r.code==="Escape"&&this.clearActive()};this.init()}init(){var e;let r=document.createElement("div");r.classList.add("toolbar"),this.groupConfig.forEach((i,n)=>{let s=document.createElement("div");s.classList.add("toolbar-group");let a=document.createElement("div");a.classList.add("toolbar-group-division"),i.forEach(o=>{let l=(0,Yn.get)(this.menuConfig,o);if(l&&l.visible!==!1){let c=this.createToolbarMenu(this.bimViewer,o,l);s.appendChild(c.element)}}),s.hasChildNodes()&&(n&&r.appendChild(a),r.appendChild(s))}),this.element=r,(e=this.bimViewer.widgetContainer)==null||e.appendChild(r),r.oncontextmenu=i=>{i.preventDefault()},window.addEventListener("keydown",this.keydown,!1)}clearActive(){if(this.activateMenuId){let r=this.menuList.get(this.activateMenuId);r==null||r.setActive(!1),this.activateMenuId=void 0}}createToolbarMenu(r,e,i,n){let s=new eG(r,this,e,i,n);if(this.menuList.set(e,s),i.children){let a=document.createElement("div");a.classList.add("toolbar-sub-menu");let o=document.createElement("div");o.classList.add("toolbar-sub-menu-list"),a.appendChild(o),(0,Yn.forIn)(i.children,(l,c)=>{if(l&&l.visible!==!1){let u=this.createToolbarMenu(r,c,l,s);o.appendChild(u.element)}}),s.element.appendChild(a)}return s}updateMenu(r,e){(0,Yn.assign)(this.menuConfig[r],e),this.refresh()}updateMenus(r){(0,Yn.forEach)(r,({menuId:e,config:i})=>{(0,Yn.assign)(this.menuConfig[e],i)}),this.refresh()}addMenu(r,e,i){if((0,Yn.keys)(this.menuConfig).includes(r)){ne.error("[Toolbar]",r,"exists.");return}if((0,Yn.assign)(this.menuConfig,{[r]:e}),i){let[n,s]=i;if(n>this.groupConfig.length-1)this.groupConfig=(0,Yn.concat)(this.groupConfig,[[r]]);else{let a=this.groupConfig[n];this.groupConfig[n]=s>a.length-1?(0,Yn.concat)(a,r):(0,Yn.concat)((0,Yn.take)(a,s),r,(0,Yn.takeRight)(a,a.length-s))}}else this.groupConfig=(0,Yn.concat)(this.groupConfig,[[r]]);this.refresh()}refresh(){this.destroy(),this.init()}show(){this.element&&(this.element.style.display=""),this.visible=!0}hide(){this.element&&(this.element.style.display="none"),this.visible=!1}destroy(){this.element&&this.element.remove(),this.element=void 0,this.menuList.clear(),window.removeEventListener("keydown",this.keydown,!1)}},eG=class{constructor(r,e,i,n,s){this.bimViewer=r;this.toolbar=e;this.menuId=i;this.eventBus=lE();this.active=n.defaultActive||!1,this.element=n.customElement&&n.customElement(r,this.menuId,n)||this.createButton(r,this.menuId,n),this.eventBus.on("activeChange",a=>{a?(this.element.classList.add("active"),(0,Yn.forEach)(n.mutexIds,o=>{var c;let l=(c=this.toolbar)==null?void 0:c.menuList.get(o);l&&l.active&&l.setActive(!1)}),n.onActive&&n.onActive(r)):(this.element.classList.remove("active"),n.onDeactive&&n.onDeactive(r)),this.element.firstChild instanceof HTMLElement&&IC(this.element.firstChild.classList,n.icon,this.active),s&&s.setActive(a)}),this.element.onclick=a=>{switch(a.stopPropagation(),n.type){case 1:{n.onClick&&n.onClick(r,this.toolbar,a);break}case 4:{n.onClick&&n.onClick(r,this.toolbar,a),this.active=!this.active,this.toolbar.activateMenuId=this.menuId,this.eventBus.emit("activeChange",this.active);break}default:}}}createButton(r,e,i){let n=document.createElement("div");n.id=e,n.classList.add("toolbar-menu"),i.defaultActive&&n.classList.add("active"),i.children&&n.classList.add("toolbar-parent-menu");let{default:s="icon-new",iconFont:a=ho}=i.icon;return n.innerHTML=`<div class="icon ${a} ${s}"></div>`,n.title=gh(i.menuName),n.innerHTML+=`<span>${n.title}</span>`,n}setActive(r){this.active=r,this.eventBus.emit("activeChange",this.active)}};var cDe={["Arrow"]:{menuName:"Toolbar.markupArrow",icon:{default:"icon-arrow",iconFont:"iconfont"},type:4,onActive:t=>{t.activateMarkup("ArrowMarkup")},onDeactive(t){t.deactivateMarkup()},mutexIds:["Rect","CloudRect","PolyLine","CloudLine","Ellipse","Circle","Dot","Text","X"]},["Rect"]:{defaultActive:!0,menuName:"Toolbar.markupRect",icon:{default:"icon-rectangle",iconFont:"iconfont"},type:4,onActive:t=>{t.activateMarkup("RectMarkup")},onDeactive(t){t.deactivateMarkup()},mutexIds:["Arrow","CloudRect","PolyLine","CloudLine","Ellipse","Circle","Dot","Text","X"]},["CloudRect"]:{menuName:"Toolbar.markupCloudRect",icon:{default:"icon-cloud",iconFont:"iconfont"},type:4,onActive:t=>{t.activateMarkup("CloudRectMarkup")},onDeactive(t){t.deactivateMarkup()},mutexIds:["Rect","Arrow","PolyLine","CloudLine","Ellipse","Circle","Dot","Text","X"]},["PolyLine"]:{menuName:"Toolbar.markupPolyLine",icon:{default:"icon-polyline",iconFont:"iconfont"},type:4,onActive:t=>{t.activateMarkup("PolylineMarkup")},onDeactive(t){t.deactivateMarkup()},mutexIds:["Rect","Arrow","CloudRect","CloudLine","Ellipse","Circle","Dot","Text","X"]},["CloudLine"]:{menuName:"Toolbar.markupCloudLine",icon:{default:"icon-cloud-segment",iconFont:"iconfont"},type:4,onActive:t=>{t.activateMarkup("CloudLineMarkup")},onDeactive(t){t.deactivateMarkup()},mutexIds:["Rect","CloudRect","PolyLine","Arrow","Ellipse","Circle","Dot","Text","X"]},["Ellipse"]:{menuName:"Toolbar.markupEllipse",icon:{default:"icon-oval",iconFont:"iconfont"},type:4,onActive:t=>{t.activateMarkup("EllipseMarkup")},onDeactive(t){t.deactivateMarkup()},mutexIds:["Rect","CloudRect","PolyLine","CloudLine","Arrow","Circle","Dot","Text","X"]},["Circle"]:{menuName:"Toolbar.markupCircle",icon:{default:"icon-round",iconFont:"iconfont"},type:4,onActive:t=>{t.activateMarkup("CircleMarkup")},onDeactive(t){t.deactivateMarkup()},mutexIds:["Rect","CloudRect","PolyLine","CloudLine","Ellipse","Arrow","Dot","Text","X"]},["Dot"]:{menuName:"Toolbar.markupDot",icon:{default:"icon-round",iconFont:"iconfont"},type:4,onActive:t=>{t.activateMarkup("DotMarkup")},onDeactive(t){t.deactivateMarkup()},mutexIds:["Rect","CloudRect","PolyLine","CloudLine","Ellipse","Arrow","Circle","Text","X"]},["X"]:{menuName:"Toolbar.markupX",icon:{default:"icon-cross",iconFont:"iconfont"},type:4,onActive:t=>{t.activateMarkup("XMarkup")},onDeactive(t){t.deactivateMarkup()},mutexIds:["Rect","CloudRect","PolyLine","CloudLine","Ellipse","Circle","Dot","Arrow","Text"]},["Text"]:{menuName:"Toolbar.markupText",icon:{default:"icon-text",iconFont:"iconfont"},type:4,onActive:t=>{t.activateMarkup("TextMarkup")},onDeactive(t){t.deactivateMarkup()},mutexIds:["Rect","CloudRect","PolyLine","CloudLine","Ellipse","Circle","Dot","Arrow","X"]},["StrokeStyle"]:{menuName:"Toolbar.markupStroke",icon:{default:"icon-color-red",iconFont:"iconfont"},type:1,onClick:(t,r,e)=>{let i=e.target.parentElement,n=i==null?void 0:i.firstElementChild,s=document.createElement("input");s.setAttribute("type","color"),s.style.position="absolute",s.style.left=`${e.x}px`,s.style.top=`${e.y}px`,s.value=t.getMarkupLineColor(),s.click(),s.oninput=a=>{let o=a.target.value;t.setMarkupLineColor(o),n.style.color=o}}},["LineWidth"]:{menuName:"Toolbar.markupLineWidth",icon:{default:"icon-line",iconFont:"iconfont"},customElement(t,r,e){let i=document.createElement("div");return i.id=r,i.classList.add("toolbar-menu"),e.children&&i.classList.add("toolbar-parent-menu"),i.title=gh(e.menuName),i.innerHTML+=`<span>${i.title}</span>`,i},type:3,children:{["LineWidth2"]:{defaultActive:!0,icon:{default:"icon-line-2",iconFont:"iconfont"},onClick:t=>{t.setMarkupLineWidth(2)},type:4,menuName:"Toolbar.markupLineWidth2",mutexIds:["LineWidth5","LineWidth10"]},["LineWidth5"]:{icon:{default:"icon-line-3",iconFont:"iconfont"},onClick:t=>{t.setMarkupLineWidth(3)},type:4,menuName:"Toolbar.markupLineWidth5",mutexIds:["LineWidth2","LineWidth10"]},["LineWidth10"]:{icon:{default:"icon-line-4",iconFont:"iconfont"},onClick:t=>{t.setMarkupLineWidth(4)},type:4,menuName:"Toolbar.markupLineWidth10",mutexIds:["LineWidth2","LineWidth5"]}}},["FontSize"]:{menuName:"Toolbar.markupFontSize",icon:{default:"icon-font"},customElement(t,r,e){let i=document.createElement("div");return i.id=r,i.classList.add("toolbar-menu"),e.children&&i.classList.add("toolbar-parent-menu"),i.title=gh(e.menuName),i.innerHTML+=`<span>${i.title}</span>`,i},type:3,children:{["FontSize14"]:{icon:{default:"icon-font14",iconFont:"iconfont"},onClick:t=>{t.setMarkupFontSize(14)},type:4,menuName:"",mutexIds:["FontSize18","FontSize24"]},["FontSize18"]:{defaultActive:!0,icon:{default:"icon-font18",iconFont:"iconfont"},onClick:t=>{t.setMarkupFontSize(18)},type:4,menuName:"",mutexIds:["FontSize14","FontSize24"]},["FontSize24"]:{icon:{default:"icon-font24",iconFont:"iconfont"},onClick:t=>{t.setMarkupFontSize(24)},type:4,menuName:"",mutexIds:["FontSize14","FontSize18"]}}},["MarkupClear"]:{icon:{default:"icon-eraser",iconFont:"iconfont"},onClick:t=>{ne.info("[Toolbar]","Clear Markup",t),t.clearMarkups()},type:1,menuName:"Toolbar.clearMarkup"},["MarkupQuit"]:{icon:{default:""},customElement(t,r,e){let i=document.createElement("div");return i.id=r,i.classList.add("toolbar-menu"),e.children&&i.classList.add("toolbar-parent-menu"),i.title=gh(e.menuName),i.innerHTML+=`<span>${i.title}</span>`,i},onClick:(t,r)=>{var e;t.deactivateMarkup(),r.destroy(),(e=t.toolbar)==null||e.show()},type:1,menuName:"Toolbar.quitMarkup"}},q2t=[["Arrow","Rect","CloudRect","PolyLine","Ellipse","Circle","Text","MarkupClear","MarkupQuit"]],RO=class extends vh{constructor(r,e,i=[...q2t]){super(r,e,i)}};var uE=class{constructor(r,e,i=document.body){this.container=i;this.isFollowing=!1;this.diffX=0;this.diffY=0;this.start=r=>{this.isFollowing=!0,this.diffX=r.clientX-this.element.offsetLeft,this.diffY=r.clientY-this.element.offsetTop};this.stop=()=>{this.isFollowing=!1};this.follow=r=>{if(!this.isFollowing)return;let e=r.clientX-this.diffX,i=r.clientY-this.diffY;this.element.style.left=e+"px",this.element.style.top=i+"px"};this.element=document.createElement("div"),this.element.id=r,this.element.classList.add("pop-panel");let n=document.createElement("div");n.classList.add("pop-panel-header"),n.append(e),this.element.appendChild(n),this.header=n;let s=document.createElement("div");s.classList.add("pop-panel-body"),this.element.appendChild(s),this.body=s,n.addEventListener(vB,this.start),n.addEventListener(gB,this.stop),document.body.addEventListener(wf,this.follow),this.container.appendChild(this.element)}destroy(){document.body.removeEventListener(wf,this.follow),this.element.removeEventListener(vB,this.start),this.element.removeEventListener(gB,this.stop),this.element.remove()}};var Fa=new A(1,0,0),Qf=new A(0,1,0),em=new A(0,0,1);var uDe=new A(0,1,0),_S=new Ue,tG=2,tu=class extends hr{constructor(e=Fa){super();this.redMaterial=new or({color:16711680,depthTest:!1});this.greenMaterial=new or({color:65280,depthTest:!1});this.blueMaterial=new or({color:255,depthTest:!1});this.highlightMaterial=new or({color:16776960,depthTest:!1});this.pickableMaterial=new or({color:9807270,depthTest:!1});this.initIgnoreClipMaterial(),this.initOrUpdateByAxis(e)}initIgnoreClipMaterial(){[this.redMaterial,this.greenMaterial,this.blueMaterial,this.highlightMaterial,this.pickableMaterial].forEach(e=>{e.onBeforeCompile=function(i,n){i.fragmentShader=i.fragmentShader.replace("#include <clipping_planes_pars_fragment>","").replace("#include <clipping_planes_fragment>",""),i.vertexShader=i.vertexShader.replace("#include <clipping_planes_pars_vertex>","").replace("#include <clipping_planes_vertex>","")}})}setDirection(e){let i=new Or;i.setFromUnitVectors(Fa,e),this.applyQuaternion(i)}initOrUpdateByAxis(e){this.clear(),[{actionType:"TranslateX",direction:Fa,material:this.redMaterial},{actionType:"TranslateY",direction:Qf,material:this.greenMaterial},{actionType:"TranslateZ",direction:em,material:this.blueMaterial}].forEach(i=>{let{actionType:n,direction:s,material:a}=i,o=this.createTranslateGizmo(n,s,tG,s.angleTo(e)===0?a:this.pickableMaterial);this.add(o)}),[{actionType:"RotateX",direction:Fa,material:this.redMaterial,degree:90},{actionType:"RotateY",direction:Qf,material:this.greenMaterial,degree:90},{actionType:"RotateZ",direction:em,material:this.blueMaterial,degree:90}].forEach(i=>{let{actionType:n,direction:s,material:a,degree:o}=i;if(s.angleTo(e)!==0){let l=this.createRotateGizmo(n,s,tG,a,o);this.add(l)}}),this.createSphere(1,this.pickableMaterial)}createTranslateGizmo(e,i,n,s){let a=i.angleTo(uDe),o=uDe.clone().cross(i);_S.makeRotationAxis(o,a);let l=new Dl(n/5,n/5,n*20),c=n*10;l.translate(0,c,0),l.applyMatrix4(_S);let u=new Dl(0,n,n*3),h=c*2;u.translate(0,h,0),u.applyMatrix4(_S);let p=qo([u,l]),d=new Je(p,s);return d.userData.actionType=e,s===this.pickableMaterial&&d.layers.set(11),d}createRotateGizmo(e,i,n,s,a){let o=new A(0,0,1),l=i.clone().cross(o),c=i.angleTo(o);_S.makeRotationAxis(l,c);let u=new wp(n*12,n/5,8,36,wr.degToRad(a));u.applyMatrix4(_S);let h=new Je(u,s);return h.userData.actionType=e,h}createSphere(e,i){let n=new ro(e,32,16),s=new Je(n,i);s.layers.set(11),this.add(s)}setActiveAxis(e){this.initOrUpdateByAxis(e)}createHoverRotateObjectByAxis(e){let i=Fa;switch(e){case"RotateX":i=Fa;break;case"RotateY":i=Qf;break;case"RotateZ":i=em;break;default:break}return this.createRotateGizmo("",i,tG,this.highlightMaterial,360)}setActive(e,i){var s;let n=i.userData.actionType;["RotateX","RotateY","RotateZ"].includes(n)?e?(this.hoverObject=this.createHoverRotateObjectByAxis(n),this.add(this.hoverObject),i.visible=!1):((s=this.hoverObject)==null||s.removeFromParent(),i.visible=!0,this.hoverObject=void 0):e?(this.originalMaterial=i.material,i.material=this.highlightMaterial):this.originalMaterial&&(i.material=this.originalMaterial)}adjustSize(e){let i=new A;this.getWorldPosition(i);let n=e.position,s=1;e instanceof Zi?s=(e.top-e.bottom)/e.zoom:e instanceof qr&&(s=i.distanceTo(n)*Math.min(1.9*Math.tan(Math.PI*e.fov/360)/e.zoom,7)),this.scale.set(1,1,1).multiplyScalar(s/180)}};var tm=class{constructor(r){this.mouseDown=!1;this.lastWorldPos=new A;this.mouseMoved=!1;this.dragStarted=!1;this.refrencePlane=new Ei;this.isShowSectionPlane=!1;this.mousedown=r=>{r.button===0&&this.camera&&this.selectedObject&&(this.mouseDown=!0)};this.mousemove=r=>{if(this.dragStarted)this.updateRaycasterByMouse(r),this.onDragMove(r);else{this.activateSelectedObject(!1);let e=this.getIntersections(r);e?(this.selectedObject=e.object,this.activateSelectedObject(!0),this.mouseDown&&(this.dragStarted||(this.dragStarted=!0,this.onDragStart(r)))):this.selectedObject=void 0}this.viewer.enableRender()};this.mouseup=r=>{r.button===0&&(this.mouseDown&&this.dragStarted&&(this.onDragEnd(r),this.dragStarted=!1),this.mouseDown=!1,this.selectedObject=void 0)};this.keydown=r=>{r.code==="Escape"&&this.deactivate()};if(!r.camera||!r.renderer||!r.controls||!r.scene)throw new Error("Invalid bimViewer!");this.viewer=r,this.scene=r.scene,this.renderer=r.renderer;let e=r.getBBox();if(!e)throw new Error("Need to set sectionBox first!");this.sectionBox=e.clone()}get canvas(){var r;return(r=this.viewer.renderer)==null?void 0:r.domElement}get isActive(){return!!this.raycaster}get camera(){return this.viewer.camera}get controls(){return this.viewer.controls}setGlobalClippingEnable(r){this.clipPlanes&&(r?(this.renderer.localClippingEnabled=!0,this.renderer.clippingPlanes=this.clipPlanes):(this.renderer.localClippingEnabled=!1,this.renderer.clippingPlanes=[]))}activate(){this.canvas.addEventListener("pointerdown",this.mousedown),this.canvas.addEventListener("pointermove",this.mousemove),this.canvas.addEventListener("pointerup",this.mouseup),window.addEventListener("keydown",this.keydown),this.raycaster=this.viewer.getRaycaster()}deactivate(){var e;let r=this.canvas;r&&(r.removeEventListener("pointerdown",this.mousedown),r.removeEventListener("pointermove",this.mousemove),r.removeEventListener("pointerup",this.mouseup)),window.removeEventListener("keydown",this.keydown),this.setGlobalClippingEnable(!1),(e=this.selectedObject)==null||e.removeFromParent(),this.selectedObject=void 0,this.dragStarted=!1,this.raycaster=void 0}getIntersections(r){if(!this.raycaster)return;this.updateRaycasterByMouse(r);let e=this.raycaster.intersectObjects(this.getIntersectObjects())||[],i=e.find(n=>n.object&&n.object.parent instanceof tu);return i||e[0]}updateRaycasterByMouse(r){if(!this.raycaster)return;let e=Mr.getScreenPointByEvent(r,this.canvas),i=Mr.screenPoint2NdcPoint(e,this.camera,this.canvas);this.raycaster&&this.raycaster.layers.disable(11),this.raycaster.setFromCamera(i,this.camera)}destroy(){this.deactivate()}};var pDe=new Ot,dDe=new Or,MO=class extends Je{constructor(e,i){super();this.vertices=[];this.actionType=e,this.geometry=new it,this.vertices=i,this.geometry.setFromPoints(i),this.geometry.setIndex([0,1,2,0,2,3]),this.material=new or({depthTest:!1,color:MO.normalPlaneColor,transparent:!0,opacity:.1,side:wi}),this.createIgnoreClipMateriasl(this.material),this.geometry.computeVertexNormals(),this.edge=this.createEdge(i),this.add(this.edge)}createIgnoreClipMateriasl(e){e.onBeforeCompile=function(i,n){i.fragmentShader=i.fragmentShader.replace("#include <clipping_planes_pars_fragment>","").replace("#include <clipping_planes_fragment>",""),i.vertexShader=i.vertexShader.replace("#include <clipping_planes_pars_vertex>","").replace("#include <clipping_planes_vertex>","")}}createEdge(e){let i=new it;i.setFromPoints(e),i.setIndex([0,1,1,2,2,3,3,0]);let n=new Tr({color:MO.normalLineColor});this.createIgnoreClipMateriasl(n);let s=new _r(i,n);return s.layers.set(11),s}update(e){this.geometry.setFromPoints(e),this.geometry.computeBoundingSphere(),this.geometry.computeVertexNormals(),this.edge.geometry.setFromPoints(e),this.vertices=e}rotatePlane(e,i){let n=this.getPlaneCenter();dDe.setFromAxisAngle(e,i),this.vertices=this.vertices.map(s=>s.sub(n).applyQuaternion(dDe).add(n)),this.update(this.vertices)}setDirection(e){let i=new Or;i.setFromUnitVectors(Fa,e);let n=this.getPlaneCenter();this.vertices=this.vertices.map(s=>s.sub(n).applyQuaternion(i).add(n)),this.update(this.vertices)}getPlaneNormal(){let[e,i,n]=this.vertices,s=new A;return un.getNormal(e,i,n,s),s}setActive(e){this.material.opacity=e?.2:.1}getPlaneCenter(){pDe.setFromPoints(this.vertices);let e=new A;return pDe.getCenter(e),e}},an=MO;an.normalPlaneColor=new Ve(0,.855,.718),an.activePlaneColor=new Ve(1,1,0),an.normalLineColor=16777215;var DO=class extends tm{constructor(e){super(e);this.activeAxis="X";this.center=new A,this.sectionBox.getCenter(this.center),this.axisInfoMap={["X"]:{normal:new A(1,0,0)},["Y"]:{normal:new A(0,1,0)},["Z"]:{normal:new A(0,0,1)}},this.viewer.addEventListener("RenderAfter",()=>{var i;this.isActive&&((i=this.gizmo)==null||i.adjustSize(this.camera))})}activate(){super.activate(),this.setActiveAxis("X")}deactivate(){var e,i;super.deactivate(),(e=this.planeMesh)==null||e.removeFromParent(),(i=this.gizmo)==null||i.removeFromParent(),this.setGlobalClippingEnable(!1),this.planeMesh=void 0,this.gizmo=void 0}resetSection(){var e,i;(e=this.planeMesh)==null||e.removeFromParent(),(i=this.gizmo)==null||i.removeFromParent(),this.setGlobalClippingEnable(!1),this.planeMesh=void 0,this.gizmo=void 0,this.setActiveAxis("X")}setActiveAxis(e){this.activeAxis=e,this.initOrUpdateGizmo(),this.initOrUpdateSectionPlane(),this.initOrUpdateClipPlane(),this.setGlobalClippingEnable(!0),this.viewer.enableRender()}setSectionVisible(e){this.gizmo&&this.planeMesh&&(this.gizmo.visible=e,this.planeMesh.visible=e),this.isShowSectionPlane=e,this.viewer.enableRender()}initOrUpdateClipPlane(){switch(this.activeAxis){case"X":this.clipPlane=new Ei(new A(-1,0,0),this.center.x);break;case"Y":this.clipPlane=new Ei(new A(0,-1,0),this.center.y);break;case"Z":this.clipPlane=new Ei(new A(0,0,-1),this.center.z);break;default:break}this.clipPlane&&(this.clipPlanes=[this.clipPlane])}initOrUpdateSectionPlane(){var l;let e=new A;this.sectionBox.getSize(e);let i=e.length(),n=this.center,s=new Ot().setFromCenterAndSize(n,new A(i,i,i)),{min:a,max:o}=s;switch((l=this.planeMesh)==null||l.removeFromParent(),this.activeAxis){case"X":this.planeMesh=new an("X",[new A(n.x,o.y,a.z),new A(n.x,o.y,o.z),new A(n.x,a.y,o.z),new A(n.x,a.y,a.z)]);break;case"Y":this.planeMesh=new an("Y",[new A(o.x,n.y,a.z),new A(a.x,n.y,a.z),new A(a.x,n.y,o.z),new A(o.x,n.y,o.z)]);break;case"Z":this.planeMesh=new an("Z",[new A(o.x,o.y,n.z),new A(a.x,o.y,n.z),new A(a.x,a.y,n.z),new A(o.x,a.y,n.z)]);break;default:break}this.planeMesh&&this.scene.add(this.planeMesh),this.viewer.enableRender()}initOrUpdateGizmo(){var i,n;(i=this.gizmo)==null||i.removeFromParent();let e=this.axisInfoMap[this.activeAxis].normal;this.gizmo=new tu,this.gizmo.setDirection(e),this.sectionBox.getCenter(this.gizmo.position),(n=this.scene)==null||n.add(this.gizmo)}onDragStart(e){var n;if(this.selectedObject instanceof an)return;this.controls&&this.dragStarted&&this.selectedObject&&!(this.selectedObject instanceof an)&&(this.controls.enableRotate=!1),ne.info("[AxisPlaneSection] onDragStart:",e);let i=new A;this.sectionBox.getCenter(i),this.refrencePlane.setFromNormalAndCoplanarPoint(this.camera.getWorldDirection(this.refrencePlane.normal),i),(n=this.raycaster)==null||n.ray.intersectPlane(this.refrencePlane,this.lastWorldPos)}onDragMove(e){var d,f,m;if(!this.lastWorldPos||!this.selectedObject||!this.clipPlane||!this.planeMesh||!this.gizmo||this.selectedObject&&this.selectedObject instanceof an)return;let i=new A;(d=this.raycaster)==null||d.ray.intersectPlane(this.refrencePlane,i),console.log(i);let n=this.selectedObject.userData.actionType,s=new A().subVectors(this.lastWorldPos,this.center).normalize(),a=new A().subVectors(i,this.center).normalize(),o=new A().subVectors(i,this.lastWorldPos).projectOnVector(Fa.clone().applyQuaternion(this.gizmo.quaternion)),l=s.angleTo(a),c=new A().crossVectors(s,a),u=new A;this.sectionBox.getSize(u);let h=Math.max(u.x,u.y,u.z),p;switch(n){case"TranslateX":case"TranslateY":case"TranslateZ":p=new A().addVectors(this.gizmo.position,o),this.sectionBox.clone().setFromCenterAndSize(this.center,new A(h,h,h)).containsPoint(p)&&((f=this.gizmo)==null||f.position.add(o),(m=this.planeMesh)==null||m.position.add(o));break;case"RotateX":{let g=Fa.clone().applyQuaternion(this.gizmo.quaternion);c.dot(g)<0&&(l=-l),this.gizmo.rotateX(l),this.planeMesh.rotatePlane(g,l)}break;case"RotateY":{let g=Qf.clone().applyQuaternion(this.gizmo.quaternion);c.dot(g)<0&&(l=-l),this.gizmo.rotateY(l),this.planeMesh.rotatePlane(g,l)}break;case"RotateZ":{let g=em.clone().applyQuaternion(this.gizmo.quaternion);c.dot(g)<0&&(l=-l),this.gizmo.rotateZ(l),this.planeMesh.rotatePlane(g,l)}break;default:break}this.clipPlane.setFromNormalAndCoplanarPoint(this.planeMesh.getPlaneNormal().negate(),this.gizmo.position),this.lastWorldPos=i}onDragEnd(e){this.selectedObject instanceof an||(this.controls&&!this.controls.enableRotate&&(this.controls.enableRotate=!0),this.activateSelectedObject(!1),this.dragStarted=!1,this.selectedObject=void 0,ne.info("[AxisPlaneSection] onDragEnd:",e))}getIntersectObjects(){return!this.planeMesh||!this.gizmo?[]:[this.planeMesh,this.gizmo]}activateSelectedObject(e){this.selectedObject&&(this.selectedObject instanceof an?this.selectedObject.setActive(e):this.selectedObject.parent instanceof tu&&this.selectedObject.parent.setActive(e,this.selectedObject))}};var CO=class extends uE{constructor(e){let i=e.widgetContainer;super("axis-section-pop-panel","\u8F74\u5411\u5256\u5207",i);this.axis="x";this.isVisible=!0;this.keydown=e=>{e.code==="Escape"&&this.destroy()};this.section=e.getActiveSection(),this.createGroupSelectLayout(),this.addGroupSelectItems(),this.createActiveSelectLayout(),this.addActiveItems(),window.addEventListener("keydown",this.keydown)}destroy(){super.destroy(),window.removeEventListener("keydown",this.keydown)}createGroupSelectLayout(){let e=document.createElement("div");e.classList.add("pop-panel-group-select"),this.body.appendChild(e),this.groupSelectNode=e}addGroupSelectItems(){let e=(l,c,u=!1)=>{let h=document.createElement("div");return h.classList.add("pop-panel-item"),h.setAttribute("itemName",l),h.append(c),u&&h.classList.add("active"),this.groupSelectNode&&this.groupSelectNode.appendChild(h),h},i=()=>{s.classList.remove("active"),a.classList.remove("active"),o.classList.remove("active")},n=(l,c)=>u=>{u.stopPropagation(),this.activeItem!==l&&(i(),this.activeItem=l,c.classList.add("active"),this.section.setActiveAxis(l))},s=e("X","X",!0);s.onclick=n("X",s);let a=e("Y","Y");a.onclick=n("Y",a);let o=e("Z","Z");o.onclick=n("Z",o)}createActiveSelectLayout(){let e=document.createElement("div");e.classList.add("pop-panel-active-select"),this.body.appendChild(e),this.activeSelectNode=e}addActiveItems(){let e=(s,a)=>{let o=document.createElement("i");o.classList.add(ho),o.classList.add(a),s.innerHTML="",s.appendChild(o)},n=((s,a,o="")=>{let l=document.createElement("div");return l.classList.add("pop-panel-item"),a&&l.setAttribute("title",a),l.setAttribute("itemName",s),l.setAttribute("isActive","false"),e(l,o),l})("visible","\u9690\u85CF\u5256\u5207\u9762","icon-hidesectionplane");n.onclick=()=>{this.isVisible=!this.isVisible,this.isVisible?(e(n,"icon-hidesectionplane"),n.setAttribute("title","\u9690\u85CF\u5256\u5207\u9762")):(e(n,"icon-showsectionplane"),n.setAttribute("title","\u663E\u793A\u5256\u5207\u9762")),this.section.setSectionVisible(this.isVisible)}}};var AO=class extends uE{constructor(e){let i=e.widgetContainer;super("pick-section-pop-panel","\u62FE\u53D6\u9762\u5256\u5207",i);this.isVisible=!0;this.enabled=!0;this.keydown=e=>{e.code==="Escape"&&this.destroy()};this.section=e.getActiveSection(),this.createActiveSelectLayout(),this.addActiveItems(),window.addEventListener("keydown",this.keydown)}destroy(){super.destroy(),window.removeEventListener("keydown",this.keydown)}createActiveSelectLayout(){let e=document.createElement("div");e.classList.add("pop-panel-active-select"),this.body.appendChild(e),this.activeSelectNode=e}addActiveItems(){let e=(a,o)=>{let l=document.createElement("i");l.classList.add(ho),l.classList.add(o),a.innerHTML="",a.appendChild(l)},i=(a,o,l="")=>{let c=document.createElement("div");return c.classList.add("pop-panel-item"),o&&c.setAttribute("title",o),c.setAttribute("itemName",a),c.setAttribute("isActive","false"),e(c,l),c},n=i("visible","\u9690\u85CF\u5256\u5207\u9762","icon-hidesectionplane");n.onclick=()=>{this.enabled&&(this.isVisible=!this.isVisible,this.isVisible?(e(n,"icon-hidesectionplane"),n.setAttribute("title","\u9690\u85CF\u5256\u5207\u9762")):(e(n,"icon-showsectionplane"),n.setAttribute("title","\u663E\u793A\u5256\u5207\u9762")),this.section.setSectionVisible(this.isVisible))},this.activeSelectNode&&this.activeSelectNode.appendChild(n),this.visibleNode=n;let s=i("reset","\u91CD\u7F6E","icon-reset");s.onclick=a=>{a.stopPropagation(),this.enabled&&(this.isVisible=!0,e(n,"icon-hidesectionplane"),n.setAttribute("title","\u9690\u85CF\u5256\u5207\u9762"),this.section.resetSection())},this.activeSelectNode&&this.activeSelectNode.appendChild(s),this.resetNode=s}enable(){this.enabled=!0,this.visibleNode&&this.visibleNode.classList.remove("disable")}disable(){this.enabled=!1,this.visibleNode&&this.visibleNode.classList.add("disable")}};var nl=(n=>(n.Distance="Distance",n.Area="Area",n.Angle="Angle",n.Coordinate="Coordinate",n))(nl||{}),ru=class extends jo{constructor(e,i,n,s){super();this.mouseMoved=!1;this.mouseDowned=!1;this.mouseDownPositionX=-1;this.mouseDownPositionY=-1;this.tempEdgeMaterial=new Tr({color:16711680});this.snapPoint=void 0;this.mousedown=e=>{let i=Mr.getScreenPointByEvent(e,this.canvas);this.mouseDownPositionX=i.x,this.mouseDownPositionY=i.y,this.mouseMoved=!1,this.mouseDowned=!0};this.mousemove=e=>{if(this.lastMoveEvent=e,this.mouseDownPositionX>=0&&this.mouseDownPositionY>=0&&(Math.abs(e.offsetX-this.mouseDownPositionX)>5||Math.abs(e.offsetY-this.mouseDownPositionY)>5)&&(this.mouseMoved=!0),this.mouseDowned)return;let i=this.getIntersections(e);if(!i.length)return;let n=Date.now();this.handleSnap(i),ne.debug(`[BaseMeasurement] this.handleSnap costs ${(Date.now()-n)/1e3}s`),this.onMouseMove(this.snapPoint),this.viewer.enableRender()};this.mouseup=e=>{e.buttons===0&&(this.mouseDowned=!1),this.mouseMoved||this.onMouseClick(e)};this.dblclick=()=>{ne.info("[Measure] Double clicked")};this.keydown=e=>{if(e.code==="Enter"){let i=new MouseEvent("pointerup",{button:bi.RIGHT});this.onMouseClick(i)}else e.code==="Escape"&&this.cancel()};this.getIntersections=e=>{if(!this.raycaster)return[];this.raycaster&&this.raycaster.layers.disable(10);let i=this.viewer.getRaycastableObjectsByMouse(e);ne.debug(`[BaseMeasurement] The count of raycastable object is ${i.length}`,i);let n=Date.now(),s=this.raycaster.intersectObjects(i,!0)||[];return ne.debug(`[BaseMeasurement] this.raycaster.intersectObjects costs ${(Date.now()-n)/1e3}s`),this.renderer.clippingPlanes.length>0&&(s=s.filter(a=>this.renderer.clippingPlanes.every(function(o){return o.distanceToPoint(a.point)>0}))),s};this.type=e,this.viewer=i,this.drawList=n,this.osnapHelper=s}get canvas(){var e;return(e=this.viewer.renderer)==null?void 0:e.domElement}get camera(){return this.viewer.camera}get renderer(){return this.viewer.renderer}get isActive(){return!!this.raycaster}get isMeasuring(){return this.isActive&&!this.completed}activate(){this.canvas.addEventListener("pointerdown",this.mousedown),this.canvas.addEventListener("pointermove",this.mousemove),this.canvas.addEventListener("pointerup",this.mouseup),this.canvas.addEventListener("dblclick",this.dblclick),window.addEventListener("keydown",this.keydown);let e=this.viewer.translate;if(e){this.tooltip=new ph("measure-tooltip",e("Tooltip.measure"),{followPointer:!0,showOnCreate:!0,parentNode:this.viewer.widgetContainer,target:this.canvas});let i=document.getElementById("measure-tooltip");i&&(i.style.pointerEvents="none")}this.setTooltipContent(),this.raycaster=this.viewer.getRaycaster()}deactivate(){var i,n;let e=this.canvas;e&&(e.removeEventListener("pointerdown",this.mousedown),e.removeEventListener("pointermove",this.mousemove),e.removeEventListener("pointerup",this.mouseup),e.removeEventListener("dblclick",this.dblclick)),window.removeEventListener("keydown",this.keydown),(i=this.tooltip)==null||i.hide(),(n=this.tooltip)==null||n.destroy(),this.tooltip=void 0,this.raycaster=void 0,this.currentMeasureDrawable&&this.removeDrawable(this.currentMeasureDrawable),this.osnapHelper.deactivate(),this.drawingPoints=void 0,this.currentMeasureDrawable=void 0,this.lastMouseDownPosition=void 0}removeDrawable(e){this.drawList.removeDrawable(e)}clearClickedDrawable(){this.clickedOnMeasurementDrawable&&(this.clickedOnMeasurementDrawable.selected=!1,this.clickedOnMeasurementDrawable=void 0)}onMouseClick(e){let i=Date.now();if(!(this.lastClickTime&&i-this.lastClickTime<500)&&(this.lastClickTime=i,this.clickedOnMeasurementDrawable=void 0,this.completed==null||this.completed===!0)){let n=this.getIntersections(e)[0];if(n){let s=this.drawList.getDrawableByPosition(n.point,this.raycaster);s&&(this.dispatchEvent("clickedonmeasurement",s),this.clickedOnMeasurementDrawable=s)}}}getIntersectsOutline(e){var n,s;let i=[];for(let a=0;a<e.length;a++){let o=e[a];if(((n=o.object)==null?void 0:n.name)==="groundPlane"){i.push(o.object);continue}if(o.object instanceof Je){let l=new oi(new Ip(o.object.geometry,5),this.tempEdgeMaterial);l.matrixWorld.copy(o.object.matrixWorld),i.push(l),i.push(o.object)}else i.push(o.object)}return e=((s=this.raycaster)==null?void 0:s.intersectObjects(i))||[],ne.debug("intersects edge: ",e),e}handleSnap(e){var s,a;let i=[],n;if(this.viewer.is3d())n=e[0].point,i=e;else{for(let o of e){if(o.point.z=0,((s=o.object)==null?void 0:s.name)==="groundPlane"){n=o.point;continue}i.push(o)}if(n){for(let l of i)l.distance=l.point.distanceTo(n);let o=l=>l instanceof rn?0:l instanceof oi?2:l instanceof _r?1:3;i.sort((l,c)=>{let u=o(l.object),h=o(c.object);return u!==h?u-h:l.distance-c.distance})}}i=this.getIntersectsOutline(i),ne.debug("[BaseMeasurement] filteredIntersections:",i),this.snapPoint=((a=this.osnapHelper.handleSnap(n,i,this.viewer.is3d(),this.lastMouseDownPosition))==null?void 0:a.clone())||e[0].point.clone(),this.snapPoint||(this.viewer.is3d()?this.snapPoint=e[0].point:this.snapPoint=n)}};ru.MAX_DISTANCE=5e3;var ra=class extends po{constructor(e,i){super(e);this.type="Distance";this.labelBounds=new Ds;this.drawing=!1;this.update(i)}setDrawingState(e){this.drawing=e}drawSelect(e,i){let n=this.getVertexs();this.drawPoints(e,i,n)}drawPoints(e,i,n){e.save(),e.fillStyle=ra.MAJOR_COLOR,e.strokeStyle=ra.MINOR_COLOR,e.lineWidth=ra.LINE_WIDTH,e.beginPath(),n.forEach(s=>{let a=this.transToScreenCoord(s,i);e.moveTo(a.x+ra.POINT_RADIUS,a.y),e.arc(a.x,a.y,ra.POINT_RADIUS,0,Math.PI*2)}),e.closePath(),e.fill(),e.stroke(),e.restore()}drawText(e,i){if(!this.label||!this.labelPositon)return;e.font=`${ra.LABEL_FONT_SIZE}px Arial`;let n=e.measureText(this.label).width*1.2,s=ra.LABEL_FONT_SIZE*1.5;this.labelBounds.setFromCenterAndSize(this.labelPositon,new le(n,s)),this.drawRoundRect(e,this.labelPositon.x-n/2,this.labelPositon.y-s/2,n,s,4),e.save(),e.fillStyle=ra.MINOR_COLOR,e.textBaseline="middle",e.textAlign="center",e.fillText(this.label,this.labelPositon.x,this.labelPositon.y),e.restore()}drawRoundRect(e,i,n,s,a,o){s<2*o&&(o=s/2),a<2*o&&(o=a/2),e.save(),e.fillStyle=ra.MAJOR_COLOR,e.strokeStyle=ra.MINOR_COLOR,e.lineWidth=ra.LINE_WIDTH,e.beginPath(),e.moveTo(i+o,n),e.arcTo(i+s,n,i+s,n+a,o),e.arcTo(i+s,n+a,i,n+a,o),e.arcTo(i,n+a,i,n,o),e.arcTo(i,n,i+s,n,o),e.closePath(),e.fill(),this.selected&&e.stroke(),e.restore()}getVertexs(){return this.points}update(e){let{min:i,max:n}=new Ot().setFromPoints(e);return this.x=i.x,this.y=i.y,this.width=Math.abs(n.x-i.x),this.height=Math.abs(n.y-i.y),this.points=e,this}getBounds(){let e=this.getVertexs();return new Ot().setFromPoints(e)}getData(){return{id:this.id,type:this.type,points:this.points.map(e=>[e.x,e.y,e.z])}}setData(e){super.setData(e),this.setLineColor(ra.MAJOR_COLOR),this.setFillColor(ra.AREA_FILL_COLOR),this.setLineWidth(ra.LINE_WIDTH)}isPointInPath(e,i){let n=i==null?void 0:i.ray;if(!n)return!1;let s=3*this.tolerance,a=this.transToScreenCoord(e,i.camera);if(this.labelBounds.containsPoint(a))return!0;let o=new A,l=new A,c=this.points;for(let u=0;u<c.length-1;u++){let h=c[u],p=c[u+1]||c[0];if(n.distanceSqToSegment(h,p,l,o)<s*s)return!0}return!1}getUnitString(){return this.type==="Distance"?PB("mm"):this.type==="Area"?`${PB("m",2)}`:this.type==="Angle"?"\xB0":""}},Oi=ra;Oi.MAJOR_COLOR="rgba(249, 157, 11, 0.9)",Oi.MINOR_COLOR="rgb(255, 255, 255)",Oi.AREA_FILL_COLOR="rgba(249, 157, 11, 0.3)",Oi.LINE_WIDTH=2,Oi.POINT_RADIUS=5,Oi.LABEL_FONT_SIZE=14;var wS=class extends Oi{constructor(e,i){super(e,i);this.type="Angle";this.update(i)}draw(e,i){e.save(),e.lineWidth=Oi.LINE_WIDTH,e.strokeStyle=Oi.MAJOR_COLOR;let n=this.points;if(e.beginPath(),n.forEach((s,a)=>{let o=this.transToScreenCoord(s,i);a===0?e.moveTo(o.x,o.y):e.lineTo(o.x,o.y)}),this.points.length===3){let[s,a,o]=this.points.map(d=>this.transToScreenCoord(d,i)),l=new le().subVectors(s,a).normalize(),c=new le().subVectors(o,a).normalize(),u=Math.min(s.distanceTo(a),o.distanceTo(a)),h=l.angle(),p=c.angle();e.moveTo(a.x,a.y),e.arc(a.x,a.y,u/5,h,p,l.cross(c)<0)}e.stroke(),e.restore(),this.drawing&&this.drawPoints(e,i,this.points.slice(0,this.points.length-1)),this.drawText(e,i)}drawText(e,i){if(this.points.length<3)return;let[n,s,a]=this.points,o=this.getAngleBisector(n,s,a),l=this.calculateAngle(n,s,a);this.label=`${Wu(l,2)} ${this.getUnitString()}`;let u=Math.min(n.distanceTo(s),a.distanceTo(s))*.3;this.labelPositon=this.transToScreenCoord(s.clone().add(new A(o.x*u,o.y*u,o.z*u)),i),super.drawText(e,i)}getAngleBisector(e,i,n){let s=e,a=i,o=n,l=new A(s.x-a.x,s.y-a.y,s.z-a.z).normalize(),c=new A(o.x-a.x,o.y-a.y,o.z-a.z).normalize();return new A(l.x+c.x,l.y+c.y,l.z+c.z).normalize()}calculateAngle(e,i,n){let s=e,a=i,o=n,l=new A(s.x-a.x,s.y-a.y,s.z-a.z),c=new A(o.x-a.x,o.y-a.y,o.z-a.z);return l.angleTo(c)*180/Math.PI}getClassType(){return"Angle"}};Dr._registerDrawableClass(wS);var OO=class extends ru{constructor(r,e,i){super("Angle",r,e,i)}onMouseMove(r){this.createOrUpdateAngleMeasureDrawable(r)}onMouseClick(r){var s;if(super.onMouseClick(r),this.clickedOnMeasurementDrawable)return;if(this.drawingPoints||(this.drawingPoints=[]),r.button===bi.RIGHT){this.drawingPoints=void 0,this.currentMeasureDrawable&&(this.removeDrawable(this.currentMeasureDrawable),this.currentMeasureDrawable=void 0),this.completed=void 0,this.lastMouseDownPosition=void 0;return}let e=this.getIntersections(r)[0];if(!e)return;let i=(s=this.snapPoint)!=null?s:e==null?void 0:e.point,n=this.drawingPoints;n.push(i),this.lastMouseDownPosition=i,n.length===1&&(this.dispatchEvent("firstpointpicked"),this.completed=!1),this.createOrUpdateAngleMeasureDrawable(),n.length>=3&&this.complete()}complete(){var r;(r=this.currentMeasureDrawable)==null||r.setDrawingState(!1),this.dispatchEvent("complete",this.currentMeasureDrawable),this.completed=!0,this.currentMeasureDrawable=void 0,this.drawingPoints=void 0,this.lastMouseDownPosition=void 0}cancel(){let r=this.drawingPoints;if(r&&r.length>0){if(r.pop(),r.length===0&&(this.currentMeasureDrawable&&(this.removeDrawable(this.currentMeasureDrawable),this.currentMeasureDrawable=void 0),this.completed=!0),this.lastMoveEvent){let e=this.getIntersections(this.lastMoveEvent)[0];e&&this.onMouseMove(e.point)}}else this.deactivate(),this.dispatchEvent("deactivate",this.type);this.osnapHelper.deactivate(),this.lastMouseDownPosition=void 0}deactivate(){super.deactivate(),this.currentMeasureDrawable&&this.removeDrawable(this.currentMeasureDrawable)}setTooltipContent(){var i;let r=this.viewer.translate;if(!r)return;let e=r("Tooltip.measure");e&&this.tooltip&&((i=this.tooltip)==null||i.setContent(e))}createOrUpdateAngleMeasureDrawable(r){if(!this.drawingPoints||this.drawingPoints&&this.drawingPoints.length<1)return;let e=[...this.drawingPoints];this.currentMeasureDrawable||(this.currentMeasureDrawable=new wS(St.guid(),this.drawingPoints),this.drawList.addDrawable(this.currentMeasureDrawable)),r&&e.push(r),this.currentMeasureDrawable.update(e),this.currentMeasureDrawable.setDrawingState(!0)}};var RS=class extends Oi{constructor(e,i){super(e,i);this.type="Area";this.update(i)}draw(e,i){let n=this.points;e.save(),e.lineWidth=Oi.LINE_WIDTH,e.strokeStyle=Oi.MAJOR_COLOR,e.fillStyle=Oi.AREA_FILL_COLOR,e.beginPath(),n.forEach((s,a)=>{let o=this.transToScreenCoord(s,i);a===0?e.moveTo(o.x,o.y):e.lineTo(o.x,o.y)}),e.closePath(),e.fill(),e.stroke(),e.restore(),this.drawing&&this.drawPoints(e,i,this.points.slice(0,this.points.length-1)),this.drawText(e,i)}drawText(e,i){let n=this.points,s=this.calculateArea(n);this.label=`${Wu(s,2)}`,this.labelPositon=this.transToScreenCoord(this.getBarycenter(n),i),super.drawText(e,i)}calculateArea(e){let i=0,n=Mf.getFaces(e);for(let s=0;s<n.length/3;s++){let a=e[n[3*s]],o=e[n[3*s+1]],l=e[n[3*s+2]],c=o.clone().sub(a),u=l.clone().sub(a);i+=c.cross(u).length()/2}return i}getBarycenter(e){let i=e.length,n=0,s=0,a=0;return e.forEach(o=>{n+=o.x,s+=o.y,a+=o.z}),new A(n/i,s/i,a/i)}isPointInPath(e,i){let n=i==null?void 0:i.ray;if(!n)return!1;let s=this.transToScreenCoord(e,i.camera);if(this.labelBounds.containsPoint(s))return!0;let a=Mf.getFaces(this.points);for(let o=0;o<a.length/3;o++){let l=this.points[a[3*o]],c=this.points[a[3*o+1]],u=this.points[a[3*o+2]];if(n.intersectTriangle(l,c,u,!1,e))return!0}return!1}getClassType(){return"Area"}};Dr._registerDrawableClass(RS);var PO=class extends ru{constructor(r,e,i){super("Area",r,e,i)}onMouseMove(r){this.createOrUpdateAreaMeasureDrawable(r)}onMouseClick(r){var s,a;if(super.onMouseClick(r),this.clickedOnMeasurementDrawable)return;this.drawingPoints||(this.drawingPoints=[]);let e=this.drawingPoints;if(r.button===bi.RIGHT){let o=!0;if(e.length<3&&(ne.warn("[Measure] If the number of points is less than 3, the measurement area cannot be formed !"),o=!1),o&&Mf.isSelfIntersecting(e)&&(ne.warn("[Measure] The area formed by these points intersects itself, so the correct measurement cannot be obtained !"),o=!1),!o){this.drawingPoints=void 0,this.currentMeasureDrawable&&(this.removeDrawable(this.currentMeasureDrawable),this.currentMeasureDrawable=void 0),this.completed=void 0,this.lastMouseDownPosition=void 0;return}this.createOrUpdateAreaMeasureDrawable(),this.complete();return}let i=this.getIntersections(r)[0];if(!i){ne.warn("[Measure] No intersection found!");return}let n=(a=(s=this.snapPoint)==null?void 0:s.clone())!=null?a:i==null?void 0:i.point.clone();if(e.length>=3&&!Mf.arePointsCoplanar([...e,n])){ne.warn("[Measure] The position is not coplanar with other points");return}e.push(n),this.lastMouseDownPosition=n,e.length===1&&(this.dispatchEvent("firstpointpicked"),this.completed=!1),this.createOrUpdateAreaMeasureDrawable()}complete(){var r;(r=this.currentMeasureDrawable)==null||r.setDrawingState(!1),this.dispatchEvent("complete",this.currentMeasureDrawable),this.completed=!0,this.drawingPoints=void 0,this.currentMeasureDrawable=void 0,this.lastMouseDownPosition=void 0}cancel(){let r=this.drawingPoints;if(r&&r.length>0){if(r.pop(),r.length===0&&(this.currentMeasureDrawable&&(this.removeDrawable(this.currentMeasureDrawable),this.currentMeasureDrawable=void 0),this.completed=!0),this.lastMoveEvent){let e=this.getIntersections(this.lastMoveEvent)[0];e&&this.onMouseMove(e.point)}}else this.deactivate(),this.dispatchEvent("deactivate",this.type);this.osnapHelper.deactivate(),this.lastMouseDownPosition=void 0}deactivate(){super.deactivate(),this.currentMeasureDrawable&&this.removeDrawable(this.currentMeasureDrawable)}setTooltipContent(){var e;let r=this.viewer.translate;if(r){let i=r("Tooltip.areaMeasurement");i&&this.tooltip&&((e=this.tooltip)==null||e.setContent(i))}}createOrUpdateAreaMeasureDrawable(r){if(!this.drawingPoints||this.drawingPoints&&this.drawingPoints.length<1)return;let e=[...this.drawingPoints];this.currentMeasureDrawable||(this.currentMeasureDrawable=new RS(St.guid(),this.drawingPoints),this.drawList.addDrawable(this.currentMeasureDrawable)),r&&e.push(r),this.currentMeasureDrawable.update(e),this.currentMeasureDrawable.setDrawingState(!0)}};var MS=class extends Oi{constructor(e,i){super(e,i);this.type="Coordinate";this.update(i)}draw(e,i){this.drawText(e,i),e.save(),e.lineWidth=Oi.LINE_WIDTH,e.strokeStyle=Oi.MAJOR_COLOR,e.fillStyle=Oi.AREA_FILL_COLOR;let n=this.points;e.beginPath(),n.forEach(s=>{let a=this.transToScreenCoord(s,i);e.arc(a.x,a.y,Oi.POINT_RADIUS,0,Math.PI*2)}),e.fill(),e.stroke(),e.restore()}drawText(e,i){let n=this.points[0];lr.areNumbersEqual(n.x,0);let s=lr.areNumbersEqual(n.x,0)?0:n.x,a=lr.areNumbersEqual(n.y,0)?0:n.y,o=lr.areNumbersEqual(n.z,0)?0:n.z;this.label=`${Wu(s,2)}, ${Wu(a,2)}, ${Wu(o,2)}`,e.font=`${Oi.LABEL_FONT_SIZE}px Arial`;let l=e.measureText(this.label).width*1.2,c=Oi.LABEL_FONT_SIZE*1.5;this.labelPositon=this.transToScreenCoord(n,i),this.labelPositon.y-=c/2,this.labelBounds.setFromCenterAndSize(this.labelPositon,new le(l,c)),this.drawRoundRect(e,this.labelPositon.x-l/2,this.labelPositon.y-c/2,l,c,4),e.save(),e.fillStyle=Oi.MINOR_COLOR,e.textBaseline="middle",e.textAlign="center",e.fillText(this.label,this.labelPositon.x,this.labelPositon.y),e.restore()}getClassType(){return"Coordinate"}};Dr._registerDrawableClass(MS);var NO=class extends ru{constructor(r,e,i){super("Coordinate",r,e,i)}onMouseMove(r){this.createOrUpdatePointMarker(r)}onMouseClick(r){var s;if(super.onMouseClick(r),this.clickedOnMeasurementDrawable)return;if(this.drawingPoints||(this.drawingPoints=[]),r.button===bi.RIGHT){this.drawingPoints=void 0,this.currentMeasureDrawable&&(this.removeDrawable(this.currentMeasureDrawable),this.currentMeasureDrawable=void 0),this.completed=void 0,this.lastMouseDownPosition=void 0;return}let e=this.getIntersections(r)[0];if(!e)return;let i=(s=this.snapPoint)!=null?s:e==null?void 0:e.point,n=this.drawingPoints;n.push(i),this.lastMouseDownPosition=i,n.length===1&&(this.dispatchEvent("firstpointpicked"),this.completed=!1),this.createOrUpdatePointMarker(i),n.length>=1&&this.complete()}complete(){this.dispatchEvent("complete",this.currentMeasureDrawable),this.completed=!0,this.drawingPoints=void 0,this.currentMeasureDrawable=void 0,this.lastMouseDownPosition=void 0}cancel(){let r=this.drawingPoints;if(r&&r.length>0){if(r.pop(),r.length===0&&(this.completed=!0),this.lastMoveEvent){let e=this.getIntersections(this.lastMoveEvent)[0];e&&this.onMouseMove(e.point)}}else this.deactivate(),this.dispatchEvent("deactivate",this.type);this.osnapHelper.deactivate(),this.drawingPoints=void 0,this.currentMeasureDrawable=void 0,this.lastMouseDownPosition=void 0}setTooltipContent(){var e;let r=this.viewer.translate;if(r){let i=r("Tooltip.measure");i&&this.tooltip&&((e=this.tooltip)==null||e.setContent(i))}}createOrUpdatePointMarker(r){if(!this.drawingPoints||this.drawingPoints&&this.drawingPoints.length<1)return;let e=[...this.drawingPoints];this.currentMeasureDrawable||(this.currentMeasureDrawable=new MS(St.guid(),this.drawingPoints),this.currentMeasureDrawable.selected=!0,this.drawList.addDrawable(this.currentMeasureDrawable)),r&&e.push(r),this.currentMeasureDrawable.update(e)}};var rG=class extends Oi{constructor(e,i){super(e,i);this.type="Distance";this.update(i)}draw(e,i){let n=this.points;e.save(),e.lineWidth=Oi.LINE_WIDTH,e.strokeStyle=Oi.MAJOR_COLOR,e.beginPath(),n.forEach((s,a)=>{let o=this.transToScreenCoord(s,i);a===0?e.moveTo(o.x,o.y):e.lineTo(o.x,o.y)}),e.closePath(),e.stroke(),e.restore(),this.drawing?this.drawPoints(e,i,this.points.slice(0,this.points.length-1)):this.selected||this.drawVerticalLine(e,i),this.drawText(e,i)}drawText(e,i){if(this.points.length<2)return;let[n,s]=this.points,a=n.distanceTo(s);this.label=`${Wu(a,2)}`,this.labelPositon=this.transToScreenCoord(n.clone().add(s).divideScalar(2),i),super.drawText(e,i)}drawVerticalLine(e,i){if(this.points.length<2)return;let[n,s]=this.points.map(u=>this.transToScreenCoord(u,i)),[a,o]=this.getShortLineBySegments(n,s),[l,c]=this.getShortLineBySegments(s,n);e.save(),e.lineWidth=Oi.LINE_WIDTH,e.strokeStyle=Oi.MAJOR_COLOR,e.beginPath(),e.moveTo(a.x,a.y),e.lineTo(o.x,o.y),e.moveTo(l.x,l.y),e.lineTo(c.x,c.y),e.stroke(),e.restore()}getShortLineBySegments(e,i){let n=new le().subVectors(i,e).normalize(),s=rG.SHORT_LINE_LENGTH/2,a=Math.PI/2,o=n.clone().rotateAround(new le,a).normalize().multiplyScalar(s).add(e),l=n.clone().rotateAround(new le,-a).normalize().multiplyScalar(s).add(e);return[o,l]}getClassType(){return"Distance"}},hE=rG;hE.SHORT_LINE_LENGTH=12;Dr._registerDrawableClass(hE);var LO=class extends ru{constructor(r,e,i){super("Distance",r,e,i)}onMouseMove(r){this.createOrUpdateDistanceMeasureDrawable(r)}onMouseClick(r){var s;if(super.onMouseClick(r),this.clickedOnMeasurementDrawable)return;if(this.drawingPoints||(this.drawingPoints=[]),r.button===bi.RIGHT){this.drawingPoints=void 0,this.currentMeasureDrawable&&(this.removeDrawable(this.currentMeasureDrawable),this.currentMeasureDrawable=void 0),this.completed=void 0,this.lastMouseDownPosition=void 0;return}let e=this.getIntersections(r)[0];if(!e)return;let i=(s=this.snapPoint)!=null?s:e==null?void 0:e.point,n=this.drawingPoints;n.length<2&&n.push(i),this.lastMouseDownPosition=i,n.length===1&&(this.dispatchEvent("firstpointpicked"),this.completed=!1),this.createOrUpdateDistanceMeasureDrawable(),n.length>=2&&this.complete()}complete(){var r;(r=this.currentMeasureDrawable)==null||r.setDrawingState(!1),this.dispatchEvent("complete",this.currentMeasureDrawable),this.completed=!0,this.drawingPoints=void 0,this.currentMeasureDrawable=void 0,this.lastMouseDownPosition=void 0}cancel(){let r=this.drawingPoints;r&&r.length>0?(r.pop(),r.length===0&&(this.completed=!0),this.currentMeasureDrawable&&this.removeDrawable(this.currentMeasureDrawable)):(this.deactivate(),this.dispatchEvent("deactivate",this.type)),this.osnapHelper.deactivate(),this.drawingPoints=void 0,this.currentMeasureDrawable=void 0,this.lastMouseDownPosition=void 0}deactivate(){super.deactivate(),this.currentMeasureDrawable&&this.removeDrawable(this.currentMeasureDrawable)}setTooltipContent(){var e;let r=this.viewer.translate;if(r){let i=r("Tooltip.measure");i&&this.tooltip&&((e=this.tooltip)==null||e.setContent(i))}}createOrUpdateDistanceMeasureDrawable(r){if(!this.drawingPoints||this.drawingPoints&&this.drawingPoints.length<1)return;let e=[...this.drawingPoints];this.currentMeasureDrawable||(this.currentMeasureDrawable=new hE(St.guid(),this.drawingPoints),this.drawList.addDrawable(this.currentMeasureDrawable)),r&&e.push(r),this.currentMeasureDrawable.update(e),this.currentMeasureDrawable.setDrawingState(!0)}};var FO=class extends nE{constructor(e,i=30){super(i);this.manager=e}undo(){let e=super.undo();switch(e==null?void 0:e.type){case"ADD":{let i=e.payload.id;i&&this.manager.removeMeasurementById(i,!1)}break;case"REMOVE":{let i=e.payload,n=this.manager.createMeasurement(i);this.manager.addMeasurement(n,!1)}break;default:break}return e}redo(){let e=super.redo();switch(e==null?void 0:e.type){case"ADD":{let i=e.payload,n=this.manager.createMeasurement(i);this.manager.addMeasurement(n,!1)}break;case"REMOVE":{let i=e.payload.id;i&&this.manager.removeMeasurementById(i,!1)}break;default:break}return e}};var Ql=class{constructor(r){this.selectedMeasurementDrawable=void 0;this.drawableList=new Hp("measure");this.measurements={};this.activeMeasurementType=void 0;this.undoRedoHelper=new FO(this);this.keydown=r=>{let e=this.getActiveMeasurementType(),i;e&&(i=this.measurements[e]);let n=this.selectedMeasurementDrawable;n&&r.code==="Delete"&&(this.removeMeasurement(n),this.activeMeasurementType&&this.measurements[this.activeMeasurementType].clearClickedDrawable()),r.ctrlKey&&r.code==="KeyZ"&&(i!=null&&i.isMeasuring?i.cancel():this.undo()),r.ctrlKey&&r.code==="KeyY"&&(i!=null&&i.isMeasuring||this.redo()),this.viewer.enableRender()};var e;this.viewer=r,this.overlayRender=this.viewer.overlayRender,(e=this.overlayRender)==null||e.addDrawableList(this.drawableList),this.scene=new On,this.osnapHelper=new gO(this.overlayRender),this.measurements["Distance"]=new LO(this.viewer,this.drawableList,this.osnapHelper),this.measurements["Area"]=new PO(this.viewer,this.drawableList,this.osnapHelper),this.measurements["Angle"]=new OO(this.viewer,this.drawableList,this.osnapHelper),this.measurements["Coordinate"]=new NO(this.viewer,this.drawableList,this.osnapHelper),this.canvas.addEventListener("wheel",()=>{this.updateSnapTolerance()}),this.initEvents()}initEvents(){Object.values(this.measurements).forEach(r=>{r.addEventListener("complete",e=>{this.undoRedoHelper.addRecord("ADD",e.getData()),this.selectMeasurement(e)}),r.addEventListener("deactivate",()=>{this.osnapHelper.deactivate(),this.viewer.deactivateMeasurement()}),r.addEventListener("firstpointpicked",()=>{this.unselectMeasurement()}),r.addEventListener("clickedonmeasurement",e=>{this.selectMeasurement(e)})})}get canvas(){var r;return(r=this.viewer.renderer)==null?void 0:r.domElement}get raycaster(){return this.viewer.getRaycaster()}getPixelSizeInWorldCoord(){if(!this.viewer.viewerContainer)return ne.error("[BaseMeasurement] Missing viewer.container"),0;let r=this.viewer.camera,{clientWidth:e,clientHeight:i}=this.viewer.viewerContainer,n=0;if(r.type==="OrthographicCamera"){let s=r;n=Math.max(s.right-s.left,s.top-s.bottom)/s.zoom/Math.max(e,i)}else if(r.type==="PerspectiveCamera"){let s=r,a=this.viewer.cameraCfg,o=a&&St.arrayToVector3(a.eye),l=a&&St.arrayToVector3(a.look);n=2*(o.distanceTo(l)*Math.tan(s.fov/2*Math.PI/180))/i}return n}addMeasurement(r,e=!0){this.drawableList.addDrawable(r),this.selectedMeasurementDrawable=r,e&&this.undoRedoHelper.addRecord("ADD",r.getData()),this.viewer.enableRender()}createMeasurement(r){return Dr.createDrawable(r)}removeMeasurement(r,e=!0){this.drawableList.removeDrawable(r),this.selectedMeasurementDrawable=void 0,e&&this.undoRedoHelper.addRecord("REMOVE",r.getData()),this.viewer.enableRender()}updateSnapTolerance(r=3){let e=this.getPixelSizeInWorldCoord()*r;this.osnapHelper.updateSnapTolerance(e)}activateMeasurement(r){this.activeMeasurementType&&this.deactivateMeasurement(),this.measurements[r]?(this.measurements[r].activate(),this.activeMeasurementType=r,this.updateSnapTolerance()):(this.activeMeasurementType=void 0,ne.error("[Measure] Failed to activate measurement, type:",r)),window.addEventListener("keydown",this.keydown)}deactivateMeasurement(){this.unselectMeasurement();let r=this.activeMeasurementType;r&&this.measurements[r].deactivate(),this.activeMeasurementType=void 0,window.removeEventListener("keydown",this.keydown)}getActiveMeasurementType(){return this.activeMeasurementType}isMeasurementActive(){let r=this.activeMeasurementType;return r?this.measurements[r].isActive:!!this.getActiveMeasurementType()}getMeasurementsData(){return this.drawableList.getDrawableDatas()}setMeasurementsData(r){this.drawableList.clear(),r.forEach(e=>{this.measurements[e.type]?e.points.length>=2?this.addMeasurement(Dr.createDrawable(e),!1):ne.info("[Measure] Invalid points found in MeasurementData:",e):ne.warn("[Measure] Failed to add measurement data for",e)})}setMeasurementsVisibility(r){this.drawableList.getDrawables().forEach(e=>e.visible=r),this.viewer.enableRender()}clearMeasurements(){this.drawableList.clear(),this.viewer.enableRender()}removeMeasurementById(r,e=!0){let i=this.drawableList.getDrawableById(r);i&&(this.removeMeasurement(i,e),ne.warn("[Measure] Failed to find measurement by id:",r))}selectMeasurementById(r){this.unselectMeasurement();let e=this.drawableList.getDrawableById(r);e&&(e.selected=!0,this.selectedMeasurementDrawable=e),this.viewer.enableRender()}selectMeasurement(r){this.unselectMeasurement(),r.selected=!0,this.selectedMeasurementDrawable=r,this.viewer.enableRender()}unselectMeasurement(){this.selectedMeasurementDrawable&&(this.selectedMeasurementDrawable.selected=!1),this.selectedMeasurementDrawable=void 0,this.viewer.enableRender()}undo(){this.undoRedoHelper.undo()}redo(){this.undoRedoHelper.redo()}clearUndoRedo(){this.undoRedoHelper.clear()}destroy(){var r;this.deactivateMeasurement(),this.clearMeasurements(),this.measurements={},(r=this.osnapHelper)==null||r.destroy(),this.scene.clear(),this.undoRedoHelper.destroy()}};var ia,fDe={["HomeView"]:{icon:{default:"icon-home",active:"icon-home-filled"},menuName:"Toolbar.homeView",type:1,onClick:t=>{t.goToHomeView()}},["OrthoMode"]:{icon:{default:"icon-orthomode",active:"icon-orthomode-filled"},menuName:"Toolbar.orthoView",type:4,onActive:t=>{ne.info("[Toolbar]","Enter OrthoMode"),t.setToOrthographicCamera(!0)},onDeactive:t=>{ne.info("[Toolbar]","Exit OrthoMode"),t.setToOrthographicCamera(!1)}},["Measure"]:{icon:{default:"icon-measure",active:"icon-measure-filled"},menuName:"Toolbar.measurement",type:3,children:{["MeasureDistance"]:{icon:{default:"icon-distancemeasure",active:"icon-distancemeasure-filled"},menuName:"Toolbar.distanceMeasurement",onActive:t=>{t.deactivateSection(),t.activateMeasurement("Distance")},onDeactive:t=>{t.deactivateMeasurement()},type:4,mutexIds:["MeasureArea","MeasureAngle","MeasureCoordinate"]},["MeasureArea"]:{icon:{default:"icon-areameasure",active:"icon-areameasure-filled"},onActive:t=>{t.deactivateSection(),t.activateMeasurement("Area")},onDeactive:t=>{t.deactivateMeasurement()},type:4,menuName:"Toolbar.areaMeasurement",mutexIds:["MeasureDistance","MeasureAngle","MeasureCoordinate"]},["MeasureAngle"]:{menuName:"Toolbar.angleMeasurement",icon:{default:"icon-anglemeasure"},type:4,onActive:t=>{t.deactivateSection(),t.activateMeasurement("Angle")},onDeactive:t=>{t.deactivateMeasurement()},mutexIds:["MeasureDistance","MeasureArea","MeasureCoordinate"]},["MeasureCoordinate"]:{menuName:"Toolbar.coordinateMeasurement",icon:{default:"icon-distancemeasure"},type:4,onActive:t=>{t.deactivateSection(),t.activateMeasurement("Coordinate")},onDeactive:t=>{t.deactivateMeasurement()},mutexIds:["MeasureDistance","MeasureArea","MeasureAngle"]},["MeasureClear"]:{icon:{default:"icon-clear",active:"icon-clear-filled"},onClick:t=>{ne.debug("[Toolbar]","Clearing Measure",t),t.clearMeasurements()},type:1,menuName:"Toolbar.clearMeasurement"}},mutexIds:["Section","SectionAxis","SectionBox","SectionPlane"]},["Section"]:{icon:{default:"icon-section",active:"icon-section-filled"},menuName:"Toolbar.section",type:3,children:{["SectionAxis"]:{icon:{default:"icon-sectionplane",active:"icon-sectionplane-filled"},menuName:"Toolbar.axisSection",type:4,onActive:t=>{t.deactivateMeasurement(),t.setMeasurementsVisibility(!1),ia==null||ia.destroy(),t.activateSection("AxisPlaneSection"),ia=new CO(t)},onDeactive:t=>{t.setMeasurementsVisibility(!0),t.deactivateSection(),ia==null||ia.destroy(),ia=void 0},mutexIds:["SectionBox","SectionPlane"]},["SectionPlane"]:{icon:{default:"icon-choosesectionplane",active:"icon-choosesectionplane-filled"},menuName:"Toolbar.pickSectionPlane",type:4,onActive:t=>{t.deactivateMeasurement(),t.setMeasurementsVisibility(!1),ia==null||ia.destroy(),t.activateSection("PickPlaneSection"),ia=new AO(t)},onDeactive:t=>{t.setMeasurementsVisibility(!0),t.deactivateSection(),ia==null||ia.destroy(),ia=void 0},mutexIds:["SectionAxis","SectionBox"]},["SectionBox"]:{icon:{default:"icon-sectionbox",active:"icon-sectionbox-filled"},menuName:"Toolbar.sectionBox",type:4,onActive:t=>{t.deactivateMeasurement(),t.setMeasurementsVisibility(!1),t.activateSection()},onDeactive:t=>{t.setMeasurementsVisibility(!0),t.deactivateSection()},mutexIds:["SectionAxis","SectionPlane"]}},mutexIds:["Measure","MeasureDistance","MeasureArea","MeasureAngle","MeasureCoordinate"]},["BimTree"]:{icon:{default:"icon-bimtree",active:"icon-bimtree-filled"},menuName:"Toolbar.bimTree",type:4,onActive:()=>{ne.info("[Toolbar]","Activate Bim Tree")},onDeactive:()=>{ne.info("[Toolbar]","Deactivate Bim Tree")}},["Viewpoint"]:{icon:{default:"icon-viewpoint",active:"icon-viewpoint-filled"},menuName:"Toolbar.viewpoint",type:4,onActive:()=>{ne.info("[Toolbar]","Activate Viewpoint")},onDeactive:()=>{ne.info("[Toolbar]","Deactivate Viewpoint")},visible:!1},["Annotation"]:{icon:{default:"icon-annotation",active:"icon-annotation-filled"},menuName:"Toolbar.annotation",type:4,onActive:()=>{ne.info("[Toolbar]","Activate Annotation")},onDeactive:()=>{ne.info("[Toolbar]","Deactivate Annotation")},visible:!1},["Property"]:{icon:{default:"icon-property",active:"icon-property-filled"},menuName:"Toolbar.property",type:4,onActive:()=>{ne.info("[Toolbar]","Activate Property")},onDeactive:()=>{ne.info("[Toolbar]","Deactivate Property")},visible:!1},["Settings"]:{icon:{default:"icon-settings",active:"icon-settings-filled"},menuName:"Toolbar.settings",type:4,onActive:()=>{ne.info("[Toolbar]","Activate Settings")},onDeactive:()=>{ne.info("[Toolbar]","Deactivate Settings")},visible:!1},["FullScreen"]:{icon:{default:"icon-fullscreen",active:"icon-fullscreen-filled"},menuName:"Toolbar.fullscreen",type:4,onClick:(t,r)=>{let e=()=>{let i=r==null?void 0:r.menuList.get("FullScreen");i&&i.setActive(St.isFullScreen())};St.isFullScreen()?(St.exitFullscreen(),window.removeEventListener("resize",e)):St.fullScreen(t.viewerContainer),window.addEventListener("resize",e)}}},mDe={["SceneClear"]:{icon:{default:"icon-clear",active:"icon-clear-filled"},menuName:"clear",type:1,onClick:()=>{}}},gDe={["HomeView"]:{icon:{default:"icon-zhushitu",active:"icon-zhushitu",iconFont:"iconfont"},menuName:"Toolbar.homeView",type:1,onClick:t=>{t.goToHomeView()}},["ZoomToRectangle"]:{icon:{default:"icon-kuangxuanfangda",active:"icon-kuangxuanfangda",iconFont:"iconfont"},menuName:"Toolbar.zoomToRectangle",type:1,onClick:t=>{t.zoomToRect()}},["GetScreenshot"]:{icon:{default:"icon-frame-clipping",active:"icon-frame-clipping",iconFont:"iconfont"},menuName:"Toolbar.screenshot",type:1,onClick:t=>{t.getScreenshot().then(r=>{ne.info("[Toolbar] getScreenshot() returns:",r),r||ne.error("[Toolbar] Failed to get screenshot!");let e=document.createElement("a");e.href=r,e.download="",e.click()}).catch(r=>{ne.error("[Toolbar] Failed to get screenshot, reason:",r)})}},["Measure"]:{icon:{default:"icon-celiang1",active:"icon-celiang1",iconFont:"iconfont"},menuName:"Toolbar.measurement",type:3,children:{["MeasureDistance"]:{icon:{default:"icon-distancemeasure",active:"icon-distancemeasure-filled"},menuName:"Toolbar.distanceMeasurement",onActive:t=>{t.activateMeasurement("Distance")},onDeactive:t=>{t.deactivateMeasurement()},type:4,mutexIds:["MeasureArea","MeasureAngle","MeasureCoordinate"]},["MeasureArea"]:{icon:{default:"icon-areameasure",active:"icon-areameasure-filled"},onActive:t=>{t.activateMeasurement("Area")},onDeactive:t=>{t.deactivateMeasurement()},type:4,menuName:"Toolbar.areaMeasurement",mutexIds:["MeasureDistance","MeasureAngle","MeasureCoordinate"]},["MeasureAngle"]:{menuName:"Toolbar.angleMeasurement",icon:{default:"icon-anglemeasure"},type:4,onActive:t=>{t.activateMeasurement("Angle")},onDeactive:t=>{t.deactivateMeasurement()},mutexIds:["MeasureDistance","MeasureArea","MeasureCoordinate"]},["MeasureCoordinate"]:{menuName:"Toolbar.coordinateMeasurement",icon:{default:"icon-distancemeasure"},type:4,onActive:t=>{t.activateMeasurement("Coordinate")},onDeactive:t=>{t.deactivateMeasurement()},visible:!1,mutexIds:["MeasureDistance","MeasureArea","MeasureAngle"]},["MeasureClear"]:{icon:{default:"icon-clear",active:"icon-clear-filled"},onClick:t=>{ne.debug("[Toolbar]","Clearing Measure",t),t.clearMeasurements()},type:1,menuName:"Toolbar.clearMeasurement"}}},["Markup"]:{icon:{default:"icon-tianjiapizhu",iconFont:"iconfont"},menuName:"Toolbar.markup",type:1,onClick:(t,r)=>{t.activateMarkup("RectMarkup"),r.hide(),t.deactivateMeasurement(),new RO(t,Ur({},cDe))}},["Settings"]:{icon:{default:"icon-settings",active:"icon-settings-filled"},menuName:"Toolbar.settings",type:4,onActive:()=>{ne.info("[Toolbar]","Activate Settings")},onDeactive:()=>{ne.info("[Toolbar]","Deactivate Settings")},visible:!0},["Compared"]:{icon:{default:"icon-compared",iconFont:"iconfont"},menuName:"Toolbar.compared",type:4,onActive:()=>{ne.info("[Toolbar]","Activate Compare")},onDeactive:()=>{ne.info("[Toolbar]","Deactivate Compare")},visible:!1},["QuitCompare"]:{icon:{default:"icon-compared",iconFont:"iconfont"},menuName:"Toolbar.quitCompare",type:4,onActive:()=>{ne.info("[Toolbar]","Activate Compare")},onDeactive:()=>{ne.info("[Toolbar]","Deactivate Compare")},visible:!1},["Layers"]:{icon:{default:"icon-tucengkongzhi",active:"icon-tucengkongzhi",iconFont:"iconfont"},menuName:"Toolbar.layers",type:4,onClick:()=>{}},["FullScreen"]:{icon:{default:"icon-quanping",active:"icon-quanping",iconFont:"iconfont"},menuName:"Toolbar.fullscreen",type:4,onClick:(t,r)=>{let e=()=>{let i=r==null?void 0:r.menuList.get("FullScreen");i&&i.setActive(St.isFullScreen())};St.isFullScreen()?(St.exitFullscreen(),window.removeEventListener("resize",e)):St.fullScreen(t.viewerContainer),window.addEventListener("resize",e)}}};var vDe={enableNavCube:!0,enableAxisGizmo:!0,enableToolbar:!0,enableBottomBar:!0,enableContextMenu:!0,enableSpinner:!0,containerId:"myCanvas",units:"meters"};var DS=class{constructor(r="uploadModelFile"){this.input=document.createElement("input"),this.input.id=r,this.input.type="file",this.input.multiple=!0,this.input.accept=this.formats().map(e=>"."+e).join(","),this.input.style.display="none",this.input.onchange=e=>{let i=e.target.files;if(!i||i.length<=0){ne.error("[Uploader] No files to be uploaded!");return}this.uploadFiles(i)}}formats(){return ne.warn("[Uploader]: Should call derived class instead!"),[]}uploadFiles(r){ne.warn(`[Uploader]: Should call derived class instead! files: ${r}`)}openFileBrowserToUpload(){this.input.click()}},CS=class extends DS{constructor(e,i){super(i);this.defaultModelConfig={src:"",position:[0,0,0],rotation:[0,0,0],scale:[1,1,1],instantiate:!1,merge:!1};this.viewer=e}formats(){return["gltf","glb","dxf","obj","stl","fbx","ifc","dae","*"]}uploadFiles(e){let i=e.length;if(i===0)return;let n=Ur({},this.defaultModelConfig),s,a,o,l=new Map;for(let h=0;h<i;h++){let p=e[h];l.set(p.name,p),p.name.match(/\.(gltf|glb)$/)&&(o=p)}let c=[],u=()=>{o&&(s=URL.createObjectURL(o),c.push(s),n.src=o.name)};if(!o)o=e[0],u();else{u();let h=ks.extractUrlBase(s);a=new Ap,a.setURLModifier(p=>{let d=decodeURI(p).replace(h,"").replace(/^(\.?\/)/,"");if(l.has(d)){let f=l.get(d),m=URL.createObjectURL(f);return c.push(m),m}return p})}this.viewer.loadLocalModel(s,n,a,h=>{let p=Math.floor(h.loaded*100/h.total);ne.info(`[Uploader] Loading ${o==null?void 0:o.name}, ${p}%`)}).then(()=>{ne.info(`[Uploader] Loaded ${o==null?void 0:o.name}`),c.forEach(URL.revokeObjectURL)})}},iG=class extends DS{constructor(e,i){super(i);this.defaultModelConfig={src:"",position:[0,0,0],rotation:[0,0,0],scale:[1,1,1],instantiate:!1,merge:!0};this.viewer=e}formats(){return["dxf"]}uploadFiles(e){let i=n=>{let s=(n.loaded*100/n.total).toFixed(1);ne.info(`[Uploader] Progress: ${s}%`)};if(e.length===2){let n=e[0],s=e[1],a=URL.createObjectURL(n),o=URL.createObjectURL(s);this.viewer.compare({src:a,modelId:n.name},{src:o,modelId:s.name},i).then(()=>{this.onSuccess&&this.onSuccess({compare:!0}),ne.debug(`[Uploader] Compared models: ${a}, ${o}`)}).catch(l=>{ne.error(`[Uploader] Failed to compare models: ${a}, ${o}. reason: ${l}`)})}else{let n=e[0],s=URL.createObjectURL(n),a=Ur({},this.defaultModelConfig);a.src=s,a.modelId=n.name;try{this.viewer.loadModelAsync(a,i).then(()=>{this.onSuccess&&this.onSuccess({}),ne.info(`[Uploader] Loaded model '${a.src}'`)})}catch(o){ne.info(o)}}}},nG=class extends DS{constructor(e,i){super(i);this.viewer=e}formats(){return["png","jpg","jpeg"]}uploadFiles(e){let i={panoramas:[],id:"viewpoint_1",name:"",position:[0,1,0],initialDirection:[0,0,1]};if(e.length===1){let n=[];n.push(URL.createObjectURL(e[0])),i.panoramas.push({id:"panorama_1",images:n}),this.viewer.setViewpoints([i]),this.viewer.activatePanoramaById(i.id,i.panoramas[0].id)}else if(e.length===6){let n=p=>{let d="";for(let f=0;f<e.length;++f){let m=e[f].name;m=m.slice(0,m.indexOf(".")),m=m.toLowerCase();let g=!1;for(let y=0;y<p.length;++y)if(p[y]===m){g=!0;break}if(g){d=URL.createObjectURL(e[f]);break}}return d},s=n(["right","r"]),a=n(["left","l"]),o=n(["up","top","u"]),l=n(["down","bottom","d"]),c=n(["front","f"]),u=n(["back","b"]),h=[s,a,o,l,c,u];i.panoramas.push({id:"panorama_1",images:h}),this.viewer.setViewpoints([i]),this.viewer.activatePanoramaById(i.id,i.panoramas[0].id)}else ne.warn(`[Uploader] Expected 1 or 6 file, bug got ${e.length}!`)}};var A0=Un(Yl(),1);var yDe=new A,Y2t=new Or,TDe=new A,C0=class extends pr{constructor(r=document.createElement("div")){super(),this.isCSS3DObject=!0,this.element=r,this.element.style.position="absolute",this.element.style.pointerEvents="auto",this.element.style.userSelect="none",this.element.setAttribute("draggable",!1),this.addEventListener("removed",function(){this.traverse(function(e){e.element instanceof Element&&e.element.parentNode!==null&&e.element.parentNode.removeChild(e.element)})})}copy(r,e){return super.copy(r,e),this.element=r.element.cloneNode(!0),this}};var yh=new Ue,X2t=new Ue,HO=class{constructor(r={}){let e=this,i,n,s,a,o={camera:{fov:0,style:""},objects:new WeakMap},l=r.element!==void 0?r.element:document.createElement("div");l.style.overflow="hidden",this.domElement=l;let c=document.createElement("div");c.style.transformStyle="preserve-3d",c.style.pointerEvents="none",l.appendChild(c),this.getSize=function(){return{width:i,height:n}},this.render=function(f,m){let g=m.projectionMatrix.elements[5]*a;o.camera.fov!==g&&(l.style.perspective=m.isPerspectiveCamera?g+"px":"",o.camera.fov=g),f.matrixWorldAutoUpdate===!0&&f.updateMatrixWorld(),m.parent===null&&m.matrixWorldAutoUpdate===!0&&m.updateMatrixWorld();let y,E;m.isOrthographicCamera&&(y=-(m.right+m.left)/2,E=(m.top+m.bottom)/2);let b=m.isOrthographicCamera?"scale("+g+")translate("+u(y)+"px,"+u(E)+"px)"+h(m.matrixWorldInverse):"translateZ("+g+"px)"+h(m.matrixWorldInverse),x=b+"translate("+s+"px,"+a+"px)";o.camera.style!==x&&(c.style.transform=x,o.camera.style=x),d(f,f,m,b)},this.setSize=function(f,m){i=f,n=m,s=i/2,a=n/2,l.style.width=f+"px",l.style.height=m+"px",c.style.width=f+"px",c.style.height=m+"px"};function u(f){return Math.abs(f)<1e-10?0:f}function h(f){let m=f.elements;return"matrix3d("+u(m[0])+","+u(-m[1])+","+u(m[2])+","+u(m[3])+","+u(m[4])+","+u(-m[5])+","+u(m[6])+","+u(m[7])+","+u(m[8])+","+u(-m[9])+","+u(m[10])+","+u(m[11])+","+u(m[12])+","+u(-m[13])+","+u(m[14])+","+u(m[15])+")"}function p(f){let m=f.elements;return"translate(-50%,-50%)"+("matrix3d("+u(m[0])+","+u(m[1])+","+u(m[2])+","+u(m[3])+","+u(-m[4])+","+u(-m[5])+","+u(-m[6])+","+u(-m[7])+","+u(m[8])+","+u(m[9])+","+u(m[10])+","+u(m[11])+","+u(m[12])+","+u(m[13])+","+u(m[14])+","+u(m[15])+")")}function d(f,m,g,y){if(f.isCSS3DObject){let E=f.visible===!0&&f.layers.test(g.layers)===!0;if(f.element.style.display=E===!0?"":"none",E===!0){f.onBeforeRender(e,m,g);let b;f.isCSS3DSprite?(yh.copy(g.matrixWorldInverse),yh.transpose(),f.rotation2D!==0&&yh.multiply(X2t.makeRotationZ(f.rotation2D)),f.matrixWorld.decompose(yDe,Y2t,TDe),yh.setPosition(yDe),yh.scale(TDe),yh.elements[3]=0,yh.elements[7]=0,yh.elements[11]=0,yh.elements[15]=1,b=p(yh)):b=p(f.matrixWorld);let x=f.element,S=o.objects.get(f);if(S===void 0||S.style!==b){x.style.transform=b;let D={style:b};o.objects.set(f,D)}x.parentNode!==c&&c.appendChild(x),f.onAfterRender(e,m,g)}}for(let E=0,b=f.children.length;E<b;E++)d(f.children[E],m,g,y)}}};var EDe="#2C7BE5",Yi=Math.PI/2,gi=Math.PI/4,Ns=([t,r,e],[i,n,s])=>({position:new A(t,r,e),rotation:new Sr(i,n,s)}),Z2t={["Front"]:Mn(Ur({},Ns([0,0,1],[0,0,0])),{label:"NavCube.front"}),["Right"]:Mn(Ur({},Ns([1,0,0],[0,Yi,0])),{label:"NavCube.right"}),["Back"]:Mn(Ur({},Ns([0,0,-1],[0,Math.PI,0])),{label:"NavCube.back"}),["Left"]:Mn(Ur({},Ns([-1,0,0],[0,-Yi,0])),{label:"NavCube.left"}),["Top"]:Mn(Ur({},Ns([0,1,0],[-Yi,0,0])),{label:"NavCube.top"}),["Bottom"]:Mn(Ur({},Ns([0,-1,0],[Yi,0,0])),{label:"NavCube.bottom"})},K2t=[Ns([0,1,1],[-gi,0,-Yi]),Ns([0,1,-1],[-3*gi,0,-Yi]),Ns([0,-1,1],[gi,0,-Yi]),Ns([0,-1,-1],[3*gi,0,-Yi]),Ns([1,1,0],[-Yi,gi,0]),Ns([1,-1,0],[-Yi,3*gi,0]),Ns([-1,1,0],[-Yi,-gi,0]),Ns([-1,-1,0],[-Yi,-3*gi,0]),Ns([1,0,1],[0,gi,0]),Ns([1,0,-1],[0,3*gi,0]),Ns([-1,0,1],[0,-gi,0]),Ns([-1,0,-1],[0,-3*gi,0])],J2t=[{position:new A(1,1,1),rotation:[new Sr(-Yi,Yi,-gi),new Sr(-Yi,0,gi),new Sr(0,0,3*gi)]},{position:new A(1,1,-1),rotation:[new Sr(0,Yi,3*gi),new Sr(-Yi,0,3*gi),new Sr(0,Math.PI,-3*gi)]},{position:new A(-1,1,-1),rotation:[new Sr(Math.PI,-Yi,gi),new Sr(-Yi,0,-3*gi),new Sr(0,Math.PI,3*gi)]},{position:new A(-1,1,1),rotation:[new Sr(0,-Yi,3*gi),new Sr(-Yi,0,-gi),new Sr(0,0,-3*gi)]},{position:new A(1,-1,1),rotation:[new Sr(0,Yi,-gi),new Sr(-Yi,Math.PI,-gi),new Sr(0,0,gi)]},{position:new A(1,-1,-1),rotation:[new Sr(-Yi,Yi,3*gi),new Sr(Yi,0,gi),new Sr(0,Math.PI,-gi)]},{position:new A(-1,-1,1),rotation:[new Sr(0,-Yi,gi),new Sr(Yi,0,-3*gi),new Sr(0,0,-gi)]},{position:new A(-1,-1,-1),rotation:[new Sr(0,-Yi,-gi),new Sr(Yi,0,-gi),new Sr(0,Math.PI,gi)]}],UO=class extends pr{constructor(e={}){super();this.NAVCUBE_SIZE=100;this.clickHandler=e.onClick,(0,A0.forEach)(Z2t,i=>{this.createPlane(i)}),(0,A0.forEach)(K2t,i=>{this.createEdge(i)}),(0,A0.forEach)(J2t,(i,n)=>{this.createCorner(i,n)})}createPlane(e){let i=e.position.clone().multiplyScalar(this.NAVCUBE_SIZE/2),{rotation:n,label:s}=e,a=document.createElement("div");a.style.width=this.NAVCUBE_SIZE+"px",a.style.height=this.NAVCUBE_SIZE+"px",a.classList.add("navcube-plane"),a.classList.add("outer");let o=document.createElement("div");o.style.width=this.NAVCUBE_SIZE-4+"px",o.style.height=this.NAVCUBE_SIZE-4+"px",o.innerHTML=gh(s),o.classList.add("navcube-plane"),o.classList.add("inner"),a.appendChild(o);let l=new C0(a);l.position.copy(i),l.rotation.copy(n),this.add(l),a.addEventListener("click",()=>{this.clickHandler&&this.clickHandler(i.clone().normalize(),n)})}createEdge(e){let i=e.position.clone().multiplyScalar(this.NAVCUBE_SIZE/2),n=document.createElement("div");n.style.width=4+"px",n.style.height=this.NAVCUBE_SIZE-40+"px",n.style.background=EDe,n.classList.add("navcube-edge");let s=new C0(n);s.position.copy(i),s.rotation.copy(e.rotation),this.add(s),n.addEventListener("click",()=>{this.clickHandler&&this.clickHandler(i.clone().normalize(),e.rotation)})}createCorner(e,i){let n=h=>{h.addEventListener("click",()=>{this.clickHandler&&this.clickHandler(e.position.clone().normalize(),new Sr)}),h.addEventListener("mouseenter",()=>{let p=document.getElementsByClassName("group-"+i);(0,A0.forEach)(p,d=>{d instanceof HTMLElement&&d.classList.add("highlight")})}),h.addEventListener("mouseleave",()=>{let p=document.getElementsByClassName("group-"+i);(0,A0.forEach)(p,d=>{d instanceof HTMLElement&&d.classList.remove("highlight")})})},s=e.position.clone().multiplyScalar(this.NAVCUBE_SIZE/2+.5),a=document.createElement("div");a.style.borderTop=`${14*Math.sqrt(3)}px solid #efefef`,a.style.borderLeft=`${14}px solid transparent`,a.style.borderRight=`${14}px solid transparent`,a.classList.add("navcube-corner"),a.classList.add("group-"+i);let o=new C0(a);o.position.copy(s).lerp(e.position,.14);let l=Math.atan2(s.z,s.x);o.rotateY(s.z*s.x<0?Math.PI+l:l);let c=new Sr().setFromVector3(s.clone().normalize());o.rotateX(-c.y),s.y<0&&o.rotateZ(Math.PI),this.add(o);let u=(h,p,d)=>{let f=document.createElement("div");f.style.borderTop=`${13}px solid ${EDe}`,f.style.borderLeft=`${13}px solid transparent`,f.style.borderRight=`${13}px solid transparent`,f.classList.add("navcube-corner-plane"),f.classList.add("group-"+p);let m=new C0(f),g=e.position.clone();g.setComponent(d,0),m.position.copy(s).sub(g),m.rotateX(h.x),m.rotateY(h.y),m.rotateZ(h.z),this.add(m),n(f)};(0,A0.forEach)(e.rotation,(h,p)=>{u(h,i,p)}),n(a)}};var BO=class{constructor(r,e){this.height=150;this.width=150;this.width=r||this.width,this.height=e||this.height,this.init()}init(){this.initRenderer(),this.initScene(),this.animate()}initRenderer(){this.renderer=new HO,this.renderer.setSize(this.width,this.height),this.renderer.domElement.classList.add("css3d-navcube"),document.body.appendChild(this.renderer.domElement)}initScene(){this.scene=new On;let r=window.innerWidth/window.innerHeight,e=200;this.camera=new Zi(e*r/-2,e*r/2,e/2,e/-2,1,1e3),this.camera.position.set(-200,200,200),this.scene.add(this.camera);let i=n=>{if(!this.camera||!n||!this.hostViewer||!this.hostViewer.camera||!this.hostViewer.controls)return;let s=this.hostViewer.controls.target,o=this.hostViewer.camera.position.distanceTo(s);this.hostViewer.flyTo(s.clone().add(n.clone().multiplyScalar(o)),s)};this.navCube=new UO({onClick:i}),this.scene.add(this.navCube)}render(){this.renderer&&this.scene&&this.camera&&(this.update(),this.renderer.render(this.scene,this.camera))}animate(){requestAnimationFrame(this.animate.bind(this)),this.render()}setHostViewer(r){this.hostViewer=r,this.update()}update(){if(!this.hostViewer||!this.hostViewer.camera)return;let r=this.hostViewer.camera;if(r){let e=new A;r.getWorldDirection(e);let i=r.up;this.updateCameraDirection(e,i)}}updateCameraDirection(r,e){if(!this.camera||!r)return;r.normalize();let i=20,n=0;this.camera.position.set(-r.x*i+n,-r.y*i+n,-r.z*i+n),this.camera.lookAt(n,n,n),this.camera.up=e}dispose(){!this.scene||!this.camera||!this.navCube||(this.scene.clear(),this.hostViewer=void 0,this.camera=void 0,this.navCube=void 0,this.scene=void 0)}};var Q2t=new A(1,0,0),eNt=new A(0,1,0),tNt=new A(0,0,1),kO=class extends tm{constructor(e){super(e);let{min:i,max:n}=this.sectionBox;this.sectionRange={x:[i.x,n.x],y:[i.y,n.y],z:[i.z,n.z]}}activate(){super.activate(),this.initOrUpdateClipPlane(),this.initOrUpdateVertices(),this.initOrUpdateSectionPlane(),this.setGlobalClippingEnable(!0)}deactivate(){super.deactivate(),this.planesMesh&&this.scene.remove(...this.planesMesh),this.planesMesh=void 0}initOrUpdateVertices(){if(!this.sectionBox)return;let{min:e,max:i}=this.sectionBox;this.vertices=[new A(i.x,i.y,i.z),new A(e.x,i.y,i.z),new A(e.x,e.y,i.z),new A(i.x,e.y,i.z),new A(i.x,i.y,e.z),new A(e.x,i.y,e.z),new A(e.x,e.y,e.z),new A(i.x,e.y,e.z)]}initOrUpdateClipPlane(){let{min:e,max:i}=this.sectionBox;this.clipPlanes?(this.clipPlanes[0].constant=i.x,this.clipPlanes[1].constant=-e.x,this.clipPlanes[2].constant=i.y,this.clipPlanes[3].constant=-e.y,this.clipPlanes[4].constant=i.z,this.clipPlanes[5].constant=-e.z):this.clipPlanes=[new Ei(new A(-1,0,0),i.x),new Ei(new A(1,0,0),-e.x),new Ei(new A(0,-1,0),i.y),new Ei(new A(0,1,0),-e.y),new Ei(new A(0,0,-1),i.z),new Ei(new A(0,0,1),-e.z)],this.renderer.clippingPlanes=this.clipPlanes}initOrUpdateSectionPlane(){let e=this.vertices;if(e){if(this.planesMesh)this.planesMesh[0].update([e[4],e[0],e[3],e[7]]),this.planesMesh[1].update([e[1],e[5],e[6],e[2]]),this.planesMesh[2].update([e[4],e[5],e[1],e[0]]),this.planesMesh[3].update([e[6],e[7],e[3],e[2]]),this.planesMesh[4].update([e[0],e[1],e[2],e[3]]),this.planesMesh[5].update([e[5],e[4],e[7],e[6]]);else{let i=[new an("Right",[e[4],e[0],e[3],e[7]]),new an("Left",[e[1],e[5],e[6],e[2]]),new an("Top",[e[4],e[5],e[1],e[0]]),new an("Bottom",[e[6],e[7],e[3],e[2]]),new an("Front",[e[0],e[1],e[2],e[3]]),new an("Back",[e[5],e[4],e[7],e[6]])];this.planesMesh=i,this.scene.add(...i)}this.viewer.enableRender()}}activateSelectedObject(e){var i;(i=this.selectedObject)==null||i.setActive(e)}onDragStart(e){var i;this.selectedObject&&(this.controls&&this.dragStarted&&(this.controls.enableRotate=!1),ne.info("[ObjectsBoxSection] onDragStart:",e),this.refrencePlane.setFromNormalAndCoplanarPoint(this.camera.getWorldDirection(this.refrencePlane.normal),this.selectedObject.getPlaneCenter()),(i=this.raycaster)==null||i.ray.intersectPlane(this.refrencePlane,this.lastWorldPos))}onDragMove(e){var s;if(!this.lastWorldPos||!this.selectedObject)return;let i=new A;(s=this.raycaster)==null||s.ray.intersectPlane(this.refrencePlane,i);let n=this.selectedObject.actionType;switch(n){case"Top":case"Bottom":this.dragTranslateSectionPlane(eNt,this.lastWorldPos,i,n);break;case"Left":case"Right":this.dragTranslateSectionPlane(Q2t,this.lastWorldPos,i,n);break;case"Front":case"Back":this.dragTranslateSectionPlane(tNt,this.lastWorldPos,i,n);break;default:break}this.lastWorldPos=i}onDragEnd(e){this.controls&&!this.controls.enableRotate&&(this.controls.enableRotate=!0),this.activateSelectedObject(!1),this.dragStarted=!1,this.selectedObject=void 0,ne.info("[ObjectsBoxSection] onDragEnd:",e)}dragTranslateSectionPlane(e,i,n,s){let{min:a,max:o}=this.sectionBox,l=n.clone().sub(i).projectOnVector(e),c;switch(s){case"Top":c=o.y+l.y,this.isInRange(c,this.sectionRange.y)&&(o.y=c);break;case"Bottom":c=a.y+l.y,this.isInRange(c,this.sectionRange.y)&&(a.y=c);break;case"Left":c=a.x+l.x,this.isInRange(c,this.sectionRange.x)&&(a.x=c);break;case"Right":c=o.x+l.x,this.isInRange(c,this.sectionRange.x)&&(o.x=c);break;case"Front":c=o.z+l.z,this.isInRange(c,this.sectionRange.z)&&(o.z=c);break;case"Back":c=a.z+l.z,this.isInRange(c,this.sectionRange.z)&&(a.z=c);break;default:break}this.initOrUpdateVertices(),this.initOrUpdateSectionPlane(),this.initOrUpdateClipPlane(),this.viewer.enableRender()}isInRange(e,i){return e>i[0]&&e<i[1]}getIntersections(e){return this.raycaster?(this.updateRaycasterByMouse(e),(this.raycaster.intersectObjects(this.getIntersectObjects())||[])[0]):void 0}getIntersectObjects(){return this.planesMesh||[]}resetSection(){this.sectionBox=this.viewer.getBBox(),this.initOrUpdateVertices(),this.initOrUpdateSectionPlane(),this.initOrUpdateClipPlane(),this.viewer.enableRender()}setSectionVisible(e){var i;(i=this.planesMesh)==null||i.forEach(n=>n.visible=e),this.isShowSectionPlane=e,this.viewer.enableRender()}};var GO=class extends tm{constructor(e){super(e);this.mousedown=e=>{var n;if(e.button===0){if(!this.faceInfo){let s=this.pickFace(e);if(s&&s.face){let a=s.face.normal,o=new Qi;a.applyNormalMatrix(o.getNormalMatrix(s.object.matrixWorld)),this.faceInfo={position:s.point,normal:a.normalize()},this.setSection(),(n=this.tooltip)==null||n.hide()}return}this.camera&&this.selectedObject&&(this.mouseDown=!0)}};this.mousemove=e=>{var i,n,s;if(!this.faceInfo)this.pickFace(e)?(i=this.tooltip)==null||i.show():(n=this.tooltip)==null||n.hide();else{if(this.dragStarted)this.updateRaycasterByMouse(e),this.onDragMove(e);else{this.activateSelectedObject(!1);let a=this.getIntersections(e);a?(this.selectedObject=a.object,this.activateSelectedObject(!0),this.mouseDown&&((s=this.selectedObject)==null?void 0:s.parent)instanceof tu&&(this.dragStarted||(this.dragStarted=!0,this.onDragStart(e)))):this.selectedObject=void 0}this.viewer.enableRender()}};this.center=new A,this.sectionBox.getCenter(this.center),this.viewer.addEventListener("RenderAfter",()=>{var i;this.isActive&&((i=this.gizmo)==null||i.adjustSize(this.camera))})}activate(){super.activate(),this.tooltip=new ph("pick-section-plane",gh("Tooltip.section"),{parentNode:this.viewer.widgetContainer,followPointer:!0})}deactivate(){var e,i,n;super.deactivate(),(e=this.planeMesh)==null||e.removeFromParent(),(i=this.gizmo)==null||i.removeFromParent(),this.planeMesh=void 0,this.gizmo=void 0,this.faceInfo=void 0,(n=this.tooltip)==null||n.destroy(),this.tooltip=void 0}setSection(){this.initOrUpdateGizmo(),this.initOrUpdateSectionPlane(),this.initOrUpdateClipPlane(),this.setGlobalClippingEnable(!0),this.viewer.enableRender()}resetSection(){var e,i,n;(e=this.planeMesh)==null||e.removeFromParent(),(i=this.gizmo)==null||i.removeFromParent(),this.setGlobalClippingEnable(!1),this.planeMesh=void 0,this.gizmo=void 0,this.faceInfo=void 0,(n=this.tooltip)==null||n.show(),this.viewer.enableRender()}setSectionVisible(e){this.gizmo&&this.planeMesh&&(this.gizmo.visible=e,this.planeMesh.visible=e),this.isShowSectionPlane=e,this.viewer.enableRender()}initOrUpdateClipPlane(){if(!this.faceInfo)return;let{normal:e,position:i}=this.faceInfo;this.clipPlane=new Ei().setFromNormalAndCoplanarPoint(e.clone().negate(),i),this.clipPlane&&(this.clipPlanes=[this.clipPlane])}initOrUpdateSectionPlane(){var u;if(!this.faceInfo)return;let{normal:e,position:i}=this.faceInfo,n=new A;this.sectionBox.getSize(n);let s=n.length(),a=i,o=new Ot().setFromCenterAndSize(a,new A(s,s,s)),{min:l,max:c}=o;(u=this.planeMesh)==null||u.removeFromParent(),this.planeMesh=new an("Plane",[new A(a.x,c.y,l.z),new A(a.x,c.y,c.z),new A(a.x,l.y,c.z),new A(a.x,l.y,l.z)]),this.planeMesh.setDirection(e),this.planeMesh&&this.scene.add(this.planeMesh),this.viewer.enableRender()}initOrUpdateGizmo(){var n,s;if(!this.faceInfo)return;(n=this.gizmo)==null||n.removeFromParent();let{normal:e,position:i}=this.faceInfo;this.gizmo=new tu,this.gizmo.setDirection(e),this.gizmo.position.copy(i),(s=this.scene)==null||s.add(this.gizmo)}onDragStart(e){var n;if(!this.faceInfo||this.selectedObject instanceof an)return;this.controls&&this.dragStarted&&this.selectedObject&&!(this.selectedObject instanceof an)&&(this.controls.enableRotate=!1),ne.info("[PickPlaneSection] onDragStart:",e);let{position:i}=this.faceInfo;this.refrencePlane.setFromNormalAndCoplanarPoint(this.camera.getWorldDirection(this.refrencePlane.normal),i),(n=this.raycaster)==null||n.ray.intersectPlane(this.refrencePlane,this.lastWorldPos)}onDragMove(e){var f,m,g;if(!this.lastWorldPos||!this.selectedObject||!this.clipPlane||!this.planeMesh||!this.gizmo||!this.faceInfo||this.selectedObject&&this.selectedObject instanceof an)return;let i=new A;(f=this.raycaster)==null||f.ray.intersectPlane(this.refrencePlane,i);let n=this.selectedObject.userData.actionType,{position:s}=this.faceInfo,a=new A().subVectors(this.lastWorldPos,s).normalize(),o=new A().subVectors(i,s).normalize(),l=new A().subVectors(i,this.lastWorldPos).projectOnVector(Fa.clone().applyQuaternion(this.gizmo.quaternion)),c=a.angleTo(o),u=new A().crossVectors(a,o),h=new A;this.sectionBox.getSize(h);let p=Math.max(h.x,h.y,h.z),d;switch(n){case"TranslateX":case"TranslateY":case"TranslateZ":d=new A().addVectors(this.gizmo.position,l),this.sectionBox.clone().setFromCenterAndSize(this.center,new A(p,p,p)).containsPoint(d)&&((m=this.gizmo)==null||m.position.add(l),(g=this.planeMesh)==null||g.position.add(l));break;case"RotateX":{let y=Fa.clone().applyQuaternion(this.gizmo.quaternion);u.dot(y)<0&&(c=-c),this.gizmo.rotateX(c),this.planeMesh.rotatePlane(y,c)}break;case"RotateY":{let y=Qf.clone().applyQuaternion(this.gizmo.quaternion);u.dot(y)<0&&(c=-c),this.gizmo.rotateY(c),this.planeMesh.rotatePlane(y,c)}break;case"RotateZ":{let y=em.clone().applyQuaternion(this.gizmo.quaternion);u.dot(y)<0&&(c=-c),this.gizmo.rotateZ(c),this.planeMesh.rotatePlane(y,c)}break;default:break}this.clipPlane.setFromNormalAndCoplanarPoint(this.planeMesh.getPlaneNormal().negate(),this.gizmo.position),this.lastWorldPos=i}onDragEnd(e){this.selectedObject instanceof an||(this.controls&&!this.controls.enableRotate&&(this.controls.enableRotate=!0),this.activateSelectedObject(!1),this.dragStarted=!1,this.selectedObject=void 0,ne.info("[PickPlaneSection] onDragEnd:",e))}getIntersectObjects(){return!this.planeMesh||!this.gizmo?[]:[this.planeMesh,this.gizmo]}activateSelectedObject(e){this.selectedObject&&(this.selectedObject instanceof an?this.selectedObject.setActive(e):this.selectedObject.parent instanceof tu&&this.selectedObject.parent.setActive(e,this.selectedObject))}pickFace(e){if(!this.raycaster)return;let i=Mr.getScreenPointByEvent(e,this.canvas),n=Mr.screenPoint2NdcPoint(i,this.camera,this.canvas);this.raycaster.setFromCamera(n,this.camera);let s=[];return Object.values(this.viewer.loadedModels).forEach(l=>{let c=this.scene&&this.scene.getObjectById(l.id);c&&c.visible&&s.push(c)}),(this.raycaster.intersectObjects(this.viewer.getRaycastableObjectsByMouse(e))||[]).find(l=>{let c=l.object;return c.visible&&(c.userData.selectable!==!1||c instanceof Je)})}};var VO=class{constructor(r){this.sections={};this.viewer=r,this.sections["ObjectsBoxSection"]=new kO(r),this.sections["AxisPlaneSection"]=new DO(r),this.sections["PickPlaneSection"]=new GO(r)}get raycaster(){return this.viewer.getRaycaster()}activateSection(r){this.activeSectionType&&this.deactivateSection(),this.activeSectionType=r,this.sections[r].activate()}deactivateSection(){let r=this.activeSectionType;r&&this.sections[r].deactivate(),this.activeSectionType=void 0}resetSection(){}isSectionActive(){let r=this.activeSectionType;return r?this.sections[r].isActive:!!this.getActiveSectionType()}getActiveSectionType(){return this.activeSectionType}getActiveSection(){if(this.activeSectionType)return this.sections[this.activeSectionType]}destroy(){this.deactivateSection(),this.activeSectionType=void 0}};function sG(t){let r;try{r=new URL(t,"http://fakehost.com/")}catch(s){return null}let e=r.pathname.split("/").pop(),i=e.lastIndexOf(".");return i===-1||i===e.length-1?null:e.substring(i+1)}function rNt(t){Promise.resolve().then(t)}var zO=class{constructor(){this.maxSize=800,this.minSize=600,this.unloadPercent=.05,this.itemSet=new Map,this.itemList=[],this.usedSet=new Set,this.callbacks=new Map,this.unloadPriorityCallback=null;let r=this.itemSet;this.defaultPriorityCallback=e=>r.get(e)}isFull(){return this.itemSet.size>=this.maxSize}add(r,e){let i=this.itemSet;if(i.has(r)||this.isFull())return!1;let n=this.usedSet,s=this.itemList,a=this.callbacks;return s.push(r),n.add(r),i.set(r,Date.now()),a.set(r,e),!0}remove(r){let e=this.usedSet,i=this.itemSet,n=this.itemList,s=this.callbacks;if(i.has(r)){s.get(r)(r);let a=n.indexOf(r);return n.splice(a,1),e.delete(r),i.delete(r),s.delete(r),!0}return!1}markUsed(r){let e=this.itemSet,i=this.usedSet;e.has(r)&&!i.has(r)&&(e.set(r,Date.now()),i.add(r))}markAllUnused(){this.usedSet.clear()}unloadUnusedContent(){let r=this.unloadPercent,e=this.minSize,i=this.itemList,n=this.itemSet,s=this.usedSet,a=this.callbacks,o=i.length-s.size,l=i.length-e,c=this.unloadPriorityCallback||this.defaultPriorityCallback;if(l>0&&o>0){i.sort((f,m)=>{let g=s.has(f),y=s.has(m);return g&&y?0:!g&&!y?c(m)-c(f):g?1:-1});let u=Math.min(l,o),h=Math.max(e*r,u*r),p=Math.min(h,o);p=Math.ceil(p);let d=i.splice(0,p);for(let f=0,m=d.length;f<m;f++){let g=d[f];a.get(g)(g),n.delete(g),a.delete(g)}}}scheduleUnload(r=!0){this.scheduled||(this.scheduled=!0,rNt(()=>{this.scheduled=!1,this.unloadUnusedContent(),r&&this.markAllUnused()}))}};var AS=class{constructor(){this.maxJobs=6,this.items=[],this.callbacks=new Map,this.currJobs=0,this.scheduled=!1,this.autoUpdate=!0,this.priorityCallback=()=>{throw new Error("PriorityQueue: PriorityCallback function not defined.")},this.schedulingCallback=r=>{requestAnimationFrame(r)},this._runjobs=()=>{this.tryRunJobs(),this.scheduled=!1}}sort(){let r=this.priorityCallback;this.items.sort(r)}add(r,e){return new Promise((i,n)=>{let s=(...l)=>e(...l).then(i).catch(n),a=this.items,o=this.callbacks;a.push(r),o.set(r,s),this.autoUpdate&&this.scheduleJobRun()})}remove(r){let e=this.items,i=this.callbacks,n=e.indexOf(r);n!==-1&&(e.splice(n,1),i.delete(r))}tryRunJobs(){this.sort();let r=this.items,e=this.callbacks,i=this.maxJobs,n=this.currJobs;for(;i>n&&r.length>0;){n++;let s=r.pop(),a=e.get(s);e.delete(s),a(s).then(()=>{this.currJobs--,this.autoUpdate&&this.scheduleJobRun()}).catch(()=>{this.currJobs--,this.autoUpdate&&this.scheduleJobRun()})}this.currJobs=n}scheduleJobRun(){this.scheduled||(this.schedulingCallback(this._runjobs),this.scheduled=!0)}};var iNt=.0033528106647474805,bDe=-(iNt*6378137-6378137);function oG(t){return t===3||t===4}function O0(t,r){return t.__lastFrameVisited===r&&t.__used}function xDe(t,r){t.__lastFrameVisited!==r&&(t.__lastFrameVisited=r,t.__used=!1,t.__inFrustum=!1,t.__isLeaf=!1,t.__visible=!1,t.__active=!1,t.__error=1/0,t.__distanceFromCamera=1/0,t.__childrenWereVisible=!1,t.__allChildrenLoaded=!1)}function IDe(t,r,e){if(xDe(t,r),t.__used=!0,e.markUsed(t),t.__contentEmpty){let i=t.children;for(let n=0,s=i.length;n<s;n++)IDe(i[n],r,e)}}function SDe(t,r,e){if(t.__contentEmpty&&(!t.__externalTileSet||oG(t.__loadingState))){let n=t.children;for(let s=0,a=n.length;s<a;s++){let o=n[s];o.__depthFromRenderedParent=r,SDe(o,r,e)}}else e.requestTileContents(t)}function WO(t,r=null,e=null,i=null,n=0){if(r&&r(t,i,n)){e&&e(t,i,n);return}let s=t.children;for(let a=0,o=s.length;a<o;a++)WO(s[a],r,e,t,n+1);e&&e(t,i,n)}function lG(t,r){let e=r.stats,i=r.frameCount,n=r.errorTarget,s=r.maxDepth,a=r.loadSiblings,o=r.lruCache,l=r.stopAtEmptyTiles;if(xDe(t,i),r.tileInView(t)===!1)return!1;if(t.__used=!0,o.markUsed(t),t.__inFrustum=!0,e.inFrustum++,(l||!t.__contentEmpty)&&!t.__externalTileSet&&(r.calculateError(t),t.__error<=n||r.maxDepth>0&&t.__depth+1>=s))return!0;let u=!1,h=t.children;for(let p=0,d=h.length;p<d;p++){let f=h[p],m=lG(f,r);u=u||m}if(u&&a)for(let p=0,d=h.length;p<d;p++){let f=h[p];IDe(f,i,o)}return!0}function cG(t,r){let e=r.stats,i=r.frameCount;if(!O0(t,i))return;e.used++;let n=t.children,s=!1;for(let a=0,o=n.length;a<o;a++){let l=n[a];s=s||O0(l,i)}if(!s)t.__isLeaf=!0;else{let a=!1,o=!0;for(let l=0,c=n.length;l<c;l++){let u=n[l];if(cG(u,r),a=a||u.__wasSetVisible||u.__childrenWereVisible,O0(u,i)){let h=u.__allChildrenLoaded||!u.__contentEmpty&&oG(u.__loadingState)||u.__externalTileSet&&u.__loadingState===4;o=o&&h}}t.__childrenWereVisible=a,t.__allChildrenLoaded=o}}function uG(t,r){let e=r.stats,i=r.frameCount;if(!O0(t,i))return;let n=t.parent,s=n?n.__depthFromRenderedParent:-1;t.__depthFromRenderedParent=s;let a=r.lruCache;if(t.__isLeaf){t.__depthFromRenderedParent++,t.__loadingState===3?(t.__inFrustum&&(t.__visible=!0,e.visible++),t.__active=!0,e.active++):!a.isFull()&&(!t.__contentEmpty||t.__externalTileSet)&&r.requestTileContents(t);return}let o=(r.errorTarget+1)*r.errorThreshold,l=t.__error<=o,c=l||t.refine==="ADD",u=!t.__contentEmpty,h=u||t.__externalTileSet,p=oG(t.__loadingState)&&h,d=t.__childrenWereVisible,f=t.children,m=t.__allChildrenLoaded;if(c&&u&&t.__depthFromRenderedParent++,c&&!p&&!a.isFull()&&h&&r.requestTileContents(t),(l&&!m&&!d&&p||t.refine==="ADD"&&p)&&(t.__inFrustum&&(t.__visible=!0,e.visible++),t.__active=!0,e.active++),t.refine!=="ADD"&&l&&!m&&p)for(let g=0,y=f.length;g<y;g++){let E=f[g];O0(E,i)&&!a.isFull()&&(E.__depthFromRenderedParent=t.__depthFromRenderedParent+1,SDe(E,E.__depthFromRenderedParent,r))}else for(let g=0,y=f.length;g<y;g++){let E=f[g];O0(E,i)&&uG(E,r)}}function hG(t,r){let e=r.frameCount,i=O0(t,e);if(i||t.__usedLastFrame){let n=!1,s=!1;i&&(n=t.__active,r.displayActiveTiles?s=t.__active||t.__visible:s=t.__visible),!t.__contentEmpty&&t.__loadingState===3&&(t.__wasSetActive!==n&&r.setTileActive(t,n),t.__wasSetVisible!==s&&r.setTileVisible(t,s)),t.__wasSetActive=n,t.__wasSetVisible=s,t.__usedLastFrame=i;let a=t.children;for(let o=0,l=a.length;o<l;o++){let c=a[o];hG(c,r)}}}var wDe=(t,r)=>t.__depth!==r.__depth?t.__depth>r.__depth?-1:1:t.__inFrustum!==r.__inFrustum?t.__inFrustum?1:-1:t.__used!==r.__used?t.__used?1:-1:t.__error!==r.__error?t.__error>r.__error?1:-1:t.__distanceFromCamera!==r.__distanceFromCamera?t.__distanceFromCamera>r.__distanceFromCamera?-1:1:0,nNt=t=>1/(t.__depthFromRenderedParent+1),qO=class{get rootTileSet(){let r=this.tileSets[this.rootURL];return!r||r instanceof Promise?null:r}get root(){let r=this.rootTileSet;return r?r.root:null}constructor(r){this.tileSets={},this.rootURL=r,this.fetchOptions={},this.preprocessURL=null;let e=new zO;e.unloadPriorityCallback=nNt;let i=new AS;i.maxJobs=4,i.priorityCallback=wDe;let n=new AS;n.maxJobs=1,n.priorityCallback=wDe,this.lruCache=e,this.downloadQueue=i,this.parseQueue=n,this.stats={parsing:0,downloading:0,failed:0,inFrustum:0,used:0,active:0,visible:0},this.frameCount=0,this.errorTarget=6,this.errorThreshold=1/0,this.loadSiblings=!0,this.displayActiveTiles=!1,this.maxDepth=1/0,this.stopAtEmptyTiles=!0}traverse(r,e){let n=this.tileSets[this.rootURL];!n||!n.root||WO(n.root,r,e)}update(){let r=this.stats,e=this.lruCache,i=this.tileSets,n=i[this.rootURL];if(this.rootURL in i){if(!n||!n.root)return}else{this.loadRootTileSet(this.rootURL);return}let s=n.root;r.inFrustum=0,r.used=0,r.active=0,r.visible=0,this.frameCount++,lG(s,this),cG(s,this),uG(s,this),hG(s,this),e.scheduleUnload()}parseTile(r,e,i){return null}disposeTile(r){}preprocessNode(r,e,i){if(r.content&&(!("uri"in r.content)&&"url"in r.content&&(r.content.uri=r.content.url,delete r.content.url),r.content.uri&&(r.content.uri=new URL(r.content.uri,i+"/").toString()),r.content.boundingVolume&&!("box"in r.content.boundingVolume||"sphere"in r.content.boundingVolume||"region"in r.content.boundingVolume)&&delete r.content.boundingVolume),r.parent=e,r.children=r.children||[],r.content&&r.content.uri){let s=sG(r.content.uri),a=Boolean(s&&s.toLowerCase()==="json");r.__externalTileSet=a,r.__contentEmpty=a}else r.__externalTileSet=!1,r.__contentEmpty=!0;r.__distanceFromCamera=1/0,r.__error=1/0,r.__inFrustum=!1,r.__isLeaf=!1,r.__usedLastFrame=!1,r.__used=!1,r.__wasSetVisible=!1,r.__visible=!1,r.__childrenWereVisible=!1,r.__allChildrenLoaded=!1,r.__wasSetActive=!1,r.__active=!1,r.__loadingState=0,r.__loadIndex=0,r.__loadAbort=null,r.__depthFromRenderedParent=-1,e===null?(r.__depth=0,r.refine=r.refine||"REPLACE"):(r.__depth=e.__depth+1,r.refine=r.refine||e.refine)}setTileActive(r,e){}setTileVisible(r,e){}calculateError(r){return 0}tileInView(r){return!0}resetFailedTiles(){let r=this.stats;r.failed!==0&&(this.traverse(e=>{e.__loadingState===4&&(e.__loadingState=0)}),r.failed=0)}fetchTileSet(r,e,i=null){return fetch(r,e).then(n=>{if(n.ok)return n.json();throw new Error(`TilesRenderer: Failed to load tileset "${r}" with status ${n.status} : ${n.statusText}`)}).then(n=>{let s=n.asset.version;console.assert(s==="1.0"||s==="0.0",'asset.version is expected to be a string of "1.0" or "0.0"');let a=r.replace(/\/[^\/]*\/?$/,"");return a=new URL(a,window.location.href).toString(),WO(n.root,(o,l)=>this.preprocessNode(o,l,a),null,i,i?i.__depth:0),n})}loadRootTileSet(r){let e=this.tileSets;if(r in e)return e[r]instanceof Error?Promise.reject(e[r]):Promise.resolve(e[r]);{let i=this.fetchTileSet(this.preprocessURL?this.preprocessURL(r):r,this.fetchOptions).then(n=>{e[r]=n});return i.catch(n=>{console.error(n),e[r]=n}),e[r]=i,i}}requestTileContents(r){if(r.__loadingState!==0)return;let e=this.stats,i=this.lruCache,n=this.downloadQueue,s=this.parseQueue,a=r.__externalTileSet;i.add(r,h=>{h.__loadingState===1?(h.__loadAbort.abort(),h.__loadAbort=null):a?h.children.length=0:this.disposeTile(h),h.__loadingState===1?e.downloading--:h.__loadingState===2&&e.parsing--,h.__loadingState=0,h.__loadIndex++,s.remove(h),n.remove(h)}),r.__loadIndex++;let o=r.__loadIndex,l=new AbortController,c=l.signal;e.downloading++,r.__loadAbort=l,r.__loadingState=1;let u=h=>{r.__loadIndex===o&&(h.name!=="AbortError"?(s.remove(r),n.remove(r),r.__loadingState===2?e.parsing--:r.__loadingState===1&&e.downloading--,e.failed++,console.error(`TilesRenderer : Failed to load tile at url "${r.content.uri}".`),console.error(h),r.__loadingState=4):i.remove(r))};a?n.add(r,h=>{if(h.__loadIndex!==o)return Promise.resolve();let p=this.preprocessURL?this.preprocessURL(h.content.uri):h.content.uri;return this.fetchTileSet(p,Object.assign({signal:c},this.fetchOptions),h)}).then(h=>{r.__loadIndex===o&&(e.downloading--,r.__loadAbort=null,r.__loadingState=3,r.children.push(h.root))}).catch(u):n.add(r,h=>{if(h.__loadIndex!==o)return Promise.resolve();let p=this.preprocessURL?this.preprocessURL(h.content.uri):h.content.uri;return fetch(p,Object.assign({signal:c},this.fetchOptions))}).then(h=>{if(r.__loadIndex===o){if(h.ok)return h.arrayBuffer();throw new Error(`Failed to load model with error code ${h.status}`)}}).then(h=>{if(r.__loadIndex===o)return e.downloading--,e.parsing++,r.__loadAbort=null,r.__loadingState=2,s.add(r,p=>{if(p.__loadIndex!==o)return Promise.resolve();let d=p.content.uri,f=sG(d);return this.parseTile(h,p,f)})}).then(()=>{r.__loadIndex===o&&(e.parsing--,r.__loadingState=3,r.__wasSetVisible&&this.setTileVisible(r,!0),r.__wasSetActive&&this.setTileActive(r,!0))}).catch(u)}dispose(){let r=this.lruCache;this.traverse(e=>{r.remove(e)}),this.stats={parsing:0,downloading:0,failed:0,inFrustum:0,used:0,active:0,visible:0},this.frameCount=0}};function YO(t){return new TextDecoder().decode(t)}var ad=class{constructor(r,e,i,n){this.buffer=r,this.binOffset=e+i,this.binLength=n;let s=null;if(i!==0){let a=new Uint8Array(r,e,i);s=JSON.parse(YO(a))}else s={};this.header=s}getKeys(){return Object.keys(this.header)}getData(r,e,i=null,n=null){let s=this.header;if(!(r in s))return null;let a=s[r];if(a instanceof Object){if(Array.isArray(a))return a;{let{buffer:o,binOffset:l,binLength:c}=this,u=a.byteOffset||0,h=a.type||n,p=a.componentType||i;if("type"in a&&n&&a.type!==n)throw new Error("FeatureTable: Specified type does not match expected type.");let d;switch(h){case"SCALAR":d=1;break;case"VEC2":d=2;break;case"VEC3":d=3;break;case"VEC4":d=4;break;default:throw new Error(`FeatureTable : Feature type not provided for "${r}".`)}let f,m=l+u,g=e*d;switch(p){case"BYTE":f=new Int8Array(o,m,g);break;case"UNSIGNED_BYTE":f=new Uint8Array(o,m,g);break;case"SHORT":f=new Int16Array(o,m,g);break;case"UNSIGNED_SHORT":f=new Uint16Array(o,m,g);break;case"INT":f=new Int32Array(o,m,g);break;case"UNSIGNED_INT":f=new Uint32Array(o,m,g);break;case"FLOAT":f=new Float32Array(o,m,g);break;case"DOUBLE":f=new Float64Array(o,m,g);break;default:throw new Error(`FeatureTable : Feature component type not provided for "${r}".`)}if(m+g*f.BYTES_PER_ELEMENT>l+c)throw new Error("FeatureTable: Feature data read outside binary body length.");return f}}else return a}},rm=class extends ad{constructor(r,e,i,n,s){super(r,i,n,s),this.batchSize=e}getData(r,e=null,i=null){return super.getData(r,this.batchSize,e,i)}};var ec=class{constructor(){this.fetchOptions={},this.workingPath=""}load(r){return fetch(r,this.fetchOptions).then(e=>{if(!e.ok)throw new Error(`Failed to load file "${r}" with status ${e.status} : ${e.statusText}`);return e.arrayBuffer()}).then(e=>(this.workingPath===""&&(this.workingPath=this.workingPathForURL(r)),this.parse(e)))}resolveExternalURL(r){return/^[^\\/]/.test(r)?this.workingPath+"/"+r:r}workingPathForURL(r){let e=r.split(/[\\/]/g);return e.pop(),e.join("/")+"/"}parse(r){throw new Error("LoaderBase: Parse not implemented.")}};function iu(t){let r;if(t instanceof DataView?r=t:r=new DataView(t),String.fromCharCode(r.getUint8(0))==="{")return null;let e="";for(let i=0;i<4;i++)e+=String.fromCharCode(r.getUint8(i));return e}var XO=class extends ec{parse(r){let e=new DataView(r),i=iu(e);console.assert(i==="b3dm");let n=e.getUint32(4,!0);console.assert(n===1);let s=e.getUint32(8,!0);console.assert(s===r.byteLength);let a=e.getUint32(12,!0),o=e.getUint32(16,!0),l=e.getUint32(20,!0),c=e.getUint32(24,!0),u=28,h=r.slice(u,u+a+o),p=new ad(h,0,a,o),d=u+a+o,f=r.slice(d,d+l+c),m=new rm(f,p.getData("BATCH_LENGTH"),0,l,c),g=d+l+c,y=new Uint8Array(r,g,s-g);return{version:n,featureTable:p,batchTable:m,glbBytes:y}}};var pE=class extends XO{constructor(r=oo){super(),this.manager=r,this.adjustmentTransform=new Ue}parse(r){let e=super.parse(r),i=e.glbBytes.slice().buffer;return new Promise((n,s)=>{let a=this.manager,o=this.fetchOptions,l=a.getHandler("path.gltf")||new Yu(a);o.credentials==="include"&&o.mode==="cors"&&l.setCrossOrigin("use-credentials"),"credentials"in o&&l.setWithCredentials(o.credentials==="include"),o.headers&&l.setRequestHeader(o.headers);let c=this.workingPath;!/[\\/]$/.test(c)&&c.length&&(c+="/");let u=this.adjustmentTransform;l.parse(i,c,h=>{let{batchTable:p,featureTable:d}=e,{scene:f}=h,m=d.getData("RTC_CENTER");m&&(f.position.x+=m[0],f.position.y+=m[1],f.position.z+=m[2]),h.scene.updateMatrix(),h.scene.matrix.multiply(u),h.scene.matrix.decompose(h.scene.position,h.scene.quaternion,h.scene.scale),h.batchTable=p,h.featureTable=d,f.batchTable=p,f.featureTable=d,n(h)},s)})}};var $O=class extends ec{parse(r){let e=new DataView(r),i=iu(e);console.assert(i==="pnts");let n=e.getUint32(4,!0);console.assert(n===1);let s=e.getUint32(8,!0);console.assert(s===r.byteLength);let a=e.getUint32(12,!0),o=e.getUint32(16,!0),l=e.getUint32(20,!0),c=e.getUint32(24,!0),u=28,h=r.slice(u,u+a+o),p=new ad(h,0,a,o),d=u+a+o,f=r.slice(d,d+l+c),m=new rm(f,p.getData("BATCH_LENGTH")||p.getData("POINTS_LENGTH"),0,l,c);return Promise.resolve({version:n,featureTable:p,batchTable:m})}};var dE=class extends $O{constructor(r=oo){super(),this.manager=r}parse(r){return super.parse(r).then(e=>{let{featureTable:i}=e,n=i.getData("POINTS_LENGTH"),s=i.getData("POSITION",n,"FLOAT","VEC3"),a=i.getData("RGB",n,"UNSIGNED_BYTE","VEC3");["QUANTIZED_VOLUME_OFFSET","QUANTIZED_VOLUME_SCALE","CONSTANT_RGBA","BATCH_LENGTH","POSITION_QUANTIZED","RGBA","RGB565","NORMAL","NORMAL_OCT16P"].forEach(h=>{h in i.header&&console.warn(`PNTSLoader: Unsupported FeatureTable feature "${h}" detected.`)});let o=new it;o.setAttribute("position",new jt(s,3,!1));let l=new Vn;l.size=2,l.sizeAttenuation=!1,a!==null&&(o.setAttribute("color",new jt(a,3,!0)),l.vertexColors=!0);let c=new rn(o,l);e.scene=c,e.scene.featureTable=i;let u=i.getData("RTC_CENTER");return u&&(e.scene.position.x+=u[0],e.scene.position.y+=u[1],e.scene.position.z+=u[2]),e})}};var ZO=class extends ec{parse(r){let e=new DataView(r),i=iu(e);console.assert(i==="i3dm");let n=e.getUint32(4,!0);console.assert(n===1);let s=e.getUint32(8,!0);console.assert(s===r.byteLength);let a=e.getUint32(12,!0),o=e.getUint32(16,!0),l=e.getUint32(20,!0),c=e.getUint32(24,!0),u=e.getUint32(28,!0),h=32,p=r.slice(h,h+a+o),d=new ad(p,0,a,o),f=h+a+o,m=r.slice(f,f+l+c),g=new rm(m,d.getData("INSTANCES_LENGTH"),0,l,c),y=f+l+c,E=new Uint8Array(r,y,s-y),b=null,x=null;if(u)b=E,x=Promise.resolve();else{let S=this.resolveExternalURL(YO(E));x=fetch(S,this.fetchOptions).then(D=>{if(!D.ok)throw new Error(`I3DMLoaderBase : Failed to load file "${S}" with status ${D.status} : ${D.statusText}`);return D.arrayBuffer()}).then(D=>{b=new Uint8Array(D)})}return x.then(()=>({version:n,featureTable:d,batchTable:g,glbBytes:b}))}};var RDe=new A,fG=new A,mG=new A,MDe=new A,gG=new Or,KO=new A,JO=new Ue,fE=class extends ZO{constructor(r=oo){super(),this.manager=r,this.adjustmentTransform=new Ue}resolveExternalURL(r){return this.manager.resolveURL(super.resolveExternalURL(r))}parse(r){return super.parse(r).then(e=>{let{featureTable:i,batchTable:n}=e,s=e.glbBytes.slice().buffer;return new Promise((a,o)=>{let l=this.fetchOptions,c=this.manager,u=c.getHandler("path.gltf")||new Yu(c);l.credentials==="include"&&l.mode==="cors"&&u.setCrossOrigin("use-credentials"),"credentials"in l&&u.setWithCredentials(l.credentials==="include"),l.headers&&u.setRequestHeader(l.headers);let h=this.workingPath;/[\\/]$/.test(h)||(h+="/");let p=this.adjustmentTransform;u.parse(s,h,d=>{let f=i.getData("INSTANCES_LENGTH"),m=i.getData("POSITION",f,"FLOAT","VEC3"),g=i.getData("NORMAL_UP",f,"FLOAT","VEC3"),y=i.getData("NORMAL_RIGHT",f,"FLOAT","VEC3"),E=i.getData("SCALE_NON_UNIFORM",f,"FLOAT","VEC3"),b=i.getData("SCALE",f,"FLOAT","SCALAR");["RTC_CENTER","QUANTIZED_VOLUME_OFFSET","QUANTIZED_VOLUME_SCALE","EAST_NORTH_UP","POSITION_QUANTIZED","NORMAL_UP_OCT32P","NORMAL_RIGHT_OCT32P"].forEach(P=>{P in i.header&&console.warn(`I3DMLoader: Unsupported FeatureTable feature "${P}" detected.`)});let x=new Map,S=[];d.scene.traverse(P=>{if(P.isMesh){let{geometry:_,material:w}=P,F=new tn(_,w,f);F.position.copy(P.position),F.rotation.copy(P.rotation),F.scale.copy(P.scale),S.push(F),x.set(P,F)}});let D=new A;for(let P=0;P<f;P++)D.x+=m[P*3+0]/f,D.y+=m[P*3+1]/f,D.z+=m[P*3+2]/f;x.forEach((P,_)=>{let w=_.parent;w&&(w.remove(_),w.add(P),P.updateMatrixWorld(),P.position.copy(D).applyMatrix4(P.matrixWorld))});for(let P=0;P<f;P++){MDe.set(m[P*3+0]-D.x,m[P*3+1]-D.y,m[P*3+2]-D.z),g?(fG.set(g[P*3+0],g[P*3+1],g[P*3+2]),mG.set(y[P*3+0],y[P*3+1],y[P*3+2]),RDe.crossVectors(mG,fG).normalize(),JO.makeBasis(mG,fG,RDe),gG.setFromRotationMatrix(JO)):gG.set(0,0,0,1),b?KO.setScalar(b[P]):E?KO.set(E[P*3+0],E[P*3+1],E[P*3+2]):KO.set(1,1,1),JO.compose(MDe,gG,KO).multiply(p);for(let _=0,w=S.length;_<w;_++)S[_].setMatrixAt(P,JO)}d.batchTable=n,d.featureTable=i,d.scene.batchTable=n,d.scene.featureTable=i,a(d)},o)})})}};var QO=class extends ec{parse(r){let e=new DataView(r),i=iu(e);console.assert(i==="cmpt",'CMPTLoader: The magic bytes equal "cmpt".');let n=e.getUint32(4,!0);console.assert(n===1,'CMPTLoader: The version listed in the header is "1".');let s=e.getUint32(8,!0);console.assert(s===r.byteLength,"CMPTLoader: The contents buffer length listed in the header matches the file.");let a=e.getUint32(12,!0),o=[],l=16;for(let c=0;c<a;c++){let u=new DataView(r,l,12),h=iu(u),p=u.getUint32(4,!0),d=u.getUint32(8,!0),f=new Uint8Array(r,l,d);o.push({type:h,buffer:f,version:p}),l+=d}return{version:n,tiles:o}}};var e3=class extends QO{constructor(r=oo){super(),this.manager=r,this.adjustmentTransform=new Ue}parse(r){let e=super.parse(r),i=this.manager,n=this.adjustmentTransform,s=[];for(let a in e.tiles){let{type:o,buffer:l}=e.tiles[a];switch(o){case"b3dm":{let c=l.slice(),u=new pE(i);u.workingPath=this.workingPath,u.fetchOptions=this.fetchOptions,u.adjustmentTransform.copy(n);let h=u.parse(c.buffer);s.push(h);break}case"pnts":{let c=l.slice(),u=new dE(i);u.workingPath=this.workingPath,u.fetchOptions=this.fetchOptions;let h=u.parse(c.buffer);s.push(h);break}case"i3dm":{let c=l.slice(),u=new fE(i);u.workingPath=this.workingPath,u.fetchOptions=this.fetchOptions,u.adjustmentTransform.copy(n);let h=u.parse(c.buffer);s.push(h);break}}}return Promise.all(s).then(a=>{let o=new hr;return a.forEach(l=>{o.add(l.scene)}),{tiles:a,scene:o}})}};var t3=class{constructor(){this.name="CESIUM_RTC"}afterRoot(r){if(r.parser.json.extensions&&r.parser.json.extensions.CESIUM_RTC){let{center:e}=r.parser.json.extensions.CESIUM_RTC;e&&(r.scene.position.x+=e[0],r.scene.position.y+=e[1],r.scene.position.z+=e[2])}}};var r3=class extends ec{constructor(r=oo){super(),this.manager=r}parse(r){return new Promise((e,i)=>{let n=this.manager,s=this.fetchOptions,a=n.getHandler("path.gltf")||n.getHandler("path.glb");a||(a=new Yu(n),a.register(()=>new t3),s.credentials==="include"&&s.mode==="cors"&&a.setCrossOrigin("use-credentials"),"credentials"in s&&a.setWithCredentials(s.credentials==="include"),s.headers&&a.setRequestHeader(s.headers));let o=a.resourcePath||a.path||this.workingPath;!/[\\/]$/.test(o)&&o.length&&(o+="/"),a.parse(r,o,l=>{e(l)},i)})}};var i3=new Ue,n3=class extends hr{constructor(r){super(),this.name="TilesRenderer.TilesGroup",this.tilesRenderer=r}raycast(r,e){this.tilesRenderer.optimizeRaycast&&this.tilesRenderer.raycast(r,e)}updateMatrixWorld(r){if(this.matrixAutoUpdate&&this.updateMatrix(),this.matrixWorldNeedsUpdate||r){this.parent===null?i3.copy(this.matrix):i3.multiplyMatrices(this.parent.matrixWorld,this.matrix),this.matrixWorldNeedsUpdate=!1;let e=i3.elements,i=this.matrixWorld.elements,n=!1;for(let s=0;s<16;s++){let a=e[s],o=i[s];if(Math.abs(a-o)>Number.EPSILON){n=!0;break}}if(n){this.matrixWorld.copy(i3);let s=this.children;for(let a=0,o=s.length;a<o;a++)s[a].updateMatrixWorld()}}}};function DDe(t){let{x:r,y:e,z:i}=t;t.x=i,t.y=r,t.z=e}function sNt(t){return-t+Math.PI/2}var s3=new Pc,OS=new A,P0=new A,a3=class{constructor(r=1,e=1,i=1){this.radius=new A(r,e,i)}getCartographicToPosition(r,e,i,n){let s=this.radius;s3.set(1,sNt(r),e),OS.setFromSpherical(s3).normalize(),DDe(OS),P0.copy(OS),P0.x*=Gh(s.x,2),P0.y*=Gh(s.y,2),P0.z*=Gh(s.z,2);let a=Math.sqrt(OS.dot(P0));return P0.divideScalar(a),n.copy(P0).addScaledVector(OS,i)}getCartographicToNormal(r,e,i){return s3.set(1,-r+Math.PI/2,e),i.setFromSpherical(s3).normalize(),DDe(i),i}getPositionToNormal(r,e){let i=this.radius;return e.copy(r),e.x/=Gh(i.x,2),e.y/=Gh(i.y,2),e.z/=Gh(i.z,2),e.normalize(),e}};var im=Math.PI,o3=im/2,PS=new A,mE=new A,gE=new A,CDe=new Ue,NS=0,vG=[];function aNt(t=!1){return t?(vG[NS]||(vG[NS]=new A),NS++,vG[NS-1]):new A}function ADe(){NS=0}var l3=class extends a3{constructor(r,e,i,n=-o3,s=o3,a=0,o=2*im,l=0,c=0){super(r,e,i),this.latStart=n,this.latEnd=s,this.lonStart=a,this.lonEnd=o,this.heightStart=l,this.heightEnd=c}_getPoints(r=!1){let{latStart:e,latEnd:i,lonStart:n,lonEnd:s,heightStart:a,heightEnd:o}=this,l=wr.mapLinear(.5,0,1,e,i),c=wr.mapLinear(.5,0,1,n,s),u=Math.floor(n/o3)*o3,h=[[-im/2,0],[im/2,0],[0,u],[0,u+im/2],[0,u+im],[0,u+3*im/2],[e,s],[i,s],[e,n],[i,n],[0,n],[0,s],[l,c],[e,c],[i,c],[l,n],[l,s]],p=[],d=h.length;for(let f=0;f<=1;f++){let m=wr.mapLinear(f,0,1,a,o);for(let g=0,y=d;g<y;g++){let[E,b]=h[g];if(E>=e&&E<=i&&b>=n&&b<=s){let x=aNt(r);p.push(x),this.getCartographicToPosition(E,b,m,x)}}}return p}getBoundingBox(r,e){ADe();let{latStart:i,latEnd:n,lonStart:s,lonEnd:a}=this;if(n-i<im/2){let c=wr.mapLinear(.5,0,1,i,n),u=wr.mapLinear(.5,0,1,s,a);this.getCartographicToNormal(c,u,gE),mE.set(0,0,1),PS.crossVectors(mE,gE),mE.crossVectors(PS,gE),e.makeBasis(PS,mE,gE)}else PS.set(1,0,0),mE.set(0,1,0),gE.set(0,0,1),e.makeBasis(PS,mE,gE);CDe.copy(e).invert();let l=this._getPoints(!0);for(let c=0,u=l.length;c<u;c++)l[c].applyMatrix4(CDe);r.makeEmpty(),r.setFromPoints(l)}getBoundingSphere(r,e){ADe();let i=this._getPoints(!0);r.makeEmpty(),r.setFromPoints(i,e)}};var TE=new zi,od=new Ue,ODe=new A,vE=new A,yE=new Vo,tc=[];function yG(t,r){return t.distance-r.distance}function TG(t,r,e){t.traverse(i=>{Object.getPrototypeOf(i).raycast.call(i,r,e)})}function EG(t,r,e,i){if(e.has(t))if(TG(t.cached.scene,i,tc),tc.length>0){tc.length>1&&tc.sort(yG);let l=tc[0];return tc.length=0,l}else return null;let n=[],s=t.children;for(let l=0,c=s.length;l<c;l++){let u=s[l],h=u.cached,p=r.matrixWorld;od.copy(p);let d=h.sphere;if(d&&(TE.copy(d),TE.applyMatrix4(od),!i.ray.intersectsSphere(TE)))continue;let f=h.box,m=h.boxTransform;if(f)if(od.multiply(m).invert(),yE.copy(i.ray),yE.applyMatrix4(od),yE.intersectBox(f,ODe)){vE.setFromMatrixScale(od);let g=vE.x;Math.abs(Math.max(vE.x-vE.y,vE.x-vE.z))>1e-6&&console.warn("ThreeTilesRenderer : Non uniform scale used for tile which may cause issues when raycasting.");let y={distance:1/0,tile:null};n.push(y),y.distance=ODe.distanceToSquared(yE.origin)*g*g,y.tile=u}else continue}n.sort(yG);let a=1/0,o=null;for(let l=0,c=n.length;l<c;l++){let u=n[l];if(u.distance>a)break;{let p=u.tile,d=p.cached.scene,f=null;if(e.has(p)?(TG(d,i,tc),tc.length>0&&(tc.length>1&&tc.sort(yG),f=tc[0])):f=EG(p,r,e,i),f){let m=f.distance*f.distance;m<a&&(a=m,o=f),tc.length=0}}}return o}function bG(t,r,e,i,n){let s=t.cached,a=r.matrixWorld;od.copy(a);let o=s.sphere;if(o&&(TE.copy(o),TE.applyMatrix4(od),!i.ray.intersectsSphere(TE)))return;let l=s.box,c=s.boxTransform;if(l&&(od.multiply(c).invert(),yE.copy(i.ray).applyMatrix4(od),!yE.intersectsBox(l)))return;let u=s.scene;if(e.has(t)){TG(u,i,n);return}let h=t.children;for(let p=0,d=h.length;p<d;p++)bG(h[p],r,e,i,n)}var LDe=Symbol("INITIAL_FRUSTUM_CULLED"),nu=new Ue,xG=new Ue,su=new A,ld=new A,cd=new A,ud=new A,oNt=new A(1,0,0),lNt=new A(0,1,0);function NDe(t,r){t.traverse(e=>{e.frustumCulled=e[LDe]&&r})}var LS=class extends qO{get autoDisableRendererCulling(){return this._autoDisableRendererCulling}set autoDisableRendererCulling(r){this._autoDisableRendererCulling!==r&&(super._autoDisableRendererCulling=r,this.forEachLoadedModel(e=>{NDe(e,!r)}))}constructor(...r){super(...r),this.group=new n3(this),this.cameras=[],this.cameraMap=new Map,this.cameraInfo=[],this.activeTiles=new Set,this.visibleTiles=new Set,this._autoDisableRendererCulling=!0,this.optimizeRaycast=!0,this.onLoadTileSet=null,this.onLoadModel=null,this.onDisposeModel=null,this.onTileVisibilityChange=null;let e=new Ap;e.setURLModifier(n=>this.preprocessURL?this.preprocessURL(n):n),this.manager=e;let i=this;this._overridenRaycast=function(n,s){i.optimizeRaycast||Object.getPrototypeOf(this).raycast.call(this,n,s)}}getBounds(r){if(!this.root)return!1;let e=this.root.cached,i=e.box,n=e.boxTransform;return i?(r.copy(i),r.applyMatrix4(n),!0):!1}getOrientedBounds(r,e){if(!this.root)return!1;let i=this.root.cached,n=i.box,s=i.boxTransform;return n?(r.copy(n),e.copy(s),!0):!1}getBoundingSphere(r){if(!this.root)return!1;let e=this.root.cached.sphere;return e?(r.copy(e),!0):!1}forEachLoadedModel(r){this.traverse(e=>{let i=e.cached.scene;i&&r(i,e)})}raycast(r,e){if(this.root)if(r.firstHitOnly){let i=EG(this.root,this.group,this.activeTiles,r);i&&e.push(i)}else bG(this.root,this.group,this.activeTiles,r,e)}hasCamera(r){return this.cameraMap.has(r)}setCamera(r){let e=this.cameras,i=this.cameraMap;return i.has(r)?!1:(i.set(r,new le),e.push(r),!0)}setResolution(r,e,i){let n=this.cameraMap;return n.has(r)?(e instanceof le?n.get(r).copy(e):n.get(r).set(e,i),!0):!1}setResolutionFromRenderer(r,e){let i=this.cameraMap;if(!i.has(r))return!1;let n=i.get(r);return e.getSize(n),n.multiplyScalar(e.getPixelRatio()),!0}deleteCamera(r){let e=this.cameras,i=this.cameraMap;if(i.has(r)){let n=e.indexOf(r);return e.splice(n,1),i.delete(r),!0}return!1}fetchTileSet(r,...e){let i=super.fetchTileSet(r,...e);return i.then(n=>{this.onLoadTileSet&&Promise.resolve().then(()=>{this.onLoadTileSet(n,r)})}),i}update(){let r=this.group,e=this.cameras,i=this.cameraMap,n=this.cameraInfo;if(e.length===0){console.warn("TilesRenderer: no cameras defined. Cannot update 3d tiles.");return}for(;n.length>e.length;)n.pop();for(;n.length<e.length;)n.push({frustum:new eo,isOrthographic:!1,sseDenominator:-1,position:new A,invScale:-1,pixelSize:0});xG.copy(r.matrixWorld).invert(),su.setFromMatrixScale(xG);let s=su.x;Math.abs(Math.max(su.x-su.y,su.x-su.z))>1e-6&&console.warn("ThreeTilesRenderer : Non uniform scale used for tile which may cause issues when calculating screen space error.");for(let a=0,o=n.length;a<o;a++){let l=e[a],c=n[a],u=c.frustum,h=c.position,p=i.get(l);(p.width===0||p.height===0)&&console.warn("TilesRenderer: resolution for camera error calculation is not set.");let d=l.projectionMatrix.elements;if(c.isOrthographic=d[15]===1,c.isOrthographic){let f=2/d[0],m=2/d[5];c.pixelSize=Math.max(m/p.height,f/p.width)}else c.sseDenominator=2/d[5]/p.height;c.invScale=s,nu.copy(r.matrixWorld),nu.premultiply(l.matrixWorldInverse),nu.premultiply(l.projectionMatrix),u.setFromProjectionMatrix(nu),h.set(0,0,0),h.applyMatrix4(l.matrixWorld),h.applyMatrix4(xG)}super.update()}preprocessNode(r,e,i){super.preprocessNode(r,e,i);let n=new Ue;if(r.transform){let h=r.transform;for(let p=0;p<16;p++)n.elements[p]=h[p]}else n.identity();e&&n.premultiply(e.cached.transform);let s=new Ue().copy(n).invert(),a=null,o=null,l=null;if("box"in r.boundingVolume){let h=r.boundingVolume.box;a=new Ot,o=new Ue,l=new Ue,ld.set(h[3],h[4],h[5]),cd.set(h[6],h[7],h[8]),ud.set(h[9],h[10],h[11]);let p=ld.length(),d=cd.length(),f=ud.length();ld.normalize(),cd.normalize(),ud.normalize(),p===0&&ld.crossVectors(cd,ud),d===0&&cd.crossVectors(ld,ud),f===0&&ud.crossVectors(ld,cd),o.set(ld.x,cd.x,ud.x,h[0],ld.y,cd.y,ud.y,h[1],ld.z,cd.z,ud.z,h[2],0,0,0,1),o.premultiply(n),l.copy(o).invert(),a.min.set(-p,-d,-f),a.max.set(p,d,f)}let c=null;if("sphere"in r.boundingVolume){let h=r.boundingVolume.sphere;c=new zi,c.center.set(h[0],h[1],h[2]),c.radius=h[3],c.applyMatrix4(n)}else if("box"in r.boundingVolume){let h=r.boundingVolume.box;c=new zi,a.getBoundingSphere(c),c.center.set(h[0],h[1],h[2]),c.applyMatrix4(n)}let u=null;if("region"in r.boundingVolume){let h=r.boundingVolume.region,[p,d,f,m,g,y]=h;u=new l3(6378137,6378137,bDe,d,m,p,f,g,y),c===null&&(c=new zi,u.getBoundingSphere(c)),a===null&&(a=new Ot,o=new Ue,l=new Ue,u.getBoundingBox(a,o),l.copy(o).invert())}r.cached={loadIndex:0,transform:n,transformInverse:s,active:!1,inFrustum:[],box:a,boxTransform:o,boxTransformInverse:l,sphere:c,region:u,scene:null,geometry:null,material:null}}parseTile(r,e,i){e._loadIndex=e._loadIndex||0,e._loadIndex++;let s=e.content.uri.split(/[\\\/]/g);s.pop();let a=s.join("/"),o=this.fetchOptions,l=this.manager,c=e._loadIndex,u=null,h=this.rootTileSet.asset&&this.rootTileSet.asset.gltfUpAxis||"y",p=e.cached,d=p.transform;switch(h.toLowerCase()){case"x":nu.makeRotationAxis(lNt,-Math.PI/2);break;case"y":nu.makeRotationAxis(oNt,Math.PI/2);break;case"z":nu.identity();break}let f=iu(r)||i;switch(f){case"b3dm":{let g=new pE(l);g.workingPath=a,g.fetchOptions=o,g.adjustmentTransform.copy(nu),u=g.parse(r).then(y=>y.scene);break}case"pnts":{let g=new dE(l);g.workingPath=a,g.fetchOptions=o,u=g.parse(r).then(y=>y.scene);break}case"i3dm":{let g=new fE(l);g.workingPath=a,g.fetchOptions=o,g.adjustmentTransform.copy(nu),u=g.parse(r).then(y=>y.scene);break}case"cmpt":{let g=new e3(l);g.workingPath=a,g.fetchOptions=o,g.adjustmentTransform.copy(nu),u=g.parse(r).then(y=>y.scene);break}case"gltf":case"glb":let m=new r3(l);m.workingPath=a,m.fetchOptions=o,u=m.parse(r).then(g=>g.scene);break;default:console.warn(`TilesRenderer: Content type "${f}" not supported.`),u=Promise.resolve(null);break}return u.then(m=>{if(e._loadIndex!==c)return;m.updateMatrix(),(f==="glb"||f==="gltf")&&m.matrix.multiply(nu),m.matrix.premultiply(d),m.matrix.decompose(m.position,m.quaternion,m.scale),m.traverse(b=>{b[LDe]=b.frustumCulled}),NDe(m,!this.autoDisableRendererCulling),p.scene=m,m.traverse(b=>{b.raycast=this._overridenRaycast});let g=[],y=[],E=[];m.traverse(b=>{if(b.geometry&&y.push(b.geometry),b.material){let x=b.material;g.push(b.material);for(let S in x){let D=x[S];D&&D.isTexture&&E.push(D)}}}),p.materials=g,p.geometry=y,p.textures=E,this.onLoadModel&&this.onLoadModel(m,e)})}disposeTile(r){let e=r.cached;if(e.scene){let i=e.materials,n=e.geometry,s=e.textures,a=e.scene.parent;for(let o=0,l=n.length;o<l;o++)n[o].dispose();for(let o=0,l=i.length;o<l;o++)i[o].dispose();for(let o=0,l=s.length;o<l;o++)s[o].dispose();a&&a.remove(e.scene),this.onDisposeModel&&this.onDisposeModel(e.scene,r),e.scene=null,e.materials=null,e.textures=null,e.geometry=null}this.activeTiles.delete(r),this.visibleTiles.delete(r),r._loadIndex++}setTileVisible(r,e){let i=r.cached.scene,n=this.visibleTiles,s=this.group;e?(s.add(i),n.add(r),i.updateMatrixWorld(!0)):(s.remove(i),n.delete(r)),this.onTileVisibilityChange&&this.onTileVisibilityChange(i,r,e)}setTileActive(r,e){let i=this.activeTiles;e?i.add(r):i.delete(r)}calculateError(r){let e=r.cached,i=e.inFrustum,n=this.cameras,s=this.cameraInfo,a=e.sphere,o=e.box,l=e.boxTransformInverse,c=e.transformInverse,u=o&&l,h=-1/0,p=1/0;for(let d=0,f=n.length;d<f;d++){if(!i[d])continue;let m=s[d],g=m.invScale,y;if(m.isOrthographic){let E=m.pixelSize;y=r.geometricError/(E*g)}else{su.copy(m.position);let E;u?(su.applyMatrix4(l),E=o.distanceToPoint(su)):(su.applyMatrix4(c),E=Math.max(a.distanceToPoint(su),0));let b=E*g,x=m.sseDenominator;y=r.geometricError/(b*x),p=Math.min(p,b)}h=Math.max(h,y)}r.__distanceFromCamera=p,r.__error=h}tileInView(r){let e=r.cached,i=e.sphere,n=e.inFrustum;if(i){let s=this.cameraInfo,a=!1;for(let o=0,l=s.length;o<l;o++)s[o].frustum.intersectsSphere(i)?(a=!0,n[o]=!0):n[o]=!1;return a}return!0}};var lm=Un(Yl(),1);var FS=new A,HS=new A,FDe=new Qi,c3=class extends oi{constructor(r,e=1,i=16711680){let n=new it,s=r.geometry.attributes.normal.count,a=new ct(s*2*3,3);n.setAttribute("position",a),super(n,new Tr({color:i,toneMapped:!1})),this.object=r,this.size=e,this.type="VertexNormalsHelper",this.matrixAutoUpdate=!1,this.update()}update(){this.object.updateMatrixWorld(!0),FDe.getNormalMatrix(this.object.matrixWorld);let r=this.object.matrixWorld,e=this.geometry.attributes.position,i=this.object.geometry;if(i){let n=i.attributes.position,s=i.attributes.normal,a=0;for(let o=0,l=n.count;o<l;o++)FS.fromBufferAttribute(n,o).applyMatrix4(r),HS.fromBufferAttribute(s,o),HS.applyMatrix3(FDe).normalize().multiplyScalar(this.size).add(FS),e.setXYZ(a,FS.x,FS.y,FS.z),a=a+1,e.setXYZ(a,HS.x,HS.y,HS.z),a=a+1}e.needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}};var US=function(){var t=0,r=document.createElement("div");r.style.cssText="position:fixed;top:0;left:0;cursor:pointer;opacity:0.9;z-index:10000",r.addEventListener("click",function(u){u.preventDefault(),i(++t%r.children.length)},!1);function e(u){return r.appendChild(u.dom),u}function i(u){for(var h=0;h<r.children.length;h++)r.children[h].style.display=h===u?"block":"none";t=u}var n=(performance||Date).now(),s=n,a=0,o=e(new US.Panel("FPS","#0ff","#002")),l=e(new US.Panel("MS","#0f0","#020"));if(self.performance&&self.performance.memory)var c=e(new US.Panel("MB","#f08","#201"));return i(0),{REVISION:16,dom:r,addPanel:e,showPanel:i,begin:function(){n=(performance||Date).now()},end:function(){a++;var u=(performance||Date).now();if(l.update(u-n,200),u>=s+1e3&&(o.update(a*1e3/(u-s),100),s=u,a=0,c)){var h=performance.memory;c.update(h.usedJSHeapSize/1048576,h.jsHeapSizeLimit/1048576)}return u},update:function(){n=this.end()},domElement:r,setMode:i}};US.Panel=function(t,r,e){var i=1/0,n=0,s=Math.round,a=s(window.devicePixelRatio||1),o=80*a,l=48*a,c=3*a,u=2*a,h=3*a,p=15*a,d=74*a,f=30*a,m=document.createElement("canvas");m.width=o,m.height=l,m.style.cssText="width:80px;height:48px";var g=m.getContext("2d");return g.font="bold "+9*a+"px Helvetica,Arial,sans-serif",g.textBaseline="top",g.fillStyle=e,g.fillRect(0,0,o,l),g.fillStyle=r,g.fillText(t,c,u),g.fillRect(h,p,d,f),g.fillStyle=e,g.globalAlpha=.9,g.fillRect(h,p,d,f),{dom:m,update:function(y,E){i=Math.min(i,y),n=Math.max(n,y),g.fillStyle=e,g.globalAlpha=1,g.fillRect(0,0,o,p),g.fillStyle=r,g.fillText(s(y)+" "+t+" ("+s(i)+"-"+s(n)+")",c,u),g.drawImage(m,h+a,p,d-a,f,h,p,d-a,f),g.fillRect(h+d-a,p,a,f),g.fillStyle=e,g.globalAlpha=.9,g.fillRect(h+d-a,p,a,s((1-y/E)*f))}}};var u3=US;var ss=class{constructor(){this.enabled=!0,this.needsSwap=!0,this.clear=!1,this.renderToScreen=!1}setSize(){}render(){console.error("THREE.Pass: .render() must be implemented in derived pass.")}dispose(){}},cNt=new Zi(-1,1,1,-1,0,1),IG=new it;IG.setAttribute("position",new ct([-1,3,0,-1,-1,0,3,-1,0],3));IG.setAttribute("uv",new ct([0,2,0,0,2,0],2));var na=class{constructor(r){this._mesh=new Je(IG,r)}dispose(){this._mesh.geometry.dispose()}render(r){r.render(this._mesh,cNt)}get material(){return this._mesh.material}set material(r){this._mesh.material=r}};var SG={defines:{KERNEL_SIZE_FLOAT:"25.0",KERNEL_SIZE_INT:"25"},uniforms:{tDiffuse:{value:null},uImageIncrement:{value:new le(.001953125,0)},cKernel:{value:[]}},vertexShader:`
|
||
|
||
uniform vec2 uImageIncrement;
|
||
|
||
varying vec2 vUv;
|
||
|
||
void main() {
|
||
|
||
vUv = uv - ( ( KERNEL_SIZE_FLOAT - 1.0 ) / 2.0 ) * uImageIncrement;
|
||
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
|
||
|
||
}`,fragmentShader:`
|
||
|
||
uniform float cKernel[ KERNEL_SIZE_INT ];
|
||
|
||
uniform sampler2D tDiffuse;
|
||
uniform vec2 uImageIncrement;
|
||
|
||
varying vec2 vUv;
|
||
|
||
void main() {
|
||
|
||
vec2 imageCoord = vUv;
|
||
vec4 sum = vec4( 0.0, 0.0, 0.0, 0.0 );
|
||
|
||
for( int i = 0; i < KERNEL_SIZE_INT; i ++ ) {
|
||
|
||
sum += texture2D( tDiffuse, imageCoord ) * cKernel[ i ];
|
||
imageCoord += uImageIncrement;
|
||
|
||
}
|
||
|
||
gl_FragColor = sum;
|
||
|
||
}`,buildKernel:function(t){let e=2*Math.ceil(t*3)+1;e>25&&(e=25);let i=(e-1)*.5,n=new Array(e),s=0;for(let a=0;a<e;++a)n[a]=uNt(a-i,t),s+=n[a];for(let a=0;a<e;++a)n[a]/=s;return n}};function uNt(t,r){return Math.exp(-(t*t)/(2*r*r))}var Th=class extends ss{constructor(r=1,e=25,i=4){super(),this.renderTargetX=new kr,this.renderTargetX.texture.name="BloomPass.x",this.renderTargetY=new kr,this.renderTargetY.texture.name="BloomPass.y",this.combineUniforms=hn.clone(_G.uniforms),this.combineUniforms.strength.value=r,this.materialCombine=new Yt({uniforms:this.combineUniforms,vertexShader:_G.vertexShader,fragmentShader:_G.fragmentShader,blending:fp,transparent:!0});let n=SG;this.convolutionUniforms=hn.clone(n.uniforms),this.convolutionUniforms.uImageIncrement.value=Th.blurX,this.convolutionUniforms.cKernel.value=SG.buildKernel(i),this.materialConvolution=new Yt({uniforms:this.convolutionUniforms,vertexShader:n.vertexShader,fragmentShader:n.fragmentShader,defines:{KERNEL_SIZE_FLOAT:e.toFixed(1),KERNEL_SIZE_INT:e.toFixed(0)}}),this.needsSwap=!1,this.fsQuad=new na(null)}render(r,e,i,n,s){s&&r.state.buffers.stencil.setTest(!1),this.fsQuad.material=this.materialConvolution,this.convolutionUniforms.tDiffuse.value=i.texture,this.convolutionUniforms.uImageIncrement.value=Th.blurX,r.setRenderTarget(this.renderTargetX),r.clear(),this.fsQuad.render(r),this.convolutionUniforms.tDiffuse.value=this.renderTargetX.texture,this.convolutionUniforms.uImageIncrement.value=Th.blurY,r.setRenderTarget(this.renderTargetY),r.clear(),this.fsQuad.render(r),this.fsQuad.material=this.materialCombine,this.combineUniforms.tDiffuse.value=this.renderTargetY.texture,s&&r.state.buffers.stencil.setTest(!0),r.setRenderTarget(i),this.clear&&r.clear(),this.fsQuad.render(r)}setSize(r,e){this.renderTargetX.setSize(r,e),this.renderTargetY.setSize(r,e)}dispose(){this.renderTargetX.dispose(),this.renderTargetY.dispose(),this.materialCombine.dispose(),this.materialConvolution.dispose(),this.fsQuad.dispose()}},_G={uniforms:{tDiffuse:{value:null},strength:{value:1}},vertexShader:`
|
||
|
||
varying vec2 vUv;
|
||
|
||
void main() {
|
||
|
||
vUv = uv;
|
||
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
|
||
|
||
}`,fragmentShader:`
|
||
|
||
uniform float strength;
|
||
|
||
uniform sampler2D tDiffuse;
|
||
|
||
varying vec2 vUv;
|
||
|
||
void main() {
|
||
|
||
vec4 texel = texture2D( tDiffuse, vUv );
|
||
gl_FragColor = strength * texel;
|
||
|
||
}`};Th.blurX=new le(.001953125,0);Th.blurY=new le(0,.001953125);var sa={uniforms:{tDiffuse:{value:null},opacity:{value:1}},vertexShader:`
|
||
|
||
varying vec2 vUv;
|
||
|
||
void main() {
|
||
|
||
vUv = uv;
|
||
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
|
||
|
||
}`,fragmentShader:`
|
||
|
||
uniform float opacity;
|
||
|
||
uniform sampler2D tDiffuse;
|
||
|
||
varying vec2 vUv;
|
||
|
||
void main() {
|
||
|
||
gl_FragColor = texture2D( tDiffuse, vUv );
|
||
gl_FragColor.a *= opacity;
|
||
|
||
|
||
}`};var EE=class extends ss{constructor(r,e){super(),this.textureID=e!==void 0?e:"tDiffuse",r instanceof Yt?(this.uniforms=r.uniforms,this.material=r):r&&(this.uniforms=hn.clone(r.uniforms),this.material=new Yt({defines:Object.assign({},r.defines),uniforms:this.uniforms,vertexShader:r.vertexShader,fragmentShader:r.fragmentShader})),this.fsQuad=new na(this.material)}render(r,e,i){this.uniforms[this.textureID]&&(this.uniforms[this.textureID].value=i.texture),this.fsQuad.material=this.material,this.renderToScreen?(r.setRenderTarget(null),this.fsQuad.render(r)):(r.setRenderTarget(e),this.clear&&r.clear(r.autoClearColor,r.autoClearDepth,r.autoClearStencil),this.fsQuad.render(r))}dispose(){this.material.dispose(),this.fsQuad.dispose()}};var BS=class extends ss{constructor(r,e){super(),this.scene=r,this.camera=e,this.clear=!0,this.needsSwap=!1,this.inverse=!1}render(r,e,i){let n=r.getContext(),s=r.state;s.buffers.color.setMask(!1),s.buffers.depth.setMask(!1),s.buffers.color.setLocked(!0),s.buffers.depth.setLocked(!0);let a,o;this.inverse?(a=0,o=1):(a=1,o=0),s.buffers.stencil.setTest(!0),s.buffers.stencil.setOp(n.REPLACE,n.REPLACE,n.REPLACE),s.buffers.stencil.setFunc(n.ALWAYS,a,4294967295),s.buffers.stencil.setClear(o),s.buffers.stencil.setLocked(!0),r.setRenderTarget(i),this.clear&&r.clear(),r.render(this.scene,this.camera),r.setRenderTarget(e),this.clear&&r.clear(),r.render(this.scene,this.camera),s.buffers.color.setLocked(!1),s.buffers.depth.setLocked(!1),s.buffers.stencil.setLocked(!1),s.buffers.stencil.setFunc(n.EQUAL,1,4294967295),s.buffers.stencil.setOp(n.KEEP,n.KEEP,n.KEEP),s.buffers.stencil.setLocked(!0)}},h3=class extends ss{constructor(){super(),this.needsSwap=!1}render(r){r.state.buffers.stencil.setLocked(!1),r.state.buffers.stencil.setTest(!1)}};var p3=class{constructor(r,e){if(this.renderer=r,e===void 0){let i=r.getSize(new le);this._pixelRatio=r.getPixelRatio(),this._width=i.width,this._height=i.height,e=new kr(this._width*this._pixelRatio,this._height*this._pixelRatio),e.texture.name="EffectComposer.rt1"}else this._pixelRatio=1,this._width=e.width,this._height=e.height;this.renderTarget1=e,this.renderTarget2=e.clone(),this.renderTarget2.texture.name="EffectComposer.rt2",this.writeBuffer=this.renderTarget1,this.readBuffer=this.renderTarget2,this.renderToScreen=!0,this.passes=[],this.copyPass=new EE(sa),this.clock=new df}swapBuffers(){let r=this.readBuffer;this.readBuffer=this.writeBuffer,this.writeBuffer=r}addPass(r){this.passes.push(r),r.setSize(this._width*this._pixelRatio,this._height*this._pixelRatio)}insertPass(r,e){this.passes.splice(e,0,r),r.setSize(this._width*this._pixelRatio,this._height*this._pixelRatio)}removePass(r){let e=this.passes.indexOf(r);e!==-1&&this.passes.splice(e,1)}isLastEnabledPass(r){for(let e=r+1;e<this.passes.length;e++)if(this.passes[e].enabled)return!1;return!0}render(r){r===void 0&&(r=this.clock.getDelta());let e=this.renderer.getRenderTarget(),i=!1;for(let n=0,s=this.passes.length;n<s;n++){let a=this.passes[n];if(a.enabled!==!1){if(a.renderToScreen=this.renderToScreen&&this.isLastEnabledPass(n),a.render(this.renderer,this.writeBuffer,this.readBuffer,r,i),a.needsSwap){if(i){let o=this.renderer.getContext(),l=this.renderer.state.buffers.stencil;l.setFunc(o.NOTEQUAL,1,4294967295),this.copyPass.render(this.renderer,this.writeBuffer,this.readBuffer,r),l.setFunc(o.EQUAL,1,4294967295)}this.swapBuffers()}BS!==void 0&&(a instanceof BS?i=!0:a instanceof h3&&(i=!1))}}this.renderer.setRenderTarget(e)}reset(r){if(r===void 0){let e=this.renderer.getSize(new le);this._pixelRatio=this.renderer.getPixelRatio(),this._width=e.width,this._height=e.height,r=this.renderTarget1.clone(),r.setSize(this._width*this._pixelRatio,this._height*this._pixelRatio)}this.renderTarget1.dispose(),this.renderTarget2.dispose(),this.renderTarget1=r,this.renderTarget2=r.clone(),this.writeBuffer=this.renderTarget1,this.readBuffer=this.renderTarget2}setSize(r,e){this._width=r,this._height=e;let i=this._width*this._pixelRatio,n=this._height*this._pixelRatio;this.renderTarget1.setSize(i,n),this.renderTarget2.setSize(i,n);for(let s=0;s<this.passes.length;s++)this.passes[s].setSize(i,n)}setPixelRatio(r){this._pixelRatio=r,this.setSize(this._width,this._height)}dispose(){this.renderTarget1.dispose(),this.renderTarget2.dispose(),this.copyPass.dispose()}};var au=class extends ss{constructor(r,e,i,n){super(),this.renderScene=e,this.renderCamera=i,this.selectedObjects=n!==void 0?n:[],this.visibleEdgeColor=new Ve(1,1,1),this.hiddenEdgeColor=new Ve(.1,.04,.02),this.edgeGlow=0,this.usePatternTexture=!1,this.edgeThickness=1,this.edgeStrength=3,this.downSampleRatio=2,this.pulsePeriod=0,this._visibilityCache=new Map,this.resolution=r!==void 0?new le(r.x,r.y):new le(256,256);let s=Math.round(this.resolution.x/this.downSampleRatio),a=Math.round(this.resolution.y/this.downSampleRatio);this.renderTargetMaskBuffer=new kr(this.resolution.x,this.resolution.y),this.renderTargetMaskBuffer.texture.name="OutlinePass.mask",this.renderTargetMaskBuffer.texture.generateMipmaps=!1,this.depthMaterial=new Tp,this.depthMaterial.side=wi,this.depthMaterial.depthPacking=Gy,this.depthMaterial.blending=Fi,this.prepareMaskMaterial=this.getPrepareMaskMaterial(),this.prepareMaskMaterial.side=wi,this.prepareMaskMaterial.fragmentShader=u(this.prepareMaskMaterial.fragmentShader,this.renderCamera),this.renderTargetDepthBuffer=new kr(this.resolution.x,this.resolution.y),this.renderTargetDepthBuffer.texture.name="OutlinePass.depth",this.renderTargetDepthBuffer.texture.generateMipmaps=!1,this.renderTargetMaskDownSampleBuffer=new kr(s,a),this.renderTargetMaskDownSampleBuffer.texture.name="OutlinePass.depthDownSample",this.renderTargetMaskDownSampleBuffer.texture.generateMipmaps=!1,this.renderTargetBlurBuffer1=new kr(s,a),this.renderTargetBlurBuffer1.texture.name="OutlinePass.blur1",this.renderTargetBlurBuffer1.texture.generateMipmaps=!1,this.renderTargetBlurBuffer2=new kr(Math.round(s/2),Math.round(a/2)),this.renderTargetBlurBuffer2.texture.name="OutlinePass.blur2",this.renderTargetBlurBuffer2.texture.generateMipmaps=!1,this.edgeDetectionMaterial=this.getEdgeDetectionMaterial(),this.renderTargetEdgeBuffer1=new kr(s,a),this.renderTargetEdgeBuffer1.texture.name="OutlinePass.edge1",this.renderTargetEdgeBuffer1.texture.generateMipmaps=!1,this.renderTargetEdgeBuffer2=new kr(Math.round(s/2),Math.round(a/2)),this.renderTargetEdgeBuffer2.texture.name="OutlinePass.edge2",this.renderTargetEdgeBuffer2.texture.generateMipmaps=!1;let o=4,l=4;this.separableBlurMaterial1=this.getSeperableBlurMaterial(o),this.separableBlurMaterial1.uniforms.texSize.value.set(s,a),this.separableBlurMaterial1.uniforms.kernelRadius.value=1,this.separableBlurMaterial2=this.getSeperableBlurMaterial(l),this.separableBlurMaterial2.uniforms.texSize.value.set(Math.round(s/2),Math.round(a/2)),this.separableBlurMaterial2.uniforms.kernelRadius.value=l,this.overlayMaterial=this.getOverlayMaterial();let c=sa;this.copyUniforms=hn.clone(c.uniforms),this.copyUniforms.opacity.value=1,this.materialCopy=new Yt({uniforms:this.copyUniforms,vertexShader:c.vertexShader,fragmentShader:c.fragmentShader,blending:Fi,depthTest:!1,depthWrite:!1,transparent:!0}),this.enabled=!0,this.needsSwap=!1,this._oldClearColor=new Ve,this.oldClearAlpha=1,this.fsQuad=new na(null),this.tempPulseColor1=new Ve,this.tempPulseColor2=new Ve,this.textureMatrix=new Ue;function u(h,p){let d=p.isPerspectiveCamera?"perspective":"orthographic";return h.replace(/DEPTH_TO_VIEW_Z/g,d+"DepthToViewZ")}}dispose(){this.renderTargetMaskBuffer.dispose(),this.renderTargetDepthBuffer.dispose(),this.renderTargetMaskDownSampleBuffer.dispose(),this.renderTargetBlurBuffer1.dispose(),this.renderTargetBlurBuffer2.dispose(),this.renderTargetEdgeBuffer1.dispose(),this.renderTargetEdgeBuffer2.dispose(),this.depthMaterial.dispose(),this.prepareMaskMaterial.dispose(),this.edgeDetectionMaterial.dispose(),this.separableBlurMaterial1.dispose(),this.separableBlurMaterial2.dispose(),this.overlayMaterial.dispose(),this.materialCopy.dispose(),this.fsQuad.dispose()}setSize(r,e){this.renderTargetMaskBuffer.setSize(r,e),this.renderTargetDepthBuffer.setSize(r,e);let i=Math.round(r/this.downSampleRatio),n=Math.round(e/this.downSampleRatio);this.renderTargetMaskDownSampleBuffer.setSize(i,n),this.renderTargetBlurBuffer1.setSize(i,n),this.renderTargetEdgeBuffer1.setSize(i,n),this.separableBlurMaterial1.uniforms.texSize.value.set(i,n),i=Math.round(i/2),n=Math.round(n/2),this.renderTargetBlurBuffer2.setSize(i,n),this.renderTargetEdgeBuffer2.setSize(i,n),this.separableBlurMaterial2.uniforms.texSize.value.set(i,n)}changeVisibilityOfSelectedObjects(r){let e=this._visibilityCache;function i(n){n.isMesh&&(r===!0?n.visible=e.get(n):(e.set(n,n.visible),n.visible=r))}for(let n=0;n<this.selectedObjects.length;n++)this.selectedObjects[n].traverse(i)}changeVisibilityOfNonSelectedObjects(r){let e=this._visibilityCache,i=[];function n(a){a.isMesh&&i.push(a)}for(let a=0;a<this.selectedObjects.length;a++)this.selectedObjects[a].traverse(n);function s(a){if(a.isMesh||a.isSprite){let o=!1;for(let l=0;l<i.length;l++)if(i[l].id===a.id){o=!0;break}if(o===!1){let l=a.visible;(r===!1||e.get(a)===!0)&&(a.visible=r),e.set(a,l)}}else(a.isPoints||a.isLine)&&(r===!0?a.visible=e.get(a):(e.set(a,a.visible),a.visible=r))}this.renderScene.traverse(s)}updateTextureMatrix(){this.textureMatrix.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1),this.textureMatrix.multiply(this.renderCamera.projectionMatrix),this.textureMatrix.multiply(this.renderCamera.matrixWorldInverse)}render(r,e,i,n,s){if(this.selectedObjects.length>0){r.getClearColor(this._oldClearColor),this.oldClearAlpha=r.getClearAlpha();let a=r.autoClear;r.autoClear=!1,s&&r.state.buffers.stencil.setTest(!1),r.setClearColor(16777215,1),this.changeVisibilityOfSelectedObjects(!1);let o=this.renderScene.background;if(this.renderScene.background=null,this.renderScene.overrideMaterial=this.depthMaterial,r.setRenderTarget(this.renderTargetDepthBuffer),r.clear(),r.render(this.renderScene,this.renderCamera),this.changeVisibilityOfSelectedObjects(!0),this._visibilityCache.clear(),this.updateTextureMatrix(),this.changeVisibilityOfNonSelectedObjects(!1),this.renderScene.overrideMaterial=this.prepareMaskMaterial,this.prepareMaskMaterial.uniforms.cameraNearFar.value.set(this.renderCamera.near,this.renderCamera.far),this.prepareMaskMaterial.uniforms.depthTexture.value=this.renderTargetDepthBuffer.texture,this.prepareMaskMaterial.uniforms.textureMatrix.value=this.textureMatrix,r.setRenderTarget(this.renderTargetMaskBuffer),r.clear(),r.render(this.renderScene,this.renderCamera),this.renderScene.overrideMaterial=null,this.changeVisibilityOfNonSelectedObjects(!0),this._visibilityCache.clear(),this.renderScene.background=o,this.fsQuad.material=this.materialCopy,this.copyUniforms.tDiffuse.value=this.renderTargetMaskBuffer.texture,r.setRenderTarget(this.renderTargetMaskDownSampleBuffer),r.clear(),this.fsQuad.render(r),this.tempPulseColor1.copy(this.visibleEdgeColor),this.tempPulseColor2.copy(this.hiddenEdgeColor),this.pulsePeriod>0){let l=.625+Math.cos(performance.now()*.01/this.pulsePeriod)*.75/2;this.tempPulseColor1.multiplyScalar(l),this.tempPulseColor2.multiplyScalar(l)}this.fsQuad.material=this.edgeDetectionMaterial,this.edgeDetectionMaterial.uniforms.maskTexture.value=this.renderTargetMaskDownSampleBuffer.texture,this.edgeDetectionMaterial.uniforms.texSize.value.set(this.renderTargetMaskDownSampleBuffer.width,this.renderTargetMaskDownSampleBuffer.height),this.edgeDetectionMaterial.uniforms.visibleEdgeColor.value=this.tempPulseColor1,this.edgeDetectionMaterial.uniforms.hiddenEdgeColor.value=this.tempPulseColor2,r.setRenderTarget(this.renderTargetEdgeBuffer1),r.clear(),this.fsQuad.render(r),this.fsQuad.material=this.separableBlurMaterial1,this.separableBlurMaterial1.uniforms.colorTexture.value=this.renderTargetEdgeBuffer1.texture,this.separableBlurMaterial1.uniforms.direction.value=au.BlurDirectionX,this.separableBlurMaterial1.uniforms.kernelRadius.value=this.edgeThickness,r.setRenderTarget(this.renderTargetBlurBuffer1),r.clear(),this.fsQuad.render(r),this.separableBlurMaterial1.uniforms.colorTexture.value=this.renderTargetBlurBuffer1.texture,this.separableBlurMaterial1.uniforms.direction.value=au.BlurDirectionY,r.setRenderTarget(this.renderTargetEdgeBuffer1),r.clear(),this.fsQuad.render(r),this.fsQuad.material=this.separableBlurMaterial2,this.separableBlurMaterial2.uniforms.colorTexture.value=this.renderTargetEdgeBuffer1.texture,this.separableBlurMaterial2.uniforms.direction.value=au.BlurDirectionX,r.setRenderTarget(this.renderTargetBlurBuffer2),r.clear(),this.fsQuad.render(r),this.separableBlurMaterial2.uniforms.colorTexture.value=this.renderTargetBlurBuffer2.texture,this.separableBlurMaterial2.uniforms.direction.value=au.BlurDirectionY,r.setRenderTarget(this.renderTargetEdgeBuffer2),r.clear(),this.fsQuad.render(r),this.fsQuad.material=this.overlayMaterial,this.overlayMaterial.uniforms.maskTexture.value=this.renderTargetMaskBuffer.texture,this.overlayMaterial.uniforms.edgeTexture1.value=this.renderTargetEdgeBuffer1.texture,this.overlayMaterial.uniforms.edgeTexture2.value=this.renderTargetEdgeBuffer2.texture,this.overlayMaterial.uniforms.patternTexture.value=this.patternTexture,this.overlayMaterial.uniforms.edgeStrength.value=this.edgeStrength,this.overlayMaterial.uniforms.edgeGlow.value=this.edgeGlow,this.overlayMaterial.uniforms.usePatternTexture.value=this.usePatternTexture,s&&r.state.buffers.stencil.setTest(!0),r.setRenderTarget(i),this.fsQuad.render(r),r.setClearColor(this._oldClearColor,this.oldClearAlpha),r.autoClear=a}this.renderToScreen&&(this.fsQuad.material=this.materialCopy,this.copyUniforms.tDiffuse.value=i.texture,r.setRenderTarget(null),this.fsQuad.render(r))}getPrepareMaskMaterial(){return new Yt({uniforms:{depthTexture:{value:null},cameraNearFar:{value:new le(.5,.5)},textureMatrix:{value:null}},vertexShader:`#include <morphtarget_pars_vertex>
|
||
#include <skinning_pars_vertex>
|
||
|
||
varying vec4 projTexCoord;
|
||
varying vec4 vPosition;
|
||
uniform mat4 textureMatrix;
|
||
|
||
void main() {
|
||
|
||
#include <skinbase_vertex>
|
||
#include <begin_vertex>
|
||
#include <morphtarget_vertex>
|
||
#include <skinning_vertex>
|
||
#include <project_vertex>
|
||
|
||
vPosition = mvPosition;
|
||
|
||
vec4 worldPosition = vec4( transformed, 1.0 );
|
||
|
||
#ifdef USE_INSTANCING
|
||
|
||
worldPosition = instanceMatrix * worldPosition;
|
||
|
||
#endif
|
||
|
||
worldPosition = modelMatrix * worldPosition;
|
||
|
||
projTexCoord = textureMatrix * worldPosition;
|
||
|
||
}`,fragmentShader:`#include <packing>
|
||
varying vec4 vPosition;
|
||
varying vec4 projTexCoord;
|
||
uniform sampler2D depthTexture;
|
||
uniform vec2 cameraNearFar;
|
||
|
||
void main() {
|
||
|
||
float depth = unpackRGBAToDepth(texture2DProj( depthTexture, projTexCoord ));
|
||
float viewZ = - DEPTH_TO_VIEW_Z( depth, cameraNearFar.x, cameraNearFar.y );
|
||
float depthTest = (-vPosition.z > viewZ) ? 1.0 : 0.0;
|
||
gl_FragColor = vec4(0.0, depthTest, 1.0, 1.0);
|
||
|
||
}`})}getEdgeDetectionMaterial(){return new Yt({uniforms:{maskTexture:{value:null},texSize:{value:new le(.5,.5)},visibleEdgeColor:{value:new A(1,1,1)},hiddenEdgeColor:{value:new A(1,1,1)}},vertexShader:`varying vec2 vUv;
|
||
|
||
void main() {
|
||
vUv = uv;
|
||
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
|
||
}`,fragmentShader:`varying vec2 vUv;
|
||
|
||
uniform sampler2D maskTexture;
|
||
uniform vec2 texSize;
|
||
uniform vec3 visibleEdgeColor;
|
||
uniform vec3 hiddenEdgeColor;
|
||
|
||
void main() {
|
||
vec2 invSize = 1.0 / texSize;
|
||
vec4 uvOffset = vec4(1.0, 0.0, 0.0, 1.0) * vec4(invSize, invSize);
|
||
vec4 c1 = texture2D( maskTexture, vUv + uvOffset.xy);
|
||
vec4 c2 = texture2D( maskTexture, vUv - uvOffset.xy);
|
||
vec4 c3 = texture2D( maskTexture, vUv + uvOffset.yw);
|
||
vec4 c4 = texture2D( maskTexture, vUv - uvOffset.yw);
|
||
float diff1 = (c1.r - c2.r)*0.5;
|
||
float diff2 = (c3.r - c4.r)*0.5;
|
||
float d = length( vec2(diff1, diff2) );
|
||
float a1 = min(c1.g, c2.g);
|
||
float a2 = min(c3.g, c4.g);
|
||
float visibilityFactor = min(a1, a2);
|
||
vec3 edgeColor = 1.0 - visibilityFactor > 0.001 ? visibleEdgeColor : hiddenEdgeColor;
|
||
gl_FragColor = vec4(edgeColor, 1.0) * vec4(d);
|
||
}`})}getSeperableBlurMaterial(r){return new Yt({defines:{MAX_RADIUS:r},uniforms:{colorTexture:{value:null},texSize:{value:new le(.5,.5)},direction:{value:new le(.5,.5)},kernelRadius:{value:1}},vertexShader:`varying vec2 vUv;
|
||
|
||
void main() {
|
||
vUv = uv;
|
||
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
|
||
}`,fragmentShader:`#include <common>
|
||
varying vec2 vUv;
|
||
uniform sampler2D colorTexture;
|
||
uniform vec2 texSize;
|
||
uniform vec2 direction;
|
||
uniform float kernelRadius;
|
||
|
||
float gaussianPdf(in float x, in float sigma) {
|
||
return 0.39894 * exp( -0.5 * x * x/( sigma * sigma))/sigma;
|
||
}
|
||
|
||
void main() {
|
||
vec2 invSize = 1.0 / texSize;
|
||
float sigma = kernelRadius/2.0;
|
||
float weightSum = gaussianPdf(0.0, sigma);
|
||
vec4 diffuseSum = texture2D( colorTexture, vUv) * weightSum;
|
||
vec2 delta = direction * invSize * kernelRadius/float(MAX_RADIUS);
|
||
vec2 uvOffset = delta;
|
||
for( int i = 1; i <= MAX_RADIUS; i ++ ) {
|
||
float x = kernelRadius * float(i) / float(MAX_RADIUS);
|
||
float w = gaussianPdf(x, sigma);
|
||
vec4 sample1 = texture2D( colorTexture, vUv + uvOffset);
|
||
vec4 sample2 = texture2D( colorTexture, vUv - uvOffset);
|
||
diffuseSum += ((sample1 + sample2) * w);
|
||
weightSum += (2.0 * w);
|
||
uvOffset += delta;
|
||
}
|
||
gl_FragColor = diffuseSum/weightSum;
|
||
}`})}getOverlayMaterial(){return new Yt({uniforms:{maskTexture:{value:null},edgeTexture1:{value:null},edgeTexture2:{value:null},patternTexture:{value:null},edgeStrength:{value:1},edgeGlow:{value:1},usePatternTexture:{value:0}},vertexShader:`varying vec2 vUv;
|
||
|
||
void main() {
|
||
vUv = uv;
|
||
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
|
||
}`,fragmentShader:`varying vec2 vUv;
|
||
|
||
uniform sampler2D maskTexture;
|
||
uniform sampler2D edgeTexture1;
|
||
uniform sampler2D edgeTexture2;
|
||
uniform sampler2D patternTexture;
|
||
uniform float edgeStrength;
|
||
uniform float edgeGlow;
|
||
uniform bool usePatternTexture;
|
||
|
||
void main() {
|
||
vec4 edgeValue1 = texture2D(edgeTexture1, vUv);
|
||
vec4 edgeValue2 = texture2D(edgeTexture2, vUv);
|
||
vec4 maskColor = texture2D(maskTexture, vUv);
|
||
vec4 patternColor = texture2D(patternTexture, 6.0 * vUv);
|
||
float visibilityFactor = 1.0 - maskColor.g > 0.0 ? 1.0 : 0.5;
|
||
vec4 edgeValue = edgeValue1 + edgeValue2 * edgeGlow;
|
||
vec4 finalColor = edgeStrength * maskColor.r * edgeValue;
|
||
if(usePatternTexture)
|
||
finalColor += + visibilityFactor * (1.0 - maskColor.r) * (1.0 - patternColor.r);
|
||
gl_FragColor = finalColor;
|
||
}`,blending:fp,depthTest:!1,depthWrite:!1,transparent:!0})}};au.BlurDirectionX=new le(1,0);au.BlurDirectionY=new le(0,1);var d3=class extends ss{constructor(r,e,i,n,s){super(),this.scene=r,this.camera=e,this.overrideMaterial=i,this.clearColor=n,this.clearAlpha=s!==void 0?s:0,this.clear=!0,this.clearDepth=!1,this.needsSwap=!1,this._oldClearColor=new Ve}render(r,e,i){let n=r.autoClear;r.autoClear=!1;let s,a;this.overrideMaterial!==void 0&&(a=this.scene.overrideMaterial,this.scene.overrideMaterial=this.overrideMaterial),this.clearColor&&(r.getClearColor(this._oldClearColor),s=r.getClearAlpha(),r.setClearColor(this.clearColor,this.clearAlpha)),this.clearDepth&&r.clearDepth(),r.setRenderTarget(this.renderToScreen?null:i),this.clear&&r.clear(r.autoClearColor,r.autoClearDepth,r.autoClearStencil),r.render(this.scene,this.camera),this.clearColor&&r.setClearColor(this._oldClearColor,s),this.overrideMaterial!==void 0&&(this.scene.overrideMaterial=a),r.autoClear=n}};var kS={defines:{NUM_SAMPLES:7,NUM_RINGS:4,NORMAL_TEXTURE:0,DIFFUSE_TEXTURE:0,DEPTH_PACKING:1,PERSPECTIVE_CAMERA:1},uniforms:{tDepth:{value:null},tDiffuse:{value:null},tNormal:{value:null},size:{value:new le(512,512)},cameraNear:{value:1},cameraFar:{value:100},cameraProjectionMatrix:{value:new Ue},cameraInverseProjectionMatrix:{value:new Ue},scale:{value:1},intensity:{value:.1},bias:{value:.5},minResolution:{value:0},kernelRadius:{value:100},randomSeed:{value:0}},vertexShader:`
|
||
|
||
varying vec2 vUv;
|
||
|
||
void main() {
|
||
vUv = uv;
|
||
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
|
||
}`,fragmentShader:`
|
||
|
||
#include <common>
|
||
|
||
varying vec2 vUv;
|
||
|
||
#if DIFFUSE_TEXTURE == 1
|
||
uniform sampler2D tDiffuse;
|
||
#endif
|
||
|
||
uniform sampler2D tDepth;
|
||
|
||
#if NORMAL_TEXTURE == 1
|
||
uniform sampler2D tNormal;
|
||
#endif
|
||
|
||
uniform float cameraNear;
|
||
uniform float cameraFar;
|
||
uniform mat4 cameraProjectionMatrix;
|
||
uniform mat4 cameraInverseProjectionMatrix;
|
||
|
||
uniform float scale;
|
||
uniform float intensity;
|
||
uniform float bias;
|
||
uniform float kernelRadius;
|
||
uniform float minResolution;
|
||
uniform vec2 size;
|
||
uniform float randomSeed;
|
||
|
||
// RGBA depth
|
||
|
||
#include <packing>
|
||
|
||
vec4 getDefaultColor( const in vec2 screenPosition ) {
|
||
#if DIFFUSE_TEXTURE == 1
|
||
return texture2D( tDiffuse, vUv );
|
||
#else
|
||
return vec4( 1.0 );
|
||
#endif
|
||
}
|
||
|
||
float getDepth( const in vec2 screenPosition ) {
|
||
#if DEPTH_PACKING == 1
|
||
return unpackRGBAToDepth( texture2D( tDepth, screenPosition ) );
|
||
#else
|
||
return texture2D( tDepth, screenPosition ).x;
|
||
#endif
|
||
}
|
||
|
||
float getViewZ( const in float depth ) {
|
||
#if PERSPECTIVE_CAMERA == 1
|
||
return perspectiveDepthToViewZ( depth, cameraNear, cameraFar );
|
||
#else
|
||
return orthographicDepthToViewZ( depth, cameraNear, cameraFar );
|
||
#endif
|
||
}
|
||
|
||
vec3 getViewPosition( const in vec2 screenPosition, const in float depth, const in float viewZ ) {
|
||
float clipW = cameraProjectionMatrix[2][3] * viewZ + cameraProjectionMatrix[3][3];
|
||
vec4 clipPosition = vec4( ( vec3( screenPosition, depth ) - 0.5 ) * 2.0, 1.0 );
|
||
clipPosition *= clipW; // unprojection.
|
||
|
||
return ( cameraInverseProjectionMatrix * clipPosition ).xyz;
|
||
}
|
||
|
||
vec3 getViewNormal( const in vec3 viewPosition, const in vec2 screenPosition ) {
|
||
#if NORMAL_TEXTURE == 1
|
||
return unpackRGBToNormal( texture2D( tNormal, screenPosition ).xyz );
|
||
#else
|
||
return normalize( cross( dFdx( viewPosition ), dFdy( viewPosition ) ) );
|
||
#endif
|
||
}
|
||
|
||
float scaleDividedByCameraFar;
|
||
float minResolutionMultipliedByCameraFar;
|
||
|
||
float getOcclusion( const in vec3 centerViewPosition, const in vec3 centerViewNormal, const in vec3 sampleViewPosition ) {
|
||
vec3 viewDelta = sampleViewPosition - centerViewPosition;
|
||
float viewDistance = length( viewDelta );
|
||
float scaledScreenDistance = scaleDividedByCameraFar * viewDistance;
|
||
|
||
return max(0.0, (dot(centerViewNormal, viewDelta) - minResolutionMultipliedByCameraFar) / scaledScreenDistance - bias) / (1.0 + pow2( scaledScreenDistance ) );
|
||
}
|
||
|
||
// moving costly divides into consts
|
||
const float ANGLE_STEP = PI2 * float( NUM_RINGS ) / float( NUM_SAMPLES );
|
||
const float INV_NUM_SAMPLES = 1.0 / float( NUM_SAMPLES );
|
||
|
||
float getAmbientOcclusion( const in vec3 centerViewPosition ) {
|
||
// precompute some variables require in getOcclusion.
|
||
scaleDividedByCameraFar = scale / cameraFar;
|
||
minResolutionMultipliedByCameraFar = minResolution * cameraFar;
|
||
vec3 centerViewNormal = getViewNormal( centerViewPosition, vUv );
|
||
|
||
// jsfiddle that shows sample pattern: https://jsfiddle.net/a16ff1p7/
|
||
float angle = rand( vUv + randomSeed ) * PI2;
|
||
vec2 radius = vec2( kernelRadius * INV_NUM_SAMPLES ) / size;
|
||
vec2 radiusStep = radius;
|
||
|
||
float occlusionSum = 0.0;
|
||
float weightSum = 0.0;
|
||
|
||
for( int i = 0; i < NUM_SAMPLES; i ++ ) {
|
||
vec2 sampleUv = vUv + vec2( cos( angle ), sin( angle ) ) * radius;
|
||
radius += radiusStep;
|
||
angle += ANGLE_STEP;
|
||
|
||
float sampleDepth = getDepth( sampleUv );
|
||
if( sampleDepth >= ( 1.0 - EPSILON ) ) {
|
||
continue;
|
||
}
|
||
|
||
float sampleViewZ = getViewZ( sampleDepth );
|
||
vec3 sampleViewPosition = getViewPosition( sampleUv, sampleDepth, sampleViewZ );
|
||
occlusionSum += getOcclusion( centerViewPosition, centerViewNormal, sampleViewPosition );
|
||
weightSum += 1.0;
|
||
}
|
||
|
||
if( weightSum == 0.0 ) discard;
|
||
|
||
return occlusionSum * ( intensity / weightSum );
|
||
}
|
||
|
||
void main() {
|
||
float centerDepth = getDepth( vUv );
|
||
if( centerDepth >= ( 1.0 - EPSILON ) ) {
|
||
discard;
|
||
}
|
||
|
||
float centerViewZ = getViewZ( centerDepth );
|
||
vec3 viewPosition = getViewPosition( vUv, centerDepth, centerViewZ );
|
||
|
||
float ambientOcclusion = getAmbientOcclusion( viewPosition );
|
||
|
||
gl_FragColor = getDefaultColor( vUv );
|
||
gl_FragColor.xyz *= 1.0 - ambientOcclusion;
|
||
}`};var hd={defines:{KERNEL_RADIUS:4,DEPTH_PACKING:1,PERSPECTIVE_CAMERA:1},uniforms:{tDiffuse:{value:null},size:{value:new le(512,512)},sampleUvOffsets:{value:[new le(0,0)]},sampleWeights:{value:[1]},tDepth:{value:null},cameraNear:{value:10},cameraFar:{value:1e3},depthCutoff:{value:10}},vertexShader:`
|
||
|
||
#include <common>
|
||
|
||
uniform vec2 size;
|
||
|
||
varying vec2 vUv;
|
||
varying vec2 vInvSize;
|
||
|
||
void main() {
|
||
vUv = uv;
|
||
vInvSize = 1.0 / size;
|
||
|
||
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
|
||
}`,fragmentShader:`
|
||
|
||
#include <common>
|
||
#include <packing>
|
||
|
||
uniform sampler2D tDiffuse;
|
||
uniform sampler2D tDepth;
|
||
|
||
uniform float cameraNear;
|
||
uniform float cameraFar;
|
||
uniform float depthCutoff;
|
||
|
||
uniform vec2 sampleUvOffsets[ KERNEL_RADIUS + 1 ];
|
||
uniform float sampleWeights[ KERNEL_RADIUS + 1 ];
|
||
|
||
varying vec2 vUv;
|
||
varying vec2 vInvSize;
|
||
|
||
float getDepth( const in vec2 screenPosition ) {
|
||
#if DEPTH_PACKING == 1
|
||
return unpackRGBAToDepth( texture2D( tDepth, screenPosition ) );
|
||
#else
|
||
return texture2D( tDepth, screenPosition ).x;
|
||
#endif
|
||
}
|
||
|
||
float getViewZ( const in float depth ) {
|
||
#if PERSPECTIVE_CAMERA == 1
|
||
return perspectiveDepthToViewZ( depth, cameraNear, cameraFar );
|
||
#else
|
||
return orthographicDepthToViewZ( depth, cameraNear, cameraFar );
|
||
#endif
|
||
}
|
||
|
||
void main() {
|
||
float depth = getDepth( vUv );
|
||
if( depth >= ( 1.0 - EPSILON ) ) {
|
||
discard;
|
||
}
|
||
|
||
float centerViewZ = -getViewZ( depth );
|
||
bool rBreak = false, lBreak = false;
|
||
|
||
float weightSum = sampleWeights[0];
|
||
vec4 diffuseSum = texture2D( tDiffuse, vUv ) * weightSum;
|
||
|
||
for( int i = 1; i <= KERNEL_RADIUS; i ++ ) {
|
||
|
||
float sampleWeight = sampleWeights[i];
|
||
vec2 sampleUvOffset = sampleUvOffsets[i] * vInvSize;
|
||
|
||
vec2 sampleUv = vUv + sampleUvOffset;
|
||
float viewZ = -getViewZ( getDepth( sampleUv ) );
|
||
|
||
if( abs( viewZ - centerViewZ ) > depthCutoff ) rBreak = true;
|
||
|
||
if( ! rBreak ) {
|
||
diffuseSum += texture2D( tDiffuse, sampleUv ) * sampleWeight;
|
||
weightSum += sampleWeight;
|
||
}
|
||
|
||
sampleUv = vUv - sampleUvOffset;
|
||
viewZ = -getViewZ( getDepth( sampleUv ) );
|
||
|
||
if( abs( viewZ - centerViewZ ) > depthCutoff ) lBreak = true;
|
||
|
||
if( ! lBreak ) {
|
||
diffuseSum += texture2D( tDiffuse, sampleUv ) * sampleWeight;
|
||
weightSum += sampleWeight;
|
||
}
|
||
|
||
}
|
||
|
||
gl_FragColor = diffuseSum / weightSum;
|
||
}`},GS={createSampleWeights:function(t,r){let e=[];for(let i=0;i<=t;i++)e.push(hNt(i,r));return e},createSampleOffsets:function(t,r){let e=[];for(let i=0;i<=t;i++)e.push(r.clone().multiplyScalar(i));return e},configure:function(t,r,e,i){t.defines.KERNEL_RADIUS=r,t.uniforms.sampleUvOffsets.value=GS.createSampleOffsets(r,i),t.uniforms.sampleWeights.value=GS.createSampleWeights(r,e),t.needsUpdate=!0}};function hNt(t,r){return Math.exp(-(t*t)/(2*(r*r)))/(Math.sqrt(2*Math.PI)*r)}var f3={uniforms:{tDiffuse:{value:null},opacity:{value:1}},vertexShader:`
|
||
|
||
varying vec2 vUv;
|
||
|
||
void main() {
|
||
|
||
vUv = uv;
|
||
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
|
||
|
||
}`,fragmentShader:`
|
||
|
||
uniform float opacity;
|
||
|
||
uniform sampler2D tDiffuse;
|
||
|
||
varying vec2 vUv;
|
||
|
||
#include <packing>
|
||
|
||
void main() {
|
||
|
||
float depth = 1.0 - unpackRGBAToDepth( texture2D( tDiffuse, vUv ) );
|
||
gl_FragColor = vec4( vec3( depth ), opacity );
|
||
|
||
}`};var VS=class extends ss{constructor(r,e,i=!1,n=!1,s=new le(256,256)){super(),this.scene=r,this.camera=e,this.clear=!0,this.needsSwap=!1,this.supportsDepthTextureExtension=i,this.supportsNormalTexture=n,this.originalClearColor=new Ve,this._oldClearColor=new Ve,this.oldClearAlpha=1,this.params={output:0,saoBias:.5,saoIntensity:.18,saoScale:1,saoKernelRadius:100,saoMinResolution:0,saoBlur:!0,saoBlurRadius:8,saoBlurStdDev:4,saoBlurDepthCutoff:.01},this.resolution=new le(s.x,s.y),this.saoRenderTarget=new kr(this.resolution.x,this.resolution.y),this.blurIntermediateRenderTarget=this.saoRenderTarget.clone(),this.beautyRenderTarget=this.saoRenderTarget.clone(),this.normalRenderTarget=new kr(this.resolution.x,this.resolution.y,{minFilter:Di,magFilter:Di}),this.depthRenderTarget=this.normalRenderTarget.clone();let a;this.supportsDepthTextureExtension&&(a=new lf,a.type=_x,this.beautyRenderTarget.depthTexture=a,this.beautyRenderTarget.depthBuffer=!0),this.depthMaterial=new Tp,this.depthMaterial.depthPacking=Gy,this.depthMaterial.blending=Fi,this.normalMaterial=new hf,this.normalMaterial.blending=Fi,this.saoMaterial=new Yt({defines:Object.assign({},kS.defines),fragmentShader:kS.fragmentShader,vertexShader:kS.vertexShader,uniforms:hn.clone(kS.uniforms)}),this.saoMaterial.extensions.derivatives=!0,this.saoMaterial.defines.DEPTH_PACKING=this.supportsDepthTextureExtension?0:1,this.saoMaterial.defines.NORMAL_TEXTURE=this.supportsNormalTexture?1:0,this.saoMaterial.defines.PERSPECTIVE_CAMERA=this.camera.isPerspectiveCamera?1:0,this.saoMaterial.uniforms.tDepth.value=this.supportsDepthTextureExtension?a:this.depthRenderTarget.texture,this.saoMaterial.uniforms.tNormal.value=this.normalRenderTarget.texture,this.saoMaterial.uniforms.size.value.set(this.resolution.x,this.resolution.y),this.saoMaterial.uniforms.cameraInverseProjectionMatrix.value.copy(this.camera.projectionMatrixInverse),this.saoMaterial.uniforms.cameraProjectionMatrix.value=this.camera.projectionMatrix,this.saoMaterial.blending=Fi,this.vBlurMaterial=new Yt({uniforms:hn.clone(hd.uniforms),defines:Object.assign({},hd.defines),vertexShader:hd.vertexShader,fragmentShader:hd.fragmentShader}),this.vBlurMaterial.defines.DEPTH_PACKING=this.supportsDepthTextureExtension?0:1,this.vBlurMaterial.defines.PERSPECTIVE_CAMERA=this.camera.isPerspectiveCamera?1:0,this.vBlurMaterial.uniforms.tDiffuse.value=this.saoRenderTarget.texture,this.vBlurMaterial.uniforms.tDepth.value=this.supportsDepthTextureExtension?a:this.depthRenderTarget.texture,this.vBlurMaterial.uniforms.size.value.set(this.resolution.x,this.resolution.y),this.vBlurMaterial.blending=Fi,this.hBlurMaterial=new Yt({uniforms:hn.clone(hd.uniforms),defines:Object.assign({},hd.defines),vertexShader:hd.vertexShader,fragmentShader:hd.fragmentShader}),this.hBlurMaterial.defines.DEPTH_PACKING=this.supportsDepthTextureExtension?0:1,this.hBlurMaterial.defines.PERSPECTIVE_CAMERA=this.camera.isPerspectiveCamera?1:0,this.hBlurMaterial.uniforms.tDiffuse.value=this.blurIntermediateRenderTarget.texture,this.hBlurMaterial.uniforms.tDepth.value=this.supportsDepthTextureExtension?a:this.depthRenderTarget.texture,this.hBlurMaterial.uniforms.size.value.set(this.resolution.x,this.resolution.y),this.hBlurMaterial.blending=Fi,this.materialCopy=new Yt({uniforms:hn.clone(sa.uniforms),vertexShader:sa.vertexShader,fragmentShader:sa.fragmentShader,blending:Fi}),this.materialCopy.transparent=!0,this.materialCopy.depthTest=!1,this.materialCopy.depthWrite=!1,this.materialCopy.blending=Op,this.materialCopy.blendSrc=Uy,this.materialCopy.blendDst=ff,this.materialCopy.blendEquation=Sa,this.materialCopy.blendSrcAlpha=Hy,this.materialCopy.blendDstAlpha=ff,this.materialCopy.blendEquationAlpha=Sa,this.depthCopy=new Yt({uniforms:hn.clone(f3.uniforms),vertexShader:f3.vertexShader,fragmentShader:f3.fragmentShader,blending:Fi}),this.fsQuad=new na(null)}render(r,e,i){if(this.renderToScreen&&(this.materialCopy.blending=Fi,this.materialCopy.uniforms.tDiffuse.value=i.texture,this.materialCopy.needsUpdate=!0,this.renderPass(r,this.materialCopy,null)),this.params.output===1)return;r.getClearColor(this._oldClearColor),this.oldClearAlpha=r.getClearAlpha();let n=r.autoClear;r.autoClear=!1,r.setRenderTarget(this.depthRenderTarget),r.clear(),this.saoMaterial.uniforms.bias.value=this.params.saoBias,this.saoMaterial.uniforms.intensity.value=this.params.saoIntensity,this.saoMaterial.uniforms.scale.value=this.params.saoScale,this.saoMaterial.uniforms.kernelRadius.value=this.params.saoKernelRadius,this.saoMaterial.uniforms.minResolution.value=this.params.saoMinResolution,this.saoMaterial.uniforms.cameraNear.value=this.camera.near,this.saoMaterial.uniforms.cameraFar.value=this.camera.far;let s=this.params.saoBlurDepthCutoff*(this.camera.far-this.camera.near);this.vBlurMaterial.uniforms.depthCutoff.value=s,this.hBlurMaterial.uniforms.depthCutoff.value=s,this.vBlurMaterial.uniforms.cameraNear.value=this.camera.near,this.vBlurMaterial.uniforms.cameraFar.value=this.camera.far,this.hBlurMaterial.uniforms.cameraNear.value=this.camera.near,this.hBlurMaterial.uniforms.cameraFar.value=this.camera.far,this.params.saoBlurRadius=Math.floor(this.params.saoBlurRadius),(this.prevStdDev!==this.params.saoBlurStdDev||this.prevNumSamples!==this.params.saoBlurRadius)&&(GS.configure(this.vBlurMaterial,this.params.saoBlurRadius,this.params.saoBlurStdDev,new le(0,1)),GS.configure(this.hBlurMaterial,this.params.saoBlurRadius,this.params.saoBlurStdDev,new le(1,0)),this.prevStdDev=this.params.saoBlurStdDev,this.prevNumSamples=this.params.saoBlurRadius),r.setClearColor(0),r.setRenderTarget(this.beautyRenderTarget),r.clear(),r.render(this.scene,this.camera),this.supportsDepthTextureExtension||this.renderOverride(r,this.depthMaterial,this.depthRenderTarget,0,1),this.supportsNormalTexture&&this.renderOverride(r,this.normalMaterial,this.normalRenderTarget,7829503,1),this.renderPass(r,this.saoMaterial,this.saoRenderTarget,16777215,1),this.params.saoBlur&&(this.renderPass(r,this.vBlurMaterial,this.blurIntermediateRenderTarget,16777215,1),this.renderPass(r,this.hBlurMaterial,this.saoRenderTarget,16777215,1));let a=this.materialCopy;this.params.output===3?this.supportsDepthTextureExtension?(this.materialCopy.uniforms.tDiffuse.value=this.beautyRenderTarget.depthTexture,this.materialCopy.needsUpdate=!0):(this.depthCopy.uniforms.tDiffuse.value=this.depthRenderTarget.texture,this.depthCopy.needsUpdate=!0,a=this.depthCopy):this.params.output===4?(this.materialCopy.uniforms.tDiffuse.value=this.normalRenderTarget.texture,this.materialCopy.needsUpdate=!0):(this.materialCopy.uniforms.tDiffuse.value=this.saoRenderTarget.texture,this.materialCopy.needsUpdate=!0),this.params.output===0?a.blending=Op:a.blending=Fi,this.renderPass(r,a,this.renderToScreen?null:i),r.setClearColor(this._oldClearColor,this.oldClearAlpha),r.autoClear=n}renderPass(r,e,i,n,s){r.getClearColor(this.originalClearColor);let a=r.getClearAlpha(),o=r.autoClear;r.setRenderTarget(i),r.autoClear=!1,n!=null&&(r.setClearColor(n),r.setClearAlpha(s||0),r.clear()),this.fsQuad.material=e,this.fsQuad.render(r),r.autoClear=o,r.setClearColor(this.originalClearColor),r.setClearAlpha(a)}renderOverride(r,e,i,n,s){r.getClearColor(this.originalClearColor);let a=r.getClearAlpha(),o=r.autoClear;r.setRenderTarget(i),r.autoClear=!1,n=e.clearColor||n,s=e.clearAlpha||s,n!=null&&(r.setClearColor(n),r.setClearAlpha(s||0),r.clear()),this.scene.overrideMaterial=e,r.render(this.scene,this.camera),this.scene.overrideMaterial=null,r.autoClear=o,r.setClearColor(this.originalClearColor),r.setClearAlpha(a)}setSize(r,e){this.beautyRenderTarget.setSize(r,e),this.saoRenderTarget.setSize(r,e),this.blurIntermediateRenderTarget.setSize(r,e),this.normalRenderTarget.setSize(r,e),this.depthRenderTarget.setSize(r,e),this.saoMaterial.uniforms.size.value.set(r,e),this.saoMaterial.uniforms.cameraInverseProjectionMatrix.value.copy(this.camera.projectionMatrixInverse),this.saoMaterial.uniforms.cameraProjectionMatrix.value=this.camera.projectionMatrix,this.saoMaterial.needsUpdate=!0,this.vBlurMaterial.uniforms.size.value.set(r,e),this.vBlurMaterial.needsUpdate=!0,this.hBlurMaterial.uniforms.size.value.set(r,e),this.hBlurMaterial.needsUpdate=!0}dispose(){this.saoRenderTarget.dispose(),this.blurIntermediateRenderTarget.dispose(),this.beautyRenderTarget.dispose(),this.normalRenderTarget.dispose(),this.depthRenderTarget.dispose(),this.depthMaterial.dispose(),this.normalMaterial.dispose(),this.saoMaterial.dispose(),this.vBlurMaterial.dispose(),this.hBlurMaterial.dispose(),this.materialCopy.dispose(),this.depthCopy.dispose(),this.fsQuad.dispose()}};VS.OUTPUT={Beauty:1,Default:0,SAO:2,Depth:3,Normal:4};var m3=class extends ss{constructor(r,e,i,n){super(),this.scene=r,this.camera=e,this.sampleLevel=4,this.unbiased=!0,this.clearColor=i!==void 0?i:0,this.clearAlpha=n!==void 0?n:0,this._oldClearColor=new Ve;let s=sa;this.copyUniforms=hn.clone(s.uniforms),this.copyMaterial=new Yt({uniforms:this.copyUniforms,vertexShader:s.vertexShader,fragmentShader:s.fragmentShader,transparent:!0,depthTest:!1,depthWrite:!1,blending:Op,blendEquation:Sa,blendDst:Fy,blendDstAlpha:Fy,blendSrc:Ix,blendSrcAlpha:Fy}),this.fsQuad=new na(this.copyMaterial)}dispose(){this.sampleRenderTarget&&(this.sampleRenderTarget.dispose(),this.sampleRenderTarget=null),this.copyMaterial.dispose(),this.fsQuad.dispose()}setSize(r,e){this.sampleRenderTarget&&this.sampleRenderTarget.setSize(r,e)}render(r,e,i){this.sampleRenderTarget||(this.sampleRenderTarget=new kr(i.width,i.height),this.sampleRenderTarget.texture.name="SSAARenderPass.sample");let n=pNt[Math.max(0,Math.min(this.sampleLevel,5))],s=r.autoClear;r.autoClear=!1,r.getClearColor(this._oldClearColor);let a=r.getClearAlpha(),o=1/n.length,l=1/32;this.copyUniforms.tDiffuse.value=this.sampleRenderTarget.texture;let c={fullWidth:i.width,fullHeight:i.height,offsetX:0,offsetY:0,width:i.width,height:i.height},u=Object.assign({},this.camera.view);u.enabled&&Object.assign(c,u);for(let h=0;h<n.length;h++){let p=n[h];this.camera.setViewOffset&&this.camera.setViewOffset(c.fullWidth,c.fullHeight,c.offsetX+p[0]*.0625,c.offsetY+p[1]*.0625,c.width,c.height);let d=o;if(this.unbiased){let f=-.5+(h+.5)/n.length;d+=l*f}this.copyUniforms.opacity.value=d,r.setClearColor(this.clearColor,this.clearAlpha),r.setRenderTarget(this.sampleRenderTarget),r.clear(),r.render(this.scene,this.camera),r.setRenderTarget(this.renderToScreen?null:e),h===0&&(r.setClearColor(0,0),r.clear()),this.fsQuad.render(r)}this.camera.setViewOffset&&u.enabled?this.camera.setViewOffset(u.fullWidth,u.fullHeight,u.offsetX,u.offsetY,u.width,u.height):this.camera.clearViewOffset&&this.camera.clearViewOffset(),r.autoClear=s,r.setClearColor(this._oldClearColor,a)}},pNt=[[[0,0]],[[4,4],[-4,-4]],[[-2,-6],[6,-2],[-6,2],[2,6]],[[1,-3],[-1,3],[5,1],[-3,-5],[-5,5],[-7,-1],[3,7],[7,-7]],[[1,1],[-1,-3],[-3,2],[4,-1],[-5,-2],[2,5],[5,3],[3,-5],[-2,6],[0,-7],[-4,-6],[-6,4],[-8,0],[7,-4],[6,7],[-7,-8]],[[-4,-7],[-7,-5],[-3,-5],[-5,-4],[-1,-4],[-2,-2],[-6,-1],[-4,0],[-7,1],[-1,2],[-6,3],[-3,3],[-7,6],[-3,6],[-5,7],[-1,7],[5,-7],[1,-6],[6,-5],[4,-4],[2,-3],[7,-2],[1,-1],[4,-1],[2,1],[6,2],[0,4],[4,4],[2,5],[7,5],[5,6],[3,7]]];var g3=class{constructor(r=Math){this.grad3=[[1,1,0],[-1,1,0],[1,-1,0],[-1,-1,0],[1,0,1],[-1,0,1],[1,0,-1],[-1,0,-1],[0,1,1],[0,-1,1],[0,1,-1],[0,-1,-1]],this.grad4=[[0,1,1,1],[0,1,1,-1],[0,1,-1,1],[0,1,-1,-1],[0,-1,1,1],[0,-1,1,-1],[0,-1,-1,1],[0,-1,-1,-1],[1,0,1,1],[1,0,1,-1],[1,0,-1,1],[1,0,-1,-1],[-1,0,1,1],[-1,0,1,-1],[-1,0,-1,1],[-1,0,-1,-1],[1,1,0,1],[1,1,0,-1],[1,-1,0,1],[1,-1,0,-1],[-1,1,0,1],[-1,1,0,-1],[-1,-1,0,1],[-1,-1,0,-1],[1,1,1,0],[1,1,-1,0],[1,-1,1,0],[1,-1,-1,0],[-1,1,1,0],[-1,1,-1,0],[-1,-1,1,0],[-1,-1,-1,0]],this.p=[];for(let e=0;e<256;e++)this.p[e]=Math.floor(r.random()*256);this.perm=[];for(let e=0;e<512;e++)this.perm[e]=this.p[e&255];this.simplex=[[0,1,2,3],[0,1,3,2],[0,0,0,0],[0,2,3,1],[0,0,0,0],[0,0,0,0],[0,0,0,0],[1,2,3,0],[0,2,1,3],[0,0,0,0],[0,3,1,2],[0,3,2,1],[0,0,0,0],[0,0,0,0],[0,0,0,0],[1,3,2,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[1,2,0,3],[0,0,0,0],[1,3,0,2],[0,0,0,0],[0,0,0,0],[0,0,0,0],[2,3,0,1],[2,3,1,0],[1,0,2,3],[1,0,3,2],[0,0,0,0],[0,0,0,0],[0,0,0,0],[2,0,3,1],[0,0,0,0],[2,1,3,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[2,0,1,3],[0,0,0,0],[0,0,0,0],[0,0,0,0],[3,0,1,2],[3,0,2,1],[0,0,0,0],[3,1,2,0],[2,1,0,3],[0,0,0,0],[0,0,0,0],[0,0,0,0],[3,1,0,2],[0,0,0,0],[3,2,0,1],[3,2,1,0]]}dot(r,e,i){return r[0]*e+r[1]*i}dot3(r,e,i,n){return r[0]*e+r[1]*i+r[2]*n}dot4(r,e,i,n,s){return r[0]*e+r[1]*i+r[2]*n+r[3]*s}noise(r,e){let i,n,s,a=.5*(Math.sqrt(3)-1),o=(r+e)*a,l=Math.floor(r+o),c=Math.floor(e+o),u=(3-Math.sqrt(3))/6,h=(l+c)*u,p=l-h,d=c-h,f=r-p,m=e-d,g,y;f>m?(g=1,y=0):(g=0,y=1);let E=f-g+u,b=m-y+u,x=f-1+2*u,S=m-1+2*u,D=l&255,P=c&255,_=this.perm[D+this.perm[P]]%12,w=this.perm[D+g+this.perm[P+y]]%12,F=this.perm[D+1+this.perm[P+1]]%12,X=.5-f*f-m*m;X<0?i=0:(X*=X,i=X*X*this.dot(this.grad3[_],f,m));let H=.5-E*E-b*b;H<0?n=0:(H*=H,n=H*H*this.dot(this.grad3[w],E,b));let he=.5-x*x-S*S;return he<0?s=0:(he*=he,s=he*he*this.dot(this.grad3[F],x,S)),70*(i+n+s)}noise3d(r,e,i){let n,s,a,o,l=.3333333333333333,c=(r+e+i)*l,u=Math.floor(r+c),h=Math.floor(e+c),p=Math.floor(i+c),d=1/6,f=(u+h+p)*d,m=u-f,g=h-f,y=p-f,E=r-m,b=e-g,x=i-y,S,D,P,_,w,F;E>=b?b>=x?(S=1,D=0,P=0,_=1,w=1,F=0):E>=x?(S=1,D=0,P=0,_=1,w=0,F=1):(S=0,D=0,P=1,_=1,w=0,F=1):b<x?(S=0,D=0,P=1,_=0,w=1,F=1):E<x?(S=0,D=1,P=0,_=0,w=1,F=1):(S=0,D=1,P=0,_=1,w=1,F=0);let X=E-S+d,H=b-D+d,he=x-P+d,C=E-_+2*d,N=b-w+2*d,k=x-F+2*d,G=E-1+3*d,U=b-1+3*d,j=x-1+3*d,ee=u&255,ae=h&255,se=p&255,ue=this.perm[ee+this.perm[ae+this.perm[se]]]%12,ve=this.perm[ee+S+this.perm[ae+D+this.perm[se+P]]]%12,be=this.perm[ee+_+this.perm[ae+w+this.perm[se+F]]]%12,de=this.perm[ee+1+this.perm[ae+1+this.perm[se+1]]]%12,we=.6-E*E-b*b-x*x;we<0?n=0:(we*=we,n=we*we*this.dot3(this.grad3[ue],E,b,x));let Fe=.6-X*X-H*H-he*he;Fe<0?s=0:(Fe*=Fe,s=Fe*Fe*this.dot3(this.grad3[ve],X,H,he));let je=.6-C*C-N*N-k*k;je<0?a=0:(je*=je,a=je*je*this.dot3(this.grad3[be],C,N,k));let Oe=.6-G*G-U*U-j*j;return Oe<0?o=0:(Oe*=Oe,o=Oe*Oe*this.dot3(this.grad3[de],G,U,j)),32*(n+s+a+o)}noise4d(r,e,i,n){let s=this.grad4,a=this.simplex,o=this.perm,l=(Math.sqrt(5)-1)/4,c=(5-Math.sqrt(5))/20,u,h,p,d,f,m=(r+e+i+n)*l,g=Math.floor(r+m),y=Math.floor(e+m),E=Math.floor(i+m),b=Math.floor(n+m),x=(g+y+E+b)*c,S=g-x,D=y-x,P=E-x,_=b-x,w=r-S,F=e-D,X=i-P,H=n-_,he=w>F?32:0,C=w>X?16:0,N=F>X?8:0,k=w>H?4:0,G=F>H?2:0,U=X>H?1:0,j=he+C+N+k+G+U,ee=a[j][0]>=3?1:0,ae=a[j][1]>=3?1:0,se=a[j][2]>=3?1:0,ue=a[j][3]>=3?1:0,ve=a[j][0]>=2?1:0,be=a[j][1]>=2?1:0,de=a[j][2]>=2?1:0,we=a[j][3]>=2?1:0,Fe=a[j][0]>=1?1:0,je=a[j][1]>=1?1:0,Oe=a[j][2]>=1?1:0,dt=a[j][3]>=1?1:0,Be=w-ee+c,ke=F-ae+c,nt=X-se+c,bt=H-ue+c,mt=w-ve+2*c,_e=F-be+2*c,J=X-de+2*c,$=H-we+2*c,re=w-Fe+3*c,me=F-je+3*c,z=X-Oe+3*c,Y=H-dt+3*c,xe=w-1+4*c,Ce=F-1+4*c,Ge=X-1+4*c,Ze=H-1+4*c,gt=g&255,ye=y&255,Re=E&255,ut=b&255,vt=o[gt+o[ye+o[Re+o[ut]]]]%32,Et=o[gt+ee+o[ye+ae+o[Re+se+o[ut+ue]]]]%32,Ct=o[gt+ve+o[ye+be+o[Re+de+o[ut+we]]]]%32,Dt=o[gt+Fe+o[ye+je+o[Re+Oe+o[ut+dt]]]]%32,cr=o[gt+1+o[ye+1+o[Re+1+o[ut+1]]]]%32,Xt=.6-w*w-F*F-X*X-H*H;Xt<0?u=0:(Xt*=Xt,u=Xt*Xt*this.dot4(s[vt],w,F,X,H));let gr=.6-Be*Be-ke*ke-nt*nt-bt*bt;gr<0?h=0:(gr*=gr,h=gr*gr*this.dot4(s[Et],Be,ke,nt,bt));let Ae=.6-mt*mt-_e*_e-J*J-$*$;Ae<0?p=0:(Ae*=Ae,p=Ae*Ae*this.dot4(s[Ct],mt,_e,J,$));let Xe=.6-re*re-me*me-z*z-Y*Y;Xe<0?d=0:(Xe*=Xe,d=Xe*Xe*this.dot4(s[Dt],re,me,z,Y));let lt=.6-xe*xe-Ce*Ce-Ge*Ge-Ze*Ze;return lt<0?f=0:(lt*=lt,f=lt*lt*this.dot4(s[cr],xe,Ce,Ge,Ze)),27*(u+h+p+d+f)}};var zS={defines:{PERSPECTIVE_CAMERA:1,KERNEL_SIZE:32},uniforms:{tDiffuse:{value:null},tNormal:{value:null},tDepth:{value:null},tNoise:{value:null},kernel:{value:null},cameraNear:{value:null},cameraFar:{value:null},resolution:{value:new le},cameraProjectionMatrix:{value:new Ue},cameraInverseProjectionMatrix:{value:new Ue},kernelRadius:{value:8},minDistance:{value:.005},maxDistance:{value:.05}},vertexShader:`
|
||
|
||
varying vec2 vUv;
|
||
|
||
void main() {
|
||
|
||
vUv = uv;
|
||
|
||
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
|
||
|
||
}`,fragmentShader:`
|
||
|
||
uniform sampler2D tDiffuse;
|
||
uniform sampler2D tNormal;
|
||
uniform sampler2D tDepth;
|
||
uniform sampler2D tNoise;
|
||
|
||
uniform vec3 kernel[ KERNEL_SIZE ];
|
||
|
||
uniform vec2 resolution;
|
||
|
||
uniform float cameraNear;
|
||
uniform float cameraFar;
|
||
uniform mat4 cameraProjectionMatrix;
|
||
uniform mat4 cameraInverseProjectionMatrix;
|
||
|
||
uniform float kernelRadius;
|
||
uniform float minDistance; // avoid artifacts caused by neighbour fragments with minimal depth difference
|
||
uniform float maxDistance; // avoid the influence of fragments which are too far away
|
||
|
||
varying vec2 vUv;
|
||
|
||
#include <packing>
|
||
|
||
float getDepth( const in vec2 screenPosition ) {
|
||
|
||
return texture2D( tDepth, screenPosition ).x;
|
||
|
||
}
|
||
|
||
float getLinearDepth( const in vec2 screenPosition ) {
|
||
|
||
#if PERSPECTIVE_CAMERA == 1
|
||
|
||
float fragCoordZ = texture2D( tDepth, screenPosition ).x;
|
||
float viewZ = perspectiveDepthToViewZ( fragCoordZ, cameraNear, cameraFar );
|
||
return viewZToOrthographicDepth( viewZ, cameraNear, cameraFar );
|
||
|
||
#else
|
||
|
||
return texture2D( tDepth, screenPosition ).x;
|
||
|
||
#endif
|
||
|
||
}
|
||
|
||
float getViewZ( const in float depth ) {
|
||
|
||
#if PERSPECTIVE_CAMERA == 1
|
||
|
||
return perspectiveDepthToViewZ( depth, cameraNear, cameraFar );
|
||
|
||
#else
|
||
|
||
return orthographicDepthToViewZ( depth, cameraNear, cameraFar );
|
||
|
||
#endif
|
||
|
||
}
|
||
|
||
vec3 getViewPosition( const in vec2 screenPosition, const in float depth, const in float viewZ ) {
|
||
|
||
float clipW = cameraProjectionMatrix[2][3] * viewZ + cameraProjectionMatrix[3][3];
|
||
|
||
vec4 clipPosition = vec4( ( vec3( screenPosition, depth ) - 0.5 ) * 2.0, 1.0 );
|
||
|
||
clipPosition *= clipW; // unprojection.
|
||
|
||
return ( cameraInverseProjectionMatrix * clipPosition ).xyz;
|
||
|
||
}
|
||
|
||
vec3 getViewNormal( const in vec2 screenPosition ) {
|
||
|
||
return unpackRGBToNormal( texture2D( tNormal, screenPosition ).xyz );
|
||
|
||
}
|
||
|
||
void main() {
|
||
|
||
float depth = getDepth( vUv );
|
||
float viewZ = getViewZ( depth );
|
||
|
||
vec3 viewPosition = getViewPosition( vUv, depth, viewZ );
|
||
vec3 viewNormal = getViewNormal( vUv );
|
||
|
||
vec2 noiseScale = vec2( resolution.x / 4.0, resolution.y / 4.0 );
|
||
vec3 random = vec3( texture2D( tNoise, vUv * noiseScale ).r );
|
||
|
||
// compute matrix used to reorient a kernel vector
|
||
|
||
vec3 tangent = normalize( random - viewNormal * dot( random, viewNormal ) );
|
||
vec3 bitangent = cross( viewNormal, tangent );
|
||
mat3 kernelMatrix = mat3( tangent, bitangent, viewNormal );
|
||
|
||
float occlusion = 0.0;
|
||
|
||
for ( int i = 0; i < KERNEL_SIZE; i ++ ) {
|
||
|
||
vec3 sampleVector = kernelMatrix * kernel[ i ]; // reorient sample vector in view space
|
||
vec3 samplePoint = viewPosition + ( sampleVector * kernelRadius ); // calculate sample point
|
||
|
||
vec4 samplePointNDC = cameraProjectionMatrix * vec4( samplePoint, 1.0 ); // project point and calculate NDC
|
||
samplePointNDC /= samplePointNDC.w;
|
||
|
||
vec2 samplePointUv = samplePointNDC.xy * 0.5 + 0.5; // compute uv coordinates
|
||
|
||
float realDepth = getLinearDepth( samplePointUv ); // get linear depth from depth texture
|
||
float sampleDepth = viewZToOrthographicDepth( samplePoint.z, cameraNear, cameraFar ); // compute linear depth of the sample view Z value
|
||
float delta = sampleDepth - realDepth;
|
||
|
||
if ( delta > minDistance && delta < maxDistance ) { // if fragment is before sample point, increase occlusion
|
||
|
||
occlusion += 1.0;
|
||
|
||
}
|
||
|
||
}
|
||
|
||
occlusion = clamp( occlusion / float( KERNEL_SIZE ), 0.0, 1.0 );
|
||
|
||
gl_FragColor = vec4( vec3( 1.0 - occlusion ), 1.0 );
|
||
|
||
}`},jS={defines:{PERSPECTIVE_CAMERA:1},uniforms:{tDepth:{value:null},cameraNear:{value:null},cameraFar:{value:null}},vertexShader:`varying vec2 vUv;
|
||
|
||
void main() {
|
||
|
||
vUv = uv;
|
||
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
|
||
|
||
}`,fragmentShader:`uniform sampler2D tDepth;
|
||
|
||
uniform float cameraNear;
|
||
uniform float cameraFar;
|
||
|
||
varying vec2 vUv;
|
||
|
||
#include <packing>
|
||
|
||
float getLinearDepth( const in vec2 screenPosition ) {
|
||
|
||
#if PERSPECTIVE_CAMERA == 1
|
||
|
||
float fragCoordZ = texture2D( tDepth, screenPosition ).x;
|
||
float viewZ = perspectiveDepthToViewZ( fragCoordZ, cameraNear, cameraFar );
|
||
return viewZToOrthographicDepth( viewZ, cameraNear, cameraFar );
|
||
|
||
#else
|
||
|
||
return texture2D( tDepth, screenPosition ).x;
|
||
|
||
#endif
|
||
|
||
}
|
||
|
||
void main() {
|
||
|
||
float depth = getLinearDepth( vUv );
|
||
gl_FragColor = vec4( vec3( 1.0 - depth ), 1.0 );
|
||
|
||
}`},WS={uniforms:{tDiffuse:{value:null},resolution:{value:new le}},vertexShader:`varying vec2 vUv;
|
||
|
||
void main() {
|
||
|
||
vUv = uv;
|
||
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
|
||
|
||
}`,fragmentShader:`uniform sampler2D tDiffuse;
|
||
|
||
uniform vec2 resolution;
|
||
|
||
varying vec2 vUv;
|
||
|
||
void main() {
|
||
|
||
vec2 texelSize = ( 1.0 / resolution );
|
||
float result = 0.0;
|
||
|
||
for ( int i = - 2; i <= 2; i ++ ) {
|
||
|
||
for ( int j = - 2; j <= 2; j ++ ) {
|
||
|
||
vec2 offset = ( vec2( float( i ), float( j ) ) ) * texelSize;
|
||
result += texture2D( tDiffuse, vUv + offset ).r;
|
||
|
||
}
|
||
|
||
}
|
||
|
||
gl_FragColor = vec4( vec3( result / ( 5.0 * 5.0 ) ), 1.0 );
|
||
|
||
}`};var rc=class extends ss{constructor(r,e,i,n){super(),this.width=i!==void 0?i:512,this.height=n!==void 0?n:512,this.clear=!0,this.camera=e,this.scene=r,this.kernelRadius=8,this.kernelSize=32,this.kernel=[],this.noiseTexture=null,this.output=0,this.minDistance=.005,this.maxDistance=.1,this._visibilityCache=new Map,this.generateSampleKernel(),this.generateRandomKernelRotations();let s=new lf;s.format=gp,s.type=dp,this.beautyRenderTarget=new kr(this.width,this.height),this.normalRenderTarget=new kr(this.width,this.height,{minFilter:Di,magFilter:Di,depthTexture:s}),this.ssaoRenderTarget=new kr(this.width,this.height),this.blurRenderTarget=this.ssaoRenderTarget.clone(),this.ssaoMaterial=new Yt({defines:Object.assign({},zS.defines),uniforms:hn.clone(zS.uniforms),vertexShader:zS.vertexShader,fragmentShader:zS.fragmentShader,blending:Fi}),this.ssaoMaterial.uniforms.tDiffuse.value=this.beautyRenderTarget.texture,this.ssaoMaterial.uniforms.tNormal.value=this.normalRenderTarget.texture,this.ssaoMaterial.uniforms.tDepth.value=this.normalRenderTarget.depthTexture,this.ssaoMaterial.uniforms.tNoise.value=this.noiseTexture,this.ssaoMaterial.uniforms.kernel.value=this.kernel,this.ssaoMaterial.uniforms.cameraNear.value=this.camera.near,this.ssaoMaterial.uniforms.cameraFar.value=this.camera.far,this.ssaoMaterial.uniforms.resolution.value.set(this.width,this.height),this.ssaoMaterial.uniforms.cameraProjectionMatrix.value.copy(this.camera.projectionMatrix),this.ssaoMaterial.uniforms.cameraInverseProjectionMatrix.value.copy(this.camera.projectionMatrixInverse),this.normalMaterial=new hf,this.normalMaterial.blending=Fi,this.blurMaterial=new Yt({defines:Object.assign({},WS.defines),uniforms:hn.clone(WS.uniforms),vertexShader:WS.vertexShader,fragmentShader:WS.fragmentShader}),this.blurMaterial.uniforms.tDiffuse.value=this.ssaoRenderTarget.texture,this.blurMaterial.uniforms.resolution.value.set(this.width,this.height),this.depthRenderMaterial=new Yt({defines:Object.assign({},jS.defines),uniforms:hn.clone(jS.uniforms),vertexShader:jS.vertexShader,fragmentShader:jS.fragmentShader,blending:Fi}),this.depthRenderMaterial.uniforms.tDepth.value=this.normalRenderTarget.depthTexture,this.depthRenderMaterial.uniforms.cameraNear.value=this.camera.near,this.depthRenderMaterial.uniforms.cameraFar.value=this.camera.far,this.copyMaterial=new Yt({uniforms:hn.clone(sa.uniforms),vertexShader:sa.vertexShader,fragmentShader:sa.fragmentShader,transparent:!0,depthTest:!1,depthWrite:!1,blendSrc:Uy,blendDst:ff,blendEquation:Sa,blendSrcAlpha:Hy,blendDstAlpha:ff,blendEquationAlpha:Sa}),this.fsQuad=new na(null),this.originalClearColor=new Ve}dispose(){this.beautyRenderTarget.dispose(),this.normalRenderTarget.dispose(),this.ssaoRenderTarget.dispose(),this.blurRenderTarget.dispose(),this.normalMaterial.dispose(),this.blurMaterial.dispose(),this.copyMaterial.dispose(),this.depthRenderMaterial.dispose(),this.fsQuad.dispose()}render(r,e){switch(r.capabilities.isWebGL2===!1&&(this.noiseTexture.format=YD),r.setRenderTarget(this.beautyRenderTarget),r.clear(),r.render(this.scene,this.camera),this.overrideVisibility(),this.renderOverride(r,this.normalMaterial,this.normalRenderTarget,7829503,1),this.restoreVisibility(),this.ssaoMaterial.uniforms.kernelRadius.value=this.kernelRadius,this.ssaoMaterial.uniforms.minDistance.value=this.minDistance,this.ssaoMaterial.uniforms.maxDistance.value=this.maxDistance,this.renderPass(r,this.ssaoMaterial,this.ssaoRenderTarget),this.renderPass(r,this.blurMaterial,this.blurRenderTarget),this.output){case rc.OUTPUT.SSAO:this.copyMaterial.uniforms.tDiffuse.value=this.ssaoRenderTarget.texture,this.copyMaterial.blending=Fi,this.renderPass(r,this.copyMaterial,this.renderToScreen?null:e);break;case rc.OUTPUT.Blur:this.copyMaterial.uniforms.tDiffuse.value=this.blurRenderTarget.texture,this.copyMaterial.blending=Fi,this.renderPass(r,this.copyMaterial,this.renderToScreen?null:e);break;case rc.OUTPUT.Beauty:this.copyMaterial.uniforms.tDiffuse.value=this.beautyRenderTarget.texture,this.copyMaterial.blending=Fi,this.renderPass(r,this.copyMaterial,this.renderToScreen?null:e);break;case rc.OUTPUT.Depth:this.renderPass(r,this.depthRenderMaterial,this.renderToScreen?null:e);break;case rc.OUTPUT.Normal:this.copyMaterial.uniforms.tDiffuse.value=this.normalRenderTarget.texture,this.copyMaterial.blending=Fi,this.renderPass(r,this.copyMaterial,this.renderToScreen?null:e);break;case rc.OUTPUT.Default:this.copyMaterial.uniforms.tDiffuse.value=this.beautyRenderTarget.texture,this.copyMaterial.blending=Fi,this.renderPass(r,this.copyMaterial,this.renderToScreen?null:e),this.copyMaterial.uniforms.tDiffuse.value=this.blurRenderTarget.texture,this.copyMaterial.blending=Op,this.renderPass(r,this.copyMaterial,this.renderToScreen?null:e);break;default:console.warn("THREE.SSAOPass: Unknown output type.")}}renderPass(r,e,i,n,s){r.getClearColor(this.originalClearColor);let a=r.getClearAlpha(),o=r.autoClear;r.setRenderTarget(i),r.autoClear=!1,n!=null&&(r.setClearColor(n),r.setClearAlpha(s||0),r.clear()),this.fsQuad.material=e,this.fsQuad.render(r),r.autoClear=o,r.setClearColor(this.originalClearColor),r.setClearAlpha(a)}renderOverride(r,e,i,n,s){r.getClearColor(this.originalClearColor);let a=r.getClearAlpha(),o=r.autoClear;r.setRenderTarget(i),r.autoClear=!1,n=e.clearColor||n,s=e.clearAlpha||s,n!=null&&(r.setClearColor(n),r.setClearAlpha(s||0),r.clear()),this.scene.overrideMaterial=e,r.render(this.scene,this.camera),this.scene.overrideMaterial=null,r.autoClear=o,r.setClearColor(this.originalClearColor),r.setClearAlpha(a)}setSize(r,e){this.width=r,this.height=e,this.beautyRenderTarget.setSize(r,e),this.ssaoRenderTarget.setSize(r,e),this.normalRenderTarget.setSize(r,e),this.blurRenderTarget.setSize(r,e),this.ssaoMaterial.uniforms.resolution.value.set(r,e),this.ssaoMaterial.uniforms.cameraProjectionMatrix.value.copy(this.camera.projectionMatrix),this.ssaoMaterial.uniforms.cameraInverseProjectionMatrix.value.copy(this.camera.projectionMatrixInverse),this.blurMaterial.uniforms.resolution.value.set(r,e)}generateSampleKernel(){let r=this.kernelSize,e=this.kernel;for(let i=0;i<r;i++){let n=new A;n.x=Math.random()*2-1,n.y=Math.random()*2-1,n.z=Math.random(),n.normalize();let s=i/r;s=wr.lerp(.1,1,s*s),n.multiplyScalar(s),e.push(n)}}generateRandomKernelRotations(){let i=new g3,n=4*4,s=new Float32Array(n);for(let a=0;a<n;a++){let o=Math.random()*2-1,l=Math.random()*2-1,c=0;s[a]=i.noise3d(o,l,c)}this.noiseTexture=new _l(s,4,4,XD,_a),this.noiseTexture.wrapS=gn,this.noiseTexture.wrapT=gn,this.noiseTexture.needsUpdate=!0}overrideVisibility(){let r=this.scene,e=this._visibilityCache;r.traverse(function(i){e.set(i,i.visible),(i.isPoints||i.isLine)&&(i.visible=!1)})}restoreVisibility(){let r=this.scene,e=this._visibilityCache;r.traverse(function(i){let n=e.get(i);i.visible=n}),e.clear()}};rc.OUTPUT={Default:0,SSAO:1,Blur:2,Beauty:3,Depth:4,Normal:5};var HDe={shaderID:"luminosityHighPass",uniforms:{tDiffuse:{value:null},luminosityThreshold:{value:1},smoothWidth:{value:1},defaultColor:{value:new Ve(0)},defaultOpacity:{value:0}},vertexShader:`
|
||
|
||
varying vec2 vUv;
|
||
|
||
void main() {
|
||
|
||
vUv = uv;
|
||
|
||
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
|
||
|
||
}`,fragmentShader:`
|
||
|
||
uniform sampler2D tDiffuse;
|
||
uniform vec3 defaultColor;
|
||
uniform float defaultOpacity;
|
||
uniform float luminosityThreshold;
|
||
uniform float smoothWidth;
|
||
|
||
varying vec2 vUv;
|
||
|
||
void main() {
|
||
|
||
vec4 texel = texture2D( tDiffuse, vUv );
|
||
|
||
vec3 luma = vec3( 0.299, 0.587, 0.114 );
|
||
|
||
float v = dot( texel.xyz, luma );
|
||
|
||
vec4 outputColor = vec4( defaultColor.rgb, defaultOpacity );
|
||
|
||
float alpha = smoothstep( luminosityThreshold, luminosityThreshold + smoothWidth, v );
|
||
|
||
gl_FragColor = mix( outputColor, texel, alpha );
|
||
|
||
}`};var pd=class extends ss{constructor(r,e,i,n){super(),this.strength=e!==void 0?e:1,this.radius=i,this.threshold=n,this.resolution=r!==void 0?new le(r.x,r.y):new le(256,256),this.clearColor=new Ve(0,0,0),this.renderTargetsHorizontal=[],this.renderTargetsVertical=[],this.nMips=5;let s=Math.round(this.resolution.x/2),a=Math.round(this.resolution.y/2);this.renderTargetBright=new kr(s,a),this.renderTargetBright.texture.name="UnrealBloomPass.bright",this.renderTargetBright.texture.generateMipmaps=!1;for(let h=0;h<this.nMips;h++){let p=new kr(s,a);p.texture.name="UnrealBloomPass.h"+h,p.texture.generateMipmaps=!1,this.renderTargetsHorizontal.push(p);let d=new kr(s,a);d.texture.name="UnrealBloomPass.v"+h,d.texture.generateMipmaps=!1,this.renderTargetsVertical.push(d),s=Math.round(s/2),a=Math.round(a/2)}let o=HDe;this.highPassUniforms=hn.clone(o.uniforms),this.highPassUniforms.luminosityThreshold.value=n,this.highPassUniforms.smoothWidth.value=.01,this.materialHighPassFilter=new Yt({uniforms:this.highPassUniforms,vertexShader:o.vertexShader,fragmentShader:o.fragmentShader,defines:{}}),this.separableBlurMaterials=[];let l=[3,5,7,9,11];s=Math.round(this.resolution.x/2),a=Math.round(this.resolution.y/2);for(let h=0;h<this.nMips;h++)this.separableBlurMaterials.push(this.getSeperableBlurMaterial(l[h])),this.separableBlurMaterials[h].uniforms.texSize.value=new le(s,a),s=Math.round(s/2),a=Math.round(a/2);this.compositeMaterial=this.getCompositeMaterial(this.nMips),this.compositeMaterial.uniforms.blurTexture1.value=this.renderTargetsVertical[0].texture,this.compositeMaterial.uniforms.blurTexture2.value=this.renderTargetsVertical[1].texture,this.compositeMaterial.uniforms.blurTexture3.value=this.renderTargetsVertical[2].texture,this.compositeMaterial.uniforms.blurTexture4.value=this.renderTargetsVertical[3].texture,this.compositeMaterial.uniforms.blurTexture5.value=this.renderTargetsVertical[4].texture,this.compositeMaterial.uniforms.bloomStrength.value=e,this.compositeMaterial.uniforms.bloomRadius.value=.1,this.compositeMaterial.needsUpdate=!0;let c=[1,.8,.6,.4,.2];this.compositeMaterial.uniforms.bloomFactors.value=c,this.bloomTintColors=[new A(1,1,1),new A(1,1,1),new A(1,1,1),new A(1,1,1),new A(1,1,1)],this.compositeMaterial.uniforms.bloomTintColors.value=this.bloomTintColors;let u=sa;this.copyUniforms=hn.clone(u.uniforms),this.copyUniforms.opacity.value=1,this.materialCopy=new Yt({uniforms:this.copyUniforms,vertexShader:u.vertexShader,fragmentShader:u.fragmentShader,blending:fp,depthTest:!1,depthWrite:!1,transparent:!0}),this.enabled=!0,this.needsSwap=!1,this._oldClearColor=new Ve,this.oldClearAlpha=1,this.basic=new or,this.fsQuad=new na(null)}dispose(){for(let r=0;r<this.renderTargetsHorizontal.length;r++)this.renderTargetsHorizontal[r].dispose();for(let r=0;r<this.renderTargetsVertical.length;r++)this.renderTargetsVertical[r].dispose();this.renderTargetBright.dispose();for(let r=0;r<this.separableBlurMaterials.length;r++)this.separableBlurMaterials[r].dispose();this.compositeMaterial.dispose(),this.materialCopy.dispose(),this.basic.dispose(),this.fsQuad.dispose()}setSize(r,e){let i=Math.round(r/2),n=Math.round(e/2);this.renderTargetBright.setSize(i,n);for(let s=0;s<this.nMips;s++)this.renderTargetsHorizontal[s].setSize(i,n),this.renderTargetsVertical[s].setSize(i,n),this.separableBlurMaterials[s].uniforms.texSize.value=new le(i,n),i=Math.round(i/2),n=Math.round(n/2)}render(r,e,i,n,s){r.getClearColor(this._oldClearColor),this.oldClearAlpha=r.getClearAlpha();let a=r.autoClear;r.autoClear=!1,r.setClearColor(this.clearColor,0),s&&r.state.buffers.stencil.setTest(!1),this.renderToScreen&&(this.fsQuad.material=this.basic,this.basic.map=i.texture,r.setRenderTarget(null),r.clear(),this.fsQuad.render(r)),this.highPassUniforms.tDiffuse.value=i.texture,this.highPassUniforms.luminosityThreshold.value=this.threshold,this.fsQuad.material=this.materialHighPassFilter,r.setRenderTarget(this.renderTargetBright),r.clear(),this.fsQuad.render(r);let o=this.renderTargetBright;for(let l=0;l<this.nMips;l++)this.fsQuad.material=this.separableBlurMaterials[l],this.separableBlurMaterials[l].uniforms.colorTexture.value=o.texture,this.separableBlurMaterials[l].uniforms.direction.value=pd.BlurDirectionX,r.setRenderTarget(this.renderTargetsHorizontal[l]),r.clear(),this.fsQuad.render(r),this.separableBlurMaterials[l].uniforms.colorTexture.value=this.renderTargetsHorizontal[l].texture,this.separableBlurMaterials[l].uniforms.direction.value=pd.BlurDirectionY,r.setRenderTarget(this.renderTargetsVertical[l]),r.clear(),this.fsQuad.render(r),o=this.renderTargetsVertical[l];this.fsQuad.material=this.compositeMaterial,this.compositeMaterial.uniforms.bloomStrength.value=this.strength,this.compositeMaterial.uniforms.bloomRadius.value=this.radius,this.compositeMaterial.uniforms.bloomTintColors.value=this.bloomTintColors,r.setRenderTarget(this.renderTargetsHorizontal[0]),r.clear(),this.fsQuad.render(r),this.fsQuad.material=this.materialCopy,this.copyUniforms.tDiffuse.value=this.renderTargetsHorizontal[0].texture,s&&r.state.buffers.stencil.setTest(!0),this.renderToScreen?(r.setRenderTarget(null),this.fsQuad.render(r)):(r.setRenderTarget(i),this.fsQuad.render(r)),r.setClearColor(this._oldClearColor,this.oldClearAlpha),r.autoClear=a}getSeperableBlurMaterial(r){return new Yt({defines:{KERNEL_RADIUS:r,SIGMA:r},uniforms:{colorTexture:{value:null},texSize:{value:new le(.5,.5)},direction:{value:new le(.5,.5)}},vertexShader:`varying vec2 vUv;
|
||
void main() {
|
||
vUv = uv;
|
||
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
|
||
}`,fragmentShader:`#include <common>
|
||
varying vec2 vUv;
|
||
uniform sampler2D colorTexture;
|
||
uniform vec2 texSize;
|
||
uniform vec2 direction;
|
||
|
||
float gaussianPdf(in float x, in float sigma) {
|
||
return 0.39894 * exp( -0.5 * x * x/( sigma * sigma))/sigma;
|
||
}
|
||
void main() {
|
||
vec2 invSize = 1.0 / texSize;
|
||
float fSigma = float(SIGMA);
|
||
float weightSum = gaussianPdf(0.0, fSigma);
|
||
vec3 diffuseSum = texture2D( colorTexture, vUv).rgb * weightSum;
|
||
for( int i = 1; i < KERNEL_RADIUS; i ++ ) {
|
||
float x = float(i);
|
||
float w = gaussianPdf(x, fSigma);
|
||
vec2 uvOffset = direction * invSize * x;
|
||
vec3 sample1 = texture2D( colorTexture, vUv + uvOffset).rgb;
|
||
vec3 sample2 = texture2D( colorTexture, vUv - uvOffset).rgb;
|
||
diffuseSum += (sample1 + sample2) * w;
|
||
weightSum += 2.0 * w;
|
||
}
|
||
gl_FragColor = vec4(diffuseSum/weightSum, 1.0);
|
||
}`})}getCompositeMaterial(r){return new Yt({defines:{NUM_MIPS:r},uniforms:{blurTexture1:{value:null},blurTexture2:{value:null},blurTexture3:{value:null},blurTexture4:{value:null},blurTexture5:{value:null},bloomStrength:{value:1},bloomFactors:{value:null},bloomTintColors:{value:null},bloomRadius:{value:0}},vertexShader:`varying vec2 vUv;
|
||
void main() {
|
||
vUv = uv;
|
||
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
|
||
}`,fragmentShader:`varying vec2 vUv;
|
||
uniform sampler2D blurTexture1;
|
||
uniform sampler2D blurTexture2;
|
||
uniform sampler2D blurTexture3;
|
||
uniform sampler2D blurTexture4;
|
||
uniform sampler2D blurTexture5;
|
||
uniform float bloomStrength;
|
||
uniform float bloomRadius;
|
||
uniform float bloomFactors[NUM_MIPS];
|
||
uniform vec3 bloomTintColors[NUM_MIPS];
|
||
|
||
float lerpBloomFactor(const in float factor) {
|
||
float mirrorFactor = 1.2 - factor;
|
||
return mix(factor, mirrorFactor, bloomRadius);
|
||
}
|
||
|
||
void main() {
|
||
gl_FragColor = bloomStrength * ( lerpBloomFactor(bloomFactors[0]) * vec4(bloomTintColors[0], 1.0) * texture2D(blurTexture1, vUv) +
|
||
lerpBloomFactor(bloomFactors[1]) * vec4(bloomTintColors[1], 1.0) * texture2D(blurTexture2, vUv) +
|
||
lerpBloomFactor(bloomFactors[2]) * vec4(bloomTintColors[2], 1.0) * texture2D(blurTexture3, vUv) +
|
||
lerpBloomFactor(bloomFactors[3]) * vec4(bloomTintColors[3], 1.0) * texture2D(blurTexture4, vUv) +
|
||
lerpBloomFactor(bloomFactors[4]) * vec4(bloomTintColors[4], 1.0) * texture2D(blurTexture5, vUv) );
|
||
}`})}};pd.BlurDirectionX=new le(1,0);pd.BlurDirectionY=new le(0,1);var UDe={uniforms:{tDiffuse:{value:null},resolution:{value:new le(1/1024,1/512)}},vertexShader:`
|
||
|
||
varying vec2 vUv;
|
||
|
||
void main() {
|
||
|
||
vUv = uv;
|
||
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
|
||
|
||
}`,fragmentShader:`
|
||
precision highp float;
|
||
|
||
uniform sampler2D tDiffuse;
|
||
|
||
uniform vec2 resolution;
|
||
|
||
varying vec2 vUv;
|
||
|
||
// FXAA 3.11 implementation by NVIDIA, ported to WebGL by Agost Biro (biro@archilogic.com)
|
||
|
||
//----------------------------------------------------------------------------------
|
||
// File: es3-keplerFXAAassetsshaders/FXAA_DefaultES.frag
|
||
// SDK Version: v3.00
|
||
// Email: gameworks@nvidia.com
|
||
// Site: http://developer.nvidia.com/
|
||
//
|
||
// Copyright (c) 2014-2015, NVIDIA CORPORATION. All rights reserved.
|
||
//
|
||
// Redistribution and use in source and binary forms, with or without
|
||
// modification, are permitted provided that the following conditions
|
||
// are met:
|
||
// * Redistributions of source code must retain the above copyright
|
||
// notice, this list of conditions and the following disclaimer.
|
||
// * Redistributions in binary form must reproduce the above copyright
|
||
// notice, this list of conditions and the following disclaimer in the
|
||
// documentation and/or other materials provided with the distribution.
|
||
// * Neither the name of NVIDIA CORPORATION nor the names of its
|
||
// contributors may be used to endorse or promote products derived
|
||
// from this software without specific prior written permission.
|
||
//
|
||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY
|
||
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
||
// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||
//
|
||
//----------------------------------------------------------------------------------
|
||
|
||
#ifndef FXAA_DISCARD
|
||
//
|
||
// Only valid for PC OpenGL currently.
|
||
// Probably will not work when FXAA_GREEN_AS_LUMA = 1.
|
||
//
|
||
// 1 = Use discard on pixels which don't need AA.
|
||
// For APIs which enable concurrent TEX+ROP from same surface.
|
||
// 0 = Return unchanged color on pixels which don't need AA.
|
||
//
|
||
#define FXAA_DISCARD 0
|
||
#endif
|
||
|
||
/*--------------------------------------------------------------------------*/
|
||
#define FxaaTexTop(t, p) texture2D(t, p, -100.0)
|
||
#define FxaaTexOff(t, p, o, r) texture2D(t, p + (o * r), -100.0)
|
||
/*--------------------------------------------------------------------------*/
|
||
|
||
#define NUM_SAMPLES 5
|
||
|
||
// assumes colors have premultipliedAlpha, so that the calculated color contrast is scaled by alpha
|
||
float contrast( vec4 a, vec4 b ) {
|
||
vec4 diff = abs( a - b );
|
||
return max( max( max( diff.r, diff.g ), diff.b ), diff.a );
|
||
}
|
||
|
||
/*============================================================================
|
||
|
||
FXAA3 QUALITY - PC
|
||
|
||
============================================================================*/
|
||
|
||
/*--------------------------------------------------------------------------*/
|
||
vec4 FxaaPixelShader(
|
||
vec2 posM,
|
||
sampler2D tex,
|
||
vec2 fxaaQualityRcpFrame,
|
||
float fxaaQualityEdgeThreshold,
|
||
float fxaaQualityinvEdgeThreshold
|
||
) {
|
||
vec4 rgbaM = FxaaTexTop(tex, posM);
|
||
vec4 rgbaS = FxaaTexOff(tex, posM, vec2( 0.0, 1.0), fxaaQualityRcpFrame.xy);
|
||
vec4 rgbaE = FxaaTexOff(tex, posM, vec2( 1.0, 0.0), fxaaQualityRcpFrame.xy);
|
||
vec4 rgbaN = FxaaTexOff(tex, posM, vec2( 0.0,-1.0), fxaaQualityRcpFrame.xy);
|
||
vec4 rgbaW = FxaaTexOff(tex, posM, vec2(-1.0, 0.0), fxaaQualityRcpFrame.xy);
|
||
// . S .
|
||
// W M E
|
||
// . N .
|
||
|
||
bool earlyExit = max( max( max(
|
||
contrast( rgbaM, rgbaN ),
|
||
contrast( rgbaM, rgbaS ) ),
|
||
contrast( rgbaM, rgbaE ) ),
|
||
contrast( rgbaM, rgbaW ) )
|
||
< fxaaQualityEdgeThreshold;
|
||
// . 0 .
|
||
// 0 0 0
|
||
// . 0 .
|
||
|
||
#if (FXAA_DISCARD == 1)
|
||
if(earlyExit) FxaaDiscard;
|
||
#else
|
||
if(earlyExit) return rgbaM;
|
||
#endif
|
||
|
||
float contrastN = contrast( rgbaM, rgbaN );
|
||
float contrastS = contrast( rgbaM, rgbaS );
|
||
float contrastE = contrast( rgbaM, rgbaE );
|
||
float contrastW = contrast( rgbaM, rgbaW );
|
||
|
||
float relativeVContrast = ( contrastN + contrastS ) - ( contrastE + contrastW );
|
||
relativeVContrast *= fxaaQualityinvEdgeThreshold;
|
||
|
||
bool horzSpan = relativeVContrast > 0.;
|
||
// . 1 .
|
||
// 0 0 0
|
||
// . 1 .
|
||
|
||
// 45 deg edge detection and corners of objects, aka V/H contrast is too similar
|
||
if( abs( relativeVContrast ) < .3 ) {
|
||
// locate the edge
|
||
vec2 dirToEdge;
|
||
dirToEdge.x = contrastE > contrastW ? 1. : -1.;
|
||
dirToEdge.y = contrastS > contrastN ? 1. : -1.;
|
||
// . 2 . . 1 .
|
||
// 1 0 2 ~= 0 0 1
|
||
// . 1 . . 0 .
|
||
|
||
// tap 2 pixels and see which ones are "outside" the edge, to
|
||
// determine if the edge is vertical or horizontal
|
||
|
||
vec4 rgbaAlongH = FxaaTexOff(tex, posM, vec2( dirToEdge.x, -dirToEdge.y ), fxaaQualityRcpFrame.xy);
|
||
float matchAlongH = contrast( rgbaM, rgbaAlongH );
|
||
// . 1 .
|
||
// 0 0 1
|
||
// . 0 H
|
||
|
||
vec4 rgbaAlongV = FxaaTexOff(tex, posM, vec2( -dirToEdge.x, dirToEdge.y ), fxaaQualityRcpFrame.xy);
|
||
float matchAlongV = contrast( rgbaM, rgbaAlongV );
|
||
// V 1 .
|
||
// 0 0 1
|
||
// . 0 .
|
||
|
||
relativeVContrast = matchAlongV - matchAlongH;
|
||
relativeVContrast *= fxaaQualityinvEdgeThreshold;
|
||
|
||
if( abs( relativeVContrast ) < .3 ) { // 45 deg edge
|
||
// 1 1 .
|
||
// 0 0 1
|
||
// . 0 1
|
||
|
||
// do a simple blur
|
||
return mix(
|
||
rgbaM,
|
||
(rgbaN + rgbaS + rgbaE + rgbaW) * .25,
|
||
.4
|
||
);
|
||
}
|
||
|
||
horzSpan = relativeVContrast > 0.;
|
||
}
|
||
|
||
if(!horzSpan) rgbaN = rgbaW;
|
||
if(!horzSpan) rgbaS = rgbaE;
|
||
// . 0 . 1
|
||
// 1 0 1 -> 0
|
||
// . 0 . 1
|
||
|
||
bool pairN = contrast( rgbaM, rgbaN ) > contrast( rgbaM, rgbaS );
|
||
if(!pairN) rgbaN = rgbaS;
|
||
|
||
vec2 offNP;
|
||
offNP.x = (!horzSpan) ? 0.0 : fxaaQualityRcpFrame.x;
|
||
offNP.y = ( horzSpan) ? 0.0 : fxaaQualityRcpFrame.y;
|
||
|
||
bool doneN = false;
|
||
bool doneP = false;
|
||
|
||
float nDist = 0.;
|
||
float pDist = 0.;
|
||
|
||
vec2 posN = posM;
|
||
vec2 posP = posM;
|
||
|
||
int iterationsUsed = 0;
|
||
int iterationsUsedN = 0;
|
||
int iterationsUsedP = 0;
|
||
for( int i = 0; i < NUM_SAMPLES; i++ ) {
|
||
iterationsUsed = i;
|
||
|
||
float increment = float(i + 1);
|
||
|
||
if(!doneN) {
|
||
nDist += increment;
|
||
posN = posM + offNP * nDist;
|
||
vec4 rgbaEndN = FxaaTexTop(tex, posN.xy);
|
||
doneN = contrast( rgbaEndN, rgbaM ) > contrast( rgbaEndN, rgbaN );
|
||
iterationsUsedN = i;
|
||
}
|
||
|
||
if(!doneP) {
|
||
pDist += increment;
|
||
posP = posM - offNP * pDist;
|
||
vec4 rgbaEndP = FxaaTexTop(tex, posP.xy);
|
||
doneP = contrast( rgbaEndP, rgbaM ) > contrast( rgbaEndP, rgbaN );
|
||
iterationsUsedP = i;
|
||
}
|
||
|
||
if(doneN || doneP) break;
|
||
}
|
||
|
||
|
||
if ( !doneP && !doneN ) return rgbaM; // failed to find end of edge
|
||
|
||
float dist = min(
|
||
doneN ? float( iterationsUsedN ) / float( NUM_SAMPLES - 1 ) : 1.,
|
||
doneP ? float( iterationsUsedP ) / float( NUM_SAMPLES - 1 ) : 1.
|
||
);
|
||
|
||
// hacky way of reduces blurriness of mostly diagonal edges
|
||
// but reduces AA quality
|
||
dist = pow(dist, .5);
|
||
|
||
dist = 1. - dist;
|
||
|
||
return mix(
|
||
rgbaM,
|
||
rgbaN,
|
||
dist * .5
|
||
);
|
||
}
|
||
|
||
void main() {
|
||
const float edgeDetectionQuality = .2;
|
||
const float invEdgeDetectionQuality = 1. / edgeDetectionQuality;
|
||
|
||
gl_FragColor = FxaaPixelShader(
|
||
vUv,
|
||
tDiffuse,
|
||
resolution,
|
||
edgeDetectionQuality, // [0,1] contrast needed, otherwise early discard
|
||
invEdgeDetectionQuality
|
||
);
|
||
|
||
}
|
||
`};var RG=Un(Yl(),1);var dNt="bottomBar";var fNt={["stats"]:{icon:{default:"icon-showsectionplane"},mutexIds:["statistics","cameraInfo","tips"],onActive:t=>{t.viewer.showStats()},onDeactive:t=>{t.viewer.hideStats()}},["statistics"]:{icon:{default:"icon-info",active:"icon-info-filled"},mutexIds:["stats","cameraInfo","tips"],onActive:t=>{let r=document.createElement("span");if(!t.viewer.scene){r.textContent="Failed!";return}r.textContent="Comupting...";let e={components:{},points:0,faces:0,materials:{},lights:{}},i=(l,c)=>{if(c.components[l.type]?c.components[l.type]++:c.components[l.type]=1,l.geometry){let p=l.geometry;if(l instanceof Je){if(p.index&&p.index.count){let d=Math.round(p.index.count/3);l instanceof tn&&(d*=l.count),c.faces+=d}else if(p.groups.length>0)for(let d=0;d<p.groups.length;++d)c.faces+=p.groups[d].count/3}if(p.attributes.position){let d=p.attributes.position;d.count&&d.itemSize&&(c.points+=d.count)}}let u=p=>{c.materials[p]?c.materials[p]++:c.materials[p]=1},h=l.material;h instanceof Gr?u(h.id):Array.isArray(h)&&h.forEach(p=>u(p.id))},n=l=>{var u;let c=(u=l.renderer)==null?void 0:u.domElement;return c==null?void 0:c.dataset.engine},s=["SKYBOX","GROUND_GRID","GRASS_GROUND","BIM_VIEWER_BOX_HELPER"];t.viewer.scene.traverse(l=>{(l instanceof Je||l instanceof _r||l instanceof rn)&&!s.includes(l.name)?i(l,e):l instanceof Al&&(e.lights[l.type]?e.lights[l.type]++:e.lights[l.type]=1)});let a=(l,c)=>{r.innerHTML+=`<p><span>${l}:</span>${c}</p>`};r.innerHTML="";let o=` (${n(t.viewer)})`;if(a("Version",`${WT}${o}`),a("Components",JSON.stringify(e.components)),a("Points",e.points),a("Faces",e.faces),a("Materials",Object.keys(e.materials).length),a("Lights",JSON.stringify(e.lights)),t.viewer.name==="DxfViewer"){let l=t.viewer.getEntitiesCount();a("Entities",l)}t.tooltip.setContent(r),t.tooltip.show()},onDeactive:t=>{t.tooltip.hide()},onUpdate:t=>{let r=t.viewer.renderer,e=document.createElement("span"),i=(s,a)=>{e.innerHTML+=`<p><span>${s}:</span>${a}</p>`};e.innerHTML="<p>-- Renderer Info --</p>";let n=r==null?void 0:r.info;i("Drawcalls",JSON.stringify(n==null?void 0:n.render.calls)),i("Points",JSON.stringify(n==null?void 0:n.render.points)),i("Lines",JSON.stringify(n==null?void 0:n.render.lines)),i("Triangles",JSON.stringify(n==null?void 0:n.render.triangles)),i("Geometries",JSON.stringify(n==null?void 0:n.memory.geometries)),i("Textures",JSON.stringify(n==null?void 0:n.memory.textures)),t.tooltip.updateChildContent(e)}},["cameraInfo"]:{icon:{default:"icon-view",active:"icon-view-filled"},mutexIds:["stats","statistics","tips"],onActive:t=>{let r=()=>{if(!t.viewer||!t.viewer.camera||!t.viewer.controls)return;let e=t.viewer.camera,i=t.viewer.controls,n=l=>St.numberToString(l),s=l=>St.vectorToString(l),a=e.position,o=i.target;if(a){let l=document.createElement("span");l.innerHTML=`
|
||
<p><span>Camera position:</span>${s(a)}</p>
|
||
<p><span>Camera target:</span>${s(o)}</p>`,e instanceof Zi&&(l.innerHTML+=`
|
||
<p>top: ${n(e.top)}, bottom: ${n(e.bottom)}, left: ${n(e.left)}, right: ${n(e.right)}</p>
|
||
<p>zoom: ${n(e.zoom)}</p>`),t.tooltip.setContent(l)}t.active||window.removeEventListener("mouseup",r)};if(r(),window.addEventListener("mouseup",r),t.viewer.name==="BimViewer"){let e=t.viewer.controls;e==null||e.addEventListener("update",r)}else t.viewer.controls.addEventListener("change",r);t.tooltip.show()},onDeactive:t=>{t.tooltip.hide()}},["tips"]:{icon:{default:"icon-more"},mutexIds:["stats","cameraInfo","cameraInfo"],onActive:t=>{let r=document.createElement("span");t.viewer.name==="BimViewer"?r.innerHTML=`
|
||
<p><span>W: </span>Move forward</p>
|
||
<p><span>A: </span>Move backward</p>
|
||
<p><span>S: </span>Move left</p>
|
||
<p><span>D: </span>Move right</p>
|
||
<p><span>Q: </span>Rise up</p>
|
||
<p><span>E: </span>Lower down</p>
|
||
<p><span>\u2191: </span>Rotate up</p>
|
||
<p><span>\u2193: </span>Rotate down</p>
|
||
<p><span>\u2190: </span>Rotate to left</p>
|
||
<p><span>\u2192: </span>Rotate to right</p>
|
||
`:t.viewer.name==="DxfViewer"?r.innerHTML=`
|
||
<p><span>\u2191: </span>Move up</p>
|
||
<p><span>\u2193: </span>Move down</p>
|
||
<p><span>\u2190: </span>Move to left</p>
|
||
<p><span>\u2192: </span>Move to right</p>
|
||
`:t.viewer.name==="BaseViewer"?r.innerHTML=`
|
||
<p><span>\u2191: </span>Rotate up</p>
|
||
<p><span>\u2193: </span>Rotate down</p>
|
||
<p><span>\u2190: </span>Rotate to left</p>
|
||
<p><span>\u2192: </span>Rotate to right</p>
|
||
`:r.innerHTML=`
|
||
<p>Nothing to show</p>
|
||
`,t.tooltip.setContent(r),t.tooltip.show()},onDeactive:t=>{t.tooltip.hide()}}},nm=class{constructor(r){this.viewer=r;this.itemList=new Map;this.init()}update(){this.itemList.forEach(r=>{r.update()})}init(){var e;let r=document.createElement("div");r.id=dNt,r.classList.add("bottom-bar"),(0,RG.forEach)(fNt,(i,n)=>{let s=this.createItem(this.viewer,n,i);r.appendChild(s.element)}),this.element=r,(e=this.viewer.widgetContainer)==null||e.appendChild(this.element)}createItem(r,e,i){let n=new wG(r,this,e,i);return this.itemList.set(e,n),n}},wG=class{constructor(r,e,i,n){this.viewer=r;this.bottomBar=e;this.menuId=i;this.cfg=n;this.eventBus=lE();this.active=!1;this.itemconfig=n,this.element=this.createButton(this.menuId,n),this.tooltip=new ph(i+"-tooltip",null,{parentNode:r.widgetContainer}),this.eventBus.on("activeChange",s=>{s?(this.element.classList.add("active"),(0,RG.forEach)(n.mutexIds,a=>{var l;let o=(l=this.bottomBar)==null?void 0:l.itemList.get(a);o&&o.active&&o.setActive(!1)}),n.onActive&&n.onActive(this)):(this.element.classList.remove("active"),n.onDeactive&&n.onDeactive(this)),this.element instanceof HTMLElement&&IC(this.element.classList,n.icon,this.active)})}createButton(r,e){let i=document.createElement("i");i.id=r;let{default:n="icon-new",iconFont:s=ho}=e.icon;return i.classList.add("icon"),i.classList.add(s),i.classList.add(n),i.onclick=()=>{this.active=!this.active,e.onClick&&e.onClick(this),this.eventBus.emit("activeChange",this.active)},i}setActive(r){this.active=r,this.eventBus.emit("activeChange",this.active)}update(){this.active&&this.itemconfig.onUpdate&&this.itemconfig.onUpdate(this)}};var qS=Un(Yl(),1);var mNt="gemini-context-menu",v3=class{constructor(r){this.itemList=[];this.id=r.id||mNt,this.container=r.container||document.body,this.context=r.context||{},this.element=this.createMenuUI(r.items||[]),this.handleClick=()=>{this.hide()},r.hideOnMouseDown!==!1&&document.addEventListener("click",this.handleClick),this.hide()}isEnable(r){return r.getEnabled?r.getEnabled(this.context):r.enabled!==void 0?r.enabled:!0}isShown(r){return r.getShown?r.getShown(this.context):r.shown!==void 0?r.shown:!0}getTitle(r){return r.title||r.getTitle&&r.getTitle(this.context)||""}createMenuUI(r){let e=document.createElement("div");e.id=this.id,e.classList.add("context-menu");let i=this.createMenuGroup(r);return e.append(...i),this.container.appendChild(e),e}createMenuGroup(r){return(0,qS.map)(r,e=>{let i=document.createElement("ul");return(0,qS.forEach)(e,n=>{let s=this.createMenuItem(n);i.append(s)}),i})}createMenuItem(r){let e=document.createElement("li");return e.innerHTML=this.getTitle(r),e.onclick=()=>r.doAction&&r.doAction(this.context),this.isEnable(r)?e.classList.remove("disabled"):e.classList.add("disabled"),this.isShown(r)?e.removeAttribute("hidden"):e.setAttribute("hidden",""),this.itemList.push([r,e]),e}updateMenuItems(){(0,qS.forEach)(this.itemList,([r,e])=>{this.isEnable(r)?e.classList.remove("disabled"):e.classList.add("disabled"),this.isShown(r)?e.removeAttribute("hidden"):e.setAttribute("hidden",""),e.innerHTML=this.getTitle(r)})}showMenuElement(r,e){let i=this.element.offsetHeight,n=this.element.offsetWidth;e+i>window.innerHeight&&(e=window.innerHeight-i-5),r+n>window.innerWidth&&(r=window.innerWidth-n-5),this.element.style.left=r+"px",this.element.style.top=e+"px"}show(r,e){this.updateMenuItems(),this.element.removeAttribute("hidden"),this.showMenuElement(r,e)}hide(){this.element.setAttribute("hidden","")}destroy(){document.removeEventListener("click",this.handleClick),this.container.removeChild(this.element)}};var xo=t=>({bimViewer:r})=>r.translate(`ContextMenu.${t}`),kDe=t=>{var e;let r=0;return(e=t.scene)==null||e.traverseVisible(i=>{i instanceof Je&&r++}),r>0},gNt=t=>{var e,i;let r=0;return(e=t.scene)==null||e.traverse(n=>{n instanceof Je&&r++}),(i=t.scene)==null||i.traverseVisible(n=>{n instanceof Je&&r--}),r>0},MG=t=>t.hasTransparentObject(),y3=t=>t.userData.selectable!==!1,BDe=(t,r,e,i)=>{let n=t.selectedObject;return!n||!r||n.id!==r.id?!1:e!=null&&n.isInstancedMesh?e===n.userData.instanceId:i!=null&&ji.isMergedMesh(n)?i===n.userData.batchId:!0},vNt={getTitle:xo("viewFitEntity"),getShown:({hit:t})=>t,doAction:({bimViewer:t,hit:r})=>{t.flyToObject(r)}},yNt={getTitle:xo("viewFitAll"),getEnabled:({bimViewer:t})=>kDe(t),doAction:({bimViewer:t})=>t.viewFitAll()},TNt={getTitle:xo("hideEntity"),getShown:({hit:t})=>t,doAction:({bimViewer:t,hit:r})=>{y3(r)&&(r.visible=!1,t.enableRender())}},ENt={getTitle:xo("hideOthers"),getShown:({hit:t})=>t,doAction:({bimViewer:t,hit:r})=>{var e;(e=t.scene)==null||e.traverse(i=>{i instanceof Je&&y3(i)&&(i.visible=!1)}),r.visible=!0,t.enableRender()}},bNt={getTitle:xo("hideAll"),getEnabled:({bimViewer:t})=>kDe(t),doAction:({bimViewer:t})=>{var r;(r=t.scene)==null||r.traverse(e=>{e instanceof Je&&y3(e)&&(e.visible=!1)}),t.enableRender()}},xNt={getTitle:xo("showAll"),getEnabled:({bimViewer:t})=>gNt(t),doAction:({bimViewer:t})=>{var r;(r=t.scene)==null||r.traverse(e=>{e instanceof Je&&y3(e)&&(e.visible=!0)}),t.enableRender()}},INt={getTitle:({hit:t,bimViewer:r,instanceId:e,batchId:i})=>BDe(r,t,e,i)?xo("deselect")({bimViewer:r}):xo("select")({bimViewer:r}),getShown:({hit:t})=>t,doAction:({hit:t,bimViewer:r,instanceId:e,batchId:i})=>{if(t.userData.selectable===!1){ne.debug(`[ContextMenu] object(type: ${t.type}, name: ${t.name}) not selectable!`);return}BDe(r,t,e,i)?r.clearSelection():r.selectObject(t,t.instanceId,i)}},SNt={getTitle:xo("selectNone"),getEnabled:({bimViewer:t})=>t.selectedObject,doAction:({bimViewer:t})=>t.clearSelection()},_Nt={getTitle:xo("xRayAll"),getShown:({bimViewer:t})=>!MG(t),doAction:({bimViewer:t})=>{t.addOrRemoveObjectOpacity(!0),t.enableRender()}},wNt={getTitle:xo("xRayNone"),getEnabled:({bimViewer:t})=>MG(t),doAction:({bimViewer:t})=>{MG(t)&&(t.addOrRemoveObjectOpacity(!1),t.enableRender())}},RNt={getTitle:xo("xRayEntity"),getShown:({hit:t})=>t,doAction:({bimViewer:t,hit:r})=>{t.addOrRemoveObjectOpacity(!0,void 0,[r.id],void 0)}},MNt={getTitle:xo("xRayOthers"),getShown:({hit:t})=>t,doAction:({bimViewer:t,hit:r})=>{t.addOrRemoveObjectOpacity(!0,.1,void 0,[r.id]),t.enableRender()}},DNt={getTitle:({bimViewer:t})=>{let r="";switch(t.sectionType){case"PickPlaneSection":r="*showSectionPlane";break;case"AxisPlaneSection":r="showAxisSection";break;case"ObjectsBoxSection":r="*showSectionBox";break}return t.translate(`ContextMenu.${r}`)},getShown:({bimViewer:t,section:r})=>t.sectionType==="PickPlaneSection"||t.sectionType==="AxisPlaneSection"?!!r&&!r.isShowSectionPlane:!1,doAction:({bimViewer:t,section:r})=>{(t.sectionType==="PickPlaneSection"||t.sectionType==="AxisPlaneSection")&&(r==null||r.setSectionVisible(!0))}},CNt={getTitle:({bimViewer:t})=>{let r="";switch(t.sectionType){case"PickPlaneSection":r="hideSectionPlane";break;case"AxisPlaneSection":r="hideAxisSection";break;case"ObjectsBoxSection":r="hideSectionBox";break}return t.translate(`ContextMenu.${r}`)},getShown:t=>GDe(t),doAction:({bimViewer:t,section:r})=>{(t.sectionType==="PickPlaneSection"||t.sectionType==="AxisPlaneSection")&&(r==null||r.setSectionVisible(!1))}},ANt={getTitle:xo("undoSection"),getShown:t=>GDe(t),doAction:({bimViewer:t,toolbar:r})=>{if(t.sectionType==="PickPlaneSection"){let e=r==null?void 0:r.menuList.get("SectionPlane");e==null||e.setActive(!1)}else if(t.sectionType==="AxisPlaneSection"){let e=r==null?void 0:r.menuList.get("SectionAxis");e==null||e.setActive(!1)}else if(t.sectionType==="ObjectsBoxSection"){let e=r==null?void 0:r.menuList.get("SectionBox");e==null||e.setActive(!1)}}},GDe=({bimViewer:t,hit:r,section:e})=>t.sectionType==="PickPlaneSection"?!!e&&e.isShowSectionPlane&&(r==null?void 0:r.name)===yB:t.sectionType==="AxisPlaneSection"?!!e&&e.isShowSectionPlane&&(r==null?void 0:r.name)===yB:!1,VDe=[[DNt],[CNt,ANt],[vNt,yNt],[TNt,ENt,bNt,xNt],[RNt,MNt,_Nt,wNt],[INt,SNt]];function ONt(t){if(t&&typeof window!="undefined"){var r=document.createElement("style");return r.setAttribute("type","text/css"),r.innerHTML=t,document.head.appendChild(r),t}}function IE(t,r){var e=t.__state.conversionName.toString(),i=Math.round(t.r),n=Math.round(t.g),s=Math.round(t.b),a=t.a,o=Math.round(t.h),l=t.s.toFixed(1),c=t.v.toFixed(1);if(r||e==="THREE_CHAR_HEX"||e==="SIX_CHAR_HEX"){for(var u=t.hex.toString(16);u.length<6;)u="0"+u;return"#"+u}else{if(e==="CSS_RGB")return"rgb("+i+","+n+","+s+")";if(e==="CSS_RGBA")return"rgba("+i+","+n+","+s+","+a+")";if(e==="HEX")return"0x"+t.hex.toString(16);if(e==="RGB_ARRAY")return"["+i+","+n+","+s+"]";if(e==="RGBA_ARRAY")return"["+i+","+n+","+s+","+a+"]";if(e==="RGB_OBJ")return"{r:"+i+",g:"+n+",b:"+s+"}";if(e==="RGBA_OBJ")return"{r:"+i+",g:"+n+",b:"+s+",a:"+a+"}";if(e==="HSV_OBJ")return"{h:"+o+",s:"+l+",v:"+c+"}";if(e==="HSVA_OBJ")return"{h:"+o+",s:"+l+",v:"+c+",a:"+a+"}"}return"unknown format"}var zDe=Array.prototype.forEach,YS=Array.prototype.slice,ht={BREAK:{},extend:function(r){return this.each(YS.call(arguments,1),function(e){var i=this.isObject(e)?Object.keys(e):[];i.forEach(function(n){this.isUndefined(e[n])||(r[n]=e[n])}.bind(this))},this),r},defaults:function(r){return this.each(YS.call(arguments,1),function(e){var i=this.isObject(e)?Object.keys(e):[];i.forEach(function(n){this.isUndefined(r[n])&&(r[n]=e[n])}.bind(this))},this),r},compose:function(){var r=YS.call(arguments);return function(){for(var e=YS.call(arguments),i=r.length-1;i>=0;i--)e=[r[i].apply(this,e)];return e[0]}},each:function(r,e,i){if(r){if(zDe&&r.forEach&&r.forEach===zDe)r.forEach(e,i);else if(r.length===r.length+0){var n=void 0,s=void 0;for(n=0,s=r.length;n<s;n++)if(n in r&&e.call(i,r[n],n)===this.BREAK)return}else for(var a in r)if(e.call(i,r[a],a)===this.BREAK)return}},defer:function(r){setTimeout(r,0)},debounce:function(r,e,i){var n=void 0;return function(){var s=this,a=arguments;function o(){n=null,i||r.apply(s,a)}var l=i||!n;clearTimeout(n),n=setTimeout(o,e),l&&r.apply(s,a)}},toArray:function(r){return r.toArray?r.toArray():YS.call(r)},isUndefined:function(r){return r===void 0},isNull:function(r){return r===null},isNaN:function(t){function r(e){return t.apply(this,arguments)}return r.toString=function(){return t.toString()},r}(function(t){return isNaN(t)}),isArray:Array.isArray||function(t){return t.constructor===Array},isObject:function(r){return r===Object(r)},isNumber:function(r){return r===r+0},isString:function(r){return r===r+""},isBoolean:function(r){return r===!1||r===!0},isFunction:function(r){return r instanceof Function}},PNt=[{litmus:ht.isString,conversions:{THREE_CHAR_HEX:{read:function(r){var e=r.match(/^#([A-F0-9])([A-F0-9])([A-F0-9])$/i);return e===null?!1:{space:"HEX",hex:parseInt("0x"+e[1].toString()+e[1].toString()+e[2].toString()+e[2].toString()+e[3].toString()+e[3].toString(),0)}},write:IE},SIX_CHAR_HEX:{read:function(r){var e=r.match(/^#([A-F0-9]{6})$/i);return e===null?!1:{space:"HEX",hex:parseInt("0x"+e[1].toString(),0)}},write:IE},CSS_RGB:{read:function(r){var e=r.match(/^rgb\(\s*(\S+)\s*,\s*(\S+)\s*,\s*(\S+)\s*\)/);return e===null?!1:{space:"RGB",r:parseFloat(e[1]),g:parseFloat(e[2]),b:parseFloat(e[3])}},write:IE},CSS_RGBA:{read:function(r){var e=r.match(/^rgba\(\s*(\S+)\s*,\s*(\S+)\s*,\s*(\S+)\s*,\s*(\S+)\s*\)/);return e===null?!1:{space:"RGB",r:parseFloat(e[1]),g:parseFloat(e[2]),b:parseFloat(e[3]),a:parseFloat(e[4])}},write:IE}}},{litmus:ht.isNumber,conversions:{HEX:{read:function(r){return{space:"HEX",hex:r,conversionName:"HEX"}},write:function(r){return r.hex}}}},{litmus:ht.isArray,conversions:{RGB_ARRAY:{read:function(r){return r.length!==3?!1:{space:"RGB",r:r[0],g:r[1],b:r[2]}},write:function(r){return[r.r,r.g,r.b]}},RGBA_ARRAY:{read:function(r){return r.length!==4?!1:{space:"RGB",r:r[0],g:r[1],b:r[2],a:r[3]}},write:function(r){return[r.r,r.g,r.b,r.a]}}}},{litmus:ht.isObject,conversions:{RGBA_OBJ:{read:function(r){return ht.isNumber(r.r)&&ht.isNumber(r.g)&&ht.isNumber(r.b)&&ht.isNumber(r.a)?{space:"RGB",r:r.r,g:r.g,b:r.b,a:r.a}:!1},write:function(r){return{r:r.r,g:r.g,b:r.b,a:r.a}}},RGB_OBJ:{read:function(r){return ht.isNumber(r.r)&&ht.isNumber(r.g)&&ht.isNumber(r.b)?{space:"RGB",r:r.r,g:r.g,b:r.b}:!1},write:function(r){return{r:r.r,g:r.g,b:r.b}}},HSVA_OBJ:{read:function(r){return ht.isNumber(r.h)&&ht.isNumber(r.s)&&ht.isNumber(r.v)&&ht.isNumber(r.a)?{space:"HSV",h:r.h,s:r.s,v:r.v,a:r.a}:!1},write:function(r){return{h:r.h,s:r.s,v:r.v,a:r.a}}},HSV_OBJ:{read:function(r){return ht.isNumber(r.h)&&ht.isNumber(r.s)&&ht.isNumber(r.v)?{space:"HSV",h:r.h,s:r.s,v:r.v}:!1},write:function(r){return{h:r.h,s:r.s,v:r.v}}}}}],XS=void 0,T3=void 0,CG=function(){T3=!1;var r=arguments.length>1?ht.toArray(arguments):arguments[0];return ht.each(PNt,function(e){if(e.litmus(r))return ht.each(e.conversions,function(i,n){if(XS=i.read(r),T3===!1&&XS!==!1)return T3=XS,XS.conversionName=n,XS.conversion=i,ht.BREAK}),ht.BREAK}),T3},jDe=void 0,b3={hsv_to_rgb:function(r,e,i){var n=Math.floor(r/60)%6,s=r/60-Math.floor(r/60),a=i*(1-e),o=i*(1-s*e),l=i*(1-(1-s)*e),c=[[i,l,a],[o,i,a],[a,i,l],[a,o,i],[l,a,i],[i,a,o]][n];return{r:c[0]*255,g:c[1]*255,b:c[2]*255}},rgb_to_hsv:function(r,e,i){var n=Math.min(r,e,i),s=Math.max(r,e,i),a=s-n,o=void 0,l=void 0;if(s!==0)l=a/s;else return{h:NaN,s:0,v:0};return r===s?o=(e-i)/a:e===s?o=2+(i-r)/a:o=4+(r-e)/a,o/=6,o<0&&(o+=1),{h:o*360,s:l,v:s/255}},rgb_to_hex:function(r,e,i){var n=this.hex_with_component(0,2,r);return n=this.hex_with_component(n,1,e),n=this.hex_with_component(n,0,i),n},component_from_hex:function(r,e){return r>>e*8&255},hex_with_component:function(r,e,i){return i<<(jDe=e*8)|r&~(255<<jDe)}},NNt=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},ou=function(t,r){if(!(t instanceof r))throw new TypeError("Cannot call a class as a function")},lu=function(){function t(r,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(r,n.key,n)}}return function(r,e,i){return e&&t(r.prototype,e),i&&t(r,i),r}}(),sm=function t(r,e,i){r===null&&(r=Function.prototype);var n=Object.getOwnPropertyDescriptor(r,e);if(n===void 0){var s=Object.getPrototypeOf(r);return s===null?void 0:t(s,e,i)}else{if("value"in n)return n.value;var a=n.get;return a===void 0?void 0:a.call(i)}},am=function(t,r){if(typeof r!="function"&&r!==null)throw new TypeError("Super expression must either be null or a function, not "+typeof r);t.prototype=Object.create(r&&r.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),r&&(Object.setPrototypeOf?Object.setPrototypeOf(t,r):t.__proto__=r)},om=function(t,r){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return r&&(typeof r=="object"||typeof r=="function")?r:t},Ls=function(){function t(){if(ou(this,t),this.__state=CG.apply(this,arguments),this.__state===!1)throw new Error("Failed to interpret color arguments");this.__state.a=this.__state.a||1}return lu(t,[{key:"toString",value:function(){return IE(this)}},{key:"toHexString",value:function(){return IE(this,!0)}},{key:"toOriginal",value:function(){return this.__state.conversion.write(this)}}]),t}();function FG(t,r,e){Object.defineProperty(t,r,{get:function(){return this.__state.space==="RGB"?this.__state[r]:(Ls.recalculateRGB(this,r,e),this.__state[r])},set:function(n){this.__state.space!=="RGB"&&(Ls.recalculateRGB(this,r,e),this.__state.space="RGB"),this.__state[r]=n}})}function HG(t,r){Object.defineProperty(t,r,{get:function(){return this.__state.space==="HSV"?this.__state[r]:(Ls.recalculateHSV(this),this.__state[r])},set:function(i){this.__state.space!=="HSV"&&(Ls.recalculateHSV(this),this.__state.space="HSV"),this.__state[r]=i}})}Ls.recalculateRGB=function(t,r,e){if(t.__state.space==="HEX")t.__state[r]=b3.component_from_hex(t.__state.hex,e);else if(t.__state.space==="HSV")ht.extend(t.__state,b3.hsv_to_rgb(t.__state.h,t.__state.s,t.__state.v));else throw new Error("Corrupted color state")};Ls.recalculateHSV=function(t){var r=b3.rgb_to_hsv(t.r,t.g,t.b);ht.extend(t.__state,{s:r.s,v:r.v}),ht.isNaN(r.h)?ht.isUndefined(t.__state.h)&&(t.__state.h=0):t.__state.h=r.h};Ls.COMPONENTS=["r","g","b","h","s","v","hex","a"];FG(Ls.prototype,"r",2);FG(Ls.prototype,"g",1);FG(Ls.prototype,"b",0);HG(Ls.prototype,"h");HG(Ls.prototype,"s");HG(Ls.prototype,"v");Object.defineProperty(Ls.prototype,"a",{get:function(){return this.__state.a},set:function(r){this.__state.a=r}});Object.defineProperty(Ls.prototype,"hex",{get:function(){return this.__state.space!=="HEX"&&(this.__state.hex=b3.rgb_to_hex(this.r,this.g,this.b),this.__state.space="HEX"),this.__state.hex},set:function(r){this.__state.space="HEX",this.__state.hex=r}});var N0=function(){function t(r,e){ou(this,t),this.initialValue=r[e],this.domElement=document.createElement("div"),this.object=r,this.property=e,this.__onChange=void 0,this.__onFinishChange=void 0}return lu(t,[{key:"onChange",value:function(e){return this.__onChange=e,this}},{key:"onFinishChange",value:function(e){return this.__onFinishChange=e,this}},{key:"setValue",value:function(e){return this.object[this.property]=e,this.__onChange&&this.__onChange.call(this,e),this.updateDisplay(),this}},{key:"getValue",value:function(){return this.object[this.property]}},{key:"updateDisplay",value:function(){return this}},{key:"isModified",value:function(){return this.initialValue!==this.getValue()}}]),t}(),LNt={HTMLEvents:["change"],MouseEvents:["click","mousemove","mousedown","mouseup","mouseover"],KeyboardEvents:["keydown"]},eCe={};ht.each(LNt,function(t,r){ht.each(t,function(e){eCe[e]=r})});var FNt=/(\d+(\.\d+)?)px/;function Eh(t){if(t==="0"||ht.isUndefined(t))return 0;var r=t.match(FNt);return ht.isNull(r)?0:parseFloat(r[1])}var We={makeSelectable:function(r,e){r===void 0||r.style===void 0||(r.onselectstart=e?function(){return!1}:function(){},r.style.MozUserSelect=e?"auto":"none",r.style.KhtmlUserSelect=e?"auto":"none",r.unselectable=e?"on":"off")},makeFullscreen:function(r,e,i){var n=i,s=e;ht.isUndefined(s)&&(s=!0),ht.isUndefined(n)&&(n=!0),r.style.position="absolute",s&&(r.style.left=0,r.style.right=0),n&&(r.style.top=0,r.style.bottom=0)},fakeEvent:function(r,e,i,n){var s=i||{},a=eCe[e];if(!a)throw new Error("Event type "+e+" not supported.");var o=document.createEvent(a);switch(a){case"MouseEvents":{var l=s.x||s.clientX||0,c=s.y||s.clientY||0;o.initMouseEvent(e,s.bubbles||!1,s.cancelable||!0,window,s.clickCount||1,0,0,l,c,!1,!1,!1,!1,0,null);break}case"KeyboardEvents":{var u=o.initKeyboardEvent||o.initKeyEvent;ht.defaults(s,{cancelable:!0,ctrlKey:!1,altKey:!1,shiftKey:!1,metaKey:!1,keyCode:void 0,charCode:void 0}),u(e,s.bubbles||!1,s.cancelable,window,s.ctrlKey,s.altKey,s.shiftKey,s.metaKey,s.keyCode,s.charCode);break}default:{o.initEvent(e,s.bubbles||!1,s.cancelable||!0);break}}ht.defaults(o,n),r.dispatchEvent(o)},bind:function(r,e,i,n){var s=n||!1;return r.addEventListener?r.addEventListener(e,i,s):r.attachEvent&&r.attachEvent("on"+e,i),We},unbind:function(r,e,i,n){var s=n||!1;return r.removeEventListener?r.removeEventListener(e,i,s):r.detachEvent&&r.detachEvent("on"+e,i),We},addClass:function(r,e){if(r.className===void 0)r.className=e;else if(r.className!==e){var i=r.className.split(/ +/);i.indexOf(e)===-1&&(i.push(e),r.className=i.join(" ").replace(/^\s+/,"").replace(/\s+$/,""))}return We},removeClass:function(r,e){if(e)if(r.className===e)r.removeAttribute("class");else{var i=r.className.split(/ +/),n=i.indexOf(e);n!==-1&&(i.splice(n,1),r.className=i.join(" "))}else r.className=void 0;return We},hasClass:function(r,e){return new RegExp("(?:^|\\s+)"+e+"(?:\\s+|$)").test(r.className)||!1},getWidth:function(r){var e=getComputedStyle(r);return Eh(e["border-left-width"])+Eh(e["border-right-width"])+Eh(e["padding-left"])+Eh(e["padding-right"])+Eh(e.width)},getHeight:function(r){var e=getComputedStyle(r);return Eh(e["border-top-width"])+Eh(e["border-bottom-width"])+Eh(e["padding-top"])+Eh(e["padding-bottom"])+Eh(e.height)},getOffset:function(r){var e=r,i={left:0,top:0};if(e.offsetParent)do i.left+=e.offsetLeft,i.top+=e.offsetTop,e=e.offsetParent;while(e);return i},isActive:function(r){return r===document.activeElement&&(r.type||r.href)}},tCe=function(t){am(r,t);function r(e,i){ou(this,r);var n=om(this,(r.__proto__||Object.getPrototypeOf(r)).call(this,e,i)),s=n;n.__prev=n.getValue(),n.__checkbox=document.createElement("input"),n.__checkbox.setAttribute("type","checkbox");function a(){s.setValue(!s.__prev)}return We.bind(n.__checkbox,"change",a,!1),n.domElement.appendChild(n.__checkbox),n.updateDisplay(),n}return lu(r,[{key:"setValue",value:function(i){var n=sm(r.prototype.__proto__||Object.getPrototypeOf(r.prototype),"setValue",this).call(this,i);return this.__onFinishChange&&this.__onFinishChange.call(this,this.getValue()),this.__prev=this.getValue(),n}},{key:"updateDisplay",value:function(){return this.getValue()===!0?(this.__checkbox.setAttribute("checked","checked"),this.__checkbox.checked=!0,this.__prev=!0):(this.__checkbox.checked=!1,this.__prev=!1),sm(r.prototype.__proto__||Object.getPrototypeOf(r.prototype),"updateDisplay",this).call(this)}}]),r}(N0),HNt=function(t){am(r,t);function r(e,i,n){ou(this,r);var s=om(this,(r.__proto__||Object.getPrototypeOf(r)).call(this,e,i)),a=n,o=s;if(s.__select=document.createElement("select"),ht.isArray(a)){var l={};ht.each(a,function(c){l[c]=c}),a=l}return ht.each(a,function(c,u){var h=document.createElement("option");h.innerHTML=u,h.setAttribute("value",c),o.__select.appendChild(h)}),s.updateDisplay(),We.bind(s.__select,"change",function(){var c=this.options[this.selectedIndex].value;o.setValue(c)}),s.domElement.appendChild(s.__select),s}return lu(r,[{key:"setValue",value:function(i){var n=sm(r.prototype.__proto__||Object.getPrototypeOf(r.prototype),"setValue",this).call(this,i);return this.__onFinishChange&&this.__onFinishChange.call(this,this.getValue()),n}},{key:"updateDisplay",value:function(){return We.isActive(this.__select)?this:(this.__select.value=this.getValue(),sm(r.prototype.__proto__||Object.getPrototypeOf(r.prototype),"updateDisplay",this).call(this))}}]),r}(N0),UNt=function(t){am(r,t);function r(e,i){ou(this,r);var n=om(this,(r.__proto__||Object.getPrototypeOf(r)).call(this,e,i)),s=n;function a(){s.setValue(s.__input.value)}function o(){s.__onFinishChange&&s.__onFinishChange.call(s,s.getValue())}return n.__input=document.createElement("input"),n.__input.setAttribute("type","text"),We.bind(n.__input,"keyup",a),We.bind(n.__input,"change",a),We.bind(n.__input,"blur",o),We.bind(n.__input,"keydown",function(l){l.keyCode===13&&this.blur()}),n.updateDisplay(),n.domElement.appendChild(n.__input),n}return lu(r,[{key:"updateDisplay",value:function(){return We.isActive(this.__input)||(this.__input.value=this.getValue()),sm(r.prototype.__proto__||Object.getPrototypeOf(r.prototype),"updateDisplay",this).call(this)}}]),r}(N0);function WDe(t){var r=t.toString();return r.indexOf(".")>-1?r.length-r.indexOf(".")-1:0}var rCe=function(t){am(r,t);function r(e,i,n){ou(this,r);var s=om(this,(r.__proto__||Object.getPrototypeOf(r)).call(this,e,i)),a=n||{};return s.__min=a.min,s.__max=a.max,s.__step=a.step,ht.isUndefined(s.__step)?s.initialValue===0?s.__impliedStep=1:s.__impliedStep=Math.pow(10,Math.floor(Math.log(Math.abs(s.initialValue))/Math.LN10))/10:s.__impliedStep=s.__step,s.__precision=WDe(s.__impliedStep),s}return lu(r,[{key:"setValue",value:function(i){var n=i;return this.__min!==void 0&&n<this.__min?n=this.__min:this.__max!==void 0&&n>this.__max&&(n=this.__max),this.__step!==void 0&&n%this.__step!==0&&(n=Math.round(n/this.__step)*this.__step),sm(r.prototype.__proto__||Object.getPrototypeOf(r.prototype),"setValue",this).call(this,n)}},{key:"min",value:function(i){return this.__min=i,this}},{key:"max",value:function(i){return this.__max=i,this}},{key:"step",value:function(i){return this.__step=i,this.__impliedStep=i,this.__precision=WDe(i),this}}]),r}(N0);function BNt(t,r){var e=Math.pow(10,r);return Math.round(t*e)/e}var x3=function(t){am(r,t);function r(e,i,n){ou(this,r);var s=om(this,(r.__proto__||Object.getPrototypeOf(r)).call(this,e,i,n));s.__truncationSuspended=!1;var a=s,o=void 0;function l(){var f=parseFloat(a.__input.value);ht.isNaN(f)||a.setValue(f)}function c(){a.__onFinishChange&&a.__onFinishChange.call(a,a.getValue())}function u(){c()}function h(f){var m=o-f.clientY;a.setValue(a.getValue()+m*a.__impliedStep),o=f.clientY}function p(){We.unbind(window,"mousemove",h),We.unbind(window,"mouseup",p),c()}function d(f){We.bind(window,"mousemove",h),We.bind(window,"mouseup",p),o=f.clientY}return s.__input=document.createElement("input"),s.__input.setAttribute("type","text"),We.bind(s.__input,"change",l),We.bind(s.__input,"blur",u),We.bind(s.__input,"mousedown",d),We.bind(s.__input,"keydown",function(f){f.keyCode===13&&(a.__truncationSuspended=!0,this.blur(),a.__truncationSuspended=!1,c())}),s.updateDisplay(),s.domElement.appendChild(s.__input),s}return lu(r,[{key:"updateDisplay",value:function(){return this.__input.value=this.__truncationSuspended?this.getValue():BNt(this.getValue(),this.__precision),sm(r.prototype.__proto__||Object.getPrototypeOf(r.prototype),"updateDisplay",this).call(this)}}]),r}(rCe);function qDe(t,r,e,i,n){return i+(n-i)*((t-r)/(e-r))}var AG=function(t){am(r,t);function r(e,i,n,s,a){ou(this,r);var o=om(this,(r.__proto__||Object.getPrototypeOf(r)).call(this,e,i,{min:n,max:s,step:a})),l=o;o.__background=document.createElement("div"),o.__foreground=document.createElement("div"),We.bind(o.__background,"mousedown",c),We.bind(o.__background,"touchstart",p),We.addClass(o.__background,"slider"),We.addClass(o.__foreground,"slider-fg");function c(m){document.activeElement.blur(),We.bind(window,"mousemove",u),We.bind(window,"mouseup",h),u(m)}function u(m){m.preventDefault();var g=l.__background.getBoundingClientRect();return l.setValue(qDe(m.clientX,g.left,g.right,l.__min,l.__max)),!1}function h(){We.unbind(window,"mousemove",u),We.unbind(window,"mouseup",h),l.__onFinishChange&&l.__onFinishChange.call(l,l.getValue())}function p(m){m.touches.length===1&&(We.bind(window,"touchmove",d),We.bind(window,"touchend",f),d(m))}function d(m){var g=m.touches[0].clientX,y=l.__background.getBoundingClientRect();l.setValue(qDe(g,y.left,y.right,l.__min,l.__max))}function f(){We.unbind(window,"touchmove",d),We.unbind(window,"touchend",f),l.__onFinishChange&&l.__onFinishChange.call(l,l.getValue())}return o.updateDisplay(),o.__background.appendChild(o.__foreground),o.domElement.appendChild(o.__background),o}return lu(r,[{key:"updateDisplay",value:function(){var i=(this.getValue()-this.__min)/(this.__max-this.__min);return this.__foreground.style.width=i*100+"%",sm(r.prototype.__proto__||Object.getPrototypeOf(r.prototype),"updateDisplay",this).call(this)}}]),r}(rCe),iCe=function(t){am(r,t);function r(e,i,n){ou(this,r);var s=om(this,(r.__proto__||Object.getPrototypeOf(r)).call(this,e,i)),a=s;return s.__button=document.createElement("div"),s.__button.innerHTML=n===void 0?"Fire":n,We.bind(s.__button,"click",function(o){return o.preventDefault(),a.fire(),!1}),We.addClass(s.__button,"button"),s.domElement.appendChild(s.__button),s}return lu(r,[{key:"fire",value:function(){this.__onChange&&this.__onChange.call(this),this.getValue().call(this.object),this.__onFinishChange&&this.__onFinishChange.call(this,this.getValue())}}]),r}(N0),OG=function(t){am(r,t);function r(e,i){ou(this,r);var n=om(this,(r.__proto__||Object.getPrototypeOf(r)).call(this,e,i));n.__color=new Ls(n.getValue()),n.__temp=new Ls(0);var s=n;n.domElement=document.createElement("div"),We.makeSelectable(n.domElement,!1),n.__selector=document.createElement("div"),n.__selector.className="selector",n.__saturation_field=document.createElement("div"),n.__saturation_field.className="saturation-field",n.__field_knob=document.createElement("div"),n.__field_knob.className="field-knob",n.__field_knob_border="2px solid ",n.__hue_knob=document.createElement("div"),n.__hue_knob.className="hue-knob",n.__hue_field=document.createElement("div"),n.__hue_field.className="hue-field",n.__input=document.createElement("input"),n.__input.type="text",n.__input_textShadow="0 1px 1px ",We.bind(n.__input,"keydown",function(m){m.keyCode===13&&h.call(this)}),We.bind(n.__input,"blur",h),We.bind(n.__selector,"mousedown",function(){We.addClass(this,"drag").bind(window,"mouseup",function(){We.removeClass(s.__selector,"drag")})}),We.bind(n.__selector,"touchstart",function(){We.addClass(this,"drag").bind(window,"touchend",function(){We.removeClass(s.__selector,"drag")})});var a=document.createElement("div");ht.extend(n.__selector.style,{width:"122px",height:"102px",padding:"3px",backgroundColor:"#222",boxShadow:"0px 1px 3px rgba(0,0,0,0.3)"}),ht.extend(n.__field_knob.style,{position:"absolute",width:"12px",height:"12px",border:n.__field_knob_border+(n.__color.v<.5?"#fff":"#000"),boxShadow:"0px 1px 3px rgba(0,0,0,0.5)",borderRadius:"12px",zIndex:1}),ht.extend(n.__hue_knob.style,{position:"absolute",width:"15px",height:"2px",borderRight:"4px solid #fff",zIndex:1}),ht.extend(n.__saturation_field.style,{width:"100px",height:"100px",border:"1px solid #555",marginRight:"3px",display:"inline-block",cursor:"pointer"}),ht.extend(a.style,{width:"100%",height:"100%",background:"none"}),YDe(a,"top","rgba(0,0,0,0)","#000"),ht.extend(n.__hue_field.style,{width:"15px",height:"100px",border:"1px solid #555",cursor:"ns-resize",position:"absolute",top:"3px",right:"3px"}),GNt(n.__hue_field),ht.extend(n.__input.style,{outline:"none",textAlign:"center",color:"#fff",border:0,fontWeight:"bold",textShadow:n.__input_textShadow+"rgba(0,0,0,0.7)"}),We.bind(n.__saturation_field,"mousedown",o),We.bind(n.__saturation_field,"touchstart",o),We.bind(n.__field_knob,"mousedown",o),We.bind(n.__field_knob,"touchstart",o),We.bind(n.__hue_field,"mousedown",l),We.bind(n.__hue_field,"touchstart",l);function o(m){d(m),We.bind(window,"mousemove",d),We.bind(window,"touchmove",d),We.bind(window,"mouseup",c),We.bind(window,"touchend",c)}function l(m){f(m),We.bind(window,"mousemove",f),We.bind(window,"touchmove",f),We.bind(window,"mouseup",u),We.bind(window,"touchend",u)}function c(){We.unbind(window,"mousemove",d),We.unbind(window,"touchmove",d),We.unbind(window,"mouseup",c),We.unbind(window,"touchend",c),p()}function u(){We.unbind(window,"mousemove",f),We.unbind(window,"touchmove",f),We.unbind(window,"mouseup",u),We.unbind(window,"touchend",u),p()}function h(){var m=CG(this.value);m!==!1?(s.__color.__state=m,s.setValue(s.__color.toOriginal())):this.value=s.__color.toString()}function p(){s.__onFinishChange&&s.__onFinishChange.call(s,s.__color.toOriginal())}n.__saturation_field.appendChild(a),n.__selector.appendChild(n.__field_knob),n.__selector.appendChild(n.__saturation_field),n.__selector.appendChild(n.__hue_field),n.__hue_field.appendChild(n.__hue_knob),n.domElement.appendChild(n.__input),n.domElement.appendChild(n.__selector),n.updateDisplay();function d(m){m.type.indexOf("touch")===-1&&m.preventDefault();var g=s.__saturation_field.getBoundingClientRect(),y=m.touches&&m.touches[0]||m,E=y.clientX,b=y.clientY,x=(E-g.left)/(g.right-g.left),S=1-(b-g.top)/(g.bottom-g.top);return S>1?S=1:S<0&&(S=0),x>1?x=1:x<0&&(x=0),s.__color.v=S,s.__color.s=x,s.setValue(s.__color.toOriginal()),!1}function f(m){m.type.indexOf("touch")===-1&&m.preventDefault();var g=s.__hue_field.getBoundingClientRect(),y=m.touches&&m.touches[0]||m,E=y.clientY,b=1-(E-g.top)/(g.bottom-g.top);return b>1?b=1:b<0&&(b=0),s.__color.h=b*360,s.setValue(s.__color.toOriginal()),!1}return n}return lu(r,[{key:"updateDisplay",value:function(){var i=CG(this.getValue());if(i!==!1){var n=!1;ht.each(Ls.COMPONENTS,function(o){if(!ht.isUndefined(i[o])&&!ht.isUndefined(this.__color.__state[o])&&i[o]!==this.__color.__state[o])return n=!0,{}},this),n&&ht.extend(this.__color.__state,i)}ht.extend(this.__temp.__state,this.__color.__state),this.__temp.a=1;var s=this.__color.v<.5||this.__color.s>.5?255:0,a=255-s;ht.extend(this.__field_knob.style,{marginLeft:100*this.__color.s-7+"px",marginTop:100*(1-this.__color.v)-7+"px",backgroundColor:this.__temp.toHexString(),border:this.__field_knob_border+"rgb("+s+","+s+","+s+")"}),this.__hue_knob.style.marginTop=(1-this.__color.h/360)*100+"px",this.__temp.s=1,this.__temp.v=1,YDe(this.__saturation_field,"left","#fff",this.__temp.toHexString()),this.__input.value=this.__color.toString(),ht.extend(this.__input.style,{backgroundColor:this.__color.toHexString(),color:"rgb("+s+","+s+","+s+")",textShadow:this.__input_textShadow+"rgba("+a+","+a+","+a+",.7)"})}}]),r}(N0),kNt=["-moz-","-o-","-webkit-","-ms-",""];function YDe(t,r,e,i){t.style.background="",ht.each(kNt,function(n){t.style.cssText+="background: "+n+"linear-gradient("+r+", "+e+" 0%, "+i+" 100%); "})}function GNt(t){t.style.background="",t.style.cssText+="background: -moz-linear-gradient(top, #ff0000 0%, #ff00ff 17%, #0000ff 34%, #00ffff 50%, #00ff00 67%, #ffff00 84%, #ff0000 100%);",t.style.cssText+="background: -webkit-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);",t.style.cssText+="background: -o-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);",t.style.cssText+="background: -ms-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);",t.style.cssText+="background: linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);"}var VNt={load:function(r,e){var i=e||document,n=i.createElement("link");n.type="text/css",n.rel="stylesheet",n.href=r,i.getElementsByTagName("head")[0].appendChild(n)},inject:function(r,e){var i=e||document,n=document.createElement("style");n.type="text/css",n.innerHTML=r;var s=i.getElementsByTagName("head")[0];try{s.appendChild(n)}catch(a){}}},zNt=`<div id="dg-save" class="dg dialogue">
|
||
|
||
Here's the new load parameter for your <code>GUI</code>'s constructor:
|
||
|
||
<textarea id="dg-new-constructor"></textarea>
|
||
|
||
<div id="dg-save-locally">
|
||
|
||
<input id="dg-local-storage" type="checkbox"/> Automatically save
|
||
values to <code>localStorage</code> on exit.
|
||
|
||
<div id="dg-local-explain">The values saved to <code>localStorage</code> will
|
||
override those passed to <code>dat.GUI</code>'s constructor. This makes it
|
||
easier to work incrementally, but <code>localStorage</code> is fragile,
|
||
and your friends may not see the same values you do.
|
||
|
||
</div>
|
||
|
||
</div>
|
||
|
||
</div>`,jNt=function(r,e){var i=r[e];return ht.isArray(arguments[2])||ht.isObject(arguments[2])?new HNt(r,e,arguments[2]):ht.isNumber(i)?ht.isNumber(arguments[2])&&ht.isNumber(arguments[3])?ht.isNumber(arguments[4])?new AG(r,e,arguments[2],arguments[3],arguments[4]):new AG(r,e,arguments[2],arguments[3]):ht.isNumber(arguments[4])?new x3(r,e,{min:arguments[2],max:arguments[3],step:arguments[4]}):new x3(r,e,{min:arguments[2],max:arguments[3]}):ht.isString(i)?new UNt(r,e):ht.isFunction(i)?new iCe(r,e,""):ht.isBoolean(i)?new tCe(r,e):null};function WNt(t){setTimeout(t,1e3/60)}var qNt=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||WNt,YNt=function(){function t(){ou(this,t),this.backgroundElement=document.createElement("div"),ht.extend(this.backgroundElement.style,{backgroundColor:"rgba(0,0,0,0.8)",top:0,left:0,display:"none",zIndex:"1000",opacity:0,WebkitTransition:"opacity 0.2s linear",transition:"opacity 0.2s linear"}),We.makeFullscreen(this.backgroundElement),this.backgroundElement.style.position="fixed",this.domElement=document.createElement("div"),ht.extend(this.domElement.style,{position:"fixed",display:"none",zIndex:"1001",opacity:0,WebkitTransition:"-webkit-transform 0.2s ease-out, opacity 0.2s linear",transition:"transform 0.2s ease-out, opacity 0.2s linear"}),document.body.appendChild(this.backgroundElement),document.body.appendChild(this.domElement);var r=this;We.bind(this.backgroundElement,"click",function(){r.hide()})}return lu(t,[{key:"show",value:function(){var e=this;this.backgroundElement.style.display="block",this.domElement.style.display="block",this.domElement.style.opacity=0,this.domElement.style.webkitTransform="scale(1.1)",this.layout(),ht.defer(function(){e.backgroundElement.style.opacity=1,e.domElement.style.opacity=1,e.domElement.style.webkitTransform="scale(1)"})}},{key:"hide",value:function(){var e=this,i=function n(){e.domElement.style.display="none",e.backgroundElement.style.display="none",We.unbind(e.domElement,"webkitTransitionEnd",n),We.unbind(e.domElement,"transitionend",n),We.unbind(e.domElement,"oTransitionEnd",n)};We.bind(this.domElement,"webkitTransitionEnd",i),We.bind(this.domElement,"transitionend",i),We.bind(this.domElement,"oTransitionEnd",i),this.backgroundElement.style.opacity=0,this.domElement.style.opacity=0,this.domElement.style.webkitTransform="scale(1.1)"}},{key:"layout",value:function(){this.domElement.style.left=window.innerWidth/2-We.getWidth(this.domElement)/2+"px",this.domElement.style.top=window.innerHeight/2-We.getHeight(this.domElement)/2+"px"}}]),t}(),XNt=ONt(`.dg ul{list-style:none;margin:0;padding:0;width:100%;clear:both}.dg.ac{position:fixed;top:0;left:0;right:0;height:0;z-index:0}.dg:not(.ac) .main{overflow:hidden}.dg.main{-webkit-transition:opacity .1s linear;-o-transition:opacity .1s linear;-moz-transition:opacity .1s linear;transition:opacity .1s linear}.dg.main.taller-than-window{overflow-y:auto}.dg.main.taller-than-window .close-button{opacity:1;margin-top:-1px;border-top:1px solid #2c2c2c}.dg.main ul.closed .close-button{opacity:1 !important}.dg.main:hover .close-button,.dg.main .close-button.drag{opacity:1}.dg.main .close-button{-webkit-transition:opacity .1s linear;-o-transition:opacity .1s linear;-moz-transition:opacity .1s linear;transition:opacity .1s linear;border:0;line-height:19px;height:20px;cursor:pointer;text-align:center;background-color:#000}.dg.main .close-button.close-top{position:relative}.dg.main .close-button.close-bottom{position:absolute}.dg.main .close-button:hover{background-color:#111}.dg.a{float:right;margin-right:15px;overflow-y:visible}.dg.a.has-save>ul.close-top{margin-top:0}.dg.a.has-save>ul.close-bottom{margin-top:27px}.dg.a.has-save>ul.closed{margin-top:0}.dg.a .save-row{top:0;z-index:1002}.dg.a .save-row.close-top{position:relative}.dg.a .save-row.close-bottom{position:fixed}.dg li{-webkit-transition:height .1s ease-out;-o-transition:height .1s ease-out;-moz-transition:height .1s ease-out;transition:height .1s ease-out;-webkit-transition:overflow .1s linear;-o-transition:overflow .1s linear;-moz-transition:overflow .1s linear;transition:overflow .1s linear}.dg li:not(.folder){cursor:auto;height:27px;line-height:27px;padding:0 4px 0 5px}.dg li.folder{padding:0;border-left:4px solid rgba(0,0,0,0)}.dg li.title{cursor:pointer;margin-left:-4px}.dg .closed li:not(.title),.dg .closed ul li,.dg .closed ul li>*{height:0;overflow:hidden;border:0}.dg .cr{clear:both;padding-left:3px;height:27px;overflow:hidden}.dg .property-name{cursor:default;float:left;clear:left;width:40%;overflow:hidden;text-overflow:ellipsis}.dg .cr.function .property-name{width:100%}.dg .c{float:left;width:60%;position:relative}.dg .c input[type=text]{border:0;margin-top:4px;padding:3px;width:100%;float:right}.dg .has-slider input[type=text]{width:30%;margin-left:0}.dg .slider{float:left;width:66%;margin-left:-5px;margin-right:0;height:19px;margin-top:4px}.dg .slider-fg{height:100%}.dg .c input[type=checkbox]{margin-top:7px}.dg .c select{margin-top:5px}.dg .cr.function,.dg .cr.function .property-name,.dg .cr.function *,.dg .cr.boolean,.dg .cr.boolean *{cursor:pointer}.dg .cr.color{overflow:visible}.dg .selector{display:none;position:absolute;margin-left:-9px;margin-top:23px;z-index:10}.dg .c:hover .selector,.dg .selector.drag{display:block}.dg li.save-row{padding:0}.dg li.save-row .button{display:inline-block;padding:0px 6px}.dg.dialogue{background-color:#222;width:460px;padding:15px;font-size:13px;line-height:15px}#dg-new-constructor{padding:10px;color:#222;font-family:Monaco, monospace;font-size:10px;border:0;resize:none;box-shadow:inset 1px 1px 1px #888;word-wrap:break-word;margin:12px 0;display:block;width:440px;overflow-y:scroll;height:100px;position:relative}#dg-local-explain{display:none;font-size:11px;line-height:17px;border-radius:3px;background-color:#333;padding:8px;margin-top:10px}#dg-local-explain code{font-size:10px}#dat-gui-save-locally{display:none}.dg{color:#eee;font:11px 'Lucida Grande', sans-serif;text-shadow:0 -1px 0 #111}.dg.main::-webkit-scrollbar{width:5px;background:#1a1a1a}.dg.main::-webkit-scrollbar-corner{height:0;display:none}.dg.main::-webkit-scrollbar-thumb{border-radius:5px;background:#676767}.dg li:not(.folder){background:#1a1a1a;border-bottom:1px solid #2c2c2c}.dg li.save-row{line-height:25px;background:#dad5cb;border:0}.dg li.save-row select{margin-left:5px;width:108px}.dg li.save-row .button{margin-left:5px;margin-top:1px;border-radius:2px;font-size:9px;line-height:7px;padding:4px 4px 5px 4px;background:#c5bdad;color:#fff;text-shadow:0 1px 0 #b0a58f;box-shadow:0 -1px 0 #b0a58f;cursor:pointer}.dg li.save-row .button.gears{background:#c5bdad url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAANCAYAAAB/9ZQ7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQJJREFUeNpiYKAU/P//PwGIC/ApCABiBSAW+I8AClAcgKxQ4T9hoMAEUrxx2QSGN6+egDX+/vWT4e7N82AMYoPAx/evwWoYoSYbACX2s7KxCxzcsezDh3evFoDEBYTEEqycggWAzA9AuUSQQgeYPa9fPv6/YWm/Acx5IPb7ty/fw+QZblw67vDs8R0YHyQhgObx+yAJkBqmG5dPPDh1aPOGR/eugW0G4vlIoTIfyFcA+QekhhHJhPdQxbiAIguMBTQZrPD7108M6roWYDFQiIAAv6Aow/1bFwXgis+f2LUAynwoIaNcz8XNx3Dl7MEJUDGQpx9gtQ8YCueB+D26OECAAQDadt7e46D42QAAAABJRU5ErkJggg==) 2px 1px no-repeat;height:7px;width:8px}.dg li.save-row .button:hover{background-color:#bab19e;box-shadow:0 -1px 0 #b0a58f}.dg li.folder{border-bottom:0}.dg li.title{padding-left:16px;background:#000 url(data:image/gif;base64,R0lGODlhBQAFAJEAAP////Pz8////////yH5BAEAAAIALAAAAAAFAAUAAAIIlI+hKgFxoCgAOw==) 6px 10px no-repeat;cursor:pointer;border-bottom:1px solid rgba(255,255,255,0.2)}.dg .closed li.title{background-image:url(data:image/gif;base64,R0lGODlhBQAFAJEAAP////Pz8////////yH5BAEAAAIALAAAAAAFAAUAAAIIlGIWqMCbWAEAOw==)}.dg .cr.boolean{border-left:3px solid #806787}.dg .cr.color{border-left:3px solid}.dg .cr.function{border-left:3px solid #e61d5f}.dg .cr.number{border-left:3px solid #2FA1D6}.dg .cr.number input[type=text]{color:#2FA1D6}.dg .cr.string{border-left:3px solid #1ed36f}.dg .cr.string input[type=text]{color:#1ed36f}.dg .cr.function:hover,.dg .cr.boolean:hover{background:#111}.dg .c input[type=text]{background:#303030;outline:none}.dg .c input[type=text]:hover{background:#3c3c3c}.dg .c input[type=text]:focus{background:#494949;color:#fff}.dg .c .slider{background:#303030;cursor:ew-resize}.dg .c .slider-fg{background:#2FA1D6;max-width:100%}.dg .c .slider:hover{background:#3c3c3c}.dg .c .slider:hover .slider-fg{background:#44abda}
|
||
`);VNt.inject(XNt);var XDe="dg",$De=72,ZDe=20,JS="Default",$S=function(){try{return!!window.localStorage}catch(t){return!1}}(),ZS=void 0,KDe=!0,bE=void 0,DG=!1,nCe=[],Tn=function t(r){var e=this,i=r||{};this.domElement=document.createElement("div"),this.__ul=document.createElement("ul"),this.domElement.appendChild(this.__ul),We.addClass(this.domElement,XDe),this.__folders={},this.__controllers=[],this.__rememberedObjects=[],this.__rememberedObjectIndecesToControllers=[],this.__listening=[],i=ht.defaults(i,{closeOnTop:!1,autoPlace:!0,width:t.DEFAULT_WIDTH}),i=ht.defaults(i,{resizable:i.autoPlace,hideable:i.autoPlace}),ht.isUndefined(i.load)?i.load={preset:JS}:i.preset&&(i.load.preset=i.preset),ht.isUndefined(i.parent)&&i.hideable&&nCe.push(this),i.resizable=ht.isUndefined(i.parent)&&i.resizable,i.autoPlace&&ht.isUndefined(i.scrollable)&&(i.scrollable=!0);var n=$S&&localStorage.getItem(xE(this,"isLocal"))==="true",s=void 0,a=void 0;if(Object.defineProperties(this,{parent:{get:function(){return i.parent}},scrollable:{get:function(){return i.scrollable}},autoPlace:{get:function(){return i.autoPlace}},closeOnTop:{get:function(){return i.closeOnTop}},preset:{get:function(){return e.parent?e.getRoot().preset:i.load.preset},set:function(p){e.parent?e.getRoot().preset=p:i.load.preset=p,JNt(this),e.revert()}},width:{get:function(){return i.width},set:function(p){i.width=p,LG(e,p)}},name:{get:function(){return i.name},set:function(p){i.name=p,a&&(a.innerHTML=i.name)}},closed:{get:function(){return i.closed},set:function(p){i.closed=p,i.closed?We.addClass(e.__ul,t.CLASS_CLOSED):We.removeClass(e.__ul,t.CLASS_CLOSED),this.onResize(),e.__closeButton&&(e.__closeButton.innerHTML=p?t.TEXT_OPEN:t.TEXT_CLOSED)}},load:{get:function(){return i.load}},useLocalStorage:{get:function(){return n},set:function(p){$S&&(n=p,p?We.bind(window,"unload",s):We.unbind(window,"unload",s),localStorage.setItem(xE(e,"isLocal"),p))}}}),ht.isUndefined(i.parent)){if(this.closed=i.closed||!1,We.addClass(this.domElement,t.CLASS_MAIN),We.makeSelectable(this.domElement,!1),$S&&n){e.useLocalStorage=!0;var o=localStorage.getItem(xE(this,"gui"));o&&(i.load=JSON.parse(o))}this.__closeButton=document.createElement("div"),this.__closeButton.innerHTML=t.TEXT_CLOSED,We.addClass(this.__closeButton,t.CLASS_CLOSE_BUTTON),i.closeOnTop?(We.addClass(this.__closeButton,t.CLASS_CLOSE_TOP),this.domElement.insertBefore(this.__closeButton,this.domElement.childNodes[0])):(We.addClass(this.__closeButton,t.CLASS_CLOSE_BOTTOM),this.domElement.appendChild(this.__closeButton)),We.bind(this.__closeButton,"click",function(){e.closed=!e.closed})}else{i.closed===void 0&&(i.closed=!0);var l=document.createTextNode(i.name);We.addClass(l,"controller-name"),a=UG(e,l);var c=function(p){return p.preventDefault(),e.closed=!e.closed,!1};We.addClass(this.__ul,t.CLASS_CLOSED),We.addClass(a,"title"),We.bind(a,"click",c),i.closed||(this.closed=!1)}i.autoPlace&&(ht.isUndefined(i.parent)&&(KDe&&(bE=document.createElement("div"),We.addClass(bE,XDe),We.addClass(bE,t.CLASS_AUTO_PLACE_CONTAINER),document.body.appendChild(bE),KDe=!1),bE.appendChild(this.domElement),We.addClass(this.domElement,t.CLASS_AUTO_PLACE)),this.parent||LG(e,i.width)),this.__resizeHandler=function(){e.onResizeDebounced()},We.bind(window,"resize",this.__resizeHandler),We.bind(this.__ul,"webkitTransitionEnd",this.__resizeHandler),We.bind(this.__ul,"transitionend",this.__resizeHandler),We.bind(this.__ul,"oTransitionEnd",this.__resizeHandler),this.onResize(),i.resizable&&KNt(this),s=function(){$S&&localStorage.getItem(xE(e,"isLocal"))==="true"&&localStorage.setItem(xE(e,"gui"),JSON.stringify(e.getSaveObject()))},this.saveToLocalStorageIfPossible=s;function u(){var h=e.getRoot();h.width+=1,ht.defer(function(){h.width-=1})}i.parent||u()};Tn.toggleHide=function(){DG=!DG,ht.each(nCe,function(t){t.domElement.style.display=DG?"none":""})};Tn.CLASS_AUTO_PLACE="a";Tn.CLASS_AUTO_PLACE_CONTAINER="ac";Tn.CLASS_MAIN="main";Tn.CLASS_CONTROLLER_ROW="cr";Tn.CLASS_TOO_TALL="taller-than-window";Tn.CLASS_CLOSED="closed";Tn.CLASS_CLOSE_BUTTON="close-button";Tn.CLASS_CLOSE_TOP="close-top";Tn.CLASS_CLOSE_BOTTOM="close-bottom";Tn.CLASS_DRAG="drag";Tn.DEFAULT_WIDTH=245;Tn.TEXT_CLOSED="Close Controls";Tn.TEXT_OPEN="Open Controls";Tn._keydownHandler=function(t){document.activeElement.type!=="text"&&(t.which===$De||t.keyCode===$De)&&Tn.toggleHide()};We.bind(window,"keydown",Tn._keydownHandler,!1);ht.extend(Tn.prototype,{add:function(r,e){return KS(this,r,e,{factoryArgs:Array.prototype.slice.call(arguments,2)})},addColor:function(r,e){return KS(this,r,e,{color:!0})},remove:function(r){this.__ul.removeChild(r.__li),this.__controllers.splice(this.__controllers.indexOf(r),1);var e=this;ht.defer(function(){e.onResize()})},destroy:function(){if(this.parent)throw new Error("Only the root GUI should be removed with .destroy(). For subfolders, use gui.removeFolder(folder) instead.");this.autoPlace&&bE.removeChild(this.domElement);var r=this;ht.each(this.__folders,function(e){r.removeFolder(e)}),We.unbind(window,"keydown",Tn._keydownHandler,!1),JDe(this)},addFolder:function(r){if(this.__folders[r]!==void 0)throw new Error('You already have a folder in this GUI by the name "'+r+'"');var e={name:r,parent:this};e.autoPlace=this.autoPlace,this.load&&this.load.folders&&this.load.folders[r]&&(e.closed=this.load.folders[r].closed,e.load=this.load.folders[r]);var i=new Tn(e);this.__folders[r]=i;var n=UG(this,i.domElement);return We.addClass(n,"folder"),i},removeFolder:function(r){this.__ul.removeChild(r.domElement.parentElement),delete this.__folders[r.name],this.load&&this.load.folders&&this.load.folders[r.name]&&delete this.load.folders[r.name],JDe(r);var e=this;ht.each(r.__folders,function(i){r.removeFolder(i)}),ht.defer(function(){e.onResize()})},open:function(){this.closed=!1},close:function(){this.closed=!0},hide:function(){this.domElement.style.display="none"},show:function(){this.domElement.style.display=""},onResize:function(){var r=this.getRoot();if(r.scrollable){var e=We.getOffset(r.__ul).top,i=0;ht.each(r.__ul.childNodes,function(n){r.autoPlace&&n===r.__save_row||(i+=We.getHeight(n))}),window.innerHeight-e-ZDe<i?(We.addClass(r.domElement,Tn.CLASS_TOO_TALL),r.__ul.style.height=window.innerHeight-e-ZDe+"px"):(We.removeClass(r.domElement,Tn.CLASS_TOO_TALL),r.__ul.style.height="auto")}r.__resize_handle&&ht.defer(function(){r.__resize_handle.style.height=r.__ul.offsetHeight+"px"}),r.__closeButton&&(r.__closeButton.style.width=r.width+"px")},onResizeDebounced:ht.debounce(function(){this.onResize()},50),remember:function(){if(ht.isUndefined(ZS)&&(ZS=new YNt,ZS.domElement.innerHTML=zNt),this.parent)throw new Error("You can only call remember on a top level GUI.");var r=this;ht.each(Array.prototype.slice.call(arguments),function(e){r.__rememberedObjects.length===0&&ZNt(r),r.__rememberedObjects.indexOf(e)===-1&&r.__rememberedObjects.push(e)}),this.autoPlace&&LG(this,this.width)},getRoot:function(){for(var r=this;r.parent;)r=r.parent;return r},getSaveObject:function(){var r=this.load;return r.closed=this.closed,this.__rememberedObjects.length>0&&(r.preset=this.preset,r.remembered||(r.remembered={}),r.remembered[this.preset]=E3(this)),r.folders={},ht.each(this.__folders,function(e,i){r.folders[i]=e.getSaveObject()}),r},save:function(){this.load.remembered||(this.load.remembered={}),this.load.remembered[this.preset]=E3(this),PG(this,!1),this.saveToLocalStorageIfPossible()},saveAs:function(r){this.load.remembered||(this.load.remembered={},this.load.remembered[JS]=E3(this,!0)),this.load.remembered[r]=E3(this),this.preset=r,NG(this,r,!0),this.saveToLocalStorageIfPossible()},revert:function(r){ht.each(this.__controllers,function(e){this.getRoot().load.remembered?sCe(r||this.getRoot(),e):e.setValue(e.initialValue),e.__onFinishChange&&e.__onFinishChange.call(e,e.getValue())},this),ht.each(this.__folders,function(e){e.revert(e)}),r||PG(this.getRoot(),!1)},listen:function(r){var e=this.__listening.length===0;this.__listening.push(r),e&&aCe(this.__listening)},updateDisplay:function(){ht.each(this.__controllers,function(r){r.updateDisplay()}),ht.each(this.__folders,function(r){r.updateDisplay()})}});function UG(t,r,e){var i=document.createElement("li");return r&&i.appendChild(r),e?t.__ul.insertBefore(i,e):t.__ul.appendChild(i),t.onResize(),i}function JDe(t){We.unbind(window,"resize",t.__resizeHandler),t.saveToLocalStorageIfPossible&&We.unbind(window,"unload",t.saveToLocalStorageIfPossible)}function PG(t,r){var e=t.__preset_select[t.__preset_select.selectedIndex];r?e.innerHTML=e.value+"*":e.innerHTML=e.value}function $Nt(t,r,e){if(e.__li=r,e.__gui=t,ht.extend(e,{options:function(a){if(arguments.length>1){var o=e.__li.nextElementSibling;return e.remove(),KS(t,e.object,e.property,{before:o,factoryArgs:[ht.toArray(arguments)]})}if(ht.isArray(a)||ht.isObject(a)){var l=e.__li.nextElementSibling;return e.remove(),KS(t,e.object,e.property,{before:l,factoryArgs:[a]})}},name:function(a){return e.__li.firstElementChild.firstElementChild.innerHTML=a,e},listen:function(){return e.__gui.listen(e),e},remove:function(){return e.__gui.remove(e),e}}),e instanceof AG){var i=new x3(e.object,e.property,{min:e.__min,max:e.__max,step:e.__step});ht.each(["updateDisplay","onChange","onFinishChange","step","min","max"],function(s){var a=e[s],o=i[s];e[s]=i[s]=function(){var l=Array.prototype.slice.call(arguments);return o.apply(i,l),a.apply(e,l)}}),We.addClass(r,"has-slider"),e.domElement.insertBefore(i.domElement,e.domElement.firstElementChild)}else if(e instanceof x3){var n=function(a){if(ht.isNumber(e.__min)&&ht.isNumber(e.__max)){var o=e.__li.firstElementChild.firstElementChild.innerHTML,l=e.__gui.__listening.indexOf(e)>-1;e.remove();var c=KS(t,e.object,e.property,{before:e.__li.nextElementSibling,factoryArgs:[e.__min,e.__max,e.__step]});return c.name(o),l&&c.listen(),c}return a};e.min=ht.compose(n,e.min),e.max=ht.compose(n,e.max)}else e instanceof tCe?(We.bind(r,"click",function(){We.fakeEvent(e.__checkbox,"click")}),We.bind(e.__checkbox,"click",function(s){s.stopPropagation()})):e instanceof iCe?(We.bind(r,"click",function(){We.fakeEvent(e.__button,"click")}),We.bind(r,"mouseover",function(){We.addClass(e.__button,"hover")}),We.bind(r,"mouseout",function(){We.removeClass(e.__button,"hover")})):e instanceof OG&&(We.addClass(r,"color"),e.updateDisplay=ht.compose(function(s){return r.style.borderLeftColor=e.__color.toString(),s},e.updateDisplay),e.updateDisplay());e.setValue=ht.compose(function(s){return t.getRoot().__preset_select&&e.isModified()&&PG(t.getRoot(),!0),s},e.setValue)}function sCe(t,r){var e=t.getRoot(),i=e.__rememberedObjects.indexOf(r.object);if(i!==-1){var n=e.__rememberedObjectIndecesToControllers[i];if(n===void 0&&(n={},e.__rememberedObjectIndecesToControllers[i]=n),n[r.property]=r,e.load&&e.load.remembered){var s=e.load.remembered,a=void 0;if(s[t.preset])a=s[t.preset];else if(s[JS])a=s[JS];else return;if(a[i]&&a[i][r.property]!==void 0){var o=a[i][r.property];r.initialValue=o,r.setValue(o)}}}}function KS(t,r,e,i){if(r[e]===void 0)throw new Error('Object "'+r+'" has no property "'+e+'"');var n=void 0;if(i.color)n=new OG(r,e);else{var s=[r,e].concat(i.factoryArgs);n=jNt.apply(t,s)}i.before instanceof N0&&(i.before=i.before.__li),sCe(t,n),We.addClass(n.domElement,"c");var a=document.createElement("span");We.addClass(a,"property-name"),a.innerHTML=n.property;var o=document.createElement("div");o.appendChild(a),o.appendChild(n.domElement);var l=UG(t,o,i.before);return We.addClass(l,Tn.CLASS_CONTROLLER_ROW),n instanceof OG?We.addClass(l,"color"):We.addClass(l,NNt(n.getValue())),$Nt(t,l,n),t.__controllers.push(n),n}function xE(t,r){return document.location.href+"."+r}function NG(t,r,e){var i=document.createElement("option");i.innerHTML=r,i.value=r,t.__preset_select.appendChild(i),e&&(t.__preset_select.selectedIndex=t.__preset_select.length-1)}function QDe(t,r){r.style.display=t.useLocalStorage?"block":"none"}function ZNt(t){var r=t.__save_row=document.createElement("li");We.addClass(t.domElement,"has-save"),t.__ul.insertBefore(r,t.__ul.firstChild),We.addClass(r,"save-row");var e=document.createElement("span");e.innerHTML=" ",We.addClass(e,"button gears");var i=document.createElement("span");i.innerHTML="Save",We.addClass(i,"button"),We.addClass(i,"save");var n=document.createElement("span");n.innerHTML="New",We.addClass(n,"button"),We.addClass(n,"save-as");var s=document.createElement("span");s.innerHTML="Revert",We.addClass(s,"button"),We.addClass(s,"revert");var a=t.__preset_select=document.createElement("select");if(t.load&&t.load.remembered?ht.each(t.load.remembered,function(h,p){NG(t,p,p===t.preset)}):NG(t,JS,!1),We.bind(a,"change",function(){for(var h=0;h<t.__preset_select.length;h++)t.__preset_select[h].innerHTML=t.__preset_select[h].value;t.preset=this.value}),r.appendChild(a),r.appendChild(e),r.appendChild(i),r.appendChild(n),r.appendChild(s),$S){var o=document.getElementById("dg-local-explain"),l=document.getElementById("dg-local-storage"),c=document.getElementById("dg-save-locally");c.style.display="block",localStorage.getItem(xE(t,"isLocal"))==="true"&&l.setAttribute("checked","checked"),QDe(t,o),We.bind(l,"change",function(){t.useLocalStorage=!t.useLocalStorage,QDe(t,o)})}var u=document.getElementById("dg-new-constructor");We.bind(u,"keydown",function(h){h.metaKey&&(h.which===67||h.keyCode===67)&&ZS.hide()}),We.bind(e,"click",function(){u.innerHTML=JSON.stringify(t.getSaveObject(),void 0,2),ZS.show(),u.focus(),u.select()}),We.bind(i,"click",function(){t.save()}),We.bind(n,"click",function(){var h=prompt("Enter a new preset name.");h&&t.saveAs(h)}),We.bind(s,"click",function(){t.revert()})}function KNt(t){var r=void 0;t.__resize_handle=document.createElement("div"),ht.extend(t.__resize_handle.style,{width:"6px",marginLeft:"-3px",height:"200px",cursor:"ew-resize",position:"absolute"});function e(s){return s.preventDefault(),t.width+=r-s.clientX,t.onResize(),r=s.clientX,!1}function i(){We.removeClass(t.__closeButton,Tn.CLASS_DRAG),We.unbind(window,"mousemove",e),We.unbind(window,"mouseup",i)}function n(s){return s.preventDefault(),r=s.clientX,We.addClass(t.__closeButton,Tn.CLASS_DRAG),We.bind(window,"mousemove",e),We.bind(window,"mouseup",i),!1}We.bind(t.__resize_handle,"mousedown",n),We.bind(t.__closeButton,"mousedown",n),t.domElement.insertBefore(t.__resize_handle,t.domElement.firstElementChild)}function LG(t,r){t.domElement.style.width=r+"px",t.__save_row&&t.autoPlace&&(t.__save_row.style.width=r+"px"),t.__closeButton&&(t.__closeButton.style.width=r+"px")}function E3(t,r){var e={};return ht.each(t.__rememberedObjects,function(i,n){var s={},a=t.__rememberedObjectIndecesToControllers[n];ht.each(a,function(o,l){s[l]=r?o.initialValue:o.getValue()}),e[n]=s}),e}function JNt(t){for(var r=0;r<t.__preset_select.length;r++)t.__preset_select[r].value===t.preset&&(t.__preset_select.selectedIndex=r)}function aCe(t){t.length!==0&&qNt.call(window,function(){aCe(t)}),ht.each(t,function(r){r.updateDisplay()})}var oCe=Tn;var lCe=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],dd=(()=>{let t=lCe[0],r={};for(let e of lCe)if((e==null?void 0:e[1])in document){for(let[n,s]of e.entries())r[t[n]]=s;return r}return!1})(),cCe={change:dd.fullscreenchange,error:dd.fullscreenerror},sl={request(t=document.documentElement,r){return new Promise((e,i)=>{let n=()=>{sl.off("change",n),e()};sl.on("change",n);let s=t[dd.requestFullscreen](r);s instanceof Promise&&s.then(n).catch(i)})},exit(){return new Promise((t,r)=>{if(!sl.isFullscreen){t();return}let e=()=>{sl.off("change",e),t()};sl.on("change",e);let i=document[dd.exitFullscreen]();i instanceof Promise&&i.then(e).catch(r)})},toggle(t,r){return sl.isFullscreen?sl.exit():sl.request(t,r)},onchange(t){sl.on("change",t)},onerror(t){sl.on("error",t)},on(t,r){let e=cCe[t];e&&document.addEventListener(e,r,!1)},off(t,r){let e=cCe[t];e&&document.removeEventListener(e,r,!1)},raw:dd};Object.defineProperties(sl,{isFullscreen:{get:()=>Boolean(document[dd.fullscreenElement])},element:{enumerable:!0,get:()=>{var t;return(t=document[dd.fullscreenElement])!=null?t:void 0}},isEnabled:{enumerable:!0,get:()=>Boolean(document[dd.fullscreenEnabled])}});dd||(sl={isEnabled:!1});var I3=sl;function uCe(t,r,e,i,n,s,a){let o=t.addFolder(r);o.add(e,"x",n,s,a).onChange(i),o.add(e,"y",n,s,a).onChange(i),o.add(e,"z",n,s,a).onChange(i)}var S3=class{constructor(r){this.exploderDict={};this.controls={showGroundGrid:!1,showGrassGround:!1,skyMode:["None","Black Background","White Background","Gradient ramp","Cloudy"],environments:["None","Default (City Streat 64x32)","Venice Sunset","Footprint Court (HDR Labs)","City Street"],homeView:()=>console.log("[DGH] Go to home view"),views:["Top","Bottom","Front","Back","Left","Right"],OrthographicCamera:!1,viewpoints:!1,annotations:!1,takeSnapshot:()=>console.log("[DGH] Taking snapshot..."),fullScreen:()=>console.log("[DGH] Full screen..."),webcam:!1,uploadFile:()=>console.log("[DGH] Upload file..."),showBimTree:!1,showPropertyPanel:!1,transparentMode:!1,showVertexNormals:!1,sectionMode:["No section","Box section","Plane section"],alVisible:!0,alColor:"#cccccc",alIntensity:1,dlColor:"#dddddd",showDlHelper:!1,hlVisible:!0,hlIntensity:1,hlColor:[255,255,255,.6],hlGroundColor:[200,255,200,.6],fogEnabled:!1,fogColor:14540253,fogNearDistance:1,fogFarDistance:1e3,composerEnabled:!1,renderPassEnabled:!1,fxaaEnabled:!1,saoEnabled:!1,ssaoEnabled:!1,outlineEnabled:!1,ssaaEnabled:!1,bloomEnabled:!1,unrealBloomEnabled:!1};this.viewer=r,this.init()}init(){if(!this.viewer||!this.viewer.renderer||!this.viewer.scene)throw new Error("Need to initialize renderer, scene first!");let r=this.viewer,e=this.viewer.scene,i=this.controls;this.gui=new oCe({name:"controls",autoPlace:!0,width:300,closed:!0}),this.gui.domElement.style.opacity="0.6";let n=this.gui.addFolder("Common settings");n.add(i,"showGroundGrid").name("Show ground grid").onChange(m=>{r.groundGrid?r.groundGrid.visible=m:m&&(r.groundGrid=Ks.createGroundGrid(),e.add(r.groundGrid),r.enableRender()),r.enableRender()}),n.add(i,"showGrassGround").name("Show grass ground").onChange(m=>{r.grassGround?r.grassGround.visible=m:m&&ot(this,null,function*(){r.grassGround=yield Ks.createGrassGround(),e.add(r.grassGround),r.enableRender()}),r.enableRender()});let s=n.add(i,"skyMode",i.skyMode).name("Sky mode");s.onChange(m=>{if(r.skyOfGradientRamp&&(r.skyOfGradientRamp.visible=m==="Gradient ramp"),m==="Black Background")e.background=new Ve(0);else if(m==="White Background")e.background=new Ve(16777215);else if(m==="Gradient ramp")r.skyOfGradientRamp||(r.skyOfGradientRamp=Xo.createSkyOfGradientRamp(),e.add(r.skyOfGradientRamp)),r.skyOfGradientRamp.visible=!0;else if(m==="Cloudy"){let g=["right.jpg","left.jpg","top.jpg","bottom.jpg","front.jpg","back.jpg"];g=g.map(y=>`${window.location.origin}/images/skybox/cloudy/${y}`),Xo.createSkyFromTextures(g).then(y=>{e.background=y})}else e.background=r.sceneBackgroundColor;r.enableRender()}),s.setValue("Gradient ramp"),n.add(i,"environments",i.environments).name("Environments").onChange(m=>{let g="";if(m==="Default (City Streat 64x32)"){if(r.pmremGenerator){Lc.createEnvTextureFromDataArray(r.pmremGenerator).then(y=>{e.environment=y}),r.enableRender();return}}else m==="Venice Sunset"?g="venice_sunset_1k.hdr":m==="Footprint Court (HDR Labs)"?g="footprint_court_2k.hdr":m==="City Street"&&(g="city_street_256.hdr");g===""?e.environment=null:(g=`${window.location.origin}/images/envmap/${g}`,Lc.createEnvTexture(r.pmremGenerator,g).then(y=>{e.environment=y})),r.enableRender()}),n.add(i,"homeView").name("Go to home view").onChange(()=>{r.goToHomeView()}),n.add(i,"views",i.views).name("Views").onChange(m=>{var x;let g=new A,y=new A,E=vn.getVisibleObjectBoundingBox(e),b=bs.getCameraDirectionByView(m);bs.getCameraPositionByBboxAndDirection(E,g,y,(x=r.camera)==null?void 0:x.projectionMatrix,b),r.flyTo(g,y)}),n.add(i,"OrthographicCamera").name("Orth Camera").onChange(m=>{r.setToOrthographicCamera(m)}),n.add(i,"takeSnapshot").name("Take snapshot").onChange(()=>{}),n.add(i,"fullScreen").name("Full screen").onChange(()=>{I3&&I3.isEnabled&&I3.request(),r.enableRender()}),n.add(i,"uploadFile").name("Upload file").onChange(()=>{new CS(r).openFileBrowserToUpload()});let o=this.gui.addFolder("Model operations");o.add(i,"transparentMode",i.transparentMode).name("Transparent mode").onChange(m=>{r.addOrRemoveObjectOpacity(m),r.enableRender()}),o.add(i,"showVertexNormals",i.showVertexNormals).name("Show Vertex Normals").onChange(m=>{r.showVertexNormals(m),r.enableRender()}),o.add(i,"sectionMode",i.sectionMode).name("Section mode").onChange(m=>{m==="No section"?r.deactivateSection():m==="Box section"?r.activateSection("ObjectsBoxSection"):m==="Plane section"&&r.activateSection("PickPlaneSection"),r.enableRender()});let l=this.viewer.ambientLight,c=this.gui.addFolder("Ambient light");c.add(i,"alVisible",i.alVisible).name("visible").onChange(m=>{l&&(l.visible=m),r.enableRender()}),c.addColor(i,"alColor").name("color").onChange(m=>{l&&(l.color=new Ve(m)),r.enableRender()}),c.add(i,"alIntensity",0,5).name("intensity").onChange(m=>{l&&(l.intensity=m),r.enableRender()});let u=this.viewer.directionalLight;if(u){let m=this.gui.addFolder("Directional light");m.add(u,"visible").name("visible").onChange(E=>{u&&(u.visible=E),r.enableRender()}),m.addColor(i,"dlColor").name("color").onChange(E=>{u&&(u.color=new Ve(E)),r.enableRender()}),m.add(u,"intensity",0,5).name("intensity").onChange(E=>{u&&(u.intensity=E),r.enableRender()}),m.add(u,"castShadow").name("castShadow").onChange(E=>{u&&(u.castShadow=E),r.enableRender()}),m.add(i,"showDlHelper").name("showDlHelper").onChange(E=>{r.showDirectionalLightHelper(E),r.enableRender()});let g=()=>{r.updateDirectionalLight(),r.enableRender()};uCe(m,"position",u.position,g),uCe(m,"target",u.target.position,g);let y=m.addFolder("shadow");y.add(u.shadow.camera,"near").name("near").onChange(g),y.add(u.shadow.camera,"far").name("far").onChange(g),y.add(u.shadow.camera,"zoom").name("zoom").onChange(g)}let h=this.viewer.hemisphereLight,p=this.gui.addFolder("Hemisphere Light");p.add(i,"hlVisible",i.hlVisible).name("visible").onChange(m=>{h&&(h.visible=m),r.enableRender()}),p.add(i,"hlIntensity",0,5).name("intensity").onChange(m=>{h&&(h.intensity=m),r.enableRender()}),p.addColor(i,"hlColor").name("color").onChange(m=>{h&&(h.color=new Ve(m)),r.enableRender()}),p.addColor(i,"hlGroundColor").name("groundColor").onChange(m=>{h&&(h.groundColor=new Ve(m)),r.enableRender()});let d=this.gui.addFolder("Fog");d.add(i,"fogEnabled",i.fogEnabled).name("Enabled").onChange(m=>{m?e.fog=new Uu(i.fogColor,i.fogNearDistance,i.fogFarDistance):e.fog=null,r.enableRender()}),d.add(i,"fogNearDistance",0,100).name("Near").onChange(m=>{i.fogEnabled&&e&&(e.fog=new Uu(i.fogColor,m,i.fogFarDistance)),r.enableRender()}),d.add(i,"fogFarDistance",100,2e3).name("Far").onChange(m=>{i.fogEnabled&&e&&(e.fog=new Uu(i.fogColor,i.fogNearDistance,m)),r.enableRender()});let f=this.gui.addFolder("Composer");f.add(i,"composerEnabled",i.composerEnabled).name("Composer Enabled").onChange(m=>{r.enableComposer(m)}),f.add(i,"renderPassEnabled",i.renderPassEnabled).name("RenderPass Enabled").onChange(m=>{r.enableRenderPass(m)}),f.add(i,"fxaaEnabled",i.fxaaEnabled).name("Effect FXAA Enabled").onChange(m=>{r.enableFxaaPass(m)}),f.add(i,"saoEnabled",i.saoEnabled).name("SAO Enabled").onChange(m=>{r.enableSaoPass(m)}),f.add(i,"ssaoEnabled",i.ssaoEnabled).name("SSAO Enabled").onChange(m=>{r.enableSsaoPass(m)}),f.add(i,"outlineEnabled",i.outlineEnabled).name("OutlinePass Enabled").onChange(m=>{r.enableOutlinePass(m)}),f.add(i,"ssaaEnabled",i.ssaaEnabled).name("SSAA Enabled").onChange(m=>{r.enableSsaaPass(m)}),f.add(i,"bloomEnabled",i.bloomEnabled).name("Bloom Enabled").onChange(m=>{r.enableBloomPass(m)}),f.add(i,"unrealBloomEnabled",i.unrealBloomEnabled).name("Unreal Bloom Enabled").onChange(m=>{r.enableUnrealBloomPass(m)})}setExplodeMode(r,e=!1){!this.viewer||!this.viewer.scene||!this.viewer.loadedModels||!this.exploderDict||(r?vn.explodeObjects(this.viewer.scene,this.exploderDict,Object.values(this.viewer.loadedModels).map(i=>i.id),e):vn.unexplodeObjects(this.viewer.scene,this.exploderDict||{}))}open(){this.gui&&this.gui.open()}close(){this.gui&&this.gui.close()}beforeDestroy(){this.viewer=void 0,this.gui&&this.gui.destroy(),this.gui=void 0,this.exploderDict=[]}};var _3=class{constructor(){this.vertexShader=`
|
||
varying vec2 vUv;
|
||
void main( void ) {
|
||
vUv = uv;
|
||
gl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0);
|
||
}`;this.fragmentShader=`
|
||
uniform vec3 keyColor;
|
||
uniform float similarity;
|
||
uniform float smoothness;
|
||
varying vec2 vUv;
|
||
uniform sampler2D map;
|
||
void main() {
|
||
vec4 videoColor = texture2D(map, vUv);
|
||
|
||
float Y1 = 0.299 * keyColor.r + 0.587 * keyColor.g + 0.114 * keyColor.b;
|
||
float Cr1 = keyColor.r - Y1;
|
||
float Cb1 = keyColor.b - Y1;
|
||
|
||
float Y2 = 0.299 * videoColor.r + 0.587 * videoColor.g + 0.114 * videoColor.b;
|
||
float Cr2 = videoColor.r - Y2;
|
||
float Cb2 = videoColor.b - Y2;
|
||
|
||
float blend = smoothstep(similarity, similarity + smoothness, distance(vec2(Cr2, Cb2), vec2(Cr1, Cb1)));
|
||
gl_FragColor = vec4(videoColor.rgb, videoColor.a * blend);
|
||
}`;let r=document.createElement("video");this.webcam=r;let e={video:{width:600,height:400}};navigator.mediaDevices.getUserMedia(e).then(s=>{r.srcObject=s,r.onloadedmetadata=()=>{r.setAttribute("autoplay","true"),r.setAttribute("playsinline","true"),r.play()}}).catch(function(s){alert(s.name+": "+s.message)}),this.webcamCanvas=document.createElement("canvas");let i=this.webcamCanvas.getContext("2d");this.canvasCtx=i,i.fillStyle="#000000",i.fillRect(0,0,this.webcamCanvas.width,this.webcamCanvas.height);let n=new Hi(this.webcamCanvas);this.webcamTexture=n,n.minFilter=ai,n.magFilter=ai,this.shaderMaterial=new Yt({transparent:!0,uniforms:{map:{value:n},keyColor:{value:[0,1,0]},similarity:{value:.3},smoothness:{value:0}},vertexShader:this.vertexShader,fragmentShader:this.fragmentShader})}getShaderMaterial(){return this.shaderMaterial}createWebCamPlane(r=5,e=4){let i=new ts(r,e);return new Je(i,this.shaderMaterial)}animate(){this.webcam.readyState===this.webcam.HAVE_ENOUGH_DATA&&(this.canvasCtx.drawImage(this.webcam,0,0,this.webcamCanvas.width,this.webcamCanvas.height),this.webcamTexture.needsUpdate=!0)}};var hCe=new A,pCe=new zi,BG=class extends Jf{constructor(e,i){var n;super(e);this.name="BimViewer";this.timer=Date.now();this.selectedObject=void 0;this.sceneBackgroundColor=new Ve(15463159);this.loadedModels={};this.loaded3dTiles={};this.composerRenderEnabled=!0;this.composerEnabled=!1;this.savedMaterialsForOpacity=[];this.mouseMoved=!1;this.mouseDoubleClicked=!1;this.raf=new uT;this.renderEnabled=!0;this.isFrustumInsectChecking=!1;this.lastFrameExecuteTime=Date.now();this.maxFps=60;this.events=[];this.settings=sT;this.jobCount=0;this.twoDModelCount=0;this.bbox=new Ot;this.onResize=()=>{var i;let e=(i=this.renderer)==null?void 0:i.domElement;e&&e.parentElement&&this.resize(e.parentElement.clientWidth,e.parentElement.clientHeight)};this.enableRender=(e=1e3)=>{this.renderEnabled=!0,this.raf&&(this.timeoutSymbol&&this.raf.clearTimeout(this.timeoutSymbol),this.timeoutSymbol=this.raf.setTimeout(()=>{this.renderEnabled=!1,this.composerRenderEnabled=!0},e))};this.applyOptionsAndAddToScene=(e,i,n)=>{ne.info(`[BimViewer] '${e}' is loaded in ${(Date.now()-this.timer)/1e3}s, adding to scene...`),this.timer=Date.now();let s=n.src&&n.src.toLowerCase();if(s&&s.endsWith("dxf")&&this.twoDModelCount++,n.matrix&&n.matrix.length===16){let l=new Ue;l.elements=n.matrix,i.applyMatrix4(l)}else{let l=n.position||[0,0,0],c=n.rotation||[0,0,0],u=n.scale||[1,1,1];i.position.set(l[0],l[1],l[2]),i.rotation.set(c[0]*Math.PI/180,c[1]*Math.PI/180,c[2]*Math.PI/180),i.scale.set(u[0],u[1],u[2])}i.matrixAutoUpdate=!1,i.updateMatrix(),i.traverse(l=>{!!1&&l.matrixAutoUpdate&&(l.matrixAutoUpdate=!1,l.updateMatrix())});let a=n.instantiate,o=n.merge;a?setTimeout(()=>{this.instantiate(i),setTimeout(()=>{o&&this.merge(i),this.addLoadedModelToScene(i,n)},0)},0):o?setTimeout(()=>{this.merge(i),setTimeout(()=>this.addLoadedModelToScene(i,n),0)},0):this.addLoadedModelToScene(i,n)};this.updateOrbPoint=()=>{var e;((e=this.anchor)==null?void 0:e.className.indexOf("active"))!==-1&&this.lastOrbPoint&&this.controls&&this.controls.setOrbitPoint(this.lastOrbPoint)};this.onPointerDown=e=>{var i,n;!((i=this.controls)!=null&&i.enableRotate)||!this.renderer||(n=this.sectionManager)!=null&&n.isSectionActive()||this.setOrbitPoint(e)};this.onAnchorPointerUp=()=>{this.anchor&&(this.anchor.className="anchor")};this.viewerCfg=Ur(Ur({},vDe),e),ne.info("[BimViewer]","viewerCfg:",this.viewerCfg),this.settings=sT,this.cameraCfg=i,this.cameraCfg&&this.cameraCfg.near&&(this.settings.camera.near=this.cameraCfg.near),this.cameraCfg&&this.cameraCfg.far&&(this.settings.camera.far=this.cameraCfg.far),this.increaseJobCount(),this.init(),this.animate(),this.renderer&&((n=this.viewerContainer)==null||n.append(this.renderer.domElement)),window.addEventListener("resize",this.onResize),window.addEventListener("keyup",s=>{s.altKey&&s.code==="KeyR"&&this.flyToRandomObject()}),this.decreaseJobCount(),ne.info(`[BimViewer] Initialized in ${(Date.now()-this.timer)/1e3}s`)}init(){let e=this.viewerCfg;this.initSpinner(),this.initScene(),this.initRenderer(),this.initCamera(),this.initControls(),this.initLights(),this.initPointerEvents(),e.enableDatGui===!0&&this.initDatGui(),this.initOthers(),e.enableAxisGizmo===!0&&(this.axes=this.initAxes()),e.enableStats===!0&&(this.stats=this.initStats()),e.enableToolbar&&(this.toolbar=this.initToolbar()),e.enableBottomBar&&(this.bottomBar=this.initBottomBar()),e.enableNavCube&&(this.navCube=this.initNavCube()),e.enableContextMenu&&(this.contextMenu=this.initContextMenu())}initScene(){this.scene=new On,this.scene.matrixAutoUpdate=!1}initRenderer(){this.renderer=new Pl({antialias:!0,preserveDrawingBuffer:!0}),this.renderer.setPixelRatio(window.devicePixelRatio),this.renderer.setSize(this.width,this.height),this.renderer.outputEncoding=yr,this.renderer.toneMappingExposure=1,this.renderer.physicallyCorrectLights=!0,this.renderer.setClearColor(11119017,1),this.renderer.shadowMap.enabled=!0,this.renderer.shadowMap.type=Ly,St.printGpuInfo(this.renderer.getContext()),this.pmremGenerator=new yp(this.renderer),this.pmremGenerator.compileEquirectangularShader(),this.enableOverlayRenderer&&(this.overlayRender=new Dr(this)),this.setEnvironmentFromDataArray()}initCamera(){this.scene&&(this.perspectiveCamera=new qr(45,this.width/this.height,this.settings.camera.near,this.settings.camera.far),this.perspectiveCamera.layers.enable(11),this.perspectiveCamera.position.set(0,100,0),this.scene.add(this.perspectiveCamera),this.camera=this.perspectiveCamera)}initControls(e=!1){if(!this.renderer)return;aT.printDeviceInfo();let i=e?this.orthoCamera:this.perspectiveCamera;if(!i)return;let n;(!this.perspectiveCameraControls||!this.orthoCameraConrols)&&(n=new fO(i,this.renderer.domElement),n.dollyToCursor=!1,n.enableDamping=!0,n.dampingFactor=.5,n.enabled=!0,n.keyPanSpeed=10,n.keys={LEFT:"KeyD",UP:"KeyE",RIGHT:"KeyA",BOTTOM:"KeyQ"},n.listenToKeyEvents(document.body),n.update()),n&&(e?(this.orthoCameraConrols=n,n.minZoom=3):(this.perspectiveCameraControls=n,this.bbox&&(n.minDistance=.1,n.maxDistance=this.bbox.getSize(new A).length()*3)),this.controls=n,this.addEvent(n,"update",this.onControlsChange(this)),this.addEvent(window,"keydown",this.onKeyDown(this)))}initRotateToCursor(){var e,i,n;this.anchor=this.createAnchor(),(e=this.renderer)==null||e.domElement.addEventListener("pointerdown",this.onPointerDown),(i=this.renderer)==null||i.domElement.addEventListener("pointerup",this.onAnchorPointerUp),(n=this.controls)==null||n.addEventListener("update",this.updateOrbPoint)}onControlsChange(e){return()=>{e.enableRender()}}onKeyDown(e){return i=>{let n=e.camera,s=e.controls;if(!n||!s)return;let a=this.settings.keyboard.sensitivity||3,o=s.position,l=s.target,c=l.clone();if(i.code==="ArrowLeft"||i.code==="ArrowRight"){let h=Math.PI*a/180;i.code==="ArrowLeft"&&(h=-h),c.x=(l.x-o.x)*Math.cos(h)-(l.z-o.z)*Math.sin(h)+o.x,c.z=(l.z-o.z)*Math.cos(h)+(l.x-o.x)*Math.sin(h)+o.z,s.target=c,s.update()}else if(i.code==="ArrowUp"||i.code==="ArrowDown"){let h=Math.PI*a/180,d=new A(l.x-o.x,l.y-o.y,l.z-o.z).length(),f=l.y-o.y;i.code==="ArrowDown"&&(h=-h);let m=Math.asin(f/d)+h;if(m<-Math.PI/2||m>Math.PI/2)return;let g=Math.sin(m)*d;c.y=l.y+(g-f),s.target=c,s.update()}else if(i.code==="KeyW"){let u=a*.01,h=o.distanceTo(l);h<n.near*10&&(s.target=s.target.lerp(o,-n.near/h),l=s.target),o.lerp(l,u),s.setLookAt(o,l)}else if(i.code==="KeyS"){let u=a*.01;o.lerp(l,-u),s.setLookAt(o,l)}else if(i.code==="KeyF")this.flyToSelectedObject();else if(i.code==="KeyT"){let u=this.getIntersections();if(u.length>0){let h=u.find(p=>{let d=p.object;return d.visible&&d instanceof Je});if(h&&h.point&&this.camera&&this.controls){let p=this.camera.position,d=h.point,f=this.controls.target,m=p.distanceTo(d);if(m>n.near&&m<n.far){let g=p.distanceTo(f),y=p.clone().lerp(f,m/g);this.controls.target=y}}}}else i.code==="KeyY"&&this.flyTo(o,l.clone().setY(o.y));e.enableRender()}}onPointerUp(e,i){return()=>{if(!e.mouseDoubleClicked){switch(i.button){case bi.LEFT:{e.handleMouseClick(i);break}case bi.MIDDLE:break;case bi.RIGHT:{e.handleRightClick(i);break}default:}e.enableRender()}}}initLights(){if(!this.scene)return;let e=16777215,i=1.5,n=new $s(e,i);n.name="sun",n.castShadow=!0,n.position.set(-2,2,4),n.shadow.autoUpdate=!1,n.shadow.mapSize.width=1024,n.shadow.mapSize.height=1024,this.directionalLight=n,this.scene.add(n),this.scene.add(n.target),this.directionalLightHelper=new Ex(this.directionalLight),this.directionalLightHelper.traverse(s=>{s.layers.set(11)}),this.directionalLightHelper.visible=!1,this.scene.add(this.directionalLightHelper),this.shadowCameraHelper=new bx(this.directionalLight.shadow.camera),this.shadowCameraHelper.layers.set(11),this.shadowCameraHelper.visible=!1,this.scene.add(this.shadowCameraHelper),this.ambientLight=new Ol(3158064),this.hemisphereLight=new pf(e,14540253,2),this.hemisphereLight.position.set(0,300,0),this.scene.add(this.ambientLight),this.scene.add(this.hemisphereLight)}initPointerEvents(){if(!this.renderer||!this.camera||!this.controls)return;let e=-1,i=-1;this.renderer.domElement.addEventListener("pointerdown",n=>{e=n.x,i=n.y,this.mouseMoved=!1,setTimeout(()=>{this.dynamicallyUpdateControllerTarget()},10),this.enableRender()}),this.renderer.domElement.addEventListener("pointermove",n=>{this.section&&this.enableRender(),e>=0&&i>=0&&(Math.abs(n.x-e)>5||Math.abs(n.y-i)>5)&&(this.mouseMoved=!0)}),this.renderer.domElement.addEventListener("pointerup",n=>{var s;!this.mouseMoved&&!this.mouseDoubleClicked&&!this.section&&!((s=this.measurementManager)!=null&&s.isMeasurementActive())&&setTimeout(this.onPointerUp(this,n),200),this.mouseDoubleClicked&&setTimeout(()=>{this.mouseDoubleClicked=!1},200),e=-1,i=-1}),this.renderer.domElement.addEventListener("dblclick",n=>{var s;this.mouseDoubleClicked=!0,!this.mouseMoved&&!this.section&&!((s=this.measurementManager)!=null&&s.isMeasurementActive())&&(this.handleMouseClick(n),this.flyToSelectedObject(),this.enableRender())}),this.initRotateToCursor(),this.raycaster=new Oc}initDatGui(){this.datGui=new S3(this),this.datGui.close()}initSpinner(){var s;if(!this.viewerCfg.enableSpinner)return;let i=document.createElement("div");i.classList.add("bim-viewer-spinner");let n=document.createElement("div");n.classList.add(ho,"icon-loading"),i.append(n),(s=this.widgetContainer)==null||s.appendChild(i),this.spinner=i,this.setSpinnerVisibility(this.jobCount>0)}initOthers(){if(!this.scene||!this.renderer||!this.camera)return;let e=this.datGui&&this.datGui.controls;e&&(e.showGroundGrid&&(this.groundGrid=Ks.createGroundGrid(),this.scene.add(this.groundGrid)),e.showGrassGround&&ot(this,null,function*(){this.grassGround=yield Ks.createGrassGround(),this.scene&&this.scene.add(this.grassGround),this.enableRender()}),e.webcam&&this.enableWebCam(),this.composerEnabled=e.composerEnabled,this.composerEnabled&&(this.enableComposer(!0),this.enableRenderPass(e.renderPassEnabled),this.enableFxaaPass(e.fxaaEnabled),this.enableSaoPass(e.saoEnabled),this.enableSsaoPass(e.ssaoEnabled),this.enableOutlinePass(e.outlineEnabled),this.enableSsaaPass(e.ssaaEnabled),this.enableBloomPass(e.bloomEnabled),this.enableUnrealBloomPass(e.unrealBloomEnabled))),this.renderer.domElement.style.outlineWidth="0"}initNavCube(){var n;let e=document.createElement("div");e.id="navCube";let i=new BO;return i.renderer&&(e.appendChild(i.renderer.domElement),i.setHostViewer(this)),(n=this.widgetContainer)==null||n.appendChild(e),i}initAxes(){var n,s;let e=document.createElement("div");e.classList.add("axesRenderer");let i=new If(e,this.camera);return(n=this.widgetContainer)==null||n.append(e),this.axesInScene=new iT(!1),(s=this.scene)==null||s.add(this.axesInScene),i}initStats(){var n;let e=u3();e.setMode(0);let i=document.createElement("div");return i.classList.add("statsOutput"),i.appendChild(e.domElement),(n=this.widgetContainer)==null||n.append(i),e}initContextMenu(){let e=new v3({items:VDe,context:{bimViewer:this,toolbar:this.toolbar,section:this.section},container:this.widgetContainer});return window.oncontextmenu=i=>i.preventDefault(),e}initToolbar(){let e=this.viewerCfg;return new vh(this,(0,lm.merge)(fDe,e.toolbarMenuConfig))}initBottomBar(){return new nm(this)}get has2dModel(){return this.twoDModelCount>0}showContextMenu(e){if(!this.contextMenu||!this.widgetContainer)return;let i=this.getAllIntersections(e);ne.debug("[BimViewer] showContextMenu intersections = ",i);let n=(0,lm.find)(i,h=>{let p=h.object;return p instanceof Je&&p.visible}),s=this.contextMenu.context,a=n==null?void 0:n.instanceId,o=n==null?void 0:n.faceIndex,l;o&&(l=ji.getBatchIdByFaceIndex(n==null?void 0:n.object,o)),this.contextMenu.context=Mn(Ur({},s),{hit:n==null?void 0:n.object,instanceId:a,batchId:l});let{x:c,y:u}=Mr.getScreenPointByEvent(e,this.widgetContainer);this.contextMenu.show(c,u)}handleRightClick(e){this.showContextMenu(e)}sycnCameraPosition(e,i){let n=e.position;if(i.position.set(n.x,n.y,n.z),this.scene){let s=this.scene.position;i.lookAt(s)}}sycnControls(e,i,n){let s=n,a=e.target;i.center?i.center.set(s.x,s.y,s.z):i.center=s.clone(),i.position=e.position,i.target=a,i.update()}setToOrthographicCamera(e=!1){var o;if(!this.scene||!this.controls)return;let i=this.perspectiveCamera,n=this.perspectiveCameraControls,s=this.orthoCamera,a=this.orthoCameraConrols;e?(s||(s=new Zi(-this.width/2,this.width/2,this.height/2,-this.height/2,this.settings.camera.near,this.settings.camera.far),s.layers.enable(11),s.position.set(0,100,0),s.zoom=10,s.updateProjectionMatrix(),this.scene&&this.scene.add(s),this.orthoCamera=s),a||(this.initControls(!0),a=this.orthoCameraConrols),i&&(this.sycnCameraPosition(i,s),s.zoom=10,s.updateProjectionMatrix()),n&&a&&i&&this.sycnControls(n,a,i.position),this.camera=s,this.controls=a):(i&&s&&this.sycnCameraPosition(s,i),n&&a&&s&&this.sycnControls(a,n,s.position),this.camera=i,this.controls=n),(o=this.axes)==null||o.setHostCamera(this.camera),this.resize(this.width,this.height),this.dispatchEvent("CameraChanged")}animate(){var e,i;if(requestAnimationFrame(this.animate.bind(this)),this.maxFps>0){if(Date.now()-this.lastFrameExecuteTime<1e3/this.maxFps)return;this.lastFrameExecuteTime=Date.now()}this.webcam&&this.webcam.animate(),this.controls&&this.controls.update(),this.scene&&this.camera&&this.renderEnabled&&(this.update3dTiles(),this.renderer&&this.renderer.render(this.scene,this.camera),this.dispatchEvent("RenderAfter")),this.composerRenderEnabled&&this.composer&&this.composerEnabled&&(this.composer.render(),this.composerRenderEnabled=!1),this.frustrumCullingByModelBBox(),(e=this.stats)==null||e.update(),(i=this.bottomBar)==null||i.update()}update3dTiles(){if(!this.camera)return;let e=Object.values(this.loaded3dTiles);e.length!==0&&(this.camera.updateMatrixWorld(),e.forEach(i=>{i.renderer.update()}))}frustrumCullingByModelBBox(){let e=new eo,i=new Ue;this.isFrustumInsectChecking=!0,this.camera&&(i.multiplyMatrices(this.camera.projectionMatrix,this.camera.matrixWorldInverse),e.setFromProjectionMatrix(i),Object.values(this.loadedModels).forEach(n=>{let s=this.scene&&this.scene.getObjectById(n.id),a=n.bbox;s&&a&&this.scene&&(typeof s.userData._visible=="undefined"&&(s.userData._visible=!0,Object.defineProperties(s,{visible:{set:o=>{s.userData._visible=o,this.isFrustumInsectChecking||(s.userData.userConfigVisibility=!0)},get:()=>s.userData._visible}})),typeof s.userData.userConfigVisibility=="undefined"&&(a.geometry.computeBoundingBox(),a.geometry.boundingBox&&(s.visible=e.intersectsBox(a.geometry.boundingBox))))}),Object.values(this.loaded3dTiles).forEach(n=>{let s=n.renderer.group;s&&!n.bbox.isEmpty()&&this.scene&&(typeof s.userData._visible=="undefined"&&(s.userData._visible=!0,Object.defineProperties(s,{visible:{set:a=>{s.userData._visible=a,this.isFrustumInsectChecking||(s.userData.userConfigVisibility=!0)},get:()=>s.userData._visible}})),typeof s.userData.userConfigVisibility=="undefined"&&(s.visible=e.intersectsBox(n.bbox)))})),this.isFrustumInsectChecking=!1}destroy(){var i,n,s;this.events.forEach(a=>a.node.removeEventListener(a.type,a.func)),this.events=[],this.datGui&&this.datGui.gui&&(this.datGui.beforeDestroy(),this.datGui=void 0);let e=this.webcamPlane;this.scene&&e&&(this.scene.remove(e),e.geometry.dispose(),e.material.dispose(),this.webcamPlane=void 0),this.webcam=void 0,this.composer=void 0,this.renderPass=void 0,this.effectFxaaPass=void 0,this.saoPass=void 0,this.ssaoPass=void 0,this.outlinePass=void 0,this.ambientLight=void 0,this.directionalLight=void 0,this.hemisphereLight=void 0,this.directionalLightHelper&&(this.directionalLightHelper.dispose(),this.directionalLightHelper=void 0),this.controls&&(this.disposeRotateToCursor(),this.controls.dispose(),this.controls=void 0),this.perspectiveCameraControls&&(this.perspectiveCameraControls.dispose(),this.perspectiveCameraControls=void 0),this.shadowCameraHelper&&(this.shadowCameraHelper.dispose(),this.shadowCameraHelper=void 0),this.stats=void 0,this.raycaster=void 0,this.selectedObject=void 0,this.groundGrid&&(this.groundGrid.geometry.dispose(),this.groundGrid.material.dispose(),this.groundGrid.clear(),this.groundGrid=void 0),this.grassGround&&(this.grassGround.geometry.dispose(),this.grassGround.material.dispose(),this.grassGround.clear(),this.grassGround=void 0),this.skyOfGradientRamp&&(this.skyOfGradientRamp.geometry.dispose(),this.skyOfGradientRamp.material.dispose(),this.skyOfGradientRamp.clear(),this.skyOfGradientRamp=void 0),this.savedMaterialsForOpacity=void 0,this.section=void 0,this.sectionType=void 0,Object.keys(this.loadedModels).forEach(a=>{delete this.loadedModels[a]}),Object.values(this.loaded3dTiles).forEach(a=>{a.renderer.dispose()}),this.loaded3dTiles={},this.perspectiveCamera=void 0,this.perspectiveCameraControls=void 0,this.raf&&(this.timeoutSymbol&&this.raf.clearTimeout(this.timeoutSymbol),this.raf=void 0),this.contextMenu&&(this.contextMenu.destroy(),this.contextMenu=void 0),this.navCube&&(this.navCube.dispose(),this.navCube=void 0),this.axes&&(this.axes.dispose(),this.axes=void 0),this.axesInScene&&(this.axesInScene.clear(),this.axesInScene=void 0),this.toolbar&&(this.toolbar.destroy(),this.toolbar=void 0),this.spinner&&(this.spinner.remove(),this.spinner=void 0),this.bottomBar=void 0,this.pmremGenerator&&(this.pmremGenerator.dispose(),this.pmremGenerator=void 0),(i=this.measurementManager)==null||i.destroy(),this.measurementManager=void 0,(n=this.zoomToRect)==null||n.destroy(),this.zoomToRect=void 0,(s=this.sectionManager)==null||s.destroy(),this.sectionManager=void 0,window.removeEventListener("resize",this.onResize),super.destroy()}loadLocalModel(e,i,n,s){return ot(this,null,function*(){this.timer=Date.now(),this.increaseJobCount();let a;try{a=yield new Zc(n).loadLocalModel(e,i.src,s)}catch(o){let l=`Error loading ${i.src}`;return ne.error(l,o),Promise.reject(l)}finally{this.decreaseJobCount()}return a?(this.applyOptionsAndAddToScene(e,a,i),Promise.resolve()):Promise.reject()})}loadModel(e,i){return ot(this,null,function*(){this.timer=Date.now(),this.increaseJobCount();let n;try{n=yield new Zc().loadModel(e.src,e.fileFormat,i)}catch(s){let a=`Error loading ${e.src}`;return ne.error(a,s),Promise.reject(a)}finally{this.decreaseJobCount()}return n?(this.applyOptionsAndAddToScene(e.src,n,e),Promise.resolve()):Promise.reject()})}load3dTiles(e){return ot(this,null,function*(){var a;this.timer=Date.now(),this.increaseJobCount();let i=new LS(e.src),n=new Ot,s=yield new Promise((o,l)=>{i.onLoadTileSet=()=>{i.getBounds(n)||(i.getBoundingSphere(pCe)?pCe.getBoundingBox(n):(ne.warn(`[BimViewer] Can't get the correct bounding box of 3dTiles '${e.src}'!`),l())),ne.debug(n),i.onLoadTileSet=null;let u=i.group;ne.debug(u),o(u)},i.onLoadModel=c=>{c.traverse(u=>{!!1&&u.matrixAutoUpdate&&(u.matrixAutoUpdate=!1,u.updateMatrix()),u.isMesh&&(u.castShadow=!0,u.receiveShadow=!0)}),c.updateWorldMatrix(!1,!0),this.updateDirectionalLightShadow(),this.enableRender()},i.setCamera(this.camera),i.setResolutionFromRenderer(this.camera,this.renderer),i.update()});if(s){let o=Date.now(),l=e.modelId||e.src;if(this.loaded3dTiles[l]){let h=1;for(;this.loaded3dTiles[`${l}_${h}`];)h++;l=`${l}_${h}`,ne.warn(`[BimViewer] 3dTiles '${l}' is loaded more than once!`)}if(this.loaded3dTiles[l]={id:s.id,bbox:n,renderer:i},e.matrix&&e.matrix.length===16){let h=new Ue;h.elements=e.matrix,s.applyMatrix4(h)}else{let h=e.position||[0,0,0],p=e.rotation||[0,0,0],d=e.scale||[1,1,1];s.position.set(h[0],h[1],h[2]),s.rotation.set(p[0]*Math.PI/180,p[1]*Math.PI/180,p[2]*Math.PI/180),s.scale.set(d[0],d[1],d[2])}if(s.matrixAutoUpdate=!1,s.updateMatrix(),s.updateMatrixWorld(!0),(a=this.scene)==null||a.add(s),n.applyMatrix4(s.matrix),this.computeBoundingBox(),this.tryAdjustDirectionalLight(),Object.keys(this.loadedModels).length===0&&Object.keys(this.loaded3dTiles).length===1){let h=this.datGui&&this.datGui.controls;this.regenSkyOfGradientRamp(),h&&h.showGroundGrid&&this.regenGroundGrid(),this.tryAdjustCameraNearAndFar(),this.goToHomeView()}return ne.info(`[BimViewer] Added 3dTiles '${e.src}' to scene in ${(Date.now()-o)/1e3}s`),this.enableRender(),this.decreaseJobCount(),Promise.resolve()}return this.decreaseJobCount(),Promise.reject()})}addLoadedModelToScene(e,i){if(!this.scene)return;if(i.merge){let l=Date.now();JT.createMeshBvhAsync([e],{saveOriginalIndex:!0}),ne.info(`[BimViewer] Creates mesh bvh cost ${(Date.now()-l)/1e3}s`)}e.traverse(l=>{l.isMesh&&(l.castShadow=!0,l.receiveShadow=!0)}),this.scene.add(e);let n=new Lg(e);n.name="BIM_VIEWER_BOX_HELPER",n.visible=!1,n.matrixAutoUpdate=!1,n.material&&(n.material=void 0,n.layers.set(11));let s=i.modelId||i.src;if(this.loadedModels[s]){let l=1;for(;this.loadedModels[`${s}_${l}`];)l++;s=`${s}_${l}`,ne.warn(`[BimViewer] Model '${s}' is loaded more than once!`)}this.loadedModels[s]={id:e.id,bbox:n},this.computeBoundingBox(),this.tryAdjustDirectionalLight();let a=Object.values(this.loadedModels).map(l=>l.id);if(Object.values(this.loaded3dTiles).forEach(l=>a.push(l.id)),!a||a.length<=1){if(this.has2dModel)this.setToOrthographicCamera(!0),this.skyOfGradientRamp&&this.scene.remove(this.skyOfGradientRamp);else{let l=this.datGui&&this.datGui.controls;this.regenSkyOfGradientRamp(),l&&l.showGroundGrid&&this.regenGroundGrid()}this.tryAdjustCameraNearAndFar(),this.goToHomeView()}this.scene.add(n),i.edges&&Qr.addOutlines(e),ne.info(`[BimViewer] Added '${i.src}' to scene in ${(Date.now()-this.timer)/1e3}s`),this.enableRender(),this.decreaseJobCount()}addOrRemoveObjectOpacity(e=!0,i=.3,n,s){if(this.savedMaterialsForOpacity||(this.savedMaterialsForOpacity=[]),!this.scene)return;let a=this.scene,o=[],l=Object.values(this.loadedModels).map(c=>c.id);Object.values(this.loaded3dTiles).forEach(c=>l.push(c.id)),l.forEach(c=>{if(e){this.savedMaterialsForOpacity&&this.savedMaterialsForOpacity.length>0&&Qr.revertObjectOpacityById(a,c,this.savedMaterialsForOpacity);let u=Qr.setObjectOpacityById(a,c,i,n,s);o.push(...u)}else this.savedMaterialsForOpacity&&Qr.revertObjectOpacityById(a,c,this.savedMaterialsForOpacity)}),e?this.savedMaterialsForOpacity=o:this.savedMaterialsForOpacity=[],this.enableRender()}hasTransparentObject(){return!!(this.savedMaterialsForOpacity&&this.savedMaterialsForOpacity.length>0)}showVertexNormals(e,i=.1){var n,s,a;e?(this.vertexNormalsHelpers||(this.vertexNormalsHelpers=new hr),(n=this.scene)==null||n.traverseVisible(o=>{var c;let l=["SKYBOX","GROUND_GRID","GRASS_GROUND","BIM_VIEWER_BOX_HELPER"];if(o instanceof Je&&!l.includes(o.name)){if(!o.geometry.attributes.normal)return;let h=new c3(o,i,16711680);(c=this.vertexNormalsHelpers)==null||c.add(h)}}),(s=this.scene)==null||s.add(this.vertexNormalsHelpers)):this.vertexNormalsHelpers&&((a=this.scene)==null||a.remove(this.vertexNormalsHelpers),this.vertexNormalsHelpers=void 0)}resize(e,i){let n=this.camera;n&&(this.width=e||window.innerWidth,this.height=i||window.innerHeight,n instanceof qr?n.aspect=this.width/this.height:n instanceof Zi&&(n.left=-this.width/2,n.right=this.width/2,n.top=this.height/2,n.bottom=-this.height/2),n.updateProjectionMatrix(),this.renderer&&this.renderer.setSize(this.width,this.height),this.composer&&this.composer.setSize(this.width,this.height),this.effectFxaaPass&&this.effectFxaaPass.uniforms.resolution.value.set(1/this.width,1/this.height),this.overlayRender&&this.overlayRender.setSize(this.width,this.height)),this.enableRender()}getRaycaster(){return this.raycaster}getRaycastableObjectsByMouse(e){let i=[];if(!this.raycaster||!this.camera||!this.scene||!e||!this.viewerContainer)return i;let n;e instanceof MouseEvent?n=Mr.getScreenPointByEvent(e,this.viewerContainer):n=Mr.getScreenPointByTouchEvent(e,this.viewerContainer);let s=Mr.screenPoint2NdcPoint(n,this.camera,this.viewerContainer);return this.raycaster.setFromCamera(s,this.camera),i=this.getRaycastableObjects(),i}getRaycastableObjects(){let e=[];return Object.values(this.loadedModels).forEach(i=>{let n=this.scene&&this.scene.getObjectById(i.id);n&&n.visible&&e.push(n)}),Object.values(this.loaded3dTiles).forEach(i=>{let n=this.scene&&this.scene.getObjectById(i.id);n&&n.visible&&e.push(n)}),e}getIntersections(e){let i=this.getRaycastableObjectsByMouse(e);return this.raycaster&&this.raycaster.intersectObjects(i,!0)||[]}getAllIntersections(e){if(!this.raycaster||!this.camera||!this.scene||!this.viewerContainer)return[];let i=new le;e&&(e instanceof MouseEvent?i=Mr.getScreenPointByEvent(e,this.viewerContainer):i=Mr.getScreenPointByTouchEvent(e,this.viewerContainer));let n=Mr.screenPoint2NdcPoint(i,this.camera,this.viewerContainer);this.raycaster.setFromCamera(n,this.camera);let s=this.scene.children;return this.raycaster.intersectObjects(s,!0)||[]}handleMouseClick(e){var c,u,h;if((c=this.measurementManager)!=null&&c.isMeasurementActive()||(u=this.sectionManager)!=null&&u.isSectionActive())return;let i=Date.now(),n=this.getIntersections(e);ne.debug(`[BimViewer] getIntersections costs ${(Date.now()-i)/1e3}s`);let s=n.find(p=>{let d=p.object;return d.visible&&(d.userData.selectable!==!1||d instanceof Je)}),a=s&&s.object||void 0,o,l;if(a)if(a instanceof tn)o=s.instanceId,this.selectedObject&&this.selectedObject.id===a.id&&this.selectedObject.userData.instanceId===o&&(a=void 0);else if(ji.isMergedMesh(a)){let p=s&&s.faceIndex||-1;p>=0?(l=ji.getBatchIdByFaceIndex(a,p),this.selectedObject&&this.selectedObject.id===a.id&&this.selectedObject.userData.batchId===l&&(a=void 0)):a=void 0}else this.selectedObject&&this.selectedObject.id===a.id&&(a=void 0);if(n.length>0&&n[0].point){let p=(h=this.overlayRender)==null?void 0:h.getDrawablesByPosition(n[0].point,this.raycaster);if(p&&p.length>0){this.clearSelection(),p[0].selected=!0,this.selectedObject=p[0];return}}this.selectedObject&&this.clearSelection(),a?this.selectObject(a,o,l):this.clearSelection()}selectObject(e,i,n,s=void 0){if(this.selectedObject){let a=this.selectedObject.userData;if(a.instanceId!=null&&a.originalMatrix&&a.clonedMesh){this.scene&&this.scene.remove(a.clonedMesh);let o=this.selectedObject;if(o.setMatrixAt(a.instanceId,a.originalMatrix),o.instanceMatrix.needsUpdate=!0,o.updateMatrix(),delete a.instanceId,delete a.originalMatrix,e===a.clonedMesh){a.clonedMesh.geometry.dispose(),delete a.clonedMesh,this.selectedObject=void 0,this.outlinePass&&(this.outlinePass.selectedObjects=[]);return}a.clonedMesh.geometry.dispose(),delete a.clonedMesh}else if(a.batchId!=null&&a.clonedMesh){if(this.scene&&this.scene.remove(a.clonedMesh),delete a.batchId,e===a.clonedMesh){a.clonedMesh.geometry.dispose(),delete a.clonedMesh,this.selectedObject=void 0,this.outlinePass&&(this.outlinePass.selectedObjects=[]);return}a.clonedMesh.geometry.dispose(),delete a.clonedMesh}else if(a.originalMaterial){if(this.selectedObject.material){let o=this.selectedObject.material;Array.isArray(o)?o.forEach(l=>l.dispose()):o instanceof Gr&&o.dispose()}this.selectedObject.material=a.originalMaterial,delete a.originalMaterial}this.selectedObject=void 0,this.outlinePass&&(this.outlinePass.selectedObjects=[])}if(!this.scene||!e){this.enableRender();return}if(e instanceof tn&&i!=null){let a=e,o=new Ue,l=new Ue;l.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),a.getMatrixAt(i,o),this.selectedObject=e,this.outlinePass&&(this.outlinePass.selectedObjects=[e]);let c=Cs.clonedHighlightMaterials(e,{depthTest:s});if(c){let u=new Je(a.geometry.clone(),c);u.applyMatrix4(e.matrixWorld.multiply(o)),u.matrixWorldNeedsUpdate=!0,u.name="Cloned mesh for highlighting";let h=o.clone();h.multiplyMatrices(o,l),a.setMatrixAt(i,h),a.instanceMatrix.needsUpdate=!0,a.updateMatrix(),this.selectedObject.userData.instanceId=i,this.selectedObject.userData.originalMatrix=o,this.selectedObject.userData.clonedMesh=u,this.scene.add(u)}}else if(ji.isMergedMesh(e)&&n!=null){let a=ji.getBatchByBatchId(e,n),o=`[BimViewer] Clicked on merged mesh(id: ${e.id}).`;o+=` Original mesh batchId: ${n}, name: ${a==null?void 0:a.name}`,ne.info(o);let l=Cs.clonedHighlightMaterials(e,{depthTest:s}),c=ji.cloneGeometryForBatch(e,a);if(l&&c){let u=new Je(c,l);u.applyMatrix4(e.matrixWorld),u.matrixWorldNeedsUpdate=!0,u.name="Cloned mesh for highlighting",this.selectedObject=e,this.selectedObject.userData.batchId=n,this.selectedObject.userData.clonedMesh=u,this.scene.add(u)}}else{let a=Cs.clonedHighlightMaterials(e,{depthTest:s});a&&(this.selectedObject=e,this.selectedObject.userData.originalMaterial=this.selectedObject.material,this.selectedObject.material=a,this.outlinePass&&(this.outlinePass.selectedObjects=[e]))}this.enableRender()}clearSelection(){this.selectedObject&&this.selectedObject instanceof po?this.selectedObject.selected=!1:this.selectObject(),this.selectedObject=void 0}getBBox(){return this.bbox}flyToObjects(e){if(!e||e.length===0||!this.camera)return;let i=new A,n=new A,s=new Ot;e.forEach(o=>{let l=vn.getBoundingBox(o);s.union(l)});let a=new A;this.camera.getWorldDirection(a),bs.getCameraPositionByBboxAndDirection(s,i,n,this.camera.projectionMatrix,a),this.flyTo(i,n)}flyToObject(e){this.flyToObjects([e])}flyToSelectedObject(){if(!this.selectedObject)return;let e=this.selectedObject;(e instanceof tn&&e.userData.clonedMesh||ji.isMergedMesh(e)&&e.userData.clonedMesh)&&(e=e.userData.clonedMesh),this.flyToObject(e)}flyToRandomObject(){var u,h,p;let e=Object.values(this.loadedModels).map(d=>d.id);Object.values(this.loaded3dTiles).forEach(d=>e.push(d.id));let i=e.length;if(i<=0)return;let n=Math.floor(Math.random()*i),s=e[n];if(!((u=this.scene)==null?void 0:u.getObjectById(s)))return;let o=[];if((h=this.scene)==null||h.traverseVisible(d=>{let f=["SKYBOX","GROUND_GRID","GRASS_GROUND","BIM_VIEWER_BOX_HELPER"];(d instanceof Je||d instanceof _r)&&!f.includes(d.name)&&o.push(d.id)}),o.length<1)return;let l=Math.floor(Math.random()*o.length),c=(p=this.scene)==null?void 0:p.getObjectById(o[l]);c&&(ne.info(`[BimViewer] Flying to random object: ${c.name}, type: ${c.type}`),this.selectObject(c,void 0,void 0,!0),this.flyToObject(c))}flyTo(e,i){let n=this.camera,s=this.controls;if(!n||!s)return;if(e.equals(i)){ne.error("[BimViewer] camera position and lookAt cannot be the same!");return}else if(!St.isVectorValid(e)||!St.isVectorValid(i)){ne.error("[BimViewer] invalid position or lookAt!");return}let a=e.distanceTo(i);a<n.near?(e=e.clone().sub(i).normalize().multiplyScalar(n.near*1.1),ne.warn("[BimViewer] camera could be too close to see the object!")):a>n.far&&(e=e.clone().sub(i).normalize().multiplyScalar(n.far*.9),ne.warn("[BimViewer] camera could be too far to see the object!"));let o=(f,m)=>{s.setLookAt(f,m),s.update(),this.enableRender()},l=n.position.clone(),c=new A;n.getWorldDirection(c);let u=s.target.distanceTo(l),h=l.clone().addScaledVector(c,u),p=500,d=Date.now();this.cameraUpdateInterval&&clearInterval(this.cameraUpdateInterval),this.cameraUpdateInterval=setInterval(()=>{let f=Date.now()-d;f>p&&(f=p);let m=(E,b,x)=>{let S=E.x+(b.x-E.x)*x,D=E.y+(b.y-E.y)*x,P=E.z+(b.z-E.z)*x;return new A(S,D,P)},g=m(l,e,f/p),y=m(h,i,f/p);o(g,y),f>=p&&(clearInterval(this.cameraUpdateInterval),this.cameraUpdateInterval=void 0)},10)}viewFitAll(){var a;if(!this.scene||!this.camera)return;let e=new A,i=new A,n=vn.getVisibleObjectBoundingBox(this.scene),s=new A;(a=this.camera)==null||a.getWorldDirection(s),bs.getCameraPositionByBboxAndDirection(n,e,i,this.camera.projectionMatrix,s),this.flyTo(e,i)}goToHomeView(){let e=this.camera,i=this.cameraCfg,n=i&&St.arrayToVector3(i.eye),s=i&&St.arrayToVector3(i.look);if(n&&s)this.flyTo(n,s);else if(this.scene){let a=new A,o=new A,l=new A(-1,-.5,-1);if(this.has2dModel){let c=this.bbox.max.x-this.bbox.min.x,u=this.bbox.max.y-this.bbox.min.y,h=this.bbox.max.z-this.bbox.min.z,p=Math.min(c,u,h);c-p<=0?l.set(1,0,0):u-p<=0?l.set(0,-1,0):h-p<=0&&l.set(0,0,-1)}if(bs.getCameraPositionByBboxAndDirection(this.bbox,a,o,e==null?void 0:e.projectionMatrix,l),(!this.cameraCfg||this.cameraCfg&&(!this.cameraCfg.eye||!this.cameraCfg.look))&&(this.cameraCfg={eye:a.toArray(),look:o.toArray()}),e instanceof Zi){let c=this.bbox,u=c.max.x-c.min.x,h=c.max.z-c.min.z,p=e.right-e.left,d=e.top-e.bottom;e.zoom=Math.max(p,d)/Math.max(u,h),e.zoom/=2,e.updateProjectionMatrix()}a.equals(o)||this.flyTo(a,o)}}zoomToBBox(e){var a,o;let i=new A,n=new A,s=new A;(a=this.camera)==null||a.getWorldDirection(s),bs.getCameraPositionByBboxAndDirection(e,i,n,(o=this.camera)==null?void 0:o.projectionMatrix,s),i.equals(n)||this.flyTo(i,n)}tryAdjustCameraNearAndFar(){let e=this.camera;if(!this.scene||!e)return;let i=this.bbox,n=e.near,s=e.far,a=i.max.x-i.min.x,o=i.max.y-i.min.y,l=i.max.z-i.min.z,c=Math.max(a,o,l),u=5,h=c/u,p=c*u;if(n>h||s<p){let d=f=>St.numberToString(f);ne.info(`[BimViewer] BBox's longest side is: ${d(c)}`),n>h&&(ne.warn(`[BimViewer] camera.near(${d(n)}) shouldn't bigger than ${d(h)}, will change it!`),e.near=h),s<p&&(ne.warn(`[BimViewer] camera.far(${d(s)}) shouldn't smaller than ${d(p)}, will change it!`),e.far=p)}if(e instanceof Zi){let d=e.right-e.left,f=e.top-e.bottom;e.zoom=Math.max(d,f)/Math.max(a,l),e.zoom/=2}e.updateProjectionMatrix()}tryAdjustDirectionalLight(){if(!this.directionalLight)return;let e=this.bbox,i=new zi;e.getBoundingSphere(i);let n=i.center,s=i.radius,a=this.directionalLight.shadow.camera;a.zoom=1,a.top=s,a.bottom=-s,a.right=s,a.left=-s,a.near=.1,a.far=2*s,a.updateProjectionMatrix();let o=new A(-1,-.5,1);o.normalize().multiplyScalar(s),this.directionalLight.position.copy(n).addScaledVector(o,-1),this.directionalLight.target.position.copy(n),ne.debug("[BimViewer] this.directionalLight.position",this.directionalLight.position),ne.debug("[BimViewer] this.directionalLight.target.position",this.directionalLight.target.position),this.updateDirectionalLight(),this.enableRender()}updateDirectionalLight(){var e,i;if(this.directionalLight&&(this.directionalLight.updateMatrixWorld(),this.directionalLight.target.updateMatrixWorld(),this.directionalLightHelper&&(this.directionalLightHelper.update(),!((e=this.scene)!=null&&e.matrixAutoUpdate)&&this.directionalLightHelper.updateWorldMatrix(!1,!0)),this.directionalLight.shadow.needsUpdate=!0,this.directionalLight.shadow.camera.updateProjectionMatrix(),this.shadowCameraHelper&&(this.shadowCameraHelper.update(),!((i=this.scene)!=null&&i.matrixAutoUpdate)))){let n=this.directionalLight.shadow.camera;n.position.setFromMatrixPosition(this.directionalLight.matrixWorld),hCe.setFromMatrixPosition(this.directionalLight.target.matrixWorld),n.lookAt(hCe),n.updateMatrixWorld(),this.shadowCameraHelper.updateWorldMatrix(!1,!0)}}updateDirectionalLightShadow(){this.directionalLight&&(this.directionalLight.shadow.needsUpdate=!0)}showDirectionalLightHelper(e){this.directionalLightHelper&&(this.directionalLightHelper.visible=e),this.shadowCameraHelper&&(this.shadowCameraHelper.visible=e)}regenSkyOfGradientRamp(){if(!this.scene)return;this.skyOfGradientRamp&&(this.skyOfGradientRamp.geometry.dispose(),this.skyOfGradientRamp.material.dispose(),this.scene.remove(this.skyOfGradientRamp),this.skyOfGradientRamp.clear(),this.skyOfGradientRamp=void 0);let e=Object.values(this.loadedModels).map(i=>i.id);if(Object.values(this.loaded3dTiles).forEach(i=>e.push(i.id)),e){let i=this.cameraCfg,n=i&&St.arrayToVector3(i.eye),s=i&&St.arrayToVector3(i.look),a=new Ot;if(n&&s){let o=n,l=s;a.expandByPoint(new A(o.x,o.y,o.z)),a.expandByPoint(new A(l.x,l.y,l.z))}else a=vn.getObjectsBoundingBox(this.scene,e);this.skyOfGradientRamp=Xo.createSkyOfGradientRampByBoundingBox(a),this.scene.add(this.skyOfGradientRamp)}}regenGroundGrid(){if(!this.scene)return;this.groundGrid&&(this.groundGrid.geometry.dispose(),this.groundGrid.material.dispose(),this.scene.remove(this.groundGrid));let e=Object.values(this.loadedModels).map(i=>i.id);if(Object.values(this.loaded3dTiles).forEach(i=>e.push(i.id)),e){let i=this.cameraCfg,n=i&&St.arrayToVector3(i.look);n&&(n.y=0),this.groundGrid=Ks.createGroundGrid(void 0,void 0,n),this.scene.add(this.groundGrid)}}setOrbitPoint(e){let i=this.controls;if(!this.camera||!this.renderer||!this.controls||!this.scene||!this.raycaster||!this.viewerContainer)return;let n=this.getIntersections(e),s=Mr.getScreenPointByEvent(e,this.viewerContainer);if(n&&n.length!==0)i.setOrbitPoint(n[0].point),this.setAnchorPosition(s),this.lastOrbPoint=n[0].point;else{let a=this.bbox.getCenter(new A),o=Mr.worldPosition2ScreenPoint(a,this.camera,this.renderer.domElement);this.setAnchorPosition(o),i.setOrbitPoint(a),this.lastOrbPoint=a}}setAnchorPosition(e){this.anchor&&(this.anchor.className="anchor active",this.anchor.style.left=`${e.x}px`,this.anchor.style.top=`${e.y}px`)}createAnchor(){var i;let e=document.createElement("div");return e.className="anchor",(i=this.viewerContainer)==null||i.appendChild(e),e}disposeAnchor(){var e;this.anchor&&((e=this.viewerContainer)==null||e.removeChild(this.anchor),this.anchor=void 0)}disposeRotateToCursor(){var e,i,n;this.disposeAnchor(),(e=this.renderer)==null||e.domElement.removeEventListener("pointerdown",this.onPointerDown),(i=this.renderer)==null||i.domElement.removeEventListener("pointerup",this.onAnchorPointerUp),(n=this.controls)==null||n.removeEventListener("update",this.updateOrbPoint)}enableComposer(e){!this.scene||!this.camera||!this.renderer||(this.composerEnabled=e,e&&!this.composer&&(this.composer=new p3(this.renderer)),this.enableRender())}enableRenderPass(e){if(!(!this.scene||!this.camera||!this.renderer||!this.composer)){if(e&&!this.renderPass){let i=new d3(this.scene,this.camera);i.setSize(this.width,this.height),this.composer.addPass(i),this.renderPass=i}this.renderPass&&(this.renderPass.enabled=e),this.enableRender()}}enableFxaaPass(e){if(!(!this.scene||!this.camera||!this.renderer||!this.composer)){if(e&&!this.effectFxaaPass){let i=new EE(UDe);i.uniforms.resolution.value.set(1/this.width,1/this.height),i.setSize(this.width,this.height),i.renderToScreen=!0,this.composer.addPass(i),this.effectFxaaPass=i}this.effectFxaaPass&&(this.effectFxaaPass.enabled=e),this.enableRender()}}enableSaoPass(e){if(!(!this.scene||!this.camera||!this.renderer||!this.composer)){if(e&&!this.saoPass){let i=new VS(this.scene,this.camera,!1,!0,new le(1/this.width,1/this.height));i.setSize(this.width,this.height),i.params.output=0,i.params.saoBias=.5,i.params.saoIntensity=5e-5,i.params.saoScale=5,i.params.saoKernelRadius=40,i.params.saoMinResolution=0,this.composer.addPass(i),this.saoPass=i}this.saoPass&&(this.saoPass.enabled=e),this.enableRender()}}enableSsaoPass(e){if(!(!this.scene||!this.camera||!this.renderer||!this.composer)){if(e&&!this.ssaoPass){let i=new rc(this.scene,this.camera,this.width,this.height);i.kernelRadius=16,i.minDistance=.005,i.maxDistance=.1,this.composer.addPass(i),this.ssaoPass=i}this.ssaoPass&&(this.ssaoPass.enabled=e),this.enableRender()}}enableOutlinePass(e){if(!(!this.scene||!this.camera||!this.renderer||!this.composer)){if(e&&!this.outlinePass){let i=new au(new le(this.width,this.height),this.scene,this.camera);i.edgeStrength=3,i.edgeGlow=0,i.edgeThickness=2,i.pulsePeriod=0,i.visibleEdgeColor.set(16711680),i.hiddenEdgeColor.set(16752768),this.composer.addPass(i),this.outlinePass=i}this.outlinePass&&(this.outlinePass.enabled=e),this.enableRender()}}enableSsaaPass(e){if(!(!this.scene||!this.camera||!this.renderer||!this.composer)){if(e&&!this.ssaaRenderPass){let i=new m3(this.scene,this.camera,16777215,0);this.composer.addPass(i),this.ssaaRenderPass=i}this.ssaaRenderPass&&(this.ssaaRenderPass.enabled=e),this.enableRender()}}enableBloomPass(e){if(!(!this.scene||!this.camera||!this.renderer||!this.composer)){if(e&&!this.bloomPass){let i=new Th(1,25,4);i.renderToScreen=!0,this.composer.addPass(i),this.bloomPass=i}this.bloomPass&&(this.bloomPass.enabled=e),this.enableRender()}}enableUnrealBloomPass(e){if(!(!this.scene||!this.camera||!this.renderer||!this.composer)){if(e&&!this.unrealBloomPass){let i=new pd(new le(this.width,this.height),1,0,0);i.threshold=0,i.strength=.5,i.radius=0,this.composer.addPass(i),this.unrealBloomPass=i}this.unrealBloomPass&&(this.unrealBloomPass.enabled=e),this.enableRender()}}activateSection(e="ObjectsBoxSection"){this.sectionType=e,this.clearSelection(),this.sectionManager||(this.sectionManager=new VO(this)),this.sectionManager.activateSection(e),this.enableRender()}deactivateSection(){var e;(e=this.sectionManager)==null||e.deactivateSection(),this.enableRender()}getActiveSection(){var e;return(e=this.sectionManager)==null?void 0:e.getActiveSection()}activateMeasurement(e){this.measurementManager||(this.measurementManager=new Ql(this)),this.measurementManager.activateMeasurement(e),this.clearSelection()}deactivateMeasurement(){var e;(e=this.measurementManager)==null||e.deactivateMeasurement()}setMeasurementsVisibility(e){this.measurementManager||(this.measurementManager=new Ql(this)),this.measurementManager.setMeasurementsVisibility(e)}clearMeasurements(){var e;(e=this.measurementManager)==null||e.clearMeasurements()}activateZoomToRect(){this.zoomToRect||(this.zoomToRect=new oE(this)),this.zoomToRect.activate()}deactivateZoomToRect(){var e;(e=this.zoomToRect)==null||e.activate()}enableWebCam(){this.scene&&(this.webcam||(this.webcam=new _3),this.webcamPlane||(this.webcamPlane=this.webcam.createWebCamPlane(),this.webcamPlane.position.set(10,2,0)),this.scene.add(this.webcamPlane))}disableWebCam(){this.scene&&this.webcamPlane&&(this.webcamPlane.geometry.dispose(),this.webcamPlane.material.dispose(),this.scene.remove(this.webcamPlane))}setEnvironment(e){Lc.createEnvTexture(this.pmremGenerator,e).then(i=>{this.scene&&(this.scene.environment=i)})}setEnvironmentFromDataArray(e){Lc.createEnvTextureFromDataArray(this.pmremGenerator,e).then(i=>{this.scene&&(this.scene.environment=i)})}takeObjectsScreenshot(e){return ot(this,null,function*(){return new Promise((i,n)=>{var s;this.renderer||n("renderer is undefined"),(s=this.scene)==null||s.traverse(a=>{a instanceof Je&&((0,lm.includes)(e,(0,lm.get)(a.userData,"UniqueId"))?a.visible=!0:a.visible=!1)}),this.enableRender(),setTimeout(()=>{var a;i((a=this.renderer)==null?void 0:a.domElement.toDataURL("image/png"))},1e3)})})}updateRaycasterThreshold(){let e=this.camera;if(!e||!this.raycaster)return;let i=12/e.zoom,n=this.raycaster.params;n.Line?n.Line.threshold=i:n.Line={threshold:i},n.Points?n.Points.threshold=i:n.Points={threshold:i}}instantiate(e){new qC(e).instantiate()}merge(e){this.increaseJobCount();try{let i=[];e.traverse(n=>{n.geometry&&n.material&&i.push(n)}),ji.deepMerge(i,e)}finally{this.decreaseJobCount()}}setSpinnerVisibility(e){this.spinner&&(e?this.spinner.classList.remove("hidden"):this.spinner.classList.add("hidden"))}increaseJobCount(){this.setSpinnerVisibility(++this.jobCount>0)}decreaseJobCount(){this.setSpinnerVisibility(--this.jobCount>0)}addEvent(e,i,n){e.addEventListener(i,n),this.events.push({node:e,type:i,func:n})}updateProjectSettings(e){this.settings=e;let i=(n,s)=>{n&&s&&(n.near=s.near,n.far=s.far,n.updateProjectionMatrix())};i(this.perspectiveCamera,this.settings.camera),i(this.orthoCamera,this.settings.camera),this.enableRender(10)}dynamicallyUpdateControllerTarget(e){let i=this.getIntersections(e);if(i.length<0)return;let n=this.camera,s=this.controls;if(!n||!s)return;let a=i.find(o=>{if(o.distance<n.near||o.distance>n.far)return!1;let l=o.object;return l.visible&&l instanceof Je});if(a!=null&&a.point&&s){let o=n.position,l=s.target,c=a.distance,u=o.distanceTo(l),h=o.clone().lerp(l,c/u);s.target=h}}computeBoundingBox(){let e=new Ot;return Object.values(this.loadedModels).forEach(i=>{if(i.bbox){i.bbox.geometry.computeBoundingBox();let n=i.bbox.geometry.boundingBox;n&&!n.isEmpty()&&e.union(n)}}),Object.values(this.loaded3dTiles).forEach(i=>{i.bbox.isEmpty()||e.union(i.bbox)}),this.bbox=e,this.controls&&(this.controls.minDistance=.1,this.controls.maxDistance=this.bbox.getSize(new A).length()*3),e}};var mCe=Un(Yl(),1);var w3=class{constructor(r){this.viewer=r;this.itemList={};this.handleMouseWheel=r=>{r.preventDefault(),this.element&&(this.element.scrollLeft+=r.deltaY)};this.init()}init(){var i;let r=document.createElement("div");r.classList.add("model-layout-switch-bar");let e=document.createElement("div");e.classList.add("model-layout-switch-bar-content"),e.addEventListener("wheel",this.handleMouseWheel),this.viewer.getLayoutNames().forEach((n,s)=>{let a=this.createItem(n,s);this.itemList[n]=a,a.resetActivate=()=>{for(let o in this.itemList)this.itemList[o].resetActive()},e==null||e.appendChild(a.element)}),this.element=r,this.content=e,this.element.appendChild(this.content),(i=this.viewer.widgetContainer)==null||i.appendChild(this.element)}createItem(r,e){let i=new kG(this.viewer,r);return e===0&&i.setActive(!0),i}destroy(){var r,e;for(let i in this.itemList){let n=this.itemList[i];n.destroy(),(r=this.content)==null||r.removeChild(n.element)}this.itemList={},this.element&&this.content&&(this.element.removeChild(this.content),this.element.removeEventListener("wheel",this.handleMouseWheel),(e=this.viewer.widgetContainer)==null||e.removeChild(this.element),this.element=void 0)}show(){this.element&&(this.element.style.display="block")}hide(){this.element&&(this.element.style.display="none")}},kG=class{constructor(r,e){this.viewer=r;this.eventBus=lE();this.active=!1;this.element=this.createItem(e),this.eventBus.on("activechange",i=>{this.resetActivate&&this.resetActivate(),i?(this.element.classList.add("activate"),this.viewer.activateLayout(e)):this.element.classList.remove("activate")})}createItem(r){let e=document.createElement("div"),i=document.createElement("span");return e.classList.add("model-layout-switch-item"),e.onclick=()=>{this.active=!this.active,this.eventBus.emit("activechange",this.active)},i.innerText=r,e.appendChild(i),e}setActive(r){this.active!==r&&(this.active=r,this.eventBus.emit("activechange",r))}resetActive(){this.active=!1,this.element.classList.remove("activate")}destroy(){this.eventBus.off("activechange")}};var R3=class{constructor(r){this.progresseItems=[];this.element=document.createElement("div"),this.element.classList.add("progress-bar"),r.appendChild(this.element)}setVisibility(r){this.element&&(r?this.element.classList.remove("hidden"):this.element.classList.add("hidden"))}addProgressItem(r,e){let i=this.progresseItems.find(n=>n.id===r);if(!i){let n=document.createElement("div");n.classList.add("progress-bar-item"),n.innerHTML=e||"",this.element.append(n),i={id:r,div:n},this.progresseItems.push(i)}this.setVisibility(!0)}updateProgress(r,e,i){let n=this.progresseItems.find(a=>a.id===r);if(!n)return;let s=e?`${e}`:"";e&&i&&(s+=": "),i&&(s+=`${i.toFixed(2)}%`),n.div.innerHTML=s}removeProgressItem(r){let e=this.progresseItems.find(i=>i.id===r);e&&e.div.remove(),this.progresseItems.length===0&&this.setVisibility(!1)}delayRemoveProgressItem(r,e=3e3){setTimeout(()=>{this.removeProgressItem(r)},e)}};var QS=new Ue,dCe=new Ue,fCe=new eo,M3=new A,GG=class extends Jf{constructor(e){super(e);this.name="DxfViewer";this.CAMERA_Z_POSITION=100;this.CAMERA_MIN_ZOOM=1e-6;this.timer=Date.now();this.loadedModels={};this.masterModelId="";this.raycaster=new Oc;this.mouseMoved=!1;this.mouseDoubleClicked=!1;this.selected=!0;this.raf=new uT;this.renderEnabled=!1;this.jobCount=0;this.enableHideVisuallySmallObjects=!0;this.sortedHidableObjects={};this.lastCameraZoom=1/0;this.activeLayoutName="";this.layoutInfos={};this.units=void 0;this.fpsUtils=new _C;this.onResize=()=>{var i;let e=(i=this.renderer)==null?void 0:i.domElement;e&&e.parentElement&&this.resize(e.parentElement.clientWidth,e.parentElement.clientHeight)};this.enableRender=(e=1e3)=>{this.renderEnabled=!0,this.raf&&(this.timeoutSymbol&&this.raf.clearTimeout(this.timeoutSymbol),this.timeoutSymbol=this.raf.setTimeout(()=>{this.renderEnabled=!1},e))};this.loadingDxfCount=0;this.compareMode=!1;this.viewerCfg=e,this.increaseJobCount(),this.init(),this.animate(),this.enableRender(),this.decreaseJobCount(),ne.info(`[DxfViewer] Initialized in ${(Date.now()-this.timer)/1e3}s`)}init(){let e=this.viewerCfg;this.initSpinner(),this.initScene(),this.initRenderer(),this.initCSS2DRenderer(),this.initCamera(),this.initControls(),this.initEvents(),this.initMouseWheel(),this.initOthers(),e.enableAxisGizmo===!0&&(this.axes=this.initAxes()),e.enableStats===!0&&(this.stats=this.initStats()),e.enableToolbar&&(this.toolbar=this.initToolbar()),e.enableBottomBar&&(this.bottomBar=this.initBottomBar()),e.enableProgressBar&&(this.loadingProgressBar=this.initLoadingProgressBar()),this.enableSelection=e.enableSelection}initScene(){let e=new On;e.background=new Ve(2172976),e.matrixAutoUpdate=!1,e.matrixWorldAutoUpdate=!1,this.scene=e}initRenderer(){var e;this.renderer=new Pl({antialias:!0,preserveDrawingBuffer:!0,alpha:!1,stencil:!1}),this.renderer.setPixelRatio(window.devicePixelRatio),this.renderer.setSize(this.width,this.height),this.renderer.setClearColor(11119017,1),this.renderer.localClippingEnabled=!0,this.renderer.domElement.classList.add("webgl-renderer"),(e=this.viewerContainer)==null||e.appendChild(this.renderer.domElement),St.printGpuInfo(this.renderer.getContext()),xr.maxFragmentUniforms=this.renderer.capabilities.maxFragmentUniforms-20,this.enableOverlayRenderer&&(this.overlayRender=new Dr(this))}initCSS2DRenderer(){var i;let e=new xf;e.setSize(this.width,this.height),e.domElement.style.height="0",e.domElement.style.width="0",e.domElement.style.position="absolute",e.domElement.style.top="0",e.domElement.style.left="0",e.domElement.style.overflow="visible",e.domElement.classList.add("css2d-renderer"),(i=this.viewerContainer)==null||i.appendChild(e.domElement),this.css2dRenderer=e}initCamera(){if(!this.scene)return;let e=new Zi(-this.width/2,this.width/2,this.height/2,-this.height/2,.1,1e5);e.layers.enable(10),e.position.set(0,0,this.CAMERA_Z_POSITION),e.zoom=10,e.updateProjectionMatrix(),this.scene.add(e),this.camera=e}initControls(){let e=this.camera;if(!this.renderer||!e)return;let i=new cT(e,this.renderer.domElement);i.enableDamping=!1,i.enableRotate=!1,i.dampingFactor=.5,i.enabled=!0,i.keyPanSpeed=10,i.mouseButtons={LEFT:bi.PAN,MIDDLE:bi.PAN,RIGHT:bi.PAN},i.zoomSpeed=1,i.enableZoom=!0,i.touches={ONE:ao.PAN,TWO:ao.DOLLY_PAN},i.listenToKeyEvents(document.body),i.update(),this.controls=i,i.addEventListener("change",this.onControlsChange(this)),i.addEventListener("end",this.onControlsEnd(this))}onControlsChange(e){return()=>{e.enableRender()}}onControlsEnd(e){return()=>{e.enableRender()}}initSpinner(){var s;if(!this.viewerCfg.enableSpinner)return;let i=document.createElement("div");i.classList.add("bim-viewer-spinner");let n=document.createElement("div");n.classList.add(ho,"icon-loading"),i.append(n),(s=this.widgetContainer)==null||s.appendChild(i),this.spinner=i,this.setSpinnerVisibility(this.jobCount>0)}initEvents(){let e=this.renderer;if(!e||!this.camera||!this.controls)return;let i=-1,n=-1;e.domElement.addEventListener("pointerdown",s=>{i=s.x,n=s.y,this.mouseMoved=!1,s.button===bi.MIDDLE&&(e.domElement.style.cursor="move")}),e.domElement.addEventListener("pointermove",s=>{i>=0&&n>=0&&(Math.abs(s.x-i)>5||Math.abs(s.y-n)>5)&&(this.mouseMoved=!0,e.domElement.style.cursor="move")}),e.domElement.addEventListener("pointerup",s=>{!this.mouseMoved&&!this.mouseDoubleClicked&&s.button===bi.LEFT&&setTimeout(()=>{this.handleMouseClick(s)},200),this.mouseDoubleClicked&&setTimeout(()=>{this.mouseDoubleClicked=!1},200),i=-1,n=-1,e.domElement.style.cursor="auto"}),e.domElement.addEventListener("dblclick",()=>{this.mouseDoubleClicked=!0,this.mouseMoved}),window.addEventListener("keydown",s=>{s.altKey&&s.code==="KeyR"&&this.flyToRandomObject()}),window.addEventListener("resize",()=>{var a;let s=(a=this.renderer)==null?void 0:a.domElement;s&&s.parentElement&&this.resize(s.parentElement.clientWidth,s.parentElement.clientHeight)})}initMouseWheel(){let e=this.renderer;if(!e)return;let i=Date.now();e.domElement.addEventListener("wheel",n=>{let s=this.camera,a=this.viewerContainer;if(!s||!this.controls)return;n.preventDefault(),n.stopPropagation();let o=this.controls.zoomSpeed,l=Date.now(),c=l-i,u=10,h=30;if(c<u){ne.debug("[DxfViewer] Ignore too frequent mouse wheel:");return}else c<h&&(o*=c/h);i=l;let p=Math.pow(.95,o),d=s.zoom,f=n.deltaY>0?d*p:d/p,m=Mr.getScreenPointByEvent(n,a),g=Mr.screenPoint2NdcPoint(m,s,a),y=new A(g.x,g.y,0),E=y.clone().unproject(s);f=this.checkAndGetLimitedCameraZoom(f),s.zoom=Math.max(this.controls.minZoom,Math.min(this.controls.maxZoom,f)),s.updateProjectionMatrix();let b=y.clone().unproject(s),x=M3.set(0,0,0);x.subVectors(b,E),x.z=0,this.updateHidableObjectsVisibility(),s.position.sub(x),this.controls.target.sub(x),this.controls.update()})}initOthers(){!this.scene||!this.renderer||!this.camera||(this.renderer.domElement.style.outlineWidth="0")}initAxes(){var n;let e=document.createElement("div");e.classList.add("axesRenderer");let i=new If(e,this.camera,!0);return(n=this.widgetContainer)==null||n.append(e),i}initStats(){var n;let e=u3();e.setMode(0);let i=document.createElement("div");return i.classList.add("statsOutput"),i.appendChild(e.domElement),e.domElement.style.position="absolute",(n=this.widgetContainer)==null||n.append(i),e}showStats(){this.stats||(this.stats=this.initStats()),this.stats.showPanel(0)}hideStats(){this.stats&&this.stats.showPanel(-1)}initToolbar(){let e=this.viewerCfg;return new vh(this,(0,mCe.merge)(gDe,e.toolbarMenuConfig))}initBottomBar(){return new nm(this)}initLoadingProgressBar(){return new R3(this.widgetContainer)}showLayoutBar(){var e;(e=this.dxfLayoutBar)==null||e.show()}hideLayoutBar(){var e;(e=this.dxfLayoutBar)==null||e.hide()}animate(){var e,i,n,s,a;requestAnimationFrame(this.animate.bind(this)),this.scene&&this.camera&&this.renderEnabled&&(xr.resolutionUniform.value.set(this.width,this.height),(e=this.renderer)==null||e.render(this.scene,this.camera),this.hotpointRoot&&this.hotpointRoot.children.length>0&&((i=this.css2dRenderer)==null||i.render(this.scene,this.camera)),this.dispatchEvent("RenderAfter")),(n=this.controls)==null||n.update(),(s=this.stats)==null||s.update(),this.fpsUtils.update(),(a=this.bottomBar)==null||a.update()}getFps(){return this.fpsUtils.fps}is3d(){return!1}destroy(){var e,i,n,s,a;xr.abortJobs=!0,this.dxfLayoutBar&&(this.dxfLayoutBar.destroy(),this.dxfLayoutBar=void 0),(e=this.measurementManager)==null||e.destroy(),this.measurementManager=void 0,(i=this.markupManager)==null||i.destroy(),this.markupManager=void 0,(n=this.zoomToRectHelper)==null||n.destroy(),this.zoomToRectHelper=void 0,(s=this.boxSelectHelper)==null||s.destroy(),this.boxSelectHelper=void 0,this.sortedHidableObjects={},this.layoutInfos={},this.raycastableObjects=void 0,this.changes={},Object.keys(this.loadedModels).forEach(o=>{delete this.loadedModels[o]}),this.loadedModels={},this.css2dRenderer&&((a=this.viewerContainer)==null||a.removeChild(this.css2dRenderer.domElement),this.css2dRenderer=void 0),this.stats=void 0,this.raycaster=void 0,this.selectedObject=void 0,this.raf&&(this.timeoutSymbol&&this.raf.clearTimeout(this.timeoutSymbol),this.raf=void 0),this.contextMenu&&(this.contextMenu.destroy(),this.contextMenu=void 0),this.axes&&(this.axes.dispose(),this.axes=void 0),this.toolbar&&(this.toolbar.destroy(),this.toolbar=void 0),this.spinner&&(this.spinner.remove(),this.spinner=void 0),this.bottomBar=void 0,this.font=void 0,window.removeEventListener("resize",this.onResize),super.destroy()}loadModelAsync(e,i){return ot(this,null,function*(){var g,y;this.loadingDxfCount++,this.timer=Date.now(),this.increaseJobCount();let n=e.modelId||e.src;this.masterModelId||(this.masterModelId=n);let s=e.ignorePaperSpace||this.masterModelId!==n;e.ignorePaperSpace===!1&&s&&ne.warn(`[DxfViewer] Paper space will be ignored for '${n}' although 'ignorePaperSpace' is false!`),St.printMemory("Before loadModelAsync");let a=new Zc;a.setFont(this.font);let o=n,l=this.translate("ProgressBar.Loading"),c=E=>{var b;(b=this.loadingProgressBar)==null||b.updateProgress(o,l,E),i&&i(new ProgressEvent("LoadProgress",{loaded:E,total:100}))},u=(E,b,x)=>{var D;let S=E.loaded*100/E.total;S=S*(x-b)/100+b,(D=this.loadingProgressBar)==null||D.updateProgress(o,l,S),i&&i(new ProgressEvent("LoadProgress",{loaded:S,total:100}))},h=E=>u(E,0,90);(g=this.loadingProgressBar)==null||g.addProgressItem(o),c(0);let p=this.viewerCfg,d=yield a.loadDxfDataAsync(e.src,e.modelId,h,void 0,s,p.enableLocalCache).finally(()=>{this.loadingDxfCount--,this.loadingDxfCount===0&&this.font.releaseFontData&&this.font.releaseFontData()});if(ne.info(`[DxfViewer] Loaded '${e.src}' in ${(Date.now()-this.timer)/1e3}s, adding to scene...`),xr.abortJobs&&Promise.reject("[DxfViewer] abort load dxf"),d.threejsObject.children.length===0){let E=`[DxfViewer] Nothing was loaded from ${e.src}`;return ne.warn(E),this.decreaseJobCount(),Promise.reject(E)}let f=d.threejsObject;f.name=n;let m=this.getDxfUnits(d);if(this.masterModelId===e.modelId&&(this.units=m),ne.info(`[DxfViewer] Units of '${e.src}' is '${m}'`),m){let E=1;this.units&&m!==this.units&&(E=w8(m,this.units)),e.scale?e.scale=[e.scale[0]*E,e.scale[0]*E,e.scale[0]*E]:e.scale=[E,E,E]}if(e.matrix&&e.matrix.length===16){let E=new Ue;E.elements=e.matrix,f.applyMatrix4(E)}else{let E=e.position||[0,0,0],b=e.rotation||[0,0,0],x=e.scale||[1,1,1];f.position.set(E[0],E[1],E[2]),f.rotation.set(b[0]*Math.PI/180,b[1]*Math.PI/180,b[2]*Math.PI/180),f.scale.set(x[0],x[1],x[2])}return this.addLoadedModelToScene(f,e,d),St.printMemory("After addLoadedModelToScene"),ne.info(`[DxfViewer] Added '${e.src}' to scene in ${(Date.now()-this.timer)/1e3}s`),p.enableLayoutBar&&!this.dxfLayoutBar&&this.masterModelId===n&&(this.dxfLayoutBar=new w3(this)),this.decreaseJobCount(),c(100),(y=this.loadingProgressBar)==null||y.delayRemoveProgressItem(o),Promise.resolve()})}unloadDxf(){throw new Error("Not implemented yet!")}isCompareMode(){return this.compareMode}compare(e,i,n){return ot(this,null,function*(){var he,C,N,k,G;let{src:s,modelId:a}=e,{src:o}=i;if(this.compareMode)return Promise.reject("[DxfViewer] It is already under comparing mode!");if(this.masterModelId||Object.keys(this.loadedModels).length>0)return Promise.reject("[DxfViewer] Shouldn't load anything else before compare!");if(this.compareMode=!0,this.timer=Date.now(),this.increaseJobCount(),!this.font)return Promise.reject("[DxfViewer] Should set font first!");let l=new xr(!0);l.setFont(this.font),this.font instanceof Xc&&this.font.getFontData&&(yield this.font.getFontData());let c=s+o,u=this.translate("ProgressBar.Comparing"),h=U=>{var j;(j=this.loadingProgressBar)==null||j.updateProgress(c,u,U),n&&n(new ProgressEvent("CompareProgress",{loaded:U,total:100}))},p=(U,j,ee)=>{var se;let ae=U.loaded*100/U.total;ae=ae*(ee-j)/100+j,(se=this.loadingProgressBar)==null||se.updateProgress(c,u,ae),n&&n(new ProgressEvent("CompareProgress",{loaded:ae,total:100}))},d=U=>p(U,0,15),f=U=>p(U,15,30),m=U=>p(U,30,60),g=U=>p(U,60,95);St.printMemory("Before comparing"),this.masterModelId=a||s,this.loadingDxfCount+=2,(he=this.loadingProgressBar)==null||he.addProgressItem(c),h(0);let y=Date.now(),E=yield l.parse(s,d),b=yield l.parse(o,f),[x,S]=yield Promise.allSettled([E,b]);if(x.status==="rejected")return Promise.reject(`[DxfViewer] Failed to parse ${s}`);if(S.status==="rejected")return Promise.reject(`[DxfViewer] Failed to parse ${o}`);if(ne.info(`[DxfViewer] loadFiles in ${(Date.now()-y)/1e3}s`),xr.abortJobs)return Promise.reject("[DxfViewer] compare loadFile aborted");let D=x.value,P=S.value;y=Date.now();let _=yield new Wn(D,P).compare(m);if(ne.info(`[DxfViewer] Compared in ${(Date.now()-y)/1e3}s`),ne.debug("Compared results:",_),xr.abortJobs)return Promise.reject("[DxfViewer] compare change aborted");St.printMemory("After getting the comparison results"),y=Date.now(),yield l.loadEntitiesForCompare(D,P,_,g),St.printMemory("After Creating threejs objects based on comparison result"),(C=this.font)==null||C.releaseFontData(),this.changes=_,ne.info(`[DxfViewer] Creates threejs objects based on comparison result in ${(Date.now()-y)/1e3}s`);let w=D,F=P;if(this.loadingDxfCount-=2,this.decreaseJobCount(),Object.keys(_).length||ne.info("[DxfViewer] No change found"),((N=w.threejsObject)==null?void 0:N.children.length)===0&&((k=F.threejsObject)==null?void 0:k.children.length)===0){let U=`[DxfViewer] Nothing was loaded from ${s} and ${o}`;return ne.warn(U),Promise.reject(U)}let X=w.threejsObject,H=F.threejsObject;return X.name=s,H.name=o,y=Date.now(),this.addLoadedModelToScene(X,Ur({},e),w),St.printMemory("After adding first loaded Model to scene"),h(95),this.addLoadedModelToScene(H,Ur({},i),F),St.printMemory("After adding second loaded Model to scene"),ne.info(`[DxfViewer] Added compared objects to scene in ${(Date.now()-y)/1e3}s`),ne.info(`[DxfViewer] The comparison between ${s}' and '${o}' is completed in ${(Date.now()-this.timer)/1e3}s !`),h(100),(G=this.loadingProgressBar)==null||G.delayRemoveProgressItem(c),Promise.resolve()})}getEntitiesCount(){let e=0;return Object.values(this.loadedModels).forEach(i=>{var n;e+=((n=i.dxfData)==null?void 0:n.loadedEntityCount)||0}),e}getLoadedDxfModelIds(){return Object.keys(this.loadedModels)}getLayoutNames(){let e=[];return this.getLayouts().forEach(n=>{e.push(n.layoutName)}),e}getLayouts(){let e=[],i=this.loadedModels[this.masterModelId];if(i){let n=i.dxfData,s=n==null?void 0:n.objects.LAYOUT;s==null||s.forEach(a=>{e.push(a)})}return e}handleOverlayDxf(e){var a;let i=this.loadedModels[e];if(!i){ne.warn(`[DxfViewer] Can't find model for modelId '${e}'!`);return}this.increaseJobCount(),this.switchTransformMs(xr.MODEL_LAYOUT_NAME,e);let n=(a=i.dxfData)==null?void 0:a.threejsObject,s=n==null?void 0:n.children.find(o=>o.name===xr.MODEL_LAYOUT_NAME);s&&(s.traverse(o=>{this.addSpatialFilterSection(o,i.dxfData)}),this.calBoundingBoxOfLayoutChild(s)),this.showLayoutObjects(this.activeLayoutName),this.decreaseJobCount()}activateLayout(e){var p,d,f;if(this.increaseJobCount(),e.length==0){ne.warn("[DxfViewer] layout name is empty !"),this.decreaseJobCount();return}if(e===this.activeLayoutName){this.decreaseJobCount();return}let i=Date.now(),n=this.camera,s=this.getLayoutByName(e);if(!s){ne.warn(`[DxfViewer] Can't find layout of ${e} !`),this.decreaseJobCount();return}let a=this.loadedModels[this.masterModelId];if(!a){ne.warn(`[DxfViewer] Can't find master model for modelId '${this.masterModelId}'!`),this.decreaseJobCount();return}if(this.raycastableObjects=void 0,this.activeLayoutName){let m=this.getActiveLayoutInfo();m.lastCameraPosition||(m.lastCameraPosition=new A),(p=this.camera)==null||p.getWorldPosition(m.lastCameraPosition),m.lastCameraZoom=n.zoom}if(!(m=>{let g=this.layoutInfos[m];return!!(g!=null&&g.lastCameraZoom)})(e)){this.switchTransformMs(e,this.masterModelId);let m=this.getLayoutViewports(s),g=[];m.length>0&&(g=m[0].frozenLayerHandles);let y=e!==xr.MODEL_LAYOUT_NAME,E=(d=a.dxfData)==null?void 0:d.threejsObject,b=E==null?void 0:E.children.find(S=>S.name===e);if(b){let S=[],D=(f=a.dxfData)==null?void 0:f.layersAndThreejsObjects;b.traverse(P=>{this.addSpatialFilterSection(P,a.dxfData);let _=P;if(y&&_.material&&_.geometry){let w=_.userData.layerName;if(!this.isLayerFrozenForViewport(a.dxfData,w,g))return;S.push(_);let F=-1;D&&D[w]&&(F=D[w].indexOf(_),F>=0&&D[w].splice(F,1)),F<0&&ne.warn(`[DxfViewer] Failed to find object for modelId '${this.masterModelId}', layer '${w}', layout '${e}'`)}}),S.forEach(P=>{P.removeFromParent()})}let x=this.getFilteredViewports(s);ne.debug("[DxfViewer] Active layout:",e,", viewports:",x),console.time("[DxfViewer] generateObjectsByViewport"),x.forEach(S=>{this.generateObjectsByViewport(e,S,a.dxfData)}),console.timeEnd("[DxfViewer] generateObjectsByViewport"),e!==xr.MODEL_LAYOUT_NAME&&this.switchTransformMs(xr.MODEL_LAYOUT_NAME,this.masterModelId),e!==xr.MODEL_LAYOUT_NAME&&b&&this.setLayoutHidableObjectArray(b),b&&this.calBoundingBoxOfLayoutChild(b)}let c=this.getActiveLayoutInfo();this.measurementManager&&(c.measurementData=this.measurementManager.getMeasurementsData()||[],c.measurementData.forEach(m=>m.layoutName=this.activeLayoutName),this.setMeasurementsVisibility(!1),this.measurementManager.clearUndoRedo()),this.markupManager&&(c.markupData=this.markupManager.getMarkupData()||[],c.markupData.forEach(m=>m.layoutName=this.activeLayoutName),this.setMarkupsVisibility(!1),this.markupManager.clearUndoRedo()),this.showLayoutObjects(e),this.activeLayoutName=e,c=this.getActiveLayoutInfo();let u=c.measurementData;this.measurementManager&&(this.measurementManager.setMeasurementsData(u||[]),this.setMeasurementsVisibility(!0));let h=c.markupData;if(this.markupManager&&(this.markupManager.setMarkupData(h||[]),this.setMarkupsVisibility(!0)),c.lastCameraPosition)this.goTo(c.lastCameraPosition,c.lastCameraZoom,!1);else{let m=this.getLayoutExtentEx(s);if(m){let E=m.max.x-m.min.x,b=m.max.y-m.min.y;(E<1e-16||b<1e-16||E>1e16||b>1e16)&&(ne.warn(`[BimViewer] Got wired bbox, max: ${m.max.toArray()}, min: ${m.min.toArray()}, going to calculate one...`),m=this.computeBoundingBox()),c.bbox=m,this.activeLayoutName!==xr.MODEL_LAYOUT_NAME&&this.updateGroundPlane(),this.zoomToBBox(m)}}this.dispatchEvent("LayoutChanged"),St.printMemory(`After activated layout '${this.activeLayoutName}'`),this.enableRender(),this.decreaseJobCount(),ne.info(`[DxfViewer] Activated layout '${e}' in ${(Date.now()-i)/1e3}s`)}calBoundingBoxOfLayoutChild(e){let i=e.children.length;for(let n=0;n<i;n++){let s=e.children[n];s.children.length>0?s.userData.boundingBox=vn.getBoundingBox(s):s.userData.boundingBox&&delete s.userData.boundingBox}}getActiveLayoutName(){return this.activeLayoutName}getLayers(){var i,n;let e=[];if(this.masterModelId){let s=this.loadedModels[this.masterModelId],a=(i=s==null?void 0:s.dxfData)==null?void 0:i.tables.layer.layers;a&&e.push({modelId:this.masterModelId,layers:a})}for(let[s,a]of Object.entries(this.loadedModels)){if(s===this.masterModelId)continue;let o=(n=a==null?void 0:a.dxfData)==null?void 0:n.tables.layer.layers;o&&e.push({modelId:s,layers:o})}return e}setModelVisibility(e,i){let n=this.loadedModels[e];if(!n||!n.dxfData)throw new Error(`Failed to find model by modelId '${e}'!`);n.dxfData.threejsObject.visible=i,this.enableRender()}setLayerVisibility(e,i,n){let s=this.camera;n=n||this.masterModelId;let a=this.loadedModels[n];if(!a)throw new Error(`Failed to find layer by modelId '${n}'!`);let o=a.dxfData,l=o==null?void 0:o.tables.layer.layers[e];l?l.visible=i:ne.warn(`[DxfViewer] Layer '${e}' not found from dxfData!`);let c=o==null?void 0:o.layersAndThreejsObjects[e];if(c){let u=s.zoom;c.forEach(h=>{this.enableHideVisuallySmallObjects&&i&&u&&h.userData.visibleMinZoom&&u<h.userData.visibleMinZoom||(h.visible=i),(i===!1||h.userData.layerVisible!=null)&&(h.userData.layerVisible=i)})}else ne.warn(`[DxfViewer] No object found for layer '${e}'`);this.raycastableObjects=void 0,this.enableRender()}setLayerOpacity(){throw new Error("Not implemented yet!")}setLayerColor(e,i,n){n=n||this.masterModelId;let s=this.loadedModels[n];if(!s)throw new Error(`Failed to find layer by modelId '${n}'!`);let a=s.dxfData;if(!(a==null?void 0:a.tables.layer.layers[e]))throw new Error(`Failed to find layer by layerName '${e}'!`);let l=a==null?void 0:a.layersAndThreejsObjects[e];l?l.forEach(c=>{let u=c;u.material&&Cs.setMaterialColor(u.material,new Ve(i))}):ne.warn(`[DxfViewer] No object found for layer '${e}'`),this.enableRender()}setFont(e){return ot(this,null,function*(){console.time("[DxfViewer] Font file(s) load time"),S0.isShxFile(e[0])?this.font=yield new S0().loadAsync(e):(e.length>1&&ne.warn("[DxfViewer] Only support 1 typeface font file for now, others will be ignored!"),this.font=yield new pT().loadAsync(e[0])),console.timeEnd("[DxfViewer] Font file(s) load time")})}setDisplayLengthUnits(){throw new Error("Not implemented yet!")}setDisplayAreaUnits(){throw new Error("Not implemented yet!")}setDisplayPrecision(){throw new Error("Not implemented yet!")}getScreenshot(){return ot(this,null,function*(){var h;let n={type:"image/png",quality:.8},s=(h=this.renderer)==null?void 0:h.domElement;if(!s)return;let a;this.boxSelectHelper||(this.boxSelectHelper=new $f(this)),a=yield this.boxSelectHelper.select();let o=yield St.canvasToImage(s),l=document.createElement("canvas");l.width=s.width,l.height=s.height;let c=window.devicePixelRatio,u=l.getContext("2d");if(u.drawImage(o,0,0,o.width/c,o.height/c),this.overlayRender){let p=this.overlayRender.getCanvas(),d=yield St.canvasToImage(p);u.drawImage(d,0,0,d.width/c,d.height/c)}return St.renderingContextToImage(u,a,n.type,n.quality)})}activateMeasurement(e){this.measurementManager||(this.measurementManager=new Ql(this)),this.measurementManager.activateMeasurement(e),this.clearSelection()}deactivateMeasurement(){var e;(e=this.measurementManager)==null||e.deactivateMeasurement()}getActiveMeasurementType(){var e;return(e=this.measurementManager)==null?void 0:e.getActiveMeasurementType()}getMeasurements(){var n,s;let e=this.getActiveLayoutInfo();e.measurementData=((n=this.measurementManager)==null?void 0:n.getMeasurementsData())||[],e.measurementData.forEach(a=>{a.layoutName||(a.layoutName=this.activeLayoutName)});let i=[];for(let a of Object.values(this.layoutInfos))(s=a.measurementData)==null||s.forEach(o=>i.push(o));return i}setMeasurements(e){e.forEach(s=>{var l;let a=s.layoutName||xr.MODEL_LAYOUT_NAME;(l=this.getLayoutInfo(a).measurementData)==null||l.push(s)});let i=this.getActiveLayoutInfo();this.measurementManager||(this.measurementManager=new Ql(this));let n=this.measurementManager;i.measurementData&&n.setMeasurementsData(i.measurementData)}selectMeasurement(e){this.measurementManager||(this.measurementManager=new Ql(this)),this.measurementManager.selectMeasurementById(e)}unselectMeasurement(){this.measurementManager||(this.measurementManager=new Ql(this)),this.measurementManager.unselectMeasurement()}removeMeasurement(e){this.measurementManager||(this.measurementManager=new Ql(this)),this.measurementManager.removeMeasurementById(e)}setMeasurementsVisibility(e){this.measurementManager||(this.measurementManager=new Ql(this)),this.measurementManager.setMeasurementsVisibility(e)}clearMeasurements(){var e;(e=this.measurementManager)==null||e.clearMeasurements();for(let i of Object.values(this.layoutInfos))i.measurementData=[]}activateMarkup(e){this.markupManager||(this.markupManager=new D0(this)),this.markupManager.isMarkupActive()||this.markupManager.activate(),this.markupManager.setDrawType(e),this.clearSelection()}deactivateMarkup(){this.markupManager&&this.markupManager.deactivate()}getActiveMarkupType(){var e;return(e=this.markupManager)==null?void 0:e.getActiveMarkupType()}setMarkupLineColor(e){var i;(i=this.markupManager)==null||i.setLineColor(e)}getMarkupLineColor(){var e;return(e=this.markupManager)==null?void 0:e.getLineColor()}setMarkupFillColor(e){var i;(i=this.markupManager)==null||i.setFillColor(e)}getMarkupFillColor(){var e;return(e=this.markupManager)==null?void 0:e.getFillColor()}setMarkupLineWidth(e){var i;(i=this.markupManager)==null||i.setLineWidth(e)}getMarkupLineWidth(){var e;return(e=this.markupManager)==null?void 0:e.getLineWidth()}setMarkupFontSize(e){var i;(i=this.markupManager)==null||i.setFontSize(e)}getMarkupFontSize(){var e;return(e=this.markupManager)==null?void 0:e.getFontSize()}getMarkups(){var n,s;let e=this.getActiveLayoutInfo();e.markupData=((n=this.markupManager)==null?void 0:n.getMarkupData())||[],e.markupData.forEach(a=>{a.layoutName||(a.layoutName=this.activeLayoutName)});let i=[];for(let a of Object.values(this.layoutInfos))(s=a.markupData)==null||s.forEach(o=>i.push(o));return i}setMarkups(e){this.clearMarkups(),e.forEach(s=>{var l;let a=s.layoutName||xr.MODEL_LAYOUT_NAME;(l=this.getLayoutInfo(a).markupData)==null||l.push(s)});let i=this.getActiveLayoutInfo();this.markupManager||(this.markupManager=new D0(this));let n=this.markupManager;i.markupData&&n.setMarkupData(i.markupData),this.enableRender()}setMarkupsVisibility(e){this.markupManager||(this.markupManager=new D0(this)),this.markupManager.setMarkupsVisibility(e)}removeMarkup(e){this.markupManager||(this.markupManager=new D0(this)),this.markupManager.removeMarkupById(e)}clearMarkups(){var e;(e=this.markupManager)==null||e.clearAll();for(let i of Object.values(this.layoutInfos))i.markupData=[]}addHotpoint(e){var a;if(this.hasHotpoint(e.hotpointId)){ne.warn(`[DxfViewer] Hotpoint with id '${e.hotpointId}' already exist!`);return}let n=e.anchorPosition,s=Sf.createHotpoint(e.html);s.position.set(n[0]||0,n[1]||0,n[2]||0),s.visible=e.visible!==!1,s.userData.hotpoint=e,s.updateWorldMatrix(!1,!1),this.hotpointRoot||(this.hotpointRoot=new hr,this.hotpointRoot.matrixAutoUpdate=!1,this.hotpointRoot.matrixWorldAutoUpdate=!1,this.hotpointRoot.name="HotpointRoot",(a=this.scene)==null||a.add(this.hotpointRoot)),this.hotpointRoot.add(s),this.enableRender()}removeHotpoint(e){var n,s;let i=((n=this.hotpointRoot)==null?void 0:n.children)||[];for(let a=0;a<i.length;++a){let o=i[a];((s=o.userData.hotpoint)==null?void 0:s.hotpointId)===e&&o.removeFromParent()}}clearHotpoints(){var e;(e=this.hotpointRoot)==null||e.clear()}hasHotpoint(e){var n;return(((n=this.hotpointRoot)==null?void 0:n.children)||[]).findIndex(s=>{var a;return((a=s.userData.hotpoint)==null?void 0:a.hotpointId)===e})!==-1}getHitResult(e){let i=this.viewerContainer;if(!this.camera||!this.raycaster||!this.groundPlane)return;let n=Mr.getScreenPointByEvent(e,i),s=Mr.screenPoint2NdcPoint(n,this.camera,i);this.raycaster.setFromCamera(s,this.camera),this.raycaster.layers.enable(10);let a=this.raycaster.intersectObject(this.groundPlane,!0);if(a&&a.length>0){let o=a[0].point;return{location:[o.x,o.y]}}}zoomToRect(){this.zoomToRectHelper||(this.zoomToRectHelper=new oE(this)),this.zoomToRectHelper.activate()}getLayoutByName(e){let i,n=this.getLayouts();for(let s of n)if(s.layoutName===e){i=s;break}return i}getActiveLayoutInfo(){return this.getLayoutInfo(this.activeLayoutName)}getMsTransformMatrix(e){var p,d;let i=this.loadedModels[e],n=(p=i.dxfData)==null?void 0:p.header;if(!n)return;let s=n.$ANGDIR,a=this.getDxfUnits(i.dxfData),o=(d=i.dxfData)==null?void 0:d.tables.viewPort.viewPorts.filter(f=>f.name.toLocaleUpperCase()==="*ACTIVE");if(!o)return;let l=new Ue,c=xr.getDcs2WcsMatrix(o[0],s),u=new A(o[0].center.x,o[0].center.y,0).applyMatrix4(c),h=1;this.units&&a!==this.units&&(h=w8(a,this.units)),u.multiplyScalar(h),l.makeTranslation(u.x,u.y,0),l.multiply(new Ue().makeRotationZ(wr.degToRad(o[0].viewTwistAngle))),l.multiply(new Ue().makeTranslation(-u.x,-u.y,0)),this.loadedModels[e].msTransformMatrix=l}switchTransformMs(e,i){var l;let n=this.loadedModels[i];if(!n){ne.warn(`[DxfViewer] Can't find model whose modelId is ${i}`);return}let s=n.msTransformMatrix;if(QS.identity(),!s||s.equals(QS))return;let a=(l=n.dxfData)==null?void 0:l.threejsObject,o=a==null?void 0:a.children.find(c=>c.name===xr.MODEL_LAYOUT_NAME);o&&(e===xr.MODEL_LAYOUT_NAME?o.applyMatrix4(s):o.applyMatrix4(s.clone().invert()),o.updateMatrixWorld(!0))}getLayoutExtentEx(e){return e.layoutName===xr.MODEL_LAYOUT_NAME?this.getModelSpaceExtent():this.getLayoutExtent(e)}getModelSpaceExtent(){var u,h;let e=this.loadedModels[this.masterModelId],i=(u=e.dxfData)==null?void 0:u.header,n=new A,s=new A;if(!i)throw new Error(`Header is undefined in ${this.masterModelId}!`);let a=(h=e.dxfData)==null?void 0:h.tables.viewPort.viewPorts,o=i.$EXTMIN,l=i.$EXTMAX,c=i.$ANGDIR;if(a&&a.length>0){for(let p=0;p<a.length;p++){let d=a[p];if(d.name.toLocaleUpperCase()==="*ACTIVE"){let{center:f,viewHeight:m,aspectRatio:g}=d,y=m*g,E=xr.getDcs2WcsMatrix(d,c),b=new A(f.x,f.y,0);b.applyMatrix4(E),o={x:b.x-y/2,y:b.y-m/2,z:0},l={x:b.x+y/2,y:b.y+m/2,z:0};break}}return n.set(o.x,o.y,o.z),s.set(l.x,l.y,l.z),new Ot(n,s)}}getLayoutExtent(e){var h;let n=(h=this.loadedModels[this.masterModelId].dxfData)==null?void 0:h.header,s=new A,a=new A;if(!n)throw new Error(`Header is undefined in ${this.masterModelId}!`);let o=this.getLayoutViewports(e),l=n.$PEXTMIN,c=n.$PEXTMAX,u=n.$ANGDIR;if(o&&o.length>0){let p=o.filter(b=>parseInt(b.viewportId)===1),d;p.length>0?d=p[0]:d=o[0];let{centerPoint:f,width_paperSpace:m,height_paperSpace:g}=d,y=xr.getDcs2WcsMatrix(d,u),E=new A(f.x,f.y,0);return E.applyMatrix4(y),l={x:E.x-m/2,y:E.y-g/2,z:0},c={x:E.x+m/2,y:E.y+g/2,z:0},s.set(l.x,l.y,l.z),a.set(c.x,c.y,c.z),new Ot(s,a)}}showLayoutObjects(e){Object.values(this.loadedModels).forEach(n=>{var l;let s=0,a=0,o=(l=n.dxfData)==null?void 0:l.threejsObject;o==null||o.children.forEach(c=>{let u=c.name===e;c.visible=u,u?s++:a++}),ne.debug(`[DxfViewer] showLayoutObjects('${e}') sets ${s} layout level object(s) to visible and ${a} to hidden for model '${o==null?void 0:o.name}'`)})}getLayoutViewports(e){var a;let i=this.loadedModels[this.masterModelId],n=e.ownerHandle,s=(a=i.dxfData)==null?void 0:a.layoutViewportsMap[n];return s||[]}setMaterialUniforms(e,i){e instanceof Yt&&(e.uniforms.u_cameraZoom&&(e.uniforms.u_cameraZoom=xr.cameraZoomUniform),e.uniforms.u_viewportScale&&(i==null?void 0:i.header.$PSLTSCALE)===1&&(e.uniforms.u_viewportScale=xr.viewportScaleUniform))}isLayerFrozenForViewport(e,i,n){if(!e||!i)return!1;let s=e.tables.layer.layers[i];return s&&(s.flag&1)>0?!0:!n||n.length<=0?!1:s&&n.indexOf(s.handle)>=0}getFilteredViewports(e){let i=this.getLayoutViewports(e),n=i.filter(s=>s.viewportId!=="1");return n.length===i.length&&(n=i.filter((s,a)=>a!==0)),n}generateObjectsByViewport(e,i,n,s=[]){let a=i;if(i.viewportId=="1")return;if(!a.psBBox||!a.msToPsMatrix)throw new Error("The bbox or matrix is invalid in the viewport!");xr.transformMatrixUniform={value:a.msToPsMatrix},xr.viewportScaleUniform={value:i.viewHeight/i.height_paperSpace};let o=a.psBBox.clone();o.applyMatrix4(a.msToPsMatrix.clone().invert()),o.min.setZ(-1),o.max.setZ(1);let l=this.getObjectsByBoundingBox(o);if(l.length===0)return;let c=a.psBBox.min,u=a.psBBox.max,h=new Ds(new le(c.x,c.y),new le(u.x,u.y)),p=qu.generateSectionPlanesByBox(h),d=[],f=P=>(d[P.id]||(d[P.id]=P.clone(),this.setMaterialUniforms(d[P.id],n),qu.setMaterialSection(d[P.id],p)),d[P.id]),m=P=>{if(Array.isArray(P)){let _=[];return P.forEach(w=>{let F=f(w);_.push(F)}),_}else return f(P)},g=[...s,...i.frozenLayerHandles||[]],y;if(e!==xr.MODEL_LAYOUT_NAME){let P=i;P.associatedLeafObjectSet||(P.associatedLeafObjectSet=new Set),y=P.associatedLeafObjectSet}let E=new hr;E.name=i.viewportId;let b=n==null?void 0:n.layersAndThreejsObjects,x=[];if(l.forEach(P=>{let _=P.clone();_.traverse(w=>{if(w.material&&w.geometry){let F=w.userData.layerName;if(this.isLayerFrozenForViewport(n,F,g)){x.push(w);return}w.userData.layerVisible!==!1&&(w.visible=!0),w.material=m(w.material),y==null||y.add(w),b&&b[F]?b[F].push(w):ne.warn(`[DxfViewer] Failed to find object for modelId '${this.masterModelId}', layer '${F}', layout '${e}'`)}}),_.userData.boundingBox&&(_.visible=!0,delete _.userData.boundingBox),E.add(_)}),y&&y.size===0)return;Qr.removeEmptyObjectsFromRemovingObjects(x,E);let S=n==null?void 0:n.threejsObject,D=S==null?void 0:S.children.find(P=>P.name===e);D||(D=new hr,Qr.setSharedVariablesOfObject(D),D.name=e,S==null||S.add(D)),D.add(E),E.applyMatrix4(a.msToPsMatrix),E.updateMatrixWorld(!0),E.traverse(P=>{Qr.setSharedVariablesOfObject(P),this.addSpatialFilterSection(P,n,!0)})}findSpatialFilter(e,i){let n=i.objects.SPATIAL_FILTER;if(!n)return;let s;for(let a of n)if(a.handle===e){s=a;break}return s}getAnyMaterial(e){let i=e;if(i.material)return Array.isArray(i.material)?i.material[0]:i.material;let n;for(let s=0;s<e.children.length&&(n=this.getAnyMaterial(e.children[s]),!n);s++);return n}addSpatialFilterSection(e,i,n=!1){if(e.userData.entityType!=="INSERT"||!e.userData.spatialFilterHandle)return;let s=this.findSpatialFilter(e.userData.spatialFilterHandle,i);if(s){let a=n,o=!1,l=this.getAnyMaterial(e);if(l&&(l.clippingPlanes&&(a=l.clippingPlanes.length>0),o=l.clipIntersection),a&&o!==s.clipPolylines[0].bReversed){ne.warn("[DxfViewer] Material cannot set clipIntersection to different values at the same time. clipIntersection needs to be set to true here!");return}o=s.clipPolylines[0].bReversed;let c=this.generateSectionsBySpatialFilter(s,e.matrixWorld);if(c){let u=d=>{let f=0;return d.clippingPlanes&&(f=d.clippingPlanes.length),f+c.length>xr.maxFragmentUniforms},h=new Set,p=d=>{h.has(d.id)||(h.add(d.id),u(d)||qu.setMaterialSection(d,c,a,o))};e.traverse(d=>{let f=d.material;Array.isArray(f)?f.forEach(m=>{p(m)}):f&&p(f)})}}}getObjectsByBoundingBox(e){var l;let i=[];if(e.isEmpty())return ne.warn("[DxfViewer] bbox is empty !"),i;let n=c=>{let u=vn.getBoundingBox(c,!1);e.intersectsBox(u)&&i.push(c)},a=(l=this.loadedModels[this.masterModelId].dxfData)==null?void 0:l.threejsObject,o=a==null?void 0:a.children.find(c=>c.name===xr.MODEL_LAYOUT_NAME);return o&&o.children.forEach(c=>{n(c)}),i}getDxfUnits(e){if(e||Object.keys(this.loadedModels).length>0&&(e=this.loadedModels[this.masterModelId].dxfData),!e)return"Unitless";let i=e==null?void 0:e.header;if(!i)return ne.warn("DxfData or its header is undefined!"),"Unitless";let n=i.$INSUNITS;return xr.getDxfUnits(n)}generateSectionsBySpatialFilter(e,i){let n=e.clipPolylines[0];if(n.bConcave){ne.warn("[DxfViewer] clipPolyline.bConcave = true is not supported yet in spatialFilter !");return}QS.copy(i),e.localMatrix&&QS.multiply(e.localMatrix);let s=n.polyline,a=[];s.forEach(c=>{let u=c.clone().applyMatrix4(QS);a.push(new le(u.x,u.y))});let o=es.isClockWise(a),l=!o&&!n.bReversed||o&&n.bReversed;return qu.generateSectionPlanesByPoints(a,l)}addLoadedModelToScene(e,i,n){if(!this.scene)return;let s=i.modelId||i.src;if(this.loadedModels[s]){let o=1;for(;this.loadedModels[`${s}_${o}`];)o++;s=`${s}_${o}`,ne.warn(`[DxfViewer] Model '${s}' is loaded more than once!`)}this.loadedModels[s]={dxfData:n},e.matrixAutoUpdate=!1,e.updateMatrix(),St.printMemory("Before merge"),i.merge&&(xr.merge(n),St.printMemory("After merged")),e.updateMatrixWorld(!0),xr.computeLineDistances(e),this.getMsTransformMatrix(s),this.masterModelId===s?this.activateLayout(xr.MODEL_LAYOUT_NAME):this.handleOverlayDxf(s),ne.debug(n),this.scene.add(e);let a=n==null?void 0:n.threejsObject.children.find(o=>o.name===xr.MODEL_LAYOUT_NAME);a&&this.setLayoutHidableObjectArray(a),this.updateGroundPlane(),this.raycastableObjects=void 0,this.masterModelId===s?this.goToHomeView():this.enableRender()}resize(e,i){let n=this.camera;if(n){let s=e||window.innerWidth,a=i||window.innerHeight,o=s/a;n.left=-this.height*o/2,n.right=this.height*o/2,n.top=this.height/2,n.bottom=-this.height/2,n.updateProjectionMatrix(),this.renderer&&this.renderer.setSize(s,a),this.css2dRenderer&&(this.css2dRenderer.setSize(s,a),this.css2dRenderer.domElement.style.width="0",this.css2dRenderer.domElement.style.height="0"),this.overlayRender&&this.overlayRender.setSize(s,a)}this.enableRender()}getRaycaster(){return this.raycaster}getRaycastableObjects(){var n;if(this.raycastableObjects)return this.raycastableObjects;let e=Date.now(),i=[];for(let s of Object.values(this.loadedModels)){let a=(n=s.dxfData)==null?void 0:n.threejsObject,o=a&&a.children.find(l=>l.name===this.activeLayoutName);o&&o.traverseVisible(l=>{Qr.isLeafObject(l)&&i.push(l)})}return this.groundPlane&&i.push(this.groundPlane),this.raycastableObjects=i,ne.debug(`[DxfViewer] getRaycastableObjects() finds ${i.length} objects`),ne.debug(`[DxfViewer] getRaycastableObjects() costs ${(Date.now()-e)/1e3} s`),i}getViewportByPoint(e){if(this.activeLayoutName.length===0||this.activeLayoutName===xr.MODEL_LAYOUT_NAME)return;let i=this.getLayoutByName(this.activeLayoutName);if(!i)return;let n=a=>e.x<a.min.x||e.x>a.max.x||e.y<a.min.y||e.y>a.max.y,s=this.getFilteredViewports(i);for(let a=0,o=s.length;a<o;a++){let l=s[a];if(!n(l.psBBox))return l}}getRaycastableObjectsByMouse(e){let i=[],n=this.viewerContainer;if(!this.raycaster||!this.camera||!this.scene||!e)return i;let s=Date.now(),a=Mr.getScreenPointByEvent(e,n),o=Mr.screenPoint2NdcPoint(a,this.camera,n);if(this.raycaster.setFromCamera(o,this.camera),ne.debug("[DxfViewer] Space coordinates corresponding to the mouse position:",this.raycaster.ray.origin),this.activeLayoutName===xr.MODEL_LAYOUT_NAME)i=this.getRaycastableObjects(),ne.debug("[DxfViewer] getRaycastableObjectsByMouse() from modelSpace");else{let l=new WeakSet,c=this.getLayoutByName(this.activeLayoutName);if(c){let p=c.directAssociatedLeafObjectSet;p&&p.forEach(d=>{d.visible&&(i.push(d),l.add(d))})}let u=this.getViewportByPoint(this.raycaster.ray.origin);u&&u.associatedLeafObjectSet?(this.getRaycastableObjects().forEach(p=>{var d;(d=u.associatedLeafObjectSet)!=null&&d.has(p)&&!l.has(p)&&p.visible&&(i.push(p),l.add(p))}),ne.debug("[DxfViewer] getRaycastableObjectsByMouse() from inside of viewport:",u.viewportId)):ne.debug("[DxfViewer] getRaycastableObjectsByMouse() from out of viewport"),this.groundPlane&&i.push(this.groundPlane)}return ne.debug(`[DxfViewer] getRaycastableObjectsByMouse() costs ${(Date.now()-s)/1e3} s`),i}getIntersections(e){this.raycaster&&this.raycaster.layers.enable(10);let i=this.getRaycastableObjectsByMouse(e);return this.raycaster&&this.raycaster.intersectObjects(i,!0)||[]}handleMouseClick(e){var a;if(!this.enableSelection||this.measurementManager&&this.measurementManager.isMeasurementActive()||this.markupManager&&this.markupManager.isMarkupActive())return;let i=this.getIntersections(e);if(i.length>0){let o=l=>St.vectorToString(l);ne.debug(`[DxfViewer] Clicked at: ${o(i[0].point)}`)}let n=i.find(o=>{let l=o.object;return l.visible&&l.userData.selectable!==!1}),s=n&&n.object||void 0;if(i.length>0&&i[0].point){let o=(a=this.overlayRender)==null?void 0:a.getDrawablesByPosition(i[0].point,this.raycaster);if(o&&o.length>0){this.clearSelection(),o[0].selected=!0,this.selectedObject=o[0];return}}this.selectedObject&&this.clearSelection(),s&&this.selectedObject&&this.selectedObject.id===s.id&&(s=void 0),s?this.selectObject(s):this.clearSelection()}selectObject(e,i){if(!this.enableSelection)return;let n=a=>{if(a.children.length>0&&a.children.forEach(o=>n(o)),a instanceof Je||a instanceof _r){let o=Cs.clonedHighlightMaterials(a,{depthTest:i});o&&(a.userData.originalMaterial=a.material,a.material=o)}},s=a=>{if(a.children.length>0&&a.children.forEach(o=>s(o)),(a instanceof Je||a instanceof _r)&&a.userData.originalMaterial){let o=a.material;a.material=a.userData.originalMaterial,delete a.userData.originalMaterial,Array.isArray(o)?o.forEach(l=>l.dispose()):o instanceof Gr&&o.dispose()}};this.selectedObject&&(s(this.selectedObject),this.selectedObject=void 0),e&&(n(e),this.selectedObject=e,e.userData.dxfEntity?ne.info("[DxfViewer] Selected entity:",e.userData.dxfEntity):ne.info("[DxfViewer] Selected object:",e)),this.enableRender()}clearSelection(){this.selectedObject&&this.selectedObject instanceof po?this.selectedObject.selected=!1:this.selectObject(),this.selectedObject=void 0}flyToObjects(e){if(!e||e.length===0||!this.camera)return;let i=new Ot;e.forEach(n=>{let s=vn.getBoundingBox(n);s.isEmpty()||i.union(s)}),this.zoomToBBox(i)}flyToObject(e){this.flyToObjects([e])}flyToSelectedObject(){if(!this.selectedObject)return;let e=this.selectedObject;(e instanceof tn&&e.userData.clonedMesh||e instanceof Je&&ji.isMergedMesh(e)&&e.userData.clonedMesh)&&(e=e.userData.clonedMesh),this.flyToObject(e)}flyToRandomObject(){var h;let e=this.scene,i=[];for(let p of Object.values(this.loadedModels)){let d=(h=p.dxfData)==null?void 0:h.threejsObject;d&&i.push(d.id)}let n=i.length;if(n<=0)return;let s=Math.floor(Math.random()*n),a=i[s];if(!e.getObjectByProperty("id",a.toString()))return;let l=[];if(e.traverseVisible(p=>{let d=["SKYBOX","GROUND_GRID","GRASS_GROUND","BIM_VIEWER_BOX_HELPER"];(p instanceof Je||p instanceof _r)&&!d.includes(p.name)&&l.push(p.id)}),l.length<1)return;let c=Math.floor(Math.random()*l.length),u=e.getObjectById(l[c]);u&&(ne.info(`[DxfViewer] Flying to random object: ${u.name}, type: ${u.type}`),this.selectObject(u,void 0),this.flyToObject(u))}flyTo(e,i,n,s){let a=this.camera,o=this.controls;if(!a||!o)return;if(n&&(n=this.checkAndGetLimitedCameraZoom(n)),e.equals(i)){ne.error("[DxfViewer] Camera position and lookAt cannot be the same!");return}else if(!St.isVectorValid(e)||!St.isVectorValid(i)){ne.error("[DxfViewer] Invalid position or lookAt!",e,i);return}let l=e.distanceTo(i);l<a.near?(e=e.clone().sub(i).normalize().multiplyScalar(a.near*1.1),ne.warn("[DxfViewer] Camera could be too close to see the object!")):l>a.far&&(e=e.clone().sub(i).normalize().multiplyScalar(a.far*.9),ne.warn("[DxfViewer] Camera could be too far to see the object!"));let c=(m,g,y)=>{a.lookAt(g),a.position.set(m.x,m.y,m.z),y&&Number.isFinite(y)&&(a.zoom=y,a.updateProjectionMatrix(),this.updateHidableObjectsVisibility()),o.target.set(g.x,g.y,g.z),o.update()};if(s===!1){this.cameraUpdateInterval&&clearInterval(this.cameraUpdateInterval),c(e,i,n);return}let u=a.position.clone(),h=o.target.clone(),p=a.zoom,d=300,f=Date.now();this.cameraUpdateInterval&&clearInterval(this.cameraUpdateInterval),this.cameraUpdateInterval=setInterval(()=>{let m=Date.now()-f;m>d&&(m=d);let g=(x,S,D)=>{let P=x.x+(S.x-x.x)*D,_=x.y+(S.y-x.y)*D,w=x.z+(S.z-x.z)*D;return new A(P,_,w)},y=g(u,e,m/d),E=g(h,i,m/d),b;n&&(b=p+(n-p)*m/d),c(y,E,b),m>=d&&(clearInterval(this.cameraUpdateInterval),this.cameraUpdateInterval=void 0)},10)}goTo(e,i,n){let s=this.camera,a=this.controls;if(!s||!a)return;let o=new A(e.x,e.y,s.position.z),l=new A(e.x,e.y,a.target.z);this.flyTo(o,l,i,n)}goToHomeView(){let e=this.getActiveLayoutInfo();e.bbox?this.zoomToBBox(e.bbox):ne.error(`[DxfViewer] Failed to find extent for ${this.activeLayoutName}`)}zoomToBBox(e){let i=this.camera;if(!i)return;let n=e.max.x-e.min.x,s=e.max.y-e.min.y,a=i.right-i.left,o=i.top-i.bottom,l=Math.min(a/n,o/s);l/=1.1;let c=new A;e.getCenter(c),c.z=0;let u=c.clone().setZ(this.CAMERA_Z_POSITION);u.equals(c)||this.flyTo(u,c,l,!1)}zoomToCompareChange(e){if(this.changes){let i=this.changes[e];if(!i)return;let n=i.box;n&&this.zoomToBBox(n.clone().expandByScalar(1.2))}}getCompareChanges(){return this.changes}setBackgroundColor(e,i,n){this.scene&&(this.scene.background=new Ve(e,i,n),this.enableRender())}setSpinnerVisibility(e){this.spinner&&(e?this.spinner.classList.remove("hidden"):this.spinner.classList.add("hidden"))}increaseJobCount(){this.setSpinnerVisibility(++this.jobCount>0)}decreaseJobCount(){this.setSpinnerVisibility(--this.jobCount>0)}getLayoutInfo(e){return this.layoutInfos[e]||(this.layoutInfos[e]={measurementData:[],markupData:[]}),this.layoutInfos[e]}updateGroundPlane(){if(!this.scene)return;let e=this.getActiveLayoutInfo();if(!e.bbox)return;let i=e.bbox.clone();St.expandBoxByScale(i,3);let n=i.min,s=i.max,a=s.x-n.x+s.y-n.y+s.z-n.z;St.expandBoxByMinSize(i,a);let o=[],l=(h,p,d)=>{o.push(new A(h,p,d))},c=i.getSize(new A),u=i.getCenter(new A);if(l(-c.x/2,-c.y/2,0),l(c.x/2,-c.y/2,0),l(c.x/2,c.y/2,0),l(-c.x/2,c.y/2,0),this.groundPlane)this.groundPlane.geometry.setFromPoints(o),this.groundPlane.geometry.computeBoundingSphere(),this.groundPlane.geometry.computeBoundingBox(),this.groundPlane.geometry.computeVertexNormals();else{let h=new it;h.setFromPoints(o),h.setIndex([0,3,2,0,2,1]),h.computeVertexNormals();let p=0,d=new or({color:"#888",transparent:!0,opacity:p,side:wi});this.groundPlane=new Je(h,d),this.groundPlane.frustumCulled=!1,this.groundPlane.position.copy(u),this.groundPlane.scale.set(1e5,1e5,1),this.groundPlane.name="groundPlane",this.groundPlane.userData.selectable=!1,this.groundPlane.renderOrder=-1e3,this.scene.add(this.groundPlane)}this.groundPlane.updateMatrixWorld()}computeBoundingBox(){var i;let e=new Ot;for(let n of Object.values(this.loadedModels)){let s=(i=n.dxfData)==null?void 0:i.threejsObject;if(s){let a=vn.getBoundingBox(s,!1);a.isEmpty()||e.union(a)}}return e.min.z=0,e.max.z=0,ne.info(`[BimViewer] computeBoundingBox(), BBox's max: ${e.max.toArray()}, min: ${e.min.toArray()}`),e}checkAndGetLimitedCameraZoom(e){if(!e)return 1;let i=e;return e<this.CAMERA_MIN_ZOOM&&(ne.warn(`[DxfViewer] Attampting to set camera's zoom value to ${e}, will use ${this.CAMERA_MIN_ZOOM}`),i=this.CAMERA_MIN_ZOOM),i}setVisibilityByCameraFrustum(){var i;if(!this.camera)return;let e=Date.now();dCe.multiplyMatrices(this.camera.projectionMatrix,this.camera.matrixWorldInverse),fCe.setFromProjectionMatrix(dCe);for(let n of Object.values(this.loadedModels)){let s=(i=n.dxfData)==null?void 0:i.threejsObject;!s||!s.visible||s.children.forEach(a=>{a.visible&&a.children.forEach(o=>{o.userData.boundingBox&&(fCe.intersectsBox(o.userData.boundingBox)?o.visible=!0:o.visible=!1)})})}ne.debug(`[DxfViewer] setVisibilityByCameraFrustum cost: ${(Date.now()-e)/1e3}s`)}getVisiblePixelSize(e){let i=wr.smoothstep(e,1e4,3e4)*6.5+.5;return ne.debug("[DxfViewer] visiblePixelSize:",i),i}setLayoutHidableObjectArray(e){let i=this.camera;if(!this.enableHideVisuallySmallObjects||!i)return;let n=Date.now(),s=e.name;this.sortedHidableObjects[s]||(this.sortedHidableObjects[s]=[]);let a=this.sortedHidableObjects[s],o=i.zoom;this.lastCameraZoom=o;let l=h=>{if(!this.isCompareMode()||!h.material)return!1;let p;return h.material instanceof Yt?p=h.material.uniforms.u_color.value:p=h.material.color,p.equals(new Ve(Wn.ENTITY_COLOR_ADDED))||p.equals(new Ve(Wn.ENTITY_COLOR_REMOVED))},c=1;e.traverse(h=>{if(this.isCompareMode()&&l(h)||!Qr.isLeafObject(h))return;let p=h.geometry;p.boundingBox||p.computeBoundingBox();let d=p.boundingBox.clone();if(!d||!St.isBoxValid(d))return;d.applyMatrix4(h.matrixWorld),d.getSize(M3);let f=Math.max(M3.x,M3.y),m=c/f;m<1/0?a.push({visibleMinZoom:m,object:h}):h instanceof rn?a.push({visibleMinZoom:c,object:h}):ne.warn("[DxfViewer] The size of bbox is 0 ! ",h)}),c=this.getVisiblePixelSize(a.length);let u=0;a.forEach(h=>{let p=h.visibleMinZoom*c;h.visibleMinZoom=p,h.object.userData.visibleMinZoom=p,p>o&&(h.object.visible=!1,u++)}),a.sort((h,p)=>h.visibleMinZoom-p.visibleMinZoom),ne.debug(`[DxfViewer] setLayoutHidableObjectArray cost: ${(Date.now()-n)/1e3}s, ${u} objects changed to hidden`)}statObjects(e){let i=this.sortedHidableObjects[this.activeLayoutName],n=c=>{let u=0,h=c;for(;h&&(u++,h!==e);)h=h.parent;return u},s=i.length,a={},o=0;i.forEach(c=>{let u=c.object;if(u.geometry&&u.material){o++;let h=n(c.object);a[h]||(a[h]=0),a[h]++}});let l=0;e.traverse(c=>{let u=c;u.geometry&&u.material&&l++}),ne.info(`[DxfViewer] hidableObjects count:${s}, real count:${o}, layout count: ${l}, level:`,a),ne.info("[DxfViewer] scene:",this.scene)}updateHidableObjectsVisibility(){let e=this.camera;if(!e)return;let i=Date.now(),n=e.zoom;if(Math.abs(n-this.lastCameraZoom)<1e-5||(this.updateRaycasterThreshold(),this.updateCameraZoomUniform(n),this.raycastableObjects=void 0,!this.sortedHidableObjects[this.activeLayoutName]))return;let s=this.sortedHidableObjects[this.activeLayoutName];if(s.length===0)return;let a=n>this.lastCameraZoom,o=Math.min(n,this.lastCameraZoom),l=Math.max(n,this.lastCameraZoom),c=[],u=0;for(let h=0;h<s.length;++h)if(s[h].object.userData.layerVisible!==!1){if(s[h].visibleMinZoom<o){c.push(s[h].object);continue}else if(s[h].visibleMinZoom>l)break;s[h].object.visible=a,a&&c.push(s[h].object),u++}this.lastCameraZoom=n,ne.debug(`[DxfViewer] updateHidableObjectsVisibility cost: ${(Date.now()-i)/1e3}s, ${u}(out of ${s.length}) objects changed to ${a?"visible":"hidden"}`),this.groundPlane&&c.push(this.groundPlane),this.raycastableObjects=c}updateRaycasterThreshold(){let e=this.camera;if(!e||!this.raycaster)return;let i=12/e.zoom,n=this.raycaster.params;n.Line?n.Line.threshold=i:n.Line={threshold:i},n.Points?n.Points.threshold=i:n.Points={threshold:i}}updateCameraZoomUniform(e){xr.cameraZoomUniform.value=e}};var D3=Un(Yl(),1);var VG=class{constructor(r,e,i){this.scene=this.initScene();this.selectedObject=void 0;this.loadedModels={};this.viewerMode=0;this.raycaster=new Oc;this.savedMaterialsForOpacity=[];this.jobCount=0;this.bbox=new Ot;this.outlineMaterial=new Tr({color:1118481});this.outlineRoot=new hr;this.transparentObjectIds=[];this.applyOptionsAndAddToScene=(r,e,i)=>{if(ne.info(`[SimplifiedBimViewer] '${r}' is loaded, adding to scene...`),i.matrix&&i.matrix.length===16){let n=new Ue;n.elements=i.matrix,e.applyMatrix4(n)}else{let n=i.position||[0,0,0],s=i.rotation||[0,0,0],a=i.scale||[1,1,1];e.position.set(n[0],n[1],n[2]),e.rotation.set(s[0]*Math.PI/180,s[1]*Math.PI/180,s[2]*Math.PI/180),e.scale.set(a[0],a[1],a[2])}this.addLoadedModelToScene(e,i)};this.getMeshes=r=>{let e=[];return r instanceof Je?e.push(r):r.traverseVisible(i=>{i instanceof Je&&e.push(i)}),e};if(this.containerOrCanvas=r,e&&(this.viewerMode=e),this.glContext=i,this.viewerMode===1&&!(!(r instanceof HTMLDivElement)&&i))throw new Error("[SimplifiedBimViewer] Parameters don't match Browserless viewerMode !");this.increaseJobCount(),this.init(),this.decreaseJobCount(),ne.info("[SimplifiedBimViewer] Initialized"),this.animate()}init(){this.initRenderer(),this.initCamera(),this.initControls(),this.initLights(),this.initPointerEvents(),this.scene.add(this.outlineRoot)}initScene(){let r=new On;return r.background=new Ve(7112861),r.matrixAutoUpdate=!0,r}isBrowserlessMode(){return this.viewerMode===1}isBrowserMode(){return this.viewerMode===0}initRenderer(){let r={antialias:!0,preserveDrawingBuffer:!0},e=this.isBrowserlessMode();e&&Object.assign(r,{canvas:this.containerOrCanvas,context:this.glContext});let i=new Pl(r);if(e){let n=this.containerOrCanvas.width,s=this.containerOrCanvas.height;ne.info(`[SimplifiedBimViewer] Render target size: ${n} x ${s}`),this.renderTarget=new kr(n,s,{minFilter:ai,magFilter:Di,format:Bs,type:Fu}),i.setRenderTarget(this.renderTarget)}else{let n=this.containerOrCanvas.clientWidth,s=this.containerOrCanvas.clientHeight;this.containerOrCanvas.append(i.domElement),i.setPixelRatio(window.devicePixelRatio),i.setSize(n,s)}i.outputEncoding=yr,i.toneMappingExposure=1,i.physicallyCorrectLights=!0,i.setClearColor(11119017,1),i.shadowMap.enabled=!0,i.shadowMap.type=Ly,this.renderer=i,e||(this.pmremGenerator=new yp(i),this.pmremGenerator.compileEquirectangularShader(),this.setEnvironmentFromDataArray())}initCamera(){if(!this.scene)return;let r=this.containerOrCanvas.clientWidth||this.containerOrCanvas.width||0,e=this.containerOrCanvas.clientHeight||this.containerOrCanvas.height||0,i=1;r&&e&&(i=r/e),this.camera=new qr(68,i,.05,1e4),this.camera.position.set(10,10,10),this.camera.lookAt(0,0,0),this.scene.add(this.camera)}initControls(){if(!this.renderer)return;let r=this.camera;if(!r)return;let e=new cT(r,this.renderer.domElement);e.enableDamping=!0,e.dampingFactor=.5,e.enabled=!0,e.keyPanSpeed=10,e.keys={LEFT:"KeyD",UP:"KeyE",RIGHT:"KeyA",BOTTOM:"KeyQ"},e.update(),this.controls=e,e.addEventListener("change",()=>{!this.isBrowserMode()&&this.renderer&&this.renderer.render(this.scene,r)})}initLights(){if(!this.scene)return;let r=16777215,e=.3,i=new $s(r,e);i.position.set(-2,2,4);let n=new Ol(3158064),s=new pf(r,14540253,3);s.position.set(0,300,0),this.scene.add(i),this.scene.add(n),this.scene.add(s)}initPointerEvents(){if(!this.renderer||!this.camera||!this.controls)return;let r=!1,e=!1,i=-1,n=-1;this.renderer.domElement.addEventListener("pointerdown",s=>{i=s.x,n=s.y,r=!1}),this.renderer.domElement.addEventListener("pointermove",s=>{i>=0&&n>=0&&(Math.abs(s.x-i)>5||Math.abs(s.y-n)>5)&&(r=!0)}),this.renderer.domElement.addEventListener("pointerup",()=>{e&&setTimeout(()=>{e=!1},200),i=-1,n=-1}),this.renderer.domElement.addEventListener("dblclick",s=>{e=!0,r||(this.handleMouseClick(s),this.flyToSelectedObject())})}animate(){var r;this.isBrowserMode()&&requestAnimationFrame(this.animate.bind(this)),this.controls&&this.controls.update(),this.scene&&this.camera&&((r=this.renderer)==null||r.render(this.scene,this.camera))}destroy(){this.camera=void 0,this.scene&&this.scene.clear(),this.renderer&&(this.containerOrCanvas.removeChild(this.renderer.domElement),this.renderer.clear(),this.renderer.dispose(),this.renderer=void 0),this.controls&&(this.controls.dispose(),this.controls=void 0),this.renderTarget&&(this.renderTarget.dispose(),this.renderTarget=void 0),this.raycaster=void 0,this.selectedObject=void 0,this.savedMaterialsForOpacity=void 0,Object.keys(this.loadedModels).forEach(r=>{delete this.loadedModels[r]})}loadLocalModel(r,e,i){return ot(this,null,function*(){let s=yield new Zc().loadLocalModel(r,e.src,i);return s?(this.applyOptionsAndAddToScene(r,s,e),Promise.resolve()):Promise.reject()})}loadModel(r,e){return ot(this,null,function*(){this.increaseJobCount();let n=yield new Zc().loadModel(r.src,r.fileFormat,e);return n?(this.applyOptionsAndAddToScene(r.src,n,r),Promise.resolve()):Promise.reject()})}parseGltf(r,e,i,n){this.increaseJobCount(),new Zc().parseGltf(r,e.src,s=>{this.applyOptionsAndAddToScene(e.src,s,e),i&&i(s)},s=>{n&&n(s)})}addLoadedModelToScene(r,e){if(!this.scene)return;r.updateMatrix(),this.scene.add(r);let i=new Lg(r);i.name="BIM_VIEWER_BOX_HELPER",i.visible=!1,i.material&&(i.material=void 0,i.layers.set(11));let n=e.modelId||e.src;if(this.loadedModels[n]){let o=1;for(;this.loadedModels[`${n}_${o}`];)o++;n=`${n}_${o}`,ne.warn(`[BimViewer] Model '${n}' is loaded more than once!`)}this.loadedModels[n]={id:r.id,bbox:i},this.computeBoundingBox();let s=Object.values(this.loadedModels).map(o=>o.id);(!s||s.length<=1)&&(this.tryAdjustCameraNearAndFar(),this.goToHomeView()),this.scene.add(i),e.edges&&Qr.addOutlines(r),this.decreaseJobCount(),ne.info(`[SimplifiedBimViewer] Added '${e.src}' to scene`)}addOrRemoveObjectOpacity(r=!0,e=.3,i,n){if(this.savedMaterialsForOpacity||(this.savedMaterialsForOpacity=[]),!this.scene)return;let s=this.scene,a=[];Object.keys(this.loadedModels).forEach(o=>{let l=this.loadedModels[o];if(r){this.savedMaterialsForOpacity&&this.savedMaterialsForOpacity.length>0&&Qr.revertObjectOpacityById(s,l.id,this.savedMaterialsForOpacity);let c=Qr.setObjectOpacityById(s,l.id,e,i,n);a.push(...c)}else this.savedMaterialsForOpacity&&Qr.revertObjectOpacityById(s,l.id,this.savedMaterialsForOpacity)}),r?this.savedMaterialsForOpacity=a:this.savedMaterialsForOpacity=[]}hasTransparentObject(){return!!(this.savedMaterialsForOpacity&&this.savedMaterialsForOpacity.length>0)}getIntersections(r){if(!this.raycaster||!this.camera||!this.scene)return[];let e=new le;r&&(e=Mr.getScreenPointByEvent(r,this.containerOrCanvas));let i=Mr.screenPoint2NdcPoint(e,this.camera,this.containerOrCanvas);this.raycaster.setFromCamera(i,this.camera);let n=[];return Object.values(this.loadedModels).forEach(s=>{let a=this.scene&&this.scene.getObjectById(s.id);a&&a.visible&&n.push(a)}),this.raycaster.intersectObjects(n,!0)||[]}handleMouseClick(r){let i=this.getIntersections(r).find(s=>{let a=s.object;return a.visible&&(a.userData.selectable!==!1||a instanceof Je)}),n=i&&i.object||void 0;n&&this.selectedObject&&this.selectedObject.id===n.id&&(n=void 0),n?this.selectObject(n):this.clearSelection()}selectObject(r){if(this.selectedObject){let i=this.selectedObject.userData;if(i.originalMaterial){if(this.selectedObject.material){let n=this.selectedObject.material;Array.isArray(n)?n.forEach(s=>s.dispose()):n instanceof Gr&&n.dispose()}this.selectedObject.material=i.originalMaterial,delete i.originalMaterial}this.selectedObject=void 0}if(!this.scene||!r)return;let e=Cs.clonedHighlightMaterials(r);e&&(this.selectedObject=r,this.selectedObject.userData.originalMaterial=this.selectedObject.material,this.selectedObject.material=e)}clearSelection(){this.selectObject()}flyToObjects(r){if(!r||r.length===0||!this.camera)return;let e=new A,i=new A,n=new Ot;r.forEach(a=>{let o=vn.getBoundingBox(a);n.union(o)});let s=new A;this.camera.getWorldDirection(s),bs.getCameraPositionByBboxAndDirection(n,e,i,this.camera.projectionMatrix,s),this.flyTo(e,i)}flyToObject(r){this.flyToObjects([r])}flyToSelectedObject(){this.selectedObject&&this.flyToObject(this.selectedObject)}flyTo(r,e,i){var l;let n=this.camera,s=this.controls;if(!n||!s)return;r=Array.isArray(r)?new A(r[0],r[1],r[2]):r,e=Array.isArray(e)?new A(e[0],e[1],e[2]):e;let a=r,o=e;ne.info("[SimplifiedBimViewer] flyTo: ",St.vectorToString(a)),n.lookAt(o.x,o.y,o.z),n.position.set(a.x,a.y,a.z),s.target.set(o.x,o.y,o.z),s.update(),this.isBrowserMode()||(l=this.renderer)==null||l.render(this.scene,n),i&&i()}goToHomeView(){var l;let r=new A,e=new A,i=new A,n=new A;this.bbox.getSize(n),this.bbox.getCenter(i);let s=(n.x+n.y+n.z)/3*1.5,a=new A(i.x+s,i.y+s/1.5,i.z+s),o=i.clone().sub(a);bs.getCameraPositionByBboxAndDirection(this.bbox,r,e,(l=this.camera)==null?void 0:l.projectionMatrix,o),r.equals(e)||this.flyTo(r,e)}setEnvironmentFromDataArray(r){Lc.createEnvTextureFromDataArray(this.pmremGenerator,r).then(e=>{this.scene.environment=e,this.isBrowserMode()||this.animate()})}tryAdjustCameraNearAndFar(){let r=this.camera;if(!this.scene||!r)return;let e=this.bbox,i=r.near,n=r.far,s=e.max.x-e.min.x,a=e.max.y-e.min.y,o=e.max.z-e.min.z,l=Math.max(s,a,o),c=5,u=l/c,h=l*c;if(i>u||n<h){let p=d=>St.numberToString(d);ne.info(`[SimplifiedBimViewer] BBox's longest side is: ${p(l)}`),i>u&&(ne.warn(`[SimplifiedBimViewer] camera.near(${p(i)}) shouldn't bigger than ${p(u)}, will change it!`),r.near=u),n<h&&(ne.warn(`[SimplifiedBimViewer] camera.far(${p(n)}) shouldn't smaller than ${p(h)}, will change it!`),r.far=h)}r.updateProjectionMatrix()}isolateObjects(r){let e=this.transparentObjectIds.length>0?void 0:this.transparentObjectIds,i=this.transparentObjectIds.length>0?this.transparentObjectIds:void 0,n=new or({color:16777215,transparent:!0,opacity:.1});Object.keys(this.loadedModels).forEach(a=>{let o=this.loadedModels[a];Qr.applyMaterialToObjectById(this.scene,o.id,n,i,e)}),this.outlineRoot.clear();let s=[];if(r.forEach(a=>{let o=a.modelId,l=o?this.scene.getObjectById(this.loadedModels[o].id):this.scene;l||(ne.warn(`[BimViewer] The ModelId of ${o} has no corresponding model.`),l=this.scene),l.traverse(c=>{if((0,D3.includes)(a.id,(0,D3.get)(c.userData,"UniqueId"))){let u=this.getMeshes(c);s=s.concat(u)}})}),s.length>0){s.forEach(o=>{var c;let l=Qr.createOutline(o.geometry,o.matrix,this.outlineMaterial);(c=o.parent)!=null&&c.matrixWorld&&l.applyMatrix4(o.parent.matrixWorld),this.outlineRoot.add(l)});let a=s.map(o=>o.id);Object.keys(this.loadedModels).forEach(o=>{let l=this.loadedModels[o];Qr.revertAppliedMaterialToObjectById(this.scene,l.id,a)}),this.transparentObjectIds=a,this.flyToObjects(s)}else ne.warn(`[BimViewer] No object found with uniqueIds: ${r.map(a=>a.id)}`);this.isBrowserMode()||this.animate()}increaseJobCount(){++this.jobCount}decreaseJobCount(){--this.jobCount}computeBoundingBox(){let r=new Ot;return Object.values(this.loadedModels).forEach(e=>{if(e.bbox){e.bbox.geometry.computeBoundingBox();let i=e.bbox.geometry.boundingBox;i&&!i.isEmpty()&&r.union(i)}}),this.bbox=r,r}getContext(){var r;return(r=this.renderer)==null?void 0:r.getContext()}getCameraDirection(){var e;let r=new A;return(e=this.camera)==null||e.getWorldDirection(r),{x:r.x,y:r.y,z:r.z}}setFov(r){this.camera&&(this.camera.fov=r,this.camera.updateProjectionMatrix())}};var gCe=Un(Yl(),1);var cm=class extends hr{constructor(e,i,n=10){super();this.images=e,this.thumbnailImages=i,this.size=n,this.textureLoader=new Es,this.mesh=new Je}fadeIn(e=1e3){let n=this.getMaterials();if(Array.isArray(n)&&n.length>0)n.forEach(a=>a.opacity=0);else{this.visible=!0;return}let s=1/(e/10);this.visible=!0,this.clearFading(),this.renderOrder+=1,this.fadingInInterval=setInterval(()=>{let a=1,o=this.getMaterials();this.materialEquals(n,o)||(n=o),n.length>0&&(a=Math.min(n[0].opacity+s,1),n.forEach(l=>l.opacity=a)),a>=1&&this.clearFading()},10)}materialEquals(e,i){return gCe.default.isEqualWith(e,i,(n,s)=>{if(!(Array.isArray(n)&&Array.isArray(s)))return n.id===s.id})}fadeOut(e=1e3){let n=this.getMaterials(),s=1/(e/10),a=2,o=3,l=(o-a)/(e/10);this.clearFading(),this.scale.set(a,a,a),this.fadingOutInterval=setInterval(()=>{let c=this.scale.x+l;this.scale.set(c,c,c);let u=0;n.length>0&&(u=Math.max(n[0].opacity-s,0),n.forEach(h=>h.opacity=u)),(u<=0||c>=o)&&this.clearFading()},10)}clearFading(){let e=this.getMaterials();this.fadingInInterval&&(clearInterval(this.fadingInInterval),this.fadingInInterval=void 0,this.visible=!0,e.forEach(i=>i.opacity=1),this.renderOrder-=1),this.fadingOutInterval&&(clearInterval(this.fadingOutInterval),this.fadingOutInterval=void 0,this.visible=!1,e.forEach(i=>i.opacity=1),this.scale.set(1,1,1))}getMaterials(){let e=this.thumbnailMesh;e||(e=this.mesh);let i=[];return Array.isArray(e.material)?i.push(...e.material):e.material&&i.push(e.material),i}create(){}createThumbnailMesh(e){return ot(this,null,function*(){if(!this.thumbnailImages||this.thumbnailImages.length!=6)return;this.thumbnailMesh=new Je(new Qa(e,e,e)),this.thumbnailMesh.geometry.scale(1,1,-1);let n=(yield this.loadTexturesAsync(this.thumbnailImages)).map(s=>new or({map:s,side:en,transparent:!0}));this.thumbnailMesh&&(this.thumbnailMesh.material=n,this.add(this.thumbnailMesh))})}loadTextures(e){return e.map(i=>this.textureLoader.load(i))}loadTexturesAsync(e){return ot(this,null,function*(){let i=e.map(n=>this.textureLoader.loadAsync(n));return yield Promise.all(i)})}destroyMesh(e){var i;this.remove(e),e.clear(),e.geometry.dispose(),Array.isArray(e.material)?e.material.forEach(n=>{var s;(s=n.map)==null||s.dispose(),n.dispose()}):((i=e.material.map)==null||i.dispose(),e.material.dispose())}destroy(){this.clearFading(),this.images=[],this.mesh&&(this.mesh instanceof Je?this.destroyMesh(this.mesh):this.mesh.traverse(e=>{e instanceof Je&&this.destroyMesh(e)}),this.mesh=void 0)}};var C3=class extends cm{constructor(r,e,i=20){if(super(r,e,i),r.length!==6)throw new Error(`[VRCube] Wrong number of images! Expected 6, got ${r.length}`)}create(){return ot(this,null,function*(){yield this.createThumbnailMesh(this.size+.1),this.thumbnailMesh?this.createMesh():yield this.createMesh()})}createMesh(){return ot(this,null,function*(){let r=this.mesh;r.geometry=new Qa(this.size,this.size,this.size),r.geometry.scale(1,1,-1);let i=(yield this.loadTexturesAsync(this.images)).map(n=>new or({map:n,side:en,transparent:!0}));r.material=i,this.add(r),this.thumbnailMesh&&(this.destroyMesh(this.thumbnailMesh),this.thumbnailMesh=void 0,this.thumbnailImages=void 0)})}};var A3=class extends cm{constructor(e,i,n=20){super(e,i,n);if(e.length!==24)throw new Error(`[VRCube24Faces] Wrong number of images! Expected 24, got ${e.length}`);this.ratio=1/1,this.subPlaneWidth0=this.size*(this.ratio/(this.ratio+1)),this.subPlaneWidth1=this.size-this.subPlaneWidth0}create(){return ot(this,null,function*(){yield this.createThumbnailMesh(this.size+.1),this.thumbnailMesh?this.createMesh():yield this.createMesh()})}createMesh(){return ot(this,null,function*(){var h;this.mesh=new hr,this.mesh.scale.set(1,1,-1);let i=(yield this.loadTexturesAsync(this.images)).map(p=>new or({map:p,side:Gn,transparent:!0}));if(i.length!==24)throw new Error(`[VRCube24Faces] Wrong number of materials! Expected 24, got ${i.length}`);let n=4,s=this.createPlaneOfAFace(i.slice(0,n));s.rotateOnAxis(new A(0,1,0),-Math.PI/2),s.position.set(this.size/2,0,0);let a=this.createPlaneOfAFace(i.slice(n,n*2));a.rotateOnAxis(new A(0,1,0),Math.PI/2),a.position.set(-this.size/2,0,0);let o=this.createPlaneOfAFace(i.slice(n*2,n*3));o.rotateOnAxis(new A(1,0,0),-Math.PI/2),o.rotateOnAxis(new A(0,0,1),Math.PI),o.rotateOnAxis(new A(1,0,0),Math.PI),o.position.set(0,this.size/2,0);let l=this.createPlaneOfAFace(i.slice(n*3,n*4));l.rotateOnAxis(new A(1,0,0),Math.PI/2),l.rotateOnAxis(new A(0,0,1),Math.PI),l.rotateOnAxis(new A(1,0,0),Math.PI),l.position.set(0,-this.size/2,0);let c=this.createPlaneOfAFace(i.slice(n*4,n*5));c.rotateOnAxis(new A(0,1,0),Math.PI),c.position.set(0,0,this.size/2),this.createPlaneOfAFace(i.slice(n*5,n*6)).position.set(0,0,-this.size/2),this.add(this.mesh),this.thumbnailMesh&&(this.destroyMesh(this.thumbnailMesh),this.remove(this.thumbnailMesh),(h=this.thumbnailMesh)==null||h.clear(),this.thumbnailMesh=void 0)})}createPlaneOfAFace(e){var p;let i=new hr,n=new ts(this.subPlaneWidth0,this.subPlaneWidth0),s=new ts(this.subPlaneWidth1,this.subPlaneWidth0),a=new ts(this.subPlaneWidth0,this.subPlaneWidth1),o=new ts(this.subPlaneWidth1,this.subPlaneWidth1),l=new Je(n,e[0]),c=new Je(s,e[1]),u=new Je(a,e[2]),h=new Je(o,e[3]);return l.position.set(this.subPlaneWidth1/2,this.subPlaneWidth1/2,0),c.position.set(-this.subPlaneWidth0/2,this.subPlaneWidth1/2,0),u.position.set(this.subPlaneWidth1/2,-this.subPlaneWidth0/2,0),h.position.set(-this.subPlaneWidth0/2,-this.subPlaneWidth0/2,0),l.geometry.scale(-1,1,1),c.geometry.scale(-1,1,1),u.geometry.scale(-1,1,1),h.geometry.scale(-1,1,1),i.add(l,c,u,h),(p=this.mesh)==null||p.add(i),i}};var O3=class extends cm{constructor(r,e,i=10){if(super(r,e,i),r.length!==1)throw new Error(`[VRSphere] Wrong number of images! Expected 1, got ${r.length}`)}create(){return ot(this,null,function*(){yield this.createThumbnailMesh(this.size+.1),this.thumbnailMesh?this.createMesh():yield this.createMesh()})}createMesh(){return ot(this,null,function*(){var s;let r=this.mesh,e=100;r.geometry=new ro(this.size,e,e),r.geometry.scale(-1,1,1);let n=(yield this.loadTexturesAsync(this.images)).map(a=>new or({map:a,side:en,transparent:!0}));r.material=n[0],this.add(r),this.thumbnailMesh&&(this.destroyMesh(this.thumbnailMesh),this.remove(this.thumbnailMesh),(s=this.thumbnailMesh)==null||s.clear(),this.thumbnailMesh=void 0)})}};var zG=class extends Jf{constructor(e,i){super(e);this.name="BaseViewer";this.minFov=50;this.maxFov=95;this.raycaster=new Oc;this.autoRotate=!0;this.events=[];this.lastFrameExecuteTime=Date.now();this.maxFps=60;this.isMousePressing=!1;this.settings=sT;this.jobCount=0;this.viewpoints=[];this.previousViewpointId="";this.previousPanoramaId="";this.activeViewpointId="";this.activePanoramaId="";this.viewpointAssetsMap=new Map;this.loadingPanos=[];this.onResize=()=>{var i;let e=(i=this.renderer)==null?void 0:i.domElement;e&&e.parentElement&&this.resize(e.parentElement.clientWidth,e.parentElement.clientHeight)};this.onMouseWheel=e=>{let n=e.wheelDelta>0?-5:5;this.updateFov(n)};this.viewerCfg=e,this.cameraCfg=i||{eye:[0,0,0],look:[0,0,0]},this.settings=sT,this.cameraCfg.near&&(this.settings.camera.near=this.cameraCfg.near),this.cameraCfg.far&&(this.settings.camera.far=this.cameraCfg.far),this.setSpinnerVisibility(++this.jobCount>0),this.init(),this.animate(),this.setSpinnerVisibility(--this.jobCount>0)}init(){let e=this.viewerCfg;this.initSpinner(),this.initScene(),this.initRenderer(),this.initCamera(),this.initControls(),this.initLights(),this.initEvents(),this.initOthers(),e.enableAxisGizmo===!0&&(this.axes=this.initAxes()),e.enableToolbar&&(this.toolbar=this.initToolbar()),e.enableBottomBar&&(this.bottomBar=this.initBottomBar())}initScene(){let e=new On;e.background=new Ve(16777215),e.matrixAutoUpdate=!0,this.scene=e}initRenderer(){var e,i;this.renderer=new Pl({antialias:!1,preserveDrawingBuffer:!1}),this.renderer.setPixelRatio(window.devicePixelRatio),this.renderer.setSize(this.width,this.height),this.css2dRenderer=new xf,this.css2dRenderer.setSize(this.width,this.height),this.css2dRenderer.domElement.style.height="0",this.css2dRenderer.domElement.style.width="0",(e=this.viewerContainer)==null||e.appendChild(this.renderer.domElement),(i=this.viewerContainer)==null||i.appendChild(this.css2dRenderer.domElement)}initCamera(){this.scene&&(this.camera=new qr(75,this.width/this.height,this.settings.camera.near,this.settings.camera.far),this.scene.add(this.camera))}initControls(){if(!this.renderer||!this.camera)return;let e=this.camera,i=this.viewerCfg,n=new uO(e,this.renderer.domElement,!0);n.enabled=!0,n.autoRotate=this.autoRotate,n.autoRotateSpeed=i.autoRotateSpeed||-2,n.enablePan=!1,n.enableZoom=!1,n.enableRotate=!0,n.rotateSpeed=.3,n.minPolarAngle=Math.PI*.05,n.maxPolarAngle=Math.PI*.95,n.listenToKeyEvents(document.body),n.update(),this.controls=n,this.controlsHelper=new WC(e,n),this.controls.controlsHelper=this.controlsHelper,this.autoRotate&&this.controlsHelper.delayAutoRotate(),this.controlsHelper.automaticallyAdjustCameraPosition=!1,this.controls.addEventListener("end",()=>{this.handleDragEnd&&this.handleDragEnd()});let s=new A(0,0,0),a=new A(10,0,0);this.setCameraPositionAndDirection(s,a)}onKeyDown(e){return i=>{var a,o;let n=e.camera,s=e.controls;!n||!s||((i.code==="ArrowLeft"||i.code==="ArrowRight"||i.code==="ArrowUp"||i.code==="ArrowDown")&&((a=this.controlsHelper)==null||a.startToRotate(i)),(o=this.controlsHelper)==null||o.delayAutoRotate())}}initLights(){if(!this.scene)return;let e=new $s(16777215,.3);e.position.set(-2,2,4),this.scene.add(e)}initEvents(){let e=this.renderer,i=this.camera;if(!e||!i)return;let n=!1,s=-1,a=-1;this.addEvent(window,"keydown",this.onKeyDown(this)),this.addEvent(window,"resize",this.onResize),this.addEvent(window,"mousewheel",this.onMouseWheel),this.addEvent(window,"pointerdown",o=>{var l;s=o.x,a=o.y,n=!1,this.isMousePressing=!0,this.autoRotate&&((l=this.controlsHelper)==null||l.delayAutoRotate()),o.button===bi.LEFT&&o.target instanceof HTMLCanvasElement&&(e.domElement.style.cursor="move")}),this.addEvent(window,"pointermove",o=>{s>=0&&a>=0&&(Math.abs(o.x-s)>5||Math.abs(o.y-a)>5)&&(n=!0)}),this.addEvent(window,"pointerup",o=>{var l,c;if(this.isMousePressing=!1,this.autoRotate&&((l=this.controlsHelper)==null||l.delayAutoRotate()),e.domElement.style.cursor="auto",!(n||o.button!==bi.LEFT))if(o.target&&o.target instanceof HTMLDivElement){let u=Sf.tryFindObjectId(o.target);if(u){let h=(c=this.scene)==null?void 0:c.getObjectById(u);if(h){let p=h.userData.hotpoint;p&&(ne.info("[VRViewer] Clicked on hotpoint: ",p.hotpointId||p),this.onHotpointClicked&&this.onHotpointClicked(p))}}}else{let u=this.getIntersection(o);if(u){let h=f=>St.vectorToString(f),p=u.point,d=p.clone().sub(i.position).normalize();ne.info(`[VRViewer] Clicked at: ${h(p)},
|
||
Camera position: ${h(i.position)},
|
||
Target direction: ${h(d)}`)}}})}initSpinner(){var n;let e=document.createElement("div");e.classList.add("spinner");let i=document.createElement("div");i.classList.add(ho,"icon-loading"),e.append(i),(n=this.widgetContainer)==null||n.appendChild(e),this.spinner=e,this.setSpinnerVisibility(this.jobCount>0)}initOthers(){!this.controls||!this.renderer||!this.camera||(this.renderer.domElement.style.outlineWidth="0")}initAxes(){var n;let e=document.createElement("div");e.classList.add("axesRenderer");let i=new If(e,this.camera);return(n=this.widgetContainer)==null||n.append(e),i}initToolbar(){let e=this.viewerCfg;return new vh(this,Ur(Ur({},mDe),e.toolbarMenuConfig),[["SceneClear"]])}initBottomBar(){return new nm(this)}animate(){var e,i,n,s;if(requestAnimationFrame(this.animate.bind(this)),this.maxFps>0){let a=Date.now()-this.lastFrameExecuteTime;if(a<1e3/this.maxFps)return;if(this.lastFrameExecuteTime=Date.now(),this.autoRotate){let o=this.controlsHelper;o&&o.autoRotateRemainingTime>0&&!this.isMousePressing&&(o.autoRotateRemainingTime-=a,o.autoRotateRemainingTime<=0&&this.controls&&o.startAutoRotate())}}(e=this.controls)==null||e.update(),this.scene&&this.camera&&((i=this.renderer)==null||i.render(this.scene,this.camera),(n=this.css2dRenderer)==null||n.render(this.scene,this.camera),(s=this.css3dRenderer)==null||s.render(this.scene,this.camera))}clearAllCachedPanoramas(){this.handleCameraUpdateInterval(),this.loadingPanos.forEach(e=>{e.creationPromise&&(e.creationPromise.cancel(),e.creationPromise=void 0)}),this.viewpointAssetsMap.forEach(e=>{var n;let i=e.panoramas;for(let s=i.length-1;s>=0;--s){let a=i[s];a.box.destroy(),(n=this.scene)==null||n.remove(a.box)}}),this.loadingPanos=[],this.viewpointAssetsMap.clear(),this.activePanoramaId="",this.activePanoramaId="",this.previousViewpointId="",this.previousPanoramaId=""}destroy(){var e,i,n,s;this.events.forEach(a=>a.node.removeEventListener(a.type,a.func)),this.events=[],this.clearAllCachedPanoramas(),this.css2dRenderer&&((e=this.viewerContainer)==null||e.removeChild(this.css2dRenderer.domElement)),(i=this.spinner)==null||i.remove(),(n=this.axes)==null||n.dispose(),(s=this.toolbar)==null||s.destroy(),super.destroy()}updateFov(e){var u;let i=this.camera;if(!i)return;let n=this.minFov,s=this.maxFov,a=h=>{let p=i.fov+h;p=Math.min(p,s),p=Math.max(p,n),i.fov!==p&&(i.fov=p,i.updateProjectionMatrix())},o=20,l=5,c=e/o;for(let h=0;h<o;++h)setTimeout(()=>a(c),h*l);this.autoRotate&&((u=this.controlsHelper)==null||u.delayAutoRotate())}setMinAndMaxFov(e,i){let n=this.controls;n&&(this.minFov=e,this.maxFov=i,n.minFov=e,n.maxFov=i)}resize(e,i){var s,a,o;let n=this.camera;n&&(this.width=e||window.innerWidth,this.height=i||window.innerHeight,n.aspect=this.width/this.height,n.updateProjectionMatrix(),(s=this.renderer)==null||s.setSize(this.width,this.height),(a=this.css2dRenderer)==null||a.setSize(this.width,this.height),(o=this.css3dRenderer)==null||o.setSize(this.width,this.height))}enableAutoRotate(e){this.controls&&(this.autoRotate=e,this.controls.autoRotate=e)}setAutoRotateSpeed(e=1){this.controls&&(this.controls.autoRotateSpeed=e)}setCameraFov(e=75){let i=this.camera;i&&(i.fov=e,i.updateProjectionMatrix())}setSpinnerVisibility(e){this.spinner&&(e?this.spinner.classList.remove("hidden"):this.spinner.classList.add("hidden"))}addEvent(e,i,n){e.addEventListener(i,n),this.events.push({node:e,type:i,func:n})}setCameraPositionAndDirection(e,i,n){let s=this.camera,a=this.controls;if(!s||!a)return;let o,l;i?Array.isArray(i)?o=new A(i[0],i[1],i[2]):o=new A(i.x,i.y,i.z):o=a.target.clone().sub(s.position),o.normalize(),Array.isArray(e)?l=new A(e[0],e[1],e[2]):l=new A(e.x,e.y,e.z);let c=l.clone().addScaledVector(o,.01);this.fianlCameraPosition=l,this.finalCameraTarget=c;let u=(m,g)=>{s.lookAt(g),s.position.set(m.x,m.y,m.z),a.target.set(g.x,g.y,g.z),a.update()};if(n===!1){this.cameraUpdateInterval&&clearInterval(this.cameraUpdateInterval),u(l,c);return}let h=s.position.clone(),p=a.target.clone(),d=500,f=Date.now();this.cameraUpdateInterval&&clearInterval(this.cameraUpdateInterval),this.cameraUpdateInterval=setInterval(()=>{let m=Date.now()-f;m>d&&(m=d);let g=(b,x,S)=>{let D=b.x+(x.x-b.x)*S,P=b.y+(x.y-b.y)*S,_=b.z+(x.z-b.z)*S;return new A(D,P,_)},y=g(h,l,m/d),E=g(p,c,m/d);u(y,E),m>=d&&(clearInterval(this.cameraUpdateInterval),this.cameraUpdateInterval=void 0)},10)}getCameraPositionAndDirection(){let e=this.camera;if(!e)return;let i=e.position,n=new A;return e.getWorldDirection(n),{position:{x:i.x,y:i.y,z:i.z},direction:{x:n.x,y:n.y,z:n.z}}}getCameraFov(){let e=this.camera;if(e)return e.fov}setViewpoints(e){this.handleCameraUpdateInterval(),this.viewpointAssetsMap.size>0&&(this.viewpointAssetsMap.forEach(i=>{let n=i.panoramas,s=i.css2dObjects;n.forEach(a=>{var o;a.box.destroy(),(o=this.scene)==null||o.remove(a.box)}),s.forEach(a=>{var o;(o=this.scene)==null||o.remove(a)})}),this.viewpointAssetsMap.clear()),this.loadingPanos.forEach(i=>{i.creationPromise&&(i.creationPromise.cancel(),i.creationPromise=void 0)}),this.loadingPanos=[],this.previousViewpointId="",this.previousPanoramaId="",this.activeViewpointId="",this.activePanoramaId="",this.viewpoints=e}addPanorama(e,i){let n=this.viewpoints.find(s=>s.id===e);if(!n)throw new Error(`[VRViewer] Failed to find viewpoint by id '${e}'`);n.panoramas||(n.panoramas=[]),n.panoramas.push(i)}findPanorama(e,i){let n=this.viewpoints.find(s=>s.id===e);if(n&&n.panoramas)return n.panoramas.find(s=>s.id===i)}setHotpointsVisibility(e,i="",n=[]){if(!this.viewpoints)return;let s=a=>{var c;let o=this.viewpointAssetsMap.get(a.id),l=(o==null?void 0:o.css2dObjects)||[];(c=a.hotpoints)==null||c.forEach(u=>{if(n&&n.length>0){if(n.findIndex(h=>h===u.hotpointId)===-1)return;if(u.visible=e,this.activeViewpointId===a.id){let h=l.find(p=>p.userData.hotpoint.hotpointId===u.hotpointId);h&&(h.visible=e)}}else u.visible=e,this.activeViewpointId===a.id&&l.forEach(h=>h.visible=e)})};if(i){let a=this.viewpoints.find(o=>o.id===i);a&&s(a)}else this.viewpoints.forEach(a=>s(a))}addHotpoints(e){if(!this.activeViewpointId||!e)return;let i=this.viewpoints.find(s=>s.id===this.activeViewpointId),n=this.viewpointAssetsMap.get(this.activeViewpointId);!i||!n||(i.hotpoints||(i.hotpoints=[]),e.forEach(s=>{var h,p;if(((h=i.hotpoints)==null?void 0:h.findIndex(d=>d.hotpointId===s.hotpointId))!==-1){ne.warn(`[VRViewer] Duplicated hotpointId: ${s.hotpointId}`);return}let a=i.position||[0,0,0],o=s.anchorPosition,l=Sf.createHotpoint(s.html),c=new A(o[0],o[1],o[2]),u=new A(a[0],a[1],a[2]);this.relocateAnchorIfTooCloseToCamera(l,c,u),l.visible=s.visible!==!1,l.userData.hotpoint=s,n.css2dObjects.push(l),(p=this.scene)==null||p.add(l),i.hotpoints.push(s)}))}removeHotpoints(e){if(!this.activeViewpointId||!e)return;let i=this.viewpoints.find(s=>s.id===this.activeViewpointId),n=this.viewpointAssetsMap.get(this.activeViewpointId);!i||!n||e.forEach(s=>{var a,o;if(i.hotpoints)for(let l=i.hotpoints.length-1;l>=0;--l)s===i.hotpoints[l].hotpointId&&i.hotpoints.splice(l,1);for(let l=n.css2dObjects.length-1;l>=0;--l){let c=n.css2dObjects[l];s===((a=c.userData.hotpoint)==null?void 0:a.hotpointId)&&(n.css2dObjects.splice(l,1),(o=this.scene)==null||o.remove(c))}})}activeViewpointById(e,i,n,s){this.activatePanoramaById(e,"",!0,i,n,s)}activatePanoramaById(e,i,n=!0,s,a,o){if(e===this.activeViewpointId&&i===this.activePanoramaId)return;let l=this.viewpoints.find(c=>c.id===e);l&&this.activatePanorama(l,i,n,s,a,o)}removeCachedPanoramas(){this.viewpointAssetsMap.forEach((e,i)=>{var s;let n=e.panoramas;for(let a=n.length-1;a>=0;--a){let o=n[a];if(i===this.activeViewpointId&&o.id===this.activePanoramaId||i===this.previousViewpointId&&o.id===this.previousPanoramaId)return;o.box.destroy(),(s=this.scene)==null||s.remove(o.box),n.splice(a,1)}})}unlimitControlsAndShowAssets(e=!1){this.controls&&(this.controls.enablePan=!0,this.controls.enableZoom=!0),this.viewpointAssetsMap.forEach(i=>{i.panoramas.forEach(n=>{n.box.visible=!0}),e&&i.css2dObjects.forEach(n=>{n.visible=!0})})}relocateAnchorIfTooCloseToCamera(e,i,n){let s=this.camera;if(!s){ne.error("[VRViewer] Camera is not initialized"),e.position.set(i.x,i.y,i.z);return}let a,o=Math.abs(i.distanceTo(n));if(o<s.near){let l=i.clone().sub(n).normalize();a=n.clone().add(l.multiplyScalar(o+1))}else a=i;e.position.set(a.x,a.y,a.z)}activatePanorama(e,i,n=!0,s,a,o){return ot(this,null,function*(){var d,f,m;let l=(g,y,E)=>{let b=g.panoramas.find(S=>S.id===y),x=b==null?void 0:b.box;x&&(E?this.fadeIn(x):this.fadeOut(x))},c=(g,y)=>{g.css2dObjects.forEach(E=>{y?E.userData.hotpoint.visible!==!1&&(E.visible=y):E.visible=y})},u=()=>{var x;let g=new A(0,0,0),y=new A(1,0,0),E=(x=this.getCameraPositionAndDirection())==null?void 0:x.direction;E&&y.set(E.x,E.y,E.z);let b=e.position;if(b&&b.length===3&&g.set(b[0],b[1],b[2]),n){let S=e.initialDirection;S&&S.length===3&&y.set(S[0],S[1],S[2])}this.setCameraPositionAndDirection(g,y,s)};!i&&((d=e.panoramas)==null?void 0:d.length)>0&&(i=e.panoramas[0].id||""),this.handleCameraUpdateInterval();let h=this.viewpointAssetsMap.get(this.activeViewpointId),p=this.viewpointAssetsMap.get(e.id);if(this.activeViewpointId&&h&&(this.activeViewpointId!==e.id&&c(h,!1),l(h,this.activePanoramaId,!1)),p&&p.panoramas.find(y=>y.id===i)){l(p,i,!0),this.activeViewpointId!==e.id&&c(p,!0),this.activeViewpointId!==e.id&&u(),this.activeViewpointId=e.id,this.activePanoramaId=i,a&&a(e);return}this.previousViewpointId=this.activeViewpointId,this.previousPanoramaId=this.activePanoramaId,this.activeViewpointId=e.id,this.activePanoramaId=i;try{if(this.loadingPanos.some(S=>S.viewpointId===e.id&&S.panoramaId===i)){ne.warn(`[VRViewer] Panorama with viewpointId=${e.id} and panoramaId=${i} is being created`);return}let g=new EC(this.createBoxByImageOrImages(e,i));this.loadingPanos.push({viewpointId:e.id,panoramaId:i,creationPromise:g});let y=yield g.promise;this.loadingPanos=this.loadingPanos.filter(S=>S.viewpointId!==e.id||S.panoramaId!==i);let E=e.position;E&&E.length===3&&y.position.set(E[0],E[1],E[2]),this.activeViewpointId===e.id&&this.activePanoramaId===i?(this.fadeIn(y),(f=this.scene)==null||f.add(y),u()):(y.visible=!1,(m=this.scene)==null||m.add(y));let b={id:i,box:y},x=this.viewpointAssetsMap.get(e.id);if(x)x.panoramas.push(b),c(x,!0);else{let S=[];e.hotpoints&&e.hotpoints.forEach(P=>{let _=P.anchorPosition,w=Sf.createHotpoint(P.html);w.visible=P.visible!==!1,w.userData.hotpoint=P;let F=new A(_[0],_[1],_[2]);this.relocateAnchorIfTooCloseToCamera(w,F,y.position),(this.activeViewpointId!==e.id||this.activePanoramaId!==i)&&(w.visible=!1),S.push(w)});let D={panoramas:[b],css2dObjects:S};this.viewpointAssetsMap.set(e.id,D),S.forEach(P=>{var _;return(_=this.scene)==null?void 0:_.add(P)})}a&&a(e)}catch(g){g.type!=="cancel"&&o&&o(g)}})}createBoxByImageOrImages(e,i){var a;let n=e.imageOrImages,s=e.thumbnailImages;if(((a=e.panoramas)==null?void 0:a.length)>0){let o=this.findPanorama(e.id,i);o||(o=e.panoramas[0],ne.warn(`[VRViewer] Failed to find panorama by id '${i}', will use the first one`)),n=o.images,s=o.thumbnails}if(!n)throw new Error("[VRViewer] Invalid images!");if(Array.isArray(n)||(n=[n]),n.length===1)return this.createBoxByImage(n,s);if(n.length===6)return this.createBoxBy6Images(n,s);if(n.length===24)return this.createBoxBy24Images(n,s);throw new Error(`[VRViewer] Wrong number of images! Expected 1/6/24, got ${n.length}`)}createBoxByImage(e,i){return ot(this,null,function*(){let n=new O3(e,i);return yield n.create(),n})}createBoxBy6Images(e,i){return ot(this,null,function*(){if(e.length!==6)throw new Error(`[VRCube] Wrong number of images! Expected 6, got ${e.length}`);let n=new C3(e,i);return yield n.create(),n})}createBoxBy24Images(e,i){return ot(this,null,function*(){if(e.length!==24)throw new Error(`[VRCube] Wrong number of images! Expected 24, got ${e.length}`);let n=new A3(e,i);return yield n.create(),n})}getIntersection(e){if(!this.camera||!this.scene)return;let i=this.viewpointAssetsMap.get(this.activeViewpointId);if(!i)return;let n=i.panoramas.find(h=>h.id===this.activePanoramaId);if(!n)return;let s=n.box,a=this.viewerContainer,o=new le;e&&(o=Mr.getScreenPointByEvent(e,a));let l=Mr.screenPoint2NdcPoint(o,this.camera,a);this.raycaster.setFromCamera(l,this.camera);let c=[s],u=this.raycaster.intersectObjects(c,!0)||[];if(u.length>0)return u.find(p=>{let d=p.object;return d.visible&&d instanceof Je})}fadeIn(e,i=500){e.fadeIn(i)}fadeOut(e,i=1e3){e.fadeOut(i)}handleCameraUpdateInterval(){if(this.cameraUpdateInterval){clearInterval(this.cameraUpdateInterval);let e=this.fianlCameraPosition,i=this.finalCameraTarget;e&&i&&this.controls&&this.camera&&(this.camera.lookAt(i),this.camera.position.set(e.x,e.y,e.z),this.controls.target.set(i.x,i.y,i.z),this.controls.update()),this.cameraUpdateInterval=void 0}this.fianlCameraPosition=void 0,this.finalCameraTarget=void 0}getHitResult(e){let i={location:null};if(!this.camera)return i;let n=this.getIntersection(e);return i.location=n?{x:n.point.x,y:n.point.y,z:n.point.z}:null,i}lookToPosition(e){var s;if(!this.camera)return;this.handleCameraUpdateInterval();let n=new A(e[0],e[1],e[2]).clone().sub(this.camera.position);(s=this.controlsHelper)==null||s.lookTo(n)}};export{BG as BimViewer,ZA as DxfChangeType,GG as DxfViewer,iG as LocalDxfUploader,nG as LocalImageUploader,CS as LocalModelUploader,fo as MarkupType,nl as MeasurementType,zg as SectionType,VG as SimplifiedBimViewer,cE as ToolbarMenuId,zG as VRViewer,$g as ViewerEvent};
|