@loaders.gl/gltf 4.4.0-alpha.17 → 4.4.0-alpha.19
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/dist/dist.dev.js +72 -37
- package/dist/dist.min.js +1 -1
- package/dist/index.cjs +19 -9
- package/dist/index.cjs.map +2 -2
- package/dist/lib/gltf-utils/resolve-url.d.ts +2 -1
- package/dist/lib/gltf-utils/resolve-url.d.ts.map +1 -1
- package/dist/lib/gltf-utils/resolve-url.js +14 -4
- package/dist/lib/gltf-utils/resolve-url.js.map +1 -1
- package/dist/lib/parsers/parse-gltf.js +4 -4
- package/dist/lib/parsers/parse-gltf.js.map +1 -1
- package/dist/lib/utils/version.js +1 -1
- package/package.json +7 -7
- package/src/lib/gltf-utils/resolve-url.ts +19 -4
- package/src/lib/parsers/parse-gltf.ts +4 -4
package/dist/dist.min.js
CHANGED
|
@@ -4,6 +4,6 @@
|
|
|
4
4
|
else if (typeof define === 'function' && define.amd) define([], factory);
|
|
5
5
|
else if (typeof exports === 'object') exports['loaders'] = factory();
|
|
6
6
|
else root['loaders'] = factory();})(globalThis, function () {
|
|
7
|
-
"use strict";var __exports__=(()=>{var On=Object.create;var ge=Object.defineProperty;var Ln=Object.getOwnPropertyDescriptor;var _n=Object.getOwnPropertyNames;var Sn=Object.getPrototypeOf,Jn=Object.prototype.hasOwnProperty;var Un=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),y=(r,e)=>{for(var t in e)ge(r,t,{get:e[t],enumerable:!0})},he=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of _n(e))!Jn.call(r,o)&&o!==t&&ge(r,o,{get:()=>e[o],enumerable:!(n=Ln(e,o))||n.enumerable});return r},Ce=(r,e,t)=>(he(r,e,"default"),t&&he(t,e,"default")),Hn=(r,e,t)=>(t=r!=null?On(Sn(r)):{},he(e||!r||!r.__esModule?ge(t,"default",{value:r,enumerable:!0}):t,r)),Nn=r=>he(ge({},"__esModule",{value:!0}),r);var Zt=Un((Ra,Wt)=>{Wt.exports=globalThis.loaders});var pe={};y(pe,{EXT_FEATURE_METADATA:()=>Bt,EXT_MESH_FEATURES:()=>at,EXT_STRUCTURAL_METADATA:()=>At,GLBLoader:()=>In,GLBWriter:()=>Rn,GLTFLoader:()=>ke,GLTFScenegraph:()=>l,GLTFWriter:()=>Fn,_getMemoryUsageGLTF:()=>pr,createExtMeshFeatures:()=>ct,createExtStructuralMetadata:()=>mt,postProcessGLTF:()=>wn});Ce(pe,Hn(Zt(),1));var Re={};y(Re,{createExtMeshFeatures:()=>ct,decode:()=>Oo,encode:()=>Lo,name:()=>at});var qt="4.4.0-alpha.17";async function re(r,e,t,n){return n._parse(r,e,t,n)}function T(r,e){if(!r)throw new Error(e||"loader assertion failed.")}var G={self:typeof self<"u"&&self,window:typeof window<"u"&&window,global:typeof global<"u"&&global,document:typeof document<"u"&&document},Pn=G.self||G.window||G.global||{},Kn=G.window||G.self||G.global||{},jn=G.global||G.self||G.window||{},vn=G.document||{};var ne=Boolean(typeof process!="object"||String(process)!=="[object process]"||process.browser);var zt=typeof process<"u"&&process.version&&/v([0-9]*)/.exec(process.version),Qn=zt&&parseFloat(zt[1])||0;var $t=r=>typeof SharedArrayBuffer<"u"&&r instanceof SharedArrayBuffer;function Ve(r){globalThis.loaders||={},globalThis.loaders.modules||={},Object.assign(globalThis.loaders.modules,r)}function We(r){return globalThis.loaders?.modules?.[r]||null}function Xn(){return globalThis._loadersgl_?.version||(globalThis._loadersgl_=globalThis._loadersgl_||{},globalThis._loadersgl_.version="4.4.0-alpha.17"),globalThis._loadersgl_.version}var er=Xn();function tr(r,e){if(!r)throw new Error(e||"loaders.gl assertion failed.")}var D={self:typeof self<"u"&&self,window:typeof window<"u"&&window,global:typeof global<"u"&&global,document:typeof document<"u"&&document},Na=D.self||D.window||D.global||{},Pa=D.window||D.self||D.global||{},Ka=D.global||D.self||D.window||{},ja=D.document||{};var L=typeof process!="object"||String(process)!=="[object process]"||process.browser,oe=typeof importScripts=="function",va=typeof window<"u"&&typeof window.orientation<"u",rr=typeof process<"u"&&process.version&&/v([0-9]*)/.exec(process.version),Qa=rr&&parseFloat(rr[1])||0;var Ze={};async function M(r,e=null,t={},n=null){return e&&(r=nr(r,e,t,n)),Ze[r]=Ze[r]||kn(r),await Ze[r]}function nr(r,e,t={},n=null){if(t?.core)throw new Error("loadLibrary: options.core must be pre-normalized");if(!t.useLocalLibraries&&r.startsWith("http"))return r;n=n||r;let o=t.modules||{};return o[n]?o[n]:L?t.CDN?(tr(t.CDN.startsWith("http")),`${t.CDN}/${e}@${er}/dist/libs/${n}`):oe?`../src/libs/${n}`:`modules/${e}/src/libs/${n}`:`modules/${e}/dist/libs/${n}`}async function kn(r){if(r.endsWith("wasm"))return await Vn(r);if(!L){let{requireFromFile:t}=globalThis.loaders||{};try{let n=await t?.(r);return n||!r.includes("/dist/libs/")?n:await t?.(r.replace("/dist/libs/","/src/libs/"))}catch(n){if(r.includes("/dist/libs/"))try{return await t?.(r.replace("/dist/libs/","/src/libs/"))}catch{}return console.error(n),null}}if(oe)return importScripts(r);let e=await Wn(r);return Yn(e,r)}function Yn(r,e){if(!L){let{requireFromString:n}=globalThis.loaders||{};return n?.(r,e)}if(oe)return eval.call(globalThis,r),null;let t=document.createElement("script");t.id=e;try{t.appendChild(document.createTextNode(r))}catch{t.text=r}return document.body.appendChild(t),null}async function Vn(r){let{readFileAsArrayBuffer:e}=globalThis.loaders||{};if(L||!e||r.startsWith("http"))return await(await fetch(r)).arrayBuffer();try{return await e(r)}catch{if(r.includes("/dist/libs/"))return await e(r.replace("/dist/libs/","/src/libs/"));throw new Error(`Failed to load ArrayBuffer from ${r}`)}}async function Wn(r){let{readFileAsText:e}=globalThis.loaders||{};if(L||!e||r.startsWith("http"))return await(await fetch(r)).text();try{return await e(r)}catch{if(r.includes("/dist/libs/"))return await e(r.replace("/dist/libs/","/src/libs/"));throw new Error(`Failed to load text from ${r}`)}}function sr(r,e=5){return typeof r=="string"?r.slice(0,e):ArrayBuffer.isView(r)?or(r.buffer,r.byteOffset,e):r instanceof ArrayBuffer?or(r,0,e):""}function or(r,e,t){if(r.byteLength<=e+t)return"";let n=new DataView(r),o="";for(let s=0;s<t;s++)o+=String.fromCharCode(n.getUint8(e+s));return o}function qe(r){try{return JSON.parse(r)}catch{throw new Error(`Failed to parse JSON from data starting with "${sr(r)}"`)}}function se(r,e,t){let n=t!==void 0?new Uint8Array(r).subarray(e,e+t):new Uint8Array(r).subarray(e);return new Uint8Array(n).buffer}function R(r,e){return T(r>=0),T(e>0),r+(e-1)&~(e-1)}function ze(r,e,t){let n;if(r instanceof ArrayBuffer)n=new Uint8Array(r);else{let o=r.byteOffset,s=r.byteLength;n=new Uint8Array(r.buffer||r.arrayBuffer,o,s)}return e.set(n,t),t+R(n.byteLength,4)}function be(r,e,t,n){let o=R(t.byteLength,n),s=o-t.byteLength;if(r){let i=new Uint8Array(r.buffer,r.byteOffset+e,t.byteLength),a=new Uint8Array(t);i.set(a);for(let c=0;c<s;++c)r.setUint8(e+t.byteLength+c,32)}return e+=o,e}function $e(r,e,t,n){let s=new TextEncoder().encode(t);return e=be(r,e,s,n),e}function J(r){if(r instanceof ArrayBuffer)return r;if($t(r))return ie(r);let{buffer:e,byteOffset:t,byteLength:n}=r;return e instanceof ArrayBuffer&&t===0&&n===e.byteLength?e:ie(e,t,n)}function ie(r,e=0,t=r.byteLength-e){let n=new Uint8Array(r,e,t),o=new Uint8Array(n.length);return o.set(n),o.buffer}var Zn=globalThis.loaders?.parseImageNode,et=typeof Image<"u",tt=typeof ImageBitmap<"u",qn=Boolean(Zn),rt=ne?!0:qn;function ir(r){switch(r){case"auto":return tt||et||rt;case"imagebitmap":return tt;case"image":return et;case"data":return rt;default:throw new Error(`@loaders.gl/images: image ${r} not supported in this environment`)}}function ar(){if(tt)return"imagebitmap";if(et)return"image";if(rt)return"data";throw new Error("Install '@loaders.gl/polyfills' to parse images under Node.js")}function cr(r){let e=zn(r);if(!e)throw new Error("Not an image");return e}function ae(r){switch(cr(r)){case"data":return r;case"image":case"imagebitmap":let e=document.createElement("canvas"),t=e.getContext("2d");if(!t)throw new Error("getImageData");return e.width=r.width,e.height=r.height,t.drawImage(r,0,0),t.getImageData(0,0,r.width,r.height);default:throw new Error("getImageData")}}function zn(r){return typeof ImageBitmap<"u"&&r instanceof ImageBitmap?"imagebitmap":typeof Image<"u"&&r instanceof Image?"image":r&&typeof r=="object"&&r.data&&r.width&&r.height?"data":null}var $n=/^data:image\/svg\+xml/,eo=/\.svg((\?|#).*)?$/;function xe(r){return r&&($n.test(r)||eo.test(r))}function fr(r,e){if(xe(e)){let n=new TextDecoder().decode(r);try{typeof unescape=="function"&&typeof encodeURIComponent=="function"&&(n=unescape(encodeURIComponent(n)))}catch(s){throw new Error(s.message)}return`data:image/svg+xml;base64,${btoa(n)}`}return nt(r,e)}function nt(r,e){if(xe(e))throw new Error("SVG cannot be parsed directly to imagebitmap");return new Blob([new Uint8Array(r)])}async function Ee(r,e,t){let n=fr(r,t),o=self.URL||self.webkitURL,s=typeof n!="string"&&o.createObjectURL(n);try{return await to(s||n,e)}finally{s&&o.revokeObjectURL(s)}}async function to(r,e){let t=new Image;return t.src=r,e.image&&e.image.decode&&t.decode?(await t.decode(),t):await new Promise((n,o)=>{try{t.onload=()=>n(t),t.onerror=s=>{let i=s instanceof Error?s.message:"error";o(new Error(i))}}catch(s){o(s)}})}var Ar=!0;async function ur(r,e,t){let n;xe(t)?n=await Ee(r,e,t):n=nt(r,t);let o=e&&e.imagebitmap;return await ro(n,o)}async function ro(r,e=null){if((no(e)||!Ar)&&(e=null),e)try{return await createImageBitmap(r,e)}catch(t){console.warn(t),Ar=!1}return await createImageBitmap(r)}function no(r){if(!r)return!0;for(let e in r)if(Object.prototype.hasOwnProperty.call(r,e))return!1;return!0}function mr(r){return!ao(r,"ftyp",4)||!(r[8]&96)?null:oo(r)}function oo(r){switch(so(r,8,12).replace("\0"," ").trim()){case"avif":case"avis":return{extension:"avif",mimeType:"image/avif"};default:return null}}function so(r,e,t){return String.fromCharCode(...r.slice(e,t))}function io(r){return[...r].map(e=>e.charCodeAt(0))}function ao(r,e,t=0){let n=io(e);for(let o=0;o<n.length;++o)if(n[o]!==r[o+t])return!1;return!0}var w=!1,ce=!0;function P(r){let e=fe(r);return fo(e)||mo(e)||Ao(e)||uo(e)||co(e)}function co(r){let e=new Uint8Array(r instanceof DataView?r.buffer:r),t=mr(e);return t?{mimeType:t.mimeType,width:0,height:0}:null}function fo(r){let e=fe(r);return e.byteLength>=24&&e.getUint32(0,w)===2303741511?{mimeType:"image/png",width:e.getUint32(16,w),height:e.getUint32(20,w)}:null}function Ao(r){let e=fe(r);return e.byteLength>=10&&e.getUint32(0,w)===1195984440?{mimeType:"image/gif",width:e.getUint16(6,ce),height:e.getUint16(8,ce)}:null}function uo(r){let e=fe(r);return e.byteLength>=14&&e.getUint16(0,w)===16973&&e.getUint32(2,ce)===e.byteLength?{mimeType:"image/bmp",width:e.getUint32(18,ce),height:e.getUint32(22,ce)}:null}function mo(r){let e=fe(r);if(!(e.byteLength>=3&&e.getUint16(0,w)===65496&&e.getUint8(2)===255))return null;let{tableMarkers:n,sofMarkers:o}=Bo(),s=2;for(;s+9<e.byteLength;){let i=e.getUint16(s,w);if(o.has(i))return{mimeType:"image/jpeg",height:e.getUint16(s+5,w),width:e.getUint16(s+7,w)};if(!n.has(i))return null;s+=2,s+=e.getUint16(s,w)}return null}function Bo(){let r=new Set([65499,65476,65484,65501,65534]);for(let t=65504;t<65520;++t)r.add(t);return{tableMarkers:r,sofMarkers:new Set([65472,65473,65474,65475,65477,65478,65479,65481,65482,65483,65485,65486,65487,65502])}}function fe(r){if(r instanceof DataView)return r;if(ArrayBuffer.isView(r))return new DataView(r.buffer);if(r instanceof ArrayBuffer)return new DataView(r);throw new Error("toDataView")}async function Br(r,e){let{mimeType:t}=P(r)||{},n=globalThis.loaders?.parseImageNode;return T(n),await n(r,t)}async function lr(r,e,t){e=e||{};let o=(e.image||{}).type||"auto",{url:s}=t||{},i=lo(o),a;switch(i){case"imagebitmap":a=await ur(r,e,s);break;case"image":a=await Ee(r,e,s);break;case"data":a=await Br(r,e);break;default:T(!1)}return o==="data"&&(a=ae(a)),a}function lo(r){switch(r){case"auto":case"data":return ar();default:return ir(r),r}}var po=["png","jpg","jpeg","gif","webp","bmp","ico","svg","avif"],ho=["image/png","image/jpeg","image/gif","image/webp","image/avif","image/bmp","image/vnd.microsoft.icon","image/svg+xml"],go={image:{type:"auto",decode:!0}},ot={dataType:null,batchType:null,id:"image",module:"images",name:"Images",version:qt,mimeTypes:ho,extensions:po,parse:lr,tests:[r=>Boolean(P(new DataView(r)))],options:go};var st={};function it(r){if(st[r]===void 0){let e=ne?bo(r):Co(r);st[r]=e}return st[r]}function Co(r){let e=["image/png","image/jpeg","image/gif"],t=globalThis.loaders?.imageFormatsNode||e,n=globalThis.loaders?.parseImageNode;return Boolean(n)&&t.includes(r)}function bo(r){switch(r){case"image/avif":case"image/webp":return xo(r);default:return!0}}function xo(r){try{return document.createElement("canvas").toDataURL(r).indexOf(`data:${r}`)===0}catch{return!1}}function h(r,e){if(!r)throw new Error(e||"assert failed: gltf")}var ye={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},Te={5120:1,5121:1,5122:2,5123:2,5125:4,5126:4};var Eo=1.33,dr=["SCALAR","VEC2","VEC3","VEC4"],yo=[[Int8Array,5120],[Uint8Array,5121],[Int16Array,5122],[Uint16Array,5123],[Uint32Array,5125],[Float32Array,5126],[Float64Array,5130]],To=new Map(yo),Mo={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},Fo={5120:1,5121:1,5122:2,5123:2,5125:4,5126:4},Io={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array};function Me(r){return dr[r-1]||dr[0]}function U(r){let e=To.get(r.constructor);if(!e)throw new Error("Illegal typed array");return e}function Q(r,e){let t=Io[r.componentType],n=Mo[r.type],o=Fo[r.componentType],s=r.count*n,i=r.count*n*o;h(i>=0&&i<=e.byteLength);let a=Te[r.componentType],c=ye[r.type];return{ArrayType:t,length:s,byteLength:i,componentByteSize:a,numberOfComponentsInElement:c}}function pr(r){let{images:e,bufferViews:t}=r;e=e||[],t=t||[];let n=e.map(i=>i.bufferView);t=t.filter(i=>!n.includes(i));let o=t.reduce((i,a)=>i+a.byteLength,0),s=e.reduce((i,a)=>{let{width:c,height:f}=a.image;return i+c*f},0);return o+Math.ceil(4*s*Eo)}function hr(r,e,t){let n=r.bufferViews[t];h(n);let o=n.buffer,s=e[o];h(s);let i=(n.byteOffset||0)+s.byteOffset;return new Uint8Array(s.arrayBuffer,i,n.byteLength)}function gr(r,e,t){let n=typeof t=="number"?r.accessors?.[t]:t;if(!n)throw new Error(`No gltf accessor ${JSON.stringify(t)}`);let o=r.bufferViews?.[n.bufferView||0];if(!o)throw new Error(`No gltf buffer view for accessor ${o}`);let{arrayBuffer:s,byteOffset:i}=e[o.buffer],a=(i||0)+(n.byteOffset||0)+(o.byteOffset||0),{ArrayType:c,length:f,componentByteSize:A,numberOfComponentsInElement:u}=Q(n,o),m=A*u,B=o.byteStride||m;if(typeof o.byteStride>"u"||o.byteStride===m)return new c(s,a,f);let d=new c(f);for(let p=0;p<n.count;p++){let x=new c(s,a+p*B,u);d.set(x,p*u)}return d}function Go(){return{asset:{version:"2.0",generator:"loaders.gl"},buffers:[],extensions:{},extensionsRequired:[],extensionsUsed:[]}}var l=class{gltf;sourceBuffers;byteLength;constructor(e){this.gltf={json:e?.json||Go(),buffers:e?.buffers||[],images:e?.images||[]},this.sourceBuffers=[],this.byteLength=0,this.gltf.buffers&&this.gltf.buffers[0]&&(this.byteLength=this.gltf.buffers[0].byteLength,this.sourceBuffers=[this.gltf.buffers[0]])}get json(){return this.gltf.json}getApplicationData(e){return this.json[e]}getExtraData(e){return(this.json.extras||{})[e]}hasExtension(e){let t=this.getUsedExtensions().find(o=>o===e),n=this.getRequiredExtensions().find(o=>o===e);return typeof t=="string"||typeof n=="string"}getExtension(e){let t=this.getUsedExtensions().find(o=>o===e),n=this.json.extensions||{};return t?n[e]:null}getRequiredExtension(e){return this.getRequiredExtensions().find(n=>n===e)?this.getExtension(e):null}getRequiredExtensions(){return this.json.extensionsRequired||[]}getUsedExtensions(){return this.json.extensionsUsed||[]}getRemovedExtensions(){return this.json.extensionsRemoved||[]}getObjectExtension(e,t){return(e.extensions||{})[t]}getScene(e){return this.getObject("scenes",e)}getNode(e){return this.getObject("nodes",e)}getSkin(e){return this.getObject("skins",e)}getMesh(e){return this.getObject("meshes",e)}getMaterial(e){return this.getObject("materials",e)}getAccessor(e){return this.getObject("accessors",e)}getTexture(e){return this.getObject("textures",e)}getSampler(e){return this.getObject("samplers",e)}getImage(e){return this.getObject("images",e)}getBufferView(e){return this.getObject("bufferViews",e)}getBuffer(e){return this.getObject("buffers",e)}getObject(e,t){if(typeof t=="object")return t;let n=this.json[e]&&this.json[e][t];if(!n)throw new Error(`glTF file error: Could not find ${e}[${t}]`);return n}getTypedArrayForBufferView(e){e=this.getBufferView(e);let t=e.buffer,n=this.gltf.buffers[t];h(n);let o=(e.byteOffset||0)+n.byteOffset;return new Uint8Array(n.arrayBuffer,o,e.byteLength)}getTypedArrayForAccessor(e){let t=this.getAccessor(e);return gr(this.gltf.json,this.gltf.buffers,t)}getTypedArrayForImageData(e){e=this.getAccessor(e);let t=this.getBufferView(e.bufferView),o=this.getBuffer(t.buffer).data,s=t.byteOffset||0;return new Uint8Array(o,s,t.byteLength)}addApplicationData(e,t){return this.json[e]=t,this}addExtraData(e,t){return this.json.extras=this.json.extras||{},this.json.extras[e]=t,this}addObjectExtension(e,t,n){return e.extensions=e.extensions||{},e.extensions[t]=n,this.registerUsedExtension(t),this}setObjectExtension(e,t,n){let o=e.extensions||{};o[t]=n}removeObjectExtension(e,t){let n=e?.extensions||{};if(n[t]){this.json.extensionsRemoved=this.json.extensionsRemoved||[];let o=this.json.extensionsRemoved;o.includes(t)||o.push(t)}delete n[t]}addExtension(e,t={}){return h(t),this.json.extensions=this.json.extensions||{},this.json.extensions[e]=t,this.registerUsedExtension(e),t}addRequiredExtension(e,t={}){return h(t),this.addExtension(e,t),this.registerRequiredExtension(e),t}registerUsedExtension(e){this.json.extensionsUsed=this.json.extensionsUsed||[],this.json.extensionsUsed.find(t=>t===e)||this.json.extensionsUsed.push(e)}registerRequiredExtension(e){this.registerUsedExtension(e),this.json.extensionsRequired=this.json.extensionsRequired||[],this.json.extensionsRequired.find(t=>t===e)||this.json.extensionsRequired.push(e)}removeExtension(e){if(this.json.extensions?.[e]){this.json.extensionsRemoved=this.json.extensionsRemoved||[];let t=this.json.extensionsRemoved;t.includes(e)||t.push(e)}this.json.extensions&&delete this.json.extensions[e],this.json.extensionsRequired&&this._removeStringFromArray(this.json.extensionsRequired,e),this.json.extensionsUsed&&this._removeStringFromArray(this.json.extensionsUsed,e)}setDefaultScene(e){this.json.scene=e}addScene(e){let{nodeIndices:t}=e;return this.json.scenes=this.json.scenes||[],this.json.scenes.push({nodes:t}),this.json.scenes.length-1}addNode(e){let{meshIndex:t,matrix:n}=e;this.json.nodes=this.json.nodes||[];let o={mesh:t};return n&&(o.matrix=n),this.json.nodes.push(o),this.json.nodes.length-1}addMesh(e){let{attributes:t,indices:n,material:o,mode:s=4}=e,a={primitives:[{attributes:this._addAttributes(t),mode:s}]};if(n){let c=this._addIndices(n);a.primitives[0].indices=c}return Number.isFinite(o)&&(a.primitives[0].material=o),this.json.meshes=this.json.meshes||[],this.json.meshes.push(a),this.json.meshes.length-1}addPointCloud(e){let n={primitives:[{attributes:this._addAttributes(e),mode:0}]};return this.json.meshes=this.json.meshes||[],this.json.meshes.push(n),this.json.meshes.length-1}addImage(e,t){let n=P(e),o=t||n?.mimeType,i={bufferView:this.addBufferView(e),mimeType:o};return this.json.images=this.json.images||[],this.json.images.push(i),this.json.images.length-1}addBufferView(e,t=0,n=this.byteLength){let o=e.byteLength;h(Number.isFinite(o)),this.sourceBuffers=this.sourceBuffers||[],this.sourceBuffers.push(e);let s={buffer:t,byteOffset:n,byteLength:o};return this.byteLength+=R(o,4),this.json.bufferViews=this.json.bufferViews||[],this.json.bufferViews.push(s),this.json.bufferViews.length-1}addAccessor(e,t){let n={bufferView:e,type:Me(t.size),componentType:t.componentType,count:t.count,max:t.max,min:t.min};return this.json.accessors=this.json.accessors||[],this.json.accessors.push(n),this.json.accessors.length-1}addBinaryBuffer(e,t={size:3}){let n=this.addBufferView(e),o={min:t.min,max:t.max};(!o.min||!o.max)&&(o=this._getAccessorMinMax(e,t.size));let s={size:t.size,componentType:U(e),count:Math.round(e.length/t.size),min:o.min,max:o.max};return this.addAccessor(n,Object.assign(s,t))}addTexture(e){let{imageIndex:t}=e,n={source:t};return this.json.textures=this.json.textures||[],this.json.textures.push(n),this.json.textures.length-1}addMaterial(e){return this.json.materials=this.json.materials||[],this.json.materials.push(e),this.json.materials.length-1}createBinaryChunk(){let e=this.byteLength,t=new ArrayBuffer(e),n=new Uint8Array(t),o=0;for(let s of this.sourceBuffers||[])o=ze(s,n,o);this.json?.buffers?.[0]?this.json.buffers[0].byteLength=e:this.json.buffers=[{byteLength:e}],this.gltf.binary=t,this.sourceBuffers=[t],this.gltf.buffers=[{arrayBuffer:t,byteOffset:0,byteLength:t.byteLength}]}_removeStringFromArray(e,t){let n=!0;for(;n;){let o=e.indexOf(t);o>-1?e.splice(o,1):n=!1}}_addAttributes(e={}){let t={};for(let n in e){let o=e[n],s=this._getGltfAttributeName(n),i=this.addBinaryBuffer(o.value,o);t[s]=i}return t}_addIndices(e){return this.addBinaryBuffer(e,{size:1})}_getGltfAttributeName(e){switch(e.toLowerCase()){case"position":case"positions":case"vertices":return"POSITION";case"normal":case"normals":return"NORMAL";case"color":case"colors":return"COLOR_0";case"texcoord":case"texcoords":return"TEXCOORD_0";default:return e}}_getAccessorMinMax(e,t){let n={min:null,max:null};if(e.length<t)return n;n.min=[],n.max=[];let o=e.subarray(0,t);for(let s of o)n.min.push(s),n.max.push(s);for(let s=t;s<e.length;s+=t)for(let i=0;i<t;i++)n.min[0+i]=Math.min(n.min[0+i],e[s+i]),n.max[0+i]=Math.max(n.max[0+i],e[s+i]);return n}};function Cr(r){return(r%1+1)%1}var br={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16,BOOLEAN:1,STRING:1,ENUM:1},Do={INT8:Int8Array,UINT8:Uint8Array,INT16:Int16Array,UINT16:Uint16Array,INT32:Int32Array,UINT32:Uint32Array,INT64:BigInt64Array,UINT64:BigUint64Array,FLOAT32:Float32Array,FLOAT64:Float64Array},xr={INT8:1,UINT8:1,INT16:2,UINT16:2,INT32:4,UINT32:4,INT64:8,UINT64:8,FLOAT32:4,FLOAT64:8};function Ae(r,e){return xr[e]*br[r]}function X(r,e,t,n){if(t!=="UINT8"&&t!=="UINT16"&&t!=="UINT32"&&t!=="UINT64")return null;let o=r.getTypedArrayForBufferView(e),s=k(o,"SCALAR",t,n+1);return s instanceof BigInt64Array||s instanceof BigUint64Array?null:s}function k(r,e,t,n=1){let o=br[e],s=Do[t],i=xr[t],a=n*o,c=a*i,f=r.buffer,A=r.byteOffset;return A%i!==0&&(f=new Uint8Array(f).slice(A,A+c).buffer,A=0),new s(J(f),A,a)}function Y(r,e,t){let n=`TEXCOORD_${e.texCoord||0}`,o=t.attributes[n],s=r.getTypedArrayForAccessor(o),i=r.gltf.json,a=e.index,c=i.textures?.[a]?.source;if(typeof c<"u"){let f=i.images?.[c]?.mimeType,A=r.gltf.images?.[c];if(A&&typeof A.width<"u"){let u=[];for(let m=0;m<s.length;m+=2){let B=Ro(A,f,s,m,e.channels);u.push(B)}return u}}return[]}function Fe(r,e,t,n,o){if(!t?.length)return;let s=[];for(let A of t){let u=n.findIndex(m=>m===A);u===-1&&(u=n.push(A)-1),s.push(u)}let i=new Uint32Array(s),a=r.gltf.buffers.push({arrayBuffer:i.buffer,byteOffset:i.byteOffset,byteLength:i.byteLength})-1,c=r.addBufferView(i,a,0),f=r.addAccessor(c,{size:1,componentType:U(i),count:i.length});o.attributes[e]=f}function Ro(r,e,t,n,o=[0]){let s={r:{offset:0,shift:0},g:{offset:1,shift:8},b:{offset:2,shift:16},a:{offset:3,shift:24}},i=t[n],a=t[n+1],c=1;e&&(e.indexOf("image/jpeg")!==-1||e.indexOf("image/png")!==-1)&&(c=4);let f=wo(i,a,r,c),A=0;for(let u of o){let m=typeof u=="number"?Object.values(s)[u]:s[u],B=f+m.offset,d=ae(r);if(d.data.length<=B)throw new Error(`${d.data.length} <= ${B}`);let p=d.data[B];A|=p<<m.shift}return A}function wo(r,e,t,n=1){let o=t.width,s=Cr(r)*(o-1),i=Math.round(s),a=t.height,c=Cr(e)*(a-1),f=Math.round(c),A=t.components?t.components:n;return(f*o+i)*A}function Ie(r,e,t,n,o){let s=[];for(let i=0;i<e;i++){let a=t[i],c=t[i+1]-t[i];if(c+a>n)break;let f=a/o,A=c/o;s.push(r.slice(f,f+A))}return s}function Ge(r,e,t){let n=[];for(let o=0;o<e;o++){let s=o*t;n.push(r.slice(s,s+t))}return n}function De(r,e,t,n){if(t)throw new Error("Not implemented - arrayOffsets for strings is specified");if(n){let o=[],s=new TextDecoder("utf8"),i=0;for(let a=0;a<r;a++){let c=n[a+1]-n[a];if(c+i<=e.length){let f=e.subarray(i,c+i),A=s.decode(f);o.push(A),i+=c}}return o}return[]}var V="EXT_mesh_features",at=V;async function Oo(r,e){let t=new l(r);_o(t,e)}function Lo(r,e){let t=new l(r);return Jo(t,e),t.createBinaryChunk(),t.gltf}function _o(r,e){let t=r.gltf.json;if(t.meshes)for(let n of t.meshes)for(let o of n.primitives)So(r,o,e)}function So(r,e,t){if(!t?.gltf?.loadBuffers)return;let o=e.extensions?.[V]?.featureIds;if(o)for(let s of o){let i;if(typeof s.attribute<"u"){let a=`_FEATURE_ID_${s.attribute}`,c=e.attributes[a];i=r.getTypedArrayForAccessor(c)}else typeof s.texture<"u"&&t?.gltf?.loadImages?i=Y(r,s.texture,e):i=[];s.data=i}}function Jo(r,e){let t=r.gltf.json.meshes;if(t)for(let n of t)for(let o of n.primitives)Uo(r,o)}function ct(r,e,t,n){e.extensions||(e.extensions={});let o=e.extensions[V];o||(o={featureIds:[]},e.extensions[V]=o);let{featureIds:s}=o,i={featureCount:t.length,propertyTable:n,data:t};s.push(i),r.addObjectExtension(e,V,o)}function Uo(r,e){let t=e.extensions?.[V];if(!t)return;let n=t.featureIds;n.forEach((o,s)=>{if(o.data){let{accessorKey:i,index:a}=Ho(e.attributes),c=new Uint32Array(o.data);n[s]={featureCount:c.length,propertyTable:o.propertyTable,attribute:a},r.gltf.buffers.push({arrayBuffer:c.buffer,byteOffset:c.byteOffset,byteLength:c.byteLength});let f=r.addBufferView(c),A=r.addAccessor(f,{size:1,componentType:U(c),count:c.length});e.attributes[i]=A}})}function Ho(r){let e="_FEATURE_ID_",t=Object.keys(r).filter(s=>s.indexOf(e)===0),n=-1;for(let s of t){let i=Number(s.substring(e.length));i>n&&(n=i)}return n++,{accessorKey:`${e}${n}`,index:n}}var we={};y(we,{createExtStructuralMetadata:()=>mt,decode:()=>No,encode:()=>Po,name:()=>At});var W="EXT_structural_metadata",At=W;async function No(r,e){let t=new l(r);Ko(t,e)}function Po(r,e){let t=new l(r);return ns(t,e),t.createBinaryChunk(),t.gltf}function Ko(r,e){if(!e.gltf?.loadBuffers)return;let t=r.getExtension(W);t&&(e.gltf?.loadImages&&jo(r,t),vo(r,t))}function jo(r,e){let t=e.propertyTextures,n=r.gltf.json;if(t&&n.meshes)for(let o of n.meshes)for(let s of o.primitives)Xo(r,t,s,e)}function vo(r,e){let t=e.schema;if(!t)return;let n=t.classes,o=e.propertyTables;if(n&&o)for(let s in n){let i=Qo(o,s);i&&Yo(r,t,i)}}function Qo(r,e){for(let t of r)if(t.class===e)return t;return null}function Xo(r,e,t,n){if(!e)return;let s=t.extensions?.[W]?.propertyTextures;if(s)for(let i of s){let a=e[i];ko(r,a,t,n)}}function ko(r,e,t,n){if(!e.properties)return;n.dataAttributeNames||(n.dataAttributeNames=[]);let o=e.class;for(let s in e.properties){let i=`${o}_${s}`,a=e.properties?.[s];if(!a)continue;a.data||(a.data=[]);let c=a.data,f=Y(r,a,t);f!==null&&(Fe(r,i,f,c,t),a.data=c,n.dataAttributeNames.push(i))}}function Yo(r,e,t){let n=e.classes?.[t.class];if(!n)throw new Error(`Incorrect data in the EXT_structural_metadata extension: no schema class with name ${t.class}`);let o=t.count;for(let s in n.properties){let i=n.properties[s],a=t.properties?.[s];if(a){let c=Vo(r,e,i,o,a);a.data=c}}}function Vo(r,e,t,n,o){let s=[],i=o.values,a=r.getTypedArrayForBufferView(i),c=Wo(r,t,o,n),f=Zo(r,o,n);switch(t.type){case"SCALAR":case"VEC2":case"VEC3":case"VEC4":case"MAT2":case"MAT3":case"MAT4":{s=qo(t,n,a,c);break}case"BOOLEAN":throw new Error(`Not implemented - classProperty.type=${t.type}`);case"STRING":{s=De(n,a,c,f);break}case"ENUM":{s=zo(e,t,n,a,c);break}default:throw new Error(`Unknown classProperty type ${t.type}`)}return s}function Wo(r,e,t,n){return e.array&&typeof e.count>"u"&&typeof t.arrayOffsets<"u"?X(r,t.arrayOffsets,t.arrayOffsetType||"UINT32",n):null}function Zo(r,e,t){return typeof e.stringOffsets<"u"?X(r,e.stringOffsets,e.stringOffsetType||"UINT32",t):null}function qo(r,e,t,n){let o=r.array,s=r.count,i=Ae(r.type,r.componentType),a=t.byteLength/i,c;return r.componentType?c=k(t,r.type,r.componentType,a):c=t,o?n?Ie(c,e,n,t.length,i):s?Ge(c,e,s):[]:c}function zo(r,e,t,n,o){let s=e.enumType;if(!s)throw new Error("Incorrect data in the EXT_structural_metadata extension: classProperty.enumType is not set for type ENUM");let i=r.enums?.[s];if(!i)throw new Error(`Incorrect data in the EXT_structural_metadata extension: schema.enums does't contain ${s}`);let a=i.valueType||"UINT16",c=Ae(e.type,a),f=n.byteLength/c,A=k(n,e.type,a,f);if(A||(A=n),e.array){if(o)return $o({valuesData:A,numberOfElements:t,arrayOffsets:o,valuesDataBytesLength:n.length,elementSize:c,enumEntry:i});let u=e.count;return u?es(A,t,u,i):[]}return ut(A,0,t,i)}function $o(r){let{valuesData:e,numberOfElements:t,arrayOffsets:n,valuesDataBytesLength:o,elementSize:s,enumEntry:i}=r,a=[];for(let c=0;c<t;c++){let f=n[c],A=n[c+1]-n[c];if(A+f>o)break;let u=f/s,m=A/s,B=ut(e,u,m,i);a.push(B)}return a}function es(r,e,t,n){let o=[];for(let s=0;s<e;s++){let i=t*s,a=ut(r,i,t,n);o.push(a)}return o}function ut(r,e,t,n){let o=[];for(let s=0;s<t;s++)if(r instanceof BigInt64Array||r instanceof BigUint64Array)o.push("");else{let i=r[e+s],a=ts(n,i);a?o.push(a.name):o.push("")}return o}function ts(r,e){for(let t of r.values)if(t.value===e)return t;return null}var rs="schemaClassId";function ns(r,e){let t=r.getExtension(W);if(t&&t.propertyTables)for(let n of t.propertyTables){let o=n.class,s=t.schema?.classes?.[o];n.properties&&s&&os(n,s,r)}}function os(r,e,t){for(let n in r.properties){let o=r.properties[n].data;if(o){let s=e.properties[n];if(s){let i=as(o,s,t);r.properties[n]=i}}}}function mt(r,e,t=rs){let n=r.getExtension(W);n||(n=r.addExtension(W)),n.schema=ss(e,t,n.schema);let o=is(e,t,n.schema);return n.propertyTables||(n.propertyTables=[]),n.propertyTables.push(o)-1}function ss(r,e,t){let n=t??{id:"schema_id"},o={properties:{}};for(let s of r){let i={type:s.elementType,componentType:s.componentType};o.properties[s.name]=i}return n.classes={},n.classes[e]=o,n}function is(r,e,t){let n={class:e,count:0},o=0,s=t.classes?.[e];for(let i of r){if(o===0&&(o=i.values.length),o!==i.values.length&&i.values.length)throw new Error("Illegal values in attributes");s?.properties[i.name]&&(n.properties||(n.properties={}),n.properties[i.name]={values:0,data:i.values})}return n.count=o,n}function as(r,e,t){let n={values:0};if(e.type==="STRING"){let{stringData:o,stringOffsets:s}=As(r);n.stringOffsets=ft(s,t),n.values=ft(o,t)}else if(e.type==="SCALAR"&&e.componentType){let o=fs(r,e.componentType);n.values=ft(o,t)}return n}var cs={INT8:Int8Array,UINT8:Uint8Array,INT16:Int16Array,UINT16:Uint16Array,INT32:Int32Array,UINT32:Uint32Array,INT64:Int32Array,UINT64:Uint32Array,FLOAT32:Float32Array,FLOAT64:Float64Array};function fs(r,e){let t=[];for(let o of r)t.push(Number(o));let n=cs[e];if(!n)throw new Error("Illegal component type");return new n(t)}function As(r){let e=new TextEncoder,t=[],n=0;for(let c of r){let f=e.encode(c);n+=f.length,t.push(f)}let o=new Uint8Array(n),s=[],i=0;for(let c of t)o.set(c,i),s.push(i),i+=c.length;s.push(i);let a=new Uint32Array(s);return{stringData:o,stringOffsets:a}}function ft(r,e){return e.gltf.buffers.push({arrayBuffer:J(r.buffer),byteOffset:r.byteOffset,byteLength:r.byteLength}),e.addBufferView(r)}var lt={};y(lt,{decode:()=>us,name:()=>Bt});var Er="EXT_feature_metadata",Bt=Er;async function us(r,e){let t=new l(r);ms(t,e)}function ms(r,e){if(!e.gltf?.loadBuffers)return;let t=r.getExtension(Er);t&&(e.gltf?.loadImages&&Bs(r,t),ls(r,t))}function Bs(r,e){let t=e.schema;if(!t)return;let n=t.classes,{featureTextures:o}=e;if(n&&o)for(let s in n){let i=n[s],a=ps(o,s);a&&gs(r,a,i)}}function ls(r,e){let t=e.schema;if(!t)return;let n=t.classes,o=e.featureTables;if(n&&o)for(let s in n){let i=ds(o,s);i&&hs(r,t,i)}}function ds(r,e){for(let t in r){let n=r[t];if(n.class===e)return n}return null}function ps(r,e){for(let t in r){let n=r[t];if(n.class===e)return n}return null}function hs(r,e,t){if(!t.class)return;let n=e.classes?.[t.class];if(!n)throw new Error(`Incorrect data in the EXT_structural_metadata extension: no schema class with name ${t.class}`);let o=t.count;for(let s in n.properties){let i=n.properties[s],a=t.properties?.[s];if(a){let c=Cs(r,e,i,o,a);a.data=c}}}function gs(r,e,t){let n=e.class;for(let o in t.properties){let s=e?.properties?.[o];if(s){let i=Ts(r,s,n);s.data=i}}}function Cs(r,e,t,n,o){let s=[],i=o.bufferView,a=r.getTypedArrayForBufferView(i),c=bs(r,t,o,n),f=xs(r,t,o,n);return t.type==="STRING"||t.componentType==="STRING"?s=De(n,a,c,f):Es(t)&&(s=ys(t,n,a,c)),s}function bs(r,e,t,n){return e.type==="ARRAY"&&typeof e.componentCount>"u"&&typeof t.arrayOffsetBufferView<"u"?X(r,t.arrayOffsetBufferView,t.offsetType||"UINT32",n):null}function xs(r,e,t,n){return typeof t.stringOffsetBufferView<"u"?X(r,t.stringOffsetBufferView,t.offsetType||"UINT32",n):null}function Es(r){let e=["UINT8","INT16","UINT16","INT32","UINT32","INT64","UINT64","FLOAT32","FLOAT64"];return e.includes(r.type)||typeof r.componentType<"u"&&e.includes(r.componentType)}function ys(r,e,t,n){let o=r.type==="ARRAY",s=r.componentCount,i="SCALAR",a=r.componentType||r.type,c=Ae(i,a),f=t.byteLength/c,A=k(t,i,a,f);return o?n?Ie(A,e,n,t.length,c):s?Ge(A,e,s):[]:A}function Ts(r,e,t){let n=r.gltf.json;if(!n.meshes)return[];let o=[];for(let s of n.meshes)for(let i of s.primitives)Ms(r,t,e,o,i);return o}function Ms(r,e,t,n,o){let s={channels:t.channels,...t.texture},i=Y(r,s,o);i&&Fe(r,e,i,n,o)}var H="4.4.0-alpha.17";var yr="4.4.0-alpha.17";var Oe={TRANSCODER:"basis_transcoder.js",TRANSCODER_WASM:"basis_transcoder.wasm",ENCODER:"basis_encoder.js",ENCODER_WASM:"basis_encoder.wasm"},Tr;async function pt(r){Ve(r.modules);let e=We("basis");return e||(Tr||=Fs(r),await Tr)}async function Fs(r){let e=null,t=null;return[e,t]=await Promise.all([await M(Oe.TRANSCODER,"textures",r),await M(Oe.TRANSCODER_WASM,"textures",r)]),e=e||globalThis.BASIS,await Is(e,t)}function Is(r,e){let t={};return e&&(t.wasmBinary=e),new Promise(n=>{r(t).then(o=>{let{BasisFile:s,initializeBasis:i}=o;i(),n({BasisFile:s})})})}var dt;async function ht(r){let e=r.modules||{};return e.basisEncoder?e.basisEncoder:(dt=dt||Gs(r),await dt)}async function Gs(r){let e=null,t=null;return[e,t]=await Promise.all([await M(Oe.ENCODER,"textures",r),await M(Oe.ENCODER_WASM,"textures",r)]),e=e||globalThis.BASIS,await Ds(e,t)}function Ds(r,e){let t={};return e&&(t.wasmBinary=e),new Promise(n=>{r(t).then(o=>{let{BasisFile:s,KTX2File:i,initializeBasis:a,BasisEncoder:c}=o;a(),n({BasisFile:s,KTX2File:i,BasisEncoder:c})})})}var Rs=["","WEBKIT_","MOZ_"],Mr={WEBGL_compressed_texture_s3tc:["bc1-rgb-unorm-webgl","bc1-rgba-unorm","bc2-rgba-unorm","bc3-rgba-unorm"],WEBGL_compressed_texture_s3tc_srgb:["bc1-rgb-unorm-srgb-webgl","bc1-rgba-unorm-srgb","bc2-rgba-unorm-srgb","bc3-rgba-unorm-srgb"],EXT_texture_compression_rgtc:["bc4-r-unorm","bc4-r-snorm","bc5-rg-unorm","bc5-rg-snorm"],EXT_texture_compression_bptc:["bc6h-rgb-ufloat","bc6h-rgb-float","bc7-rgba-unorm","bc7-rgba-unorm-srgb"],WEBGL_compressed_texture_etc1:["etc1-rbg-unorm-webgl"],WEBGL_compressed_texture_etc:["etc2-rgb8unorm","etc2-rgb8unorm-srgb","etc2-rgb8a1unorm","etc2-rgb8a1unorm-srgb","etc2-rgba8unorm","etc2-rgba8unorm-srgb","eac-r11unorm","eac-r11snorm","eac-rg11unorm","eac-rg11snorm"],WEBGL_compressed_texture_pvrtc:["pvrtc-rgb4unorm-webgl","pvrtc-rgba4unorm-webgl","pvrtc-rbg2unorm-webgl","pvrtc-rgba2unorm-webgl"],WEBGL_compressed_texture_atc:["atc-rgb-unorm-webgl","atc-rgba-unorm-webgl","atc-rgbai-unorm-webgl"],WEBGL_compressed_texture_astc:["astc-4x4-unorm","astc-4x4-unorm-srgb","astc-5x4-unorm","astc-5x4-unorm-srgb","astc-5x5-unorm","astc-5x5-unorm-srgb","astc-6x5-unorm","astc-6x5-unorm-srgb","astc-6x6-unorm","astc-6x6-unorm-srgb","astc-8x5-unorm","astc-8x5-unorm-srgb","astc-8x6-unorm","astc-8x6-unorm-srgb","astc-8x8-unorm","astc-8x8-unorm-srgb","astc-10x5-unorm","astc-10x5-unorm-srgb","astc-10x6-unorm","astc-10x6-unorm-srgb","astc-10x8-unorm","astc-10x8-unorm-srgb","astc-10x10-unorm","astc-10x10-unorm-srgb","astc-12x10-unorm","astc-12x10-unorm-srgb","astc-12x12-unorm","astc-12x12-unorm-srgb"]};var Le=null;function Fr(r){if(!Le){r=r||ws()||void 0,Le=new Set;for(let e of Rs)for(let t in Mr)if(r&&r.getExtension(`${e}${t}`))for(let n of Mr[t])Le.add(n)}return Le}function ws(){try{return document.createElement("canvas").getContext("webgl")}catch{return null}}var E=[171,75,84,88,32,50,48,187,13,10,26,10];function Ir(r){let e=new Uint8Array(r);return!(e.byteLength<E.length||e[0]!==E[0]||e[1]!==E[1]||e[2]!==E[2]||e[3]!==E[3]||e[4]!==E[4]||e[5]!==E[5]||e[6]!==E[6]||e[7]!==E[7]||e[8]!==E[8]||e[9]!==E[9]||e[10]!==E[10]||e[11]!==E[11])}var Rr={etc1:{basisFormat:0,compressed:!0,format:36196,textureFormat:"etc1-rbg-unorm-webgl"},etc2:{basisFormat:1,compressed:!0,format:37493,textureFormat:"etc2-rgba8unorm"},bc1:{basisFormat:2,compressed:!0,format:33776,textureFormat:"bc1-rgb-unorm-webgl"},bc3:{basisFormat:3,compressed:!0,format:33779,textureFormat:"bc3-rgba-unorm"},bc4:{basisFormat:4,compressed:!0,format:36283,textureFormat:"bc4-r-unorm"},bc5:{basisFormat:5,compressed:!0,format:36285,textureFormat:"bc5-rg-unorm"},"bc7-m6-opaque-only":{basisFormat:6,compressed:!0,format:36492,textureFormat:"bc7-rgba-unorm"},"bc7-m5":{basisFormat:7,compressed:!0,format:36492,textureFormat:"bc7-rgba-unorm"},"pvrtc1-4-rgb":{basisFormat:8,compressed:!0,format:35840,textureFormat:"pvrtc-rgb4unorm-webgl"},"pvrtc1-4-rgba":{basisFormat:9,compressed:!0,format:35842,textureFormat:"pvrtc-rgba4unorm-webgl"},"astc-4x4":{basisFormat:10,compressed:!0,format:37808,textureFormat:"astc-4x4-unorm"},"atc-rgb":{basisFormat:11,compressed:!0,format:35986,textureFormat:"atc-rgb-unorm-webgl"},"atc-rgba-interpolated-alpha":{basisFormat:12,compressed:!0,format:34798,textureFormat:"atc-rgbai-unorm-webgl"},rgba32:{basisFormat:13,compressed:!1,format:32856,textureFormat:"rgba8unorm"},rgb565:{basisFormat:14,compressed:!1,format:36194,textureFormat:"rgb565unorm-webgl"},bgr565:{basisFormat:15,compressed:!1,format:36194,textureFormat:"rgb565unorm-webgl"},rgba4444:{basisFormat:16,compressed:!1,format:32854,textureFormat:"rgba4unorm-webgl"}},lA=Object.freeze(Object.keys(Rr));async function wr(r,e={}){if(!e.basis?.containerFormat||e.basis.containerFormat==="auto"){if(Ir(r)){let n=await ht(e?.core||{});return Gr(n.KTX2File,r,e)}let{BasisFile:t}=await pt(e?.core||{});return gt(t,r,e)}switch(e.basis.module){case"encoder":let t=await ht(e?.core||{});switch(e.basis.containerFormat){case"ktx2":return Gr(t.KTX2File,r,e);case"basis":default:return gt(t.BasisFile,r,e)}case"transcoder":default:let{BasisFile:n}=await pt(e.core||{});return gt(n,r,e)}}function gt(r,e,t){let n=new r(new Uint8Array(e));try{if(!n.startTranscoding())throw new Error("Failed to start basis transcoding");let o=n.getNumImages(),s=[];for(let i=0;i<o;i++){let a=n.getNumLevels(i),c=[];for(let f=0;f<a;f++)c.push(_s(n,i,f,t));s.push(c)}return s}finally{n.close(),n.delete()}}function _s(r,e,t,n){let o=r.getImageWidth(e,t),s=r.getImageHeight(e,t),i=r.getHasAlpha(),{compressed:a,format:c,basisFormat:f,textureFormat:A}=Or(n,i),u=r.getImageTranscodedSizeInBytes(e,t,f),m=new Uint8Array(u);if(!r.transcodeImage(m,e,t,f,0,0))throw new Error("failed to start Basis transcoding");return{shape:"texture-level",width:o,height:s,data:m,compressed:a,...c!==void 0?{format:c}:{},...A!==void 0?{textureFormat:A}:{},hasAlpha:i}}function Gr(r,e,t){let n=new r(new Uint8Array(e));try{if(!n.startTranscoding())throw new Error("failed to start KTX2 transcoding");let o=n.getLevels(),s=[];for(let i=0;i<o;i++)s.push(Ss(n,i,t));return[s]}finally{n.close(),n.delete()}}function Ss(r,e,t){let{alphaFlag:n,height:o,width:s}=r.getImageLevelInfo(e,0,0),{compressed:i,format:a,basisFormat:c,textureFormat:f}=Or(t,n),A=r.getImageTranscodedSizeInBytes(e,0,0,c),u=new Uint8Array(A);if(!r.transcodeImage(u,e,0,0,c,0,-1,-1))throw new Error("Failed to transcode KTX2 image");return{shape:"texture-level",width:s,height:o,data:u,compressed:i,...a!==void 0?{format:a}:{},...f!==void 0?{textureFormat:f}:{},levelSize:A,hasAlpha:n}}function Or(r,e){let t=r.basis?.format||"auto";t==="auto"&&(t=r.basis?.supportedTextureFormats?Dr(r.basis.supportedTextureFormats):Dr()),typeof t=="object"&&(t=e?t.alpha:t.noAlpha);let n=t.toLowerCase(),o=Rr[n];if(!o)throw new Error(`Unknown Basis format ${t}`);return o}function Dr(r=Fr()){let e=new Set(r);return Z(e,["astc-4x4-unorm","astc-4x4-unorm-srgb"])?"astc-4x4":Z(e,["bc7-rgba-unorm","bc7-rgba-unorm-srgb"])?{alpha:"bc7-m5",noAlpha:"bc7-m6-opaque-only"}:Z(e,["bc1-rgb-unorm-webgl","bc1-rgb-unorm-srgb-webgl","bc1-rgba-unorm","bc1-rgba-unorm-srgb","bc2-rgba-unorm","bc2-rgba-unorm-srgb","bc3-rgba-unorm","bc3-rgba-unorm-srgb"])?{alpha:"bc3",noAlpha:"bc1"}:Z(e,["pvrtc-rgb4unorm-webgl","pvrtc-rgba4unorm-webgl","pvrtc-rbg2unorm-webgl","pvrtc-rgba2unorm-webgl"])?{alpha:"pvrtc1-4-rgba",noAlpha:"pvrtc1-4-rgb"}:Z(e,["etc2-rgb8unorm","etc2-rgb8unorm-srgb","etc2-rgb8a1unorm","etc2-rgb8a1unorm-srgb","etc2-rgba8unorm","etc2-rgba8unorm-srgb","eac-r11unorm","eac-r11snorm","eac-rg11unorm","eac-rg11snorm"])?"etc2":e.has("etc1-rbg-unorm-webgl")?"etc1":Z(e,["atc-rgb-unorm-webgl","atc-rgba-unorm-webgl","atc-rgbai-unorm-webgl"])?{alpha:"atc-rgba-interpolated-alpha",noAlpha:"atc-rgb"}:"rgb565"}function Z(r,e){return e.some(t=>r.has(t))}var Lr={dataType:null,batchType:null,name:"Basis",id:"basis",module:"textures",version:yr,worker:!0,extensions:["basis","ktx2"],mimeTypes:["application/octet-stream","image/ktx2"],tests:["sB"],binary:!0,options:{basis:{format:"auto",libraryPath:"libs/",containerFormat:"auto",module:"transcoder"}}},Ct={...Lr,parse:wr};var q=!0,_r=1735152710,Et=12,_e=8,Js=1313821514,Us=5130562,Hs=0,Ns=0,Ps=1;function Ks(r,e=0){return`${String.fromCharCode(r.getUint8(e+0))}${String.fromCharCode(r.getUint8(e+1))}${String.fromCharCode(r.getUint8(e+2))}${String.fromCharCode(r.getUint8(e+3))}`}function Sr(r,e=0,t={}){let n=new DataView(r),{magic:o=_r}=t,s=n.getUint32(e,!1);return s===o||s===_r}function Se(r,e,t=0,n={}){let o=new DataView(e),s=Ks(o,t+0),i=o.getUint32(t+4,q),a=o.getUint32(t+8,q);switch(Object.assign(r,{header:{byteOffset:t,byteLength:a,hasBinChunk:!1},type:s,version:i,json:{},binChunks:[]}),t+=Et,r.version){case 1:return js(r,o,t);case 2:return vs(r,o,t,n={});default:throw new Error(`Invalid GLB version ${r.version}. Only supports version 1 and 2.`)}}function js(r,e,t){T(r.header.byteLength>Et+_e);let n=e.getUint32(t+0,q),o=e.getUint32(t+4,q);return t+=_e,T(o===Hs),bt(r,e,t,n),t+=n,t+=xt(r,e,t,r.header.byteLength),t}function vs(r,e,t,n){return T(r.header.byteLength>Et+_e),Qs(r,e,t,n),t+r.header.byteLength}function Qs(r,e,t,n){for(;t+8<=r.header.byteLength;){let o=e.getUint32(t+0,q),s=e.getUint32(t+4,q);switch(t+=_e,s){case Js:bt(r,e,t,o);break;case Us:xt(r,e,t,o);break;case Ns:n.strict||bt(r,e,t,o);break;case Ps:n.strict||xt(r,e,t,o);break;default:break}t+=R(o,4)}return t}function bt(r,e,t,n){let o=new Uint8Array(e.buffer,t,n),i=new TextDecoder("utf8").decode(o);return r.json=JSON.parse(i),R(n,4)}function xt(r,e,t,n){return r.header.hasBinChunk=!0,r.binChunks.push({byteOffset:t,byteLength:n,arrayBuffer:e.buffer}),R(n,4)}function yt(r,e){if(r.startsWith("data:")||r.startsWith("http:")||r.startsWith("https:"))return r;let n=e?.core?.baseUri||e.baseUri||e.uri;if(!n)throw new Error(`'baseUri' must be provided to resolve relative url ${r}`);return n.substr(0,n.lastIndexOf("/")+1)+r}var Mt={};y(Mt,{decode:()=>ri,name:()=>ti});var Xs="B9h9z9tFBBBF8fL9gBB9gLaaaaaFa9gEaaaB9gFaFa9gEaaaFaEMcBFFFGGGEIIILF9wFFFLEFBFKNFaFCx/IFMO/LFVK9tv9t9vq95GBt9f9f939h9z9t9f9j9h9s9s9f9jW9vq9zBBp9tv9z9o9v9wW9f9kv9j9v9kv9WvqWv94h919m9mvqBF8Z9tv9z9o9v9wW9f9kv9j9v9kv9J9u9kv94h919m9mvqBGy9tv9z9o9v9wW9f9kv9j9v9kv9J9u9kv949TvZ91v9u9jvBEn9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9P9jWBIi9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9R919hWBLn9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9F949wBKI9z9iqlBOc+x8ycGBM/qQFTa8jUUUUBCU/EBlHL8kUUUUBC9+RKGXAGCFJAI9LQBCaRKAE2BBC+gF9HQBALAEAIJHOAGlAGTkUUUBRNCUoBAG9uC/wgBZHKCUGAKCUG9JyRVAECFJRICBRcGXEXAcAF9PQFAVAFAclAcAVJAF9JyRMGXGXAG9FQBAMCbJHKC9wZRSAKCIrCEJCGrRQANCUGJRfCBRbAIRTEXGXAOATlAQ9PQBCBRISEMATAQJRIGXAS9FQBCBRtCBREEXGXAOAIlCi9PQBCBRISLMANCU/CBJAEJRKGXGXGXGXGXATAECKrJ2BBAtCKZrCEZfIBFGEBMAKhB83EBAKCNJhB83EBSEMAKAI2BIAI2BBHmCKrHYAYCE6HYy86BBAKCFJAICIJAYJHY2BBAmCIrCEZHPAPCE6HPy86BBAKCGJAYAPJHY2BBAmCGrCEZHPAPCE6HPy86BBAKCEJAYAPJHY2BBAmCEZHmAmCE6Hmy86BBAKCIJAYAmJHY2BBAI2BFHmCKrHPAPCE6HPy86BBAKCLJAYAPJHY2BBAmCIrCEZHPAPCE6HPy86BBAKCKJAYAPJHY2BBAmCGrCEZHPAPCE6HPy86BBAKCOJAYAPJHY2BBAmCEZHmAmCE6Hmy86BBAKCNJAYAmJHY2BBAI2BGHmCKrHPAPCE6HPy86BBAKCVJAYAPJHY2BBAmCIrCEZHPAPCE6HPy86BBAKCcJAYAPJHY2BBAmCGrCEZHPAPCE6HPy86BBAKCMJAYAPJHY2BBAmCEZHmAmCE6Hmy86BBAKCSJAYAmJHm2BBAI2BEHICKrHYAYCE6HYy86BBAKCQJAmAYJHm2BBAICIrCEZHYAYCE6HYy86BBAKCfJAmAYJHm2BBAICGrCEZHYAYCE6HYy86BBAKCbJAmAYJHK2BBAICEZHIAICE6HIy86BBAKAIJRISGMAKAI2BNAI2BBHmCIrHYAYCb6HYy86BBAKCFJAICNJAYJHY2BBAmCbZHmAmCb6Hmy86BBAKCGJAYAmJHm2BBAI2BFHYCIrHPAPCb6HPy86BBAKCEJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCIJAmAYJHm2BBAI2BGHYCIrHPAPCb6HPy86BBAKCLJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCKJAmAYJHm2BBAI2BEHYCIrHPAPCb6HPy86BBAKCOJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCNJAmAYJHm2BBAI2BIHYCIrHPAPCb6HPy86BBAKCVJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCcJAmAYJHm2BBAI2BLHYCIrHPAPCb6HPy86BBAKCMJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCSJAmAYJHm2BBAI2BKHYCIrHPAPCb6HPy86BBAKCQJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCfJAmAYJHm2BBAI2BOHICIrHYAYCb6HYy86BBAKCbJAmAYJHK2BBAICbZHIAICb6HIy86BBAKAIJRISFMAKAI8pBB83BBAKCNJAICNJ8pBB83BBAICTJRIMAtCGJRtAECTJHEAS9JQBMMGXAIQBCBRISEMGXAM9FQBANAbJ2BBRtCBRKAfREEXAEANCU/CBJAKJ2BBHTCFrCBATCFZl9zAtJHt86BBAEAGJREAKCFJHKAM9HQBMMAfCFJRfAIRTAbCFJHbAG9HQBMMABAcAG9sJANCUGJAMAG9sTkUUUBpANANCUGJAMCaJAG9sJAGTkUUUBpMAMCBAIyAcJRcAIQBMC9+RKSFMCBC99AOAIlAGCAAGCA9Ly6yRKMALCU/EBJ8kUUUUBAKM+OmFTa8jUUUUBCoFlHL8kUUUUBC9+RKGXAFCE9uHOCtJAI9LQBCaRKAE2BBHNC/wFZC/gF9HQBANCbZHVCF9LQBALCoBJCgFCUFT+JUUUBpALC84Jha83EBALC8wJha83EBALC8oJha83EBALCAJha83EBALCiJha83EBALCTJha83EBALha83ENALha83EBAEAIJC9wJRcAECFJHNAOJRMGXAF9FQBCQCbAVCF6yRSABRECBRVCBRQCBRfCBRICBRKEXGXAMAcuQBC9+RKSEMGXGXAN2BBHOC/vF9LQBALCoBJAOCIrCa9zAKJCbZCEWJHb8oGIRTAb8oGBRtGXAOCbZHbAS9PQBALAOCa9zAIJCbZCGWJ8oGBAVAbyROAb9FRbGXGXAGCG9HQBABAt87FBABCIJAO87FBABCGJAT87FBSFMAEAtjGBAECNJAOjGBAECIJATjGBMAVAbJRVALCoBJAKCEWJHmAOjGBAmATjGIALAICGWJAOjGBALCoBJAKCFJCbZHKCEWJHTAtjGBATAOjGIAIAbJRIAKCFJRKSGMGXGXAbCb6QBAQAbJAbC989zJCFJRQSFMAM1BBHbCgFZROGXGXAbCa9MQBAMCFJRMSFMAM1BFHbCgBZCOWAOCgBZqROGXAbCa9MQBAMCGJRMSFMAM1BGHbCgBZCfWAOqROGXAbCa9MQBAMCEJRMSFMAM1BEHbCgBZCdWAOqROGXAbCa9MQBAMCIJRMSFMAM2BIC8cWAOqROAMCLJRMMAOCFrCBAOCFZl9zAQJRQMGXGXAGCG9HQBABAt87FBABCIJAQ87FBABCGJAT87FBSFMAEAtjGBAECNJAQjGBAECIJATjGBMALCoBJAKCEWJHOAQjGBAOATjGIALAICGWJAQjGBALCoBJAKCFJCbZHKCEWJHOAtjGBAOAQjGIAICFJRIAKCFJRKSFMGXAOCDF9LQBALAIAcAOCbZJ2BBHbCIrHTlCbZCGWJ8oGBAVCFJHtATyROALAIAblCbZCGWJ8oGBAtAT9FHmJHtAbCbZHTyRbAT9FRTGXGXAGCG9HQBABAV87FBABCIJAb87FBABCGJAO87FBSFMAEAVjGBAECNJAbjGBAECIJAOjGBMALAICGWJAVjGBALCoBJAKCEWJHYAOjGBAYAVjGIALAICFJHICbZCGWJAOjGBALCoBJAKCFJCbZCEWJHYAbjGBAYAOjGIALAIAmJCbZHICGWJAbjGBALCoBJAKCGJCbZHKCEWJHOAVjGBAOAbjGIAKCFJRKAIATJRIAtATJRVSFMAVCBAM2BBHYyHTAOC/+F6HPJROAYCbZRtGXGXAYCIrHmQBAOCFJRbSFMAORbALAIAmlCbZCGWJ8oGBROMGXGXAtQBAbCFJRVSFMAbRVALAIAYlCbZCGWJ8oGBRbMGXGXAP9FQBAMCFJRYSFMAM1BFHYCgFZRTGXGXAYCa9MQBAMCGJRYSFMAM1BGHYCgBZCOWATCgBZqRTGXAYCa9MQBAMCEJRYSFMAM1BEHYCgBZCfWATqRTGXAYCa9MQBAMCIJRYSFMAM1BIHYCgBZCdWATqRTGXAYCa9MQBAMCLJRYSFMAMCKJRYAM2BLC8cWATqRTMATCFrCBATCFZl9zAQJHQRTMGXGXAmCb6QBAYRPSFMAY1BBHMCgFZROGXGXAMCa9MQBAYCFJRPSFMAY1BFHMCgBZCOWAOCgBZqROGXAMCa9MQBAYCGJRPSFMAY1BGHMCgBZCfWAOqROGXAMCa9MQBAYCEJRPSFMAY1BEHMCgBZCdWAOqROGXAMCa9MQBAYCIJRPSFMAYCLJRPAY2BIC8cWAOqROMAOCFrCBAOCFZl9zAQJHQROMGXGXAtCb6QBAPRMSFMAP1BBHMCgFZRbGXGXAMCa9MQBAPCFJRMSFMAP1BFHMCgBZCOWAbCgBZqRbGXAMCa9MQBAPCGJRMSFMAP1BGHMCgBZCfWAbqRbGXAMCa9MQBAPCEJRMSFMAP1BEHMCgBZCdWAbqRbGXAMCa9MQBAPCIJRMSFMAPCLJRMAP2BIC8cWAbqRbMAbCFrCBAbCFZl9zAQJHQRbMGXGXAGCG9HQBABAT87FBABCIJAb87FBABCGJAO87FBSFMAEATjGBAECNJAbjGBAECIJAOjGBMALCoBJAKCEWJHYAOjGBAYATjGIALAICGWJATjGBALCoBJAKCFJCbZCEWJHYAbjGBAYAOjGIALAICFJHICbZCGWJAOjGBALCoBJAKCGJCbZCEWJHOATjGBAOAbjGIALAIAm9FAmCb6qJHICbZCGWJAbjGBAIAt9FAtCb6qJRIAKCEJRKMANCFJRNABCKJRBAECSJREAKCbZRKAICbZRIAfCEJHfAF9JQBMMCBC99AMAc6yRKMALCoFJ8kUUUUBAKM/tIFGa8jUUUUBCTlRLC9+RKGXAFCLJAI9LQBCaRKAE2BBC/+FZC/QF9HQBALhB83ENAECFJRKAEAIJC98JREGXAF9FQBGXAGCG6QBEXGXAKAE9JQBC9+bMAK1BBHGCgFZRIGXGXAGCa9MQBAKCFJRKSFMAK1BFHGCgBZCOWAICgBZqRIGXAGCa9MQBAKCGJRKSFMAK1BGHGCgBZCfWAIqRIGXAGCa9MQBAKCEJRKSFMAK1BEHGCgBZCdWAIqRIGXAGCa9MQBAKCIJRKSFMAK2BIC8cWAIqRIAKCLJRKMALCNJAICFZCGWqHGAICGrCBAICFrCFZl9zAG8oGBJHIjGBABAIjGBABCIJRBAFCaJHFQBSGMMEXGXAKAE9JQBC9+bMAK1BBHGCgFZRIGXGXAGCa9MQBAKCFJRKSFMAK1BFHGCgBZCOWAICgBZqRIGXAGCa9MQBAKCGJRKSFMAK1BGHGCgBZCfWAIqRIGXAGCa9MQBAKCEJRKSFMAK1BEHGCgBZCdWAIqRIGXAGCa9MQBAKCIJRKSFMAK2BIC8cWAIqRIAKCLJRKMABAICGrCBAICFrCFZl9zALCNJAICFZCGWqHI8oGBJHG87FBAIAGjGBABCGJRBAFCaJHFQBMMCBC99AKAE6yRKMAKM+lLKFaF99GaG99FaG99GXGXAGCI9HQBAF9FQFEXGXGX9DBBB8/9DBBB+/ABCGJHG1BB+yAB1BBHE+yHI+L+TABCFJHL1BBHK+yHO+L+THN9DBBBB9gHVyAN9DBB/+hANAN+U9DBBBBANAVyHcAc+MHMAECa3yAI+SHIAI+UAcAMAKCa3yAO+SHcAc+U+S+S+R+VHO+U+SHN+L9DBBB9P9d9FQBAN+oRESFMCUUUU94REMAGAE86BBGXGX9DBBB8/9DBBB+/Ac9DBBBB9gyAcAO+U+SHN+L9DBBB9P9d9FQBAN+oRGSFMCUUUU94RGMALAG86BBGXGX9DBBB8/9DBBB+/AI9DBBBB9gyAIAO+U+SHN+L9DBBB9P9d9FQBAN+oRGSFMCUUUU94RGMABAG86BBABCIJRBAFCaJHFQBSGMMAF9FQBEXGXGX9DBBB8/9DBBB+/ABCIJHG8uFB+yAB8uFBHE+yHI+L+TABCGJHL8uFBHK+yHO+L+THN9DBBBB9gHVyAN9DB/+g6ANAN+U9DBBBBANAVyHcAc+MHMAECa3yAI+SHIAI+UAcAMAKCa3yAO+SHcAc+U+S+S+R+VHO+U+SHN+L9DBBB9P9d9FQBAN+oRESFMCUUUU94REMAGAE87FBGXGX9DBBB8/9DBBB+/Ac9DBBBB9gyAcAO+U+SHN+L9DBBB9P9d9FQBAN+oRGSFMCUUUU94RGMALAG87FBGXGX9DBBB8/9DBBB+/AI9DBBBB9gyAIAO+U+SHN+L9DBBB9P9d9FQBAN+oRGSFMCUUUU94RGMABAG87FBABCNJRBAFCaJHFQBMMM/SEIEaE99EaF99GXAF9FQBCBREABRIEXGXGX9D/zI818/AICKJ8uFBHLCEq+y+VHKAI8uFB+y+UHO9DB/+g6+U9DBBB8/9DBBB+/AO9DBBBB9gy+SHN+L9DBBB9P9d9FQBAN+oRVSFMCUUUU94RVMAICIJ8uFBRcAICGJ8uFBRMABALCFJCEZAEqCFWJAV87FBGXGXAKAM+y+UHN9DB/+g6+U9DBBB8/9DBBB+/AN9DBBBB9gy+SHS+L9DBBB9P9d9FQBAS+oRMSFMCUUUU94RMMABALCGJCEZAEqCFWJAM87FBGXGXAKAc+y+UHK9DB/+g6+U9DBBB8/9DBBB+/AK9DBBBB9gy+SHS+L9DBBB9P9d9FQBAS+oRcSFMCUUUU94RcMABALCaJCEZAEqCFWJAc87FBGXGX9DBBU8/AOAO+U+TANAN+U+TAKAK+U+THO9DBBBBAO9DBBBB9gy+R9DB/+g6+U9DBBB8/+SHO+L9DBBB9P9d9FQBAO+oRcSFMCUUUU94RcMABALCEZAEqCFWJAc87FBAICNJRIAECIJREAFCaJHFQBMMM9JBGXAGCGrAF9sHF9FQBEXABAB8oGBHGCNWCN91+yAGCi91CnWCUUU/8EJ+++U84GBABCIJRBAFCaJHFQBMMM9TFEaCBCB8oGUkUUBHFABCEJC98ZJHBjGUkUUBGXGXAB8/BCTWHGuQBCaREABAGlCggEJCTrXBCa6QFMAFREMAEM/lFFFaGXGXAFABqCEZ9FQBABRESFMGXGXAGCT9PQBABRESFMABREEXAEAF8oGBjGBAECIJAFCIJ8oGBjGBAECNJAFCNJ8oGBjGBAECSJAFCSJ8oGBjGBAECTJREAFCTJRFAGC9wJHGCb9LQBMMAGCI9JQBEXAEAF8oGBjGBAFCIJRFAECIJREAGC98JHGCE9LQBMMGXAG9FQBEXAEAF2BB86BBAECFJREAFCFJRFAGCaJHGQBMMABMoFFGaGXGXABCEZ9FQBABRESFMAFCgFZC+BwsN9sRIGXGXAGCT9PQBABRESFMABREEXAEAIjGBAECSJAIjGBAECNJAIjGBAECIJAIjGBAECTJREAGC9wJHGCb9LQBMMAGCI9JQBEXAEAIjGBAECIJREAGC98JHGCE9LQBMMGXAG9FQBEXAEAF86BBAECFJREAGCaJHGQBMMABMMMFBCUNMIT9kBB",ks="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",Ys=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]),Vs=new Uint8Array([32,0,65,253,3,1,2,34,4,106,6,5,11,8,7,20,13,33,12,16,128,9,116,64,19,113,127,15,10,21,22,14,255,66,24,54,136,107,18,23,192,26,114,118,132,17,77,101,130,144,27,87,131,44,45,74,156,154,70,167]),Ws={0:"",1:"meshopt_decodeFilterOct",2:"meshopt_decodeFilterQuat",3:"meshopt_decodeFilterExp",NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},Zs={0:"meshopt_decodeVertexBuffer",1:"meshopt_decodeIndexBuffer",2:"meshopt_decodeIndexSequence",ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"};async function Jr(r,e,t,n,o,s="NONE"){let i=await qs();ei(i,i.exports[Zs[o]],r,e,t,n,i.exports[Ws[s||"NONE"]])}var Tt;async function qs(){return Tt||(Tt=zs()),Tt}async function zs(){let r=Xs;WebAssembly.validate(Ys)&&(r=ks,console.log("Warning: meshopt_decoder is using experimental SIMD support"));let e=await WebAssembly.instantiate($s(r),{});return await e.instance.exports.__wasm_call_ctors(),e.instance}function $s(r){let e=new Uint8Array(r.length);for(let n=0;n<r.length;++n){let o=r.charCodeAt(n);e[n]=o>96?o-71:o>64?o-65:o>47?o+4:o>46?63:62}let t=0;for(let n=0;n<r.length;++n)e[t++]=e[n]<60?Vs[e[n]]:(e[n]-60)*64+e[++n];return e.buffer.slice(0,t)}function ei(r,e,t,n,o,s,i){let a=r.exports.sbrk,c=n+3&-4,f=a(c*o),A=a(s.length),u=new Uint8Array(r.exports.memory.buffer);u.set(s,A);let m=e(f,n,o,A,s.length);if(m===0&&i&&i(f,c,o),t.set(u.subarray(f,f+n*o)),a(f-a(0)),m!==0)throw new Error(`Malformed buffer data: ${m}`)}var Je="EXT_meshopt_compression",ti=Je;async function ri(r,e){let t=new l(r);if(!e?.gltf?.decompressMeshes||!e.gltf?.loadBuffers)return;let n=[];for(let o of r.json.bufferViews||[])n.push(ni(t,o));await Promise.all(n),t.removeExtension(Je)}async function ni(r,e){let t=r.getObjectExtension(e,Je);if(t){let{byteOffset:n=0,byteLength:o=0,byteStride:s,count:i,mode:a,filter:c="NONE",buffer:f}=t,A=r.gltf.buffers[f],u=new Uint8Array(A.arrayBuffer,A.byteOffset+n,o),m=new Uint8Array(r.gltf.buffers[e.buffer].arrayBuffer,e.byteOffset,e.byteLength);await Jr(m,i,s,u,a,c),r.removeObjectExtension(e,Je)}}var Ft={};y(Ft,{name:()=>oi,preprocess:()=>si});var z="EXT_texture_webp",oi=z;function si(r,e){let t=new l(r);if(!it("image/webp")){if(t.getRequiredExtensions().includes(z))throw new Error(`gltf: Required extension ${z} not supported by browser`);return}let{json:n}=t;for(let o of n.textures||[]){let s=t.getObjectExtension(o,z);s&&(o.source=s.source),t.removeObjectExtension(o,z)}t.removeExtension(z)}var It={};y(It,{name:()=>ii,preprocess:()=>ai});var Ue="KHR_texture_basisu",ii=Ue;function ai(r,e){let t=new l(r),{json:n}=t;for(let o of n.textures||[]){let s=t.getObjectExtension(o,Ue);s&&(o.source=s.source,t.removeObjectExtension(o,Ue))}t.removeExtension(Ue)}var _t={};y(_t,{decode:()=>yi,encode:()=>Ti,name:()=>xi,preprocess:()=>Ei});var ci="1.5.6",fi="1.4.1",Gt=`https://www.gstatic.com/draco/versioned/decoders/${ci}`,g={DECODER:"draco_wasm_wrapper.js",DECODER_WASM:"draco_decoder.wasm",FALLBACK_DECODER:"draco_decoder.js",ENCODER:"draco_encoder.js"},ue={[g.DECODER]:`${Gt}/${g.DECODER}`,[g.DECODER_WASM]:`${Gt}/${g.DECODER_WASM}`,[g.FALLBACK_DECODER]:`${Gt}/${g.FALLBACK_DECODER}`,[g.ENCODER]:`https://raw.githubusercontent.com/google/draco/${fi}/javascript/${g.ENCODER}`},Dt;async function Hr(r={},e){let t=r.modules||{};return t.draco3d?Dt||=t.draco3d.createDecoderModule({}).then(n=>({draco:n})):Dt||=Ai(r,e),await Dt}function Ur(r,e){if(r&&typeof r=="object"){if(r.default)return r.default;if(r[e])return r[e]}return r}async function Ai(r,e){let t,n;switch(e){case"js":t=await M(ue[g.FALLBACK_DECODER],"draco",r,g.FALLBACK_DECODER);break;case"wasm":default:try{[t,n]=await Promise.all([await M(ue[g.DECODER],"draco",r,g.DECODER),await M(ue[g.DECODER_WASM],"draco",r,g.DECODER_WASM)])}catch{t=null,n=null}}return t=Ur(t,"DracoDecoderModule"),t=t||globalThis.DracoDecoderModule,!t&&!L&&([t,n]=await Promise.all([await M(ue[g.DECODER],"draco",{...r,useLocalLibraries:!0},g.DECODER),await M(ue[g.DECODER_WASM],"draco",{...r,useLocalLibraries:!0},g.DECODER_WASM)]),t=Ur(t,"DracoDecoderModule"),t=t||globalThis.DracoDecoderModule),await ui(t,n)}function ui(r,e){if(typeof r!="function")throw new Error("DracoDecoderModule could not be loaded");let t={};return e&&(t.wasmBinary=e),new Promise(n=>{r({...t,onModuleLoaded:o=>n({draco:o})})})}var Nr="4.4.0-alpha.17";function Pr(r){switch(r.constructor){case Int8Array:return"int8";case Uint8Array:case Uint8ClampedArray:return"uint8";case Int16Array:return"int16";case Uint16Array:return"uint16";case Int32Array:return"int32";case Uint32Array:return"uint32";case Float32Array:return"float32";case Float64Array:return"float64";default:return"null"}}function Rt(r){let e=1/0,t=1/0,n=1/0,o=-1/0,s=-1/0,i=-1/0,a=r.POSITION?r.POSITION.value:[],c=a&&a.length;for(let f=0;f<c;f+=3){let A=a[f],u=a[f+1],m=a[f+2];e=A<e?A:e,t=u<t?u:t,n=m<n?m:n,o=A>o?A:o,s=u>s?u:s,i=m>i?m:i}return[[e,t,n],[o,s,i]]}function wt(r,e,t){let n=Pr(e.value),o=t||Kr(e);return{name:r,type:{type:"fixed-size-list",listSize:e.size,children:[{name:"value",type:n}]},nullable:!1,metadata:o}}function Kr(r){let e={};return"byteOffset"in r&&(e.byteOffset=r.byteOffset.toString(10)),"byteStride"in r&&(e.byteStride=r.byteStride.toString(10)),"normalized"in r&&(e.normalized=r.normalized.toString()),e}function vr(r,e,t){let n=Qr(e.metadata),o=[],s=mi(e.attributes);for(let i in r){let a=r[i],c=jr(i,a,s[i]);o.push(c)}if(t){let i=jr("indices",t);o.push(i)}return{fields:o,metadata:n}}function mi(r){let e={};for(let t in r){let n=r[t];e[n.name||"undefined"]=n}return e}function jr(r,e,t){let n=t?Qr(t.metadata):void 0;return wt(r,e,n)}function Qr(r){Object.entries(r);let e={};for(let t in r)e[`${t}.string`]=JSON.stringify(r[t]);return e}var Xr={POSITION:"POSITION",NORMAL:"NORMAL",COLOR:"COLOR_0",TEX_COORD:"TEXCOORD_0"},Bi={1:Int8Array,2:Uint8Array,3:Int16Array,4:Uint16Array,5:Int32Array,6:Uint32Array,9:Float32Array},li=4,me=class{draco;decoder;metadataQuerier;constructor(e){this.draco=e,this.decoder=new this.draco.Decoder,this.metadataQuerier=new this.draco.MetadataQuerier}destroy(){this.draco.destroy(this.decoder),this.draco.destroy(this.metadataQuerier)}parseSync(e,t={}){let n=new this.draco.DecoderBuffer;n.Init(new Int8Array(e),e.byteLength),this._disableAttributeTransforms(t);let o=this.decoder.GetEncodedGeometryType(n),s=o===this.draco.TRIANGULAR_MESH?new this.draco.Mesh:new this.draco.PointCloud;try{let i;switch(o){case this.draco.TRIANGULAR_MESH:i=this.decoder.DecodeBufferToMesh(n,s);break;case this.draco.POINT_CLOUD:i=this.decoder.DecodeBufferToPointCloud(n,s);break;default:throw new Error("DRACO: Unknown geometry type.")}if(!i.ok()||!s.ptr){let m=`DRACO decompression failed: ${i.error_msg()}`;throw new Error(m)}let a=this._getDracoLoaderData(s,o,t),c=this._getMeshData(s,a,t),f=Rt(c.attributes),A=vr(c.attributes,a,c.indices);return{loader:"draco",loaderData:a,header:{vertexCount:s.num_points(),boundingBox:f},...c,schema:A}}finally{this.draco.destroy(n),s&&this.draco.destroy(s)}}_getDracoLoaderData(e,t,n){let o=this._getTopLevelMetadata(e),s=this._getDracoAttributes(e,n);return{geometry_type:t,num_attributes:e.num_attributes(),num_points:e.num_points(),num_faces:e instanceof this.draco.Mesh?e.num_faces():0,metadata:o,attributes:s}}_getDracoAttributes(e,t){let n={};for(let o=0;o<e.num_attributes();o++){let s=this.decoder.GetAttribute(e,o),i=this._getAttributeMetadata(e,o);n[s.unique_id()]={unique_id:s.unique_id(),attribute_type:s.attribute_type(),data_type:s.data_type(),num_components:s.num_components(),byte_offset:s.byte_offset(),byte_stride:s.byte_stride(),normalized:s.normalized(),attribute_index:o,metadata:i};let a=this._getQuantizationTransform(s,t);a&&(n[s.unique_id()].quantization_transform=a);let c=this._getOctahedronTransform(s,t);c&&(n[s.unique_id()].octahedron_transform=c)}return n}_getMeshData(e,t,n){let o=this._getMeshAttributes(t,e,n);if(!o.POSITION)throw new Error("DRACO: No position attribute found.");if(e instanceof this.draco.Mesh)switch(n.topology){case"triangle-strip":return{topology:"triangle-strip",mode:4,attributes:o,indices:{value:this._getTriangleStripIndices(e),size:1}};case"triangle-list":default:return{topology:"triangle-list",mode:5,attributes:o,indices:{value:this._getTriangleListIndices(e),size:1}}}return{topology:"point-list",mode:0,attributes:o}}_getMeshAttributes(e,t,n){let o={};for(let s of Object.values(e.attributes)){let i=this._deduceAttributeName(s,n);s.name=i;let a=this._getAttributeValues(t,s);if(a){let{value:c,size:f}=a;o[i]={value:c,size:f,byteOffset:s.byte_offset,byteStride:s.byte_stride,normalized:s.normalized}}}return o}_getTriangleListIndices(e){let n=e.num_faces()*3,o=n*li,s=this.draco._malloc(o);try{return this.decoder.GetTrianglesUInt32Array(e,o,s),new Uint32Array(this.draco.HEAPF32.buffer,s,n).slice()}finally{this.draco._free(s)}}_getTriangleStripIndices(e){let t=new this.draco.DracoInt32Array;try{return this.decoder.GetTriangleStripsFromMesh(e,t),hi(t)}finally{this.draco.destroy(t)}}_getAttributeValues(e,t){let n=Bi[t.data_type];if(!n)return console.warn(`DRACO: Unsupported attribute type ${t.data_type}`),null;let o=t.num_components,i=e.num_points()*o,a=i*n.BYTES_PER_ELEMENT,c=di(this.draco,n),f,A=this.draco._malloc(a);try{let u=this.decoder.GetAttribute(e,t.attribute_index);this.decoder.GetAttributeDataArrayForAllPoints(e,u,c,a,A),f=new n(this.draco.HEAPF32.buffer,A,i).slice()}finally{this.draco._free(A)}return{value:f,size:o}}_deduceAttributeName(e,t){let n=e.unique_id;for(let[i,a]of Object.entries(t.extraAttributes||{}))if(a===n)return i;let o=e.attribute_type;for(let i in Xr)if(this.draco[i]===o)return Xr[i];let s=t.attributeNameEntry||"name";return e.metadata[s]?e.metadata[s].string:`CUSTOM_ATTRIBUTE_${n}`}_getTopLevelMetadata(e){let t=this.decoder.GetMetadata(e);return this._getDracoMetadata(t)}_getAttributeMetadata(e,t){let n=this.decoder.GetAttributeMetadata(e,t);return this._getDracoMetadata(n)}_getDracoMetadata(e){if(!e||!e.ptr)return{};let t={},n=this.metadataQuerier.NumEntries(e);for(let o=0;o<n;o++){let s=this.metadataQuerier.GetEntryName(e,o);t[s]=this._getDracoMetadataField(e,s)}return t}_getDracoMetadataField(e,t){let n=new this.draco.DracoInt32Array;try{this.metadataQuerier.GetIntEntryArray(e,t,n);let o=pi(n);return{int:this.metadataQuerier.GetIntEntry(e,t),string:this.metadataQuerier.GetStringEntry(e,t),double:this.metadataQuerier.GetDoubleEntry(e,t),intArray:o}}finally{this.draco.destroy(n)}}_disableAttributeTransforms(e){let{quantizedAttributes:t=[],octahedronAttributes:n=[]}=e,o=[...t,...n];for(let s of o)this.decoder.SkipAttributeTransform(this.draco[s])}_getQuantizationTransform(e,t){let{quantizedAttributes:n=[]}=t,o=e.attribute_type();if(n.map(i=>this.decoder[i]).includes(o)){let i=new this.draco.AttributeQuantizationTransform;try{if(i.InitFromAttribute(e))return{quantization_bits:i.quantization_bits(),range:i.range(),min_values:new Float32Array([1,2,3]).map(a=>i.min_value(a))}}finally{this.draco.destroy(i)}}return null}_getOctahedronTransform(e,t){let{octahedronAttributes:n=[]}=t,o=e.attribute_type();if(n.map(i=>this.decoder[i]).includes(o)){let i=new this.draco.AttributeQuantizationTransform;try{if(i.InitFromAttribute(e))return{quantization_bits:i.quantization_bits()}}finally{this.draco.destroy(i)}}return null}};function di(r,e){switch(e){case Float32Array:return r.DT_FLOAT32;case Int8Array:return r.DT_INT8;case Int16Array:return r.DT_INT16;case Int32Array:return r.DT_INT32;case Uint8Array:return r.DT_UINT8;case Uint16Array:return r.DT_UINT16;case Uint32Array:return r.DT_UINT32;default:return r.DT_INVALID}}function pi(r){let e=r.size(),t=new Int32Array(e);for(let n=0;n<e;n++)t[n]=r.GetValue(n);return t}function hi(r){let e=r.size(),t=new Int32Array(e);for(let n=0;n<e;n++)t[n]=r.GetValue(n);return t}var kr={dataType:null,batchType:null,name:"Draco",id:"draco",module:"draco",version:Nr,worker:!0,extensions:["drc"],mimeTypes:["application/octet-stream"],binary:!0,tests:["DRACO"],options:{draco:{decoderType:typeof WebAssembly=="object"?"wasm":"js",libraryPath:"libs/",extraAttributes:{},attributeNameEntry:void 0}}},Ot={...kr,parse:gi};async function gi(r,e){let{draco:t}=await Hr(e?.core,e?.draco?.decoderType||"wasm"),n=new me(t);try{return n.parseSync(r,e?.draco)}finally{n.destroy()}}function Yr(r){let e={};for(let t in r){let n=r[t];if(t!=="indices"){let o=Lt(n);e[t]=o}}return e}function Lt(r){let{buffer:e,size:t,count:n}=Ci(r);return{value:e,size:t,byteOffset:0,count:n,type:Me(t),componentType:U(e)}}function Ci(r){let e=r,t=1,n=0;return r&&r.value&&(e=r.value,t=r.size||1),e&&(ArrayBuffer.isView(e)||(e=bi(e,Float32Array)),n=e.length/t),{buffer:e,size:t,count:n}}function bi(r,e,t=!1){return r?Array.isArray(r)?new e(r):t&&!(r instanceof e)?new e(r):r:null}var N="KHR_draco_mesh_compression",xi=N;function Ei(r,e,t){let n=new l(r);for(let o of Vr(n))n.getObjectExtension(o,N)}async function yi(r,e,t){if(!e?.gltf?.decompressMeshes)return;let n=new l(r),o=[];for(let s of Vr(n))n.getObjectExtension(s,N)&&o.push(Mi(n,s,e,t));await Promise.all(o),n.removeExtension(N)}function Ti(r,e={}){let t=new l(r);for(let n of t.json.meshes||[])Fi(n,e),t.addRequiredExtension(N)}async function Mi(r,e,t,n){let o=r.getObjectExtension(e,N);if(!o)return;let s=r.getTypedArrayForBufferView(o.bufferView),i=se(s.buffer,s.byteOffset),a={...t};delete a["3d-tiles"];let c=await re(i,Ot,a,n),f=Yr(c.attributes);for(let[A,u]of Object.entries(f))if(A in e.attributes){let m=e.attributes[A],B=r.getAccessor(m);B?.min&&B?.max&&(u.min=B.min,u.max=B.max)}e.attributes=f,c.indices&&(e.indices=Lt(c.indices)),r.removeObjectExtension(e,N),Ii(e)}function Fi(r,e,t=4,n,o){if(!n.DracoWriter)throw new Error("options.gltf.DracoWriter not provided");let s=n.DracoWriter.encodeSync({attributes:r}),i=o?.parseSync?.({attributes:r}),a=n._addFauxAttributes(i.attributes),c=n.addBufferView(s);return{primitives:[{attributes:a,mode:t,extensions:{[N]:{bufferView:c,attributes:a}}}]}}function Ii(r){if(!r.attributes&&Object.keys(r.attributes).length>0)throw new Error("glTF: Empty primitive detected: Draco decompression failure?")}function*Vr(r){for(let e of r.json.meshes||[])for(let t of e.primitives)yield t}var Kt={};y(Kt,{decode:()=>vi,name:()=>Pi});var iu=1/Math.PI*180,au=1/180*Math.PI,Gi={EPSILON:1e-12,debug:!1,precision:4,printTypes:!1,printDegrees:!1,printRowMajor:!0,_cartographicRadians:!1};globalThis.mathgl=globalThis.mathgl||{config:{...Gi}};var C=globalThis.mathgl.config;function Wr(r,{precision:e=C.precision}={}){return r=Di(r),`${parseFloat(r.toPrecision(e))}`}function $(r){return Array.isArray(r)||ArrayBuffer.isView(r)&&!(r instanceof DataView)}function St(r,e,t){let n=C.EPSILON;t&&(C.EPSILON=t);try{if(r===e)return!0;if($(r)&&$(e)){if(r.length!==e.length)return!1;for(let o=0;o<r.length;++o)if(!St(r[o],e[o]))return!1;return!0}return r&&r.equals?r.equals(e):e&&e.equals?e.equals(r):typeof r=="number"&&typeof e=="number"?Math.abs(r-e)<=C.EPSILON*Math.max(1,Math.abs(r),Math.abs(e)):!1}finally{C.EPSILON=n}}function Di(r){return Math.round(r/C.EPSILON)*C.EPSILON}var ee=class extends Array{clone(){return new this.constructor().copy(this)}fromArray(e,t=0){for(let n=0;n<this.ELEMENTS;++n)this[n]=e[n+t];return this.check()}toArray(e=[],t=0){for(let n=0;n<this.ELEMENTS;++n)e[t+n]=this[n];return e}toObject(e){return e}from(e){return Array.isArray(e)?this.copy(e):this.fromObject(e)}to(e){return e===this?this:$(e)?this.toArray(e):this.toObject(e)}toTarget(e){return e?this.to(e):this}toFloat32Array(){return new Float32Array(this)}toString(){return this.formatString(C)}formatString(e){let t="";for(let n=0;n<this.ELEMENTS;++n)t+=(n>0?", ":"")+Wr(this[n],e);return`${e.printTypes?this.constructor.name:""}[${t}]`}equals(e){if(!e||this.length!==e.length)return!1;for(let t=0;t<this.ELEMENTS;++t)if(!St(this[t],e[t]))return!1;return!0}exactEquals(e){if(!e||this.length!==e.length)return!1;for(let t=0;t<this.ELEMENTS;++t)if(this[t]!==e[t])return!1;return!0}negate(){for(let e=0;e<this.ELEMENTS;++e)this[e]=-this[e];return this.check()}lerp(e,t,n){if(n===void 0)return this.lerp(this,e,t);for(let o=0;o<this.ELEMENTS;++o){let s=e[o],i=typeof t=="number"?t:t[o];this[o]=s+n*(i-s)}return this.check()}min(e){for(let t=0;t<this.ELEMENTS;++t)this[t]=Math.min(e[t],this[t]);return this.check()}max(e){for(let t=0;t<this.ELEMENTS;++t)this[t]=Math.max(e[t],this[t]);return this.check()}clamp(e,t){for(let n=0;n<this.ELEMENTS;++n)this[n]=Math.min(Math.max(this[n],e[n]),t[n]);return this.check()}add(...e){for(let t of e)for(let n=0;n<this.ELEMENTS;++n)this[n]+=t[n];return this.check()}subtract(...e){for(let t of e)for(let n=0;n<this.ELEMENTS;++n)this[n]-=t[n];return this.check()}scale(e){if(typeof e=="number")for(let t=0;t<this.ELEMENTS;++t)this[t]*=e;else for(let t=0;t<this.ELEMENTS&&t<e.length;++t)this[t]*=e[t];return this.check()}multiplyByScalar(e){for(let t=0;t<this.ELEMENTS;++t)this[t]*=e;return this.check()}check(){if(C.debug&&!this.validate())throw new Error(`math.gl: ${this.constructor.name} some fields set to invalid numbers'`);return this}validate(){let e=this.length===this.ELEMENTS;for(let t=0;t<this.ELEMENTS;++t)e=e&&Number.isFinite(this[t]);return e}sub(e){return this.subtract(e)}setScalar(e){for(let t=0;t<this.ELEMENTS;++t)this[t]=e;return this.check()}addScalar(e){for(let t=0;t<this.ELEMENTS;++t)this[t]+=e;return this.check()}subScalar(e){return this.addScalar(-e)}multiplyScalar(e){for(let t=0;t<this.ELEMENTS;++t)this[t]*=e;return this.check()}divideScalar(e){return this.multiplyByScalar(1/e)}clampScalar(e,t){for(let n=0;n<this.ELEMENTS;++n)this[n]=Math.min(Math.max(this[n],e),t);return this.check()}get elements(){return this}};function Ri(r,e){if(r.length!==e)return!1;for(let t=0;t<r.length;++t)if(!Number.isFinite(r[t]))return!1;return!0}function b(r){if(!Number.isFinite(r))throw new Error(`Invalid number ${JSON.stringify(r)}`);return r}function Zr(r,e,t=""){if(C.debug&&!Ri(r,e))throw new Error(`math.gl: ${t} some fields set to invalid numbers'`);return r}function Jt(r,e){if(!r)throw new Error(`math.gl assertion ${e}`)}var He=class extends ee{get x(){return this[0]}set x(e){this[0]=b(e)}get y(){return this[1]}set y(e){this[1]=b(e)}len(){return Math.sqrt(this.lengthSquared())}magnitude(){return this.len()}lengthSquared(){let e=0;for(let t=0;t<this.ELEMENTS;++t)e+=this[t]*this[t];return e}magnitudeSquared(){return this.lengthSquared()}distance(e){return Math.sqrt(this.distanceSquared(e))}distanceSquared(e){let t=0;for(let n=0;n<this.ELEMENTS;++n){let o=this[n]-e[n];t+=o*o}return b(t)}dot(e){let t=0;for(let n=0;n<this.ELEMENTS;++n)t+=this[n]*e[n];return b(t)}normalize(){let e=this.magnitude();if(e!==0)for(let t=0;t<this.ELEMENTS;++t)this[t]/=e;return this.check()}multiply(...e){for(let t of e)for(let n=0;n<this.ELEMENTS;++n)this[n]*=t[n];return this.check()}divide(...e){for(let t of e)for(let n=0;n<this.ELEMENTS;++n)this[n]/=t[n];return this.check()}lengthSq(){return this.lengthSquared()}distanceTo(e){return this.distance(e)}distanceToSquared(e){return this.distanceSquared(e)}getComponent(e){return Jt(e>=0&&e<this.ELEMENTS,"index is out of range"),b(this[e])}setComponent(e,t){return Jt(e>=0&&e<this.ELEMENTS,"index is out of range"),this[e]=t,this.check()}addVectors(e,t){return this.copy(e).add(t)}subVectors(e,t){return this.copy(e).subtract(t)}multiplyVectors(e,t){return this.copy(e).multiply(t)}addScaledVector(e,t){return this.add(new this.constructor(e).multiplyScalar(t))}};var te=typeof Float32Array<"u"?Float32Array:Array;var gu=Math.PI/180;function _i(){let r=new te(2);return te!=Float32Array&&(r[0]=0,r[1]=0),r}function zr(r,e,t){let n=e[0],o=e[1];return r[0]=t[0]*n+t[3]*o+t[6],r[1]=t[1]*n+t[4]*o+t[7],r}var Cu=function(){let r=_i();return function(e,t,n,o,s,i){let a,c;for(t||(t=2),n||(n=0),o?c=Math.min(o*t+n,e.length):c=e.length,a=n;a<c;a+=t)r[0]=e[a],r[1]=e[a+1],s(r,r,i),e[a]=r[0],e[a+1]=r[1];return e}}();function $r(r,e,t){let n=e[0],o=e[1],s=e[2],i=t[3]*n+t[7]*o+t[11]*s||1;return r[0]=(t[0]*n+t[4]*o+t[8]*s)/i,r[1]=(t[1]*n+t[5]*o+t[9]*s)/i,r[2]=(t[2]*n+t[6]*o+t[10]*s)/i,r}function en(r,e,t){let n=e[0],o=e[1];return r[0]=t[0]*n+t[2]*o,r[1]=t[1]*n+t[3]*o,r[2]=e[2],r}function tn(r,e,t){let n=e[0],o=e[1],s=e[2];return r[0]=t[0]*n+t[3]*o+t[6]*s,r[1]=t[1]*n+t[4]*o+t[7]*s,r[2]=t[2]*n+t[5]*o+t[8]*s,r[3]=e[3],r}function Si(){let r=new te(3);return te!=Float32Array&&(r[0]=0,r[1]=0,r[2]=0),r}function Ji(r,e){return r[0]*e[0]+r[1]*e[1]+r[2]*e[2]}function rn(r,e,t){let n=e[0],o=e[1],s=e[2],i=t[0],a=t[1],c=t[2];return r[0]=o*c-s*a,r[1]=s*i-n*c,r[2]=n*a-o*i,r}function nn(r,e,t){let n=e[0],o=e[1],s=e[2],i=t[3]*n+t[7]*o+t[11]*s+t[15];return i=i||1,r[0]=(t[0]*n+t[4]*o+t[8]*s+t[12])/i,r[1]=(t[1]*n+t[5]*o+t[9]*s+t[13])/i,r[2]=(t[2]*n+t[6]*o+t[10]*s+t[14])/i,r}function Ne(r,e,t){let n=e[0],o=e[1],s=e[2];return r[0]=n*t[0]+o*t[3]+s*t[6],r[1]=n*t[1]+o*t[4]+s*t[7],r[2]=n*t[2]+o*t[5]+s*t[8],r}function on(r,e,t){let n=t[0],o=t[1],s=t[2],i=t[3],a=e[0],c=e[1],f=e[2],A=o*f-s*c,u=s*a-n*f,m=n*c-o*a,B=o*m-s*u,d=s*A-n*m,p=n*u-o*A,x=i*2;return A*=x,u*=x,m*=x,B*=2,d*=2,p*=2,r[0]=a+A+B,r[1]=c+u+d,r[2]=f+m+p,r}function sn(r,e,t,n){let o=[],s=[];return o[0]=e[0]-t[0],o[1]=e[1]-t[1],o[2]=e[2]-t[2],s[0]=o[0],s[1]=o[1]*Math.cos(n)-o[2]*Math.sin(n),s[2]=o[1]*Math.sin(n)+o[2]*Math.cos(n),r[0]=s[0]+t[0],r[1]=s[1]+t[1],r[2]=s[2]+t[2],r}function an(r,e,t,n){let o=[],s=[];return o[0]=e[0]-t[0],o[1]=e[1]-t[1],o[2]=e[2]-t[2],s[0]=o[2]*Math.sin(n)+o[0]*Math.cos(n),s[1]=o[1],s[2]=o[2]*Math.cos(n)-o[0]*Math.sin(n),r[0]=s[0]+t[0],r[1]=s[1]+t[1],r[2]=s[2]+t[2],r}function cn(r,e,t,n){let o=[],s=[];return o[0]=e[0]-t[0],o[1]=e[1]-t[1],o[2]=e[2]-t[2],s[0]=o[0]*Math.cos(n)-o[1]*Math.sin(n),s[1]=o[0]*Math.sin(n)+o[1]*Math.cos(n),s[2]=o[2],r[0]=s[0]+t[0],r[1]=s[1]+t[1],r[2]=s[2]+t[2],r}function fn(r,e){let t=r[0],n=r[1],o=r[2],s=e[0],i=e[1],a=e[2],c=Math.sqrt((t*t+n*n+o*o)*(s*s+i*i+a*a)),f=c&&Ji(r,e)/c;return Math.acos(Math.min(Math.max(f,-1),1))}var Eu=function(){let r=Si();return function(e,t,n,o,s,i){let a,c;for(t||(t=3),n||(n=0),o?c=Math.min(o*t+n,e.length):c=e.length,a=n;a<c;a+=t)r[0]=e[a],r[1]=e[a+1],r[2]=e[a+2],s(r,r,i),e[a]=r[0],e[a+1]=r[1],e[a+2]=r[2];return e}}();var Ut=[0,0,0],Pe,K=class extends He{static get ZERO(){return Pe||(Pe=new K(0,0,0),Object.freeze(Pe)),Pe}constructor(e=0,t=0,n=0){super(-0,-0,-0),arguments.length===1&&$(e)?this.copy(e):(C.debug&&(b(e),b(t),b(n)),this[0]=e,this[1]=t,this[2]=n)}set(e,t,n){return this[0]=e,this[1]=t,this[2]=n,this.check()}copy(e){return this[0]=e[0],this[1]=e[1],this[2]=e[2],this.check()}fromObject(e){return C.debug&&(b(e.x),b(e.y),b(e.z)),this[0]=e.x,this[1]=e.y,this[2]=e.z,this.check()}toObject(e){return e.x=this[0],e.y=this[1],e.z=this[2],e}get ELEMENTS(){return 3}get z(){return this[2]}set z(e){this[2]=b(e)}angle(e){return fn(this,e)}cross(e){return rn(this,this,e),this.check()}rotateX({radians:e,origin:t=Ut}){return sn(this,this,t,e),this.check()}rotateY({radians:e,origin:t=Ut}){return an(this,this,t,e),this.check()}rotateZ({radians:e,origin:t=Ut}){return cn(this,this,t,e),this.check()}transform(e){return this.transformAsPoint(e)}transformAsPoint(e){return nn(this,this,e),this.check()}transformAsVector(e){return $r(this,this,e),this.check()}transformByMatrix3(e){return Ne(this,this,e),this.check()}transformByMatrix2(e){return en(this,this,e),this.check()}transformByQuaternion(e){return on(this,this,e),this.check()}};var Ke=class extends ee{toString(){let e="[";if(C.printRowMajor){e+="row-major:";for(let t=0;t<this.RANK;++t)for(let n=0;n<this.RANK;++n)e+=` ${this[n*this.RANK+t]}`}else{e+="column-major:";for(let t=0;t<this.ELEMENTS;++t)e+=` ${this[t]}`}return e+="]",e}getElementIndex(e,t){return t*this.RANK+e}getElement(e,t){return this[t*this.RANK+e]}setElement(e,t,n){return this[t*this.RANK+e]=b(n),this}getColumn(e,t=new Array(this.RANK).fill(-0)){let n=e*this.RANK;for(let o=0;o<this.RANK;++o)t[o]=this[n+o];return t}setColumn(e,t){let n=e*this.RANK;for(let o=0;o<this.RANK;++o)this[n+o]=t[o];return this}};function An(r,e){if(r===e){let t=e[1],n=e[2],o=e[5];r[1]=e[3],r[2]=e[6],r[3]=t,r[5]=e[7],r[6]=n,r[7]=o}else r[0]=e[0],r[1]=e[3],r[2]=e[6],r[3]=e[1],r[4]=e[4],r[5]=e[7],r[6]=e[2],r[7]=e[5],r[8]=e[8];return r}function un(r,e){let t=e[0],n=e[1],o=e[2],s=e[3],i=e[4],a=e[5],c=e[6],f=e[7],A=e[8],u=A*i-a*f,m=-A*s+a*c,B=f*s-i*c,d=t*u+n*m+o*B;return d?(d=1/d,r[0]=u*d,r[1]=(-A*n+o*f)*d,r[2]=(a*n-o*i)*d,r[3]=m*d,r[4]=(A*t-o*c)*d,r[5]=(-a*t+o*s)*d,r[6]=B*d,r[7]=(-f*t+n*c)*d,r[8]=(i*t-n*s)*d,r):null}function mn(r){let e=r[0],t=r[1],n=r[2],o=r[3],s=r[4],i=r[5],a=r[6],c=r[7],f=r[8];return e*(f*s-i*c)+t*(-f*o+i*a)+n*(c*o-s*a)}function Ht(r,e,t){let n=e[0],o=e[1],s=e[2],i=e[3],a=e[4],c=e[5],f=e[6],A=e[7],u=e[8],m=t[0],B=t[1],d=t[2],p=t[3],x=t[4],I=t[5],S=t[6],v=t[7],Ye=t[8];return r[0]=m*n+B*i+d*f,r[1]=m*o+B*a+d*A,r[2]=m*s+B*c+d*u,r[3]=p*n+x*i+I*f,r[4]=p*o+x*a+I*A,r[5]=p*s+x*c+I*u,r[6]=S*n+v*i+Ye*f,r[7]=S*o+v*a+Ye*A,r[8]=S*s+v*c+Ye*u,r}function Bn(r,e,t){let n=e[0],o=e[1],s=e[2],i=e[3],a=e[4],c=e[5],f=e[6],A=e[7],u=e[8],m=t[0],B=t[1];return r[0]=n,r[1]=o,r[2]=s,r[3]=i,r[4]=a,r[5]=c,r[6]=m*n+B*i+f,r[7]=m*o+B*a+A,r[8]=m*s+B*c+u,r}function ln(r,e,t){let n=e[0],o=e[1],s=e[2],i=e[3],a=e[4],c=e[5],f=e[6],A=e[7],u=e[8],m=Math.sin(t),B=Math.cos(t);return r[0]=B*n+m*i,r[1]=B*o+m*a,r[2]=B*s+m*c,r[3]=B*i-m*n,r[4]=B*a-m*o,r[5]=B*c-m*s,r[6]=f,r[7]=A,r[8]=u,r}function Nt(r,e,t){let n=t[0],o=t[1];return r[0]=n*e[0],r[1]=n*e[1],r[2]=n*e[2],r[3]=o*e[3],r[4]=o*e[4],r[5]=o*e[5],r[6]=e[6],r[7]=e[7],r[8]=e[8],r}function dn(r,e){let t=e[0],n=e[1],o=e[2],s=e[3],i=t+t,a=n+n,c=o+o,f=t*i,A=n*i,u=n*a,m=o*i,B=o*a,d=o*c,p=s*i,x=s*a,I=s*c;return r[0]=1-u-d,r[3]=A-I,r[6]=m+x,r[1]=A+I,r[4]=1-f-d,r[7]=B-p,r[2]=m-x,r[5]=B+p,r[8]=1-f-u,r}var Pt;(function(r){r[r.COL0ROW0=0]="COL0ROW0",r[r.COL0ROW1=1]="COL0ROW1",r[r.COL0ROW2=2]="COL0ROW2",r[r.COL1ROW0=3]="COL1ROW0",r[r.COL1ROW1=4]="COL1ROW1",r[r.COL1ROW2=5]="COL1ROW2",r[r.COL2ROW0=6]="COL2ROW0",r[r.COL2ROW1=7]="COL2ROW1",r[r.COL2ROW2=8]="COL2ROW2"})(Pt||(Pt={}));var Ui=Object.freeze([1,0,0,0,1,0,0,0,1]),_=class extends Ke{static get IDENTITY(){return Ni()}static get ZERO(){return Hi()}get ELEMENTS(){return 9}get RANK(){return 3}get INDICES(){return Pt}constructor(e,...t){super(-0,-0,-0,-0,-0,-0,-0,-0,-0),arguments.length===1&&Array.isArray(e)?this.copy(e):t.length>0?this.copy([e,...t]):this.identity()}copy(e){return this[0]=e[0],this[1]=e[1],this[2]=e[2],this[3]=e[3],this[4]=e[4],this[5]=e[5],this[6]=e[6],this[7]=e[7],this[8]=e[8],this.check()}identity(){return this.copy(Ui)}fromObject(e){return this.check()}fromQuaternion(e){return dn(this,e),this.check()}set(e,t,n,o,s,i,a,c,f){return this[0]=e,this[1]=t,this[2]=n,this[3]=o,this[4]=s,this[5]=i,this[6]=a,this[7]=c,this[8]=f,this.check()}setRowMajor(e,t,n,o,s,i,a,c,f){return this[0]=e,this[1]=o,this[2]=a,this[3]=t,this[4]=s,this[5]=c,this[6]=n,this[7]=i,this[8]=f,this.check()}determinant(){return mn(this)}transpose(){return An(this,this),this.check()}invert(){return un(this,this),this.check()}multiplyLeft(e){return Ht(this,e,this),this.check()}multiplyRight(e){return Ht(this,this,e),this.check()}rotate(e){return ln(this,this,e),this.check()}scale(e){return Array.isArray(e)?Nt(this,this,e):Nt(this,this,[e,e]),this.check()}translate(e){return Bn(this,this,e),this.check()}transform(e,t){let n;switch(e.length){case 2:n=zr(t||[-0,-0],e,this);break;case 3:n=Ne(t||[-0,-0,-0],e,this);break;case 4:n=tn(t||[-0,-0,-0,-0],e,this);break;default:throw new Error("Illegal vector")}return Zr(n,e.length),n}transformVector(e,t){return this.transform(e,t)}transformVector2(e,t){return this.transform(e,t)}transformVector3(e,t){return this.transform(e,t)}},je,ve=null;function Hi(){return je||(je=new _([0,0,0,0,0,0,0,0,0]),Object.freeze(je)),je}function Ni(){return ve||(ve=new _,Object.freeze(ve)),ve}var Xe="KHR_texture_transform",Pi=Xe,Qe=new K,Ki=new _,ji=new _;async function vi(r,e){if(!new l(r).hasExtension(Xe)||!e.gltf?.loadBuffers)return;let o=r.json.materials||[];for(let s=0;s<o.length;s++)Qi(s,r)}function Qi(r,e){let t=e.json.materials?.[r],n=[t?.pbrMetallicRoughness?.baseColorTexture,t?.emissiveTexture,t?.normalTexture,t?.occlusionTexture,t?.pbrMetallicRoughness?.metallicRoughnessTexture],o=[];for(let s of n)s&&s?.extensions?.[Xe]&&Xi(e,r,s,o)}function Xi(r,e,t,n){let o=ki(t,n);if(!o)return;let s=r.json.meshes||[];for(let i of s)for(let a of i.primitives){let c=a.material;Number.isFinite(c)&&e===c&&Yi(r,a,o)}}function ki(r,e){let t=r.extensions?.[Xe],{texCoord:n=0}=r,{texCoord:o=n}=t;if(!(e.findIndex(([i,a])=>i===n&&a===o)!==-1)){let i=Zi(t);return n!==o&&(r.texCoord=o),e.push([n,o]),{originalTexCoord:n,texCoord:o,matrix:i}}return null}function Yi(r,e,t){let{originalTexCoord:n,texCoord:o,matrix:s}=t,i=e.attributes[`TEXCOORD_${n}`];if(Number.isFinite(i)){let a=r.json.accessors?.[i];if(a&&a.bufferView!==void 0){let c=r.json.bufferViews?.[a.bufferView];if(c){let{arrayBuffer:f,byteOffset:A}=r.buffers[c.buffer],u=(A||0)+(a.byteOffset||0)+(c.byteOffset||0),{ArrayType:m,length:B}=Q(a,c),d=Te[a.componentType],p=ye[a.type],x=c.byteStride||d*p,I=new Float32Array(B);for(let S=0;S<a.count;S++){let v=new m(f,u+S*x,2);Qe.set(v[0],v[1],1),Qe.transformByMatrix3(s),I.set([Qe[0],Qe[1]],S*p)}n===o?Vi(a,r,I,a.bufferView):Wi(o,a,e,r,I)}}}}function Vi(r,e,t,n){r.componentType=5126,r.byteOffset=0;let i=(e.json.accessors||[]).reduce((f,A)=>A.bufferView===n?f+1:f,0)>1;e.buffers.push({arrayBuffer:J(t.buffer),byteOffset:0,byteLength:t.buffer.byteLength});let a=e.buffers.length-1;if(e.json.bufferViews=e.json.bufferViews||[],i){e.json.bufferViews.push({buffer:a,byteLength:t.buffer.byteLength,byteOffset:0}),r.bufferView=e.json.bufferViews.length-1;return}let c=e.json.bufferViews[n];c&&(c.buffer=a,c.byteOffset=0,c.byteLength=t.buffer.byteLength,c.byteStride!==void 0&&delete c.byteStride)}function Wi(r,e,t,n,o){n.buffers.push({arrayBuffer:J(o.buffer),byteOffset:0,byteLength:o.buffer.byteLength}),n.json.bufferViews=n.json.bufferViews||[];let s=n.json.bufferViews;s.push({buffer:n.buffers.length-1,byteLength:o.buffer.byteLength,byteOffset:0});let i=n.json.accessors;i&&(i.push({bufferView:s?.length-1,byteOffset:0,componentType:5126,count:e.count,type:"VEC2"}),t.attributes[`TEXCOORD_${r}`]=i.length-1)}function Zi(r){let{offset:e=[0,0],rotation:t=0,scale:n=[1,1]}=r,o=new _().set(1,0,0,0,1,0,e[0],e[1],1),s=Ki.set(Math.cos(t),Math.sin(t),0,-Math.sin(t),Math.cos(t),0,0,0,1),i=ji.set(n[0],0,0,0,n[1],0,0,0,1);return o.multiplyRight(s).multiplyRight(i)}var jt={};y(jt,{decode:()=>zi,encode:()=>$i,name:()=>qi});var j="KHR_lights_punctual",qi=j;async function zi(r){let e=new l(r),{json:t}=e,n=e.getExtension(j);n&&(e.json.lights=n.lights,e.removeExtension(j));for(let o of t.nodes||[]){let s=e.getObjectExtension(o,j);s&&(o.light=s.light),e.removeObjectExtension(o,j)}}async function $i(r){let e=new l(r),{json:t}=e;if(t.lights){let n=e.addExtension(j);h(!n.lights),n.lights=t.lights,delete t.lights}if(e.json.lights){for(let n of e.json.lights){let o=n.node;e.addObjectExtension(o,j,n)}delete e.json.lights}}var vt={};y(vt,{decode:()=>ta,encode:()=>ra,name:()=>ea});var Be="KHR_materials_unlit",ea=Be;async function ta(r){let e=new l(r),{json:t}=e;for(let n of t.materials||[])n.extensions&&n.extensions.KHR_materials_unlit&&(n.unlit=!0),e.removeObjectExtension(n,Be);e.removeExtension(Be)}function ra(r){let e=new l(r),{json:t}=e;if(e.materials)for(let n of t.materials||[])n.unlit&&(delete n.unlit,e.addObjectExtension(n,Be,{}),e.addExtension(Be))}var Qt={};y(Qt,{decode:()=>oa,encode:()=>sa,name:()=>na});var le="KHR_techniques_webgl",na=le;async function oa(r){let e=new l(r),{json:t}=e,n=e.getExtension(le);if(n){let o=ia(n,e);for(let s of t.materials||[]){let i=e.getObjectExtension(s,le);i&&(s.technique=Object.assign({},i,o[i.technique]),s.technique.values=aa(s.technique,e)),e.removeObjectExtension(s,le)}e.removeExtension(le)}}async function sa(r,e){}function ia(r,e){let{programs:t=[],shaders:n=[],techniques:o=[]}=r,s=new TextDecoder;return n.forEach(i=>{if(Number.isFinite(i.bufferView))i.code=s.decode(e.getTypedArrayForBufferView(i.bufferView));else throw new Error("KHR_techniques_webgl: no shader code")}),t.forEach(i=>{i.fragmentShader=n[i.fragmentShader],i.vertexShader=n[i.vertexShader]}),o.forEach(i=>{i.program=t[i.program]}),o}function aa(r,e){let t=Object.assign({},r.values);return Object.keys(r.uniforms||{}).forEach(n=>{r.uniforms[n].value&&!(n in t)&&(t[n]=r.uniforms[n].value)}),Object.keys(t).forEach(n=>{typeof t[n]=="object"&&t[n].index!==void 0&&(t[n].texture=e.getTexture(t[n].index))}),t}var pn=[we,Re,Mt,Ft,It,_t,jt,vt,Qt,Kt,lt],ca=[we,Re];function hn(r,e={},t){let n=pn.filter(o=>bn(o.name,e));for(let o of n)o.preprocess?.(r,e,t)}async function gn(r,e={},t){let n=pn.filter(o=>bn(o.name,e));for(let o of n)await o.decode?.(r,e,t)}function Cn(r,e={}){for(let t of ca)r=t.encode?.(r,e)??r;return r}function bn(r,e){let t=e?.gltf?.excludeExtensions||{};return!(r in t&&!t[r])}var Xt="KHR_binary_glTF";function xn(r){let e=new l(r),{json:t}=e;for(let n of t.images||[]){let o=e.getObjectExtension(n,Xt);o&&Object.assign(n,o),e.removeObjectExtension(n,Xt)}t.buffers&&t.buffers[0]&&delete t.buffers[0].uri,e.removeExtension(Xt)}var En={accessors:"accessor",animations:"animation",buffers:"buffer",bufferViews:"bufferView",images:"image",materials:"material",meshes:"mesh",nodes:"node",samplers:"sampler",scenes:"scene",skins:"skin",textures:"texture"},Aa={accessor:"accessors",animations:"animation",buffer:"buffers",bufferView:"bufferViews",image:"images",material:"materials",mesh:"meshes",node:"nodes",sampler:"samplers",scene:"scenes",skin:"skins",texture:"textures"},kt=class{idToIndexMap={animations:{},accessors:{},buffers:{},bufferViews:{},images:{},materials:{},meshes:{},nodes:{},samplers:{},scenes:{},skins:{},textures:{}};json;normalize(e,t){this.json=e.json;let n=e.json;switch(n.asset&&n.asset.version){case"2.0":return;case void 0:case"1.0":break;default:console.warn(`glTF: Unknown version ${n.asset.version}`);return}if(!t.normalize)throw new Error("glTF v1 is not supported.");console.warn("Converting glTF v1 to glTF v2 format. This is experimental and may fail."),this._addAsset(n),this._convertTopLevelObjectsToArrays(n),xn(e),this._convertObjectIdsToArrayIndices(n),this._updateObjects(n),this._updateMaterial(n)}_addAsset(e){e.asset=e.asset||{},e.asset.version="2.0",e.asset.generator=e.asset.generator||"Normalized to glTF 2.0 by loaders.gl"}_convertTopLevelObjectsToArrays(e){for(let t in En)this._convertTopLevelObjectToArray(e,t)}_convertTopLevelObjectToArray(e,t){let n=e[t];if(!(!n||Array.isArray(n))){e[t]=[];for(let o in n){let s=n[o];s.id=s.id||o;let i=e[t].length;e[t].push(s),this.idToIndexMap[t][o]=i}}}_convertObjectIdsToArrayIndices(e){for(let t in En)this._convertIdsToIndices(e,t);"scene"in e&&(e.scene=this._convertIdToIndex(e.scene,"scene"));for(let t of e.textures)this._convertTextureIds(t);for(let t of e.meshes)this._convertMeshIds(t);for(let t of e.nodes)this._convertNodeIds(t);for(let t of e.scenes)this._convertSceneIds(t)}_convertTextureIds(e){e.source&&(e.source=this._convertIdToIndex(e.source,"image"))}_convertMeshIds(e){for(let t of e.primitives){let{attributes:n,indices:o,material:s}=t;for(let i in n)n[i]=this._convertIdToIndex(n[i],"accessor");o&&(t.indices=this._convertIdToIndex(o,"accessor")),s&&(t.material=this._convertIdToIndex(s,"material"))}}_convertNodeIds(e){e.children&&(e.children=e.children.map(t=>this._convertIdToIndex(t,"node"))),e.meshes&&(e.meshes=e.meshes.map(t=>this._convertIdToIndex(t,"mesh")))}_convertSceneIds(e){e.nodes&&(e.nodes=e.nodes.map(t=>this._convertIdToIndex(t,"node")))}_convertIdsToIndices(e,t){e[t]||(console.warn(`gltf v1: json doesn't contain attribute ${t}`),e[t]=[]);for(let n of e[t])for(let o in n){let s=n[o],i=this._convertIdToIndex(s,o);n[o]=i}}_convertIdToIndex(e,t){let n=Aa[t];if(n in this.idToIndexMap){let o=this.idToIndexMap[n][e];if(!Number.isFinite(o))throw new Error(`gltf v1: failed to resolve ${t} with id ${e}`);return o}return e}_updateObjects(e){for(let t of this.json.buffers)delete t.type}_updateMaterial(e){for(let t of e.materials){t.pbrMetallicRoughness={baseColorFactor:[1,1,1,1],metallicFactor:1,roughnessFactor:1};let n=t.values?.tex||t.values?.texture2d_0||t.values?.diffuseTex,o=e.textures.findIndex(s=>s.id===n);o!==-1&&(t.pbrMetallicRoughness.baseColorTexture={index:o})}}};function yn(r,e={}){return new kt().normalize(r,e)}async function Tn(r,e,t=0,n,o){return ua(r,e,t,n),yn(r,{normalize:n?.gltf?.normalize}),hn(r,n,o),n?.gltf?.loadBuffers&&r.json.buffers&&await ma(r,n,o),n?.gltf?.loadImages&&await Ba(r,n,o),await gn(r,n,o),r}function ua(r,e,t,n){if(n.core?.baseUri&&(r.baseUri=n.core?.baseUri),e instanceof ArrayBuffer&&!Sr(e,t,n.glb)&&(e=new TextDecoder().decode(e)),typeof e=="string")r.json=qe(e);else if(e instanceof ArrayBuffer){let i={};t=Se(i,e,t,n.glb),h(i.type==="glTF",`Invalid GLB magic string ${i.type}`),r._glb=i,r.json=i.json}else h(!1,"GLTF: must be ArrayBuffer or string");let o=r.json.buffers||[];if(r.buffers=new Array(o.length).fill(null),r._glb&&r._glb.header.hasBinChunk){let{binChunks:i}=r._glb;r.buffers[0]={arrayBuffer:i[0].arrayBuffer,byteOffset:i[0].byteOffset,byteLength:i[0].byteLength}}let s=r.json.images||[];r.images=new Array(s.length).fill({})}async function ma(r,e,t){let n=r.json.buffers||[];for(let o=0;o<n.length;++o){let s=n[o];if(s.uri){let{fetch:i}=t;h(i);let a=yt(s.uri,e),f=await(await t?.fetch?.(a))?.arrayBuffer?.();r.buffers[o]={arrayBuffer:f,byteOffset:0,byteLength:f.byteLength},delete s.uri}else r.buffers[o]===null&&(r.buffers[o]={arrayBuffer:new ArrayBuffer(s.byteLength),byteOffset:0,byteLength:s.byteLength})}}async function Ba(r,e,t){let n=la(r),o=r.json.images||[],s=[];for(let i of n)s.push(da(r,o[i],i,e,t));return await Promise.all(s)}function la(r){let e=new Set,t=r.json.textures||[];for(let n of t)n.source!==void 0&&e.add(n.source);return Array.from(e).sort()}async function da(r,e,t,n,o){let s;if(e.uri&&!e.hasOwnProperty("bufferView")){let f=yt(e.uri,n),{fetch:A}=o;s=await(await A(f)).arrayBuffer(),e.bufferView={data:s}}if(Number.isFinite(e.bufferView)){let f=hr(r.json,r.buffers,e.bufferView);s=se(f.buffer,f.byteOffset,f.byteLength)}h(s,"glTF image has no data");let i=n,a={...i,core:{...i?.core,mimeType:e.mimeType}},c=await re(s,[ot,Ct],a,o);c&&c[0]&&(c={compressed:!0,mipmaps:!1,width:c[0].width,height:c[0].height,data:c[0]}),r.images=r.images||[],r.images[t]=c}var ke={dataType:null,batchType:null,name:"glTF",id:"gltf",module:"gltf",version:H,extensions:["gltf","glb"],mimeTypes:["model/gltf+json","model/gltf-binary"],text:!0,binary:!0,tests:["glTF"],parse:pa,options:{gltf:{normalize:!0,loadBuffers:!0,loadImages:!0,decompressMeshes:!0}}};async function pa(r,e={},t){let n={...ke.options,...e};n.gltf={...ke.options.gltf,...n.gltf};let o=e?.glb?.byteOffset||0;return await Tn({},r,o,n,t)}var ha=1179937895,ga=1313821514,Ca=5130562,O=!0;function de(r,e,t=0,n={}){let{magic:o=ha,version:s=2,json:i={},binary:a}=r,c=t;e&&(e.setUint32(t+0,o,O),e.setUint32(t+4,s,O),e.setUint32(t+8,0,O));let f=t+8;t+=12;let A=t;e&&(e.setUint32(t+0,0,O),e.setUint32(t+4,ga,O)),t+=8;let u=JSON.stringify(i);if(t=$e(e,t,u,4),e){let m=t-A-8;e.setUint32(A+0,m,O)}if(a){let m=t;if(e&&(e.setUint32(t+0,0,O),e.setUint32(t+4,Ca,O)),t+=8,t=be(e,t,a,4),e){let B=t-m-8;e.setUint32(m+0,B,O)}}if(e){let m=t-c;e.setUint32(f,m,O)}return t}function Yt(r,e,t,n){return ba(r),de(r,e,t,n)}function ba(r){if(r.buffers&&r.buffers.length>1)throw new Error("encodeGLTF: multiple buffers not yet implemented")}var Fn={dataType:null,batchType:null,name:"glTF",id:"gltf",module:"gltf",version:H,extensions:["glb"],mimeTypes:["model/gltf-binary"],binary:!0,options:{gltf:{}},encode:async(r,e={})=>Mn(r,e),encodeSync:Mn};function Mn(r,e={}){let{byteOffset:t=0}=e,n=Cn(r),o=Yt(n,null,t,e),s=new ArrayBuffer(o),i=new DataView(s);return Yt(n,i,t,e),s}var In={dataType:null,batchType:null,name:"GLB",id:"glb",module:"gltf",version:H,extensions:["glb"],mimeTypes:["model/gltf-binary"],binary:!0,parse:xa,parseSync:Gn,options:{glb:{strict:!1}}};async function xa(r,e){return Gn(r,e)}function Gn(r,e){let t={};return Se(t,r,e?.glb?.byteOffset||0,e?.glb),t}var Rn={name:"GLB",id:"glb",module:"gltf",version:H,extensions:["glb"],mimeTypes:["model/gltf-binary"],binary:!0,options:{glb:{}},encode:async(r,e={})=>Dn(r,e),encodeSync:Dn};function Dn(r,e){let{byteOffset:t=0}=e??{},n=de(r,null,t,e),o=new ArrayBuffer(n),s=new DataView(o);return de(r,s,t,e),o}var Ea={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},ya={5120:1,5121:1,5122:2,5123:2,5125:4,5126:4},F={TEXTURE_MAG_FILTER:10240,TEXTURE_MIN_FILTER:10241,TEXTURE_WRAP_S:10242,TEXTURE_WRAP_T:10243,REPEAT:10497,LINEAR:9729,NEAREST_MIPMAP_LINEAR:9986},Ta={magFilter:F.TEXTURE_MAG_FILTER,minFilter:F.TEXTURE_MIN_FILTER,wrapS:F.TEXTURE_WRAP_S,wrapT:F.TEXTURE_WRAP_T},Ma={[F.TEXTURE_MAG_FILTER]:F.LINEAR,[F.TEXTURE_MIN_FILTER]:F.NEAREST_MIPMAP_LINEAR,[F.TEXTURE_WRAP_S]:F.REPEAT,[F.TEXTURE_WRAP_T]:F.REPEAT};function Fa(){return{id:"default-sampler",parameters:Ma}}function Ia(r){return ya[r]}function Ga(r){return Ea[r]}var Vt=class{baseUri="";jsonUnprocessed;json;buffers=[];images=[];postProcess(e,t={}){let{json:n,buffers:o=[],images:s=[]}=e,{baseUri:i=""}=e;return h(n),this.baseUri=i,this.buffers=o,this.images=s,this.jsonUnprocessed=n,this.json=this._resolveTree(e.json,t),this.json}_resolveTree(e,t={}){let n={...e};return this.json=n,e.bufferViews&&(n.bufferViews=e.bufferViews.map((o,s)=>this._resolveBufferView(o,s))),e.images&&(n.images=e.images.map((o,s)=>this._resolveImage(o,s))),e.samplers&&(n.samplers=e.samplers.map((o,s)=>this._resolveSampler(o,s))),e.textures&&(n.textures=e.textures.map((o,s)=>this._resolveTexture(o,s))),e.accessors&&(n.accessors=e.accessors.map((o,s)=>this._resolveAccessor(o,s))),e.materials&&(n.materials=e.materials.map((o,s)=>this._resolveMaterial(o,s))),e.meshes&&(n.meshes=e.meshes.map((o,s)=>this._resolveMesh(o,s))),e.nodes&&(n.nodes=e.nodes.map((o,s)=>this._resolveNode(o,s)),n.nodes=n.nodes.map((o,s)=>this._resolveNodeChildren(o))),e.skins&&(n.skins=e.skins.map((o,s)=>this._resolveSkin(o,s))),e.scenes&&(n.scenes=e.scenes.map((o,s)=>this._resolveScene(o,s))),typeof this.json.scene=="number"&&n.scenes&&(n.scene=n.scenes[this.json.scene]),n}getScene(e){return this._get(this.json.scenes,e)}getNode(e){return this._get(this.json.nodes,e)}getSkin(e){return this._get(this.json.skins,e)}getMesh(e){return this._get(this.json.meshes,e)}getMaterial(e){return this._get(this.json.materials,e)}getAccessor(e){return this._get(this.json.accessors,e)}getCamera(e){return this._get(this.json.cameras,e)}getTexture(e){return this._get(this.json.textures,e)}getSampler(e){return this._get(this.json.samplers,e)}getImage(e){return this._get(this.json.images,e)}getBufferView(e){return this._get(this.json.bufferViews,e)}getBuffer(e){return this._get(this.json.buffers,e)}_get(e,t){if(typeof t=="object")return t;let n=e&&e[t];return n||console.warn(`glTF file error: Could not find ${e}[${t}]`),n}_resolveScene(e,t){return{...e,id:e.id||`scene-${t}`,nodes:(e.nodes||[]).map(n=>this.getNode(n))}}_resolveNode(e,t){let n={...e,id:e?.id||`node-${t}`};return e.mesh!==void 0&&(n.mesh=this.getMesh(e.mesh)),e.camera!==void 0&&(n.camera=this.getCamera(e.camera)),e.skin!==void 0&&(n.skin=this.getSkin(e.skin)),e.meshes!==void 0&&e.meshes.length&&(n.mesh=e.meshes.reduce((o,s)=>{let i=this.getMesh(s);return o.id=i.id,o.primitives=o.primitives.concat(i.primitives),o},{primitives:[]})),n}_resolveNodeChildren(e){return e.children&&(e.children=e.children.map(t=>this.getNode(t))),e}_resolveSkin(e,t){let n=typeof e.inverseBindMatrices=="number"?this.getAccessor(e.inverseBindMatrices):void 0;return{...e,id:e.id||`skin-${t}`,inverseBindMatrices:n}}_resolveMesh(e,t){let n={...e,id:e.id||`mesh-${t}`,primitives:[]};return e.primitives&&(n.primitives=e.primitives.map(o=>{let s={...o,attributes:{},indices:void 0,material:void 0},i=o.attributes;for(let a in i)s.attributes[a]=this.getAccessor(i[a]);return o.indices!==void 0&&(s.indices=this.getAccessor(o.indices)),o.material!==void 0&&(s.material=this.getMaterial(o.material)),s})),n}_resolveMaterial(e,t){let n={...e,id:e.id||`material-${t}`};if(n.normalTexture&&(n.normalTexture={...n.normalTexture},n.normalTexture.texture=this.getTexture(n.normalTexture.index)),n.occlusionTexture&&(n.occlusionTexture={...n.occlusionTexture},n.occlusionTexture.texture=this.getTexture(n.occlusionTexture.index)),n.emissiveTexture&&(n.emissiveTexture={...n.emissiveTexture},n.emissiveTexture.texture=this.getTexture(n.emissiveTexture.index)),n.emissiveFactor||(n.emissiveFactor=n.emissiveTexture?[1,1,1]:[0,0,0]),n.pbrMetallicRoughness){n.pbrMetallicRoughness={...n.pbrMetallicRoughness};let o=n.pbrMetallicRoughness;o.baseColorTexture&&(o.baseColorTexture={...o.baseColorTexture},o.baseColorTexture.texture=this.getTexture(o.baseColorTexture.index)),o.metallicRoughnessTexture&&(o.metallicRoughnessTexture={...o.metallicRoughnessTexture},o.metallicRoughnessTexture.texture=this.getTexture(o.metallicRoughnessTexture.index))}return n}_resolveAccessor(e,t){let n=Ia(e.componentType),o=Ga(e.type),s=n*o,i={...e,id:e.id||`accessor-${t}`,bytesPerComponent:n,components:o,bytesPerElement:s,value:void 0,bufferView:void 0,sparse:void 0};if(e.bufferView!==void 0&&(i.bufferView=this.getBufferView(e.bufferView)),i.bufferView){let a=i.bufferView.buffer,{ArrayType:c,byteLength:f}=Q(i,i.bufferView),A=(i.bufferView.byteOffset||0)+(i.byteOffset||0)+a.byteOffset,u=ie(a.arrayBuffer,A,f);i.bufferView.byteStride&&(u=this._getValueFromInterleavedBuffer(a,A,i.bufferView.byteStride,i.bytesPerElement,i.count)),i.value=new c(u)}return i}_getValueFromInterleavedBuffer(e,t,n,o,s){let i=new Uint8Array(s*o);for(let a=0;a<s;a++){let c=t+a*n;i.set(new Uint8Array(e.arrayBuffer.slice(c,c+o)),a*o)}return i.buffer}_resolveTexture(e,t){return{...e,id:e.id||`texture-${t}`,sampler:typeof e.sampler=="number"?this.getSampler(e.sampler):Fa(),source:typeof e.source=="number"?this.getImage(e.source):void 0}}_resolveSampler(e,t){let n={id:e.id||`sampler-${t}`,...e,parameters:{}};for(let o in n){let s=this._enumSamplerParameter(o);s!==void 0&&(n.parameters[s]=n[o])}return n}_enumSamplerParameter(e){return Ta[e]}_resolveImage(e,t){let n={...e,id:e.id||`image-${t}`,image:null,bufferView:e.bufferView!==void 0?this.getBufferView(e.bufferView):void 0},o=this.images[t];return o&&(n.image=o),n}_resolveBufferView(e,t){let n=e.buffer,o=this.buffers[n].arrayBuffer,s=this.buffers[n].byteOffset||0;return e.byteOffset&&(s+=e.byteOffset),{id:`bufferView-${t}`,...e,buffer:this.buffers[n],data:new Uint8Array(o,s,e.byteLength)}}_resolveCamera(e,t){let n={...e,id:e.id||`camera-${t}`};return n.perspective,n.orthographic,n}};function wn(r,e){return new Vt().postProcess(r,e)}return Nn(pe);})();
|
|
7
|
+
"use strict";var __exports__=(()=>{var _n=Object.create;var Ce=Object.defineProperty;var Sn=Object.getOwnPropertyDescriptor;var Jn=Object.getOwnPropertyNames;var Un=Object.getPrototypeOf,Hn=Object.prototype.hasOwnProperty;var Nn=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),y=(r,e)=>{for(var t in e)Ce(r,t,{get:e[t],enumerable:!0})},ge=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of Jn(e))!Hn.call(r,o)&&o!==t&&Ce(r,o,{get:()=>e[o],enumerable:!(n=Sn(e,o))||n.enumerable});return r},be=(r,e,t)=>(ge(r,e,"default"),t&&ge(t,e,"default")),Pn=(r,e,t)=>(t=r!=null?_n(Un(r)):{},ge(e||!r||!r.__esModule?Ce(t,"default",{value:r,enumerable:!0}):t,r)),Kn=r=>ge(Ce({},"__esModule",{value:!0}),r);var qt=Nn((_a,Zt)=>{Zt.exports=globalThis.loaders});var he={};y(he,{EXT_FEATURE_METADATA:()=>lt,EXT_MESH_FEATURES:()=>ct,EXT_STRUCTURAL_METADATA:()=>ut,GLBLoader:()=>Dn,GLBWriter:()=>Ln,GLTFLoader:()=>Ye,GLTFScenegraph:()=>l,GLTFWriter:()=>Gn,_getMemoryUsageGLTF:()=>hr,createExtMeshFeatures:()=>ft,createExtStructuralMetadata:()=>Bt,postProcessGLTF:()=>On});be(he,Pn(qt(),1));var we={};y(we,{createExtMeshFeatures:()=>ft,decode:()=>_o,encode:()=>So,name:()=>ct});var zt="4.4.0-alpha.19";async function re(r,e,t,n){return n._parse(r,e,t,n)}function T(r,e){if(!r)throw new Error(e||"loader assertion failed.")}var G={self:typeof self<"u"&&self,window:typeof window<"u"&&window,global:typeof global<"u"&&global,document:typeof document<"u"&&document},jn=G.self||G.window||G.global||{},vn=G.window||G.self||G.global||{},Qn=G.global||G.self||G.window||{},Xn=G.document||{};var ne=Boolean(typeof process!="object"||String(process)!=="[object process]"||process.browser);var $t=typeof process<"u"&&process.version&&/v([0-9]*)/.exec(process.version),kn=$t&&parseFloat($t[1])||0;var er=r=>typeof SharedArrayBuffer<"u"&&r instanceof SharedArrayBuffer;function We(r){globalThis.loaders||={},globalThis.loaders.modules||={},Object.assign(globalThis.loaders.modules,r)}function Ze(r){return globalThis.loaders?.modules?.[r]||null}function Yn(){return globalThis._loadersgl_?.version||(globalThis._loadersgl_=globalThis._loadersgl_||{},globalThis._loadersgl_.version="4.4.0-alpha.19"),globalThis._loadersgl_.version}var tr=Yn();function rr(r,e){if(!r)throw new Error(e||"loaders.gl assertion failed.")}var D={self:typeof self<"u"&&self,window:typeof window<"u"&&window,global:typeof global<"u"&&global,document:typeof document<"u"&&document},va=D.self||D.window||D.global||{},Qa=D.window||D.self||D.global||{},Xa=D.global||D.self||D.window||{},ka=D.document||{};var O=typeof process!="object"||String(process)!=="[object process]"||process.browser,oe=typeof importScripts=="function",Ya=typeof window<"u"&&typeof window.orientation<"u",nr=typeof process<"u"&&process.version&&/v([0-9]*)/.exec(process.version),Va=nr&&parseFloat(nr[1])||0;var qe={};function se(r={}){let e=r.useLocalLibraries??r.core?.useLocalLibraries,t=r.CDN??r.core?.CDN,n=r.modules;return{...e!==void 0?{useLocalLibraries:e}:{},...t!==void 0?{CDN:t}:{},...n!==void 0?{modules:n}:{}}}async function M(r,e=null,t={},n=null){return e&&(r=or(r,e,t,n)),qe[r]=qe[r]||Vn(r),await qe[r]}function or(r,e,t={},n=null){if(t?.core)throw new Error("loadLibrary: options.core must be pre-normalized");if(!t.useLocalLibraries&&r.startsWith("http"))return r;n=n||r;let o=t.modules||{};return o[n]?o[n]:O?t.CDN?(rr(t.CDN.startsWith("http")),`${t.CDN}/${e}@${tr}/dist/libs/${n}`):oe?`../src/libs/${n}`:`modules/${e}/src/libs/${n}`:`modules/${e}/dist/libs/${n}`}async function Vn(r){if(r.endsWith("wasm"))return await Zn(r);if(!O){let{requireFromFile:t}=globalThis.loaders||{};try{let n=await t?.(r);return n||!r.includes("/dist/libs/")?n:await t?.(r.replace("/dist/libs/","/src/libs/"))}catch(n){if(r.includes("/dist/libs/"))try{return await t?.(r.replace("/dist/libs/","/src/libs/"))}catch{}return console.error(n),null}}if(oe)return importScripts(r);let e=await qn(r);return Wn(e,r)}function Wn(r,e){if(!O){let{requireFromString:n}=globalThis.loaders||{};return n?.(r,e)}if(oe)return eval.call(globalThis,r),null;let t=document.createElement("script");t.id=e;try{t.appendChild(document.createTextNode(r))}catch{t.text=r}return document.body.appendChild(t),null}async function Zn(r){let{readFileAsArrayBuffer:e}=globalThis.loaders||{};if(O||!e||r.startsWith("http"))return await(await fetch(r)).arrayBuffer();try{return await e(r)}catch{if(r.includes("/dist/libs/"))return await e(r.replace("/dist/libs/","/src/libs/"));throw new Error(`Failed to load ArrayBuffer from ${r}`)}}async function qn(r){let{readFileAsText:e}=globalThis.loaders||{};if(O||!e||r.startsWith("http"))return await(await fetch(r)).text();try{return await e(r)}catch{if(r.includes("/dist/libs/"))return await e(r.replace("/dist/libs/","/src/libs/"));throw new Error(`Failed to load text from ${r}`)}}function ir(r,e=5){return typeof r=="string"?r.slice(0,e):ArrayBuffer.isView(r)?sr(r.buffer,r.byteOffset,e):r instanceof ArrayBuffer?sr(r,0,e):""}function sr(r,e,t){if(r.byteLength<=e+t)return"";let n=new DataView(r),o="";for(let s=0;s<t;s++)o+=String.fromCharCode(n.getUint8(e+s));return o}function ze(r){try{return JSON.parse(r)}catch{throw new Error(`Failed to parse JSON from data starting with "${ir(r)}"`)}}function ie(r,e,t){let n=t!==void 0?new Uint8Array(r).subarray(e,e+t):new Uint8Array(r).subarray(e);return new Uint8Array(n).buffer}function R(r,e){return T(r>=0),T(e>0),r+(e-1)&~(e-1)}function $e(r,e,t){let n;if(r instanceof ArrayBuffer)n=new Uint8Array(r);else{let o=r.byteOffset,s=r.byteLength;n=new Uint8Array(r.buffer||r.arrayBuffer,o,s)}return e.set(n,t),t+R(n.byteLength,4)}function xe(r,e,t,n){let o=R(t.byteLength,n),s=o-t.byteLength;if(r){let i=new Uint8Array(r.buffer,r.byteOffset+e,t.byteLength),a=new Uint8Array(t);i.set(a);for(let c=0;c<s;++c)r.setUint8(e+t.byteLength+c,32)}return e+=o,e}function et(r,e,t,n){let s=new TextEncoder().encode(t);return e=xe(r,e,s,n),e}function J(r){if(r instanceof ArrayBuffer)return r;if(er(r))return ae(r);let{buffer:e,byteOffset:t,byteLength:n}=r;return e instanceof ArrayBuffer&&t===0&&n===e.byteLength?e:ae(e,t,n)}function ae(r,e=0,t=r.byteLength-e){let n=new Uint8Array(r,e,t),o=new Uint8Array(n.length);return o.set(n),o.buffer}var zn=globalThis.loaders?.parseImageNode,tt=typeof Image<"u",rt=typeof ImageBitmap<"u",$n=Boolean(zn),nt=ne?!0:$n;function ar(r){switch(r){case"auto":return rt||tt||nt;case"imagebitmap":return rt;case"image":return tt;case"data":return nt;default:throw new Error(`@loaders.gl/images: image ${r} not supported in this environment`)}}function cr(){if(rt)return"imagebitmap";if(tt)return"image";if(nt)return"data";throw new Error("Install '@loaders.gl/polyfills' to parse images under Node.js")}function fr(r){let e=eo(r);if(!e)throw new Error("Not an image");return e}function ce(r){switch(fr(r)){case"data":return r;case"image":case"imagebitmap":let e=document.createElement("canvas"),t=e.getContext("2d");if(!t)throw new Error("getImageData");return e.width=r.width,e.height=r.height,t.drawImage(r,0,0),t.getImageData(0,0,r.width,r.height);default:throw new Error("getImageData")}}function eo(r){return typeof ImageBitmap<"u"&&r instanceof ImageBitmap?"imagebitmap":typeof Image<"u"&&r instanceof Image?"image":r&&typeof r=="object"&&r.data&&r.width&&r.height?"data":null}var to=/^data:image\/svg\+xml/,ro=/\.svg((\?|#).*)?$/;function Ee(r){return r&&(to.test(r)||ro.test(r))}function Ar(r,e){if(Ee(e)){let n=new TextDecoder().decode(r);try{typeof unescape=="function"&&typeof encodeURIComponent=="function"&&(n=unescape(encodeURIComponent(n)))}catch(s){throw new Error(s.message)}return`data:image/svg+xml;base64,${btoa(n)}`}return ot(r,e)}function ot(r,e){if(Ee(e))throw new Error("SVG cannot be parsed directly to imagebitmap");return new Blob([new Uint8Array(r)])}async function ye(r,e,t){let n=Ar(r,t),o=self.URL||self.webkitURL,s=typeof n!="string"&&o.createObjectURL(n);try{return await no(s||n,e)}finally{s&&o.revokeObjectURL(s)}}async function no(r,e){let t=new Image;return t.src=r,e.image&&e.image.decode&&t.decode?(await t.decode(),t):await new Promise((n,o)=>{try{t.onload=()=>n(t),t.onerror=s=>{let i=s instanceof Error?s.message:"error";o(new Error(i))}}catch(s){o(s)}})}var ur=!0;async function mr(r,e,t){let n;Ee(t)?n=await ye(r,e,t):n=ot(r,t);let o=e&&e.imagebitmap;return await oo(n,o)}async function oo(r,e=null){if((so(e)||!ur)&&(e=null),e)try{return await createImageBitmap(r,e)}catch(t){console.warn(t),ur=!1}return await createImageBitmap(r)}function so(r){if(!r)return!0;for(let e in r)if(Object.prototype.hasOwnProperty.call(r,e))return!1;return!0}function Br(r){return!fo(r,"ftyp",4)||!(r[8]&96)?null:io(r)}function io(r){switch(ao(r,8,12).replace("\0"," ").trim()){case"avif":case"avis":return{extension:"avif",mimeType:"image/avif"};default:return null}}function ao(r,e,t){return String.fromCharCode(...r.slice(e,t))}function co(r){return[...r].map(e=>e.charCodeAt(0))}function fo(r,e,t=0){let n=co(e);for(let o=0;o<n.length;++o)if(n[o]!==r[o+t])return!1;return!0}var w=!1,fe=!0;function P(r){let e=Ae(r);return uo(e)||lo(e)||mo(e)||Bo(e)||Ao(e)}function Ao(r){let e=new Uint8Array(r instanceof DataView?r.buffer:r),t=Br(e);return t?{mimeType:t.mimeType,width:0,height:0}:null}function uo(r){let e=Ae(r);return e.byteLength>=24&&e.getUint32(0,w)===2303741511?{mimeType:"image/png",width:e.getUint32(16,w),height:e.getUint32(20,w)}:null}function mo(r){let e=Ae(r);return e.byteLength>=10&&e.getUint32(0,w)===1195984440?{mimeType:"image/gif",width:e.getUint16(6,fe),height:e.getUint16(8,fe)}:null}function Bo(r){let e=Ae(r);return e.byteLength>=14&&e.getUint16(0,w)===16973&&e.getUint32(2,fe)===e.byteLength?{mimeType:"image/bmp",width:e.getUint32(18,fe),height:e.getUint32(22,fe)}:null}function lo(r){let e=Ae(r);if(!(e.byteLength>=3&&e.getUint16(0,w)===65496&&e.getUint8(2)===255))return null;let{tableMarkers:n,sofMarkers:o}=po(),s=2;for(;s+9<e.byteLength;){let i=e.getUint16(s,w);if(o.has(i))return{mimeType:"image/jpeg",height:e.getUint16(s+5,w),width:e.getUint16(s+7,w)};if(!n.has(i))return null;s+=2,s+=e.getUint16(s,w)}return null}function po(){let r=new Set([65499,65476,65484,65501,65534]);for(let t=65504;t<65520;++t)r.add(t);return{tableMarkers:r,sofMarkers:new Set([65472,65473,65474,65475,65477,65478,65479,65481,65482,65483,65485,65486,65487,65502])}}function Ae(r){if(r instanceof DataView)return r;if(ArrayBuffer.isView(r))return new DataView(r.buffer);if(r instanceof ArrayBuffer)return new DataView(r);throw new Error("toDataView")}async function lr(r,e){let{mimeType:t}=P(r)||{},n=globalThis.loaders?.parseImageNode;return T(n),await n(r,t)}async function dr(r,e,t){e=e||{};let o=(e.image||{}).type||"auto",{url:s}=t||{},i=ho(o),a;switch(i){case"imagebitmap":a=await mr(r,e,s);break;case"image":a=await ye(r,e,s);break;case"data":a=await lr(r,e);break;default:T(!1)}return o==="data"&&(a=ce(a)),a}function ho(r){switch(r){case"auto":case"data":return cr();default:return ar(r),r}}var go=["png","jpg","jpeg","gif","webp","bmp","ico","svg","avif"],Co=["image/png","image/jpeg","image/gif","image/webp","image/avif","image/bmp","image/vnd.microsoft.icon","image/svg+xml"],bo={image:{type:"auto",decode:!0}},st={dataType:null,batchType:null,id:"image",module:"images",name:"Images",version:zt,mimeTypes:Co,extensions:go,parse:dr,tests:[r=>Boolean(P(new DataView(r)))],options:bo};var it={};function at(r){if(it[r]===void 0){let e=ne?Eo(r):xo(r);it[r]=e}return it[r]}function xo(r){let e=["image/png","image/jpeg","image/gif"],t=globalThis.loaders?.imageFormatsNode||e,n=globalThis.loaders?.parseImageNode;return Boolean(n)&&t.includes(r)}function Eo(r){switch(r){case"image/avif":case"image/webp":return yo(r);default:return!0}}function yo(r){try{return document.createElement("canvas").toDataURL(r).indexOf(`data:${r}`)===0}catch{return!1}}function h(r,e){if(!r)throw new Error(e||"assert failed: gltf")}var Te={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},Me={5120:1,5121:1,5122:2,5123:2,5125:4,5126:4};var To=1.33,pr=["SCALAR","VEC2","VEC3","VEC4"],Mo=[[Int8Array,5120],[Uint8Array,5121],[Int16Array,5122],[Uint16Array,5123],[Uint32Array,5125],[Float32Array,5126],[Float64Array,5130]],Fo=new Map(Mo),Io={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},Go={5120:1,5121:1,5122:2,5123:2,5125:4,5126:4},Do={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array};function Fe(r){return pr[r-1]||pr[0]}function U(r){let e=Fo.get(r.constructor);if(!e)throw new Error("Illegal typed array");return e}function Q(r,e){let t=Do[r.componentType],n=Io[r.type],o=Go[r.componentType],s=r.count*n,i=r.count*n*o;h(i>=0&&i<=e.byteLength);let a=Me[r.componentType],c=Te[r.type];return{ArrayType:t,length:s,byteLength:i,componentByteSize:a,numberOfComponentsInElement:c}}function hr(r){let{images:e,bufferViews:t}=r;e=e||[],t=t||[];let n=e.map(i=>i.bufferView);t=t.filter(i=>!n.includes(i));let o=t.reduce((i,a)=>i+a.byteLength,0),s=e.reduce((i,a)=>{let{width:c,height:f}=a.image;return i+c*f},0);return o+Math.ceil(4*s*To)}function gr(r,e,t){let n=r.bufferViews[t];h(n);let o=n.buffer,s=e[o];h(s);let i=(n.byteOffset||0)+s.byteOffset;return new Uint8Array(s.arrayBuffer,i,n.byteLength)}function Cr(r,e,t){let n=typeof t=="number"?r.accessors?.[t]:t;if(!n)throw new Error(`No gltf accessor ${JSON.stringify(t)}`);let o=r.bufferViews?.[n.bufferView||0];if(!o)throw new Error(`No gltf buffer view for accessor ${o}`);let{arrayBuffer:s,byteOffset:i}=e[o.buffer],a=(i||0)+(n.byteOffset||0)+(o.byteOffset||0),{ArrayType:c,length:f,componentByteSize:A,numberOfComponentsInElement:u}=Q(n,o),m=A*u,B=o.byteStride||m;if(typeof o.byteStride>"u"||o.byteStride===m)return new c(s,a,f);let d=new c(f);for(let p=0;p<n.count;p++){let x=new c(s,a+p*B,u);d.set(x,p*u)}return d}function Ro(){return{asset:{version:"2.0",generator:"loaders.gl"},buffers:[],extensions:{},extensionsRequired:[],extensionsUsed:[]}}var l=class{gltf;sourceBuffers;byteLength;constructor(e){this.gltf={json:e?.json||Ro(),buffers:e?.buffers||[],images:e?.images||[]},this.sourceBuffers=[],this.byteLength=0,this.gltf.buffers&&this.gltf.buffers[0]&&(this.byteLength=this.gltf.buffers[0].byteLength,this.sourceBuffers=[this.gltf.buffers[0]])}get json(){return this.gltf.json}getApplicationData(e){return this.json[e]}getExtraData(e){return(this.json.extras||{})[e]}hasExtension(e){let t=this.getUsedExtensions().find(o=>o===e),n=this.getRequiredExtensions().find(o=>o===e);return typeof t=="string"||typeof n=="string"}getExtension(e){let t=this.getUsedExtensions().find(o=>o===e),n=this.json.extensions||{};return t?n[e]:null}getRequiredExtension(e){return this.getRequiredExtensions().find(n=>n===e)?this.getExtension(e):null}getRequiredExtensions(){return this.json.extensionsRequired||[]}getUsedExtensions(){return this.json.extensionsUsed||[]}getRemovedExtensions(){return this.json.extensionsRemoved||[]}getObjectExtension(e,t){return(e.extensions||{})[t]}getScene(e){return this.getObject("scenes",e)}getNode(e){return this.getObject("nodes",e)}getSkin(e){return this.getObject("skins",e)}getMesh(e){return this.getObject("meshes",e)}getMaterial(e){return this.getObject("materials",e)}getAccessor(e){return this.getObject("accessors",e)}getTexture(e){return this.getObject("textures",e)}getSampler(e){return this.getObject("samplers",e)}getImage(e){return this.getObject("images",e)}getBufferView(e){return this.getObject("bufferViews",e)}getBuffer(e){return this.getObject("buffers",e)}getObject(e,t){if(typeof t=="object")return t;let n=this.json[e]&&this.json[e][t];if(!n)throw new Error(`glTF file error: Could not find ${e}[${t}]`);return n}getTypedArrayForBufferView(e){e=this.getBufferView(e);let t=e.buffer,n=this.gltf.buffers[t];h(n);let o=(e.byteOffset||0)+n.byteOffset;return new Uint8Array(n.arrayBuffer,o,e.byteLength)}getTypedArrayForAccessor(e){let t=this.getAccessor(e);return Cr(this.gltf.json,this.gltf.buffers,t)}getTypedArrayForImageData(e){e=this.getAccessor(e);let t=this.getBufferView(e.bufferView),o=this.getBuffer(t.buffer).data,s=t.byteOffset||0;return new Uint8Array(o,s,t.byteLength)}addApplicationData(e,t){return this.json[e]=t,this}addExtraData(e,t){return this.json.extras=this.json.extras||{},this.json.extras[e]=t,this}addObjectExtension(e,t,n){return e.extensions=e.extensions||{},e.extensions[t]=n,this.registerUsedExtension(t),this}setObjectExtension(e,t,n){let o=e.extensions||{};o[t]=n}removeObjectExtension(e,t){let n=e?.extensions||{};if(n[t]){this.json.extensionsRemoved=this.json.extensionsRemoved||[];let o=this.json.extensionsRemoved;o.includes(t)||o.push(t)}delete n[t]}addExtension(e,t={}){return h(t),this.json.extensions=this.json.extensions||{},this.json.extensions[e]=t,this.registerUsedExtension(e),t}addRequiredExtension(e,t={}){return h(t),this.addExtension(e,t),this.registerRequiredExtension(e),t}registerUsedExtension(e){this.json.extensionsUsed=this.json.extensionsUsed||[],this.json.extensionsUsed.find(t=>t===e)||this.json.extensionsUsed.push(e)}registerRequiredExtension(e){this.registerUsedExtension(e),this.json.extensionsRequired=this.json.extensionsRequired||[],this.json.extensionsRequired.find(t=>t===e)||this.json.extensionsRequired.push(e)}removeExtension(e){if(this.json.extensions?.[e]){this.json.extensionsRemoved=this.json.extensionsRemoved||[];let t=this.json.extensionsRemoved;t.includes(e)||t.push(e)}this.json.extensions&&delete this.json.extensions[e],this.json.extensionsRequired&&this._removeStringFromArray(this.json.extensionsRequired,e),this.json.extensionsUsed&&this._removeStringFromArray(this.json.extensionsUsed,e)}setDefaultScene(e){this.json.scene=e}addScene(e){let{nodeIndices:t}=e;return this.json.scenes=this.json.scenes||[],this.json.scenes.push({nodes:t}),this.json.scenes.length-1}addNode(e){let{meshIndex:t,matrix:n}=e;this.json.nodes=this.json.nodes||[];let o={mesh:t};return n&&(o.matrix=n),this.json.nodes.push(o),this.json.nodes.length-1}addMesh(e){let{attributes:t,indices:n,material:o,mode:s=4}=e,a={primitives:[{attributes:this._addAttributes(t),mode:s}]};if(n){let c=this._addIndices(n);a.primitives[0].indices=c}return Number.isFinite(o)&&(a.primitives[0].material=o),this.json.meshes=this.json.meshes||[],this.json.meshes.push(a),this.json.meshes.length-1}addPointCloud(e){let n={primitives:[{attributes:this._addAttributes(e),mode:0}]};return this.json.meshes=this.json.meshes||[],this.json.meshes.push(n),this.json.meshes.length-1}addImage(e,t){let n=P(e),o=t||n?.mimeType,i={bufferView:this.addBufferView(e),mimeType:o};return this.json.images=this.json.images||[],this.json.images.push(i),this.json.images.length-1}addBufferView(e,t=0,n=this.byteLength){let o=e.byteLength;h(Number.isFinite(o)),this.sourceBuffers=this.sourceBuffers||[],this.sourceBuffers.push(e);let s={buffer:t,byteOffset:n,byteLength:o};return this.byteLength+=R(o,4),this.json.bufferViews=this.json.bufferViews||[],this.json.bufferViews.push(s),this.json.bufferViews.length-1}addAccessor(e,t){let n={bufferView:e,type:Fe(t.size),componentType:t.componentType,count:t.count,max:t.max,min:t.min};return this.json.accessors=this.json.accessors||[],this.json.accessors.push(n),this.json.accessors.length-1}addBinaryBuffer(e,t={size:3}){let n=this.addBufferView(e),o={min:t.min,max:t.max};(!o.min||!o.max)&&(o=this._getAccessorMinMax(e,t.size));let s={size:t.size,componentType:U(e),count:Math.round(e.length/t.size),min:o.min,max:o.max};return this.addAccessor(n,Object.assign(s,t))}addTexture(e){let{imageIndex:t}=e,n={source:t};return this.json.textures=this.json.textures||[],this.json.textures.push(n),this.json.textures.length-1}addMaterial(e){return this.json.materials=this.json.materials||[],this.json.materials.push(e),this.json.materials.length-1}createBinaryChunk(){let e=this.byteLength,t=new ArrayBuffer(e),n=new Uint8Array(t),o=0;for(let s of this.sourceBuffers||[])o=$e(s,n,o);this.json?.buffers?.[0]?this.json.buffers[0].byteLength=e:this.json.buffers=[{byteLength:e}],this.gltf.binary=t,this.sourceBuffers=[t],this.gltf.buffers=[{arrayBuffer:t,byteOffset:0,byteLength:t.byteLength}]}_removeStringFromArray(e,t){let n=!0;for(;n;){let o=e.indexOf(t);o>-1?e.splice(o,1):n=!1}}_addAttributes(e={}){let t={};for(let n in e){let o=e[n],s=this._getGltfAttributeName(n),i=this.addBinaryBuffer(o.value,o);t[s]=i}return t}_addIndices(e){return this.addBinaryBuffer(e,{size:1})}_getGltfAttributeName(e){switch(e.toLowerCase()){case"position":case"positions":case"vertices":return"POSITION";case"normal":case"normals":return"NORMAL";case"color":case"colors":return"COLOR_0";case"texcoord":case"texcoords":return"TEXCOORD_0";default:return e}}_getAccessorMinMax(e,t){let n={min:null,max:null};if(e.length<t)return n;n.min=[],n.max=[];let o=e.subarray(0,t);for(let s of o)n.min.push(s),n.max.push(s);for(let s=t;s<e.length;s+=t)for(let i=0;i<t;i++)n.min[0+i]=Math.min(n.min[0+i],e[s+i]),n.max[0+i]=Math.max(n.max[0+i],e[s+i]);return n}};function br(r){return(r%1+1)%1}var xr={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16,BOOLEAN:1,STRING:1,ENUM:1},wo={INT8:Int8Array,UINT8:Uint8Array,INT16:Int16Array,UINT16:Uint16Array,INT32:Int32Array,UINT32:Uint32Array,INT64:BigInt64Array,UINT64:BigUint64Array,FLOAT32:Float32Array,FLOAT64:Float64Array},Er={INT8:1,UINT8:1,INT16:2,UINT16:2,INT32:4,UINT32:4,INT64:8,UINT64:8,FLOAT32:4,FLOAT64:8};function ue(r,e){return Er[e]*xr[r]}function X(r,e,t,n){if(t!=="UINT8"&&t!=="UINT16"&&t!=="UINT32"&&t!=="UINT64")return null;let o=r.getTypedArrayForBufferView(e),s=k(o,"SCALAR",t,n+1);return s instanceof BigInt64Array||s instanceof BigUint64Array?null:s}function k(r,e,t,n=1){let o=xr[e],s=wo[t],i=Er[t],a=n*o,c=a*i,f=r.buffer,A=r.byteOffset;return A%i!==0&&(f=new Uint8Array(f).slice(A,A+c).buffer,A=0),new s(J(f),A,a)}function Y(r,e,t){let n=`TEXCOORD_${e.texCoord||0}`,o=t.attributes[n],s=r.getTypedArrayForAccessor(o),i=r.gltf.json,a=e.index,c=i.textures?.[a]?.source;if(typeof c<"u"){let f=i.images?.[c]?.mimeType,A=r.gltf.images?.[c];if(A&&typeof A.width<"u"){let u=[];for(let m=0;m<s.length;m+=2){let B=Lo(A,f,s,m,e.channels);u.push(B)}return u}}return[]}function Ie(r,e,t,n,o){if(!t?.length)return;let s=[];for(let A of t){let u=n.findIndex(m=>m===A);u===-1&&(u=n.push(A)-1),s.push(u)}let i=new Uint32Array(s),a=r.gltf.buffers.push({arrayBuffer:i.buffer,byteOffset:i.byteOffset,byteLength:i.byteLength})-1,c=r.addBufferView(i,a,0),f=r.addAccessor(c,{size:1,componentType:U(i),count:i.length});o.attributes[e]=f}function Lo(r,e,t,n,o=[0]){let s={r:{offset:0,shift:0},g:{offset:1,shift:8},b:{offset:2,shift:16},a:{offset:3,shift:24}},i=t[n],a=t[n+1],c=1;e&&(e.indexOf("image/jpeg")!==-1||e.indexOf("image/png")!==-1)&&(c=4);let f=Oo(i,a,r,c),A=0;for(let u of o){let m=typeof u=="number"?Object.values(s)[u]:s[u],B=f+m.offset,d=ce(r);if(d.data.length<=B)throw new Error(`${d.data.length} <= ${B}`);let p=d.data[B];A|=p<<m.shift}return A}function Oo(r,e,t,n=1){let o=t.width,s=br(r)*(o-1),i=Math.round(s),a=t.height,c=br(e)*(a-1),f=Math.round(c),A=t.components?t.components:n;return(f*o+i)*A}function Ge(r,e,t,n,o){let s=[];for(let i=0;i<e;i++){let a=t[i],c=t[i+1]-t[i];if(c+a>n)break;let f=a/o,A=c/o;s.push(r.slice(f,f+A))}return s}function De(r,e,t){let n=[];for(let o=0;o<e;o++){let s=o*t;n.push(r.slice(s,s+t))}return n}function Re(r,e,t,n){if(t)throw new Error("Not implemented - arrayOffsets for strings is specified");if(n){let o=[],s=new TextDecoder("utf8"),i=0;for(let a=0;a<r;a++){let c=n[a+1]-n[a];if(c+i<=e.length){let f=e.subarray(i,c+i),A=s.decode(f);o.push(A),i+=c}}return o}return[]}var V="EXT_mesh_features",ct=V;async function _o(r,e){let t=new l(r);Jo(t,e)}function So(r,e){let t=new l(r);return Ho(t,e),t.createBinaryChunk(),t.gltf}function Jo(r,e){let t=r.gltf.json;if(t.meshes)for(let n of t.meshes)for(let o of n.primitives)Uo(r,o,e)}function Uo(r,e,t){if(!t?.gltf?.loadBuffers)return;let o=e.extensions?.[V]?.featureIds;if(o)for(let s of o){let i;if(typeof s.attribute<"u"){let a=`_FEATURE_ID_${s.attribute}`,c=e.attributes[a];i=r.getTypedArrayForAccessor(c)}else typeof s.texture<"u"&&t?.gltf?.loadImages?i=Y(r,s.texture,e):i=[];s.data=i}}function Ho(r,e){let t=r.gltf.json.meshes;if(t)for(let n of t)for(let o of n.primitives)No(r,o)}function ft(r,e,t,n){e.extensions||(e.extensions={});let o=e.extensions[V];o||(o={featureIds:[]},e.extensions[V]=o);let{featureIds:s}=o,i={featureCount:t.length,propertyTable:n,data:t};s.push(i),r.addObjectExtension(e,V,o)}function No(r,e){let t=e.extensions?.[V];if(!t)return;let n=t.featureIds;n.forEach((o,s)=>{if(o.data){let{accessorKey:i,index:a}=Po(e.attributes),c=new Uint32Array(o.data);n[s]={featureCount:c.length,propertyTable:o.propertyTable,attribute:a},r.gltf.buffers.push({arrayBuffer:c.buffer,byteOffset:c.byteOffset,byteLength:c.byteLength});let f=r.addBufferView(c),A=r.addAccessor(f,{size:1,componentType:U(c),count:c.length});e.attributes[i]=A}})}function Po(r){let e="_FEATURE_ID_",t=Object.keys(r).filter(s=>s.indexOf(e)===0),n=-1;for(let s of t){let i=Number(s.substring(e.length));i>n&&(n=i)}return n++,{accessorKey:`${e}${n}`,index:n}}var Le={};y(Le,{createExtStructuralMetadata:()=>Bt,decode:()=>Ko,encode:()=>jo,name:()=>ut});var W="EXT_structural_metadata",ut=W;async function Ko(r,e){let t=new l(r);vo(t,e)}function jo(r,e){let t=new l(r);return ss(t,e),t.createBinaryChunk(),t.gltf}function vo(r,e){if(!e.gltf?.loadBuffers)return;let t=r.getExtension(W);t&&(e.gltf?.loadImages&&Qo(r,t),Xo(r,t))}function Qo(r,e){let t=e.propertyTextures,n=r.gltf.json;if(t&&n.meshes)for(let o of n.meshes)for(let s of o.primitives)Yo(r,t,s,e)}function Xo(r,e){let t=e.schema;if(!t)return;let n=t.classes,o=e.propertyTables;if(n&&o)for(let s in n){let i=ko(o,s);i&&Wo(r,t,i)}}function ko(r,e){for(let t of r)if(t.class===e)return t;return null}function Yo(r,e,t,n){if(!e)return;let s=t.extensions?.[W]?.propertyTextures;if(s)for(let i of s){let a=e[i];Vo(r,a,t,n)}}function Vo(r,e,t,n){if(!e.properties)return;n.dataAttributeNames||(n.dataAttributeNames=[]);let o=e.class;for(let s in e.properties){let i=`${o}_${s}`,a=e.properties?.[s];if(!a)continue;a.data||(a.data=[]);let c=a.data,f=Y(r,a,t);f!==null&&(Ie(r,i,f,c,t),a.data=c,n.dataAttributeNames.push(i))}}function Wo(r,e,t){let n=e.classes?.[t.class];if(!n)throw new Error(`Incorrect data in the EXT_structural_metadata extension: no schema class with name ${t.class}`);let o=t.count;for(let s in n.properties){let i=n.properties[s],a=t.properties?.[s];if(a){let c=Zo(r,e,i,o,a);a.data=c}}}function Zo(r,e,t,n,o){let s=[],i=o.values,a=r.getTypedArrayForBufferView(i),c=qo(r,t,o,n),f=zo(r,o,n);switch(t.type){case"SCALAR":case"VEC2":case"VEC3":case"VEC4":case"MAT2":case"MAT3":case"MAT4":{s=$o(t,n,a,c);break}case"BOOLEAN":throw new Error(`Not implemented - classProperty.type=${t.type}`);case"STRING":{s=Re(n,a,c,f);break}case"ENUM":{s=es(e,t,n,a,c);break}default:throw new Error(`Unknown classProperty type ${t.type}`)}return s}function qo(r,e,t,n){return e.array&&typeof e.count>"u"&&typeof t.arrayOffsets<"u"?X(r,t.arrayOffsets,t.arrayOffsetType||"UINT32",n):null}function zo(r,e,t){return typeof e.stringOffsets<"u"?X(r,e.stringOffsets,e.stringOffsetType||"UINT32",t):null}function $o(r,e,t,n){let o=r.array,s=r.count,i=ue(r.type,r.componentType),a=t.byteLength/i,c;return r.componentType?c=k(t,r.type,r.componentType,a):c=t,o?n?Ge(c,e,n,t.length,i):s?De(c,e,s):[]:c}function es(r,e,t,n,o){let s=e.enumType;if(!s)throw new Error("Incorrect data in the EXT_structural_metadata extension: classProperty.enumType is not set for type ENUM");let i=r.enums?.[s];if(!i)throw new Error(`Incorrect data in the EXT_structural_metadata extension: schema.enums does't contain ${s}`);let a=i.valueType||"UINT16",c=ue(e.type,a),f=n.byteLength/c,A=k(n,e.type,a,f);if(A||(A=n),e.array){if(o)return ts({valuesData:A,numberOfElements:t,arrayOffsets:o,valuesDataBytesLength:n.length,elementSize:c,enumEntry:i});let u=e.count;return u?rs(A,t,u,i):[]}return mt(A,0,t,i)}function ts(r){let{valuesData:e,numberOfElements:t,arrayOffsets:n,valuesDataBytesLength:o,elementSize:s,enumEntry:i}=r,a=[];for(let c=0;c<t;c++){let f=n[c],A=n[c+1]-n[c];if(A+f>o)break;let u=f/s,m=A/s,B=mt(e,u,m,i);a.push(B)}return a}function rs(r,e,t,n){let o=[];for(let s=0;s<e;s++){let i=t*s,a=mt(r,i,t,n);o.push(a)}return o}function mt(r,e,t,n){let o=[];for(let s=0;s<t;s++)if(r instanceof BigInt64Array||r instanceof BigUint64Array)o.push("");else{let i=r[e+s],a=ns(n,i);a?o.push(a.name):o.push("")}return o}function ns(r,e){for(let t of r.values)if(t.value===e)return t;return null}var os="schemaClassId";function ss(r,e){let t=r.getExtension(W);if(t&&t.propertyTables)for(let n of t.propertyTables){let o=n.class,s=t.schema?.classes?.[o];n.properties&&s&&is(n,s,r)}}function is(r,e,t){for(let n in r.properties){let o=r.properties[n].data;if(o){let s=e.properties[n];if(s){let i=fs(o,s,t);r.properties[n]=i}}}}function Bt(r,e,t=os){let n=r.getExtension(W);n||(n=r.addExtension(W)),n.schema=as(e,t,n.schema);let o=cs(e,t,n.schema);return n.propertyTables||(n.propertyTables=[]),n.propertyTables.push(o)-1}function as(r,e,t){let n=t??{id:"schema_id"},o={properties:{}};for(let s of r){let i={type:s.elementType,componentType:s.componentType};o.properties[s.name]=i}return n.classes={},n.classes[e]=o,n}function cs(r,e,t){let n={class:e,count:0},o=0,s=t.classes?.[e];for(let i of r){if(o===0&&(o=i.values.length),o!==i.values.length&&i.values.length)throw new Error("Illegal values in attributes");s?.properties[i.name]&&(n.properties||(n.properties={}),n.properties[i.name]={values:0,data:i.values})}return n.count=o,n}function fs(r,e,t){let n={values:0};if(e.type==="STRING"){let{stringData:o,stringOffsets:s}=ms(r);n.stringOffsets=At(s,t),n.values=At(o,t)}else if(e.type==="SCALAR"&&e.componentType){let o=us(r,e.componentType);n.values=At(o,t)}return n}var As={INT8:Int8Array,UINT8:Uint8Array,INT16:Int16Array,UINT16:Uint16Array,INT32:Int32Array,UINT32:Uint32Array,INT64:Int32Array,UINT64:Uint32Array,FLOAT32:Float32Array,FLOAT64:Float64Array};function us(r,e){let t=[];for(let o of r)t.push(Number(o));let n=As[e];if(!n)throw new Error("Illegal component type");return new n(t)}function ms(r){let e=new TextEncoder,t=[],n=0;for(let c of r){let f=e.encode(c);n+=f.length,t.push(f)}let o=new Uint8Array(n),s=[],i=0;for(let c of t)o.set(c,i),s.push(i),i+=c.length;s.push(i);let a=new Uint32Array(s);return{stringData:o,stringOffsets:a}}function At(r,e){return e.gltf.buffers.push({arrayBuffer:J(r.buffer),byteOffset:r.byteOffset,byteLength:r.byteLength}),e.addBufferView(r)}var dt={};y(dt,{decode:()=>Bs,name:()=>lt});var yr="EXT_feature_metadata",lt=yr;async function Bs(r,e){let t=new l(r);ls(t,e)}function ls(r,e){if(!e.gltf?.loadBuffers)return;let t=r.getExtension(yr);t&&(e.gltf?.loadImages&&ds(r,t),ps(r,t))}function ds(r,e){let t=e.schema;if(!t)return;let n=t.classes,{featureTextures:o}=e;if(n&&o)for(let s in n){let i=n[s],a=gs(o,s);a&&bs(r,a,i)}}function ps(r,e){let t=e.schema;if(!t)return;let n=t.classes,o=e.featureTables;if(n&&o)for(let s in n){let i=hs(o,s);i&&Cs(r,t,i)}}function hs(r,e){for(let t in r){let n=r[t];if(n.class===e)return n}return null}function gs(r,e){for(let t in r){let n=r[t];if(n.class===e)return n}return null}function Cs(r,e,t){if(!t.class)return;let n=e.classes?.[t.class];if(!n)throw new Error(`Incorrect data in the EXT_structural_metadata extension: no schema class with name ${t.class}`);let o=t.count;for(let s in n.properties){let i=n.properties[s],a=t.properties?.[s];if(a){let c=xs(r,e,i,o,a);a.data=c}}}function bs(r,e,t){let n=e.class;for(let o in t.properties){let s=e?.properties?.[o];if(s){let i=Fs(r,s,n);s.data=i}}}function xs(r,e,t,n,o){let s=[],i=o.bufferView,a=r.getTypedArrayForBufferView(i),c=Es(r,t,o,n),f=ys(r,t,o,n);return t.type==="STRING"||t.componentType==="STRING"?s=Re(n,a,c,f):Ts(t)&&(s=Ms(t,n,a,c)),s}function Es(r,e,t,n){return e.type==="ARRAY"&&typeof e.componentCount>"u"&&typeof t.arrayOffsetBufferView<"u"?X(r,t.arrayOffsetBufferView,t.offsetType||"UINT32",n):null}function ys(r,e,t,n){return typeof t.stringOffsetBufferView<"u"?X(r,t.stringOffsetBufferView,t.offsetType||"UINT32",n):null}function Ts(r){let e=["UINT8","INT16","UINT16","INT32","UINT32","INT64","UINT64","FLOAT32","FLOAT64"];return e.includes(r.type)||typeof r.componentType<"u"&&e.includes(r.componentType)}function Ms(r,e,t,n){let o=r.type==="ARRAY",s=r.componentCount,i="SCALAR",a=r.componentType||r.type,c=ue(i,a),f=t.byteLength/c,A=k(t,i,a,f);return o?n?Ge(A,e,n,t.length,c):s?De(A,e,s):[]:A}function Fs(r,e,t){let n=r.gltf.json;if(!n.meshes)return[];let o=[];for(let s of n.meshes)for(let i of s.primitives)Is(r,t,e,o,i);return o}function Is(r,e,t,n,o){let s={channels:t.channels,...t.texture},i=Y(r,s,o);i&&Ie(r,e,i,n,o)}var H="4.4.0-alpha.19";var Tr="4.4.0-alpha.19";var Oe={TRANSCODER:"basis_transcoder.js",TRANSCODER_WASM:"basis_transcoder.wasm",ENCODER:"basis_encoder.js",ENCODER_WASM:"basis_encoder.wasm"},Mr;async function ht(r){We(r.modules);let e=Ze("basis");return e||(Mr||=Gs(r),await Mr)}async function Gs(r){let e=null,t=null;return[e,t]=await Promise.all([await M(Oe.TRANSCODER,"textures",r),await M(Oe.TRANSCODER_WASM,"textures",r)]),e=e||globalThis.BASIS,await Ds(e,t)}function Ds(r,e){let t={};return e&&(t.wasmBinary=e),new Promise(n=>{r(t).then(o=>{let{BasisFile:s,initializeBasis:i}=o;i(),n({BasisFile:s})})})}var pt;async function gt(r){let e=r.modules||{};return e.basisEncoder?e.basisEncoder:(pt=pt||Rs(r),await pt)}async function Rs(r){let e=null,t=null;return[e,t]=await Promise.all([await M(Oe.ENCODER,"textures",r),await M(Oe.ENCODER_WASM,"textures",r)]),e=e||globalThis.BASIS,await ws(e,t)}function ws(r,e){let t={};return e&&(t.wasmBinary=e),new Promise(n=>{r(t).then(o=>{let{BasisFile:s,KTX2File:i,initializeBasis:a,BasisEncoder:c}=o;a(),n({BasisFile:s,KTX2File:i,BasisEncoder:c})})})}var Ls=["","WEBKIT_","MOZ_"],Fr={WEBGL_compressed_texture_s3tc:["bc1-rgb-unorm-webgl","bc1-rgba-unorm","bc2-rgba-unorm","bc3-rgba-unorm"],WEBGL_compressed_texture_s3tc_srgb:["bc1-rgb-unorm-srgb-webgl","bc1-rgba-unorm-srgb","bc2-rgba-unorm-srgb","bc3-rgba-unorm-srgb"],EXT_texture_compression_rgtc:["bc4-r-unorm","bc4-r-snorm","bc5-rg-unorm","bc5-rg-snorm"],EXT_texture_compression_bptc:["bc6h-rgb-ufloat","bc6h-rgb-float","bc7-rgba-unorm","bc7-rgba-unorm-srgb"],WEBGL_compressed_texture_etc1:["etc1-rgb-unorm-webgl"],WEBGL_compressed_texture_etc:["etc2-rgb8unorm","etc2-rgb8unorm-srgb","etc2-rgb8a1unorm","etc2-rgb8a1unorm-srgb","etc2-rgba8unorm","etc2-rgba8unorm-srgb","eac-r11unorm","eac-r11snorm","eac-rg11unorm","eac-rg11snorm"],WEBGL_compressed_texture_pvrtc:["pvrtc-rgb4unorm-webgl","pvrtc-rgba4unorm-webgl","pvrtc-rgb2unorm-webgl","pvrtc-rgba2unorm-webgl"],WEBGL_compressed_texture_atc:["atc-rgb-unorm-webgl","atc-rgba-unorm-webgl","atc-rgbai-unorm-webgl"],WEBGL_compressed_texture_astc:["astc-4x4-unorm","astc-4x4-unorm-srgb","astc-5x4-unorm","astc-5x4-unorm-srgb","astc-5x5-unorm","astc-5x5-unorm-srgb","astc-6x5-unorm","astc-6x5-unorm-srgb","astc-6x6-unorm","astc-6x6-unorm-srgb","astc-8x5-unorm","astc-8x5-unorm-srgb","astc-8x6-unorm","astc-8x6-unorm-srgb","astc-8x8-unorm","astc-8x8-unorm-srgb","astc-10x5-unorm","astc-10x5-unorm-srgb","astc-10x6-unorm","astc-10x6-unorm-srgb","astc-10x8-unorm","astc-10x8-unorm-srgb","astc-10x10-unorm","astc-10x10-unorm-srgb","astc-12x10-unorm","astc-12x10-unorm-srgb","astc-12x12-unorm","astc-12x12-unorm-srgb"]};var _e=null;function Ir(r){if(!_e){r=r||Os()||void 0,_e=new Set;for(let e of Ls)for(let t in Fr)if(r&&r.getExtension(`${e}${t}`))for(let n of Fr[t])_e.add(n)}return _e}function Os(){try{return document.createElement("canvas").getContext("webgl")}catch{return null}}var E=[171,75,84,88,32,50,48,187,13,10,26,10];function Gr(r){let e=new Uint8Array(r);return!(e.byteLength<E.length||e[0]!==E[0]||e[1]!==E[1]||e[2]!==E[2]||e[3]!==E[3]||e[4]!==E[4]||e[5]!==E[5]||e[6]!==E[6]||e[7]!==E[7]||e[8]!==E[8]||e[9]!==E[9]||e[10]!==E[10]||e[11]!==E[11])}var Dr=Promise.resolve(),Lr={etc1:{basisFormat:0,compressed:!0,format:36196,textureFormat:"etc1-rgb-unorm-webgl"},etc2:{basisFormat:1,compressed:!0,format:37493,textureFormat:"etc2-rgba8unorm"},bc1:{basisFormat:2,compressed:!0,format:33776,textureFormat:"bc1-rgb-unorm-webgl"},bc3:{basisFormat:3,compressed:!0,format:33779,textureFormat:"bc3-rgba-unorm"},bc4:{basisFormat:4,compressed:!0,format:36283,textureFormat:"bc4-r-unorm"},bc5:{basisFormat:5,compressed:!0,format:36285,textureFormat:"bc5-rg-unorm"},"bc7-m6-opaque-only":{basisFormat:6,compressed:!0,format:36492,textureFormat:"bc7-rgba-unorm"},"bc7-m5":{basisFormat:7,compressed:!0,format:36492,textureFormat:"bc7-rgba-unorm"},"pvrtc1-4-rgb":{basisFormat:8,compressed:!0,format:35840,textureFormat:"pvrtc-rgb4unorm-webgl"},"pvrtc1-4-rgba":{basisFormat:9,compressed:!0,format:35842,textureFormat:"pvrtc-rgba4unorm-webgl"},"astc-4x4":{basisFormat:10,compressed:!0,format:37808,textureFormat:"astc-4x4-unorm"},"atc-rgb":{basisFormat:11,compressed:!0,format:35986,textureFormat:"atc-rgb-unorm-webgl"},"atc-rgba-interpolated-alpha":{basisFormat:12,compressed:!0,format:34798,textureFormat:"atc-rgbai-unorm-webgl"},rgba32:{basisFormat:13,compressed:!1,format:32856,textureFormat:"rgba8unorm"},rgb565:{basisFormat:14,compressed:!1,format:36194,textureFormat:"rgb565unorm-webgl"},bgr565:{basisFormat:15,compressed:!1,format:36194,textureFormat:"rgb565unorm-webgl"},rgba4444:{basisFormat:16,compressed:!1,format:32854,textureFormat:"rgba4unorm-webgl"}},CA=Object.freeze(Object.keys(Lr));async function Js(r){let e=Dr,t;Dr=new Promise(n=>{t=n}),await e;try{return await r()}finally{t()}}async function Or(r,e={}){let t=se(e);return await Js(async()=>{if(!e.basis?.containerFormat||e.basis.containerFormat==="auto"){if(Gr(r)){let o=await gt(t);return Rr(o.KTX2File,r,e)}let{BasisFile:n}=await ht(t);return Ct(n,r,e)}switch(e.basis.module){case"encoder":let n=await gt(t);switch(e.basis.containerFormat){case"ktx2":return Rr(n.KTX2File,r,e);case"basis":default:return Ct(n.BasisFile,r,e)}case"transcoder":default:let{BasisFile:o}=await ht(t);return Ct(o,r,e)}})}function Ct(r,e,t){let n=new r(new Uint8Array(e));try{if(!n.startTranscoding())throw new Error("Failed to start basis transcoding");let o=n.getNumImages(),s=[];for(let i=0;i<o;i++){let a=n.getNumLevels(i),c=[];for(let f=0;f<a;f++)c.push(Us(n,i,f,t));s.push(c)}return s}finally{n.close(),n.delete()}}function Us(r,e,t,n){let o=r.getImageWidth(e,t),s=r.getImageHeight(e,t),i=r.getHasAlpha(),{compressed:a,format:c,basisFormat:f,textureFormat:A}=_r(n,i),u=r.getImageTranscodedSizeInBytes(e,t,f),m=new Uint8Array(u);if(!r.transcodeImage(m,e,t,f,0,0))throw new Error("failed to start Basis transcoding");return{shape:"texture-level",width:o,height:s,data:m,compressed:a,...c!==void 0?{format:c}:{},...A!==void 0?{textureFormat:A}:{},hasAlpha:i}}function Rr(r,e,t){let n=new r(new Uint8Array(e));try{if(!n.startTranscoding())throw new Error("failed to start KTX2 transcoding");let o=n.getLevels(),s=[];for(let i=0;i<o;i++)s.push(Hs(n,i,t));return[s]}finally{n.close(),n.delete()}}function Hs(r,e,t){let{alphaFlag:n,height:o,width:s}=r.getImageLevelInfo(e,0,0),{compressed:i,format:a,basisFormat:c,textureFormat:f}=_r(t,n),A=r.getImageTranscodedSizeInBytes(e,0,0,c),u=new Uint8Array(A);if(!r.transcodeImage(u,e,0,0,c,0,-1,-1))throw new Error("Failed to transcode KTX2 image");return{shape:"texture-level",width:s,height:o,data:u,compressed:i,...a!==void 0?{format:a}:{},...f!==void 0?{textureFormat:f}:{},levelSize:A,hasAlpha:n}}function _r(r,e){let t=r.basis?.format||"auto";t==="auto"&&(t=r.basis?.supportedTextureFormats?wr(r.basis.supportedTextureFormats):wr()),typeof t=="object"&&(t=e?t.alpha:t.noAlpha);let n=t.toLowerCase(),o=Lr[n];if(!o)throw new Error(`Unknown Basis format ${t}`);return o}function wr(r=Ir()){let e=new Set(r);return Z(e,["astc-4x4-unorm","astc-4x4-unorm-srgb"])?"astc-4x4":Z(e,["bc7-rgba-unorm","bc7-rgba-unorm-srgb"])?{alpha:"bc7-m5",noAlpha:"bc7-m6-opaque-only"}:Z(e,["bc1-rgb-unorm-webgl","bc1-rgb-unorm-srgb-webgl","bc1-rgba-unorm","bc1-rgba-unorm-srgb","bc2-rgba-unorm","bc2-rgba-unorm-srgb","bc3-rgba-unorm","bc3-rgba-unorm-srgb"])?{alpha:"bc3",noAlpha:"bc1"}:Z(e,["pvrtc-rgb4unorm-webgl","pvrtc-rgba4unorm-webgl","pvrtc-rgb2unorm-webgl","pvrtc-rgba2unorm-webgl"])?{alpha:"pvrtc1-4-rgba",noAlpha:"pvrtc1-4-rgb"}:Z(e,["etc2-rgb8unorm","etc2-rgb8unorm-srgb","etc2-rgb8a1unorm","etc2-rgb8a1unorm-srgb","etc2-rgba8unorm","etc2-rgba8unorm-srgb","eac-r11unorm","eac-r11snorm","eac-rg11unorm","eac-rg11snorm"])?"etc2":e.has("etc1-rgb-unorm-webgl")?"etc1":Z(e,["atc-rgb-unorm-webgl","atc-rgba-unorm-webgl","atc-rgbai-unorm-webgl"])?{alpha:"atc-rgba-interpolated-alpha",noAlpha:"atc-rgb"}:"rgb565"}function Z(r,e){return e.some(t=>r.has(t))}var Sr={dataType:null,batchType:null,name:"Basis",id:"basis",module:"textures",version:Tr,worker:!0,extensions:["basis","ktx2"],mimeTypes:["application/octet-stream","image/ktx2"],tests:["sB"],binary:!0,options:{basis:{format:"auto",containerFormat:"auto",module:"transcoder"}}},bt={...Sr,parse:Or};var q=!0,Jr=1735152710,yt=12,Se=8,Ns=1313821514,Ps=5130562,Ks=0,js=0,vs=1;function Qs(r,e=0){return`${String.fromCharCode(r.getUint8(e+0))}${String.fromCharCode(r.getUint8(e+1))}${String.fromCharCode(r.getUint8(e+2))}${String.fromCharCode(r.getUint8(e+3))}`}function Ur(r,e=0,t={}){let n=new DataView(r),{magic:o=Jr}=t,s=n.getUint32(e,!1);return s===o||s===Jr}function Je(r,e,t=0,n={}){let o=new DataView(e),s=Qs(o,t+0),i=o.getUint32(t+4,q),a=o.getUint32(t+8,q);switch(Object.assign(r,{header:{byteOffset:t,byteLength:a,hasBinChunk:!1},type:s,version:i,json:{},binChunks:[]}),t+=yt,r.version){case 1:return Xs(r,o,t);case 2:return ks(r,o,t,n={});default:throw new Error(`Invalid GLB version ${r.version}. Only supports version 1 and 2.`)}}function Xs(r,e,t){T(r.header.byteLength>yt+Se);let n=e.getUint32(t+0,q),o=e.getUint32(t+4,q);return t+=Se,T(o===Ks),xt(r,e,t,n),t+=n,t+=Et(r,e,t,r.header.byteLength),t}function ks(r,e,t,n){return T(r.header.byteLength>yt+Se),Ys(r,e,t,n),t+r.header.byteLength}function Ys(r,e,t,n){for(;t+8<=r.header.byteLength;){let o=e.getUint32(t+0,q),s=e.getUint32(t+4,q);switch(t+=Se,s){case Ns:xt(r,e,t,o);break;case Ps:Et(r,e,t,o);break;case js:n.strict||xt(r,e,t,o);break;case vs:n.strict||Et(r,e,t,o);break;default:break}t+=R(o,4)}return t}function xt(r,e,t,n){let o=new Uint8Array(e.buffer,t,n),i=new TextDecoder("utf8").decode(o);return r.json=JSON.parse(i),R(n,4)}function Et(r,e,t,n){return r.header.hasBinChunk=!0,r.binChunks.push({byteOffset:t,byteLength:n,arrayBuffer:e.buffer}),R(n,4)}function Tt(r,e,t){if(r.startsWith("data:")||r.startsWith("http:")||r.startsWith("https:"))return r;let o=t?.baseUrl||Vs(e?.core?.baseUrl);if(!o)throw new Error(`'baseUrl' must be provided to resolve relative url ${r}`);return o.endsWith("/")?`${o}${r}`:`${o}/${r}`}function Vs(r){if(!r)return;if(r.endsWith("/"))return r;let e=r.lastIndexOf("/");return e>=0?r.slice(0,e+1):""}var Ft={};y(Ft,{decode:()=>ii,name:()=>si});var Ws="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",Zs="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",qs=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]),zs=new Uint8Array([32,0,65,253,3,1,2,34,4,106,6,5,11,8,7,20,13,33,12,16,128,9,116,64,19,113,127,15,10,21,22,14,255,66,24,54,136,107,18,23,192,26,114,118,132,17,77,101,130,144,27,87,131,44,45,74,156,154,70,167]),$s={0:"",1:"meshopt_decodeFilterOct",2:"meshopt_decodeFilterQuat",3:"meshopt_decodeFilterExp",NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},ei={0:"meshopt_decodeVertexBuffer",1:"meshopt_decodeIndexBuffer",2:"meshopt_decodeIndexSequence",ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"};async function Hr(r,e,t,n,o,s="NONE"){let i=await ti();oi(i,i.exports[ei[o]],r,e,t,n,i.exports[$s[s||"NONE"]])}var Mt;async function ti(){return Mt||(Mt=ri()),Mt}async function ri(){let r=Ws;WebAssembly.validate(qs)&&(r=Zs,console.log("Warning: meshopt_decoder is using experimental SIMD support"));let e=await WebAssembly.instantiate(ni(r),{});return await e.instance.exports.__wasm_call_ctors(),e.instance}function ni(r){let e=new Uint8Array(r.length);for(let n=0;n<r.length;++n){let o=r.charCodeAt(n);e[n]=o>96?o-71:o>64?o-65:o>47?o+4:o>46?63:62}let t=0;for(let n=0;n<r.length;++n)e[t++]=e[n]<60?zs[e[n]]:(e[n]-60)*64+e[++n];return e.buffer.slice(0,t)}function oi(r,e,t,n,o,s,i){let a=r.exports.sbrk,c=n+3&-4,f=a(c*o),A=a(s.length),u=new Uint8Array(r.exports.memory.buffer);u.set(s,A);let m=e(f,n,o,A,s.length);if(m===0&&i&&i(f,c,o),t.set(u.subarray(f,f+n*o)),a(f-a(0)),m!==0)throw new Error(`Malformed buffer data: ${m}`)}var Ue="EXT_meshopt_compression",si=Ue;async function ii(r,e){let t=new l(r);if(!e?.gltf?.decompressMeshes||!e.gltf?.loadBuffers)return;let n=[];for(let o of r.json.bufferViews||[])n.push(ai(t,o));await Promise.all(n),t.removeExtension(Ue)}async function ai(r,e){let t=r.getObjectExtension(e,Ue);if(t){let{byteOffset:n=0,byteLength:o=0,byteStride:s,count:i,mode:a,filter:c="NONE",buffer:f}=t,A=r.gltf.buffers[f],u=new Uint8Array(A.arrayBuffer,A.byteOffset+n,o),m=new Uint8Array(r.gltf.buffers[e.buffer].arrayBuffer,e.byteOffset,e.byteLength);await Hr(m,i,s,u,a,c),r.removeObjectExtension(e,Ue)}}var It={};y(It,{name:()=>ci,preprocess:()=>fi});var z="EXT_texture_webp",ci=z;function fi(r,e){let t=new l(r);if(!at("image/webp")){if(t.getRequiredExtensions().includes(z))throw new Error(`gltf: Required extension ${z} not supported by browser`);return}let{json:n}=t;for(let o of n.textures||[]){let s=t.getObjectExtension(o,z);s&&(o.source=s.source),t.removeObjectExtension(o,z)}t.removeExtension(z)}var Gt={};y(Gt,{name:()=>Ai,preprocess:()=>ui});var He="KHR_texture_basisu",Ai=He;function ui(r,e){let t=new l(r),{json:n}=t;for(let o of n.textures||[]){let s=t.getObjectExtension(o,He);s&&(o.source=s.source,t.removeObjectExtension(o,He))}t.removeExtension(He)}var St={};y(St,{decode:()=>Ii,encode:()=>Gi,name:()=>Mi,preprocess:()=>Fi});var mi="1.5.6",Bi="1.4.1",Dt=`https://www.gstatic.com/draco/versioned/decoders/${mi}`,g={DECODER:"draco_wasm_wrapper.js",DECODER_WASM:"draco_decoder.wasm",FALLBACK_DECODER:"draco_decoder.js",ENCODER:"draco_encoder.js"},me={[g.DECODER]:`${Dt}/${g.DECODER}`,[g.DECODER_WASM]:`${Dt}/${g.DECODER_WASM}`,[g.FALLBACK_DECODER]:`${Dt}/${g.FALLBACK_DECODER}`,[g.ENCODER]:`https://raw.githubusercontent.com/google/draco/${Bi}/javascript/${g.ENCODER}`},Rt;async function Pr(r={},e){let t=r.modules||{};return t.draco3d?Rt||=t.draco3d.createDecoderModule({}).then(n=>({draco:n})):Rt||=li(r,e),await Rt}function Nr(r,e){if(r&&typeof r=="object"){if(r.default)return r.default;if(r[e])return r[e]}return r}async function li(r,e){let t,n;switch(e){case"js":t=await M(me[g.FALLBACK_DECODER],"draco",r,g.FALLBACK_DECODER);break;case"wasm":default:try{[t,n]=await Promise.all([await M(me[g.DECODER],"draco",r,g.DECODER),await M(me[g.DECODER_WASM],"draco",r,g.DECODER_WASM)])}catch{t=null,n=null}}return t=Nr(t,"DracoDecoderModule"),t=t||globalThis.DracoDecoderModule,!t&&!O&&([t,n]=await Promise.all([await M(me[g.DECODER],"draco",{...r,useLocalLibraries:!0},g.DECODER),await M(me[g.DECODER_WASM],"draco",{...r,useLocalLibraries:!0},g.DECODER_WASM)]),t=Nr(t,"DracoDecoderModule"),t=t||globalThis.DracoDecoderModule),await di(t,n)}function di(r,e){if(typeof r!="function")throw new Error("DracoDecoderModule could not be loaded");let t={};return e&&(t.wasmBinary=e),new Promise(n=>{r({...t,onModuleLoaded:o=>n({draco:o})})})}var Kr="4.4.0-alpha.19";function jr(r){switch(r.constructor){case Int8Array:return"int8";case Uint8Array:case Uint8ClampedArray:return"uint8";case Int16Array:return"int16";case Uint16Array:return"uint16";case Int32Array:return"int32";case Uint32Array:return"uint32";case Float32Array:return"float32";case Float64Array:return"float64";default:return"null"}}function wt(r){let e=1/0,t=1/0,n=1/0,o=-1/0,s=-1/0,i=-1/0,a=r.POSITION?r.POSITION.value:[],c=a&&a.length;for(let f=0;f<c;f+=3){let A=a[f],u=a[f+1],m=a[f+2];e=A<e?A:e,t=u<t?u:t,n=m<n?m:n,o=A>o?A:o,s=u>s?u:s,i=m>i?m:i}return[[e,t,n],[o,s,i]]}function Lt(r,e,t){let n=jr(e.value),o=t||vr(e);return{name:r,type:{type:"fixed-size-list",listSize:e.size,children:[{name:"value",type:n}]},nullable:!1,metadata:o}}function vr(r){let e={};return"byteOffset"in r&&(e.byteOffset=r.byteOffset.toString(10)),"byteStride"in r&&(e.byteStride=r.byteStride.toString(10)),"normalized"in r&&(e.normalized=r.normalized.toString()),e}function Xr(r,e,t){let n=kr(e.metadata),o=[],s=pi(e.attributes);for(let i in r){let a=r[i],c=Qr(i,a,s[i]);o.push(c)}if(t){let i=Qr("indices",t);o.push(i)}return{fields:o,metadata:n}}function pi(r){let e={};for(let t in r){let n=r[t];e[n.name||"undefined"]=n}return e}function Qr(r,e,t){let n=t?kr(t.metadata):void 0;return Lt(r,e,n)}function kr(r){Object.entries(r);let e={};for(let t in r)e[`${t}.string`]=JSON.stringify(r[t]);return e}var Yr={POSITION:"POSITION",NORMAL:"NORMAL",COLOR:"COLOR_0",TEX_COORD:"TEXCOORD_0"},hi={1:Int8Array,2:Uint8Array,3:Int16Array,4:Uint16Array,5:Int32Array,6:Uint32Array,9:Float32Array},gi=4,Be=class{draco;decoder;metadataQuerier;constructor(e){this.draco=e,this.decoder=new this.draco.Decoder,this.metadataQuerier=new this.draco.MetadataQuerier}destroy(){this.draco.destroy(this.decoder),this.draco.destroy(this.metadataQuerier)}parseSync(e,t={}){let n=new this.draco.DecoderBuffer;n.Init(new Int8Array(e),e.byteLength),this._disableAttributeTransforms(t);let o=this.decoder.GetEncodedGeometryType(n),s=o===this.draco.TRIANGULAR_MESH?new this.draco.Mesh:new this.draco.PointCloud;try{let i;switch(o){case this.draco.TRIANGULAR_MESH:i=this.decoder.DecodeBufferToMesh(n,s);break;case this.draco.POINT_CLOUD:i=this.decoder.DecodeBufferToPointCloud(n,s);break;default:throw new Error("DRACO: Unknown geometry type.")}if(!i.ok()||!s.ptr){let m=`DRACO decompression failed: ${i.error_msg()}`;throw new Error(m)}let a=this._getDracoLoaderData(s,o,t),c=this._getMeshData(s,a,t),f=wt(c.attributes),A=Xr(c.attributes,a,c.indices);return{loader:"draco",loaderData:a,header:{vertexCount:s.num_points(),boundingBox:f},...c,schema:A}}finally{this.draco.destroy(n),s&&this.draco.destroy(s)}}_getDracoLoaderData(e,t,n){let o=this._getTopLevelMetadata(e),s=this._getDracoAttributes(e,n);return{geometry_type:t,num_attributes:e.num_attributes(),num_points:e.num_points(),num_faces:e instanceof this.draco.Mesh?e.num_faces():0,metadata:o,attributes:s}}_getDracoAttributes(e,t){let n={};for(let o=0;o<e.num_attributes();o++){let s=this.decoder.GetAttribute(e,o),i=this._getAttributeMetadata(e,o);n[s.unique_id()]={unique_id:s.unique_id(),attribute_type:s.attribute_type(),data_type:s.data_type(),num_components:s.num_components(),byte_offset:s.byte_offset(),byte_stride:s.byte_stride(),normalized:s.normalized(),attribute_index:o,metadata:i};let a=this._getQuantizationTransform(s,t);a&&(n[s.unique_id()].quantization_transform=a);let c=this._getOctahedronTransform(s,t);c&&(n[s.unique_id()].octahedron_transform=c)}return n}_getMeshData(e,t,n){let o=this._getMeshAttributes(t,e,n);if(!o.POSITION)throw new Error("DRACO: No position attribute found.");if(e instanceof this.draco.Mesh)switch(n.topology){case"triangle-strip":return{topology:"triangle-strip",mode:4,attributes:o,indices:{value:this._getTriangleStripIndices(e),size:1}};case"triangle-list":default:return{topology:"triangle-list",mode:5,attributes:o,indices:{value:this._getTriangleListIndices(e),size:1}}}return{topology:"point-list",mode:0,attributes:o}}_getMeshAttributes(e,t,n){let o={};for(let s of Object.values(e.attributes)){let i=this._deduceAttributeName(s,n);s.name=i;let a=this._getAttributeValues(t,s);if(a){let{value:c,size:f}=a;o[i]={value:c,size:f,byteOffset:s.byte_offset,byteStride:s.byte_stride,normalized:s.normalized}}}return o}_getTriangleListIndices(e){let n=e.num_faces()*3,o=n*gi,s=this.draco._malloc(o);try{return this.decoder.GetTrianglesUInt32Array(e,o,s),new Uint32Array(this.draco.HEAPF32.buffer,s,n).slice()}finally{this.draco._free(s)}}_getTriangleStripIndices(e){let t=new this.draco.DracoInt32Array;try{return this.decoder.GetTriangleStripsFromMesh(e,t),xi(t)}finally{this.draco.destroy(t)}}_getAttributeValues(e,t){let n=hi[t.data_type];if(!n)return console.warn(`DRACO: Unsupported attribute type ${t.data_type}`),null;let o=t.num_components,i=e.num_points()*o,a=i*n.BYTES_PER_ELEMENT,c=Ci(this.draco,n),f,A=this.draco._malloc(a);try{let u=this.decoder.GetAttribute(e,t.attribute_index);this.decoder.GetAttributeDataArrayForAllPoints(e,u,c,a,A),f=new n(this.draco.HEAPF32.buffer,A,i).slice()}finally{this.draco._free(A)}return{value:f,size:o}}_deduceAttributeName(e,t){let n=e.unique_id;for(let[i,a]of Object.entries(t.extraAttributes||{}))if(a===n)return i;let o=e.attribute_type;for(let i in Yr)if(this.draco[i]===o)return Yr[i];let s=t.attributeNameEntry||"name";return e.metadata[s]?e.metadata[s].string:`CUSTOM_ATTRIBUTE_${n}`}_getTopLevelMetadata(e){let t=this.decoder.GetMetadata(e);return this._getDracoMetadata(t)}_getAttributeMetadata(e,t){let n=this.decoder.GetAttributeMetadata(e,t);return this._getDracoMetadata(n)}_getDracoMetadata(e){if(!e||!e.ptr)return{};let t={},n=this.metadataQuerier.NumEntries(e);for(let o=0;o<n;o++){let s=this.metadataQuerier.GetEntryName(e,o);t[s]=this._getDracoMetadataField(e,s)}return t}_getDracoMetadataField(e,t){let n=new this.draco.DracoInt32Array;try{this.metadataQuerier.GetIntEntryArray(e,t,n);let o=bi(n);return{int:this.metadataQuerier.GetIntEntry(e,t),string:this.metadataQuerier.GetStringEntry(e,t),double:this.metadataQuerier.GetDoubleEntry(e,t),intArray:o}}finally{this.draco.destroy(n)}}_disableAttributeTransforms(e){let{quantizedAttributes:t=[],octahedronAttributes:n=[]}=e,o=[...t,...n];for(let s of o)this.decoder.SkipAttributeTransform(this.draco[s])}_getQuantizationTransform(e,t){let{quantizedAttributes:n=[]}=t,o=e.attribute_type();if(n.map(i=>this.decoder[i]).includes(o)){let i=new this.draco.AttributeQuantizationTransform;try{if(i.InitFromAttribute(e))return{quantization_bits:i.quantization_bits(),range:i.range(),min_values:new Float32Array([1,2,3]).map(a=>i.min_value(a))}}finally{this.draco.destroy(i)}}return null}_getOctahedronTransform(e,t){let{octahedronAttributes:n=[]}=t,o=e.attribute_type();if(n.map(i=>this.decoder[i]).includes(o)){let i=new this.draco.AttributeQuantizationTransform;try{if(i.InitFromAttribute(e))return{quantization_bits:i.quantization_bits()}}finally{this.draco.destroy(i)}}return null}};function Ci(r,e){switch(e){case Float32Array:return r.DT_FLOAT32;case Int8Array:return r.DT_INT8;case Int16Array:return r.DT_INT16;case Int32Array:return r.DT_INT32;case Uint8Array:return r.DT_UINT8;case Uint16Array:return r.DT_UINT16;case Uint32Array:return r.DT_UINT32;default:return r.DT_INVALID}}function bi(r){let e=r.size(),t=new Int32Array(e);for(let n=0;n<e;n++)t[n]=r.GetValue(n);return t}function xi(r){let e=r.size(),t=new Int32Array(e);for(let n=0;n<e;n++)t[n]=r.GetValue(n);return t}var Vr={dataType:null,batchType:null,name:"Draco",id:"draco",module:"draco",version:Kr,worker:!0,extensions:["drc"],mimeTypes:["application/octet-stream"],binary:!0,tests:["DRACO"],options:{draco:{decoderType:typeof WebAssembly=="object"?"wasm":"js",extraAttributes:{},attributeNameEntry:void 0}}},Ot={...Vr,parse:Ei};async function Ei(r,e){let{draco:t}=await Pr(se(e),e?.draco?.decoderType||"wasm"),n=new Be(t);try{return n.parseSync(r,e?.draco)}finally{n.destroy()}}function Wr(r){let e={};for(let t in r){let n=r[t];if(t!=="indices"){let o=_t(n);e[t]=o}}return e}function _t(r){let{buffer:e,size:t,count:n}=yi(r);return{value:e,size:t,byteOffset:0,count:n,type:Fe(t),componentType:U(e)}}function yi(r){let e=r,t=1,n=0;return r&&r.value&&(e=r.value,t=r.size||1),e&&(ArrayBuffer.isView(e)||(e=Ti(e,Float32Array)),n=e.length/t),{buffer:e,size:t,count:n}}function Ti(r,e,t=!1){return r?Array.isArray(r)?new e(r):t&&!(r instanceof e)?new e(r):r:null}var N="KHR_draco_mesh_compression",Mi=N;function Fi(r,e,t){let n=new l(r);for(let o of Zr(n))n.getObjectExtension(o,N)}async function Ii(r,e,t){if(!e?.gltf?.decompressMeshes)return;let n=new l(r),o=[];for(let s of Zr(n))n.getObjectExtension(s,N)&&o.push(Di(n,s,e,t));await Promise.all(o),n.removeExtension(N)}function Gi(r,e={}){let t=new l(r);for(let n of t.json.meshes||[])Ri(n,e),t.addRequiredExtension(N)}async function Di(r,e,t,n){let o=r.getObjectExtension(e,N);if(!o)return;let s=r.getTypedArrayForBufferView(o.bufferView),i=ie(s.buffer,s.byteOffset),a={...t};delete a["3d-tiles"];let c=await re(i,Ot,a,n),f=Wr(c.attributes);for(let[A,u]of Object.entries(f))if(A in e.attributes){let m=e.attributes[A],B=r.getAccessor(m);B?.min&&B?.max&&(u.min=B.min,u.max=B.max)}e.attributes=f,c.indices&&(e.indices=_t(c.indices)),r.removeObjectExtension(e,N),wi(e)}function Ri(r,e,t=4,n,o){if(!n.DracoWriter)throw new Error("options.gltf.DracoWriter not provided");let s=n.DracoWriter.encodeSync({attributes:r}),i=o?.parseSync?.({attributes:r}),a=n._addFauxAttributes(i.attributes),c=n.addBufferView(s);return{primitives:[{attributes:a,mode:t,extensions:{[N]:{bufferView:c,attributes:a}}}]}}function wi(r){if(!r.attributes&&Object.keys(r.attributes).length>0)throw new Error("glTF: Empty primitive detected: Draco decompression failure?")}function*Zr(r){for(let e of r.json.meshes||[])for(let t of e.primitives)yield t}var jt={};y(jt,{decode:()=>Yi,name:()=>Qi});var mu=1/Math.PI*180,Bu=1/180*Math.PI,Li={EPSILON:1e-12,debug:!1,precision:4,printTypes:!1,printDegrees:!1,printRowMajor:!0,_cartographicRadians:!1};globalThis.mathgl=globalThis.mathgl||{config:{...Li}};var C=globalThis.mathgl.config;function qr(r,{precision:e=C.precision}={}){return r=Oi(r),`${parseFloat(r.toPrecision(e))}`}function $(r){return Array.isArray(r)||ArrayBuffer.isView(r)&&!(r instanceof DataView)}function Jt(r,e,t){let n=C.EPSILON;t&&(C.EPSILON=t);try{if(r===e)return!0;if($(r)&&$(e)){if(r.length!==e.length)return!1;for(let o=0;o<r.length;++o)if(!Jt(r[o],e[o]))return!1;return!0}return r&&r.equals?r.equals(e):e&&e.equals?e.equals(r):typeof r=="number"&&typeof e=="number"?Math.abs(r-e)<=C.EPSILON*Math.max(1,Math.abs(r),Math.abs(e)):!1}finally{C.EPSILON=n}}function Oi(r){return Math.round(r/C.EPSILON)*C.EPSILON}var ee=class extends Array{clone(){return new this.constructor().copy(this)}fromArray(e,t=0){for(let n=0;n<this.ELEMENTS;++n)this[n]=e[n+t];return this.check()}toArray(e=[],t=0){for(let n=0;n<this.ELEMENTS;++n)e[t+n]=this[n];return e}toObject(e){return e}from(e){return Array.isArray(e)?this.copy(e):this.fromObject(e)}to(e){return e===this?this:$(e)?this.toArray(e):this.toObject(e)}toTarget(e){return e?this.to(e):this}toFloat32Array(){return new Float32Array(this)}toString(){return this.formatString(C)}formatString(e){let t="";for(let n=0;n<this.ELEMENTS;++n)t+=(n>0?", ":"")+qr(this[n],e);return`${e.printTypes?this.constructor.name:""}[${t}]`}equals(e){if(!e||this.length!==e.length)return!1;for(let t=0;t<this.ELEMENTS;++t)if(!Jt(this[t],e[t]))return!1;return!0}exactEquals(e){if(!e||this.length!==e.length)return!1;for(let t=0;t<this.ELEMENTS;++t)if(this[t]!==e[t])return!1;return!0}negate(){for(let e=0;e<this.ELEMENTS;++e)this[e]=-this[e];return this.check()}lerp(e,t,n){if(n===void 0)return this.lerp(this,e,t);for(let o=0;o<this.ELEMENTS;++o){let s=e[o],i=typeof t=="number"?t:t[o];this[o]=s+n*(i-s)}return this.check()}min(e){for(let t=0;t<this.ELEMENTS;++t)this[t]=Math.min(e[t],this[t]);return this.check()}max(e){for(let t=0;t<this.ELEMENTS;++t)this[t]=Math.max(e[t],this[t]);return this.check()}clamp(e,t){for(let n=0;n<this.ELEMENTS;++n)this[n]=Math.min(Math.max(this[n],e[n]),t[n]);return this.check()}add(...e){for(let t of e)for(let n=0;n<this.ELEMENTS;++n)this[n]+=t[n];return this.check()}subtract(...e){for(let t of e)for(let n=0;n<this.ELEMENTS;++n)this[n]-=t[n];return this.check()}scale(e){if(typeof e=="number")for(let t=0;t<this.ELEMENTS;++t)this[t]*=e;else for(let t=0;t<this.ELEMENTS&&t<e.length;++t)this[t]*=e[t];return this.check()}multiplyByScalar(e){for(let t=0;t<this.ELEMENTS;++t)this[t]*=e;return this.check()}check(){if(C.debug&&!this.validate())throw new Error(`math.gl: ${this.constructor.name} some fields set to invalid numbers'`);return this}validate(){let e=this.length===this.ELEMENTS;for(let t=0;t<this.ELEMENTS;++t)e=e&&Number.isFinite(this[t]);return e}sub(e){return this.subtract(e)}setScalar(e){for(let t=0;t<this.ELEMENTS;++t)this[t]=e;return this.check()}addScalar(e){for(let t=0;t<this.ELEMENTS;++t)this[t]+=e;return this.check()}subScalar(e){return this.addScalar(-e)}multiplyScalar(e){for(let t=0;t<this.ELEMENTS;++t)this[t]*=e;return this.check()}divideScalar(e){return this.multiplyByScalar(1/e)}clampScalar(e,t){for(let n=0;n<this.ELEMENTS;++n)this[n]=Math.min(Math.max(this[n],e),t);return this.check()}get elements(){return this}};function _i(r,e){if(r.length!==e)return!1;for(let t=0;t<r.length;++t)if(!Number.isFinite(r[t]))return!1;return!0}function b(r){if(!Number.isFinite(r))throw new Error(`Invalid number ${JSON.stringify(r)}`);return r}function zr(r,e,t=""){if(C.debug&&!_i(r,e))throw new Error(`math.gl: ${t} some fields set to invalid numbers'`);return r}function Ut(r,e){if(!r)throw new Error(`math.gl assertion ${e}`)}var Ne=class extends ee{get x(){return this[0]}set x(e){this[0]=b(e)}get y(){return this[1]}set y(e){this[1]=b(e)}len(){return Math.sqrt(this.lengthSquared())}magnitude(){return this.len()}lengthSquared(){let e=0;for(let t=0;t<this.ELEMENTS;++t)e+=this[t]*this[t];return e}magnitudeSquared(){return this.lengthSquared()}distance(e){return Math.sqrt(this.distanceSquared(e))}distanceSquared(e){let t=0;for(let n=0;n<this.ELEMENTS;++n){let o=this[n]-e[n];t+=o*o}return b(t)}dot(e){let t=0;for(let n=0;n<this.ELEMENTS;++n)t+=this[n]*e[n];return b(t)}normalize(){let e=this.magnitude();if(e!==0)for(let t=0;t<this.ELEMENTS;++t)this[t]/=e;return this.check()}multiply(...e){for(let t of e)for(let n=0;n<this.ELEMENTS;++n)this[n]*=t[n];return this.check()}divide(...e){for(let t of e)for(let n=0;n<this.ELEMENTS;++n)this[n]/=t[n];return this.check()}lengthSq(){return this.lengthSquared()}distanceTo(e){return this.distance(e)}distanceToSquared(e){return this.distanceSquared(e)}getComponent(e){return Ut(e>=0&&e<this.ELEMENTS,"index is out of range"),b(this[e])}setComponent(e,t){return Ut(e>=0&&e<this.ELEMENTS,"index is out of range"),this[e]=t,this.check()}addVectors(e,t){return this.copy(e).add(t)}subVectors(e,t){return this.copy(e).subtract(t)}multiplyVectors(e,t){return this.copy(e).multiply(t)}addScaledVector(e,t){return this.add(new this.constructor(e).multiplyScalar(t))}};var te=typeof Float32Array<"u"?Float32Array:Array;var Tu=Math.PI/180;function Hi(){let r=new te(2);return te!=Float32Array&&(r[0]=0,r[1]=0),r}function en(r,e,t){let n=e[0],o=e[1];return r[0]=t[0]*n+t[3]*o+t[6],r[1]=t[1]*n+t[4]*o+t[7],r}var Mu=function(){let r=Hi();return function(e,t,n,o,s,i){let a,c;for(t||(t=2),n||(n=0),o?c=Math.min(o*t+n,e.length):c=e.length,a=n;a<c;a+=t)r[0]=e[a],r[1]=e[a+1],s(r,r,i),e[a]=r[0],e[a+1]=r[1];return e}}();function tn(r,e,t){let n=e[0],o=e[1],s=e[2],i=t[3]*n+t[7]*o+t[11]*s||1;return r[0]=(t[0]*n+t[4]*o+t[8]*s)/i,r[1]=(t[1]*n+t[5]*o+t[9]*s)/i,r[2]=(t[2]*n+t[6]*o+t[10]*s)/i,r}function rn(r,e,t){let n=e[0],o=e[1];return r[0]=t[0]*n+t[2]*o,r[1]=t[1]*n+t[3]*o,r[2]=e[2],r}function nn(r,e,t){let n=e[0],o=e[1],s=e[2];return r[0]=t[0]*n+t[3]*o+t[6]*s,r[1]=t[1]*n+t[4]*o+t[7]*s,r[2]=t[2]*n+t[5]*o+t[8]*s,r[3]=e[3],r}function Ni(){let r=new te(3);return te!=Float32Array&&(r[0]=0,r[1]=0,r[2]=0),r}function Pi(r,e){return r[0]*e[0]+r[1]*e[1]+r[2]*e[2]}function on(r,e,t){let n=e[0],o=e[1],s=e[2],i=t[0],a=t[1],c=t[2];return r[0]=o*c-s*a,r[1]=s*i-n*c,r[2]=n*a-o*i,r}function sn(r,e,t){let n=e[0],o=e[1],s=e[2],i=t[3]*n+t[7]*o+t[11]*s+t[15];return i=i||1,r[0]=(t[0]*n+t[4]*o+t[8]*s+t[12])/i,r[1]=(t[1]*n+t[5]*o+t[9]*s+t[13])/i,r[2]=(t[2]*n+t[6]*o+t[10]*s+t[14])/i,r}function Pe(r,e,t){let n=e[0],o=e[1],s=e[2];return r[0]=n*t[0]+o*t[3]+s*t[6],r[1]=n*t[1]+o*t[4]+s*t[7],r[2]=n*t[2]+o*t[5]+s*t[8],r}function an(r,e,t){let n=t[0],o=t[1],s=t[2],i=t[3],a=e[0],c=e[1],f=e[2],A=o*f-s*c,u=s*a-n*f,m=n*c-o*a,B=o*m-s*u,d=s*A-n*m,p=n*u-o*A,x=i*2;return A*=x,u*=x,m*=x,B*=2,d*=2,p*=2,r[0]=a+A+B,r[1]=c+u+d,r[2]=f+m+p,r}function cn(r,e,t,n){let o=[],s=[];return o[0]=e[0]-t[0],o[1]=e[1]-t[1],o[2]=e[2]-t[2],s[0]=o[0],s[1]=o[1]*Math.cos(n)-o[2]*Math.sin(n),s[2]=o[1]*Math.sin(n)+o[2]*Math.cos(n),r[0]=s[0]+t[0],r[1]=s[1]+t[1],r[2]=s[2]+t[2],r}function fn(r,e,t,n){let o=[],s=[];return o[0]=e[0]-t[0],o[1]=e[1]-t[1],o[2]=e[2]-t[2],s[0]=o[2]*Math.sin(n)+o[0]*Math.cos(n),s[1]=o[1],s[2]=o[2]*Math.cos(n)-o[0]*Math.sin(n),r[0]=s[0]+t[0],r[1]=s[1]+t[1],r[2]=s[2]+t[2],r}function An(r,e,t,n){let o=[],s=[];return o[0]=e[0]-t[0],o[1]=e[1]-t[1],o[2]=e[2]-t[2],s[0]=o[0]*Math.cos(n)-o[1]*Math.sin(n),s[1]=o[0]*Math.sin(n)+o[1]*Math.cos(n),s[2]=o[2],r[0]=s[0]+t[0],r[1]=s[1]+t[1],r[2]=s[2]+t[2],r}function un(r,e){let t=r[0],n=r[1],o=r[2],s=e[0],i=e[1],a=e[2],c=Math.sqrt((t*t+n*n+o*o)*(s*s+i*i+a*a)),f=c&&Pi(r,e)/c;return Math.acos(Math.min(Math.max(f,-1),1))}var Gu=function(){let r=Ni();return function(e,t,n,o,s,i){let a,c;for(t||(t=3),n||(n=0),o?c=Math.min(o*t+n,e.length):c=e.length,a=n;a<c;a+=t)r[0]=e[a],r[1]=e[a+1],r[2]=e[a+2],s(r,r,i),e[a]=r[0],e[a+1]=r[1],e[a+2]=r[2];return e}}();var Ht=[0,0,0],Ke,K=class extends Ne{static get ZERO(){return Ke||(Ke=new K(0,0,0),Object.freeze(Ke)),Ke}constructor(e=0,t=0,n=0){super(-0,-0,-0),arguments.length===1&&$(e)?this.copy(e):(C.debug&&(b(e),b(t),b(n)),this[0]=e,this[1]=t,this[2]=n)}set(e,t,n){return this[0]=e,this[1]=t,this[2]=n,this.check()}copy(e){return this[0]=e[0],this[1]=e[1],this[2]=e[2],this.check()}fromObject(e){return C.debug&&(b(e.x),b(e.y),b(e.z)),this[0]=e.x,this[1]=e.y,this[2]=e.z,this.check()}toObject(e){return e.x=this[0],e.y=this[1],e.z=this[2],e}get ELEMENTS(){return 3}get z(){return this[2]}set z(e){this[2]=b(e)}angle(e){return un(this,e)}cross(e){return on(this,this,e),this.check()}rotateX({radians:e,origin:t=Ht}){return cn(this,this,t,e),this.check()}rotateY({radians:e,origin:t=Ht}){return fn(this,this,t,e),this.check()}rotateZ({radians:e,origin:t=Ht}){return An(this,this,t,e),this.check()}transform(e){return this.transformAsPoint(e)}transformAsPoint(e){return sn(this,this,e),this.check()}transformAsVector(e){return tn(this,this,e),this.check()}transformByMatrix3(e){return Pe(this,this,e),this.check()}transformByMatrix2(e){return rn(this,this,e),this.check()}transformByQuaternion(e){return an(this,this,e),this.check()}};var je=class extends ee{toString(){let e="[";if(C.printRowMajor){e+="row-major:";for(let t=0;t<this.RANK;++t)for(let n=0;n<this.RANK;++n)e+=` ${this[n*this.RANK+t]}`}else{e+="column-major:";for(let t=0;t<this.ELEMENTS;++t)e+=` ${this[t]}`}return e+="]",e}getElementIndex(e,t){return t*this.RANK+e}getElement(e,t){return this[t*this.RANK+e]}setElement(e,t,n){return this[t*this.RANK+e]=b(n),this}getColumn(e,t=new Array(this.RANK).fill(-0)){let n=e*this.RANK;for(let o=0;o<this.RANK;++o)t[o]=this[n+o];return t}setColumn(e,t){let n=e*this.RANK;for(let o=0;o<this.RANK;++o)this[n+o]=t[o];return this}};function mn(r,e){if(r===e){let t=e[1],n=e[2],o=e[5];r[1]=e[3],r[2]=e[6],r[3]=t,r[5]=e[7],r[6]=n,r[7]=o}else r[0]=e[0],r[1]=e[3],r[2]=e[6],r[3]=e[1],r[4]=e[4],r[5]=e[7],r[6]=e[2],r[7]=e[5],r[8]=e[8];return r}function Bn(r,e){let t=e[0],n=e[1],o=e[2],s=e[3],i=e[4],a=e[5],c=e[6],f=e[7],A=e[8],u=A*i-a*f,m=-A*s+a*c,B=f*s-i*c,d=t*u+n*m+o*B;return d?(d=1/d,r[0]=u*d,r[1]=(-A*n+o*f)*d,r[2]=(a*n-o*i)*d,r[3]=m*d,r[4]=(A*t-o*c)*d,r[5]=(-a*t+o*s)*d,r[6]=B*d,r[7]=(-f*t+n*c)*d,r[8]=(i*t-n*s)*d,r):null}function ln(r){let e=r[0],t=r[1],n=r[2],o=r[3],s=r[4],i=r[5],a=r[6],c=r[7],f=r[8];return e*(f*s-i*c)+t*(-f*o+i*a)+n*(c*o-s*a)}function Nt(r,e,t){let n=e[0],o=e[1],s=e[2],i=e[3],a=e[4],c=e[5],f=e[6],A=e[7],u=e[8],m=t[0],B=t[1],d=t[2],p=t[3],x=t[4],I=t[5],S=t[6],v=t[7],Ve=t[8];return r[0]=m*n+B*i+d*f,r[1]=m*o+B*a+d*A,r[2]=m*s+B*c+d*u,r[3]=p*n+x*i+I*f,r[4]=p*o+x*a+I*A,r[5]=p*s+x*c+I*u,r[6]=S*n+v*i+Ve*f,r[7]=S*o+v*a+Ve*A,r[8]=S*s+v*c+Ve*u,r}function dn(r,e,t){let n=e[0],o=e[1],s=e[2],i=e[3],a=e[4],c=e[5],f=e[6],A=e[7],u=e[8],m=t[0],B=t[1];return r[0]=n,r[1]=o,r[2]=s,r[3]=i,r[4]=a,r[5]=c,r[6]=m*n+B*i+f,r[7]=m*o+B*a+A,r[8]=m*s+B*c+u,r}function pn(r,e,t){let n=e[0],o=e[1],s=e[2],i=e[3],a=e[4],c=e[5],f=e[6],A=e[7],u=e[8],m=Math.sin(t),B=Math.cos(t);return r[0]=B*n+m*i,r[1]=B*o+m*a,r[2]=B*s+m*c,r[3]=B*i-m*n,r[4]=B*a-m*o,r[5]=B*c-m*s,r[6]=f,r[7]=A,r[8]=u,r}function Pt(r,e,t){let n=t[0],o=t[1];return r[0]=n*e[0],r[1]=n*e[1],r[2]=n*e[2],r[3]=o*e[3],r[4]=o*e[4],r[5]=o*e[5],r[6]=e[6],r[7]=e[7],r[8]=e[8],r}function hn(r,e){let t=e[0],n=e[1],o=e[2],s=e[3],i=t+t,a=n+n,c=o+o,f=t*i,A=n*i,u=n*a,m=o*i,B=o*a,d=o*c,p=s*i,x=s*a,I=s*c;return r[0]=1-u-d,r[3]=A-I,r[6]=m+x,r[1]=A+I,r[4]=1-f-d,r[7]=B-p,r[2]=m-x,r[5]=B+p,r[8]=1-f-u,r}var Kt;(function(r){r[r.COL0ROW0=0]="COL0ROW0",r[r.COL0ROW1=1]="COL0ROW1",r[r.COL0ROW2=2]="COL0ROW2",r[r.COL1ROW0=3]="COL1ROW0",r[r.COL1ROW1=4]="COL1ROW1",r[r.COL1ROW2=5]="COL1ROW2",r[r.COL2ROW0=6]="COL2ROW0",r[r.COL2ROW1=7]="COL2ROW1",r[r.COL2ROW2=8]="COL2ROW2"})(Kt||(Kt={}));var Ki=Object.freeze([1,0,0,0,1,0,0,0,1]),_=class extends je{static get IDENTITY(){return vi()}static get ZERO(){return ji()}get ELEMENTS(){return 9}get RANK(){return 3}get INDICES(){return Kt}constructor(e,...t){super(-0,-0,-0,-0,-0,-0,-0,-0,-0),arguments.length===1&&Array.isArray(e)?this.copy(e):t.length>0?this.copy([e,...t]):this.identity()}copy(e){return this[0]=e[0],this[1]=e[1],this[2]=e[2],this[3]=e[3],this[4]=e[4],this[5]=e[5],this[6]=e[6],this[7]=e[7],this[8]=e[8],this.check()}identity(){return this.copy(Ki)}fromObject(e){return this.check()}fromQuaternion(e){return hn(this,e),this.check()}set(e,t,n,o,s,i,a,c,f){return this[0]=e,this[1]=t,this[2]=n,this[3]=o,this[4]=s,this[5]=i,this[6]=a,this[7]=c,this[8]=f,this.check()}setRowMajor(e,t,n,o,s,i,a,c,f){return this[0]=e,this[1]=o,this[2]=a,this[3]=t,this[4]=s,this[5]=c,this[6]=n,this[7]=i,this[8]=f,this.check()}determinant(){return ln(this)}transpose(){return mn(this,this),this.check()}invert(){return Bn(this,this),this.check()}multiplyLeft(e){return Nt(this,e,this),this.check()}multiplyRight(e){return Nt(this,this,e),this.check()}rotate(e){return pn(this,this,e),this.check()}scale(e){return Array.isArray(e)?Pt(this,this,e):Pt(this,this,[e,e]),this.check()}translate(e){return dn(this,this,e),this.check()}transform(e,t){let n;switch(e.length){case 2:n=en(t||[-0,-0],e,this);break;case 3:n=Pe(t||[-0,-0,-0],e,this);break;case 4:n=nn(t||[-0,-0,-0,-0],e,this);break;default:throw new Error("Illegal vector")}return zr(n,e.length),n}transformVector(e,t){return this.transform(e,t)}transformVector2(e,t){return this.transform(e,t)}transformVector3(e,t){return this.transform(e,t)}},ve,Qe=null;function ji(){return ve||(ve=new _([0,0,0,0,0,0,0,0,0]),Object.freeze(ve)),ve}function vi(){return Qe||(Qe=new _,Object.freeze(Qe)),Qe}var ke="KHR_texture_transform",Qi=ke,Xe=new K,Xi=new _,ki=new _;async function Yi(r,e){if(!new l(r).hasExtension(ke)||!e.gltf?.loadBuffers)return;let o=r.json.materials||[];for(let s=0;s<o.length;s++)Vi(s,r)}function Vi(r,e){let t=e.json.materials?.[r],n=[t?.pbrMetallicRoughness?.baseColorTexture,t?.emissiveTexture,t?.normalTexture,t?.occlusionTexture,t?.pbrMetallicRoughness?.metallicRoughnessTexture],o=[];for(let s of n)s&&s?.extensions?.[ke]&&Wi(e,r,s,o)}function Wi(r,e,t,n){let o=Zi(t,n);if(!o)return;let s=r.json.meshes||[];for(let i of s)for(let a of i.primitives){let c=a.material;Number.isFinite(c)&&e===c&&qi(r,a,o)}}function Zi(r,e){let t=r.extensions?.[ke],{texCoord:n=0}=r,{texCoord:o=n}=t;if(!(e.findIndex(([i,a])=>i===n&&a===o)!==-1)){let i=ea(t);return n!==o&&(r.texCoord=o),e.push([n,o]),{originalTexCoord:n,texCoord:o,matrix:i}}return null}function qi(r,e,t){let{originalTexCoord:n,texCoord:o,matrix:s}=t,i=e.attributes[`TEXCOORD_${n}`];if(Number.isFinite(i)){let a=r.json.accessors?.[i];if(a&&a.bufferView!==void 0){let c=r.json.bufferViews?.[a.bufferView];if(c){let{arrayBuffer:f,byteOffset:A}=r.buffers[c.buffer],u=(A||0)+(a.byteOffset||0)+(c.byteOffset||0),{ArrayType:m,length:B}=Q(a,c),d=Me[a.componentType],p=Te[a.type],x=c.byteStride||d*p,I=new Float32Array(B);for(let S=0;S<a.count;S++){let v=new m(f,u+S*x,2);Xe.set(v[0],v[1],1),Xe.transformByMatrix3(s),I.set([Xe[0],Xe[1]],S*p)}n===o?zi(a,r,I,a.bufferView):$i(o,a,e,r,I)}}}}function zi(r,e,t,n){r.componentType=5126,r.byteOffset=0;let i=(e.json.accessors||[]).reduce((f,A)=>A.bufferView===n?f+1:f,0)>1;e.buffers.push({arrayBuffer:J(t.buffer),byteOffset:0,byteLength:t.buffer.byteLength});let a=e.buffers.length-1;if(e.json.bufferViews=e.json.bufferViews||[],i){e.json.bufferViews.push({buffer:a,byteLength:t.buffer.byteLength,byteOffset:0}),r.bufferView=e.json.bufferViews.length-1;return}let c=e.json.bufferViews[n];c&&(c.buffer=a,c.byteOffset=0,c.byteLength=t.buffer.byteLength,c.byteStride!==void 0&&delete c.byteStride)}function $i(r,e,t,n,o){n.buffers.push({arrayBuffer:J(o.buffer),byteOffset:0,byteLength:o.buffer.byteLength}),n.json.bufferViews=n.json.bufferViews||[];let s=n.json.bufferViews;s.push({buffer:n.buffers.length-1,byteLength:o.buffer.byteLength,byteOffset:0});let i=n.json.accessors;i&&(i.push({bufferView:s?.length-1,byteOffset:0,componentType:5126,count:e.count,type:"VEC2"}),t.attributes[`TEXCOORD_${r}`]=i.length-1)}function ea(r){let{offset:e=[0,0],rotation:t=0,scale:n=[1,1]}=r,o=new _().set(1,0,0,0,1,0,e[0],e[1],1),s=Xi.set(Math.cos(t),Math.sin(t),0,-Math.sin(t),Math.cos(t),0,0,0,1),i=ki.set(n[0],0,0,0,n[1],0,0,0,1);return o.multiplyRight(s).multiplyRight(i)}var vt={};y(vt,{decode:()=>ra,encode:()=>na,name:()=>ta});var j="KHR_lights_punctual",ta=j;async function ra(r){let e=new l(r),{json:t}=e,n=e.getExtension(j);n&&(e.json.lights=n.lights,e.removeExtension(j));for(let o of t.nodes||[]){let s=e.getObjectExtension(o,j);s&&(o.light=s.light),e.removeObjectExtension(o,j)}}async function na(r){let e=new l(r),{json:t}=e;if(t.lights){let n=e.addExtension(j);h(!n.lights),n.lights=t.lights,delete t.lights}if(e.json.lights){for(let n of e.json.lights){let o=n.node;e.addObjectExtension(o,j,n)}delete e.json.lights}}var Qt={};y(Qt,{decode:()=>sa,encode:()=>ia,name:()=>oa});var le="KHR_materials_unlit",oa=le;async function sa(r){let e=new l(r),{json:t}=e;for(let n of t.materials||[])n.extensions&&n.extensions.KHR_materials_unlit&&(n.unlit=!0),e.removeObjectExtension(n,le);e.removeExtension(le)}function ia(r){let e=new l(r),{json:t}=e;if(e.materials)for(let n of t.materials||[])n.unlit&&(delete n.unlit,e.addObjectExtension(n,le,{}),e.addExtension(le))}var Xt={};y(Xt,{decode:()=>ca,encode:()=>fa,name:()=>aa});var de="KHR_techniques_webgl",aa=de;async function ca(r){let e=new l(r),{json:t}=e,n=e.getExtension(de);if(n){let o=Aa(n,e);for(let s of t.materials||[]){let i=e.getObjectExtension(s,de);i&&(s.technique=Object.assign({},i,o[i.technique]),s.technique.values=ua(s.technique,e)),e.removeObjectExtension(s,de)}e.removeExtension(de)}}async function fa(r,e){}function Aa(r,e){let{programs:t=[],shaders:n=[],techniques:o=[]}=r,s=new TextDecoder;return n.forEach(i=>{if(Number.isFinite(i.bufferView))i.code=s.decode(e.getTypedArrayForBufferView(i.bufferView));else throw new Error("KHR_techniques_webgl: no shader code")}),t.forEach(i=>{i.fragmentShader=n[i.fragmentShader],i.vertexShader=n[i.vertexShader]}),o.forEach(i=>{i.program=t[i.program]}),o}function ua(r,e){let t=Object.assign({},r.values);return Object.keys(r.uniforms||{}).forEach(n=>{r.uniforms[n].value&&!(n in t)&&(t[n]=r.uniforms[n].value)}),Object.keys(t).forEach(n=>{typeof t[n]=="object"&&t[n].index!==void 0&&(t[n].texture=e.getTexture(t[n].index))}),t}var gn=[Le,we,Ft,It,Gt,St,vt,Qt,Xt,jt,dt],ma=[Le,we];function Cn(r,e={},t){let n=gn.filter(o=>En(o.name,e));for(let o of n)o.preprocess?.(r,e,t)}async function bn(r,e={},t){let n=gn.filter(o=>En(o.name,e));for(let o of n)await o.decode?.(r,e,t)}function xn(r,e={}){for(let t of ma)r=t.encode?.(r,e)??r;return r}function En(r,e){let t=e?.gltf?.excludeExtensions||{};return!(r in t&&!t[r])}var kt="KHR_binary_glTF";function yn(r){let e=new l(r),{json:t}=e;for(let n of t.images||[]){let o=e.getObjectExtension(n,kt);o&&Object.assign(n,o),e.removeObjectExtension(n,kt)}t.buffers&&t.buffers[0]&&delete t.buffers[0].uri,e.removeExtension(kt)}var Tn={accessors:"accessor",animations:"animation",buffers:"buffer",bufferViews:"bufferView",images:"image",materials:"material",meshes:"mesh",nodes:"node",samplers:"sampler",scenes:"scene",skins:"skin",textures:"texture"},la={accessor:"accessors",animations:"animation",buffer:"buffers",bufferView:"bufferViews",image:"images",material:"materials",mesh:"meshes",node:"nodes",sampler:"samplers",scene:"scenes",skin:"skins",texture:"textures"},Yt=class{idToIndexMap={animations:{},accessors:{},buffers:{},bufferViews:{},images:{},materials:{},meshes:{},nodes:{},samplers:{},scenes:{},skins:{},textures:{}};json;normalize(e,t){this.json=e.json;let n=e.json;switch(n.asset&&n.asset.version){case"2.0":return;case void 0:case"1.0":break;default:console.warn(`glTF: Unknown version ${n.asset.version}`);return}if(!t.normalize)throw new Error("glTF v1 is not supported.");console.warn("Converting glTF v1 to glTF v2 format. This is experimental and may fail."),this._addAsset(n),this._convertTopLevelObjectsToArrays(n),yn(e),this._convertObjectIdsToArrayIndices(n),this._updateObjects(n),this._updateMaterial(n)}_addAsset(e){e.asset=e.asset||{},e.asset.version="2.0",e.asset.generator=e.asset.generator||"Normalized to glTF 2.0 by loaders.gl"}_convertTopLevelObjectsToArrays(e){for(let t in Tn)this._convertTopLevelObjectToArray(e,t)}_convertTopLevelObjectToArray(e,t){let n=e[t];if(!(!n||Array.isArray(n))){e[t]=[];for(let o in n){let s=n[o];s.id=s.id||o;let i=e[t].length;e[t].push(s),this.idToIndexMap[t][o]=i}}}_convertObjectIdsToArrayIndices(e){for(let t in Tn)this._convertIdsToIndices(e,t);"scene"in e&&(e.scene=this._convertIdToIndex(e.scene,"scene"));for(let t of e.textures)this._convertTextureIds(t);for(let t of e.meshes)this._convertMeshIds(t);for(let t of e.nodes)this._convertNodeIds(t);for(let t of e.scenes)this._convertSceneIds(t)}_convertTextureIds(e){e.source&&(e.source=this._convertIdToIndex(e.source,"image"))}_convertMeshIds(e){for(let t of e.primitives){let{attributes:n,indices:o,material:s}=t;for(let i in n)n[i]=this._convertIdToIndex(n[i],"accessor");o&&(t.indices=this._convertIdToIndex(o,"accessor")),s&&(t.material=this._convertIdToIndex(s,"material"))}}_convertNodeIds(e){e.children&&(e.children=e.children.map(t=>this._convertIdToIndex(t,"node"))),e.meshes&&(e.meshes=e.meshes.map(t=>this._convertIdToIndex(t,"mesh")))}_convertSceneIds(e){e.nodes&&(e.nodes=e.nodes.map(t=>this._convertIdToIndex(t,"node")))}_convertIdsToIndices(e,t){e[t]||(console.warn(`gltf v1: json doesn't contain attribute ${t}`),e[t]=[]);for(let n of e[t])for(let o in n){let s=n[o],i=this._convertIdToIndex(s,o);n[o]=i}}_convertIdToIndex(e,t){let n=la[t];if(n in this.idToIndexMap){let o=this.idToIndexMap[n][e];if(!Number.isFinite(o))throw new Error(`gltf v1: failed to resolve ${t} with id ${e}`);return o}return e}_updateObjects(e){for(let t of this.json.buffers)delete t.type}_updateMaterial(e){for(let t of e.materials){t.pbrMetallicRoughness={baseColorFactor:[1,1,1,1],metallicFactor:1,roughnessFactor:1};let n=t.values?.tex||t.values?.texture2d_0||t.values?.diffuseTex,o=e.textures.findIndex(s=>s.id===n);o!==-1&&(t.pbrMetallicRoughness.baseColorTexture={index:o})}}};function Mn(r,e={}){return new Yt().normalize(r,e)}async function Fn(r,e,t=0,n,o){return da(r,e,t,n),Mn(r,{normalize:n?.gltf?.normalize}),Cn(r,n,o),n?.gltf?.loadBuffers&&r.json.buffers&&await pa(r,n,o),n?.gltf?.loadImages&&await ha(r,n,o),await bn(r,n,o),r}function da(r,e,t,n){if(n.core?.baseUrl&&(r.baseUri=n.core?.baseUrl),e instanceof ArrayBuffer&&!Ur(e,t,n.glb)&&(e=new TextDecoder().decode(e)),typeof e=="string")r.json=ze(e);else if(e instanceof ArrayBuffer){let i={};t=Je(i,e,t,n.glb),h(i.type==="glTF",`Invalid GLB magic string ${i.type}`),r._glb=i,r.json=i.json}else h(!1,"GLTF: must be ArrayBuffer or string");let o=r.json.buffers||[];if(r.buffers=new Array(o.length).fill(null),r._glb&&r._glb.header.hasBinChunk){let{binChunks:i}=r._glb;r.buffers[0]={arrayBuffer:i[0].arrayBuffer,byteOffset:i[0].byteOffset,byteLength:i[0].byteLength}}let s=r.json.images||[];r.images=new Array(s.length).fill({})}async function pa(r,e,t){let n=r.json.buffers||[];for(let o=0;o<n.length;++o){let s=n[o];if(s.uri){let{fetch:i}=t;h(i);let a=Tt(s.uri,e,t),f=await(await t?.fetch?.(a))?.arrayBuffer?.();r.buffers[o]={arrayBuffer:f,byteOffset:0,byteLength:f.byteLength},delete s.uri}else r.buffers[o]===null&&(r.buffers[o]={arrayBuffer:new ArrayBuffer(s.byteLength),byteOffset:0,byteLength:s.byteLength})}}async function ha(r,e,t){let n=ga(r),o=r.json.images||[],s=[];for(let i of n)s.push(Ca(r,o[i],i,e,t));return await Promise.all(s)}function ga(r){let e=new Set,t=r.json.textures||[];for(let n of t)n.source!==void 0&&e.add(n.source);return Array.from(e).sort()}async function Ca(r,e,t,n,o){let s;if(e.uri&&!e.hasOwnProperty("bufferView")){let f=Tt(e.uri,n,o),{fetch:A}=o;s=await(await A(f)).arrayBuffer(),e.bufferView={data:s}}if(Number.isFinite(e.bufferView)){let f=gr(r.json,r.buffers,e.bufferView);s=ie(f.buffer,f.byteOffset,f.byteLength)}h(s,"glTF image has no data");let i=n,a={...i,core:{...i?.core,mimeType:e.mimeType}},c=await re(s,[st,bt],a,o);c&&c[0]&&(c={compressed:!0,mipmaps:!1,width:c[0].width,height:c[0].height,data:c[0]}),r.images=r.images||[],r.images[t]=c}var Ye={dataType:null,batchType:null,name:"glTF",id:"gltf",module:"gltf",version:H,extensions:["gltf","glb"],mimeTypes:["model/gltf+json","model/gltf-binary"],text:!0,binary:!0,tests:["glTF"],parse:ba,options:{gltf:{normalize:!0,loadBuffers:!0,loadImages:!0,decompressMeshes:!0}}};async function ba(r,e={},t){let n={...Ye.options,...e};n.gltf={...Ye.options.gltf,...n.gltf};let o=e?.glb?.byteOffset||0;return await Fn({},r,o,n,t)}var xa=1179937895,Ea=1313821514,ya=5130562,L=!0;function pe(r,e,t=0,n={}){let{magic:o=xa,version:s=2,json:i={},binary:a}=r,c=t;e&&(e.setUint32(t+0,o,L),e.setUint32(t+4,s,L),e.setUint32(t+8,0,L));let f=t+8;t+=12;let A=t;e&&(e.setUint32(t+0,0,L),e.setUint32(t+4,Ea,L)),t+=8;let u=JSON.stringify(i);if(t=et(e,t,u,4),e){let m=t-A-8;e.setUint32(A+0,m,L)}if(a){let m=t;if(e&&(e.setUint32(t+0,0,L),e.setUint32(t+4,ya,L)),t+=8,t=xe(e,t,a,4),e){let B=t-m-8;e.setUint32(m+0,B,L)}}if(e){let m=t-c;e.setUint32(f,m,L)}return t}function Vt(r,e,t,n){return Ta(r),pe(r,e,t,n)}function Ta(r){if(r.buffers&&r.buffers.length>1)throw new Error("encodeGLTF: multiple buffers not yet implemented")}var Gn={dataType:null,batchType:null,name:"glTF",id:"gltf",module:"gltf",version:H,extensions:["glb"],mimeTypes:["model/gltf-binary"],binary:!0,options:{gltf:{}},encode:async(r,e={})=>In(r,e),encodeSync:In};function In(r,e={}){let{byteOffset:t=0}=e,n=xn(r),o=Vt(n,null,t,e),s=new ArrayBuffer(o),i=new DataView(s);return Vt(n,i,t,e),s}var Dn={dataType:null,batchType:null,name:"GLB",id:"glb",module:"gltf",version:H,extensions:["glb"],mimeTypes:["model/gltf-binary"],binary:!0,parse:Ma,parseSync:Rn,options:{glb:{strict:!1}}};async function Ma(r,e){return Rn(r,e)}function Rn(r,e){let t={};return Je(t,r,e?.glb?.byteOffset||0,e?.glb),t}var Ln={name:"GLB",id:"glb",module:"gltf",version:H,extensions:["glb"],mimeTypes:["model/gltf-binary"],binary:!0,options:{glb:{}},encode:async(r,e={})=>wn(r,e),encodeSync:wn};function wn(r,e){let{byteOffset:t=0}=e??{},n=pe(r,null,t,e),o=new ArrayBuffer(n),s=new DataView(o);return pe(r,s,t,e),o}var Fa={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},Ia={5120:1,5121:1,5122:2,5123:2,5125:4,5126:4},F={TEXTURE_MAG_FILTER:10240,TEXTURE_MIN_FILTER:10241,TEXTURE_WRAP_S:10242,TEXTURE_WRAP_T:10243,REPEAT:10497,LINEAR:9729,NEAREST_MIPMAP_LINEAR:9986},Ga={magFilter:F.TEXTURE_MAG_FILTER,minFilter:F.TEXTURE_MIN_FILTER,wrapS:F.TEXTURE_WRAP_S,wrapT:F.TEXTURE_WRAP_T},Da={[F.TEXTURE_MAG_FILTER]:F.LINEAR,[F.TEXTURE_MIN_FILTER]:F.NEAREST_MIPMAP_LINEAR,[F.TEXTURE_WRAP_S]:F.REPEAT,[F.TEXTURE_WRAP_T]:F.REPEAT};function Ra(){return{id:"default-sampler",parameters:Da}}function wa(r){return Ia[r]}function La(r){return Fa[r]}var Wt=class{baseUri="";jsonUnprocessed;json;buffers=[];images=[];postProcess(e,t={}){let{json:n,buffers:o=[],images:s=[]}=e,{baseUri:i=""}=e;return h(n),this.baseUri=i,this.buffers=o,this.images=s,this.jsonUnprocessed=n,this.json=this._resolveTree(e.json,t),this.json}_resolveTree(e,t={}){let n={...e};return this.json=n,e.bufferViews&&(n.bufferViews=e.bufferViews.map((o,s)=>this._resolveBufferView(o,s))),e.images&&(n.images=e.images.map((o,s)=>this._resolveImage(o,s))),e.samplers&&(n.samplers=e.samplers.map((o,s)=>this._resolveSampler(o,s))),e.textures&&(n.textures=e.textures.map((o,s)=>this._resolveTexture(o,s))),e.accessors&&(n.accessors=e.accessors.map((o,s)=>this._resolveAccessor(o,s))),e.materials&&(n.materials=e.materials.map((o,s)=>this._resolveMaterial(o,s))),e.meshes&&(n.meshes=e.meshes.map((o,s)=>this._resolveMesh(o,s))),e.nodes&&(n.nodes=e.nodes.map((o,s)=>this._resolveNode(o,s)),n.nodes=n.nodes.map((o,s)=>this._resolveNodeChildren(o))),e.skins&&(n.skins=e.skins.map((o,s)=>this._resolveSkin(o,s))),e.scenes&&(n.scenes=e.scenes.map((o,s)=>this._resolveScene(o,s))),typeof this.json.scene=="number"&&n.scenes&&(n.scene=n.scenes[this.json.scene]),n}getScene(e){return this._get(this.json.scenes,e)}getNode(e){return this._get(this.json.nodes,e)}getSkin(e){return this._get(this.json.skins,e)}getMesh(e){return this._get(this.json.meshes,e)}getMaterial(e){return this._get(this.json.materials,e)}getAccessor(e){return this._get(this.json.accessors,e)}getCamera(e){return this._get(this.json.cameras,e)}getTexture(e){return this._get(this.json.textures,e)}getSampler(e){return this._get(this.json.samplers,e)}getImage(e){return this._get(this.json.images,e)}getBufferView(e){return this._get(this.json.bufferViews,e)}getBuffer(e){return this._get(this.json.buffers,e)}_get(e,t){if(typeof t=="object")return t;let n=e&&e[t];return n||console.warn(`glTF file error: Could not find ${e}[${t}]`),n}_resolveScene(e,t){return{...e,id:e.id||`scene-${t}`,nodes:(e.nodes||[]).map(n=>this.getNode(n))}}_resolveNode(e,t){let n={...e,id:e?.id||`node-${t}`};return e.mesh!==void 0&&(n.mesh=this.getMesh(e.mesh)),e.camera!==void 0&&(n.camera=this.getCamera(e.camera)),e.skin!==void 0&&(n.skin=this.getSkin(e.skin)),e.meshes!==void 0&&e.meshes.length&&(n.mesh=e.meshes.reduce((o,s)=>{let i=this.getMesh(s);return o.id=i.id,o.primitives=o.primitives.concat(i.primitives),o},{primitives:[]})),n}_resolveNodeChildren(e){return e.children&&(e.children=e.children.map(t=>this.getNode(t))),e}_resolveSkin(e,t){let n=typeof e.inverseBindMatrices=="number"?this.getAccessor(e.inverseBindMatrices):void 0;return{...e,id:e.id||`skin-${t}`,inverseBindMatrices:n}}_resolveMesh(e,t){let n={...e,id:e.id||`mesh-${t}`,primitives:[]};return e.primitives&&(n.primitives=e.primitives.map(o=>{let s={...o,attributes:{},indices:void 0,material:void 0},i=o.attributes;for(let a in i)s.attributes[a]=this.getAccessor(i[a]);return o.indices!==void 0&&(s.indices=this.getAccessor(o.indices)),o.material!==void 0&&(s.material=this.getMaterial(o.material)),s})),n}_resolveMaterial(e,t){let n={...e,id:e.id||`material-${t}`};if(n.normalTexture&&(n.normalTexture={...n.normalTexture},n.normalTexture.texture=this.getTexture(n.normalTexture.index)),n.occlusionTexture&&(n.occlusionTexture={...n.occlusionTexture},n.occlusionTexture.texture=this.getTexture(n.occlusionTexture.index)),n.emissiveTexture&&(n.emissiveTexture={...n.emissiveTexture},n.emissiveTexture.texture=this.getTexture(n.emissiveTexture.index)),n.emissiveFactor||(n.emissiveFactor=n.emissiveTexture?[1,1,1]:[0,0,0]),n.pbrMetallicRoughness){n.pbrMetallicRoughness={...n.pbrMetallicRoughness};let o=n.pbrMetallicRoughness;o.baseColorTexture&&(o.baseColorTexture={...o.baseColorTexture},o.baseColorTexture.texture=this.getTexture(o.baseColorTexture.index)),o.metallicRoughnessTexture&&(o.metallicRoughnessTexture={...o.metallicRoughnessTexture},o.metallicRoughnessTexture.texture=this.getTexture(o.metallicRoughnessTexture.index))}return n}_resolveAccessor(e,t){let n=wa(e.componentType),o=La(e.type),s=n*o,i={...e,id:e.id||`accessor-${t}`,bytesPerComponent:n,components:o,bytesPerElement:s,value:void 0,bufferView:void 0,sparse:void 0};if(e.bufferView!==void 0&&(i.bufferView=this.getBufferView(e.bufferView)),i.bufferView){let a=i.bufferView.buffer,{ArrayType:c,byteLength:f}=Q(i,i.bufferView),A=(i.bufferView.byteOffset||0)+(i.byteOffset||0)+a.byteOffset,u=ae(a.arrayBuffer,A,f);i.bufferView.byteStride&&(u=this._getValueFromInterleavedBuffer(a,A,i.bufferView.byteStride,i.bytesPerElement,i.count)),i.value=new c(u)}return i}_getValueFromInterleavedBuffer(e,t,n,o,s){let i=new Uint8Array(s*o);for(let a=0;a<s;a++){let c=t+a*n;i.set(new Uint8Array(e.arrayBuffer.slice(c,c+o)),a*o)}return i.buffer}_resolveTexture(e,t){return{...e,id:e.id||`texture-${t}`,sampler:typeof e.sampler=="number"?this.getSampler(e.sampler):Ra(),source:typeof e.source=="number"?this.getImage(e.source):void 0}}_resolveSampler(e,t){let n={id:e.id||`sampler-${t}`,...e,parameters:{}};for(let o in n){let s=this._enumSamplerParameter(o);s!==void 0&&(n.parameters[s]=n[o])}return n}_enumSamplerParameter(e){return Ga[e]}_resolveImage(e,t){let n={...e,id:e.id||`image-${t}`,image:null,bufferView:e.bufferView!==void 0?this.getBufferView(e.bufferView):void 0},o=this.images[t];return o&&(n.image=o),n}_resolveBufferView(e,t){let n=e.buffer,o=this.buffers[n].arrayBuffer,s=this.buffers[n].byteOffset||0;return e.byteOffset&&(s+=e.byteOffset),{id:`bufferView-${t}`,...e,buffer:this.buffers[n],data:new Uint8Array(o,s,e.byteLength)}}_resolveCamera(e,t){let n={...e,id:e.id||`camera-${t}`};return n.perspective,n.orthographic,n}};function On(r,e){return new Wt().postProcess(r,e)}return Kn(he);})();
|
|
8
8
|
return __exports__;
|
|
9
9
|
});
|