@vctrl/hooks 0.9.3 → 0.9.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/GLTFExporter-BmLF430n.cjs +18 -0
- package/{GLTFExporter-Q5UJ5eb1.js → GLTFExporter-C4hCeb4H.js} +30 -32
- package/index.cjs.js +1 -1
- package/index.es.js +3 -3
- package/{model-context-Du5WQddA.cjs → model-context-CQJta_vi.cjs} +5 -5
- package/{model-context-fEKN9ymq.js → model-context-D1Q8WdpT.js} +159 -171
- package/package.json +2 -2
- package/use-export-model-AFharGg5.js +77 -0
- package/use-export-model-CWcKp4A3.cjs +1 -0
- package/use-export-model.cjs.js +1 -1
- package/use-export-model.es.js +1 -1
- package/use-load-model.cjs.js +1 -1
- package/use-load-model.es.js +1 -1
- package/{use-optimize-model-EEn8K4nu.cjs → use-optimize-model-Cqkp__Vi.cjs} +1 -1
- package/{use-optimize-model-BXWR9d6e.js → use-optimize-model-DZWIb_40.js} +1 -1
- package/use-optimize-model.cjs.js +1 -1
- package/use-optimize-model.es.js +1 -1
- package/GLTFExporter-ltc8rmzz.cjs +0 -18
- package/use-export-model-BfzYIkcD.cjs +0 -1
- package/use-export-model-ccF7tK6m.js +0 -76
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
"use strict";const Re=require("react/jsx-runtime"),q=require("react"),g=require("three"),sA={},W={emit(n,A){const e=sA[n];e&&e.forEach(a=>a(A))},on(n,A){sA[n]||(sA[n]=[]),sA[n].push(A)},off(n,A){const e=sA[n];e&&(sA[n]=e.filter(a=>a!==A))}};var O=(n=>(n.gltf="gltf",n.glb="glb",n.usdz="usdz",n))(O||{});const Ae={file:null,isFileLoading:!1,progress:0,supportedFileTypes:Object.values(O)};function Fe(n,A){switch(A.type){case"set-file":return{...n,file:A.payload};case"set-file-loading":return{...n,isFileLoading:A.payload};case"set-progress":return{...n,progress:A.payload};case"reset-state":return{...Ae};default:return n}}async function jA(n){const A=new Blob([n]),e=new FileReader;return new Promise((a,t)=>{e.onloadend=()=>{if(!(e!=null&&e.result))return;const i=(e==null?void 0:e.result).split(",")[1];a(i)},e.onerror=t,e.readAsDataURL(A)})}async function ke(n){const A=[];async function*e(a){for await(const[,t]of a)t.kind==="file"?yield await t.getFile():t.kind==="directory"&&(yield*e(t))}for await(const a of e(n))A.push(a);return A}function KA(n,A){if(A===g.TrianglesDrawMode)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),n;if(A===g.TriangleFanDrawMode||A===g.TriangleStripDrawMode){let e=n.getIndex();if(e===null){const s=[],o=n.getAttribute("position");if(o!==void 0){for(let r=0;r<o.count;r++)s.push(r);n.setIndex(s),e=n.getIndex()}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),n}const a=e.count-2,t=[];if(A===g.TriangleFanDrawMode)for(let s=1;s<=a;s++)t.push(e.getX(0)),t.push(e.getX(s)),t.push(e.getX(s+1));else for(let s=0;s<a;s++)s%2===0?(t.push(e.getX(s)),t.push(e.getX(s+1)),t.push(e.getX(s+2))):(t.push(e.getX(s+2)),t.push(e.getX(s+1)),t.push(e.getX(s)));t.length/3!==a&&console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");const i=n.clone();return i.setIndex(t),i.clearGroups(),i}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:",A),n}class Se extends g.Loader{constructor(A){super(A),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(e){return new Te(e)}),this.register(function(e){return new Me(e)}),this.register(function(e){return new je(e)}),this.register(function(e){return new Ke(e)}),this.register(function(e){return new Je(e)}),this.register(function(e){return new Ne(e)}),this.register(function(e){return new _e(e)}),this.register(function(e){return new qe(e)}),this.register(function(e){return new He(e)}),this.register(function(e){return new Le(e)}),this.register(function(e){return new Oe(e)}),this.register(function(e){return new Ue(e)}),this.register(function(e){return new Pe(e)}),this.register(function(e){return new ve(e)}),this.register(function(e){return new Ge(e)}),this.register(function(e){return new Ye(e)}),this.register(function(e){return new We(e)})}load(A,e,a,t){const i=this;let s;if(this.resourcePath!=="")s=this.resourcePath;else if(this.path!==""){const c=g.LoaderUtils.extractUrlBase(A);s=g.LoaderUtils.resolveURL(c,this.path)}else s=g.LoaderUtils.extractUrlBase(A);this.manager.itemStart(A);const o=function(c){t?t(c):console.error(c),i.manager.itemError(A),i.manager.itemEnd(A)},r=new g.FileLoader(this.manager);r.setPath(this.path),r.setResponseType("arraybuffer"),r.setRequestHeader(this.requestHeader),r.setWithCredentials(this.withCredentials),r.load(A,function(c){try{i.parse(c,s,function(B){e(B),i.manager.itemEnd(A)},o)}catch(B){o(B)}},a,o)}setDRACOLoader(A){return this.dracoLoader=A,this}setDDSLoader(){throw new Error('THREE.GLTFLoader: "MSFT_texture_dds" no longer supported. Please update to "KHR_texture_basisu".')}setKTX2Loader(A){return this.ktx2Loader=A,this}setMeshoptDecoder(A){return this.meshoptDecoder=A,this}register(A){return this.pluginCallbacks.indexOf(A)===-1&&this.pluginCallbacks.push(A),this}unregister(A){return this.pluginCallbacks.indexOf(A)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(A),1),this}parse(A,e,a,t){let i;const s={},o={},r=new TextDecoder;if(typeof A=="string")i=JSON.parse(A);else if(A instanceof ArrayBuffer)if(r.decode(new Uint8Array(A,0,4))===ee){try{s[G.KHR_BINARY_GLTF]=new Ve(A)}catch(I){t&&t(I);return}i=JSON.parse(s[G.KHR_BINARY_GLTF].content)}else i=JSON.parse(r.decode(A));else i=A;if(i.asset===void 0||i.asset.version[0]<2){t&&t(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));return}const c=new rt(i,{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 B=0;B<this.pluginCallbacks.length;B++){const I=this.pluginCallbacks[B](c);I.name||console.error("THREE.GLTFLoader: Invalid plugin found: missing name"),o[I.name]=I,s[I.name]=!0}if(i.extensionsUsed)for(let B=0;B<i.extensionsUsed.length;++B){const I=i.extensionsUsed[B],l=i.extensionsRequired||[];switch(I){case G.KHR_MATERIALS_UNLIT:s[I]=new xe;break;case G.KHR_DRACO_MESH_COMPRESSION:s[I]=new ze(i,this.dracoLoader);break;case G.KHR_TEXTURE_TRANSFORM:s[I]=new Xe;break;case G.KHR_MESH_QUANTIZATION:s[I]=new Ze;break;default:l.indexOf(I)>=0&&o[I]===void 0&&console.warn('THREE.GLTFLoader: Unknown extension "'+I+'".')}}c.setExtensions(s),c.setPlugins(o),c.parse(a,t)}parseAsync(A,e){const a=this;return new Promise(function(t,i){a.parse(A,e,t,i)})}}function ye(){let n={};return{get:function(A){return n[A]},add:function(A,e){n[A]=e},remove:function(A){delete n[A]},removeAll:function(){n={}}}}const G={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_DISPERSION:"KHR_materials_dispersion",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_IRIDESCENCE:"KHR_materials_iridescence",KHR_MATERIALS_ANISOTROPY:"KHR_materials_anisotropy",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",KHR_MATERIALS_EMISSIVE_STRENGTH:"KHR_materials_emissive_strength",EXT_MATERIALS_BUMP:"EXT_materials_bump",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_TEXTURE_AVIF:"EXT_texture_avif",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"};class Ge{constructor(A){this.parser=A,this.name=G.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){const A=this.parser,e=this.parser.json.nodes||[];for(let a=0,t=e.length;a<t;a++){const i=e[a];i.extensions&&i.extensions[this.name]&&i.extensions[this.name].light!==void 0&&A._addNodeRef(this.cache,i.extensions[this.name].light)}}_loadLight(A){const e=this.parser,a="light:"+A;let t=e.cache.get(a);if(t)return t;const i=e.json,r=((i.extensions&&i.extensions[this.name]||{}).lights||[])[A];let c;const B=new g.Color(16777215);r.color!==void 0&&B.setRGB(r.color[0],r.color[1],r.color[2],g.LinearSRGBColorSpace);const I=r.range!==void 0?r.range:0;switch(r.type){case"directional":c=new g.DirectionalLight(B),c.target.position.set(0,0,-1),c.add(c.target);break;case"point":c=new g.PointLight(B),c.distance=I;break;case"spot":c=new g.SpotLight(B),c.distance=I,r.spot=r.spot||{},r.spot.innerConeAngle=r.spot.innerConeAngle!==void 0?r.spot.innerConeAngle:0,r.spot.outerConeAngle=r.spot.outerConeAngle!==void 0?r.spot.outerConeAngle:Math.PI/4,c.angle=r.spot.outerConeAngle,c.penumbra=1-r.spot.innerConeAngle/r.spot.outerConeAngle,c.target.position.set(0,0,-1),c.add(c.target);break;default:throw new Error("THREE.GLTFLoader: Unexpected light type: "+r.type)}return c.position.set(0,0,0),c.decay=2,Z(c,r),r.intensity!==void 0&&(c.intensity=r.intensity),c.name=e.createUniqueName(r.name||"light_"+A),t=Promise.resolve(c),e.cache.add(a,t),t}getDependency(A,e){if(A==="light")return this._loadLight(e)}createNodeAttachment(A){const e=this,a=this.parser,i=a.json.nodes[A],o=(i.extensions&&i.extensions[this.name]||{}).light;return o===void 0?null:this._loadLight(o).then(function(r){return a._getNodeRef(e.cache,o,r)})}}class xe{constructor(){this.name=G.KHR_MATERIALS_UNLIT}getMaterialType(){return g.MeshBasicMaterial}extendParams(A,e,a){const t=[];A.color=new g.Color(1,1,1),A.opacity=1;const i=e.pbrMetallicRoughness;if(i){if(Array.isArray(i.baseColorFactor)){const s=i.baseColorFactor;A.color.setRGB(s[0],s[1],s[2],g.LinearSRGBColorSpace),A.opacity=s[3]}i.baseColorTexture!==void 0&&t.push(a.assignTexture(A,"map",i.baseColorTexture,g.SRGBColorSpace))}return Promise.all(t)}}class Le{constructor(A){this.parser=A,this.name=G.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(A,e){const t=this.parser.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const i=t.extensions[this.name].emissiveStrength;return i!==void 0&&(e.emissiveIntensity=i),Promise.resolve()}}class Te{constructor(A){this.parser=A,this.name=G.KHR_MATERIALS_CLEARCOAT}getMaterialType(A){const a=this.parser.json.materials[A];return!a.extensions||!a.extensions[this.name]?null:g.MeshPhysicalMaterial}extendMaterialParams(A,e){const a=this.parser,t=a.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const i=[],s=t.extensions[this.name];if(s.clearcoatFactor!==void 0&&(e.clearcoat=s.clearcoatFactor),s.clearcoatTexture!==void 0&&i.push(a.assignTexture(e,"clearcoatMap",s.clearcoatTexture)),s.clearcoatRoughnessFactor!==void 0&&(e.clearcoatRoughness=s.clearcoatRoughnessFactor),s.clearcoatRoughnessTexture!==void 0&&i.push(a.assignTexture(e,"clearcoatRoughnessMap",s.clearcoatRoughnessTexture)),s.clearcoatNormalTexture!==void 0&&(i.push(a.assignTexture(e,"clearcoatNormalMap",s.clearcoatNormalTexture)),s.clearcoatNormalTexture.scale!==void 0)){const o=s.clearcoatNormalTexture.scale;e.clearcoatNormalScale=new g.Vector2(o,o)}return Promise.all(i)}}class Me{constructor(A){this.parser=A,this.name=G.KHR_MATERIALS_DISPERSION}getMaterialType(A){const a=this.parser.json.materials[A];return!a.extensions||!a.extensions[this.name]?null:g.MeshPhysicalMaterial}extendMaterialParams(A,e){const t=this.parser.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const i=t.extensions[this.name];return e.dispersion=i.dispersion!==void 0?i.dispersion:0,Promise.resolve()}}class Ue{constructor(A){this.parser=A,this.name=G.KHR_MATERIALS_IRIDESCENCE}getMaterialType(A){const a=this.parser.json.materials[A];return!a.extensions||!a.extensions[this.name]?null:g.MeshPhysicalMaterial}extendMaterialParams(A,e){const a=this.parser,t=a.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const i=[],s=t.extensions[this.name];return s.iridescenceFactor!==void 0&&(e.iridescence=s.iridescenceFactor),s.iridescenceTexture!==void 0&&i.push(a.assignTexture(e,"iridescenceMap",s.iridescenceTexture)),s.iridescenceIor!==void 0&&(e.iridescenceIOR=s.iridescenceIor),e.iridescenceThicknessRange===void 0&&(e.iridescenceThicknessRange=[100,400]),s.iridescenceThicknessMinimum!==void 0&&(e.iridescenceThicknessRange[0]=s.iridescenceThicknessMinimum),s.iridescenceThicknessMaximum!==void 0&&(e.iridescenceThicknessRange[1]=s.iridescenceThicknessMaximum),s.iridescenceThicknessTexture!==void 0&&i.push(a.assignTexture(e,"iridescenceThicknessMap",s.iridescenceThicknessTexture)),Promise.all(i)}}class Ne{constructor(A){this.parser=A,this.name=G.KHR_MATERIALS_SHEEN}getMaterialType(A){const a=this.parser.json.materials[A];return!a.extensions||!a.extensions[this.name]?null:g.MeshPhysicalMaterial}extendMaterialParams(A,e){const a=this.parser,t=a.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const i=[];e.sheenColor=new g.Color(0,0,0),e.sheenRoughness=0,e.sheen=1;const s=t.extensions[this.name];if(s.sheenColorFactor!==void 0){const o=s.sheenColorFactor;e.sheenColor.setRGB(o[0],o[1],o[2],g.LinearSRGBColorSpace)}return s.sheenRoughnessFactor!==void 0&&(e.sheenRoughness=s.sheenRoughnessFactor),s.sheenColorTexture!==void 0&&i.push(a.assignTexture(e,"sheenColorMap",s.sheenColorTexture,g.SRGBColorSpace)),s.sheenRoughnessTexture!==void 0&&i.push(a.assignTexture(e,"sheenRoughnessMap",s.sheenRoughnessTexture)),Promise.all(i)}}class _e{constructor(A){this.parser=A,this.name=G.KHR_MATERIALS_TRANSMISSION}getMaterialType(A){const a=this.parser.json.materials[A];return!a.extensions||!a.extensions[this.name]?null:g.MeshPhysicalMaterial}extendMaterialParams(A,e){const a=this.parser,t=a.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const i=[],s=t.extensions[this.name];return s.transmissionFactor!==void 0&&(e.transmission=s.transmissionFactor),s.transmissionTexture!==void 0&&i.push(a.assignTexture(e,"transmissionMap",s.transmissionTexture)),Promise.all(i)}}class qe{constructor(A){this.parser=A,this.name=G.KHR_MATERIALS_VOLUME}getMaterialType(A){const a=this.parser.json.materials[A];return!a.extensions||!a.extensions[this.name]?null:g.MeshPhysicalMaterial}extendMaterialParams(A,e){const a=this.parser,t=a.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const i=[],s=t.extensions[this.name];e.thickness=s.thicknessFactor!==void 0?s.thicknessFactor:0,s.thicknessTexture!==void 0&&i.push(a.assignTexture(e,"thicknessMap",s.thicknessTexture)),e.attenuationDistance=s.attenuationDistance||1/0;const o=s.attenuationColor||[1,1,1];return e.attenuationColor=new g.Color().setRGB(o[0],o[1],o[2],g.LinearSRGBColorSpace),Promise.all(i)}}class He{constructor(A){this.parser=A,this.name=G.KHR_MATERIALS_IOR}getMaterialType(A){const a=this.parser.json.materials[A];return!a.extensions||!a.extensions[this.name]?null:g.MeshPhysicalMaterial}extendMaterialParams(A,e){const t=this.parser.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const i=t.extensions[this.name];return e.ior=i.ior!==void 0?i.ior:1.5,Promise.resolve()}}class Oe{constructor(A){this.parser=A,this.name=G.KHR_MATERIALS_SPECULAR}getMaterialType(A){const a=this.parser.json.materials[A];return!a.extensions||!a.extensions[this.name]?null:g.MeshPhysicalMaterial}extendMaterialParams(A,e){const a=this.parser,t=a.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const i=[],s=t.extensions[this.name];e.specularIntensity=s.specularFactor!==void 0?s.specularFactor:1,s.specularTexture!==void 0&&i.push(a.assignTexture(e,"specularIntensityMap",s.specularTexture));const o=s.specularColorFactor||[1,1,1];return e.specularColor=new g.Color().setRGB(o[0],o[1],o[2],g.LinearSRGBColorSpace),s.specularColorTexture!==void 0&&i.push(a.assignTexture(e,"specularColorMap",s.specularColorTexture,g.SRGBColorSpace)),Promise.all(i)}}class ve{constructor(A){this.parser=A,this.name=G.EXT_MATERIALS_BUMP}getMaterialType(A){const a=this.parser.json.materials[A];return!a.extensions||!a.extensions[this.name]?null:g.MeshPhysicalMaterial}extendMaterialParams(A,e){const a=this.parser,t=a.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const i=[],s=t.extensions[this.name];return e.bumpScale=s.bumpFactor!==void 0?s.bumpFactor:1,s.bumpTexture!==void 0&&i.push(a.assignTexture(e,"bumpMap",s.bumpTexture)),Promise.all(i)}}class Pe{constructor(A){this.parser=A,this.name=G.KHR_MATERIALS_ANISOTROPY}getMaterialType(A){const a=this.parser.json.materials[A];return!a.extensions||!a.extensions[this.name]?null:g.MeshPhysicalMaterial}extendMaterialParams(A,e){const a=this.parser,t=a.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const i=[],s=t.extensions[this.name];return s.anisotropyStrength!==void 0&&(e.anisotropy=s.anisotropyStrength),s.anisotropyRotation!==void 0&&(e.anisotropyRotation=s.anisotropyRotation),s.anisotropyTexture!==void 0&&i.push(a.assignTexture(e,"anisotropyMap",s.anisotropyTexture)),Promise.all(i)}}class je{constructor(A){this.parser=A,this.name=G.KHR_TEXTURE_BASISU}loadTexture(A){const e=this.parser,a=e.json,t=a.textures[A];if(!t.extensions||!t.extensions[this.name])return null;const i=t.extensions[this.name],s=e.options.ktx2Loader;if(!s){if(a.extensionsRequired&&a.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return e.loadTextureImage(A,i.source,s)}}class Ke{constructor(A){this.parser=A,this.name=G.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(A){const e=this.name,a=this.parser,t=a.json,i=t.textures[A];if(!i.extensions||!i.extensions[e])return null;const s=i.extensions[e],o=t.images[s.source];let r=a.textureLoader;if(o.uri){const c=a.options.manager.getHandler(o.uri);c!==null&&(r=c)}return this.detectSupport().then(function(c){if(c)return a.loadTextureImage(A,s.source,r);if(t.extensionsRequired&&t.extensionsRequired.indexOf(e)>=0)throw new Error("THREE.GLTFLoader: WebP required by asset but unsupported.");return a.loadTexture(A)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(A){const e=new Image;e.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",e.onload=e.onerror=function(){A(e.height===1)}})),this.isSupported}}class Je{constructor(A){this.parser=A,this.name=G.EXT_TEXTURE_AVIF,this.isSupported=null}loadTexture(A){const e=this.name,a=this.parser,t=a.json,i=t.textures[A];if(!i.extensions||!i.extensions[e])return null;const s=i.extensions[e],o=t.images[s.source];let r=a.textureLoader;if(o.uri){const c=a.options.manager.getHandler(o.uri);c!==null&&(r=c)}return this.detectSupport().then(function(c){if(c)return a.loadTextureImage(A,s.source,r);if(t.extensionsRequired&&t.extensionsRequired.indexOf(e)>=0)throw new Error("THREE.GLTFLoader: AVIF required by asset but unsupported.");return a.loadTexture(A)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(A){const e=new Image;e.src="data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI=",e.onload=e.onerror=function(){A(e.height===1)}})),this.isSupported}}class Ye{constructor(A){this.name=G.EXT_MESHOPT_COMPRESSION,this.parser=A}loadBufferView(A){const e=this.parser.json,a=e.bufferViews[A];if(a.extensions&&a.extensions[this.name]){const t=a.extensions[this.name],i=this.parser.getDependency("buffer",t.buffer),s=this.parser.options.meshoptDecoder;if(!s||!s.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 i.then(function(o){const r=t.byteOffset||0,c=t.byteLength||0,B=t.count,I=t.byteStride,l=new Uint8Array(o,r,c);return s.decodeGltfBufferAsync?s.decodeGltfBufferAsync(B,I,l,t.mode,t.filter).then(function(C){return C.buffer}):s.ready.then(function(){const C=new ArrayBuffer(B*I);return s.decodeGltfBuffer(new Uint8Array(C),B,I,l,t.mode,t.filter),C})})}else return null}}class We{constructor(A){this.name=G.EXT_MESH_GPU_INSTANCING,this.parser=A}createNodeMesh(A){const e=this.parser.json,a=e.nodes[A];if(!a.extensions||!a.extensions[this.name]||a.mesh===void 0)return null;const t=e.meshes[a.mesh];for(const c of t.primitives)if(c.mode!==P.TRIANGLES&&c.mode!==P.TRIANGLE_STRIP&&c.mode!==P.TRIANGLE_FAN&&c.mode!==void 0)return null;const s=a.extensions[this.name].attributes,o=[],r={};for(const c in s)o.push(this.parser.getDependency("accessor",s[c]).then(B=>(r[c]=B,r[c])));return o.length<1?null:(o.push(this.parser.createNodeMesh(A)),Promise.all(o).then(c=>{const B=c.pop(),I=B.isGroup?B.children:[B],l=c[0].count,C=[];for(const E of I){const h=new g.Matrix4,u=new g.Vector3,Q=new g.Quaternion,f=new g.Vector3(1,1,1),p=new g.InstancedMesh(E.geometry,E.material,l);for(let m=0;m<l;m++)r.TRANSLATION&&u.fromBufferAttribute(r.TRANSLATION,m),r.ROTATION&&Q.fromBufferAttribute(r.ROTATION,m),r.SCALE&&f.fromBufferAttribute(r.SCALE,m),p.setMatrixAt(m,h.compose(u,Q,f));for(const m in r)if(m==="_COLOR_0"){const F=r[m];p.instanceColor=new g.InstancedBufferAttribute(F.array,F.itemSize,F.normalized)}else m!=="TRANSLATION"&&m!=="ROTATION"&&m!=="SCALE"&&E.geometry.setAttribute(m,r[m]);g.Object3D.prototype.copy.call(p,E),this.parser.assignFinalMaterial(p),C.push(p)}return B.isGroup?(B.clear(),B.add(...C),B):C[0]}))}}const ee="glTF",cA=12,JA={JSON:1313821514,BIN:5130562};class Ve{constructor(A){this.name=G.KHR_BINARY_GLTF,this.content=null,this.body=null;const e=new DataView(A,0,cA),a=new TextDecoder;if(this.header={magic:a.decode(new Uint8Array(A.slice(0,4))),version:e.getUint32(4,!0),length:e.getUint32(8,!0)},this.header.magic!==ee)throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw new Error("THREE.GLTFLoader: Legacy binary file detected.");const t=this.header.length-cA,i=new DataView(A,cA);let s=0;for(;s<t;){const o=i.getUint32(s,!0);s+=4;const r=i.getUint32(s,!0);if(s+=4,r===JA.JSON){const c=new Uint8Array(A,cA+s,o);this.content=a.decode(c)}else if(r===JA.BIN){const c=cA+s;this.body=A.slice(c,c+o)}s+=o}if(this.content===null)throw new Error("THREE.GLTFLoader: JSON content not found.")}}class ze{constructor(A,e){if(!e)throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=G.KHR_DRACO_MESH_COMPRESSION,this.json=A,this.dracoLoader=e,this.dracoLoader.preload()}decodePrimitive(A,e){const a=this.json,t=this.dracoLoader,i=A.extensions[this.name].bufferView,s=A.extensions[this.name].attributes,o={},r={},c={};for(const B in s){const I=SA[B]||B.toLowerCase();o[I]=s[B]}for(const B in A.attributes){const I=SA[B]||B.toLowerCase();if(s[B]!==void 0){const l=a.accessors[A.attributes[B]],C=oA[l.componentType];c[I]=C.name,r[I]=l.normalized===!0}}return e.getDependency("bufferView",i).then(function(B){return new Promise(function(I,l){t.decodeDracoFile(B,function(C){for(const E in C.attributes){const h=C.attributes[E],u=r[E];u!==void 0&&(h.normalized=u)}I(C)},o,c,g.LinearSRGBColorSpace,l)})})}}class Xe{constructor(){this.name=G.KHR_TEXTURE_TRANSFORM}extendTexture(A,e){return(e.texCoord===void 0||e.texCoord===A.channel)&&e.offset===void 0&&e.rotation===void 0&&e.scale===void 0||(A=A.clone(),e.texCoord!==void 0&&(A.channel=e.texCoord),e.offset!==void 0&&A.offset.fromArray(e.offset),e.rotation!==void 0&&(A.rotation=e.rotation),e.scale!==void 0&&A.repeat.fromArray(e.scale),A.needsUpdate=!0),A}}class Ze{constructor(){this.name=G.KHR_MESH_QUANTIZATION}}class te extends g.Interpolant{constructor(A,e,a,t){super(A,e,a,t)}copySampleValue_(A){const e=this.resultBuffer,a=this.sampleValues,t=this.valueSize,i=A*t*3+t;for(let s=0;s!==t;s++)e[s]=a[i+s];return e}interpolate_(A,e,a,t){const i=this.resultBuffer,s=this.sampleValues,o=this.valueSize,r=o*2,c=o*3,B=t-e,I=(a-e)/B,l=I*I,C=l*I,E=A*c,h=E-c,u=-2*C+3*l,Q=C-l,f=1-u,p=Q-l+I;for(let m=0;m!==o;m++){const F=s[h+m+o],S=s[h+m+r]*B,x=s[E+m+o],U=s[E+m]*B;i[m]=f*F+p*S+u*x+Q*U}return i}}const $e=new g.Quaternion;class At extends te{interpolate_(A,e,a,t){const i=super.interpolate_(A,e,a,t);return $e.fromArray(i).normalize().toArray(i),i}}const P={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},oA={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},YA={9728:g.NearestFilter,9729:g.LinearFilter,9984:g.NearestMipmapNearestFilter,9985:g.LinearMipmapNearestFilter,9986:g.NearestMipmapLinearFilter,9987:g.LinearMipmapLinearFilter},WA={33071:g.ClampToEdgeWrapping,33648:g.MirroredRepeatWrapping,10497:g.RepeatWrapping},bA={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},SA={POSITION:"position",NORMAL:"normal",TANGENT:"tangent",TEXCOORD_0:"uv",TEXCOORD_1:"uv1",TEXCOORD_2:"uv2",TEXCOORD_3:"uv3",COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},AA={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},et={CUBICSPLINE:void 0,LINEAR:g.InterpolateLinear,STEP:g.InterpolateDiscrete},fA={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"};function tt(n){return n.DefaultMaterial===void 0&&(n.DefaultMaterial=new g.MeshStandardMaterial({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:g.FrontSide})),n.DefaultMaterial}function aA(n,A,e){for(const a in e.extensions)n[a]===void 0&&(A.userData.gltfExtensions=A.userData.gltfExtensions||{},A.userData.gltfExtensions[a]=e.extensions[a])}function Z(n,A){A.extras!==void 0&&(typeof A.extras=="object"?Object.assign(n.userData,A.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+A.extras))}function at(n,A,e){let a=!1,t=!1,i=!1;for(let c=0,B=A.length;c<B;c++){const I=A[c];if(I.POSITION!==void 0&&(a=!0),I.NORMAL!==void 0&&(t=!0),I.COLOR_0!==void 0&&(i=!0),a&&t&&i)break}if(!a&&!t&&!i)return Promise.resolve(n);const s=[],o=[],r=[];for(let c=0,B=A.length;c<B;c++){const I=A[c];if(a){const l=I.POSITION!==void 0?e.getDependency("accessor",I.POSITION):n.attributes.position;s.push(l)}if(t){const l=I.NORMAL!==void 0?e.getDependency("accessor",I.NORMAL):n.attributes.normal;o.push(l)}if(i){const l=I.COLOR_0!==void 0?e.getDependency("accessor",I.COLOR_0):n.attributes.color;r.push(l)}}return Promise.all([Promise.all(s),Promise.all(o),Promise.all(r)]).then(function(c){const B=c[0],I=c[1],l=c[2];return a&&(n.morphAttributes.position=B),t&&(n.morphAttributes.normal=I),i&&(n.morphAttributes.color=l),n.morphTargetsRelative=!0,n})}function it(n,A){if(n.updateMorphTargets(),A.weights!==void 0)for(let e=0,a=A.weights.length;e<a;e++)n.morphTargetInfluences[e]=A.weights[e];if(A.extras&&Array.isArray(A.extras.targetNames)){const e=A.extras.targetNames;if(n.morphTargetInfluences.length===e.length){n.morphTargetDictionary={};for(let a=0,t=e.length;a<t;a++)n.morphTargetDictionary[e[a]]=a}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}function st(n){let A;const e=n.extensions&&n.extensions[G.KHR_DRACO_MESH_COMPRESSION];if(e?A="draco:"+e.bufferView+":"+e.indices+":"+EA(e.attributes):A=n.indices+":"+EA(n.attributes)+":"+n.mode,n.targets!==void 0)for(let a=0,t=n.targets.length;a<t;a++)A+=":"+EA(n.targets[a]);return A}function EA(n){let A="";const e=Object.keys(n).sort();for(let a=0,t=e.length;a<t;a++)A+=e[a]+":"+n[e[a]]+";";return A}function yA(n){switch(n){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 nt(n){return n.search(/\.jpe?g($|\?)/i)>0||n.search(/^data\:image\/jpeg/)===0?"image/jpeg":n.search(/\.webp($|\?)/i)>0||n.search(/^data\:image\/webp/)===0?"image/webp":"image/png"}const ot=new g.Matrix4;class rt{constructor(A={},e={}){this.json=A,this.extensions={},this.plugins={},this.options=e,this.cache=new ye,this.associations=new Map,this.primitiveCache={},this.nodeCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={};let a=!1,t=-1,i=!1,s=-1;if(typeof navigator<"u"){const o=navigator.userAgent;a=/^((?!chrome|android).)*safari/i.test(o)===!0;const r=o.match(/Version\/(\d+)/);t=a&&r?parseInt(r[1],10):-1,i=o.indexOf("Firefox")>-1,s=i?o.match(/Firefox\/([0-9]+)\./)[1]:-1}typeof createImageBitmap>"u"||a&&t<17||i&&s<98?this.textureLoader=new g.TextureLoader(this.options.manager):this.textureLoader=new g.ImageBitmapLoader(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new g.FileLoader(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),this.options.crossOrigin==="use-credentials"&&this.fileLoader.setWithCredentials(!0)}setExtensions(A){this.extensions=A}setPlugins(A){this.plugins=A}parse(A,e){const a=this,t=this.json,i=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(s){return s._markDefs&&s._markDefs()}),Promise.all(this._invokeAll(function(s){return s.beforeRoot&&s.beforeRoot()})).then(function(){return Promise.all([a.getDependencies("scene"),a.getDependencies("animation"),a.getDependencies("camera")])}).then(function(s){const o={scene:s[0][t.scene||0],scenes:s[0],animations:s[1],cameras:s[2],asset:t.asset,parser:a,userData:{}};return aA(i,o,t),Z(o,t),Promise.all(a._invokeAll(function(r){return r.afterRoot&&r.afterRoot(o)})).then(function(){for(const r of o.scenes)r.updateMatrixWorld();A(o)})}).catch(e)}_markDefs(){const A=this.json.nodes||[],e=this.json.skins||[],a=this.json.meshes||[];for(let t=0,i=e.length;t<i;t++){const s=e[t].joints;for(let o=0,r=s.length;o<r;o++)A[s[o]].isBone=!0}for(let t=0,i=A.length;t<i;t++){const s=A[t];s.mesh!==void 0&&(this._addNodeRef(this.meshCache,s.mesh),s.skin!==void 0&&(a[s.mesh].isSkinnedMesh=!0)),s.camera!==void 0&&this._addNodeRef(this.cameraCache,s.camera)}}_addNodeRef(A,e){e!==void 0&&(A.refs[e]===void 0&&(A.refs[e]=A.uses[e]=0),A.refs[e]++)}_getNodeRef(A,e,a){if(A.refs[e]<=1)return a;const t=a.clone(),i=(s,o)=>{const r=this.associations.get(s);r!=null&&this.associations.set(o,r);for(const[c,B]of s.children.entries())i(B,o.children[c])};return i(a,t),t.name+="_instance_"+A.uses[e]++,t}_invokeOne(A){const e=Object.values(this.plugins);e.push(this);for(let a=0;a<e.length;a++){const t=A(e[a]);if(t)return t}return null}_invokeAll(A){const e=Object.values(this.plugins);e.unshift(this);const a=[];for(let t=0;t<e.length;t++){const i=A(e[t]);i&&a.push(i)}return a}getDependency(A,e){const a=A+":"+e;let t=this.cache.get(a);if(!t){switch(A){case"scene":t=this.loadScene(e);break;case"node":t=this._invokeOne(function(i){return i.loadNode&&i.loadNode(e)});break;case"mesh":t=this._invokeOne(function(i){return i.loadMesh&&i.loadMesh(e)});break;case"accessor":t=this.loadAccessor(e);break;case"bufferView":t=this._invokeOne(function(i){return i.loadBufferView&&i.loadBufferView(e)});break;case"buffer":t=this.loadBuffer(e);break;case"material":t=this._invokeOne(function(i){return i.loadMaterial&&i.loadMaterial(e)});break;case"texture":t=this._invokeOne(function(i){return i.loadTexture&&i.loadTexture(e)});break;case"skin":t=this.loadSkin(e);break;case"animation":t=this._invokeOne(function(i){return i.loadAnimation&&i.loadAnimation(e)});break;case"camera":t=this.loadCamera(e);break;default:if(t=this._invokeOne(function(i){return i!=this&&i.getDependency&&i.getDependency(A,e)}),!t)throw new Error("Unknown type: "+A);break}this.cache.add(a,t)}return t}getDependencies(A){let e=this.cache.get(A);if(!e){const a=this,t=this.json[A+(A==="mesh"?"es":"s")]||[];e=Promise.all(t.map(function(i,s){return a.getDependency(A,s)})),this.cache.add(A,e)}return e}loadBuffer(A){const e=this.json.buffers[A],a=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&&A===0)return Promise.resolve(this.extensions[G.KHR_BINARY_GLTF].body);const t=this.options;return new Promise(function(i,s){a.load(g.LoaderUtils.resolveURL(e.uri,t.path),i,void 0,function(){s(new Error('THREE.GLTFLoader: Failed to load buffer "'+e.uri+'".'))})})}loadBufferView(A){const e=this.json.bufferViews[A];return this.getDependency("buffer",e.buffer).then(function(a){const t=e.byteLength||0,i=e.byteOffset||0;return a.slice(i,i+t)})}loadAccessor(A){const e=this,a=this.json,t=this.json.accessors[A];if(t.bufferView===void 0&&t.sparse===void 0){const s=bA[t.type],o=oA[t.componentType],r=t.normalized===!0,c=new o(t.count*s);return Promise.resolve(new g.BufferAttribute(c,s,r))}const i=[];return t.bufferView!==void 0?i.push(this.getDependency("bufferView",t.bufferView)):i.push(null),t.sparse!==void 0&&(i.push(this.getDependency("bufferView",t.sparse.indices.bufferView)),i.push(this.getDependency("bufferView",t.sparse.values.bufferView))),Promise.all(i).then(function(s){const o=s[0],r=bA[t.type],c=oA[t.componentType],B=c.BYTES_PER_ELEMENT,I=B*r,l=t.byteOffset||0,C=t.bufferView!==void 0?a.bufferViews[t.bufferView].byteStride:void 0,E=t.normalized===!0;let h,u;if(C&&C!==I){const Q=Math.floor(l/C),f="InterleavedBuffer:"+t.bufferView+":"+t.componentType+":"+Q+":"+t.count;let p=e.cache.get(f);p||(h=new c(o,Q*C,t.count*C/B),p=new g.InterleavedBuffer(h,C/B),e.cache.add(f,p)),u=new g.InterleavedBufferAttribute(p,r,l%C/B,E)}else o===null?h=new c(t.count*r):h=new c(o,l,t.count*r),u=new g.BufferAttribute(h,r,E);if(t.sparse!==void 0){const Q=bA.SCALAR,f=oA[t.sparse.indices.componentType],p=t.sparse.indices.byteOffset||0,m=t.sparse.values.byteOffset||0,F=new f(s[1],p,t.sparse.count*Q),S=new c(s[2],m,t.sparse.count*r);o!==null&&(u=new g.BufferAttribute(u.array.slice(),u.itemSize,u.normalized));for(let x=0,U=F.length;x<U;x++){const b=F[x];if(u.setX(b,S[x*r]),r>=2&&u.setY(b,S[x*r+1]),r>=3&&u.setZ(b,S[x*r+2]),r>=4&&u.setW(b,S[x*r+3]),r>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}}return u})}loadTexture(A){const e=this.json,a=this.options,i=e.textures[A].source,s=e.images[i];let o=this.textureLoader;if(s.uri){const r=a.manager.getHandler(s.uri);r!==null&&(o=r)}return this.loadTextureImage(A,i,o)}loadTextureImage(A,e,a){const t=this,i=this.json,s=i.textures[A],o=i.images[e],r=(o.uri||o.bufferView)+":"+s.sampler;if(this.textureCache[r])return this.textureCache[r];const c=this.loadImageSource(e,a).then(function(B){B.flipY=!1,B.name=s.name||o.name||"",B.name===""&&typeof o.uri=="string"&&o.uri.startsWith("data:image/")===!1&&(B.name=o.uri);const l=(i.samplers||{})[s.sampler]||{};return B.magFilter=YA[l.magFilter]||g.LinearFilter,B.minFilter=YA[l.minFilter]||g.LinearMipmapLinearFilter,B.wrapS=WA[l.wrapS]||g.RepeatWrapping,B.wrapT=WA[l.wrapT]||g.RepeatWrapping,t.associations.set(B,{textures:A}),B}).catch(function(){return null});return this.textureCache[r]=c,c}loadImageSource(A,e){const a=this,t=this.json,i=this.options;if(this.sourceCache[A]!==void 0)return this.sourceCache[A].then(I=>I.clone());const s=t.images[A],o=self.URL||self.webkitURL;let r=s.uri||"",c=!1;if(s.bufferView!==void 0)r=a.getDependency("bufferView",s.bufferView).then(function(I){c=!0;const l=new Blob([I],{type:s.mimeType});return r=o.createObjectURL(l),r});else if(s.uri===void 0)throw new Error("THREE.GLTFLoader: Image "+A+" is missing URI and bufferView");const B=Promise.resolve(r).then(function(I){return new Promise(function(l,C){let E=l;e.isImageBitmapLoader===!0&&(E=function(h){const u=new g.Texture(h);u.needsUpdate=!0,l(u)}),e.load(g.LoaderUtils.resolveURL(I,i.path),E,void 0,C)})}).then(function(I){return c===!0&&o.revokeObjectURL(r),Z(I,s),I.userData.mimeType=s.mimeType||nt(s.uri),I}).catch(function(I){throw console.error("THREE.GLTFLoader: Couldn't load texture",r),I});return this.sourceCache[A]=B,B}assignTexture(A,e,a,t){const i=this;return this.getDependency("texture",a.index).then(function(s){if(!s)return null;if(a.texCoord!==void 0&&a.texCoord>0&&(s=s.clone(),s.channel=a.texCoord),i.extensions[G.KHR_TEXTURE_TRANSFORM]){const o=a.extensions!==void 0?a.extensions[G.KHR_TEXTURE_TRANSFORM]:void 0;if(o){const r=i.associations.get(s);s=i.extensions[G.KHR_TEXTURE_TRANSFORM].extendTexture(s,o),i.associations.set(s,r)}}return t!==void 0&&(s.colorSpace=t),A[e]=s,s})}assignFinalMaterial(A){const e=A.geometry;let a=A.material;const t=e.attributes.tangent===void 0,i=e.attributes.color!==void 0,s=e.attributes.normal===void 0;if(A.isPoints){const o="PointsMaterial:"+a.uuid;let r=this.cache.get(o);r||(r=new g.PointsMaterial,g.Material.prototype.copy.call(r,a),r.color.copy(a.color),r.map=a.map,r.sizeAttenuation=!1,this.cache.add(o,r)),a=r}else if(A.isLine){const o="LineBasicMaterial:"+a.uuid;let r=this.cache.get(o);r||(r=new g.LineBasicMaterial,g.Material.prototype.copy.call(r,a),r.color.copy(a.color),r.map=a.map,this.cache.add(o,r)),a=r}if(t||i||s){let o="ClonedMaterial:"+a.uuid+":";t&&(o+="derivative-tangents:"),i&&(o+="vertex-colors:"),s&&(o+="flat-shading:");let r=this.cache.get(o);r||(r=a.clone(),i&&(r.vertexColors=!0),s&&(r.flatShading=!0),t&&(r.normalScale&&(r.normalScale.y*=-1),r.clearcoatNormalScale&&(r.clearcoatNormalScale.y*=-1)),this.cache.add(o,r),this.associations.set(r,this.associations.get(a))),a=r}A.material=a}getMaterialType(){return g.MeshStandardMaterial}loadMaterial(A){const e=this,a=this.json,t=this.extensions,i=a.materials[A];let s;const o={},r=i.extensions||{},c=[];if(r[G.KHR_MATERIALS_UNLIT]){const I=t[G.KHR_MATERIALS_UNLIT];s=I.getMaterialType(),c.push(I.extendParams(o,i,e))}else{const I=i.pbrMetallicRoughness||{};if(o.color=new g.Color(1,1,1),o.opacity=1,Array.isArray(I.baseColorFactor)){const l=I.baseColorFactor;o.color.setRGB(l[0],l[1],l[2],g.LinearSRGBColorSpace),o.opacity=l[3]}I.baseColorTexture!==void 0&&c.push(e.assignTexture(o,"map",I.baseColorTexture,g.SRGBColorSpace)),o.metalness=I.metallicFactor!==void 0?I.metallicFactor:1,o.roughness=I.roughnessFactor!==void 0?I.roughnessFactor:1,I.metallicRoughnessTexture!==void 0&&(c.push(e.assignTexture(o,"metalnessMap",I.metallicRoughnessTexture)),c.push(e.assignTexture(o,"roughnessMap",I.metallicRoughnessTexture))),s=this._invokeOne(function(l){return l.getMaterialType&&l.getMaterialType(A)}),c.push(Promise.all(this._invokeAll(function(l){return l.extendMaterialParams&&l.extendMaterialParams(A,o)})))}i.doubleSided===!0&&(o.side=g.DoubleSide);const B=i.alphaMode||fA.OPAQUE;if(B===fA.BLEND?(o.transparent=!0,o.depthWrite=!1):(o.transparent=!1,B===fA.MASK&&(o.alphaTest=i.alphaCutoff!==void 0?i.alphaCutoff:.5)),i.normalTexture!==void 0&&s!==g.MeshBasicMaterial&&(c.push(e.assignTexture(o,"normalMap",i.normalTexture)),o.normalScale=new g.Vector2(1,1),i.normalTexture.scale!==void 0)){const I=i.normalTexture.scale;o.normalScale.set(I,I)}if(i.occlusionTexture!==void 0&&s!==g.MeshBasicMaterial&&(c.push(e.assignTexture(o,"aoMap",i.occlusionTexture)),i.occlusionTexture.strength!==void 0&&(o.aoMapIntensity=i.occlusionTexture.strength)),i.emissiveFactor!==void 0&&s!==g.MeshBasicMaterial){const I=i.emissiveFactor;o.emissive=new g.Color().setRGB(I[0],I[1],I[2],g.LinearSRGBColorSpace)}return i.emissiveTexture!==void 0&&s!==g.MeshBasicMaterial&&c.push(e.assignTexture(o,"emissiveMap",i.emissiveTexture,g.SRGBColorSpace)),Promise.all(c).then(function(){const I=new s(o);return i.name&&(I.name=i.name),Z(I,i),e.associations.set(I,{materials:A}),i.extensions&&aA(t,I,i),I})}createUniqueName(A){const e=g.PropertyBinding.sanitizeNodeName(A||"");return e in this.nodeNamesUsed?e+"_"+ ++this.nodeNamesUsed[e]:(this.nodeNamesUsed[e]=0,e)}loadGeometries(A){const e=this,a=this.extensions,t=this.primitiveCache;function i(o){return a[G.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(o,e).then(function(r){return VA(r,o,e)})}const s=[];for(let o=0,r=A.length;o<r;o++){const c=A[o],B=st(c),I=t[B];if(I)s.push(I.promise);else{let l;c.extensions&&c.extensions[G.KHR_DRACO_MESH_COMPRESSION]?l=i(c):l=VA(new g.BufferGeometry,c,e),t[B]={primitive:c,promise:l},s.push(l)}}return Promise.all(s)}loadMesh(A){const e=this,a=this.json,t=this.extensions,i=a.meshes[A],s=i.primitives,o=[];for(let r=0,c=s.length;r<c;r++){const B=s[r].material===void 0?tt(this.cache):this.getDependency("material",s[r].material);o.push(B)}return o.push(e.loadGeometries(s)),Promise.all(o).then(function(r){const c=r.slice(0,r.length-1),B=r[r.length-1],I=[];for(let C=0,E=B.length;C<E;C++){const h=B[C],u=s[C];let Q;const f=c[C];if(u.mode===P.TRIANGLES||u.mode===P.TRIANGLE_STRIP||u.mode===P.TRIANGLE_FAN||u.mode===void 0)Q=i.isSkinnedMesh===!0?new g.SkinnedMesh(h,f):new g.Mesh(h,f),Q.isSkinnedMesh===!0&&Q.normalizeSkinWeights(),u.mode===P.TRIANGLE_STRIP?Q.geometry=KA(Q.geometry,g.TriangleStripDrawMode):u.mode===P.TRIANGLE_FAN&&(Q.geometry=KA(Q.geometry,g.TriangleFanDrawMode));else if(u.mode===P.LINES)Q=new g.LineSegments(h,f);else if(u.mode===P.LINE_STRIP)Q=new g.Line(h,f);else if(u.mode===P.LINE_LOOP)Q=new g.LineLoop(h,f);else if(u.mode===P.POINTS)Q=new g.Points(h,f);else throw new Error("THREE.GLTFLoader: Primitive mode unsupported: "+u.mode);Object.keys(Q.geometry.morphAttributes).length>0&&it(Q,i),Q.name=e.createUniqueName(i.name||"mesh_"+A),Z(Q,i),u.extensions&&aA(t,Q,u),e.assignFinalMaterial(Q),I.push(Q)}for(let C=0,E=I.length;C<E;C++)e.associations.set(I[C],{meshes:A,primitives:C});if(I.length===1)return i.extensions&&aA(t,I[0],i),I[0];const l=new g.Group;i.extensions&&aA(t,l,i),e.associations.set(l,{meshes:A});for(let C=0,E=I.length;C<E;C++)l.add(I[C]);return l})}loadCamera(A){let e;const a=this.json.cameras[A],t=a[a.type];if(!t){console.warn("THREE.GLTFLoader: Missing camera parameters.");return}return a.type==="perspective"?e=new g.PerspectiveCamera(g.MathUtils.radToDeg(t.yfov),t.aspectRatio||1,t.znear||1,t.zfar||2e6):a.type==="orthographic"&&(e=new g.OrthographicCamera(-t.xmag,t.xmag,t.ymag,-t.ymag,t.znear,t.zfar)),a.name&&(e.name=this.createUniqueName(a.name)),Z(e,a),Promise.resolve(e)}loadSkin(A){const e=this.json.skins[A],a=[];for(let t=0,i=e.joints.length;t<i;t++)a.push(this._loadNodeShallow(e.joints[t]));return e.inverseBindMatrices!==void 0?a.push(this.getDependency("accessor",e.inverseBindMatrices)):a.push(null),Promise.all(a).then(function(t){const i=t.pop(),s=t,o=[],r=[];for(let c=0,B=s.length;c<B;c++){const I=s[c];if(I){o.push(I);const l=new g.Matrix4;i!==null&&l.fromArray(i.array,c*16),r.push(l)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',e.joints[c])}return new g.Skeleton(o,r)})}loadAnimation(A){const e=this.json,a=this,t=e.animations[A],i=t.name?t.name:"animation_"+A,s=[],o=[],r=[],c=[],B=[];for(let I=0,l=t.channels.length;I<l;I++){const C=t.channels[I],E=t.samplers[C.sampler],h=C.target,u=h.node,Q=t.parameters!==void 0?t.parameters[E.input]:E.input,f=t.parameters!==void 0?t.parameters[E.output]:E.output;h.node!==void 0&&(s.push(this.getDependency("node",u)),o.push(this.getDependency("accessor",Q)),r.push(this.getDependency("accessor",f)),c.push(E),B.push(h))}return Promise.all([Promise.all(s),Promise.all(o),Promise.all(r),Promise.all(c),Promise.all(B)]).then(function(I){const l=I[0],C=I[1],E=I[2],h=I[3],u=I[4],Q=[];for(let f=0,p=l.length;f<p;f++){const m=l[f],F=C[f],S=E[f],x=h[f],U=u[f];if(m===void 0)continue;m.updateMatrix&&m.updateMatrix();const b=a._createAnimationTracks(m,F,S,x,U);if(b)for(let d=0;d<b.length;d++)Q.push(b[d])}return new g.AnimationClip(i,void 0,Q)})}createNodeMesh(A){const e=this.json,a=this,t=e.nodes[A];return t.mesh===void 0?null:a.getDependency("mesh",t.mesh).then(function(i){const s=a._getNodeRef(a.meshCache,t.mesh,i);return t.weights!==void 0&&s.traverse(function(o){if(o.isMesh)for(let r=0,c=t.weights.length;r<c;r++)o.morphTargetInfluences[r]=t.weights[r]}),s})}loadNode(A){const e=this.json,a=this,t=e.nodes[A],i=a._loadNodeShallow(A),s=[],o=t.children||[];for(let c=0,B=o.length;c<B;c++)s.push(a.getDependency("node",o[c]));const r=t.skin===void 0?Promise.resolve(null):a.getDependency("skin",t.skin);return Promise.all([i,Promise.all(s),r]).then(function(c){const B=c[0],I=c[1],l=c[2];l!==null&&B.traverse(function(C){C.isSkinnedMesh&&C.bind(l,ot)});for(let C=0,E=I.length;C<E;C++)B.add(I[C]);return B})}_loadNodeShallow(A){const e=this.json,a=this.extensions,t=this;if(this.nodeCache[A]!==void 0)return this.nodeCache[A];const i=e.nodes[A],s=i.name?t.createUniqueName(i.name):"",o=[],r=t._invokeOne(function(c){return c.createNodeMesh&&c.createNodeMesh(A)});return r&&o.push(r),i.camera!==void 0&&o.push(t.getDependency("camera",i.camera).then(function(c){return t._getNodeRef(t.cameraCache,i.camera,c)})),t._invokeAll(function(c){return c.createNodeAttachment&&c.createNodeAttachment(A)}).forEach(function(c){o.push(c)}),this.nodeCache[A]=Promise.all(o).then(function(c){let B;if(i.isBone===!0?B=new g.Bone:c.length>1?B=new g.Group:c.length===1?B=c[0]:B=new g.Object3D,B!==c[0])for(let I=0,l=c.length;I<l;I++)B.add(c[I]);if(i.name&&(B.userData.name=i.name,B.name=s),Z(B,i),i.extensions&&aA(a,B,i),i.matrix!==void 0){const I=new g.Matrix4;I.fromArray(i.matrix),B.applyMatrix4(I)}else i.translation!==void 0&&B.position.fromArray(i.translation),i.rotation!==void 0&&B.quaternion.fromArray(i.rotation),i.scale!==void 0&&B.scale.fromArray(i.scale);return t.associations.has(B)||t.associations.set(B,{}),t.associations.get(B).nodes=A,B}),this.nodeCache[A]}loadScene(A){const e=this.extensions,a=this.json.scenes[A],t=this,i=new g.Group;a.name&&(i.name=t.createUniqueName(a.name)),Z(i,a),a.extensions&&aA(e,i,a);const s=a.nodes||[],o=[];for(let r=0,c=s.length;r<c;r++)o.push(t.getDependency("node",s[r]));return Promise.all(o).then(function(r){for(let B=0,I=r.length;B<I;B++)i.add(r[B]);const c=B=>{const I=new Map;for(const[l,C]of t.associations)(l instanceof g.Material||l instanceof g.Texture)&&I.set(l,C);return B.traverse(l=>{const C=t.associations.get(l);C!=null&&I.set(l,C)}),I};return t.associations=c(i),i})}_createAnimationTracks(A,e,a,t,i){const s=[],o=A.name?A.name:A.uuid,r=[];AA[i.path]===AA.weights?A.traverse(function(l){l.morphTargetInfluences&&r.push(l.name?l.name:l.uuid)}):r.push(o);let c;switch(AA[i.path]){case AA.weights:c=g.NumberKeyframeTrack;break;case AA.rotation:c=g.QuaternionKeyframeTrack;break;case AA.position:case AA.scale:c=g.VectorKeyframeTrack;break;default:switch(a.itemSize){case 1:c=g.NumberKeyframeTrack;break;case 2:case 3:default:c=g.VectorKeyframeTrack;break}break}const B=t.interpolation!==void 0?et[t.interpolation]:g.InterpolateLinear,I=this._getArrayFromAccessor(a);for(let l=0,C=r.length;l<C;l++){const E=new c(r[l]+"."+AA[i.path],e.array,I,B);t.interpolation==="CUBICSPLINE"&&this._createCubicSplineTrackInterpolant(E),s.push(E)}return s}_getArrayFromAccessor(A){let e=A.array;if(A.normalized){const a=yA(e.constructor),t=new Float32Array(e.length);for(let i=0,s=e.length;i<s;i++)t[i]=e[i]*a;e=t}return e}_createCubicSplineTrackInterpolant(A){A.createInterpolant=function(a){const t=this instanceof g.QuaternionKeyframeTrack?At:te;return new t(this.times,this.values,this.getValueSize()/3,a)},A.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0}}function ct(n,A,e){const a=A.attributes,t=new g.Box3;if(a.POSITION!==void 0){const o=e.json.accessors[a.POSITION],r=o.min,c=o.max;if(r!==void 0&&c!==void 0){if(t.set(new g.Vector3(r[0],r[1],r[2]),new g.Vector3(c[0],c[1],c[2])),o.normalized){const B=yA(oA[o.componentType]);t.min.multiplyScalar(B),t.max.multiplyScalar(B)}}else{console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");return}}else return;const i=A.targets;if(i!==void 0){const o=new g.Vector3,r=new g.Vector3;for(let c=0,B=i.length;c<B;c++){const I=i[c];if(I.POSITION!==void 0){const l=e.json.accessors[I.POSITION],C=l.min,E=l.max;if(C!==void 0&&E!==void 0){if(r.setX(Math.max(Math.abs(C[0]),Math.abs(E[0]))),r.setY(Math.max(Math.abs(C[1]),Math.abs(E[1]))),r.setZ(Math.max(Math.abs(C[2]),Math.abs(E[2]))),l.normalized){const h=yA(oA[l.componentType]);r.multiplyScalar(h)}o.max(r)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}t.expandByVector(o)}n.boundingBox=t;const s=new g.Sphere;t.getCenter(s.center),s.radius=t.min.distanceTo(t.max)/2,n.boundingSphere=s}function VA(n,A,e){const a=A.attributes,t=[];function i(s,o){return e.getDependency("accessor",s).then(function(r){n.setAttribute(o,r)})}for(const s in a){const o=SA[s]||s.toLowerCase();o in n.attributes||t.push(i(a[s],o))}if(A.indices!==void 0&&!n.index){const s=e.getDependency("accessor",A.indices).then(function(o){n.setIndex(o)});t.push(s)}return g.ColorManagement.workingColorSpace!==g.LinearSRGBColorSpace&&"COLOR_0"in a&&console.warn(`THREE.GLTFLoader: Converting vertex colors from "srgb-linear" to "${g.ColorManagement.workingColorSpace}" not supported.`),Z(n,A),ct(n,A,e),Promise.all(t).then(function(){return A.targets!==void 0?at(n,A.targets,e):n})}const QA=new WeakMap;class gt extends g.Loader{constructor(A){super(A),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(A){return this.decoderPath=A,this}setDecoderConfig(A){return this.decoderConfig=A,this}setWorkerLimit(A){return this.workerLimit=A,this}load(A,e,a,t){const i=new g.FileLoader(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),i.load(A,s=>{this.parse(s,e,t)},a,t)}parse(A,e,a=()=>{}){this.decodeDracoFile(A,e,null,null,g.SRGBColorSpace,a).catch(a)}decodeDracoFile(A,e,a,t,i=g.LinearSRGBColorSpace,s=()=>{}){const o={attributeIDs:a||this.defaultAttributeIDs,attributeTypes:t||this.defaultAttributeTypes,useUniqueIDs:!!a,vertexColorSpace:i};return this.decodeGeometry(A,o).then(e).catch(s)}decodeGeometry(A,e){const a=JSON.stringify(e);if(QA.has(A)){const r=QA.get(A);if(r.key===a)return r.promise;if(A.byteLength===0)throw new Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.")}let t;const i=this.workerNextTaskID++,s=A.byteLength,o=this._getWorker(i,s).then(r=>(t=r,new Promise((c,B)=>{t._callbacks[i]={resolve:c,reject:B},t.postMessage({type:"decode",id:i,taskConfig:e,buffer:A},[A])}))).then(r=>this._createGeometry(r.geometry));return o.catch(()=>!0).then(()=>{t&&i&&this._releaseTask(t,i)}),QA.set(A,{key:a,promise:o}),o}_createGeometry(A){const e=new g.BufferGeometry;A.index&&e.setIndex(new g.BufferAttribute(A.index.array,1));for(let a=0;a<A.attributes.length;a++){const t=A.attributes[a],i=t.name,s=t.array,o=t.itemSize,r=new g.BufferAttribute(s,o);i==="color"&&(this._assignVertexColorSpace(r,t.vertexColorSpace),r.normalized=!(s instanceof Float32Array)),e.setAttribute(i,r)}return e}_assignVertexColorSpace(A,e){if(e!==g.SRGBColorSpace)return;const a=new g.Color;for(let t=0,i=A.count;t<i;t++)a.fromBufferAttribute(A,t).convertSRGBToLinear(),A.setXYZ(t,a.r,a.g,a.b)}_loadLibrary(A,e){const a=new g.FileLoader(this.manager);return a.setPath(this.decoderPath),a.setResponseType(e),a.setWithCredentials(this.withCredentials),new Promise((t,i)=>{a.load(A,t,void 0,i)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;const A=typeof WebAssembly!="object"||this.decoderConfig.type==="js",e=[];return A?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(a=>{const t=a[0];A||(this.decoderConfig.wasmBinary=a[1]);const i=It.toString(),s=["/* draco decoder */",t,"","/* worker */",i.substring(i.indexOf("{")+1,i.lastIndexOf("}"))].join(`
|
|
2
|
-
`);this.workerSourceURL=URL.createObjectURL(new Blob([s]))}),this.decoderPending}_getWorker(A,e){return this._initDecoder().then(()=>{if(this.workerPool.length<this.workerLimit){const t=new Worker(this.workerSourceURL);t._callbacks={},t._taskCosts={},t._taskLoad=0,t.postMessage({type:"init",decoderConfig:this.decoderConfig}),t.onmessage=function(i){const s=i.data;switch(s.type){case"decode":t._callbacks[s.id].resolve(s);break;case"error":t._callbacks[s.id].reject(s);break;default:console.error('THREE.DRACOLoader: Unexpected message, "'+s.type+'"')}},this.workerPool.push(t)}else this.workerPool.sort(function(t,i){return t._taskLoad>i._taskLoad?-1:1});const a=this.workerPool[this.workerPool.length-1];return a._taskCosts[A]=e,a._taskLoad+=e,a})}_releaseTask(A,e){A._taskLoad-=A._taskCosts[e],delete A._callbacks[e],delete A._taskCosts[e]}debug(){console.log("Task load: ",this.workerPool.map(A=>A._taskLoad))}dispose(){for(let A=0;A<this.workerPool.length;++A)this.workerPool[A].terminate();return this.workerPool.length=0,this.workerSourceURL!==""&&URL.revokeObjectURL(this.workerSourceURL),this}}function It(){let n,A;onmessage=function(s){const o=s.data;switch(o.type){case"init":n=o.decoderConfig,A=new Promise(function(B){n.onModuleLoaded=function(I){B({draco:I})},DracoDecoderModule(n)});break;case"decode":const r=o.buffer,c=o.taskConfig;A.then(B=>{const I=B.draco,l=new I.Decoder;try{const C=e(I,l,new Int8Array(r),c),E=C.attributes.map(h=>h.array.buffer);C.index&&E.push(C.index.array.buffer),self.postMessage({type:"decode",id:o.id,geometry:C},E)}catch(C){console.error(C),self.postMessage({type:"error",id:o.id,error:C.message})}finally{I.destroy(l)}});break}};function e(s,o,r,c){const B=c.attributeIDs,I=c.attributeTypes;let l,C;const E=o.GetEncodedGeometryType(r);if(E===s.TRIANGULAR_MESH)l=new s.Mesh,C=o.DecodeArrayToMesh(r,r.byteLength,l);else if(E===s.POINT_CLOUD)l=new s.PointCloud,C=o.DecodeArrayToPointCloud(r,r.byteLength,l);else throw new Error("THREE.DRACOLoader: Unexpected geometry type.");if(!C.ok()||l.ptr===0)throw new Error("THREE.DRACOLoader: Decoding failed: "+C.error_msg());const h={index:null,attributes:[]};for(const u in B){const Q=self[I[u]];let f,p;if(c.useUniqueIDs)p=B[u],f=o.GetAttributeByUniqueId(l,p);else{if(p=o.GetAttributeId(l,s[B[u]]),p===-1)continue;f=o.GetAttribute(l,p)}const m=t(s,o,l,u,Q,f);u==="color"&&(m.vertexColorSpace=c.vertexColorSpace),h.attributes.push(m)}return E===s.TRIANGULAR_MESH&&(h.index=a(s,o,l)),s.destroy(l),h}function a(s,o,r){const B=r.num_faces()*3,I=B*4,l=s._malloc(I);o.GetTrianglesUInt32Array(r,I,l);const C=new Uint32Array(s.HEAPF32.buffer,l,B).slice();return s._free(l),{array:C,itemSize:1}}function t(s,o,r,c,B,I){const l=I.num_components(),E=r.num_points()*l,h=E*B.BYTES_PER_ELEMENT,u=i(s,B),Q=s._malloc(h);o.GetAttributeDataArrayForAllPoints(r,I,u,h,Q);const f=new B(s.HEAPF32.buffer,Q,E).slice();return s._free(Q),{name:c,array:f,itemSize:l}}function i(s,o){switch(o){case Float32Array:return s.DT_FLOAT32;case Int8Array:return s.DT_INT8;case Int16Array:return s.DT_INT16;case Int32Array:return s.DT_INT32;case Uint8Array:return s.DT_UINT8;case Uint16Array:return s.DT_UINT16;case Uint32Array:return s.DT_UINT32}}}class Bt{constructor(A=4){this.pool=A,this.queue=[],this.workers=[],this.workersResolve=[],this.workerStatus=0}_initWorker(A){if(!this.workers[A]){const e=this.workerCreator();e.addEventListener("message",this._onMessage.bind(this,A)),this.workers[A]=e}}_getIdleWorker(){for(let A=0;A<this.pool;A++)if(!(this.workerStatus&1<<A))return A;return-1}_onMessage(A,e){const a=this.workersResolve[A];if(a&&a(e),this.queue.length){const{resolve:t,msg:i,transfer:s}=this.queue.shift();this.workersResolve[A]=t,this.workers[A].postMessage(i,s)}else this.workerStatus^=1<<A}setWorkerCreator(A){this.workerCreator=A}setWorkerLimit(A){this.pool=A}postMessage(A,e){return new Promise(a=>{const t=this._getIdleWorker();t!==-1?(this._initWorker(t),this.workerStatus|=1<<t,this.workersResolve[t]=a,this.workers[t].postMessage(A,e)):this.queue.push({resolve:a,msg:A,transfer:e})})}dispose(){this.workers.forEach(A=>A.terminate()),this.workersResolve.length=0,this.workers.length=0,this.queue.length=0,this.workerStatus=0}}const lt=0,zA=2,Ct=1,XA=2,bt=0,ft=1,Et=10,Qt=0,ae=9,ie=15,se=16,ne=22,oe=37,re=43,ce=76,ge=83,Ie=97,Be=100,le=103,Ce=109,be=165,fe=166;class dt{constructor(){this.vkFormat=0,this.typeSize=1,this.pixelWidth=0,this.pixelHeight=0,this.pixelDepth=0,this.layerCount=0,this.faceCount=1,this.supercompressionScheme=0,this.levels=[],this.dataFormatDescriptor=[{vendorId:0,descriptorType:0,descriptorBlockSize:0,versionNumber:2,colorModel:0,colorPrimaries:1,transferFunction:2,flags:0,texelBlockDimension:[0,0,0,0],bytesPlane:[0,0,0,0,0,0,0,0],samples:[]}],this.keyValue={},this.globalData=null}}class gA{constructor(A,e,a,t){this._dataView=new DataView(A.buffer,A.byteOffset+e,a),this._littleEndian=t,this._offset=0}_nextUint8(){const A=this._dataView.getUint8(this._offset);return this._offset+=1,A}_nextUint16(){const A=this._dataView.getUint16(this._offset,this._littleEndian);return this._offset+=2,A}_nextUint32(){const A=this._dataView.getUint32(this._offset,this._littleEndian);return this._offset+=4,A}_nextUint64(){const A=this._dataView.getUint32(this._offset,this._littleEndian)+4294967296*this._dataView.getUint32(this._offset+4,this._littleEndian);return this._offset+=8,A}_nextInt32(){const A=this._dataView.getInt32(this._offset,this._littleEndian);return this._offset+=4,A}_skip(A){return this._offset+=A,this}_scan(A,e=0){const a=this._offset;let t=0;for(;this._dataView.getUint8(this._offset)!==e&&t<A;)t++,this._offset++;return t<A&&this._offset++,new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+a,t)}}const _=[171,75,84,88,32,50,48,187,13,10,26,10];function ZA(n){return typeof TextDecoder<"u"?new TextDecoder().decode(n):Buffer.from(n).toString("utf8")}function ht(n){const A=new Uint8Array(n.buffer,n.byteOffset,_.length);if(A[0]!==_[0]||A[1]!==_[1]||A[2]!==_[2]||A[3]!==_[3]||A[4]!==_[4]||A[5]!==_[5]||A[6]!==_[6]||A[7]!==_[7]||A[8]!==_[8]||A[9]!==_[9]||A[10]!==_[10]||A[11]!==_[11])throw new Error("Missing KTX 2.0 identifier.");const e=new dt,a=17*Uint32Array.BYTES_PER_ELEMENT,t=new gA(n,_.length,a,!0);e.vkFormat=t._nextUint32(),e.typeSize=t._nextUint32(),e.pixelWidth=t._nextUint32(),e.pixelHeight=t._nextUint32(),e.pixelDepth=t._nextUint32(),e.layerCount=t._nextUint32(),e.faceCount=t._nextUint32();const i=t._nextUint32();e.supercompressionScheme=t._nextUint32();const s=t._nextUint32(),o=t._nextUint32(),r=t._nextUint32(),c=t._nextUint32(),B=t._nextUint64(),I=t._nextUint64(),l=new gA(n,_.length+a,3*i*8,!0);for(let T=0;T<i;T++)e.levels.push({levelData:new Uint8Array(n.buffer,n.byteOffset+l._nextUint64(),l._nextUint64()),uncompressedByteLength:l._nextUint64()});const C=new gA(n,s,o,!0),E={vendorId:C._skip(4)._nextUint16(),descriptorType:C._nextUint16(),versionNumber:C._nextUint16(),descriptorBlockSize:C._nextUint16(),colorModel:C._nextUint8(),colorPrimaries:C._nextUint8(),transferFunction:C._nextUint8(),flags:C._nextUint8(),texelBlockDimension:[C._nextUint8(),C._nextUint8(),C._nextUint8(),C._nextUint8()],bytesPlane:[C._nextUint8(),C._nextUint8(),C._nextUint8(),C._nextUint8(),C._nextUint8(),C._nextUint8(),C._nextUint8(),C._nextUint8()],samples:[]},h=(E.descriptorBlockSize/4-6)/4;for(let T=0;T<h;T++){const N={bitOffset:C._nextUint16(),bitLength:C._nextUint8(),channelType:C._nextUint8(),samplePosition:[C._nextUint8(),C._nextUint8(),C._nextUint8(),C._nextUint8()],sampleLower:-1/0,sampleUpper:1/0};64&N.channelType?(N.sampleLower=C._nextInt32(),N.sampleUpper=C._nextInt32()):(N.sampleLower=C._nextUint32(),N.sampleUpper=C._nextUint32()),E.samples[T]=N}e.dataFormatDescriptor.length=0,e.dataFormatDescriptor.push(E);const u=new gA(n,r,c,!0);for(;u._offset<c;){const T=u._nextUint32(),N=u._scan(T),H=ZA(N),K=u._scan(T-N.byteLength);e.keyValue[H]=H.match(/^ktx/i)?ZA(K):K,u._offset%4&&u._skip(4-u._offset%4)}if(I<=0)return e;const Q=new gA(n,B,I,!0),f=Q._nextUint16(),p=Q._nextUint16(),m=Q._nextUint32(),F=Q._nextUint32(),S=Q._nextUint32(),x=Q._nextUint32(),U=[];for(let T=0;T<i;T++)U.push({imageFlags:Q._nextUint32(),rgbSliceByteOffset:Q._nextUint32(),rgbSliceByteLength:Q._nextUint32(),alphaSliceByteOffset:Q._nextUint32(),alphaSliceByteLength:Q._nextUint32()});const b=B+Q._offset,d=b+m,w=d+F,R=w+S,D=new Uint8Array(n.buffer,n.byteOffset+b,m),y=new Uint8Array(n.buffer,n.byteOffset+d,F),k=new Uint8Array(n.buffer,n.byteOffset+w,S),L=new Uint8Array(n.buffer,n.byteOffset+R,x);return e.globalData={endpointCount:f,selectorCount:p,imageDescs:U,endpointsData:D,selectorsData:y,tablesData:k,extendedData:L},e}let dA,X,GA;const hA={env:{emscripten_notify_memory_growth:function(n){GA=new Uint8Array(X.exports.memory.buffer)}}};class pt{init(){return dA||(dA=typeof fetch<"u"?fetch("data:application/wasm;base64,"+$A).then(A=>A.arrayBuffer()).then(A=>WebAssembly.instantiate(A,hA)).then(this._init):WebAssembly.instantiate(Buffer.from($A,"base64"),hA).then(this._init),dA)}_init(A){X=A.instance,hA.env.emscripten_notify_memory_growth(0)}decode(A,e=0){if(!X)throw new Error("ZSTDDecoder: Await .init() before decoding.");const a=A.byteLength,t=X.exports.malloc(a);GA.set(A,t),e=e||Number(X.exports.ZSTD_findDecompressedSize(t,a));const i=X.exports.malloc(e),s=X.exports.ZSTD_decompress(i,e,t,a),o=GA.slice(i,i+s);return X.exports.free(t),X.exports.free(i),o}}const $A="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IAMNACAEQQNxBEADQCACRQ0FIAAgAkF/aiICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQXxqIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkF/aiICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AIAIhBANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIARBfGoiBEEDSw0ACyACQQNxIQILIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQX9qIgINAAsLIAAL8wICAn8BfgJAIAJFDQAgACACaiIDQX9qIAE6AAAgACABOgAAIAJBA0kNACADQX5qIAE6AAAgACABOgABIANBfWogAToAACAAIAE6AAIgAkEHSQ0AIANBfGogAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa0iBUIghiAFhCEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkFgaiICQR9LDQALCyAACy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAIajYCACADCy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAFajYCACADCx8AIAAgASACKAIEEAg2AgAgARAEGiAAIAJBCGo2AgQLCAAgAGdBH3MLugUBDX8jAEEQayIKJAACfyAEQQNNBEAgCkEANgIMIApBDGogAyAEEAsaIAAgASACIApBDGpBBBAVIgBBbCAAEAMbIAAgACAESxsMAQsgAEEAIAEoAgBBAXRBAmoQECENQVQgAygAACIGQQ9xIgBBCksNABogAiAAQQVqNgIAIAMgBGoiAkF8aiEMIAJBeWohDiACQXtqIRAgAEEGaiELQQQh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ASIDNgLE4AEgACgCvOABIQQgACABNgK84AEgACABIAJqNgK44AEgACABIAQgA2tqNgLA4AELpgEBAX8gACAAKALs4QEQFjYCyOABIABCADcD+OABIABCADcDuOABIABBwOABakIANwMAIABBqNAAaiIBQYyAgOAANgIAIABBADYCmOIBIABCADcDiOEBIABCAzcDgOEBIABBrNABakHgEikCADcCACAAQbTQAWpB6BIoAgA2AgAgACABNgIMIAAgAEGYIGo2AgggACAAQaAwajYCBCAAIABBEGo2AgALYQEBf0G4fyEDAkAgAUEDSQ0AIAIgABAhIgFBA3YiADYCCCACIAFBAXE2AgQgAiABQQF2QQNxIgM2AgACQCADQX9qIgFBAksNAAJAIAFBAWsOAgEAAgtBbA8LIAAhAwsgAwsMACAAIAEgAkEAEC4LiAQCA38CfiADEBYhBCAAQQBBKBAQIQAgBCACSwRAIAQPCyABRQRAQX8PCwJAAkAgA0EBRg0AIAEoAAAiBkGo6r5pRg0AQXYhAyAGQXBxQdDUtMIBRw0BQQghAyACQQhJDQEgAEEAQSgQECEAIAEoAAQhASAAQQE2AhQgACABrTcDAEEADwsgASACIAMQLyIDIAJLDQAgACADNgIYQXIhAyABIARqIgVBf2otAAAiAkEIcQ0AIAJBIHEiBkUEQEFwIQMgBS0AACIFQacBSw0BIAVBB3GtQgEgBUEDdkEKaq2GIgdCA4h+IAd8IQggBEEBaiEECyACQQZ2IQMgAkECdiEFAkAgAkEDcUF/aiICQQJLBEBBACECDAELAkACQAJAIAJBAWsOAgECAAsgASAEai0AACECIARBAWohBAwCCyABIARqLwAAIQIgBEECaiEEDAELIAEgBGooAAAhAiAEQQRqIQQLIAVBAXEhBQJ+AkACQAJAIANBf2oiA0ECTQRAIANBAWsOAgIDAQtCfyAGRQ0DGiABIARqMQAADAMLIAEgBGovAACtQoACfAwCCyABIARqKAAArQwBCyABIARqKQAACyEHIAAgBTYCICAAIAI2AhwgACAHNwMAQQAhAyAAQQA2AhQgACAHIAggBhsiBzcDCCAAIAdCgIAIIAdCgIAIVBs+AhALIAMLWwEBf0G4fyEDIAIQFiICIAFNBH8gACACakF/ai0AACIAQQNxQQJ0QaAeaigC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C0Egak8NAQsgByAHKQNoNwMQIAcgBykDYDcDCCAEIA0gB0EIaiAHQdwAaiAPIA4gESAQEB4hCwwBCyACIARqIQggBCAKEAcgAkERTwRAIARBEGohAgNAIAIgCkEQaiIKEAcgAkEQaiICIAhJDQALCyAIIAlrIQIgByATNgJcIAkgCCAOa0sEQCAJIAggEWtLBEBBbCELDAILIBAgAiAOayICaiIKIANqIBBNBEAgCCAKIAMQDxoMAgsgCCAKQQAgAmsQDyEIIAcgAiADaiIDNgJkIAggAmshCCAOIQILIAlBEE8EQCADIAhqIQMDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALDAELAkAgCUEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgCUECdCIDQcAeaigCAGoiAhAXIAIgA0HgHmooAgBrIQIgBygCZCEDDAELIAggAhAMCyADQQlJDQAgAyAIaiEDIAhBCGoiCCACQQhqIgJrQQ9MBEADQCAIIAIQDCACQQhqIQIgCEEIaiIIIANJDQAMAgALAAsDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALCyAHQRhqEAQaIAsgDCALEAMiAhshDCAEIAQgC2ogAhshBCAFQX9qIgUNAAsgDBADDQFBbCEMIAdBGGoQBEECSQ0BQQAhCANAIAhBA0cEQCAAIAhBAnQiAmpBrNABaiACIAdqKAJENgIAIAhBAWohCAwBCwsgBygCXCEIC0G6fyEMIA8gCGsiACANIARrSw0AIAQEfyAEIAggABALIABqBUEACyABayEMCyAHQfAAaiQAIAwLkRcCFn8FfiMAQdABayIHJAAgByAAKALw4QEiCDYCvAEgASACaiESIAggACgCgOIBaiETAkACQCAFRQRAIAEhAwwBCyAAKALE4AEhESAAKALA4AEhFSAAKAK84AEhDyAAQQE2AozhAUEAIQgDQCAIQQNHBEAgByAIQQJ0IgJqIAAgAmpBrNABaigCADYCVCAIQQFqIQgMAQsLIAcgETYCZCAHIA82AmAgByABIA9rNgJoQWwhECAHQShqIAMgBBAGEAMNASAFQQQgBUEESBshFyAHQTxqIAdBKGogACgCABATIAdBxABqIAdBKGogACgCCBATIAdBzABqIAdB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IAdB0AFqJAAgEAslACAAQgA3AgAgAEEAOwEIIABBADoACyAAIAE2AgwgACACOgAKC7QFAQN/IwBBMGsiBCQAIABB/wFqIgVBfWohBgJAIAMvAQIEQCAEQRhqIAEgAhAGIgIQAw0BIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahASOgAAIAMgBEEIaiAEQRhqEBI6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0FIAEgBEEQaiAEQRhqEBI6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBSABIARBCGogBEEYahASOgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEjoAACABIAJqIABrIQIMAwsgAyAEQRBqIARBGGoQEjoAAiADIARBCGogBEEYahASOgADIANBBGohAwwAAAsACyAEQRhqIAEgAhAGIgIQAw0AIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahAROgAAIAMgBEEIaiAEQRhqEBE6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0EIAEgBEEQaiAEQRhqEBE6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBCABIARBCGogBEEYahAROgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEToAACABIAJqIABrIQIMAgsgAyAEQRBqIARBGGoQEToAAiADIARBCGogBEEYahAROgADIANBBGohAwwAAAsACyAEQTBqJAAgAgtpAQF/An8CQAJAIAJBB00NACABKAAAQbfIwuF+Rw0AIAAgASgABDYCmOIBQWIgAEEQaiABIAIQPiIDEAMNAhogAEKBgICAEDcDiOEBIAAgASADaiACIANrECoMAQsgACABIAIQKgtBAAsLrQMBBn8jAEGAAWsiAyQAQWIhCAJAIAJBCUkNACAAQZjQAGogAUEIaiIEIAJBeGogAEGY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wOABCwutAgIEfwF+IwBBQGoiBCQAAkACQCACQQhJDQAgASgAAEFwcUHQ1LTCAUcNACABIAIQIiEBIABCADcDCCAAQQA2AgQgACABNgIADAELIARBGGogASACEC0iAxADBEAgACADEBoMAQsgAwRAIABBuH8QGgwBCyACIAQoAjAiA2shAiABIANqIQMDQAJAIAAgAyACIARBCGoQLCIFEAMEfyAFBSACIAVBA2oiBU8NAUG4fwsQGgwCCyAGQQFqIQYgAiAFayECIAMgBWohAyAEKAIMRQ0ACyAEKAI4BEAgAkEDTQRAIABBuH8QGgwCCyADQQRqIQMLIAQoAighAiAEKQMYIQcgAEEANgIEIAAgAyABazYCACAAIAIgBmytIAcgB0J/URs3AwgLIARBQGskAAslAQF/IwBBEGsiAiQAIAIgACABEFEgAigCACEAIAJBEGokACAAC30BBH8jAEGQBGsiBCQAIARB/wE2AggCQCAEQRBqIARBCGogBEEMaiABIAIQFSIGEAMEQCAGIQUMAQtBVCEFIAQoAgwiB0EGSw0AIAMgBEEQaiAEKAIIIAcQQSIFEAMNACAAIAEgBmogAiAGayADEDwhBQsgBEGQBGokACAFC4cBAgJ/An5BABAWIQMCQANAIAEgA08EQAJAIAAoAABBcHFB0NS0wgFGBEAgACABECIiAhADRQ0BQn4PCyAAIAEQVSIEQn1WDQMgBCAFfCIFIARUIQJCfiEEIAINAyAAIAEQUiICEAMNAwsgASACayEBIAAgAmohAAwBCwtCfiAFIAEbIQQLIAQLPwIBfwF+IwBBMGsiAiQAAn5CfiACQQhqIAAgARAtDQAaQgAgAigCHEEBRg0AGiACKQMICyEDIAJBMGokACADC40BAQJ/IwBBMGsiASQAAkAgAEUNACAAKAKI4gENACABIABB/OEBaigCADYCKCABIAApAvThATcDICAAEDAgACgCqOIBIQIgASABKAIoNgIYIAEgASkDIDcDECACIAFBEGoQGyAAQQA2AqjiASABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALKgECfyMAQRBrIgAkACAAQQA2AgggAEIANwMAIAAQWCEBIABBEGokACABC4cBAQN/IwBBEGsiAiQAAkAgACgCAEUgACgCBEVzDQAgAiAAKAIINgIIIAIgACkCADcDAAJ/IAIoAgAiAQRAIAIoAghBqOMJIAERBQAMAQtBqOMJECgLIgFFDQAgASAAKQIANwL04QEgAUH84QFqIAAoAgg2AgAgARBZIAEhAwsgAkEQaiQAIAMLywEBAn8jAEEgayIBJAAgAEGBgIDAADYCtOIBIABBADYCiOIBIABBADYC7OEBIABCADcDkOIBIABBADYCpOMJIABBADYC3OIBIABCADcCzOIBIABBADYCvOIBIABBADYCxOABIABCADcCnOIBIABBpOIBakIANwIAIABBrOIBakEANgIAIAFCADcCECABQgA3AhggASABKQMYNwMIIAEgASkDEDcDACABKAIIQQh2QQFxIQIgAEEANgLg4gEgACACNgKM4gEgAUEgaiQAC3YBA38jAEEwayIBJAAgAARAIAEgAEHE0AFqIgIoAgA2AiggASAAKQK80AE3AyAgACgCACEDIAEgAigCADYCGCABIAApArzQATcDECADIAFBEGoQGyABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALzAEBAX8gACABKAK00AE2ApjiASAAIAEoAgQiAjYCwOABIAAgAjYCvOABIAAgAiABKAIIaiICNgK44AEgACACNgLE4AEgASgCuNABBEAgAEKBgICAEDcDiOEBIAAgAUGk0ABqNgIMIAAgAUGUIGo2AgggACABQZwwajYCBCAAIAFBDGo2AgAgAEGs0AFqIAFBqNABaigCADYCACAAQbDQAWogAUGs0AFqKAIANgIAIABBtNABaiABQbDQAWooAgA2AgAPCyAAQgA3A4jhAQs7ACACRQRAQbp/DwsgBEUEQEFsDwsgAiAEEGAEQCAAIAEgAiADIAQgBRBhDwsgACABIAIgAyAEIAUQZQtGAQF/IwBBEGsiBSQAIAVBCGogBBAOAn8gBS0ACQRAIAAgASACIAMgBBAyDAELIAAgASACIAMgBBA0CyEAIAVBEGokACAACzQAIAAgAyAEIAUQNiIFEAMEQCAFDwsgBSAESQR/IAEgAiADIAVqIAQgBWsgABA1BUG4fwsLRgEBfyMAQRBrIgUkACAFQQhqIAQQDgJ/IAUtAAkEQCAAIAEgAiADIAQQYgwBCyAAIAEgAiADIAQQNQshACAFQRBqJAAgAAtZAQF/QQ8hAiABIABJBEAgAUEE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",pA=new WeakMap;let uA=0,mA;class z extends g.Loader{constructor(A){super(A),this.transcoderPath="",this.transcoderBinary=null,this.transcoderPending=null,this.workerPool=new Bt,this.workerSourceURL="",this.workerConfig=null,typeof MSC_TRANSCODER<"u"&&console.warn('THREE.KTX2Loader: Please update to latest "basis_transcoder". "msc_basis_transcoder" is no longer supported in three.js r125+.')}setTranscoderPath(A){return this.transcoderPath=A,this}setWorkerLimit(A){return this.workerPool.setWorkerLimit(A),this}async detectSupportAsync(A){return this.workerConfig={astcSupported:await A.hasFeatureAsync("texture-compression-astc"),etc1Supported:await A.hasFeatureAsync("texture-compression-etc1"),etc2Supported:await A.hasFeatureAsync("texture-compression-etc2"),dxtSupported:await A.hasFeatureAsync("texture-compression-bc"),bptcSupported:await A.hasFeatureAsync("texture-compression-bptc"),pvrtcSupported:await A.hasFeatureAsync("texture-compression-pvrtc")},this}detectSupport(A){return A.isWebGPURenderer===!0?this.workerConfig={astcSupported:A.hasFeature("texture-compression-astc"),etc1Supported:A.hasFeature("texture-compression-etc1"),etc2Supported:A.hasFeature("texture-compression-etc2"),dxtSupported:A.hasFeature("texture-compression-bc"),bptcSupported:A.hasFeature("texture-compression-bptc"),pvrtcSupported:A.hasFeature("texture-compression-pvrtc")}:this.workerConfig={astcSupported:A.extensions.has("WEBGL_compressed_texture_astc"),etc1Supported:A.extensions.has("WEBGL_compressed_texture_etc1"),etc2Supported:A.extensions.has("WEBGL_compressed_texture_etc"),dxtSupported:A.extensions.has("WEBGL_compressed_texture_s3tc"),bptcSupported:A.extensions.has("EXT_texture_compression_bptc"),pvrtcSupported:A.extensions.has("WEBGL_compressed_texture_pvrtc")||A.extensions.has("WEBKIT_WEBGL_compressed_texture_pvrtc")},this}init(){if(!this.transcoderPending){const A=new g.FileLoader(this.manager);A.setPath(this.transcoderPath),A.setWithCredentials(this.withCredentials);const e=A.loadAsync("basis_transcoder.js"),a=new g.FileLoader(this.manager);a.setPath(this.transcoderPath),a.setResponseType("arraybuffer"),a.setWithCredentials(this.withCredentials);const t=a.loadAsync("basis_transcoder.wasm");this.transcoderPending=Promise.all([e,t]).then(([i,s])=>{const o=z.BasisWorker.toString(),r=["/* constants */","let _EngineFormat = "+JSON.stringify(z.EngineFormat),"let _TranscoderFormat = "+JSON.stringify(z.TranscoderFormat),"let _BasisFormat = "+JSON.stringify(z.BasisFormat),"/* basis_transcoder.js */",i,"/* worker */",o.substring(o.indexOf("{")+1,o.lastIndexOf("}"))].join(`
|
|
3
|
-
`);this.workerSourceURL=URL.createObjectURL(new Blob([r])),this.transcoderBinary=s,this.workerPool.setWorkerCreator(()=>{const c=new Worker(this.workerSourceURL),B=this.transcoderBinary.slice(0);return c.postMessage({type:"init",config:this.workerConfig,transcoderBinary:B},[B]),c})}),uA>0&&console.warn("THREE.KTX2Loader: Multiple active KTX2 loaders may cause performance issues. Use a single KTX2Loader instance, or call .dispose() on old instances."),uA++}return this.transcoderPending}load(A,e,a,t){if(this.workerConfig===null)throw new Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");const i=new g.FileLoader(this.manager);i.setResponseType("arraybuffer"),i.setWithCredentials(this.withCredentials),i.load(A,s=>{this.parse(s,e,t)},a,t)}parse(A,e,a){if(this.workerConfig===null)throw new Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");if(pA.has(A))return pA.get(A).promise.then(e).catch(a);this._createTexture(A).then(t=>e?e(t):null).catch(a)}_createTextureFrom(A,e){const{faces:a,width:t,height:i,format:s,type:o,error:r,dfdFlags:c}=A;if(o==="error")return Promise.reject(r);let B;if(e.faceCount===6)B=new g.CompressedCubeTexture(a,s,g.UnsignedByteType);else{const I=a[0].mipmaps;B=e.layerCount>1?new g.CompressedArrayTexture(I,t,i,e.layerCount,s,g.UnsignedByteType):new g.CompressedTexture(I,t,i,s,g.UnsignedByteType)}return B.minFilter=a[0].mipmaps.length===1?g.LinearFilter:g.LinearMipmapLinearFilter,B.magFilter=g.LinearFilter,B.generateMipmaps=!1,B.needsUpdate=!0,B.colorSpace=Ee(e),B.premultiplyAlpha=!!(c&Ct),B}async _createTexture(A,e={}){const a=ht(new Uint8Array(A));if(a.vkFormat!==Qt)return mt(a);const t=e,i=this.init().then(()=>this.workerPool.postMessage({type:"transcode",buffer:A,taskConfig:t},[A])).then(s=>this._createTextureFrom(s.data,a));return pA.set(A,{promise:i}),i}dispose(){return this.workerPool.dispose(),this.workerSourceURL&&URL.revokeObjectURL(this.workerSourceURL),uA--,this}}z.BasisFormat={ETC1S:0,UASTC_4x4:1};z.TranscoderFormat={ETC1:0,ETC2:1,BC1:2,BC3:3,BC4:4,BC5:5,BC7_M6_OPAQUE_ONLY:6,BC7_M5:7,PVRTC1_4_RGB:8,PVRTC1_4_RGBA:9,ASTC_4x4:10,ATC_RGB:11,ATC_RGBA_INTERPOLATED_ALPHA:12,RGBA32:13,RGB565:14,BGR565:15,RGBA4444:16};z.EngineFormat={RGBAFormat:g.RGBAFormat,RGBA_ASTC_4x4_Format:g.RGBA_ASTC_4x4_Format,RGBA_BPTC_Format:g.RGBA_BPTC_Format,RGBA_ETC2_EAC_Format:g.RGBA_ETC2_EAC_Format,RGBA_PVRTC_4BPPV1_Format:g.RGBA_PVRTC_4BPPV1_Format,RGBA_S3TC_DXT5_Format:g.RGBA_S3TC_DXT5_Format,RGB_ETC1_Format:g.RGB_ETC1_Format,RGB_ETC2_Format:g.RGB_ETC2_Format,RGB_PVRTC_4BPPV1_Format:g.RGB_PVRTC_4BPPV1_Format,RGBA_S3TC_DXT1_Format:g.RGBA_S3TC_DXT1_Format};z.BasisWorker=function(){let n,A,e;const a=_EngineFormat,t=_TranscoderFormat,i=_BasisFormat;self.addEventListener("message",function(E){const h=E.data;switch(h.type){case"init":n=h.config,s(h.transcoderBinary);break;case"transcode":A.then(()=>{try{const{faces:u,buffers:Q,width:f,height:p,hasAlpha:m,format:F,dfdFlags:S}=o(h.buffer);self.postMessage({type:"transcode",id:h.id,faces:u,width:f,height:p,hasAlpha:m,format:F,dfdFlags:S},Q)}catch(u){console.error(u),self.postMessage({type:"error",id:h.id,error:u.message})}});break}});function s(E){A=new Promise(h=>{e={wasmBinary:E,onRuntimeInitialized:h},BASIS(e)}).then(()=>{e.initializeBasis(),e.KTX2File===void 0&&console.warn("THREE.KTX2Loader: Please update Basis Universal transcoder.")})}function o(E){const h=new e.KTX2File(new Uint8Array(E));function u(){h.close(),h.delete()}if(!h.isValid())throw u(),new Error("THREE.KTX2Loader: Invalid or unsupported .ktx2 file");const Q=h.isUASTC()?i.UASTC_4x4:i.ETC1S,f=h.getWidth(),p=h.getHeight(),m=h.getLayers()||1,F=h.getLevels(),S=h.getFaces(),x=h.getHasAlpha(),U=h.getDFDFlags(),{transcoderFormat:b,engineFormat:d}=I(Q,f,p,x);if(!f||!p||!F)throw u(),new Error("THREE.KTX2Loader: Invalid texture");if(!h.startTranscoding())throw u(),new Error("THREE.KTX2Loader: .startTranscoding failed");const w=[],R=[];for(let D=0;D<S;D++){const y=[];for(let k=0;k<F;k++){const L=[];let T,N;for(let K=0;K<m;K++){const $=h.getImageLevelInfo(k,K,D);D===0&&k===0&&K===0&&($.origWidth%4!==0||$.origHeight%4!==0)&&console.warn("THREE.KTX2Loader: ETC1S and UASTC textures should use multiple-of-four dimensions."),F>1?(T=$.origWidth,N=$.origHeight):(T=$.width,N=$.height);const iA=new Uint8Array(h.getImageTranscodedSizeInBytes(k,K,0,b));if(!h.transcodeImage(iA,k,K,D,b,0,-1,-1))throw u(),new Error("THREE.KTX2Loader: .transcodeImage failed.");L.push(iA)}const H=C(L);y.push({data:H,width:T,height:N}),R.push(H.buffer)}w.push({mipmaps:y,width:f,height:p,format:d})}return u(),{faces:w,buffers:R,width:f,height:p,hasAlpha:x,format:d,dfdFlags:U}}const r=[{if:"astcSupported",basisFormat:[i.UASTC_4x4],transcoderFormat:[t.ASTC_4x4,t.ASTC_4x4],engineFormat:[a.RGBA_ASTC_4x4_Format,a.RGBA_ASTC_4x4_Format],priorityETC1S:1/0,priorityUASTC:1,needsPowerOfTwo:!1},{if:"bptcSupported",basisFormat:[i.ETC1S,i.UASTC_4x4],transcoderFormat:[t.BC7_M5,t.BC7_M5],engineFormat:[a.RGBA_BPTC_Format,a.RGBA_BPTC_Format],priorityETC1S:3,priorityUASTC:2,needsPowerOfTwo:!1},{if:"dxtSupported",basisFormat:[i.ETC1S,i.UASTC_4x4],transcoderFormat:[t.BC1,t.BC3],engineFormat:[a.RGBA_S3TC_DXT1_Format,a.RGBA_S3TC_DXT5_Format],priorityETC1S:4,priorityUASTC:5,needsPowerOfTwo:!1},{if:"etc2Supported",basisFormat:[i.ETC1S,i.UASTC_4x4],transcoderFormat:[t.ETC1,t.ETC2],engineFormat:[a.RGB_ETC2_Format,a.RGBA_ETC2_EAC_Format],priorityETC1S:1,priorityUASTC:3,needsPowerOfTwo:!1},{if:"etc1Supported",basisFormat:[i.ETC1S,i.UASTC_4x4],transcoderFormat:[t.ETC1],engineFormat:[a.RGB_ETC1_Format],priorityETC1S:2,priorityUASTC:4,needsPowerOfTwo:!1},{if:"pvrtcSupported",basisFormat:[i.ETC1S,i.UASTC_4x4],transcoderFormat:[t.PVRTC1_4_RGB,t.PVRTC1_4_RGBA],engineFormat:[a.RGB_PVRTC_4BPPV1_Format,a.RGBA_PVRTC_4BPPV1_Format],priorityETC1S:5,priorityUASTC:6,needsPowerOfTwo:!0}],c=r.sort(function(E,h){return E.priorityETC1S-h.priorityETC1S}),B=r.sort(function(E,h){return E.priorityUASTC-h.priorityUASTC});function I(E,h,u,Q){let f,p;const m=E===i.ETC1S?c:B;for(let F=0;F<m.length;F++){const S=m[F];if(n[S.if]&&S.basisFormat.includes(E)&&!(Q&&S.transcoderFormat.length<2)&&!(S.needsPowerOfTwo&&!(l(h)&&l(u))))return f=S.transcoderFormat[Q?1:0],p=S.engineFormat[Q?1:0],{transcoderFormat:f,engineFormat:p}}return console.warn("THREE.KTX2Loader: No suitable compressed texture format found. Decoding to RGBA32."),f=t.RGBA32,p=a.RGBAFormat,{transcoderFormat:f,engineFormat:p}}function l(E){return E<=2?!0:(E&E-1)===0&&E!==0}function C(E){if(E.length===1)return E[0];let h=0;for(let f=0;f<E.length;f++){const p=E[f];h+=p.byteLength}const u=new Uint8Array(h);let Q=0;for(let f=0;f<E.length;f++){const p=E[f];u.set(p,Q),Q+=p.byteLength}return u}};const ut=new Set([g.RGBAFormat,g.RGFormat,g.RedFormat]),wA={[Ce]:g.RGBAFormat,[Ie]:g.RGBAFormat,[oe]:g.RGBAFormat,[re]:g.RGBAFormat,[le]:g.RGFormat,[ge]:g.RGFormat,[se]:g.RGFormat,[ne]:g.RGFormat,[Be]:g.RedFormat,[ce]:g.RedFormat,[ie]:g.RedFormat,[ae]:g.RedFormat,[fe]:g.RGBA_ASTC_6x6_Format,[be]:g.RGBA_ASTC_6x6_Format},DA={[Ce]:g.FloatType,[Ie]:g.HalfFloatType,[oe]:g.UnsignedByteType,[re]:g.UnsignedByteType,[le]:g.FloatType,[ge]:g.HalfFloatType,[se]:g.UnsignedByteType,[ne]:g.UnsignedByteType,[Be]:g.FloatType,[ce]:g.HalfFloatType,[ie]:g.UnsignedByteType,[ae]:g.UnsignedByteType,[fe]:g.UnsignedByteType,[be]:g.UnsignedByteType};async function mt(n){const{vkFormat:A}=n;if(wA[A]===void 0)throw new Error("THREE.KTX2Loader: Unsupported vkFormat.");let e;n.supercompressionScheme===zA&&(mA||(mA=new Promise(async i=>{const s=new pt;await s.init(),i(s)})),e=await mA);const a=[];for(let i=0;i<n.levels.length;i++){const s=Math.max(1,n.pixelWidth>>i),o=Math.max(1,n.pixelHeight>>i),r=n.pixelDepth?Math.max(1,n.pixelDepth>>i):0,c=n.levels[i];let B;if(n.supercompressionScheme===lt)B=c.levelData;else if(n.supercompressionScheme===zA)B=e.decode(c.levelData,c.uncompressedByteLength);else throw new Error("THREE.KTX2Loader: Unsupported supercompressionScheme.");let I;DA[A]===g.FloatType?I=new Float32Array(B.buffer,B.byteOffset,B.byteLength/Float32Array.BYTES_PER_ELEMENT):DA[A]===g.HalfFloatType?I=new Uint16Array(B.buffer,B.byteOffset,B.byteLength/Uint16Array.BYTES_PER_ELEMENT):I=B,a.push({data:I,width:s,height:o,depth:r})}let t;if(ut.has(wA[A]))t=n.pixelDepth===0?new g.DataTexture(a[0].data,n.pixelWidth,n.pixelHeight):new g.Data3DTexture(a[0].data,n.pixelWidth,n.pixelHeight,n.pixelDepth);else{if(n.pixelDepth>0)throw new Error("THREE.KTX2Loader: Unsupported pixelDepth.");t=new g.CompressedTexture(a,n.pixelWidth,n.pixelHeight)}return t.mipmaps=a,t.type=DA[A],t.format=wA[A],t.colorSpace=Ee(n),t.needsUpdate=!0,Promise.resolve(t)}function Ee(n){const A=n.dataFormatDescriptor[0];return A.colorPrimaries===ft?A.transferFunction===XA?g.SRGBColorSpace:g.LinearSRGBColorSpace:A.colorPrimaries===Et?A.transferFunction===XA?g.DisplayP3ColorSpace:g.LinearDisplayP3ColorSpace:(A.colorPrimaries===bt||console.warn(`THREE.KTX2Loader: Unsupported color primaries, "${A.colorPrimaries}"`),g.NoColorSpace)}var wt=function(){var n="b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuikqbeeedddillviebeoweuec:q;iekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbol79IV9Rbrq:P8Yqdbk;3sezu8Jjjjjbcj;eb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Radz1jjjbhwcj;abad9UhoaicefhldnadTmbaoc;WFbGgocjdaocjd6EhDcbhqinaqae9pmeaDaeaq9RaqaDfae6Egkcsfgocl4cifcd4hxdndndndnaoc9WGgmTmbcbhPcehsawcjdfhzalhHinaraH9Rax6midnaraHaxfgl9RcK6mbczhoinawcj;cbfaogifgoc9WfhOdndndndndnaHaic9WfgAco4fRbbaAci4coG4ciGPlbedibkaO9cb83ibaOcwf9cb83ibxikaOalRblalRbbgAco4gCaCciSgCE86bbaocGfalclfaCfgORbbaAcl4ciGgCaCciSgCE86bbaocVfaOaCfgORbbaAcd4ciGgCaCciSgCE86bbaoc7faOaCfgORbbaAciGgAaAciSgAE86bbaoctfaOaAfgARbbalRbegOco4gCaCciSgCE86bbaoc91faAaCfgARbbaOcl4ciGgCaCciSgCE86bbaoc4faAaCfgARbbaOcd4ciGgCaCciSgCE86bbaoc93faAaCfgARbbaOciGgOaOciSgOE86bbaoc94faAaOfgARbbalRbdgOco4gCaCciSgCE86bbaoc95faAaCfgARbbaOcl4ciGgCaCciSgCE86bbaoc96faAaCfgARbbaOcd4ciGgCaCciSgCE86bbaoc97faAaCfgARbbaOciGgOaOciSgOE86bbaoc98faAaOfgORbbalRbiglco4gAaAciSgAE86bbaoc99faOaAfgORbbalcl4ciGgAaAciSgAE86bbaoc9:faOaAfgORbbalcd4ciGgAaAciSgAE86bbaocufaOaAfgoRbbalciGglalciSglE86bbaoalfhlxdkaOalRbwalRbbgAcl4gCaCcsSgCE86bbaocGfalcwfaCfgORbbaAcsGgAaAcsSgAE86bbaocVfaOaAfgORbbalRbegAcl4gCaCcsSgCE86bbaoc7faOaCfgORbbaAcsGgAaAcsSgAE86bbaoctfaOaAfgORbbalRbdgAcl4gCaCcsSgCE86bbaoc91faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc4faOaAfgORbbalRbigAcl4gCaCcsSgCE86bbaoc93faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc94faOaAfgORbbalRblgAcl4gCaCcsSgCE86bbaoc95faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc96faOaAfgORbbalRbvgAcl4gCaCcsSgCE86bbaoc97faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc98faOaAfgORbbalRbogAcl4gCaCcsSgCE86bbaoc99faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc9:faOaAfgORbbalRbrglcl4gAaAcsSgAE86bbaocufaOaAfgoRbbalcsGglalcsSglE86bbaoalfhlxekaOal8Pbb83bbaOcwfalcwf8Pbb83bbalczfhlkdnaiam9pmbaiczfhoaral9RcL0mekkaiam6mialTmidnakTmbawaPfRbbhOcbhoazhiinaiawcj;cbfaofRbbgAce4cbaAceG9R7aOfgO86bbaiadfhiaocefgoak9hmbkkazcefhzaPcefgPad6hsalhHaPad9hmexvkkcbhlasceGmdxikalaxad2fhCdnakTmbcbhHcehsawcjdfhminaral9Rax6mialTmdalaxfhlawaHfRbbhOcbhoamhiinaiawcj;cbfaofRbbgAce4cbaAceG9R7aOfgO86bbaiadfhiaocefgoak9hmbkamcefhmaHcefgHad6hsaHad9hmbkaChlxikcbhocehsinaral9Rax6mdalTmealaxfhlaocefgoad6hsadao9hmbkaChlxdkcbhlasceGTmekc9:hoxikabaqad2fawcjdfakad2z1jjjb8Aawawcjdfakcufad2fadz1jjjb8Aakaqfhqalmbkc9:hoxekcbc99aral9Radcaadca0ESEhokavcj;ebf8Kjjjjbaok;yzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecjez:jjjjb8AavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhDcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgrc;Ve0mbavc;abfalarcl4cu7fcsGcitfgPydlhsaPydbhzdnarcsGgPak9pmbavaiarcu7fcsGcdtfydbaxaPEhraPThPdndnadcd9hmbabaDcetfgHaz87ebaHcdfas87ebaHclfar87ebxekabaDcdtfgHazBdbaHclfasBdbaHcwfarBdbkaxaPfhxavc;abfalcitfgHarBdbaHasBdlavaicdtfarBdbavc;abfalcefcsGglcitfgHazBdbaHarBdlaiaPfhialcefhlxdkdndnaPcsSmbamaPfaPc987fcefhmxekaocefhrao8SbbgPcFeGhHdndnaPcu9mmbarhoxekaocvfhoaHcFbGhHcrhPdninar8SbbgOcFbGaPtaHVhHaOcu9kmearcefhraPcrfgPc8J9hmbxdkkarcefhokaHce4cbaHceG9R7amfhmkdndnadcd9hmbabaDcetfgraz87ebarcdfas87ebarclfam87ebxekabaDcdtfgrazBdbarclfasBdbarcwfamBdbkavc;abfalcitfgramBdbarasBdlavaicdtfamBdbavc;abfalcefcsGglcitfgrazBdbaramBdlaicefhialcefhlxekdnarcpe0mbaxcefgOavaiaqarcsGfRbbgPcl49RcsGcdtfydbaPcz6gHEhravaiaP9RcsGcdtfydbaOaHfgsaPcsGgOEhPaOThOdndnadcd9hmbabaDcetfgzax87ebazcdfar87ebazclfaP87ebxekabaDcdtfgzaxBdbazclfarBdbazcwfaPBdbkavaicdtfaxBdbavc;abfalcitfgzarBdbazaxBdlavaicefgicsGcdtfarBdbavc;abfalcefcsGcitfgzaPBdbazarBdlavaiaHfcsGgicdtfaPBdbavc;abfalcdfcsGglcitfgraxBdbaraPBdlalcefhlaiaOfhiasaOfhxxekaxcbaoRbbgzEgAarc;:eSgrfhsazcsGhCazcl4hXdndnazcs0mbascefhOxekashOavaiaX9RcsGcdtfydbhskdndnaCmbaOcefhxxekaOhxavaiaz9RcsGcdtfydbhOkdndnarTmbaocefhrxekaocdfhrao8SbegHcFeGhPdnaHcu9kmbaocofhAaPcFbGhPcrhodninar8SbbgHcFbGaotaPVhPaHcu9kmearcefhraocrfgoc8J9hmbkaAhrxekarcefhrkaPce4cbaPceG9R7amfgmhAkdndnaXcsSmbarhPxekarcefhPar8SbbgocFeGhHdnaocu9kmbarcvfhsaHcFbGhHcrhodninaP8SbbgrcFbGaotaHVhHarcu9kmeaPcefhPaocrfgoc8J9hmbkashPxekaPcefhPkaHce4cbaHceG9R7amfgmhskdndnaCcsSmbaPhoxekaPcefhoaP8SbbgrcFeGhHdnarcu9kmbaPcvfhOaHcFbGhHcrhrdninao8SbbgPcFbGartaHVhHaPcu9kmeaocefhoarcrfgrc8J9hmbkaOhoxekaocefhokaHce4cbaHceG9R7amfgmhOkdndnadcd9hmbabaDcetfgraA87ebarcdfas87ebarclfaO87ebxekabaDcdtfgraABdbarclfasBdbarcwfaOBdbkavc;abfalcitfgrasBdbaraABdlavaicdtfaABdbavc;abfalcefcsGcitfgraOBdbarasBdlavaicefgicsGcdtfasBdbavc;abfalcdfcsGcitfgraABdbaraOBdlavaiazcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiaDcifgDae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:llevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:Lvoeue99dud99eud99dndnadcl9hmbaeTmeindndnabcdfgd8Sbb:Yab8Sbbgi:Ygl:l:tabcefgv8Sbbgo:Ygr:l:tgwJbb;:9cawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai86bbdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad86bbdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad86bbabclfhbaecufgembxdkkaeTmbindndnabclfgd8Ueb:Yab8Uebgi:Ygl:l:tabcdfgv8Uebgo:Ygr:l:tgwJb;:FSawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai87ebdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad87ebdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad87ebabcwfhbaecufgembkkk;siliui99iue99dnaeTmbcbhiabhlindndnJ;Zl81Zalcof8UebgvciV:Y:vgoal8Ueb:YNgrJb;:FSNJbbbZJbbb:;arJbbbb9GEMgw:lJbbb9p9DTmbaw:OhDxekcjjjj94hDkalclf8Uebhqalcdf8UebhkabavcefciGaiVcetfaD87ebdndnaoak:YNgwJb;:FSNJbbbZJbbb:;awJbbbb9GEMgx:lJbbb9p9DTmbax:Ohkxekcjjjj94hkkabavcdfciGaiVcetfak87ebdndnaoaq:YNgoJb;:FSNJbbbZJbbb:;aoJbbbb9GEMgx:lJbbb9p9DTmbax:Ohqxekcjjjj94hqkabavcufciGaiVcetfaq87ebdndnJbbjZararN:tawawN:taoaoN:tgrJbbbbarJbbbb9GE:rJb;:FSNJbbbZMgr:lJbbb9p9DTmbar:Ohqxekcjjjj94hqkabavciGaiVcetfaq87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2geTmbinababydbgdcwtcw91:Yadce91cjjj;8ifcjjj98G::NUdbabclfhbaecufgembkkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaiczfhiaeczfheadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkkkebcjwklz9Kbb",A="b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuikqbbebeedddilve9Weeeviebeoweuec:q;Aekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbwl79IV9RbDq;t9tqlbzik9:evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaec:q:yjjbfai86bbaecitc:q1jjbfab8Piw83ibaecefgecjd9hmbkk;h8JlHud97euo978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Rad;8qbbcj;abad9UhoaicefhldnadTmbaoc;WFbGgocjdaocjd6EhwcbhDinaDae9pmeawaeaD9RaDawfae6Egqcsfgoc9WGgkci2hxakcethmaocl4cifcd4hPabaDad2fhscbhzdnincehHalhOcbhAdninaraO9RaP6miavcj;cbfaAak2fhCaOaPfhlcbhidnakc;ab6mbaral9Rc;Gb6mbcbhoinaCaofhidndndndndnaOaoco4fRbbgXciGPlbedibkaipxbbbbbbbbbbbbbbbbpklbxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklbalczfhlkdndndndndnaXcd4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklzxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklzalczfhlkdndndndndnaXcl4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklaxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklaalczfhlkdndndndndnaXco4Plbedibkaipxbbbbbbbbbbbbbbbbpkl8WxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalclfaYpQbfaXc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalcwfaYpQbfaXc:q:yjjbfRbbfhlxekaialpbbbpkl8Walczfhlkaoc;abfhiaocjefak0meaihoaral9Rc;Fb0mbkkdndnaiak9pmbaici4hoinaral9RcK6mdaCaifhXdndndndndnaOaico4fRbbaocoG4ciGPlbedibkaXpxbbbbbbbbbbbbbbbbpklbxikaXalpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaXalpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaXalpbbbpklbalczfhlkaocdfhoaiczfgiak6mbkkalTmbaAci6hHalhOaAcefgohAaoclSmdxekkcbhlaHceGmdkdnakTmbavcjdfazfhiavazfpbdbhYcbhXinaiavcj;cbfaXfgopblbgLcep9TaLpxeeeeeeeeeeeeeeeegQp9op9Hp9rgLaoakfpblbg8Acep9Ta8AaQp9op9Hp9rg8ApmbzeHdOiAlCvXoQrLgEaoamfpblbg3cep9Ta3aQp9op9Hp9rg3aoaxfpblbg5cep9Ta5aQp9op9Hp9rg5pmbzeHdOiAlCvXoQrLg8EpmbezHdiOAlvCXorQLgQaQpmbedibedibedibediaYp9UgYp9AdbbaiadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaEa8EpmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwKDYq8AkEx3m5P8Es8FgLa3a5pmwKDYq8AkEx3m5P8Es8Fg8ApmbezHdiOAlvCXorQLgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfhiaXczfgXak6mbkkazclfgzad6mbkasavcjdfaqad2;8qbbavavcjdfaqcufad2fad;8qbbaqaDfhDc9:hoalmexikkc9:hoxekcbc99aral9Radcaadca0ESEhokavcj;kbf8Kjjjjbaokwbz:bjjjbk;uzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecje;8kbavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhDcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgrc;Ve0mbavc;abfalarcl4cu7fcsGcitfgPydlhsaPydbhzdnarcsGgPak9pmbavaiarcu7fcsGcdtfydbaxaPEhraPThPdndnadcd9hmbabaDcetfgHaz87ebaHcdfas87ebaHclfar87ebxekabaDcdtfgHazBdbaHclfasBdbaHcwfarBdbkaxaPfhxavc;abfalcitfgHarBdbaHasBdlavaicdtfarBdbavc;abfalcefcsGglcitfgHazBdbaHarBdlaiaPfhialcefhlxdkdndnaPcsSmbamaPfaPc987fcefhmxekaocefhrao8SbbgPcFeGhHdndnaPcu9mmbarhoxekaocvfhoaHcFbGhHcrhPdninar8SbbgOcFbGaPtaHVhHaOcu9kmearcefhraPcrfgPc8J9hmbxdkkarcefhokaHce4cbaHceG9R7amfhmkdndnadcd9hmbabaDcetfgraz87ebarcdfas87ebarclfam87ebxekabaDcdtfgrazBdbarclfasBdbarcwfamBdbkavc;abfalcitfgramBdbarasBdlavaicdtfamBdbavc;abfalcefcsGglcitfgrazBdbaramBdlaicefhialcefhlxekdnarcpe0mbaxcefgOavaiaqarcsGfRbbgPcl49RcsGcdtfydbaPcz6gHEhravaiaP9RcsGcdtfydbaOaHfgsaPcsGgOEhPaOThOdndnadcd9hmbabaDcetfgzax87ebazcdfar87ebazclfaP87ebxekabaDcdtfgzaxBdbazclfarBdbazcwfaPBdbkavaicdtfaxBdbavc;abfalcitfgzarBdbazaxBdlavaicefgicsGcdtfarBdbavc;abfalcefcsGcitfgzaPBdbazarBdlavaiaHfcsGgicdtfaPBdbavc;abfalcdfcsGglcitfgraxBdbaraPBdlalcefhlaiaOfhiasaOfhxxekaxcbaoRbbgzEgAarc;:eSgrfhsazcsGhCazcl4hXdndnazcs0mbascefhOxekashOavaiaX9RcsGcdtfydbhskdndnaCmbaOcefhxxekaOhxavaiaz9RcsGcdtfydbhOkdndnarTmbaocefhrxekaocdfhrao8SbegHcFeGhPdnaHcu9kmbaocofhAaPcFbGhPcrhodninar8SbbgHcFbGaotaPVhPaHcu9kmearcefhraocrfgoc8J9hmbkaAhrxekarcefhrkaPce4cbaPceG9R7amfgmhAkdndnaXcsSmbarhPxekarcefhPar8SbbgocFeGhHdnaocu9kmbarcvfhsaHcFbGhHcrhodninaP8SbbgrcFbGaotaHVhHarcu9kmeaPcefhPaocrfgoc8J9hmbkashPxekaPcefhPkaHce4cbaHceG9R7amfgmhskdndnaCcsSmbaPhoxekaPcefhoaP8SbbgrcFeGhHdnarcu9kmbaPcvfhOaHcFbGhHcrhrdninao8SbbgPcFbGartaHVhHaPcu9kmeaocefhoarcrfgrc8J9hmbkaOhoxekaocefhokaHce4cbaHceG9R7amfgmhOkdndnadcd9hmbabaDcetfgraA87ebarcdfas87ebarclfaO87ebxekabaDcdtfgraABdbarclfasBdbarcwfaOBdbkavc;abfalcitfgrasBdbaraABdlavaicdtfaABdbavc;abfalcefcsGcitfgraOBdbarasBdlavaicefgicsGcdtfasBdbavc;abfalcdfcsGcitfgraABdbaraOBdlavaiazcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiaDcifgDae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:llevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:EPliuo97eue978Jjjjjbca9Rhidndnadcl9hmbdnaec98GglTmbcbhvabhdinadadpbbbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbadczfhdavclfgval6mbkkalae9pmeaiaeciGgvcdtgdVcbczad9R;8kbaiabalcdtfglad;8qbbdnavTmbaiaipblbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpklbkalaiad;8qbbskdnaec98GgxTmbcbhvabhdinadczfglalpbbbgopxbbbbbbFFbbbbbbFFgkp9oadpbbbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpkbbadaDakp9oawaopmbezHdiOAlvCXorQLp9qpkbbadcafhdavclfgvax6mbkkaxae9pmbaiaeciGgvcitgdfcbcaad9R;8kbaiabaxcitfglad;8qbbdnavTmbaiaipblzgopxbbbbbbFFbbbbbbFFgkp9oaipblbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpklzaiaDakp9oawaopmbezHdiOAlvCXorQLp9qpklbkalaiad;8qbbkk;4wllue97euv978Jjjjjbc8W9Rhidnaec98GglTmbcbhvabhoinaiaopbbbgraoczfgwpbbbgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklbaopxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblbpEb:T:j83ibaocwfarp5eaipblbpEe:T:j83ibawaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblbpEd:T:j83ibaocKfakp5eaipblbpEi:T:j83ibaocafhoavclfgval6mbkkdnalae9pmbaiaeciGgvcitgofcbcaao9R;8kbaiabalcitfgwao;8qbbdnavTmbaiaipblbgraipblzgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklaaipxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblapEb:T:j83ibaiarp5eaipblapEe:T:j83iwaiaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblapEd:T:j83izaiakp5eaipblapEi:T:j83iKkawaiao;8qbbkk:Pddiue978Jjjjjbc;ab9Rhidnadcd4ae2glc98GgvTmbcbhdabheinaeaepbbbgocwp:Recwp:Sep;6eaocep:SepxbbjZbbjZbbjZbbjZp:UepxbbjFbbjFbbjFbbjFp9op;Mepkbbaeczfheadclfgdav6mbkkdnaval9pmbaialciGgdcdtgeVcbc;abae9R;8kbaiabavcdtfgvae;8qbbdnadTmbaiaipblbgocwp:Recwp:Sep;6eaocep:SepxbbjZbbjZbbjZbbjZp:UepxbbjFbbjFbbjFbbjFp9op;Mepklbkavaiae;8qbbkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkkebcjwklz9Tbb",e=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]),a=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var t=WebAssembly.validate(e)?A:n,i,s=WebAssembly.instantiate(o(t),{}).then(function(Q){i=Q.instance,i.exports.__wasm_call_ctors()});function o(Q){for(var f=new Uint8Array(Q.length),p=0;p<Q.length;++p){var m=Q.charCodeAt(p);f[p]=m>96?m-97:m>64?m-39:m+4}for(var F=0,p=0;p<Q.length;++p)f[F++]=f[p]<60?a[f[p]]:(f[p]-60)*64+f[++p];return f.buffer.slice(0,F)}function r(Q,f,p,m,F,S){var x=i.exports.sbrk,U=p+3&-4,b=x(U*m),d=x(F.length),w=new Uint8Array(i.exports.memory.buffer);w.set(F,d);var R=Q(b,p,m,d,F.length);if(R==0&&S&&S(b,U,m),f.set(w.subarray(b,b+p*m)),x(b-x(0)),R!=0)throw new Error("Malformed buffer data: "+R)}var c={NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},B={ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"},I=[],l=0;function C(Q){var f={object:new Worker(Q),pending:0,requests:{}};return f.object.onmessage=function(p){var m=p.data;f.pending-=m.count,f.requests[m.id][m.action](m.value),delete f.requests[m.id]},f}function E(Q){for(var f="var instance; var ready = WebAssembly.instantiate(new Uint8Array(["+new Uint8Array(o(t))+"]), {}).then(function(result) { instance = result.instance; instance.exports.__wasm_call_ctors(); });self.onmessage = workerProcess;"+r.toString()+u.toString(),p=new Blob([f],{type:"text/javascript"}),m=URL.createObjectURL(p),F=0;F<Q;++F)I[F]=C(m);URL.revokeObjectURL(m)}function h(Q,f,p,m,F){for(var S=I[0],x=1;x<I.length;++x)I[x].pending<S.pending&&(S=I[x]);return new Promise(function(U,b){var d=new Uint8Array(p),w=l++;S.pending+=Q,S.requests[w]={resolve:U,reject:b},S.object.postMessage({id:w,count:Q,size:f,source:d,mode:m,filter:F},[d.buffer])})}function u(Q){s.then(function(){var f=Q.data;try{var p=new Uint8Array(f.count*f.size);r(i.exports[f.mode],p,f.count,f.size,f.source,i.exports[f.filter]),self.postMessage({id:f.id,count:f.count,action:"resolve",value:p},[p.buffer])}catch(m){self.postMessage({id:f.id,count:f.count,action:"reject",value:m})}})}return{ready:s,supported:!0,useWorkers:function(Q){E(Q)},decodeVertexBuffer:function(Q,f,p,m,F){r(i.exports.meshopt_decodeVertexBuffer,Q,f,p,m,i.exports[c[F]])},decodeIndexBuffer:function(Q,f,p,m){r(i.exports.meshopt_decodeIndexBuffer,Q,f,p,m)},decodeIndexSequence:function(Q,f,p,m){r(i.exports.meshopt_decodeIndexSequence,Q,f,p,m)},decodeGltfBuffer:function(Q,f,p,m,F,S){r(i.exports[B[F]],Q,f,p,m,i.exports[c[S]])},decodeGltfBufferAsync:function(Q,f,p,m,F){return I.length>0?h(Q,f,p,B[m],c[F]):s.then(function(){var S=new Uint8Array(Q*f);return r(i.exports[B[m]],S,Q,f,p,i.exports[c[F]]),S})}}}();function MA(){const n=new gt;n.setDecoderPath("/draco/");const A=new z;A.setTranscoderPath("/draco/");const e=new Se().setDRACOLoader(n).setKTX2Loader(A.detectSupport(new g.WebGLRenderer)).setMeshoptDecoder(wt);return e.manager.onError=a=>{W.emit("load-error",`Failed to load file ${a}`)},e}/*!
|
|
1
|
+
"use strict";const Re=require("react/jsx-runtime"),q=require("react"),g=require("three"),sA={},W={emit(n,A){const e=sA[n];e&&e.forEach(a=>a(A))},on(n,A){sA[n]||(sA[n]=[]),sA[n].push(A)},off(n,A){const e=sA[n];e&&(sA[n]=e.filter(a=>a!==A))}};var O=(n=>(n.gltf="gltf",n.glb="glb",n.usdz="usdz",n))(O||{});const Ae={file:null,isFileLoading:!1,progress:0,supportedFileTypes:Object.values(O)};function Fe(n,A){switch(A.type){case"set-file":return{...n,file:A.payload};case"set-file-loading":return{...n,isFileLoading:A.payload};case"set-progress":return{...n,progress:A.payload};case"reset-state":return{...Ae};default:return n}}async function KA(n){const A=new Blob([n]),e=new FileReader;return new Promise((a,t)=>{e.onloadend=()=>{if(!(e!=null&&e.result))return;const i=(e==null?void 0:e.result).split(",")[1];a(i)},e.onerror=t,e.readAsDataURL(A)})}async function ke(n){const A=[];async function*e(a){for await(const[,t]of a)t.kind==="file"?yield await t.getFile():t.kind==="directory"&&(yield*e(t))}for await(const a of e(n))A.push(a);return A}function PA(n,A){if(A===g.TrianglesDrawMode)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),n;if(A===g.TriangleFanDrawMode||A===g.TriangleStripDrawMode){let e=n.getIndex();if(e===null){const s=[],o=n.getAttribute("position");if(o!==void 0){for(let r=0;r<o.count;r++)s.push(r);n.setIndex(s),e=n.getIndex()}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),n}const a=e.count-2,t=[];if(A===g.TriangleFanDrawMode)for(let s=1;s<=a;s++)t.push(e.getX(0)),t.push(e.getX(s)),t.push(e.getX(s+1));else for(let s=0;s<a;s++)s%2===0?(t.push(e.getX(s)),t.push(e.getX(s+1)),t.push(e.getX(s+2))):(t.push(e.getX(s+2)),t.push(e.getX(s+1)),t.push(e.getX(s)));t.length/3!==a&&console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");const i=n.clone();return i.setIndex(t),i.clearGroups(),i}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:",A),n}class Se extends g.Loader{constructor(A){super(A),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(e){return new Te(e)}),this.register(function(e){return new Me(e)}),this.register(function(e){return new Ke(e)}),this.register(function(e){return new Pe(e)}),this.register(function(e){return new Je(e)}),this.register(function(e){return new Ne(e)}),this.register(function(e){return new _e(e)}),this.register(function(e){return new qe(e)}),this.register(function(e){return new He(e)}),this.register(function(e){return new Le(e)}),this.register(function(e){return new Oe(e)}),this.register(function(e){return new Ue(e)}),this.register(function(e){return new je(e)}),this.register(function(e){return new ve(e)}),this.register(function(e){return new Ge(e)}),this.register(function(e){return new Ye(e)}),this.register(function(e){return new We(e)})}load(A,e,a,t){const i=this;let s;if(this.resourcePath!=="")s=this.resourcePath;else if(this.path!==""){const c=g.LoaderUtils.extractUrlBase(A);s=g.LoaderUtils.resolveURL(c,this.path)}else s=g.LoaderUtils.extractUrlBase(A);this.manager.itemStart(A);const o=function(c){t?t(c):console.error(c),i.manager.itemError(A),i.manager.itemEnd(A)},r=new g.FileLoader(this.manager);r.setPath(this.path),r.setResponseType("arraybuffer"),r.setRequestHeader(this.requestHeader),r.setWithCredentials(this.withCredentials),r.load(A,function(c){try{i.parse(c,s,function(B){e(B),i.manager.itemEnd(A)},o)}catch(B){o(B)}},a,o)}setDRACOLoader(A){return this.dracoLoader=A,this}setDDSLoader(){throw new Error('THREE.GLTFLoader: "MSFT_texture_dds" no longer supported. Please update to "KHR_texture_basisu".')}setKTX2Loader(A){return this.ktx2Loader=A,this}setMeshoptDecoder(A){return this.meshoptDecoder=A,this}register(A){return this.pluginCallbacks.indexOf(A)===-1&&this.pluginCallbacks.push(A),this}unregister(A){return this.pluginCallbacks.indexOf(A)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(A),1),this}parse(A,e,a,t){let i;const s={},o={},r=new TextDecoder;if(typeof A=="string")i=JSON.parse(A);else if(A instanceof ArrayBuffer)if(r.decode(new Uint8Array(A,0,4))===ee){try{s[G.KHR_BINARY_GLTF]=new Ve(A)}catch(I){t&&t(I);return}i=JSON.parse(s[G.KHR_BINARY_GLTF].content)}else i=JSON.parse(r.decode(A));else i=A;if(i.asset===void 0||i.asset.version[0]<2){t&&t(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));return}const c=new rt(i,{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 B=0;B<this.pluginCallbacks.length;B++){const I=this.pluginCallbacks[B](c);I.name||console.error("THREE.GLTFLoader: Invalid plugin found: missing name"),o[I.name]=I,s[I.name]=!0}if(i.extensionsUsed)for(let B=0;B<i.extensionsUsed.length;++B){const I=i.extensionsUsed[B],l=i.extensionsRequired||[];switch(I){case G.KHR_MATERIALS_UNLIT:s[I]=new xe;break;case G.KHR_DRACO_MESH_COMPRESSION:s[I]=new ze(i,this.dracoLoader);break;case G.KHR_TEXTURE_TRANSFORM:s[I]=new Xe;break;case G.KHR_MESH_QUANTIZATION:s[I]=new Ze;break;default:l.indexOf(I)>=0&&o[I]===void 0&&console.warn('THREE.GLTFLoader: Unknown extension "'+I+'".')}}c.setExtensions(s),c.setPlugins(o),c.parse(a,t)}parseAsync(A,e){const a=this;return new Promise(function(t,i){a.parse(A,e,t,i)})}}function ye(){let n={};return{get:function(A){return n[A]},add:function(A,e){n[A]=e},remove:function(A){delete n[A]},removeAll:function(){n={}}}}const G={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_DISPERSION:"KHR_materials_dispersion",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_IRIDESCENCE:"KHR_materials_iridescence",KHR_MATERIALS_ANISOTROPY:"KHR_materials_anisotropy",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",KHR_MATERIALS_EMISSIVE_STRENGTH:"KHR_materials_emissive_strength",EXT_MATERIALS_BUMP:"EXT_materials_bump",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_TEXTURE_AVIF:"EXT_texture_avif",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"};class Ge{constructor(A){this.parser=A,this.name=G.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){const A=this.parser,e=this.parser.json.nodes||[];for(let a=0,t=e.length;a<t;a++){const i=e[a];i.extensions&&i.extensions[this.name]&&i.extensions[this.name].light!==void 0&&A._addNodeRef(this.cache,i.extensions[this.name].light)}}_loadLight(A){const e=this.parser,a="light:"+A;let t=e.cache.get(a);if(t)return t;const i=e.json,r=((i.extensions&&i.extensions[this.name]||{}).lights||[])[A];let c;const B=new g.Color(16777215);r.color!==void 0&&B.setRGB(r.color[0],r.color[1],r.color[2],g.LinearSRGBColorSpace);const I=r.range!==void 0?r.range:0;switch(r.type){case"directional":c=new g.DirectionalLight(B),c.target.position.set(0,0,-1),c.add(c.target);break;case"point":c=new g.PointLight(B),c.distance=I;break;case"spot":c=new g.SpotLight(B),c.distance=I,r.spot=r.spot||{},r.spot.innerConeAngle=r.spot.innerConeAngle!==void 0?r.spot.innerConeAngle:0,r.spot.outerConeAngle=r.spot.outerConeAngle!==void 0?r.spot.outerConeAngle:Math.PI/4,c.angle=r.spot.outerConeAngle,c.penumbra=1-r.spot.innerConeAngle/r.spot.outerConeAngle,c.target.position.set(0,0,-1),c.add(c.target);break;default:throw new Error("THREE.GLTFLoader: Unexpected light type: "+r.type)}return c.position.set(0,0,0),c.decay=2,Z(c,r),r.intensity!==void 0&&(c.intensity=r.intensity),c.name=e.createUniqueName(r.name||"light_"+A),t=Promise.resolve(c),e.cache.add(a,t),t}getDependency(A,e){if(A==="light")return this._loadLight(e)}createNodeAttachment(A){const e=this,a=this.parser,i=a.json.nodes[A],o=(i.extensions&&i.extensions[this.name]||{}).light;return o===void 0?null:this._loadLight(o).then(function(r){return a._getNodeRef(e.cache,o,r)})}}class xe{constructor(){this.name=G.KHR_MATERIALS_UNLIT}getMaterialType(){return g.MeshBasicMaterial}extendParams(A,e,a){const t=[];A.color=new g.Color(1,1,1),A.opacity=1;const i=e.pbrMetallicRoughness;if(i){if(Array.isArray(i.baseColorFactor)){const s=i.baseColorFactor;A.color.setRGB(s[0],s[1],s[2],g.LinearSRGBColorSpace),A.opacity=s[3]}i.baseColorTexture!==void 0&&t.push(a.assignTexture(A,"map",i.baseColorTexture,g.SRGBColorSpace))}return Promise.all(t)}}class Le{constructor(A){this.parser=A,this.name=G.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(A,e){const t=this.parser.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const i=t.extensions[this.name].emissiveStrength;return i!==void 0&&(e.emissiveIntensity=i),Promise.resolve()}}class Te{constructor(A){this.parser=A,this.name=G.KHR_MATERIALS_CLEARCOAT}getMaterialType(A){const a=this.parser.json.materials[A];return!a.extensions||!a.extensions[this.name]?null:g.MeshPhysicalMaterial}extendMaterialParams(A,e){const a=this.parser,t=a.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const i=[],s=t.extensions[this.name];if(s.clearcoatFactor!==void 0&&(e.clearcoat=s.clearcoatFactor),s.clearcoatTexture!==void 0&&i.push(a.assignTexture(e,"clearcoatMap",s.clearcoatTexture)),s.clearcoatRoughnessFactor!==void 0&&(e.clearcoatRoughness=s.clearcoatRoughnessFactor),s.clearcoatRoughnessTexture!==void 0&&i.push(a.assignTexture(e,"clearcoatRoughnessMap",s.clearcoatRoughnessTexture)),s.clearcoatNormalTexture!==void 0&&(i.push(a.assignTexture(e,"clearcoatNormalMap",s.clearcoatNormalTexture)),s.clearcoatNormalTexture.scale!==void 0)){const o=s.clearcoatNormalTexture.scale;e.clearcoatNormalScale=new g.Vector2(o,o)}return Promise.all(i)}}class Me{constructor(A){this.parser=A,this.name=G.KHR_MATERIALS_DISPERSION}getMaterialType(A){const a=this.parser.json.materials[A];return!a.extensions||!a.extensions[this.name]?null:g.MeshPhysicalMaterial}extendMaterialParams(A,e){const t=this.parser.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const i=t.extensions[this.name];return e.dispersion=i.dispersion!==void 0?i.dispersion:0,Promise.resolve()}}class Ue{constructor(A){this.parser=A,this.name=G.KHR_MATERIALS_IRIDESCENCE}getMaterialType(A){const a=this.parser.json.materials[A];return!a.extensions||!a.extensions[this.name]?null:g.MeshPhysicalMaterial}extendMaterialParams(A,e){const a=this.parser,t=a.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const i=[],s=t.extensions[this.name];return s.iridescenceFactor!==void 0&&(e.iridescence=s.iridescenceFactor),s.iridescenceTexture!==void 0&&i.push(a.assignTexture(e,"iridescenceMap",s.iridescenceTexture)),s.iridescenceIor!==void 0&&(e.iridescenceIOR=s.iridescenceIor),e.iridescenceThicknessRange===void 0&&(e.iridescenceThicknessRange=[100,400]),s.iridescenceThicknessMinimum!==void 0&&(e.iridescenceThicknessRange[0]=s.iridescenceThicknessMinimum),s.iridescenceThicknessMaximum!==void 0&&(e.iridescenceThicknessRange[1]=s.iridescenceThicknessMaximum),s.iridescenceThicknessTexture!==void 0&&i.push(a.assignTexture(e,"iridescenceThicknessMap",s.iridescenceThicknessTexture)),Promise.all(i)}}class Ne{constructor(A){this.parser=A,this.name=G.KHR_MATERIALS_SHEEN}getMaterialType(A){const a=this.parser.json.materials[A];return!a.extensions||!a.extensions[this.name]?null:g.MeshPhysicalMaterial}extendMaterialParams(A,e){const a=this.parser,t=a.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const i=[];e.sheenColor=new g.Color(0,0,0),e.sheenRoughness=0,e.sheen=1;const s=t.extensions[this.name];if(s.sheenColorFactor!==void 0){const o=s.sheenColorFactor;e.sheenColor.setRGB(o[0],o[1],o[2],g.LinearSRGBColorSpace)}return s.sheenRoughnessFactor!==void 0&&(e.sheenRoughness=s.sheenRoughnessFactor),s.sheenColorTexture!==void 0&&i.push(a.assignTexture(e,"sheenColorMap",s.sheenColorTexture,g.SRGBColorSpace)),s.sheenRoughnessTexture!==void 0&&i.push(a.assignTexture(e,"sheenRoughnessMap",s.sheenRoughnessTexture)),Promise.all(i)}}class _e{constructor(A){this.parser=A,this.name=G.KHR_MATERIALS_TRANSMISSION}getMaterialType(A){const a=this.parser.json.materials[A];return!a.extensions||!a.extensions[this.name]?null:g.MeshPhysicalMaterial}extendMaterialParams(A,e){const a=this.parser,t=a.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const i=[],s=t.extensions[this.name];return s.transmissionFactor!==void 0&&(e.transmission=s.transmissionFactor),s.transmissionTexture!==void 0&&i.push(a.assignTexture(e,"transmissionMap",s.transmissionTexture)),Promise.all(i)}}class qe{constructor(A){this.parser=A,this.name=G.KHR_MATERIALS_VOLUME}getMaterialType(A){const a=this.parser.json.materials[A];return!a.extensions||!a.extensions[this.name]?null:g.MeshPhysicalMaterial}extendMaterialParams(A,e){const a=this.parser,t=a.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const i=[],s=t.extensions[this.name];e.thickness=s.thicknessFactor!==void 0?s.thicknessFactor:0,s.thicknessTexture!==void 0&&i.push(a.assignTexture(e,"thicknessMap",s.thicknessTexture)),e.attenuationDistance=s.attenuationDistance||1/0;const o=s.attenuationColor||[1,1,1];return e.attenuationColor=new g.Color().setRGB(o[0],o[1],o[2],g.LinearSRGBColorSpace),Promise.all(i)}}class He{constructor(A){this.parser=A,this.name=G.KHR_MATERIALS_IOR}getMaterialType(A){const a=this.parser.json.materials[A];return!a.extensions||!a.extensions[this.name]?null:g.MeshPhysicalMaterial}extendMaterialParams(A,e){const t=this.parser.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const i=t.extensions[this.name];return e.ior=i.ior!==void 0?i.ior:1.5,Promise.resolve()}}class Oe{constructor(A){this.parser=A,this.name=G.KHR_MATERIALS_SPECULAR}getMaterialType(A){const a=this.parser.json.materials[A];return!a.extensions||!a.extensions[this.name]?null:g.MeshPhysicalMaterial}extendMaterialParams(A,e){const a=this.parser,t=a.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const i=[],s=t.extensions[this.name];e.specularIntensity=s.specularFactor!==void 0?s.specularFactor:1,s.specularTexture!==void 0&&i.push(a.assignTexture(e,"specularIntensityMap",s.specularTexture));const o=s.specularColorFactor||[1,1,1];return e.specularColor=new g.Color().setRGB(o[0],o[1],o[2],g.LinearSRGBColorSpace),s.specularColorTexture!==void 0&&i.push(a.assignTexture(e,"specularColorMap",s.specularColorTexture,g.SRGBColorSpace)),Promise.all(i)}}class ve{constructor(A){this.parser=A,this.name=G.EXT_MATERIALS_BUMP}getMaterialType(A){const a=this.parser.json.materials[A];return!a.extensions||!a.extensions[this.name]?null:g.MeshPhysicalMaterial}extendMaterialParams(A,e){const a=this.parser,t=a.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const i=[],s=t.extensions[this.name];return e.bumpScale=s.bumpFactor!==void 0?s.bumpFactor:1,s.bumpTexture!==void 0&&i.push(a.assignTexture(e,"bumpMap",s.bumpTexture)),Promise.all(i)}}class je{constructor(A){this.parser=A,this.name=G.KHR_MATERIALS_ANISOTROPY}getMaterialType(A){const a=this.parser.json.materials[A];return!a.extensions||!a.extensions[this.name]?null:g.MeshPhysicalMaterial}extendMaterialParams(A,e){const a=this.parser,t=a.json.materials[A];if(!t.extensions||!t.extensions[this.name])return Promise.resolve();const i=[],s=t.extensions[this.name];return s.anisotropyStrength!==void 0&&(e.anisotropy=s.anisotropyStrength),s.anisotropyRotation!==void 0&&(e.anisotropyRotation=s.anisotropyRotation),s.anisotropyTexture!==void 0&&i.push(a.assignTexture(e,"anisotropyMap",s.anisotropyTexture)),Promise.all(i)}}class Ke{constructor(A){this.parser=A,this.name=G.KHR_TEXTURE_BASISU}loadTexture(A){const e=this.parser,a=e.json,t=a.textures[A];if(!t.extensions||!t.extensions[this.name])return null;const i=t.extensions[this.name],s=e.options.ktx2Loader;if(!s){if(a.extensionsRequired&&a.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return e.loadTextureImage(A,i.source,s)}}class Pe{constructor(A){this.parser=A,this.name=G.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(A){const e=this.name,a=this.parser,t=a.json,i=t.textures[A];if(!i.extensions||!i.extensions[e])return null;const s=i.extensions[e],o=t.images[s.source];let r=a.textureLoader;if(o.uri){const c=a.options.manager.getHandler(o.uri);c!==null&&(r=c)}return this.detectSupport().then(function(c){if(c)return a.loadTextureImage(A,s.source,r);if(t.extensionsRequired&&t.extensionsRequired.indexOf(e)>=0)throw new Error("THREE.GLTFLoader: WebP required by asset but unsupported.");return a.loadTexture(A)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(A){const e=new Image;e.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",e.onload=e.onerror=function(){A(e.height===1)}})),this.isSupported}}class Je{constructor(A){this.parser=A,this.name=G.EXT_TEXTURE_AVIF,this.isSupported=null}loadTexture(A){const e=this.name,a=this.parser,t=a.json,i=t.textures[A];if(!i.extensions||!i.extensions[e])return null;const s=i.extensions[e],o=t.images[s.source];let r=a.textureLoader;if(o.uri){const c=a.options.manager.getHandler(o.uri);c!==null&&(r=c)}return this.detectSupport().then(function(c){if(c)return a.loadTextureImage(A,s.source,r);if(t.extensionsRequired&&t.extensionsRequired.indexOf(e)>=0)throw new Error("THREE.GLTFLoader: AVIF required by asset but unsupported.");return a.loadTexture(A)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(A){const e=new Image;e.src="data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI=",e.onload=e.onerror=function(){A(e.height===1)}})),this.isSupported}}class Ye{constructor(A){this.name=G.EXT_MESHOPT_COMPRESSION,this.parser=A}loadBufferView(A){const e=this.parser.json,a=e.bufferViews[A];if(a.extensions&&a.extensions[this.name]){const t=a.extensions[this.name],i=this.parser.getDependency("buffer",t.buffer),s=this.parser.options.meshoptDecoder;if(!s||!s.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 i.then(function(o){const r=t.byteOffset||0,c=t.byteLength||0,B=t.count,I=t.byteStride,l=new Uint8Array(o,r,c);return s.decodeGltfBufferAsync?s.decodeGltfBufferAsync(B,I,l,t.mode,t.filter).then(function(C){return C.buffer}):s.ready.then(function(){const C=new ArrayBuffer(B*I);return s.decodeGltfBuffer(new Uint8Array(C),B,I,l,t.mode,t.filter),C})})}else return null}}class We{constructor(A){this.name=G.EXT_MESH_GPU_INSTANCING,this.parser=A}createNodeMesh(A){const e=this.parser.json,a=e.nodes[A];if(!a.extensions||!a.extensions[this.name]||a.mesh===void 0)return null;const t=e.meshes[a.mesh];for(const c of t.primitives)if(c.mode!==j.TRIANGLES&&c.mode!==j.TRIANGLE_STRIP&&c.mode!==j.TRIANGLE_FAN&&c.mode!==void 0)return null;const s=a.extensions[this.name].attributes,o=[],r={};for(const c in s)o.push(this.parser.getDependency("accessor",s[c]).then(B=>(r[c]=B,r[c])));return o.length<1?null:(o.push(this.parser.createNodeMesh(A)),Promise.all(o).then(c=>{const B=c.pop(),I=B.isGroup?B.children:[B],l=c[0].count,C=[];for(const E of I){const h=new g.Matrix4,u=new g.Vector3,Q=new g.Quaternion,f=new g.Vector3(1,1,1),p=new g.InstancedMesh(E.geometry,E.material,l);for(let m=0;m<l;m++)r.TRANSLATION&&u.fromBufferAttribute(r.TRANSLATION,m),r.ROTATION&&Q.fromBufferAttribute(r.ROTATION,m),r.SCALE&&f.fromBufferAttribute(r.SCALE,m),p.setMatrixAt(m,h.compose(u,Q,f));for(const m in r)if(m==="_COLOR_0"){const F=r[m];p.instanceColor=new g.InstancedBufferAttribute(F.array,F.itemSize,F.normalized)}else m!=="TRANSLATION"&&m!=="ROTATION"&&m!=="SCALE"&&E.geometry.setAttribute(m,r[m]);g.Object3D.prototype.copy.call(p,E),this.parser.assignFinalMaterial(p),C.push(p)}return B.isGroup?(B.clear(),B.add(...C),B):C[0]}))}}const ee="glTF",cA=12,JA={JSON:1313821514,BIN:5130562};class Ve{constructor(A){this.name=G.KHR_BINARY_GLTF,this.content=null,this.body=null;const e=new DataView(A,0,cA),a=new TextDecoder;if(this.header={magic:a.decode(new Uint8Array(A.slice(0,4))),version:e.getUint32(4,!0),length:e.getUint32(8,!0)},this.header.magic!==ee)throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw new Error("THREE.GLTFLoader: Legacy binary file detected.");const t=this.header.length-cA,i=new DataView(A,cA);let s=0;for(;s<t;){const o=i.getUint32(s,!0);s+=4;const r=i.getUint32(s,!0);if(s+=4,r===JA.JSON){const c=new Uint8Array(A,cA+s,o);this.content=a.decode(c)}else if(r===JA.BIN){const c=cA+s;this.body=A.slice(c,c+o)}s+=o}if(this.content===null)throw new Error("THREE.GLTFLoader: JSON content not found.")}}class ze{constructor(A,e){if(!e)throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=G.KHR_DRACO_MESH_COMPRESSION,this.json=A,this.dracoLoader=e,this.dracoLoader.preload()}decodePrimitive(A,e){const a=this.json,t=this.dracoLoader,i=A.extensions[this.name].bufferView,s=A.extensions[this.name].attributes,o={},r={},c={};for(const B in s){const I=SA[B]||B.toLowerCase();o[I]=s[B]}for(const B in A.attributes){const I=SA[B]||B.toLowerCase();if(s[B]!==void 0){const l=a.accessors[A.attributes[B]],C=oA[l.componentType];c[I]=C.name,r[I]=l.normalized===!0}}return e.getDependency("bufferView",i).then(function(B){return new Promise(function(I,l){t.decodeDracoFile(B,function(C){for(const E in C.attributes){const h=C.attributes[E],u=r[E];u!==void 0&&(h.normalized=u)}I(C)},o,c,g.LinearSRGBColorSpace,l)})})}}class Xe{constructor(){this.name=G.KHR_TEXTURE_TRANSFORM}extendTexture(A,e){return(e.texCoord===void 0||e.texCoord===A.channel)&&e.offset===void 0&&e.rotation===void 0&&e.scale===void 0||(A=A.clone(),e.texCoord!==void 0&&(A.channel=e.texCoord),e.offset!==void 0&&A.offset.fromArray(e.offset),e.rotation!==void 0&&(A.rotation=e.rotation),e.scale!==void 0&&A.repeat.fromArray(e.scale),A.needsUpdate=!0),A}}class Ze{constructor(){this.name=G.KHR_MESH_QUANTIZATION}}class te extends g.Interpolant{constructor(A,e,a,t){super(A,e,a,t)}copySampleValue_(A){const e=this.resultBuffer,a=this.sampleValues,t=this.valueSize,i=A*t*3+t;for(let s=0;s!==t;s++)e[s]=a[i+s];return e}interpolate_(A,e,a,t){const i=this.resultBuffer,s=this.sampleValues,o=this.valueSize,r=o*2,c=o*3,B=t-e,I=(a-e)/B,l=I*I,C=l*I,E=A*c,h=E-c,u=-2*C+3*l,Q=C-l,f=1-u,p=Q-l+I;for(let m=0;m!==o;m++){const F=s[h+m+o],S=s[h+m+r]*B,x=s[E+m+o],U=s[E+m]*B;i[m]=f*F+p*S+u*x+Q*U}return i}}const $e=new g.Quaternion;class At extends te{interpolate_(A,e,a,t){const i=super.interpolate_(A,e,a,t);return $e.fromArray(i).normalize().toArray(i),i}}const j={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6},oA={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},YA={9728:g.NearestFilter,9729:g.LinearFilter,9984:g.NearestMipmapNearestFilter,9985:g.LinearMipmapNearestFilter,9986:g.NearestMipmapLinearFilter,9987:g.LinearMipmapLinearFilter},WA={33071:g.ClampToEdgeWrapping,33648:g.MirroredRepeatWrapping,10497:g.RepeatWrapping},bA={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},SA={POSITION:"position",NORMAL:"normal",TANGENT:"tangent",TEXCOORD_0:"uv",TEXCOORD_1:"uv1",TEXCOORD_2:"uv2",TEXCOORD_3:"uv3",COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},AA={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},et={CUBICSPLINE:void 0,LINEAR:g.InterpolateLinear,STEP:g.InterpolateDiscrete},fA={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"};function tt(n){return n.DefaultMaterial===void 0&&(n.DefaultMaterial=new g.MeshStandardMaterial({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:g.FrontSide})),n.DefaultMaterial}function aA(n,A,e){for(const a in e.extensions)n[a]===void 0&&(A.userData.gltfExtensions=A.userData.gltfExtensions||{},A.userData.gltfExtensions[a]=e.extensions[a])}function Z(n,A){A.extras!==void 0&&(typeof A.extras=="object"?Object.assign(n.userData,A.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+A.extras))}function at(n,A,e){let a=!1,t=!1,i=!1;for(let c=0,B=A.length;c<B;c++){const I=A[c];if(I.POSITION!==void 0&&(a=!0),I.NORMAL!==void 0&&(t=!0),I.COLOR_0!==void 0&&(i=!0),a&&t&&i)break}if(!a&&!t&&!i)return Promise.resolve(n);const s=[],o=[],r=[];for(let c=0,B=A.length;c<B;c++){const I=A[c];if(a){const l=I.POSITION!==void 0?e.getDependency("accessor",I.POSITION):n.attributes.position;s.push(l)}if(t){const l=I.NORMAL!==void 0?e.getDependency("accessor",I.NORMAL):n.attributes.normal;o.push(l)}if(i){const l=I.COLOR_0!==void 0?e.getDependency("accessor",I.COLOR_0):n.attributes.color;r.push(l)}}return Promise.all([Promise.all(s),Promise.all(o),Promise.all(r)]).then(function(c){const B=c[0],I=c[1],l=c[2];return a&&(n.morphAttributes.position=B),t&&(n.morphAttributes.normal=I),i&&(n.morphAttributes.color=l),n.morphTargetsRelative=!0,n})}function it(n,A){if(n.updateMorphTargets(),A.weights!==void 0)for(let e=0,a=A.weights.length;e<a;e++)n.morphTargetInfluences[e]=A.weights[e];if(A.extras&&Array.isArray(A.extras.targetNames)){const e=A.extras.targetNames;if(n.morphTargetInfluences.length===e.length){n.morphTargetDictionary={};for(let a=0,t=e.length;a<t;a++)n.morphTargetDictionary[e[a]]=a}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}function st(n){let A;const e=n.extensions&&n.extensions[G.KHR_DRACO_MESH_COMPRESSION];if(e?A="draco:"+e.bufferView+":"+e.indices+":"+EA(e.attributes):A=n.indices+":"+EA(n.attributes)+":"+n.mode,n.targets!==void 0)for(let a=0,t=n.targets.length;a<t;a++)A+=":"+EA(n.targets[a]);return A}function EA(n){let A="";const e=Object.keys(n).sort();for(let a=0,t=e.length;a<t;a++)A+=e[a]+":"+n[e[a]]+";";return A}function yA(n){switch(n){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 nt(n){return n.search(/\.jpe?g($|\?)/i)>0||n.search(/^data\:image\/jpeg/)===0?"image/jpeg":n.search(/\.webp($|\?)/i)>0||n.search(/^data\:image\/webp/)===0?"image/webp":"image/png"}const ot=new g.Matrix4;class rt{constructor(A={},e={}){this.json=A,this.extensions={},this.plugins={},this.options=e,this.cache=new ye,this.associations=new Map,this.primitiveCache={},this.nodeCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={};let a=!1,t=-1,i=!1,s=-1;if(typeof navigator<"u"){const o=navigator.userAgent;a=/^((?!chrome|android).)*safari/i.test(o)===!0;const r=o.match(/Version\/(\d+)/);t=a&&r?parseInt(r[1],10):-1,i=o.indexOf("Firefox")>-1,s=i?o.match(/Firefox\/([0-9]+)\./)[1]:-1}typeof createImageBitmap>"u"||a&&t<17||i&&s<98?this.textureLoader=new g.TextureLoader(this.options.manager):this.textureLoader=new g.ImageBitmapLoader(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new g.FileLoader(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),this.options.crossOrigin==="use-credentials"&&this.fileLoader.setWithCredentials(!0)}setExtensions(A){this.extensions=A}setPlugins(A){this.plugins=A}parse(A,e){const a=this,t=this.json,i=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(s){return s._markDefs&&s._markDefs()}),Promise.all(this._invokeAll(function(s){return s.beforeRoot&&s.beforeRoot()})).then(function(){return Promise.all([a.getDependencies("scene"),a.getDependencies("animation"),a.getDependencies("camera")])}).then(function(s){const o={scene:s[0][t.scene||0],scenes:s[0],animations:s[1],cameras:s[2],asset:t.asset,parser:a,userData:{}};return aA(i,o,t),Z(o,t),Promise.all(a._invokeAll(function(r){return r.afterRoot&&r.afterRoot(o)})).then(function(){for(const r of o.scenes)r.updateMatrixWorld();A(o)})}).catch(e)}_markDefs(){const A=this.json.nodes||[],e=this.json.skins||[],a=this.json.meshes||[];for(let t=0,i=e.length;t<i;t++){const s=e[t].joints;for(let o=0,r=s.length;o<r;o++)A[s[o]].isBone=!0}for(let t=0,i=A.length;t<i;t++){const s=A[t];s.mesh!==void 0&&(this._addNodeRef(this.meshCache,s.mesh),s.skin!==void 0&&(a[s.mesh].isSkinnedMesh=!0)),s.camera!==void 0&&this._addNodeRef(this.cameraCache,s.camera)}}_addNodeRef(A,e){e!==void 0&&(A.refs[e]===void 0&&(A.refs[e]=A.uses[e]=0),A.refs[e]++)}_getNodeRef(A,e,a){if(A.refs[e]<=1)return a;const t=a.clone(),i=(s,o)=>{const r=this.associations.get(s);r!=null&&this.associations.set(o,r);for(const[c,B]of s.children.entries())i(B,o.children[c])};return i(a,t),t.name+="_instance_"+A.uses[e]++,t}_invokeOne(A){const e=Object.values(this.plugins);e.push(this);for(let a=0;a<e.length;a++){const t=A(e[a]);if(t)return t}return null}_invokeAll(A){const e=Object.values(this.plugins);e.unshift(this);const a=[];for(let t=0;t<e.length;t++){const i=A(e[t]);i&&a.push(i)}return a}getDependency(A,e){const a=A+":"+e;let t=this.cache.get(a);if(!t){switch(A){case"scene":t=this.loadScene(e);break;case"node":t=this._invokeOne(function(i){return i.loadNode&&i.loadNode(e)});break;case"mesh":t=this._invokeOne(function(i){return i.loadMesh&&i.loadMesh(e)});break;case"accessor":t=this.loadAccessor(e);break;case"bufferView":t=this._invokeOne(function(i){return i.loadBufferView&&i.loadBufferView(e)});break;case"buffer":t=this.loadBuffer(e);break;case"material":t=this._invokeOne(function(i){return i.loadMaterial&&i.loadMaterial(e)});break;case"texture":t=this._invokeOne(function(i){return i.loadTexture&&i.loadTexture(e)});break;case"skin":t=this.loadSkin(e);break;case"animation":t=this._invokeOne(function(i){return i.loadAnimation&&i.loadAnimation(e)});break;case"camera":t=this.loadCamera(e);break;default:if(t=this._invokeOne(function(i){return i!=this&&i.getDependency&&i.getDependency(A,e)}),!t)throw new Error("Unknown type: "+A);break}this.cache.add(a,t)}return t}getDependencies(A){let e=this.cache.get(A);if(!e){const a=this,t=this.json[A+(A==="mesh"?"es":"s")]||[];e=Promise.all(t.map(function(i,s){return a.getDependency(A,s)})),this.cache.add(A,e)}return e}loadBuffer(A){const e=this.json.buffers[A],a=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&&A===0)return Promise.resolve(this.extensions[G.KHR_BINARY_GLTF].body);const t=this.options;return new Promise(function(i,s){a.load(g.LoaderUtils.resolveURL(e.uri,t.path),i,void 0,function(){s(new Error('THREE.GLTFLoader: Failed to load buffer "'+e.uri+'".'))})})}loadBufferView(A){const e=this.json.bufferViews[A];return this.getDependency("buffer",e.buffer).then(function(a){const t=e.byteLength||0,i=e.byteOffset||0;return a.slice(i,i+t)})}loadAccessor(A){const e=this,a=this.json,t=this.json.accessors[A];if(t.bufferView===void 0&&t.sparse===void 0){const s=bA[t.type],o=oA[t.componentType],r=t.normalized===!0,c=new o(t.count*s);return Promise.resolve(new g.BufferAttribute(c,s,r))}const i=[];return t.bufferView!==void 0?i.push(this.getDependency("bufferView",t.bufferView)):i.push(null),t.sparse!==void 0&&(i.push(this.getDependency("bufferView",t.sparse.indices.bufferView)),i.push(this.getDependency("bufferView",t.sparse.values.bufferView))),Promise.all(i).then(function(s){const o=s[0],r=bA[t.type],c=oA[t.componentType],B=c.BYTES_PER_ELEMENT,I=B*r,l=t.byteOffset||0,C=t.bufferView!==void 0?a.bufferViews[t.bufferView].byteStride:void 0,E=t.normalized===!0;let h,u;if(C&&C!==I){const Q=Math.floor(l/C),f="InterleavedBuffer:"+t.bufferView+":"+t.componentType+":"+Q+":"+t.count;let p=e.cache.get(f);p||(h=new c(o,Q*C,t.count*C/B),p=new g.InterleavedBuffer(h,C/B),e.cache.add(f,p)),u=new g.InterleavedBufferAttribute(p,r,l%C/B,E)}else o===null?h=new c(t.count*r):h=new c(o,l,t.count*r),u=new g.BufferAttribute(h,r,E);if(t.sparse!==void 0){const Q=bA.SCALAR,f=oA[t.sparse.indices.componentType],p=t.sparse.indices.byteOffset||0,m=t.sparse.values.byteOffset||0,F=new f(s[1],p,t.sparse.count*Q),S=new c(s[2],m,t.sparse.count*r);o!==null&&(u=new g.BufferAttribute(u.array.slice(),u.itemSize,u.normalized));for(let x=0,U=F.length;x<U;x++){const b=F[x];if(u.setX(b,S[x*r]),r>=2&&u.setY(b,S[x*r+1]),r>=3&&u.setZ(b,S[x*r+2]),r>=4&&u.setW(b,S[x*r+3]),r>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}}return u})}loadTexture(A){const e=this.json,a=this.options,i=e.textures[A].source,s=e.images[i];let o=this.textureLoader;if(s.uri){const r=a.manager.getHandler(s.uri);r!==null&&(o=r)}return this.loadTextureImage(A,i,o)}loadTextureImage(A,e,a){const t=this,i=this.json,s=i.textures[A],o=i.images[e],r=(o.uri||o.bufferView)+":"+s.sampler;if(this.textureCache[r])return this.textureCache[r];const c=this.loadImageSource(e,a).then(function(B){B.flipY=!1,B.name=s.name||o.name||"",B.name===""&&typeof o.uri=="string"&&o.uri.startsWith("data:image/")===!1&&(B.name=o.uri);const l=(i.samplers||{})[s.sampler]||{};return B.magFilter=YA[l.magFilter]||g.LinearFilter,B.minFilter=YA[l.minFilter]||g.LinearMipmapLinearFilter,B.wrapS=WA[l.wrapS]||g.RepeatWrapping,B.wrapT=WA[l.wrapT]||g.RepeatWrapping,t.associations.set(B,{textures:A}),B}).catch(function(){return null});return this.textureCache[r]=c,c}loadImageSource(A,e){const a=this,t=this.json,i=this.options;if(this.sourceCache[A]!==void 0)return this.sourceCache[A].then(I=>I.clone());const s=t.images[A],o=self.URL||self.webkitURL;let r=s.uri||"",c=!1;if(s.bufferView!==void 0)r=a.getDependency("bufferView",s.bufferView).then(function(I){c=!0;const l=new Blob([I],{type:s.mimeType});return r=o.createObjectURL(l),r});else if(s.uri===void 0)throw new Error("THREE.GLTFLoader: Image "+A+" is missing URI and bufferView");const B=Promise.resolve(r).then(function(I){return new Promise(function(l,C){let E=l;e.isImageBitmapLoader===!0&&(E=function(h){const u=new g.Texture(h);u.needsUpdate=!0,l(u)}),e.load(g.LoaderUtils.resolveURL(I,i.path),E,void 0,C)})}).then(function(I){return c===!0&&o.revokeObjectURL(r),Z(I,s),I.userData.mimeType=s.mimeType||nt(s.uri),I}).catch(function(I){throw console.error("THREE.GLTFLoader: Couldn't load texture",r),I});return this.sourceCache[A]=B,B}assignTexture(A,e,a,t){const i=this;return this.getDependency("texture",a.index).then(function(s){if(!s)return null;if(a.texCoord!==void 0&&a.texCoord>0&&(s=s.clone(),s.channel=a.texCoord),i.extensions[G.KHR_TEXTURE_TRANSFORM]){const o=a.extensions!==void 0?a.extensions[G.KHR_TEXTURE_TRANSFORM]:void 0;if(o){const r=i.associations.get(s);s=i.extensions[G.KHR_TEXTURE_TRANSFORM].extendTexture(s,o),i.associations.set(s,r)}}return t!==void 0&&(s.colorSpace=t),A[e]=s,s})}assignFinalMaterial(A){const e=A.geometry;let a=A.material;const t=e.attributes.tangent===void 0,i=e.attributes.color!==void 0,s=e.attributes.normal===void 0;if(A.isPoints){const o="PointsMaterial:"+a.uuid;let r=this.cache.get(o);r||(r=new g.PointsMaterial,g.Material.prototype.copy.call(r,a),r.color.copy(a.color),r.map=a.map,r.sizeAttenuation=!1,this.cache.add(o,r)),a=r}else if(A.isLine){const o="LineBasicMaterial:"+a.uuid;let r=this.cache.get(o);r||(r=new g.LineBasicMaterial,g.Material.prototype.copy.call(r,a),r.color.copy(a.color),r.map=a.map,this.cache.add(o,r)),a=r}if(t||i||s){let o="ClonedMaterial:"+a.uuid+":";t&&(o+="derivative-tangents:"),i&&(o+="vertex-colors:"),s&&(o+="flat-shading:");let r=this.cache.get(o);r||(r=a.clone(),i&&(r.vertexColors=!0),s&&(r.flatShading=!0),t&&(r.normalScale&&(r.normalScale.y*=-1),r.clearcoatNormalScale&&(r.clearcoatNormalScale.y*=-1)),this.cache.add(o,r),this.associations.set(r,this.associations.get(a))),a=r}A.material=a}getMaterialType(){return g.MeshStandardMaterial}loadMaterial(A){const e=this,a=this.json,t=this.extensions,i=a.materials[A];let s;const o={},r=i.extensions||{},c=[];if(r[G.KHR_MATERIALS_UNLIT]){const I=t[G.KHR_MATERIALS_UNLIT];s=I.getMaterialType(),c.push(I.extendParams(o,i,e))}else{const I=i.pbrMetallicRoughness||{};if(o.color=new g.Color(1,1,1),o.opacity=1,Array.isArray(I.baseColorFactor)){const l=I.baseColorFactor;o.color.setRGB(l[0],l[1],l[2],g.LinearSRGBColorSpace),o.opacity=l[3]}I.baseColorTexture!==void 0&&c.push(e.assignTexture(o,"map",I.baseColorTexture,g.SRGBColorSpace)),o.metalness=I.metallicFactor!==void 0?I.metallicFactor:1,o.roughness=I.roughnessFactor!==void 0?I.roughnessFactor:1,I.metallicRoughnessTexture!==void 0&&(c.push(e.assignTexture(o,"metalnessMap",I.metallicRoughnessTexture)),c.push(e.assignTexture(o,"roughnessMap",I.metallicRoughnessTexture))),s=this._invokeOne(function(l){return l.getMaterialType&&l.getMaterialType(A)}),c.push(Promise.all(this._invokeAll(function(l){return l.extendMaterialParams&&l.extendMaterialParams(A,o)})))}i.doubleSided===!0&&(o.side=g.DoubleSide);const B=i.alphaMode||fA.OPAQUE;if(B===fA.BLEND?(o.transparent=!0,o.depthWrite=!1):(o.transparent=!1,B===fA.MASK&&(o.alphaTest=i.alphaCutoff!==void 0?i.alphaCutoff:.5)),i.normalTexture!==void 0&&s!==g.MeshBasicMaterial&&(c.push(e.assignTexture(o,"normalMap",i.normalTexture)),o.normalScale=new g.Vector2(1,1),i.normalTexture.scale!==void 0)){const I=i.normalTexture.scale;o.normalScale.set(I,I)}if(i.occlusionTexture!==void 0&&s!==g.MeshBasicMaterial&&(c.push(e.assignTexture(o,"aoMap",i.occlusionTexture)),i.occlusionTexture.strength!==void 0&&(o.aoMapIntensity=i.occlusionTexture.strength)),i.emissiveFactor!==void 0&&s!==g.MeshBasicMaterial){const I=i.emissiveFactor;o.emissive=new g.Color().setRGB(I[0],I[1],I[2],g.LinearSRGBColorSpace)}return i.emissiveTexture!==void 0&&s!==g.MeshBasicMaterial&&c.push(e.assignTexture(o,"emissiveMap",i.emissiveTexture,g.SRGBColorSpace)),Promise.all(c).then(function(){const I=new s(o);return i.name&&(I.name=i.name),Z(I,i),e.associations.set(I,{materials:A}),i.extensions&&aA(t,I,i),I})}createUniqueName(A){const e=g.PropertyBinding.sanitizeNodeName(A||"");return e in this.nodeNamesUsed?e+"_"+ ++this.nodeNamesUsed[e]:(this.nodeNamesUsed[e]=0,e)}loadGeometries(A){const e=this,a=this.extensions,t=this.primitiveCache;function i(o){return a[G.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(o,e).then(function(r){return VA(r,o,e)})}const s=[];for(let o=0,r=A.length;o<r;o++){const c=A[o],B=st(c),I=t[B];if(I)s.push(I.promise);else{let l;c.extensions&&c.extensions[G.KHR_DRACO_MESH_COMPRESSION]?l=i(c):l=VA(new g.BufferGeometry,c,e),t[B]={primitive:c,promise:l},s.push(l)}}return Promise.all(s)}loadMesh(A){const e=this,a=this.json,t=this.extensions,i=a.meshes[A],s=i.primitives,o=[];for(let r=0,c=s.length;r<c;r++){const B=s[r].material===void 0?tt(this.cache):this.getDependency("material",s[r].material);o.push(B)}return o.push(e.loadGeometries(s)),Promise.all(o).then(function(r){const c=r.slice(0,r.length-1),B=r[r.length-1],I=[];for(let C=0,E=B.length;C<E;C++){const h=B[C],u=s[C];let Q;const f=c[C];if(u.mode===j.TRIANGLES||u.mode===j.TRIANGLE_STRIP||u.mode===j.TRIANGLE_FAN||u.mode===void 0)Q=i.isSkinnedMesh===!0?new g.SkinnedMesh(h,f):new g.Mesh(h,f),Q.isSkinnedMesh===!0&&Q.normalizeSkinWeights(),u.mode===j.TRIANGLE_STRIP?Q.geometry=PA(Q.geometry,g.TriangleStripDrawMode):u.mode===j.TRIANGLE_FAN&&(Q.geometry=PA(Q.geometry,g.TriangleFanDrawMode));else if(u.mode===j.LINES)Q=new g.LineSegments(h,f);else if(u.mode===j.LINE_STRIP)Q=new g.Line(h,f);else if(u.mode===j.LINE_LOOP)Q=new g.LineLoop(h,f);else if(u.mode===j.POINTS)Q=new g.Points(h,f);else throw new Error("THREE.GLTFLoader: Primitive mode unsupported: "+u.mode);Object.keys(Q.geometry.morphAttributes).length>0&&it(Q,i),Q.name=e.createUniqueName(i.name||"mesh_"+A),Z(Q,i),u.extensions&&aA(t,Q,u),e.assignFinalMaterial(Q),I.push(Q)}for(let C=0,E=I.length;C<E;C++)e.associations.set(I[C],{meshes:A,primitives:C});if(I.length===1)return i.extensions&&aA(t,I[0],i),I[0];const l=new g.Group;i.extensions&&aA(t,l,i),e.associations.set(l,{meshes:A});for(let C=0,E=I.length;C<E;C++)l.add(I[C]);return l})}loadCamera(A){let e;const a=this.json.cameras[A],t=a[a.type];if(!t){console.warn("THREE.GLTFLoader: Missing camera parameters.");return}return a.type==="perspective"?e=new g.PerspectiveCamera(g.MathUtils.radToDeg(t.yfov),t.aspectRatio||1,t.znear||1,t.zfar||2e6):a.type==="orthographic"&&(e=new g.OrthographicCamera(-t.xmag,t.xmag,t.ymag,-t.ymag,t.znear,t.zfar)),a.name&&(e.name=this.createUniqueName(a.name)),Z(e,a),Promise.resolve(e)}loadSkin(A){const e=this.json.skins[A],a=[];for(let t=0,i=e.joints.length;t<i;t++)a.push(this._loadNodeShallow(e.joints[t]));return e.inverseBindMatrices!==void 0?a.push(this.getDependency("accessor",e.inverseBindMatrices)):a.push(null),Promise.all(a).then(function(t){const i=t.pop(),s=t,o=[],r=[];for(let c=0,B=s.length;c<B;c++){const I=s[c];if(I){o.push(I);const l=new g.Matrix4;i!==null&&l.fromArray(i.array,c*16),r.push(l)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',e.joints[c])}return new g.Skeleton(o,r)})}loadAnimation(A){const e=this.json,a=this,t=e.animations[A],i=t.name?t.name:"animation_"+A,s=[],o=[],r=[],c=[],B=[];for(let I=0,l=t.channels.length;I<l;I++){const C=t.channels[I],E=t.samplers[C.sampler],h=C.target,u=h.node,Q=t.parameters!==void 0?t.parameters[E.input]:E.input,f=t.parameters!==void 0?t.parameters[E.output]:E.output;h.node!==void 0&&(s.push(this.getDependency("node",u)),o.push(this.getDependency("accessor",Q)),r.push(this.getDependency("accessor",f)),c.push(E),B.push(h))}return Promise.all([Promise.all(s),Promise.all(o),Promise.all(r),Promise.all(c),Promise.all(B)]).then(function(I){const l=I[0],C=I[1],E=I[2],h=I[3],u=I[4],Q=[];for(let f=0,p=l.length;f<p;f++){const m=l[f],F=C[f],S=E[f],x=h[f],U=u[f];if(m===void 0)continue;m.updateMatrix&&m.updateMatrix();const b=a._createAnimationTracks(m,F,S,x,U);if(b)for(let d=0;d<b.length;d++)Q.push(b[d])}return new g.AnimationClip(i,void 0,Q)})}createNodeMesh(A){const e=this.json,a=this,t=e.nodes[A];return t.mesh===void 0?null:a.getDependency("mesh",t.mesh).then(function(i){const s=a._getNodeRef(a.meshCache,t.mesh,i);return t.weights!==void 0&&s.traverse(function(o){if(o.isMesh)for(let r=0,c=t.weights.length;r<c;r++)o.morphTargetInfluences[r]=t.weights[r]}),s})}loadNode(A){const e=this.json,a=this,t=e.nodes[A],i=a._loadNodeShallow(A),s=[],o=t.children||[];for(let c=0,B=o.length;c<B;c++)s.push(a.getDependency("node",o[c]));const r=t.skin===void 0?Promise.resolve(null):a.getDependency("skin",t.skin);return Promise.all([i,Promise.all(s),r]).then(function(c){const B=c[0],I=c[1],l=c[2];l!==null&&B.traverse(function(C){C.isSkinnedMesh&&C.bind(l,ot)});for(let C=0,E=I.length;C<E;C++)B.add(I[C]);return B})}_loadNodeShallow(A){const e=this.json,a=this.extensions,t=this;if(this.nodeCache[A]!==void 0)return this.nodeCache[A];const i=e.nodes[A],s=i.name?t.createUniqueName(i.name):"",o=[],r=t._invokeOne(function(c){return c.createNodeMesh&&c.createNodeMesh(A)});return r&&o.push(r),i.camera!==void 0&&o.push(t.getDependency("camera",i.camera).then(function(c){return t._getNodeRef(t.cameraCache,i.camera,c)})),t._invokeAll(function(c){return c.createNodeAttachment&&c.createNodeAttachment(A)}).forEach(function(c){o.push(c)}),this.nodeCache[A]=Promise.all(o).then(function(c){let B;if(i.isBone===!0?B=new g.Bone:c.length>1?B=new g.Group:c.length===1?B=c[0]:B=new g.Object3D,B!==c[0])for(let I=0,l=c.length;I<l;I++)B.add(c[I]);if(i.name&&(B.userData.name=i.name,B.name=s),Z(B,i),i.extensions&&aA(a,B,i),i.matrix!==void 0){const I=new g.Matrix4;I.fromArray(i.matrix),B.applyMatrix4(I)}else i.translation!==void 0&&B.position.fromArray(i.translation),i.rotation!==void 0&&B.quaternion.fromArray(i.rotation),i.scale!==void 0&&B.scale.fromArray(i.scale);return t.associations.has(B)||t.associations.set(B,{}),t.associations.get(B).nodes=A,B}),this.nodeCache[A]}loadScene(A){const e=this.extensions,a=this.json.scenes[A],t=this,i=new g.Group;a.name&&(i.name=t.createUniqueName(a.name)),Z(i,a),a.extensions&&aA(e,i,a);const s=a.nodes||[],o=[];for(let r=0,c=s.length;r<c;r++)o.push(t.getDependency("node",s[r]));return Promise.all(o).then(function(r){for(let B=0,I=r.length;B<I;B++)i.add(r[B]);const c=B=>{const I=new Map;for(const[l,C]of t.associations)(l instanceof g.Material||l instanceof g.Texture)&&I.set(l,C);return B.traverse(l=>{const C=t.associations.get(l);C!=null&&I.set(l,C)}),I};return t.associations=c(i),i})}_createAnimationTracks(A,e,a,t,i){const s=[],o=A.name?A.name:A.uuid,r=[];AA[i.path]===AA.weights?A.traverse(function(l){l.morphTargetInfluences&&r.push(l.name?l.name:l.uuid)}):r.push(o);let c;switch(AA[i.path]){case AA.weights:c=g.NumberKeyframeTrack;break;case AA.rotation:c=g.QuaternionKeyframeTrack;break;case AA.position:case AA.scale:c=g.VectorKeyframeTrack;break;default:switch(a.itemSize){case 1:c=g.NumberKeyframeTrack;break;case 2:case 3:default:c=g.VectorKeyframeTrack;break}break}const B=t.interpolation!==void 0?et[t.interpolation]:g.InterpolateLinear,I=this._getArrayFromAccessor(a);for(let l=0,C=r.length;l<C;l++){const E=new c(r[l]+"."+AA[i.path],e.array,I,B);t.interpolation==="CUBICSPLINE"&&this._createCubicSplineTrackInterpolant(E),s.push(E)}return s}_getArrayFromAccessor(A){let e=A.array;if(A.normalized){const a=yA(e.constructor),t=new Float32Array(e.length);for(let i=0,s=e.length;i<s;i++)t[i]=e[i]*a;e=t}return e}_createCubicSplineTrackInterpolant(A){A.createInterpolant=function(a){const t=this instanceof g.QuaternionKeyframeTrack?At:te;return new t(this.times,this.values,this.getValueSize()/3,a)},A.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0}}function ct(n,A,e){const a=A.attributes,t=new g.Box3;if(a.POSITION!==void 0){const o=e.json.accessors[a.POSITION],r=o.min,c=o.max;if(r!==void 0&&c!==void 0){if(t.set(new g.Vector3(r[0],r[1],r[2]),new g.Vector3(c[0],c[1],c[2])),o.normalized){const B=yA(oA[o.componentType]);t.min.multiplyScalar(B),t.max.multiplyScalar(B)}}else{console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");return}}else return;const i=A.targets;if(i!==void 0){const o=new g.Vector3,r=new g.Vector3;for(let c=0,B=i.length;c<B;c++){const I=i[c];if(I.POSITION!==void 0){const l=e.json.accessors[I.POSITION],C=l.min,E=l.max;if(C!==void 0&&E!==void 0){if(r.setX(Math.max(Math.abs(C[0]),Math.abs(E[0]))),r.setY(Math.max(Math.abs(C[1]),Math.abs(E[1]))),r.setZ(Math.max(Math.abs(C[2]),Math.abs(E[2]))),l.normalized){const h=yA(oA[l.componentType]);r.multiplyScalar(h)}o.max(r)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}t.expandByVector(o)}n.boundingBox=t;const s=new g.Sphere;t.getCenter(s.center),s.radius=t.min.distanceTo(t.max)/2,n.boundingSphere=s}function VA(n,A,e){const a=A.attributes,t=[];function i(s,o){return e.getDependency("accessor",s).then(function(r){n.setAttribute(o,r)})}for(const s in a){const o=SA[s]||s.toLowerCase();o in n.attributes||t.push(i(a[s],o))}if(A.indices!==void 0&&!n.index){const s=e.getDependency("accessor",A.indices).then(function(o){n.setIndex(o)});t.push(s)}return g.ColorManagement.workingColorSpace!==g.LinearSRGBColorSpace&&"COLOR_0"in a&&console.warn(`THREE.GLTFLoader: Converting vertex colors from "srgb-linear" to "${g.ColorManagement.workingColorSpace}" not supported.`),Z(n,A),ct(n,A,e),Promise.all(t).then(function(){return A.targets!==void 0?at(n,A.targets,e):n})}const QA=new WeakMap;class gt extends g.Loader{constructor(A){super(A),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(A){return this.decoderPath=A,this}setDecoderConfig(A){return this.decoderConfig=A,this}setWorkerLimit(A){return this.workerLimit=A,this}load(A,e,a,t){const i=new g.FileLoader(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),i.load(A,s=>{this.parse(s,e,t)},a,t)}parse(A,e,a=()=>{}){this.decodeDracoFile(A,e,null,null,g.SRGBColorSpace,a).catch(a)}decodeDracoFile(A,e,a,t,i=g.LinearSRGBColorSpace,s=()=>{}){const o={attributeIDs:a||this.defaultAttributeIDs,attributeTypes:t||this.defaultAttributeTypes,useUniqueIDs:!!a,vertexColorSpace:i};return this.decodeGeometry(A,o).then(e).catch(s)}decodeGeometry(A,e){const a=JSON.stringify(e);if(QA.has(A)){const r=QA.get(A);if(r.key===a)return r.promise;if(A.byteLength===0)throw new Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.")}let t;const i=this.workerNextTaskID++,s=A.byteLength,o=this._getWorker(i,s).then(r=>(t=r,new Promise((c,B)=>{t._callbacks[i]={resolve:c,reject:B},t.postMessage({type:"decode",id:i,taskConfig:e,buffer:A},[A])}))).then(r=>this._createGeometry(r.geometry));return o.catch(()=>!0).then(()=>{t&&i&&this._releaseTask(t,i)}),QA.set(A,{key:a,promise:o}),o}_createGeometry(A){const e=new g.BufferGeometry;A.index&&e.setIndex(new g.BufferAttribute(A.index.array,1));for(let a=0;a<A.attributes.length;a++){const t=A.attributes[a],i=t.name,s=t.array,o=t.itemSize,r=new g.BufferAttribute(s,o);i==="color"&&(this._assignVertexColorSpace(r,t.vertexColorSpace),r.normalized=!(s instanceof Float32Array)),e.setAttribute(i,r)}return e}_assignVertexColorSpace(A,e){if(e!==g.SRGBColorSpace)return;const a=new g.Color;for(let t=0,i=A.count;t<i;t++)a.fromBufferAttribute(A,t).convertSRGBToLinear(),A.setXYZ(t,a.r,a.g,a.b)}_loadLibrary(A,e){const a=new g.FileLoader(this.manager);return a.setPath(this.decoderPath),a.setResponseType(e),a.setWithCredentials(this.withCredentials),new Promise((t,i)=>{a.load(A,t,void 0,i)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;const A=typeof WebAssembly!="object"||this.decoderConfig.type==="js",e=[];return A?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(a=>{const t=a[0];A||(this.decoderConfig.wasmBinary=a[1]);const i=It.toString(),s=["/* draco decoder */",t,"","/* worker */",i.substring(i.indexOf("{")+1,i.lastIndexOf("}"))].join(`
|
|
2
|
+
`);this.workerSourceURL=URL.createObjectURL(new Blob([s]))}),this.decoderPending}_getWorker(A,e){return this._initDecoder().then(()=>{if(this.workerPool.length<this.workerLimit){const t=new Worker(this.workerSourceURL);t._callbacks={},t._taskCosts={},t._taskLoad=0,t.postMessage({type:"init",decoderConfig:this.decoderConfig}),t.onmessage=function(i){const s=i.data;switch(s.type){case"decode":t._callbacks[s.id].resolve(s);break;case"error":t._callbacks[s.id].reject(s);break;default:console.error('THREE.DRACOLoader: Unexpected message, "'+s.type+'"')}},this.workerPool.push(t)}else this.workerPool.sort(function(t,i){return t._taskLoad>i._taskLoad?-1:1});const a=this.workerPool[this.workerPool.length-1];return a._taskCosts[A]=e,a._taskLoad+=e,a})}_releaseTask(A,e){A._taskLoad-=A._taskCosts[e],delete A._callbacks[e],delete A._taskCosts[e]}debug(){console.log("Task load: ",this.workerPool.map(A=>A._taskLoad))}dispose(){for(let A=0;A<this.workerPool.length;++A)this.workerPool[A].terminate();return this.workerPool.length=0,this.workerSourceURL!==""&&URL.revokeObjectURL(this.workerSourceURL),this}}function It(){let n,A;onmessage=function(s){const o=s.data;switch(o.type){case"init":n=o.decoderConfig,A=new Promise(function(B){n.onModuleLoaded=function(I){B({draco:I})},DracoDecoderModule(n)});break;case"decode":const r=o.buffer,c=o.taskConfig;A.then(B=>{const I=B.draco,l=new I.Decoder;try{const C=e(I,l,new Int8Array(r),c),E=C.attributes.map(h=>h.array.buffer);C.index&&E.push(C.index.array.buffer),self.postMessage({type:"decode",id:o.id,geometry:C},E)}catch(C){console.error(C),self.postMessage({type:"error",id:o.id,error:C.message})}finally{I.destroy(l)}});break}};function e(s,o,r,c){const B=c.attributeIDs,I=c.attributeTypes;let l,C;const E=o.GetEncodedGeometryType(r);if(E===s.TRIANGULAR_MESH)l=new s.Mesh,C=o.DecodeArrayToMesh(r,r.byteLength,l);else if(E===s.POINT_CLOUD)l=new s.PointCloud,C=o.DecodeArrayToPointCloud(r,r.byteLength,l);else throw new Error("THREE.DRACOLoader: Unexpected geometry type.");if(!C.ok()||l.ptr===0)throw new Error("THREE.DRACOLoader: Decoding failed: "+C.error_msg());const h={index:null,attributes:[]};for(const u in B){const Q=self[I[u]];let f,p;if(c.useUniqueIDs)p=B[u],f=o.GetAttributeByUniqueId(l,p);else{if(p=o.GetAttributeId(l,s[B[u]]),p===-1)continue;f=o.GetAttribute(l,p)}const m=t(s,o,l,u,Q,f);u==="color"&&(m.vertexColorSpace=c.vertexColorSpace),h.attributes.push(m)}return E===s.TRIANGULAR_MESH&&(h.index=a(s,o,l)),s.destroy(l),h}function a(s,o,r){const B=r.num_faces()*3,I=B*4,l=s._malloc(I);o.GetTrianglesUInt32Array(r,I,l);const C=new Uint32Array(s.HEAPF32.buffer,l,B).slice();return s._free(l),{array:C,itemSize:1}}function t(s,o,r,c,B,I){const l=I.num_components(),E=r.num_points()*l,h=E*B.BYTES_PER_ELEMENT,u=i(s,B),Q=s._malloc(h);o.GetAttributeDataArrayForAllPoints(r,I,u,h,Q);const f=new B(s.HEAPF32.buffer,Q,E).slice();return s._free(Q),{name:c,array:f,itemSize:l}}function i(s,o){switch(o){case Float32Array:return s.DT_FLOAT32;case Int8Array:return s.DT_INT8;case Int16Array:return s.DT_INT16;case Int32Array:return s.DT_INT32;case Uint8Array:return s.DT_UINT8;case Uint16Array:return s.DT_UINT16;case Uint32Array:return s.DT_UINT32}}}class Bt{constructor(A=4){this.pool=A,this.queue=[],this.workers=[],this.workersResolve=[],this.workerStatus=0}_initWorker(A){if(!this.workers[A]){const e=this.workerCreator();e.addEventListener("message",this._onMessage.bind(this,A)),this.workers[A]=e}}_getIdleWorker(){for(let A=0;A<this.pool;A++)if(!(this.workerStatus&1<<A))return A;return-1}_onMessage(A,e){const a=this.workersResolve[A];if(a&&a(e),this.queue.length){const{resolve:t,msg:i,transfer:s}=this.queue.shift();this.workersResolve[A]=t,this.workers[A].postMessage(i,s)}else this.workerStatus^=1<<A}setWorkerCreator(A){this.workerCreator=A}setWorkerLimit(A){this.pool=A}postMessage(A,e){return new Promise(a=>{const t=this._getIdleWorker();t!==-1?(this._initWorker(t),this.workerStatus|=1<<t,this.workersResolve[t]=a,this.workers[t].postMessage(A,e)):this.queue.push({resolve:a,msg:A,transfer:e})})}dispose(){this.workers.forEach(A=>A.terminate()),this.workersResolve.length=0,this.workers.length=0,this.queue.length=0,this.workerStatus=0}}const lt=0,zA=2,Ct=1,XA=2,bt=0,ft=1,Et=10,Qt=0,ae=9,ie=15,se=16,ne=22,oe=37,re=43,ce=76,ge=83,Ie=97,Be=100,le=103,Ce=109,be=165,fe=166;class dt{constructor(){this.vkFormat=0,this.typeSize=1,this.pixelWidth=0,this.pixelHeight=0,this.pixelDepth=0,this.layerCount=0,this.faceCount=1,this.supercompressionScheme=0,this.levels=[],this.dataFormatDescriptor=[{vendorId:0,descriptorType:0,descriptorBlockSize:0,versionNumber:2,colorModel:0,colorPrimaries:1,transferFunction:2,flags:0,texelBlockDimension:[0,0,0,0],bytesPlane:[0,0,0,0,0,0,0,0],samples:[]}],this.keyValue={},this.globalData=null}}class gA{constructor(A,e,a,t){this._dataView=new DataView(A.buffer,A.byteOffset+e,a),this._littleEndian=t,this._offset=0}_nextUint8(){const A=this._dataView.getUint8(this._offset);return this._offset+=1,A}_nextUint16(){const A=this._dataView.getUint16(this._offset,this._littleEndian);return this._offset+=2,A}_nextUint32(){const A=this._dataView.getUint32(this._offset,this._littleEndian);return this._offset+=4,A}_nextUint64(){const A=this._dataView.getUint32(this._offset,this._littleEndian)+4294967296*this._dataView.getUint32(this._offset+4,this._littleEndian);return this._offset+=8,A}_nextInt32(){const A=this._dataView.getInt32(this._offset,this._littleEndian);return this._offset+=4,A}_skip(A){return this._offset+=A,this}_scan(A,e=0){const a=this._offset;let t=0;for(;this._dataView.getUint8(this._offset)!==e&&t<A;)t++,this._offset++;return t<A&&this._offset++,new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+a,t)}}const _=[171,75,84,88,32,50,48,187,13,10,26,10];function ZA(n){return typeof TextDecoder<"u"?new TextDecoder().decode(n):Buffer.from(n).toString("utf8")}function ht(n){const A=new Uint8Array(n.buffer,n.byteOffset,_.length);if(A[0]!==_[0]||A[1]!==_[1]||A[2]!==_[2]||A[3]!==_[3]||A[4]!==_[4]||A[5]!==_[5]||A[6]!==_[6]||A[7]!==_[7]||A[8]!==_[8]||A[9]!==_[9]||A[10]!==_[10]||A[11]!==_[11])throw new Error("Missing KTX 2.0 identifier.");const e=new dt,a=17*Uint32Array.BYTES_PER_ELEMENT,t=new gA(n,_.length,a,!0);e.vkFormat=t._nextUint32(),e.typeSize=t._nextUint32(),e.pixelWidth=t._nextUint32(),e.pixelHeight=t._nextUint32(),e.pixelDepth=t._nextUint32(),e.layerCount=t._nextUint32(),e.faceCount=t._nextUint32();const i=t._nextUint32();e.supercompressionScheme=t._nextUint32();const s=t._nextUint32(),o=t._nextUint32(),r=t._nextUint32(),c=t._nextUint32(),B=t._nextUint64(),I=t._nextUint64(),l=new gA(n,_.length+a,3*i*8,!0);for(let T=0;T<i;T++)e.levels.push({levelData:new Uint8Array(n.buffer,n.byteOffset+l._nextUint64(),l._nextUint64()),uncompressedByteLength:l._nextUint64()});const C=new gA(n,s,o,!0),E={vendorId:C._skip(4)._nextUint16(),descriptorType:C._nextUint16(),versionNumber:C._nextUint16(),descriptorBlockSize:C._nextUint16(),colorModel:C._nextUint8(),colorPrimaries:C._nextUint8(),transferFunction:C._nextUint8(),flags:C._nextUint8(),texelBlockDimension:[C._nextUint8(),C._nextUint8(),C._nextUint8(),C._nextUint8()],bytesPlane:[C._nextUint8(),C._nextUint8(),C._nextUint8(),C._nextUint8(),C._nextUint8(),C._nextUint8(),C._nextUint8(),C._nextUint8()],samples:[]},h=(E.descriptorBlockSize/4-6)/4;for(let T=0;T<h;T++){const N={bitOffset:C._nextUint16(),bitLength:C._nextUint8(),channelType:C._nextUint8(),samplePosition:[C._nextUint8(),C._nextUint8(),C._nextUint8(),C._nextUint8()],sampleLower:-1/0,sampleUpper:1/0};64&N.channelType?(N.sampleLower=C._nextInt32(),N.sampleUpper=C._nextInt32()):(N.sampleLower=C._nextUint32(),N.sampleUpper=C._nextUint32()),E.samples[T]=N}e.dataFormatDescriptor.length=0,e.dataFormatDescriptor.push(E);const u=new gA(n,r,c,!0);for(;u._offset<c;){const T=u._nextUint32(),N=u._scan(T),H=ZA(N),P=u._scan(T-N.byteLength);e.keyValue[H]=H.match(/^ktx/i)?ZA(P):P,u._offset%4&&u._skip(4-u._offset%4)}if(I<=0)return e;const Q=new gA(n,B,I,!0),f=Q._nextUint16(),p=Q._nextUint16(),m=Q._nextUint32(),F=Q._nextUint32(),S=Q._nextUint32(),x=Q._nextUint32(),U=[];for(let T=0;T<i;T++)U.push({imageFlags:Q._nextUint32(),rgbSliceByteOffset:Q._nextUint32(),rgbSliceByteLength:Q._nextUint32(),alphaSliceByteOffset:Q._nextUint32(),alphaSliceByteLength:Q._nextUint32()});const b=B+Q._offset,d=b+m,w=d+F,R=w+S,D=new Uint8Array(n.buffer,n.byteOffset+b,m),y=new Uint8Array(n.buffer,n.byteOffset+d,F),k=new Uint8Array(n.buffer,n.byteOffset+w,S),L=new Uint8Array(n.buffer,n.byteOffset+R,x);return e.globalData={endpointCount:f,selectorCount:p,imageDescs:U,endpointsData:D,selectorsData:y,tablesData:k,extendedData:L},e}let dA,X,GA;const hA={env:{emscripten_notify_memory_growth:function(n){GA=new Uint8Array(X.exports.memory.buffer)}}};class pt{init(){return dA||(dA=typeof fetch<"u"?fetch("data:application/wasm;base64,"+$A).then(A=>A.arrayBuffer()).then(A=>WebAssembly.instantiate(A,hA)).then(this._init):WebAssembly.instantiate(Buffer.from($A,"base64"),hA).then(this._init),dA)}_init(A){X=A.instance,hA.env.emscripten_notify_memory_growth(0)}decode(A,e=0){if(!X)throw new Error("ZSTDDecoder: Await .init() before decoding.");const a=A.byteLength,t=X.exports.malloc(a);GA.set(A,t),e=e||Number(X.exports.ZSTD_findDecompressedSize(t,a));const i=X.exports.malloc(e),s=X.exports.ZSTD_decompress(i,e,t,a),o=GA.slice(i,i+s);return X.exports.free(t),X.exports.free(i),o}}const $A="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IAMNACAEQQNxBEADQCACRQ0FIAAgAkF/aiICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQXxqIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkF/aiICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AIAIhBANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIARBfGoiBEEDSw0ACyACQQNxIQILIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQX9qIgINAAsLIAAL8wICAn8BfgJAIAJFDQAgACACaiIDQX9qIAE6AAAgACABOgAAIAJBA0kNACADQX5qIAE6AAAgACABOgABIANBfWogAToAACAAIAE6AAIgAkEHSQ0AIANBfGogAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa0iBUIghiAFhCEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkFgaiICQR9LDQALCyAACy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAIajYCACADCy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAFajYCACADCx8AIAAgASACKAIEEAg2AgAgARAEGiAAIAJBCGo2AgQLCAAgAGdBH3MLugUBDX8jAEEQayIKJAACfyAEQQNNBEAgCkEANgIMIApBDGogAyAEEAsaIAAgASACIApBDGpBBBAVIgBBbCAAEAMbIAAgACAESxsMAQsgAEEAIAEoAgBBAXRBAmoQECENQVQgAygAACIGQQ9xIgBBCksNABogAiAAQQVqNgIAIAMgBGoiAkF8aiEMIAJBeWohDiACQXtqIRAgAEEGaiELQQQh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ASIDNgLE4AEgACgCvOABIQQgACABNgK84AEgACABIAJqNgK44AEgACABIAQgA2tqNgLA4AELpgEBAX8gACAAKALs4QEQFjYCyOABIABCADcD+OABIABCADcDuOABIABBwOABakIANwMAIABBqNAAaiIBQYyAgOAANgIAIABBADYCmOIBIABCADcDiOEBIABCAzcDgOEBIABBrNABakHgEikCADcCACAAQbTQAWpB6BIoAgA2AgAgACABNgIMIAAgAEGYIGo2AgggACAAQaAwajYCBCAAIABBEGo2AgALYQEBf0G4fyEDAkAgAUEDSQ0AIAIgABAhIgFBA3YiADYCCCACIAFBAXE2AgQgAiABQQF2QQNxIgM2AgACQCADQX9qIgFBAksNAAJAIAFBAWsOAgEAAgtBbA8LIAAhAwsgAwsMACAAIAEgAkEAEC4LiAQCA38CfiADEBYhBCAAQQBBKBAQIQAgBCACSwRAIAQPCyABRQRAQX8PCwJAAkAgA0EBRg0AIAEoAAAiBkGo6r5pRg0AQXYhAyAGQXBxQdDUtMIBRw0BQQghAyACQQhJDQEgAEEAQSgQECEAIAEoAAQhASAAQQE2AhQgACABrTcDAEEADwsgASACIAMQLyIDIAJLDQAgACADNgIYQXIhAyABIARqIgVBf2otAAAiAkEIcQ0AIAJBIHEiBkUEQEFwIQMgBS0AACIFQacBSw0BIAVBB3GtQgEgBUEDdkEKaq2GIgdCA4h+IAd8IQggBEEBaiEECyACQQZ2IQMgAkECdiEFAkAgAkEDcUF/aiICQQJLBEBBACECDAELAkACQAJAIAJBAWsOAgECAAsgASAEai0AACECIARBAWohBAwCCyABIARqLwAAIQIgBEECaiEEDAELIAEgBGooAAAhAiAEQQRqIQQLIAVBAXEhBQJ+AkACQAJAIANBf2oiA0ECTQRAIANBAWsOAgIDAQtCfyAGRQ0DGiABIARqMQAADAMLIAEgBGovAACtQoACfAwCCyABIARqKAAArQwBCyABIARqKQAACyEHIAAgBTYCICAAIAI2AhwgACAHNwMAQQAhAyAAQQA2AhQgACAHIAggBhsiBzcDCCAAIAdCgIAIIAdCgIAIVBs+AhALIAMLWwEBf0G4fyEDIAIQFiICIAFNBH8gACACakF/ai0AACIAQQNxQQJ0QaAeaigC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C0Egak8NAQsgByAHKQNoNwMQIAcgBykDYDcDCCAEIA0gB0EIaiAHQdwAaiAPIA4gESAQEB4hCwwBCyACIARqIQggBCAKEAcgAkERTwRAIARBEGohAgNAIAIgCkEQaiIKEAcgAkEQaiICIAhJDQALCyAIIAlrIQIgByATNgJcIAkgCCAOa0sEQCAJIAggEWtLBEBBbCELDAILIBAgAiAOayICaiIKIANqIBBNBEAgCCAKIAMQDxoMAgsgCCAKQQAgAmsQDyEIIAcgAiADaiIDNgJkIAggAmshCCAOIQILIAlBEE8EQCADIAhqIQMDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALDAELAkAgCUEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgCUECdCIDQcAeaigCAGoiAhAXIAIgA0HgHmooAgBrIQIgBygCZCEDDAELIAggAhAMCyADQQlJDQAgAyAIaiEDIAhBCGoiCCACQQhqIgJrQQ9MBEADQCAIIAIQDCACQQhqIQIgCEEIaiIIIANJDQAMAgALAAsDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALCyAHQRhqEAQaIAsgDCALEAMiAhshDCAEIAQgC2ogAhshBCAFQX9qIgUNAAsgDBADDQFBbCEMIAdBGGoQBEECSQ0BQQAhCANAIAhBA0cEQCAAIAhBAnQiAmpBrNABaiACIAdqKAJENgIAIAhBAWohCAwBCwsgBygCXCEIC0G6fyEMIA8gCGsiACANIARrSw0AIAQEfyAEIAggABALIABqBUEACyABayEMCyAHQfAAaiQAIAwLkRcCFn8FfiMAQdABayIHJAAgByAAKALw4QEiCDYCvAEgASACaiESIAggACgCgOIBaiETAkACQCAFRQRAIAEhAwwBCyAAKALE4AEhESAAKALA4AEhFSAAKAK84AEhDyAAQQE2AozhAUEAIQgDQCAIQQNHBEAgByAIQQJ0IgJqIAAgAmpBrNABaigCADYCVCAIQQFqIQgMAQsLIAcgETYCZCAHIA82AmAgByABIA9rNgJoQWwhECAHQShqIAMgBBAGEAMNASAFQQQgBUEESBshFyAHQTxqIAdBKGogACgCABATIAdBxABqIAdBKGogACgCCBATIAdBzABqIAdBKGogACgCBBATQQAhBCAHQeAAaiEMIAdB5ABqIQoDQCAHQShqEARBAksgBCAXTnJFBEAgBygCQCAHKAI8QQN0aikCACIdQhCIp0H/AXEhCyAHKAJQIAcoAkxBA3RqKQIAIh5CEIinQf8BcSEJIAcoAkggBygCREEDdGopAgAiH0IgiKchCCAeQiCIISAgHUIgiKchAgJAIB9CEIinQf8BcSIDQQJPBEACQCAGRSADQRlJckUEQCAIIAdBKGogA0EgIAcoAixrIg0gDSADSxsiDRAFIAMgDWsiA3RqIQggB0EoahAEGiADRQ0BIAdBKGogAxAFIAhqIQgMAQsgB0EoaiADEAUgCGohCCAHQShqEAQaCyAHKQJUISEgByAINgJUIAcgITcDWAwBCwJAIANFBEAgAgRAIAcoAlQhCAwDCyAHKAJYIQgMAQsCQAJAIAdBKGpBARAFIAggAkVqaiIDQQNGBEAgBygCVEF/aiIDIANFaiEIDAELIANBAnQgB2ooAlQiCCAIRWohCCADQQFGDQELIAcgBygCWDYCXAsLIAcgBygCVDYCWCAHIAg2AlQLICCnIQMgCQRAIAdBKGogCRAFIANqIQMLIAkgC2pBFE8EQCAHQShqEAQaCyALBEAgB0EoaiALEAUgAmohAgsgB0EoahAEGiAHIAcoAmggAmoiCSADajYCaCAKIAwgCCAJSxsoAgAhDSAHIAdBKGogHUIYiKdB/wFxEAggHadB//8DcWo2AjwgByAHQShqIB5CGIinQf8BcRAIIB6nQf//A3FqNgJMIAdBKGoQBBogB0EoaiAfQhiIp0H/AXEQCCEOIAdB8ABqIARBBHRqIgsgCSANaiAIazYCDCALIAg2AgggCyADNgIEIAsgAjYCACAHIA4gH6dB//8DcWo2AkQgBEEBaiEEDAELCyAEIBdIDQEgEkFgaiEYIAdB4ABqIRogB0HkAGohGyABIQMDQCAHQShqEARBAksgBCAFTnJFBEAgBygCQCAHKAI8QQN0aikCACIdQhCIp0H/AXEhCyAHKAJQIAcoAkxBA3RqKQIAIh5CEIinQf8BcSEIIAcoAkggBygCREEDdGopAgAiH0IgiKchCSAeQiCIISAgHUIgiKchDAJAIB9CEIinQf8BcSICQQJPBEACQCAGRSACQRlJckUEQCAJIAdBKGogAkEgIAcoAixrIgogCiACSxsiChAFIAIgCmsiAnRqIQkgB0EoahAEGiACRQ0BIAdBKGogAhAFIAlqIQkMAQsgB0EoaiACEAUgCWohCSAHQShqEAQaCyAHKQJUISEgByAJNgJUIAcgITcDWAwBCwJAIAJFBEAgDARAIAcoAlQhCQwDCyAHKAJYIQkMAQsCQAJAIAdBKGpBARAFIAkgDEVqaiICQQNGBEAgBygCVEF/aiICIAJFaiEJDAELIAJBAnQgB2ooAlQiCSAJRWohCSACQQFGDQELIAcgBygCWDYCXAsLIAcgBygCVDYCWCAHIAk2AlQLICCnIRQgCARAIAdBKGogCBAFIBRqIRQLIAggC2pBFE8EQCAHQShqEAQaCyALBEAgB0EoaiALEAUgDGohDAsgB0EoahAEGiAHIAcoAmggDGoiGSAUajYCaCAbIBogCSAZSxsoAgAhHCAHIAdBKGogHUIYiKdB/wFxEAggHadB//8DcWo2AjwgByAHQShqIB5CGIinQf8BcRAIIB6nQf//A3FqNgJMIAdBKGoQBBogByAHQShqIB9CGIinQf8BcRAIIB+nQf//A3FqNgJEIAcgB0HwAGogBEEDcUEEdGoiDSkDCCIdNwPIASAHIA0pAwAiHjcDwAECQAJAAkAgBygCvAEiDiAepyICaiIWIBNLDQAgAyAHKALEASIKIAJqIgtqIBhLDQAgEiADayALQSBqTw0BCyAHIAcpA8gBNwMQIAcgBykDwAE3AwggAyASIAdBCGogB0G8AWogEyAPIBUgERAeIQsMAQsgAiADaiEIIAMgDhAHIAJBEU8EQCADQRBqIQIDQCACIA5BEGoiDhAHIAJBEGoiAiAISQ0ACwsgCCAdpyIOayECIAcgFjYCvAEgDiAIIA9rSwRAIA4gCCAVa0sEQEFsIQsMAgsgESACIA9rIgJqIhYgCmogEU0EQCAIIBYgChAPGgwCCyAIIBZBACACaxAPIQggByACIApqIgo2AsQBIAggAmshCCAPIQILIA5BEE8EQCAIIApqIQoDQCAIIAIQByACQRBqIQIgCEEQaiIIIApJDQALDAELAkAgDkEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgDkECdCIKQcAeaigCAGoiAhAXIAIgCkHgHmooAgBrIQIgBygCxAEhCgwBCyAIIAIQDAsgCkEJSQ0AIAggCmohCiAIQQhqIgggAkEIaiICa0EPTARAA0AgCCACEAwgAkEIaiECIAhBCGoiCCAKSQ0ADAIACwALA0AgCCACEAcgAkEQaiECIAhBEGoiCCAKSQ0ACwsgCxADBEAgCyEQDAQFIA0gDDYCACANIBkgHGogCWs2AgwgDSAJNgIIIA0gFDYCBCAEQQFqIQQgAyALaiEDDAILAAsLIAQgBUgNASAEIBdrIQtBACEEA0AgCyAFSARAIAcgB0HwAGogC0EDcUEEdGoiAikDCCIdNwPIASAHIAIpAwAiHjcDwAECQAJAAkAgBygCvAEiDCAepyICaiIKIBNLDQAgAyAHKALEASIJIAJqIhBqIBhLDQAgEiADayAQQSBqTw0BCyAHIAcpA8gBNwMgIAcgBykDwAE3AxggAyASIAdBGGogB0G8AWogEyAPIBUgERAeIRAMAQsgAiADaiEIIAMgDBAHIAJBEU8EQCADQRBqIQIDQCACIAxBEGoiDBAHIAJBEGoiAiAISQ0ACwsgCCAdpyIGayECIAcgCjYCvAEgBiAIIA9rSwRAIAYgCCAVa0sEQEFsIRAMAgsgESACIA9rIgJqIgwgCWogEU0EQCAIIAwgCRAPGgwCCyAIIAxBACACaxAPIQggByACIAlqIgk2AsQBIAggAmshCCAPIQILIAZBEE8EQCAIIAlqIQYDQCAIIAIQByACQRBqIQIgCEEQaiIIIAZJDQALDAELAkAgBkEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgBkECdCIGQcAeaigCAGoiAhAXIAIgBkHgHmooAgBrIQIgBygCxAEhCQwBCyAIIAIQDAsgCUEJSQ0AIAggCWohBiAIQQhqIgggAkEIaiICa0EPTARAA0AgCCACEAwgAkEIaiECIAhBCGoiCCAGSQ0ADAIACwALA0AgCCACEAcgAkEQaiECIAhBEGoiCCAGSQ0ACwsgEBADDQMgC0EBaiELIAMgEGohAwwBCwsDQCAEQQNHBEAgACAEQQJ0IgJqQazQAWogAiAHaigCVDYCACAEQQFqIQQMAQsLIAcoArwBIQgLQbp/IRAgEyAIayIAIBIgA2tLDQAgAwR/IAMgCCAAEAsgAGoFQQALIAFrIRALIAdB0AFqJAAgEAslACAAQgA3AgAgAEEAOwEIIABBADoACyAAIAE2AgwgACACOgAKC7QFAQN/IwBBMGsiBCQAIABB/wFqIgVBfWohBgJAIAMvAQIEQCAEQRhqIAEgAhAGIgIQAw0BIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahASOgAAIAMgBEEIaiAEQRhqEBI6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0FIAEgBEEQaiAEQRhqEBI6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBSABIARBCGogBEEYahASOgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEjoAACABIAJqIABrIQIMAwsgAyAEQRBqIARBGGoQEjoAAiADIARBCGogBEEYahASOgADIANBBGohAwwAAAsACyAEQRhqIAEgAhAGIgIQAw0AIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahAROgAAIAMgBEEIaiAEQRhqEBE6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0EIAEgBEEQaiAEQRhqEBE6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBCABIARBCGogBEEYahAROgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEToAACABIAJqIABrIQIMAgsgAyAEQRBqIARBGGoQEToAAiADIARBCGogBEEYahAROgADIANBBGohAwwAAAsACyAEQTBqJAAgAgtpAQF/An8CQAJAIAJBB00NACABKAAAQbfIwuF+Rw0AIAAgASgABDYCmOIBQWIgAEEQaiABIAIQPiIDEAMNAhogAEKBgICAEDcDiOEBIAAgASADaiACIANrECoMAQsgACABIAIQKgtBAAsLrQMBBn8jAEGAAWsiAyQAQWIhCAJAIAJBCUkNACAAQZjQAGogAUEIaiIEIAJBeGogAEGY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wOABCwutAgIEfwF+IwBBQGoiBCQAAkACQCACQQhJDQAgASgAAEFwcUHQ1LTCAUcNACABIAIQIiEBIABCADcDCCAAQQA2AgQgACABNgIADAELIARBGGogASACEC0iAxADBEAgACADEBoMAQsgAwRAIABBuH8QGgwBCyACIAQoAjAiA2shAiABIANqIQMDQAJAIAAgAyACIARBCGoQLCIFEAMEfyAFBSACIAVBA2oiBU8NAUG4fwsQGgwCCyAGQQFqIQYgAiAFayECIAMgBWohAyAEKAIMRQ0ACyAEKAI4BEAgAkEDTQRAIABBuH8QGgwCCyADQQRqIQMLIAQoAighAiAEKQMYIQcgAEEANgIEIAAgAyABazYCACAAIAIgBmytIAcgB0J/URs3AwgLIARBQGskAAslAQF/IwBBEGsiAiQAIAIgACABEFEgAigCACEAIAJBEGokACAAC30BBH8jAEGQBGsiBCQAIARB/wE2AggCQCAEQRBqIARBCGogBEEMaiABIAIQFSIGEAMEQCAGIQUMAQtBVCEFIAQoAgwiB0EGSw0AIAMgBEEQaiAEKAIIIAcQQSIFEAMNACAAIAEgBmogAiAGayADEDwhBQsgBEGQBGokACAFC4cBAgJ/An5BABAWIQMCQANAIAEgA08EQAJAIAAoAABBcHFB0NS0wgFGBEAgACABECIiAhADRQ0BQn4PCyAAIAEQVSIEQn1WDQMgBCAFfCIFIARUIQJCfiEEIAINAyAAIAEQUiICEAMNAwsgASACayEBIAAgAmohAAwBCwtCfiAFIAEbIQQLIAQLPwIBfwF+IwBBMGsiAiQAAn5CfiACQQhqIAAgARAtDQAaQgAgAigCHEEBRg0AGiACKQMICyEDIAJBMGokACADC40BAQJ/IwBBMGsiASQAAkAgAEUNACAAKAKI4gENACABIABB/OEBaigCADYCKCABIAApAvThATcDICAAEDAgACgCqOIBIQIgASABKAIoNgIYIAEgASkDIDcDECACIAFBEGoQGyAAQQA2AqjiASABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALKgECfyMAQRBrIgAkACAAQQA2AgggAEIANwMAIAAQWCEBIABBEGokACABC4cBAQN/IwBBEGsiAiQAAkAgACgCAEUgACgCBEVzDQAgAiAAKAIINgIIIAIgACkCADcDAAJ/IAIoAgAiAQRAIAIoAghBqOMJIAERBQAMAQtBqOMJECgLIgFFDQAgASAAKQIANwL04QEgAUH84QFqIAAoAgg2AgAgARBZIAEhAwsgAkEQaiQAIAMLywEBAn8jAEEgayIBJAAgAEGBgIDAADYCtOIBIABBADYCiOIBIABBADYC7OEBIABCADcDkOIBIABBADYCpOMJIABBADYC3OIBIABCADcCzOIBIABBADYCvOIBIABBADYCxOABIABCADcCnOIBIABBpOIBakIANwIAIABBrOIBakEANgIAIAFCADcCECABQgA3AhggASABKQMYNwMIIAEgASkDEDcDACABKAIIQQh2QQFxIQIgAEEANgLg4gEgACACNgKM4gEgAUEgaiQAC3YBA38jAEEwayIBJAAgAARAIAEgAEHE0AFqIgIoAgA2AiggASAAKQK80AE3AyAgACgCACEDIAEgAigCADYCGCABIAApArzQATcDECADIAFBEGoQGyABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALzAEBAX8gACABKAK00AE2ApjiASAAIAEoAgQiAjYCwOABIAAgAjYCvOABIAAgAiABKAIIaiICNgK44AEgACACNgLE4AEgASgCuNABBEAgAEKBgICAEDcDiOEBIAAgAUGk0ABqNgIMIAAgAUGUIGo2AgggACABQZwwajYCBCAAIAFBDGo2AgAgAEGs0AFqIAFBqNABaigCADYCACAAQbDQAWogAUGs0AFqKAIANgIAIABBtNABaiABQbDQAWooAgA2AgAPCyAAQgA3A4jhAQs7ACACRQRAQbp/DwsgBEUEQEFsDwsgAiAEEGAEQCAAIAEgAiADIAQgBRBhDwsgACABIAIgAyAEIAUQZQtGAQF/IwBBEGsiBSQAIAVBCGogBBAOAn8gBS0ACQRAIAAgASACIAMgBBAyDAELIAAgASACIAMgBBA0CyEAIAVBEGokACAACzQAIAAgAyAEIAUQNiIFEAMEQCAFDwsgBSAESQR/IAEgAiADIAVqIAQgBWsgABA1BUG4fwsLRgEBfyMAQRBrIgUkACAFQQhqIAQQDgJ/IAUtAAkEQCAAIAEgAiADIAQQYgwBCyAAIAEgAiADIAQQNQshACAFQRBqJAAgAAtZAQF/QQ8hAiABIABJBEAgAUEE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",pA=new WeakMap;let uA=0,mA;class z extends g.Loader{constructor(A){super(A),this.transcoderPath="",this.transcoderBinary=null,this.transcoderPending=null,this.workerPool=new Bt,this.workerSourceURL="",this.workerConfig=null,typeof MSC_TRANSCODER<"u"&&console.warn('THREE.KTX2Loader: Please update to latest "basis_transcoder". "msc_basis_transcoder" is no longer supported in three.js r125+.')}setTranscoderPath(A){return this.transcoderPath=A,this}setWorkerLimit(A){return this.workerPool.setWorkerLimit(A),this}async detectSupportAsync(A){return this.workerConfig={astcSupported:await A.hasFeatureAsync("texture-compression-astc"),etc1Supported:await A.hasFeatureAsync("texture-compression-etc1"),etc2Supported:await A.hasFeatureAsync("texture-compression-etc2"),dxtSupported:await A.hasFeatureAsync("texture-compression-bc"),bptcSupported:await A.hasFeatureAsync("texture-compression-bptc"),pvrtcSupported:await A.hasFeatureAsync("texture-compression-pvrtc")},this}detectSupport(A){return A.isWebGPURenderer===!0?this.workerConfig={astcSupported:A.hasFeature("texture-compression-astc"),etc1Supported:A.hasFeature("texture-compression-etc1"),etc2Supported:A.hasFeature("texture-compression-etc2"),dxtSupported:A.hasFeature("texture-compression-bc"),bptcSupported:A.hasFeature("texture-compression-bptc"),pvrtcSupported:A.hasFeature("texture-compression-pvrtc")}:this.workerConfig={astcSupported:A.extensions.has("WEBGL_compressed_texture_astc"),etc1Supported:A.extensions.has("WEBGL_compressed_texture_etc1"),etc2Supported:A.extensions.has("WEBGL_compressed_texture_etc"),dxtSupported:A.extensions.has("WEBGL_compressed_texture_s3tc"),bptcSupported:A.extensions.has("EXT_texture_compression_bptc"),pvrtcSupported:A.extensions.has("WEBGL_compressed_texture_pvrtc")||A.extensions.has("WEBKIT_WEBGL_compressed_texture_pvrtc")},this}init(){if(!this.transcoderPending){const A=new g.FileLoader(this.manager);A.setPath(this.transcoderPath),A.setWithCredentials(this.withCredentials);const e=A.loadAsync("basis_transcoder.js"),a=new g.FileLoader(this.manager);a.setPath(this.transcoderPath),a.setResponseType("arraybuffer"),a.setWithCredentials(this.withCredentials);const t=a.loadAsync("basis_transcoder.wasm");this.transcoderPending=Promise.all([e,t]).then(([i,s])=>{const o=z.BasisWorker.toString(),r=["/* constants */","let _EngineFormat = "+JSON.stringify(z.EngineFormat),"let _TranscoderFormat = "+JSON.stringify(z.TranscoderFormat),"let _BasisFormat = "+JSON.stringify(z.BasisFormat),"/* basis_transcoder.js */",i,"/* worker */",o.substring(o.indexOf("{")+1,o.lastIndexOf("}"))].join(`
|
|
3
|
+
`);this.workerSourceURL=URL.createObjectURL(new Blob([r])),this.transcoderBinary=s,this.workerPool.setWorkerCreator(()=>{const c=new Worker(this.workerSourceURL),B=this.transcoderBinary.slice(0);return c.postMessage({type:"init",config:this.workerConfig,transcoderBinary:B},[B]),c})}),uA>0&&console.warn("THREE.KTX2Loader: Multiple active KTX2 loaders may cause performance issues. Use a single KTX2Loader instance, or call .dispose() on old instances."),uA++}return this.transcoderPending}load(A,e,a,t){if(this.workerConfig===null)throw new Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");const i=new g.FileLoader(this.manager);i.setResponseType("arraybuffer"),i.setWithCredentials(this.withCredentials),i.load(A,s=>{this.parse(s,e,t)},a,t)}parse(A,e,a){if(this.workerConfig===null)throw new Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");if(pA.has(A))return pA.get(A).promise.then(e).catch(a);this._createTexture(A).then(t=>e?e(t):null).catch(a)}_createTextureFrom(A,e){const{faces:a,width:t,height:i,format:s,type:o,error:r,dfdFlags:c}=A;if(o==="error")return Promise.reject(r);let B;if(e.faceCount===6)B=new g.CompressedCubeTexture(a,s,g.UnsignedByteType);else{const I=a[0].mipmaps;B=e.layerCount>1?new g.CompressedArrayTexture(I,t,i,e.layerCount,s,g.UnsignedByteType):new g.CompressedTexture(I,t,i,s,g.UnsignedByteType)}return B.minFilter=a[0].mipmaps.length===1?g.LinearFilter:g.LinearMipmapLinearFilter,B.magFilter=g.LinearFilter,B.generateMipmaps=!1,B.needsUpdate=!0,B.colorSpace=Ee(e),B.premultiplyAlpha=!!(c&Ct),B}async _createTexture(A,e={}){const a=ht(new Uint8Array(A));if(a.vkFormat!==Qt)return mt(a);const t=e,i=this.init().then(()=>this.workerPool.postMessage({type:"transcode",buffer:A,taskConfig:t},[A])).then(s=>this._createTextureFrom(s.data,a));return pA.set(A,{promise:i}),i}dispose(){return this.workerPool.dispose(),this.workerSourceURL&&URL.revokeObjectURL(this.workerSourceURL),uA--,this}}z.BasisFormat={ETC1S:0,UASTC_4x4:1};z.TranscoderFormat={ETC1:0,ETC2:1,BC1:2,BC3:3,BC4:4,BC5:5,BC7_M6_OPAQUE_ONLY:6,BC7_M5:7,PVRTC1_4_RGB:8,PVRTC1_4_RGBA:9,ASTC_4x4:10,ATC_RGB:11,ATC_RGBA_INTERPOLATED_ALPHA:12,RGBA32:13,RGB565:14,BGR565:15,RGBA4444:16};z.EngineFormat={RGBAFormat:g.RGBAFormat,RGBA_ASTC_4x4_Format:g.RGBA_ASTC_4x4_Format,RGBA_BPTC_Format:g.RGBA_BPTC_Format,RGBA_ETC2_EAC_Format:g.RGBA_ETC2_EAC_Format,RGBA_PVRTC_4BPPV1_Format:g.RGBA_PVRTC_4BPPV1_Format,RGBA_S3TC_DXT5_Format:g.RGBA_S3TC_DXT5_Format,RGB_ETC1_Format:g.RGB_ETC1_Format,RGB_ETC2_Format:g.RGB_ETC2_Format,RGB_PVRTC_4BPPV1_Format:g.RGB_PVRTC_4BPPV1_Format,RGBA_S3TC_DXT1_Format:g.RGBA_S3TC_DXT1_Format};z.BasisWorker=function(){let n,A,e;const a=_EngineFormat,t=_TranscoderFormat,i=_BasisFormat;self.addEventListener("message",function(E){const h=E.data;switch(h.type){case"init":n=h.config,s(h.transcoderBinary);break;case"transcode":A.then(()=>{try{const{faces:u,buffers:Q,width:f,height:p,hasAlpha:m,format:F,dfdFlags:S}=o(h.buffer);self.postMessage({type:"transcode",id:h.id,faces:u,width:f,height:p,hasAlpha:m,format:F,dfdFlags:S},Q)}catch(u){console.error(u),self.postMessage({type:"error",id:h.id,error:u.message})}});break}});function s(E){A=new Promise(h=>{e={wasmBinary:E,onRuntimeInitialized:h},BASIS(e)}).then(()=>{e.initializeBasis(),e.KTX2File===void 0&&console.warn("THREE.KTX2Loader: Please update Basis Universal transcoder.")})}function o(E){const h=new e.KTX2File(new Uint8Array(E));function u(){h.close(),h.delete()}if(!h.isValid())throw u(),new Error("THREE.KTX2Loader: Invalid or unsupported .ktx2 file");const Q=h.isUASTC()?i.UASTC_4x4:i.ETC1S,f=h.getWidth(),p=h.getHeight(),m=h.getLayers()||1,F=h.getLevels(),S=h.getFaces(),x=h.getHasAlpha(),U=h.getDFDFlags(),{transcoderFormat:b,engineFormat:d}=I(Q,f,p,x);if(!f||!p||!F)throw u(),new Error("THREE.KTX2Loader: Invalid texture");if(!h.startTranscoding())throw u(),new Error("THREE.KTX2Loader: .startTranscoding failed");const w=[],R=[];for(let D=0;D<S;D++){const y=[];for(let k=0;k<F;k++){const L=[];let T,N;for(let P=0;P<m;P++){const $=h.getImageLevelInfo(k,P,D);D===0&&k===0&&P===0&&($.origWidth%4!==0||$.origHeight%4!==0)&&console.warn("THREE.KTX2Loader: ETC1S and UASTC textures should use multiple-of-four dimensions."),F>1?(T=$.origWidth,N=$.origHeight):(T=$.width,N=$.height);const iA=new Uint8Array(h.getImageTranscodedSizeInBytes(k,P,0,b));if(!h.transcodeImage(iA,k,P,D,b,0,-1,-1))throw u(),new Error("THREE.KTX2Loader: .transcodeImage failed.");L.push(iA)}const H=C(L);y.push({data:H,width:T,height:N}),R.push(H.buffer)}w.push({mipmaps:y,width:f,height:p,format:d})}return u(),{faces:w,buffers:R,width:f,height:p,hasAlpha:x,format:d,dfdFlags:U}}const r=[{if:"astcSupported",basisFormat:[i.UASTC_4x4],transcoderFormat:[t.ASTC_4x4,t.ASTC_4x4],engineFormat:[a.RGBA_ASTC_4x4_Format,a.RGBA_ASTC_4x4_Format],priorityETC1S:1/0,priorityUASTC:1,needsPowerOfTwo:!1},{if:"bptcSupported",basisFormat:[i.ETC1S,i.UASTC_4x4],transcoderFormat:[t.BC7_M5,t.BC7_M5],engineFormat:[a.RGBA_BPTC_Format,a.RGBA_BPTC_Format],priorityETC1S:3,priorityUASTC:2,needsPowerOfTwo:!1},{if:"dxtSupported",basisFormat:[i.ETC1S,i.UASTC_4x4],transcoderFormat:[t.BC1,t.BC3],engineFormat:[a.RGBA_S3TC_DXT1_Format,a.RGBA_S3TC_DXT5_Format],priorityETC1S:4,priorityUASTC:5,needsPowerOfTwo:!1},{if:"etc2Supported",basisFormat:[i.ETC1S,i.UASTC_4x4],transcoderFormat:[t.ETC1,t.ETC2],engineFormat:[a.RGB_ETC2_Format,a.RGBA_ETC2_EAC_Format],priorityETC1S:1,priorityUASTC:3,needsPowerOfTwo:!1},{if:"etc1Supported",basisFormat:[i.ETC1S,i.UASTC_4x4],transcoderFormat:[t.ETC1],engineFormat:[a.RGB_ETC1_Format],priorityETC1S:2,priorityUASTC:4,needsPowerOfTwo:!1},{if:"pvrtcSupported",basisFormat:[i.ETC1S,i.UASTC_4x4],transcoderFormat:[t.PVRTC1_4_RGB,t.PVRTC1_4_RGBA],engineFormat:[a.RGB_PVRTC_4BPPV1_Format,a.RGBA_PVRTC_4BPPV1_Format],priorityETC1S:5,priorityUASTC:6,needsPowerOfTwo:!0}],c=r.sort(function(E,h){return E.priorityETC1S-h.priorityETC1S}),B=r.sort(function(E,h){return E.priorityUASTC-h.priorityUASTC});function I(E,h,u,Q){let f,p;const m=E===i.ETC1S?c:B;for(let F=0;F<m.length;F++){const S=m[F];if(n[S.if]&&S.basisFormat.includes(E)&&!(Q&&S.transcoderFormat.length<2)&&!(S.needsPowerOfTwo&&!(l(h)&&l(u))))return f=S.transcoderFormat[Q?1:0],p=S.engineFormat[Q?1:0],{transcoderFormat:f,engineFormat:p}}return console.warn("THREE.KTX2Loader: No suitable compressed texture format found. Decoding to RGBA32."),f=t.RGBA32,p=a.RGBAFormat,{transcoderFormat:f,engineFormat:p}}function l(E){return E<=2?!0:(E&E-1)===0&&E!==0}function C(E){if(E.length===1)return E[0];let h=0;for(let f=0;f<E.length;f++){const p=E[f];h+=p.byteLength}const u=new Uint8Array(h);let Q=0;for(let f=0;f<E.length;f++){const p=E[f];u.set(p,Q),Q+=p.byteLength}return u}};const ut=new Set([g.RGBAFormat,g.RGFormat,g.RedFormat]),wA={[Ce]:g.RGBAFormat,[Ie]:g.RGBAFormat,[oe]:g.RGBAFormat,[re]:g.RGBAFormat,[le]:g.RGFormat,[ge]:g.RGFormat,[se]:g.RGFormat,[ne]:g.RGFormat,[Be]:g.RedFormat,[ce]:g.RedFormat,[ie]:g.RedFormat,[ae]:g.RedFormat,[fe]:g.RGBA_ASTC_6x6_Format,[be]:g.RGBA_ASTC_6x6_Format},DA={[Ce]:g.FloatType,[Ie]:g.HalfFloatType,[oe]:g.UnsignedByteType,[re]:g.UnsignedByteType,[le]:g.FloatType,[ge]:g.HalfFloatType,[se]:g.UnsignedByteType,[ne]:g.UnsignedByteType,[Be]:g.FloatType,[ce]:g.HalfFloatType,[ie]:g.UnsignedByteType,[ae]:g.UnsignedByteType,[fe]:g.UnsignedByteType,[be]:g.UnsignedByteType};async function mt(n){const{vkFormat:A}=n;if(wA[A]===void 0)throw new Error("THREE.KTX2Loader: Unsupported vkFormat.");let e;n.supercompressionScheme===zA&&(mA||(mA=new Promise(async i=>{const s=new pt;await s.init(),i(s)})),e=await mA);const a=[];for(let i=0;i<n.levels.length;i++){const s=Math.max(1,n.pixelWidth>>i),o=Math.max(1,n.pixelHeight>>i),r=n.pixelDepth?Math.max(1,n.pixelDepth>>i):0,c=n.levels[i];let B;if(n.supercompressionScheme===lt)B=c.levelData;else if(n.supercompressionScheme===zA)B=e.decode(c.levelData,c.uncompressedByteLength);else throw new Error("THREE.KTX2Loader: Unsupported supercompressionScheme.");let I;DA[A]===g.FloatType?I=new Float32Array(B.buffer,B.byteOffset,B.byteLength/Float32Array.BYTES_PER_ELEMENT):DA[A]===g.HalfFloatType?I=new Uint16Array(B.buffer,B.byteOffset,B.byteLength/Uint16Array.BYTES_PER_ELEMENT):I=B,a.push({data:I,width:s,height:o,depth:r})}let t;if(ut.has(wA[A]))t=n.pixelDepth===0?new g.DataTexture(a[0].data,n.pixelWidth,n.pixelHeight):new g.Data3DTexture(a[0].data,n.pixelWidth,n.pixelHeight,n.pixelDepth);else{if(n.pixelDepth>0)throw new Error("THREE.KTX2Loader: Unsupported pixelDepth.");t=new g.CompressedTexture(a,n.pixelWidth,n.pixelHeight)}return t.mipmaps=a,t.type=DA[A],t.format=wA[A],t.colorSpace=Ee(n),t.needsUpdate=!0,Promise.resolve(t)}function Ee(n){const A=n.dataFormatDescriptor[0];return A.colorPrimaries===ft?A.transferFunction===XA?g.SRGBColorSpace:g.LinearSRGBColorSpace:A.colorPrimaries===Et?A.transferFunction===XA?g.DisplayP3ColorSpace:g.LinearDisplayP3ColorSpace:(A.colorPrimaries===bt||console.warn(`THREE.KTX2Loader: Unsupported color primaries, "${A.colorPrimaries}"`),g.NoColorSpace)}var wt=function(){var n="b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuikqbeeedddillviebeoweuec:q;iekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbol79IV9Rbrq:P8Yqdbk;3sezu8Jjjjjbcj;eb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Radz1jjjbhwcj;abad9UhoaicefhldnadTmbaoc;WFbGgocjdaocjd6EhDcbhqinaqae9pmeaDaeaq9RaqaDfae6Egkcsfgocl4cifcd4hxdndndndnaoc9WGgmTmbcbhPcehsawcjdfhzalhHinaraH9Rax6midnaraHaxfgl9RcK6mbczhoinawcj;cbfaogifgoc9WfhOdndndndndnaHaic9WfgAco4fRbbaAci4coG4ciGPlbedibkaO9cb83ibaOcwf9cb83ibxikaOalRblalRbbgAco4gCaCciSgCE86bbaocGfalclfaCfgORbbaAcl4ciGgCaCciSgCE86bbaocVfaOaCfgORbbaAcd4ciGgCaCciSgCE86bbaoc7faOaCfgORbbaAciGgAaAciSgAE86bbaoctfaOaAfgARbbalRbegOco4gCaCciSgCE86bbaoc91faAaCfgARbbaOcl4ciGgCaCciSgCE86bbaoc4faAaCfgARbbaOcd4ciGgCaCciSgCE86bbaoc93faAaCfgARbbaOciGgOaOciSgOE86bbaoc94faAaOfgARbbalRbdgOco4gCaCciSgCE86bbaoc95faAaCfgARbbaOcl4ciGgCaCciSgCE86bbaoc96faAaCfgARbbaOcd4ciGgCaCciSgCE86bbaoc97faAaCfgARbbaOciGgOaOciSgOE86bbaoc98faAaOfgORbbalRbiglco4gAaAciSgAE86bbaoc99faOaAfgORbbalcl4ciGgAaAciSgAE86bbaoc9:faOaAfgORbbalcd4ciGgAaAciSgAE86bbaocufaOaAfgoRbbalciGglalciSglE86bbaoalfhlxdkaOalRbwalRbbgAcl4gCaCcsSgCE86bbaocGfalcwfaCfgORbbaAcsGgAaAcsSgAE86bbaocVfaOaAfgORbbalRbegAcl4gCaCcsSgCE86bbaoc7faOaCfgORbbaAcsGgAaAcsSgAE86bbaoctfaOaAfgORbbalRbdgAcl4gCaCcsSgCE86bbaoc91faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc4faOaAfgORbbalRbigAcl4gCaCcsSgCE86bbaoc93faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc94faOaAfgORbbalRblgAcl4gCaCcsSgCE86bbaoc95faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc96faOaAfgORbbalRbvgAcl4gCaCcsSgCE86bbaoc97faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc98faOaAfgORbbalRbogAcl4gCaCcsSgCE86bbaoc99faOaCfgORbbaAcsGgAaAcsSgAE86bbaoc9:faOaAfgORbbalRbrglcl4gAaAcsSgAE86bbaocufaOaAfgoRbbalcsGglalcsSglE86bbaoalfhlxekaOal8Pbb83bbaOcwfalcwf8Pbb83bbalczfhlkdnaiam9pmbaiczfhoaral9RcL0mekkaiam6mialTmidnakTmbawaPfRbbhOcbhoazhiinaiawcj;cbfaofRbbgAce4cbaAceG9R7aOfgO86bbaiadfhiaocefgoak9hmbkkazcefhzaPcefgPad6hsalhHaPad9hmexvkkcbhlasceGmdxikalaxad2fhCdnakTmbcbhHcehsawcjdfhminaral9Rax6mialTmdalaxfhlawaHfRbbhOcbhoamhiinaiawcj;cbfaofRbbgAce4cbaAceG9R7aOfgO86bbaiadfhiaocefgoak9hmbkamcefhmaHcefgHad6hsaHad9hmbkaChlxikcbhocehsinaral9Rax6mdalTmealaxfhlaocefgoad6hsadao9hmbkaChlxdkcbhlasceGTmekc9:hoxikabaqad2fawcjdfakad2z1jjjb8Aawawcjdfakcufad2fadz1jjjb8Aakaqfhqalmbkc9:hoxekcbc99aral9Radcaadca0ESEhokavcj;ebf8Kjjjjbaok;yzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecjez:jjjjb8AavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhDcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgrc;Ve0mbavc;abfalarcl4cu7fcsGcitfgPydlhsaPydbhzdnarcsGgPak9pmbavaiarcu7fcsGcdtfydbaxaPEhraPThPdndnadcd9hmbabaDcetfgHaz87ebaHcdfas87ebaHclfar87ebxekabaDcdtfgHazBdbaHclfasBdbaHcwfarBdbkaxaPfhxavc;abfalcitfgHarBdbaHasBdlavaicdtfarBdbavc;abfalcefcsGglcitfgHazBdbaHarBdlaiaPfhialcefhlxdkdndnaPcsSmbamaPfaPc987fcefhmxekaocefhrao8SbbgPcFeGhHdndnaPcu9mmbarhoxekaocvfhoaHcFbGhHcrhPdninar8SbbgOcFbGaPtaHVhHaOcu9kmearcefhraPcrfgPc8J9hmbxdkkarcefhokaHce4cbaHceG9R7amfhmkdndnadcd9hmbabaDcetfgraz87ebarcdfas87ebarclfam87ebxekabaDcdtfgrazBdbarclfasBdbarcwfamBdbkavc;abfalcitfgramBdbarasBdlavaicdtfamBdbavc;abfalcefcsGglcitfgrazBdbaramBdlaicefhialcefhlxekdnarcpe0mbaxcefgOavaiaqarcsGfRbbgPcl49RcsGcdtfydbaPcz6gHEhravaiaP9RcsGcdtfydbaOaHfgsaPcsGgOEhPaOThOdndnadcd9hmbabaDcetfgzax87ebazcdfar87ebazclfaP87ebxekabaDcdtfgzaxBdbazclfarBdbazcwfaPBdbkavaicdtfaxBdbavc;abfalcitfgzarBdbazaxBdlavaicefgicsGcdtfarBdbavc;abfalcefcsGcitfgzaPBdbazarBdlavaiaHfcsGgicdtfaPBdbavc;abfalcdfcsGglcitfgraxBdbaraPBdlalcefhlaiaOfhiasaOfhxxekaxcbaoRbbgzEgAarc;:eSgrfhsazcsGhCazcl4hXdndnazcs0mbascefhOxekashOavaiaX9RcsGcdtfydbhskdndnaCmbaOcefhxxekaOhxavaiaz9RcsGcdtfydbhOkdndnarTmbaocefhrxekaocdfhrao8SbegHcFeGhPdnaHcu9kmbaocofhAaPcFbGhPcrhodninar8SbbgHcFbGaotaPVhPaHcu9kmearcefhraocrfgoc8J9hmbkaAhrxekarcefhrkaPce4cbaPceG9R7amfgmhAkdndnaXcsSmbarhPxekarcefhPar8SbbgocFeGhHdnaocu9kmbarcvfhsaHcFbGhHcrhodninaP8SbbgrcFbGaotaHVhHarcu9kmeaPcefhPaocrfgoc8J9hmbkashPxekaPcefhPkaHce4cbaHceG9R7amfgmhskdndnaCcsSmbaPhoxekaPcefhoaP8SbbgrcFeGhHdnarcu9kmbaPcvfhOaHcFbGhHcrhrdninao8SbbgPcFbGartaHVhHaPcu9kmeaocefhoarcrfgrc8J9hmbkaOhoxekaocefhokaHce4cbaHceG9R7amfgmhOkdndnadcd9hmbabaDcetfgraA87ebarcdfas87ebarclfaO87ebxekabaDcdtfgraABdbarclfasBdbarcwfaOBdbkavc;abfalcitfgrasBdbaraABdlavaicdtfaABdbavc;abfalcefcsGcitfgraOBdbarasBdlavaicefgicsGcdtfasBdbavc;abfalcdfcsGcitfgraABdbaraOBdlavaiazcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiaDcifgDae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:llevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:Lvoeue99dud99eud99dndnadcl9hmbaeTmeindndnabcdfgd8Sbb:Yab8Sbbgi:Ygl:l:tabcefgv8Sbbgo:Ygr:l:tgwJbb;:9cawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai86bbdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad86bbdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad86bbabclfhbaecufgembxdkkaeTmbindndnabclfgd8Ueb:Yab8Uebgi:Ygl:l:tabcdfgv8Uebgo:Ygr:l:tgwJb;:FSawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai87ebdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad87ebdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad87ebabcwfhbaecufgembkkk;siliui99iue99dnaeTmbcbhiabhlindndnJ;Zl81Zalcof8UebgvciV:Y:vgoal8Ueb:YNgrJb;:FSNJbbbZJbbb:;arJbbbb9GEMgw:lJbbb9p9DTmbaw:OhDxekcjjjj94hDkalclf8Uebhqalcdf8UebhkabavcefciGaiVcetfaD87ebdndnaoak:YNgwJb;:FSNJbbbZJbbb:;awJbbbb9GEMgx:lJbbb9p9DTmbax:Ohkxekcjjjj94hkkabavcdfciGaiVcetfak87ebdndnaoaq:YNgoJb;:FSNJbbbZJbbb:;aoJbbbb9GEMgx:lJbbb9p9DTmbax:Ohqxekcjjjj94hqkabavcufciGaiVcetfaq87ebdndnJbbjZararN:tawawN:taoaoN:tgrJbbbbarJbbbb9GE:rJb;:FSNJbbbZMgr:lJbbb9p9DTmbar:Ohqxekcjjjj94hqkabavciGaiVcetfaq87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2geTmbinababydbgdcwtcw91:Yadce91cjjj;8ifcjjj98G::NUdbabclfhbaecufgembkkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaiczfhiaeczfheadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkkkebcjwklz9Kbb",A="b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuikqbbebeedddilve9Weeeviebeoweuec:q;Aekr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbwl79IV9RbDq;t9tqlbzik9:evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaec:q:yjjbfai86bbaecitc:q1jjbfab8Piw83ibaecefgecjd9hmbkk;h8JlHud97euo978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnadcefal0mbcuhoaiRbbc:Ge9hmbavaialfgrad9Rad;8qbbcj;abad9UhoaicefhldnadTmbaoc;WFbGgocjdaocjd6EhwcbhDinaDae9pmeawaeaD9RaDawfae6Egqcsfgoc9WGgkci2hxakcethmaocl4cifcd4hPabaDad2fhscbhzdnincehHalhOcbhAdninaraO9RaP6miavcj;cbfaAak2fhCaOaPfhlcbhidnakc;ab6mbaral9Rc;Gb6mbcbhoinaCaofhidndndndndnaOaoco4fRbbgXciGPlbedibkaipxbbbbbbbbbbbbbbbbpklbxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklbalczfhlkdndndndndnaXcd4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklzxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklzalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklzalczfhlkdndndndndnaXcl4ciGPlbedibkaipxbbbbbbbbbbbbbbbbpklaxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklaalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaialpbbbpklaalczfhlkdndndndndnaXco4Plbedibkaipxbbbbbbbbbbbbbbbbpkl8WxikaialpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalclfaYpQbfaXc:q:yjjbfRbbfhlxdkaialpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibaXc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgXcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spkl8WalcwfaYpQbfaXc:q:yjjbfRbbfhlxekaialpbbbpkl8Walczfhlkaoc;abfhiaocjefak0meaihoaral9Rc;Fb0mbkkdndnaiak9pmbaici4hoinaral9RcK6mdaCaifhXdndndndndnaOaico4fRbbaocoG4ciGPlbedibkaXpxbbbbbbbbbbbbbbbbpklbxikaXalpbblalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLgQcdp:meaQpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogLpxiiiiiiiiiiiiiiiip8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalclfaYpQbfaKc:q:yjjbfRbbfhlxdkaXalpbbwalpbbbgQclp:meaQpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogLpxssssssssssssssssp8JgQp5b9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibaKc:q:yjjbfpbbbgYaYpmbbbbbbbbbbbbbbbbaQp5e9cjF;8;4;W;G;ab9:9cU1:NgKcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPaLaQp9spklbalcwfaYpQbfaKc:q:yjjbfRbbfhlxekaXalpbbbpklbalczfhlkaocdfhoaiczfgiak6mbkkalTmbaAci6hHalhOaAcefgohAaoclSmdxekkcbhlaHceGmdkdnakTmbavcjdfazfhiavazfpbdbhYcbhXinaiavcj;cbfaXfgopblbgLcep9TaLpxeeeeeeeeeeeeeeeegQp9op9Hp9rgLaoakfpblbg8Acep9Ta8AaQp9op9Hp9rg8ApmbzeHdOiAlCvXoQrLgEaoamfpblbg3cep9Ta3aQp9op9Hp9rg3aoaxfpblbg5cep9Ta5aQp9op9Hp9rg5pmbzeHdOiAlCvXoQrLg8EpmbezHdiOAlvCXorQLgQaQpmbedibedibedibediaYp9UgYp9AdbbaiadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaEa8EpmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwKDYq8AkEx3m5P8Es8FgLa3a5pmwKDYq8AkEx3m5P8Es8Fg8ApmbezHdiOAlvCXorQLgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfgoaYaLa8ApmwDKYqk8AExm35Ps8E8FgQaQpmbedibedibedibedip9UgYp9AdbbaoadfgoaYaQaQpmlvorlvorlvorlvorp9UgYp9AdbbaoadfgoaYaQaQpmwDqkwDqkwDqkwDqkp9UgYp9AdbbaoadfgoaYaQaQpmxmPsxmPsxmPsxmPsp9UgYp9AdbbaoadfhiaXczfgXak6mbkkazclfgzad6mbkasavcjdfaqad2;8qbbavavcjdfaqcufad2fad;8qbbaqaDfhDc9:hoalmexikkc9:hoxekcbc99aral9Radcaadca0ESEhokavcj;kbf8Kjjjjbaokwbz:bjjjbk;uzeHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecje;8kbavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhodnaeTmbcmcsaDceSEhkcbhxcbhmcbhDcbhicbhlindnaoaq9nmbc9:hoxikdndnawRbbgrc;Ve0mbavc;abfalarcl4cu7fcsGcitfgPydlhsaPydbhzdnarcsGgPak9pmbavaiarcu7fcsGcdtfydbaxaPEhraPThPdndnadcd9hmbabaDcetfgHaz87ebaHcdfas87ebaHclfar87ebxekabaDcdtfgHazBdbaHclfasBdbaHcwfarBdbkaxaPfhxavc;abfalcitfgHarBdbaHasBdlavaicdtfarBdbavc;abfalcefcsGglcitfgHazBdbaHarBdlaiaPfhialcefhlxdkdndnaPcsSmbamaPfaPc987fcefhmxekaocefhrao8SbbgPcFeGhHdndnaPcu9mmbarhoxekaocvfhoaHcFbGhHcrhPdninar8SbbgOcFbGaPtaHVhHaOcu9kmearcefhraPcrfgPc8J9hmbxdkkarcefhokaHce4cbaHceG9R7amfhmkdndnadcd9hmbabaDcetfgraz87ebarcdfas87ebarclfam87ebxekabaDcdtfgrazBdbarclfasBdbarcwfamBdbkavc;abfalcitfgramBdbarasBdlavaicdtfamBdbavc;abfalcefcsGglcitfgrazBdbaramBdlaicefhialcefhlxekdnarcpe0mbaxcefgOavaiaqarcsGfRbbgPcl49RcsGcdtfydbaPcz6gHEhravaiaP9RcsGcdtfydbaOaHfgsaPcsGgOEhPaOThOdndnadcd9hmbabaDcetfgzax87ebazcdfar87ebazclfaP87ebxekabaDcdtfgzaxBdbazclfarBdbazcwfaPBdbkavaicdtfaxBdbavc;abfalcitfgzarBdbazaxBdlavaicefgicsGcdtfarBdbavc;abfalcefcsGcitfgzaPBdbazarBdlavaiaHfcsGgicdtfaPBdbavc;abfalcdfcsGglcitfgraxBdbaraPBdlalcefhlaiaOfhiasaOfhxxekaxcbaoRbbgzEgAarc;:eSgrfhsazcsGhCazcl4hXdndnazcs0mbascefhOxekashOavaiaX9RcsGcdtfydbhskdndnaCmbaOcefhxxekaOhxavaiaz9RcsGcdtfydbhOkdndnarTmbaocefhrxekaocdfhrao8SbegHcFeGhPdnaHcu9kmbaocofhAaPcFbGhPcrhodninar8SbbgHcFbGaotaPVhPaHcu9kmearcefhraocrfgoc8J9hmbkaAhrxekarcefhrkaPce4cbaPceG9R7amfgmhAkdndnaXcsSmbarhPxekarcefhPar8SbbgocFeGhHdnaocu9kmbarcvfhsaHcFbGhHcrhodninaP8SbbgrcFbGaotaHVhHarcu9kmeaPcefhPaocrfgoc8J9hmbkashPxekaPcefhPkaHce4cbaHceG9R7amfgmhskdndnaCcsSmbaPhoxekaPcefhoaP8SbbgrcFeGhHdnarcu9kmbaPcvfhOaHcFbGhHcrhrdninao8SbbgPcFbGartaHVhHaPcu9kmeaocefhoarcrfgrc8J9hmbkaOhoxekaocefhokaHce4cbaHceG9R7amfgmhOkdndnadcd9hmbabaDcetfgraA87ebarcdfas87ebarclfaO87ebxekabaDcdtfgraABdbarclfasBdbarcwfaOBdbkavc;abfalcitfgrasBdbaraABdlavaicdtfaABdbavc;abfalcefcsGcitfgraOBdbarasBdlavaicefgicsGcdtfasBdbavc;abfalcdfcsGcitfgraABdbaraOBdlavaiazcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhialcifhlkawcefhwalcsGhlaicsGhiaDcifgDae6mbkkcbc99aoaqSEhokavc;aef8Kjjjjbaok:llevu8Jjjjjbcz9Rhvc9:hodnaecvfal0mbcuhoaiRbbc;:eGc;qe9hmbav9cb83iwaicefhraialfc98fhwdnaeTmbdnadcdSmbcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcdtfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfglBdbaoalBdbaDcefgDae9hmbxdkkcbhDindnaraw6mbc9:skarcefhoar8SbbglcFeGhidndnalcu9mmbaohrxekarcvfhraicFbGhicrhldninao8SbbgdcFbGaltaiVhiadcu9kmeaocefhoalcrfglc8J9hmbxdkkaocefhrkabaDcetfaicd4cbaice4ceG9R7avcwfaiceGcdtVgoydbfgl87ebaoalBdbaDcefgDae9hmbkkcbc99arawSEhokaok:EPliuo97eue978Jjjjjbca9Rhidndnadcl9hmbdnaec98GglTmbcbhvabhdinadadpbbbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbadczfhdavclfgval6mbkkalae9pmeaiaeciGgvcdtgdVcbczad9R;8kbaiabalcdtfglad;8qbbdnavTmbaiaipblbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpklbkalaiad;8qbbskdnaec98GgxTmbcbhvabhdinadczfglalpbbbgopxbbbbbbFFbbbbbbFFgkp9oadpbbbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpkbbadaDakp9oawaopmbezHdiOAlvCXorQLp9qpkbbadcafhdavclfgvax6mbkkaxae9pmbaiaeciGgvcitgdfcbcaad9R;8kbaiabaxcitfglad;8qbbdnavTmbaiaipblzgopxbbbbbbFFbbbbbbFFgkp9oaipblbgDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eaDaopmbediwDqkzHOAKY8AEgoczp:Sep;6egrp;Geaoczp:Reczp:Sep;6egwp;Gep;Kep;Legopxb;:FSb;:FSb;:FSb;:FSawaopxbbbbbbbbbbbbbbbbp:2egqawpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegwawp;Meaoaop;Mearaqaramp9op9rp;Kegoaop;Mep;Kep;Kep;Jep;Negrp;Mepxbbn0bbn0bbn0bbn0gqp;Keczp:Reawarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9op9qgwaoarp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogopmwDKYqk8AExm35Ps8E8Fp9qpklzaiaDakp9oawaopmbezHdiOAlvCXorQLp9qpklbkalaiad;8qbbkk;4wllue97euv978Jjjjjbc8W9Rhidnaec98GglTmbcbhvabhoinaiaopbbbgraoczfgwpbbbgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklbaopxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblbpEb:T:j83ibaocwfarp5eaipblbpEe:T:j83ibawaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblbpEd:T:j83ibaocKfakp5eaipblbpEi:T:j83ibaocafhoavclfgval6mbkkdnalae9pmbaiaeciGgvcitgofcbcaao9R;8kbaiabalcitfgwao;8qbbdnavTmbaiaipblbgraipblzgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklaaipxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaqakp;Mearp;Keczp:ReaDakp;Mearp;Keamp9op9qgkpmbezHdiOAlvCXorQLgrp5baipblapEb:T:j83ibaiarp5eaipblapEe:T:j83iwaiaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblapEd:T:j83izaiakp5eaipblapEi:T:j83iKkawaiao;8qbbkk:Pddiue978Jjjjjbc;ab9Rhidnadcd4ae2glc98GgvTmbcbhdabheinaeaepbbbgocwp:Recwp:Sep;6eaocep:SepxbbjZbbjZbbjZbbjZp:UepxbbjFbbjFbbjFbbjFp9op;Mepkbbaeczfheadclfgdav6mbkkdnaval9pmbaialciGgdcdtgeVcbc;abae9R;8kbaiabavcdtfgvae;8qbbdnadTmbaiaipblbgocwp:Recwp:Sep;6eaocep:SepxbbjZbbjZbbjZbbjZp:UepxbbjFbbjFbbjFbbjFp9op;Mepklbkavaiae;8qbbkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkkebcjwklz9Tbb",e=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]),a=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var t=WebAssembly.validate(e)?A:n,i,s=WebAssembly.instantiate(o(t),{}).then(function(Q){i=Q.instance,i.exports.__wasm_call_ctors()});function o(Q){for(var f=new Uint8Array(Q.length),p=0;p<Q.length;++p){var m=Q.charCodeAt(p);f[p]=m>96?m-97:m>64?m-39:m+4}for(var F=0,p=0;p<Q.length;++p)f[F++]=f[p]<60?a[f[p]]:(f[p]-60)*64+f[++p];return f.buffer.slice(0,F)}function r(Q,f,p,m,F,S){var x=i.exports.sbrk,U=p+3&-4,b=x(U*m),d=x(F.length),w=new Uint8Array(i.exports.memory.buffer);w.set(F,d);var R=Q(b,p,m,d,F.length);if(R==0&&S&&S(b,U,m),f.set(w.subarray(b,b+p*m)),x(b-x(0)),R!=0)throw new Error("Malformed buffer data: "+R)}var c={NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},B={ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"},I=[],l=0;function C(Q){var f={object:new Worker(Q),pending:0,requests:{}};return f.object.onmessage=function(p){var m=p.data;f.pending-=m.count,f.requests[m.id][m.action](m.value),delete f.requests[m.id]},f}function E(Q){for(var f="var instance; var ready = WebAssembly.instantiate(new Uint8Array(["+new Uint8Array(o(t))+"]), {}).then(function(result) { instance = result.instance; instance.exports.__wasm_call_ctors(); });self.onmessage = workerProcess;"+r.toString()+u.toString(),p=new Blob([f],{type:"text/javascript"}),m=URL.createObjectURL(p),F=0;F<Q;++F)I[F]=C(m);URL.revokeObjectURL(m)}function h(Q,f,p,m,F){for(var S=I[0],x=1;x<I.length;++x)I[x].pending<S.pending&&(S=I[x]);return new Promise(function(U,b){var d=new Uint8Array(p),w=l++;S.pending+=Q,S.requests[w]={resolve:U,reject:b},S.object.postMessage({id:w,count:Q,size:f,source:d,mode:m,filter:F},[d.buffer])})}function u(Q){s.then(function(){var f=Q.data;try{var p=new Uint8Array(f.count*f.size);r(i.exports[f.mode],p,f.count,f.size,f.source,i.exports[f.filter]),self.postMessage({id:f.id,count:f.count,action:"resolve",value:p},[p.buffer])}catch(m){self.postMessage({id:f.id,count:f.count,action:"reject",value:m})}})}return{ready:s,supported:!0,useWorkers:function(Q){E(Q)},decodeVertexBuffer:function(Q,f,p,m,F){r(i.exports.meshopt_decodeVertexBuffer,Q,f,p,m,i.exports[c[F]])},decodeIndexBuffer:function(Q,f,p,m){r(i.exports.meshopt_decodeIndexBuffer,Q,f,p,m)},decodeIndexSequence:function(Q,f,p,m){r(i.exports.meshopt_decodeIndexSequence,Q,f,p,m)},decodeGltfBuffer:function(Q,f,p,m,F,S){r(i.exports[B[F]],Q,f,p,m,i.exports[c[S]])},decodeGltfBufferAsync:function(Q,f,p,m,F){return I.length>0?h(Q,f,p,B[m],c[F]):s.then(function(){var S=new Uint8Array(Q*f);return r(i.exports[B[m]],S,Q,f,p,i.exports[c[F]]),S})}}}();function MA(){const n=new gt;n.setDecoderPath("/draco/");const A=new z;A.setTranscoderPath("/draco/");const e=new Se().setDRACOLoader(n).setKTX2Loader(A.detectSupport(new g.WebGLRenderer)).setMeshoptDecoder(wt);return e.manager.onError=a=>{W.emit("load-error",`Failed to load file ${a}`)},e}/*!
|
|
4
4
|
fflate - fast JavaScript compression/decompression
|
|
5
5
|
<https://101arrowz.github.io/fflate>
|
|
6
6
|
Licensed under MIT. https://github.com/101arrowz/fflate/blob/master/LICENSE
|
|
7
7
|
version 0.8.2
|
|
8
|
-
*/var v=Uint8Array,nA=Uint16Array,Dt=Int32Array,Qe=new v([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]),de=new v([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]),Rt=new v([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),he=function(n,A){for(var e=new nA(31),a=0;a<31;++a)e[a]=A+=1<<n[a-1];for(var t=new Dt(e[30]),a=1;a<30;++a)for(var i=e[a];i<e[a+1];++i)t[i]=i-e[a]<<5|a;return{b:e,r:t}},pe=he(Qe,2),ue=pe.b,Ft=pe.r;ue[28]=258,Ft[258]=28;var kt=he(de,0),St=kt.b,xA=new nA(32768);for(var M=0;M<32768;++M){var eA=(M&43690)>>1|(M&21845)<<1;eA=(eA&52428)>>2|(eA&13107)<<2,eA=(eA&61680)>>4|(eA&3855)<<4,xA[M]=((eA&65280)>>8|(eA&255)<<8)>>1}var IA=function(n,A,e){for(var a=n.length,t=0,i=new nA(A);t<a;++t)n[t]&&++i[n[t]-1];var s=new nA(A);for(t=1;t<A;++t)s[t]=s[t-1]+i[t-1]<<1;var o;if(e){o=new nA(1<<A);var r=15-A;for(t=0;t<a;++t)if(n[t])for(var c=t<<4|n[t],B=A-n[t],I=s[n[t]-1]++<<B,l=I|(1<<B)-1;I<=l;++I)o[xA[I]>>r]=c}else for(o=new nA(a),t=0;t<a;++t)n[t]&&(o[t]=xA[s[n[t]-1]++]>>15-n[t]);return o},BA=new v(288);for(var M=0;M<144;++M)BA[M]=8;for(var M=144;M<256;++M)BA[M]=9;for(var M=256;M<280;++M)BA[M]=7;for(var M=280;M<288;++M)BA[M]=8;var me=new v(32);for(var M=0;M<32;++M)me[M]=5;var yt=IA(BA,9,1),Gt=IA(me,5,1),RA=function(n){for(var A=n[0],e=1;e<n.length;++e)n[e]>A&&(A=n[e]);return A},J=function(n,A,e){var a=A/8|0;return(n[a]|n[a+1]<<8)>>(A&7)&e},FA=function(n,A){var e=A/8|0;return(n[e]|n[e+1]<<8|n[e+2]<<16)>>(A&7)},xt=function(n){return(n+7)/8|0},UA=function(n,A,e){return(A==null||A<0)&&(A=0),(e==null||e>n.length)&&(e=n.length),new v(n.subarray(A,e))},Lt=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],
|
|
9
|
-
`);let t=null,i=e;const s=[e];for(const o of a)if(o.includes("=")){const r=o.split("="),c=r[0].trim(),B=r[1].trim();if(B.endsWith("{")){const I={};s.push(I),i[c]=I,i=I}else if(B.endsWith("(")){const I=B.slice(0,-1);i[c]=I;const l={};s.push(l),i=l}else i[c]=B}else if(o.endsWith("{")){const r=i[t]||{};s.push(r),i[t]=r,i=r}else if(o.endsWith("}")){if(s.pop(),s.length===0)continue;i=s[s.length-1]}else if(o.endsWith("(")){const r={};s.push(r),t=o.split("(")[0].trim()||t,i[t]=r,i=r}else o.endsWith(")")?(s.pop(),i=s[s.length-1]):t=o.trim();return e}}class jt extends g.Loader{constructor(A){super(A)}load(A,e,a,t){const i=this,s=new g.FileLoader(i.manager);s.setPath(i.path),s.setResponseType("arraybuffer"),s.setRequestHeader(i.requestHeader),s.setWithCredentials(i.withCredentials),s.load(A,function(o){try{e(i.parse(o))}catch(r){t?t(r):console.error(r),i.manager.itemError(A)}},a,t)}parse(A){const e=new Pt;function a(b){const d={};new g.FileLoader().setResponseType("arraybuffer");for(const R in b){if(R.endsWith("png")){const D=new Blob([b[R]],{type:{type:"image/png"}});d[R]=URL.createObjectURL(D)}if(R.endsWith("usd")||R.endsWith("usda")){if(t(b[R]))throw Error("THREE.USDZLoader: Crate files (.usdc or binary .usd) are not supported.");const D=TA(b[R]);d[R]=e.parse(D)}}return d}function t(b){const d=b.slice(0,7),w=new Uint8Array([80,88,82,45,85,83,68,67]);return d.every((R,D)=>R===w[D])}function i(b){if(b.length<1)return;const d=Object.keys(b)[0];let w=!1;if(d.endsWith("usda"))return b[d];if(d.endsWith("usdc"))w=!0;else if(d.endsWith("usd"))if(t(b[d]))w=!0;else return b[d];if(w)throw Error("THREE.USDZLoader: Crate files (.usdc or binary .usd) are not supported.")}const s=vt(new Uint8Array(A)),o=a(s),r=i(s),c=TA(r),B=e.parse(c);function I(b){if(b){if("prepend references"in b){const w=b["prepend references"].split("@"),R=w[1].replace(/^.\//,""),D=w[2].replace(/^<\//,"").replace(/>$/,"");return l(o[R],D)}return l(b)}}function l(b,d){if(b){if(d!==void 0){const w=`def Mesh "${d}"`;if(w in b)return b[w]}for(const w in b){const R=b[w];if(w.startsWith("def Mesh"))return R;if(typeof R=="object"){const D=l(R);if(D)return D}}}}function C(b){if(!b)return;const d=new g.BufferGeometry;let w=null,R=null,D=null,y=-1;if("int[] faceVertexIndices"in b&&(w=JSON.parse(b["int[] faceVertexIndices"])),"int[] faceVertexCounts"in b&&(R=JSON.parse(b["int[] faceVertexCounts"]),w=E(w,R)),"point3f[] points"in b){const k=JSON.parse(b["point3f[] points"].replace(/[()]*/g,""));y=k.length;let L=new g.BufferAttribute(new Float32Array(k),3);w!==null&&(L=h(L,w)),d.setAttribute("position",L)}if("float2[] primvars:st"in b&&(b["texCoord2f[] primvars:st"]=b["float2[] primvars:st"]),"texCoord2f[] primvars:st"in b){D=JSON.parse(b["texCoord2f[] primvars:st"].replace(/[()]*/g,""));let k=new g.BufferAttribute(new Float32Array(D),2);w!==null&&(k=h(k,w)),d.setAttribute("uv",k)}if("int[] primvars:st:indices"in b&&D!==null){const k=new g.BufferAttribute(new Float32Array(D),2);let L=JSON.parse(b["int[] primvars:st:indices"]);L=E(L,R),d.setAttribute("uv",h(k,L))}if("normal3f[] normals"in b){const k=JSON.parse(b["normal3f[] normals"].replace(/[()]*/g,""));let L=new g.BufferAttribute(new Float32Array(k),3);if(k.length===y)w!==null&&(L=h(L,w));else{let T=Array.from(Array(k.length/3).keys());T=E(T,R),L=h(L,T)}d.setAttribute("normal",L)}else d.computeVertexNormals();return d}function E(b,d){const w=[];for(let R=0;R<d.length;R++){const D=d[R],y=R*D;if(D===3){const k=b[y+0],L=b[y+1],T=b[y+2];w.push(k,L,T)}else if(D===4){const k=b[y+0],L=b[y+1],T=b[y+2],N=b[y+3];w.push(k,L,T),w.push(k,T,N)}else console.warn("THREE.USDZLoader: Face vertex count of %s unsupported.",D)}return w}function h(b,d){const w=b.array,R=b.itemSize,D=new w.constructor(d.length*R);let y=0,k=0;for(let L=0,T=d.length;L<T;L++){y=d[L]*R;for(let N=0;N<R;N++)D[k++]=w[y++]}return new g.BufferAttribute(D,R)}function u(b){if(b){if("rel material:binding"in b){const R=b["rel material:binding"].replace(/^<\//,"").replace(/>$/,"").split("/");return Q(B,` "${R[1]}"`)}return Q(b)}}function Q(b,d=""){for(const w in b){const R=b[w];if(w.startsWith("def Material"+d))return R;if(typeof R=="object"){const D=Q(R,d);if(D)return D}}}function f(b,d){d["float inputs:rotation"]&&(b.rotation=parseFloat(d["float inputs:rotation"])),d["float2 inputs:scale"]&&(b.repeat=new g.Vector2().fromArray(JSON.parse("["+d["float2 inputs:scale"].replace(/[()]*/g,"")+"]"))),d["float2 inputs:translation"]&&(b.offset=new g.Vector2().fromArray(JSON.parse("["+d["float2 inputs:translation"].replace(/[()]*/g,"")+"]")))}function p(b){const d=new g.MeshPhysicalMaterial;if(b!==void 0){const w=b["token outputs:surface.connect"],R=/(\w+).output/.exec(w)[1],D=b[`def Shader "${R}"`];if(D!==void 0){if("color3f inputs:diffuseColor.connect"in D){const y=D["color3f inputs:diffuseColor.connect"],k=m(B,/(\w+).output/.exec(y)[1]);d.map=F(k),d.map.colorSpace=g.SRGBColorSpace,'def Shader "Transform2d_diffuse"'in b&&f(d.map,b['def Shader "Transform2d_diffuse"'])}else if("color3f inputs:diffuseColor"in D){const y=D["color3f inputs:diffuseColor"].replace(/[()]*/g,"");d.color.fromArray(JSON.parse("["+y+"]"))}if("color3f inputs:emissiveColor.connect"in D){const y=D["color3f inputs:emissiveColor.connect"],k=m(B,/(\w+).output/.exec(y)[1]);d.emissiveMap=F(k),d.emissiveMap.colorSpace=g.SRGBColorSpace,d.emissive.set(16777215),'def Shader "Transform2d_emissive"'in b&&f(d.emissiveMap,b['def Shader "Transform2d_emissive"'])}else if("color3f inputs:emissiveColor"in D){const y=D["color3f inputs:emissiveColor"].replace(/[()]*/g,"");d.emissive.fromArray(JSON.parse("["+y+"]"))}if("normal3f inputs:normal.connect"in D){const y=D["normal3f inputs:normal.connect"],k=m(B,/(\w+).output/.exec(y)[1]);d.normalMap=F(k),d.normalMap.colorSpace=g.NoColorSpace,'def Shader "Transform2d_normal"'in b&&f(d.normalMap,b['def Shader "Transform2d_normal"'])}if("float inputs:roughness.connect"in D){const y=D["float inputs:roughness.connect"],k=m(B,/(\w+).output/.exec(y)[1]);d.roughness=1,d.roughnessMap=F(k),d.roughnessMap.colorSpace=g.NoColorSpace,'def Shader "Transform2d_roughness"'in b&&f(d.roughnessMap,b['def Shader "Transform2d_roughness"'])}else"float inputs:roughness"in D&&(d.roughness=parseFloat(D["float inputs:roughness"]));if("float inputs:metallic.connect"in D){const y=D["float inputs:metallic.connect"],k=m(B,/(\w+).output/.exec(y)[1]);d.metalness=1,d.metalnessMap=F(k),d.metalnessMap.colorSpace=g.NoColorSpace,'def Shader "Transform2d_metallic"'in b&&f(d.metalnessMap,b['def Shader "Transform2d_metallic"'])}else"float inputs:metallic"in D&&(d.metalness=parseFloat(D["float inputs:metallic"]));if("float inputs:clearcoat.connect"in D){const y=D["float inputs:clearcoat.connect"],k=m(B,/(\w+).output/.exec(y)[1]);d.clearcoat=1,d.clearcoatMap=F(k),d.clearcoatMap.colorSpace=g.NoColorSpace,'def Shader "Transform2d_clearcoat"'in b&&f(d.clearcoatMap,b['def Shader "Transform2d_clearcoat"'])}else"float inputs:clearcoat"in D&&(d.clearcoat=parseFloat(D["float inputs:clearcoat"]));if("float inputs:clearcoatRoughness.connect"in D){const y=D["float inputs:clearcoatRoughness.connect"],k=m(B,/(\w+).output/.exec(y)[1]);d.clearcoatRoughness=1,d.clearcoatRoughnessMap=F(k),d.clearcoatRoughnessMap.colorSpace=g.NoColorSpace,'def Shader "Transform2d_clearcoatRoughness"'in b&&f(d.clearcoatRoughnessMap,b['def Shader "Transform2d_clearcoatRoughness"'])}else"float inputs:clearcoatRoughness"in D&&(d.clearcoatRoughness=parseFloat(D["float inputs:clearcoatRoughness"]));if("float inputs:ior"in D&&(d.ior=parseFloat(D["float inputs:ior"])),"float inputs:occlusion.connect"in D){const y=D["float inputs:occlusion.connect"],k=m(B,/(\w+).output/.exec(y)[1]);d.aoMap=F(k),d.aoMap.colorSpace=g.NoColorSpace,'def Shader "Transform2d_occlusion"'in b&&f(d.aoMap,b['def Shader "Transform2d_occlusion"'])}}}return d}function m(b,d){for(const w in b){const R=b[w];if(w.startsWith(`def Shader "${d}"`))return R;if(typeof R=="object"){const D=m(R,d);if(D)return D}}}function F(b){if("asset inputs:file"in b){const d=b["asset inputs:file"].replace(/@*/g,"").trim(),R=new g.TextureLoader().load(o[d]),D={'"clamp"':g.ClampToEdgeWrapping,'"mirror"':g.MirroredRepeatWrapping,'"repeat"':g.RepeatWrapping};return"token inputs:wrapS"in b&&(R.wrapS=D[b["token inputs:wrapS"]]),"token inputs:wrapT"in b&&(R.wrapT=D[b["token inputs:wrapT"]]),R}return null}function S(b){const d=C(I(b)),w=p(u(b)),R=d?new g.Mesh(d,w):new g.Object3D;if("matrix4d xformOp:transform"in b){const D=JSON.parse("["+b["matrix4d xformOp:transform"].replace(/[()]*/g,"")+"]");R.matrix.fromArray(D),R.matrix.decompose(R.position,R.quaternion,R.scale)}return R}function x(b,d){for(const w in b)if(w.startsWith("def Scope"))x(b[w],d);else if(w.startsWith("def Xform")){const R=S(b[w]);/def Xform "(\w+)"/.test(w)&&(R.name=/def Xform "(\w+)"/.exec(w)[1]),d.add(R),x(b[w],R)}}const U=new g.Group;return x(B,U),U}}function Kt(){const n=new jt;return n.manager.onError=A=>{W.emit("load-error",`Failed to load file ${A}`)},n}function Jt(n){const A=q.useCallback(async(a,t,i)=>{var B,I;const s=new Map(t.map(l=>[l.name,l])),o=(((B=a.buffers)==null?void 0:B.length)||0)+(((I=a.images)==null?void 0:I.length)||0);let r=0;const c=()=>{r++,i(r/o*100)};if(a.buffers)for(let l=0;l<a.buffers.length;l++){const C=a.buffers[l];if(!C.uri||C.uri.startsWith("data:")){c();continue}const E=C.uri.split("/").pop()||"",h=s.get(E);if(h){const u=await h.arrayBuffer(),Q=await jA(u);C.uri=`data:application/octet-stream;base64,${Q}`}c()}if(a.images)for(let l=0;l<a.images.length;l++){const C=a.images[l];if(!C.uri||C.uri.startsWith("data:")){c();continue}const E=C.uri.split("/").pop()||"",h=s.get(E);if(h){const u=await h.arrayBuffer(),Q=await jA(u),f=h.type||"image/png";C.uri=`data:${f};base64,${Q}`}c()}return a},[]);return{loadGltf:q.useCallback((a,t,i)=>{const s=new FileReader;s.onload=async o=>{var I;const r=JSON.parse((I=o.target)==null?void 0:I.result);i(10);const c=await A(r,t,l=>{i(10+l*.8)});MA().parse(JSON.stringify(c),"",l=>{n({type:"set-file",payload:{model:l.scene,type:O.gltf,name:a.name}})}),i(100),n({type:"set-file-loading",payload:!1})},s.readAsText(a)},[n,A])}}function Yt(n){return{loadBinary:q.useCallback((e,a,t)=>{const i=new FileReader;i.onload=async s=>{var o;if((o=s.target)!=null&&o.result){const r=s.target.result;if(a===O.glb)MA().parse(r,"",B=>{n({type:"set-file",payload:{model:B.scene,type:O.glb,name:e.name}})});else if(a===O.usdz){const B=Kt().parse(r);n({type:"set-file",payload:{model:B,type:O.usdz,name:e.name}})}t(),n({type:"set-file-loading",payload:!1})}},i.onerror=s=>{console.error("Error reading file:",s),n({type:"set-file-loading",payload:!1})},i.readAsArrayBuffer(e)},[n])}}function we(n){const A=q.useRef(!1),[e,a]=q.useReducer(Fe,Ae),{loadGltf:t}=Jt(a),{loadBinary:i}=Yt(a),s=q.useCallback((l,C)=>l.find(E=>E.name.endsWith("."+C)),[]),o=q.useCallback(l=>{a({type:"set-progress",payload:l}),W.emit("load-progress",l)},[]),r=q.useCallback(()=>{a({type:"reset-state"}),W.emit("load-reset")},[]),c=q.useCallback(l=>{if(l.length===0)return;const C=s(l,O.gltf),E=s(l,O.glb),h=s(l,O.usdz),u=[C,E,h].filter(Boolean);if(u.length>1){W.emit("multiple-models",u);return}const Q=l.filter(p=>p!==C&&p!==E&&p!==h),f=p=>{o(p),p===100&&(A.current=!0)};if(C)t(C,Q,f);else if(E)i(E,O.glb,()=>f(100));else if(h)i(h,O.usdz,()=>f(100));else{W.emit("not-loaded-files",l),a({type:"set-file-loading",payload:!1});return}},[o,s,t,i]),B=q.useCallback(async l=>{const C=[];W.emit("load-start"),a({type:"reset-state"}),a({type:"set-file-loading",payload:!0}),o(0),A.current=!1;for(const E of l)if(E instanceof File)C.push(E);else if("kind"in E&&E.kind==="directory"){const h=await ke(E);C.push(...h)}c(C)},[c,o]);q.useEffect(()=>{A.current&&e.file&&(W.emit("load-complete",e.file),A.current=!1,n&&e.file.model&&n.load(e.file.model))},[e.file,n]);const I=Wt(n,a,e.file);return{...e,on:W.on,off:W.off,load:B,reset:r,optimize:I}}function Wt(n,A,e){const a=q.useCallback(o=>{MA().parse(o.buffer,"",c=>{A({type:"set-file",payload:{model:c.scene,type:O.glb,name:(e==null?void 0:e.name)||"optimized.glb"}})},c=>{console.error("Error loading new model:",c)})},[A,e]),t=q.useCallback(async(o,r)=>{if(!n||!o){console.warn("Optimizer or optimization function is not available");return}try{await o(r);const c=await n.getModel();c&&a(c)}catch(c){console.error("Optimization failed:",c)}},[n,a]),i=o=>()=>{console.warn(o)},s={simplifyOptimization:i("Optimizer is not available"),dedupOptimization:i("Optimizer is not available"),quantizeOptimization:i("Optimizer is not available"),normalsOptimization:i("Optimizer is not available"),texturesCompressOptimization:i("Optimizer is not available"),getSize:i("Optimizer is not available"),reset:i("Optimizer is not available"),report:null,error:null,loading:!1};return n?{simplifyOptimization:o=>t(n.simplifyOptimization,o),dedupOptimization:o=>t(n.dedupOptimization,o),quantizeOptimization:o=>t(n.quantizeOptimization,o),normalsOptimization:o=>t(n.normalsOptimization,o),texturesCompressOptimization:o=>t(n.texturesOptimization,o),getSize:n.getSize,reset:n.reset,report:n.report,error:n.error,loading:n.loading}:s}const NA=q.createContext({}),Vt=({children:n,optimizer:A})=>{const e=we(A);return Re.jsx(NA.Provider,{value:e,children:n})},zt=()=>q.useContext(NA);exports.ModelContext=NA;exports.ModelFileTypes=O;exports.ModelProvider=Vt;exports.useLoadModel=we;exports.useModelContext=zt;
|
|
8
|
+
*/var v=Uint8Array,nA=Uint16Array,Dt=Int32Array,Qe=new v([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]),de=new v([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]),Rt=new v([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),he=function(n,A){for(var e=new nA(31),a=0;a<31;++a)e[a]=A+=1<<n[a-1];for(var t=new Dt(e[30]),a=1;a<30;++a)for(var i=e[a];i<e[a+1];++i)t[i]=i-e[a]<<5|a;return{b:e,r:t}},pe=he(Qe,2),ue=pe.b,Ft=pe.r;ue[28]=258,Ft[258]=28;var kt=he(de,0),St=kt.b,xA=new nA(32768);for(var M=0;M<32768;++M){var eA=(M&43690)>>1|(M&21845)<<1;eA=(eA&52428)>>2|(eA&13107)<<2,eA=(eA&61680)>>4|(eA&3855)<<4,xA[M]=((eA&65280)>>8|(eA&255)<<8)>>1}var IA=function(n,A,e){for(var a=n.length,t=0,i=new nA(A);t<a;++t)n[t]&&++i[n[t]-1];var s=new nA(A);for(t=1;t<A;++t)s[t]=s[t-1]+i[t-1]<<1;var o;if(e){o=new nA(1<<A);var r=15-A;for(t=0;t<a;++t)if(n[t])for(var c=t<<4|n[t],B=A-n[t],I=s[n[t]-1]++<<B,l=I|(1<<B)-1;I<=l;++I)o[xA[I]>>r]=c}else for(o=new nA(a),t=0;t<a;++t)n[t]&&(o[t]=xA[s[n[t]-1]++]>>15-n[t]);return o},BA=new v(288);for(var M=0;M<144;++M)BA[M]=8;for(var M=144;M<256;++M)BA[M]=9;for(var M=256;M<280;++M)BA[M]=7;for(var M=280;M<288;++M)BA[M]=8;var me=new v(32);for(var M=0;M<32;++M)me[M]=5;var yt=IA(BA,9,1),Gt=IA(me,5,1),RA=function(n){for(var A=n[0],e=1;e<n.length;++e)n[e]>A&&(A=n[e]);return A},J=function(n,A,e){var a=A/8|0;return(n[a]|n[a+1]<<8)>>(A&7)&e},FA=function(n,A){var e=A/8|0;return(n[e]|n[e+1]<<8|n[e+2]<<16)>>(A&7)},xt=function(n){return(n+7)/8|0},UA=function(n,A,e){return(A==null||A<0)&&(A=0),(e==null||e>n.length)&&(e=n.length),new v(n.subarray(A,e))},Lt=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],K=function(n,A,e){var a=new Error(A||Lt[n]);if(a.code=n,Error.captureStackTrace&&Error.captureStackTrace(a,K),!e)throw a;return a},Tt=function(n,A,e,a){var t=n.length,i=a?a.length:0;if(!t||A.f&&!A.l)return e||new v(0);var s=!e,o=s||A.i!=2,r=A.i;s&&(e=new v(t*3));var c=function(OA){var vA=e.length;if(OA>vA){var jA=new v(Math.max(vA*2,OA));jA.set(e),e=jA}},B=A.f||0,I=A.p||0,l=A.b||0,C=A.l,E=A.d,h=A.m,u=A.n,Q=t*8;do{if(!C){B=J(n,I,1);var f=J(n,I+1,3);if(I+=3,f)if(f==1)C=yt,E=Gt,h=9,u=5;else if(f==2){var S=J(n,I,31)+257,x=J(n,I+10,15)+4,U=S+J(n,I+5,31)+1;I+=14;for(var b=new v(U),d=new v(19),w=0;w<x;++w)d[Rt[w]]=J(n,I+w*3,7);I+=x*3;for(var R=RA(d),D=(1<<R)-1,y=IA(d,R,1),w=0;w<U;){var k=y[J(n,I,D)];I+=k&15;var p=k>>4;if(p<16)b[w++]=p;else{var L=0,T=0;for(p==16?(T=3+J(n,I,3),I+=2,L=b[w-1]):p==17?(T=3+J(n,I,7),I+=3):p==18&&(T=11+J(n,I,127),I+=7);T--;)b[w++]=L}}var N=b.subarray(0,S),H=b.subarray(S);h=RA(N),u=RA(H),C=IA(N,h,1),E=IA(H,u,1)}else K(1);else{var p=xt(I)+4,m=n[p-4]|n[p-3]<<8,F=p+m;if(F>t){r&&K(0);break}o&&c(l+m),e.set(n.subarray(p,F),l),A.b=l+=m,A.p=I=F*8,A.f=B;continue}if(I>Q){r&&K(0);break}}o&&c(l+131072);for(var P=(1<<h)-1,$=(1<<u)-1,iA=I;;iA=I){var L=C[FA(n,I)&P],tA=L>>4;if(I+=L&15,I>Q){r&&K(0);break}if(L||K(2),tA<256)e[l++]=tA;else if(tA==256){iA=I,C=null;break}else{var _A=tA-254;if(tA>264){var w=tA-257,rA=Qe[w];_A=J(n,I,(1<<rA)-1)+ue[w],I+=rA}var lA=E[FA(n,I)&$],CA=lA>>4;lA||K(3),I+=lA&15;var H=St[CA];if(CA>3){var rA=de[CA];H+=FA(n,I)&(1<<rA)-1,I+=rA}if(I>Q){r&&K(0);break}o&&c(l+131072);var qA=l+_A;if(l<H){var HA=i-H,De=Math.min(H,qA);for(HA+l<0&&K(3);l<De;++l)e[l]=a[HA+l]}for(;l<qA;++l)e[l]=e[l-H]}}A.l=C,A.p=iA,A.b=l,A.f=B,C&&(B=1,A.m=h,A.d=E,A.n=u)}while(!B);return l!=e.length&&s?UA(e,0,l):e.subarray(0,l)},Mt=new v(0),V=function(n,A){return n[A]|n[A+1]<<8},Y=function(n,A){return(n[A]|n[A+1]<<8|n[A+2]<<16|n[A+3]<<24)>>>0},kA=function(n,A){return Y(n,A)+Y(n,A+4)*4294967296};function Ut(n,A){return Tt(n,{i:2},A&&A.out,A&&A.dictionary)}var LA=typeof TextDecoder<"u"&&new TextDecoder,Nt=0;try{LA.decode(Mt,{stream:!0}),Nt=1}catch{}var _t=function(n){for(var A="",e=0;;){var a=n[e++],t=(a>127)+(a>223)+(a>239);if(e+t>n.length)return{s:A,r:UA(n,e-1)};t?t==3?(a=((a&15)<<18|(n[e++]&63)<<12|(n[e++]&63)<<6|n[e++]&63)-65536,A+=String.fromCharCode(55296|a>>10,56320|a&1023)):t&1?A+=String.fromCharCode((a&31)<<6|n[e++]&63):A+=String.fromCharCode((a&15)<<12|(n[e++]&63)<<6|n[e++]&63):A+=String.fromCharCode(a)}};function TA(n,A){if(A){for(var e="",a=0;a<n.length;a+=16384)e+=String.fromCharCode.apply(null,n.subarray(a,a+16384));return e}else{if(LA)return LA.decode(n);var t=_t(n),i=t.s,e=t.r;return e.length&&K(8),i}}var qt=function(n,A){return A+30+V(n,A+26)+V(n,A+28)},Ht=function(n,A,e){var a=V(n,A+28),t=TA(n.subarray(A+46,A+46+a),!(V(n,A+8)&2048)),i=A+46+a,s=Y(n,A+20),o=e&&s==4294967295?Ot(n,i):[s,Y(n,A+24),Y(n,A+42)],r=o[0],c=o[1],B=o[2];return[V(n,A+10),r,c,t,i+V(n,A+30)+V(n,A+32),B]},Ot=function(n,A){for(;V(n,A)!=1;A+=4+V(n,A+2));return[kA(n,A+12),kA(n,A+4),kA(n,A+20)]};function vt(n,A){for(var e={},a=n.length-22;Y(n,a)!=101010256;--a)(!a||n.length-a>65558)&&K(13);var t=V(n,a+8);if(!t)return{};var i=Y(n,a+16),s=i==4294967295||t==65535;if(s){var o=Y(n,a-12);s=Y(n,o)==101075792,s&&(t=Y(n,o+32),i=Y(n,o+48))}for(var r=0;r<t;++r){var c=Ht(n,i,s),B=c[0],I=c[1],l=c[2],C=c[3],E=c[4],h=c[5],u=qt(n,h);i=E,B?B==8?e[C]=Ut(n.subarray(u,u+I),{out:new v(l)}):K(14,"unknown compression type "+B):e[C]=UA(n,u,u+I)}return e}class jt{parse(A){const e={},a=A.split(`
|
|
9
|
+
`);let t=null,i=e;const s=[e];for(const o of a)if(o.includes("=")){const r=o.split("="),c=r[0].trim(),B=r[1].trim();if(B.endsWith("{")){const I={};s.push(I),i[c]=I,i=I}else if(B.endsWith("(")){const I=B.slice(0,-1);i[c]=I;const l={};s.push(l),i=l}else i[c]=B}else if(o.endsWith("{")){const r=i[t]||{};s.push(r),i[t]=r,i=r}else if(o.endsWith("}")){if(s.pop(),s.length===0)continue;i=s[s.length-1]}else if(o.endsWith("(")){const r={};s.push(r),t=o.split("(")[0].trim()||t,i[t]=r,i=r}else o.endsWith(")")?(s.pop(),i=s[s.length-1]):t=o.trim();return e}}class Kt extends g.Loader{constructor(A){super(A)}load(A,e,a,t){const i=this,s=new g.FileLoader(i.manager);s.setPath(i.path),s.setResponseType("arraybuffer"),s.setRequestHeader(i.requestHeader),s.setWithCredentials(i.withCredentials),s.load(A,function(o){try{e(i.parse(o))}catch(r){t?t(r):console.error(r),i.manager.itemError(A)}},a,t)}parse(A){const e=new jt;function a(b){const d={};new g.FileLoader().setResponseType("arraybuffer");for(const R in b){if(R.endsWith("png")){const D=new Blob([b[R]],{type:{type:"image/png"}});d[R]=URL.createObjectURL(D)}if(R.endsWith("usd")||R.endsWith("usda")){if(t(b[R]))throw Error("THREE.USDZLoader: Crate files (.usdc or binary .usd) are not supported.");const D=TA(b[R]);d[R]=e.parse(D)}}return d}function t(b){const d=b.slice(0,7),w=new Uint8Array([80,88,82,45,85,83,68,67]);return d.every((R,D)=>R===w[D])}function i(b){if(b.length<1)return;const d=Object.keys(b)[0];let w=!1;if(d.endsWith("usda"))return b[d];if(d.endsWith("usdc"))w=!0;else if(d.endsWith("usd"))if(t(b[d]))w=!0;else return b[d];if(w)throw Error("THREE.USDZLoader: Crate files (.usdc or binary .usd) are not supported.")}const s=vt(new Uint8Array(A)),o=a(s),r=i(s),c=TA(r),B=e.parse(c);function I(b){if(b){if("prepend references"in b){const w=b["prepend references"].split("@"),R=w[1].replace(/^.\//,""),D=w[2].replace(/^<\//,"").replace(/>$/,"");return l(o[R],D)}return l(b)}}function l(b,d){if(b){if(d!==void 0){const w=`def Mesh "${d}"`;if(w in b)return b[w]}for(const w in b){const R=b[w];if(w.startsWith("def Mesh"))return R;if(typeof R=="object"){const D=l(R);if(D)return D}}}}function C(b){if(!b)return;const d=new g.BufferGeometry;let w=null,R=null,D=null,y=-1;if("int[] faceVertexIndices"in b&&(w=JSON.parse(b["int[] faceVertexIndices"])),"int[] faceVertexCounts"in b&&(R=JSON.parse(b["int[] faceVertexCounts"]),w=E(w,R)),"point3f[] points"in b){const k=JSON.parse(b["point3f[] points"].replace(/[()]*/g,""));y=k.length;let L=new g.BufferAttribute(new Float32Array(k),3);w!==null&&(L=h(L,w)),d.setAttribute("position",L)}if("float2[] primvars:st"in b&&(b["texCoord2f[] primvars:st"]=b["float2[] primvars:st"]),"texCoord2f[] primvars:st"in b){D=JSON.parse(b["texCoord2f[] primvars:st"].replace(/[()]*/g,""));let k=new g.BufferAttribute(new Float32Array(D),2);w!==null&&(k=h(k,w)),d.setAttribute("uv",k)}if("int[] primvars:st:indices"in b&&D!==null){const k=new g.BufferAttribute(new Float32Array(D),2);let L=JSON.parse(b["int[] primvars:st:indices"]);L=E(L,R),d.setAttribute("uv",h(k,L))}if("normal3f[] normals"in b){const k=JSON.parse(b["normal3f[] normals"].replace(/[()]*/g,""));let L=new g.BufferAttribute(new Float32Array(k),3);if(k.length===y)w!==null&&(L=h(L,w));else{let T=Array.from(Array(k.length/3).keys());T=E(T,R),L=h(L,T)}d.setAttribute("normal",L)}else d.computeVertexNormals();return d}function E(b,d){const w=[];for(let R=0;R<d.length;R++){const D=d[R],y=R*D;if(D===3){const k=b[y+0],L=b[y+1],T=b[y+2];w.push(k,L,T)}else if(D===4){const k=b[y+0],L=b[y+1],T=b[y+2],N=b[y+3];w.push(k,L,T),w.push(k,T,N)}else console.warn("THREE.USDZLoader: Face vertex count of %s unsupported.",D)}return w}function h(b,d){const w=b.array,R=b.itemSize,D=new w.constructor(d.length*R);let y=0,k=0;for(let L=0,T=d.length;L<T;L++){y=d[L]*R;for(let N=0;N<R;N++)D[k++]=w[y++]}return new g.BufferAttribute(D,R)}function u(b){if(b){if("rel material:binding"in b){const R=b["rel material:binding"].replace(/^<\//,"").replace(/>$/,"").split("/");return Q(B,` "${R[1]}"`)}return Q(b)}}function Q(b,d=""){for(const w in b){const R=b[w];if(w.startsWith("def Material"+d))return R;if(typeof R=="object"){const D=Q(R,d);if(D)return D}}}function f(b,d){d["float inputs:rotation"]&&(b.rotation=parseFloat(d["float inputs:rotation"])),d["float2 inputs:scale"]&&(b.repeat=new g.Vector2().fromArray(JSON.parse("["+d["float2 inputs:scale"].replace(/[()]*/g,"")+"]"))),d["float2 inputs:translation"]&&(b.offset=new g.Vector2().fromArray(JSON.parse("["+d["float2 inputs:translation"].replace(/[()]*/g,"")+"]")))}function p(b){const d=new g.MeshPhysicalMaterial;if(b!==void 0){const w=b["token outputs:surface.connect"],R=/(\w+).output/.exec(w)[1],D=b[`def Shader "${R}"`];if(D!==void 0){if("color3f inputs:diffuseColor.connect"in D){const y=D["color3f inputs:diffuseColor.connect"],k=m(B,/(\w+).output/.exec(y)[1]);d.map=F(k),d.map.colorSpace=g.SRGBColorSpace,'def Shader "Transform2d_diffuse"'in b&&f(d.map,b['def Shader "Transform2d_diffuse"'])}else if("color3f inputs:diffuseColor"in D){const y=D["color3f inputs:diffuseColor"].replace(/[()]*/g,"");d.color.fromArray(JSON.parse("["+y+"]"))}if("color3f inputs:emissiveColor.connect"in D){const y=D["color3f inputs:emissiveColor.connect"],k=m(B,/(\w+).output/.exec(y)[1]);d.emissiveMap=F(k),d.emissiveMap.colorSpace=g.SRGBColorSpace,d.emissive.set(16777215),'def Shader "Transform2d_emissive"'in b&&f(d.emissiveMap,b['def Shader "Transform2d_emissive"'])}else if("color3f inputs:emissiveColor"in D){const y=D["color3f inputs:emissiveColor"].replace(/[()]*/g,"");d.emissive.fromArray(JSON.parse("["+y+"]"))}if("normal3f inputs:normal.connect"in D){const y=D["normal3f inputs:normal.connect"],k=m(B,/(\w+).output/.exec(y)[1]);d.normalMap=F(k),d.normalMap.colorSpace=g.NoColorSpace,'def Shader "Transform2d_normal"'in b&&f(d.normalMap,b['def Shader "Transform2d_normal"'])}if("float inputs:roughness.connect"in D){const y=D["float inputs:roughness.connect"],k=m(B,/(\w+).output/.exec(y)[1]);d.roughness=1,d.roughnessMap=F(k),d.roughnessMap.colorSpace=g.NoColorSpace,'def Shader "Transform2d_roughness"'in b&&f(d.roughnessMap,b['def Shader "Transform2d_roughness"'])}else"float inputs:roughness"in D&&(d.roughness=parseFloat(D["float inputs:roughness"]));if("float inputs:metallic.connect"in D){const y=D["float inputs:metallic.connect"],k=m(B,/(\w+).output/.exec(y)[1]);d.metalness=1,d.metalnessMap=F(k),d.metalnessMap.colorSpace=g.NoColorSpace,'def Shader "Transform2d_metallic"'in b&&f(d.metalnessMap,b['def Shader "Transform2d_metallic"'])}else"float inputs:metallic"in D&&(d.metalness=parseFloat(D["float inputs:metallic"]));if("float inputs:clearcoat.connect"in D){const y=D["float inputs:clearcoat.connect"],k=m(B,/(\w+).output/.exec(y)[1]);d.clearcoat=1,d.clearcoatMap=F(k),d.clearcoatMap.colorSpace=g.NoColorSpace,'def Shader "Transform2d_clearcoat"'in b&&f(d.clearcoatMap,b['def Shader "Transform2d_clearcoat"'])}else"float inputs:clearcoat"in D&&(d.clearcoat=parseFloat(D["float inputs:clearcoat"]));if("float inputs:clearcoatRoughness.connect"in D){const y=D["float inputs:clearcoatRoughness.connect"],k=m(B,/(\w+).output/.exec(y)[1]);d.clearcoatRoughness=1,d.clearcoatRoughnessMap=F(k),d.clearcoatRoughnessMap.colorSpace=g.NoColorSpace,'def Shader "Transform2d_clearcoatRoughness"'in b&&f(d.clearcoatRoughnessMap,b['def Shader "Transform2d_clearcoatRoughness"'])}else"float inputs:clearcoatRoughness"in D&&(d.clearcoatRoughness=parseFloat(D["float inputs:clearcoatRoughness"]));if("float inputs:ior"in D&&(d.ior=parseFloat(D["float inputs:ior"])),"float inputs:occlusion.connect"in D){const y=D["float inputs:occlusion.connect"],k=m(B,/(\w+).output/.exec(y)[1]);d.aoMap=F(k),d.aoMap.colorSpace=g.NoColorSpace,'def Shader "Transform2d_occlusion"'in b&&f(d.aoMap,b['def Shader "Transform2d_occlusion"'])}}}return d}function m(b,d){for(const w in b){const R=b[w];if(w.startsWith(`def Shader "${d}"`))return R;if(typeof R=="object"){const D=m(R,d);if(D)return D}}}function F(b){if("asset inputs:file"in b){const d=b["asset inputs:file"].replace(/@*/g,"").trim(),R=new g.TextureLoader().load(o[d]),D={'"clamp"':g.ClampToEdgeWrapping,'"mirror"':g.MirroredRepeatWrapping,'"repeat"':g.RepeatWrapping};return"token inputs:wrapS"in b&&(R.wrapS=D[b["token inputs:wrapS"]]),"token inputs:wrapT"in b&&(R.wrapT=D[b["token inputs:wrapT"]]),R}return null}function S(b){const d=C(I(b)),w=p(u(b)),R=d?new g.Mesh(d,w):new g.Object3D;if("matrix4d xformOp:transform"in b){const D=JSON.parse("["+b["matrix4d xformOp:transform"].replace(/[()]*/g,"")+"]");R.matrix.fromArray(D),R.matrix.decompose(R.position,R.quaternion,R.scale)}return R}function x(b,d){for(const w in b)if(w.startsWith("def Scope"))x(b[w],d);else if(w.startsWith("def Xform")){const R=S(b[w]);/def Xform "(\w+)"/.test(w)&&(R.name=/def Xform "(\w+)"/.exec(w)[1]),d.add(R),x(b[w],R)}}const U=new g.Group;return x(B,U),U}}function Pt(){const n=new Kt;return n.manager.onError=A=>{W.emit("load-error",`Failed to load file ${A}`)},n}function Jt(n){const A=q.useCallback(async(a,t,i)=>{var B,I;const s=new Map(t.map(l=>[l.name,l])),o=(((B=a.buffers)==null?void 0:B.length)||0)+(((I=a.images)==null?void 0:I.length)||0);let r=0;const c=()=>{r++,i(r/o*100)};if(a.buffers)for(let l=0;l<a.buffers.length;l++){const C=a.buffers[l];if(!C.uri||C.uri.startsWith("data:")){c();continue}const E=C.uri.split("/").pop()||"",h=s.get(E);if(h){const u=await h.arrayBuffer(),Q=await KA(u);C.uri=`data:application/octet-stream;base64,${Q}`}c()}if(a.images)for(let l=0;l<a.images.length;l++){const C=a.images[l];if(!C.uri||C.uri.startsWith("data:")){c();continue}const E=C.uri.split("/").pop()||"",h=s.get(E);if(h){const u=await h.arrayBuffer(),Q=await KA(u),f=h.type||"image/png";C.uri=`data:${f};base64,${Q}`}c()}return a},[]);return{loadGltf:q.useCallback((a,t,i)=>{const s=new FileReader;s.onload=async o=>{var I;const r=JSON.parse((I=o.target)==null?void 0:I.result);i(10);const c=await A(r,t,l=>{i(10+l*.8)});MA().parse(JSON.stringify(c),"",l=>{n({type:"set-file",payload:{model:l.scene,type:O.gltf,name:a.name}})}),i(100),n({type:"set-file-loading",payload:!1})},s.readAsText(a)},[n,A])}}function Yt(n){return{loadBinary:q.useCallback((e,a,t)=>{const i=new FileReader;i.onload=async s=>{var o;if((o=s.target)!=null&&o.result){const r=s.target.result;if(a===O.glb)MA().parse(r,"",B=>{n({type:"set-file",payload:{model:B.scene,type:O.glb,name:e.name}})});else if(a===O.usdz){const B=Pt().parse(r);n({type:"set-file",payload:{model:B,type:O.usdz,name:e.name}})}t(),n({type:"set-file-loading",payload:!1})}},i.onerror=s=>{console.error("Error reading file:",s),n({type:"set-file-loading",payload:!1})},i.readAsArrayBuffer(e)},[n])}}function we(n){const A=q.useRef(!1),[e,a]=q.useReducer(Fe,Ae),{loadGltf:t}=Jt(a),{loadBinary:i}=Yt(a),s=q.useCallback((l,C)=>l.find(E=>E.name.endsWith("."+C)),[]),o=q.useCallback(l=>{a({type:"set-progress",payload:l}),W.emit("load-progress",l)},[]),r=q.useCallback(()=>{a({type:"reset-state"}),W.emit("load-reset")},[]),c=q.useCallback(l=>{if(l.length===0)return;const C=s(l,O.gltf),E=s(l,O.glb),h=s(l,O.usdz),u=[C,E,h].filter(Boolean);if(u.length>1){W.emit("multiple-models",u);return}const Q=l.filter(p=>p!==C&&p!==E&&p!==h),f=p=>{o(p),p===100&&(A.current=!0)};if(C)t(C,Q,f);else if(E)i(E,O.glb,()=>f(100));else if(h)i(h,O.usdz,()=>f(100));else{W.emit("not-loaded-files",l),a({type:"set-file-loading",payload:!1});return}},[o,s,t,i]),B=q.useCallback(async l=>{const C=[];W.emit("load-start"),a({type:"reset-state"}),a({type:"set-file-loading",payload:!0}),o(0),A.current=!1;for(const E of l)if(E instanceof File)C.push(E);else if("kind"in E&&E.kind==="directory"){const h=await ke(E);C.push(...h)}c(C)},[c,o]);q.useEffect(()=>{A.current&&e.file&&(W.emit("load-complete",e.file),A.current=!1,n&&e.file.model&&n.load(e.file.model))},[e.file,n]);const I=Wt(n,a,e.file);return{...e,on:W.on,off:W.off,load:B,reset:r,optimize:I}}function Wt(n,A,e){const a=q.useCallback(o=>{MA().parse(o.buffer,"",c=>{A({type:"set-file",payload:{model:c.scene,type:O.glb,name:(e==null?void 0:e.name)||"optimized.glb"}})},c=>{console.error("Error loading new model:",c)})},[A,e]),t=q.useCallback(async(o,r)=>{if(!n||!o){console.warn("Optimizer or optimization function is not available");return}try{await o(r);const c=await n.getModel();c&&a(c)}catch(c){console.error("Optimization failed:",c)}},[n,a]),i=o=>()=>{console.warn(o)},s={simplifyOptimization:i("Optimizer is not available"),dedupOptimization:i("Optimizer is not available"),quantizeOptimization:i("Optimizer is not available"),normalsOptimization:i("Optimizer is not available"),texturesCompressOptimization:i("Optimizer is not available"),getSize:i("Optimizer is not available"),reset:i("Optimizer is not available"),report:null,error:null,loading:!1};return n?{simplifyOptimization:o=>t(n.simplifyOptimization,o),dedupOptimization:o=>t(n.dedupOptimization,o),quantizeOptimization:o=>t(n.quantizeOptimization,o),normalsOptimization:o=>t(n.normalsOptimization,o),texturesCompressOptimization:o=>t(n.texturesOptimization,o),getSize:n.getSize,reset:n.reset,report:n.report,error:n.error,loading:n.loading}:s}const NA=q.createContext({}),Vt=({children:n,optimizer:A})=>{const e=we(A);return Re.jsx(NA.Provider,{value:e,children:n})},zt=()=>q.useContext(NA);exports.ModelContext=NA;exports.ModelFileTypes=O;exports.ModelProvider=Vt;exports.useLoadModel=we;exports.useModelContext=zt;
|