@maptalks/3dtiles 0.18.2 → 0.19.1

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.
@@ -1,11 +1,11 @@
1
1
  /*!
2
- * @maptalks/3dtiles v0.18.2
2
+ * @maptalks/3dtiles v0.19.1
3
3
  * LICENSE : UNLICENSED
4
4
  * (c) 2016-2022 maptalks.org
5
5
  */
6
- import*as t from"maptalks";import*as e from"@maptalks/gl";import{reshader as r,mat4 as n,vec3 as i,mat3 as s,vec4 as o,quat as a,createREGL as c}from"@maptalks/gl";import{intersectsBox as l,intersectsSphere as f,intersectsOrientedBox as u}from"frustum-intersects";import{GLTFLoader as h,Ajax as _}from"@maptalks/gltf-loader";import{vec3 as d,mat4 as E,mat3 as T}from"gl-matrix";const m='function(t){var e=1e-6,r="undefined"!=typeof Float32Array?Float32Array:Array;function n(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[4],t[4]=e[5],t[5]=e[6],t[6]=e[8],t[7]=e[9],t[8]=e[10],t}function i(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}function s(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function o(t,e,r){var n=e[0],i=e[1],s=e[2],o=e[3],a=e[4],c=e[5],f=e[6],u=e[7],l=e[8],E=e[9],_=e[10],A=e[11],h=e[12],T=e[13],R=e[14],y=e[15],I=r[0],N=r[1],U=r[2],S=r[3];return t[0]=I*n+N*a+U*l+S*h,t[1]=I*i+N*c+U*E+S*T,t[2]=I*s+N*f+U*_+S*R,t[3]=I*o+N*u+U*A+S*y,I=r[4],N=r[5],U=r[6],S=r[7],t[4]=I*n+N*a+U*l+S*h,t[5]=I*i+N*c+U*E+S*T,t[6]=I*s+N*f+U*_+S*R,t[7]=I*o+N*u+U*A+S*y,I=r[8],N=r[9],U=r[10],S=r[11],t[8]=I*n+N*a+U*l+S*h,t[9]=I*i+N*c+U*E+S*T,t[10]=I*s+N*f+U*_+S*R,t[11]=I*o+N*u+U*A+S*y,I=r[12],N=r[13],U=r[14],S=r[15],t[12]=I*n+N*a+U*l+S*h,t[13]=I*i+N*c+U*E+S*T,t[14]=I*s+N*f+U*_+S*R,t[15]=I*o+N*u+U*A+S*y,t}function a(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]&&t[4]===e[4]&&t[5]===e[5]&&t[6]===e[6]&&t[7]===e[7]&&t[8]===e[8]&&t[9]===e[9]&&t[10]===e[10]&&t[11]===e[11]&&t[12]===e[12]&&t[13]===e[13]&&t[14]===e[14]&&t[15]===e[15]}function c(){var t=new r(3);return r!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0),t}function f(t){var e=t[0],r=t[1],n=t[2];return Math.sqrt(e*e+r*r+n*n)}function u(t,e,n){var i=new r(3);return i[0]=t,i[1]=e,i[2]=n,i}function l(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function E(t,e,r,n){return t[0]=e,t[1]=r,t[2]=n,t}function _(t,e,r){return t[0]=e[0]+r[0],t[1]=e[1]+r[1],t[2]=e[2]+r[2],t}function A(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t}function h(t,e,r){return t[0]=e[0]*r[0],t[1]=e[1]*r[1],t[2]=e[2]*r[2],t}function T(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t}function R(t,e){var r=e[0]-t[0],n=e[1]-t[1],i=e[2]-t[2];return Math.sqrt(r*r+n*n+i*i)}function y(t,e){var r=e[0],n=e[1],i=e[2],s=r*r+n*n+i*i;return s>0&&(s=1/Math.sqrt(s),t[0]=e[0]*s,t[1]=e[1]*s,t[2]=e[2]*s),t}function I(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function N(t,e,r){var n=e[0],i=e[1],s=e[2],o=r[0],a=r[1],c=r[2];return t[0]=i*c-s*a,t[1]=s*o-n*c,t[2]=n*a-i*o,t}function U(t,e,r){var n=e[0],i=e[1],s=e[2],o=r[3]*n+r[7]*i+r[11]*s+r[15];return o=o||1,t[0]=(r[0]*n+r[4]*i+r[8]*s+r[12])/o,t[1]=(r[1]*n+r[5]*i+r[9]*s+r[13])/o,t[2]=(r[2]*n+r[6]*i+r[10]*s+r[14])/o,t}var S=A,d=h,m=f;function O(t,e,r,n,i){return t[0]=e,t[1]=r,t[2]=n,t[3]=i,t}function M(){var t=new r(4);return r!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0),t[3]=1,t}function F(t,r,n,i){var s=r[0],o=r[1],a=r[2],c=r[3],f=n[0],u=n[1],l=n[2],E=n[3],_=void 0,A=void 0,h=void 0,T=void 0,R=void 0;return(A=s*f+o*u+a*l+c*E)<0&&(A=-A,f=-f,u=-u,l=-l,E=-E),1-A>e?(_=Math.acos(A),h=Math.sin(_),T=Math.sin((1-i)*_)/h,R=Math.sin(i*_)/h):(T=1-i,R=i),t[0]=T*s+R*f,t[1]=T*o+R*u,t[2]=T*a+R*l,t[3]=T*c+R*E,t}c(),function(){var t,e=(t=new r(4),r!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0,t[3]=0),t)}();var C,b=function(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t};c(),u(1,0,0),u(0,1,0),M(),M(),C=new r(9),r!=Float32Array&&(C[1]=0,C[2]=0,C[3]=0,C[5]=0,C[6]=0,C[7]=0),C[0]=1,C[4]=1,C[8]=1;\n/*!\n * @maptalks/gltf-loader v0.27.1\n * LICENSE : UNLICENSED\n * (c) 2016-2022 maptalks.org\n */\nlet p=0;function w(t){return null==t}function D(t){return!w(t)}function B(t){for(let e=1;e<arguments.length;e++){const r=arguments[e];for(const e in r)t[e]=r[e]}return t}function L(t){switch(t){case 5120:return Int8Array;case 5121:return Uint8Array;case 5122:return Int16Array;case 5123:return Uint16Array;case 5124:return Int32Array;case 5125:return Uint32Array;case 5126:return Float32Array}throw new Error("unsupported bufferView\'s component type: "+t)}function P(t){return 0===t.indexOf("data:")&&t.indexOf("base64,")>0}function g(t){const e=function(t){return"undefined"!=typeof self?self.atob(t):window.atob(t)}(t.substring(t.indexOf(",")+1)),r=e.length,n=new Uint8Array(r);for(let t=0;t<r;t++)n[t]=e.charCodeAt(t);return n.buffer}const G=[],v=[],X=[],H=[0,0,0],x=function(t){return t[0]=0,t[1]=0,t[2]=0,t[3]=1,t}([]),V=[1,1,1];function k(t,e,r,n,i,s,o){const a=L(o);if((0===i||i===n*a.BYTES_PER_ELEMENT)&&s%a.BYTES_PER_ELEMENT==0){const i=new a(e,s,r*n);return t.set(i),t}0===i&&(i=n*a.BYTES_PER_ELEMENT);const c=new Uint8Array(n*a.BYTES_PER_ELEMENT);for(let o=0;o<r;o++){let r=null;const f=new Uint8Array(e,i*o+s,n*a.BYTES_PER_ELEMENT);c.set(f),r=new a(c.buffer,0,n);for(let e=0;e<n;e++)t[o*n+e]=r[e]}return t}const Z="undefined"!=typeof TextDecoder?new TextDecoder("utf-8"):null;function Y(t,e,r){const n=new Uint8Array(t,e,r);return Z.decode(n)}const K={get:function(t,e={}){e||(e={});const r=new AbortController,n=r.signal,i=B({},e);i.signal=n,i.method||(i.method="GET");const s=fetch(t,i).then((t=>{const r=this.t(t,e.responseType);return r.message?r:r.then((r=>"arraybuffer"===e.responseType?{data:r,cacheControl:t.headers.get("Cache-Control"),expires:t.headers.get("Expires"),contentType:t.headers.get("Content-Type")}:r)).catch((t=>{if(!t.code||t.code!==DOMException.ABORT_ERR)throw t}))})).catch((t=>{if(!t.code||t.code!==DOMException.ABORT_ERR)throw t}));return s.xhr=r,s},t:(t,e)=>200!==t.status?{status:t.status,statusText:t.statusText,message:`incorrect http request with status code(${t.status}): ${t.statusText}`}:"arraybuffer"===e?t.arrayBuffer():"json"===e?t.json():t.text(),getArrayBuffer:(t,e={})=>(e||(e={}),e.responseType="arraybuffer",K.get(t,e)),getJSON:function(t,e={}){return e&&e.jsonp?K.jsonp(t):((e=e||{}).responseType="json",K.get(t,e))},jsonp:function(t){const e="_maptalks_jsonp_"+p++;t.match(/\\?/)?t+="&callback="+e:t+="?callback="+e;let r=document.createElement("script");return r.type="text/javascript",r.src=t,new Promise((t=>{window[e]=function(n){document.getElementsByTagName("head")[0].removeChild(r),r=null,delete window[e],t(n)},document.getElementsByTagName("head")[0].appendChild(r)}))}};class z{constructor(t,e,r){this.i=t,this.decoders=e,this.o=r,this.images={},this.u={}}requestImageFromBufferURI(t,e,r){if(this.buffers[t.id]){const n=this.buffers[t.id],i=this.l(e,n);return this.getImageByBuffer(i,r)}if(this.u[t.id])return this.u[t.id].then((()=>{const n=this.buffers[t.id],i=this.l(e,n);return this.getImageByBuffer(i,r)}));if(P(t.uri)){const n=this.buffers[t.id]=g(t.uri),i=this.l(e,n);return this.getImageByBuffer(i,r)}return this.u[t.id]=K.getArrayBuffer(t.uri,null).then((n=>{const i=this.buffers[t.id]=n.data,s=this.l(e,i);return this.getImageByBuffer(s,r)}))}getImageByBuffer(t,e){if(this.images[e.id])return Promise.resolve(this.images[e.id]);const r=this.decoders;if(r[e.mimeType])return r[e.mimeType](t,{supportedFormats:this.o});if("image/crn"===e.mimeType||"image/ktx2"===e.mimeType||"image/cttf"===e.mimeType)return console.warn("missing transcoder for "+e.mimeType,", visit https://maptalks.com/docs/transcoders for details"),Promise.resolve(null);{const r=new Blob([t],{type:e.mimeType}),n=URL.createObjectURL(r);return this._(e.id,n)}}requestExternalImage(t){if(this.images[t.id])return Promise.resolve(this.images[t.id]);const e=0===t.uri.indexOf("data:image/")?t.uri:this.rootPath+"/"+t.uri;return this.u[t.id]?this.u[t.id].then((()=>this.images[t.id])):this.u[t.id]=this._(t.id,e)}_(t,e){return new Promise(((r,n)=>{this.i(e,((i,s)=>{i?n(i):(URL.revokeObjectURL(e),this.images[t]=s,r(this.images[t]))}))}))}}const W=["SCALAR",1,"VEC2",2,"VEC3",3,"VEC4",4,"MAT2",4,"MAT3",9,"MAT4",16];class j{constructor(t,e,r){this.rootPath=t,this.gltf=e,this.A=!1,this.glbBuffer=r,this.buffers={},this.requests={},this.accessors={},this.h()}T(t,e){const r=this.gltf,n=r.accessors[e];if(void 0===n.bufferView)return this.accessors[n.id]=this.I(t,e,null,0),Promise.resolve(this.accessors[n.id]);if(n&&this.accessors[n.id])return Promise.resolve(this.accessors[n.id]);const i=r.bufferViews[n.bufferView];return this.N(i).then((r=>{const{buffer:i,byteOffset:s}=r;return this.accessors[n.id]=this.I(t,e,i,s)}))}N(t){const e=this.gltf.buffers[t.buffer];if(this.buffers[e.id]){const t=this.buffers[e.id];return Promise.resolve({buffer:t,byteOffset:0})}if(this.requests[e.id])return this.requests[e.id].then((()=>{const t=this.buffers[e.id];return Promise.resolve({buffer:t,byteOffset:0})}));if("binary_glTF"!==t.buffer&&"KHR_binary_glTF"!==t.buffer&&e.uri){if(P(e.uri)){const t=this.buffers[e.id]=g(e.uri);return Promise.resolve({buffer:t,byteOffset:0})}let t;const r=e.uri.indexOf("blob:")>=0;return t=e.uri.indexOf("://")>0||r?e.uri:this.rootPath+"/"+e.uri,this.requests[e.id]=K.getArrayBuffer(t,null).then((n=>(r&&URL.revokeObjectURL(t),{buffer:this.buffers[e.id]=n.data,byteOffset:0})))}return Promise.resolve({buffer:this.glbBuffer.buffer,byteOffset:this.glbBuffer.byteOffset})}I(t,e,r,n=0){const i=this.gltf,s=i.accessors[e],o=void 0!==s.bufferView?i.bufferViews[s.bufferView]:{},a=(o.byteOffset||0)+n,c=this.U(s.type),f=L(s.componentType),u=o.byteStride||0,l={array:void 0,name:t,accessorName:e,byteLength:s.count*c*f.BYTES_PER_ELEMENT,componentType:s.componentType,count:s.count,type:s.type,itemSize:c};if(s.min&&(l.min=s.min),s.max&&(l.max=s.max),r)if(this.A)l.byteStride=u,l.byteOffset=a+(s.byteOffset||0),!u||u===c*f.BYTES_PER_ELEMENT||"indices"===t||"input"===t||"output"===t||t.indexOf("morph")>=0?(l.array=this.S(r,s.count,c,a+(s.byteOffset||0),f),l.array.buffer.byteLength===l.byteLength&&(l.byteOffset=0)):l.array=new Uint8Array(r,a,o.byteLength);else if(s.interleaved){l.byteStride=0,l.byteOffset=0;const t=new f(s.count*c);l.array=k(t,r,s.count,c,u,a+(s.byteOffset||0),s.componentType)}else l.byteStride=0,l.array=this.S(r,s.count,c,a+(s.byteOffset||0),f),l.byteOffset=l.array.byteOffset;else{l.array=new f(s.count);const t=l.min||l.max;t&&(l.array[0]=t[0],l.array[1]=t[1],l.array[2]=t[2])}return l}h(){const t=this.gltf.accessors;if(Array.isArray(t))for(let e=0;e<t.length;e++)for(let r=0;r<t.length;r++)e!==r&&t[e].bufferView===t[r].bufferView&&(t[e].interleaved=t[r].interleaved=!0);else for(const e in t)for(const r in t)e!==r&&t[e].bufferView===t[r].bufferView&&(t[e].interleaved=t[r].interleaved=!0)}S(t,e,r,n,i){return n%i.BYTES_PER_ELEMENT!=0&&(t=t.slice(n,n+e*r*i.BYTES_PER_ELEMENT),n=0),new i(t,n,r*e)}U(t){const e=W.indexOf(t);return W[e+1]}requestKHRTechniquesWebgl(t){const{shaders:e}=t,r=e.map((t=>{if(void 0!==t.bufferView){const e=this.gltf.bufferViews[t.bufferView],{byteLength:r}=e;return this.N(e).then((n=>{const{buffer:i,byteOffset:s}=n,o=Y(i,s+(e.byteOffset||0),r);return t.content=o,t}))}if(t.uri){if(P(t.uri)){const e=g(t.uri),r=Y(e,0,e.byteLength);return t.content=r,Promise.resolve(t)}{const e=this.rootPath+"/"+t.uri;return K.get(e).then((e=>(t.content=e,t)))}}return Promise.resolve(t)}));return Promise.all(r).then((()=>t))}}class q extends z{constructor(t,e,r,n,i,s){super(n,i,s),this.rootPath=t,this.gltf=e,this.requests={},this.buffers={},this.glbBuffer=r,this.accessor=new j(t,e,r)}iterate(t,e){const r=this.gltf[e];if(!r)return;let n=0;for(const e in r)t(e,r[e],n++)}createNode(t){const e={};if(D(t.name)&&(e.name=t.name),D(t.children)&&(e.children=t.children),D(t.jointName)&&(e.jointName=t.jointName),D(t.matrix)&&(e.matrix=t.matrix),D(t.rotation)&&(e.rotation=t.rotation),D(t.scale)&&(e.scale=t.scale),D(t.translation)&&(e.translation=t.translation),D(t.extras)&&(e.extras=t.extras),D(t.meshes)&&(e.mesh=t.meshes[0]),e.translation||e.rotation||e.scale){const t=function(t,e){if(e.matrix)return e.matrix;if(e.translation||e.scale||e.rotation){const r=function(t,e){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=e[0],t[13]=e[1],t[14]=e[2],t[15]=1,t}(G,e.translation||H),n=function(t,e){var r=e[0],n=e[1],i=e[2],s=e[3],o=r+r,a=n+n,c=i+i,f=r*o,u=n*o,l=n*a,E=i*o,_=i*a,A=i*c,h=s*o,T=s*a,R=s*c;return t[0]=1-l-A,t[1]=u+R,t[2]=E-T,t[3]=0,t[4]=u-R,t[5]=1-f-A,t[6]=_+h,t[7]=0,t[8]=E+T,t[9]=_-h,t[10]=1-f-l,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}(v,e.rotation||x),i=function(t,e){return t[0]=e[0],t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e[1],t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e[2],t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}(X,e.scale||V);return o(i,n,i),o(t,r,i)}return s(t)}([],e);delete e.translation,delete e.rotation,delete e.scale,e.matrix=t}return e}m(t){const e={};for(const r in t){const n=t[r];let i,s;n.instanceTechnique&&n.instanceTechnique.values?(i=n.instanceTechnique,s=i.values.diffuse):(i=n,s=i.values.tex||i.values.diffuseTex||i.values.diffuse);const o={baseColorTexture:{index:s}};n.name&&(o.name=n.name),n.extensions&&(o.extensions=n.extensions),n.extras&&(o.extras=n.extras),e[r]=o}return e}O(t){if(t.bufferView||t.extensions&&(t.extensions.KHR_binary_glTF||t.extensions.binary_glTF)){const e=t.bufferView?t:t.extensions.KHR_binary_glTF||t.extensions.binary_glTF;t.extensions&&(t.mimeType=e.mimeType,t.width=e.width,t.height=e.height);const r=this.gltf.bufferViews[e.bufferView],n=(r.byteOffset||0)+this.glbBuffer.byteOffset,i=r.byteLength,s=this.buffers[e.bufferView]=new Uint8Array(this.glbBuffer.buffer,n,i);return this.getImageByBuffer(s,t)}return this.requestExternalImage(t)}M(t){const e=this.gltf.textures[t];if(!e)return null;const r=this.gltf.images[e.source];return this.O(r).then((t=>{const n=this.gltf.samplers[e.sampler];return{image:{array:t.data,width:t.width,height:t.height,index:e.source,mimeType:r.mimeType,name:r.name,extras:r.extras},sampler:n}}))}getBaseColorTexture(t){const e=this.gltf.materials[t];let r,n;if(e.instanceTechnique&&e.instanceTechnique.values?(r=e.instanceTechnique,n=r.values.diffuse):(r=e,n=r.values.tex||r.values.diffuseTex||r.values.diffuse),void 0===n||void 0===this.gltf.textures)return null;const i=this.gltf.textures[n];if(!i)return null;const s=this.gltf.samplers[i.sampler];return{format:i.format||6408,internalFormat:i.internalFormat||6408,type:i.type||5121,sampler:s,source:this.gltf.images[i.source]}}getMaterial(){return null}getAnimations(){return null}}class $ extends z{constructor(t,e,r,n,i,s){super(n,i,s),this.rootPath=t,this.gltf=e,this.glbBuffer=r,this.buffers={},this.requests={},this.accessor=new j(t,e,r)}iterate(t,e){const r=this.gltf[e];if(r)for(let e=0;e<r.length;e++)t(e,r[e],e)}createNode(t){const e={};return B(e,t),!D(t.weights)&&this.gltf.meshes&&D(e.mesh)?e.weights=this.gltf.meshes[e.mesh].weights:t.weights&&(e.weights=t.weights),e}M(t){const e=this.gltf.textures[t];if(!e)return null;const r=this.gltf.images[e.source];return this.O(r).then((t=>{if(!t)return null;const n={image:{array:t.data,mipmap:t.mipmap,width:t.width,height:t.height,index:e.source,mimeType:r.mimeType,name:r.name,extensions:r.extensions,extras:r.extras}};B(n,e);const i=D(e.sampler)?this.gltf.samplers[e.sampler]:void 0;return i&&(n.sampler=i),t.format&&(n.format=t.format),n}))}O(t){if(!D(t.bufferView))return this.requestExternalImage(t);{const e=this.gltf.bufferViews[t.bufferView],r=this.gltf.buffers[e.buffer];if(r.uri)return this.requestImageFromBufferURI(r,e,t);if(this.glbBuffer)return this.F(e,t)}return null}F(t,e){const r=this.l(t,this.glbBuffer.buffer,this.glbBuffer.byteOffset);return this.getImageByBuffer(r,e)}l(t,e,r){r=r||0;const n=t.byteOffset+r,i=t.byteLength;return new Uint8Array(e,n,i)}C(t,e){const r=new Array(t.byteLength);for(let e=0;e<t.byteLength;e++)r[e]=String.fromCharCode(t[e]);return r.join(""),"data:"+(e=e||"image/png")+";base64,"+function(t){return"undefined"!=typeof self?self.btoa(t):window.btoa(t)}(unescape(encodeURIComponent(r)))}getAnimations(t){const e=[];return t.forEach((t=>{e.push(this.getSamplers(t.samplers))})),Promise.all(e).then((e=>{for(let r=0;r<e.length;r++)t[r].samplers=e[r];return t}))}getSamplers(t){const e=[];for(let r=0;r<t.length;r++)(D(t[r].input)||D(t[r].output))&&(e.push(this.accessor.T("input",t[r].input)),e.push(this.accessor.T("output",t[r].output)));return Promise.all(e).then((e=>{for(let r=0;r<e.length/2;r++)t[r].input=e[2*r],t[r].output=e[2*r+1],t[r].interpolation||(t[r].interpolation="LINEAR");return t}))}}const J="undefined"!=typeof TextDecoder?new TextDecoder("utf-8"):null;class Q{static read(t,e=0,r=0){r||(r=t.byteLength);const n=new DataView(t,e,r),i=n.getUint32(4,!0);if(1===i)return Q.readV1(n,e);if(2===i)return Q.readV2(t,e);throw new Error("Unsupported glb version : "+i)}static readV1(t,e){const r=t.getUint32(8,!0),n=t.getUint32(12,!0);if(r!==t.byteLength)throw new Error("Length in GLB header is inconsistent with glb\'s byte length.");const i=tt(t.buffer,20+e,n);return{json:JSON.parse(i),glbBuffer:{byteOffset:20+e+n,buffer:t.buffer,byteLength:r}}}static readV2(t,e){let r,n,i;const s=new DataView(t,e+12);let o=0;for(;o<s.byteLength;){const a=s.getUint32(o,!0);o+=4;const c=s.getUint32(o,!0);if(o+=4,1313821514===c)r=tt(t,e+12+o,a);else if(5130562===c){i=e+12+o,n=a;break}o+=a}return{json:JSON.parse(r),glbBuffer:{byteOffset:i,buffer:t,byteLength:n}}}}function tt(t,e,r){if(J){const n=new Uint8Array(t,e,r);return J.decode(n)}return function(t){const e=t.length;let r="";for(let n=0;n<e;){let i=t[n++];if(128&i){let r=et[i>>3&7];if(!(64&i)||!r||n+r>e)return null;for(i&=63>>r;r>0;r-=1){const e=t[n++];if(128!=(192&e))return null;i=i<<6|63&e}}r+=String.fromCharCode(i)}return r}(new Uint8Array(t,e,r))}const et=[1,1,1,1,2,2,3,0],rt=[0,0,0],nt=[0,0,0,1],it=[1,1,1],st={TRANSLATION:[0,0,0],ROTATION:[0,0,0,1],SCALE:[1,1,1]},ot={PREVIOUS:null,NEXT:null,PREINDEX:null,NEXTINDEX:null,INTERPOLATION:null},at={p(t,e,r,n,i,s,o,a){const c=D(t)?e.animations:[e.animations[0]],f={};for(let e=0;e<c.length;e++){const u=c[e],E=u.name||e;if(D(t)&&E!==t)continue;const _=u.channelsMap[r];if(_)for(let t=0;t<_.length;t++){const e=_[t];"translation"===e.target.path?(this.D(i,u.samplers[e.sampler],n,1),f.translation=l(rt,i)):"rotation"===e.target.path?(this.B(s,u.samplers[e.sampler],n,1),f.rotation=b(nt,s)):"scale"===e.target.path?(this.D(o,u.samplers[e.sampler],n,1),f.scale=l(it,o)):"weights"===e.target.path&&a&&(this.D(a,u.samplers[e.sampler],n,a.length),f.weights=a)}}return f},D(t,e,r,n){switch(e.interpolation){case"LINEAR":{const i=this.L(ot,e,r,1*n);i&&(t=function(t,e,r,n){for(let i=0;i<t.length;i++)t[i]=e[i]+n*(r[i]-e[i]);return t}(t,i.PREVIOUS,i.NEXT,i.INTERPOLATION));break}case"STEP":{const i=this.L(ot,e,r,1*n);i&&(t=function(t,e){for(let r=0;r<t.length;r++)t[r]=e[r];return t}(t,...i.PREVIOUS));break}case"CUBICSPLINE":{const i=this.L(ot,e,r,3*n);i&&(t=this.P(t,i,e.input.array,3*n));break}}return t},B(t,e,r){switch(e.interpolation){case"LINEAR":{const n=this.L(ot,e,r,1);n&&F(t,n.PREVIOUS,n.NEXT,n.INTERPOLATION);break}case"STEP":{const n=this.L(ot,e,r,1);n&&(t=O(t,...n.PREVIOUS));break}case"CUBICSPLINE":{const n=this.L(ot,e,r,3);if(n){for(let t=0;t<n.PREVIOUS.length;t++)n.PREVIOUS[t]=Math.acos(n.PREVIOUS[t]),n.NEXT[t]=Math.acos(n.NEXT[t]);t=this.P(t,n,e.input.array,3);for(let e=0;e<t.length;e++)t[e]=Math.cos(t[e])}break}}return t},G(t,e){const r=t.length;let n,i,s,o=0,a=r-1,c=Math.floor((o+a)/2);for(;o<=r-1&&a>=0;){if(o===a)return null;if(t[c]<=e&&e<=t[c+1]){const r=t[c];return n=c,i=c+1,s=(e-r)/(t[c+1]-r),{preIndx:n,nextIndex:i,interpolation:s}}e<t[c]?(a=c,c=Math.floor((o+a)/2)):t[c+1]<e&&(o=c,c=Math.floor((o+a)/2))}return null},L(t,e,r,n){const i=e.input.array,s=e.output.array,o=e.output.itemSize;(r<i[0]||r>i[i.length-1])&&(r=Math.max(i[0],Math.min(i[i.length-1],r))),r===i[i.length-1]&&(r=i[0]);const a=this.G(i,r);if(!a||!a.nextIndex)return null;const{preIndx:c,nextIndex:f,interpolation:u}=a;t.PREINDEX=c,t.NEXTINDEX=f,t.INTERPOLATION=u;const l=o*n;return t.PREVIOUS=s.subarray(t.PREINDEX*l,(t.PREINDEX+1)*l),t.NEXT=s.subarray(t.NEXTINDEX*l,(t.NEXTINDEX+1)*l),t},P(t,e,r,n){const i=e.INTERPOLATION,s=r[e.PREINDEX],o=r[e.NEXTINDEX];for(let r=0;r<3;r++){const a=e.PREVIOUS[n+r],c=(o-s)*e.PREVIOUS[2*n+r],f=e.NEXT[3+r],u=(o-s)*e.NEXT[r],l=(2*Math.pow(i,3)-3*Math.pow(i,2)+1)*a+(Math.pow(i,3)-2*Math.pow(i,2)+i)*c+(2*-Math.pow(i,3)+3*Math.pow(i,2))*f+(Math.pow(i,3)-Math.pow(i,2))*u;t[r]=l}return t},getAnimationClip(t,e,r,n){const i=t.nodes[e]&&t.nodes[e].weights;return E(rt,...st.TRANSLATION),O(nt,...st.ROTATION),E(it,...st.SCALE),this.p(n,t,e,r,rt,nt,it,i)},getTimeSpan(t){if(!t.animations)return null;if(t.timeSpan)return t.timeSpan;const e=t.animations;return t.timeSpan={},e.forEach(((e,r)=>{let n=-1/0,i=1/0;const s=e.channels;for(let t=0;t<s.length;t++){const r=s[t],o=e.samplers[r.sampler].input.array;o[o.length-1]>n&&(n=o[o.length-1]),o[0]<i&&(i=o[0])}const o=e.name||r;t.timeSpan[o]={max:n,min:i}})),t.timeSpan},getTimeSpanByName(t,e){const r=this.getTimeSpan(t);return r?D(e)?r[e]:r[Object.keys(r)[0]]:null}};let ct=!1;if("undefined"!=typeof OffscreenCanvas){let t;try{t=new OffscreenCanvas(2,2).getContext("2d")}catch(_e){}t&&"undefined"!=typeof createImageBitmap&&(ct=!0)}const ft="undefined"==typeof document?null:document.createElement("canvas");class ut{constructor(t,e,r){if(this.options=r||{},this.options.decoders||(this.options.decoders={}),e.buffer instanceof ArrayBuffer){const{json:r,glbBuffer:n}=Q.read(e.buffer,e.byteOffset,e.byteLength);this.v(t,r,n)}else this.v(t,e);this.X=new j(this.rootPath,this.gltf,this.glbBuffer),this.H()}H(){const t=this.gltf.extensionsRequired;if(t){if(t.indexOf("KHR_draco_mesh_compression")>=0&&!this.options.decoders.draco)throw new Error("KHR_draco_mesh_compression is required but @maptalks/transcoders.draco is not loaded");if(t.indexOf("KHR_texture_basisu")>=0&&!this.options.decoders.ktx2)throw new Error("KHR_texture_basisu is required but @maptalks/transcoders.ktx2 is not loaded")}}V(){const t=this.gltf.extensions;return t&&t.KHR_techniques_webgl?this.X.requestKHRTechniquesWebgl(t.KHR_techniques_webgl).then((e=>(t.KHR_techniques_webgl=e,t))):Promise.resolve(t)}load(t){t=t||{};const e=this.k(t),r=this.Z(),n=this.Y(),i=this.V();return Promise.all([e,r,n,i]).then((t=>(t[0].animations=t[1],t[0].textures=t[2],t[0].extensions=t[3],t[0].transferables=this.transferables||[],this.createChannelsMap(t[0]),t[0])))}createChannelsMap(t){const e=t.animations;if(e)for(let t=0;t<e.length;t++){const r=e[t];r.channelsMap={};for(let t=0;t<r.channels.length;t++){const e=r.channels[t];r.channelsMap[e.target.node]||(r.channelsMap[e.target.node]=[]),r.channelsMap[e.target.node].push(e)}}}getExternalResources(){const t=[];if(this.gltf){const{buffers:e,images:r}=this.gltf;for(let r=0;r<e.length;r++)e[r].uri&&e[r].uri.indexOf("data:application/octet-stream;base64")<0&&t.push({type:"buffer",uri:e[r].uri});for(let e=0;e<r.length;e++)r[e].uri&&r[e].uri.indexOf("data:image/")<0&&t.push({type:"image",uri:r[e].uri})}return t}static getAnimationClip(t,e,r,n){return at.getAnimationClip(t,e,r,n)}static getAnimationTimeSpan(t,e){return at.getTimeSpanByName(t,e)}static getTypedArrayCtor(t){return L(t)}static readInterleavedArray(t,e,r,n,i,s,o){return k(t,e,r,n,i,s,o)}v(t,e,r){this.gltf=e,this.glbBuffer=r,this.version=e.asset?+e.asset.version:1,this.rootPath=t,this.buffers={},this.requests={},this.options.requestImage=ct?At.bind(this):this.options.requestImage||lt,this.options.transferable&&(this.transferables=[]),2===this.version?(this.adapter=new $(t,e,r,this.options.requestImage,this.options.decoders||{},this.options.supportedFormats||{}),this.adapter.iterate(((t,e,r)=>{e.id="buffer_"+r}),"buffers"),this.adapter.iterate(((t,e,r)=>{e.id="image_"+r}),"images"),this.adapter.iterate(((t,e,r)=>{e.id="accessor_"+r}),"accessors")):(this.adapter=new q(t,e,r,this.options.requestImage,this.options.decoders||{},this.options.supportedFormats||{}),this.adapter.iterate(((t,e,r)=>{e.id="accessor_"+r}),"accessors"),this.adapter.iterate(((t,e,r)=>{e.id="image_"+r}),"images"))}K(t,e){if(t.children&&t.children.length>0){if(!("number"==typeof(r=t.children[0])&&isFinite(r)||function(t){return!w(t)&&("string"==typeof t||null!==t.constructor&&t.constructor===String)}(t.children[0])))return t;const n=t.children.map((t=>{const r=e[t];return r.nodeIndex=t,this.K(r,e)}));t.children=n}var r;return t}k(t){return this.W(t).then((t=>{const e=this.scenes=[];let r;for(const e in t)t[e]=this.K(t[e],t),t[e].nodeIndex=Number(e)?Number(e):e;this.adapter.iterate(((n,i,s)=>{const o={};i.name&&(o.name=i.name),i.nodes&&(o.nodes=i.nodes.map((e=>t[e]))),this.gltf.scene===n&&(r=s),e.push(o)}),"scenes");const n={asset:this.gltf.asset,scene:r,scenes:e,nodes:t,meshes:this.meshes,materials:this.gltf.materials,skins:this.skins};if(this.gltf.extensions&&(n.extensions=this.gltf.extensions),1===this.version){const t=this.adapter.m(this.gltf.materials);n.materials=t}return n}))}W(t){return this.j(t).then((()=>{const t=this.nodes={};return this.adapter.iterate(((e,r)=>{const n=this.adapter.createNode(r,this.meshes,this.skins);t[e]=n}),"nodes"),t}))}q(){this.skins=[];const t=[];return this.adapter.iterate(((e,r,n)=>{t.push(this.$(r).then((t=>{t.index=n,this.skins.push(t)})))}),"skins"),t}$(t){const e=t.inverseBindMatrices;return this.adapter.accessor.T("inverseBindMatrices",e).then((e=>(t.inverseBindMatrices=e,e&&e.buffer&&this.transferables&&this.transferables.indexOf(e.buffer)<0&&this.transferables.push(e.buffer),t)))}Z(){const t=this.gltf.animations;return D(t)?this.adapter.getAnimations(t):null}j(t){this.meshes={};let e=[];return this.adapter.iterate(((r,n,i)=>{e.push(this.J(n,t).then((t=>{t.index=i,this.meshes[r]=t})))}),"meshes"),e=e.concat(this.q()),Promise.all(e)}J(t,e){const r=t.primitives.map((t=>this.tt(t,e))).filter((t=>!!t));return Promise.all(r).then((e=>{const r={};return B(r,t),r.primitives=e,r}))}Y(){const t=this.gltf.textures;if(!t)return null;const e=[];for(const r in t)e.push(this.adapter.M(r));return Promise.all(e).then((e=>{if(this.transferables)for(let t=0;t<e.length;t++){const r=e[t].image.array;if(e[t]&&r){let t;t=r instanceof ImageBitmap?r:r.buffer,t&&this.transferables.indexOf(t)<0&&this.transferables.push(t)}}if(!Array.isArray(t)){const r={},n=Object.keys(t);for(let t=0;t<e.length;t++)e[t]&&(r[n[t]]=e[t]);return r}return e}))}tt(t,e){let r;const n=[],i=t.extensions;if(D(t.targets))for(let e=0;e<t.targets.length;e++){const r=t.targets[e];for(const t in r){const i=this.adapter.accessor.T(`morphTargets_${t}_${e}`,r[t]);i&&n.push(i)}}if(i&&i.KHR_draco_mesh_compression){if(!this.options.decoders.draco&&(!this.gltf.extensionsRequired||!this.gltf.extensionsRequired.indexOf("KHR_draco_mesh_compression")<0))return null;const t=this.options.decoders.draco,{bufferView:s,attributes:o}=i.KHR_draco_mesh_compression,a=this.gltf.bufferViews[s],c=this.X.N(a).then((r=>{const{buffer:n,byteOffset:i}=r;let{byteOffset:s,byteLength:c}=a;s||(s=0);const f=new DataView(n,i+s,c),u={attributes:o,useUniqueIDs:!1,skipAttributeTransform:e.skipAttributeTransform};return t(f,u).then((t=>{const e=Object.values(t.attributes);return t.indices&&e.push(t.indices),e}))}));n.push(c),r=Promise.all(n)}else{const e=t.attributes;for(const t in e){const r=this.adapter.accessor.T(t,e[t]);r&&n.push(r)}if(D(t.indices)){const e=this.adapter.accessor.T("indices",t.indices);e&&n.push(e)}r=Promise.all(n)}return r.then((e=>{if(i&&i.KHR_draco_mesh_compression){const r=t.targets?t.targets.length:0;e[r]=e[r].concat(e.slice(0,r)),e=e[r]}let r,n;const s={attributes:e.reduce(((t,e)=>{if("indices"===e.name)r=e;else if(e.name.indexOf("morphTargets_")>-1)n=n||{},n[e.name.slice(13)]=e;else{if(!("POSITION"!==e.name||e.min&&e.max)){const t=[1/0,1/0,1/0],r=[-1/0,-1/0,-1/0],{itemSize:n,array:i}=e,s=i.length/n;for(let e=0;e<s;e++)for(let s=0;s<n;s++){const o=e*n+s;i[o]<t[s]&&(t[s]=i[o]),i[o]>r[s]&&(r[s]=i[o])}if(e.quantization){const n=e.quantization,i=n.range/(1<<n.quantizationBits),s=n.minValues;T(t,t,i),_(t,t,s),T(r,r,i),_(r,r,s)}e.min=t,e.max=r}t[e.name]=e}return this.transferables&&e.array.buffer&&this.transferables.indexOf(e.array.buffer)<0&&this.transferables.push(e.array.buffer),t}),{}),material:t.material};return r&&(s.indices=r),n&&(s.morphTargets=n),s.mode=D(t.mode)?t.mode:4,D(t.extras)&&(s.extras=t.extras),s}))}}function lt(t,e){const r=new Image;r.crossOrigin="",r.onload=()=>{if(!ft)return void e(new Error("There is no canvas to draw image!"));ft.width=r.width,ft.height=r.height;const t=ft.getContext("2d");t.drawImage(r,0,0,r.width,r.height);const n=t.getImageData(0,0,r.width,r.height),i={width:r.width,height:r.height,data:new Uint8Array(n.data)};e(null,i)},r.onerror=function(t){e(t)},r.src=t}let Et,_t;function At(t,e){Et||(Et=new OffscreenCanvas(2,2),_t=Et.getContext("2d")),fetch(t).then((t=>t.arrayBuffer())).then((t=>{const e=new Blob([new Uint8Array(t)]);return createImageBitmap(e)})).then((t=>{let{width:r,height:n}=t;ht(r)||(r=Tt(r)),ht(n)||(n=Tt(n));const i=this.options.maxTextureSize;i&&(r=Math.min(i,r),n=Math.min(i,n)),Et.width=r,Et.height=n,_t.drawImage(t,0,0,r,n),t.close();const s=_t.getImageData(0,0,r,n);e(null,{width:r,height:n,data:new Uint8Array(s.data)})})).catch((t=>{console.warn(t),e(t)}))}function ht(t){return 0==(t&t-1)&&0!==t}function Tt(t){return Math.pow(2,Math.floor(Math.log(t)/Math.LN2))}function Rt(t){return"object"==typeof t&&!!t}function yt(t){return t*Math.PI/180}function It(t){return t/Math.PI*180}function Nt(t){return Math.sign?Math.sign(t):0===(t=+t)||isNaN(t)?Number(t):t>0?1:-1}const Ut=[1,1,1,1,2,2,3,0];function St(t){const e=t.length;let r="";for(let n=0;n<e;){let i=t[n++];if(128&i){let r=Ut[i>>3&7];if(!(64&i)||!r||n+r>e)return null;for(i&=63>>r;r>0;r-=1){const e=t[n++];if(128!=(192&e))return null;i=i<<6|63&e}}r+=String.fromCharCode(i)}return r}const dt=new Array(3),mt=new Array(3),Ot=[40680631590769,40680631590769,40408299984661.445];const Mt=[1/6378137,1/6378137,1/6356752.314245179],Ft=[1/40680631590769,1/40680631590769,1/40408299984661.445],Ct=new Array(3),bt=new Array(3),pt=new Array(3);function wt(t,e){const r=Ft,n=function(t,e,r,n,i){const s=e[0],o=e[1],a=e[2],c=r[0],f=r[1],u=r[2],l=s*s*c*c,E=o*o*f*f,_=a*a*u*u,A=l+E+_,h=Math.sqrt(1/A),R=T(Dt,e,h);if(A<i)return isFinite(h)?R:void 0;const y=n[0],I=n[1],N=n[2],U=Bt;U[0]=R[0]*y*2,U[1]=R[1]*I*2,U[2]=R[2]*N*2;let S,d,m,O,M,F,C,b,p,w,D,B=(1-h)*Lt(e)/(.5*Lt(U)),L=0;do{B-=L,m=1/(1+B*y),O=1/(1+B*I),M=1/(1+B*N),F=m*m,C=O*O,b=M*M,p=F*m,w=C*O,D=b*M,S=l*F+E*C+_*b-1,d=l*p*y+E*w*I+_*D*N;L=S/(-2*d)}while(Math.abs(S)>1e-12);return t[0]=s*m,t[1]=o*O,t[2]=a*M,t}(Ct,e,Mt,r,.1);let i=d(bt,n,r);i=Pt(i,i);const s=S(pt,e,n),o=Math.atan2(i[1],i[0]),a=Math.asin(i[2]),c=Nt(I(s,e))*Lt(s);return t[0]=It(o),t[1]=It(a),t[2]=c,t}const Dt=new Array(3),Bt=new Array(3);function Lt(t){return f(t)}function Pt(t,e){const r=e[0],n=e[1],i=e[2];let s=r*r+n*n+i*i;return s>0&&(s=Math.sqrt(s),t[0]=e[0]/s,t[1]=e[1]/s,t[2]=e[2]/s),t}function gt(t,e,r,n){r=r||0,n=n||r;var i=Math.abs(t-e);return i<=n||i<=r*Math.max(Math.abs(t),Math.abs(e))}function Gt(t,e){let r="";for(let n=0;n<4;n++){const i=t.getUint8(e+n);r+=String.fromCharCode(i)}return r}const vt="undefined"!=typeof TextDecoder?new TextDecoder("utf-8"):null;function Xt(t,e,r){const n=new Uint8Array(t,e,r);return vt?JSON.parse(vt.decode(n)):JSON.parse(St(n))}function Ht(t,e,r){const n=new Uint8Array(t,e,r);return vt?JSON.parse(vt.decode(n)):JSON.parse(St(n))}function xt(t,e,r){return{offset:e,byteLength:r}}function Vt(t,e,r,n){const{byteOffset:i,componentType:s,type:o}=t,{ctor:a,type:c}=function(t){return Yt[t]}(s||"UNSIGNED_SHORT"),f=function(t){if(!t)return 1;return Zt[t]}(o);return{byteStride:0,byteOffset:i+r,itemSize:f,count:n*f,componentType:c,array:new a(e,r+i,n*f)}}function kt(t,e,r,n){const i=Vt(t,e,r,n);return i.array.buffer.byteLength!==e.byteLength&&(i.array=i.array.slice()),i}const Zt={"SCALAR":1,"VEC2":2,"VEC3":3,"VEC4":4};const Yt={"BYTE":{ctor:Int8Array,type:5120,name:"Int8Array"},"UNSIGNED_BYTE":{ctor:Uint8Array,type:5121,name:"Uint8Array"},"SHORT":{ctor:Int16Array,type:5122,name:"Int16Array"},"UNSIGNED_SHORT":{ctor:Uint16Array,type:5123,name:"Uint16Array"},"INT":{ctor:Int32Array,type:5124,name:"Int32Array"},"UNSIGNED_INT":{ctor:Uint32Array,type:5125,name:"Uint32Array"},"FLOAT":{ctor:Float32Array,type:5126,name:"Float32Array"},"DOUBLE":{ctor:Float64Array,type:5126,name:"Float64Array"}};function Kt(t){for(let e in Yt)if(t===Yt[e].ctor)return Yt[e].type;throw new Error("unrecognized ctor:"+t)}function zt(t,e,r,n){const i=t,s=e.length/3;for(let t=0;t<s;t++)i[3*t]=e[3*t]/65535*n[0]+r[0],i[3*t+1]=e[3*t+1]/65535*n[1]+r[1],i[3*t+2]=e[3*t+2]/65535*n[2]+r[2];return i}function Wt(t,e,r){let n=t.getUint32(12,!0),i=t.getUint32(16,!0),s=t.getUint32(20,!0),o=t.getUint32(24,!0);const a=t.buffer;let c,f,u={},l={};n>0&&(u=Xt(a,e,n),e+=n),i>0&&(c=function(t,e,r){return{offset:e,byteLength:r}}(0,e,i),e+=i),s>0&&(l=Ht(a,e,s),e+=s);const E=xt(0,e,o);return f=a.slice(E.offset,E.offset+E.byteLength),r.push(f),{featureTable:u,featureTableBin:c,batchTable:l,batchTableBin:f}}var jt={north:[-1,0,0],east:[0,1,0],up:[0,0,1],south:[1,0,0],west:[0,-1,0],down:[0,0,-1]},qt={},$t={east:[],north:[],up:[],west:[],south:[],down:[]},Jt=[],Qt=[],te=[];const ee=[0,0,0];const re=(oe={up:{south:"east",north:"west",west:"south",east:"north"},down:{south:"west",north:"east",west:"north",east:"south"},south:{up:"west",down:"east",west:"down",east:"up"},north:{up:"east",down:"west",west:"up",east:"down"},west:{up:"north",down:"south",north:"down",south:"up"},east:{up:"south",down:"north",north:"up",south:"down"}}[ne="east"][ie="north"],qt[ae=ne+ie]?se=qt[ae]:(se=function(t,r,n){if(function(t,r){var n=t[0],i=t[1],s=t[2],o=r[0],a=r[1],c=r[2];return Math.abs(n-o)<=e*Math.max(1,Math.abs(n),Math.abs(o))&&Math.abs(i-a)<=e*Math.max(1,Math.abs(i),Math.abs(a))&&Math.abs(s-c)<=e*Math.max(1,Math.abs(s),Math.abs(c))}(t,ee))l(Jt,jt[ne]),l(Qt,jt[ie]),l(te,jt[oe]);else if(gt(t[0],0,1e-14)&&gt(t[1],0,1e-14)){var i=Nt(t[2]);l(Jt,jt[ne]),"east"!==ne&&"west"!==ne&&T(Jt,Jt,i),l(Qt,jt[ie]),"east"!==ie&&"west"!==ie&&T(Qt,Qt,i),l(te,jt[oe]),"east"!==oe&&"west"!==oe&&T(te,te,i)}else{!function(t,e){h(e,t,Ft),y(e,e)}(t,$t.up);var s=$t.up,o=$t.east;o[0]=-t[1],o[1]=t[0],o[2]=0,y($t.east,o),N($t.north,s,o),T($t.down,$t.up,-1),T($t.west,$t.east,-1),T($t.south,$t.north,-1),Jt=$t[ne],Qt=$t[ie],te=$t[oe]}return n[0]=Jt[0],n[1]=Jt[1],n[2]=Jt[2],n[3]=0,n[4]=Qt[0],n[5]=Qt[1],n[6]=Qt[2],n[7]=0,n[8]=te[0],n[9]=te[1],n[10]=te[2],n[11]=0,n[12]=t[0],n[13]=t[1],n[14]=t[2],n[15]=1,n},qt[ae]=se),se);var ne,ie,se,oe,ae;const ce={5120:Int8Array,5122:Int16Array,5124:Int32Array,5121:Uint8Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array};function fe(t){for(let e in ce)if(t===ce[e])return+e;throw new Error("unrecognized ctor:"+t)}function ue(t){return 1===t?"FLOAT":"VEC"+t}\n/*!\n * @maptalks/gl v0.68.1\n * LICENSE : UNLICENSED\n * (c) 2016-2022 maptalks.com\n */const le=function(){if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if("undefined"!=typeof undefined)return global;throw new Error("unable to locate global object")},Ee=le(),_e=Ee.gl_trans__coders=Ee.gl_trans__coders||{};_e.inject=function(t){const e=t.toString(),r=e.indexOf("{")+1,n=e.substring(0,r),i=Ee.gl_trans__coders=Ee.gl_trans__coders||{};let s=`${n}\\n const _____getGlobal = ${le.toString()};\\n const g___lobals = _____getGlobal()\\n const tran_____scoders = g___lobals[\'gl_trans__coders\'] = g___lobals[\'gl_trans__coders\'] || {};`;for(const t in i)"inject"!==t&&"getTranscoder"!==t&&"registerTranscoder"!==t&&(s+=\'tran_____scoders["\'+t+\'"] =\'+i[t].toString()+"\\n;");return s+="\\n"+e.substring(n.length),s},_e.registerTranscoder=function(t,e){_e[t]=e},_e.getTranscoder=function(t){return _e[t]};class Ae{constructor(t,e,r){this.i=t,this.et=e||ut,this.o=r,this.rt={"image/crn":_e.crn&&_e.crn(),"image/ktx2":_e.ktx2&&_e.ktx2(),"image/cttf":_e.ktx2&&_e.ktx2(),"draco":_e.draco&&_e.draco()}}static createEmptyB3DM(){return{featureTable:null,batchTable:null,gltf:{}}}load(t,e,r=0,n=0,i){return e?(n||(n=e.byteLength),this.nt(t,e,r,n,i)):K.getArrayBuffer(t,{}).then((e=>{const i=e.data;return n||(n=i.byteLength),this.nt(t,i,r,n)}))}nt(t,e,r,n,i){const s=i&&i.maxTextureSize,o=this.it(e,r,n,t);if(o.error)return Promise.resolve(o);const a=t.substring(0,t.lastIndexOf("/")),c=new this.et(a,o.glb,{transferable:!0,requestImage:this.i,decoders:this.rt,supportedFormats:this.o,maxTextureSize:s});return c.load({skipAttributeTransform:!1}).then((e=>{e.url=`${t}-${r}-${n}`;const i=c.transferables;for(let t=0;t<o.transferables.length;t++)i.indexOf(o.transferables[t])<0&&i.push(o.transferables[t]);return{magic:"b3dm",count:o.count,transferables:i,featureTable:o.featureTable,batchTable:o.batchTable,batchTableBin:o.batchTableBin,gltf:e}}))}it(t,e,r,n){const i=new DataView(t,e,r),s=i.getUint32(4,!0);if(1!==s){const t="Unsupported b3dm version: "+s+", url:"+n;return console.warn(t),{error:t}}if(i.getUint32(8,!0)!==i.byteLength){const t="Length in b3dm header is inconsistent with b3dm\'s byte length, url: "+n;return console.warn(t),{error:t}}let o,a=i.getUint32(12,!0),c=i.getUint32(16,!0),f=i.getUint32(20,!0),u=i.getUint32(24,!0),l=28+e;f>=570425344?(l-=8,o=a,f=c,u=0,a=0,c=0):u>=570425344&&(l-=4,o=f,f=a,u=c,a=0,c=0);const E=[t];let _,A,h;if(a>0?(_=Xt(t,l,a),l+=a,o=_.BATCH_LENGTH):_={"BATCH_LENGTH":o},c>0&&(l+=c),f>0&&(A=Ht(t,l,f),l+=f,u>0)){const e=xt(0,l,u);h=t.slice(e.offset,e.offset+e.byteLength),l+=u,E.push(h)}const T=_.BATCH_LENGTH,R={};if(_&&_.BATCH_ID){R.BATCH_ID=kt(_.BATCH_ID,t,undefined.offset,T);const e=R.BATCH_ID.array&&R.BATCH_ID.array.buffer;e&&E.indexOf(e)<0&&E.push(e)}return{count:o,transferables:E,featureTable:_,batchTable:A,batchTableBin:h,b3dm:R,glb:{buffer:t,byteOffset:l,byteLength:i.byteLength+i.byteOffset-l}}}st(){return null}}class he{constructor(t,e,r,n){this.i=t,this.et=e||ut,this.o=r,this.rt={"image/crn":_e.crn&&_e.crn(),"image/ktx2":_e.ktx2&&_e.ktx2(),"image/cttf":_e.ktx2&&_e.ktx2(),"draco":_e.draco&&_e.draco()},this.ot=n}load(t,e,r=0,n=0,i){return e?(n||(n=e.byteLength),this.nt(t,e,r,n,i)):K.getArrayBuffer(t,{}).then((e=>{const i=e.data;return n||(n=i.byteLength),this.nt(t,i,r,n)}))}nt(t,e,r,n,i){return this.ct(t,e,r,n,i).then((({gltf:i,transferables:s})=>{const o=this.ft(e,r,n,t);if(o.error)return Promise.resolve(o);for(let t=0;t<s.length;t++)-1===o.transferables.indexOf(s[t])&&o.transferables.push(s[t]);return delete i.transferables,Promise.resolve({magic:"i3dm",count:o.count,transferables:o.transferables,featureTable:o.featureTable,batchTable:o.batchTable,batchTableBin:o.batchTableBin,i3dm:o.i3dm,gltf:i})}))}ct(t,e,r,n,i){const s=i&&i.maxTextureSize,o={transferable:!0,requestImage:this.i,decoders:this.rt,supportedFormats:this.o,maxTextureSize:s},a=new DataView(e,r,n),c=32+a.getUint32(12,!0)+a.getUint32(16,!0)+a.getUint32(20,!0)+a.getUint32(24,!0);if(0===a.getUint32(28,!0)){let n=St(new Uint8Array(e,c+r,a.byteLength-c));-1==n.indexOf("://")&&(n=t.substring(0,t.lastIndexOf("/"))+"/"+n);return n.indexOf(".glb")>0?K.getArrayBuffer(n,{}).then((t=>this.ut(n,{buffer:t.data,byteOffset:0},o))):K.getJSON(n,{}).then((t=>this.ut(n,t,o)))}{const n={buffer:e,byteOffset:c+r,byteLength:a.byteLength-c};return this.ut(t,n,o)}}ut(t,e,r){const n=t.substring(0,t.lastIndexOf("/")),i=new this.et(n,e,r);return i.load({skipAttributeTransform:!0}).then((r=>{let n=0,s=0;return e.buffer&&(n=e.byteOffset||0,s=e.byteLength||0),r.url=`${t}-${n}-${s}`,{transferables:i.transferables,gltf:r}}))}ft(t,e,r,n){const i=new DataView(t,e,r),s=i.getUint32(4,!0);if(1!==s){const t="Unsupported pnts version: "+s+", url:"+n;return console.warn(t),{error:t}}if(i.getUint32(8,!0)!==i.byteLength){const t="Length in pnts header is inconsistent with pnts\'s byte length, url: "+n;return console.warn(t),{error:t}}const o=[t],{featureTable:a,featureTableBin:c,batchTable:f,batchTableBin:u}=Wt(i,32+e,o),l={},E=a.INSTANCES_LENGTH;if(a.POSITION){const{byteOffset:e}=a.POSITION;l.POSITION={byteStride:0,byteOffset:0,itemSize:3,count:E,componentType:5126,array:new Float32Array(t,e+c.offset,3*E).slice()},o.push(l.POSITION.array.buffer)}else if(a.POSITION_QUANTIZED){const e=a.QUANTIZED_VOLUME_OFFSET,r=a.QUANTIZED_VOLUME_SCALE,{byteOffset:n}=a.POSITION_QUANTIZED;l.POSITION={byteStride:12,byteOffset:0,itemSize:3,count:E,componentType:5126,array:this.lt(new Uint16Array(t,n+c.offset,3*E),e,r)},o.push(l.POSITION.array.buffer)}if(a.BATCH_ID){l.BATCH_ID=kt(a.BATCH_ID,t,c.offset,E);const e=l.BATCH_ID.array&&l.BATCH_ID.array.buffer;e&&o.indexOf(e)<0&&o.push(e)}if(a.NORMAL_UP){let{byteOffset:e}=a.NORMAL_UP;l.NORMAL_UP={byteStride:0,byteOffset:0,itemSize:3,count:E,componentType:5126,array:new Float32Array(t,e+c.offset,3*E).slice()},o.push(l.NORMAL_UP.array.buffer),e=a.NORMAL_RIGHT.byteOffset,l.NORMAL_RIGHT={byteStride:0,byteOffset:0,itemSize:3,count:E,componentType:5126,array:new Float32Array(t,e+c.offset,3*E).slice()},o.push(l.NORMAL_RIGHT.array.buffer)}else if(a.NORMAL_UP_OCT32P){let{byteOffset:e}=a.NORMAL_UP_OCT32P;l.NORMAL_UP={byteStride:0,byteOffset:0,itemSize:3,count:E,componentType:5126,array:this.Et(new Uint16Array(t,e+c.offset,2*E))},o.push(l.NORMAL_UP.array.buffer),e=a.NORMAL_RIGHT_OCT32P.byteOffset,l.NORMAL_RIGHT={byteStride:0,byteOffset:0,itemSize:3,count:E,componentType:5126,array:this.Et(new Uint16Array(t,e+c.offset,2*E))},o.push(l.NORMAL_RIGHT.array.buffer)}if(a.SCALE){const{byteOffset:e}=a.SCALE;l.SCALE={byteStride:0,byteOffset:0,itemSize:1,count:E,componentType:5126,array:new Float32Array(t,e+c.offset,E).slice()},o.push(l.SCALE.array.buffer)}else if(a.SCALE_NON_UNIFORM){const{byteOffset:e}=a.SCALE_NON_UNIFORM;l.SCALE_NON_UNIFORM={byteStride:0,byteOffset:0,itemSize:3,count:E,componentType:5126,array:new Float32Array(t,e+c.offset,3*E).slice()},o.push(l.SCALE_NON_UNIFORM.array.buffer)}return{count:E,batchTable:f,batchTableBin:u,featureTable:a,i3dm:l,transferables:o}}Et(t){const e=t.length/2,r=new Float32Array(3*e),n=[];for(let i=0;i<e;i++)Te(n,t[2*i],t[2*i+1],65535),r[3*i]=n[0],r[3*i+1]=n[1],r[3*i+2]=n[2];return r}lt(t,e,r){return zt(new Float32Array(t.length),t,e,r)}st(){return null}}function Te(t,e,r,n){if(t[0]=Re(e,n),t[1]=Re(r,n),t[2]=1-(Math.abs(t[0])+Math.abs(t[1])),t[2]<0){const e=t[0];t[0]=(1-Math.abs(t[1]))*ye(e),t[1]=(1-Math.abs(e))*ye(t[1])}return y(t,t)}function Re(t,e){return e=function(t,e){if(null!=t)return t;return e}(e,255),function(t,e,r){return t<e?e:t>r?r:t}(t,0,e)/e*2-1}function ye(t){return t<0?-1:1}class Ie{constructor(){}load(t,e,r=0,n=0){return e?(n||(n=e.byteLength),this.nt(t,e,r,n)):K.getArrayBuffer(t,{}).then((e=>{const i=e.data;return n||(n=i.byteLength),this.nt(t,i,r,n)}))}nt(t,e,r,n){return this._t(e,r,n,t).then((t=>t.error?t:{magic:"pnts",count:t.count,transferables:t.transferables,featureTable:t.featureTable,batchTable:t.batchTable,batchTableBin:t.batchTableBin,pnts:t.pnts}))}_t(t,e,r,n){const i=new DataView(t,e,r),s=i.getUint32(4,!0);if(1!==s){const t="Unsupported pnts version: "+s+", url:"+n;return console.warn(t),{error:t}}if(i.getUint32(8,!0)!==i.byteLength){const t="Length in pnts header is inconsistent with pnts\'s byte length, url: "+n;return console.warn(t),{error:t}}const o=[t],{featureTable:a,featureTableBin:c,batchTable:f,batchTableBin:u}=Wt(i,e+28,o),l=a.QUANTIZED_VOLUME_OFFSET,E=a.QUANTIZED_VOLUME_SCALE,_=a.POINTS_LENGTH;let A,h={};if(a.extensions&&a.extensions["3DTILES_draco_point_compression"]){h=a.extensions["3DTILES_draco_point_compression"],A=new DataView(t,h.byteOffset+c.offset,h.byteLength);const e={attributes:h.properties,useUniqueIDs:!1};return this.At||(this.At=_e.draco()),this.At(A,e).then((e=>{const r=e.attributes;!a.POSITION&&!a.POSITION_QUANTIZED||r.POSITION||r.POSITION_QUANTIZED||(r.POSITION=a.POSITION,r.POSITION_QUANTIZED=a.POSITION_QUANTIZED),!(a.RGB||a.RGBA||a.RGB565)||r.RGB||r.RGBA||r.RGB565||(r.RGB=a.RGB,r.RGBA=a.RGBA,r.RGB565=a.RGB565),!a.NORMAL&&!a.NORMAL_OCT16P||r.NORMAL||r.NORMAL_OCT16P||(r.NORMAL=a.NORMAL,r.NORMAL_OCT16P=a.NORMAL_OCT16P);const n=this.ht(t,e.attributes,c.offset,_,o,l,E);if(e.attributes.BATCH_ID){const t=e.attributes.BATCH_ID.array;n.BATCH_ID={byteStride:0,byteOffset:0,itemSize:1,count:t.length,componentType:Kt(t.constructor),array:t},o.push(t.buffer)}else if(a.BATCH_ID||Object.keys(f).length){a.BATCH_ID?n.BATCH_ID=kt(a.BATCH_ID,t,c.offset,_):n.BATCH_ID=Ne(_);const e=n.BATCH_ID.array&&n.BATCH_ID.array.buffer;e&&o.indexOf(e)<0&&o.push(e)}return{count:_,batchTable:f,batchTableBin:u,featureTable:a,pnts:n,transferables:o}}))}const T=this.ht(t,a,c.offset,_,o,l,E);if(a.BATCH_ID||Object.keys(f).length){a.BATCH_ID?T.BATCH_ID=kt(a.BATCH_ID,t,c.offset,_):T.BATCH_ID=Ne(_);const e=T.BATCH_ID.array&&T.BATCH_ID.array.buffer;e&&o.indexOf(e)<0&&o.push(e)}return Promise.resolve({count:_,batchTable:f,batchTableBin:u,featureTable:a,pnts:T,transferables:o})}ht(t,e,r,n,i,s,o){const a={};if(e.POSITION){let{byteOffset:s,array:o}=e.POSITION;s=s||0;const c=o?0:r;if(!o){const e=t.slice(s+c,s+c+3*n*4);o=new Float32Array(e)}a.POSITION={byteStride:0,byteOffset:0,itemSize:3,count:n,componentType:5126,array:o},i.push(o.buffer)}else if(e.POSITION_QUANTIZED){let{byteOffset:c,array:f}=e.POSITION_QUANTIZED;c=c||0;const u=f?0:r;a.POSITION={byteStride:0,byteOffset:0,itemSize:3,count:n,componentType:5126,array:this.lt(f||new Uint16Array(t,c+u,3*n),s,o)},i.push(a.POSITION.array.buffer)}if(e.RGBA){let{byteOffset:s,array:o}=e.RGBA;s=s||0;const c=o?0:r;if(!o){const e=t.slice(s+c,s+c+4*n);o=new Uint8Array(e)}a.RGBA={byteStride:0,byteOffset:0,itemSize:4,count:n,componentType:5121,array:o},i.push(o.buffer)}else if(e.RGB){let{byteOffset:s,array:o}=e.RGB;s=s||0;const c=o?0:r;if(!o){const e=t.slice(s+c,s+c+3*n);o=new Uint8Array(e)}a.RGB={byteStride:0,byteOffset:0,itemSize:3,count:n,componentType:5121,array:o},i.push(o.buffer)}else if(e.RGB565){let{byteOffset:s,array:o}=e.RGB565;s=s||0;const c=o?0:r;if(!o){const e=t.slice(s+c,s+c+2*n);o=new Uint16Array(e)}a.RGB565={byteStride:0,byteOffset:0,itemSize:1,count:n,componentType:5123,array:o},i.push(o.buffer)}if(e.NORMAL){let{byteOffset:s,array:o}=e.NORMAL;s=s||0;const c=o?0:r;if(!o){const e=t.slice(s+c,s+c+3*n*4);o=new Float32Array(e)}a.NORMAL={byteStride:0,byteOffset:0,itemSize:3,count:n,componentType:5126,array:o},i.push(o.buffer)}else if(e.NORMAL_OCT16P){let{byteOffset:s,array:o}=e.NORMAL_OCT16P;s=s||0;const c=o?0:r;if(!o){const e=t.slice(s+c,s+c+2*n);o=new Uint8Array(e)}a.NORMAL_OCT16P={byteStride:0,byteOffset:0,itemSize:2,count:n,componentType:5121,array:o},i.push(o.buffer)}return a}lt(t,e,r){return zt(new Float32Array(t.length),t,e,r)}st(){return null}}function Ne(t){const e=(r=t)<256?Uint8Array:r<65536?Uint16Array:Uint32Array;var r;const n=new e(t);for(let e=0;e<t;e++)n[e]=e;return{byteStride:0,byteOffset:0,itemSize:1,count:t,componentType:Kt(e),array:n}}class Ue{constructor(t,e){this.i=t,this.et=e||ut}load(t,e,r=0,n=0,i){return e?this.nt(t,e,r,n,i):K.getArrayBuffer(t,{}).then((e=>{const i=e.data;return this.nt(t,i,r,n)}))}nt(t,e,r,n,i){n||(n=e.byteLength);const s=this.Tt(e,t,r,n),o=[];for(let r=0;r<s.length;r++){let n;if("b3dm"===s[r].magic)n=new Ae(this.i,this.et);else if("i3dm"===s[r].magic)n=new he(this.i,this.et);else if("pnts"===s[r].magic)n=new Ie;else{if("cmpt"!==s[r].magic){console.warn("Unsupported magic in CMPT tile:",s[r].magic);continue}n=new Ue(this.i,this.et)}o.push(n.load(t,e,s[r].offset,s[r].byteLength,i).then((t=>t)))}return Promise.all(o).then((t=>({magic:"cmpt",tiles:t})))}Tt(t,e,r,n){const i=new DataView(t,r,n),s=i.getUint32(4,!0);if(1!==s){const t="Unsupported cmpt version: "+s+", url:"+e;return console.warn(t),{error:t}}if(16===i.byteLength)return[];const o=[],a=i.getUint32(12,!0);let c=16;for(let e=0;e<a;e++){const e=Gt(i,c),n=i.getUint32(c+8,!0);o.push({magic:e,buffer:t,offset:c+r,byteLength:n}),c+=n}return o}}function Se(t,e){if(t.scenes&&t.scenes.length)for(let r=0,n=t.scenes.length;r<n;r++){const n=t.scenes[r].nodes;for(let r=0,i=n.length;r<i;r++){const i=[];de(n[r],i,t,e)}}}function de(t,e,r,n){if(t.matrix&&e.push(t.matrix),t.children&&t.children.length)for(let i=0,s=t.children.length;i<s;i++)de(t.children[i],e,r,n);if(void 0!==t.mesh){const i=t.mesh,s=r.meshes[i];if(s){const t=e.slice(0),o=s.primitives;for(let e=0,s=o.length;e<s;e++){const s=o[e];s&&(s.matrices=t,n(s,i,e,r))}}}}function me(t,e){let{componentType:r,byteOffset:n,byteStride:i,count:s,itemSize:o}=t;const a=t.array.buffer,c=r?ut.getTypedArrayCtor(r):t.array.constructor;if(n=void 0===n?t.array.byteOffset:n,i=i||0,s=s||t.array.length/o,(!i||i===o*c.BYTES_PER_ELEMENT)&&n%c.BYTES_PER_ELEMENT==0){const t=new c(a,n,s*o);for(let r=0;r<s*o;r+=o){e(new c(t.buffer,n+r*c.BYTES_PER_ELEMENT,o),r/o)}return}const f=new Uint8Array(o*c.BYTES_PER_ELEMENT);i||(i=o*c.BYTES_PER_ELEMENT);for(let t=0;t<s;t++){const r=new Uint8Array(a,i*t+n,o*c.BYTES_PER_ELEMENT);f.set(r);e(new c(f.buffer),t),r.set(f)}}const Oe=[],Me=[];function Fe(t){const e={asset:{version:"1.0",gltfUpAxis:"Z",s3mType:t.dataType},geometricError:0,root:{boundingVolume:{},content:{uri:""},transform:[],geometricError:0,refine:"REPLACE",children:[]}},r=t.position.x,n=t.position.y,s=t.position.z,o=function(t,e,r,n){const i=Ot,s=Math.cos(r);dt[0]=s*Math.cos(e),dt[1]=s*Math.sin(e),dt[2]=Math.sin(r),Pt(dt,dt),h(mt,i,dt);const o=Math.sqrt(I(dt,mt));var a,c,f;return c=mt,f=o,(a=mt)[0]=c[0]/f,a[1]=c[1]/f,a[2]=c[2]/f,T(dt,dt,n),_(t,mt,dt)}([],yt(r),yt(n),s),a=re(o,null,[]);e.root.transform=i([],a);const c=[];for(let r=0,n=t.tiles.length;r<n;r++)if(t.tiles[r].boundingbox){const n=t.tiles[r].boundingbox;E(Oe,n.min.x,n.min.y,n.min.z),E(Me,n.max.x,n.max.y,n.max.z);const i={center:[0,0,0],radius:0};Ce(Oe,Me,i),e.root.children.push({boundingVolume:{sphere:[...i.center,i.radius]},content:{uri:t.tiles[r].url},geometricError:70,refine:"REPLACE"}),c.push(i)}else if(t.tiles[r].boundingsphere){const{boundingsphere:n}=t.tiles[r],i={center:[n.center.x,n.center.y,n.center.z],radius:n.radius};e.root.children.push({boundingVolume:{sphere:[...i.center,i.radius]},content:{uri:t.tiles[r].url},geometricError:70,refine:"REPLACE"}),c.push(i)}const f=function(t,e){if(0===t.length)return e;const r=t.length;if(1===r)return function(t,e){return l(e.center,t.center),e.radius=t.radius,e}(t[0],e);if(2===r)return function(t,e,r){const n=t.center,i=t.radius,s=e.center,o=e.radius,a=A(pe,s,n),c=Ye(a);if(i>=c+o)return t.clone(r),r;if(o>=c+i)return e.clone(r),r;const f=.5*(i+c+o),u=T(we,a,(-i+f)/c);return _(u,u,n),l(r.center,u),r.radius=f,r}(t[0],t[1],e);const n=[];for(let e=0;e<r;e++)n.push(t[e].center);const i=(e=function(t,e){if(0===t.length)return e.center=E(e.center,0,0,0),e.radius=0,e;const r=l(ve,t[0]),n=l(De,r),i=l(Be,r),s=l(Le,r),o=l(Pe,r),a=l(ge,r),c=l(Ge,r),f=t.length;for(let e=1;e<f;e++){l(r,t[e]);const f=r[0],u=r[1],E=r[2];f<n[0]&&l(n,r),f>o[0]&&l(o,r),u<i[1]&&l(i,r),u>a[1]&&l(a,r),E<s[2]&&l(s,r),E>c[2]&&l(c,r)}const u=Ze(A(Xe,o,n)),_=Ze(A(Xe,a,i)),h=Ze(A(Xe,c,s));let T=n,R=o,y=u;_>y&&(y=_,T=i,R=a);h>y&&(y=h,T=s,R=c);const I=He;I[0]=.5*(T[0]+R[0]),I[1]=.5*(T[1]+R[1]),I[2]=.5*(T[2]+R[2]);let N=Ze(A(Xe,R,I)),U=Math.sqrt(N);const S=xe;S[0]=n[0],S[1]=i[1],S[2]=s[2];const d=Ve;d[0]=o[0],d[1]=a[1],d[2]=c[2];const m=be(S,d,ke);let O=0;for(let e=0;e<f;e++){l(r,t[e]);const n=Ye(A(Xe,r,m));n>O&&(O=n);const i=Ze(A(Xe,r,I));if(i>N){const t=Math.sqrt(i);U=.5*(U+t),N=U*U;const e=t-U;I[0]=(U*I[0]+e*r[0])/t,I[1]=(U*I[1]+e*r[1])/t,I[2]=(U*I[2]+e*r[2])/t}}U<O?(l(e.center,I),e.radius=U):(l(e.center,m),e.radius=O);return e}(n,e)).center;let s=e.radius;for(let e=0;e<r;e++){const r=t[e];s=Math.max(s,R(i,r.center)+r.radius)}return e.radius=s,e}(c,{center:[0,0,0],radius:0});return e.root.boundingVolume.sphere=[...f.center,f.radius],e}function Ce(t,e,r){var n=be(t,e,r.center);return r.radius=R(n,e),r}function be(t,e,r){return r[0]=.5*(t[0]+e[0]),r[1]=.5*(t[1]+e[1]),r[2]=.5*(t[2]+e[2]),r}const pe=[],we=[];const De=[],Be=[],Le=[],Pe=[],ge=[],Ge=[],ve=[],Xe=[],He=[],xe=[],Ve=[],ke=[];function Ze(t){return t[0]*t[0]+t[1]*t[1]+t[2]*t[2]}function Ye(t){return Math.hypot(t[0],t[1],t[2])}\n/*! pako 2.0.4 https://github.com/nodeca/pako @license (MIT AND Zlib) */function Ke(t){let e=t.length;for(;--e>=0;)t[e]=0}const ze=256,We=286,je=30,qe=15,$e=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),Je=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),Qe=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),tr=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),er=new Array(576);Ke(er);const rr=new Array(60);Ke(rr);const nr=new Array(512);Ke(nr);const ir=new Array(256);Ke(ir);const sr=new Array(29);Ke(sr);const or=new Array(je);function ar(t,e,r,n,i){this.static_tree=t,this.extra_bits=e,this.extra_base=r,this.elems=n,this.max_length=i,this.has_stree=t&&t.length}let cr,fr,ur;function lr(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}Ke(or);const Er=t=>t<256?nr[t]:nr[256+(t>>>7)],_r=(t,e)=>{t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255},Ar=(t,e,r)=>{t.bi_valid>16-r?(t.bi_buf|=e<<t.bi_valid&65535,_r(t,t.bi_buf),t.bi_buf=e>>16-t.bi_valid,t.bi_valid+=r-16):(t.bi_buf|=e<<t.bi_valid&65535,t.bi_valid+=r)},hr=(t,e,r)=>{Ar(t,r[2*e],r[2*e+1])},Tr=(t,e)=>{let r=0;do{r|=1&t,t>>>=1,r<<=1}while(--e>0);return r>>>1},Rr=(t,e,r)=>{const n=new Array(16);let i,s,o=0;for(i=1;i<=qe;i++)n[i]=o=o+r[i-1]<<1;for(s=0;s<=e;s++){let e=t[2*s+1];0!==e&&(t[2*s]=Tr(n[e]++,e))}},yr=t=>{let e;for(e=0;e<We;e++)t.dyn_ltree[2*e]=0;for(e=0;e<je;e++)t.dyn_dtree[2*e]=0;for(e=0;e<19;e++)t.bl_tree[2*e]=0;t.dyn_ltree[512]=1,t.opt_len=t.static_len=0,t.last_lit=t.matches=0},Ir=t=>{t.bi_valid>8?_r(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0},Nr=(t,e,r,n)=>{const i=2*e,s=2*r;return t[i]<t[s]||t[i]===t[s]&&n[e]<=n[r]},Ur=(t,e,r)=>{const n=t.heap[r];let i=r<<1;for(;i<=t.heap_len&&(i<t.heap_len&&Nr(e,t.heap[i+1],t.heap[i],t.depth)&&i++,!Nr(e,n,t.heap[i],t.depth));)t.heap[r]=t.heap[i],r=i,i<<=1;t.heap[r]=n},Sr=(t,e,r)=>{let n,i,s,o,a=0;if(0!==t.last_lit)do{n=t.pending_buf[t.d_buf+2*a]<<8|t.pending_buf[t.d_buf+2*a+1],i=t.pending_buf[t.l_buf+a],a++,0===n?hr(t,i,e):(s=ir[i],hr(t,s+ze+1,e),o=$e[s],0!==o&&(i-=sr[s],Ar(t,i,o)),n--,s=Er(n),hr(t,s,r),o=Je[s],0!==o&&(n-=or[s],Ar(t,n,o)))}while(a<t.last_lit);hr(t,256,e)},dr=(t,e)=>{const r=e.dyn_tree,n=e.stat_desc.static_tree,i=e.stat_desc.has_stree,s=e.stat_desc.elems;let o,a,c,f=-1;for(t.heap_len=0,t.heap_max=573,o=0;o<s;o++)0!==r[2*o]?(t.heap[++t.heap_len]=f=o,t.depth[o]=0):r[2*o+1]=0;for(;t.heap_len<2;)c=t.heap[++t.heap_len]=f<2?++f:0,r[2*c]=1,t.depth[c]=0,t.opt_len--,i&&(t.static_len-=n[2*c+1]);for(e.max_code=f,o=t.heap_len>>1;o>=1;o--)Ur(t,r,o);c=s;do{o=t.heap[1],t.heap[1]=t.heap[t.heap_len--],Ur(t,r,1),a=t.heap[1],t.heap[--t.heap_max]=o,t.heap[--t.heap_max]=a,r[2*c]=r[2*o]+r[2*a],t.depth[c]=(t.depth[o]>=t.depth[a]?t.depth[o]:t.depth[a])+1,r[2*o+1]=r[2*a+1]=c,t.heap[1]=c++,Ur(t,r,1)}while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],((t,e)=>{const r=e.dyn_tree,n=e.max_code,i=e.stat_desc.static_tree,s=e.stat_desc.has_stree,o=e.stat_desc.extra_bits,a=e.stat_desc.extra_base,c=e.stat_desc.max_length;let f,u,l,E,_,A,h=0;for(E=0;E<=qe;E++)t.bl_count[E]=0;for(r[2*t.heap[t.heap_max]+1]=0,f=t.heap_max+1;f<573;f++)u=t.heap[f],E=r[2*r[2*u+1]+1]+1,E>c&&(E=c,h++),r[2*u+1]=E,u>n||(t.bl_count[E]++,_=0,u>=a&&(_=o[u-a]),A=r[2*u],t.opt_len+=A*(E+_),s&&(t.static_len+=A*(i[2*u+1]+_)));if(0!==h){do{for(E=c-1;0===t.bl_count[E];)E--;t.bl_count[E]--,t.bl_count[E+1]+=2,t.bl_count[c]--,h-=2}while(h>0);for(E=c;0!==E;E--)for(u=t.bl_count[E];0!==u;)l=t.heap[--f],l>n||(r[2*l+1]!==E&&(t.opt_len+=(E-r[2*l+1])*r[2*l],r[2*l+1]=E),u--)}})(t,e),Rr(r,f,t.bl_count)},mr=(t,e,r)=>{let n,i,s=-1,o=e[1],a=0,c=7,f=4;for(0===o&&(c=138,f=3),e[2*(r+1)+1]=65535,n=0;n<=r;n++)i=o,o=e[2*(n+1)+1],++a<c&&i===o||(a<f?t.bl_tree[2*i]+=a:0!==i?(i!==s&&t.bl_tree[2*i]++,t.bl_tree[32]++):a<=10?t.bl_tree[34]++:t.bl_tree[36]++,a=0,s=i,0===o?(c=138,f=3):i===o?(c=6,f=3):(c=7,f=4))},Or=(t,e,r)=>{let n,i,s=-1,o=e[1],a=0,c=7,f=4;for(0===o&&(c=138,f=3),n=0;n<=r;n++)if(i=o,o=e[2*(n+1)+1],!(++a<c&&i===o)){if(a<f)do{hr(t,i,t.bl_tree)}while(0!=--a);else 0!==i?(i!==s&&(hr(t,i,t.bl_tree),a--),hr(t,16,t.bl_tree),Ar(t,a-3,2)):a<=10?(hr(t,17,t.bl_tree),Ar(t,a-3,3)):(hr(t,18,t.bl_tree),Ar(t,a-11,7));a=0,s=i,0===o?(c=138,f=3):i===o?(c=6,f=3):(c=7,f=4)}};let Mr=!1;const Fr=(t,e,r,n)=>{Ar(t,0+(n?1:0),3),((t,e,r,n)=>{Ir(t),n&&(_r(t,r),_r(t,~r)),t.pending_buf.set(t.window.subarray(e,e+r),t.pending),t.pending+=r})(t,e,r,!0)};var Cr=t=>{Mr||((()=>{let t,e,r,n,i;const s=new Array(16);for(r=0,n=0;n<28;n++)for(sr[n]=r,t=0;t<1<<$e[n];t++)ir[r++]=n;for(ir[r-1]=n,i=0,n=0;n<16;n++)for(or[n]=i,t=0;t<1<<Je[n];t++)nr[i++]=n;for(i>>=7;n<je;n++)for(or[n]=i<<7,t=0;t<1<<Je[n]-7;t++)nr[256+i++]=n;for(e=0;e<=qe;e++)s[e]=0;for(t=0;t<=143;)er[2*t+1]=8,t++,s[8]++;for(;t<=255;)er[2*t+1]=9,t++,s[9]++;for(;t<=279;)er[2*t+1]=7,t++,s[7]++;for(;t<=287;)er[2*t+1]=8,t++,s[8]++;for(Rr(er,287,s),t=0;t<je;t++)rr[2*t+1]=5,rr[2*t]=Tr(t,5);cr=new ar(er,$e,257,We,qe),fr=new ar(rr,Je,0,je,qe),ur=new ar(new Array(0),Qe,0,19,7)})(),Mr=!0),t.l_desc=new lr(t.dyn_ltree,cr),t.d_desc=new lr(t.dyn_dtree,fr),t.bl_desc=new lr(t.bl_tree,ur),t.bi_buf=0,t.bi_valid=0,yr(t)},br=(t,e,r,n)=>{let i,s,o=0;t.level>0?(2===t.strm.data_type&&(t.strm.data_type=(t=>{let e,r=4093624447;for(e=0;e<=31;e++,r>>>=1)if(1&r&&0!==t.dyn_ltree[2*e])return 0;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return 1;for(e=32;e<ze;e++)if(0!==t.dyn_ltree[2*e])return 1;return 0})(t)),dr(t,t.l_desc),dr(t,t.d_desc),o=(t=>{let e;for(mr(t,t.dyn_ltree,t.l_desc.max_code),mr(t,t.dyn_dtree,t.d_desc.max_code),dr(t,t.bl_desc),e=18;e>=3&&0===t.bl_tree[2*tr[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e})(t),i=t.opt_len+3+7>>>3,s=t.static_len+3+7>>>3,s<=i&&(i=s)):i=s=r+5,r+4<=i&&-1!==e?Fr(t,e,r,n):4===t.strategy||s===i?(Ar(t,2+(n?1:0),3),Sr(t,er,rr)):(Ar(t,4+(n?1:0),3),((t,e,r,n)=>{let i;for(Ar(t,e-257,5),Ar(t,r-1,5),Ar(t,n-4,4),i=0;i<n;i++)Ar(t,t.bl_tree[2*tr[i]+1],3);Or(t,t.dyn_ltree,e-1),Or(t,t.dyn_dtree,r-1)})(t,t.l_desc.max_code+1,t.d_desc.max_code+1,o+1),Sr(t,t.dyn_ltree,t.dyn_dtree)),yr(t),n&&Ir(t)},pr={Rt:Cr,yt:Fr,It:br,Nt:(t,e,r)=>(t.pending_buf[t.d_buf+2*t.last_lit]=e>>>8&255,t.pending_buf[t.d_buf+2*t.last_lit+1]=255&e,t.pending_buf[t.l_buf+t.last_lit]=255&r,t.last_lit++,0===e?t.dyn_ltree[2*r]++:(t.matches++,e--,t.dyn_ltree[2*(ir[r]+ze+1)]++,t.dyn_dtree[2*Er(e)]++),t.last_lit===t.lit_bufsize-1),Ut:t=>{Ar(t,2,3),hr(t,256,er),(t=>{16===t.bi_valid?(_r(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)})(t)}};var wr=(t,e,r,n)=>{let i=65535&t|0,s=t>>>16&65535|0,o=0;for(;0!==r;){o=r>2e3?2e3:r,r-=o;do{i=i+e[n++]|0,s=s+i|0}while(--o);i%=65521,s%=65521}return i|s<<16|0};const Dr=new Uint32Array((()=>{let t,e=[];for(var r=0;r<256;r++){t=r;for(var n=0;n<8;n++)t=1&t?3988292384^t>>>1:t>>>1;e[r]=t}return e})());var Br=(t,e,r,n)=>{const i=Dr,s=n+r;t^=-1;for(let r=n;r<s;r++)t=t>>>8^i[255&(t^e[r])];return-1^t},Lr={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},Pr={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{Rt:gr,yt:Gr,It:vr,Nt:Xr,Ut:Hr}=pr,{Z_NO_FLUSH:xr,Z_PARTIAL_FLUSH:Vr,Z_FULL_FLUSH:kr,Z_FINISH:Zr,Z_BLOCK:Yr,Z_OK:Kr,Z_STREAM_END:zr,Z_STREAM_ERROR:Wr,Z_DATA_ERROR:jr,Z_BUF_ERROR:qr,Z_DEFAULT_COMPRESSION:$r,Z_FILTERED:Jr,Z_HUFFMAN_ONLY:Qr,Z_RLE:tn,Z_FIXED:en,Z_DEFAULT_STRATEGY:rn,Z_UNKNOWN:nn,Z_DEFLATED:sn}=Pr,on=258,an=262,cn=103,fn=113,un=666,ln=(t,e)=>(t.msg=Lr[e],e),En=t=>(t<<1)-(t>4?9:0),_n=t=>{let e=t.length;for(;--e>=0;)t[e]=0};let An=(t,e,r)=>(e<<t.hash_shift^r)&t.hash_mask;const hn=t=>{const e=t.state;let r=e.pending;r>t.avail_out&&(r=t.avail_out),0!==r&&(t.output.set(e.pending_buf.subarray(e.pending_out,e.pending_out+r),t.next_out),t.next_out+=r,e.pending_out+=r,t.total_out+=r,t.avail_out-=r,e.pending-=r,0===e.pending&&(e.pending_out=0))},Tn=(t,e)=>{vr(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,hn(t.strm)},Rn=(t,e)=>{t.pending_buf[t.pending++]=e},yn=(t,e)=>{t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e},In=(t,e,r,n)=>{let i=t.avail_in;return i>n&&(i=n),0===i?0:(t.avail_in-=i,e.set(t.input.subarray(t.next_in,t.next_in+i),r),1===t.state.wrap?t.adler=wr(t.adler,e,i,r):2===t.state.wrap&&(t.adler=Br(t.adler,e,i,r)),t.next_in+=i,t.total_in+=i,i)},Nn=(t,e)=>{let r,n,i=t.max_chain_length,s=t.strstart,o=t.prev_length,a=t.nice_match;const c=t.strstart>t.w_size-an?t.strstart-(t.w_size-an):0,f=t.window,u=t.w_mask,l=t.prev,E=t.strstart+on;let _=f[s+o-1],A=f[s+o];t.prev_length>=t.good_match&&(i>>=2),a>t.lookahead&&(a=t.lookahead);do{if(r=e,f[r+o]===A&&f[r+o-1]===_&&f[r]===f[s]&&f[++r]===f[s+1]){s+=2,r++;do{}while(f[++s]===f[++r]&&f[++s]===f[++r]&&f[++s]===f[++r]&&f[++s]===f[++r]&&f[++s]===f[++r]&&f[++s]===f[++r]&&f[++s]===f[++r]&&f[++s]===f[++r]&&s<E);if(n=on-(E-s),s=E-on,n>o){if(t.match_start=e,o=n,n>=a)break;_=f[s+o-1],A=f[s+o]}}}while((e=l[e&u])>c&&0!=--i);return o<=t.lookahead?o:t.lookahead},Un=t=>{const e=t.w_size;let r,n,i,s,o;do{if(s=t.window_size-t.lookahead-t.strstart,t.strstart>=e+(e-an)){t.window.set(t.window.subarray(e,e+e),0),t.match_start-=e,t.strstart-=e,t.block_start-=e,n=t.hash_size,r=n;do{i=t.head[--r],t.head[r]=i>=e?i-e:0}while(--n);n=e,r=n;do{i=t.prev[--r],t.prev[r]=i>=e?i-e:0}while(--n);s+=e}if(0===t.strm.avail_in)break;if(n=In(t.strm,t.window,t.strstart+t.lookahead,s),t.lookahead+=n,t.lookahead+t.insert>=3)for(o=t.strstart-t.insert,t.ins_h=t.window[o],t.ins_h=An(t,t.ins_h,t.window[o+1]);t.insert&&(t.ins_h=An(t,t.ins_h,t.window[o+3-1]),t.prev[o&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=o,o++,t.insert--,!(t.lookahead+t.insert<3)););}while(t.lookahead<an&&0!==t.strm.avail_in)},Sn=(t,e)=>{let r,n;for(;;){if(t.lookahead<an){if(Un(t),t.lookahead<an&&e===xr)return 1;if(0===t.lookahead)break}if(r=0,t.lookahead>=3&&(t.ins_h=An(t,t.ins_h,t.window[t.strstart+3-1]),r=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!==r&&t.strstart-r<=t.w_size-an&&(t.match_length=Nn(t,r)),t.match_length>=3)if(n=Xr(t,t.strstart-t.match_start,t.match_length-3),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=3){t.match_length--;do{t.strstart++,t.ins_h=An(t,t.ins_h,t.window[t.strstart+3-1]),r=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart}while(0!=--t.match_length);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=An(t,t.ins_h,t.window[t.strstart+1]);else n=Xr(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(n&&(Tn(t,!1),0===t.strm.avail_out))return 1}return t.insert=t.strstart<2?t.strstart:2,e===Zr?(Tn(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(Tn(t,!1),0===t.strm.avail_out)?1:2},dn=(t,e)=>{let r,n,i;for(;;){if(t.lookahead<an){if(Un(t),t.lookahead<an&&e===xr)return 1;if(0===t.lookahead)break}if(r=0,t.lookahead>=3&&(t.ins_h=An(t,t.ins_h,t.window[t.strstart+3-1]),r=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=2,0!==r&&t.prev_length<t.max_lazy_match&&t.strstart-r<=t.w_size-an&&(t.match_length=Nn(t,r),t.match_length<=5&&(t.strategy===Jr||3===t.match_length&&t.strstart-t.match_start>4096)&&(t.match_length=2)),t.prev_length>=3&&t.match_length<=t.prev_length){i=t.strstart+t.lookahead-3,n=Xr(t,t.strstart-1-t.prev_match,t.prev_length-3),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=i&&(t.ins_h=An(t,t.ins_h,t.window[t.strstart+3-1]),r=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart)}while(0!=--t.prev_length);if(t.match_available=0,t.match_length=2,t.strstart++,n&&(Tn(t,!1),0===t.strm.avail_out))return 1}else if(t.match_available){if(n=Xr(t,0,t.window[t.strstart-1]),n&&Tn(t,!1),t.strstart++,t.lookahead--,0===t.strm.avail_out)return 1}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(n=Xr(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<2?t.strstart:2,e===Zr?(Tn(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(Tn(t,!1),0===t.strm.avail_out)?1:2};function mn(t,e,r,n,i){this.good_length=t,this.max_lazy=e,this.nice_length=r,this.max_chain=n,this.func=i}const On=[new mn(0,0,0,0,((t,e)=>{let r=65535;for(r>t.pending_buf_size-5&&(r=t.pending_buf_size-5);;){if(t.lookahead<=1){if(Un(t),0===t.lookahead&&e===xr)return 1;if(0===t.lookahead)break}t.strstart+=t.lookahead,t.lookahead=0;const n=t.block_start+r;if((0===t.strstart||t.strstart>=n)&&(t.lookahead=t.strstart-n,t.strstart=n,Tn(t,!1),0===t.strm.avail_out))return 1;if(t.strstart-t.block_start>=t.w_size-an&&(Tn(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===Zr?(Tn(t,!0),0===t.strm.avail_out?3:4):(t.strstart>t.block_start&&(Tn(t,!1),t.strm.avail_out),1)})),new mn(4,4,8,4,Sn),new mn(4,5,16,8,Sn),new mn(4,6,32,32,Sn),new mn(4,4,16,16,dn),new mn(8,16,32,32,dn),new mn(8,16,128,128,dn),new mn(8,32,128,256,dn),new mn(32,128,258,1024,dn),new mn(32,258,258,4096,dn)];function Mn(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=sn,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),_n(this.dyn_ltree),_n(this.dyn_dtree),_n(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),_n(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),_n(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const Fn=t=>{if(!t||!t.state)return ln(t,Wr);t.total_in=t.total_out=0,t.data_type=nn;const e=t.state;return e.pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=e.wrap?42:fn,t.adler=2===e.wrap?0:1,e.last_flush=xr,gr(e),Kr},Cn=t=>{const e=Fn(t);var r;return e===Kr&&((r=t.state).window_size=2*r.w_size,_n(r.head),r.max_lazy_match=On[r.level].max_lazy,r.good_match=On[r.level].good_length,r.nice_match=On[r.level].nice_length,r.max_chain_length=On[r.level].max_chain,r.strstart=0,r.block_start=0,r.lookahead=0,r.insert=0,r.match_length=r.prev_length=2,r.match_available=0,r.ins_h=0),e},bn=(t,e,r,n,i,s)=>{if(!t)return Wr;let o=1;if(e===$r&&(e=6),n<0?(o=0,n=-n):n>15&&(o=2,n-=16),i<1||i>9||r!==sn||n<8||n>15||e<0||e>9||s<0||s>en)return ln(t,Wr);8===n&&(n=9);const a=new Mn;return t.state=a,a.strm=t,a.wrap=o,a.gzhead=null,a.w_bits=n,a.w_size=1<<a.w_bits,a.w_mask=a.w_size-1,a.hash_bits=i+7,a.hash_size=1<<a.hash_bits,a.hash_mask=a.hash_size-1,a.hash_shift=~~((a.hash_bits+3-1)/3),a.window=new Uint8Array(2*a.w_size),a.head=new Uint16Array(a.hash_size),a.prev=new Uint16Array(a.w_size),a.lit_bufsize=1<<i+6,a.pending_buf_size=4*a.lit_bufsize,a.pending_buf=new Uint8Array(a.pending_buf_size),a.d_buf=1*a.lit_bufsize,a.l_buf=3*a.lit_bufsize,a.level=e,a.strategy=s,a.method=r,Cn(t)};var pn=(t,e)=>{let r=e.length;if(!t||!t.state)return Wr;const n=t.state,i=n.wrap;if(2===i||1===i&&42!==n.status||n.lookahead)return Wr;if(1===i&&(t.adler=wr(t.adler,e,r,0)),n.wrap=0,r>=n.w_size){0===i&&(_n(n.head),n.strstart=0,n.block_start=0,n.insert=0);let t=new Uint8Array(n.w_size);t.set(e.subarray(r-n.w_size,r),0),e=t,r=n.w_size}const s=t.avail_in,o=t.next_in,a=t.input;for(t.avail_in=r,t.next_in=0,t.input=e,Un(n);n.lookahead>=3;){let t=n.strstart,e=n.lookahead-2;do{n.ins_h=An(n,n.ins_h,n.window[t+3-1]),n.prev[t&n.w_mask]=n.head[n.ins_h],n.head[n.ins_h]=t,t++}while(--e);n.strstart=t,n.lookahead=2,Un(n)}return n.strstart+=n.lookahead,n.block_start=n.strstart,n.insert=n.lookahead,n.lookahead=0,n.match_length=n.prev_length=2,n.match_available=0,t.next_in=o,t.input=a,t.avail_in=s,n.wrap=i,Kr},wn={deflateInit:(t,e)=>bn(t,e,sn,15,8,rn),deflateInit2:bn,deflateReset:Cn,deflateResetKeep:Fn,deflateSetHeader:(t,e)=>t&&t.state?2!==t.state.wrap?Wr:(t.state.gzhead=e,Kr):Wr,deflate:(t,e)=>{let r,n;if(!t||!t.state||e>Yr||e<0)return t?ln(t,Wr):Wr;const i=t.state;if(!t.output||!t.input&&0!==t.avail_in||i.status===un&&e!==Zr)return ln(t,0===t.avail_out?qr:Wr);i.strm=t;const s=i.last_flush;if(i.last_flush=e,42===i.status)if(2===i.wrap)t.adler=0,Rn(i,31),Rn(i,139),Rn(i,8),i.gzhead?(Rn(i,(i.gzhead.text?1:0)+(i.gzhead.hcrc?2:0)+(i.gzhead.extra?4:0)+(i.gzhead.name?8:0)+(i.gzhead.comment?16:0)),Rn(i,255&i.gzhead.time),Rn(i,i.gzhead.time>>8&255),Rn(i,i.gzhead.time>>16&255),Rn(i,i.gzhead.time>>24&255),Rn(i,9===i.level?2:i.strategy>=Qr||i.level<2?4:0),Rn(i,255&i.gzhead.os),i.gzhead.extra&&i.gzhead.extra.length&&(Rn(i,255&i.gzhead.extra.length),Rn(i,i.gzhead.extra.length>>8&255)),i.gzhead.hcrc&&(t.adler=Br(t.adler,i.pending_buf,i.pending,0)),i.gzindex=0,i.status=69):(Rn(i,0),Rn(i,0),Rn(i,0),Rn(i,0),Rn(i,0),Rn(i,9===i.level?2:i.strategy>=Qr||i.level<2?4:0),Rn(i,3),i.status=fn);else{let e=sn+(i.w_bits-8<<4)<<8,r=-1;r=i.strategy>=Qr||i.level<2?0:i.level<6?1:6===i.level?2:3,e|=r<<6,0!==i.strstart&&(e|=32),e+=31-e%31,i.status=fn,yn(i,e),0!==i.strstart&&(yn(i,t.adler>>>16),yn(i,65535&t.adler)),t.adler=1}if(69===i.status)if(i.gzhead.extra){for(r=i.pending;i.gzindex<(65535&i.gzhead.extra.length)&&(i.pending!==i.pending_buf_size||(i.gzhead.hcrc&&i.pending>r&&(t.adler=Br(t.adler,i.pending_buf,i.pending-r,r)),hn(t),r=i.pending,i.pending!==i.pending_buf_size));)Rn(i,255&i.gzhead.extra[i.gzindex]),i.gzindex++;i.gzhead.hcrc&&i.pending>r&&(t.adler=Br(t.adler,i.pending_buf,i.pending-r,r)),i.gzindex===i.gzhead.extra.length&&(i.gzindex=0,i.status=73)}else i.status=73;if(73===i.status)if(i.gzhead.name){r=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>r&&(t.adler=Br(t.adler,i.pending_buf,i.pending-r,r)),hn(t),r=i.pending,i.pending===i.pending_buf_size)){n=1;break}n=i.gzindex<i.gzhead.name.length?255&i.gzhead.name.charCodeAt(i.gzindex++):0,Rn(i,n)}while(0!==n);i.gzhead.hcrc&&i.pending>r&&(t.adler=Br(t.adler,i.pending_buf,i.pending-r,r)),0===n&&(i.gzindex=0,i.status=91)}else i.status=91;if(91===i.status)if(i.gzhead.comment){r=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>r&&(t.adler=Br(t.adler,i.pending_buf,i.pending-r,r)),hn(t),r=i.pending,i.pending===i.pending_buf_size)){n=1;break}n=i.gzindex<i.gzhead.comment.length?255&i.gzhead.comment.charCodeAt(i.gzindex++):0,Rn(i,n)}while(0!==n);i.gzhead.hcrc&&i.pending>r&&(t.adler=Br(t.adler,i.pending_buf,i.pending-r,r)),0===n&&(i.status=cn)}else i.status=cn;if(i.status===cn&&(i.gzhead.hcrc?(i.pending+2>i.pending_buf_size&&hn(t),i.pending+2<=i.pending_buf_size&&(Rn(i,255&t.adler),Rn(i,t.adler>>8&255),t.adler=0,i.status=fn)):i.status=fn),0!==i.pending){if(hn(t),0===t.avail_out)return i.last_flush=-1,Kr}else if(0===t.avail_in&&En(e)<=En(s)&&e!==Zr)return ln(t,qr);if(i.status===un&&0!==t.avail_in)return ln(t,qr);if(0!==t.avail_in||0!==i.lookahead||e!==xr&&i.status!==un){let r=i.strategy===Qr?((t,e)=>{let r;for(;;){if(0===t.lookahead&&(Un(t),0===t.lookahead)){if(e===xr)return 1;break}if(t.match_length=0,r=Xr(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,r&&(Tn(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===Zr?(Tn(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(Tn(t,!1),0===t.strm.avail_out)?1:2})(i,e):i.strategy===tn?((t,e)=>{let r,n,i,s;const o=t.window;for(;;){if(t.lookahead<=on){if(Un(t),t.lookahead<=on&&e===xr)return 1;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=3&&t.strstart>0&&(i=t.strstart-1,n=o[i],n===o[++i]&&n===o[++i]&&n===o[++i])){s=t.strstart+on;do{}while(n===o[++i]&&n===o[++i]&&n===o[++i]&&n===o[++i]&&n===o[++i]&&n===o[++i]&&n===o[++i]&&n===o[++i]&&i<s);t.match_length=on-(s-i),t.match_length>t.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=3?(r=Xr(t,1,t.match_length-3),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(r=Xr(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),r&&(Tn(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===Zr?(Tn(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(Tn(t,!1),0===t.strm.avail_out)?1:2})(i,e):On[i.level].func(i,e);if(3!==r&&4!==r||(i.status=un),1===r||3===r)return 0===t.avail_out&&(i.last_flush=-1),Kr;if(2===r&&(e===Vr?Hr(i):e!==Yr&&(Gr(i,0,0,!1),e===kr&&(_n(i.head),0===i.lookahead&&(i.strstart=0,i.block_start=0,i.insert=0))),hn(t),0===t.avail_out))return i.last_flush=-1,Kr}return e!==Zr?Kr:i.wrap<=0?zr:(2===i.wrap?(Rn(i,255&t.adler),Rn(i,t.adler>>8&255),Rn(i,t.adler>>16&255),Rn(i,t.adler>>24&255),Rn(i,255&t.total_in),Rn(i,t.total_in>>8&255),Rn(i,t.total_in>>16&255),Rn(i,t.total_in>>24&255)):(yn(i,t.adler>>>16),yn(i,65535&t.adler)),hn(t),i.wrap>0&&(i.wrap=-i.wrap),0!==i.pending?Kr:zr)},deflateEnd:t=>{if(!t||!t.state)return Wr;const e=t.state.status;return 42!==e&&69!==e&&73!==e&&91!==e&&e!==cn&&e!==fn&&e!==un?ln(t,Wr):(t.state=null,e===fn?ln(t,jr):Kr)},deflateSetDictionary:pn,deflateInfo:"pako deflate (from Nodeca project)"};const Dn=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var Bn=function(t){const e=Array.prototype.slice.call(arguments,1);for(;e.length;){const r=e.shift();if(r){if("object"!=typeof r)throw new TypeError(r+"must be non-object");for(const e in r)Dn(r,e)&&(t[e]=r[e])}}return t},Ln=t=>{let e=0;for(let r=0,n=t.length;r<n;r++)e+=t[r].length;const r=new Uint8Array(e);for(let e=0,n=0,i=t.length;e<i;e++){let i=t[e];r.set(i,n),n+=i.length}return r};let Pn=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(t){Pn=!1}const gn=new Uint8Array(256);for(let t=0;t<256;t++)gn[t]=t>=252?6:t>=248?5:t>=240?4:t>=224?3:t>=192?2:1;gn[254]=gn[254]=1;var Gn=t=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(t);let e,r,n,i,s,o=t.length,a=0;for(i=0;i<o;i++)r=t.charCodeAt(i),55296==(64512&r)&&i+1<o&&(n=t.charCodeAt(i+1),56320==(64512&n)&&(r=65536+(r-55296<<10)+(n-56320),i++)),a+=r<128?1:r<2048?2:r<65536?3:4;for(e=new Uint8Array(a),s=0,i=0;s<a;i++)r=t.charCodeAt(i),55296==(64512&r)&&i+1<o&&(n=t.charCodeAt(i+1),56320==(64512&n)&&(r=65536+(r-55296<<10)+(n-56320),i++)),r<128?e[s++]=r:r<2048?(e[s++]=192|r>>>6,e[s++]=128|63&r):r<65536?(e[s++]=224|r>>>12,e[s++]=128|r>>>6&63,e[s++]=128|63&r):(e[s++]=240|r>>>18,e[s++]=128|r>>>12&63,e[s++]=128|r>>>6&63,e[s++]=128|63&r);return e},vn=(t,e)=>{const r=e||t.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(t.subarray(0,e));let n,i;const s=new Array(2*r);for(i=0,n=0;n<r;){let e=t[n++];if(e<128){s[i++]=e;continue}let o=gn[e];if(o>4)s[i++]=65533,n+=o-1;else{for(e&=2===o?31:3===o?15:7;o>1&&n<r;)e=e<<6|63&t[n++],o--;o>1?s[i++]=65533:e<65536?s[i++]=e:(e-=65536,s[i++]=55296|e>>10&1023,s[i++]=56320|1023&e)}}return((t,e)=>{if(e<65534&&t.subarray&&Pn)return String.fromCharCode.apply(null,t.length===e?t:t.subarray(0,e));let r="";for(let n=0;n<e;n++)r+=String.fromCharCode(t[n]);return r})(s,i)},Xn=(t,e)=>{(e=e||t.length)>t.length&&(e=t.length);let r=e-1;for(;r>=0&&128==(192&t[r]);)r--;return r<0||0===r?e:r+gn[t[r]]>e?r:e};var Hn=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0};const xn=Object.prototype.toString,{Z_NO_FLUSH:Vn,Z_SYNC_FLUSH:kn,Z_FULL_FLUSH:Zn,Z_FINISH:Yn,Z_OK:Kn,Z_STREAM_END:zn,Z_DEFAULT_COMPRESSION:Wn,Z_DEFAULT_STRATEGY:jn,Z_DEFLATED:qn}=Pr;function $n(t){this.options=Bn({level:Wn,method:qn,chunkSize:16384,windowBits:15,memLevel:8,strategy:jn},t||{});let e=this.options;e.raw&&e.windowBits>0?e.windowBits=-e.windowBits:e.gzip&&e.windowBits>0&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Hn,this.strm.avail_out=0;let r=wn.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(r!==Kn)throw new Error(Lr[r]);if(e.header&&wn.deflateSetHeader(this.strm,e.header),e.dictionary){let t;if(t="string"==typeof e.dictionary?Gn(e.dictionary):"[object ArrayBuffer]"===xn.call(e.dictionary)?new Uint8Array(e.dictionary):e.dictionary,r=wn.deflateSetDictionary(this.strm,t),r!==Kn)throw new Error(Lr[r]);this.St=!0}}function Jn(t,e){const r=new $n(e);if(r.push(t,!0),r.err)throw r.msg||Lr[r.err];return r.result}$n.prototype.push=function(t,e){const r=this.strm,n=this.options.chunkSize;let i,s;if(this.ended)return!1;for(s=e===~~e?e:!0===e?Yn:Vn,"string"==typeof t?r.input=Gn(t):"[object ArrayBuffer]"===xn.call(t)?r.input=new Uint8Array(t):r.input=t,r.next_in=0,r.avail_in=r.input.length;;)if(0===r.avail_out&&(r.output=new Uint8Array(n),r.next_out=0,r.avail_out=n),(s===kn||s===Zn)&&r.avail_out<=6)this.onData(r.output.subarray(0,r.next_out)),r.avail_out=0;else{if(i=wn.deflate(r,s),i===zn)return r.next_out>0&&this.onData(r.output.subarray(0,r.next_out)),i=wn.deflateEnd(this.strm),this.onEnd(i),this.ended=!0,i===Kn;if(0!==r.avail_out){if(s>0&&r.next_out>0)this.onData(r.output.subarray(0,r.next_out)),r.avail_out=0;else if(0===r.avail_in)break}else this.onData(r.output)}return!0},$n.prototype.onData=function(t){this.chunks.push(t)},$n.prototype.onEnd=function(t){t===Kn&&(this.result=Ln(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};var Qn={Deflate:$n,deflate:Jn,deflateRaw:function(t,e){return(e=e||{}).raw=!0,Jn(t,e)},gzip:function(t,e){return(e=e||{}).gzip=!0,Jn(t,e)},constants:Pr};var ti=function(t,e){let r,n,i,s,o,a,c,f,u,l,E,_,A,h,T,R,y,I,N,U,S,d,m,O;const M=t.state;r=t.next_in,m=t.input,n=r+(t.avail_in-5),i=t.next_out,O=t.output,s=i-(e-t.avail_out),o=i+(t.avail_out-257),a=M.dmax,c=M.wsize,f=M.whave,u=M.wnext,l=M.window,E=M.hold,_=M.bits,A=M.lencode,h=M.distcode,T=(1<<M.lenbits)-1,R=(1<<M.distbits)-1;t:do{_<15&&(E+=m[r++]<<_,_+=8,E+=m[r++]<<_,_+=8),y=A[E&T];e:for(;;){if(I=y>>>24,E>>>=I,_-=I,I=y>>>16&255,0===I)O[i++]=65535&y;else{if(!(16&I)){if(0==(64&I)){y=A[(65535&y)+(E&(1<<I)-1)];continue e}if(32&I){M.mode=12;break t}t.msg="invalid literal/length code",M.mode=30;break t}N=65535&y,I&=15,I&&(_<I&&(E+=m[r++]<<_,_+=8),N+=E&(1<<I)-1,E>>>=I,_-=I),_<15&&(E+=m[r++]<<_,_+=8,E+=m[r++]<<_,_+=8),y=h[E&R];r:for(;;){if(I=y>>>24,E>>>=I,_-=I,I=y>>>16&255,!(16&I)){if(0==(64&I)){y=h[(65535&y)+(E&(1<<I)-1)];continue r}t.msg="invalid distance code",M.mode=30;break t}if(U=65535&y,I&=15,_<I&&(E+=m[r++]<<_,_+=8,_<I&&(E+=m[r++]<<_,_+=8)),U+=E&(1<<I)-1,U>a){t.msg="invalid distance too far back",M.mode=30;break t}if(E>>>=I,_-=I,I=i-s,U>I){if(I=U-I,I>f&&M.sane){t.msg="invalid distance too far back",M.mode=30;break t}if(S=0,d=l,0===u){if(S+=c-I,I<N){N-=I;do{O[i++]=l[S++]}while(--I);S=i-U,d=O}}else if(u<I){if(S+=c+u-I,I-=u,I<N){N-=I;do{O[i++]=l[S++]}while(--I);if(S=0,u<N){I=u,N-=I;do{O[i++]=l[S++]}while(--I);S=i-U,d=O}}}else if(S+=u-I,I<N){N-=I;do{O[i++]=l[S++]}while(--I);S=i-U,d=O}for(;N>2;)O[i++]=d[S++],O[i++]=d[S++],O[i++]=d[S++],N-=3;N&&(O[i++]=d[S++],N>1&&(O[i++]=d[S++]))}else{S=i-U;do{O[i++]=O[S++],O[i++]=O[S++],O[i++]=O[S++],N-=3}while(N>2);N&&(O[i++]=O[S++],N>1&&(O[i++]=O[S++]))}break}}break}}while(r<n&&i<o);N=_>>3,r-=N,_-=N<<3,E&=(1<<_)-1,t.next_in=r,t.next_out=i,t.avail_in=r<n?n-r+5:5-(r-n),t.avail_out=i<o?o-i+257:257-(i-o),M.hold=E,M.bits=_};const ei=15,ri=new Uint16Array([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0]),ni=new Uint8Array([16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78]),ii=new Uint16Array([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0]),si=new Uint8Array([16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64]);var oi=(t,e,r,n,i,s,o,a)=>{const c=a.bits;let f,u,l,E,_,A,h=0,T=0,R=0,y=0,I=0,N=0,U=0,S=0,d=0,m=0,O=null,M=0;const F=new Uint16Array(16),C=new Uint16Array(16);let b,p,w,D=null,B=0;for(h=0;h<=ei;h++)F[h]=0;for(T=0;T<n;T++)F[e[r+T]]++;for(I=c,y=ei;y>=1&&0===F[y];y--);if(I>y&&(I=y),0===y)return i[s++]=20971520,i[s++]=20971520,a.bits=1,0;for(R=1;R<y&&0===F[R];R++);for(I<R&&(I=R),S=1,h=1;h<=ei;h++)if(S<<=1,S-=F[h],S<0)return-1;if(S>0&&(0===t||1!==y))return-1;for(C[1]=0,h=1;h<ei;h++)C[h+1]=C[h]+F[h];for(T=0;T<n;T++)0!==e[r+T]&&(o[C[e[r+T]]++]=T);if(0===t?(O=D=o,A=19):1===t?(O=ri,M-=257,D=ni,B-=257,A=256):(O=ii,D=si,A=-1),m=0,T=0,h=R,_=s,N=I,U=0,l=-1,d=1<<I,E=d-1,1===t&&d>852||2===t&&d>592)return 1;for(;;){b=h-U,o[T]<A?(p=0,w=o[T]):o[T]>A?(p=D[B+o[T]],w=O[M+o[T]]):(p=96,w=0),f=1<<h-U,u=1<<N,R=u;do{u-=f,i[_+(m>>U)+u]=b<<24|p<<16|w|0}while(0!==u);for(f=1<<h-1;m&f;)f>>=1;if(0!==f?(m&=f-1,m+=f):m=0,T++,0==--F[h]){if(h===y)break;h=e[r+o[T]]}if(h>I&&(m&E)!==l){for(0===U&&(U=I),_+=R,N=h-U,S=1<<N;N+U<y&&(S-=F[N+U],!(S<=0));)N++,S<<=1;if(d+=1<<N,1===t&&d>852||2===t&&d>592)return 1;l=m&E,i[l]=I<<24|N<<16|_-s|0}}return 0!==m&&(i[_+m]=h-U<<24|64<<16|0),a.bits=I,0};const{Z_FINISH:ai,Z_BLOCK:ci,Z_TREES:fi,Z_OK:ui,Z_STREAM_END:li,Z_NEED_DICT:Ei,Z_STREAM_ERROR:_i,Z_DATA_ERROR:Ai,Z_MEM_ERROR:hi,Z_BUF_ERROR:Ti,Z_DEFLATED:Ri}=Pr,yi=12,Ii=30,Ni=t=>(t>>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24);function Ui(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const Si=t=>{if(!t||!t.state)return _i;const e=t.state;return t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=1&e.wrap),e.mode=1,e.last=0,e.havedict=0,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new Int32Array(852),e.distcode=e.distdyn=new Int32Array(592),e.sane=1,e.back=-1,ui},di=t=>{if(!t||!t.state)return _i;const e=t.state;return e.wsize=0,e.whave=0,e.wnext=0,Si(t)},mi=(t,e)=>{let r;if(!t||!t.state)return _i;const n=t.state;return e<0?(r=0,e=-e):(r=1+(e>>4),e<48&&(e&=15)),e&&(e<8||e>15)?_i:(null!==n.window&&n.wbits!==e&&(n.window=null),n.wrap=r,n.wbits=e,di(t))},Oi=(t,e)=>{if(!t)return _i;const r=new Ui;t.state=r,r.window=null;const n=mi(t,e);return n!==ui&&(t.state=null),n};let Mi,Fi,Ci=!0;const bi=t=>{if(Ci){Mi=new Int32Array(512),Fi=new Int32Array(32);let e=0;for(;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(oi(1,t.lens,0,288,Mi,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;oi(2,t.lens,0,32,Fi,0,t.work,{bits:5}),Ci=!1}t.lencode=Mi,t.lenbits=9,t.distcode=Fi,t.distbits=5},pi=(t,e,r,n)=>{let i;const s=t.state;return null===s.window&&(s.wsize=1<<s.wbits,s.wnext=0,s.whave=0,s.window=new Uint8Array(s.wsize)),n>=s.wsize?(s.window.set(e.subarray(r-s.wsize,r),0),s.wnext=0,s.whave=s.wsize):(i=s.wsize-s.wnext,i>n&&(i=n),s.window.set(e.subarray(r-n,r-n+i),s.wnext),(n-=i)?(s.window.set(e.subarray(r-n,r),0),s.wnext=n,s.whave=s.wsize):(s.wnext+=i,s.wnext===s.wsize&&(s.wnext=0),s.whave<s.wsize&&(s.whave+=i))),0};var wi=(t,e)=>{let r,n,i,s,o,a,c,f,u,l,E,_,A,h,T,R,y,I,N,U,S,d,m=0;const O=new Uint8Array(4);let M,F;const C=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(!t||!t.state||!t.output||!t.input&&0!==t.avail_in)return _i;r=t.state,r.mode===yi&&(r.mode=13),o=t.next_out,i=t.output,c=t.avail_out,s=t.next_in,n=t.input,a=t.avail_in,f=r.hold,u=r.bits,l=a,E=c,d=ui;t:for(;;)switch(r.mode){case 1:if(0===r.wrap){r.mode=13;break}for(;u<16;){if(0===a)break t;a--,f+=n[s++]<<u,u+=8}if(2&r.wrap&&35615===f){r.check=0,O[0]=255&f,O[1]=f>>>8&255,r.check=Br(r.check,O,2,0),f=0,u=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&f)<<8)+(f>>8))%31){t.msg="incorrect header check",r.mode=Ii;break}if((15&f)!==Ri){t.msg="unknown compression method",r.mode=Ii;break}if(f>>>=4,u-=4,S=8+(15&f),0===r.wbits)r.wbits=S;else if(S>r.wbits){t.msg="invalid window size",r.mode=Ii;break}r.dmax=1<<r.wbits,t.adler=r.check=1,r.mode=512&f?10:yi,f=0,u=0;break;case 2:for(;u<16;){if(0===a)break t;a--,f+=n[s++]<<u,u+=8}if(r.flags=f,(255&r.flags)!==Ri){t.msg="unknown compression method",r.mode=Ii;break}if(57344&r.flags){t.msg="unknown header flags set",r.mode=Ii;break}r.head&&(r.head.text=f>>8&1),512&r.flags&&(O[0]=255&f,O[1]=f>>>8&255,r.check=Br(r.check,O,2,0)),f=0,u=0,r.mode=3;case 3:for(;u<32;){if(0===a)break t;a--,f+=n[s++]<<u,u+=8}r.head&&(r.head.time=f),512&r.flags&&(O[0]=255&f,O[1]=f>>>8&255,O[2]=f>>>16&255,O[3]=f>>>24&255,r.check=Br(r.check,O,4,0)),f=0,u=0,r.mode=4;case 4:for(;u<16;){if(0===a)break t;a--,f+=n[s++]<<u,u+=8}r.head&&(r.head.xflags=255&f,r.head.os=f>>8),512&r.flags&&(O[0]=255&f,O[1]=f>>>8&255,r.check=Br(r.check,O,2,0)),f=0,u=0,r.mode=5;case 5:if(1024&r.flags){for(;u<16;){if(0===a)break t;a--,f+=n[s++]<<u,u+=8}r.length=f,r.head&&(r.head.extra_len=f),512&r.flags&&(O[0]=255&f,O[1]=f>>>8&255,r.check=Br(r.check,O,2,0)),f=0,u=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&(_=r.length,_>a&&(_=a),_&&(r.head&&(S=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Uint8Array(r.head.extra_len)),r.head.extra.set(n.subarray(s,s+_),S)),512&r.flags&&(r.check=Br(r.check,n,_,s)),a-=_,s+=_,r.length-=_),r.length))break t;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===a)break t;_=0;do{S=n[s+_++],r.head&&S&&r.length<65536&&(r.head.name+=String.fromCharCode(S))}while(S&&_<a);if(512&r.flags&&(r.check=Br(r.check,n,_,s)),a-=_,s+=_,S)break t}else r.head&&(r.head.name=null);r.length=0,r.mode=8;case 8:if(4096&r.flags){if(0===a)break t;_=0;do{S=n[s+_++],r.head&&S&&r.length<65536&&(r.head.comment+=String.fromCharCode(S))}while(S&&_<a);if(512&r.flags&&(r.check=Br(r.check,n,_,s)),a-=_,s+=_,S)break t}else r.head&&(r.head.comment=null);r.mode=9;case 9:if(512&r.flags){for(;u<16;){if(0===a)break t;a--,f+=n[s++]<<u,u+=8}if(f!==(65535&r.check)){t.msg="header crc mismatch",r.mode=Ii;break}f=0,u=0}r.head&&(r.head.hcrc=r.flags>>9&1,r.head.done=!0),t.adler=r.check=0,r.mode=yi;break;case 10:for(;u<32;){if(0===a)break t;a--,f+=n[s++]<<u,u+=8}t.adler=r.check=Ni(f),f=0,u=0,r.mode=11;case 11:if(0===r.havedict)return t.next_out=o,t.avail_out=c,t.next_in=s,t.avail_in=a,r.hold=f,r.bits=u,Ei;t.adler=r.check=1,r.mode=yi;case yi:if(e===ci||e===fi)break t;case 13:if(r.last){f>>>=7&u,u-=7&u,r.mode=27;break}for(;u<3;){if(0===a)break t;a--,f+=n[s++]<<u,u+=8}switch(r.last=1&f,f>>>=1,u-=1,3&f){case 0:r.mode=14;break;case 1:if(bi(r),r.mode=20,e===fi){f>>>=2,u-=2;break t}break;case 2:r.mode=17;break;case 3:t.msg="invalid block type",r.mode=Ii}f>>>=2,u-=2;break;case 14:for(f>>>=7&u,u-=7&u;u<32;){if(0===a)break t;a--,f+=n[s++]<<u,u+=8}if((65535&f)!=(f>>>16^65535)){t.msg="invalid stored block lengths",r.mode=Ii;break}if(r.length=65535&f,f=0,u=0,r.mode=15,e===fi)break t;case 15:r.mode=16;case 16:if(_=r.length,_){if(_>a&&(_=a),_>c&&(_=c),0===_)break t;i.set(n.subarray(s,s+_),o),a-=_,s+=_,c-=_,o+=_,r.length-=_;break}r.mode=yi;break;case 17:for(;u<14;){if(0===a)break t;a--,f+=n[s++]<<u,u+=8}if(r.nlen=257+(31&f),f>>>=5,u-=5,r.ndist=1+(31&f),f>>>=5,u-=5,r.ncode=4+(15&f),f>>>=4,u-=4,r.nlen>286||r.ndist>30){t.msg="too many length or distance symbols",r.mode=Ii;break}r.have=0,r.mode=18;case 18:for(;r.have<r.ncode;){for(;u<3;){if(0===a)break t;a--,f+=n[s++]<<u,u+=8}r.lens[C[r.have++]]=7&f,f>>>=3,u-=3}for(;r.have<19;)r.lens[C[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,M={bits:r.lenbits},d=oi(0,r.lens,0,19,r.lencode,0,r.work,M),r.lenbits=M.bits,d){t.msg="invalid code lengths set",r.mode=Ii;break}r.have=0,r.mode=19;case 19:for(;r.have<r.nlen+r.ndist;){for(;m=r.lencode[f&(1<<r.lenbits)-1],T=m>>>24,R=m>>>16&255,y=65535&m,!(T<=u);){if(0===a)break t;a--,f+=n[s++]<<u,u+=8}if(y<16)f>>>=T,u-=T,r.lens[r.have++]=y;else{if(16===y){for(F=T+2;u<F;){if(0===a)break t;a--,f+=n[s++]<<u,u+=8}if(f>>>=T,u-=T,0===r.have){t.msg="invalid bit length repeat",r.mode=Ii;break}S=r.lens[r.have-1],_=3+(3&f),f>>>=2,u-=2}else if(17===y){for(F=T+3;u<F;){if(0===a)break t;a--,f+=n[s++]<<u,u+=8}f>>>=T,u-=T,S=0,_=3+(7&f),f>>>=3,u-=3}else{for(F=T+7;u<F;){if(0===a)break t;a--,f+=n[s++]<<u,u+=8}f>>>=T,u-=T,S=0,_=11+(127&f),f>>>=7,u-=7}if(r.have+_>r.nlen+r.ndist){t.msg="invalid bit length repeat",r.mode=Ii;break}for(;_--;)r.lens[r.have++]=S}}if(r.mode===Ii)break;if(0===r.lens[256]){t.msg="invalid code -- missing end-of-block",r.mode=Ii;break}if(r.lenbits=9,M={bits:r.lenbits},d=oi(1,r.lens,0,r.nlen,r.lencode,0,r.work,M),r.lenbits=M.bits,d){t.msg="invalid literal/lengths set",r.mode=Ii;break}if(r.distbits=6,r.distcode=r.distdyn,M={bits:r.distbits},d=oi(2,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,M),r.distbits=M.bits,d){t.msg="invalid distances set",r.mode=Ii;break}if(r.mode=20,e===fi)break t;case 20:r.mode=21;case 21:if(a>=6&&c>=258){t.next_out=o,t.avail_out=c,t.next_in=s,t.avail_in=a,r.hold=f,r.bits=u,ti(t,E),o=t.next_out,i=t.output,c=t.avail_out,s=t.next_in,n=t.input,a=t.avail_in,f=r.hold,u=r.bits,r.mode===yi&&(r.back=-1);break}for(r.back=0;m=r.lencode[f&(1<<r.lenbits)-1],T=m>>>24,R=m>>>16&255,y=65535&m,!(T<=u);){if(0===a)break t;a--,f+=n[s++]<<u,u+=8}if(R&&0==(240&R)){for(I=T,N=R,U=y;m=r.lencode[U+((f&(1<<I+N)-1)>>I)],T=m>>>24,R=m>>>16&255,y=65535&m,!(I+T<=u);){if(0===a)break t;a--,f+=n[s++]<<u,u+=8}f>>>=I,u-=I,r.back+=I}if(f>>>=T,u-=T,r.back+=T,r.length=y,0===R){r.mode=26;break}if(32&R){r.back=-1,r.mode=yi;break}if(64&R){t.msg="invalid literal/length code",r.mode=Ii;break}r.extra=15&R,r.mode=22;case 22:if(r.extra){for(F=r.extra;u<F;){if(0===a)break t;a--,f+=n[s++]<<u,u+=8}r.length+=f&(1<<r.extra)-1,f>>>=r.extra,u-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;m=r.distcode[f&(1<<r.distbits)-1],T=m>>>24,R=m>>>16&255,y=65535&m,!(T<=u);){if(0===a)break t;a--,f+=n[s++]<<u,u+=8}if(0==(240&R)){for(I=T,N=R,U=y;m=r.distcode[U+((f&(1<<I+N)-1)>>I)],T=m>>>24,R=m>>>16&255,y=65535&m,!(I+T<=u);){if(0===a)break t;a--,f+=n[s++]<<u,u+=8}f>>>=I,u-=I,r.back+=I}if(f>>>=T,u-=T,r.back+=T,64&R){t.msg="invalid distance code",r.mode=Ii;break}r.offset=y,r.extra=15&R,r.mode=24;case 24:if(r.extra){for(F=r.extra;u<F;){if(0===a)break t;a--,f+=n[s++]<<u,u+=8}r.offset+=f&(1<<r.extra)-1,f>>>=r.extra,u-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){t.msg="invalid distance too far back",r.mode=Ii;break}r.mode=25;case 25:if(0===c)break t;if(_=E-c,r.offset>_){if(_=r.offset-_,_>r.whave&&r.sane){t.msg="invalid distance too far back",r.mode=Ii;break}_>r.wnext?(_-=r.wnext,A=r.wsize-_):A=r.wnext-_,_>r.length&&(_=r.length),h=r.window}else h=i,A=o-r.offset,_=r.length;_>c&&(_=c),c-=_,r.length-=_;do{i[o++]=h[A++]}while(--_);0===r.length&&(r.mode=21);break;case 26:if(0===c)break t;i[o++]=r.length,c--,r.mode=21;break;case 27:if(r.wrap){for(;u<32;){if(0===a)break t;a--,f|=n[s++]<<u,u+=8}if(E-=c,t.total_out+=E,r.total+=E,E&&(t.adler=r.check=r.flags?Br(r.check,i,E,o-E):wr(r.check,i,E,o-E)),E=c,(r.flags?f:Ni(f))!==r.check){t.msg="incorrect data check",r.mode=Ii;break}f=0,u=0}r.mode=28;case 28:if(r.wrap&&r.flags){for(;u<32;){if(0===a)break t;a--,f+=n[s++]<<u,u+=8}if(f!==(4294967295&r.total)){t.msg="incorrect length check",r.mode=Ii;break}f=0,u=0}r.mode=29;case 29:d=li;break t;case Ii:d=Ai;break t;case 31:return hi;default:return _i}return t.next_out=o,t.avail_out=c,t.next_in=s,t.avail_in=a,r.hold=f,r.bits=u,(r.wsize||E!==t.avail_out&&r.mode<Ii&&(r.mode<27||e!==ai))&&pi(t,t.output,t.next_out,E-t.avail_out),l-=t.avail_in,E-=t.avail_out,t.total_in+=l,t.total_out+=E,r.total+=E,r.wrap&&E&&(t.adler=r.check=r.flags?Br(r.check,i,E,t.next_out-E):wr(r.check,i,E,t.next_out-E)),t.data_type=r.bits+(r.last?64:0)+(r.mode===yi?128:0)+(20===r.mode||15===r.mode?256:0),(0===l&&0===E||e===ai)&&d===ui&&(d=Ti),d},Di={inflateReset:di,inflateReset2:mi,inflateResetKeep:Si,inflateInit:t=>Oi(t,15),inflateInit2:Oi,inflate:wi,inflateEnd:t=>{if(!t||!t.state)return _i;let e=t.state;return e.window&&(e.window=null),t.state=null,ui},inflateGetHeader:(t,e)=>{if(!t||!t.state)return _i;const r=t.state;return 0==(2&r.wrap)?_i:(r.head=e,e.done=!1,ui)},inflateSetDictionary:(t,e)=>{const r=e.length;let n,i,s;return t&&t.state?(n=t.state,0!==n.wrap&&11!==n.mode?_i:11===n.mode&&(i=1,i=wr(i,e,r,0),i!==n.check)?Ai:(s=pi(t,e,r,r),s?(n.mode=31,hi):(n.havedict=1,ui))):_i},inflateInfo:"pako inflate (from Nodeca project)"};var Bi=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1};const Li=Object.prototype.toString,{Z_NO_FLUSH:Pi,Z_FINISH:gi,Z_OK:Gi,Z_STREAM_END:vi,Z_NEED_DICT:Xi,Z_STREAM_ERROR:Hi,Z_DATA_ERROR:xi,Z_MEM_ERROR:Vi}=Pr;function ki(t){this.options=Bn({chunkSize:65536,windowBits:15,to:""},t||{});const e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,0===e.windowBits&&(e.windowBits=-15)),!(e.windowBits>=0&&e.windowBits<16)||t&&t.windowBits||(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&0==(15&e.windowBits)&&(e.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Hn,this.strm.avail_out=0;let r=Di.inflateInit2(this.strm,e.windowBits);if(r!==Gi)throw new Error(Lr[r]);if(this.header=new Bi,Di.inflateGetHeader(this.strm,this.header),e.dictionary&&("string"==typeof e.dictionary?e.dictionary=Gn(e.dictionary):"[object ArrayBuffer]"===Li.call(e.dictionary)&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(r=Di.inflateSetDictionary(this.strm,e.dictionary),r!==Gi)))throw new Error(Lr[r])}function Zi(t,e){const r=new ki(e);if(r.push(t),r.err)throw r.msg||Lr[r.err];return r.result}ki.prototype.push=function(t,e){const r=this.strm,n=this.options.chunkSize,i=this.options.dictionary;let s,o,a;if(this.ended)return!1;for(o=e===~~e?e:!0===e?gi:Pi,"[object ArrayBuffer]"===Li.call(t)?r.input=new Uint8Array(t):r.input=t,r.next_in=0,r.avail_in=r.input.length;;){for(0===r.avail_out&&(r.output=new Uint8Array(n),r.next_out=0,r.avail_out=n),s=Di.inflate(r,o),s===Xi&&i&&(s=Di.inflateSetDictionary(r,i),s===Gi?s=Di.inflate(r,o):s===xi&&(s=Xi));r.avail_in>0&&s===vi&&r.state.wrap>0&&0!==t[r.next_in];)Di.inflateReset(r),s=Di.inflate(r,o);switch(s){case Hi:case xi:case Xi:case Vi:return this.onEnd(s),this.ended=!0,!1}if(a=r.avail_out,r.next_out&&(0===r.avail_out||s===vi))if("string"===this.options.to){let t=Xn(r.output,r.next_out),e=r.next_out-t,i=vn(r.output,t);r.next_out=e,r.avail_out=n-e,e&&r.output.set(r.output.subarray(t,t+e),0),this.onData(i)}else this.onData(r.output.length===r.next_out?r.output:r.output.subarray(0,r.next_out));if(s!==Gi||0!==a){if(s===vi)return s=Di.inflateEnd(this.strm),this.onEnd(s),this.ended=!0,!0;if(0===r.avail_in)break}}return!0},ki.prototype.onData=function(t){this.chunks.push(t)},ki.prototype.onEnd=function(t){t===Gi&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=Ln(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};var Yi={Inflate:ki,inflate:Zi,inflateRaw:function(t,e){return(e=e||{}).raw=!0,Zi(t,e)},ungzip:Zi,constants:Pr};const{Deflate:Ki,deflate:zi,deflateRaw:Wi,gzip:ji}=Qn,{Inflate:qi,inflate:$i,inflateRaw:Ji,ungzip:Qi}=Yi;var ts={Deflate:Ki,deflate:zi,deflateRaw:Wi,gzip:ji,Inflate:qi,inflate:$i,inflateRaw:Ji,ungzip:Qi,constants:Pr},es=5,rs=11,ns=13,is=14;function ss(t,e,r,n){var i=t|e<<8,s=i>>11&31,o=i>>5&63,a=31&i;return r[n+0]=s<<3|s>>2,r[n+1]=o<<2|o>>4,r[n+2]=a<<3|a>>2,r[n+3]=255,i}var os=new Uint8Array(16),as=new Uint8Array(16);function cs(t,e,r,n){var i=0;0!=(6&n)&&(i=8),function(t,e,r,n){for(var i=ss(e[r+0],e[r+1],os,0),s=ss(e[r+2],e[r+3],os,4),o=0;o<3;o++){var a=os[o],c=os[4+o];n&&i<=s?(os[8+o]=(a+c)/2,os[12+o]=0):(os[8+o]=(2*a+c)/3,os[12+o]=(a+2*c)/3)}for(os[11]=255,os[15]=n&&i<=s?0:255,o=0;o<4;++o){var f=e[r+4+o];as[4*o+0]=3&f,as[4*o+1]=f>>2&3,as[4*o+2]=f>>4&3,as[4*o+3]=f>>6&3}for(o=0;o<16;++o)for(var u=4*as[o],l=0;l<4;++l)t[4*o+l]=os[u+l]}(t,e,r+i,0!=(1&n)),0!=(2&n)?function(t,e,r){for(var n=0;n<8;++n){var i=bytes[r+n],s=15&i,o=240&i;t[8*n+3]=s|s<<4,t[8*n+7]=o|o>>4}}(t,0,r):0!=(4&n)&&function(t,e,r){var n=e[r+0],i=e[r+1];if(os[0]=n,os[1]=i,n<=i){for(var s=1;s<5;++s)os[1+s]=((5-s)*n+s*i)/5;os[6]=0,os[7]=255}else for(s=1;s<7;++s)os[1+s]=((7-s)*n+s*i)/7;r+=2;var o=0;for(s=0;s<2;++s){for(var a=0,c=0;c<3;++c)a|=e[r++]<<8*c;for(c=0;c<8;++c){var f=a>>3*c&7;as[o++]=f}}for(s=0;s<16;++s)t[4*s+3]=os[as[s]]}(t,e,r)}var fs=new Uint16Array(4);\n/*! @brief Decompresses an image in memory.\n\n @param rgba\t\tStorage for the decompressed pixels.\n @param width\tThe width of the source image.\n @param height\tThe height of the source image.\n @param blocks\tThe compressed DXT blocks.\n @param flags\tCompression flags.\n\n The decompressed pixels will be written as a contiguous array of width*height\n 16 rgba values, with each component as 1 byte each. In memory this is:\n\n { r1, g1, b1, a1, .... , rn, gn, bn, an } for n = width*height\n\n The flags parameter should specify either kDxt1, kDxt3 or kDxt5 compression,\n however, DXT1 will be used by default if none is specified. All other flags\n are ignored.\n\n Internally this function calls squish::Decompress for each block.\n */\nvar us=new Uint8Array(64);function ls(t){}function Es(){}ls.decode=function(t,e,r,n,i){if(null!=t&&null!=n&&0!=r&&0!=e){var s=0;1&(s=i>11||5===i?4:33)&&32&s?function(t,e,r,n){for(var i=t,s=0,o=0,a=0,c=0,f=0,u=0,l=0,E=0,_=0,A=e/4,h=r/4,T=0;T<h;T++)for(var R=0;R<A;R++)a=4*((h-T)*A+R),fs[0]=n[a],fs[1]=n[a+1],c=31&fs[0],f=2016&fs[0],u=63488&fs[0],l=31&fs[1],E=2016&fs[1],_=63488&fs[1],fs[2]=5*c+3*l>>3|5*f+3*E>>3&2016|5*u+3*_>>3&63488,fs[3]=5*l+3*c>>3|5*E+3*f>>3&2016|5*_+3*u>>3&63488,s=n[a+2],i[o=4*T*e+4*R]=fs[3&s],i[o+1]=fs[s>>2&3],i[o+2]=fs[s>>4&3],i[o+3]=fs[s>>6&3],i[o+=e]=fs[s>>8&3],i[o+1]=fs[s>>10&3],i[o+2]=fs[s>>12&3],i[o+3]=fs[s>>14],s=n[a+3],i[o+=e]=fs[3&s],i[o+1]=fs[s>>2&3],i[o+2]=fs[s>>4&3],i[o+3]=fs[s>>6&3],i[o+=e]=fs[s>>8&3],i[o+1]=fs[s>>10&3],i[o+2]=fs[s>>12&3],i[o+3]=fs[s>>14]}(t,e,r,n):function(t,e,r,n,i,s){for(var o=0!=(1&i)?8:16,a=0,c=0;c<r;c+=4)for(var f=0;f<e;f+=4){cs(us,n,a,i);for(var u=0,l=0;l<4;++l)for(var E=0;E<4;++E){var _=f+E,A=c+l;if(_<e&&A<r){var h=4*(e*(r-A)+_);if(s===ns||s===is)t[h+2]=us[u++],t[h+1]=us[u++],t[h+0]=us[u++],t[h+3]=us[u++];else for(var T=0;T<4;++T)t[h++]=us[u++]}else u+=4}a+=o}}(t,e,r,n,s,i)}},Es.s3tc=!0,Es.pvrtc=!1,Es.etc1=!1;let _s=1,As=2;const hs=10,Ts=11,Rs=1,ys=2,Is=16,Ns=32;function Us(t,e,r){r=t.byteLength;return t=t.subarray(0,0+r),new TextDecoder("utf-8").decode(t)}function Ss(t,e,r){let n=e.getUint32(r,!0);return r+=Uint32Array.BYTES_PER_ELEMENT,{string:Us(new Uint8Array(t,r,n)),bytesOffset:r+=n}}function ds(t,e,r,n){let i={},s=[],o=new Array(16);for(let t=0;t<16;t++)o[t]=e.getFloat64(r,!0),r+=Float64Array.BYTES_PER_ELEMENT;i.matrix=o,i.skeletonNames=s;let a=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;for(let n=0;n<a;n++){let n=Ss(t,e,r);s.push(n.string),r=n.bytesOffset}return n.push(i),r}function ms(t,e,r,n){let i={};i.rangeList=e.getFloat32(r,!0),r+=Float32Array.BYTES_PER_ELEMENT,i.rangeMode=e.getUint16(r,!0),r+=Uint16Array.BYTES_PER_ELEMENT;let s={};s.x=e.getFloat64(r,!0),r+=Float64Array.BYTES_PER_ELEMENT,s.y=e.getFloat64(r,!0),r+=Float64Array.BYTES_PER_ELEMENT,s.z=e.getFloat64(r,!0),r+=Float64Array.BYTES_PER_ELEMENT;let o=e.getFloat64(r,!0);r+=Float64Array.BYTES_PER_ELEMENT,i.boundingSphere={center:s,radius:o};let a=Ss(t,e,r),c=a.string;r=a.bytesOffset;let f=c.indexOf("Geometry");if(-1!==f){let t=c.substring(f);c=c.replace(t,"")}i.childTile=c,i.geodes=[];let u=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;for(let n=0;n<u;n++)r=ds(t,e,r,i.geodes);return n.push(i),r}function Os(t,e,r,n){let i=e.getUint32(r,!0);if(n.verticesCount=i,(r+=Uint32Array.BYTES_PER_ELEMENT)<=0)return r;let s=e.getUint16(r,!0);r+=Uint16Array.BYTES_PER_ELEMENT;let o=e.getUint16(r,!0);o=s*Float32Array.BYTES_PER_ELEMENT,r+=Uint16Array.BYTES_PER_ELEMENT;let a=i*s*Float32Array.BYTES_PER_ELEMENT,c=new Uint8Array(t,r,a);r+=a;let f=n.vertexAttributes,u=n.attrLocation;return u.aPosition=f.length,f.push({index:u.aPosition,typedArray:c,componentsPerAttribute:s,componentDatatype:5126,offsetInBytes:0,strideInBytes:o,normalize:!1}),r}function Ms(t,e,r,n){let i=e.getUint32(r,!0);if(r+=Uint32Array.BYTES_PER_ELEMENT,i<=0)return r;let s=e.getUint16(r,!0);r+=Uint16Array.BYTES_PER_ELEMENT;let o=e.getUint16(r,!0);r+=Uint16Array.BYTES_PER_ELEMENT;let a=i*s*Float32Array.BYTES_PER_ELEMENT,c=new Uint8Array(t,r,a);r+=a;let f=n.vertexAttributes,u=n.attrLocation;return u.aNormal=f.length,f.push({index:u.aNormal,typedArray:c,componentsPerAttribute:s,componentDatatype:5126,offsetInBytes:0,strideInBytes:o,normalize:!1}),r}function Fs(t,e,r,n){let i=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;let s,o=n.verticesCount;if(i>0){e.getUint16(r,!0),r+=Uint16Array.BYTES_PER_ELEMENT,r+=2*Uint8Array.BYTES_PER_ELEMENT;let n=i*Uint8Array.BYTES_PER_ELEMENT*4;s=new Uint8Array(t,r,n).slice(0,n),r+=n}else{s=new Uint8Array(4*o);for(let t=0;t<o;t++)s[4*t]=255,s[4*t+1]=255,s[4*t+2]=255,s[4*t+3]=255}let a=n.vertexAttributes,c=n.attrLocation;return c.aColor=a.length,a.push({index:c.aColor,typedArray:s,componentsPerAttribute:4,componentDatatype:5121,offsetInBytes:0,strideInBytes:4,normalize:!0}),n.vertexColor=s,r}function Cs(t,e,r,n){let i=e.getUint32(r,!0);if(r+=Uint32Array.BYTES_PER_ELEMENT,i<=0)return r;e.getUint16(r,!0),r+=Uint16Array.BYTES_PER_ELEMENT,r+=2*Uint8Array.BYTES_PER_ELEMENT;let s=i*Uint8Array.BYTES_PER_ELEMENT*4,o=new Uint8Array(t,r,s);r+=s;let a=n.vertexAttributes,c=n.attrLocation;return c.aSecondColor=a.length,a.push({index:c.aSecondColor,typedArray:o,componentsPerAttribute:4,componentDatatype:5121,offsetInBytes:0,strideInBytes:4,normalize:!0}),r}function bs(t,e,r,n){let i=e.getUint16(r,!0);r+=Uint16Array.BYTES_PER_ELEMENT,r+=Uint16Array.BYTES_PER_ELEMENT;for(let s=0;s<i;s++){let i=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;let o=e.getUint16(r,!0);r+=Uint16Array.BYTES_PER_ELEMENT,e.getUint16(r,!0),r+=Uint16Array.BYTES_PER_ELEMENT;let a=i*o*Float32Array.BYTES_PER_ELEMENT,c=new Uint8Array(t,r,a);r+=a;let f="aTexCoord"+s,u=n.vertexAttributes,l=n.attrLocation;l[f]=u.length,u.push({index:l[f],typedArray:c,componentsPerAttribute:o,componentDatatype:5126,offsetInBytes:0,strideInBytes:o*Float32Array.BYTES_PER_ELEMENT,normalize:!1})}return r}function ps(t,e,r,n){let i=e.getUint16(r,!0);r+=Uint16Array.BYTES_PER_ELEMENT,r+=Uint16Array.BYTES_PER_ELEMENT;let s=n.vertexAttributes,o=n.attrLocation;for(let a=0;a<i;a++){let i=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;let a=e.getUint16(r,!0);r+=Uint16Array.BYTES_PER_ELEMENT,e.getUint16(r,!0),r+=Uint16Array.BYTES_PER_ELEMENT;let c=i*a*Float32Array.BYTES_PER_ELEMENT;if(17===a){let e=new Uint8Array(t,r,c);n.instanceCount=i,n.instanceMode=a,n.instanceBuffer=e,n.instanceIndex=1;let f,u=a*i*4,l=e.slice(0,u);n.vertexColorInstance=l,17===a?(f=17*Float32Array.BYTES_PER_ELEMENT,o.uv2=s.length,s.push({index:o.uv2,componentsPerAttribute:4,componentDatatype:5126,normalize:!1,offsetInBytes:0,strideInBytes:f,instanceDivisor:1}),o.uv3=s.length,s.push({index:o.uv3,componentsPerAttribute:4,componentDatatype:5126,normalize:!1,offsetInBytes:4*Float32Array.BYTES_PER_ELEMENT,strideInBytes:f,instanceDivisor:1}),o.uv4=s.length,s.push({index:o.uv4,componentsPerAttribute:4,componentDatatype:5126,normalize:!1,offsetInBytes:8*Float32Array.BYTES_PER_ELEMENT,strideInBytes:f,instanceDivisor:1}),o.secondary_colour=s.length,s.push({index:o.secondary_colour,componentsPerAttribute:4,componentDatatype:5126,normalize:!1,offsetInBytes:12*Float32Array.BYTES_PER_ELEMENT,strideInBytes:f,instanceDivisor:1}),o.uv6=s.length,s.push({index:o.uv6,componentsPerAttribute:4,componentDatatype:5121,normalize:!0,offsetInBytes:16*Float32Array.BYTES_PER_ELEMENT,strideInBytes:f,instanceDivisor:1})):29===a&&(f=29*Float32Array.BYTES_PER_ELEMENT,o.uv1=s.length,s.push({index:o.uv1,componentsPerAttribute:4,componentDatatype:5126,normalize:!1,offsetInBytes:0,strideInBytes:f,instanceDivisor:1,byteLength:c}),o.uv2=s.length,s.push({index:o.uv2,componentsPerAttribute:4,componentDatatype:5126,normalize:!1,offsetInBytes:4*Float32Array.BYTES_PER_ELEMENT,strideInBytes:f,instanceDivisor:1}),o.uv3=s.length,s.push({index:o.uv3,componentsPerAttribute:4,componentDatatype:5126,normalize:!1,offsetInBytes:8*Float32Array.BYTES_PER_ELEMENT,strideInBytes:f,instanceDivisor:1}),o.uv4=s.length,s.push({index:o.uv4,componentsPerAttribute:4,componentDatatype:5126,normalize:!1,offsetInBytes:12*Float32Array.BYTES_PER_ELEMENT,strideInBytes:f,instanceDivisor:1}),o.uv5=s.length,s.push({index:o.uv5,componentsPerAttribute:4,componentDatatype:5126,normalize:!1,offsetInBytes:16*Float32Array.BYTES_PER_ELEMENT,strideInBytes:f,instanceDivisor:1}),o.uv6=s.length,s.push({index:o.uv6,componentsPerAttribute:4,componentDatatype:5126,normalize:!1,offsetInBytes:20*Float32Array.BYTES_PER_ELEMENT,strideInBytes:f,instanceDivisor:1}),o.uv7=s.length,s.push({index:o.uv7,componentsPerAttribute:3,componentDatatype:5126,normalize:!1,offsetInBytes:24*Float32Array.BYTES_PER_ELEMENT,strideInBytes:f,instanceDivisor:1}),o.secondary_colour=s.length,s.push({index:o.secondary_colour,componentsPerAttribute:4,componentDatatype:5121,normalize:!0,offsetInBytes:27*Float32Array.BYTES_PER_ELEMENT,strideInBytes:f,instanceDivisor:1}),o.uv9=s.length,s.push({index:o.uv9,componentsPerAttribute:4,componentDatatype:5121,normalize:!0,offsetInBytes:28*Float32Array.BYTES_PER_ELEMENT,strideInBytes:f,instanceDivisor:1}))}else{let t=i*a;n.instanceBounds=new Float32Array(t);for(let i=0;i<t;i++)n.instanceBounds[i]=e.getFloat32(r+i*Float32Array.BYTES_PER_ELEMENT,!0)}r+=c}return r}function ws(t,e,r,n){return r=ps(t,e,r=bs(t,e,r=Cs(t,e,r=Fs(t,e,r=Ms(t,e,r=Os(t,e,r,n),n),n),n),n),n)}function Ds(t,e,r,n){let i=e.getUint32(r,!0);return n.compressOptions=i,r+=Uint32Array.BYTES_PER_ELEMENT,r=(i&Rs)===Rs?function(t,e,r,n){let i=e.getUint32(r,!0);if(n.verticesCount=i,(r+=Uint32Array.BYTES_PER_ELEMENT)<=0)return r;let s=e.getUint16(r,!0);r+=Uint16Array.BYTES_PER_ELEMENT;let o=e.getUint16(r,!0);o=s*Int16Array.BYTES_PER_ELEMENT,r+=Uint16Array.BYTES_PER_ELEMENT;let a=e.getFloat32(r,!0);r+=Float32Array.BYTES_PER_ELEMENT;let c={};c.x=e.getFloat32(r,!0),r+=Float32Array.BYTES_PER_ELEMENT,c.y=e.getFloat32(r,!0),r+=Float32Array.BYTES_PER_ELEMENT,c.z=e.getFloat32(r,!0),r+=Float32Array.BYTES_PER_ELEMENT,c.w=e.getFloat32(r,!0),r+=Float32Array.BYTES_PER_ELEMENT,n.vertCompressConstant=a,n.minVerticesValue=c;let f=i*s*Int16Array.BYTES_PER_ELEMENT,u=new Uint8Array(t,r,f);r+=f;let l=n.vertexAttributes,E=n.attrLocation;return E.aPosition=l.length,l.push({index:E.aPosition,typedArray:u,componentsPerAttribute:s,componentDatatype:5122,offsetInBytes:0,strideInBytes:o,normalize:!1}),r}(t,e,r,n):Os(t,e,r,n),r=(i&ys)===ys?function(t,e,r,n){let i=e.getUint32(r,!0);if(r+=Uint32Array.BYTES_PER_ELEMENT,i<=0)return r;e.getUint16(r,!0),r+=Uint16Array.BYTES_PER_ELEMENT;let s=e.getUint16(r,!0);r+=Uint16Array.BYTES_PER_ELEMENT;let o=2*i*Int16Array.BYTES_PER_ELEMENT,a=new Uint8Array(t,r,o);r+=o;let c=n.vertexAttributes,f=n.attrLocation;return f.aNormal=c.length,c.push({index:f.aNormal,typedArray:a,componentsPerAttribute:2,componentDatatype:5122,offsetInBytes:0,strideInBytes:s,normalize:!1}),r}(t,e,r,n):Ms(t,e,r,n),r=Cs(t,e,r=Fs(t,e,r,n),n),r=(i&Is)===Is?function(t,e,r,n){n.texCoordCompressConstant=[],n.minTexCoordValue=[];let i=e.getUint16(r,!0);r+=Uint16Array.BYTES_PER_ELEMENT,r+=Uint16Array.BYTES_PER_ELEMENT;for(let s=0;s<i;s++){let i=e.getUint8(r,!0);r+=Uint8Array.BYTES_PER_ELEMENT,r+=3*Uint8Array.BYTES_PER_ELEMENT;let o=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;let a=e.getUint16(r,!0);r+=Uint16Array.BYTES_PER_ELEMENT,e.getUint16(r,!0),r+=Uint16Array.BYTES_PER_ELEMENT;let c=e.getFloat32(r,!0);r+=Float32Array.BYTES_PER_ELEMENT,n.texCoordCompressConstant.push(c);let f={};f.x=e.getFloat32(r,!0),r+=Float32Array.BYTES_PER_ELEMENT,f.y=e.getFloat32(r,!0),r+=Float32Array.BYTES_PER_ELEMENT,f.z=e.getFloat32(r,!0),r+=Float32Array.BYTES_PER_ELEMENT,f.w=e.getFloat32(r,!0),r+=Float32Array.BYTES_PER_ELEMENT,n.minTexCoordValue.push(f);let u=o*a*Int16Array.BYTES_PER_ELEMENT,l=new Uint8Array(t,r,u),E=(r+=u)%4;0!==E&&(r+=4-E);let _="aTexCoord"+s,A=n.vertexAttributes,h=n.attrLocation;if(h[_]=A.length,A.push({index:h[_],typedArray:l,componentsPerAttribute:a,componentDatatype:5122,offsetInBytes:0,strideInBytes:a*Int16Array.BYTES_PER_ELEMENT,normalize:!1}),i){u=o*Float32Array.BYTES_PER_ELEMENT;let e=new Uint8Array(t,r,u);r+=u,n.texCoordZMatrix=!0,_="aTexCoordZ"+s,h[_]=A.length,A.push({index:h[_],typedArray:e,componentsPerAttribute:1,componentDatatype:5126,offsetInBytes:0,strideInBytes:Float32Array.BYTES_PER_ELEMENT,normalize:!1})}}return r}(t,e,r,n):bs(t,e,r,n),(i&Ns)===Ns&&(n.textureCoordIsW=!0),r=ps(t,e,r,n)}function Bs(t,e,r,n){let i=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;for(let s=0;s<i;s++){let i={},s=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;let o=e.getUint8(r,!0);r+=Uint8Array.BYTES_PER_ELEMENT,e.getUint8(r,!0),r+=Uint8Array.BYTES_PER_ELEMENT;let a=e.getUint8(r,!0);if(r+=Uint8Array.BYTES_PER_ELEMENT,r+=Uint8Array.BYTES_PER_ELEMENT,s>0){let e,n=null;1===o||3===o?(e=s*Uint32Array.BYTES_PER_ELEMENT,n=new Uint8Array(t,r,e)):(e=s*Uint16Array.BYTES_PER_ELEMENT,n=new Uint8Array(t,r,e),s%2!=0&&(e+=2)),i.indicesTypedArray=n,r+=e}i.indicesCount=s,i.indexType=o,i.primitiveType=a;let c=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;for(let n=0;n<c;n++){let n=Ss(t,e,r),s=n.string;r=n.bytesOffset,i.materialCode=s}if(0!==r%4){r+=4-r%4}n.push(i)}return r}let Ls={red:0,green:0,blue:0,alpha:0};function Ps(t,e,r){let n=t.vertexAttributes,i=t.attrLocation,s=n.length;i[1===r?"instanceId":"batchId"]=s,n.push({index:s,typedArray:e,componentsPerAttribute:1,componentDatatype:5126,offsetInBytes:0,strideInBytes:0,instanceDivisor:r})}Es.parseBuffer=function(t){let e=0,r={version:void 0,groupNode:void 0,geoPackage:{},matrials:void 0,texturePackage:{}},n=new DataView(t);r.version=n.getFloat32(e,!0),e+=Float32Array.BYTES_PER_ELEMENT,r.version>=2&&(n.getUint32(e,!0),e+=Uint32Array.BYTES_PER_ELEMENT),n.getUint32(e,!0),e+=Uint32Array.BYTES_PER_ELEMENT;let i=function(t,e){let r=new Uint8Array(t,e);return ts.inflate(r).buffer}(t,e);n=new DataView(i),e=0;let s=n.getUint32(e,!0);return e+=Uint32Array.BYTES_PER_ELEMENT,e=function(t,e,r,n){let i={},s=[];e.getUint32(r,!0),r+=Uint32Array.BYTES_PER_ELEMENT;let o=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;for(let n=0;n<o;n++)r=ms(t,e,r,s);i.pageLods=s;let a=r%4;return 0!==a&&(r+=4-a),n.groupNode=i,r}(i,n,e,r),e=function(t,e,r,n){e.getUint32(r,!0),r+=Uint32Array.BYTES_PER_ELEMENT;let i=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;for(let s=0;s<i;s++){let i=Ss(t,e,r),s=i.string,o=(r=i.bytesOffset)%4;0!==o&&(r+=4-o);let a=e.getUint32(r,!0);r+=Int32Array.BYTES_PER_ELEMENT;let c={vertexAttributes:[],attrLocation:{},instanceCount:0,instanceMode:0,instanceIndex:-1};a===_s?r=ws(t,e,r,c):a===As&&(r=Ds(t,e,r,c));let f,u=[];r=Bs(t,e,r,u),2===u.length&&13===u[1].primitiveType&&u[1].indicesCount>=3&&(f=S3MEdgeProcessor.createEdgeDataByIndices(c,u[1])),n[s]={vertexPackage:c,arrIndexPackage:u,edgeGeometry:f}}return r+=e.getUint32(r,!0),r+Uint32Array.BYTES_PER_ELEMENT}(i,n,e,r.geoPackage),e=function(t,e,r,n){e.getUint32(r,!0),r+=Uint32Array.BYTES_PER_ELEMENT;let i=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;for(let s=0;s<i;s++){let i=Ss(t,e,r),s=i.string,o=(r=i.bytesOffset)%4;0!==o&&(r+=4-o),e.getUint32(r,!0),r+=Uint32Array.BYTES_PER_ELEMENT;let a=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;let c=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;let f=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;let u=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;let l=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;let E=new Uint8Array(t,r,u);r+=u;let _=l===hs||l===Ts?33776:33779;if(22===f&&(_=36196),!Es.s3tc&&(33776===_||33779===_)){let t=new Uint8Array(a*c*4);ls.decode(t,a,c,E,l),E=t,f=0,_=l===hs||l===hs?273:4369}n[s]={id:s,width:a,height:c,compressType:f,nFormat:l,internalFormat:_,arrayBufferView:E}}return r}(i,n,e,r.texturePackage),e=function(t,e,r,n){let i=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;let s=Us(new Uint8Array(t,r,i));return r+=i,n.materials=JSON.parse(s),r}(i,n,e,r),function(t,e,r,n,i,s){if(1==(1&n)){e.getUint32(r,!0),r+=Uint32Array.BYTES_PER_ELEMENT;let n=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;for(let o=0;o<n;o++){let n=Ss(t,e,r),o=n.string;r=n.bytesOffset;let a=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;let c={};if(i[o].pickInfo=c,-1==i[o].vertexPackage.instanceIndex){let t=new Float32Array(i[o].vertexPackage.verticesCount);for(let n=0;n<a;n++){let i=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;let s=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;let o=[];for(let i=0;i<s;i++){let i=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;let s=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT,t.fill(n,i,i+s),o.push({vertexColorOffset:i,vertexColorCount:s,batchId:n})}c[i]=o}Ps(i[o].vertexPackage,t,void 0)}else{let t=i[o].vertexPackage.instanceCount,n=i[o].vertexPackage.instanceBuffer,f=i[o].vertexPackage.instanceMode,u=new Float32Array(t),l=[];for(let t=0;t<a;t++){let t=e.getUint32(r,!0);l.push(t),r+=Uint32Array.BYTES_PER_ELEMENT;let n=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;for(let t=0;t<n;t++)e.getUint32(r,!0),r+=Uint32Array.BYTES_PER_ELEMENT,3===s&&(e.getUint32(r,!0),r+=Uint32Array.BYTES_PER_ELEMENT)}let E=17===f?16:28;E*=Float32Array.BYTES_PER_ELEMENT;for(let e=0;e<t;e++){u[e]=e;let t=e*f*Float32Array.BYTES_PER_ELEMENT+E;Cesium.Color.unpack(n,t,Ls);let r=2===s?l[e]:Ls.red+256*Ls.green+65536*Ls.blue;void 0===c[r]&&(c[r]={vertexColorCount:1,instanceIds:[],vertexColorOffset:e}),c[r].instanceIds.push(e)}Ps(i[o].vertexPackage,u,1)}}}}(i,n,e,s,r.geoPackage,r.version),r};class gs{constructor(t,e,{width:r,height:n,colorDepth:i,format:s}){if(this.format=s,this.offset=e,this.depth=i,this.stride=\n/*!\n * decode-bmp\n * https://github.com/LinusU/decode-bmp\n * MIT License\n */\nfunction(t){const e=t%4;return e?t+4-e:t}(r*this.depth/8),this.size=this.stride*n,this.data=t.subarray(this.offset,this.offset+this.size),this.size!==this.data.byteLength)throw new Error("Truncated bitmap data")}get(t,e,r){const n=this.format.indexOf(r);if(1===this.depth){return(this.data[e*this.stride+(t/8|0)]&1<<7-t%8*1)>>7-t%8*1}if(2===this.depth){return(this.data[e*this.stride+(t/4|0)]&3<<6-t%4*2)>>>6-t%4*2}if(4===this.depth){return(this.data[e*this.stride+(t/2|0)]&15<<4-t%2*4)>>>4-t%2*4}return this.data[e*this.stride+t*(this.depth/8)+n]}}function Gs(t,e,r,n,{width:i=0,height:s=0,icon:o=!1}={}){const a=new DataView(e,r,n);let c,f,u,l,E;o?(c=a.getUint32(0,!0),f=a.getUint32(4,!0)/1|0,u=a.getUint32(8,!0)/2|0,l=a.getUint16(14,!0),E=a.getUint32(32,!0)):(!function(t){if(19778!==t)throw new Error(`Invalid magic byte 0x${t.toString(16)}`)}(a.getUint16(0,!0)),c=14+a.getUint32(14,!0),f=a.getUint32(18,!0),u=a.getUint32(22,!0),l=a.getUint16(28,!0),E=a.getUint32(46,!0)),0===E&&l<=8&&(E=1<<l);const _=0===f?i:f,A=0===u?s:u,h=new Uint8Array(a.buffer,a.byteOffset+c,a.byteLength-c),T=t.byteLength===_*A*4,R=E?function(t,e,r,{width:n,height:i,colorDepth:s,colorCount:o,icon:a}){if(8!==s&&4!==s&&2!==s&&1!==s)throw new Error(`A color depth of ${s} is not supported`);const c=new gs(r,0,{width:o,height:1,colorDepth:32,format:"BGRA"}),f=new gs(r,c.offset+c.size,{width:n,height:i,colorDepth:s,format:"C"}),u=a?new gs(r,f.offset+f.size,{width:n,height:i,colorDepth:1,format:"A"}):null,l=t;let E=0;for(let t=0;t<i;t++)for(let r=0;r<n;r++){const n=f.get(r,i-t-1,"C");l[E++]=c.get(n,0,"R"),l[E++]=c.get(n,0,"G"),l[E++]=c.get(n,0,"B"),e&&(l[E++]=u&&u.get(r,i-t-1,"A")?0:255)}return l}(t,T,h,{width:_,height:A,colorDepth:l,colorCount:E,icon:o}):function(t,e,r,{width:n,height:i,colorDepth:s,icon:o}){if(32!==s&&24!==s)throw new Error(`A color depth of ${s} is not supported`);const a=new gs(r,0,{width:n,height:i,colorDepth:s,format:"BGRA"}),c=24===s&&o?new gs(r,a.offset+a.size,{width:n,height:i,colorDepth:1,format:"A"}):null,f=t;let u=0;for(let t=0;t<i;t++)for(let r=0;r<n;r++)f[u++]=a.get(r,i-t-1,"R"),f[u++]=a.get(r,i-t-1,"G"),f[u++]=a.get(r,i-t-1,"B"),e&&(f[u++]=32===s?a.get(r,i-t-1,"A"):c&&c.get(r,i-t-1,"A")?0:255);return f}(t,T,h,{width:_,height:A,colorDepth:l,icon:o});return R}var vs=Object.freeze({DEPTH_BUFFER_BIT:256,STENCIL_BUFFER_BIT:1024,COLOR_BUFFER_BIT:16384,POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,ZERO:0,ONE:1,SRC_COLOR:768,ONE_MINUS_SRC_COLOR:769,SRC_ALPHA:770,ONE_MINUS_SRC_ALPHA:771,DST_ALPHA:772,ONE_MINUS_DST_ALPHA:773,DST_COLOR:774,ONE_MINUS_DST_COLOR:775,SRC_ALPHA_SATURATE:776,FUNC_ADD:32774,BLEND_EQUATION:32777,BLEND_EQUATION_RGB:32777,BLEND_EQUATION_ALPHA:34877,FUNC_SUBTRACT:32778,FUNC_REVERSE_SUBTRACT:32779,BLEND_DST_RGB:32968,BLEND_SRC_RGB:32969,BLEND_DST_ALPHA:32970,BLEND_SRC_ALPHA:32971,CONSTANT_COLOR:32769,ONE_MINUS_CONSTANT_COLOR:32770,CONSTANT_ALPHA:32771,ONE_MINUS_CONSTANT_ALPHA:32772,BLEND_COLOR:32773,ARRAY_BUFFER:34962,ELEMENT_ARRAY_BUFFER:34963,ARRAY_BUFFER_BINDING:34964,ELEMENT_ARRAY_BUFFER_BINDING:34965,STREAM_DRAW:35040,STATIC_DRAW:35044,DYNAMIC_DRAW:35048,BUFFER_SIZE:34660,BUFFER_USAGE:34661,CURRENT_VERTEX_ATTRIB:34342,FRONT:1028,BACK:1029,FRONT_AND_BACK:1032,CULL_FACE:2884,BLEND:3042,DITHER:3024,STENCIL_TEST:2960,DEPTH_TEST:2929,SCISSOR_TEST:3089,POLYGON_OFFSET_FILL:32823,SAMPLE_ALPHA_TO_COVERAGE:32926,SAMPLE_COVERAGE:32928,NO_ERROR:0,INVALID_ENUM:1280,INVALID_VALUE:1281,INVALID_OPERATION:1282,OUT_OF_MEMORY:1285,CW:2304,CCW:2305,LINE_WIDTH:2849,ALIASED_POINT_SIZE_RANGE:33901,ALIASED_LINE_WIDTH_RANGE:33902,CULL_FACE_MODE:2885,FRONT_FACE:2886,DEPTH_RANGE:2928,DEPTH_WRITEMASK:2930,DEPTH_CLEAR_VALUE:2931,DEPTH_FUNC:2932,STENCIL_CLEAR_VALUE:2961,STENCIL_FUNC:2962,STENCIL_FAIL:2964,STENCIL_PASS_DEPTH_FAIL:2965,STENCIL_PASS_DEPTH_PASS:2966,STENCIL_REF:2967,STENCIL_VALUE_MASK:2963,STENCIL_WRITEMASK:2968,STENCIL_BACK_FUNC:34816,STENCIL_BACK_FAIL:34817,STENCIL_BACK_PASS_DEPTH_FAIL:34818,STENCIL_BACK_PASS_DEPTH_PASS:34819,STENCIL_BACK_REF:36003,STENCIL_BACK_VALUE_MASK:36004,STENCIL_BACK_WRITEMASK:36005,VIEWPORT:2978,SCISSOR_BOX:3088,COLOR_CLEAR_VALUE:3106,COLOR_WRITEMASK:3107,UNPACK_ALIGNMENT:3317,PACK_ALIGNMENT:3333,MAX_TEXTURE_SIZE:3379,MAX_VIEWPORT_DIMS:3386,SUBPIXEL_BITS:3408,RED_BITS:3410,GREEN_BITS:3411,BLUE_BITS:3412,ALPHA_BITS:3413,DEPTH_BITS:3414,STENCIL_BITS:3415,POLYGON_OFFSET_UNITS:10752,POLYGON_OFFSET_FACTOR:32824,TEXTURE_BINDING_2D:32873,SAMPLE_BUFFERS:32936,SAMPLES:32937,SAMPLE_COVERAGE_VALUE:32938,SAMPLE_COVERAGE_INVERT:32939,COMPRESSED_TEXTURE_FORMATS:34467,DONT_CARE:4352,FASTEST:4353,NICEST:4354,GENERATE_MIPMAP_HINT:33170,BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,INT:5124,UNSIGNED_INT:5125,FLOAT:5126,DEPTH_COMPONENT:6402,ALPHA:6406,RGB:6407,RGBA:6408,LUMINANCE:6409,LUMINANCE_ALPHA:6410,UNSIGNED_SHORT_4_4_4_4:32819,UNSIGNED_SHORT_5_5_5_1:32820,UNSIGNED_SHORT_5_6_5:33635,FRAGMENT_SHADER:35632,VERTEX_SHADER:35633,MAX_VERTEX_ATTRIBS:34921,MAX_VERTEX_UNIFORM_VECTORS:36347,MAX_VARYING_VECTORS:36348,MAX_COMBINED_TEXTURE_IMAGE_UNITS:35661,MAX_VERTEX_TEXTURE_IMAGE_UNITS:35660,MAX_TEXTURE_IMAGE_UNITS:34930,MAX_FRAGMENT_UNIFORM_VECTORS:36349,SHADER_TYPE:35663,DELETE_STATUS:35712,LINK_STATUS:35714,VALIDATE_STATUS:35715,ATTACHED_SHADERS:35717,ACTIVE_UNIFORMS:35718,ACTIVE_ATTRIBUTES:35721,SHADING_LANGUAGE_VERSION:35724,CURRENT_PROGRAM:35725,NEVER:512,LESS:513,EQUAL:514,LEQUAL:515,GREATER:516,NOTEQUAL:517,GEQUAL:518,ALWAYS:519,KEEP:7680,REPLACE:7681,INCR:7682,DECR:7683,INVERT:5386,INCR_WRAP:34055,DECR_WRAP:34056,VENDOR:7936,RENDERER:7937,VERSION:7938,NEAREST:9728,LINEAR:9729,NEAREST_MIPMAP_NEAREST:9984,LINEAR_MIPMAP_NEAREST:9985,NEAREST_MIPMAP_LINEAR:9986,LINEAR_MIPMAP_LINEAR:9987,TEXTURE_MAG_FILTER:10240,TEXTURE_MIN_FILTER:10241,TEXTURE_WRAP_S:10242,TEXTURE_WRAP_T:10243,TEXTURE_2D:3553,TEXTURE:5890,TEXTURE_CUBE_MAP:34067,TEXTURE_BINDING_CUBE_MAP:34068,TEXTURE_CUBE_MAP_POSITIVE_X:34069,TEXTURE_CUBE_MAP_NEGATIVE_X:34070,TEXTURE_CUBE_MAP_POSITIVE_Y:34071,TEXTURE_CUBE_MAP_NEGATIVE_Y:34072,TEXTURE_CUBE_MAP_POSITIVE_Z:34073,TEXTURE_CUBE_MAP_NEGATIVE_Z:34074,MAX_CUBE_MAP_TEXTURE_SIZE:34076,TEXTURE0:33984,TEXTURE1:33985,TEXTURE2:33986,TEXTURE3:33987,TEXTURE4:33988,TEXTURE5:33989,TEXTURE6:33990,TEXTURE7:33991,TEXTURE8:33992,TEXTURE9:33993,TEXTURE10:33994,TEXTURE11:33995,TEXTURE12:33996,TEXTURE13:33997,TEXTURE14:33998,TEXTURE15:33999,TEXTURE16:34e3,TEXTURE17:34001,TEXTURE18:34002,TEXTURE19:34003,TEXTURE20:34004,TEXTURE21:34005,TEXTURE22:34006,TEXTURE23:34007,TEXTURE24:34008,TEXTURE25:34009,TEXTURE26:34010,TEXTURE27:34011,TEXTURE28:34012,TEXTURE29:34013,TEXTURE30:34014,TEXTURE31:34015,ACTIVE_TEXTURE:34016,REPEAT:10497,CLAMP_TO_EDGE:33071,MIRRORED_REPEAT:33648,FLOAT_VEC2:35664,FLOAT_VEC3:35665,FLOAT_VEC4:35666,INT_VEC2:35667,INT_VEC3:35668,INT_VEC4:35669,BOOL:35670,BOOL_VEC2:35671,BOOL_VEC3:35672,BOOL_VEC4:35673,FLOAT_MAT2:35674,FLOAT_MAT3:35675,FLOAT_MAT4:35676,SAMPLER_2D:35678,SAMPLER_CUBE:35680,VERTEX_ATTRIB_ARRAY_ENABLED:34338,VERTEX_ATTRIB_ARRAY_SIZE:34339,VERTEX_ATTRIB_ARRAY_STRIDE:34340,VERTEX_ATTRIB_ARRAY_TYPE:34341,VERTEX_ATTRIB_ARRAY_NORMALIZED:34922,VERTEX_ATTRIB_ARRAY_POINTER:34373,VERTEX_ATTRIB_ARRAY_BUFFER_BINDING:34975,IMPLEMENTATION_COLOR_READ_TYPE:35738,IMPLEMENTATION_COLOR_READ_FORMAT:35739,COMPILE_STATUS:35713,LOW_FLOAT:36336,MEDIUM_FLOAT:36337,HIGH_FLOAT:36338,LOW_INT:36339,MEDIUM_INT:36340,HIGH_INT:36341,FRAMEBUFFER:36160,RENDERBUFFER:36161,RGBA4:32854,RGB5_A1:32855,RGB565:36194,DEPTH_COMPONENT16:33189,STENCIL_INDEX:6401,STENCIL_INDEX8:36168,DEPTH_STENCIL:34041,RENDERBUFFER_WIDTH:36162,RENDERBUFFER_HEIGHT:36163,RENDERBUFFER_INTERNAL_FORMAT:36164,RENDERBUFFER_RED_SIZE:36176,RENDERBUFFER_GREEN_SIZE:36177,RENDERBUFFER_BLUE_SIZE:36178,RENDERBUFFER_ALPHA_SIZE:36179,RENDERBUFFER_DEPTH_SIZE:36180,RENDERBUFFER_STENCIL_SIZE:36181,FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE:36048,FRAMEBUFFER_ATTACHMENT_OBJECT_NAME:36049,FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL:36050,FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE:36051,COLOR_ATTACHMENT0:36064,DEPTH_ATTACHMENT:36096,STENCIL_ATTACHMENT:36128,DEPTH_STENCIL_ATTACHMENT:33306,NONE:0,FRAMEBUFFER_COMPLETE:36053,FRAMEBUFFER_INCOMPLETE_ATTACHMENT:36054,FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:36055,FRAMEBUFFER_INCOMPLETE_DIMENSIONS:36057,FRAMEBUFFER_UNSUPPORTED:36061,FRAMEBUFFER_BINDING:36006,RENDERBUFFER_BINDING:36007,MAX_RENDERBUFFER_SIZE:34024,INVALID_FRAMEBUFFER_OPERATION:1286,UNPACK_FLIP_Y_WEBGL:37440,UNPACK_PREMULTIPLY_ALPHA_WEBGL:37441,CONTEXT_LOST_WEBGL:37442,UNPACK_COLORSPACE_CONVERSION_WEBGL:37443,BROWSER_DEFAULT_WEBGL:37444,COMPRESSED_RGB_S3TC_DXT1_EXT:33776,COMPRESSED_RGBA_S3TC_DXT1_EXT:33777,COMPRESSED_RGBA_S3TC_DXT3_EXT:33778,COMPRESSED_RGBA_S3TC_DXT5_EXT:33779,COMPRESSED_RGB_PVRTC_4BPPV1_IMG:35840,COMPRESSED_RGB_PVRTC_2BPPV1_IMG:35841,COMPRESSED_RGBA_PVRTC_4BPPV1_IMG:35842,COMPRESSED_RGBA_PVRTC_2BPPV1_IMG:35843,COMPRESSED_RGBA_ASTC_4x4_WEBGL:37808,COMPRESSED_RGB_ETC1_WEBGL:36196,COMPRESSED_RGBA_BPTC_UNORM:36492,HALF_FLOAT_OES:36193,DOUBLE:5130,READ_BUFFER:3074,UNPACK_ROW_LENGTH:3314,UNPACK_SKIP_ROWS:3315,UNPACK_SKIP_PIXELS:3316,PACK_ROW_LENGTH:3330,PACK_SKIP_ROWS:3331,PACK_SKIP_PIXELS:3332,COLOR:6144,DEPTH:6145,STENCIL:6146,RED:6403,RGB8:32849,RGBA8:32856,RGB10_A2:32857,TEXTURE_BINDING_3D:32874,UNPACK_SKIP_IMAGES:32877,UNPACK_IMAGE_HEIGHT:32878,TEXTURE_3D:32879,TEXTURE_WRAP_R:32882,MAX_3D_TEXTURE_SIZE:32883,UNSIGNED_INT_2_10_10_10_REV:33640,MAX_ELEMENTS_VERTICES:33e3,MAX_ELEMENTS_INDICES:33001,TEXTURE_MIN_LOD:33082,TEXTURE_MAX_LOD:33083,TEXTURE_BASE_LEVEL:33084,TEXTURE_MAX_LEVEL:33085,MIN:32775,MAX:32776,DEPTH_COMPONENT24:33190,MAX_TEXTURE_LOD_BIAS:34045,TEXTURE_COMPARE_MODE:34892,TEXTURE_COMPARE_FUNC:34893,CURRENT_QUERY:34917,QUERY_RESULT:34918,QUERY_RESULT_AVAILABLE:34919,STREAM_READ:35041,STREAM_COPY:35042,STATIC_READ:35045,STATIC_COPY:35046,DYNAMIC_READ:35049,DYNAMIC_COPY:35050,MAX_DRAW_BUFFERS:34852,DRAW_BUFFER0:34853,DRAW_BUFFER1:34854,DRAW_BUFFER2:34855,DRAW_BUFFER3:34856,DRAW_BUFFER4:34857,DRAW_BUFFER5:34858,DRAW_BUFFER6:34859,DRAW_BUFFER7:34860,DRAW_BUFFER8:34861,DRAW_BUFFER9:34862,DRAW_BUFFER10:34863,DRAW_BUFFER11:34864,DRAW_BUFFER12:34865,DRAW_BUFFER13:34866,DRAW_BUFFER14:34867,DRAW_BUFFER15:34868,MAX_FRAGMENT_UNIFORM_COMPONENTS:35657,MAX_VERTEX_UNIFORM_COMPONENTS:35658,SAMPLER_3D:35679,SAMPLER_2D_SHADOW:35682,FRAGMENT_SHADER_DERIVATIVE_HINT:35723,PIXEL_PACK_BUFFER:35051,PIXEL_UNPACK_BUFFER:35052,PIXEL_PACK_BUFFER_BINDING:35053,PIXEL_UNPACK_BUFFER_BINDING:35055,FLOAT_MAT2x3:35685,FLOAT_MAT2x4:35686,FLOAT_MAT3x2:35687,FLOAT_MAT3x4:35688,FLOAT_MAT4x2:35689,FLOAT_MAT4x3:35690,SRGB:35904,SRGB8:35905,SRGB8_ALPHA8:35907,COMPARE_REF_TO_TEXTURE:34894,RGBA32F:34836,RGB32F:34837,RGBA16F:34842,RGB16F:34843,VERTEX_ATTRIB_ARRAY_INTEGER:35069,MAX_ARRAY_TEXTURE_LAYERS:35071,MIN_PROGRAM_TEXEL_OFFSET:35076,MAX_PROGRAM_TEXEL_OFFSET:35077,MAX_VARYING_COMPONENTS:35659,TEXTURE_2D_ARRAY:35866,TEXTURE_BINDING_2D_ARRAY:35869,R11F_G11F_B10F:35898,UNSIGNED_INT_10F_11F_11F_REV:35899,RGB9_E5:35901,UNSIGNED_INT_5_9_9_9_REV:35902,TRANSFORM_FEEDBACK_BUFFER_MODE:35967,MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS:35968,TRANSFORM_FEEDBACK_VARYINGS:35971,TRANSFORM_FEEDBACK_BUFFER_START:35972,TRANSFORM_FEEDBACK_BUFFER_SIZE:35973,TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN:35976,RASTERIZER_DISCARD:35977,MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS:35978,MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS:35979,INTERLEAVED_ATTRIBS:35980,SEPARATE_ATTRIBS:35981,TRANSFORM_FEEDBACK_BUFFER:35982,TRANSFORM_FEEDBACK_BUFFER_BINDING:35983,RGBA32UI:36208,RGB32UI:36209,RGBA16UI:36214,RGB16UI:36215,RGBA8UI:36220,RGB8UI:36221,RGBA32I:36226,RGB32I:36227,RGBA16I:36232,RGB16I:36233,RGBA8I:36238,RGB8I:36239,RED_INTEGER:36244,RGB_INTEGER:36248,RGBA_INTEGER:36249,SAMPLER_2D_ARRAY:36289,SAMPLER_2D_ARRAY_SHADOW:36292,SAMPLER_CUBE_SHADOW:36293,UNSIGNED_INT_VEC2:36294,UNSIGNED_INT_VEC3:36295,UNSIGNED_INT_VEC4:36296,INT_SAMPLER_2D:36298,INT_SAMPLER_3D:36299,INT_SAMPLER_CUBE:36300,INT_SAMPLER_2D_ARRAY:36303,UNSIGNED_INT_SAMPLER_2D:36306,UNSIGNED_INT_SAMPLER_3D:36307,UNSIGNED_INT_SAMPLER_CUBE:36308,UNSIGNED_INT_SAMPLER_2D_ARRAY:36311,DEPTH_COMPONENT32F:36012,DEPTH32F_STENCIL8:36013,FLOAT_32_UNSIGNED_INT_24_8_REV:36269,FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING:33296,FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE:33297,FRAMEBUFFER_ATTACHMENT_RED_SIZE:33298,FRAMEBUFFER_ATTACHMENT_GREEN_SIZE:33299,FRAMEBUFFER_ATTACHMENT_BLUE_SIZE:33300,FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE:33301,FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE:33302,FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE:33303,FRAMEBUFFER_DEFAULT:33304,UNSIGNED_INT_24_8:34042,DEPTH24_STENCIL8:35056,UNSIGNED_NORMALIZED:35863,DRAW_FRAMEBUFFER_BINDING:36006,READ_FRAMEBUFFER:36008,DRAW_FRAMEBUFFER:36009,READ_FRAMEBUFFER_BINDING:36010,RENDERBUFFER_SAMPLES:36011,FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER:36052,MAX_COLOR_ATTACHMENTS:36063,COLOR_ATTACHMENT1:36065,COLOR_ATTACHMENT2:36066,COLOR_ATTACHMENT3:36067,COLOR_ATTACHMENT4:36068,COLOR_ATTACHMENT5:36069,COLOR_ATTACHMENT6:36070,COLOR_ATTACHMENT7:36071,COLOR_ATTACHMENT8:36072,COLOR_ATTACHMENT9:36073,COLOR_ATTACHMENT10:36074,COLOR_ATTACHMENT11:36075,COLOR_ATTACHMENT12:36076,COLOR_ATTACHMENT13:36077,COLOR_ATTACHMENT14:36078,COLOR_ATTACHMENT15:36079,FRAMEBUFFER_INCOMPLETE_MULTISAMPLE:36182,MAX_SAMPLES:36183,HALF_FLOAT:5131,RG:33319,RG_INTEGER:33320,R8:33321,RG8:33323,R16F:33325,R32F:33326,RG16F:33327,RG32F:33328,R8I:33329,R8UI:33330,R16I:33331,R16UI:33332,R32I:33333,R32UI:33334,RG8I:33335,RG8UI:33336,RG16I:33337,RG16UI:33338,RG32I:33339,RG32UI:33340,VERTEX_ARRAY_BINDING:34229,R8_SNORM:36756,RG8_SNORM:36757,RGB8_SNORM:36758,RGBA8_SNORM:36759,SIGNED_NORMALIZED:36764,COPY_READ_BUFFER:36662,COPY_WRITE_BUFFER:36663,COPY_READ_BUFFER_BINDING:36662,COPY_WRITE_BUFFER_BINDING:36663,UNIFORM_BUFFER:35345,UNIFORM_BUFFER_BINDING:35368,UNIFORM_BUFFER_START:35369,UNIFORM_BUFFER_SIZE:35370,MAX_VERTEX_UNIFORM_BLOCKS:35371,MAX_FRAGMENT_UNIFORM_BLOCKS:35373,MAX_COMBINED_UNIFORM_BLOCKS:35374,MAX_UNIFORM_BUFFER_BINDINGS:35375,MAX_UNIFORM_BLOCK_SIZE:35376,MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS:35377,MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS:35379,UNIFORM_BUFFER_OFFSET_ALIGNMENT:35380,ACTIVE_UNIFORM_BLOCKS:35382,UNIFORM_TYPE:35383,UNIFORM_SIZE:35384,UNIFORM_BLOCK_INDEX:35386,UNIFORM_OFFSET:35387,UNIFORM_ARRAY_STRIDE:35388,UNIFORM_MATRIX_STRIDE:35389,UNIFORM_IS_ROW_MAJOR:35390,UNIFORM_BLOCK_BINDING:35391,UNIFORM_BLOCK_DATA_SIZE:35392,UNIFORM_BLOCK_ACTIVE_UNIFORMS:35394,UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES:35395,UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER:35396,UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER:35398,INVALID_INDEX:4294967295,MAX_VERTEX_OUTPUT_COMPONENTS:37154,MAX_FRAGMENT_INPUT_COMPONENTS:37157,MAX_SERVER_WAIT_TIMEOUT:37137,OBJECT_TYPE:37138,SYNC_CONDITION:37139,SYNC_STATUS:37140,SYNC_FLAGS:37141,SYNC_FENCE:37142,SYNC_GPU_COMMANDS_COMPLETE:37143,UNSIGNALED:37144,SIGNALED:37145,ALREADY_SIGNALED:37146,TIMEOUT_EXPIRED:37147,CONDITION_SATISFIED:37148,WAIT_FAILED:37149,SYNC_FLUSH_COMMANDS_BIT:1,VERTEX_ATTRIB_ARRAY_DIVISOR:35070,ANY_SAMPLES_PASSED:35887,ANY_SAMPLES_PASSED_CONSERVATIVE:36202,SAMPLER_BINDING:35097,RGB10_A2UI:36975,INT_2_10_10_10_REV:36255,TRANSFORM_FEEDBACK:36386,TRANSFORM_FEEDBACK_PAUSED:36387,TRANSFORM_FEEDBACK_ACTIVE:36388,TRANSFORM_FEEDBACK_BINDING:36389,COMPRESSED_R11_EAC:37488,COMPRESSED_SIGNED_R11_EAC:37489,COMPRESSED_RG11_EAC:37490,COMPRESSED_SIGNED_RG11_EAC:37491,COMPRESSED_RGB8_ETC2:37492,COMPRESSED_SRGB8_ETC2:37493,COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2:37494,COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2:37495,COMPRESSED_RGBA8_ETC2_EAC:37496,COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:37497,TEXTURE_IMMUTABLE_FORMAT:37167,MAX_ELEMENT_INDEX:36203,TEXTURE_IMMUTABLE_LEVELS:33503,MAX_TEXTURE_MAX_ANISOTROPY_EXT:34047}),Xs={UNSIGNED_BYTE:vs.UNSIGNED_BYTE,UNSIGNED_SHORT:vs.UNSIGNED_SHORT,UNSIGNED_INT:vs.UNSIGNED_INT,FLOAT:vs.FLOAT,HALF_FLOAT:vs.HALF_FLOAT_OES,UNSIGNED_INT_24_8:vs.UNSIGNED_INT_24_8,UNSIGNED_SHORT_4_4_4_4:vs.UNSIGNED_SHORT_4_4_4_4,UNSIGNED_SHORT_5_5_5_1:vs.UNSIGNED_SHORT_5_5_5_1,UNSIGNED_SHORT_5_6_5:vs.UNSIGNED_SHORT_5_6_5,toWebGLConstant:function(t,e){switch(t){case Xs.UNSIGNED_BYTE:return vs.UNSIGNED_BYTE;case Xs.UNSIGNED_SHORT:return vs.UNSIGNED_SHORT;case Xs.UNSIGNED_INT:return vs.UNSIGNED_INT;case Xs.FLOAT:return vs.FLOAT;case Xs.HALF_FLOAT:return e.webgl2?vs.HALF_FLOAT:vs.HALF_FLOAT_OES;case Xs.UNSIGNED_INT_24_8:return vs.UNSIGNED_INT_24_8;case Xs.UNSIGNED_SHORT_4_4_4_4:return vs.UNSIGNED_SHORT_4_4_4_4;case Xs.UNSIGNED_SHORT_5_5_5_1:return vs.UNSIGNED_SHORT_5_5_5_1;case Xs.UNSIGNED_SHORT_5_6_5:return Xs.UNSIGNED_SHORT_5_6_5}},isPacked:function(t){return t===Xs.UNSIGNED_INT_24_8||t===Xs.UNSIGNED_SHORT_4_4_4_4||t===Xs.UNSIGNED_SHORT_5_5_5_1||t===Xs.UNSIGNED_SHORT_5_6_5},sizeInBytes:function(t){switch(t){case Xs.UNSIGNED_BYTE:return 1;case Xs.UNSIGNED_SHORT:case Xs.UNSIGNED_SHORT_4_4_4_4:case Xs.UNSIGNED_SHORT_5_5_5_1:case Xs.UNSIGNED_SHORT_5_6_5:case Xs.HALF_FLOAT:return 2;case Xs.UNSIGNED_INT:case Xs.FLOAT:case Xs.UNSIGNED_INT_24_8:return 4}},validate:function(t){return t===Xs.UNSIGNED_BYTE||t===Xs.UNSIGNED_SHORT||t===Xs.UNSIGNED_INT||t===Xs.FLOAT||t===Xs.HALF_FLOAT||t===Xs.UNSIGNED_INT_24_8||t===Xs.UNSIGNED_SHORT_4_4_4_4||t===Xs.UNSIGNED_SHORT_5_5_5_1||t===Xs.UNSIGNED_SHORT_5_6_5}},Hs=Object.freeze(Xs),xs={DEPTH_COMPONENT:vs.DEPTH_COMPONENT,DEPTH_STENCIL:vs.DEPTH_STENCIL,ALPHA:vs.ALPHA,RGB:vs.RGB,RGBA:vs.RGBA,LUMINANCE:vs.LUMINANCE,LUMINANCE_ALPHA:vs.LUMINANCE_ALPHA,RGB_DXT1:vs.COMPRESSED_RGB_S3TC_DXT1_EXT,RGBA_DXT1:vs.COMPRESSED_RGBA_S3TC_DXT1_EXT,RGBA_DXT3:vs.COMPRESSED_RGBA_S3TC_DXT3_EXT,RGBA_DXT5:vs.COMPRESSED_RGBA_S3TC_DXT5_EXT,RGB_PVRTC_4BPPV1:vs.COMPRESSED_RGB_PVRTC_4BPPV1_IMG,RGB_PVRTC_2BPPV1:vs.COMPRESSED_RGB_PVRTC_2BPPV1_IMG,RGBA_PVRTC_4BPPV1:vs.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG,RGBA_PVRTC_2BPPV1:vs.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG,RGBA_ASTC:vs.COMPRESSED_RGBA_ASTC_4x4_WEBGL,RGB_ETC1:vs.COMPRESSED_RGB_ETC1_WEBGL,RGB8_ETC2:vs.COMPRESSED_RGB8_ETC2,RGBA8_ETC2_EAC:vs.COMPRESSED_RGBA8_ETC2_EAC,RGBA_BC7:vs.COMPRESSED_RGBA_BPTC_UNORM,componentsLength:function(t){switch(t){case xs.RGB:return 3;case xs.RGBA:return 4;case xs.LUMINANCE_ALPHA:return 2;case xs.ALPHA:case xs.LUMINANCE:default:return 1}},validate:function(t){return t===xs.DEPTH_COMPONENT||t===xs.DEPTH_STENCIL||t===xs.ALPHA||t===xs.RGB||t===xs.RGBA||t===xs.LUMINANCE||t===xs.LUMINANCE_ALPHA||t===xs.RGB_DXT1||t===xs.RGBA_DXT1||t===xs.RGBA_DXT3||t===xs.RGBA_DXT5||t===xs.RGB_PVRTC_4BPPV1||t===xs.RGB_PVRTC_2BPPV1||t===xs.RGBA_PVRTC_4BPPV1||t===xs.RGBA_PVRTC_2BPPV1||t===xs.RGBA_ASTC||t===xs.RGB_ETC1||t===xs.RGB8_ETC2||t===xs.RGBA8_ETC2_EAC||t===xs.RGBA_BC7},isColorFormat:function(t){return t===xs.ALPHA||t===xs.RGB||t===xs.RGBA||t===xs.LUMINANCE||t===xs.LUMINANCE_ALPHA},isDepthFormat:function(t){return t===xs.DEPTH_COMPONENT||t===xs.DEPTH_STENCIL},isCompressedFormat:function(t){return t===xs.RGB_DXT1||t===xs.RGBA_DXT1||t===xs.RGBA_DXT3||t===xs.RGBA_DXT5||t===xs.RGB_PVRTC_4BPPV1||t===xs.RGB_PVRTC_2BPPV1||t===xs.RGBA_PVRTC_4BPPV1||t===xs.RGBA_PVRTC_2BPPV1||t===xs.RGBA_ASTC||t===xs.RGB_ETC1||t===xs.RGB8_ETC2||t===xs.RGBA8_ETC2_EAC||t===xs.RGBA_BC7},isDXTFormat:function(t){return t===xs.RGB_DXT1||t===xs.RGBA_DXT1||t===xs.RGBA_DXT3||t===xs.RGBA_DXT5},isPVRTCFormat:function(t){return t===xs.RGB_PVRTC_4BPPV1||t===xs.RGB_PVRTC_2BPPV1||t===xs.RGBA_PVRTC_4BPPV1||t===xs.RGBA_PVRTC_2BPPV1},isASTCFormat:function(t){return t===xs.RGBA_ASTC},isETC1Format:function(t){return t===xs.RGB_ETC1},isETC2Format:function(t){return t===xs.RGB8_ETC2||t===xs.RGBA8_ETC2_EAC},isBC7Format:function(t){return t===xs.RGBA_BC7},compressedTextureSizeInBytes:function(t,e,r){switch(t){case xs.RGB_DXT1:case xs.RGBA_DXT1:case xs.RGB_ETC1:case xs.RGB8_ETC2:return Math.floor((e+3)/4)*Math.floor((r+3)/4)*8;case xs.RGBA_DXT3:case xs.RGBA_DXT5:case xs.RGBA_ASTC:case xs.RGBA8_ETC2_EAC:return Math.floor((e+3)/4)*Math.floor((r+3)/4)*16;case xs.RGB_PVRTC_4BPPV1:case xs.RGBA_PVRTC_4BPPV1:return Math.floor((Math.max(e,8)*Math.max(r,8)*4+7)/8);case xs.RGB_PVRTC_2BPPV1:case xs.RGBA_PVRTC_2BPPV1:return Math.floor((Math.max(e,16)*Math.max(r,8)*2+7)/8);case xs.RGBA_BC7:return Math.ceil(e/4)*Math.ceil(r/4)*16;default:return 0}},textureSizeInBytes:function(t,e,r,n){var i=xs.componentsLength(t);return Hs.isPacked(e)&&(i=1),i*Hs.sizeInBytes(e)*r*n},alignmentInBytes:function(t,e,r){var n=xs.textureSizeInBytes(t,e,r,1)%4;return 0===n?4:2===n?2:1},createTypedArray:function(t,e,r,n){var i=Hs.sizeInBytes(e);return new(i===Uint8Array.BYTES_PER_ELEMENT?Uint8Array:i===Uint16Array.BYTES_PER_ELEMENT?Uint16Array:i===Float32Array.BYTES_PER_ELEMENT&&e===Hs.FLOAT?Float32Array:Uint32Array)(xs.componentsLength(t)*r*n)},flipY:function(t,e,r,n,i){if(1===i)return t;for(var s=xs.createTypedArray(e,r,n,i),o=xs.componentsLength(e),a=n*o,c=0;c<i;++c)for(var f=c*n*o,u=(i-c-1)*n*o,l=0;l<a;++l)s[u+l]=t[f+l];return s},toInternalFormat:function(t,e,r){if(!r.webgl2)return t;if(t===xs.DEPTH_STENCIL)return vs.DEPTH24_STENCIL8;if(t===xs.DEPTH_COMPONENT){if(e===Hs.UNSIGNED_SHORT)return vs.DEPTH_COMPONENT16;if(e===Hs.UNSIGNED_INT)return vs.DEPTH_COMPONENT24}if(e===Hs.FLOAT)switch(t){case xs.RGBA:return vs.RGBA32F;case xs.RGB:return vs.RGB32F;case xs.RG:return vs.RG32F;case xs.R:return vs.R32F}if(e===Hs.HALF_FLOAT)switch(t){case xs.RGBA:return vs.RGBA16F;case xs.RGB:return vs.RGB16F;case xs.RG:return vs.RG16F;case xs.R:return vs.R16F}return t}},Vs=Object.freeze(xs);function ks(t,e,r,n,i,s){const o=function(t,e,r,n){let i=t.length,s=r,o=n,a=0;for(;s>0&&o>0;){if(a+=Vs.compressedTextureSizeInBytes(e,s,o),s>>=1,o>>=1,0===s&&0===o)break;s=Math.max(s,1),o=Math.max(o,1)}return a===i}(t,r,i,s);if(!o)return null;const a=6410===r||4369===r;let c=0,f=i,u=s;const l=[];do{let n=Vs.compressedTextureSizeInBytes(r,f,u),i=new Uint8Array(t.buffer,e+c,n);l.push(i),f=Math.max(f>>1,1),u=Math.max(u>>1,1),c+=n}while(c<t.byteLength&&o);return{flipY:a,mipmap:l}}function Zs(t,e){for(var r,n,i,s=t.bytesOffset,o=Es.parseBuffer(t.buffer,s),a=o.geoPackage,c=o.groupNode.pageLods,f=[],u=[],l=[],E=[],_=[],A=[],h=[],T=c[0].geodes[0].matrix,R={},y=0;y<o.materials.material.length;y++)R[o.materials.material[y].material.id]=o.materials.material[y].material;var I=Number.MAX_VALUE,N=Number.MAX_VALUE,U=Number.MAX_VALUE,S=Number.MIN_VALUE,d=Number.MIN_VALUE,m=Number.MIN_VALUE;for(var O in a){var M=a[O].vertexPackage;r=M.verticesCount;var F=M.vertexAttributes[0].typedArray.buffer,C=M.vertexAttributes[0].typedArray.byteOffset,b=M.vertexAttributes[0].componentsPerAttribute;i=new Float32Array(F,M.vertexAttributes[0].offsetInBytes+C,r*b);for(let t=0;t<r;t++){var p=i[t*b],w=i[t*b+1],D=i[t*b+2];I=Math.min(I,p),N=Math.min(N,w),U=Math.min(U,D),S=Math.max(S,p),d=Math.max(d,w),m=Math.max(m,D)}f.push(i),ho("aTexCoord0",M,F,r,l),ho("batchId",M,F,r,_),M.vertexColor?E.push(M.vertexColor):E.push(void 0);var B=a[O].arrIndexPackage[0].indicesTypedArray,L=B.byteLength/a[O].arrIndexPackage[0].indicesCount;n=new(4===L?Uint32Array:2===L?Uint16Array:Uint8Array)(B.buffer,(a[O].arrIndexPackage[0].bytesOffset||0)+B.byteOffset,a[O].arrIndexPackage[0].indicesCount),u.push(n),n.length,h.push(r);var P=a[O].arrIndexPackage[0].materialCode;A.push(R[P])}var g=[I,N,U],G=[S,d,m];const v=function(t,e,r,n,i,s,o,a,c,f,u,l,E,_,A){let h=0;for(const t in a)a[t].width*a[t].height*4>h&&(h=a[t].width*a[t].height*4);(!Ks||h>Ks)&&(Ys=new Uint8ClampedArray(h+122),Ks=h);const T=[],R={magFilter:9729,minFilter:9729,wrapS:10497,wrapT:10497},y={},I={},N=[],U=[],S=[];for(let c=0;c<r.length;c++){const h=e[c],d=t[c],m=r[c],O=i&&i[c]&&i[c],M=n&&n[c]&&n[c],F=s&&s[c]&&s[c],C=o&&o[c]&&o[c],b={POSITION:{array:m,componentType:5126,count:d,byteOffset:m.byteOffset,byteStride:0,byteLength:m.byteLength,type:ue(m.length/d),itemSize:m.length/d,name:"POSITION",min:f,max:u}};N.indexOf(m.buffer)<0&&N.push(m.buffer),O&&To(b,"TEXCOORD_0",O,d,N),M&&To(b,"NORMAL",M,d,N),F&&To(b,"COLOR_0",F,d,N),C&&To(b,"_BATCHID",C,d,N);const p={attributes:b,material:c,indices:{array:h.slice(),itemSize:1,byteLength:h.byteLength,byteOffset:0,byteStride:0,name:h,count:h.length,componentType:5123},mode:4};N.push(p.indices.array.buffer);const w={primitives:[p],index:c};I[c]=w;const D={mesh:c,nodeIndex:c,matrix:A};y[c]=D,U.push({nodes:[D]});const B=E[c],L={uFillForeColor:[1,1,1,1]};let P=B.ambient;L.ambientColor=[P.r,P.g,P.b,P.a];let g=B.diffuse;L.uDiffuseColor=[g.r,g.g,g.b,g.a];let G=B.specular;L.specularColor=[G.r,G.g,G.b,G.a],L.shininess=B.shininess,L.bTransparentSorting=B.transparentsorting;let v=B.textureunitstates;if(v.length){L.uTexMatrix=v[0].textureunitstate.texmodmatrix;const t=a[v[0].textureunitstate.id];if(L.uTexture0Width=t.width,v[1]){const t=a[v[1].textureunitstate.id];L.uTexture1Width=t.width}}S.push({pbrMetallicRoughness:{baseColorFactor:[.8,.8,.8,1],metallicFactor:0,roughnessFactor:.5},extensions:{KHR_techniques_webgl:{technique:0,values:L}}}),T.push(js(c,E,l,a,_).then((t=>{if(!t)return null;const{array:e,mipmap:r,width:n,height:i,format:s,flipY:o}=t;if(e&&N.indexOf(e.buffer)<0&&N.push(e.buffer),r)for(let t=0;t<r.length;t++)e&&N.indexOf(r[t].buffer)<0&&N.push(r[t].buffer);let a=R;return r&&(a={magFilter:R.magFilter,minFilter:9987,wrapS:R.wrapS,wrapT:R.wrapT}),{materialIndex:c,image:{mipmap:r,array:e,flipY:!!o,width:n,height:i,mimeType:"image/bmp"},sampler:a,format:s,source:c}})))}return Promise.all(T).then((t=>{t=t.filter((t=>!!t));for(let e=0;e<t.length;e++){const{materialIndex:r}=t[e];let n="uTexture";S[r].extensions.KHR_techniques_webgl.values.uTexture&&(n="uTexture2"),S[r].extensions.KHR_techniques_webgl.values[n]={"index":e,"texCoord":r},delete t[e].materialIndex}return{transferables:N,gltf:{"asset":{"generator":"S3M","version":"2.0"},"scene":0,"scenes":U,"nodes":y,"meshes":I,"materials":S,"skins":[],"animations":null,"textures":t,"transferables":[{},{},{},{},{}]}}}))}(h,u,f,null,l,E,_,o.texturePackage,0,g,G,[],A,e,T);return v.then((({gltf:t,transferables:e})=>({gltf:t,featureTable:{"BATCH_LENGTH":0},transferables:e,pageLods:c})))}Es.multiplyByPoint=function(t,e,r){var n=e.x,i=e.y,s=e.z,o=t[0]*n+t[4]*i+t[8]*s+t[12],a=t[1]*n+t[5]*i+t[9]*s+t[13],c=t[2]*n+t[6]*i+t[10]*s+t[14];return r.x=o,r.y=a,r.z=c,r};let Ys,Ks=0;let zs=!1;if("undefined"!=typeof OffscreenCanvas){let t;try{t=new OffscreenCanvas(2,2).getContext("2d")}catch(ln){}t&&"undefined"!=typeof createImageBitmap&&(zs=!0)}const Ws={};function js(t,e,r,n,i){const s=Ys;return new Promise((function(r){!function(t){if(e[t].textureunitstates[0]){var o=e[t].textureunitstates[0].textureunitstate.id,a=n[o],c=a.arrayBufferView,f=a.nFormat,u=a.internalFormat;if(function(t){return t===ro||t===no||t===io||t===so||t===oo||t===ao||t===co||t===fo||t===uo||t===lo||t===Eo||t===_o||t===Ao}(u)&&a.width===a.height){const t=ks(c,c.byteOffset,u,0,a.width,a.height);if(t){const{mipmap:e,flipY:n}=t;return void r({format:u,mipmap:e,flipY:n,width:a.width,height:a.height})}}let l;l=f>rs||f===es?122+a.width*a.height*4:61+a.width*a.height,ls.decode(s.subarray(122),a.width,a.height,c,f),function(t,e,r){var n=r*(4*e+e%4),i=n+o,s=new DataView(t),o=0;s.setUint16(o,19778,!0),o+=2,s.setUint32(o,i,!0),o+=4,s.setUint32(o,0,!0),o+=4,s.setUint32(o,122,!0),o+=4,s.setUint32(o,108,!0),o+=4,s.setUint32(o,e,!0),o+=4,s.setUint32(o,r,!0),o+=4,s.setUint16(o,1,!0),o+=2,s.setUint16(o,32,!0),o+=2,s.setUint32(o,this.compress,!0),o+=4,s.setUint32(o,n,!0),o+=4,s.setUint32(o,2835,!0),o+=4,s.setUint32(o,2835,!0),o+=4,s.setUint8(o,0,!0),o+=4,s.setUint32(o,0,!0),o+=4,s.setUint32(o,16711680,!0),o+=4,s.setUint32(o,65280,!0),o+=4,s.setUint32(o,255,!0),o+=4,s.setUint32(o,4278190080,!0),o+=4,s.setUint32(o,1466527264,!0),o+=4}(s.buffer,a.width,a.height);let{width:E,height:_}=a;qs(E)||(E=$s(E)),qs(_)||(_=$s(_));const A=i;let h;A&&(E=Math.min(A,E),_=Math.min(A,_));let T=6408;const R=a.width*a.height*4;!zs||E===a.width&&_===a.height?(h=new Uint8Array(3*R/4),T=6407):(Ws[R]||(Ws[R]=new Uint8Array(R)),h=Ws[R]),h=Gs(h,s.buffer,0,l),!zs||E===a.width&&_===a.height||(h=function(t,e,r,n,i){Js||(Js=new OffscreenCanvas(2,2),Qs=Js.getContext("2d"),to=new OffscreenCanvas(2,2),eo=to.getContext("2d"));const s=new ImageData(new Uint8ClampedArray(t.buffer),e,r);return Js.width=e,Js.height=r,Qs.putImageData(s,0,0),to.width=n,to.height=i,eo.drawImage(Js,0,0,n,i),eo.getImageData(0,0,n,i).data}(h,a.width,a.height,E,_)),h.buffer===(Ws[R]&&Ws[R].buffer)&&(h=new Uint8Array(h)),r({array:h,width:E,height:_,format:T})}else r(null)}(t)}))}function qs(t){return 0==(t&t-1)&&0!==t}function $s(t){return Math.pow(2,Math.floor(Math.log(t)/Math.LN2))}let Js,Qs,to,eo;const ro=33776,no=33777,io=33778,so=33779,oo=35840,ao=35841,co=35842,fo=35843,uo=37808,lo=36196,Eo=37492,_o=37496,Ao=36492;function ho(t,e,r,n,i){var s,o=e.attrLocation[t];if(o){const t=e.vertexAttributes[o];if(t.typedArray.buffer!==r)i.push(t.typedArray);else{var a=t.componentsPerAttribute;var c=new(s=t.componentDatatype,ce[s])(r,t.offsetInBytes+t.typedArray.byteOffset,n*a);i.push(c)}}else i.push(void 0)}function To(t,e,r,n,i){t[e]={array:r,componentType:fe(r.constructor),count:n,byteOffset:r.byteOffset,byteStride:0,byteLength:r.byteLength,type:ue(r.length/n),itemSize:r.length/n,name:e},i.indexOf(r.buffer)<0&&i.push(r.buffer)}var Ro=So("DXT1"),yo=So("DXT3"),Io=So("DXT5"),No=So("DX10"),Uo=function(t){var e,r,n=new Int32Array(t,0,31);if(542327876!==n[0])throw new Error("Invalid magic number in DDS header");if(4&!n[20])throw new Error("Unsupported format, must contain a FourCC code");var i=n[21];switch(i){case Ro:e=8,r="dxt1";break;case yo:e=16,r="dxt3";break;case Io:e=16,r="dxt5";break;case 116:r="rgba32f";break;case No:var s=new Uint32Array(t.slice(128,148));r=s[0];var o=s[1];if(s[2],s[3],s[4],3!==o||2!==r)throw new Error("Unsupported DX10 texture format "+r);r="rgba32f";break;default:throw new Error("Unsupported FourCC code: "+(a=i,String.fromCharCode(255&a,a>>8&255,a>>16&255,a>>24&255)))}var a;var c=n[2],f=1;131072&c&&(f=Math.max(1,n[7]));var u=!1;512&n[28]&&(u=!0);var l,E=n[4],_=n[3],A=n[1]+4,h=E,T=_,R=[];i===No&&(A+=20);if(u)for(var y=0;y<6;y++){if("rgba32f"!==r)throw new Error("Only RGBA32f cubemaps are supported");E=h,_=T;for(var I=Math.log(E)/Math.log(2)+1,N=0;N<I;N++)l=E*_*16,R.push({offset:A,length:l,shape:[E,_]}),N<f&&(A+=l),E=Math.floor(E/2),_=Math.floor(_/2)}else for(N=0;N<f;N++)l=Math.max(4,E)/4*Math.max(4,_)/4*e,R.push({offset:A,length:l,shape:[E,_]}),A+=l,E=Math.floor(E/2),_=Math.floor(_/2);return{shape:[h,T],images:R,format:r,flags:c,cubemap:u}};function So(t){return t.charCodeAt(0)+(t.charCodeAt(1)<<8)+(t.charCodeAt(2)<<16)+(t.charCodeAt(3)<<24)}const mo=Math.PI/180,Oo=6378137*Math.PI/180,Mo=85.0511287798;function Fo(t,e,r){if("EPSG:3857"===r)return function(t,e){const r=Mo,n=e[0],i=Math.max(Math.min(r,e[1]),-r);let s;s=0===i?0:Math.log(Math.tan((90+i)*mo/2))/mo;return t[0]=n*Oo,t[1]=s*Oo,t}(t,e);if("EPSG:4326"===r||"EPSG:4490"===r||"identity"===r)return Co(t,e);if("baidu"===r)return Co(t,e);throw new Error("unsupported projection:"+r)}function Co(t,e){return t[0]=e[0],t[1]=e[1],t}const bo=s([]),po=_e.draco&&_e.draco(),wo=_e.ktx2&&_e.ktx2(),Do={"pbrMetallicRoughness":{"baseColorFactor":[.5,.5,.5,1],"metallicFactor":0,"roughnessFactor":.5}},Bo={"position":{name:"POSITION",accessor:{"componentType":5126,"type":"VEC3"}},"normal":{name:"NORMAL",accessor:{"componentType":5126,"type":"VEC3"}},"uv0":{name:"TEXCOORD_0",accessor:{"componentType":5126,"type":"VEC2"}},"color":{name:"COLOR_0",accessor:{"componentType":5121,"type":"VEC4"}},"uv-region":{name:"uvRegion",accessor:{"componentType":5123,"type":"VEC4"}},"feature-index":{name:"_BATCHID",accessor:{"componentType":5125,"type":"SCALAR"}},"faceRange":{name:"faceRange",accessor:{"componentType":5125,"type":"VEC2"}}};function Lo(t,e,r,n){const i=[],o=[],a=[];for(let e=0;e<t.meshes.length;e++){const{geometry:r,material:n}=t.meshes[e];let s=K.getArrayBuffer(r.url);s.xhr.url=r.url,a.push(s.xhr);const c=s.then((t=>({buffer:t})));i.push(c);const f=[];if(Vo(n,f),f.length){const t=f.map((t=>{const e=K.getArrayBuffer(t.url);return e.xhr.url=t.url,a.push(e.xhr),e.then((e=>e&&e.status?null:{buffer:e,mimeType:t.mimeType,format:t.format}))}));i.push(...t)}o[e]=f.length}const c=Promise.all(i).then((i=>{for(let t=0;t<i.length;t++)if(!i[t]||!i[t].buffer)return Promise.resolve(null);const a=[];let c=0;for(let t=0;t<o.length;t++){const e=o[t];a.push({geoBuffer:{data:i[c].buffer.data},textureBuffers:i.slice(c+1,e+c+1).map((t=>({data:t.buffer.data,mimeType:t.mimeType,format:t.format})))}),c+=1+e}const f=function(t,e,r,n,i){const o={asset:{generator:"i3s",version:"2.0"},extensions:{},scene:0,scenes:[{nodes:[]}],nodes:{},meshes:{},materials:[],skins:[],animations:null,textures:[],transferables:[]},a=[];for(let c=0;c<t.meshes.length;c++){let f,{geometry:u,material:l}=t.meshes[c];const E=e[c].geoBuffer.data;if(!E)continue;f=Wo(E)?go(o,c,u,E,t.transform,t.center,i):vo(o,c,u,E,t.transform,t.center,i),a.push(f),o.nodes[c]={mesh:c,nodeIndex:c,matrix:s([])},o.scenes[0].nodes[c]=o.nodes[c],l||(l=Do);const _=Ho(c,o,l,e[c].textureBuffers,r,n);a.push(_)}return Promise.all(a).then((()=>({gltf:o,featureTable:{BATCH_LENGTH:0},transferables:o.transferables})))}(t,a,e,n,r);return f}));return c.xhr=a,c}const Po={"magFilter":9728,"minFilter":9728,"wrapR":33071,"wrapS":33071,"wrapT":33071};function go(t,e,r,n,i,s,o){const a=r.info.compressedAttributes.attributes.reduce(((t,e,r)=>{const n=Bo[e];if(!n)return t;return t[n.name||e]=r,t}),{});return po(n,{attributes:a,metadatas:{"POSITION":[{name:"i3s-scale_x",type:"double"},{name:"i3s-scale_y",type:"double"}]},useUniqueIDs:!1,skipAttributeTransform:!1}).then((r=>Xo(r,t,e,i,s,o)))}var Go={position:function(t,e,r){const n=3*t.vertexCount,i=new Float32Array(e,r,n);return t.position={array:i,componentType:5126,itemSize:3,count:n/3,meta:{"i3s-scale_x":1,"i3s-scale_y":1},type:"VEC3"},r+=4*n},normal:function(t,e,r){var n=3*t.vertexCount;const i=new Float32Array(e,r,n);return t.normal={array:i,componentType:5126,itemSize:3,count:n/3,type:"VEC3"},r+=4*n},uv0:function(t,e,r){var n=2*t.vertexCount;const i=new Float32Array(e,r,n);return t.uv0={array:i,componentType:5126,itemSize:2,count:n/2,type:"VEC2"},r+=4*n},color:function(t,e,r){var n=4*t.vertexCount;const i=new Uint8Array(e,r,n);return t.color={array:i,componentType:5121,itemSize:4,count:n/4,type:"VEC4"},r+=n},featureId:function(t,e,r){return r+=8*t.featureCount},id:function(t,e,r){return r+=8*t.featureCount},faceRange:function(t,e,r){var n=2*t.featureCount;const i=new Uint32Array(e,r,n);return t.faceRange={array:i,componentType:5125,itemSize:2,count:n/2,type:"VEC2"},r+=4*n},uvRegion:function(t,e,r){var n=4*t.vertexCount;const i=new Uint16Array(e,r,n);return t["uv-region"]={array:i,componentType:5123,itemSize:4,count:n/4,type:"VEC4"},r+=2*n},region:function(t,e,r){var n=4*t.vertexCount;const i=new Uint16Array(e,r,n);return t["uv-region"]={array:i,componentType:5123,itemSize:4,count:n/4,type:"VEC4"},r+=2*n}};function vo(t,e,r,n,i,s,o){const a={vertexCount:0},c=new DataView(n);try{var f=0;a.vertexCount=c.getUint32(f,1),f+=4,a.featureCount=c.getUint32(f,1),f+=4;const t=r.info.ordering?null:r.info;if(t){const e=[];for(const r in t)"offset"!==r&&""!==r&&e.push(r);for(var u=0;u<e.length;u++)Go[e[u]]?f=Go[e[u]](a,n,f):console.error("Unknown decoder for",e[u])}else{const t=r.info;let e=t.ordering,i=t.featureAttributeOrder;const s=null;s&&s.geometryData&&s.geometryData[0]&&s.geometryData[0].params;for(var l=0;l<e.length;l++){var E=Go[e[l]];E||console.log(e[l]),f=E(a,n,f)}for(var _=0;_<i.length;_++){var A=Go[i[_]];A||console.log(i[_]),f=A(a,n,f)}}}catch(t){console.warn(t)}a.scale_x=1,a.scale_y=1;const h={};for(const t in a){const e=Bo[t]&&Bo[t].name;e&&(h[e]=a[t])}if(a.faceRange){const t=a.faceRange.array,e=t.length/2,r=(T=e)<=255?Uint8Array:T<=65535?Uint16Array:Uint32Array,n=new r(h.POSITION.array.length/3);for(let e=0;e<t.length-1;e+=2){const r=e/2,i=t[e],s=t[e+1];for(let t=i;t<=s;t++)n[3*t]=r,n[3*t+1]=r,n[3*t+2]=r}h._BATCHID={componentType:fe(r),array:n,itemSize:1,count:n.length,type:"SCALAR"}}var T;return Xo({attributes:h},t,e,i,s,o)}function Xo(t,e,r,n,i,s){const o={attributes:t.attributes,material:r,indices:t.indices,mode:4};!function(t){const e=t.array,r=t.meta&&t.meta["i3s-scale_x"],n=t.meta&&t.meta["i3s-scale_y"];if(r&&n&&(1!==r||1!==n))for(let t=0;t<e.length;t+=3)e[t]*=r.value,e[t+1]*=n.value}(t.attributes.POSITION);const c=function(t,e,r,n){const i=r;let s,o=[0,0,0,1],c=[0,0];const f=Fo([],r,n);f[2]=r[2];const u=e&&a(bo,e);return me(t,(t=>(o[0]=t[0],o[1]=t[1],o[2]=t[2],u||(o=U(o,o,e)),i&&_(o,o,i),Fo(c,o,n),s=o[2],t[0]=c[0]-f[0],t[1]=c[1]-f[1],t[2]=s-f[2],t))),f}(t.attributes.POSITION,n,i,s);e.meshes[r]={primitives:[o],index:r},e.extensions.MAPTALKS_RTC={projCenter:c},e.extensions.CESIUM_RTC={rtcCoord:i};for(const r in t.attributes)zo(e.transferables,t.attributes[r].array.buffer);return t.indices&&zo(e.transferables,t.indices.array.buffer),o}function Ho(t,e,r,n,i,s){const o=n.map((t=>function(t,e,r,n,i){if("dds"===e){const e=Uo(t),n=e.images.map((e=>new Uint8Array(t,e.offset,e.length))),i="dxt1"===e.format?33777:33779;return Promise.resolve({image:{mipmap:n,width:e.shape[0],height:e.shape[1],mimeType:r},sampler:Po,format:i})}if("png"===e||"jpg"===e)return function(t,e){ko||(ko=new OffscreenCanvas(2,2),Zo=ko.getContext("2d"));const r=new Blob([new Uint8Array(t)]);return createImageBitmap(r).then((t=>{let{width:r,height:n}=t;Yo(r)||(r=Ko(r)),Yo(n)||(n=Ko(n));const i=e;i&&(r=Math.min(i,r),n=Math.min(i,n)),ko.width=r,ko.height=n,Zo.drawImage(t,0,0,r,n),t.close();const s=Zo.getImageData(0,0,r,n);return{width:r,height:n,array:new Uint8Array(s.data)}})).catch((()=>({width:2,height:2,array:new Uint8Array(4)})))}(t,i).then((t=>{t.mimeType=r;return{image:t,sampler:Po,format:6408}}));if("ktx2"===e)return wo(t,n).then((t=>(t.mimeType=r,{image:t,sampler:Po,format:t.format})))}(t.data,t.format,t.mimeType,i,s).then((t=>{if(t.image)if(t.image.array)zo(e.transferables,t.image.array.buffer);else if(t.image.mipmap)for(let r=0;r<t.image.mipmap.length;r++)zo(e.transferables,t.image.mipmap[r].buffer);return t}))));return Promise.all(o).then((n=>{xo(t,e,r,n)}))}function xo(t,e,r,n){const i=JSON.parse(JSON.stringify(r)),s=e.textures;n.ptr||(n.ptr=0);for(const t in r)r[t]&&r[t].url?(s.push(n[n.ptr++]),i[t]={index:s.length-1},void 0!==r[t].factor&&(i[t].scale=r[t].factor)):Rt(r[t])&&(i[t]=xo(-1,e,r[t],n));return t>=0&&(e.materials[t]=i),i}function Vo(t,e){for(const r in t)t[r]&&t[r].url?e.push({url:t[r].url,mimeType:t[r].mimeType,format:t[r].format}):Rt(t[r])&&Vo(t[r],e)}let ko,Zo;function Yo(t){return 0==(t&t-1)&&0!==t}function Ko(t){return Math.pow(2,Math.floor(Math.log(t)/Math.LN2))}function zo(t,e){e&&(t.indexOf(e)>=0||t.push(e))}function Wo(t){const e=new Uint8Array(t,0,5);return e[0]==="D".charCodeAt()&&e[1]==="R".charCodeAt()&&e[2]==="A".charCodeAt()&&e[3]==="C".charCodeAt()&&e[4]==="O".charCodeAt()}const jo=[1,0,0,0,0,0,1,0,0,-1,0,0,0,0,0,1],qo=[0,0,1,0,0,1,0,0,-1,0,0,0,0,0,0,1],$o="undefined"!=typeof TextDecoder?new TextDecoder("utf-8"):null;let Jo,Qo,ta=!1;if("undefined"!=typeof OffscreenCanvas){try{Qo=new OffscreenCanvas(2,2).getContext("2d")}catch(ln){}Qo&&"undefined"!=typeof createImageBitmap&&(ta=!0)}const ea=s([]),ra=[0,0,0],na=[],ia=[],sa=[],oa=[];class aa{constructor(t,e,r,n){this.id=t,this.options=e,this.dt=this.requestImage.bind(this),this.Ot=r,this.Mt={},n(null,{},[])}Ft(t){this.Ct||(this.bt=new Ie,this.Ct=new Ae(this.dt,ut,t),this.wt=new he(this.dt,ut,t))}requestImage(t,e){ta?fetch(t).then((t=>t.blob())).then((t=>createImageBitmap(t))).then((t=>{Jo.width=t.width,Jo.height=t.height,Qo.drawImage(t,0,0);const r=Qo.getImageData(0,0,Jo.width,Jo.height);e(null,{width:t.width,height:t.height,data:new Uint8Array(r.data)})})):this.Ot("requestImage",{url:t},null,e)}loadTile(t,e){this.Ft(t.supportedFormats);const r=t.url,n=t.arraybuffer;if(function(t){return t.indexOf("i3s:")>=0}(r)){const n=t.i3sInfo,i=this.options.services[t.rootIdx].maxTextureSize||1024,s=Lo(n,t.supportedFormats,this.options.projection,i);return s.then((t=>{if(delete this.Mt[r],!t)return void e({status:404,url:r,i3sInfo:n});if(!Object.keys(t.gltf.meshes).length)return void e({status:404,url:r,i3sInfo:n});t.gltf.url=r;const{transferables:i}=t;t.magic="b3dm",e(null,t,i)})),void(this.Mt[r]=s.xhr)}if(n){delete this.Mt[r];const i=new DataView(n),s=Gt(i,0);if("{"===s[0]||" "===s[0]||"<"===s[0]){const i=function(t,e,r){if($o){const n=new Uint8Array(t,e,r);return $o.decode(n)}return St(new Uint8Array(t,e,r))}(n,0,n.byteLength),s=JSON.parse(i);this.Dt(t.rootIdx,s,n,r,e)}else{const o=i.getFloat32(0,!0);1===o||2===o?this.Bt(n,r,t,e):this.Lt(n,r,t,s,e)}}else{const n=this.options.services[t.rootIdx];let i=n.urlParams;i&&(i=(r.indexOf("?")>0?"&":"?")+i);let s=K.getArrayBuffer(r+(i||""),n.fetchOptions);const o=s.xhr;s=s.then((n=>{delete this.Mt[r],n&&n.status?e(n):(t.arraybuffer=n&&n.data,this.loadTile(t,e))})).catch((t=>{delete this.Mt[r],e(t)})),this.Mt[r]=o}}Lt(t,e,r,n,i){const s=this.options.services[r.rootIdx];if("b3dm"===n){this.Ct.load(e,t,0,0,{maxTextureSize:s.maxTextureSize||1024}).then((t=>{if(t.error)return void i(t);const{content:e,transferables:n}=this.Pt(t,r);i(null,e,n)})).catch((t=>{i(t)}))}else if("pnts"===n){const n=r.transform;this.bt.load(e,t).then((t=>{const{content:e,transferables:s}=this.gt(t,n,r.rootIdx);i(null,e,s)}))}else if("i3dm"===n){const n=r.transform;this.wt.load(e,t,0,0,{maxTextureSize:s.maxTextureSize||1024}).then((t=>{const{content:e,transferables:s}=this.gt(t,n,r.rootIdx);i(null,e,s)}))}else if("cmpt"===n){new Ue(this.dt,ut).load(e,t,0,0,{maxTextureSize:s.maxTextureSize||1024}).then((t=>{const{content:e,transferables:n}=this.Gt(t,r);i(null,e,n)})).catch((t=>{i(t)}))}}Bt(t,e,r,n){Zs({buffer:t,bytesOffset:0},this.options.services[r.rootIdx].maxTextureSize||1024).then((t=>{t.gltf.url=e;const{content:i,transferables:s}=this.Pt(t,r);if(i.magic="b3dm",t.pageLods){const e=this.vt(t.pageLods);e.length&&(i.children=e)}n(null,i,s)}))}vt(t){const e=[];for(let r=0;r<t.length;r++){const n=t[r];if(!n.childTile)continue;const i={boundingVolume:{sphere:[n.boundingSphere.center.x,n.boundingSphere.center.y,n.boundingSphere.center.z,n.boundingSphere.radius]},content:{uri:n.childTile},geometricError:n.boundingSphere.radius/n.rangeList*16,refine:"REPLACE"};e.push(i)}return e}Dt(t,e,r,n,i){return e.dataType&&e.position?void i(null,Fe(e)):(e.capabilities,void i(null,e))}Gt(t,e){const{tiles:r}=t,n={magic:"cmpt",content:[]},i=[];for(let t=0;t<r.length;t++){const{magic:s}=r[t];if("b3dm"===s){const{content:s,transferables:o}=this.Pt(r[t],e);ua(i,o),n.content.push(s)}else if("i3dm"===s||"pnts"===s){const{transform:s,rootIdx:o}=e,{content:a,transferables:c}=this.gt(r[t],s,o);ua(i,c),n.content.push(a)}else if("cmpt"===s){const{content:s,transferables:o}=this.Gt(r[t],e);ua(i,o),n.content.push(s)}}return{content:n,transferables:i}}Pt(t,e){const{gltf:r,transferables:n,featureTable:i}=t,s=function(t){if(!t||!t.meshes)return!1;const e="visited";let r=1;const n=[];for(const i in t.meshes){const s=t.meshes[i],{primitives:o}=s;if(o)for(let t=0;t<o.length;t++){const i=o[t].attributes&&o[t].attributes.POSITION;if(!i||!i.array)continue;i.array.buffer[e]||(i.array.buffer[e]=r++);const s=r-1+"-"+(i.byteOffset||0);if(n.indexOf(s)>=0)return!0;n.push(s)}}return!1}(r);return this.Xt(t.gltf),t.gltf.asset||(t.gltf.asset={}),s?(t.gltf.asset.sharePosition=!0,this.Ht(r,i,e.upAxis,e.transform)):this.xt(r,i,e.upAxis,e.transform),delete t.transferables,{content:t,transferables:n}}gt(t,e,r){const{featureTable:i}=t,s=t.pnts||t.i3dm;let o=i&&i.RTC_CENTER||[0,0,0];if(i.EAST_NORTH_UP&&!s.NORMAL_UP&&!s.NORMAL_UP_OCT32P){const e=new Float32Array(3*s.POSITION.array.length),r=[],i=[],a=[];me(s.POSITION,((t,s)=>{_(a,t,o),re(a,null,r),n(i,r);!function(t,e){t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8]}(e.subarray(9*s,9*(s+1)),i)})),s.INSTANCE_ROTATION={byteStride:0,byteOffset:0,itemSize:9,componentType:5126,array:e},t.transferables.push(e.buffer)}const a={xmin:1/0,xmax:-1/0,ymin:1/0,ymax:-1/0,hmin:1/0,hmax:-1/0};ca(s.POSITION.array,3,o,ea,a);const c=fa(a),f=l([],c),u=[1/0,1/0,1/0],E=[-1/0,-1/0,-1/0];me(s.POSITION,(t=>{t[0]=t[0]+o[0]-f[0],t[1]=t[1]+o[1]-f[1],t[2]=t[2]+o[2]-f[2],t[0]<u[0]&&(u[0]=t[0]),t[1]<u[1]&&(u[1]=t[1]),t[2]<u[2]&&(u[2]=t[2]),t[0]>E[0]&&(E[0]=t[0]),t[1]>E[1]&&(E[1]=t[1]),t[2]>E[2]&&(E[2]=t[2])})),s.POSITION.min=u,s.POSITION.max=E,e&&U(c,c,e);const A=this.Vt(c);t.rtcCenter=f,t.rtcCoord=A,t.rootIdx=r;const h=t.transferables;return delete t.transferables,{content:t,transferables:h}}Xt(t){if(!Array.isArray(t.textures))return;const e=t.textures;for(let t=0;t<e.length;t++){const r=e[t].image&&e[t].image.array;if(r&&r.length){const n=r[0],i=r[1],s=r[2],o=r[3];let a=!0;for(let t=4;t<r.length;t+=4)if(r[t]!==n||r[t+1]!==i||r[t+2]!==s||r[t+3]!==o){a=!1;break}a&&(e[t].image.color=[n/255,i/255,s/255,o/255],delete e[t].image.array)}}}abortTileLoading(t,e){const r=this.Mt[t.url];if(Array.isArray(r))for(let t=0;t<r.length;t++)r[t].abort();else r&&r.abort&&r.abort();delete this.Mt[t.url],e(null)}kt(t,e,r,n){let i=e&&e.RTC_CENTER||t.extensions&&t.extensions.CESIUM_RTC&&t.extensions.CESIUM_RTC.center,a=jo;"X"===(r=r&&r.toUpperCase())?a=qo:"Z"===r&&(a=ea),t.extensions=t.extensions||{},t.extensions.CESIUM_RTC||(t.extensions.CESIUM_RTC={}),i&&(t.extensions.CESIUM_RTC.center=i),t.extensions.MAPTALKS_RTC={};const c={xmin:1/0,xmax:-1/0,ymin:1/0,ymax:-1/0,hmin:1/0,hmax:-1/0};Se(t,(t=>{if(!(t.attributes&&t.attributes.POSITION))return;const e=s(na);if(t.matrices)for(let r=t.matrices.length-1;r>=0;r--)o(e,e,t.matrices[r]);const r=t.attributes.POSITION.array,f=t.attributes.POSITION.itemSize;o(e,a,e),n&&o(e,n,e),ca(r,f,i||ra,e,c)}));const f=fa(c);return{rtcCenter:i,modelCenter:f,upAxisTransform:a}}Ht(t,e,r,n){const{modelCenter:i,upAxisTransform:a,rtcCenter:c}=this.kt(t,e,r),f=l([],i);n&&U(i,i,n),t.extensions.CESIUM_RTC.rtcCoord=this.Vt(i),c||(Se(t,(t=>{if(t.attributes&&t.attributes.POSITION){const e=t.attributes.POSITION;if(e.array.buffer.projected&&e.array.buffer.projected[e.byteOffset])return;const r=s(na);if(t.matrices)for(let e=t.matrices.length-1;e>=0;e--)o(r,r,t.matrices[e]);o(r,a,r);const n=function(t,e){var r=e[0],n=e[1],i=e[2],s=e[3],o=e[4],a=e[5],c=e[6],f=e[7],u=e[8],l=e[9],E=e[10],_=e[11],A=e[12],h=e[13],T=e[14],R=e[15],y=r*a-n*o,I=r*c-i*o,N=r*f-s*o,U=n*c-i*a,S=n*f-s*a,d=i*f-s*c,m=u*h-l*A,O=u*T-E*A,M=u*R-_*A,F=l*T-E*h,C=l*R-_*h,b=E*R-_*T,p=y*b-I*C+N*F+U*M-S*O+d*m;return p?(p=1/p,t[0]=(a*b-c*C+f*F)*p,t[1]=(i*C-n*b-s*F)*p,t[2]=(h*d-T*S+R*U)*p,t[3]=(E*S-l*d-_*U)*p,t[4]=(c*M-o*b-f*O)*p,t[5]=(r*b-i*M+s*O)*p,t[6]=(T*N-A*d-R*I)*p,t[7]=(u*d-E*N+_*I)*p,t[8]=(o*C-a*M+f*m)*p,t[9]=(n*M-r*C-s*m)*p,t[10]=(A*S-h*N+R*y)*p,t[11]=(l*N-u*S-_*y)*p,t[12]=(a*O-o*F-c*m)*p,t[13]=(r*F-n*O+i*m)*p,t[14]=(h*I-A*U-T*y)*p,t[15]=(u*U-l*I+E*y)*p,t):null}(ia,r),i=[1/0,1/0,1/0],c=[-1/0,-1/0,-1/0];me(e,(t=>{U(t,t,r),t[0]=t[0]-f[0],t[1]=t[1]-f[1],t[2]=t[2]-f[2],U(t,t,n),t[0]<i[0]&&(i[0]=t[0]),t[1]<i[1]&&(i[1]=t[1]),t[2]<i[2]&&(i[2]=t[2]),t[0]>c[0]&&(c[0]=t[0]),t[1]>c[1]&&(c[1]=t[1]),t[2]>c[2]&&(c[2]=t[2])})),e.min=i,e.max=c,e.array.buffer.projected||(e.array.buffer.projected={}),e.array.buffer.projected[e.byteOffset]=1}})),t.extensions.CESIUM_RTC.center=f)}xt(t,e,r,n){const{modelCenter:i,rtcCenter:s}=this.kt(t,e,r,n),o=this.Zt(i);t.extensions.MAPTALKS_RTC.projCenter=o,t.extensions.CESIUM_RTC.rtcCoord=this.Vt(i),Se(t,(e=>{e.attributes&&e.attributes.POSITION&&(e.attributes.NORMAL&&this.Yt(e.attributes.NORMAL,e.matrices,r),e.attributes.TANGENT&&this.Yt(e.attributes.TANGENT,e.matrices,r),this.Kt(e.attributes.POSITION,e.matrices,s,t.extensions.MAPTALKS_RTC,r,n))}));for(const e in t.nodes){t.nodes[e].matrix=ea}}Zt(t){0===m(t)?E(sa,0,0,-6378137):wt(sa,t);const e=this.options.projection;Fo(oa,sa,e);const r=sa[2],n=[];return n[0]=oa[0],n[1]=oa[1],n[2]=r,n}Yt(t,e,r){let s;s="Y"===r?jo:"X"===r?qo:ea;const c=i([],s);for(let t=e.length-1;t>=0;t--)o(c,s,e[t]);if(a(c,ea))return;const f=n([],c),u=[];me(t,(t=>(function(t,e,r){var n=e[0],i=e[1],s=e[2];t[0]=n*r[0]+i*r[3]+s*r[6],t[1]=n*r[1]+i*r[4]+s*r[7],t[2]=n*r[2]+i*r[5]+s*r[8]}(u,t,f),y(u,u),l(t,u),u)))}Kt(t,e,r,n,i,c){if(t.array.buffer.projected&&t.array.buffer.projected[t.byteOffset])return;const f=s([]);for(let t=e.length-1;t>=0;t--)o(f,f,e[t]);const u=this.options.projection;i=i&&i.toUpperCase();const l=r;let A=null;"Y"===i?A=jo:"X"===i&&(A=qo);let h,T=[0,0,0,1],R=[0,0,0],y=[0,0];const I=n.projCenter,N=c&&a(ea,c),S=t.min=t.min||[],d=t.max=t.max||[];return E(S,1/0,1/0,1/0),E(d,-1/0,-1/0,-1/0),me(t,(t=>(T[0]=t[0],T[1]=t[1],T[2]=t[2],T=U(T,T,f),A&&(T=U(T,T,A)),l&&_(T,T,l),c&&!N&&(T=U(T,T,c)),0===m(T)?E(R,0,0,-6378137):wt(R,T),Fo(y,R,u),h=R[2],t[0]=y[0]-I[0],t[1]=y[1]-I[1],t[2]=h-I[2],t[0]<S[0]&&(S[0]=t[0]),t[1]<S[1]&&(S[1]=t[1]),t[2]<S[2]&&(S[2]=t[2]),t[0]>d[0]&&(d[0]=t[0]),t[1]>d[1]&&(d[1]=t[1]),t[2]>d[2]&&(d[2]=t[2]),t))),t.array.buffer.projected||(t.array.buffer.projected={}),t.array.buffer.projected[t.byteOffset]=1,{projCenter:I}}Vt(t){return 0===m(t)?E([],0,0,-6378137):wt([],t)}onRemove(){}}function ca(t,e,r,n,i){const s=[];for(let o=0,a=t.length;o<a;o+=e){const{xmin:a,ymin:c,xmax:f,ymax:u,hmin:l,hmax:A}=i;E(s,t[o],t[o+1],t[o+2]),U(s,s,n);const h=_(s,r,s);h[0]<a&&(i.xmin=h[0]),h[0]>f&&(i.xmax=h[0]),h[1]<c&&(i.ymin=h[1]),h[1]>u&&(i.ymax=h[1]),e>2&&(h[2]<l&&(i.hmin=h[2]),h[2]>A&&(i.hmax=h[2]))}}function fa(t){const{xmax:e,ymax:r,xmin:n,ymin:i,hmin:s,hmax:o}=t,a=[(n+e)/2,(i+r)/2,(s+o)/2];return e===-1/0&&(a[0]=0),r===-1/0&&(a[1]=0),o===-1/0&&(a[2]=0),isNaN(a[2])&&(a[2]=0),a}function ua(t,e){for(let r=0;r<e.length;r++)t.indexOf(e[r])<0&&t.push(e[r])}let la=0;class Ea{constructor(t){this.workerId=t,this.workers={},this.zt={}}addLayer({actorId:t,mapId:e,layerId:r,params:n},i){if(this.Wt(e,r))return;const s=this.jt(e,r),o=n.options,a=this.send.bind(this,t);this.workers[s]=new aa(r,o,a,i)}removeLayer({mapId:t,layerId:e},r){const n=this.Wt(t,e),i=this.jt(t,e);delete this.workers[i],n&&n.onRemove(r)}loadTile({mapId:t,layerId:e,params:r},n){const i=this.Wt(t,e);i&&i.loadTile(r,n)}abortTileLoading({mapId:t,layerId:e,params:r},n){const i=this.Wt(t,e);i&&i.abortTileLoading(r,n)}receive(t){const e=t.callback,r=this.zt[e];delete this.zt[e],r&&t.error?r(new Error(t.error)):r&&r(null,t.data)}send(t,e,r,n,i){const s=i?`${t}-${la++}`:null;i&&(this.zt[s]=i),postMessage({type:"<request>",workerId:this.workerId,actorId:t,command:e,params:r,callback:String(s)},n||[])}jt(t,e){return`${t}-${e}`}Wt(t,e){const r=this.jt(t,e);return this.workers[r]}}t.initialize=function(){},t.onmessage=function(t,e){const r=t.data;this.dispatcher||(this.dispatcher=new Ea(t.workerId)),"<response>"===t.type?this.dispatcher.workerId===t.workerId&&this.dispatcher.receive(t):this.dispatcher[r.command]({actorId:r.actorId,mapId:r.mapId,layerId:r.layerId,params:r.params},((t,r,n)=>{t instanceof Error&&(t={message:t.message}),e(t,r,n)}))},Object.defineProperty(t,"qt",{value:!0})}';function A(t){return null==t}function p(t){for(let e=1;e<arguments.length;e++){const r=arguments[e];for(const e in r)t[e]=r[e]}return t}function y(t){return null!=t&&("function"==typeof t||null!==t.constructor&&t.constructor===Function)}function R(t){return"object"==typeof t&&!!t}function g(t){return t*Math.PI/180}function b(t){return t/Math.PI*180}function I(t){let e=document.createElement("a");return e.href=t,t=e.href,e=null,t}function N(t){return Math.sign?Math.sign(t):0===(t=+t)||isNaN(t)?Number(t):t>0?1:-1}const S=[1,1,1,1,2,2,3,0];function O(t){const e=t.length;let r="";for(let n=0;n<e;){let i=t[n++];if(128&i){let r=S[i>>3&7];if(!(64&i)||!r||n+r>e)return null;for(i&=63>>r;r>0;r-=1){const e=t[n++];if(128!=(192&e))return null;i=i<<6|63&e}}r+=String.fromCharCode(i)}return r}function x(t,e,r){return t[3*r]=e[0],t[3*r+1]=e[1],t[3*r+2]=e[2],t}function w(t){return t.flat?t.flat(1/0):t.reduce(((t,e)=>t.concat(e)),[])}function M(t){return t<256?Uint8Array:t<65536?Uint16Array:Uint32Array}function C(t){return 0===t.indexOf("data:")}function v(t){const e=t.indexOf("base64,"),r=t.substring(e+7),n=window.atob(r),i=n.length,s=new Uint8Array(i);for(let t=0;t<i;t++)s[t]=n.charCodeAt(t);return s.buffer}function U(t){for(let e=1;e<arguments.length;e++){const r=arguments[e];if(r)for(let e=0,n=r.length;e<n;e++)t.push(r[e])}return t.length}var B=Object.freeze({__proto__:null,isNil:A,extend:p,isFunction:y,isObject:R,toRadian:g,toDegree:b,getAbsoluteURL:I,sign:N,stringFromUTF8Array:O,setColumn3:x,flatArr:w,getBatchIdArrayType:M,isBase64:C,base64URLToArrayBuffer:v,pushIn:U});const L="undefined"==typeof document?null:document.createElement("canvas");class P extends t.worker.Actor{constructor(t,e){super(t),this.mapId=e}initialize(t){t(null)}loadTile(t,e,r){let n=null;e&&e.arraybuffer&&(n=[e.arraybuffer]);const i={mapId:this.mapId,layerId:t,command:"loadTile",params:e};this.send(i,n,r)}abortTileLoading(t,e,r){const n={mapId:this.mapId,layerId:t,command:"abortTileLoading",params:{url:e}};this.broadcast(n,null,r)}addLayer(t,e,r){const n={actorId:this.actorId,mapId:this.mapId,layerId:t,command:"addLayer",params:{options:e}};this.broadcast(n,null,r)}removeLayer(t,e){const r={mapId:this.mapId,layerId:t,command:"removeLayer"};this.broadcast(r,null,e)}requestImage({url:t},e){const r=new Image;r.onload=()=>{if(!this.isActive())return;if(!L)return void e(new Error("There is no canvas to draw image!"));const t=function(t){if(D(t.width)&&D(t.height))return t;let e=t.width,r=t.height;D(e)||(e=F(e));D(r)||(r=F(r));const n=document.createElement("canvas");n.width=e,n.height=r,n.getContext("2d").drawImage(t,0,0,e,r);const i=t.src,s=i.lastIndexOf("/")+1,o=i.substring(s);return console.warn(`Texture(${o})'s size is not power of two, resize from (${t.width}, ${t.height}) to (${e}, ${r})`),n}(r);L.width=t.width,L.height=t.height;const n=L.getContext("2d");n.drawImage(t,0,0,t.width,t.height);const i=n.getImageData(0,0,t.width,t.height),s={width:t.width,height:t.height,data:new Uint8Array(i.data)};e(null,s,[s.data.buffer])},r.onerror=function(t){e(t)},r.src=t}}function D(t){return 0==(t&t-1)&&0!==t}function F(t){return Math.pow(2,Math.floor(Math.log(t)/Math.LN2))}class G{constructor(t,e){this.max=t,this.currentSize=0,this.onRemove=e,this.reset()}reset(){if(this.data){const t=this.data.values();for(const e of t)this.onRemove(e)}return this.data=new Map,this.currentSize=0,this}clear(){this.reset(),delete this.onRemove}add(t,e){if(!e)return this;if(e.node&&e.node.memorySize&&(this.currentSize+=e.node.memorySize),this.has(t)){const r=this.data.get(t);r&&r.node&&r.node.memorySize&&(this.currentSize-=r.node.memorySize),this.data.delete(t),this.data.set(t,e)}else this.data.set(t,e);return this}shrink(){if(this.currentSize>this.max){const t=this.data.keys();let e=t.next();for(;this.currentSize>this.max&&void 0!==e.value;){if(!this.data.get(e.value).current){const t=this.getAndRemove(e.value);t&&this.onRemove(t)}e=t.next()}}}has(t){return this.data.has(t)}keys(){const t=new Array(this.data.size);let e=0;const r=this.data.keys();for(let n of r)t[e++]=n;return t}getAndRemove(t){if(!this.has(t))return null;const e=this.data.get(t);return e.node&&e.node.memorySize&&(this.currentSize-=e.node.memorySize),this.data.delete(t),e}get(t){if(!this.has(t))return null;const e=this.data.get(t);return this.data.delete(t),this.data.set(t,e),e}remove(t){if(!this.has(t))return this;const e=this.data.get(t);return e.node&&e.node.memorySize&&(this.currentSize-=e.node.memorySize),this.data.delete(t),this.onRemove(e),this}setMaxSize(t){return this.max=t,this.shrink(),this}getMemorySize(){let t=0;const e=this.data.values();for(const r of e){const e=r&&r.node;e&&e.memorySize&&(t+=e.memorySize)}return t}markAll(t){const e=this.data.values();for(const r of e)r.current=t}}function k(t,e){if(t.scenes&&t.scenes.length)for(let r=0,n=t.scenes.length;r<n;r++){const n=t.scenes[r].nodes;for(let r=0,i=n.length;r<i;r++){const i=[];H(n[r],i,t,e)}}}function H(t,e,r,n){if(t.matrix&&e.push(t.matrix),t.children&&t.children.length)for(let i=0,s=t.children.length;i<s;i++)H(t.children[i],e,r,n);if(void 0!==t.mesh){const i=t.mesh,s=r.meshes[i];if(s){const t=e.slice(0),o=s.primitives;for(let e=0,s=o.length;e<s;e++){const s=o[e];s&&(s.matrices=t,n(s,i,e,r))}}}}function z(t,e,r){let{componentType:n,byteOffset:i,byteStride:s,itemSize:o}=e;const a=e.array.buffer,c=n?h.getTypedArrayCtor(n):e.array.constructor;if(i=void 0===i?e.array.byteOffset:i,s=s||0,!s||s===o*c.BYTES_PER_ELEMENT&&i%c.BYTES_PER_ELEMENT==0){const e=new c(a,i+r*o*c.BYTES_PER_ELEMENT,o);return t.set(e),t}s||(s=o*c.BYTES_PER_ELEMENT);const l=new Uint8Array(a,s*r+i,o*c.BYTES_PER_ELEMENT);return new Uint8Array(t.buffer).set(l),t}function V(t,e,r,n){t[4*e]=r[n],t[4*e+1]=r[n+4],t[4*e+2]=r[n+8],t[4*e+3]=r[n+12]}const X=new Array(3),Y=new Array(3),Z=[40680631590769,40680631590769,40408299984661.445];function K(t,e,r,n){const i=Z,s=Math.cos(r);X[0]=s*Math.cos(e),X[1]=s*Math.sin(e),X[2]=Math.sin(r),nt(X,X),d.multiply(Y,i,X);const o=Math.sqrt(d.dot(X,Y));var a,c,l;return c=Y,l=o,(a=Y)[0]=c[0]/l,a[1]=c[1]/l,a[2]=c[2]/l,d.scale(X,X,n),d.add(t,Y,X)}const W=[1/6378137,1/6378137,1/6356752.314245179],j=[1/40680631590769,1/40680631590769,1/40408299984661.445],q=new Array(3),$=new Array(3),J=new Array(3);function Q(t,e){const r=j,n=function(t,e,r,n,i){const s=e[0],o=e[1],a=e[2],c=r[0],l=r[1],f=r[2],u=s*s*c*c,h=o*o*l*l,_=a*a*f*f,E=u+h+_,T=Math.sqrt(1/E),m=d.scale(tt,e,T);if(E<i)return isFinite(T)?m:void 0;const A=n[0],p=n[1],y=n[2],R=et;R[0]=m[0]*A*2,R[1]=m[1]*p*2,R[2]=m[2]*y*2;let g,b,I,N,S,O,x,w,M,C,v,U=(1-T)*rt(e)/(.5*rt(R)),B=0;do{U-=B,I=1/(1+U*A),N=1/(1+U*p),S=1/(1+U*y),O=I*I,x=N*N,w=S*S,M=O*I,C=x*N,v=w*S,g=u*O+h*x+_*w-1,b=u*M*A+h*C*p+_*v*y;B=g/(-2*b)}while(Math.abs(g)>1e-12);return t[0]=s*I,t[1]=o*N,t[2]=a*S,t}(q,e,W,r,.1);let i=d.mul($,n,r);i=nt(i,i);const s=d.sub(J,e,n),o=Math.atan2(i[1],i[0]),a=Math.asin(i[2]),c=N(d.dot(s,e))*rt(s);return t[0]=b(o),t[1]=b(a),t[2]=c,t}const tt=new Array(3),et=new Array(3);function rt(t){return d.length(t)}function nt(t,e){const r=e[0],n=e[1],i=e[2];let s=r*r+n*n+i*i;return s>0&&(s=Math.sqrt(s),t[0]=e[0]/s,t[1]=e[1]/s,t[2]=e[2]/s),t}function it(t,e){return d.multiply(e,t,j),d.normalize(e,e)}function st(t,e){var r=t[0],n=t[1],i=Math.cos(n),s=i*Math.cos(r),o=i*Math.sin(r),a=Math.sin(n);return e.x=s,e.y=o,e.z=a,d.normalize(e,e)}var ot=Object.freeze({__proto__:null,radianToCartesian3:K,cartesian3ToDegree:Q,normalizeCartesian:nt,geodeticSurfaceNormal:it,geodeticSurfaceNormalCartographic:st});function at(t,e,r,n){r=r||0,n=n||r;var i=Math.abs(t-e);return i<=n||i<=r*Math.max(Math.abs(t),Math.abs(e))}function ct(t,e){let r="";for(let n=0;n<4;n++){const i=t.getUint8(e+n);r+=String.fromCharCode(i)}return r}const lt="undefined"!=typeof TextDecoder?new TextDecoder("utf-8"):null;function ft(t,e,r){const n=new Uint8Array(t,e,r);return lt?JSON.parse(lt.decode(n)):JSON.parse(O(n))}function ut(t,e,r){const n=new Uint8Array(t,e,r);return lt?JSON.parse(lt.decode(n)):JSON.parse(O(n))}function ht(t,e,r){return{offset:e,byteLength:r}}function _t(t,e,r,n){const{byteOffset:i,componentType:s,type:o}=t,{ctor:a,type:c}=pt(s||"UNSIGNED_SHORT"),l=mt(o);return{byteStride:0,byteOffset:i+r,itemSize:l,count:n*l,componentType:c,array:new a(e,r+i,n*l)}}function dt(t,e,r,n){const i=_t(t,e,r,n);return i.array.buffer.byteLength!==e.byteLength&&(i.array=i.array.slice()),i}function Et(t,e,r,n){const{byteOffset:i,componentType:s,type:o}=t,{ctor:a}=pt(s||"UNSIGNED_SHORT"),c=mt(o),l=new a(e,i,r*c);return 1===c?l[n]:l.subarray(n*c,n*c+c)}const Tt={"SCALAR":1,"VEC2":2,"VEC3":3,"VEC4":4};function mt(t){return t?Tt[t]:1}const At={"BYTE":{ctor:Int8Array,type:5120,name:"Int8Array"},"UNSIGNED_BYTE":{ctor:Uint8Array,type:5121,name:"Uint8Array"},"SHORT":{ctor:Int16Array,type:5122,name:"Int16Array"},"UNSIGNED_SHORT":{ctor:Uint16Array,type:5123,name:"Uint16Array"},"INT":{ctor:Int32Array,type:5124,name:"Int32Array"},"UNSIGNED_INT":{ctor:Uint32Array,type:5125,name:"Uint32Array"},"FLOAT":{ctor:Float32Array,type:5126,name:"Float32Array"},"DOUBLE":{ctor:Float64Array,type:5126,name:"Float64Array"}};function pt(t){return At[t]}function yt(t){for(let e in At)if(t===At[e].ctor)return At[e].type;throw new Error("unrecognized ctor:"+t)}function Rt(t,e,r,n){const i=t,s=e.length/3;for(let t=0;t<s;t++)i[3*t]=e[3*t]/65535*n[0]+r[0],i[3*t+1]=e[3*t+1]/65535*n[1]+r[1],i[3*t+2]=e[3*t+2]/65535*n[2]+r[2];return i}function gt(t,e,r){let n=t.getUint32(12,!0),i=t.getUint32(16,!0),s=t.getUint32(20,!0),o=t.getUint32(24,!0);const a=t.buffer;let c,l,f={},u={};n>0&&(f=ft(a,e,n),e+=n),i>0&&(c=function(t,e,r){return{offset:e,byteLength:r}}(0,e,i),e+=i),s>0&&(u=ut(a,e,s),e+=s);const h=ht(0,e,o);return l=a.slice(h.offset,h.offset+h.byteLength),r.push(l),{featureTable:f,featureTableBin:c,batchTable:u,batchTableBin:l}}var bt={north:[-1,0,0],east:[0,1,0],up:[0,0,1],south:[1,0,0],west:[0,-1,0],down:[0,0,-1]},It={},Nt={east:[],north:[],up:[],west:[],south:[],down:[]},St=[],Ot=[],xt=[];const wt=[0,0,0];function Mt(t,e,r){return r[0]=t[0],r[1]=t[1],r[2]=t[2],r[3]=t[3],r[4]=t[4],r[5]=t[5],r[6]=t[6],r[7]=t[7],r[8]=t[8],r[9]=t[9],r[10]=t[10],r[11]=t[11],r[12]=e[0],r[13]=e[1],r[14]=e[2],r[15]=t[15],r}const Ct=(Lt={up:{south:"east",north:"west",west:"south",east:"north"},down:{south:"west",north:"east",west:"north",east:"south"},south:{up:"west",down:"east",west:"down",east:"up"},north:{up:"east",down:"west",west:"up",east:"down"},west:{up:"north",down:"south",north:"down",south:"up"},east:{up:"south",down:"north",north:"up",south:"down"}}[vt="east"][Ut="north"],It[Pt=vt+Ut]?Bt=It[Pt]:(Bt=function(t,e,r){if(d.equals(t,wt))d.copy(St,bt[vt]),d.copy(Ot,bt[Ut]),d.copy(xt,bt[Lt]);else if(at(t[0],0,1e-14)&&at(t[1],0,1e-14)){var n=N(t[2]);d.copy(St,bt[vt]),"east"!==vt&&"west"!==vt&&d.scale(St,St,n),d.copy(Ot,bt[Ut]),"east"!==Ut&&"west"!==Ut&&d.scale(Ot,Ot,n),d.copy(xt,bt[Lt]),"east"!==Lt&&"west"!==Lt&&d.scale(xt,xt,n)}else{it(t,Nt.up);var i=Nt.up,s=Nt.east;s[0]=-t[1],s[1]=t[0],s[2]=0,d.normalize(Nt.east,s),d.cross(Nt.north,i,s),d.scale(Nt.down,Nt.up,-1),d.scale(Nt.west,Nt.east,-1),d.scale(Nt.south,Nt.north,-1),St=Nt[vt],Ot=Nt[Ut],xt=Nt[Lt]}return r[0]=St[0],r[1]=St[1],r[2]=St[2],r[3]=0,r[4]=Ot[0],r[5]=Ot[1],r[6]=Ot[2],r[7]=0,r[8]=xt[0],r[9]=xt[1],r[10]=xt[2],r[11]=0,r[12]=t[0],r[13]=t[1],r[14]=t[2],r[15]=1,r},It[Pt]=Bt),Bt);var vt,Ut,Bt,Lt,Pt;const Dt=[],Ft=[],Gt=[],kt=[],Ht=[],zt=[],Vt=[],Xt={x:0,y:0},Yt={x:0,y:0},Zt=Math.PI/180;const Kt={"programs":[{"attributes":["aPosition","instanceId","batchId","aTexCoord0","aTexCoord1","aNormal","aColor","uv2","uv3","uv4","secondary_colour","uv6"],"fragmentShader":1,"vertexShader":0}],"shaders":[{"type":35633,"content":"#include <gl2_vert>\n\nuniform mat4 czm_modelViewProjection;\n\nuniform mat4 czm_modelView;\n\nuniform mat3 czm_normal;\n\n\n\nattribute vec4 aPosition;\n\n\n\n#ifdef VertexColor\n\n attribute vec4 aColor;\n\n#endif\n\n#ifdef VertexNormal\n\n attribute vec3 aNormal;\n\n#endif\n\n#ifdef Instance\n\n attribute float instanceId;\n\n#else\n\n attribute float batchId;\n\n#endif\n\n\n\n#ifdef TexCoord\n\n attribute vec4 aTexCoord0;\n\n varying vec4 vTexCoord;\n\n uniform mat4 uTexMatrix;\n\n#ifdef COMPUTE_TEXCOORD\n\n uniform float uTexture0Width;\n\n varying vec4 vTexMatrix;\n\n varying vec4 vTexCoordTransform;\n\n varying vec2 vIsRGBA;\n\n#endif\n\n#endif\n\n\n\n#ifdef TexCoord2\n\n attribute vec4 aTexCoord1;\n\n uniform float uTexture1Width;\n\n varying vec4 vTexMatrix2;\n\n#endif\n\n#ifdef InstanceBim\n\n attribute vec4 uv2;\n\n attribute vec4 uv3;\n\n attribute vec4 uv4;\n\n attribute vec4 secondary_colour;\n\n attribute vec4 uv6;\n\n#endif\n\n\n\n uniform vec4 uFillForeColor;\n\n uniform vec4 uSelectedColor;\n\n varying vec4 vSecondColor;\n\n varying vec4 vPositionMC;\n\n varying vec3 vPositionEC;\n\n#ifdef VertexNormal\n\n varying vec3 vNormalEC;\n\n#endif\n\n varying vec4 vColor;\n\n\n\n const float SHIFT_LEFT8 = 256.0;\n\n const float SHIFT_RIGHT8 = 1.0 / 256.0;\n\n const float SHIFT_RIGHT4 = 1.0 / 16.0;\n\n const float SHIFT_LEFT4 = 16.0;\n\n void getTextureMatrixFromZValue(in float nZ, inout float XTran, inout float YTran, inout float scale, inout float isRGBA)\n\n {\n\n if(nZ <= 0.0)\n\n {\n\n return;\n\n }\n\n float nDel8 = floor(nZ * SHIFT_RIGHT8);\n\n float nDel16 = floor(nDel8 * SHIFT_RIGHT8);\n\n float nDel20 = floor(nDel16 * SHIFT_RIGHT4);\n\n isRGBA = floor(nDel20);\n\n YTran = nZ - nDel8 * SHIFT_LEFT8;\n\n XTran = nDel8 - nDel16 * SHIFT_LEFT8;\n\n float nLevel = nDel16 - nDel20 * SHIFT_LEFT4;\n\n scale = 1.0 / pow(2.0, nLevel);\n\n }\n\n\n\n void operation(vec4 operationType, vec4 color, vec4 selectedColor, inout vec4 vertexColor)\n\n {\n\n float right_2 = operationType.x * 0.5;\n\n float right_4 = right_2 * 0.5;\n\n float right_8 = right_4 * 0.5;\n\n float right_16 = right_8 * 0.5;\n\n float isSetColor = fract(right_2);\n\n if(isSetColor > 0.1)\n\n {\n\n vertexColor *= color;\n\n }\n\n float isPicked = fract(floor(right_2)* 0.5);\n\n if(isPicked > 0.1)\n\n {\n\n vertexColor *= selectedColor;\n\n }\n\n float isHide = fract(floor(right_4)* 0.5);\n\n if(isHide > 0.1)\n\n {\n\n vertexColor.a = 0.0;\n\n }\n\n }\n\n\n\n void main()\n\n {\n\n #ifdef TexCoord\n\n vTexCoord.xy = aTexCoord0.xy;\n\n #ifdef COMPUTE_TEXCOORD\n\n vTexMatrix = vec4(0.0,0.0,1.0,0.0);\n\n vIsRGBA.x = 0.0;\n\n vTexCoordTransform.x = aTexCoord0.z;\n\n if(vTexCoordTransform.x < -90000.0)\n\n {\n\n vTexMatrix.z = -1.0;\n\n }\n\n getTextureMatrixFromZValue(floor(vTexCoordTransform.x), vTexMatrix.x, vTexMatrix.y, vTexMatrix.z, vIsRGBA.x);\n\n vTexMatrix.w = log2(uTexture0Width * vTexMatrix.z);\n\n #endif\n\n #endif\n\n\n\n #ifdef TexCoord2\n\n vTexCoord.zw = aTexCoord1.xy;\n\n vTexMatrix2 = vec4(0.0,0.0,1.0,0.0);\n\n vIsRGBA.y = 0.0;\n\n vTexCoordTransform.y = aTexCoord1.z;\n\n if(vTexCoordTransform.y < -90000.0)\n\n {\n\n vTexMatrix2.z = -1.0;\n\n }\n\n getTextureMatrixFromZValue(floor(vTexCoordTransform.y), vTexMatrix2.x, vTexMatrix2.y, vTexMatrix2.z, vIsRGBA.y);\n\n vTexMatrix2.w = log2(uTexture1Width * vTexMatrix.z);\n\n #endif\n\n\n\n vec4 vertexPos = aPosition;\n\n vec4 vertexColor = uFillForeColor;\n\n#ifdef VertexColor\n\n vertexColor *= aColor / 255.0;\n\n#endif\n\n#ifdef VertexNormal\n\n vec3 normal = aNormal;\n\n#endif\n\n #ifdef InstanceBim\n\n mat4 worldMatrix;\n\n worldMatrix[0] = uv2;\n\n worldMatrix[1] = uv3;\n\n worldMatrix[2] = uv4;\n\n worldMatrix[3] = vec4(0, 0, 0, 1);\n\n vertexPos = vec4(vertexPos.xyz,1.0) * worldMatrix;\n\n vertexColor *= secondary_colour;\n\n #endif\n\n\n\n\n\n #ifdef Instance\n\n float index = instanceId;\n\n #else\n\n float index = batchId;\n\n #endif\n\n vec4 positionMC = vec4(vertexPos.xyz, 1.0);\n\n vColor = vertexColor;\n\n #ifdef VertexNormal\n\n vNormalEC = czm_normal * normal;\n\n #endif\n\n vPositionMC = positionMC;\n\n vPositionEC = (czm_modelView * positionMC).xyz;\n\n gl_Position = czm_modelViewProjection * vec4(vertexPos.xyz, 1.0);\n\n }\n\n"},{"type":35632,"content":"#ifdef GL_OES_standard_derivatives\n\n #extension GL_OES_standard_derivatives : enable\n\n #define support_standard_derivatives 1\n\n#endif\n\n#ifdef GL_EXT_shader_texture_lod\n\n #extension GL_EXT_shader_texture_lod : enable\n\n #define support_shader_texture_lod 1\n\n#endif\n\n\n\nprecision highp float;\n\n\n\n#include <gl2_frag>\n\n\n\n#if __VERSION__ == 300\n\n #define support_standard_derivatives 1\n\n #define support_shader_texture_lod 1\n\n#endif\n\n\n\n uniform vec3 czm_lightDirectionEC;\n\n uniform vec4 uDiffuseColor;\n\n#ifdef TexCoord\n\n varying vec4 vTexCoord;\n\n#ifdef COMPUTE_TEXCOORD\n\n uniform sampler2D uTexture;\n\n uniform highp float uTexture0Width;\n\n varying vec4 vTexCoordTransform;\n\n varying vec4 vTexMatrix;\n\n varying vec2 vIsRGBA;\n\n#endif\n\n#endif\n\n\n\n varying vec4 vColor;\n\n varying vec4 vPositionMC;\n\n varying vec3 vPositionEC;\n\n#ifdef VertexNormal\n\n varying vec3 vNormalEC;\n\n#endif\n\n#ifdef TexCoord2\n\n uniform sampler2D uTexture2;\n\n uniform float uTexture1Width;\n\n varying vec4 vTexMatrix2;\n\n#endif\n\n#ifdef COMPUTE_TEXCOORD\n\n void calculateMipLevel(in vec2 inTexCoord, in float vecTile, in float fMaxMip, inout float mipLevel)\n\n {\n\n vec2 dx = dFdx(inTexCoord * vecTile);\n\n vec2 dy = dFdy(inTexCoord * vecTile);\n\n float dotX = dot(dx, dx);\n\n float dotY = dot(dy, dy);\n\n float dMax = max(dotX, dotY);\n\n float dMin = min(dotX, dotY);\n\n float offset = (dMax - dMin) / (dMax + dMin);\n\n offset = clamp(offset, 0.0, 1.0);\n\n float d = dMax * (1.0 - offset) + dMin * offset;\n\n mipLevel = 0.5 * log2(d);\n\n mipLevel = clamp(mipLevel, 0.0, fMaxMip - 1.62);\n\n }\n\n\n\n void calculateTexCoord(in vec3 inTexCoord, in float scale, in float XTran, in float YTran, in float fTile, in float mipLevel, inout vec2 outTexCoord)\n\n {\n\n if(inTexCoord.z < -9000.0)\n\n {\n\n outTexCoord = inTexCoord.xy;\n\n }\n\n else\n\n {\n\n vec2 fTexCoord = fract(inTexCoord.xy);\n\n float offset = 1.0 * pow(2.0, mipLevel) / fTile;\n\n fTexCoord = clamp(fTexCoord, offset, 1.0 - offset);\n\n outTexCoord.x = (fTexCoord.x + XTran) * scale;\n\n outTexCoord.y = (fTexCoord.y + YTran) * scale;\n\n }\n\n }\n\n\n\n vec4 getTexColorForS3M(sampler2D curTexture, vec3 oriTexCoord, float texTileWidth, float fMaxMipLev, float fTexCoordScale, vec2 vecTexCoordTranslate, float isRGBA)\n\n {\n\n vec4 color = vec4(1.0);\n\n float mipLevel = 0.0;\n\n #ifdef support_standard_derivatives\n\n calculateMipLevel(oriTexCoord.xy, texTileWidth, fMaxMipLev, mipLevel);\n\n #endif\n\n vec2 realTexCoord;\n\n calculateTexCoord(oriTexCoord, fTexCoordScale, vecTexCoordTranslate.x, vecTexCoordTranslate.y, texTileWidth, mipLevel, realTexCoord);\n\n if(isRGBA > 0.5)\n\n {\n\n vec2 rgbTexCoord;\n\n rgbTexCoord.x = (realTexCoord.x + vecTexCoordTranslate.x * fTexCoordScale) * 0.5;\n\n rgbTexCoord.y = (realTexCoord.y + vecTexCoordTranslate.y * fTexCoordScale) * 0.5;\n\n color = texture2D(curTexture, rgbTexCoord.xy, -10.0);\n\n vec2 vecAlphaTexCoord;\n\n vecAlphaTexCoord.x = rgbTexCoord.x;\n\n vecAlphaTexCoord.y = rgbTexCoord.y + fTexCoordScale * 0.5;\n\n color.a = texture2D(curTexture, vecAlphaTexCoord.xy, -10.0).r;\n\n }\n\n else\n\n {\n\n if(oriTexCoord.z < -9000.0)\n\n {\n\n color = texture2D(curTexture, realTexCoord.xy);\n\n }\n\n else\n\n {\n\n #ifdef support_shader_texture_lod\n\n color = texture2DLodEXT(curTexture, realTexCoord.xy, mipLevel);\n\n #else\n\n color = texture2D(curTexture, realTexCoord.xy, mipLevel);\n\n #endif\n\n }\n\n }\n\n\n\n return color;\n\n }\n\n\n\n vec4 getTextureColor()\n\n {\n\n if(vTexMatrix.z < 0.0)\n\n {\n\n return vec4(1.0);\n\n }\n\n float texTileWidth0 = vTexMatrix.z * uTexture0Width;\n\n vec3 realTexCoord = vec3(vTexCoord.xy, vTexCoordTransform.x);\n\n vec4 FColor = getTexColorForS3M(uTexture, realTexCoord, texTileWidth0, vTexMatrix.w, vTexMatrix.z, vTexMatrix.xy, vIsRGBA.x);\n\n #ifdef TexCoord2\n\n float texTileWidth1 = vTexMatrix2.z * uTexture1Width;\n\n realTexCoord = vec3(vTexCoord.zw, vTexCoordTransform.y);\n\n vec4 SColor = getTexColorForS3M(uTexture2, realTexCoord, texTileWidth1, vTexMatrix2.w, vTexMatrix2.z, vTexMatrix2.xy, vIsRGBA.y);\n\n SColor.r = clamp(SColor.r, 0.0, 1.0);\n\n SColor.g = clamp(SColor.g, 0.0, 1.0);\n\n SColor.b = clamp(SColor.b, 0.0, 1.0);\n\n return FColor * SColor;\n\n #else\n\n return FColor;\n\n #endif\n\n }\n\n#endif\n\n vec4 SRGBtoLINEAR4(vec4 srgbIn)\n\n {\n\n #ifndef HDR\n\n vec3 linearOut = pow(srgbIn.rgb, vec3(2.2));\n\n return vec4(linearOut, srgbIn.a);\n\n #else\n\n return srgbIn;\n\n #endif\n\n }\n\n vec3 LINEARtoSRGB(vec3 linearIn)\n\n {\n\n #ifndef HDR\n\n return pow(linearIn, vec3(1.0/2.2));\n\n #else\n\n return linearIn;\n\n #endif\n\n }\n\n\n\n vec3 computeNormal(in vec3 oriVertex)\n\n {\n\n vec3 normal = cross(vec3(dFdx(oriVertex.x), dFdx(oriVertex.y), dFdx(oriVertex.z)), vec3(dFdy(oriVertex.x), dFdy(oriVertex.y), dFdy(oriVertex.z)));\n\n normal = normalize(normal);\n\n return normal;\n\n }\n\n\n\n void main()\n\n {\n\n if(vColor.a < 0.1)\n\n {\n\n discard;\n\n }\n\n vec4 baseColorWithAlpha = vColor;\n\n #ifdef COMPUTE_TEXCOORD\n\n baseColorWithAlpha *= SRGBtoLINEAR4(getTextureColor());\n\n #endif\n\n\n\n if(baseColorWithAlpha.a < 0.1)\n\n {\n\n discard;\n\n }\n\n vec3 normal = vec3(0.0);\n\n #ifdef VertexNormal\n\n normal = normalize(vNormalEC);\n\n #endif\n\n normal = length(normal) > 0.1 ? normal : computeNormal(vPositionMC.xyz);\n\n vec3 color = baseColorWithAlpha.rgb;\n\n vec3 dirVectorEC = normalize(czm_lightDirectionEC);\n\n float dotProduct = dot( normal, dirVectorEC );\n\n float dirDiffuseWeight = max( dotProduct, 0.0 );\n\n dirDiffuseWeight = dirDiffuseWeight * 0.5 + 0.5;\n\n color += color * uDiffuseColor.rgb * dirDiffuseWeight;\n\n #ifdef TexCoord\n\n color = LINEARtoSRGB(color);\n\n #endif\n\n glFragColor = vec4(color, baseColorWithAlpha.a);\n\n#if __VERSION__ == 100\n\n gl_FragColor = glFragColor;\n\n#endif\n\n }\n\n"}],"techniques":[{"attributes":{"aPosition":{"semantic":"POSITION","type":35666},"instanceId":{"semantic":"instanceId","type":5126},"batchId":{"semantic":"_BATCHID","type":5126},"aTexCoord0":{"semantic":"TEXCOORD_0","type":35664},"aTexCoord1":{"semantic":"aTexCoord1","type":35666},"aNormal":{"semantic":"aNormal","type":35665},"aColor":{"semantic":"COLOR_0","type":35666},"uv2":{"semantic":"uv2","type":35666},"uv3":{"semantic":"uv3","type":35666},"uv4":{"semantic":"uv4","type":35666},"secondary_colour":{"semantic":"secondary_colour","type":35666},"uv6":{"semantic":"uv6","type":35666}},"program":0,"uniforms":{"czm_modelView":{"type":35676,"semantic":"MODELVIEW"},"czm_normal":{"type":35675,"semantic":"MODELINVERSETRANSPOSE"},"czm_modelViewProjection":{"type":35676,"semantic":"MODELVIEWPROJECTION"},"uTexMatrix":{"type":35676},"uTexture0Width":{"type":5126},"uFillForeColor":{"type":35666},"uSelectedColor":{"type":35666},"uDiffuseColor":{"type":35666},"uTexture":{"type":35678},"uTexture2":{"type":35678},"uTexture1Width":{"type":5126}}}]},{getTextureMagFilter:Wt,getTextureMinFilter:jt,getTextureWrap:qt,getMaterialType:$t,getMaterialFormat:Jt,getPrimitive:Qt,getUniqueREGLBuffer:te}=r.REGLHelper,ee=[1,0,0,0,0,0,1,0,0,-1,0,0,0,0,0,1],re=[0,0,1,0,0,1,0,0,-1,0,0,0,0,0,0,1],{loginIBLResOnCanvas:ne,logoutIBLResOnCanvas:ie,getIBLResOnCanvas:se,getPBRUniforms:oe}=r.pbr.PBRUtils,ae={factor:0,units:0},ce={specularStrength:0,materialShininess:1},le=[1,1,1],fe=n.identity([]),ue=t=>t.material instanceof r.PhongMaterial,he=t=>t.material instanceof r.pbr.StandardMaterial,_e=[!0,!0,!0,!0],de=[],Ee=new t.Coordinate(0,0),Te=new t.Point(0,0),me=[],Ae=[],pe=[],ye=[],Re={"POSITION":"POSITION","NORMAL":"NORMAL","TEXCOORD_0":"TEXCOORD_0","TEXCOORD_1":"TEXCOORD_1","COLOR_0":"COLOR_0","TANGENT":"TANGENT","_BATCHID":"_BATCHID"};class ge{constructor(e,n){this.t=n,this.i=n.getRenderer().canvas,this.pickingFBO=n.getRenderer().pickingFBO,this.o=new t.SpatialReference,this.l=e,this.u=new r.Renderer(e),this.h={},this._={},this.T={},this.m={},this.A={},this.p={},this.R={},this.g=new r.Scene,this.I=new r.Scene,this.N=new r.Scene,this.S=new r.Scene,this.O=new r.ResourceLoader(e.texture(2)),this.M=this.C.bind(this),this.v=new r.PhongMaterial({"baseColorFactor":[1,1,1,1]}),this.U(),this.B=new r.KHRTechniquesWebglManager(this.l,this.L(),this.O);const i=this.getMap();i.altitudeToPoint&&(this.P=i.altitudeToPoint(100,i.getGLRes())/100)}getI3DMMeshes(){return this.A}getPNTSMeshes(){return this.m}getB3DMMeshes(){return this.T}getPaintedMeshes(){return this.D}getMap(){return this.t.getMap()}paint(t,e,r,n){const i=this.getMap();if(!t.length||!i)return;const s=this.F(),o=i.projViewMatrix,a=this.t.options.services,c=[],f=[];let u=[];const h=[],_=[];for(let r=0,n=t.length;r<n;r++){const n=t[r].data.node;let i=this.G(n);if(!i)continue;this.p[n.id]&&(i=this.p[n.id],i=w(i));let d=a[n.k].polygonOffset||ae;y(d)&&(d=d());const E=a[n.k].ambientLight;Array.isArray(i)||(c[0]=i,i=c);for(let a=0,c=i.length;a<c;a++){if(i[a].getBoundingBox&&!l(o,i[a].getBoundingBox()))continue;const c=i[a].properties.magic;"b3dm"===c?u.push(i[a]):"pnts"===c?h.push(i[a]):"i3dm"===c&&_.push(i[a]),i[a].properties.level=t[r].selectionDepth,i[a].properties.polygonOffset=d,Object.prototype.hasOwnProperty.call(i[a].uniforms,"ambientColor")||Object.defineProperty(i[a].uniforms,"ambientColor",{enumerable:!0,get:function(){return E||s.ambientColor}}),i[a].H=n,e[n.id]||f.push(i[a])}}let d=0;const E=this.B.getExcludeFilter();d+=this.V(this.X,s,[r,ue,E],n,f,u,_),d+=this.V(this.Y,s,[r,he,E],n,f,u,_),this.B.forEachShader(((t,e,i)=>{const s=this.F(i);d+=this.V(t,s,[r,e],n,f,u,_)})),this.I.setMeshes(h);const T=this.Z();return d+=this.u.render(this.K,T,this.I,n&&n.fbo),this.D={pntsMeshes:h,i3dmMeshes:_,b3dmMeshes:u},d}V(t,e,r,n,i,s,o){t.filter=r.filter((t=>!!t)),e.debug=!1,this.g.setMeshes(i),e.stencilEnable=!1,e.debug=!1,e.cullFace="back",e.colorMask=_e;let a=0;return this.g.setMeshes(s),a+=this.u.render(t,e,this.g,n&&n.fbo),e.stencilEnable=!1,this.N.setMeshes(o),a+=this.u.render(t,e,this.N,n&&n.fbo),a}W(t,e){return e.H.j-t.H.j}paintRegion(t,e,r,n,i){const s=this.getMap();if(!t.length&&!e.length)return;const o=s.projViewMatrix,a=[];for(let r=0,n=(t=t.concat(e)).length;r<n;r++){const e=t[r].node,n=this.q(e);n&&(n.getBoundingBox&&!l(o,n.getBoundingBox())||a.push(n))}this.$.filter=n,this.S.setMeshes(a);const c=this.J(r);this.u.render(this.$,c,this.S,i&&i.fbo)}deleteTile(t){const e=t.node.id;this.tt(e)}tt(t){const e=this._[t];e&&(e.geometry.dispose(),e.dispose(),delete this._[t]);let r=this.T[t]||this.m[t]||this.A[t]||this.p[t]||this.h[t];this.p[t]?this.et(t):r&&(this.rt(r),delete this.T[t],delete this.m[t],delete this.A[t],delete this.h[t])}et(t){let e=this.p[t];e=w(e);for(let t=0;t<e.length;t++){const{id:r}=e[t].properties;this.tt(r)}delete this.p[t]}rt(t){if(Array.isArray(t))for(let e=0,r=t.length;e<r;e++)this.rt(t[e]);else{const e=t.geometry.properties.url;if(e){const t=this.R[e];t&&(t.refCount--,t.refCount<=0&&(t.geometry.dispose(),t.material.dispose(),delete this.R[e]))}else t.geometry.dispose(),t.material&&t.material.dispose();t.dispose()}}remove(){const t=this.t;ie(t.getRenderer().canvas,t.getMap());for(const t in this.p)this.et(t);this.p={};for(const t in this.T)this.tt(t);this.T={};for(const t in this.m)this.tt(t);this.m={};for(const t in this.A)this.tt(t);this.A={};for(const t in this.h)this.tt(t);this.h={};for(const t in this._)this.tt(t);this._={},this.X&&(this.X.dispose(),delete this.X),this.Y&&(this.Y.dispose(),delete this.Y),this.K&&(this.K.dispose(),delete this.K),this.$&&(this.$.dispose(),delete this.$),this.B.dispose(),this.picking&&this.picking.dispose()}q(e){if(!e.boundingVolume||!e.boundingVolume.region)return null;if(this._[e.id])return this._[e.id];const i=e.boundingVolume.region;let s=new t.Coordinate(b(i[0]),b(i[1])),o=new t.Coordinate(b(i[2]),b(i[3]));s=this.nt(s),o=this.nt(o);const a=s.add(o).it(.5);s._sub(a),o._sub(a);const c=this.st(i[4],i[5]),l=c.x,f=c.y,u=[s.x,s.y,f,o.x,s.y,f,o.x,o.y,f,s.x,o.y,f,s.x,s.y,l,o.x,s.y,l,o.x,o.y,l,s.x,o.y,l],h=new r.Geometry({aPosition:u},[0,1,1,2,2,3,3,0,0,4,1,5,2,6,3,7,4,5,5,6,6,7,7,4],0,{primitive:"lines"});h.generateBuffers(this.l);const _=new r.Mesh(h),d=n.identity([]);return _.setLocalTransform(n.translate(d,d,[a.x,a.y,0])),this._[e.id]=_,_}G(t){return this.T[t.id]||this.m[t.id]||this.A[t.id]||this.p[t.id]}has(t){return this.G(t)||this.h[t.id]}createPntsMesh(t,e,i,s){if(this.m[e]){const t=this.m[e];return console.warn(`pnts mesh with id(${e}) was already created.`),s(null,{id:e,mesh:t}),t}const{pnts:o,featureTable:a,rootIdx:c}=t,l=a.POINTS_LENGTH,f=new r.Geometry(o,null,l,{primitive:"points",positionAttribute:"POSITION"});f.generateBuffers(this.l);const u={};o.POSITION?u.HAS_POSITION=1:o.POSITION_QUANTIZED&&(u.HAS_POSITION_QUANTIZED=1),o.RGB?u.HAS_RGB=1:o.RGBA?u.HAS_RGBA=1:o.RGB565&&(u.HAS_RGB565=1),(o.NORMAL||o.NORMAL_OCT16P)&&(u.HAS_NORMAL=1,o.NORMAL_OCT16P&&(u.HAS_NORMAL_OCT16P=1)),t.featureTable.CONSTANT_RGBA&&(t.featureTable.CONSTANT_RGBA=t.featureTable.CONSTANT_RGBA.map((t=>t/255)));const{rtcCenter:h,rtcCoord:_}=t,d=this.ot(pe,_),E=this.ct([],i,h,_);n.multiply(E,E,d);const T=this.t.options.services[c],m=new r.Mesh(f);return m.properties.magic="pnts",m.properties.id=e,m.properties.count=l,m.properties.batchTable=t.batchTable,m.properties.batchTableBin=t.batchTableBin,m.setDefines(u),Object.defineProperty(m.uniforms,"pointColor",{enumerable:!0,get:function(){return t.featureTable.CONSTANT_RGBA?t.featureTable.CONSTANT_RGBA:T&&T.pointColor||[1,1,1,1]}}),Object.defineProperty(m.uniforms,"pointSize",{enumerable:!0,get:function(){return T&&T.pointSize||2}}),Object.defineProperty(m.uniforms,"pointOpacity",{enumerable:!0,get:function(){return T&&T.pointOpacity||1}}),m.setLocalTransform(E),this.m[e]=m,s(null,{id:e,mesh:[m]}),[m]}createI3DMMesh(t,e,s,o){if(this.A[e]){const t=this.A[e];return console.warn(`i3dm mesh with id(${e}) was already created.`),this.h[e]||o(null,{id:e,mesh:t}),t}const c=this.lt(s.ft),{i3dm:l,featureTable:f,gltf:u,batchTable:_,batchTableBin:d,count:E}=t,T=f.INSTANCES_LENGTH,{rtcCenter:m,rtcCoord:A}=t,p=this.ot(pe,A),y=this.ct(ye,s,m,A);n.multiply(p,y,p);const{POSITION:R,NORMAL_UP:g,NORMAL_RIGHT:b,SCALE:I,SCALE_NON_UNIFORM:N,INSTANCE_ROTATION:S}=l,O={"instance_vectorA":new Float32Array(4*T),"instance_vectorB":new Float32Array(4*T),"instance_vectorC":new Float32Array(4*T)},w=new Float32Array(3),M=new Float32Array(3),C=[],v=new Float32Array(1),U=new Float32Array(3),B=[],L=[],P=[],D=[],F=new Float32Array(9);!function(t,e){let{componentType:r,byteOffset:n,byteStride:i,count:s,itemSize:o}=t;const a=t.array.buffer,c=r?h.getTypedArrayCtor(r):t.array.constructor;if(n=void 0===n?t.array.byteOffset:n,i=i||0,s=s||t.array.length/o,(!i||i===o*c.BYTES_PER_ELEMENT)&&n%c.BYTES_PER_ELEMENT==0){const t=new c(a,n,s*o);for(let r=0;r<s*o;r+=o)e(new c(t.buffer,n+r*c.BYTES_PER_ELEMENT,o),r/o);return}const l=new Uint8Array(o*c.BYTES_PER_ELEMENT);i||(i=o*c.BYTES_PER_ELEMENT);for(let t=0;t<s;t++){const r=new Uint8Array(a,i*t+n,o*c.BYTES_PER_ELEMENT);l.set(r),e(new c(l.buffer),t),r.set(l)}}(R,((t,e)=>{g?(z(M,b,e),z(w,g,e),i.cross(C,M,w),i.normalize(C,C),x(B,M,0),x(B,w,1),x(B,C,2),a.fromMat3(L,B)):S?(z(F,S,e),a.fromMat3(L,F)):a.identity(L),I?(z(v,I,e),i.set(P,v[0],v[0],v[0])):N?(z(U,N,e),i.set(P,...U)):i.set(P,1,1,1),n.fromRotationTranslationScale(D,L,t,P),V(O.instance_vectorA,e,D,0),V(O.instance_vectorB,e,D,1),V(O.instance_vectorC,e,D,2)}));const G={};for(const t in O)G[t]={buffer:this.l.buffer({dimension:O[t].length/T,data:O[t]}),divisor:1};const H=this.t.options.services[s.k].shader||"phong";let X=0,Y=!0;const Z=[];return k(u,((t,i,o,a)=>{let{geometry:l,material:f}=this.ut(t,i,o,a,s,!0,H);f&&!f.isReady()&&(Y=!1,X++);const u=new r.InstancedMesh(G,T,l,f);u.properties.magic="i3dm",u.properties.id=e,u.properties.count=E,u.properties.batchTable=_,u.properties.batchTableBin=d;const h=this.ht(t,l,f,s.k,a),m=n.identity([]);if(t.matrices&&t.matrices.length)for(let e=0;e<t.matrices.length;e++)n.multiply(m,m,t.matrices[e]);n.multiply(m,c,m),u.setPositionMatrix(m),u.setLocalTransform(n.copy([],p)),u.setDefines(h),u.properties.polygonOffset={offset:0,factor:0},Z.push(u)})),Y?(this.A[e]=Z,o(null,{id:e,mesh:Z})):(this.h[e]={meshes:Z,count:X},Z._t=o),Z}createB3DMMesh(e,i,s,o){if(this.T[i]||this.h[i]){const t=this.T[i];return console.warn(`mesh with id(${i}) was already created.`),this.h[i]||o(null,{id:i,mesh:t}),t}let a;if(s.maxExtent){const e=new t.Extent(s.maxExtent).convertTo((t=>this._pointToPrj(t)));a=[e.xmin,e.ymin,e.xmax,e.ymax]}const c=e.gltf,{projCenter:l}=c.extensions.MAPTALKS_RTC,{rtcCoord:f,center:u}=c.extensions.CESIUM_RTC,h=this.lt(s.ft);let _;_=c.asset&&c.asset.sharePosition?this.ot(pe,f):this.dt(pe,f,l,s.k);const d=this.t.options.services[s.k].shader||"phong",E=[];let T=0,m=!0;return k(c,((t,o,c,l)=>{let{geometry:A,material:p}=this.ut(t,o,c,l,s,!1,d);p&&!p.isReady()&&(m=!1,T++);const y=new r.Mesh(A,p);y.properties.magic="b3dm",y.properties.id=i,y.properties.batchTable=e.batchTable,y.properties.batchTableBin=e.batchTableBin,y.properties.count=e.featureTable.BATCH_LENGTH;const R=this.ht(t,A,p,s.k,l);y.setDefines(R),a&&(R.USE_MAX_EXTENT=1,y.setUniform("maxPrjExtent",a));let g=n.identity([]);if(l.asset.sharePosition&&t.matrices&&t.matrices.length)for(let e=0;e<t.matrices.length;e++)n.multiply(g,g,t.matrices[e]);if(l.asset.sharePosition){const t=this.ct(ye,s,u,f);n.multiply(g,h,g),n.multiply(g,_,g),n.multiply(g,t,g)}else n.multiply(g,_,g);y.setLocalTransform(g),E.push(y)})),m?(this.T[i]=E,o(null,{id:i,mesh:E})):(this.h[i]={meshes:E,count:T},E._t=o),E}ct(e,r,s,o){const a=this.getMap(),c=this.t.options.services[r.k].heightOffset||0,l=new t.Coordinate(o);let f;f=a.altitudeToPoint?this.P:a.distanceToPointAtRes(100,100,a.getGLRes(),l).y/100;let u=r.matrix?n.copy(e,r.matrix):n.identity(e);if(s){Mt(u,i.transformMat4(de,s,u),u)}const h=function(t,e,r,n,i,s,o){e=d.copy(Dt,e);const a=K(Dt,e[0]*Zt,e[1]*Zt,e[2]),c=E.getTranslation(Ft,r),l=n.ellipsoid;var f;f=0===d.len(c)?d.set(Gt,0,0,-6378137):Q(Gt,c),Xt.x=f[0],Xt.y=f[1];const u=n.project(Xt,Yt);kt[0]=u.x/i,kt[1]=u.y/i,kt[2]=(f[2]+o)*s;const h=Ct(a,l,Ht),_=function(t,e,r){var n=t[0],i=t[1],s=t[2],o=t[4],a=t[5],c=t[6],l=t[8],f=t[9],u=t[10],h=e[0],_=e[1],d=e[2],E=e[3],T=e[4],m=e[5],A=e[6],p=e[7],y=e[8],R=n*h+o*_+l*d,g=i*h+a*_+f*d,b=s*h+c*_+u*d,I=n*E+o*T+l*m,N=i*E+a*T+f*m,S=s*E+c*T+u*m,O=n*A+o*p+l*y,x=i*A+a*p+f*y,w=s*A+c*p+u*y;return r[0]=R,r[1]=g,r[2]=b,r[3]=0,r[4]=I,r[5]=N,r[6]=S,r[7]=0,r[8]=O,r[9]=x,r[10]=w,r[11]=0,r[12]=t[12],r[13]=t[13],r[14]=t[14],r[15]=t[15],r}(E.invert(zt,h),T.fromMat4(Vt,r),t);return Mt(t,kt,_),t}(u,o,u,a.getProjection(),a.getGLRes(),f,c),_=function(t,e){return d.set(t,e[12],e[13],e[14]),t}(Ae,h);let m=this.t.options.offset;if(y(m)){m=m(this.t.Et(r.id).center)}return i.set(me,m[0],m[1],0),i.sub(_,_,me),Mt(h,_,h),h}createCMPTMesh(t,e,r,n){if(this.p[e]){const t=this.p[e];return console.warn(`mesh with id(${e}) was already created.`),n(null,{id:e,mesh:t}),t}const{content:i}=t,s=[];for(let t=0;t<i.length;t++){const{magic:n}=i[t],o=e+"."+t;"b3dm"===n?this.createB3DMMesh(i[t],o,r,((t,{mesh:e})=>{s.push(e)})):"i3dm"===n?this.createI3DMMesh(i[t],o,r,((t,{mesh:e})=>{s.push(e)})):"pnts"===n?this.createPntsMesh(i[t],o,r,((t,{mesh:e})=>{s.push(e)})):"cmpt"===n&&this.createCMPTMesh(i[t],o,r,((t,{mesh:e})=>{s.push(e)}))}return this.p[e]=s,n(null,{id:e,mesh:s}),s}ht(t,e,r,n,i){const s=("phong"===(this.t.options.services[n].shader||"phong")?this.X:this.Y).getGeometryDefines(e);return i.asset&&"S3M"===i.asset.generator&&this.Tt(s,e,i),e.data.uvRegion&&(s.HAS_I3S_UVREGION=1),s}Tt(t,e,r){e.data.aNormal&&(t.VertexNormal=1),e.data.instanceId&&(t.Instance=1),e.data.aTexCoord0&&(t.TexCoord=1),e.data.aColor&&(t.VertexColor=1),e.data.aTexCoord1&&(t.TexCoord2=1),e.data.uv2&&(t.InstanceBim=1),e.data.aTexCoord0&&r.textures.length&&(t.COMPUTE_TEXCOORD=1)}ut(t,e,r,n,i,s,o){let a=!1;n.asset&&"S3M"===n.asset.generator&&(a=!0,n.extensions=n.extensions||{},n.extensions.KHR_techniques_webgl=Kt);const c=n.url+"-"+e+"-"+r;if(this.R[c])return this.R[c].refCount++,this.R[c];let l,f;const u=n.materials[t.material];if(n.extensions&&n.extensions.KHR_techniques_webgl&&u.extensions&&u.extensions.KHR_techniques_webgl){const e=this.At(t,n,s,a);l=e.material,f=e.geometry;this.t.options.services[i.k].fillEmptyDataInMissingAttribute&&(f.desc.fillEmptyDataInMissingAttribute=!0)}else{f=this.yt(t,s,Re);const e=this.t.options.services[i.k].material;l=this.Rt(t.material,n,o,e||ce)}l&&!l.isReady()?l.gt=i.id:l||(l=this.v);const h={refCount:1,geometry:f,material:l};return f.properties.url=c,this.R[c]=h,h}At(t,e,r,n){const{geometry:i,material:s}=this.B.createMesh(t,e,r,n);return{geometry:i,material:s}}yt(t,e,n){const i=t.attributes;if(i.COLOR_0){const t=i.COLOR_0.array||i.COLOR_0;if(t instanceof Float32Array){const e=new Uint8Array(t.length);for(let r=0;r<e.length;r++)e[r]=Math.round(255*t[r]);i.COLOR_0.array?(i.COLOR_0.array=e,i.COLOR_0.componentType=5121):i.COLOR_0=e}}const s={};for(const t in i){const e=te(this.l,i[t],{dimension:i[t].itemSize}),r=n[t]||t;s[r]={buffer:e},i[t].quantization&&(s[r].quantization=i[t].quantization),r===n.POSITION&&(s[r].array=i[t].array,s[r].min=i[t].min,s[r].max=i[t].max)}delete t.attributes;const o=new r.Geometry(s,t.indices?t.indices.array?t.indices.array.slice():t.indices:null,0,{positionAttribute:n.POSITION,normalAttribute:n.NORMAL,uv0Attribute:n.TEXCOORD_0,uv1Attribute:n.TEXCOORD_1,color0Attribute:n.COLOR_0,tangentAttribute:n.TANGENT,pickingIdAttribute:n._BATCHID,primitive:void 0===t.mode?"triangles":Qt(t.mode)});return o.generateBuffers(this.l,{excludeElementsInVAO:e}),o}dt(t,e,r,s){const o=n.identity(t),a=this.getMap();Ee.x=r[0],Ee.y=r[1];const c=this._prjToPoint(Ee),l=this.bt(),f=1/(a.getGLZoom?a.getResolution(a.getGLZoom()):a.getGLRes());let u;Ee.x=e[0],Ee.y=e[1],u=a.altitudeToPoint?this.P:a.distanceToPointAtRes(100,100,a.getGLRes(),Ee).y/100;let h=this.t.options.offset;y(h)&&(h=h(Ee));const _=this.t.options.services[s].heightOffset||0;return i.set(Ae,c.x-h[0],c.y-h[1],u*r[2]+u*_),n.translate(o,o,Ae),i.set(l,f,f,u),n.scale(o,o,l),o}ot(t,e){const r=n.identity(t),s=this.getMap(),o=this.bt();Ee.x=e[0],Ee.y=e[1];const a=s.distanceToPointAtRes(100,100,s.getGLRes(),Ee);let c;return c=s.altitudeToPoint?this.P:a.y/100,i.set(o,a.x/100*1.01,a.y/100*1.01,c),n.scale(r,r,o),r}U(){const t={x:0,y:0,width:()=>this.i?this.i.width:1,height:()=>this.i?this.i.height:1};this.$=new r.MeshShader({vert:"attribute vec3 aPosition;\n\n\n\nuniform mat4 projViewModelMatrix;\n\n\n\nvoid main() {\n\n gl_Position = projViewModelMatrix * vec4(aPosition, 1.0);\n\n}\n\n",frag:"precision mediump float;\nuniform vec3 color;\nvoid main() {\n gl_FragColor = vec4(color, 1.0);\n}\n",uniforms:["color",{name:"projViewModelMatrix",type:"function",fn:(t,e)=>n.multiply([],e.projViewMatrix,e.modelMatrix)}],extraCommandProps:{viewport:t}});const e=[],i=[];this.K=new r.MeshShader({vert:"const float SHIFT_RIGHT_11 = 1.0 / 2048.0;\n\nconst float SHIFT_RIGHT_5 = 1.0 / 32.0;\n\nconst float SHIFT_LEFT_11 = 2048.0;\n\nconst float SHIFT_LEFT_5 = 32.0;\n\nconst float NORMALIZE_6 = 1.0 / 64.0;\n\nconst float NORMALIZE_5 = 1.0 / 32.0;\n\n\n\n#ifdef HAS_POSITION\n\n attribute vec3 POSITION;\n\n#endif\n\n\n\n#if defined(HAS_RGB)\n\n attribute vec3 RGB;\n\n#elif defined(HAS_RGBA)\n\n attribute vec4 RGBA;\n\n#elif defined(HAS_RGB565)\n\n attribute float RGB565;\n\n#endif\n\n\n\nuniform vec4 pointColor;\n\nuniform float pointSize;\n\n\n\nuniform mat4 projViewModelMatrix;\n\nuniform float pointOpacity;\n\n\n\nvarying vec4 vColor;\n\n\n\n#ifdef HAS_NORMAL\n\n #ifdef HAS_NORMAL_OCT16P\n\n attribute vec2 NORMAL_OCT16P;\n\n float signNotZero(float value) {\n\n return value >= 0.0 ? 1.0 : -1.0;\n\n }\n\n vec2 signNotZero(vec2 value) {\n\n return vec2(signNotZero(value.x), signNotZero(value.y));\n\n }\n\n vec3 octDecode(vec2 encoded, float range) {\n\n if (encoded.x == 0.0 && encoded.y == 0.0) {\n\n return vec3(0.0, 0.0, 0.0);\n\n }\n\n encoded = encoded / range * 2.0 - 1.0;\n\n vec3 v = vec3(encoded.x, encoded.y, 1.0 - abs(encoded.x) - abs(encoded.y));\n\n if (v.z < 0.0) {\n\n v.xy = (1.0 - abs(v.yx)) * signNotZero(v.xy);\n\n }\n\n return normalize(v);\n\n }\n\n vec3 octDecode(vec2 encoded) {\n\n return octDecode(encoded, 255.0);\n\n }\n\n #else\n\n attribute vec3 NORMAL;\n\n #endif\n\n uniform vec3 lightDir;\n\n uniform mat3 modelNormalMatrix;\n\n uniform mat4 positionMatrix;\n\n float getLambertDiffuse(vec3 lightDir, vec3 normal) {\n\n return max(dot(-lightDir, normal), 0.0);\n\n }\n\n#endif\n\n\n\nvoid main() {\n\n #if defined(HAS_RGB)\n\n vColor = vec4(RGB / 255.0, 1.0) * pointOpacity;\n\n #elif defined(HAS_RGBA)\n\n vColor = RGBA / 255.0 * pointOpacity;\n\n #elif defined(HAS_RGB565)\n\n float compressed = RGB565;\n\n float r = floor(compressed * SHIFT_RIGHT_11);\n\n compressed -= r * SHIFT_LEFT_11;\n\n float g = floor(compressed * SHIFT_RIGHT_5);\n\n compressed -= g * SHIFT_LEFT_5;\n\n float b = compressed;\n\n vec3 rgb = vec3(r * NORMALIZE_5, g * NORMALIZE_6, b * NORMALIZE_5);\n\n vColor = vec4(rgb, 1.0);\n\n #else\n\n vColor = pointColor;\n\n #endif\n\n\n\n #ifdef HAS_POSITION\n\n vec3 localPos = POSITION;\n\n #endif\n\n\n\n #ifdef HAS_NORMAL\n\n mat3 positionNormalMatrix = mat3(positionMatrix);\n\n mat3 normalMatrix = modelNormalMatrix * positionNormalMatrix;\n\n #ifdef HAS_NORMAL_OCT16P\n\n vec3 localNormal = octDecode(NORMAL_OCT16P);\n\n #else\n\n vec3 localNormal = NORMAL;\n\n #endif\n\n vec3 normal = normalize(normalMatrix * localNormal);\n\n float colorStrength = getLambertDiffuse(lightDir, normal);\n\n colorStrength = max(colorStrength, 0.5);\n\n vColor *= colorStrength;\n\n #endif\n\n\n\n gl_Position = projViewModelMatrix * vec4(localPos, 1.0);\n\n gl_PointSize = pointSize;\n\n}\n\n",frag:"#define SHADER_NAME PNTS\n\nprecision mediump float;\n\n\n\nvarying vec4 vColor;\n\n\n\nvoid main() {\n\n gl_FragColor = vColor;\n\n}\n\n",uniforms:[{name:"projViewModelMatrix",type:"function",fn:(t,e)=>n.multiply(i,e.projViewMatrix,e.modelMatrix)},{name:"modelNormalMatrix",type:"function",fn:(t,r)=>s.fromMat4(e,r.modelMatrix)}],extraCommandProps:{viewport:t,blend:{enable:!0,func:{src:"src alpha",dst:"one minus src alpha"},equation:"add"},depth:{enable:!0,range:[0,1],func:"<"}}});const o=this.L();this.X=new r.PhongShader({extraCommandProps:o}),this.Y=new r.pbr.StandardShader({extraCommandProps:o});const a=this.t;ne(a.getRenderer().canvas,this.l,a.getMap()),this.picking=new r.FBORayPicking(this.u,{vert:this.Y.vert,extraCommandProps:o,uniforms:this.Y.uniforms,defines:{"PICKING_MODE":1,"ENABLE_PICKING":1,"HAS_PICKING_ID":1}},this.pickingFBO)}L(){return{viewport:{x:0,y:0,width:()=>this.i?this.i.width:1,height:()=>this.i?this.i.height:1},colorMask:(t,e)=>e.colorMask||_e,cull:{enable:!0,face:(t,e)=>e.cullFace||"back"},stencil:{enable:(t,e)=>!0===e.stencilEnable,func:{cmp:">=",ref:(t,e)=>e.meshProperties.level},opFront:{fail:"keep",zfail:"keep",zpass:"replace"},opBack:{fail:"keep",zfail:"keep",zpass:"replace"}},blend:{enable:!0,func:{src:"src alpha",dst:"one minus src alpha"},equation:"add"},polygonOffset:{enable:!0,offset:(t,e)=>e.meshProperties.polygonOffset}}}J(t){return{projViewMatrix:this.getMap().projViewMatrix,color:t&&t.color||[0,1,0]}}Z(t){const e=this.getMap(),r=e.getLightManager(),n=(r&&r.getDirectionalLight()||{}).direction||[1,1,-1],s=t&&t.pointOpacity||1;return{projViewMatrix:e.projViewMatrix,pointOpacity:s,lightDir:i.normalize(n,n)}}F(){const t=this.getMap(),e=this.t.getRenderer().canvas,{iblTexes:r,dfgLUT:n}=se(e),i=oe(t,r,n);return p(i,{czm_lightDirectionEC:i.light0_viewDirection,lightSpecular:[1,1,1],viewMatrix:t.viewMatrix,projMatrix:t.projMatrix,projViewMatrix:t.projViewMatrix,outSize:[e.width,e.height],polygonFill:[1,1,1,1],polygonOpacity:1}),i}Rt(t,e,n,i){const s=e.materials[t];if(!s||!s.baseColorTexture&&!s.pbrMetallicRoughness)return null;const a=p({},i);if(s.baseColorTexture){const t=e.textures[s.baseColorTexture.index];let r;t&&!t.image.color&&(r=this.It(t)),a.baseColorFactor=t&&t.image.color||s.baseColorFactor||[1,1,1,1],r&&(a.baseColorTexture=r)}else{if(s.normalTexture){const t=this.It(e.textures[s.normalTexture.index]),r=s.normalTexture.scale||1;a.normalTexture=t,a.normalMapFactor=r}if(s.occlusionTexture){const t=this.It(e.textures[s.occlusionTexture.index]),r=s.occlusionTexture.strength||1;a.occlusionTexture=t,a.occlusionFactor=r}if(s.emissiveTexture){const t=this.It(e.textures[s.emissiveTexture.index]);a.emissiveTexture=t}s.emissiveFactor;const t=s.pbrMetallicRoughness;if(t){if(t.baseColorFactor&&(a.baseColorFactor=t.baseColorFactor),t.baseColorTexture&&void 0!==t.baseColorTexture.index){const r=e.textures[t.baseColorTexture.index];r.image&&r.image.color?a.baseColorFactor=a.baseColorFactor?o.multiply(a.baseColorFactor,a.baseColorFactor,r.image.color):r.image.color:(a.baseColorTexture=this.It(r),a.baseColorTexture.getREGLTexture(this.l))}if(A(t.metallicFactor)||(a.metallicFactor=t.metallicFactor),A(t.roughnessFactor)||(a.roughnessFactor=t.roughnessFactor),s.metallicRoughnessTexture){const t=this.It(e.textures[s.metallicRoughnessTexture.index]);a.metallicRoughnessTexture=t}}}if(s.s3mMaterial)return new r.Material(a);let c=new r.pbr.StandardMaterial(a);return"phong"===n&&(c=r.PhongMaterial.convertFrom(c)),c.once("complete",this.M),c}It(t){const e={type:t.type?$t(t.type):"uint8",format:t.format?Jt(t.format):"rgba",flipY:!!t.flipY},n=t.image;n.array?e.data=n.array:n.mipmap&&(e.mipmap=n.mipmap),e.width=n.width,e.height=n.height;const i=t.sampler||t.texture.sampler;return i&&(i.magFilter&&(e.mag=Wt(i.magFilter)),i.minFilter&&(e.min=jt(i.minFilter)),i.wrapS&&(e.wrapS=qt(i.wrapS)),i.wrapT&&(e.wrapT=qt(i.wrapT))),new r.Texture2D(e,this.O)}Nt(t){const e=t.image,r=window.URL||window.webkitURL,n=new Blob([e.array],{type:e.mimeType});return r.createObjectURL(n)}C({target:t}){const e=t.gt,r=this.h[e];if(r.count--,!r.count){const t=r.meshes;this.T[e]=t,delete this.h[e];const n=t._t;delete t._t,n(null,{mesh:r.meshes,id:e})}}bt(){return le}nt(t){return this.t.nt(t)}st(t,e){const r=this.getMap();return r.getGLZoom?r.distanceToPoint(t,e,r.getGLZoom()):r.distanceToPointAtRes(t,e,r.getGLRes())}_pointToPrj(t){const e=this.getMap();return e.getGLZoom?e._pointToPrj(t,e.getGLZoom()):e._pointToPrjAtRes(t,e.getGLRes())}_prjToPoint(t){const e=this.getMap();return e.getGLZoom?e._prjToPoint(t,e.getGLZoom()):e._prjToPointAtRes(t,e.getGLRes(),Te)}lt(t){return"Y"===t?ee:"X"===t?re:fe}pick(t,e,r=3){const n=this.t;if(!n||!n.options.picking)return[];if(!this.pickingFBO||!this.picking)return[];const i=this.getMap(),s=this.F(),o=this.picking;o.render(this.g.getMeshes(),s,!0);let a={};o.getRenderedMeshes().length&&(a=o.pick(t,e,r,s,{viewMatrix:i.viewMatrix,projMatrix:i.projMatrix,returnPoint:n.options.pickingPoint}));const{meshId:c,pickingId:l,point:f}=a,u=(0===c||c)&&o.getMeshAt(c);if(!u||!u.geometry)return[];const h=u.properties;f&&f.length&&(f[0]=Math.round(1e5*f[0])/1e5,f[1]=Math.round(1e5*f[1])/1e5,f[2]=Math.round(1e5*f[2])/1e5);const _={batchId:l};if(h&&h.batchTable){const{batchTable:t,batchTableBin:e,count:r}=h,n=l;for(const i in t)void 0!==t[i].byteOffset?_[i]=Et(t[i],e,r,n):_[i]=t[i][n]}return[{data:_,point:f}]}}
6
+ import*as t from"maptalks";import*as e from"@maptalks/gl";import{reshader as r,mat4 as n,vec3 as i,mat3 as s,vec4 as o,quat as a,createREGL as c}from"@maptalks/gl";import{intersectsBox as l,intersectsSphere as f,intersectsOrientedBox as h}from"frustum-intersects";import{GLTFLoader as u,Ajax as _}from"@maptalks/gltf-loader";import{vec3 as d,mat4 as E,mat3 as T}from"gl-matrix";const m='function(t){var e=1e-6,r="undefined"!=typeof Float32Array?Float32Array:Array;function n(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[4],t[4]=e[5],t[5]=e[6],t[6]=e[8],t[7]=e[9],t[8]=e[10],t}function i(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}function s(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function o(t,e,r){var n=e[0],i=e[1],s=e[2],o=e[3],a=e[4],c=e[5],f=e[6],u=e[7],l=e[8],E=e[9],_=e[10],A=e[11],h=e[12],T=e[13],R=e[14],y=e[15],I=r[0],N=r[1],U=r[2],d=r[3];return t[0]=I*n+N*a+U*l+d*h,t[1]=I*i+N*c+U*E+d*T,t[2]=I*s+N*f+U*_+d*R,t[3]=I*o+N*u+U*A+d*y,I=r[4],N=r[5],U=r[6],d=r[7],t[4]=I*n+N*a+U*l+d*h,t[5]=I*i+N*c+U*E+d*T,t[6]=I*s+N*f+U*_+d*R,t[7]=I*o+N*u+U*A+d*y,I=r[8],N=r[9],U=r[10],d=r[11],t[8]=I*n+N*a+U*l+d*h,t[9]=I*i+N*c+U*E+d*T,t[10]=I*s+N*f+U*_+d*R,t[11]=I*o+N*u+U*A+d*y,I=r[12],N=r[13],U=r[14],d=r[15],t[12]=I*n+N*a+U*l+d*h,t[13]=I*i+N*c+U*E+d*T,t[14]=I*s+N*f+U*_+d*R,t[15]=I*o+N*u+U*A+d*y,t}function a(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]&&t[4]===e[4]&&t[5]===e[5]&&t[6]===e[6]&&t[7]===e[7]&&t[8]===e[8]&&t[9]===e[9]&&t[10]===e[10]&&t[11]===e[11]&&t[12]===e[12]&&t[13]===e[13]&&t[14]===e[14]&&t[15]===e[15]}function c(){var t=new r(3);return r!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0),t}function f(t){var e=t[0],r=t[1],n=t[2];return Math.sqrt(e*e+r*r+n*n)}function u(t,e,n){var i=new r(3);return i[0]=t,i[1]=e,i[2]=n,i}function l(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function E(t,e,r,n){return t[0]=e,t[1]=r,t[2]=n,t}function _(t,e,r){return t[0]=e[0]+r[0],t[1]=e[1]+r[1],t[2]=e[2]+r[2],t}function A(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t}function h(t,e,r){return t[0]=e[0]*r[0],t[1]=e[1]*r[1],t[2]=e[2]*r[2],t}function T(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t}function R(t,e){var r=e[0]-t[0],n=e[1]-t[1],i=e[2]-t[2];return Math.sqrt(r*r+n*n+i*i)}function y(t,e){var r=e[0],n=e[1],i=e[2],s=r*r+n*n+i*i;return s>0&&(s=1/Math.sqrt(s),t[0]=e[0]*s,t[1]=e[1]*s,t[2]=e[2]*s),t}function I(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function N(t,e,r){var n=e[0],i=e[1],s=e[2],o=r[0],a=r[1],c=r[2];return t[0]=i*c-s*a,t[1]=s*o-n*c,t[2]=n*a-i*o,t}function U(t,e,r){var n=e[0],i=e[1],s=e[2],o=r[3]*n+r[7]*i+r[11]*s+r[15];return o=o||1,t[0]=(r[0]*n+r[4]*i+r[8]*s+r[12])/o,t[1]=(r[1]*n+r[5]*i+r[9]*s+r[13])/o,t[2]=(r[2]*n+r[6]*i+r[10]*s+r[14])/o,t}var d=A,S=h,m=f;function O(t,e,r,n,i){return t[0]=e,t[1]=r,t[2]=n,t[3]=i,t}function M(){var t=new r(4);return r!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0),t[3]=1,t}function F(t,r,n,i){var s=r[0],o=r[1],a=r[2],c=r[3],f=n[0],u=n[1],l=n[2],E=n[3],_=void 0,A=void 0,h=void 0,T=void 0,R=void 0;return(A=s*f+o*u+a*l+c*E)<0&&(A=-A,f=-f,u=-u,l=-l,E=-E),1-A>e?(_=Math.acos(A),h=Math.sin(_),T=Math.sin((1-i)*_)/h,R=Math.sin(i*_)/h):(T=1-i,R=i),t[0]=T*s+R*f,t[1]=T*o+R*u,t[2]=T*a+R*l,t[3]=T*c+R*E,t}c(),function(){var t,e=(t=new r(4),r!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0,t[3]=0),t)}();var C,b=function(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t};c(),u(1,0,0),u(0,1,0),M(),M(),C=new r(9),r!=Float32Array&&(C[1]=0,C[2]=0,C[3]=0,C[5]=0,C[6]=0,C[7]=0),C[0]=1,C[4]=1,C[8]=1;\n/*!\n * @maptalks/gltf-loader v0.27.1\n * LICENSE : UNLICENSED\n * (c) 2016-2022 maptalks.org\n */\nlet p=0;function w(t){return null==t}function D(t){return!w(t)}function B(t){for(let e=1;e<arguments.length;e++){const r=arguments[e];for(const e in r)t[e]=r[e]}return t}function L(t){switch(t){case 5120:return Int8Array;case 5121:return Uint8Array;case 5122:return Int16Array;case 5123:return Uint16Array;case 5124:return Int32Array;case 5125:return Uint32Array;case 5126:return Float32Array}throw new Error("unsupported bufferView\'s component type: "+t)}function P(t){return 0===t.indexOf("data:")&&t.indexOf("base64,")>0}function g(t){const e=function(t){return"undefined"!=typeof self?self.atob(t):window.atob(t)}(t.substring(t.indexOf(",")+1)),r=e.length,n=new Uint8Array(r);for(let t=0;t<r;t++)n[t]=e.charCodeAt(t);return n.buffer}const G=[],v=[],X=[],H=[0,0,0],x=function(t){return t[0]=0,t[1]=0,t[2]=0,t[3]=1,t}([]),V=[1,1,1];function k(t,e,r,n,i,s,o){const a=L(o);if((0===i||i===n*a.BYTES_PER_ELEMENT)&&s%a.BYTES_PER_ELEMENT==0){const i=new a(e,s,r*n);return t.set(i),t}0===i&&(i=n*a.BYTES_PER_ELEMENT);const c=new Uint8Array(n*a.BYTES_PER_ELEMENT);for(let o=0;o<r;o++){let r=null;const f=new Uint8Array(e,i*o+s,n*a.BYTES_PER_ELEMENT);c.set(f),r=new a(c.buffer,0,n);for(let e=0;e<n;e++)t[o*n+e]=r[e]}return t}const Z="undefined"!=typeof TextDecoder?new TextDecoder("utf-8"):null;function Y(t,e,r){const n=new Uint8Array(t,e,r);return Z.decode(n)}const K={get:function(t,e={}){e||(e={});const r=new AbortController,n=r.signal,i=B({},e);i.signal=n,i.method||(i.method="GET");const s=fetch(t,i).then((t=>{const r=this.t(t,e.responseType);return r.message?r:r.then((r=>"arraybuffer"===e.responseType?{data:r,cacheControl:t.headers.get("Cache-Control"),expires:t.headers.get("Expires"),contentType:t.headers.get("Content-Type")}:r)).catch((t=>{if(!t.code||t.code!==DOMException.ABORT_ERR)throw t}))})).catch((t=>{if(!t.code||t.code!==DOMException.ABORT_ERR)throw t}));return s.xhr=r,s},t:(t,e)=>200!==t.status?{status:t.status,statusText:t.statusText,message:`incorrect http request with status code(${t.status}): ${t.statusText}`}:"arraybuffer"===e?t.arrayBuffer():"json"===e?t.json():t.text(),getArrayBuffer:(t,e={})=>(e||(e={}),e.responseType="arraybuffer",K.get(t,e)),getJSON:function(t,e={}){return e&&e.jsonp?K.jsonp(t):((e=e||{}).responseType="json",K.get(t,e))}};K.jsonp=function(t){const e="_maptalks_jsonp_"+p++;t.match(/\\?/)?t+="&callback="+e:t+="?callback="+e;let r=document.createElement("script");return r.type="text/javascript",r.src=t,new Promise((t=>{window[e]=function(n){document.getElementsByTagName("head")[0].removeChild(r),r=null,delete window[e],t(n)},document.getElementsByTagName("head")[0].appendChild(r)}))};class z{constructor(t,e,r){this.i=t,this.decoders=e,this.o=r,this.images={},this.u={}}requestImageFromBufferURI(t,e,r){if(this.buffers[t.id]){const n=this.buffers[t.id],i=this.l(e,n);return this.getImageByBuffer(i,r)}if(this.u[t.id])return this.u[t.id].then((()=>{const n=this.buffers[t.id],i=this.l(e,n);return this.getImageByBuffer(i,r)}));if(P(t.uri)){const n=this.buffers[t.id]=g(t.uri),i=this.l(e,n);return this.getImageByBuffer(i,r)}return this.u[t.id]=K.getArrayBuffer(t.uri,null).then((n=>{const i=this.buffers[t.id]=n.data,s=this.l(e,i);return this.getImageByBuffer(s,r)}))}getImageByBuffer(t,e){if(this.images[e.id])return Promise.resolve(this.images[e.id]);const r=this.decoders;if(r[e.mimeType])return r[e.mimeType](t,{supportedFormats:this.o});if("image/crn"===e.mimeType||"image/ktx2"===e.mimeType||"image/cttf"===e.mimeType)return console.warn("missing transcoder for "+e.mimeType,", visit https://maptalks.com/docs/transcoders for details"),Promise.resolve(null);{const r=new Blob([t],{type:e.mimeType}),n=URL.createObjectURL(r);return this._(e.id,n)}}requestExternalImage(t){if(this.images[t.id])return Promise.resolve(this.images[t.id]);const e=0===t.uri.indexOf("data:image/")?t.uri:this.rootPath+"/"+t.uri;if(this.u[t.id])return this.u[t.id].then((()=>this.images[t.id]));return this.u[t.id]=this._(t.id,e)}_(t,e){return new Promise(((r,n)=>{this.i(e,((i,s)=>{i?n(i):(URL.revokeObjectURL(e),this.images[t]=s,r(this.images[t]))}))}))}}const W=["SCALAR",1,"VEC2",2,"VEC3",3,"VEC4",4,"MAT2",4,"MAT3",9,"MAT4",16];class j{constructor(t,e,r){this.rootPath=t,this.gltf=e,this.A=!1,this.glbBuffer=r,this.buffers={},this.requests={},this.accessors={},this.h()}T(t,e){const r=this.gltf,n=r.accessors[e];if(void 0===n.bufferView)return this.accessors[n.id]=this.I(t,e,null,0),Promise.resolve(this.accessors[n.id]);if(n&&this.accessors[n.id])return Promise.resolve(this.accessors[n.id]);const i=r.bufferViews[n.bufferView];return this.N(i).then((r=>{const{buffer:i,byteOffset:s}=r;return this.accessors[n.id]=this.I(t,e,i,s)}))}N(t){const e=this.gltf.buffers[t.buffer];if(this.buffers[e.id]){const t=this.buffers[e.id];return Promise.resolve({buffer:t,byteOffset:0})}if(this.requests[e.id])return this.requests[e.id].then((()=>{const t=this.buffers[e.id];return Promise.resolve({buffer:t,byteOffset:0})}));if("binary_glTF"!==t.buffer&&"KHR_binary_glTF"!==t.buffer&&e.uri){if(P(e.uri)){const t=this.buffers[e.id]=g(e.uri);return Promise.resolve({buffer:t,byteOffset:0})}let t;const r=e.uri.indexOf("blob:")>=0;t=e.uri.indexOf("://")>0||r?e.uri:this.rootPath+"/"+e.uri;return this.requests[e.id]=K.getArrayBuffer(t,null).then((n=>{r&&URL.revokeObjectURL(t);return{buffer:this.buffers[e.id]=n.data,byteOffset:0}}))}return Promise.resolve({buffer:this.glbBuffer.buffer,byteOffset:this.glbBuffer.byteOffset})}I(t,e,r,n=0){const i=this.gltf,s=i.accessors[e],o=void 0!==s.bufferView?i.bufferViews[s.bufferView]:{},a=(o.byteOffset||0)+n,c=this.U(s.type),f=L(s.componentType),u=o.byteStride||0;const l={array:undefined,name:t,accessorName:e,byteLength:s.count*c*f.BYTES_PER_ELEMENT,componentType:s.componentType,count:s.count,type:s.type,itemSize:c};if(s.min&&(l.min=s.min),s.max&&(l.max=s.max),r)if(this.A)l.byteStride=u,l.byteOffset=a+(s.byteOffset||0),!u||u===c*f.BYTES_PER_ELEMENT||"indices"===t||"input"===t||"output"===t||t.indexOf("morph")>=0?(l.array=this.S(r,s.count,c,a+(s.byteOffset||0),f),l.array.buffer.byteLength===l.byteLength&&(l.byteOffset=0)):l.array=new Uint8Array(r,a,o.byteLength);else if(s.interleaved){l.byteStride=0,l.byteOffset=0;const t=new f(s.count*c);l.array=k(t,r,s.count,c,u,a+(s.byteOffset||0),s.componentType)}else l.byteStride=0,l.array=this.S(r,s.count,c,a+(s.byteOffset||0),f),l.byteOffset=l.array.byteOffset;else{l.array=new f(s.count);const t=l.min||l.max;t&&(l.array[0]=t[0],l.array[1]=t[1],l.array[2]=t[2])}return l}h(){const t=this.gltf.accessors;if(Array.isArray(t))for(let e=0;e<t.length;e++)for(let r=0;r<t.length;r++)e!==r&&t[e].bufferView===t[r].bufferView&&(t[e].interleaved=t[r].interleaved=!0);else for(const e in t)for(const r in t)e!==r&&t[e].bufferView===t[r].bufferView&&(t[e].interleaved=t[r].interleaved=!0)}S(t,e,r,n,i){return n%i.BYTES_PER_ELEMENT!=0&&(t=t.slice(n,n+e*r*i.BYTES_PER_ELEMENT),n=0),new i(t,n,r*e)}U(t){const e=W.indexOf(t);return W[e+1]}requestKHRTechniquesWebgl(t){const{shaders:e}=t,r=e.map((t=>{if(void 0!==t.bufferView){const e=this.gltf.bufferViews[t.bufferView],{byteLength:r}=e;return this.N(e).then((n=>{const{buffer:i,byteOffset:s}=n,o=Y(i,s+(e.byteOffset||0),r);return t.content=o,t}))}if(t.uri){if(P(t.uri)){const e=g(t.uri),r=Y(e,0,e.byteLength);return t.content=r,Promise.resolve(t)}{const e=this.rootPath+"/"+t.uri;return K.get(e).then((e=>(t.content=e,t)))}}return Promise.resolve(t)}));return Promise.all(r).then((()=>t))}}class q extends z{constructor(t,e,r,n,i,s){super(n,i,s),this.rootPath=t,this.gltf=e,this.requests={},this.buffers={},this.glbBuffer=r,this.accessor=new j(t,e,r)}iterate(t,e){const r=this.gltf[e];if(!r)return;let n=0;for(const e in r)t(e,r[e],n++)}createNode(t){const e={};if(D(t.name)&&(e.name=t.name),D(t.children)&&(e.children=t.children),D(t.jointName)&&(e.jointName=t.jointName),D(t.matrix)&&(e.matrix=t.matrix),D(t.rotation)&&(e.rotation=t.rotation),D(t.scale)&&(e.scale=t.scale),D(t.translation)&&(e.translation=t.translation),D(t.extras)&&(e.extras=t.extras),D(t.meshes)&&(e.mesh=t.meshes[0]),e.translation||e.rotation||e.scale){const t=function(t,e){if(e.matrix)return e.matrix;if(e.translation||e.scale||e.rotation){const r=function(t,e){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=e[0],t[13]=e[1],t[14]=e[2],t[15]=1,t}(G,e.translation||H),n=function(t,e){var r=e[0],n=e[1],i=e[2],s=e[3],o=r+r,a=n+n,c=i+i,f=r*o,u=n*o,l=n*a,E=i*o,_=i*a,A=i*c,h=s*o,T=s*a,R=s*c;return t[0]=1-l-A,t[1]=u+R,t[2]=E-T,t[3]=0,t[4]=u-R,t[5]=1-f-A,t[6]=_+h,t[7]=0,t[8]=E+T,t[9]=_-h,t[10]=1-f-l,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}(v,e.rotation||x),i=function(t,e){return t[0]=e[0],t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e[1],t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e[2],t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}(X,e.scale||V);return o(i,n,i),o(t,r,i)}return s(t)}([],e);delete e.translation,delete e.rotation,delete e.scale,e.matrix=t}return e}m(t){const e={};for(const r in t){const n=t[r];let i,s;n.instanceTechnique&&n.instanceTechnique.values?(i=n.instanceTechnique,s=i.values.diffuse):(i=n,s=i.values.tex||i.values.diffuseTex||i.values.diffuse);const o={"baseColorTexture":{index:s}};n.name&&(o.name=n.name),n.extensions&&(o.extensions=n.extensions),n.extras&&(o.extras=n.extras),e[r]=o}return e}O(t){if(t.bufferView||t.extensions&&(t.extensions.KHR_binary_glTF||t.extensions.binary_glTF)){const e=t.bufferView?t:t.extensions.KHR_binary_glTF||t.extensions.binary_glTF;t.extensions&&(t.mimeType=e.mimeType,t.width=e.width,t.height=e.height);const r=this.gltf.bufferViews[e.bufferView],n=(r.byteOffset||0)+this.glbBuffer.byteOffset,i=r.byteLength,s=this.buffers[e.bufferView]=new Uint8Array(this.glbBuffer.buffer,n,i);return this.getImageByBuffer(s,t)}return this.requestExternalImage(t)}M(t){const e=this.gltf.textures[t];if(!e)return null;const r=this.gltf.images[e.source];return this.O(r).then((t=>{const n=this.gltf.samplers[e.sampler];return{image:{array:t.data,width:t.width,height:t.height,index:e.source,mimeType:r.mimeType,name:r.name,extras:r.extras},sampler:n}}))}getBaseColorTexture(t){const e=this.gltf.materials[t];let r,n;if(e.instanceTechnique&&e.instanceTechnique.values?(r=e.instanceTechnique,n=r.values.diffuse):(r=e,n=r.values.tex||r.values.diffuseTex||r.values.diffuse),void 0===n||void 0===this.gltf.textures)return null;const i=this.gltf.textures[n];if(!i)return null;const s=this.gltf.samplers[i.sampler];return{format:i.format||6408,internalFormat:i.internalFormat||6408,type:i.type||5121,sampler:s,source:this.gltf.images[i.source]}}getMaterial(){return null}getAnimations(){return null}}class $ extends z{constructor(t,e,r,n,i,s){super(n,i,s),this.rootPath=t,this.gltf=e,this.glbBuffer=r,this.buffers={},this.requests={},this.accessor=new j(t,e,r)}iterate(t,e){const r=this.gltf[e];if(r)for(let e=0;e<r.length;e++)t(e,r[e],e)}createNode(t){const e={};return B(e,t),!D(t.weights)&&this.gltf.meshes&&D(e.mesh)?e.weights=this.gltf.meshes[e.mesh].weights:t.weights&&(e.weights=t.weights),e}M(t){const e=this.gltf.textures[t];if(!e)return null;const r=this.gltf.images[e.source];return this.O(r).then((t=>{if(!t)return null;const n={image:{array:t.data,mipmap:t.mipmap,width:t.width,height:t.height,index:e.source,mimeType:r.mimeType,name:r.name,extensions:r.extensions,extras:r.extras}};B(n,e);const i=D(e.sampler)?this.gltf.samplers[e.sampler]:void 0;return i&&(n.sampler=i),t.format&&(n.format=t.format),n}))}O(t){if(!D(t.bufferView))return this.requestExternalImage(t);{const e=this.gltf.bufferViews[t.bufferView],r=this.gltf.buffers[e.buffer];if(r.uri)return this.requestImageFromBufferURI(r,e,t);if(this.glbBuffer)return this.F(e,t)}return null}F(t,e){const r=this.l(t,this.glbBuffer.buffer,this.glbBuffer.byteOffset);return this.getImageByBuffer(r,e)}l(t,e,r){r=r||0;const n=t.byteOffset+r,i=t.byteLength;return new Uint8Array(e,n,i)}C(t,e){const r=new Array(t.byteLength);for(let e=0;e<t.byteLength;e++)r[e]=String.fromCharCode(t[e]);r.join("");const n="data:"+(e=e||"image/png")+";base64,"+function(t){return"undefined"!=typeof self?self.btoa(t):window.btoa(t)}(unescape(encodeURIComponent(r)));return n}getAnimations(t){const e=[];return t.forEach((t=>{e.push(this.getSamplers(t.samplers))})),Promise.all(e).then((e=>{for(let r=0;r<e.length;r++)t[r].samplers=e[r];return t}))}getSamplers(t){const e=[];for(let r=0;r<t.length;r++)(D(t[r].input)||D(t[r].output))&&(e.push(this.accessor.T("input",t[r].input)),e.push(this.accessor.T("output",t[r].output)));return Promise.all(e).then((e=>{for(let r=0;r<e.length/2;r++)t[r].input=e[2*r],t[r].output=e[2*r+1],t[r].interpolation||(t[r].interpolation="LINEAR");return t}))}}const J="undefined"!=typeof TextDecoder?new TextDecoder("utf-8"):null,Q=1313821514,tt=5130562;class et{static read(t,e=0,r=0){r||(r=t.byteLength);const n=new DataView(t,e,r),i=n.getUint32(4,!0);if(1===i)return et.readV1(n,e);if(2===i)return et.readV2(t,e);throw new Error("Unsupported glb version : "+i)}static readV1(t,e){const r=t.getUint32(8,!0),n=t.getUint32(12,!0);if(r!==t.byteLength)throw new Error("Length in GLB header is inconsistent with glb\'s byte length.");const i=rt(t.buffer,20+e,n);return{json:JSON.parse(i),glbBuffer:{byteOffset:20+e+n,buffer:t.buffer,byteLength:r}}}static readV2(t,e){let r,n,i;const s=new DataView(t,e+12);let o=0;for(;o<s.byteLength;){const a=s.getUint32(o,!0);o+=4;const c=s.getUint32(o,!0);if(o+=4,c===Q)r=rt(t,e+12+o,a);else if(c===tt){i=e+12+o,n=a;break}o+=a}return{json:JSON.parse(r),glbBuffer:{byteOffset:i,buffer:t,byteLength:n}}}}function rt(t,e,r){if(J){const n=new Uint8Array(t,e,r);return J.decode(n)}return function(t){const e=t.length;let r="";for(let n=0;n<e;){let i=t[n++];if(128&i){let r=nt[i>>3&7];if(!(64&i)||!r||n+r>e)return null;for(i&=63>>r;r>0;r-=1){const e=t[n++];if(128!=(192&e))return null;i=i<<6|63&e}}r+=String.fromCharCode(i)}return r}(new Uint8Array(t,e,r))}const nt=[1,1,1,1,2,2,3,0];const it=[0,0,0],st=[0,0,0,1],ot=[1,1,1],at={TRANSLATION:[0,0,0],ROTATION:[0,0,0,1],SCALE:[1,1,1]},ct={PREVIOUS:null,NEXT:null,PREINDEX:null,NEXTINDEX:null,INTERPOLATION:null},ft={p(t,e,r,n,i,s,o,a){const c=D(t)?e.animations:[e.animations[0]],f={};for(let e=0;e<c.length;e++){const u=c[e],E=u.name||e;if(D(t)&&E!==t)continue;const _=u.channelsMap[r];if(_)for(let t=0;t<_.length;t++){const e=_[t];"translation"===e.target.path?(this.D(i,u.samplers[e.sampler],n,1),f.translation=l(it,i)):"rotation"===e.target.path?(this.B(s,u.samplers[e.sampler],n,1),f.rotation=b(st,s)):"scale"===e.target.path?(this.D(o,u.samplers[e.sampler],n,1),f.scale=l(ot,o)):"weights"===e.target.path&&a&&(this.D(a,u.samplers[e.sampler],n,a.length),f.weights=a)}}return f},D(t,e,r,n){switch(e.interpolation){case"LINEAR":{const i=this.L(ct,e,r,1*n);i&&(t=function(t,e,r,n){for(let i=0;i<t.length;i++)t[i]=e[i]+n*(r[i]-e[i]);return t}(t,i.PREVIOUS,i.NEXT,i.INTERPOLATION));break}case"STEP":{const i=this.L(ct,e,r,1*n);i&&(t=function(t,e){for(let r=0;r<t.length;r++)t[r]=e[r];return t}(t,...i.PREVIOUS));break}case"CUBICSPLINE":{const i=this.L(ct,e,r,3*n);i&&(t=this.P(t,i,e.input.array,3*n));break}}return t},B(t,e,r){switch(e.interpolation){case"LINEAR":{const n=this.L(ct,e,r,1);n&&F(t,n.PREVIOUS,n.NEXT,n.INTERPOLATION);break}case"STEP":{const n=this.L(ct,e,r,1);n&&(t=O(t,...n.PREVIOUS));break}case"CUBICSPLINE":{const n=this.L(ct,e,r,3);if(n){for(let t=0;t<n.PREVIOUS.length;t++)n.PREVIOUS[t]=Math.acos(n.PREVIOUS[t]),n.NEXT[t]=Math.acos(n.NEXT[t]);t=this.P(t,n,e.input.array,3);for(let e=0;e<t.length;e++)t[e]=Math.cos(t[e])}break}}return t},G(t,e){const r=t.length;let n,i,s,o=0,a=r-1,c=Math.floor((o+a)/2);for(;o<=r-1&&a>=0;){if(o===a)return null;if(t[c]<=e&&e<=t[c+1]){const r=t[c];return n=c,i=c+1,s=(e-r)/(t[c+1]-r),{preIndx:n,nextIndex:i,interpolation:s}}e<t[c]?(a=c,c=Math.floor((o+a)/2)):t[c+1]<e&&(o=c,c=Math.floor((o+a)/2))}return null},L(t,e,r,n){const i=e.input.array,s=e.output.array,o=e.output.itemSize;(r<i[0]||r>i[i.length-1])&&(r=Math.max(i[0],Math.min(i[i.length-1],r))),r===i[i.length-1]&&(r=i[0]);const a=this.G(i,r);if(!a||!a.nextIndex)return null;const{preIndx:c,nextIndex:f,interpolation:u}=a;t.PREINDEX=c,t.NEXTINDEX=f,t.INTERPOLATION=u;const l=o*n;return t.PREVIOUS=s.subarray(t.PREINDEX*l,(t.PREINDEX+1)*l),t.NEXT=s.subarray(t.NEXTINDEX*l,(t.NEXTINDEX+1)*l),t},P(t,e,r,n){const i=e.INTERPOLATION,s=r[e.PREINDEX],o=r[e.NEXTINDEX];for(let r=0;r<3;r++){const a=e.PREVIOUS[n+r],c=(o-s)*e.PREVIOUS[2*n+r],f=e.NEXT[3+r],u=(o-s)*e.NEXT[r],l=(2*Math.pow(i,3)-3*Math.pow(i,2)+1)*a+(Math.pow(i,3)-2*Math.pow(i,2)+i)*c+(2*-Math.pow(i,3)+3*Math.pow(i,2))*f+(Math.pow(i,3)-Math.pow(i,2))*u;t[r]=l}return t},getAnimationClip(t,e,r,n){const i=t.nodes[e]&&t.nodes[e].weights;E(it,...at.TRANSLATION),O(st,...at.ROTATION),E(ot,...at.SCALE);return this.p(n,t,e,r,it,st,ot,i)},getTimeSpan(t){if(!t.animations)return null;if(t.timeSpan)return t.timeSpan;const e=t.animations;return t.timeSpan={},e.forEach(((e,r)=>{let n=-1/0,i=1/0;const s=e.channels;for(let t=0;t<s.length;t++){const r=s[t],o=e.samplers[r.sampler].input.array;o[o.length-1]>n&&(n=o[o.length-1]),o[0]<i&&(i=o[0])}const o=e.name||r;t.timeSpan[o]={max:n,min:i}})),t.timeSpan},getTimeSpanByName(t,e){const r=this.getTimeSpan(t);return r?D(e)?r[e]:r[Object.keys(r)[0]]:null}};let ut=!1;if("undefined"!=typeof OffscreenCanvas){let t;try{t=new OffscreenCanvas(2,2).getContext("2d")}catch(_n){}t&&"undefined"!=typeof createImageBitmap&&(ut=!0)}const lt="undefined"==typeof document?null:document.createElement("canvas");class Et{constructor(t,e,r){if(this.options=r||{},this.options.decoders||(this.options.decoders={}),e.buffer instanceof ArrayBuffer){const{json:r,glbBuffer:n}=et.read(e.buffer,e.byteOffset,e.byteLength);this.v(t,r,n)}else this.v(t,e);this.X=new j(this.rootPath,this.gltf,this.glbBuffer),this.H()}H(){const t=this.gltf.extensionsRequired;if(t){if(t.indexOf("KHR_draco_mesh_compression")>=0&&!this.options.decoders.draco)throw new Error("KHR_draco_mesh_compression is required but @maptalks/transcoders.draco is not loaded");if(t.indexOf("KHR_texture_basisu")>=0&&!this.options.decoders.ktx2)throw new Error("KHR_texture_basisu is required but @maptalks/transcoders.ktx2 is not loaded")}}V(){const t=this.gltf.extensions;return t&&t.KHR_techniques_webgl?this.X.requestKHRTechniquesWebgl(t.KHR_techniques_webgl).then((e=>(t.KHR_techniques_webgl=e,t))):Promise.resolve(t)}load(t){t=t||{};const e=this.k(t),r=this.Z(),n=this.Y(),i=this.V();return Promise.all([e,r,n,i]).then((t=>(t[0].animations=t[1],t[0].textures=t[2],t[0].extensions=t[3],t[0].transferables=this.transferables||[],this.createChannelsMap(t[0]),t[0])))}createChannelsMap(t){const e=t.animations;if(e)for(let t=0;t<e.length;t++){const r=e[t];r.channelsMap={};for(let t=0;t<r.channels.length;t++){const e=r.channels[t];r.channelsMap[e.target.node]||(r.channelsMap[e.target.node]=[]),r.channelsMap[e.target.node].push(e)}}}getExternalResources(){const t=[];if(this.gltf){const{buffers:e,images:r}=this.gltf;for(let r=0;r<e.length;r++)e[r].uri&&e[r].uri.indexOf("data:application/octet-stream;base64")<0&&t.push({type:"buffer",uri:e[r].uri});for(let e=0;e<r.length;e++)r[e].uri&&r[e].uri.indexOf("data:image/")<0&&t.push({type:"image",uri:r[e].uri})}return t}static getAnimationClip(t,e,r,n){return ft.getAnimationClip(t,e,r,n)}static getAnimationTimeSpan(t,e){return ft.getTimeSpanByName(t,e)}static getTypedArrayCtor(t){return L(t)}static readInterleavedArray(t,e,r,n,i,s,o){return k(t,e,r,n,i,s,o)}v(t,e,r){this.gltf=e,this.glbBuffer=r,this.version=e.asset?+e.asset.version:1,this.rootPath=t,this.buffers={},this.requests={},this.options.requestImage=ut?Tt.bind(this):this.options.requestImage||_t,this.options.transferable&&(this.transferables=[]),2===this.version?(this.adapter=new $(t,e,r,this.options.requestImage,this.options.decoders||{},this.options.supportedFormats||{}),this.adapter.iterate(((t,e,r)=>{e.id="buffer_"+r}),"buffers"),this.adapter.iterate(((t,e,r)=>{e.id="image_"+r}),"images"),this.adapter.iterate(((t,e,r)=>{e.id="accessor_"+r}),"accessors")):(this.adapter=new q(t,e,r,this.options.requestImage,this.options.decoders||{},this.options.supportedFormats||{}),this.adapter.iterate(((t,e,r)=>{e.id="accessor_"+r}),"accessors"),this.adapter.iterate(((t,e,r)=>{e.id="image_"+r}),"images"))}K(t,e){if(t.children&&t.children.length>0){if(!(r=t.children[0],"number"==typeof r&&isFinite(r)||function(t){return!w(t)&&("string"==typeof t||null!==t.constructor&&t.constructor===String)}(t.children[0])))return t;const n=t.children.map((t=>{const r=e[t];return r.nodeIndex=t,this.K(r,e)}));t.children=n}var r;return t}k(t){return this.W(t).then((t=>{const e=this.scenes=[];let r;for(const e in t)t[e]=this.K(t[e],t),t[e].nodeIndex=Number(e)?Number(e):e;this.adapter.iterate(((n,i,s)=>{const o={};i.name&&(o.name=i.name),i.nodes&&(o.nodes=i.nodes.map((e=>t[e]))),this.gltf.scene===n&&(r=s),e.push(o)}),"scenes");const n={asset:this.gltf.asset,scene:r,scenes:e,nodes:t,meshes:this.meshes,materials:this.gltf.materials,skins:this.skins};if(this.gltf.extensions&&(n.extensions=this.gltf.extensions),1===this.version){const t=this.adapter.m(this.gltf.materials);n.materials=t}return n}))}W(t){return this.j(t).then((()=>{const t=this.nodes={};return this.adapter.iterate(((e,r)=>{const n=this.adapter.createNode(r,this.meshes,this.skins);t[e]=n}),"nodes"),t}))}q(){this.skins=[];const t=[];return this.adapter.iterate(((e,r,n)=>{t.push(this.$(r).then((t=>{t.index=n,this.skins.push(t)})))}),"skins"),t}$(t){const e=t.inverseBindMatrices;return this.adapter.accessor.T("inverseBindMatrices",e).then((e=>(t.inverseBindMatrices=e,e&&e.buffer&&this.transferables&&this.transferables.indexOf(e.buffer)<0&&this.transferables.push(e.buffer),t)))}Z(){const t=this.gltf.animations;return D(t)?this.adapter.getAnimations(t):null}j(t){this.meshes={};let e=[];return this.adapter.iterate(((r,n,i)=>{e.push(this.J(n,t).then((t=>{t.index=i,this.meshes[r]=t})))}),"meshes"),e=e.concat(this.q()),Promise.all(e)}J(t,e){const r=t.primitives.map((t=>this.tt(t,e))).filter((t=>!!t));return Promise.all(r).then((e=>{const r={};return B(r,t),r.primitives=e,r}))}Y(){const t=this.gltf.textures;if(!t)return null;const e=[];for(const r in t)e.push(this.adapter.M(r));return Promise.all(e).then((e=>{if(this.transferables)for(let t=0;t<e.length;t++){const r=e[t].image.array;if(e[t]&&r){let t;t=r instanceof ImageBitmap?r:r.buffer,t&&this.transferables.indexOf(t)<0&&this.transferables.push(t)}}if(!Array.isArray(t)){const r={},n=Object.keys(t);for(let t=0;t<e.length;t++)e[t]&&(r[n[t]]=e[t]);return r}return e}))}tt(t,e){let r;const n=[],i=t.extensions;if(D(t.targets))for(let e=0;e<t.targets.length;e++){const r=t.targets[e];for(const t in r){const i=this.adapter.accessor.T(`morphTargets_${t}_${e}`,r[t]);i&&n.push(i)}}if(i&&i.KHR_draco_mesh_compression){if(!this.options.decoders.draco&&(!this.gltf.extensionsRequired||!this.gltf.extensionsRequired.indexOf("KHR_draco_mesh_compression")<0))return null;const t=this.options.decoders.draco,{bufferView:s,attributes:o}=i.KHR_draco_mesh_compression,a=this.gltf.bufferViews[s],c=this.X.N(a).then((r=>{const{buffer:n,byteOffset:i}=r;let{byteOffset:s,byteLength:c}=a;s||(s=0);const f=new DataView(n,i+s,c),u={attributes:o,useUniqueIDs:!1,skipAttributeTransform:e.skipAttributeTransform};return t(f,u).then((t=>{const e=Object.values(t.attributes);return t.indices&&e.push(t.indices),e}))}));n.push(c),r=Promise.all(n)}else{const e=t.attributes;for(const t in e){const r=this.adapter.accessor.T(t,e[t]);r&&n.push(r)}if(D(t.indices)){const e=this.adapter.accessor.T("indices",t.indices);e&&n.push(e)}r=Promise.all(n)}return r.then((e=>{if(i&&i.KHR_draco_mesh_compression){const r=t.targets?t.targets.length:0;e[r]=e[r].concat(e.slice(0,r)),e=e[r]}let r,n;const s={attributes:e.reduce(((t,e)=>{if("indices"===e.name)r=e;else if(e.name.indexOf("morphTargets_")>-1)n=n||{},n[e.name.slice(13)]=e;else{if(!("POSITION"!==e.name||e.min&&e.max)){const t=[1/0,1/0,1/0],r=[-1/0,-1/0,-1/0],{itemSize:n,array:i}=e,s=i.length/n;for(let e=0;e<s;e++)for(let s=0;s<n;s++){const o=e*n+s;i[o]<t[s]&&(t[s]=i[o]),i[o]>r[s]&&(r[s]=i[o])}if(e.quantization){const n=e.quantization,i=n.range/(1<<n.quantizationBits),s=n.minValues;T(t,t,i),_(t,t,s),T(r,r,i),_(r,r,s)}e.min=t,e.max=r}t[e.name]=e}return this.transferables&&e.array.buffer&&this.transferables.indexOf(e.array.buffer)<0&&this.transferables.push(e.array.buffer),t}),{}),material:t.material};return r&&(s.indices=r),n&&(s.morphTargets=n),s.mode=D(t.mode)?t.mode:4,D(t.extras)&&(s.extras=t.extras),s}))}}function _t(t,e){const r=new Image;r.crossOrigin="",r.onload=()=>{if(!lt)return void e(new Error("There is no canvas to draw image!"));lt.width=r.width,lt.height=r.height;const t=lt.getContext("2d");t.drawImage(r,0,0,r.width,r.height);const n=t.getImageData(0,0,r.width,r.height),i={width:r.width,height:r.height,data:new Uint8Array(n.data)};e(null,i)},r.onerror=function(t){e(t)},r.src=t}let At,ht;function Tt(t,e){At||(At=new OffscreenCanvas(2,2),ht=At.getContext("2d")),fetch(t).then((t=>t.arrayBuffer())).then((t=>{const e=new Blob([new Uint8Array(t)]);return createImageBitmap(e)})).then((t=>{let{width:r,height:n}=t;Rt(r)||(r=yt(r)),Rt(n)||(n=yt(n));const i=this.options.maxTextureSize;i&&(r=Math.min(i,r),n=Math.min(i,n)),At.width=r,At.height=n,ht.drawImage(t,0,0,r,n),t.close();const s=ht.getImageData(0,0,r,n);e(null,{width:r,height:n,data:new Uint8Array(s.data)})})).catch((t=>{console.warn(t),e(t)}))}function Rt(t){return 0==(t&t-1)&&0!==t}function yt(t){return Math.pow(2,Math.floor(Math.log(t)/Math.LN2))}function It(t){return"object"==typeof t&&!!t}function Nt(t){return t*Math.PI/180}function Ut(t){return t/Math.PI*180}function dt(t){return Math.sign?Math.sign(t):0===(t=+t)||isNaN(t)?Number(t):t>0?1:-1}const St=[1,1,1,1,2,2,3,0];function mt(t){const e=t.length;let r="";for(let n=0;n<e;){let i=t[n++];if(128&i){let r=St[i>>3&7];if(!(64&i)||!r||n+r>e)return null;for(i&=63>>r;r>0;r-=1){const e=t[n++];if(128!=(192&e))return null;i=i<<6|63&e}}r+=String.fromCharCode(i)}return r}const Ot=new Array(3),Mt=new Array(3),Ft=[40680631590769,40680631590769,40408299984661.445];const Ct=[1/6378137,1/6378137,1/6356752.314245179],bt=[1/40680631590769,1/40680631590769,1/40408299984661.445],pt=new Array(3),wt=new Array(3),Dt=new Array(3);function Bt(t,e){const r=bt,n=function(t,e,r,n,i){const s=e[0],o=e[1],a=e[2],c=r[0],f=r[1],u=r[2],l=s*s*c*c,E=o*o*f*f,_=a*a*u*u,A=l+E+_,h=Math.sqrt(1/A),R=T(Lt,e,h);if(A<i)return isFinite(h)?R:void 0;const y=n[0],I=n[1],N=n[2],U=Pt;U[0]=R[0]*y*2,U[1]=R[1]*I*2,U[2]=R[2]*N*2;let d,S,m,O,M,F,C,b,p,w,D,B=(1-h)*gt(e)/(.5*gt(U)),L=0;do{B-=L,m=1/(1+B*y),O=1/(1+B*I),M=1/(1+B*N),F=m*m,C=O*O,b=M*M,p=F*m,w=C*O,D=b*M,d=l*F+E*C+_*b-1,S=l*p*y+E*w*I+_*D*N;L=d/(-2*S)}while(Math.abs(d)>1e-12);return t[0]=s*m,t[1]=o*O,t[2]=a*M,t}(pt,e,Ct,r,.1);let i=S(wt,n,r);i=Gt(i,i);const s=d(Dt,e,n),o=Math.atan2(i[1],i[0]),a=Math.asin(i[2]),c=dt(I(s,e))*gt(s);return t[0]=Ut(o),t[1]=Ut(a),t[2]=c,t}const Lt=new Array(3),Pt=new Array(3);function gt(t){return f(t)}function Gt(t,e){const r=e[0],n=e[1],i=e[2];let s=r*r+n*n+i*i;return s>0&&(s=Math.sqrt(s),t[0]=e[0]/s,t[1]=e[1]/s,t[2]=e[2]/s),t}function vt(t,e,r,n){r=r||0,n=n||r;var i=Math.abs(t-e);return i<=n||i<=r*Math.max(Math.abs(t),Math.abs(e))}function Xt(t,e){let r="";for(let n=0;n<4;n++){const i=t.getUint8(e+n);r+=String.fromCharCode(i)}return r}const Ht="undefined"!=typeof TextDecoder?new TextDecoder("utf-8"):null;function xt(t,e,r){const n=new Uint8Array(t,e,r);return Ht?JSON.parse(Ht.decode(n)):JSON.parse(mt(n))}function Vt(t,e,r){const n=new Uint8Array(t,e,r);return Ht?JSON.parse(Ht.decode(n)):JSON.parse(mt(n))}function kt(t,e,r){return{offset:e,byteLength:r}}function Zt(t,e,r,n){const{byteOffset:i,componentType:s,type:o}=t,{ctor:a,type:c}=function(t){return zt[t]}(s||"UNSIGNED_SHORT"),f=function(t){if(!t)return 1;return Kt[t]}(o);return{byteStride:0,byteOffset:i+r,itemSize:f,count:n*f,componentType:c,array:new a(e,r+i,n*f)}}function Yt(t,e,r,n){const i=Zt(t,e,r,n);return i.array.buffer.byteLength!==e.byteLength&&(i.array=i.array.slice()),i}const Kt={"SCALAR":1,"VEC2":2,"VEC3":3,"VEC4":4};const zt={"BYTE":{ctor:Int8Array,type:5120,name:"Int8Array"},"UNSIGNED_BYTE":{ctor:Uint8Array,type:5121,name:"Uint8Array"},"SHORT":{ctor:Int16Array,type:5122,name:"Int16Array"},"UNSIGNED_SHORT":{ctor:Uint16Array,type:5123,name:"Uint16Array"},"INT":{ctor:Int32Array,type:5124,name:"Int32Array"},"UNSIGNED_INT":{ctor:Uint32Array,type:5125,name:"Uint32Array"},"FLOAT":{ctor:Float32Array,type:5126,name:"Float32Array"},"DOUBLE":{ctor:Float64Array,type:5126,name:"Float64Array"}};function Wt(t){for(let e in zt)if(t===zt[e].ctor)return zt[e].type;throw new Error("unrecognized ctor:"+t)}function jt(t,e,r,n){const i=t,s=e.length/3;for(let t=0;t<s;t++)i[3*t]=e[3*t]/65535*n[0]+r[0],i[3*t+1]=e[3*t+1]/65535*n[1]+r[1],i[3*t+2]=e[3*t+2]/65535*n[2]+r[2];return i}function qt(t,e,r){let n=t.getUint32(12,!0),i=t.getUint32(16,!0),s=t.getUint32(20,!0),o=t.getUint32(24,!0);const a=t.buffer;let c,f,u={},l={};n>0&&(u=xt(a,e,n),e+=n),i>0&&(c=function(t,e,r){return{offset:e,byteLength:r}}(0,e,i),e+=i),s>0&&(l=Vt(a,e,s),e+=s);const E=kt(0,e,o);return f=a.slice(E.offset,E.offset+E.byteLength),r.push(f),{featureTable:u,featureTableBin:c,batchTable:l,batchTableBin:f}}var $t={north:[-1,0,0],east:[0,1,0],up:[0,0,1],south:[1,0,0],west:[0,-1,0],down:[0,0,-1]},Jt={},Qt={east:[],north:[],up:[],west:[],south:[],down:[]},te=[],ee=[],re=[];const ne=[0,0,0];const ie=(ce={up:{south:"east",north:"west",west:"south",east:"north"},down:{south:"west",north:"east",west:"north",east:"south"},south:{up:"west",down:"east",west:"down",east:"up"},north:{up:"east",down:"west",west:"up",east:"down"},west:{up:"north",down:"south",north:"down",south:"up"},east:{up:"south",down:"north",north:"up",south:"down"}}[se="east"][oe="north"],Jt[fe=se+oe]?ae=Jt[fe]:(ae=function(t,r,n){if(c=ne,f=(a=t)[0],u=a[1],E=a[2],_=c[0],A=c[1],R=c[2],Math.abs(f-_)<=e*Math.max(1,Math.abs(f),Math.abs(_))&&Math.abs(u-A)<=e*Math.max(1,Math.abs(u),Math.abs(A))&&Math.abs(E-R)<=e*Math.max(1,Math.abs(E),Math.abs(R)))l(te,$t[se]),l(ee,$t[oe]),l(re,$t[ce]);else if(vt(t[0],0,1e-14)&&vt(t[1],0,1e-14)){var i=dt(t[2]);l(te,$t[se]),"east"!==se&&"west"!==se&&T(te,te,i),l(ee,$t[oe]),"east"!==oe&&"west"!==oe&&T(ee,ee,i),l(re,$t[ce]),"east"!==ce&&"west"!==ce&&T(re,re,i)}else{!function(t,e){h(e,t,bt),y(e,e)}(t,Qt.up);var s=Qt.up,o=Qt.east;o[0]=-t[1],o[1]=t[0],o[2]=0,y(Qt.east,o),N(Qt.north,s,o),T(Qt.down,Qt.up,-1),T(Qt.west,Qt.east,-1),T(Qt.south,Qt.north,-1),te=Qt[se],ee=Qt[oe],re=Qt[ce]}var a,c,f,u,E,_,A,R;return n[0]=te[0],n[1]=te[1],n[2]=te[2],n[3]=0,n[4]=ee[0],n[5]=ee[1],n[6]=ee[2],n[7]=0,n[8]=re[0],n[9]=re[1],n[10]=re[2],n[11]=0,n[12]=t[0],n[13]=t[1],n[14]=t[2],n[15]=1,n},Jt[fe]=ae),ae);var se,oe,ae,ce,fe;const ue={5120:Int8Array,5122:Int16Array,5124:Int32Array,5121:Uint8Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array};function le(t){for(let e in ue)if(t===ue[e])return+e;throw new Error("unrecognized ctor:"+t)}function Ee(t){return 1===t?"FLOAT":"VEC"+t}\n/*!\n * @maptalks/gl v0.76.1\n * LICENSE : UNLICENSED\n * (c) 2016-2022 maptalks.com\n */const _e=function(){if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if("undefined"!=typeof undefined)return global;throw new Error("unable to locate global object")},Ae=_e(),he=Ae.gl_trans__coders=Ae.gl_trans__coders||{};he.inject=function(t){const e=t.toString(),r=e.indexOf("{")+1,n=e.substring(0,r),i=Ae.gl_trans__coders=Ae.gl_trans__coders||{};let s=`${n}\\n const _____getGlobal = ${_e.toString()};\\n const g___lobals = _____getGlobal()\\n const tran_____scoders = g___lobals[\'gl_trans__coders\'] = g___lobals[\'gl_trans__coders\'] || {};`;for(const t in i)"inject"!==t&&"getTranscoder"!==t&&"registerTranscoder"!==t&&(s+=\'tran_____scoders["\'+t+\'"] =\'+i[t].toString()+"\\n;");return s+="\\n"+e.substring(n.length),s},he.registerTranscoder=function(t,e){he[t]=e},he.getTranscoder=function(t){return he[t]};class Te{constructor(t,e,r){this.i=t,this.et=e||Et,this.o=r,this.rt={"image/crn":he.crn&&he.crn(),"image/ktx2":he.ktx2&&he.ktx2(),"image/cttf":he.ktx2&&he.ktx2(),"draco":he.draco&&he.draco()}}static createEmptyB3DM(){return{featureTable:null,batchTable:null,gltf:{}}}load(t,e,r=0,n=0,i){return e?(n||(n=e.byteLength),this.nt(t,e,r,n,i)):K.getArrayBuffer(t,{}).then((e=>{const i=e.data;return n||(n=i.byteLength),this.nt(t,i,r,n)}))}nt(t,e,r,n,i){const s=i&&i.maxTextureSize,o=this.it(e,r,n,t);if(o.error)return Promise.resolve(o);const a=t.substring(0,t.lastIndexOf("/")),c=new this.et(a,o.glb,{transferable:!0,requestImage:this.i,decoders:this.rt,supportedFormats:this.o,maxTextureSize:s});return c.load({skipAttributeTransform:!1}).then((e=>{e.url=`${t}-${r}-${n}`;const i=c.transferables;for(let t=0;t<o.transferables.length;t++)i.indexOf(o.transferables[t])<0&&i.push(o.transferables[t]);return{magic:"b3dm",count:o.count,transferables:i,featureTable:o.featureTable,batchTable:o.batchTable,batchTableBin:o.batchTableBin,gltf:e}}))}it(t,e,r,n){const i=new DataView(t,e,r),s=i.getUint32(4,!0);if(1!==s){const t="Unsupported b3dm version: "+s+", url:"+n;return console.warn(t),{error:t}}if(i.getUint32(8,!0)!==i.byteLength){const t="Length in b3dm header is inconsistent with b3dm\'s byte length, url: "+n;return console.warn(t),{error:t}}let o,a=i.getUint32(12,!0),c=i.getUint32(16,!0),f=i.getUint32(20,!0),u=i.getUint32(24,!0),l=28+e;f>=570425344?(l-=8,o=a,f=c,u=0,a=0,c=0):u>=570425344&&(l-=4,o=f,f=a,u=c,a=0,c=0);const E=[t];let _,A,h;if(a>0?(_=xt(t,l,a),l+=a,o=_.BATCH_LENGTH):_={"BATCH_LENGTH":o},c>0&&(l+=c),f>0&&(A=Vt(t,l,f),l+=f,u>0)){const e=kt(0,l,u);h=t.slice(e.offset,e.offset+e.byteLength),l+=u,E.push(h)}const T=_.BATCH_LENGTH,R={};if(_&&_.BATCH_ID){R.BATCH_ID=Yt(_.BATCH_ID,t,undefined.offset,T);const e=R.BATCH_ID.array&&R.BATCH_ID.array.buffer;e&&E.indexOf(e)<0&&E.push(e)}return{count:o,transferables:E,featureTable:_,batchTable:A,batchTableBin:h,b3dm:R,glb:{buffer:t,byteOffset:l,byteLength:i.byteLength+i.byteOffset-l}}}st(){return null}}class Re{constructor(t,e,r,n){this.i=t,this.et=e||Et,this.o=r,this.rt={"image/crn":he.crn&&he.crn(),"image/ktx2":he.ktx2&&he.ktx2(),"image/cttf":he.ktx2&&he.ktx2(),"draco":he.draco&&he.draco()},this.ot=n}load(t,e,r=0,n=0,i){return e?(n||(n=e.byteLength),this.nt(t,e,r,n,i)):K.getArrayBuffer(t,{}).then((e=>{const i=e.data;return n||(n=i.byteLength),this.nt(t,i,r,n)}))}nt(t,e,r,n,i){return this.ct(t,e,r,n,i).then((({gltf:i,transferables:s})=>{const o=this.ft(e,r,n,t);if(o.error)return Promise.resolve(o);for(let t=0;t<s.length;t++)-1===o.transferables.indexOf(s[t])&&o.transferables.push(s[t]);return delete i.transferables,Promise.resolve({magic:"i3dm",count:o.count,transferables:o.transferables,featureTable:o.featureTable,batchTable:o.batchTable,batchTableBin:o.batchTableBin,i3dm:o.i3dm,gltf:i})}))}ct(t,e,r,n,i){const s=i&&i.maxTextureSize,o={transferable:!0,requestImage:this.i,decoders:this.rt,supportedFormats:this.o,maxTextureSize:s},a=new DataView(e,r,n),c=32+a.getUint32(12,!0)+a.getUint32(16,!0)+a.getUint32(20,!0)+a.getUint32(24,!0);if(0===a.getUint32(28,!0)){let n=mt(new Uint8Array(e,c+r,a.byteLength-c));-1==n.indexOf("://")&&(n=t.substring(0,t.lastIndexOf("/"))+"/"+n);return n.indexOf(".glb")>0?K.getArrayBuffer(n,{}).then((t=>this.ut(n,{buffer:t.data,byteOffset:0},o))):K.getJSON(n,{}).then((t=>this.ut(n,t,o)))}{const n={buffer:e,byteOffset:c+r,byteLength:a.byteLength-c};return this.ut(t,n,o)}}ut(t,e,r){const n=t.substring(0,t.lastIndexOf("/")),i=new this.et(n,e,r);return i.load({skipAttributeTransform:!0}).then((r=>{let n=0,s=0;return e.buffer&&(n=e.byteOffset||0,s=e.byteLength||0),r.url=`${t}-${n}-${s}`,{transferables:i.transferables,gltf:r}}))}ft(t,e,r,n){const i=new DataView(t,e,r),s=i.getUint32(4,!0);if(1!==s){const t="Unsupported pnts version: "+s+", url:"+n;return console.warn(t),{error:t}}if(i.getUint32(8,!0)!==i.byteLength){const t="Length in pnts header is inconsistent with pnts\'s byte length, url: "+n;return console.warn(t),{error:t}}const o=[t],{featureTable:a,featureTableBin:c,batchTable:f,batchTableBin:u}=qt(i,32+e,o),l={},E=a.INSTANCES_LENGTH;if(a.POSITION){const{byteOffset:e}=a.POSITION;l.POSITION={byteStride:0,byteOffset:0,itemSize:3,count:E,componentType:5126,array:new Float32Array(t,e+c.offset,3*E).slice()},o.push(l.POSITION.array.buffer)}else if(a.POSITION_QUANTIZED){const e=a.QUANTIZED_VOLUME_OFFSET,r=a.QUANTIZED_VOLUME_SCALE,{byteOffset:n}=a.POSITION_QUANTIZED;l.POSITION={byteStride:12,byteOffset:0,itemSize:3,count:E,componentType:5126,array:this.lt(new Uint16Array(t,n+c.offset,3*E),e,r)},o.push(l.POSITION.array.buffer)}if(a.BATCH_ID){l.BATCH_ID=Yt(a.BATCH_ID,t,c.offset,E);const e=l.BATCH_ID.array&&l.BATCH_ID.array.buffer;e&&o.indexOf(e)<0&&o.push(e)}if(a.NORMAL_UP){let{byteOffset:e}=a.NORMAL_UP;l.NORMAL_UP={byteStride:0,byteOffset:0,itemSize:3,count:E,componentType:5126,array:new Float32Array(t,e+c.offset,3*E).slice()},o.push(l.NORMAL_UP.array.buffer),e=a.NORMAL_RIGHT.byteOffset,l.NORMAL_RIGHT={byteStride:0,byteOffset:0,itemSize:3,count:E,componentType:5126,array:new Float32Array(t,e+c.offset,3*E).slice()},o.push(l.NORMAL_RIGHT.array.buffer)}else if(a.NORMAL_UP_OCT32P){let{byteOffset:e}=a.NORMAL_UP_OCT32P;l.NORMAL_UP={byteStride:0,byteOffset:0,itemSize:3,count:E,componentType:5126,array:this.Et(new Uint16Array(t,e+c.offset,2*E))},o.push(l.NORMAL_UP.array.buffer),e=a.NORMAL_RIGHT_OCT32P.byteOffset,l.NORMAL_RIGHT={byteStride:0,byteOffset:0,itemSize:3,count:E,componentType:5126,array:this.Et(new Uint16Array(t,e+c.offset,2*E))},o.push(l.NORMAL_RIGHT.array.buffer)}if(a.SCALE){const{byteOffset:e}=a.SCALE;l.SCALE={byteStride:0,byteOffset:0,itemSize:1,count:E,componentType:5126,array:new Float32Array(t,e+c.offset,E).slice()},o.push(l.SCALE.array.buffer)}else if(a.SCALE_NON_UNIFORM){const{byteOffset:e}=a.SCALE_NON_UNIFORM;l.SCALE_NON_UNIFORM={byteStride:0,byteOffset:0,itemSize:3,count:E,componentType:5126,array:new Float32Array(t,e+c.offset,3*E).slice()},o.push(l.SCALE_NON_UNIFORM.array.buffer)}return{count:E,batchTable:f,batchTableBin:u,featureTable:a,i3dm:l,transferables:o}}Et(t){const e=t.length/2,r=new Float32Array(3*e),n=[];for(let i=0;i<e;i++)ye(n,t[2*i],t[2*i+1],65535),r[3*i]=n[0],r[3*i+1]=n[1],r[3*i+2]=n[2];return r}lt(t,e,r){return jt(new Float32Array(t.length),t,e,r)}st(){return null}}function ye(t,e,r,n){if(t[0]=Ie(e,n),t[1]=Ie(r,n),t[2]=1-(Math.abs(t[0])+Math.abs(t[1])),t[2]<0){const e=t[0];t[0]=(1-Math.abs(t[1]))*Ne(e),t[1]=(1-Math.abs(e))*Ne(t[1])}return y(t,t)}function Ie(t,e){return function(t,e,r){return t<e?e:t>r?r:t}(t,0,e=function(t,e){if(null!=t)return t;return e}(e,255))/e*2-1}function Ne(t){return t<0?-1:1}class Ue{constructor(){}load(t,e,r=0,n=0){return e?(n||(n=e.byteLength),this.nt(t,e,r,n)):K.getArrayBuffer(t,{}).then((e=>{const i=e.data;return n||(n=i.byteLength),this.nt(t,i,r,n)}))}nt(t,e,r,n){return this._t(e,r,n,t).then((t=>t.error?t:{magic:"pnts",count:t.count,transferables:t.transferables,featureTable:t.featureTable,batchTable:t.batchTable,batchTableBin:t.batchTableBin,pnts:t.pnts}))}_t(t,e,r,n){const i=new DataView(t,e,r),s=i.getUint32(4,!0);if(1!==s){const t="Unsupported pnts version: "+s+", url:"+n;return console.warn(t),{error:t}}if(i.getUint32(8,!0)!==i.byteLength){const t="Length in pnts header is inconsistent with pnts\'s byte length, url: "+n;return console.warn(t),{error:t}}const o=[t],{featureTable:a,featureTableBin:c,batchTable:f,batchTableBin:u}=qt(i,e+28,o),l=a.QUANTIZED_VOLUME_OFFSET,E=a.QUANTIZED_VOLUME_SCALE,_=a.POINTS_LENGTH;let A,h={};if(a.extensions&&a.extensions["3DTILES_draco_point_compression"]){h=a.extensions["3DTILES_draco_point_compression"],A=new DataView(t,h.byteOffset+c.offset,h.byteLength);const e={attributes:h.properties,useUniqueIDs:!1};return this.At||(this.At=he.draco()),this.At(A,e).then((e=>{const r=e.attributes;!a.POSITION&&!a.POSITION_QUANTIZED||r.POSITION||r.POSITION_QUANTIZED||(r.POSITION=a.POSITION,r.POSITION_QUANTIZED=a.POSITION_QUANTIZED),!(a.RGB||a.RGBA||a.RGB565)||r.RGB||r.RGBA||r.RGB565||(r.RGB=a.RGB,r.RGBA=a.RGBA,r.RGB565=a.RGB565),!a.NORMAL&&!a.NORMAL_OCT16P||r.NORMAL||r.NORMAL_OCT16P||(r.NORMAL=a.NORMAL,r.NORMAL_OCT16P=a.NORMAL_OCT16P);const n=this.ht(t,e.attributes,c.offset,_,o,l,E);if(e.attributes.BATCH_ID){const t=e.attributes.BATCH_ID.array;n.BATCH_ID={byteStride:0,byteOffset:0,itemSize:1,count:t.length,componentType:Wt(t.constructor),array:t},o.push(t.buffer)}else if(a.BATCH_ID||Object.keys(f).length){a.BATCH_ID?n.BATCH_ID=Yt(a.BATCH_ID,t,c.offset,_):n.BATCH_ID=de(_);const e=n.BATCH_ID.array&&n.BATCH_ID.array.buffer;e&&o.indexOf(e)<0&&o.push(e)}return{count:_,batchTable:f,batchTableBin:u,featureTable:a,pnts:n,transferables:o}}))}const T=this.ht(t,a,c.offset,_,o,l,E);if(a.BATCH_ID||Object.keys(f).length){a.BATCH_ID?T.BATCH_ID=Yt(a.BATCH_ID,t,c.offset,_):T.BATCH_ID=de(_);const e=T.BATCH_ID.array&&T.BATCH_ID.array.buffer;e&&o.indexOf(e)<0&&o.push(e)}return Promise.resolve({count:_,batchTable:f,batchTableBin:u,featureTable:a,pnts:T,transferables:o})}ht(t,e,r,n,i,s,o){const a={};if(e.POSITION){let{byteOffset:s,array:o}=e.POSITION;s=s||0;const c=o?0:r;if(!o){const e=t.slice(s+c,s+c+3*n*4);o=new Float32Array(e)}a.POSITION={byteStride:0,byteOffset:0,itemSize:3,count:n,componentType:5126,array:o},i.push(o.buffer)}else if(e.POSITION_QUANTIZED){let{byteOffset:c,array:f}=e.POSITION_QUANTIZED;c=c||0;const u=f?0:r;a.POSITION={byteStride:0,byteOffset:0,itemSize:3,count:n,componentType:5126,array:this.lt(f||new Uint16Array(t,c+u,3*n),s,o)},i.push(a.POSITION.array.buffer)}if(e.RGBA){let{byteOffset:s,array:o}=e.RGBA;s=s||0;const c=o?0:r;if(!o){const e=t.slice(s+c,s+c+4*n);o=new Uint8Array(e)}a.RGBA={byteStride:0,byteOffset:0,itemSize:4,count:n,componentType:5121,array:o},i.push(o.buffer)}else if(e.RGB){let{byteOffset:s,array:o}=e.RGB;s=s||0;const c=o?0:r;if(!o){const e=t.slice(s+c,s+c+3*n);o=new Uint8Array(e)}a.RGB={byteStride:0,byteOffset:0,itemSize:3,count:n,componentType:5121,array:o},i.push(o.buffer)}else if(e.RGB565){let{byteOffset:s,array:o}=e.RGB565;s=s||0;const c=o?0:r;if(!o){const e=t.slice(s+c,s+c+2*n);o=new Uint16Array(e)}a.RGB565={byteStride:0,byteOffset:0,itemSize:1,count:n,componentType:5123,array:o},i.push(o.buffer)}if(e.NORMAL){let{byteOffset:s,array:o}=e.NORMAL;s=s||0;const c=o?0:r;if(!o){const e=t.slice(s+c,s+c+3*n*4);o=new Float32Array(e)}a.NORMAL={byteStride:0,byteOffset:0,itemSize:3,count:n,componentType:5126,array:o},i.push(o.buffer)}else if(e.NORMAL_OCT16P){let{byteOffset:s,array:o}=e.NORMAL_OCT16P;s=s||0;const c=o?0:r;if(!o){const e=t.slice(s+c,s+c+2*n);o=new Uint8Array(e)}a.NORMAL_OCT16P={byteStride:0,byteOffset:0,itemSize:2,count:n,componentType:5121,array:o},i.push(o.buffer)}return a}lt(t,e,r){return jt(new Float32Array(t.length),t,e,r)}st(){return null}}function de(t){const e=(r=t)<256?Uint8Array:r<65536?Uint16Array:Uint32Array;var r;const n=new e(t);for(let e=0;e<t;e++)n[e]=e;return{byteStride:0,byteOffset:0,itemSize:1,count:t,componentType:Wt(e),array:n}}class Se{constructor(t,e){this.i=t,this.et=e||Et}load(t,e,r=0,n=0,i){return e?this.nt(t,e,r,n,i):K.getArrayBuffer(t,{}).then((e=>{const i=e.data;return this.nt(t,i,r,n)}))}nt(t,e,r,n,i){n||(n=e.byteLength);const s=this.Tt(e,t,r,n),o=[];for(let r=0;r<s.length;r++){let n;if("b3dm"===s[r].magic)n=new Te(this.i,this.et);else if("i3dm"===s[r].magic)n=new Re(this.i,this.et);else if("pnts"===s[r].magic)n=new Ue;else{if("cmpt"!==s[r].magic){console.warn("Unsupported magic in CMPT tile:",s[r].magic);continue}n=new Se(this.i,this.et)}o.push(n.load(t,e,s[r].offset,s[r].byteLength,i).then((t=>t)))}return Promise.all(o).then((t=>({magic:"cmpt",tiles:t})))}Tt(t,e,r,n){const i=new DataView(t,r,n),s=i.getUint32(4,!0);if(1!==s){const t="Unsupported cmpt version: "+s+", url:"+e;return console.warn(t),{error:t}}if(16===i.byteLength)return[];const o=[],a=i.getUint32(12,!0);let c=16;for(let e=0;e<a;e++){const e=Xt(i,c),n=i.getUint32(c+8,!0);o.push({magic:e,buffer:t,offset:c+r,byteLength:n}),c+=n}return o}}function me(t,e){if(t.scenes&&t.scenes.length)for(let r=0,n=t.scenes.length;r<n;r++){const n=t.scenes[r].nodes;for(let r=0,i=n.length;r<i;r++){const i=[];Oe(n[r],i,t,e)}}}function Oe(t,e,r,n){if(t.matrix&&e.push(t.matrix),t.children&&t.children.length)for(let i=0,s=t.children.length;i<s;i++)Oe(t.children[i],e,r,n);if(void 0!==t.mesh){const i=t.mesh,s=r.meshes[i];if(s){const t=e.slice(0),o=s.primitives;for(let e=0,s=o.length;e<s;e++){const s=o[e];s&&(s.matrices=t,n(s,i,e,r))}}}}function Me(t,e){let{componentType:r,byteOffset:n,byteStride:i,count:s,itemSize:o}=t;const a=t.array.buffer,c=r?Et.getTypedArrayCtor(r):t.array.constructor;if(n=void 0===n?t.array.byteOffset:n,i=i||0,s=s||t.array.length/o,(!i||i===o*c.BYTES_PER_ELEMENT)&&n%c.BYTES_PER_ELEMENT==0){const t=new c(a,n,s*o);for(let r=0;r<s*o;r+=o){e(new c(t.buffer,n+r*c.BYTES_PER_ELEMENT,o),r/o)}return}const f=new Uint8Array(o*c.BYTES_PER_ELEMENT);i||(i=o*c.BYTES_PER_ELEMENT);for(let t=0;t<s;t++){const r=new Uint8Array(a,i*t+n,o*c.BYTES_PER_ELEMENT);f.set(r);e(new c(f.buffer),t),r.set(f)}}const Fe=[],Ce=[];function be(t){const e={asset:{version:"1.0",gltfUpAxis:"Z",s3mType:t.dataType},geometricError:0,root:{boundingVolume:{},content:{uri:""},transform:[],geometricError:0,refine:"REPLACE",children:[]}},r=t.position.x,n=t.position.y,s=t.position.z,o=function(t,e,r,n){const i=Ft,s=Math.cos(r);Ot[0]=s*Math.cos(e),Ot[1]=s*Math.sin(e),Ot[2]=Math.sin(r),Gt(Ot,Ot),h(Mt,i,Ot);const o=Math.sqrt(I(Ot,Mt));var a,c,f;return c=Mt,f=o,(a=Mt)[0]=c[0]/f,a[1]=c[1]/f,a[2]=c[2]/f,T(Ot,Ot,n),_(t,Mt,Ot)}([],Nt(r),Nt(n),s),a=ie(o,null,[]);e.root.transform=i([],a);const c=[];for(let r=0,n=t.tiles.length;r<n;r++)if(t.tiles[r].boundingbox){const n=t.tiles[r].boundingbox;E(Fe,n.min.x,n.min.y,n.min.z),E(Ce,n.max.x,n.max.y,n.max.z);const i={center:[0,0,0],radius:0};pe(Fe,Ce,i),e.root.children.push({boundingVolume:{sphere:[...i.center,i.radius]},content:{uri:t.tiles[r].url},geometricError:70,refine:"REPLACE"}),c.push(i)}else if(t.tiles[r].boundingsphere){const{boundingsphere:n}=t.tiles[r],i={center:[n.center.x,n.center.y,n.center.z],radius:n.radius};e.root.children.push({boundingVolume:{sphere:[...i.center,i.radius]},content:{uri:t.tiles[r].url},geometricError:70,refine:"REPLACE"}),c.push(i)}const f=function(t,e){if(0===t.length)return e;const r=t.length;if(1===r)return function(t,e){return l(e.center,t.center),e.radius=t.radius,e}(t[0],e);if(2===r)return function(t,e,r){const n=t.center,i=t.radius,s=e.center,o=e.radius,a=A(De,s,n),c=ze(a);if(i>=c+o)return t.clone(r),r;if(o>=c+i)return e.clone(r),r;const f=.5*(i+c+o),u=T(Be,a,(-i+f)/c);return _(u,u,n),l(r.center,u),r.radius=f,r}(t[0],t[1],e);const n=[];for(let e=0;e<r;e++)n.push(t[e].center);const i=(e=function(t,e){if(0===t.length)return e.center=E(e.center,0,0,0),e.radius=0,e;const r=l(He,t[0]),n=l(Le,r),i=l(Pe,r),s=l(ge,r),o=l(Ge,r),a=l(ve,r),c=l(Xe,r),f=t.length;for(let e=1;e<f;e++){l(r,t[e]);const f=r[0],u=r[1],E=r[2];f<n[0]&&l(n,r),f>o[0]&&l(o,r),u<i[1]&&l(i,r),u>a[1]&&l(a,r),E<s[2]&&l(s,r),E>c[2]&&l(c,r)}const u=Ke(A(xe,o,n)),_=Ke(A(xe,a,i)),h=Ke(A(xe,c,s));let T=n,R=o,y=u;_>y&&(y=_,T=i,R=a);h>y&&(y=h,T=s,R=c);const I=Ve;I[0]=.5*(T[0]+R[0]),I[1]=.5*(T[1]+R[1]),I[2]=.5*(T[2]+R[2]);let N=Ke(A(xe,R,I)),U=Math.sqrt(N);const d=ke;d[0]=n[0],d[1]=i[1],d[2]=s[2];const S=Ze;S[0]=o[0],S[1]=a[1],S[2]=c[2];const m=we(d,S,Ye);let O=0;for(let e=0;e<f;e++){l(r,t[e]);const n=ze(A(xe,r,m));n>O&&(O=n);const i=Ke(A(xe,r,I));if(i>N){const t=Math.sqrt(i);U=.5*(U+t),N=U*U;const e=t-U;I[0]=(U*I[0]+e*r[0])/t,I[1]=(U*I[1]+e*r[1])/t,I[2]=(U*I[2]+e*r[2])/t}}U<O?(l(e.center,I),e.radius=U):(l(e.center,m),e.radius=O);return e}(n,e)).center;let s=e.radius;for(let e=0;e<r;e++){const r=t[e];s=Math.max(s,R(i,r.center)+r.radius)}return e.radius=s,e}(c,{center:[0,0,0],radius:0});return e.root.boundingVolume.sphere=[...f.center,f.radius],e}function pe(t,e,r){var n=we(t,e,r.center);return r.radius=R(n,e),r}function we(t,e,r){return r[0]=.5*(t[0]+e[0]),r[1]=.5*(t[1]+e[1]),r[2]=.5*(t[2]+e[2]),r}const De=[],Be=[];const Le=[],Pe=[],ge=[],Ge=[],ve=[],Xe=[],He=[],xe=[],Ve=[],ke=[],Ze=[],Ye=[];function Ke(t){return t[0]*t[0]+t[1]*t[1]+t[2]*t[2]}function ze(t){return Math.hypot(t[0],t[1],t[2])}\n/*! pako 2.0.4 https://github.com/nodeca/pako @license (MIT AND Zlib) */function We(t){let e=t.length;for(;--e>=0;)t[e]=0}const je=256,qe=286,$e=30,Je=15,Qe=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),tr=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),er=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),rr=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),nr=new Array(576);We(nr);const ir=new Array(60);We(ir);const sr=new Array(512);We(sr);const or=new Array(256);We(or);const ar=new Array(29);We(ar);const cr=new Array($e);function fr(t,e,r,n,i){this.static_tree=t,this.extra_bits=e,this.extra_base=r,this.elems=n,this.max_length=i,this.has_stree=t&&t.length}let ur,lr,Er;function _r(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}We(cr);const Ar=t=>t<256?sr[t]:sr[256+(t>>>7)],hr=(t,e)=>{t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255},Tr=(t,e,r)=>{t.bi_valid>16-r?(t.bi_buf|=e<<t.bi_valid&65535,hr(t,t.bi_buf),t.bi_buf=e>>16-t.bi_valid,t.bi_valid+=r-16):(t.bi_buf|=e<<t.bi_valid&65535,t.bi_valid+=r)},Rr=(t,e,r)=>{Tr(t,r[2*e],r[2*e+1])},yr=(t,e)=>{let r=0;do{r|=1&t,t>>>=1,r<<=1}while(--e>0);return r>>>1},Ir=(t,e,r)=>{const n=new Array(16);let i,s,o=0;for(i=1;i<=Je;i++)n[i]=o=o+r[i-1]<<1;for(s=0;s<=e;s++){let e=t[2*s+1];0!==e&&(t[2*s]=yr(n[e]++,e))}},Nr=t=>{let e;for(e=0;e<qe;e++)t.dyn_ltree[2*e]=0;for(e=0;e<$e;e++)t.dyn_dtree[2*e]=0;for(e=0;e<19;e++)t.bl_tree[2*e]=0;t.dyn_ltree[512]=1,t.opt_len=t.static_len=0,t.last_lit=t.matches=0},Ur=t=>{t.bi_valid>8?hr(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0},dr=(t,e,r,n)=>{const i=2*e,s=2*r;return t[i]<t[s]||t[i]===t[s]&&n[e]<=n[r]},Sr=(t,e,r)=>{const n=t.heap[r];let i=r<<1;for(;i<=t.heap_len&&(i<t.heap_len&&dr(e,t.heap[i+1],t.heap[i],t.depth)&&i++,!dr(e,n,t.heap[i],t.depth));)t.heap[r]=t.heap[i],r=i,i<<=1;t.heap[r]=n},mr=(t,e,r)=>{let n,i,s,o,a=0;if(0!==t.last_lit)do{n=t.pending_buf[t.d_buf+2*a]<<8|t.pending_buf[t.d_buf+2*a+1],i=t.pending_buf[t.l_buf+a],a++,0===n?Rr(t,i,e):(s=or[i],Rr(t,s+je+1,e),o=Qe[s],0!==o&&(i-=ar[s],Tr(t,i,o)),n--,s=Ar(n),Rr(t,s,r),o=tr[s],0!==o&&(n-=cr[s],Tr(t,n,o)))}while(a<t.last_lit);Rr(t,256,e)},Or=(t,e)=>{const r=e.dyn_tree,n=e.stat_desc.static_tree,i=e.stat_desc.has_stree,s=e.stat_desc.elems;let o,a,c,f=-1;for(t.heap_len=0,t.heap_max=573,o=0;o<s;o++)0!==r[2*o]?(t.heap[++t.heap_len]=f=o,t.depth[o]=0):r[2*o+1]=0;for(;t.heap_len<2;)c=t.heap[++t.heap_len]=f<2?++f:0,r[2*c]=1,t.depth[c]=0,t.opt_len--,i&&(t.static_len-=n[2*c+1]);for(e.max_code=f,o=t.heap_len>>1;o>=1;o--)Sr(t,r,o);c=s;do{o=t.heap[1],t.heap[1]=t.heap[t.heap_len--],Sr(t,r,1),a=t.heap[1],t.heap[--t.heap_max]=o,t.heap[--t.heap_max]=a,r[2*c]=r[2*o]+r[2*a],t.depth[c]=(t.depth[o]>=t.depth[a]?t.depth[o]:t.depth[a])+1,r[2*o+1]=r[2*a+1]=c,t.heap[1]=c++,Sr(t,r,1)}while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],((t,e)=>{const r=e.dyn_tree,n=e.max_code,i=e.stat_desc.static_tree,s=e.stat_desc.has_stree,o=e.stat_desc.extra_bits,a=e.stat_desc.extra_base,c=e.stat_desc.max_length;let f,u,l,E,_,A,h=0;for(E=0;E<=Je;E++)t.bl_count[E]=0;for(r[2*t.heap[t.heap_max]+1]=0,f=t.heap_max+1;f<573;f++)u=t.heap[f],E=r[2*r[2*u+1]+1]+1,E>c&&(E=c,h++),r[2*u+1]=E,u>n||(t.bl_count[E]++,_=0,u>=a&&(_=o[u-a]),A=r[2*u],t.opt_len+=A*(E+_),s&&(t.static_len+=A*(i[2*u+1]+_)));if(0!==h){do{for(E=c-1;0===t.bl_count[E];)E--;t.bl_count[E]--,t.bl_count[E+1]+=2,t.bl_count[c]--,h-=2}while(h>0);for(E=c;0!==E;E--)for(u=t.bl_count[E];0!==u;)l=t.heap[--f],l>n||(r[2*l+1]!==E&&(t.opt_len+=(E-r[2*l+1])*r[2*l],r[2*l+1]=E),u--)}})(t,e),Ir(r,f,t.bl_count)},Mr=(t,e,r)=>{let n,i,s=-1,o=e[1],a=0,c=7,f=4;for(0===o&&(c=138,f=3),e[2*(r+1)+1]=65535,n=0;n<=r;n++)i=o,o=e[2*(n+1)+1],++a<c&&i===o||(a<f?t.bl_tree[2*i]+=a:0!==i?(i!==s&&t.bl_tree[2*i]++,t.bl_tree[32]++):a<=10?t.bl_tree[34]++:t.bl_tree[36]++,a=0,s=i,0===o?(c=138,f=3):i===o?(c=6,f=3):(c=7,f=4))},Fr=(t,e,r)=>{let n,i,s=-1,o=e[1],a=0,c=7,f=4;for(0===o&&(c=138,f=3),n=0;n<=r;n++)if(i=o,o=e[2*(n+1)+1],!(++a<c&&i===o)){if(a<f)do{Rr(t,i,t.bl_tree)}while(0!=--a);else 0!==i?(i!==s&&(Rr(t,i,t.bl_tree),a--),Rr(t,16,t.bl_tree),Tr(t,a-3,2)):a<=10?(Rr(t,17,t.bl_tree),Tr(t,a-3,3)):(Rr(t,18,t.bl_tree),Tr(t,a-11,7));a=0,s=i,0===o?(c=138,f=3):i===o?(c=6,f=3):(c=7,f=4)}};let Cr=!1;const br=(t,e,r,n)=>{Tr(t,0+(n?1:0),3),((t,e,r,n)=>{Ur(t),n&&(hr(t,r),hr(t,~r)),t.pending_buf.set(t.window.subarray(e,e+r),t.pending),t.pending+=r})(t,e,r,!0)};var pr=t=>{Cr||((()=>{let t,e,r,n,i;const s=new Array(16);for(r=0,n=0;n<28;n++)for(ar[n]=r,t=0;t<1<<Qe[n];t++)or[r++]=n;for(or[r-1]=n,i=0,n=0;n<16;n++)for(cr[n]=i,t=0;t<1<<tr[n];t++)sr[i++]=n;for(i>>=7;n<$e;n++)for(cr[n]=i<<7,t=0;t<1<<tr[n]-7;t++)sr[256+i++]=n;for(e=0;e<=Je;e++)s[e]=0;for(t=0;t<=143;)nr[2*t+1]=8,t++,s[8]++;for(;t<=255;)nr[2*t+1]=9,t++,s[9]++;for(;t<=279;)nr[2*t+1]=7,t++,s[7]++;for(;t<=287;)nr[2*t+1]=8,t++,s[8]++;for(Ir(nr,287,s),t=0;t<$e;t++)ir[2*t+1]=5,ir[2*t]=yr(t,5);ur=new fr(nr,Qe,257,qe,Je),lr=new fr(ir,tr,0,$e,Je),Er=new fr(new Array(0),er,0,19,7)})(),Cr=!0),t.l_desc=new _r(t.dyn_ltree,ur),t.d_desc=new _r(t.dyn_dtree,lr),t.bl_desc=new _r(t.bl_tree,Er),t.bi_buf=0,t.bi_valid=0,Nr(t)},wr=(t,e,r,n)=>{let i,s,o=0;t.level>0?(2===t.strm.data_type&&(t.strm.data_type=(t=>{let e,r=4093624447;for(e=0;e<=31;e++,r>>>=1)if(1&r&&0!==t.dyn_ltree[2*e])return 0;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return 1;for(e=32;e<je;e++)if(0!==t.dyn_ltree[2*e])return 1;return 0})(t)),Or(t,t.l_desc),Or(t,t.d_desc),o=(t=>{let e;for(Mr(t,t.dyn_ltree,t.l_desc.max_code),Mr(t,t.dyn_dtree,t.d_desc.max_code),Or(t,t.bl_desc),e=18;e>=3&&0===t.bl_tree[2*rr[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e})(t),i=t.opt_len+3+7>>>3,s=t.static_len+3+7>>>3,s<=i&&(i=s)):i=s=r+5,r+4<=i&&-1!==e?br(t,e,r,n):4===t.strategy||s===i?(Tr(t,2+(n?1:0),3),mr(t,nr,ir)):(Tr(t,4+(n?1:0),3),((t,e,r,n)=>{let i;for(Tr(t,e-257,5),Tr(t,r-1,5),Tr(t,n-4,4),i=0;i<n;i++)Tr(t,t.bl_tree[2*rr[i]+1],3);Fr(t,t.dyn_ltree,e-1),Fr(t,t.dyn_dtree,r-1)})(t,t.l_desc.max_code+1,t.d_desc.max_code+1,o+1),mr(t,t.dyn_ltree,t.dyn_dtree)),Nr(t),n&&Ur(t)},Dr={Rt:pr,yt:br,It:wr,Nt:(t,e,r)=>(t.pending_buf[t.d_buf+2*t.last_lit]=e>>>8&255,t.pending_buf[t.d_buf+2*t.last_lit+1]=255&e,t.pending_buf[t.l_buf+t.last_lit]=255&r,t.last_lit++,0===e?t.dyn_ltree[2*r]++:(t.matches++,e--,t.dyn_ltree[2*(or[r]+je+1)]++,t.dyn_dtree[2*Ar(e)]++),t.last_lit===t.lit_bufsize-1),Ut:t=>{Tr(t,2,3),Rr(t,256,nr),(t=>{16===t.bi_valid?(hr(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)})(t)}};var Br=(t,e,r,n)=>{let i=65535&t|0,s=t>>>16&65535|0,o=0;for(;0!==r;){o=r>2e3?2e3:r,r-=o;do{i=i+e[n++]|0,s=s+i|0}while(--o);i%=65521,s%=65521}return i|s<<16|0};const Lr=new Uint32Array((()=>{let t,e=[];for(var r=0;r<256;r++){t=r;for(var n=0;n<8;n++)t=1&t?3988292384^t>>>1:t>>>1;e[r]=t}return e})());var Pr=(t,e,r,n)=>{const i=Lr,s=n+r;t^=-1;for(let r=n;r<s;r++)t=t>>>8^i[255&(t^e[r])];return-1^t},gr={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},Gr={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{Rt:vr,yt:Xr,It:Hr,Nt:xr,Ut:Vr}=Dr,{Z_NO_FLUSH:kr,Z_PARTIAL_FLUSH:Zr,Z_FULL_FLUSH:Yr,Z_FINISH:Kr,Z_BLOCK:zr,Z_OK:Wr,Z_STREAM_END:jr,Z_STREAM_ERROR:qr,Z_DATA_ERROR:$r,Z_BUF_ERROR:Jr,Z_DEFAULT_COMPRESSION:Qr,Z_FILTERED:tn,Z_HUFFMAN_ONLY:en,Z_RLE:rn,Z_FIXED:nn,Z_DEFAULT_STRATEGY:sn,Z_UNKNOWN:on,Z_DEFLATED:an}=Gr,cn=258,fn=262,un=103,ln=113,En=666,_n=(t,e)=>(t.msg=gr[e],e),An=t=>(t<<1)-(t>4?9:0),hn=t=>{let e=t.length;for(;--e>=0;)t[e]=0};let Tn=(t,e,r)=>(e<<t.hash_shift^r)&t.hash_mask;const Rn=t=>{const e=t.state;let r=e.pending;r>t.avail_out&&(r=t.avail_out),0!==r&&(t.output.set(e.pending_buf.subarray(e.pending_out,e.pending_out+r),t.next_out),t.next_out+=r,e.pending_out+=r,t.total_out+=r,t.avail_out-=r,e.pending-=r,0===e.pending&&(e.pending_out=0))},yn=(t,e)=>{Hr(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,Rn(t.strm)},In=(t,e)=>{t.pending_buf[t.pending++]=e},Nn=(t,e)=>{t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e},Un=(t,e,r,n)=>{let i=t.avail_in;return i>n&&(i=n),0===i?0:(t.avail_in-=i,e.set(t.input.subarray(t.next_in,t.next_in+i),r),1===t.state.wrap?t.adler=Br(t.adler,e,i,r):2===t.state.wrap&&(t.adler=Pr(t.adler,e,i,r)),t.next_in+=i,t.total_in+=i,i)},dn=(t,e)=>{let r,n,i=t.max_chain_length,s=t.strstart,o=t.prev_length,a=t.nice_match;const c=t.strstart>t.w_size-fn?t.strstart-(t.w_size-fn):0,f=t.window,u=t.w_mask,l=t.prev,E=t.strstart+cn;let _=f[s+o-1],A=f[s+o];t.prev_length>=t.good_match&&(i>>=2),a>t.lookahead&&(a=t.lookahead);do{if(r=e,f[r+o]===A&&f[r+o-1]===_&&f[r]===f[s]&&f[++r]===f[s+1]){s+=2,r++;do{}while(f[++s]===f[++r]&&f[++s]===f[++r]&&f[++s]===f[++r]&&f[++s]===f[++r]&&f[++s]===f[++r]&&f[++s]===f[++r]&&f[++s]===f[++r]&&f[++s]===f[++r]&&s<E);if(n=cn-(E-s),s=E-cn,n>o){if(t.match_start=e,o=n,n>=a)break;_=f[s+o-1],A=f[s+o]}}}while((e=l[e&u])>c&&0!=--i);return o<=t.lookahead?o:t.lookahead},Sn=t=>{const e=t.w_size;let r,n,i,s,o;do{if(s=t.window_size-t.lookahead-t.strstart,t.strstart>=e+(e-fn)){t.window.set(t.window.subarray(e,e+e),0),t.match_start-=e,t.strstart-=e,t.block_start-=e,n=t.hash_size,r=n;do{i=t.head[--r],t.head[r]=i>=e?i-e:0}while(--n);n=e,r=n;do{i=t.prev[--r],t.prev[r]=i>=e?i-e:0}while(--n);s+=e}if(0===t.strm.avail_in)break;if(n=Un(t.strm,t.window,t.strstart+t.lookahead,s),t.lookahead+=n,t.lookahead+t.insert>=3)for(o=t.strstart-t.insert,t.ins_h=t.window[o],t.ins_h=Tn(t,t.ins_h,t.window[o+1]);t.insert&&(t.ins_h=Tn(t,t.ins_h,t.window[o+3-1]),t.prev[o&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=o,o++,t.insert--,!(t.lookahead+t.insert<3)););}while(t.lookahead<fn&&0!==t.strm.avail_in)},mn=(t,e)=>{let r,n;for(;;){if(t.lookahead<fn){if(Sn(t),t.lookahead<fn&&e===kr)return 1;if(0===t.lookahead)break}if(r=0,t.lookahead>=3&&(t.ins_h=Tn(t,t.ins_h,t.window[t.strstart+3-1]),r=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!==r&&t.strstart-r<=t.w_size-fn&&(t.match_length=dn(t,r)),t.match_length>=3)if(n=xr(t,t.strstart-t.match_start,t.match_length-3),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=3){t.match_length--;do{t.strstart++,t.ins_h=Tn(t,t.ins_h,t.window[t.strstart+3-1]),r=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart}while(0!=--t.match_length);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=Tn(t,t.ins_h,t.window[t.strstart+1]);else n=xr(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(n&&(yn(t,!1),0===t.strm.avail_out))return 1}return t.insert=t.strstart<2?t.strstart:2,e===Kr?(yn(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(yn(t,!1),0===t.strm.avail_out)?1:2},On=(t,e)=>{let r,n,i;for(;;){if(t.lookahead<fn){if(Sn(t),t.lookahead<fn&&e===kr)return 1;if(0===t.lookahead)break}if(r=0,t.lookahead>=3&&(t.ins_h=Tn(t,t.ins_h,t.window[t.strstart+3-1]),r=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=2,0!==r&&t.prev_length<t.max_lazy_match&&t.strstart-r<=t.w_size-fn&&(t.match_length=dn(t,r),t.match_length<=5&&(t.strategy===tn||3===t.match_length&&t.strstart-t.match_start>4096)&&(t.match_length=2)),t.prev_length>=3&&t.match_length<=t.prev_length){i=t.strstart+t.lookahead-3,n=xr(t,t.strstart-1-t.prev_match,t.prev_length-3),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=i&&(t.ins_h=Tn(t,t.ins_h,t.window[t.strstart+3-1]),r=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart)}while(0!=--t.prev_length);if(t.match_available=0,t.match_length=2,t.strstart++,n&&(yn(t,!1),0===t.strm.avail_out))return 1}else if(t.match_available){if(n=xr(t,0,t.window[t.strstart-1]),n&&yn(t,!1),t.strstart++,t.lookahead--,0===t.strm.avail_out)return 1}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(n=xr(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<2?t.strstart:2,e===Kr?(yn(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(yn(t,!1),0===t.strm.avail_out)?1:2};function Mn(t,e,r,n,i){this.good_length=t,this.max_lazy=e,this.nice_length=r,this.max_chain=n,this.func=i}const Fn=[new Mn(0,0,0,0,((t,e)=>{let r=65535;for(r>t.pending_buf_size-5&&(r=t.pending_buf_size-5);;){if(t.lookahead<=1){if(Sn(t),0===t.lookahead&&e===kr)return 1;if(0===t.lookahead)break}t.strstart+=t.lookahead,t.lookahead=0;const n=t.block_start+r;if((0===t.strstart||t.strstart>=n)&&(t.lookahead=t.strstart-n,t.strstart=n,yn(t,!1),0===t.strm.avail_out))return 1;if(t.strstart-t.block_start>=t.w_size-fn&&(yn(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===Kr?(yn(t,!0),0===t.strm.avail_out?3:4):(t.strstart>t.block_start&&(yn(t,!1),t.strm.avail_out),1)})),new Mn(4,4,8,4,mn),new Mn(4,5,16,8,mn),new Mn(4,6,32,32,mn),new Mn(4,4,16,16,On),new Mn(8,16,32,32,On),new Mn(8,16,128,128,On),new Mn(8,32,128,256,On),new Mn(32,128,258,1024,On),new Mn(32,258,258,4096,On)];function Cn(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=an,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),hn(this.dyn_ltree),hn(this.dyn_dtree),hn(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),hn(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),hn(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const bn=t=>{if(!t||!t.state)return _n(t,qr);t.total_in=t.total_out=0,t.data_type=on;const e=t.state;return e.pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=e.wrap?42:ln,t.adler=2===e.wrap?0:1,e.last_flush=kr,vr(e),Wr},pn=t=>{const e=bn(t);var r;return e===Wr&&((r=t.state).window_size=2*r.w_size,hn(r.head),r.max_lazy_match=Fn[r.level].max_lazy,r.good_match=Fn[r.level].good_length,r.nice_match=Fn[r.level].nice_length,r.max_chain_length=Fn[r.level].max_chain,r.strstart=0,r.block_start=0,r.lookahead=0,r.insert=0,r.match_length=r.prev_length=2,r.match_available=0,r.ins_h=0),e},wn=(t,e,r,n,i,s)=>{if(!t)return qr;let o=1;if(e===Qr&&(e=6),n<0?(o=0,n=-n):n>15&&(o=2,n-=16),i<1||i>9||r!==an||n<8||n>15||e<0||e>9||s<0||s>nn)return _n(t,qr);8===n&&(n=9);const a=new Cn;return t.state=a,a.strm=t,a.wrap=o,a.gzhead=null,a.w_bits=n,a.w_size=1<<a.w_bits,a.w_mask=a.w_size-1,a.hash_bits=i+7,a.hash_size=1<<a.hash_bits,a.hash_mask=a.hash_size-1,a.hash_shift=~~((a.hash_bits+3-1)/3),a.window=new Uint8Array(2*a.w_size),a.head=new Uint16Array(a.hash_size),a.prev=new Uint16Array(a.w_size),a.lit_bufsize=1<<i+6,a.pending_buf_size=4*a.lit_bufsize,a.pending_buf=new Uint8Array(a.pending_buf_size),a.d_buf=1*a.lit_bufsize,a.l_buf=3*a.lit_bufsize,a.level=e,a.strategy=s,a.method=r,pn(t)};var Dn=(t,e)=>{let r=e.length;if(!t||!t.state)return qr;const n=t.state,i=n.wrap;if(2===i||1===i&&42!==n.status||n.lookahead)return qr;if(1===i&&(t.adler=Br(t.adler,e,r,0)),n.wrap=0,r>=n.w_size){0===i&&(hn(n.head),n.strstart=0,n.block_start=0,n.insert=0);let t=new Uint8Array(n.w_size);t.set(e.subarray(r-n.w_size,r),0),e=t,r=n.w_size}const s=t.avail_in,o=t.next_in,a=t.input;for(t.avail_in=r,t.next_in=0,t.input=e,Sn(n);n.lookahead>=3;){let t=n.strstart,e=n.lookahead-2;do{n.ins_h=Tn(n,n.ins_h,n.window[t+3-1]),n.prev[t&n.w_mask]=n.head[n.ins_h],n.head[n.ins_h]=t,t++}while(--e);n.strstart=t,n.lookahead=2,Sn(n)}return n.strstart+=n.lookahead,n.block_start=n.strstart,n.insert=n.lookahead,n.lookahead=0,n.match_length=n.prev_length=2,n.match_available=0,t.next_in=o,t.input=a,t.avail_in=s,n.wrap=i,Wr},Bn={deflateInit:(t,e)=>wn(t,e,an,15,8,sn),deflateInit2:wn,deflateReset:pn,deflateResetKeep:bn,deflateSetHeader:(t,e)=>t&&t.state?2!==t.state.wrap?qr:(t.state.gzhead=e,Wr):qr,deflate:(t,e)=>{let r,n;if(!t||!t.state||e>zr||e<0)return t?_n(t,qr):qr;const i=t.state;if(!t.output||!t.input&&0!==t.avail_in||i.status===En&&e!==Kr)return _n(t,0===t.avail_out?Jr:qr);i.strm=t;const s=i.last_flush;if(i.last_flush=e,42===i.status)if(2===i.wrap)t.adler=0,In(i,31),In(i,139),In(i,8),i.gzhead?(In(i,(i.gzhead.text?1:0)+(i.gzhead.hcrc?2:0)+(i.gzhead.extra?4:0)+(i.gzhead.name?8:0)+(i.gzhead.comment?16:0)),In(i,255&i.gzhead.time),In(i,i.gzhead.time>>8&255),In(i,i.gzhead.time>>16&255),In(i,i.gzhead.time>>24&255),In(i,9===i.level?2:i.strategy>=en||i.level<2?4:0),In(i,255&i.gzhead.os),i.gzhead.extra&&i.gzhead.extra.length&&(In(i,255&i.gzhead.extra.length),In(i,i.gzhead.extra.length>>8&255)),i.gzhead.hcrc&&(t.adler=Pr(t.adler,i.pending_buf,i.pending,0)),i.gzindex=0,i.status=69):(In(i,0),In(i,0),In(i,0),In(i,0),In(i,0),In(i,9===i.level?2:i.strategy>=en||i.level<2?4:0),In(i,3),i.status=ln);else{let e=an+(i.w_bits-8<<4)<<8,r=-1;r=i.strategy>=en||i.level<2?0:i.level<6?1:6===i.level?2:3,e|=r<<6,0!==i.strstart&&(e|=32),e+=31-e%31,i.status=ln,Nn(i,e),0!==i.strstart&&(Nn(i,t.adler>>>16),Nn(i,65535&t.adler)),t.adler=1}if(69===i.status)if(i.gzhead.extra){for(r=i.pending;i.gzindex<(65535&i.gzhead.extra.length)&&(i.pending!==i.pending_buf_size||(i.gzhead.hcrc&&i.pending>r&&(t.adler=Pr(t.adler,i.pending_buf,i.pending-r,r)),Rn(t),r=i.pending,i.pending!==i.pending_buf_size));)In(i,255&i.gzhead.extra[i.gzindex]),i.gzindex++;i.gzhead.hcrc&&i.pending>r&&(t.adler=Pr(t.adler,i.pending_buf,i.pending-r,r)),i.gzindex===i.gzhead.extra.length&&(i.gzindex=0,i.status=73)}else i.status=73;if(73===i.status)if(i.gzhead.name){r=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>r&&(t.adler=Pr(t.adler,i.pending_buf,i.pending-r,r)),Rn(t),r=i.pending,i.pending===i.pending_buf_size)){n=1;break}n=i.gzindex<i.gzhead.name.length?255&i.gzhead.name.charCodeAt(i.gzindex++):0,In(i,n)}while(0!==n);i.gzhead.hcrc&&i.pending>r&&(t.adler=Pr(t.adler,i.pending_buf,i.pending-r,r)),0===n&&(i.gzindex=0,i.status=91)}else i.status=91;if(91===i.status)if(i.gzhead.comment){r=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>r&&(t.adler=Pr(t.adler,i.pending_buf,i.pending-r,r)),Rn(t),r=i.pending,i.pending===i.pending_buf_size)){n=1;break}n=i.gzindex<i.gzhead.comment.length?255&i.gzhead.comment.charCodeAt(i.gzindex++):0,In(i,n)}while(0!==n);i.gzhead.hcrc&&i.pending>r&&(t.adler=Pr(t.adler,i.pending_buf,i.pending-r,r)),0===n&&(i.status=un)}else i.status=un;if(i.status===un&&(i.gzhead.hcrc?(i.pending+2>i.pending_buf_size&&Rn(t),i.pending+2<=i.pending_buf_size&&(In(i,255&t.adler),In(i,t.adler>>8&255),t.adler=0,i.status=ln)):i.status=ln),0!==i.pending){if(Rn(t),0===t.avail_out)return i.last_flush=-1,Wr}else if(0===t.avail_in&&An(e)<=An(s)&&e!==Kr)return _n(t,Jr);if(i.status===En&&0!==t.avail_in)return _n(t,Jr);if(0!==t.avail_in||0!==i.lookahead||e!==kr&&i.status!==En){let r=i.strategy===en?((t,e)=>{let r;for(;;){if(0===t.lookahead&&(Sn(t),0===t.lookahead)){if(e===kr)return 1;break}if(t.match_length=0,r=xr(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,r&&(yn(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===Kr?(yn(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(yn(t,!1),0===t.strm.avail_out)?1:2})(i,e):i.strategy===rn?((t,e)=>{let r,n,i,s;const o=t.window;for(;;){if(t.lookahead<=cn){if(Sn(t),t.lookahead<=cn&&e===kr)return 1;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=3&&t.strstart>0&&(i=t.strstart-1,n=o[i],n===o[++i]&&n===o[++i]&&n===o[++i])){s=t.strstart+cn;do{}while(n===o[++i]&&n===o[++i]&&n===o[++i]&&n===o[++i]&&n===o[++i]&&n===o[++i]&&n===o[++i]&&n===o[++i]&&i<s);t.match_length=cn-(s-i),t.match_length>t.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=3?(r=xr(t,1,t.match_length-3),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(r=xr(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),r&&(yn(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===Kr?(yn(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(yn(t,!1),0===t.strm.avail_out)?1:2})(i,e):Fn[i.level].func(i,e);if(3!==r&&4!==r||(i.status=En),1===r||3===r)return 0===t.avail_out&&(i.last_flush=-1),Wr;if(2===r&&(e===Zr?Vr(i):e!==zr&&(Xr(i,0,0,!1),e===Yr&&(hn(i.head),0===i.lookahead&&(i.strstart=0,i.block_start=0,i.insert=0))),Rn(t),0===t.avail_out))return i.last_flush=-1,Wr}return e!==Kr?Wr:i.wrap<=0?jr:(2===i.wrap?(In(i,255&t.adler),In(i,t.adler>>8&255),In(i,t.adler>>16&255),In(i,t.adler>>24&255),In(i,255&t.total_in),In(i,t.total_in>>8&255),In(i,t.total_in>>16&255),In(i,t.total_in>>24&255)):(Nn(i,t.adler>>>16),Nn(i,65535&t.adler)),Rn(t),i.wrap>0&&(i.wrap=-i.wrap),0!==i.pending?Wr:jr)},deflateEnd:t=>{if(!t||!t.state)return qr;const e=t.state.status;return 42!==e&&69!==e&&73!==e&&91!==e&&e!==un&&e!==ln&&e!==En?_n(t,qr):(t.state=null,e===ln?_n(t,$r):Wr)},deflateSetDictionary:Dn,deflateInfo:"pako deflate (from Nodeca project)"};const Ln=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var Pn=function(t){const e=Array.prototype.slice.call(arguments,1);for(;e.length;){const r=e.shift();if(r){if("object"!=typeof r)throw new TypeError(r+"must be non-object");for(const e in r)Ln(r,e)&&(t[e]=r[e])}}return t},gn=t=>{let e=0;for(let r=0,n=t.length;r<n;r++)e+=t[r].length;const r=new Uint8Array(e);for(let e=0,n=0,i=t.length;e<i;e++){let i=t[e];r.set(i,n),n+=i.length}return r};let Gn=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(t){Gn=!1}const vn=new Uint8Array(256);for(let t=0;t<256;t++)vn[t]=t>=252?6:t>=248?5:t>=240?4:t>=224?3:t>=192?2:1;vn[254]=vn[254]=1;var Xn=t=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(t);let e,r,n,i,s,o=t.length,a=0;for(i=0;i<o;i++)r=t.charCodeAt(i),55296==(64512&r)&&i+1<o&&(n=t.charCodeAt(i+1),56320==(64512&n)&&(r=65536+(r-55296<<10)+(n-56320),i++)),a+=r<128?1:r<2048?2:r<65536?3:4;for(e=new Uint8Array(a),s=0,i=0;s<a;i++)r=t.charCodeAt(i),55296==(64512&r)&&i+1<o&&(n=t.charCodeAt(i+1),56320==(64512&n)&&(r=65536+(r-55296<<10)+(n-56320),i++)),r<128?e[s++]=r:r<2048?(e[s++]=192|r>>>6,e[s++]=128|63&r):r<65536?(e[s++]=224|r>>>12,e[s++]=128|r>>>6&63,e[s++]=128|63&r):(e[s++]=240|r>>>18,e[s++]=128|r>>>12&63,e[s++]=128|r>>>6&63,e[s++]=128|63&r);return e},Hn=(t,e)=>{const r=e||t.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(t.subarray(0,e));let n,i;const s=new Array(2*r);for(i=0,n=0;n<r;){let e=t[n++];if(e<128){s[i++]=e;continue}let o=vn[e];if(o>4)s[i++]=65533,n+=o-1;else{for(e&=2===o?31:3===o?15:7;o>1&&n<r;)e=e<<6|63&t[n++],o--;o>1?s[i++]=65533:e<65536?s[i++]=e:(e-=65536,s[i++]=55296|e>>10&1023,s[i++]=56320|1023&e)}}return((t,e)=>{if(e<65534&&t.subarray&&Gn)return String.fromCharCode.apply(null,t.length===e?t:t.subarray(0,e));let r="";for(let n=0;n<e;n++)r+=String.fromCharCode(t[n]);return r})(s,i)},xn=(t,e)=>{(e=e||t.length)>t.length&&(e=t.length);let r=e-1;for(;r>=0&&128==(192&t[r]);)r--;return r<0||0===r?e:r+vn[t[r]]>e?r:e};var Vn=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0};const kn=Object.prototype.toString,{Z_NO_FLUSH:Zn,Z_SYNC_FLUSH:Yn,Z_FULL_FLUSH:Kn,Z_FINISH:zn,Z_OK:Wn,Z_STREAM_END:jn,Z_DEFAULT_COMPRESSION:qn,Z_DEFAULT_STRATEGY:$n,Z_DEFLATED:Jn}=Gr;function Qn(t){this.options=Pn({level:qn,method:Jn,chunkSize:16384,windowBits:15,memLevel:8,strategy:$n},t||{});let e=this.options;e.raw&&e.windowBits>0?e.windowBits=-e.windowBits:e.gzip&&e.windowBits>0&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Vn,this.strm.avail_out=0;let r=Bn.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(r!==Wn)throw new Error(gr[r]);if(e.header&&Bn.deflateSetHeader(this.strm,e.header),e.dictionary){let t;if(t="string"==typeof e.dictionary?Xn(e.dictionary):"[object ArrayBuffer]"===kn.call(e.dictionary)?new Uint8Array(e.dictionary):e.dictionary,r=Bn.deflateSetDictionary(this.strm,t),r!==Wn)throw new Error(gr[r]);this.dt=!0}}function ti(t,e){const r=new Qn(e);if(r.push(t,!0),r.err)throw r.msg||gr[r.err];return r.result}Qn.prototype.push=function(t,e){const r=this.strm,n=this.options.chunkSize;let i,s;if(this.ended)return!1;for(s=e===~~e?e:!0===e?zn:Zn,"string"==typeof t?r.input=Xn(t):"[object ArrayBuffer]"===kn.call(t)?r.input=new Uint8Array(t):r.input=t,r.next_in=0,r.avail_in=r.input.length;;)if(0===r.avail_out&&(r.output=new Uint8Array(n),r.next_out=0,r.avail_out=n),(s===Yn||s===Kn)&&r.avail_out<=6)this.onData(r.output.subarray(0,r.next_out)),r.avail_out=0;else{if(i=Bn.deflate(r,s),i===jn)return r.next_out>0&&this.onData(r.output.subarray(0,r.next_out)),i=Bn.deflateEnd(this.strm),this.onEnd(i),this.ended=!0,i===Wn;if(0!==r.avail_out){if(s>0&&r.next_out>0)this.onData(r.output.subarray(0,r.next_out)),r.avail_out=0;else if(0===r.avail_in)break}else this.onData(r.output)}return!0},Qn.prototype.onData=function(t){this.chunks.push(t)},Qn.prototype.onEnd=function(t){t===Wn&&(this.result=gn(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};var ei={Deflate:Qn,deflate:ti,deflateRaw:function(t,e){return(e=e||{}).raw=!0,ti(t,e)},gzip:function(t,e){return(e=e||{}).gzip=!0,ti(t,e)},constants:Gr};var ri=function(t,e){let r,n,i,s,o,a,c,f,u,l,E,_,A,h,T,R,y,I,N,U,d,S,m,O;const M=t.state;r=t.next_in,m=t.input,n=r+(t.avail_in-5),i=t.next_out,O=t.output,s=i-(e-t.avail_out),o=i+(t.avail_out-257),a=M.dmax,c=M.wsize,f=M.whave,u=M.wnext,l=M.window,E=M.hold,_=M.bits,A=M.lencode,h=M.distcode,T=(1<<M.lenbits)-1,R=(1<<M.distbits)-1;t:do{_<15&&(E+=m[r++]<<_,_+=8,E+=m[r++]<<_,_+=8),y=A[E&T];e:for(;;){if(I=y>>>24,E>>>=I,_-=I,I=y>>>16&255,0===I)O[i++]=65535&y;else{if(!(16&I)){if(0==(64&I)){y=A[(65535&y)+(E&(1<<I)-1)];continue e}if(32&I){M.mode=12;break t}t.msg="invalid literal/length code",M.mode=30;break t}N=65535&y,I&=15,I&&(_<I&&(E+=m[r++]<<_,_+=8),N+=E&(1<<I)-1,E>>>=I,_-=I),_<15&&(E+=m[r++]<<_,_+=8,E+=m[r++]<<_,_+=8),y=h[E&R];r:for(;;){if(I=y>>>24,E>>>=I,_-=I,I=y>>>16&255,!(16&I)){if(0==(64&I)){y=h[(65535&y)+(E&(1<<I)-1)];continue r}t.msg="invalid distance code",M.mode=30;break t}if(U=65535&y,I&=15,_<I&&(E+=m[r++]<<_,_+=8,_<I&&(E+=m[r++]<<_,_+=8)),U+=E&(1<<I)-1,U>a){t.msg="invalid distance too far back",M.mode=30;break t}if(E>>>=I,_-=I,I=i-s,U>I){if(I=U-I,I>f&&M.sane){t.msg="invalid distance too far back",M.mode=30;break t}if(d=0,S=l,0===u){if(d+=c-I,I<N){N-=I;do{O[i++]=l[d++]}while(--I);d=i-U,S=O}}else if(u<I){if(d+=c+u-I,I-=u,I<N){N-=I;do{O[i++]=l[d++]}while(--I);if(d=0,u<N){I=u,N-=I;do{O[i++]=l[d++]}while(--I);d=i-U,S=O}}}else if(d+=u-I,I<N){N-=I;do{O[i++]=l[d++]}while(--I);d=i-U,S=O}for(;N>2;)O[i++]=S[d++],O[i++]=S[d++],O[i++]=S[d++],N-=3;N&&(O[i++]=S[d++],N>1&&(O[i++]=S[d++]))}else{d=i-U;do{O[i++]=O[d++],O[i++]=O[d++],O[i++]=O[d++],N-=3}while(N>2);N&&(O[i++]=O[d++],N>1&&(O[i++]=O[d++]))}break}}break}}while(r<n&&i<o);N=_>>3,r-=N,_-=N<<3,E&=(1<<_)-1,t.next_in=r,t.next_out=i,t.avail_in=r<n?n-r+5:5-(r-n),t.avail_out=i<o?o-i+257:257-(i-o),M.hold=E,M.bits=_};const ni=15,ii=new Uint16Array([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0]),si=new Uint8Array([16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78]),oi=new Uint16Array([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0]),ai=new Uint8Array([16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64]);var ci=(t,e,r,n,i,s,o,a)=>{const c=a.bits;let f,u,l,E,_,A,h=0,T=0,R=0,y=0,I=0,N=0,U=0,d=0,S=0,m=0,O=null,M=0;const F=new Uint16Array(16),C=new Uint16Array(16);let b,p,w,D=null,B=0;for(h=0;h<=ni;h++)F[h]=0;for(T=0;T<n;T++)F[e[r+T]]++;for(I=c,y=ni;y>=1&&0===F[y];y--);if(I>y&&(I=y),0===y)return i[s++]=20971520,i[s++]=20971520,a.bits=1,0;for(R=1;R<y&&0===F[R];R++);for(I<R&&(I=R),d=1,h=1;h<=ni;h++)if(d<<=1,d-=F[h],d<0)return-1;if(d>0&&(0===t||1!==y))return-1;for(C[1]=0,h=1;h<ni;h++)C[h+1]=C[h]+F[h];for(T=0;T<n;T++)0!==e[r+T]&&(o[C[e[r+T]]++]=T);if(0===t?(O=D=o,A=19):1===t?(O=ii,M-=257,D=si,B-=257,A=256):(O=oi,D=ai,A=-1),m=0,T=0,h=R,_=s,N=I,U=0,l=-1,S=1<<I,E=S-1,1===t&&S>852||2===t&&S>592)return 1;for(;;){b=h-U,o[T]<A?(p=0,w=o[T]):o[T]>A?(p=D[B+o[T]],w=O[M+o[T]]):(p=96,w=0),f=1<<h-U,u=1<<N,R=u;do{u-=f,i[_+(m>>U)+u]=b<<24|p<<16|w|0}while(0!==u);for(f=1<<h-1;m&f;)f>>=1;if(0!==f?(m&=f-1,m+=f):m=0,T++,0==--F[h]){if(h===y)break;h=e[r+o[T]]}if(h>I&&(m&E)!==l){for(0===U&&(U=I),_+=R,N=h-U,d=1<<N;N+U<y&&(d-=F[N+U],!(d<=0));)N++,d<<=1;if(S+=1<<N,1===t&&S>852||2===t&&S>592)return 1;l=m&E,i[l]=I<<24|N<<16|_-s|0}}return 0!==m&&(i[_+m]=h-U<<24|64<<16|0),a.bits=I,0};const{Z_FINISH:fi,Z_BLOCK:ui,Z_TREES:li,Z_OK:Ei,Z_STREAM_END:_i,Z_NEED_DICT:Ai,Z_STREAM_ERROR:hi,Z_DATA_ERROR:Ti,Z_MEM_ERROR:Ri,Z_BUF_ERROR:yi,Z_DEFLATED:Ii}=Gr,Ni=12,Ui=30,di=t=>(t>>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24);function Si(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const mi=t=>{if(!t||!t.state)return hi;const e=t.state;return t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=1&e.wrap),e.mode=1,e.last=0,e.havedict=0,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new Int32Array(852),e.distcode=e.distdyn=new Int32Array(592),e.sane=1,e.back=-1,Ei},Oi=t=>{if(!t||!t.state)return hi;const e=t.state;return e.wsize=0,e.whave=0,e.wnext=0,mi(t)},Mi=(t,e)=>{let r;if(!t||!t.state)return hi;const n=t.state;return e<0?(r=0,e=-e):(r=1+(e>>4),e<48&&(e&=15)),e&&(e<8||e>15)?hi:(null!==n.window&&n.wbits!==e&&(n.window=null),n.wrap=r,n.wbits=e,Oi(t))},Fi=(t,e)=>{if(!t)return hi;const r=new Si;t.state=r,r.window=null;const n=Mi(t,e);return n!==Ei&&(t.state=null),n};let Ci,bi,pi=!0;const wi=t=>{if(pi){Ci=new Int32Array(512),bi=new Int32Array(32);let e=0;for(;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(ci(1,t.lens,0,288,Ci,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;ci(2,t.lens,0,32,bi,0,t.work,{bits:5}),pi=!1}t.lencode=Ci,t.lenbits=9,t.distcode=bi,t.distbits=5},Di=(t,e,r,n)=>{let i;const s=t.state;return null===s.window&&(s.wsize=1<<s.wbits,s.wnext=0,s.whave=0,s.window=new Uint8Array(s.wsize)),n>=s.wsize?(s.window.set(e.subarray(r-s.wsize,r),0),s.wnext=0,s.whave=s.wsize):(i=s.wsize-s.wnext,i>n&&(i=n),s.window.set(e.subarray(r-n,r-n+i),s.wnext),(n-=i)?(s.window.set(e.subarray(r-n,r),0),s.wnext=n,s.whave=s.wsize):(s.wnext+=i,s.wnext===s.wsize&&(s.wnext=0),s.whave<s.wsize&&(s.whave+=i))),0};var Bi=(t,e)=>{let r,n,i,s,o,a,c,f,u,l,E,_,A,h,T,R,y,I,N,U,d,S,m=0;const O=new Uint8Array(4);let M,F;const C=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(!t||!t.state||!t.output||!t.input&&0!==t.avail_in)return hi;r=t.state,r.mode===Ni&&(r.mode=13),o=t.next_out,i=t.output,c=t.avail_out,s=t.next_in,n=t.input,a=t.avail_in,f=r.hold,u=r.bits,l=a,E=c,S=Ei;t:for(;;)switch(r.mode){case 1:if(0===r.wrap){r.mode=13;break}for(;u<16;){if(0===a)break t;a--,f+=n[s++]<<u,u+=8}if(2&r.wrap&&35615===f){r.check=0,O[0]=255&f,O[1]=f>>>8&255,r.check=Pr(r.check,O,2,0),f=0,u=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&f)<<8)+(f>>8))%31){t.msg="incorrect header check",r.mode=Ui;break}if((15&f)!==Ii){t.msg="unknown compression method",r.mode=Ui;break}if(f>>>=4,u-=4,d=8+(15&f),0===r.wbits)r.wbits=d;else if(d>r.wbits){t.msg="invalid window size",r.mode=Ui;break}r.dmax=1<<r.wbits,t.adler=r.check=1,r.mode=512&f?10:Ni,f=0,u=0;break;case 2:for(;u<16;){if(0===a)break t;a--,f+=n[s++]<<u,u+=8}if(r.flags=f,(255&r.flags)!==Ii){t.msg="unknown compression method",r.mode=Ui;break}if(57344&r.flags){t.msg="unknown header flags set",r.mode=Ui;break}r.head&&(r.head.text=f>>8&1),512&r.flags&&(O[0]=255&f,O[1]=f>>>8&255,r.check=Pr(r.check,O,2,0)),f=0,u=0,r.mode=3;case 3:for(;u<32;){if(0===a)break t;a--,f+=n[s++]<<u,u+=8}r.head&&(r.head.time=f),512&r.flags&&(O[0]=255&f,O[1]=f>>>8&255,O[2]=f>>>16&255,O[3]=f>>>24&255,r.check=Pr(r.check,O,4,0)),f=0,u=0,r.mode=4;case 4:for(;u<16;){if(0===a)break t;a--,f+=n[s++]<<u,u+=8}r.head&&(r.head.xflags=255&f,r.head.os=f>>8),512&r.flags&&(O[0]=255&f,O[1]=f>>>8&255,r.check=Pr(r.check,O,2,0)),f=0,u=0,r.mode=5;case 5:if(1024&r.flags){for(;u<16;){if(0===a)break t;a--,f+=n[s++]<<u,u+=8}r.length=f,r.head&&(r.head.extra_len=f),512&r.flags&&(O[0]=255&f,O[1]=f>>>8&255,r.check=Pr(r.check,O,2,0)),f=0,u=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&(_=r.length,_>a&&(_=a),_&&(r.head&&(d=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Uint8Array(r.head.extra_len)),r.head.extra.set(n.subarray(s,s+_),d)),512&r.flags&&(r.check=Pr(r.check,n,_,s)),a-=_,s+=_,r.length-=_),r.length))break t;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===a)break t;_=0;do{d=n[s+_++],r.head&&d&&r.length<65536&&(r.head.name+=String.fromCharCode(d))}while(d&&_<a);if(512&r.flags&&(r.check=Pr(r.check,n,_,s)),a-=_,s+=_,d)break t}else r.head&&(r.head.name=null);r.length=0,r.mode=8;case 8:if(4096&r.flags){if(0===a)break t;_=0;do{d=n[s+_++],r.head&&d&&r.length<65536&&(r.head.comment+=String.fromCharCode(d))}while(d&&_<a);if(512&r.flags&&(r.check=Pr(r.check,n,_,s)),a-=_,s+=_,d)break t}else r.head&&(r.head.comment=null);r.mode=9;case 9:if(512&r.flags){for(;u<16;){if(0===a)break t;a--,f+=n[s++]<<u,u+=8}if(f!==(65535&r.check)){t.msg="header crc mismatch",r.mode=Ui;break}f=0,u=0}r.head&&(r.head.hcrc=r.flags>>9&1,r.head.done=!0),t.adler=r.check=0,r.mode=Ni;break;case 10:for(;u<32;){if(0===a)break t;a--,f+=n[s++]<<u,u+=8}t.adler=r.check=di(f),f=0,u=0,r.mode=11;case 11:if(0===r.havedict)return t.next_out=o,t.avail_out=c,t.next_in=s,t.avail_in=a,r.hold=f,r.bits=u,Ai;t.adler=r.check=1,r.mode=Ni;case Ni:if(e===ui||e===li)break t;case 13:if(r.last){f>>>=7&u,u-=7&u,r.mode=27;break}for(;u<3;){if(0===a)break t;a--,f+=n[s++]<<u,u+=8}switch(r.last=1&f,f>>>=1,u-=1,3&f){case 0:r.mode=14;break;case 1:if(wi(r),r.mode=20,e===li){f>>>=2,u-=2;break t}break;case 2:r.mode=17;break;case 3:t.msg="invalid block type",r.mode=Ui}f>>>=2,u-=2;break;case 14:for(f>>>=7&u,u-=7&u;u<32;){if(0===a)break t;a--,f+=n[s++]<<u,u+=8}if((65535&f)!=(f>>>16^65535)){t.msg="invalid stored block lengths",r.mode=Ui;break}if(r.length=65535&f,f=0,u=0,r.mode=15,e===li)break t;case 15:r.mode=16;case 16:if(_=r.length,_){if(_>a&&(_=a),_>c&&(_=c),0===_)break t;i.set(n.subarray(s,s+_),o),a-=_,s+=_,c-=_,o+=_,r.length-=_;break}r.mode=Ni;break;case 17:for(;u<14;){if(0===a)break t;a--,f+=n[s++]<<u,u+=8}if(r.nlen=257+(31&f),f>>>=5,u-=5,r.ndist=1+(31&f),f>>>=5,u-=5,r.ncode=4+(15&f),f>>>=4,u-=4,r.nlen>286||r.ndist>30){t.msg="too many length or distance symbols",r.mode=Ui;break}r.have=0,r.mode=18;case 18:for(;r.have<r.ncode;){for(;u<3;){if(0===a)break t;a--,f+=n[s++]<<u,u+=8}r.lens[C[r.have++]]=7&f,f>>>=3,u-=3}for(;r.have<19;)r.lens[C[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,M={bits:r.lenbits},S=ci(0,r.lens,0,19,r.lencode,0,r.work,M),r.lenbits=M.bits,S){t.msg="invalid code lengths set",r.mode=Ui;break}r.have=0,r.mode=19;case 19:for(;r.have<r.nlen+r.ndist;){for(;m=r.lencode[f&(1<<r.lenbits)-1],T=m>>>24,R=m>>>16&255,y=65535&m,!(T<=u);){if(0===a)break t;a--,f+=n[s++]<<u,u+=8}if(y<16)f>>>=T,u-=T,r.lens[r.have++]=y;else{if(16===y){for(F=T+2;u<F;){if(0===a)break t;a--,f+=n[s++]<<u,u+=8}if(f>>>=T,u-=T,0===r.have){t.msg="invalid bit length repeat",r.mode=Ui;break}d=r.lens[r.have-1],_=3+(3&f),f>>>=2,u-=2}else if(17===y){for(F=T+3;u<F;){if(0===a)break t;a--,f+=n[s++]<<u,u+=8}f>>>=T,u-=T,d=0,_=3+(7&f),f>>>=3,u-=3}else{for(F=T+7;u<F;){if(0===a)break t;a--,f+=n[s++]<<u,u+=8}f>>>=T,u-=T,d=0,_=11+(127&f),f>>>=7,u-=7}if(r.have+_>r.nlen+r.ndist){t.msg="invalid bit length repeat",r.mode=Ui;break}for(;_--;)r.lens[r.have++]=d}}if(r.mode===Ui)break;if(0===r.lens[256]){t.msg="invalid code -- missing end-of-block",r.mode=Ui;break}if(r.lenbits=9,M={bits:r.lenbits},S=ci(1,r.lens,0,r.nlen,r.lencode,0,r.work,M),r.lenbits=M.bits,S){t.msg="invalid literal/lengths set",r.mode=Ui;break}if(r.distbits=6,r.distcode=r.distdyn,M={bits:r.distbits},S=ci(2,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,M),r.distbits=M.bits,S){t.msg="invalid distances set",r.mode=Ui;break}if(r.mode=20,e===li)break t;case 20:r.mode=21;case 21:if(a>=6&&c>=258){t.next_out=o,t.avail_out=c,t.next_in=s,t.avail_in=a,r.hold=f,r.bits=u,ri(t,E),o=t.next_out,i=t.output,c=t.avail_out,s=t.next_in,n=t.input,a=t.avail_in,f=r.hold,u=r.bits,r.mode===Ni&&(r.back=-1);break}for(r.back=0;m=r.lencode[f&(1<<r.lenbits)-1],T=m>>>24,R=m>>>16&255,y=65535&m,!(T<=u);){if(0===a)break t;a--,f+=n[s++]<<u,u+=8}if(R&&0==(240&R)){for(I=T,N=R,U=y;m=r.lencode[U+((f&(1<<I+N)-1)>>I)],T=m>>>24,R=m>>>16&255,y=65535&m,!(I+T<=u);){if(0===a)break t;a--,f+=n[s++]<<u,u+=8}f>>>=I,u-=I,r.back+=I}if(f>>>=T,u-=T,r.back+=T,r.length=y,0===R){r.mode=26;break}if(32&R){r.back=-1,r.mode=Ni;break}if(64&R){t.msg="invalid literal/length code",r.mode=Ui;break}r.extra=15&R,r.mode=22;case 22:if(r.extra){for(F=r.extra;u<F;){if(0===a)break t;a--,f+=n[s++]<<u,u+=8}r.length+=f&(1<<r.extra)-1,f>>>=r.extra,u-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;m=r.distcode[f&(1<<r.distbits)-1],T=m>>>24,R=m>>>16&255,y=65535&m,!(T<=u);){if(0===a)break t;a--,f+=n[s++]<<u,u+=8}if(0==(240&R)){for(I=T,N=R,U=y;m=r.distcode[U+((f&(1<<I+N)-1)>>I)],T=m>>>24,R=m>>>16&255,y=65535&m,!(I+T<=u);){if(0===a)break t;a--,f+=n[s++]<<u,u+=8}f>>>=I,u-=I,r.back+=I}if(f>>>=T,u-=T,r.back+=T,64&R){t.msg="invalid distance code",r.mode=Ui;break}r.offset=y,r.extra=15&R,r.mode=24;case 24:if(r.extra){for(F=r.extra;u<F;){if(0===a)break t;a--,f+=n[s++]<<u,u+=8}r.offset+=f&(1<<r.extra)-1,f>>>=r.extra,u-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){t.msg="invalid distance too far back",r.mode=Ui;break}r.mode=25;case 25:if(0===c)break t;if(_=E-c,r.offset>_){if(_=r.offset-_,_>r.whave&&r.sane){t.msg="invalid distance too far back",r.mode=Ui;break}_>r.wnext?(_-=r.wnext,A=r.wsize-_):A=r.wnext-_,_>r.length&&(_=r.length),h=r.window}else h=i,A=o-r.offset,_=r.length;_>c&&(_=c),c-=_,r.length-=_;do{i[o++]=h[A++]}while(--_);0===r.length&&(r.mode=21);break;case 26:if(0===c)break t;i[o++]=r.length,c--,r.mode=21;break;case 27:if(r.wrap){for(;u<32;){if(0===a)break t;a--,f|=n[s++]<<u,u+=8}if(E-=c,t.total_out+=E,r.total+=E,E&&(t.adler=r.check=r.flags?Pr(r.check,i,E,o-E):Br(r.check,i,E,o-E)),E=c,(r.flags?f:di(f))!==r.check){t.msg="incorrect data check",r.mode=Ui;break}f=0,u=0}r.mode=28;case 28:if(r.wrap&&r.flags){for(;u<32;){if(0===a)break t;a--,f+=n[s++]<<u,u+=8}if(f!==(4294967295&r.total)){t.msg="incorrect length check",r.mode=Ui;break}f=0,u=0}r.mode=29;case 29:S=_i;break t;case Ui:S=Ti;break t;case 31:return Ri;default:return hi}return t.next_out=o,t.avail_out=c,t.next_in=s,t.avail_in=a,r.hold=f,r.bits=u,(r.wsize||E!==t.avail_out&&r.mode<Ui&&(r.mode<27||e!==fi))&&Di(t,t.output,t.next_out,E-t.avail_out),l-=t.avail_in,E-=t.avail_out,t.total_in+=l,t.total_out+=E,r.total+=E,r.wrap&&E&&(t.adler=r.check=r.flags?Pr(r.check,i,E,t.next_out-E):Br(r.check,i,E,t.next_out-E)),t.data_type=r.bits+(r.last?64:0)+(r.mode===Ni?128:0)+(20===r.mode||15===r.mode?256:0),(0===l&&0===E||e===fi)&&S===Ei&&(S=yi),S},Li={inflateReset:Oi,inflateReset2:Mi,inflateResetKeep:mi,inflateInit:t=>Fi(t,15),inflateInit2:Fi,inflate:Bi,inflateEnd:t=>{if(!t||!t.state)return hi;let e=t.state;return e.window&&(e.window=null),t.state=null,Ei},inflateGetHeader:(t,e)=>{if(!t||!t.state)return hi;const r=t.state;return 0==(2&r.wrap)?hi:(r.head=e,e.done=!1,Ei)},inflateSetDictionary:(t,e)=>{const r=e.length;let n,i,s;return t&&t.state?(n=t.state,0!==n.wrap&&11!==n.mode?hi:11===n.mode&&(i=1,i=Br(i,e,r,0),i!==n.check)?Ti:(s=Di(t,e,r,r),s?(n.mode=31,Ri):(n.havedict=1,Ei))):hi},inflateInfo:"pako inflate (from Nodeca project)"};var Pi=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1};const gi=Object.prototype.toString,{Z_NO_FLUSH:Gi,Z_FINISH:vi,Z_OK:Xi,Z_STREAM_END:Hi,Z_NEED_DICT:xi,Z_STREAM_ERROR:Vi,Z_DATA_ERROR:ki,Z_MEM_ERROR:Zi}=Gr;function Yi(t){this.options=Pn({chunkSize:65536,windowBits:15,to:""},t||{});const e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,0===e.windowBits&&(e.windowBits=-15)),!(e.windowBits>=0&&e.windowBits<16)||t&&t.windowBits||(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&0==(15&e.windowBits)&&(e.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Vn,this.strm.avail_out=0;let r=Li.inflateInit2(this.strm,e.windowBits);if(r!==Xi)throw new Error(gr[r]);if(this.header=new Pi,Li.inflateGetHeader(this.strm,this.header),e.dictionary&&("string"==typeof e.dictionary?e.dictionary=Xn(e.dictionary):"[object ArrayBuffer]"===gi.call(e.dictionary)&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(r=Li.inflateSetDictionary(this.strm,e.dictionary),r!==Xi)))throw new Error(gr[r])}function Ki(t,e){const r=new Yi(e);if(r.push(t),r.err)throw r.msg||gr[r.err];return r.result}Yi.prototype.push=function(t,e){const r=this.strm,n=this.options.chunkSize,i=this.options.dictionary;let s,o,a;if(this.ended)return!1;for(o=e===~~e?e:!0===e?vi:Gi,"[object ArrayBuffer]"===gi.call(t)?r.input=new Uint8Array(t):r.input=t,r.next_in=0,r.avail_in=r.input.length;;){for(0===r.avail_out&&(r.output=new Uint8Array(n),r.next_out=0,r.avail_out=n),s=Li.inflate(r,o),s===xi&&i&&(s=Li.inflateSetDictionary(r,i),s===Xi?s=Li.inflate(r,o):s===ki&&(s=xi));r.avail_in>0&&s===Hi&&r.state.wrap>0&&0!==t[r.next_in];)Li.inflateReset(r),s=Li.inflate(r,o);switch(s){case Vi:case ki:case xi:case Zi:return this.onEnd(s),this.ended=!0,!1}if(a=r.avail_out,r.next_out&&(0===r.avail_out||s===Hi))if("string"===this.options.to){let t=xn(r.output,r.next_out),e=r.next_out-t,i=Hn(r.output,t);r.next_out=e,r.avail_out=n-e,e&&r.output.set(r.output.subarray(t,t+e),0),this.onData(i)}else this.onData(r.output.length===r.next_out?r.output:r.output.subarray(0,r.next_out));if(s!==Xi||0!==a){if(s===Hi)return s=Li.inflateEnd(this.strm),this.onEnd(s),this.ended=!0,!0;if(0===r.avail_in)break}}return!0},Yi.prototype.onData=function(t){this.chunks.push(t)},Yi.prototype.onEnd=function(t){t===Xi&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=gn(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};var zi={Inflate:Yi,inflate:Ki,inflateRaw:function(t,e){return(e=e||{}).raw=!0,Ki(t,e)},ungzip:Ki,constants:Gr};const{Deflate:Wi,deflate:ji,deflateRaw:qi,gzip:$i}=ei,{Inflate:Ji,inflate:Qi,inflateRaw:ts,ungzip:es}=zi;var rs={Deflate:Wi,deflate:ji,deflateRaw:qi,gzip:$i,Inflate:Ji,inflate:Qi,inflateRaw:ts,ungzip:es,constants:Gr},ns=5,is=11,ss=13,os=14;function as(t,e,r,n){var i=t|e<<8,s=i>>11&31,o=i>>5&63,a=31&i;return r[n+0]=s<<3|s>>2,r[n+1]=o<<2|o>>4,r[n+2]=a<<3|a>>2,r[n+3]=255,i}var cs=new Uint8Array(16),fs=new Uint8Array(16);function us(t,e,r,n){var i=0;0!=(6&n)&&(i=8),function(t,e,r,n){for(var i=as(e[r+0],e[r+1],cs,0),s=as(e[r+2],e[r+3],cs,4),o=0;o<3;o++){var a=cs[o],c=cs[4+o];n&&i<=s?(cs[8+o]=(a+c)/2,cs[12+o]=0):(cs[8+o]=(2*a+c)/3,cs[12+o]=(a+2*c)/3)}for(cs[11]=255,cs[15]=n&&i<=s?0:255,o=0;o<4;++o){var f=e[r+4+o];fs[4*o+0]=3&f,fs[4*o+1]=f>>2&3,fs[4*o+2]=f>>4&3,fs[4*o+3]=f>>6&3}for(o=0;o<16;++o)for(var u=4*fs[o],l=0;l<4;++l)t[4*o+l]=cs[u+l]}(t,e,r+i,0!=(1&n)),0!=(2&n)?function(t,e,r){for(var n=0;n<8;++n){var i=bytes[r+n],s=15&i,o=240&i;t[8*n+3]=s|s<<4,t[8*n+7]=o|o>>4}}(t,0,r):0!=(4&n)&&function(t,e,r){var n=e[r+0],i=e[r+1];if(cs[0]=n,cs[1]=i,n<=i){for(var s=1;s<5;++s)cs[1+s]=((5-s)*n+s*i)/5;cs[6]=0,cs[7]=255}else for(s=1;s<7;++s)cs[1+s]=((7-s)*n+s*i)/7;r+=2;var o=0;for(s=0;s<2;++s){for(var a=0,c=0;c<3;++c)a|=e[r++]<<8*c;for(c=0;c<8;++c){var f=a>>3*c&7;fs[o++]=f}}for(s=0;s<16;++s)t[4*s+3]=cs[fs[s]]}(t,e,r)}var ls=new Uint16Array(4);\n/*! @brief Decompresses an image in memory.\n\n @param rgba\t\tStorage for the decompressed pixels.\n @param width\tThe width of the source image.\n @param height\tThe height of the source image.\n @param blocks\tThe compressed DXT blocks.\n @param flags\tCompression flags.\n\n The decompressed pixels will be written as a contiguous array of width*height\n 16 rgba values, with each component as 1 byte each. In memory this is:\n\n { r1, g1, b1, a1, .... , rn, gn, bn, an } for n = width*height\n\n The flags parameter should specify either kDxt1, kDxt3 or kDxt5 compression,\n however, DXT1 will be used by default if none is specified. All other flags\n are ignored.\n\n Internally this function calls squish::Decompress for each block.\n */\nvar Es=new Uint8Array(64);function _s(t){}function As(){}_s.decode=function(t,e,r,n,i){if(null!=t&&null!=n&&0!=r&&0!=e){var s=0;1&(s=i>11||5===i?4:33)&&32&s?function(t,e,r,n){for(var i=t,s=0,o=0,a=0,c=0,f=0,u=0,l=0,E=0,_=0,A=e/4,h=r/4,T=0;T<h;T++)for(var R=0;R<A;R++)a=4*((h-T)*A+R),ls[0]=n[a],ls[1]=n[a+1],c=31&ls[0],f=2016&ls[0],u=63488&ls[0],l=31&ls[1],E=2016&ls[1],_=63488&ls[1],ls[2]=5*c+3*l>>3|5*f+3*E>>3&2016|5*u+3*_>>3&63488,ls[3]=5*l+3*c>>3|5*E+3*f>>3&2016|5*_+3*u>>3&63488,s=n[a+2],i[o=4*T*e+4*R]=ls[3&s],i[o+1]=ls[s>>2&3],i[o+2]=ls[s>>4&3],i[o+3]=ls[s>>6&3],i[o+=e]=ls[s>>8&3],i[o+1]=ls[s>>10&3],i[o+2]=ls[s>>12&3],i[o+3]=ls[s>>14],s=n[a+3],i[o+=e]=ls[3&s],i[o+1]=ls[s>>2&3],i[o+2]=ls[s>>4&3],i[o+3]=ls[s>>6&3],i[o+=e]=ls[s>>8&3],i[o+1]=ls[s>>10&3],i[o+2]=ls[s>>12&3],i[o+3]=ls[s>>14]}(t,e,r,n):function(t,e,r,n,i,s){for(var o=0!=(1&i)?8:16,a=0,c=0;c<r;c+=4)for(var f=0;f<e;f+=4){us(Es,n,a,i);for(var u=0,l=0;l<4;++l)for(var E=0;E<4;++E){var _=f+E,A=c+l;if(_<e&&A<r){var h=4*(e*(r-A)+_);if(s===ss||s===os)t[h+2]=Es[u++],t[h+1]=Es[u++],t[h+0]=Es[u++],t[h+3]=Es[u++];else for(var T=0;T<4;++T)t[h++]=Es[u++]}else u+=4}a+=o}}(t,e,r,n,s,i)}},As.s3tc=!0,As.pvrtc=!1,As.etc1=!1;let hs=1,Ts=2;const Rs=10,ys=11,Is=1,Ns=2,Us=16,ds=32;function Ss(t,e,r){r=t.byteLength;return t=t.subarray(0,0+r),new TextDecoder("utf-8").decode(t)}function ms(t,e,r){let n=e.getUint32(r,!0);return r+=Uint32Array.BYTES_PER_ELEMENT,{string:Ss(new Uint8Array(t,r,n)),bytesOffset:r+=n}}function Os(t,e,r,n){let i={},s=[],o=new Array(16);for(let t=0;t<16;t++)o[t]=e.getFloat64(r,!0),r+=Float64Array.BYTES_PER_ELEMENT;i.matrix=o,i.skeletonNames=s;let a=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;for(let n=0;n<a;n++){let n=ms(t,e,r);s.push(n.string),r=n.bytesOffset}return n.push(i),r}function Ms(t,e,r,n){let i={};i.rangeList=e.getFloat32(r,!0),r+=Float32Array.BYTES_PER_ELEMENT,i.rangeMode=e.getUint16(r,!0),r+=Uint16Array.BYTES_PER_ELEMENT;let s={};s.x=e.getFloat64(r,!0),r+=Float64Array.BYTES_PER_ELEMENT,s.y=e.getFloat64(r,!0),r+=Float64Array.BYTES_PER_ELEMENT,s.z=e.getFloat64(r,!0),r+=Float64Array.BYTES_PER_ELEMENT;let o=e.getFloat64(r,!0);r+=Float64Array.BYTES_PER_ELEMENT,i.boundingSphere={center:s,radius:o};let a=ms(t,e,r),c=a.string;r=a.bytesOffset;let f=c.indexOf("Geometry");if(-1!==f){let t=c.substring(f);c=c.replace(t,"")}i.childTile=c,i.geodes=[];let u=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;for(let n=0;n<u;n++)r=Os(t,e,r,i.geodes);return n.push(i),r}function Fs(t,e,r,n){let i=e.getUint32(r,!0);if(n.verticesCount=i,(r+=Uint32Array.BYTES_PER_ELEMENT)<=0)return r;let s=e.getUint16(r,!0);r+=Uint16Array.BYTES_PER_ELEMENT;let o=e.getUint16(r,!0);o=s*Float32Array.BYTES_PER_ELEMENT,r+=Uint16Array.BYTES_PER_ELEMENT;let a=i*s*Float32Array.BYTES_PER_ELEMENT,c=new Uint8Array(t,r,a);r+=a;let f=n.vertexAttributes,u=n.attrLocation;return u.aPosition=f.length,f.push({index:u.aPosition,typedArray:c,componentsPerAttribute:s,componentDatatype:5126,offsetInBytes:0,strideInBytes:o,normalize:!1}),r}function Cs(t,e,r,n){let i=e.getUint32(r,!0);if(r+=Uint32Array.BYTES_PER_ELEMENT,i<=0)return r;let s=e.getUint16(r,!0);r+=Uint16Array.BYTES_PER_ELEMENT;let o=e.getUint16(r,!0);r+=Uint16Array.BYTES_PER_ELEMENT;let a=i*s*Float32Array.BYTES_PER_ELEMENT,c=new Uint8Array(t,r,a);r+=a;let f=n.vertexAttributes,u=n.attrLocation;return u.aNormal=f.length,f.push({index:u.aNormal,typedArray:c,componentsPerAttribute:s,componentDatatype:5126,offsetInBytes:0,strideInBytes:o,normalize:!1}),r}function bs(t,e,r,n){let i=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;let s,o=n.verticesCount;if(i>0){e.getUint16(r,!0),r+=Uint16Array.BYTES_PER_ELEMENT,r+=2*Uint8Array.BYTES_PER_ELEMENT;let n=i*Uint8Array.BYTES_PER_ELEMENT*4;s=new Uint8Array(t,r,n).slice(0,n),r+=n}else{s=new Uint8Array(4*o);for(let t=0;t<o;t++)s[4*t]=255,s[4*t+1]=255,s[4*t+2]=255,s[4*t+3]=255}let a=n.vertexAttributes,c=n.attrLocation;return c.aColor=a.length,a.push({index:c.aColor,typedArray:s,componentsPerAttribute:4,componentDatatype:5121,offsetInBytes:0,strideInBytes:4,normalize:!0}),n.vertexColor=s,r}function ps(t,e,r,n){let i=e.getUint32(r,!0);if(r+=Uint32Array.BYTES_PER_ELEMENT,i<=0)return r;e.getUint16(r,!0),r+=Uint16Array.BYTES_PER_ELEMENT,r+=2*Uint8Array.BYTES_PER_ELEMENT;let s=i*Uint8Array.BYTES_PER_ELEMENT*4,o=new Uint8Array(t,r,s);r+=s;let a=n.vertexAttributes,c=n.attrLocation;return c.aSecondColor=a.length,a.push({index:c.aSecondColor,typedArray:o,componentsPerAttribute:4,componentDatatype:5121,offsetInBytes:0,strideInBytes:4,normalize:!0}),r}function ws(t,e,r,n){let i=e.getUint16(r,!0);r+=Uint16Array.BYTES_PER_ELEMENT,r+=Uint16Array.BYTES_PER_ELEMENT;for(let s=0;s<i;s++){let i=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;let o=e.getUint16(r,!0);r+=Uint16Array.BYTES_PER_ELEMENT,e.getUint16(r,!0),r+=Uint16Array.BYTES_PER_ELEMENT;let a=i*o*Float32Array.BYTES_PER_ELEMENT,c=new Uint8Array(t,r,a);r+=a;let f="aTexCoord"+s,u=n.vertexAttributes,l=n.attrLocation;l[f]=u.length,u.push({index:l[f],typedArray:c,componentsPerAttribute:o,componentDatatype:5126,offsetInBytes:0,strideInBytes:o*Float32Array.BYTES_PER_ELEMENT,normalize:!1})}return r}function Ds(t,e,r,n){let i=e.getUint16(r,!0);r+=Uint16Array.BYTES_PER_ELEMENT,r+=Uint16Array.BYTES_PER_ELEMENT;let s=n.vertexAttributes,o=n.attrLocation;for(let a=0;a<i;a++){let i=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;let a=e.getUint16(r,!0);r+=Uint16Array.BYTES_PER_ELEMENT,e.getUint16(r,!0),r+=Uint16Array.BYTES_PER_ELEMENT;let c=i*a*Float32Array.BYTES_PER_ELEMENT;if(17===a){let e=new Uint8Array(t,r,c);n.instanceCount=i,n.instanceMode=a,n.instanceBuffer=e,n.instanceIndex=1;let f,u=a*i*4,l=e.slice(0,u);n.vertexColorInstance=l,17===a?(f=17*Float32Array.BYTES_PER_ELEMENT,o.uv2=s.length,s.push({index:o.uv2,componentsPerAttribute:4,componentDatatype:5126,normalize:!1,offsetInBytes:0,strideInBytes:f,instanceDivisor:1}),o.uv3=s.length,s.push({index:o.uv3,componentsPerAttribute:4,componentDatatype:5126,normalize:!1,offsetInBytes:4*Float32Array.BYTES_PER_ELEMENT,strideInBytes:f,instanceDivisor:1}),o.uv4=s.length,s.push({index:o.uv4,componentsPerAttribute:4,componentDatatype:5126,normalize:!1,offsetInBytes:8*Float32Array.BYTES_PER_ELEMENT,strideInBytes:f,instanceDivisor:1}),o.secondary_colour=s.length,s.push({index:o.secondary_colour,componentsPerAttribute:4,componentDatatype:5126,normalize:!1,offsetInBytes:12*Float32Array.BYTES_PER_ELEMENT,strideInBytes:f,instanceDivisor:1}),o.uv6=s.length,s.push({index:o.uv6,componentsPerAttribute:4,componentDatatype:5121,normalize:!0,offsetInBytes:16*Float32Array.BYTES_PER_ELEMENT,strideInBytes:f,instanceDivisor:1})):29===a&&(f=29*Float32Array.BYTES_PER_ELEMENT,o.uv1=s.length,s.push({index:o.uv1,componentsPerAttribute:4,componentDatatype:5126,normalize:!1,offsetInBytes:0,strideInBytes:f,instanceDivisor:1,byteLength:c}),o.uv2=s.length,s.push({index:o.uv2,componentsPerAttribute:4,componentDatatype:5126,normalize:!1,offsetInBytes:4*Float32Array.BYTES_PER_ELEMENT,strideInBytes:f,instanceDivisor:1}),o.uv3=s.length,s.push({index:o.uv3,componentsPerAttribute:4,componentDatatype:5126,normalize:!1,offsetInBytes:8*Float32Array.BYTES_PER_ELEMENT,strideInBytes:f,instanceDivisor:1}),o.uv4=s.length,s.push({index:o.uv4,componentsPerAttribute:4,componentDatatype:5126,normalize:!1,offsetInBytes:12*Float32Array.BYTES_PER_ELEMENT,strideInBytes:f,instanceDivisor:1}),o.uv5=s.length,s.push({index:o.uv5,componentsPerAttribute:4,componentDatatype:5126,normalize:!1,offsetInBytes:16*Float32Array.BYTES_PER_ELEMENT,strideInBytes:f,instanceDivisor:1}),o.uv6=s.length,s.push({index:o.uv6,componentsPerAttribute:4,componentDatatype:5126,normalize:!1,offsetInBytes:20*Float32Array.BYTES_PER_ELEMENT,strideInBytes:f,instanceDivisor:1}),o.uv7=s.length,s.push({index:o.uv7,componentsPerAttribute:3,componentDatatype:5126,normalize:!1,offsetInBytes:24*Float32Array.BYTES_PER_ELEMENT,strideInBytes:f,instanceDivisor:1}),o.secondary_colour=s.length,s.push({index:o.secondary_colour,componentsPerAttribute:4,componentDatatype:5121,normalize:!0,offsetInBytes:27*Float32Array.BYTES_PER_ELEMENT,strideInBytes:f,instanceDivisor:1}),o.uv9=s.length,s.push({index:o.uv9,componentsPerAttribute:4,componentDatatype:5121,normalize:!0,offsetInBytes:28*Float32Array.BYTES_PER_ELEMENT,strideInBytes:f,instanceDivisor:1}))}else{let t=i*a;n.instanceBounds=new Float32Array(t);for(let i=0;i<t;i++)n.instanceBounds[i]=e.getFloat32(r+i*Float32Array.BYTES_PER_ELEMENT,!0)}r+=c}return r}function Bs(t,e,r,n){return r=Ds(t,e,r=ws(t,e,r=ps(t,e,r=bs(t,e,r=Cs(t,e,r=Fs(t,e,r,n),n),n),n),n),n)}function Ls(t,e,r,n){let i=e.getUint32(r,!0);return n.compressOptions=i,r+=Uint32Array.BYTES_PER_ELEMENT,r=(i&Is)===Is?function(t,e,r,n){let i=e.getUint32(r,!0);if(n.verticesCount=i,(r+=Uint32Array.BYTES_PER_ELEMENT)<=0)return r;let s=e.getUint16(r,!0);r+=Uint16Array.BYTES_PER_ELEMENT;let o=e.getUint16(r,!0);o=s*Int16Array.BYTES_PER_ELEMENT,r+=Uint16Array.BYTES_PER_ELEMENT;let a=e.getFloat32(r,!0);r+=Float32Array.BYTES_PER_ELEMENT;let c={};c.x=e.getFloat32(r,!0),r+=Float32Array.BYTES_PER_ELEMENT,c.y=e.getFloat32(r,!0),r+=Float32Array.BYTES_PER_ELEMENT,c.z=e.getFloat32(r,!0),r+=Float32Array.BYTES_PER_ELEMENT,c.w=e.getFloat32(r,!0),r+=Float32Array.BYTES_PER_ELEMENT,n.vertCompressConstant=a,n.minVerticesValue=c;let f=i*s*Int16Array.BYTES_PER_ELEMENT,u=new Uint8Array(t,r,f);r+=f;let l=n.vertexAttributes,E=n.attrLocation;return E.aPosition=l.length,l.push({index:E.aPosition,typedArray:u,componentsPerAttribute:s,componentDatatype:5122,offsetInBytes:0,strideInBytes:o,normalize:!1}),r}(t,e,r,n):Fs(t,e,r,n),r=(i&Ns)===Ns?function(t,e,r,n){let i=e.getUint32(r,!0);if(r+=Uint32Array.BYTES_PER_ELEMENT,i<=0)return r;e.getUint16(r,!0),r+=Uint16Array.BYTES_PER_ELEMENT;let s=e.getUint16(r,!0);r+=Uint16Array.BYTES_PER_ELEMENT;let o=2*i*Int16Array.BYTES_PER_ELEMENT,a=new Uint8Array(t,r,o);r+=o;let c=n.vertexAttributes,f=n.attrLocation;return f.aNormal=c.length,c.push({index:f.aNormal,typedArray:a,componentsPerAttribute:2,componentDatatype:5122,offsetInBytes:0,strideInBytes:s,normalize:!1}),r}(t,e,r,n):Cs(t,e,r,n),r=ps(t,e,r=bs(t,e,r,n),n),r=(i&Us)===Us?function(t,e,r,n){n.texCoordCompressConstant=[],n.minTexCoordValue=[];let i=e.getUint16(r,!0);r+=Uint16Array.BYTES_PER_ELEMENT,r+=Uint16Array.BYTES_PER_ELEMENT;for(let s=0;s<i;s++){let i=e.getUint8(r,!0);r+=Uint8Array.BYTES_PER_ELEMENT,r+=3*Uint8Array.BYTES_PER_ELEMENT;let o=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;let a=e.getUint16(r,!0);r+=Uint16Array.BYTES_PER_ELEMENT,e.getUint16(r,!0),r+=Uint16Array.BYTES_PER_ELEMENT;let c=e.getFloat32(r,!0);r+=Float32Array.BYTES_PER_ELEMENT,n.texCoordCompressConstant.push(c);let f={};f.x=e.getFloat32(r,!0),r+=Float32Array.BYTES_PER_ELEMENT,f.y=e.getFloat32(r,!0),r+=Float32Array.BYTES_PER_ELEMENT,f.z=e.getFloat32(r,!0),r+=Float32Array.BYTES_PER_ELEMENT,f.w=e.getFloat32(r,!0),r+=Float32Array.BYTES_PER_ELEMENT,n.minTexCoordValue.push(f);let u=o*a*Int16Array.BYTES_PER_ELEMENT,l=new Uint8Array(t,r,u),E=(r+=u)%4;0!==E&&(r+=4-E);let _="aTexCoord"+s,A=n.vertexAttributes,h=n.attrLocation;if(h[_]=A.length,A.push({index:h[_],typedArray:l,componentsPerAttribute:a,componentDatatype:5122,offsetInBytes:0,strideInBytes:a*Int16Array.BYTES_PER_ELEMENT,normalize:!1}),i){u=o*Float32Array.BYTES_PER_ELEMENT;let e=new Uint8Array(t,r,u);r+=u,n.texCoordZMatrix=!0,_="aTexCoordZ"+s,h[_]=A.length,A.push({index:h[_],typedArray:e,componentsPerAttribute:1,componentDatatype:5126,offsetInBytes:0,strideInBytes:Float32Array.BYTES_PER_ELEMENT,normalize:!1})}}return r}(t,e,r,n):ws(t,e,r,n),(i&ds)===ds&&(n.textureCoordIsW=!0),r=Ds(t,e,r,n)}function Ps(t,e,r,n){let i=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;for(let s=0;s<i;s++){let i={},s=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;let o=e.getUint8(r,!0);r+=Uint8Array.BYTES_PER_ELEMENT,e.getUint8(r,!0),r+=Uint8Array.BYTES_PER_ELEMENT;let a=e.getUint8(r,!0);if(r+=Uint8Array.BYTES_PER_ELEMENT,r+=Uint8Array.BYTES_PER_ELEMENT,s>0){let e,n=null;1===o||3===o?(e=s*Uint32Array.BYTES_PER_ELEMENT,n=new Uint8Array(t,r,e)):(e=s*Uint16Array.BYTES_PER_ELEMENT,n=new Uint8Array(t,r,e),s%2!=0&&(e+=2)),i.indicesTypedArray=n,r+=e}i.indicesCount=s,i.indexType=o,i.primitiveType=a;let c=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;for(let n=0;n<c;n++){let n=ms(t,e,r),s=n.string;r=n.bytesOffset,i.materialCode=s}if(0!==r%4){r+=4-r%4}n.push(i)}return r}let gs={red:0,green:0,blue:0,alpha:0};function Gs(t,e,r){let n=t.vertexAttributes,i=t.attrLocation,s=n.length;i[1===r?"instanceId":"batchId"]=s,n.push({index:s,typedArray:e,componentsPerAttribute:1,componentDatatype:5126,offsetInBytes:0,strideInBytes:0,instanceDivisor:r})}As.parseBuffer=function(t){let e=0,r={version:void 0,groupNode:void 0,geoPackage:{},matrials:void 0,texturePackage:{}},n=new DataView(t);r.version=n.getFloat32(e,!0),e+=Float32Array.BYTES_PER_ELEMENT,r.version>=2&&(n.getUint32(e,!0),e+=Uint32Array.BYTES_PER_ELEMENT),n.getUint32(e,!0),e+=Uint32Array.BYTES_PER_ELEMENT;let i=function(t,e){let r=new Uint8Array(t,e);return rs.inflate(r).buffer}(t,e);n=new DataView(i),e=0;let s=n.getUint32(e,!0);return e+=Uint32Array.BYTES_PER_ELEMENT,e=function(t,e,r,n){let i={},s=[];e.getUint32(r,!0),r+=Uint32Array.BYTES_PER_ELEMENT;let o=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;for(let n=0;n<o;n++)r=Ms(t,e,r,s);i.pageLods=s;let a=r%4;return 0!==a&&(r+=4-a),n.groupNode=i,r}(i,n,e,r),e=function(t,e,r,n){e.getUint32(r,!0),r+=Uint32Array.BYTES_PER_ELEMENT;let i=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;for(let s=0;s<i;s++){let i=ms(t,e,r),s=i.string,o=(r=i.bytesOffset)%4;0!==o&&(r+=4-o);let a=e.getUint32(r,!0);r+=Int32Array.BYTES_PER_ELEMENT;let c={vertexAttributes:[],attrLocation:{},instanceCount:0,instanceMode:0,instanceIndex:-1};a===hs?r=Bs(t,e,r,c):a===Ts&&(r=Ls(t,e,r,c));let f,u=[];r=Ps(t,e,r,u),2===u.length&&13===u[1].primitiveType&&u[1].indicesCount>=3&&(f=S3MEdgeProcessor.createEdgeDataByIndices(c,u[1])),n[s]={vertexPackage:c,arrIndexPackage:u,edgeGeometry:f}}return r+=e.getUint32(r,!0),r+Uint32Array.BYTES_PER_ELEMENT}(i,n,e,r.geoPackage),e=function(t,e,r,n){e.getUint32(r,!0),r+=Uint32Array.BYTES_PER_ELEMENT;let i=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;for(let s=0;s<i;s++){let i=ms(t,e,r),s=i.string,o=(r=i.bytesOffset)%4;0!==o&&(r+=4-o),e.getUint32(r,!0),r+=Uint32Array.BYTES_PER_ELEMENT;let a=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;let c=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;let f=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;let u=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;let l=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;let E=new Uint8Array(t,r,u);r+=u;let _=l===Rs||l===ys?33776:33779;if(22===f&&(_=36196),!As.s3tc&&(33776===_||33779===_)){let t=new Uint8Array(a*c*4);_s.decode(t,a,c,E,l),E=t,f=0,_=l===Rs||l===Rs?273:4369}n[s]={id:s,width:a,height:c,compressType:f,nFormat:l,internalFormat:_,arrayBufferView:E}}return r}(i,n,e,r.texturePackage),e=function(t,e,r,n){let i=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;let s=Ss(new Uint8Array(t,r,i));return r+=i,n.materials=JSON.parse(s),r}(i,n,e,r),function(t,e,r,n,i,s){if(1==(1&n)){e.getUint32(r,!0),r+=Uint32Array.BYTES_PER_ELEMENT;let n=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;for(let o=0;o<n;o++){let n=ms(t,e,r),o=n.string;r=n.bytesOffset;let a=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;let c={};if(i[o].pickInfo=c,-1==i[o].vertexPackage.instanceIndex){let t=new Float32Array(i[o].vertexPackage.verticesCount);for(let n=0;n<a;n++){let i=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;let s=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;let o=[];for(let i=0;i<s;i++){let i=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;let s=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT,t.fill(n,i,i+s),o.push({vertexColorOffset:i,vertexColorCount:s,batchId:n})}c[i]=o}Gs(i[o].vertexPackage,t,void 0)}else{let t=i[o].vertexPackage.instanceCount,n=i[o].vertexPackage.instanceBuffer,f=i[o].vertexPackage.instanceMode,u=new Float32Array(t),l=[];for(let t=0;t<a;t++){let t=e.getUint32(r,!0);l.push(t),r+=Uint32Array.BYTES_PER_ELEMENT;let n=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;for(let t=0;t<n;t++)e.getUint32(r,!0),r+=Uint32Array.BYTES_PER_ELEMENT,3===s&&(e.getUint32(r,!0),r+=Uint32Array.BYTES_PER_ELEMENT)}let E=17===f?16:28;E*=Float32Array.BYTES_PER_ELEMENT;for(let e=0;e<t;e++){u[e]=e;let t=e*f*Float32Array.BYTES_PER_ELEMENT+E;Cesium.Color.unpack(n,t,gs);let r=2===s?l[e]:gs.red+256*gs.green+65536*gs.blue;void 0===c[r]&&(c[r]={vertexColorCount:1,instanceIds:[],vertexColorOffset:e}),c[r].instanceIds.push(e)}Gs(i[o].vertexPackage,u,1)}}}}(i,n,e,s,r.geoPackage,r.version),r};class vs{constructor(t,e,{width:r,height:n,colorDepth:i,format:s}){if(this.format=s,this.offset=e,this.depth=i,this.stride=\n/*!\n * decode-bmp\n * https://github.com/LinusU/decode-bmp\n * MIT License\n */\nfunction(t){const e=t%4;return e?t+4-e:t}(r*this.depth/8),this.size=this.stride*n,this.data=t.subarray(this.offset,this.offset+this.size),this.size!==this.data.byteLength)throw new Error("Truncated bitmap data")}get(t,e,r){const n=this.format.indexOf(r);if(1===this.depth){return(this.data[e*this.stride+(t/8|0)]&1<<7-t%8*1)>>7-t%8*1}if(2===this.depth){return(this.data[e*this.stride+(t/4|0)]&3<<6-t%4*2)>>>6-t%4*2}if(4===this.depth){return(this.data[e*this.stride+(t/2|0)]&15<<4-t%2*4)>>>4-t%2*4}return this.data[e*this.stride+t*(this.depth/8)+n]}}function Xs(t,e,r,n,{width:i=0,height:s=0,icon:o=!1}={}){const a=new DataView(e,r,n);let c,f,u,l,E;o?(c=a.getUint32(0,!0),f=a.getUint32(4,!0)/1|0,u=a.getUint32(8,!0)/2|0,l=a.getUint16(14,!0),E=a.getUint32(32,!0)):(!function(t){if(19778!==t)throw new Error(`Invalid magic byte 0x${t.toString(16)}`)}(a.getUint16(0,!0)),c=14+a.getUint32(14,!0),f=a.getUint32(18,!0),u=a.getUint32(22,!0),l=a.getUint16(28,!0),E=a.getUint32(46,!0)),0===E&&l<=8&&(E=1<<l);const _=0===f?i:f,A=0===u?s:u,h=new Uint8Array(a.buffer,a.byteOffset+c,a.byteLength-c),T=t.byteLength===_*A*4,R=E?function(t,e,r,{width:n,height:i,colorDepth:s,colorCount:o,icon:a}){if(8!==s&&4!==s&&2!==s&&1!==s)throw new Error(`A color depth of ${s} is not supported`);const c=new vs(r,0,{width:o,height:1,colorDepth:32,format:"BGRA"}),f=new vs(r,c.offset+c.size,{width:n,height:i,colorDepth:s,format:"C"}),u=a?new vs(r,f.offset+f.size,{width:n,height:i,colorDepth:1,format:"A"}):null,l=t;let E=0;for(let t=0;t<i;t++)for(let r=0;r<n;r++){const n=f.get(r,i-t-1,"C");l[E++]=c.get(n,0,"R"),l[E++]=c.get(n,0,"G"),l[E++]=c.get(n,0,"B"),e&&(l[E++]=u&&u.get(r,i-t-1,"A")?0:255)}return l}(t,T,h,{width:_,height:A,colorDepth:l,colorCount:E,icon:o}):function(t,e,r,{width:n,height:i,colorDepth:s,icon:o}){if(32!==s&&24!==s)throw new Error(`A color depth of ${s} is not supported`);const a=new vs(r,0,{width:n,height:i,colorDepth:s,format:"BGRA"}),c=24===s&&o?new vs(r,a.offset+a.size,{width:n,height:i,colorDepth:1,format:"A"}):null,f=t;let u=0;for(let t=0;t<i;t++)for(let r=0;r<n;r++)f[u++]=a.get(r,i-t-1,"R"),f[u++]=a.get(r,i-t-1,"G"),f[u++]=a.get(r,i-t-1,"B"),e&&(f[u++]=32===s?a.get(r,i-t-1,"A"):c&&c.get(r,i-t-1,"A")?0:255);return f}(t,T,h,{width:_,height:A,colorDepth:l,icon:o});return R}var Hs=Object.freeze({DEPTH_BUFFER_BIT:256,STENCIL_BUFFER_BIT:1024,COLOR_BUFFER_BIT:16384,POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,ZERO:0,ONE:1,SRC_COLOR:768,ONE_MINUS_SRC_COLOR:769,SRC_ALPHA:770,ONE_MINUS_SRC_ALPHA:771,DST_ALPHA:772,ONE_MINUS_DST_ALPHA:773,DST_COLOR:774,ONE_MINUS_DST_COLOR:775,SRC_ALPHA_SATURATE:776,FUNC_ADD:32774,BLEND_EQUATION:32777,BLEND_EQUATION_RGB:32777,BLEND_EQUATION_ALPHA:34877,FUNC_SUBTRACT:32778,FUNC_REVERSE_SUBTRACT:32779,BLEND_DST_RGB:32968,BLEND_SRC_RGB:32969,BLEND_DST_ALPHA:32970,BLEND_SRC_ALPHA:32971,CONSTANT_COLOR:32769,ONE_MINUS_CONSTANT_COLOR:32770,CONSTANT_ALPHA:32771,ONE_MINUS_CONSTANT_ALPHA:32772,BLEND_COLOR:32773,ARRAY_BUFFER:34962,ELEMENT_ARRAY_BUFFER:34963,ARRAY_BUFFER_BINDING:34964,ELEMENT_ARRAY_BUFFER_BINDING:34965,STREAM_DRAW:35040,STATIC_DRAW:35044,DYNAMIC_DRAW:35048,BUFFER_SIZE:34660,BUFFER_USAGE:34661,CURRENT_VERTEX_ATTRIB:34342,FRONT:1028,BACK:1029,FRONT_AND_BACK:1032,CULL_FACE:2884,BLEND:3042,DITHER:3024,STENCIL_TEST:2960,DEPTH_TEST:2929,SCISSOR_TEST:3089,POLYGON_OFFSET_FILL:32823,SAMPLE_ALPHA_TO_COVERAGE:32926,SAMPLE_COVERAGE:32928,NO_ERROR:0,INVALID_ENUM:1280,INVALID_VALUE:1281,INVALID_OPERATION:1282,OUT_OF_MEMORY:1285,CW:2304,CCW:2305,LINE_WIDTH:2849,ALIASED_POINT_SIZE_RANGE:33901,ALIASED_LINE_WIDTH_RANGE:33902,CULL_FACE_MODE:2885,FRONT_FACE:2886,DEPTH_RANGE:2928,DEPTH_WRITEMASK:2930,DEPTH_CLEAR_VALUE:2931,DEPTH_FUNC:2932,STENCIL_CLEAR_VALUE:2961,STENCIL_FUNC:2962,STENCIL_FAIL:2964,STENCIL_PASS_DEPTH_FAIL:2965,STENCIL_PASS_DEPTH_PASS:2966,STENCIL_REF:2967,STENCIL_VALUE_MASK:2963,STENCIL_WRITEMASK:2968,STENCIL_BACK_FUNC:34816,STENCIL_BACK_FAIL:34817,STENCIL_BACK_PASS_DEPTH_FAIL:34818,STENCIL_BACK_PASS_DEPTH_PASS:34819,STENCIL_BACK_REF:36003,STENCIL_BACK_VALUE_MASK:36004,STENCIL_BACK_WRITEMASK:36005,VIEWPORT:2978,SCISSOR_BOX:3088,COLOR_CLEAR_VALUE:3106,COLOR_WRITEMASK:3107,UNPACK_ALIGNMENT:3317,PACK_ALIGNMENT:3333,MAX_TEXTURE_SIZE:3379,MAX_VIEWPORT_DIMS:3386,SUBPIXEL_BITS:3408,RED_BITS:3410,GREEN_BITS:3411,BLUE_BITS:3412,ALPHA_BITS:3413,DEPTH_BITS:3414,STENCIL_BITS:3415,POLYGON_OFFSET_UNITS:10752,POLYGON_OFFSET_FACTOR:32824,TEXTURE_BINDING_2D:32873,SAMPLE_BUFFERS:32936,SAMPLES:32937,SAMPLE_COVERAGE_VALUE:32938,SAMPLE_COVERAGE_INVERT:32939,COMPRESSED_TEXTURE_FORMATS:34467,DONT_CARE:4352,FASTEST:4353,NICEST:4354,GENERATE_MIPMAP_HINT:33170,BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,INT:5124,UNSIGNED_INT:5125,FLOAT:5126,DEPTH_COMPONENT:6402,ALPHA:6406,RGB:6407,RGBA:6408,LUMINANCE:6409,LUMINANCE_ALPHA:6410,UNSIGNED_SHORT_4_4_4_4:32819,UNSIGNED_SHORT_5_5_5_1:32820,UNSIGNED_SHORT_5_6_5:33635,FRAGMENT_SHADER:35632,VERTEX_SHADER:35633,MAX_VERTEX_ATTRIBS:34921,MAX_VERTEX_UNIFORM_VECTORS:36347,MAX_VARYING_VECTORS:36348,MAX_COMBINED_TEXTURE_IMAGE_UNITS:35661,MAX_VERTEX_TEXTURE_IMAGE_UNITS:35660,MAX_TEXTURE_IMAGE_UNITS:34930,MAX_FRAGMENT_UNIFORM_VECTORS:36349,SHADER_TYPE:35663,DELETE_STATUS:35712,LINK_STATUS:35714,VALIDATE_STATUS:35715,ATTACHED_SHADERS:35717,ACTIVE_UNIFORMS:35718,ACTIVE_ATTRIBUTES:35721,SHADING_LANGUAGE_VERSION:35724,CURRENT_PROGRAM:35725,NEVER:512,LESS:513,EQUAL:514,LEQUAL:515,GREATER:516,NOTEQUAL:517,GEQUAL:518,ALWAYS:519,KEEP:7680,REPLACE:7681,INCR:7682,DECR:7683,INVERT:5386,INCR_WRAP:34055,DECR_WRAP:34056,VENDOR:7936,RENDERER:7937,VERSION:7938,NEAREST:9728,LINEAR:9729,NEAREST_MIPMAP_NEAREST:9984,LINEAR_MIPMAP_NEAREST:9985,NEAREST_MIPMAP_LINEAR:9986,LINEAR_MIPMAP_LINEAR:9987,TEXTURE_MAG_FILTER:10240,TEXTURE_MIN_FILTER:10241,TEXTURE_WRAP_S:10242,TEXTURE_WRAP_T:10243,TEXTURE_2D:3553,TEXTURE:5890,TEXTURE_CUBE_MAP:34067,TEXTURE_BINDING_CUBE_MAP:34068,TEXTURE_CUBE_MAP_POSITIVE_X:34069,TEXTURE_CUBE_MAP_NEGATIVE_X:34070,TEXTURE_CUBE_MAP_POSITIVE_Y:34071,TEXTURE_CUBE_MAP_NEGATIVE_Y:34072,TEXTURE_CUBE_MAP_POSITIVE_Z:34073,TEXTURE_CUBE_MAP_NEGATIVE_Z:34074,MAX_CUBE_MAP_TEXTURE_SIZE:34076,TEXTURE0:33984,TEXTURE1:33985,TEXTURE2:33986,TEXTURE3:33987,TEXTURE4:33988,TEXTURE5:33989,TEXTURE6:33990,TEXTURE7:33991,TEXTURE8:33992,TEXTURE9:33993,TEXTURE10:33994,TEXTURE11:33995,TEXTURE12:33996,TEXTURE13:33997,TEXTURE14:33998,TEXTURE15:33999,TEXTURE16:34e3,TEXTURE17:34001,TEXTURE18:34002,TEXTURE19:34003,TEXTURE20:34004,TEXTURE21:34005,TEXTURE22:34006,TEXTURE23:34007,TEXTURE24:34008,TEXTURE25:34009,TEXTURE26:34010,TEXTURE27:34011,TEXTURE28:34012,TEXTURE29:34013,TEXTURE30:34014,TEXTURE31:34015,ACTIVE_TEXTURE:34016,REPEAT:10497,CLAMP_TO_EDGE:33071,MIRRORED_REPEAT:33648,FLOAT_VEC2:35664,FLOAT_VEC3:35665,FLOAT_VEC4:35666,INT_VEC2:35667,INT_VEC3:35668,INT_VEC4:35669,BOOL:35670,BOOL_VEC2:35671,BOOL_VEC3:35672,BOOL_VEC4:35673,FLOAT_MAT2:35674,FLOAT_MAT3:35675,FLOAT_MAT4:35676,SAMPLER_2D:35678,SAMPLER_CUBE:35680,VERTEX_ATTRIB_ARRAY_ENABLED:34338,VERTEX_ATTRIB_ARRAY_SIZE:34339,VERTEX_ATTRIB_ARRAY_STRIDE:34340,VERTEX_ATTRIB_ARRAY_TYPE:34341,VERTEX_ATTRIB_ARRAY_NORMALIZED:34922,VERTEX_ATTRIB_ARRAY_POINTER:34373,VERTEX_ATTRIB_ARRAY_BUFFER_BINDING:34975,IMPLEMENTATION_COLOR_READ_TYPE:35738,IMPLEMENTATION_COLOR_READ_FORMAT:35739,COMPILE_STATUS:35713,LOW_FLOAT:36336,MEDIUM_FLOAT:36337,HIGH_FLOAT:36338,LOW_INT:36339,MEDIUM_INT:36340,HIGH_INT:36341,FRAMEBUFFER:36160,RENDERBUFFER:36161,RGBA4:32854,RGB5_A1:32855,RGB565:36194,DEPTH_COMPONENT16:33189,STENCIL_INDEX:6401,STENCIL_INDEX8:36168,DEPTH_STENCIL:34041,RENDERBUFFER_WIDTH:36162,RENDERBUFFER_HEIGHT:36163,RENDERBUFFER_INTERNAL_FORMAT:36164,RENDERBUFFER_RED_SIZE:36176,RENDERBUFFER_GREEN_SIZE:36177,RENDERBUFFER_BLUE_SIZE:36178,RENDERBUFFER_ALPHA_SIZE:36179,RENDERBUFFER_DEPTH_SIZE:36180,RENDERBUFFER_STENCIL_SIZE:36181,FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE:36048,FRAMEBUFFER_ATTACHMENT_OBJECT_NAME:36049,FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL:36050,FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE:36051,COLOR_ATTACHMENT0:36064,DEPTH_ATTACHMENT:36096,STENCIL_ATTACHMENT:36128,DEPTH_STENCIL_ATTACHMENT:33306,NONE:0,FRAMEBUFFER_COMPLETE:36053,FRAMEBUFFER_INCOMPLETE_ATTACHMENT:36054,FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:36055,FRAMEBUFFER_INCOMPLETE_DIMENSIONS:36057,FRAMEBUFFER_UNSUPPORTED:36061,FRAMEBUFFER_BINDING:36006,RENDERBUFFER_BINDING:36007,MAX_RENDERBUFFER_SIZE:34024,INVALID_FRAMEBUFFER_OPERATION:1286,UNPACK_FLIP_Y_WEBGL:37440,UNPACK_PREMULTIPLY_ALPHA_WEBGL:37441,CONTEXT_LOST_WEBGL:37442,UNPACK_COLORSPACE_CONVERSION_WEBGL:37443,BROWSER_DEFAULT_WEBGL:37444,COMPRESSED_RGB_S3TC_DXT1_EXT:33776,COMPRESSED_RGBA_S3TC_DXT1_EXT:33777,COMPRESSED_RGBA_S3TC_DXT3_EXT:33778,COMPRESSED_RGBA_S3TC_DXT5_EXT:33779,COMPRESSED_RGB_PVRTC_4BPPV1_IMG:35840,COMPRESSED_RGB_PVRTC_2BPPV1_IMG:35841,COMPRESSED_RGBA_PVRTC_4BPPV1_IMG:35842,COMPRESSED_RGBA_PVRTC_2BPPV1_IMG:35843,COMPRESSED_RGBA_ASTC_4x4_WEBGL:37808,COMPRESSED_RGB_ETC1_WEBGL:36196,COMPRESSED_RGBA_BPTC_UNORM:36492,HALF_FLOAT_OES:36193,DOUBLE:5130,READ_BUFFER:3074,UNPACK_ROW_LENGTH:3314,UNPACK_SKIP_ROWS:3315,UNPACK_SKIP_PIXELS:3316,PACK_ROW_LENGTH:3330,PACK_SKIP_ROWS:3331,PACK_SKIP_PIXELS:3332,COLOR:6144,DEPTH:6145,STENCIL:6146,RED:6403,RGB8:32849,RGBA8:32856,RGB10_A2:32857,TEXTURE_BINDING_3D:32874,UNPACK_SKIP_IMAGES:32877,UNPACK_IMAGE_HEIGHT:32878,TEXTURE_3D:32879,TEXTURE_WRAP_R:32882,MAX_3D_TEXTURE_SIZE:32883,UNSIGNED_INT_2_10_10_10_REV:33640,MAX_ELEMENTS_VERTICES:33e3,MAX_ELEMENTS_INDICES:33001,TEXTURE_MIN_LOD:33082,TEXTURE_MAX_LOD:33083,TEXTURE_BASE_LEVEL:33084,TEXTURE_MAX_LEVEL:33085,MIN:32775,MAX:32776,DEPTH_COMPONENT24:33190,MAX_TEXTURE_LOD_BIAS:34045,TEXTURE_COMPARE_MODE:34892,TEXTURE_COMPARE_FUNC:34893,CURRENT_QUERY:34917,QUERY_RESULT:34918,QUERY_RESULT_AVAILABLE:34919,STREAM_READ:35041,STREAM_COPY:35042,STATIC_READ:35045,STATIC_COPY:35046,DYNAMIC_READ:35049,DYNAMIC_COPY:35050,MAX_DRAW_BUFFERS:34852,DRAW_BUFFER0:34853,DRAW_BUFFER1:34854,DRAW_BUFFER2:34855,DRAW_BUFFER3:34856,DRAW_BUFFER4:34857,DRAW_BUFFER5:34858,DRAW_BUFFER6:34859,DRAW_BUFFER7:34860,DRAW_BUFFER8:34861,DRAW_BUFFER9:34862,DRAW_BUFFER10:34863,DRAW_BUFFER11:34864,DRAW_BUFFER12:34865,DRAW_BUFFER13:34866,DRAW_BUFFER14:34867,DRAW_BUFFER15:34868,MAX_FRAGMENT_UNIFORM_COMPONENTS:35657,MAX_VERTEX_UNIFORM_COMPONENTS:35658,SAMPLER_3D:35679,SAMPLER_2D_SHADOW:35682,FRAGMENT_SHADER_DERIVATIVE_HINT:35723,PIXEL_PACK_BUFFER:35051,PIXEL_UNPACK_BUFFER:35052,PIXEL_PACK_BUFFER_BINDING:35053,PIXEL_UNPACK_BUFFER_BINDING:35055,FLOAT_MAT2x3:35685,FLOAT_MAT2x4:35686,FLOAT_MAT3x2:35687,FLOAT_MAT3x4:35688,FLOAT_MAT4x2:35689,FLOAT_MAT4x3:35690,SRGB:35904,SRGB8:35905,SRGB8_ALPHA8:35907,COMPARE_REF_TO_TEXTURE:34894,RGBA32F:34836,RGB32F:34837,RGBA16F:34842,RGB16F:34843,VERTEX_ATTRIB_ARRAY_INTEGER:35069,MAX_ARRAY_TEXTURE_LAYERS:35071,MIN_PROGRAM_TEXEL_OFFSET:35076,MAX_PROGRAM_TEXEL_OFFSET:35077,MAX_VARYING_COMPONENTS:35659,TEXTURE_2D_ARRAY:35866,TEXTURE_BINDING_2D_ARRAY:35869,R11F_G11F_B10F:35898,UNSIGNED_INT_10F_11F_11F_REV:35899,RGB9_E5:35901,UNSIGNED_INT_5_9_9_9_REV:35902,TRANSFORM_FEEDBACK_BUFFER_MODE:35967,MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS:35968,TRANSFORM_FEEDBACK_VARYINGS:35971,TRANSFORM_FEEDBACK_BUFFER_START:35972,TRANSFORM_FEEDBACK_BUFFER_SIZE:35973,TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN:35976,RASTERIZER_DISCARD:35977,MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS:35978,MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS:35979,INTERLEAVED_ATTRIBS:35980,SEPARATE_ATTRIBS:35981,TRANSFORM_FEEDBACK_BUFFER:35982,TRANSFORM_FEEDBACK_BUFFER_BINDING:35983,RGBA32UI:36208,RGB32UI:36209,RGBA16UI:36214,RGB16UI:36215,RGBA8UI:36220,RGB8UI:36221,RGBA32I:36226,RGB32I:36227,RGBA16I:36232,RGB16I:36233,RGBA8I:36238,RGB8I:36239,RED_INTEGER:36244,RGB_INTEGER:36248,RGBA_INTEGER:36249,SAMPLER_2D_ARRAY:36289,SAMPLER_2D_ARRAY_SHADOW:36292,SAMPLER_CUBE_SHADOW:36293,UNSIGNED_INT_VEC2:36294,UNSIGNED_INT_VEC3:36295,UNSIGNED_INT_VEC4:36296,INT_SAMPLER_2D:36298,INT_SAMPLER_3D:36299,INT_SAMPLER_CUBE:36300,INT_SAMPLER_2D_ARRAY:36303,UNSIGNED_INT_SAMPLER_2D:36306,UNSIGNED_INT_SAMPLER_3D:36307,UNSIGNED_INT_SAMPLER_CUBE:36308,UNSIGNED_INT_SAMPLER_2D_ARRAY:36311,DEPTH_COMPONENT32F:36012,DEPTH32F_STENCIL8:36013,FLOAT_32_UNSIGNED_INT_24_8_REV:36269,FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING:33296,FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE:33297,FRAMEBUFFER_ATTACHMENT_RED_SIZE:33298,FRAMEBUFFER_ATTACHMENT_GREEN_SIZE:33299,FRAMEBUFFER_ATTACHMENT_BLUE_SIZE:33300,FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE:33301,FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE:33302,FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE:33303,FRAMEBUFFER_DEFAULT:33304,UNSIGNED_INT_24_8:34042,DEPTH24_STENCIL8:35056,UNSIGNED_NORMALIZED:35863,DRAW_FRAMEBUFFER_BINDING:36006,READ_FRAMEBUFFER:36008,DRAW_FRAMEBUFFER:36009,READ_FRAMEBUFFER_BINDING:36010,RENDERBUFFER_SAMPLES:36011,FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER:36052,MAX_COLOR_ATTACHMENTS:36063,COLOR_ATTACHMENT1:36065,COLOR_ATTACHMENT2:36066,COLOR_ATTACHMENT3:36067,COLOR_ATTACHMENT4:36068,COLOR_ATTACHMENT5:36069,COLOR_ATTACHMENT6:36070,COLOR_ATTACHMENT7:36071,COLOR_ATTACHMENT8:36072,COLOR_ATTACHMENT9:36073,COLOR_ATTACHMENT10:36074,COLOR_ATTACHMENT11:36075,COLOR_ATTACHMENT12:36076,COLOR_ATTACHMENT13:36077,COLOR_ATTACHMENT14:36078,COLOR_ATTACHMENT15:36079,FRAMEBUFFER_INCOMPLETE_MULTISAMPLE:36182,MAX_SAMPLES:36183,HALF_FLOAT:5131,RG:33319,RG_INTEGER:33320,R8:33321,RG8:33323,R16F:33325,R32F:33326,RG16F:33327,RG32F:33328,R8I:33329,R8UI:33330,R16I:33331,R16UI:33332,R32I:33333,R32UI:33334,RG8I:33335,RG8UI:33336,RG16I:33337,RG16UI:33338,RG32I:33339,RG32UI:33340,VERTEX_ARRAY_BINDING:34229,R8_SNORM:36756,RG8_SNORM:36757,RGB8_SNORM:36758,RGBA8_SNORM:36759,SIGNED_NORMALIZED:36764,COPY_READ_BUFFER:36662,COPY_WRITE_BUFFER:36663,COPY_READ_BUFFER_BINDING:36662,COPY_WRITE_BUFFER_BINDING:36663,UNIFORM_BUFFER:35345,UNIFORM_BUFFER_BINDING:35368,UNIFORM_BUFFER_START:35369,UNIFORM_BUFFER_SIZE:35370,MAX_VERTEX_UNIFORM_BLOCKS:35371,MAX_FRAGMENT_UNIFORM_BLOCKS:35373,MAX_COMBINED_UNIFORM_BLOCKS:35374,MAX_UNIFORM_BUFFER_BINDINGS:35375,MAX_UNIFORM_BLOCK_SIZE:35376,MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS:35377,MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS:35379,UNIFORM_BUFFER_OFFSET_ALIGNMENT:35380,ACTIVE_UNIFORM_BLOCKS:35382,UNIFORM_TYPE:35383,UNIFORM_SIZE:35384,UNIFORM_BLOCK_INDEX:35386,UNIFORM_OFFSET:35387,UNIFORM_ARRAY_STRIDE:35388,UNIFORM_MATRIX_STRIDE:35389,UNIFORM_IS_ROW_MAJOR:35390,UNIFORM_BLOCK_BINDING:35391,UNIFORM_BLOCK_DATA_SIZE:35392,UNIFORM_BLOCK_ACTIVE_UNIFORMS:35394,UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES:35395,UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER:35396,UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER:35398,INVALID_INDEX:4294967295,MAX_VERTEX_OUTPUT_COMPONENTS:37154,MAX_FRAGMENT_INPUT_COMPONENTS:37157,MAX_SERVER_WAIT_TIMEOUT:37137,OBJECT_TYPE:37138,SYNC_CONDITION:37139,SYNC_STATUS:37140,SYNC_FLAGS:37141,SYNC_FENCE:37142,SYNC_GPU_COMMANDS_COMPLETE:37143,UNSIGNALED:37144,SIGNALED:37145,ALREADY_SIGNALED:37146,TIMEOUT_EXPIRED:37147,CONDITION_SATISFIED:37148,WAIT_FAILED:37149,SYNC_FLUSH_COMMANDS_BIT:1,VERTEX_ATTRIB_ARRAY_DIVISOR:35070,ANY_SAMPLES_PASSED:35887,ANY_SAMPLES_PASSED_CONSERVATIVE:36202,SAMPLER_BINDING:35097,RGB10_A2UI:36975,INT_2_10_10_10_REV:36255,TRANSFORM_FEEDBACK:36386,TRANSFORM_FEEDBACK_PAUSED:36387,TRANSFORM_FEEDBACK_ACTIVE:36388,TRANSFORM_FEEDBACK_BINDING:36389,COMPRESSED_R11_EAC:37488,COMPRESSED_SIGNED_R11_EAC:37489,COMPRESSED_RG11_EAC:37490,COMPRESSED_SIGNED_RG11_EAC:37491,COMPRESSED_RGB8_ETC2:37492,COMPRESSED_SRGB8_ETC2:37493,COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2:37494,COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2:37495,COMPRESSED_RGBA8_ETC2_EAC:37496,COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:37497,TEXTURE_IMMUTABLE_FORMAT:37167,MAX_ELEMENT_INDEX:36203,TEXTURE_IMMUTABLE_LEVELS:33503,MAX_TEXTURE_MAX_ANISOTROPY_EXT:34047}),xs={UNSIGNED_BYTE:Hs.UNSIGNED_BYTE,UNSIGNED_SHORT:Hs.UNSIGNED_SHORT,UNSIGNED_INT:Hs.UNSIGNED_INT,FLOAT:Hs.FLOAT,HALF_FLOAT:Hs.HALF_FLOAT_OES,UNSIGNED_INT_24_8:Hs.UNSIGNED_INT_24_8,UNSIGNED_SHORT_4_4_4_4:Hs.UNSIGNED_SHORT_4_4_4_4,UNSIGNED_SHORT_5_5_5_1:Hs.UNSIGNED_SHORT_5_5_5_1,UNSIGNED_SHORT_5_6_5:Hs.UNSIGNED_SHORT_5_6_5,toWebGLConstant:function(t,e){switch(t){case xs.UNSIGNED_BYTE:return Hs.UNSIGNED_BYTE;case xs.UNSIGNED_SHORT:return Hs.UNSIGNED_SHORT;case xs.UNSIGNED_INT:return Hs.UNSIGNED_INT;case xs.FLOAT:return Hs.FLOAT;case xs.HALF_FLOAT:return e.webgl2?Hs.HALF_FLOAT:Hs.HALF_FLOAT_OES;case xs.UNSIGNED_INT_24_8:return Hs.UNSIGNED_INT_24_8;case xs.UNSIGNED_SHORT_4_4_4_4:return Hs.UNSIGNED_SHORT_4_4_4_4;case xs.UNSIGNED_SHORT_5_5_5_1:return Hs.UNSIGNED_SHORT_5_5_5_1;case xs.UNSIGNED_SHORT_5_6_5:return xs.UNSIGNED_SHORT_5_6_5}},isPacked:function(t){return t===xs.UNSIGNED_INT_24_8||t===xs.UNSIGNED_SHORT_4_4_4_4||t===xs.UNSIGNED_SHORT_5_5_5_1||t===xs.UNSIGNED_SHORT_5_6_5},sizeInBytes:function(t){switch(t){case xs.UNSIGNED_BYTE:return 1;case xs.UNSIGNED_SHORT:case xs.UNSIGNED_SHORT_4_4_4_4:case xs.UNSIGNED_SHORT_5_5_5_1:case xs.UNSIGNED_SHORT_5_6_5:case xs.HALF_FLOAT:return 2;case xs.UNSIGNED_INT:case xs.FLOAT:case xs.UNSIGNED_INT_24_8:return 4}},validate:function(t){return t===xs.UNSIGNED_BYTE||t===xs.UNSIGNED_SHORT||t===xs.UNSIGNED_INT||t===xs.FLOAT||t===xs.HALF_FLOAT||t===xs.UNSIGNED_INT_24_8||t===xs.UNSIGNED_SHORT_4_4_4_4||t===xs.UNSIGNED_SHORT_5_5_5_1||t===xs.UNSIGNED_SHORT_5_6_5}},Vs=Object.freeze(xs),ks={DEPTH_COMPONENT:Hs.DEPTH_COMPONENT,DEPTH_STENCIL:Hs.DEPTH_STENCIL,ALPHA:Hs.ALPHA,RGB:Hs.RGB,RGBA:Hs.RGBA,LUMINANCE:Hs.LUMINANCE,LUMINANCE_ALPHA:Hs.LUMINANCE_ALPHA,RGB_DXT1:Hs.COMPRESSED_RGB_S3TC_DXT1_EXT,RGBA_DXT1:Hs.COMPRESSED_RGBA_S3TC_DXT1_EXT,RGBA_DXT3:Hs.COMPRESSED_RGBA_S3TC_DXT3_EXT,RGBA_DXT5:Hs.COMPRESSED_RGBA_S3TC_DXT5_EXT,RGB_PVRTC_4BPPV1:Hs.COMPRESSED_RGB_PVRTC_4BPPV1_IMG,RGB_PVRTC_2BPPV1:Hs.COMPRESSED_RGB_PVRTC_2BPPV1_IMG,RGBA_PVRTC_4BPPV1:Hs.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG,RGBA_PVRTC_2BPPV1:Hs.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG,RGBA_ASTC:Hs.COMPRESSED_RGBA_ASTC_4x4_WEBGL,RGB_ETC1:Hs.COMPRESSED_RGB_ETC1_WEBGL,RGB8_ETC2:Hs.COMPRESSED_RGB8_ETC2,RGBA8_ETC2_EAC:Hs.COMPRESSED_RGBA8_ETC2_EAC,RGBA_BC7:Hs.COMPRESSED_RGBA_BPTC_UNORM,componentsLength:function(t){switch(t){case ks.RGB:return 3;case ks.RGBA:return 4;case ks.LUMINANCE_ALPHA:return 2;case ks.ALPHA:case ks.LUMINANCE:default:return 1}},validate:function(t){return t===ks.DEPTH_COMPONENT||t===ks.DEPTH_STENCIL||t===ks.ALPHA||t===ks.RGB||t===ks.RGBA||t===ks.LUMINANCE||t===ks.LUMINANCE_ALPHA||t===ks.RGB_DXT1||t===ks.RGBA_DXT1||t===ks.RGBA_DXT3||t===ks.RGBA_DXT5||t===ks.RGB_PVRTC_4BPPV1||t===ks.RGB_PVRTC_2BPPV1||t===ks.RGBA_PVRTC_4BPPV1||t===ks.RGBA_PVRTC_2BPPV1||t===ks.RGBA_ASTC||t===ks.RGB_ETC1||t===ks.RGB8_ETC2||t===ks.RGBA8_ETC2_EAC||t===ks.RGBA_BC7},isColorFormat:function(t){return t===ks.ALPHA||t===ks.RGB||t===ks.RGBA||t===ks.LUMINANCE||t===ks.LUMINANCE_ALPHA},isDepthFormat:function(t){return t===ks.DEPTH_COMPONENT||t===ks.DEPTH_STENCIL},isCompressedFormat:function(t){return t===ks.RGB_DXT1||t===ks.RGBA_DXT1||t===ks.RGBA_DXT3||t===ks.RGBA_DXT5||t===ks.RGB_PVRTC_4BPPV1||t===ks.RGB_PVRTC_2BPPV1||t===ks.RGBA_PVRTC_4BPPV1||t===ks.RGBA_PVRTC_2BPPV1||t===ks.RGBA_ASTC||t===ks.RGB_ETC1||t===ks.RGB8_ETC2||t===ks.RGBA8_ETC2_EAC||t===ks.RGBA_BC7},isDXTFormat:function(t){return t===ks.RGB_DXT1||t===ks.RGBA_DXT1||t===ks.RGBA_DXT3||t===ks.RGBA_DXT5},isPVRTCFormat:function(t){return t===ks.RGB_PVRTC_4BPPV1||t===ks.RGB_PVRTC_2BPPV1||t===ks.RGBA_PVRTC_4BPPV1||t===ks.RGBA_PVRTC_2BPPV1},isASTCFormat:function(t){return t===ks.RGBA_ASTC},isETC1Format:function(t){return t===ks.RGB_ETC1},isETC2Format:function(t){return t===ks.RGB8_ETC2||t===ks.RGBA8_ETC2_EAC},isBC7Format:function(t){return t===ks.RGBA_BC7},compressedTextureSizeInBytes:function(t,e,r){switch(t){case ks.RGB_DXT1:case ks.RGBA_DXT1:case ks.RGB_ETC1:case ks.RGB8_ETC2:return Math.floor((e+3)/4)*Math.floor((r+3)/4)*8;case ks.RGBA_DXT3:case ks.RGBA_DXT5:case ks.RGBA_ASTC:case ks.RGBA8_ETC2_EAC:return Math.floor((e+3)/4)*Math.floor((r+3)/4)*16;case ks.RGB_PVRTC_4BPPV1:case ks.RGBA_PVRTC_4BPPV1:return Math.floor((Math.max(e,8)*Math.max(r,8)*4+7)/8);case ks.RGB_PVRTC_2BPPV1:case ks.RGBA_PVRTC_2BPPV1:return Math.floor((Math.max(e,16)*Math.max(r,8)*2+7)/8);case ks.RGBA_BC7:return Math.ceil(e/4)*Math.ceil(r/4)*16;default:return 0}},textureSizeInBytes:function(t,e,r,n){var i=ks.componentsLength(t);return Vs.isPacked(e)&&(i=1),i*Vs.sizeInBytes(e)*r*n},alignmentInBytes:function(t,e,r){var n=ks.textureSizeInBytes(t,e,r,1)%4;return 0===n?4:2===n?2:1},createTypedArray:function(t,e,r,n){var i=Vs.sizeInBytes(e);return new(i===Uint8Array.BYTES_PER_ELEMENT?Uint8Array:i===Uint16Array.BYTES_PER_ELEMENT?Uint16Array:i===Float32Array.BYTES_PER_ELEMENT&&e===Vs.FLOAT?Float32Array:Uint32Array)(ks.componentsLength(t)*r*n)},flipY:function(t,e,r,n,i){if(1===i)return t;for(var s=ks.createTypedArray(e,r,n,i),o=ks.componentsLength(e),a=n*o,c=0;c<i;++c)for(var f=c*n*o,u=(i-c-1)*n*o,l=0;l<a;++l)s[u+l]=t[f+l];return s},toInternalFormat:function(t,e,r){if(!r.webgl2)return t;if(t===ks.DEPTH_STENCIL)return Hs.DEPTH24_STENCIL8;if(t===ks.DEPTH_COMPONENT){if(e===Vs.UNSIGNED_SHORT)return Hs.DEPTH_COMPONENT16;if(e===Vs.UNSIGNED_INT)return Hs.DEPTH_COMPONENT24}if(e===Vs.FLOAT)switch(t){case ks.RGBA:return Hs.RGBA32F;case ks.RGB:return Hs.RGB32F;case ks.RG:return Hs.RG32F;case ks.R:return Hs.R32F}if(e===Vs.HALF_FLOAT)switch(t){case ks.RGBA:return Hs.RGBA16F;case ks.RGB:return Hs.RGB16F;case ks.RG:return Hs.RG16F;case ks.R:return Hs.R16F}return t}},Zs=Object.freeze(ks);function Ys(t,e,r,n,i,s){const o=function(t,e,r,n){let i=t.length,s=r,o=n,a=0;for(;s>0&&o>0;){if(a+=Zs.compressedTextureSizeInBytes(e,s,o),s>>=1,o>>=1,0===s&&0===o)break;s=Math.max(s,1),o=Math.max(o,1)}return a===i}(t,r,i,s);if(!o)return null;const a=6410===r||4369===r;let c=0,f=i,u=s;const l=[];do{let n=Zs.compressedTextureSizeInBytes(r,f,u),i=new Uint8Array(t.buffer,e+c,n);l.push(i),f=Math.max(f>>1,1),u=Math.max(u>>1,1),c+=n}while(c<t.byteLength&&o);return{flipY:a,mipmap:l}}function Ks(t,e){for(var r,n,i,s=t.bytesOffset,o=As.parseBuffer(t.buffer,s),a=o.geoPackage,c=o.groupNode.pageLods,f=[],u=[],l=[],E=[],_=[],A=[],h=[],T=c[0].geodes[0].matrix,R={},y=0;y<o.materials.material.length;y++)R[o.materials.material[y].material.id]=o.materials.material[y].material;var I=Number.MAX_VALUE,N=Number.MAX_VALUE,U=Number.MAX_VALUE,d=Number.MIN_VALUE,S=Number.MIN_VALUE,m=Number.MIN_VALUE;for(var O in a){var M=a[O].vertexPackage;r=M.verticesCount;var F=M.vertexAttributes[0].typedArray.buffer,C=M.vertexAttributes[0].typedArray.byteOffset,b=M.vertexAttributes[0].componentsPerAttribute;i=new Float32Array(F,M.vertexAttributes[0].offsetInBytes+C,r*b);for(let t=0;t<r;t++){var p=i[t*b],w=i[t*b+1],D=i[t*b+2];I=Math.min(I,p),N=Math.min(N,w),U=Math.min(U,D),d=Math.max(d,p),S=Math.max(S,w),m=Math.max(m,D)}f.push(i),Ro("aTexCoord0",M,F,r,l),Ro("batchId",M,F,r,_),M.vertexColor?E.push(M.vertexColor):E.push(void 0);var B=a[O].arrIndexPackage[0].indicesTypedArray,L=B.byteLength/a[O].arrIndexPackage[0].indicesCount;n=new(4===L?Uint32Array:2===L?Uint16Array:Uint8Array)(B.buffer,(a[O].arrIndexPackage[0].bytesOffset||0)+B.byteOffset,a[O].arrIndexPackage[0].indicesCount),u.push(n),n.length,h.push(r);var P=a[O].arrIndexPackage[0].materialCode;A.push(R[P])}var g=[I,N,U],G=[d,S,m];const v=function(t,e,r,n,i,s,o,a,c,f,u,l,E,_,A){let h=0;for(const t in a)a[t].width*a[t].height*4>h&&(h=a[t].width*a[t].height*4);(!Ws||h>Ws)&&(zs=new Uint8ClampedArray(h+122),Ws=h);const T=[],R={magFilter:9729,minFilter:9729,wrapS:10497,wrapT:10497},y={},I={},N=[],U=[],d=[];for(let c=0;c<r.length;c++){const h=e[c],S=t[c],m=r[c],O=i&&i[c]&&i[c],M=n&&n[c]&&n[c],F=s&&s[c]&&s[c],C=o&&o[c]&&o[c],b={POSITION:{array:m,componentType:5126,count:S,byteOffset:m.byteOffset,byteStride:0,byteLength:m.byteLength,type:Ee(m.length/S),itemSize:m.length/S,name:"POSITION",min:f,max:u}};N.indexOf(m.buffer)<0&&N.push(m.buffer),O&&yo(b,"TEXCOORD_0",O,S,N),M&&yo(b,"NORMAL",M,S,N),F&&yo(b,"COLOR_0",F,S,N),C&&yo(b,"_BATCHID",C,S,N);const p={attributes:b,material:c,indices:{array:h.slice(),itemSize:1,byteLength:h.byteLength,byteOffset:0,byteStride:0,name:h,count:h.length,componentType:5123},mode:4};N.push(p.indices.array.buffer);const w={primitives:[p],index:c};I[c]=w;const D={mesh:c,nodeIndex:c,matrix:A};y[c]=D,U.push({nodes:[D]});const B=E[c],L={uFillForeColor:[1,1,1,1]};let P=B.ambient;L.ambientColor=[P.r,P.g,P.b,P.a];let g=B.diffuse;L.uDiffuseColor=[g.r,g.g,g.b,g.a];let G=B.specular;L.specularColor=[G.r,G.g,G.b,G.a],L.shininess=B.shininess,L.bTransparentSorting=B.transparentsorting;let v=B.textureunitstates;if(v.length){L.uTexMatrix=v[0].textureunitstate.texmodmatrix;const t=a[v[0].textureunitstate.id];if(L.uTexture0Width=t.width,v[1]){const t=a[v[1].textureunitstate.id];L.uTexture1Width=t.width}}d.push({pbrMetallicRoughness:{baseColorFactor:[.8,.8,.8,1],metallicFactor:0,roughnessFactor:.5},extensions:{KHR_techniques_webgl:{technique:0,values:L}}}),T.push($s(c,E,l,a,_).then((t=>{if(!t)return null;const{array:e,mipmap:r,width:n,height:i,format:s,flipY:o}=t;if(e&&N.indexOf(e.buffer)<0&&N.push(e.buffer),r)for(let t=0;t<r.length;t++)e&&N.indexOf(r[t].buffer)<0&&N.push(r[t].buffer);let a=R;return r&&(a={magFilter:R.magFilter,minFilter:9987,wrapS:R.wrapS,wrapT:R.wrapT}),{materialIndex:c,image:{mipmap:r,array:e,flipY:!!o,width:n,height:i,mimeType:"image/bmp"},sampler:a,format:s,source:c}})))}return Promise.all(T).then((t=>{t=t.filter((t=>!!t));for(let e=0;e<t.length;e++){const{materialIndex:r}=t[e];let n="uTexture";d[r].extensions.KHR_techniques_webgl.values.uTexture&&(n="uTexture2"),d[r].extensions.KHR_techniques_webgl.values[n]={"index":e,"texCoord":r},delete t[e].materialIndex}return{transferables:N,gltf:{"asset":{"generator":"S3M","version":"2.0"},"scene":0,"scenes":U,"nodes":y,"meshes":I,"materials":d,"skins":[],"animations":null,"textures":t,"transferables":[{},{},{},{},{}]}}}))}(h,u,f,null,l,E,_,o.texturePackage,0,g,G,[],A,e,T);return v.then((({gltf:t,transferables:e})=>({gltf:t,featureTable:{"BATCH_LENGTH":0},transferables:e,pageLods:c})))}As.multiplyByPoint=function(t,e,r){var n=e.x,i=e.y,s=e.z,o=t[0]*n+t[4]*i+t[8]*s+t[12],a=t[1]*n+t[5]*i+t[9]*s+t[13],c=t[2]*n+t[6]*i+t[10]*s+t[14];return r.x=o,r.y=a,r.z=c,r};let zs,Ws=0;let js=!1;if("undefined"!=typeof OffscreenCanvas){let t;try{t=new OffscreenCanvas(2,2).getContext("2d")}catch(_n){}t&&"undefined"!=typeof createImageBitmap&&(js=!0)}const qs={};function $s(t,e,r,n,i){const s=zs;return new Promise((function(r){!function(t){if(e[t].textureunitstates[0]){var o=e[t].textureunitstates[0].textureunitstate.id,a=n[o],c=a.arrayBufferView,f=a.nFormat,u=a.internalFormat;if(function(t){return t===io||t===so||t===oo||t===ao||t===co||t===fo||t===uo||t===lo||t===Eo||t===_o||t===Ao||t===ho||t===To}(u)&&a.width===a.height){const t=Ys(c,c.byteOffset,u,0,a.width,a.height);if(t){const{mipmap:e,flipY:n}=t;return void r({format:u,mipmap:e,flipY:n,width:a.width,height:a.height})}}let l;l=f>is||f===ns?122+a.width*a.height*4:61+a.width*a.height,_s.decode(s.subarray(122),a.width,a.height,c,f),function(t,e,r){var n=r*(4*e+e%4),i=n+o,s=new DataView(t),o=0;s.setUint16(o,19778,!0),o+=2,s.setUint32(o,i,!0),o+=4,s.setUint32(o,0,!0),o+=4,s.setUint32(o,122,!0),o+=4,s.setUint32(o,108,!0),o+=4,s.setUint32(o,e,!0),o+=4,s.setUint32(o,r,!0),o+=4,s.setUint16(o,1,!0),o+=2,s.setUint16(o,32,!0),o+=2,s.setUint32(o,this.compress,!0),o+=4,s.setUint32(o,n,!0),o+=4,s.setUint32(o,2835,!0),o+=4,s.setUint32(o,2835,!0),o+=4,s.setUint8(o,0,!0),o+=4,s.setUint32(o,0,!0),o+=4,s.setUint32(o,16711680,!0),o+=4,s.setUint32(o,65280,!0),o+=4,s.setUint32(o,255,!0),o+=4,s.setUint32(o,4278190080,!0),o+=4,s.setUint32(o,1466527264,!0),o+=4}(s.buffer,a.width,a.height);let{width:E,height:_}=a;Js(E)||(E=Qs(E)),Js(_)||(_=Qs(_));const A=i;let h;A&&(E=Math.min(A,E),_=Math.min(A,_));let T=6408;const R=a.width*a.height*4;!js||E===a.width&&_===a.height?(h=new Uint8Array(3*R/4),T=6407):(qs[R]||(qs[R]=new Uint8Array(R)),h=qs[R]),h=Xs(h,s.buffer,0,l),!js||E===a.width&&_===a.height||(h=function(t,e,r,n,i){to||(to=new OffscreenCanvas(2,2),eo=to.getContext("2d"),ro=new OffscreenCanvas(2,2),no=ro.getContext("2d"));const s=new ImageData(new Uint8ClampedArray(t.buffer),e,r);return to.width=e,to.height=r,eo.putImageData(s,0,0),ro.width=n,ro.height=i,no.drawImage(to,0,0,n,i),no.getImageData(0,0,n,i).data}(h,a.width,a.height,E,_)),h.buffer===(qs[R]&&qs[R].buffer)&&(h=new Uint8Array(h)),r({array:h,width:E,height:_,format:T})}else r(null)}(t)}))}function Js(t){return 0==(t&t-1)&&0!==t}function Qs(t){return Math.pow(2,Math.floor(Math.log(t)/Math.LN2))}let to,eo,ro,no;const io=33776,so=33777,oo=33778,ao=33779,co=35840,fo=35841,uo=35842,lo=35843,Eo=37808,_o=36196,Ao=37492,ho=37496,To=36492;function Ro(t,e,r,n,i){var s,o=e.attrLocation[t];if(o){const t=e.vertexAttributes[o];if(t.typedArray.buffer!==r)i.push(t.typedArray);else{var a=t.componentsPerAttribute;var c=new(s=t.componentDatatype,ue[s])(r,t.offsetInBytes+t.typedArray.byteOffset,n*a);i.push(c)}}else i.push(void 0)}function yo(t,e,r,n,i){t[e]={array:r,componentType:le(r.constructor),count:n,byteOffset:r.byteOffset,byteStride:0,byteLength:r.byteLength,type:Ee(r.length/n),itemSize:r.length/n,name:e},i.indexOf(r.buffer)<0&&i.push(r.buffer)}var Io=Oo("DXT1"),No=Oo("DXT3"),Uo=Oo("DXT5"),So=Oo("DX10"),mo=function(t){var e,r,n=new Int32Array(t,0,31);if(542327876!==n[0])throw new Error("Invalid magic number in DDS header");if(4&!n[20])throw new Error("Unsupported format, must contain a FourCC code");var i=n[21];switch(i){case Io:e=8,r="dxt1";break;case No:e=16,r="dxt3";break;case Uo:e=16,r="dxt5";break;case 116:r="rgba32f";break;case So:var s=new Uint32Array(t.slice(128,148));r=s[0];var o=s[1];if(s[2],s[3],s[4],3!==o||2!==r)throw new Error("Unsupported DX10 texture format "+r);r="rgba32f";break;default:throw new Error("Unsupported FourCC code: "+(a=i,String.fromCharCode(255&a,a>>8&255,a>>16&255,a>>24&255)))}var a;var c=n[2],f=1;131072&c&&(f=Math.max(1,n[7]));var u=!1;512&n[28]&&(u=!0);var l,E=n[4],_=n[3],A=n[1]+4,h=E,T=_,R=[];i===So&&(A+=20);if(u)for(var y=0;y<6;y++){if("rgba32f"!==r)throw new Error("Only RGBA32f cubemaps are supported");E=h,_=T;for(var I=Math.log(E)/Math.log(2)+1,N=0;N<I;N++)l=E*_*16,R.push({offset:A,length:l,shape:[E,_]}),N<f&&(A+=l),E=Math.floor(E/2),_=Math.floor(_/2)}else for(N=0;N<f;N++)l=Math.max(4,E)/4*Math.max(4,_)/4*e,R.push({offset:A,length:l,shape:[E,_]}),A+=l,E=Math.floor(E/2),_=Math.floor(_/2);return{shape:[h,T],images:R,format:r,flags:c,cubemap:u}};function Oo(t){return t.charCodeAt(0)+(t.charCodeAt(1)<<8)+(t.charCodeAt(2)<<16)+(t.charCodeAt(3)<<24)}const Mo=Math.PI/180,Fo=6378137*Math.PI/180,Co=85.0511287798;function bo(t,e,r){if("EPSG:3857"===r)return function(t,e){const r=Co,n=e[0],i=Math.max(Math.min(r,e[1]),-r);let s;s=0===i?0:Math.log(Math.tan((90+i)*Mo/2))/Mo;return t[0]=n*Fo,t[1]=s*Fo,t}(t,e);if("EPSG:4326"===r||"EPSG:4490"===r||"identity"===r)return po(t,e);if("baidu"===r)return po(t,e);throw new Error("unsupported projection:"+r)}function po(t,e){return t[0]=e[0],t[1]=e[1],t}const wo=s([]),Do=he.draco&&he.draco(),Bo=he.ktx2&&he.ktx2(),Lo={"pbrMetallicRoughness":{"baseColorFactor":[.5,.5,.5,1],"metallicFactor":0,"roughnessFactor":.5}},Po={"position":{name:"POSITION",accessor:{"componentType":5126,"type":"VEC3"}},"normal":{name:"NORMAL",accessor:{"componentType":5126,"type":"VEC3"}},"uv0":{name:"TEXCOORD_0",accessor:{"componentType":5126,"type":"VEC2"}},"color":{name:"COLOR_0",accessor:{"componentType":5121,"type":"VEC4"}},"uv-region":{name:"uvRegion",accessor:{"componentType":5123,"type":"VEC4"}},"feature-index":{name:"_BATCHID",accessor:{"componentType":5125,"type":"SCALAR"}},"faceRange":{name:"faceRange",accessor:{"componentType":5125,"type":"VEC2"}}};function go(t,e,r,n){const i=[],o=[],a=[];for(let e=0;e<t.meshes.length;e++){const{geometry:r,material:n}=t.meshes[e];let s=K.getArrayBuffer(r.url);s.xhr.url=r.url,a.push(s.xhr);const c=s.then((t=>({buffer:t})));i.push(c);const f=[];if(Zo(n,f),f.length){const t=f.map((t=>{const e=K.getArrayBuffer(t.url);return e.xhr.url=t.url,a.push(e.xhr),e.then((e=>e&&e.status?null:{buffer:e,mimeType:t.mimeType,format:t.format}))}));i.push(...t)}o[e]=f.length}const c=Promise.all(i).then((i=>{for(let t=0;t<i.length;t++)if(!i[t]||!i[t].buffer)return Promise.resolve(null);const a=[];let c=0;for(let t=0;t<o.length;t++){const e=o[t];a.push({geoBuffer:{data:i[c].buffer.data},textureBuffers:i.slice(c+1,e+c+1).map((t=>({data:t.buffer.data,mimeType:t.mimeType,format:t.format})))}),c+=1+e}const f=function(t,e,r,n,i){const o={asset:{generator:"i3s",version:"2.0"},extensions:{},scene:0,scenes:[{nodes:[]}],nodes:{},meshes:{},materials:[],skins:[],animations:null,textures:[],transferables:[]},a=[];for(let c=0;c<t.meshes.length;c++){let f,{geometry:u,material:l}=t.meshes[c];const E=e[c].geoBuffer.data;if(!E)continue;f=qo(E)?vo(o,c,u,E,t.transform,t.center,i):Ho(o,c,u,E,t.transform,t.center,i),a.push(f),o.nodes[c]={mesh:c,nodeIndex:c,matrix:s([])},o.scenes[0].nodes[c]=o.nodes[c],l||(l=Lo);const _=Vo(c,o,l,e[c].textureBuffers,r,n);a.push(_)}return Promise.all(a).then((()=>({gltf:o,featureTable:{BATCH_LENGTH:0},transferables:o.transferables})))}(t,a,e,n,r);return f}));return c.xhr=a,c}const Go={"magFilter":9728,"minFilter":9728,"wrapR":33071,"wrapS":33071,"wrapT":33071};function vo(t,e,r,n,i,s,o){const a=r.info.compressedAttributes.attributes.reduce(((t,e,r)=>{const n=Po[e];if(!n)return t;return t[n.name||e]=r,t}),{});return Do(n,{attributes:a,metadatas:{"POSITION":[{name:"i3s-scale_x",type:"double"},{name:"i3s-scale_y",type:"double"}]},useUniqueIDs:!1,skipAttributeTransform:!1}).then((r=>xo(r,t,e,i,s,o)))}var Xo={position:function(t,e,r){const n=3*t.vertexCount,i=new Float32Array(e,r,n);return t.position={array:i,componentType:5126,itemSize:3,count:n/3,meta:{"i3s-scale_x":1,"i3s-scale_y":1},type:"VEC3"},r+=4*n},normal:function(t,e,r){var n=3*t.vertexCount;const i=new Float32Array(e,r,n);return t.normal={array:i,componentType:5126,itemSize:3,count:n/3,type:"VEC3"},r+=4*n},uv0:function(t,e,r){var n=2*t.vertexCount;const i=new Float32Array(e,r,n);return t.uv0={array:i,componentType:5126,itemSize:2,count:n/2,type:"VEC2"},r+=4*n},color:function(t,e,r){var n=4*t.vertexCount;const i=new Uint8Array(e,r,n);return t.color={array:i,componentType:5121,itemSize:4,count:n/4,type:"VEC4"},r+=n},featureId:function(t,e,r){return r+=8*t.featureCount},id:function(t,e,r){return r+=8*t.featureCount},faceRange:function(t,e,r){var n=2*t.featureCount;const i=new Uint32Array(e,r,n);return t.faceRange={array:i,componentType:5125,itemSize:2,count:n/2,type:"VEC2"},r+=4*n},uvRegion:function(t,e,r){var n=4*t.vertexCount;const i=new Uint16Array(e,r,n);return t["uv-region"]={array:i,componentType:5123,itemSize:4,count:n/4,type:"VEC4"},r+=2*n},region:function(t,e,r){var n=4*t.vertexCount;const i=new Uint16Array(e,r,n);return t["uv-region"]={array:i,componentType:5123,itemSize:4,count:n/4,type:"VEC4"},r+=2*n}};function Ho(t,e,r,n,i,s,o){const a={vertexCount:0},c=new DataView(n);try{var f=0;a.vertexCount=c.getUint32(f,1),f+=4,a.featureCount=c.getUint32(f,1),f+=4;const t=r.info.ordering?null:r.info;if(t){const e=[];for(const r in t)"offset"!==r&&""!==r&&e.push(r);for(var u=0;u<e.length;u++)Xo[e[u]]?f=Xo[e[u]](a,n,f):console.error("Unknown decoder for",e[u])}else{const t=r.info;let e=t.ordering,i=t.featureAttributeOrder;const s=null;s&&s.geometryData&&s.geometryData[0]&&s.geometryData[0].params;for(var l=0;l<e.length;l++){var E=Xo[e[l]];E||console.log(e[l]),f=E(a,n,f)}for(var _=0;_<i.length;_++){var A=Xo[i[_]];A||console.log(i[_]),f=A(a,n,f)}}}catch(t){console.warn(t)}a.scale_x=1,a.scale_y=1;const h={};for(const t in a){const e=Po[t]&&Po[t].name;e&&(h[e]=a[t])}if(a.faceRange){const t=a.faceRange.array,e=t.length/2,r=(T=e)<=255?Uint8Array:T<=65535?Uint16Array:Uint32Array,n=new r(h.POSITION.array.length/3);for(let e=0;e<t.length-1;e+=2){const r=e/2,i=t[e],s=t[e+1];for(let t=i;t<=s;t++)n[3*t]=r,n[3*t+1]=r,n[3*t+2]=r}h._BATCHID={componentType:le(r),array:n,itemSize:1,count:n.length,type:"SCALAR"}}var T;return xo({attributes:h},t,e,i,s,o)}function xo(t,e,r,n,i,s){const o={attributes:t.attributes,material:r,indices:t.indices,mode:4};!function(t){const e=t.array,r=t.meta&&t.meta["i3s-scale_x"],n=t.meta&&t.meta["i3s-scale_y"];if(r&&n&&(1!==r||1!==n))for(let t=0;t<e.length;t+=3)e[t]*=r.value,e[t+1]*=n.value}(t.attributes.POSITION);const c=function(t,e,r,n){const i=r;let s,o=[0,0,0,1],c=[0,0];const f=bo([],r,n);f[2]=r[2];const u=e&&a(wo,e);return Me(t,(t=>(o[0]=t[0],o[1]=t[1],o[2]=t[2],u||(o=U(o,o,e)),i&&_(o,o,i),bo(c,o,n),s=o[2],t[0]=c[0]-f[0],t[1]=c[1]-f[1],t[2]=s-f[2],t))),f}(t.attributes.POSITION,n,i,s);e.meshes[r]={primitives:[o],index:r},e.extensions.MAPTALKS_RTC={projCenter:c},e.extensions.CESIUM_RTC={rtcCoord:i};for(const r in t.attributes)jo(e.transferables,t.attributes[r].array.buffer);return t.indices&&jo(e.transferables,t.indices.array.buffer),o}function Vo(t,e,r,n,i,s){const o=n.map((t=>function(t,e,r,n,i){if("dds"===e){const e=mo(t),n=e.images.map((e=>new Uint8Array(t,e.offset,e.length))),i="dxt1"===e.format?33777:33779;return Promise.resolve({image:{mipmap:n,width:e.shape[0],height:e.shape[1],mimeType:r},sampler:Go,format:i})}if("png"===e||"jpg"===e)return function(t,e){Yo||(Yo=new OffscreenCanvas(2,2),Ko=Yo.getContext("2d"));const r=new Blob([new Uint8Array(t)]);return createImageBitmap(r).then((t=>{let{width:r,height:n}=t;zo(r)||(r=Wo(r)),zo(n)||(n=Wo(n));const i=e;i&&(r=Math.min(i,r),n=Math.min(i,n)),Yo.width=r,Yo.height=n,Ko.drawImage(t,0,0,r,n),t.close();const s=Ko.getImageData(0,0,r,n);return{width:r,height:n,array:new Uint8Array(s.data)}})).catch((()=>({width:2,height:2,array:new Uint8Array(4)})))}(t,i).then((t=>{t.mimeType=r;return{image:t,sampler:Go,format:6408}}));if("ktx2"===e)return Bo(t,n).then((t=>(t.mimeType=r,{image:t,sampler:Go,format:t.format})))}(t.data,t.format,t.mimeType,i,s).then((t=>{if(t.image)if(t.image.array)jo(e.transferables,t.image.array.buffer);else if(t.image.mipmap)for(let r=0;r<t.image.mipmap.length;r++)jo(e.transferables,t.image.mipmap[r].buffer);return t}))));return Promise.all(o).then((n=>{ko(t,e,r,n)}))}function ko(t,e,r,n){const i=JSON.parse(JSON.stringify(r)),s=e.textures;n.ptr||(n.ptr=0);for(const t in r)r[t]&&r[t].url?(s.push(n[n.ptr++]),i[t]={index:s.length-1},void 0!==r[t].factor&&(i[t].scale=r[t].factor)):It(r[t])&&(i[t]=ko(-1,e,r[t],n));return t>=0&&(e.materials[t]=i),i}function Zo(t,e){for(const r in t)t[r]&&t[r].url?e.push({url:t[r].url,mimeType:t[r].mimeType,format:t[r].format}):It(t[r])&&Zo(t[r],e)}let Yo,Ko;function zo(t){return 0==(t&t-1)&&0!==t}function Wo(t){return Math.pow(2,Math.floor(Math.log(t)/Math.LN2))}function jo(t,e){e&&(t.indexOf(e)>=0||t.push(e))}function qo(t){const e=new Uint8Array(t,0,5);return e[0]==="D".charCodeAt()&&e[1]==="R".charCodeAt()&&e[2]==="A".charCodeAt()&&e[3]==="C".charCodeAt()&&e[4]==="O".charCodeAt()}const $o=[1,0,0,0,0,0,1,0,0,-1,0,0,0,0,0,1],Jo=[0,0,1,0,0,1,0,0,-1,0,0,0,0,0,0,1],Qo="undefined"!=typeof TextDecoder?new TextDecoder("utf-8"):null;let ta,ea,ra=!1;if("undefined"!=typeof OffscreenCanvas){try{ea=new OffscreenCanvas(2,2).getContext("2d")}catch(_n){}ea&&"undefined"!=typeof createImageBitmap&&(ra=!0)}const na=s([]),ia=[0,0,0],sa=[],oa=[],aa=[],ca=[];class fa{constructor(t,e,r,n){this.id=t,this.options=e,this.St=this.requestImage.bind(this),this.Ot=r,this.Mt={},n(null,{},[])}Ft(t){this.Ct||(this.bt=new Ue,this.Ct=new Te(this.St,Et,t),this.wt=new Re(this.St,Et,t))}requestImage(t,e){ra?fetch(t).then((t=>t.blob())).then((t=>createImageBitmap(t))).then((t=>{ta.width=t.width,ta.height=t.height,ea.drawImage(t,0,0);const r=ea.getImageData(0,0,ta.width,ta.height);e(null,{width:t.width,height:t.height,data:new Uint8Array(r.data)})})):this.Ot("requestImage",{url:t},null,e)}loadTile(t,e){this.Ft(t.supportedFormats);const r=t.url,n=t.arraybuffer;if(function(t){return t.indexOf("i3s:")>=0}(r)){const n=t.i3sInfo,i=this.options.services[t.rootIdx].maxTextureSize||1024,s=go(n,t.supportedFormats,this.options.projection,i);return s.then((t=>{if(delete this.Mt[r],!t)return void e({status:404,url:r,i3sInfo:n});if(!Object.keys(t.gltf.meshes).length)return void e({status:404,url:r,i3sInfo:n});t.gltf.url=r;const{transferables:i}=t;t.magic="b3dm",e(null,t,i)})),void(this.Mt[r]=s.xhr)}if(n){delete this.Mt[r];const i=new DataView(n),s=Xt(i,0);if("{"===s[0]||" "===s[0]||"<"===s[0]){const i=function(t,e,r){if(Qo){const n=new Uint8Array(t,e,r);return Qo.decode(n)}return mt(new Uint8Array(t,e,r))}(n,0,n.byteLength),s=JSON.parse(i);this.Dt(t.rootIdx,s,n,r,e)}else{const o=i.getFloat32(0,!0);1===o||2===o?this.Bt(n,r,t,e):this.Lt(n,r,t,s,e)}}else{const n=this.options.services[t.rootIdx];let i=n.urlParams;i&&(i=(r.indexOf("?")>0?"&":"?")+i);let s=K.getArrayBuffer(r+(i||""),n.fetchOptions);const o=s.xhr;s=s.then((n=>{delete this.Mt[r],n&&n.status?e(n):(t.arraybuffer=n&&n.data,this.loadTile(t,e))})).catch((t=>{delete this.Mt[r],e(t)})),this.Mt[r]=o}}Lt(t,e,r,n,i){const s=this.options.services[r.rootIdx];if("b3dm"===n){this.Ct.load(e,t,0,0,{maxTextureSize:s.maxTextureSize||1024}).then((t=>{if(t.error)return void i(t);const{content:e,transferables:n}=this.Pt(t,r);i(null,e,n)})).catch((t=>{i(t)}))}else if("pnts"===n){const n=r.transform;this.bt.load(e,t).then((t=>{const{content:e,transferables:s}=this.gt(t,n,r.rootIdx);i(null,e,s)}))}else if("i3dm"===n){const n=r.transform;this.wt.load(e,t,0,0,{maxTextureSize:s.maxTextureSize||1024}).then((t=>{const{content:e,transferables:s}=this.gt(t,n,r.rootIdx);i(null,e,s)}))}else if("cmpt"===n){new Se(this.St,Et).load(e,t,0,0,{maxTextureSize:s.maxTextureSize||1024}).then((t=>{const{content:e,transferables:n}=this.Gt(t,r);i(null,e,n)})).catch((t=>{i(t)}))}}Bt(t,e,r,n){Ks({buffer:t,bytesOffset:0},this.options.services[r.rootIdx].maxTextureSize||1024).then((t=>{t.gltf.url=e;const{content:i,transferables:s}=this.Pt(t,r);if(i.magic="b3dm",t.pageLods){const e=this.vt(t.pageLods);e.length&&(i.children=e)}n(null,i,s)}))}vt(t){const e=[];for(let r=0;r<t.length;r++){const n=t[r];if(!n.childTile)continue;const i={boundingVolume:{sphere:[n.boundingSphere.center.x,n.boundingSphere.center.y,n.boundingSphere.center.z,n.boundingSphere.radius]},content:{uri:n.childTile},geometricError:n.boundingSphere.radius/n.rangeList*16,refine:"REPLACE"};e.push(i)}return e}Dt(t,e,r,n,i){return e.dataType&&e.position?void i(null,be(e)):(e.capabilities,void i(null,e))}Gt(t,e){const{tiles:r}=t,n={magic:"cmpt",content:[]},i=[];for(let t=0;t<r.length;t++){const{magic:s}=r[t];if("b3dm"===s){const{content:s,transferables:o}=this.Pt(r[t],e);Ea(i,o),n.content.push(s)}else if("i3dm"===s||"pnts"===s){const{transform:s,rootIdx:o}=e,{content:a,transferables:c}=this.gt(r[t],s,o);Ea(i,c),n.content.push(a)}else if("cmpt"===s){const{content:s,transferables:o}=this.Gt(r[t],e);Ea(i,o),n.content.push(s)}}return{content:n,transferables:i}}Pt(t,e){const{gltf:r,transferables:n,featureTable:i}=t,s=function(t){if(!t||!t.meshes)return!1;const e="visited";let r=1;const n=[];for(const i in t.meshes){const s=t.meshes[i],{primitives:o}=s;if(o)for(let t=0;t<o.length;t++){const i=o[t].attributes&&o[t].attributes.POSITION;if(!i||!i.array)continue;i.array.buffer[e]||(i.array.buffer[e]=r++);const s=r-1+"-"+(i.byteOffset||0);if(n.indexOf(s)>=0)return!0;n.push(s)}}return!1}(r);return this.Xt(t.gltf),t.gltf.asset||(t.gltf.asset={}),s?(t.gltf.asset.sharePosition=!0,this.Ht(r,i,e.upAxis,e.transform)):this.xt(r,i,e.upAxis,e.transform),delete t.transferables,{content:t,transferables:n}}gt(t,e,r){const{featureTable:i}=t,s=t.pnts||t.i3dm;let o=i&&i.RTC_CENTER||[0,0,0];if(i.EAST_NORTH_UP&&!s.NORMAL_UP&&!s.NORMAL_UP_OCT32P){const e=new Float32Array(3*s.POSITION.array.length),r=[],i=[],a=[];Me(s.POSITION,((t,s)=>{_(a,t,o),ie(a,null,r),n(i,r);!function(t,e){t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8]}(e.subarray(9*s,9*(s+1)),i)})),s.INSTANCE_ROTATION={byteStride:0,byteOffset:0,itemSize:9,componentType:5126,array:e},t.transferables.push(e.buffer)}const a={xmin:1/0,xmax:-1/0,ymin:1/0,ymax:-1/0,hmin:1/0,hmax:-1/0};ua(s.POSITION.array,3,o,na,a);const c=la(a),f=l([],c),u=[1/0,1/0,1/0],E=[-1/0,-1/0,-1/0];Me(s.POSITION,(t=>{t[0]=t[0]+o[0]-f[0],t[1]=t[1]+o[1]-f[1],t[2]=t[2]+o[2]-f[2],t[0]<u[0]&&(u[0]=t[0]),t[1]<u[1]&&(u[1]=t[1]),t[2]<u[2]&&(u[2]=t[2]),t[0]>E[0]&&(E[0]=t[0]),t[1]>E[1]&&(E[1]=t[1]),t[2]>E[2]&&(E[2]=t[2])})),s.POSITION.min=u,s.POSITION.max=E,e&&U(c,c,e);const A=this.Vt(c);t.rtcCenter=f,t.rtcCoord=A,t.rootIdx=r;const h=t.transferables;return delete t.transferables,{content:t,transferables:h}}Xt(t){if(!Array.isArray(t.textures))return;const e=t.textures;for(let t=0;t<e.length;t++){const r=e[t].image&&e[t].image.array;if(r&&r.length){const n=r[0],i=r[1],s=r[2],o=r[3];let a=!0;for(let t=4;t<r.length;t+=4)if(r[t]!==n||r[t+1]!==i||r[t+2]!==s||r[t+3]!==o){a=!1;break}a&&(e[t].image.color=[n/255,i/255,s/255,o/255],delete e[t].image.array)}}}abortTileLoading(t,e){const r=this.Mt[t.url];if(Array.isArray(r))for(let t=0;t<r.length;t++)r[t].abort();else r&&r.abort&&r.abort();delete this.Mt[t.url],e(null)}kt(t,e,r,n){let i=e&&e.RTC_CENTER||t.extensions&&t.extensions.CESIUM_RTC&&t.extensions.CESIUM_RTC.center,a=$o;"X"===(r=r&&r.toUpperCase())?a=Jo:"Z"===r&&(a=na),t.extensions=t.extensions||{},t.extensions.CESIUM_RTC||(t.extensions.CESIUM_RTC={}),i&&(t.extensions.CESIUM_RTC.center=i),t.extensions.MAPTALKS_RTC={};const c={xmin:1/0,xmax:-1/0,ymin:1/0,ymax:-1/0,hmin:1/0,hmax:-1/0};me(t,(t=>{if(!(t.attributes&&t.attributes.POSITION))return;const e=s(sa);if(t.matrices)for(let r=t.matrices.length-1;r>=0;r--)o(e,e,t.matrices[r]);const r=t.attributes.POSITION.array,f=t.attributes.POSITION.itemSize;o(e,a,e),n&&o(e,n,e),ua(r,f,i||ia,e,c)}));const f=la(c);return{rtcCenter:i,modelCenter:f,upAxisTransform:a}}Ht(t,e,r,n){const{modelCenter:i,upAxisTransform:a,rtcCenter:c}=this.kt(t,e,r),f=l([],i);n&&U(i,i,n),t.extensions.CESIUM_RTC.rtcCoord=this.Vt(i),c||(me(t,(t=>{if(t.attributes&&t.attributes.POSITION){const e=t.attributes.POSITION;if(e.array.buffer.projected&&e.array.buffer.projected[e.byteOffset])return;const r=s(sa);if(t.matrices)for(let e=t.matrices.length-1;e>=0;e--)o(r,r,t.matrices[e]);o(r,a,r);const n=function(t,e){var r=e[0],n=e[1],i=e[2],s=e[3],o=e[4],a=e[5],c=e[6],f=e[7],u=e[8],l=e[9],E=e[10],_=e[11],A=e[12],h=e[13],T=e[14],R=e[15],y=r*a-n*o,I=r*c-i*o,N=r*f-s*o,U=n*c-i*a,d=n*f-s*a,S=i*f-s*c,m=u*h-l*A,O=u*T-E*A,M=u*R-_*A,F=l*T-E*h,C=l*R-_*h,b=E*R-_*T,p=y*b-I*C+N*F+U*M-d*O+S*m;return p?(p=1/p,t[0]=(a*b-c*C+f*F)*p,t[1]=(i*C-n*b-s*F)*p,t[2]=(h*S-T*d+R*U)*p,t[3]=(E*d-l*S-_*U)*p,t[4]=(c*M-o*b-f*O)*p,t[5]=(r*b-i*M+s*O)*p,t[6]=(T*N-A*S-R*I)*p,t[7]=(u*S-E*N+_*I)*p,t[8]=(o*C-a*M+f*m)*p,t[9]=(n*M-r*C-s*m)*p,t[10]=(A*d-h*N+R*y)*p,t[11]=(l*N-u*d-_*y)*p,t[12]=(a*O-o*F-c*m)*p,t[13]=(r*F-n*O+i*m)*p,t[14]=(h*I-A*U-T*y)*p,t[15]=(u*U-l*I+E*y)*p,t):null}(oa,r),i=[1/0,1/0,1/0],c=[-1/0,-1/0,-1/0];Me(e,(t=>{U(t,t,r),t[0]=t[0]-f[0],t[1]=t[1]-f[1],t[2]=t[2]-f[2],U(t,t,n),t[0]<i[0]&&(i[0]=t[0]),t[1]<i[1]&&(i[1]=t[1]),t[2]<i[2]&&(i[2]=t[2]),t[0]>c[0]&&(c[0]=t[0]),t[1]>c[1]&&(c[1]=t[1]),t[2]>c[2]&&(c[2]=t[2])})),e.min=i,e.max=c,e.array.buffer.projected||(e.array.buffer.projected={}),e.array.buffer.projected[e.byteOffset]=1}})),t.extensions.CESIUM_RTC.center=f)}xt(t,e,r,n){const{modelCenter:i,rtcCenter:s}=this.kt(t,e,r,n),o=this.Zt(i);t.extensions.MAPTALKS_RTC.projCenter=o,t.extensions.CESIUM_RTC.rtcCoord=this.Vt(i),me(t,(e=>{e.attributes&&e.attributes.POSITION&&(e.attributes.NORMAL&&this.Yt(e.attributes.NORMAL,e.matrices,r),e.attributes.TANGENT&&this.Yt(e.attributes.TANGENT,e.matrices,r),this.Kt(e.attributes.POSITION,e.matrices,s,t.extensions.MAPTALKS_RTC,r,n))}));for(const e in t.nodes){t.nodes[e].matrix=na}}Zt(t){0===m(t)?E(aa,0,0,-6378137):Bt(aa,t);const e=this.options.projection;bo(ca,aa,e);const r=aa[2],n=[];return n[0]=ca[0],n[1]=ca[1],n[2]=r,n}Yt(t,e,r){let s;s="Y"===r?$o:"X"===r?Jo:na;const c=i([],s);for(let t=e.length-1;t>=0;t--)o(c,s,e[t]);if(a(c,na))return;const f=n([],c),u=[];Me(t,(t=>(function(t,e,r){var n=e[0],i=e[1],s=e[2];t[0]=n*r[0]+i*r[3]+s*r[6],t[1]=n*r[1]+i*r[4]+s*r[7],t[2]=n*r[2]+i*r[5]+s*r[8]}(u,t,f),y(u,u),l(t,u),u)))}Kt(t,e,r,n,i,c){if(t.array.buffer.projected&&t.array.buffer.projected[t.byteOffset])return;const f=s([]);for(let t=0;t<e.length;t++)o(f,f,e[t]);const u=this.options.projection;i=i&&i.toUpperCase();const l=r;let A=null;"Y"===i?A=$o:"X"===i&&(A=Jo);let h,T=[0,0,0,1],R=[0,0,0],y=[0,0];const I=n.projCenter,N=c&&a(na,c),d=t.min=t.min||[],S=t.max=t.max||[];return E(d,1/0,1/0,1/0),E(S,-1/0,-1/0,-1/0),Me(t,(t=>(T[0]=t[0],T[1]=t[1],T[2]=t[2],T=U(T,T,f),A&&(T=U(T,T,A)),l&&_(T,T,l),c&&!N&&(T=U(T,T,c)),0===m(T)?E(R,0,0,-6378137):Bt(R,T),bo(y,R,u),h=R[2],t[0]=y[0]-I[0],t[1]=y[1]-I[1],t[2]=h-I[2],t[0]<d[0]&&(d[0]=t[0]),t[1]<d[1]&&(d[1]=t[1]),t[2]<d[2]&&(d[2]=t[2]),t[0]>S[0]&&(S[0]=t[0]),t[1]>S[1]&&(S[1]=t[1]),t[2]>S[2]&&(S[2]=t[2]),t))),t.array.buffer.projected||(t.array.buffer.projected={}),t.array.buffer.projected[t.byteOffset]=1,{projCenter:I}}Vt(t){return 0===m(t)?E([],0,0,-6378137):Bt([],t)}onRemove(){}}function ua(t,e,r,n,i){const s=[];for(let o=0,a=t.length;o<a;o+=e){const{xmin:a,ymin:c,xmax:f,ymax:u,hmin:l,hmax:A}=i;E(s,t[o],t[o+1],t[o+2]),U(s,s,n);const h=_(s,r,s);h[0]<a&&(i.xmin=h[0]),h[0]>f&&(i.xmax=h[0]),h[1]<c&&(i.ymin=h[1]),h[1]>u&&(i.ymax=h[1]),e>2&&(h[2]<l&&(i.hmin=h[2]),h[2]>A&&(i.hmax=h[2]))}}function la(t){const{xmax:e,ymax:r,xmin:n,ymin:i,hmin:s,hmax:o}=t,a=[(n+e)/2,(i+r)/2,(s+o)/2];return e===-1/0&&(a[0]=0),r===-1/0&&(a[1]=0),o===-1/0&&(a[2]=0),isNaN(a[2])&&(a[2]=0),a}function Ea(t,e){for(let r=0;r<e.length;r++)t.indexOf(e[r])<0&&t.push(e[r])}let _a=0;class Aa{constructor(t){this.workerId=t,this.workers={},this.zt={}}addLayer({actorId:t,mapId:e,layerId:r,params:n},i){if(this.Wt(e,r))return;const s=this.jt(e,r),o=n.options,a=this.send.bind(this,t);this.workers[s]=new fa(r,o,a,i)}removeLayer({mapId:t,layerId:e},r){const n=this.Wt(t,e),i=this.jt(t,e);delete this.workers[i],n&&n.onRemove(r)}loadTile({mapId:t,layerId:e,params:r},n){const i=this.Wt(t,e);i&&i.loadTile(r,n)}abortTileLoading({mapId:t,layerId:e,params:r},n){const i=this.Wt(t,e);i&&i.abortTileLoading(r,n)}receive(t){const e=t.callback,r=this.zt[e];delete this.zt[e],r&&t.error?r(new Error(t.error)):r&&r(null,t.data)}send(t,e,r,n,i){const s=i?`${t}-${_a++}`:null;i&&(this.zt[s]=i),postMessage({type:"<request>",workerId:this.workerId,actorId:t,command:e,params:r,callback:String(s)},n||[])}jt(t,e){return`${t}-${e}`}Wt(t,e){const r=this.jt(t,e);return this.workers[r]}}t.initialize=function(){},t.onmessage=function(t,e){const r=t.data;this.dispatcher||(this.dispatcher=new Aa(t.workerId)),"<response>"===t.type?this.dispatcher.workerId===t.workerId&&this.dispatcher.receive(t):this.dispatcher[r.command]({actorId:r.actorId,mapId:r.mapId,layerId:r.layerId,params:r.params},((t,r,n)=>{t instanceof Error&&(t={message:t.message}),e(t,r,n)}))},Object.defineProperty(t,"qt",{value:!0})}';function A(t){return null==t}function p(t){for(let e=1;e<arguments.length;e++){const r=arguments[e];for(const e in r)t[e]=r[e]}return t}function y(t){return null!=t&&("function"==typeof t||null!==t.constructor&&t.constructor===Function)}function R(t){return"object"==typeof t&&!!t}function g(t){return t*Math.PI/180}function b(t){return t/Math.PI*180}function I(t){let e=document.createElement("a");return e.href=t,t=e.href,e=null,t}function N(t){return Math.sign?Math.sign(t):0===(t=+t)||isNaN(t)?Number(t):t>0?1:-1}const S=[1,1,1,1,2,2,3,0];function O(t){const e=t.length;let r="";for(let n=0;n<e;){let i=t[n++];if(128&i){let r=S[i>>3&7];if(!(64&i)||!r||n+r>e)return null;for(i&=63>>r;r>0;r-=1){const e=t[n++];if(128!=(192&e))return null;i=i<<6|63&e}}r+=String.fromCharCode(i)}return r}function M(t,e,r){return t[3*r]=e[0],t[3*r+1]=e[1],t[3*r+2]=e[2],t}function w(t){return t.flat?t.flat(1/0):t.reduce(((t,e)=>t.concat(e)),[])}function C(t){return t<256?Uint8Array:t<65536?Uint16Array:Uint32Array}function x(t){return 0===t.indexOf("data:")}function U(t){const e=t.indexOf("base64,"),r=t.substring(e+7),n=window.atob(r),i=n.length,s=new Uint8Array(i);for(let t=0;t<i;t++)s[t]=n.charCodeAt(t);return s.buffer}function v(t){for(let e=1;e<arguments.length;e++){const r=arguments[e];if(r)for(let e=0,n=r.length;e<n;e++)t.push(r[e])}return t.length}var B=Object.freeze({__proto__:null,isNil:A,extend:p,isFunction:y,isObject:R,toRadian:g,toDegree:b,getAbsoluteURL:I,sign:N,stringFromUTF8Array:O,setColumn3:M,flatArr:w,getBatchIdArrayType:C,isBase64:x,base64URLToArrayBuffer:U,pushIn:v});const L="undefined"==typeof document?null:document.createElement("canvas");class P extends t.worker.Actor{constructor(t,e){super(t),this.mapId=e}initialize(t){t(null)}loadTile(t,e,r){let n=null;e&&e.arraybuffer&&(n=[e.arraybuffer]);const i={mapId:this.mapId,layerId:t,command:"loadTile",params:e};this.send(i,n,r)}abortTileLoading(t,e,r){const n={mapId:this.mapId,layerId:t,command:"abortTileLoading",params:{url:e}};this.broadcast(n,null,r)}addLayer(t,e,r){const n={actorId:this.actorId,mapId:this.mapId,layerId:t,command:"addLayer",params:{options:e}};this.broadcast(n,null,r)}removeLayer(t,e){const r={mapId:this.mapId,layerId:t,command:"removeLayer"};this.broadcast(r,null,e)}requestImage({url:t},e){const r=new Image;r.onload=()=>{if(!this.isActive())return;if(!L)return void e(new Error("There is no canvas to draw image!"));const t=function(t){if(D(t.width)&&D(t.height))return t;let e=t.width,r=t.height;D(e)||(e=F(e));D(r)||(r=F(r));const n=document.createElement("canvas");n.width=e,n.height=r,n.getContext("2d").drawImage(t,0,0,e,r);const i=t.src,s=i.lastIndexOf("/")+1,o=i.substring(s);return console.warn(`Texture(${o})'s size is not power of two, resize from (${t.width}, ${t.height}) to (${e}, ${r})`),n}(r);L.width=t.width,L.height=t.height;const n=L.getContext("2d");n.drawImage(t,0,0,t.width,t.height);const i=n.getImageData(0,0,t.width,t.height),s={width:t.width,height:t.height,data:new Uint8Array(i.data)};e(null,s,[s.data.buffer])},r.onerror=function(t){e(t)},r.src=t}}function D(t){return 0==(t&t-1)&&0!==t}function F(t){return Math.pow(2,Math.floor(Math.log(t)/Math.LN2))}class G{constructor(t,e){this.max=t,this.currentSize=0,this.onRemove=e,this.reset()}reset(){if(this.data){const t=this.data.values();for(const e of t)this.onRemove(e)}return this.data=new Map,this.currentSize=0,this}clear(){this.reset(),delete this.onRemove}add(t,e){if(!e)return this;if(e.node&&e.node.memorySize&&(this.currentSize+=e.node.memorySize),this.has(t)){const r=this.data.get(t);r&&r.node&&r.node.memorySize&&(this.currentSize-=r.node.memorySize),this.data.delete(t),this.data.set(t,e)}else this.data.set(t,e);return this}shrink(){if(this.currentSize>this.max){const t=this.data.keys();let e=t.next();for(;this.currentSize>this.max&&void 0!==e.value;){if(!this.data.get(e.value).current){const t=this.getAndRemove(e.value);t&&this.onRemove(t)}e=t.next()}}}has(t){return this.data.has(t)}keys(){const t=new Array(this.data.size);let e=0;const r=this.data.keys();for(let n of r)t[e++]=n;return t}getAndRemove(t){if(!this.has(t))return null;const e=this.data.get(t);return e.node&&e.node.memorySize&&(this.currentSize-=e.node.memorySize),this.data.delete(t),e}get(t){if(!this.has(t))return null;const e=this.data.get(t);return this.data.delete(t),this.data.set(t,e),e}remove(t){if(!this.has(t))return this;const e=this.data.get(t);return e.node&&e.node.memorySize&&(this.currentSize-=e.node.memorySize),this.data.delete(t),this.onRemove(e),this}setMaxSize(t){return this.max=t,this.shrink(),this}getMemorySize(){let t=0;const e=this.data.values();for(const r of e){const e=r&&r.node;e&&e.memorySize&&(t+=e.memorySize)}return t}markAll(t){const e=this.data.values();for(const r of e)r.current=t}}function k(t,e){if(t.scenes&&t.scenes.length)for(let r=0,n=t.scenes.length;r<n;r++){const n=t.scenes[r].nodes;for(let r=0,i=n.length;r<i;r++){const i=[];H(n[r],i,t,e)}}}function H(t,e,r,n){if(t.matrix&&e.push(t.matrix),t.children&&t.children.length)for(let i=0,s=t.children.length;i<s;i++)H(t.children[i],e,r,n);if(void 0!==t.mesh){const i=t.mesh,s=r.meshes[i];if(s){const t=e.slice(0),o=s.primitives;for(let e=0,s=o.length;e<s;e++){const s=o[e];s&&(s.matrices=t,n(s,i,e,r))}}}}function V(t,e,r){let{componentType:n,byteOffset:i,byteStride:s,itemSize:o}=e;const a=e.array.buffer,c=n?u.getTypedArrayCtor(n):e.array.constructor;if(i=void 0===i?e.array.byteOffset:i,s=s||0,!s||s===o*c.BYTES_PER_ELEMENT&&i%c.BYTES_PER_ELEMENT==0){const e=new c(a,i+r*o*c.BYTES_PER_ELEMENT,o);return t.set(e),t}s||(s=o*c.BYTES_PER_ELEMENT);const l=new Uint8Array(a,s*r+i,o*c.BYTES_PER_ELEMENT);return new Uint8Array(t.buffer).set(l),t}function z(t,e,r,n){t[4*e]=r[n],t[4*e+1]=r[n+4],t[4*e+2]=r[n+8],t[4*e+3]=r[n+12]}const X=new Array(3),Y=new Array(3),Z=[40680631590769,40680631590769,40408299984661.445];function W(t,e,r,n){const i=Z,s=Math.cos(r);X[0]=s*Math.cos(e),X[1]=s*Math.sin(e),X[2]=Math.sin(r),nt(X,X),d.multiply(Y,i,X);const o=Math.sqrt(d.dot(X,Y));var a,c,l;return c=Y,l=o,(a=Y)[0]=c[0]/l,a[1]=c[1]/l,a[2]=c[2]/l,d.scale(X,X,n),d.add(t,Y,X)}const K=[1/6378137,1/6378137,1/6356752.314245179],j=[1/40680631590769,1/40680631590769,1/40408299984661.445],q=new Array(3),$=new Array(3),Q=new Array(3);function J(t,e){const r=j,n=function(t,e,r,n,i){const s=e[0],o=e[1],a=e[2],c=r[0],l=r[1],f=r[2],h=s*s*c*c,u=o*o*l*l,_=a*a*f*f,E=h+u+_,T=Math.sqrt(1/E),m=d.scale(tt,e,T);if(E<i)return isFinite(T)?m:void 0;const A=n[0],p=n[1],y=n[2],R=et;R[0]=m[0]*A*2,R[1]=m[1]*p*2,R[2]=m[2]*y*2;let g,b,I,N,S,O,M,w,C,x,U,v=(1-T)*rt(e)/(.5*rt(R)),B=0;do{v-=B,I=1/(1+v*A),N=1/(1+v*p),S=1/(1+v*y),O=I*I,M=N*N,w=S*S,C=O*I,x=M*N,U=w*S,g=h*O+u*M+_*w-1,b=h*C*A+u*x*p+_*U*y;B=g/(-2*b)}while(Math.abs(g)>1e-12);return t[0]=s*I,t[1]=o*N,t[2]=a*S,t}(q,e,K,r,.1);let i=d.mul($,n,r);i=nt(i,i);const s=d.sub(Q,e,n),o=Math.atan2(i[1],i[0]),a=Math.asin(i[2]),c=N(d.dot(s,e))*rt(s);return t[0]=b(o),t[1]=b(a),t[2]=c,t}const tt=new Array(3),et=new Array(3);function rt(t){return d.length(t)}function nt(t,e){const r=e[0],n=e[1],i=e[2];let s=r*r+n*n+i*i;return s>0&&(s=Math.sqrt(s),t[0]=e[0]/s,t[1]=e[1]/s,t[2]=e[2]/s),t}function it(t,e){return d.multiply(e,t,j),d.normalize(e,e)}function st(t,e){var r=t[0],n=t[1],i=Math.cos(n),s=i*Math.cos(r),o=i*Math.sin(r),a=Math.sin(n);return e.x=s,e.y=o,e.z=a,d.normalize(e,e)}var ot=Object.freeze({__proto__:null,radianToCartesian3:W,cartesian3ToDegree:J,normalizeCartesian:nt,geodeticSurfaceNormal:it,geodeticSurfaceNormalCartographic:st});function at(t,e,r,n){r=r||0,n=n||r;var i=Math.abs(t-e);return i<=n||i<=r*Math.max(Math.abs(t),Math.abs(e))}function ct(t,e){let r="";for(let n=0;n<4;n++){const i=t.getUint8(e+n);r+=String.fromCharCode(i)}return r}const lt="undefined"!=typeof TextDecoder?new TextDecoder("utf-8"):null;function ft(t,e,r){const n=new Uint8Array(t,e,r);return lt?JSON.parse(lt.decode(n)):JSON.parse(O(n))}function ht(t,e,r){const n=new Uint8Array(t,e,r);return lt?JSON.parse(lt.decode(n)):JSON.parse(O(n))}function ut(t,e,r){return{offset:e,byteLength:r}}function _t(t,e,r,n){const{byteOffset:i,componentType:s,type:o}=t,{ctor:a,type:c}=pt(s||"UNSIGNED_SHORT"),l=mt(o);return{byteStride:0,byteOffset:i+r,itemSize:l,count:n*l,componentType:c,array:new a(e,r+i,n*l)}}function dt(t,e,r,n){const i=_t(t,e,r,n);return i.array.buffer.byteLength!==e.byteLength&&(i.array=i.array.slice()),i}function Et(t,e,r,n){const{byteOffset:i,componentType:s,type:o}=t,{ctor:a}=pt(s||"UNSIGNED_SHORT"),c=mt(o),l=new a(e,i,r*c);return 1===c?l[n]:l.subarray(n*c,n*c+c)}const Tt={"SCALAR":1,"VEC2":2,"VEC3":3,"VEC4":4};function mt(t){return t?Tt[t]:1}const At={"BYTE":{ctor:Int8Array,type:5120,name:"Int8Array"},"UNSIGNED_BYTE":{ctor:Uint8Array,type:5121,name:"Uint8Array"},"SHORT":{ctor:Int16Array,type:5122,name:"Int16Array"},"UNSIGNED_SHORT":{ctor:Uint16Array,type:5123,name:"Uint16Array"},"INT":{ctor:Int32Array,type:5124,name:"Int32Array"},"UNSIGNED_INT":{ctor:Uint32Array,type:5125,name:"Uint32Array"},"FLOAT":{ctor:Float32Array,type:5126,name:"Float32Array"},"DOUBLE":{ctor:Float64Array,type:5126,name:"Float64Array"}};function pt(t){return At[t]}function yt(t){for(let e in At)if(t===At[e].ctor)return At[e].type;throw new Error("unrecognized ctor:"+t)}function Rt(t,e,r,n){const i=t,s=e.length/3;for(let t=0;t<s;t++)i[3*t]=e[3*t]/65535*n[0]+r[0],i[3*t+1]=e[3*t+1]/65535*n[1]+r[1],i[3*t+2]=e[3*t+2]/65535*n[2]+r[2];return i}function gt(t,e,r){let n=t.getUint32(12,!0),i=t.getUint32(16,!0),s=t.getUint32(20,!0),o=t.getUint32(24,!0);const a=t.buffer;let c,l,f={},h={};n>0&&(f=ft(a,e,n),e+=n),i>0&&(c=function(t,e,r){return{offset:e,byteLength:r}}(0,e,i),e+=i),s>0&&(h=ht(a,e,s),e+=s);const u=ut(0,e,o);return l=a.slice(u.offset,u.offset+u.byteLength),r.push(l),{featureTable:f,featureTableBin:c,batchTable:h,batchTableBin:l}}var bt={north:[-1,0,0],east:[0,1,0],up:[0,0,1],south:[1,0,0],west:[0,-1,0],down:[0,0,-1]},It={},Nt={east:[],north:[],up:[],west:[],south:[],down:[]},St=[],Ot=[],Mt=[];const wt=[0,0,0];function Ct(t,e,r){return r[0]=t[0],r[1]=t[1],r[2]=t[2],r[3]=t[3],r[4]=t[4],r[5]=t[5],r[6]=t[6],r[7]=t[7],r[8]=t[8],r[9]=t[9],r[10]=t[10],r[11]=t[11],r[12]=e[0],r[13]=e[1],r[14]=e[2],r[15]=t[15],r}const xt=(Lt={up:{south:"east",north:"west",west:"south",east:"north"},down:{south:"west",north:"east",west:"north",east:"south"},south:{up:"west",down:"east",west:"down",east:"up"},north:{up:"east",down:"west",west:"up",east:"down"},west:{up:"north",down:"south",north:"down",south:"up"},east:{up:"south",down:"north",north:"up",south:"down"}}[Ut="east"][vt="north"],It[Pt=Ut+vt]?Bt=It[Pt]:(Bt=function(t,e,r){if(d.equals(t,wt))d.copy(St,bt[Ut]),d.copy(Ot,bt[vt]),d.copy(Mt,bt[Lt]);else if(at(t[0],0,1e-14)&&at(t[1],0,1e-14)){var n=N(t[2]);d.copy(St,bt[Ut]),"east"!==Ut&&"west"!==Ut&&d.scale(St,St,n),d.copy(Ot,bt[vt]),"east"!==vt&&"west"!==vt&&d.scale(Ot,Ot,n),d.copy(Mt,bt[Lt]),"east"!==Lt&&"west"!==Lt&&d.scale(Mt,Mt,n)}else{it(t,Nt.up);var i=Nt.up,s=Nt.east;s[0]=-t[1],s[1]=t[0],s[2]=0,d.normalize(Nt.east,s),d.cross(Nt.north,i,s),d.scale(Nt.down,Nt.up,-1),d.scale(Nt.west,Nt.east,-1),d.scale(Nt.south,Nt.north,-1),St=Nt[Ut],Ot=Nt[vt],Mt=Nt[Lt]}return r[0]=St[0],r[1]=St[1],r[2]=St[2],r[3]=0,r[4]=Ot[0],r[5]=Ot[1],r[6]=Ot[2],r[7]=0,r[8]=Mt[0],r[9]=Mt[1],r[10]=Mt[2],r[11]=0,r[12]=t[0],r[13]=t[1],r[14]=t[2],r[15]=1,r},It[Pt]=Bt),Bt);var Ut,vt,Bt,Lt,Pt;const Dt=[],Ft=[],Gt=[],kt=[],Ht=[],Vt=[],zt=[],Xt={x:0,y:0},Yt={x:0,y:0},Zt=Math.PI/180;const Wt={"programs":[{"attributes":["aPosition","instanceId","batchId","aTexCoord0","aTexCoord1","aNormal","aColor","uv2","uv3","uv4","secondary_colour","uv6"],"fragmentShader":1,"vertexShader":0}],"shaders":[{"type":35633,"content":"#include <gl2_vert>\n\nuniform mat4 czm_modelViewProjection;\n\nuniform mat4 czm_modelView;\n\nuniform mat3 czm_normal;\n\n\n\nattribute vec4 aPosition;\n\n\n\n#ifdef VertexColor\n\n attribute vec4 aColor;\n\n#endif\n\n#ifdef VertexNormal\n\n attribute vec3 aNormal;\n\n#endif\n\n#ifdef Instance\n\n attribute float instanceId;\n\n#else\n\n attribute float batchId;\n\n#endif\n\n\n\n#ifdef TexCoord\n\n attribute vec4 aTexCoord0;\n\n varying vec4 vTexCoord;\n\n uniform mat4 uTexMatrix;\n\n#ifdef COMPUTE_TEXCOORD\n\n uniform float uTexture0Width;\n\n varying vec4 vTexMatrix;\n\n varying vec4 vTexCoordTransform;\n\n varying vec2 vIsRGBA;\n\n#endif\n\n#endif\n\n\n\n#ifdef TexCoord2\n\n attribute vec4 aTexCoord1;\n\n uniform float uTexture1Width;\n\n varying vec4 vTexMatrix2;\n\n#endif\n\n#ifdef InstanceBim\n\n attribute vec4 uv2;\n\n attribute vec4 uv3;\n\n attribute vec4 uv4;\n\n attribute vec4 secondary_colour;\n\n attribute vec4 uv6;\n\n#endif\n\n\n\n uniform vec4 uFillForeColor;\n\n uniform vec4 uSelectedColor;\n\n varying vec4 vSecondColor;\n\n varying vec4 vPositionMC;\n\n varying vec3 vPositionEC;\n\n#ifdef VertexNormal\n\n varying vec3 vNormalEC;\n\n#endif\n\n varying vec4 vColor;\n\n\n\n const float SHIFT_LEFT8 = 256.0;\n\n const float SHIFT_RIGHT8 = 1.0 / 256.0;\n\n const float SHIFT_RIGHT4 = 1.0 / 16.0;\n\n const float SHIFT_LEFT4 = 16.0;\n\n void getTextureMatrixFromZValue(in float nZ, inout float XTran, inout float YTran, inout float scale, inout float isRGBA)\n\n {\n\n if(nZ <= 0.0)\n\n {\n\n return;\n\n }\n\n float nDel8 = floor(nZ * SHIFT_RIGHT8);\n\n float nDel16 = floor(nDel8 * SHIFT_RIGHT8);\n\n float nDel20 = floor(nDel16 * SHIFT_RIGHT4);\n\n isRGBA = floor(nDel20);\n\n YTran = nZ - nDel8 * SHIFT_LEFT8;\n\n XTran = nDel8 - nDel16 * SHIFT_LEFT8;\n\n float nLevel = nDel16 - nDel20 * SHIFT_LEFT4;\n\n scale = 1.0 / pow(2.0, nLevel);\n\n }\n\n\n\n void operation(vec4 operationType, vec4 color, vec4 selectedColor, inout vec4 vertexColor)\n\n {\n\n float right_2 = operationType.x * 0.5;\n\n float right_4 = right_2 * 0.5;\n\n float right_8 = right_4 * 0.5;\n\n float right_16 = right_8 * 0.5;\n\n float isSetColor = fract(right_2);\n\n if(isSetColor > 0.1)\n\n {\n\n vertexColor *= color;\n\n }\n\n float isPicked = fract(floor(right_2)* 0.5);\n\n if(isPicked > 0.1)\n\n {\n\n vertexColor *= selectedColor;\n\n }\n\n float isHide = fract(floor(right_4)* 0.5);\n\n if(isHide > 0.1)\n\n {\n\n vertexColor.a = 0.0;\n\n }\n\n }\n\n\n\n void main()\n\n {\n\n #ifdef TexCoord\n\n vTexCoord.xy = aTexCoord0.xy;\n\n #ifdef COMPUTE_TEXCOORD\n\n vTexMatrix = vec4(0.0,0.0,1.0,0.0);\n\n vIsRGBA.x = 0.0;\n\n vTexCoordTransform.x = aTexCoord0.z;\n\n if(vTexCoordTransform.x < -90000.0)\n\n {\n\n vTexMatrix.z = -1.0;\n\n }\n\n getTextureMatrixFromZValue(floor(vTexCoordTransform.x), vTexMatrix.x, vTexMatrix.y, vTexMatrix.z, vIsRGBA.x);\n\n vTexMatrix.w = log2(uTexture0Width * vTexMatrix.z);\n\n #endif\n\n #endif\n\n\n\n #ifdef TexCoord2\n\n vTexCoord.zw = aTexCoord1.xy;\n\n vTexMatrix2 = vec4(0.0,0.0,1.0,0.0);\n\n vIsRGBA.y = 0.0;\n\n vTexCoordTransform.y = aTexCoord1.z;\n\n if(vTexCoordTransform.y < -90000.0)\n\n {\n\n vTexMatrix2.z = -1.0;\n\n }\n\n getTextureMatrixFromZValue(floor(vTexCoordTransform.y), vTexMatrix2.x, vTexMatrix2.y, vTexMatrix2.z, vIsRGBA.y);\n\n vTexMatrix2.w = log2(uTexture1Width * vTexMatrix.z);\n\n #endif\n\n\n\n vec4 vertexPos = aPosition;\n\n vec4 vertexColor = uFillForeColor;\n\n#ifdef VertexColor\n\n vertexColor *= aColor / 255.0;\n\n#endif\n\n#ifdef VertexNormal\n\n vec3 normal = aNormal;\n\n#endif\n\n #ifdef InstanceBim\n\n mat4 worldMatrix;\n\n worldMatrix[0] = uv2;\n\n worldMatrix[1] = uv3;\n\n worldMatrix[2] = uv4;\n\n worldMatrix[3] = vec4(0, 0, 0, 1);\n\n vertexPos = vec4(vertexPos.xyz,1.0) * worldMatrix;\n\n vertexColor *= secondary_colour;\n\n #endif\n\n\n\n\n\n #ifdef Instance\n\n float index = instanceId;\n\n #else\n\n float index = batchId;\n\n #endif\n\n vec4 positionMC = vec4(vertexPos.xyz, 1.0);\n\n vColor = vertexColor;\n\n #ifdef VertexNormal\n\n vNormalEC = czm_normal * normal;\n\n #endif\n\n vPositionMC = positionMC;\n\n vPositionEC = (czm_modelView * positionMC).xyz;\n\n gl_Position = czm_modelViewProjection * vec4(vertexPos.xyz, 1.0);\n\n }\n\n"},{"type":35632,"content":"#ifdef GL_OES_standard_derivatives\n\n #extension GL_OES_standard_derivatives : enable\n\n #define support_standard_derivatives 1\n\n#endif\n\n#ifdef GL_EXT_shader_texture_lod\n\n #extension GL_EXT_shader_texture_lod : enable\n\n #define support_shader_texture_lod 1\n\n#endif\n\n\n\nprecision highp float;\n\n\n\n#include <gl2_frag>\n\n\n\n#if __VERSION__ == 300\n\n #define support_standard_derivatives 1\n\n #define support_shader_texture_lod 1\n\n#endif\n\n\n\n uniform vec3 czm_lightDirectionEC;\n\n uniform vec4 uDiffuseColor;\n\n#ifdef TexCoord\n\n varying vec4 vTexCoord;\n\n#ifdef COMPUTE_TEXCOORD\n\n uniform sampler2D uTexture;\n\n uniform highp float uTexture0Width;\n\n varying vec4 vTexCoordTransform;\n\n varying vec4 vTexMatrix;\n\n varying vec2 vIsRGBA;\n\n#endif\n\n#endif\n\n\n\n varying vec4 vColor;\n\n varying vec4 vPositionMC;\n\n varying vec3 vPositionEC;\n\n#ifdef VertexNormal\n\n varying vec3 vNormalEC;\n\n#endif\n\n#ifdef TexCoord2\n\n uniform sampler2D uTexture2;\n\n uniform float uTexture1Width;\n\n varying vec4 vTexMatrix2;\n\n#endif\n\n#ifdef COMPUTE_TEXCOORD\n\n void calculateMipLevel(in vec2 inTexCoord, in float vecTile, in float fMaxMip, inout float mipLevel)\n\n {\n\n vec2 dx = dFdx(inTexCoord * vecTile);\n\n vec2 dy = dFdy(inTexCoord * vecTile);\n\n float dotX = dot(dx, dx);\n\n float dotY = dot(dy, dy);\n\n float dMax = max(dotX, dotY);\n\n float dMin = min(dotX, dotY);\n\n float offset = (dMax - dMin) / (dMax + dMin);\n\n offset = clamp(offset, 0.0, 1.0);\n\n float d = dMax * (1.0 - offset) + dMin * offset;\n\n mipLevel = 0.5 * log2(d);\n\n mipLevel = clamp(mipLevel, 0.0, fMaxMip - 1.62);\n\n }\n\n\n\n void calculateTexCoord(in vec3 inTexCoord, in float scale, in float XTran, in float YTran, in float fTile, in float mipLevel, inout vec2 outTexCoord)\n\n {\n\n if(inTexCoord.z < -9000.0)\n\n {\n\n outTexCoord = inTexCoord.xy;\n\n }\n\n else\n\n {\n\n vec2 fTexCoord = fract(inTexCoord.xy);\n\n float offset = 1.0 * pow(2.0, mipLevel) / fTile;\n\n fTexCoord = clamp(fTexCoord, offset, 1.0 - offset);\n\n outTexCoord.x = (fTexCoord.x + XTran) * scale;\n\n outTexCoord.y = (fTexCoord.y + YTran) * scale;\n\n }\n\n }\n\n\n\n vec4 getTexColorForS3M(sampler2D curTexture, vec3 oriTexCoord, float texTileWidth, float fMaxMipLev, float fTexCoordScale, vec2 vecTexCoordTranslate, float isRGBA)\n\n {\n\n vec4 color = vec4(1.0);\n\n float mipLevel = 0.0;\n\n #ifdef support_standard_derivatives\n\n calculateMipLevel(oriTexCoord.xy, texTileWidth, fMaxMipLev, mipLevel);\n\n #endif\n\n vec2 realTexCoord;\n\n calculateTexCoord(oriTexCoord, fTexCoordScale, vecTexCoordTranslate.x, vecTexCoordTranslate.y, texTileWidth, mipLevel, realTexCoord);\n\n if(isRGBA > 0.5)\n\n {\n\n vec2 rgbTexCoord;\n\n rgbTexCoord.x = (realTexCoord.x + vecTexCoordTranslate.x * fTexCoordScale) * 0.5;\n\n rgbTexCoord.y = (realTexCoord.y + vecTexCoordTranslate.y * fTexCoordScale) * 0.5;\n\n color = texture2D(curTexture, rgbTexCoord.xy, -10.0);\n\n vec2 vecAlphaTexCoord;\n\n vecAlphaTexCoord.x = rgbTexCoord.x;\n\n vecAlphaTexCoord.y = rgbTexCoord.y + fTexCoordScale * 0.5;\n\n color.a = texture2D(curTexture, vecAlphaTexCoord.xy, -10.0).r;\n\n }\n\n else\n\n {\n\n if(oriTexCoord.z < -9000.0)\n\n {\n\n color = texture2D(curTexture, realTexCoord.xy);\n\n }\n\n else\n\n {\n\n #ifdef support_shader_texture_lod\n\n color = texture2DLodEXT(curTexture, realTexCoord.xy, mipLevel);\n\n #else\n\n color = texture2D(curTexture, realTexCoord.xy, mipLevel);\n\n #endif\n\n }\n\n }\n\n\n\n return color;\n\n }\n\n\n\n vec4 getTextureColor()\n\n {\n\n if(vTexMatrix.z < 0.0)\n\n {\n\n return vec4(1.0);\n\n }\n\n float texTileWidth0 = vTexMatrix.z * uTexture0Width;\n\n vec3 realTexCoord = vec3(vTexCoord.xy, vTexCoordTransform.x);\n\n vec4 FColor = getTexColorForS3M(uTexture, realTexCoord, texTileWidth0, vTexMatrix.w, vTexMatrix.z, vTexMatrix.xy, vIsRGBA.x);\n\n #ifdef TexCoord2\n\n float texTileWidth1 = vTexMatrix2.z * uTexture1Width;\n\n realTexCoord = vec3(vTexCoord.zw, vTexCoordTransform.y);\n\n vec4 SColor = getTexColorForS3M(uTexture2, realTexCoord, texTileWidth1, vTexMatrix2.w, vTexMatrix2.z, vTexMatrix2.xy, vIsRGBA.y);\n\n SColor.r = clamp(SColor.r, 0.0, 1.0);\n\n SColor.g = clamp(SColor.g, 0.0, 1.0);\n\n SColor.b = clamp(SColor.b, 0.0, 1.0);\n\n return FColor * SColor;\n\n #else\n\n return FColor;\n\n #endif\n\n }\n\n#endif\n\n vec4 SRGBtoLINEAR4(vec4 srgbIn)\n\n {\n\n #ifndef HDR\n\n vec3 linearOut = pow(srgbIn.rgb, vec3(2.2));\n\n return vec4(linearOut, srgbIn.a);\n\n #else\n\n return srgbIn;\n\n #endif\n\n }\n\n vec3 LINEARtoSRGB(vec3 linearIn)\n\n {\n\n #ifndef HDR\n\n return pow(linearIn, vec3(1.0/2.2));\n\n #else\n\n return linearIn;\n\n #endif\n\n }\n\n\n\n vec3 computeNormal(in vec3 oriVertex)\n\n {\n\n vec3 normal = cross(vec3(dFdx(oriVertex.x), dFdx(oriVertex.y), dFdx(oriVertex.z)), vec3(dFdy(oriVertex.x), dFdy(oriVertex.y), dFdy(oriVertex.z)));\n\n normal = normalize(normal);\n\n return normal;\n\n }\n\n\n\n void main()\n\n {\n\n if(vColor.a < 0.1)\n\n {\n\n discard;\n\n }\n\n vec4 baseColorWithAlpha = vColor;\n\n #ifdef COMPUTE_TEXCOORD\n\n baseColorWithAlpha *= SRGBtoLINEAR4(getTextureColor());\n\n #endif\n\n\n\n if(baseColorWithAlpha.a < 0.1)\n\n {\n\n discard;\n\n }\n\n vec3 normal = vec3(0.0);\n\n #ifdef VertexNormal\n\n normal = normalize(vNormalEC);\n\n #endif\n\n normal = length(normal) > 0.1 ? normal : computeNormal(vPositionMC.xyz);\n\n vec3 color = baseColorWithAlpha.rgb;\n\n vec3 dirVectorEC = normalize(czm_lightDirectionEC);\n\n float dotProduct = dot( normal, dirVectorEC );\n\n float dirDiffuseWeight = max( dotProduct, 0.0 );\n\n dirDiffuseWeight = dirDiffuseWeight * 0.5 + 0.5;\n\n color += color * uDiffuseColor.rgb * dirDiffuseWeight;\n\n #ifdef TexCoord\n\n color = LINEARtoSRGB(color);\n\n #endif\n\n glFragColor = vec4(color, baseColorWithAlpha.a);\n\n#if __VERSION__ == 100\n\n gl_FragColor = glFragColor;\n\n#endif\n\n }\n\n"}],"techniques":[{"attributes":{"aPosition":{"semantic":"POSITION","type":35666},"instanceId":{"semantic":"instanceId","type":5126},"batchId":{"semantic":"_BATCHID","type":5126},"aTexCoord0":{"semantic":"TEXCOORD_0","type":35664},"aTexCoord1":{"semantic":"aTexCoord1","type":35666},"aNormal":{"semantic":"aNormal","type":35665},"aColor":{"semantic":"COLOR_0","type":35666},"uv2":{"semantic":"uv2","type":35666},"uv3":{"semantic":"uv3","type":35666},"uv4":{"semantic":"uv4","type":35666},"secondary_colour":{"semantic":"secondary_colour","type":35666},"uv6":{"semantic":"uv6","type":35666}},"program":0,"uniforms":{"czm_modelView":{"type":35676,"semantic":"MODELVIEW"},"czm_normal":{"type":35675,"semantic":"MODELINVERSETRANSPOSE"},"czm_modelViewProjection":{"type":35676,"semantic":"MODELVIEWPROJECTION"},"uTexMatrix":{"type":35676},"uTexture0Width":{"type":5126},"uFillForeColor":{"type":35666},"uSelectedColor":{"type":35666},"uDiffuseColor":{"type":35666},"uTexture":{"type":35678},"uTexture2":{"type":35678},"uTexture1Width":{"type":5126}}}]},{getTextureMagFilter:Kt,getTextureMinFilter:jt,getTextureWrap:qt,getMaterialType:$t,getMaterialFormat:Qt,getPrimitive:Jt,getUniqueREGLBuffer:te}=r.REGLHelper,ee=[1,0,0,0,0,0,1,0,0,-1,0,0,0,0,0,1],re=[0,0,1,0,0,1,0,0,-1,0,0,0,0,0,0,1],{loginIBLResOnCanvas:ne,logoutIBLResOnCanvas:ie,getIBLResOnCanvas:se,getPBRUniforms:oe}=r.pbr.PBRUtils,ae={factor:0,units:0},ce={specularStrength:0,materialShininess:1},le=[1,1,1],fe=n.identity([]),he=t=>t.material instanceof r.PhongMaterial,ue=t=>t.material instanceof r.pbr.StandardMaterial,_e=[!0,!0,!0,!0],de=[],Ee=new t.Coordinate(0,0),Te=new t.Point(0,0),me=[],Ae=[],pe=[],ye=[],Re={"POSITION":"POSITION","NORMAL":"NORMAL","TEXCOORD_0":"TEXCOORD_0","TEXCOORD_1":"TEXCOORD_1","COLOR_0":"COLOR_0","TANGENT":"TANGENT","_BATCHID":"_BATCHID"};class ge{constructor(e,n){this.t=n,this.i=n.getRenderer().canvas,this.pickingFBO=n.getRenderer().pickingFBO,this.o=new t.SpatialReference,this.l=e,this.h=new r.Renderer(e),this.u={},this._={},this.T={},this.m={},this.A={},this.p={},this.R={},this.g=new r.Scene,this.I=new r.Scene,this.N=new r.Scene,this.S=new r.Scene,this.O=new r.ResourceLoader(e.texture(2)),this.M=this.C.bind(this),this.U=new r.PhongMaterial({"baseColorFactor":[1,1,1,1]}),this.v(),this.B=new r.KHRTechniquesWebglManager(this.l,this.L(),this.O);const i=this.getMap();i.altitudeToPoint&&(this.P=i.altitudeToPoint(100,i.getGLRes())/100)}getI3DMMeshes(){return this.A}getPNTSMeshes(){return this.m}getB3DMMeshes(){return this.T}getPaintedMeshes(){return this.D}getMap(){return this.t.getMap()}paint(t,e,r,n){const i=this.getMap();if(!t.length||!i)return;const s=this.F(),o=i.projViewMatrix,a=this.t.options.services,c=[],f=[];let h=[];const u=[],_=[],d=this.G(t);for(let r=0,n=t.length;r<n;r++){const n=t[r].data.node;let i=this.k(n);if(!i)continue;this.p[n.id]&&(i=this.p[n.id],i=w(i));let E=a[n.H].polygonOffset||ae;y(E)&&(E=E());const T=a[n.H].ambientLight;Array.isArray(i)||(c[0]=i,i=c);for(let t=0,r=i.length;t<r;t++){if(i[t].getBoundingBox&&!l(o,i[t].getBoundingBox()))continue;const r=i[t].properties.magic;"b3dm"===r?h.push(i[t]):"pnts"===r?u.push(i[t]):"i3dm"===r&&_.push(i[t]),i[t].properties.isLeaf=!!e[n.id],i[t].properties.level=d.get(n.V),i[t].properties.polygonOffset=E,Object.prototype.hasOwnProperty.call(i[t].uniforms,"ambientColor")||Object.defineProperty(i[t].uniforms,"ambientColor",{enumerable:!0,get:function(){return T||s.ambientColor}}),i[t].X=n,e[n.id]||f.push(i[t])}}let E=0;const T=this.B.getExcludeFilter();E+=this.Y(this.Z,s,[r,he,T],n,f,h,_),E+=this.Y(this.W,s,[r,ue,T],n,f,h,_),this.B.forEachShader(((t,e,i)=>{const s=this.F(i);E+=this.Y(t,s,[r,e],n,f,h,_)})),this.I.setMeshes(u);const m=this.K();return E+=this.h.render(this.j,m,this.I,n&&n.fbo),this.D={pntsMeshes:u,i3dmMeshes:_,b3dmMeshes:h},E}Y(t,e,r,n,i,s,o){t.filter=r.filter((t=>!!t)),e.debug=!1,e.stencilEnable=!0,e.debug=!1,e.cullFace="back",e.colorMask=_e;let a=0;return this.g.setMeshes(s),a+=this.h.render(t,e,this.g,n&&n.fbo),e.stencilEnable=!1,this.N.setMeshes(o),a+=this.h.render(t,e,this.N,n&&n.fbo),a}q(t,e){return e.X.$-t.X.$}paintRegion(t,e,r,n,i){const s=this.getMap();if(!t.length&&!e.length)return;const o=s.projViewMatrix,a=[];for(let r=0,n=(t=t.concat(e)).length;r<n;r++){const e=t[r].node,n=this.J(e);n&&(n.getBoundingBox&&!l(o,n.getBoundingBox())||a.push(n))}this.tt.filter=n,this.S.setMeshes(a);const c=this.et(r);this.h.render(this.tt,c,this.S,i&&i.fbo)}deleteTile(t){const e=t.node.id;this.rt(e)}rt(t){const e=this._[t];e&&(e.geometry.dispose(),e.dispose(),delete this._[t]);let r=this.T[t]||this.m[t]||this.A[t]||this.p[t]||this.u[t];this.p[t]?this.nt(t):r&&(this.it(r),delete this.T[t],delete this.m[t],delete this.A[t],delete this.u[t])}nt(t){let e=this.p[t];e=w(e);for(let t=0;t<e.length;t++){const{id:r}=e[t].properties;this.rt(r)}delete this.p[t]}it(t){if(Array.isArray(t))for(let e=0,r=t.length;e<r;e++)this.it(t[e]);else{const e=t.geometry.properties.url;if(e){const t=this.R[e];t&&(t.refCount--,t.refCount<=0&&(t.geometry.dispose(),t.material.dispose(),delete this.R[e]))}else t.geometry.dispose(),t.material&&t.material.dispose();t.dispose()}}remove(){const t=this.t;ie(t.getRenderer().canvas,t.getMap());for(const t in this.p)this.nt(t);this.p={};for(const t in this.T)this.rt(t);this.T={};for(const t in this.m)this.rt(t);this.m={};for(const t in this.A)this.rt(t);this.A={};for(const t in this.u)this.rt(t);this.u={};for(const t in this._)this.rt(t);this._={},this.Z&&(this.Z.dispose(),delete this.Z),this.W&&(this.W.dispose(),delete this.W),this.j&&(this.j.dispose(),delete this.j),this.tt&&(this.tt.dispose(),delete this.tt),this.B.dispose(),this.picking&&this.picking.dispose()}J(e){if(!e.boundingVolume||!e.boundingVolume.region)return null;if(this._[e.id])return this._[e.id];const i=e.boundingVolume.region;let s=new t.Coordinate(b(i[0]),b(i[1])),o=new t.Coordinate(b(i[2]),b(i[3]));s=this.st(s),o=this.st(o);const a=s.add(o).ot(.5);s._sub(a),o._sub(a);const c=this.ct(i[4],i[5]),l=c.x,f=c.y,h=[s.x,s.y,f,o.x,s.y,f,o.x,o.y,f,s.x,o.y,f,s.x,s.y,l,o.x,s.y,l,o.x,o.y,l,s.x,o.y,l],u=new r.Geometry({aPosition:h},[0,1,1,2,2,3,3,0,0,4,1,5,2,6,3,7,4,5,5,6,6,7,7,4],0,{primitive:"lines"});u.generateBuffers(this.l);const _=new r.Mesh(u),d=n.identity([]);return _.setLocalTransform(n.translate(d,d,[a.x,a.y,0])),this._[e.id]=_,_}k(t){return this.T[t.id]||this.m[t.id]||this.A[t.id]||this.p[t.id]}has(t){return this.k(t)||this.u[t.id]}createPntsMesh(t,e,i,s){if(this.m[e]){const t=this.m[e];return console.warn(`pnts mesh with id(${e}) was already created.`),s(null,{id:e,mesh:t}),t}const{pnts:o,featureTable:a,rootIdx:c}=t,l=a.POINTS_LENGTH,f=new r.Geometry(o,null,l,{primitive:"points",positionAttribute:"POSITION"});f.generateBuffers(this.l);const h={};o.POSITION?h.HAS_POSITION=1:o.POSITION_QUANTIZED&&(h.HAS_POSITION_QUANTIZED=1),o.RGB?h.HAS_RGB=1:o.RGBA?h.HAS_RGBA=1:o.RGB565&&(h.HAS_RGB565=1),(o.NORMAL||o.NORMAL_OCT16P)&&(h.HAS_NORMAL=1,o.NORMAL_OCT16P&&(h.HAS_NORMAL_OCT16P=1)),t.featureTable.CONSTANT_RGBA&&(t.featureTable.CONSTANT_RGBA=t.featureTable.CONSTANT_RGBA.map((t=>t/255)));const{rtcCenter:u,rtcCoord:_}=t,d=this.lt(pe,_),E=this.ft([],i,u,_);n.multiply(E,E,d);const T=this.t.options.services[c],m=new r.Mesh(f);return m.properties.magic="pnts",m.properties.id=e,m.properties.node=i,m.properties.count=l,m.properties.batchTable=t.batchTable,m.properties.batchTableBin=t.batchTableBin,m.setDefines(h),Object.defineProperty(m.uniforms,"pointColor",{enumerable:!0,get:function(){return t.featureTable.CONSTANT_RGBA?t.featureTable.CONSTANT_RGBA:T&&T.pointColor||[1,1,1,1]}}),Object.defineProperty(m.uniforms,"pointSize",{enumerable:!0,get:function(){return T&&T.pointSize||2}}),Object.defineProperty(m.uniforms,"pointOpacity",{enumerable:!0,get:function(){return T&&T.pointOpacity||1}}),m.setLocalTransform(E),this.m[e]=m,s(null,{id:e,mesh:[m]}),[m]}createI3DMMesh(t,e,s,o){if(this.A[e]){const t=this.A[e];return console.warn(`i3dm mesh with id(${e}) was already created.`),this.u[e]||o(null,{id:e,mesh:t}),t}const c=this.ht(s.ut),{i3dm:l,featureTable:f,gltf:h,batchTable:_,batchTableBin:d,count:E}=t,T=f.INSTANCES_LENGTH,{rtcCenter:m,rtcCoord:A}=t,p=this.lt(pe,A),y=this.ft(ye,s,m,A);n.multiply(p,y,p);const{POSITION:R,NORMAL_UP:g,NORMAL_RIGHT:b,SCALE:I,SCALE_NON_UNIFORM:N,INSTANCE_ROTATION:S}=l,O={"instance_vectorA":new Float32Array(4*T),"instance_vectorB":new Float32Array(4*T),"instance_vectorC":new Float32Array(4*T)},w=new Float32Array(3),C=new Float32Array(3),x=[],U=new Float32Array(1),v=new Float32Array(3),B=[],L=[],P=[],D=[],F=new Float32Array(9);!function(t,e){let{componentType:r,byteOffset:n,byteStride:i,count:s,itemSize:o}=t;const a=t.array.buffer,c=r?u.getTypedArrayCtor(r):t.array.constructor;if(n=void 0===n?t.array.byteOffset:n,i=i||0,s=s||t.array.length/o,(!i||i===o*c.BYTES_PER_ELEMENT)&&n%c.BYTES_PER_ELEMENT==0){const t=new c(a,n,s*o);for(let r=0;r<s*o;r+=o)e(new c(t.buffer,n+r*c.BYTES_PER_ELEMENT,o),r/o);return}const l=new Uint8Array(o*c.BYTES_PER_ELEMENT);i||(i=o*c.BYTES_PER_ELEMENT);for(let t=0;t<s;t++){const r=new Uint8Array(a,i*t+n,o*c.BYTES_PER_ELEMENT);l.set(r),e(new c(l.buffer),t),r.set(l)}}(R,((t,e)=>{g?(V(C,b,e),V(w,g,e),i.cross(x,C,w),i.normalize(x,x),M(B,C,0),M(B,w,1),M(B,x,2),a.fromMat3(L,B)):S?(V(F,S,e),a.fromMat3(L,F)):a.identity(L),I?(V(U,I,e),i.set(P,U[0],U[0],U[0])):N?(V(v,N,e),i.set(P,...v)):i.set(P,1,1,1),n.fromRotationTranslationScale(D,L,t,P),z(O.instance_vectorA,e,D,0),z(O.instance_vectorB,e,D,1),z(O.instance_vectorC,e,D,2)}));const G={};for(const t in O)G[t]={buffer:this.l.buffer({dimension:O[t].length/T,data:O[t]}),divisor:1};const H=this.t.options.services[s.H].shader||"phong";let X=0,Y=!0;const Z=[];return k(h,((t,i,o,a)=>{let{geometry:l,material:f}=this._t(t,i,o,a,s,!0,H);f&&!f.isReady()&&(Y=!1,X++);const h=new r.InstancedMesh(G,T,l,f);h.properties.magic="i3dm",h.properties.id=e,h.properties.count=E,h.properties.batchTable=_,h.properties.batchTableBin=d;const u=this.dt(t,l,f,s.H,a),m=n.identity([]);if(t.matrices&&t.matrices.length)for(let e=0;e<t.matrices.length;e++)n.multiply(m,m,t.matrices[e]);n.multiply(m,c,m),h.setPositionMatrix(m),h.setLocalTransform(n.copy([],p)),h.setDefines(u),h.properties.polygonOffset={offset:0,factor:0},Z.push(h)})),Y?(this.A[e]=Z,o(null,{id:e,mesh:Z})):(this.u[e]={meshes:Z,count:X},Z.Et=o),Z}createB3DMMesh(e,i,s,o){if(this.T[i]||this.u[i]){const t=this.T[i];return console.warn(`mesh with id(${i}) was already created.`),this.u[i]||o(null,{id:i,mesh:t}),t}let a;if(s.maxExtent){const e=new t.Extent(s.maxExtent).convertTo((t=>this._pointToPrj(t)));a=[e.xmin,e.ymin,e.xmax,e.ymax]}const c=e.gltf,{projCenter:l}=c.extensions.MAPTALKS_RTC,{rtcCoord:f,center:h}=c.extensions.CESIUM_RTC,u=this.ht(s.ut);let _;_=c.asset&&c.asset.sharePosition?this.lt(pe,f):this.Tt(pe,f,l,s.H);const d=this.t.options.services[s.H].shader||"phong",E=[];let T=0,m=!0;return k(c,((t,o,c,l)=>{let{geometry:A,material:p}=this._t(t,o,c,l,s,!1,d);p&&!p.isReady()&&(m=!1,T++);const y=new r.Mesh(A,p);y.properties.magic="b3dm",y.properties.id=i,y.properties.node=s,y.properties.batchTable=e.batchTable,y.properties.batchTableBin=e.batchTableBin,y.properties.count=e.featureTable.BATCH_LENGTH;const R=this.dt(t,A,p,s.H,l);y.setDefines(R),a&&(R.USE_MAX_EXTENT=1,y.setUniform("maxPrjExtent",a));let g=n.identity([]);if(l.asset.sharePosition&&t.matrices&&t.matrices.length)for(let e=0;e<t.matrices.length;e++)n.multiply(g,g,t.matrices[e]);if(l.asset.sharePosition){const t=this.ft(ye,s,h,f);n.multiply(g,u,g),n.multiply(g,_,g),n.multiply(g,t,g)}else n.multiply(g,_,g);y.setLocalTransform(g),E.push(y)})),m?(this.T[i]=E,o(null,{id:i,mesh:E})):(this.u[i]={meshes:E,count:T},E.Et=o),E}ft(e,r,s,o){const a=this.getMap(),c=this.t.options.services[r.H].heightOffset||0,l=new t.Coordinate(o);let f;f=a.altitudeToPoint?this.P:a.distanceToPointAtRes(100,100,a.getGLRes(),l).y/100;let h=r.matrix?n.copy(e,r.matrix):n.identity(e);if(s){Ct(h,i.transformMat4(de,s,h),h)}const u=function(t,e,r,n,i,s,o){e=d.copy(Dt,e);const a=W(Dt,e[0]*Zt,e[1]*Zt,e[2]),c=E.getTranslation(Ft,r),l=n.ellipsoid;var f;f=0===d.len(c)?d.set(Gt,0,0,-6378137):J(Gt,c),Xt.x=f[0],Xt.y=f[1];const h=n.project(Xt,Yt);kt[0]=h.x/i,kt[1]=h.y/i,kt[2]=(f[2]+o)*s;const u=xt(a,l,Ht),_=function(t,e,r){var n=t[0],i=t[1],s=t[2],o=t[4],a=t[5],c=t[6],l=t[8],f=t[9],h=t[10],u=e[0],_=e[1],d=e[2],E=e[3],T=e[4],m=e[5],A=e[6],p=e[7],y=e[8],R=n*u+o*_+l*d,g=i*u+a*_+f*d,b=s*u+c*_+h*d,I=n*E+o*T+l*m,N=i*E+a*T+f*m,S=s*E+c*T+h*m,O=n*A+o*p+l*y,M=i*A+a*p+f*y,w=s*A+c*p+h*y;return r[0]=R,r[1]=g,r[2]=b,r[3]=0,r[4]=I,r[5]=N,r[6]=S,r[7]=0,r[8]=O,r[9]=M,r[10]=w,r[11]=0,r[12]=t[12],r[13]=t[13],r[14]=t[14],r[15]=t[15],r}(E.invert(Vt,u),T.fromMat4(zt,r),t);return Ct(t,kt,_),t}(h,o,h,a.getProjection(),a.getGLRes(),f,c),_=function(t,e){return d.set(t,e[12],e[13],e[14]),t}(Ae,u);let m=this.t.options.offset;if(y(m)){m=m(this.t.At(r.id).center)}return i.set(me,m[0],m[1],0),i.sub(_,_,me),Ct(u,_,u),u}createCMPTMesh(t,e,r,n){if(this.p[e]){const t=this.p[e];return console.warn(`mesh with id(${e}) was already created.`),n(null,{id:e,mesh:t}),t}const{content:i}=t,s=[];for(let t=0;t<i.length;t++){const{magic:n}=i[t],o=e+"."+t;"b3dm"===n?this.createB3DMMesh(i[t],o,r,((t,{mesh:e})=>{s.push(e)})):"i3dm"===n?this.createI3DMMesh(i[t],o,r,((t,{mesh:e})=>{s.push(e)})):"pnts"===n?this.createPntsMesh(i[t],o,r,((t,{mesh:e})=>{s.push(e)})):"cmpt"===n&&this.createCMPTMesh(i[t],o,r,((t,{mesh:e})=>{s.push(e)}))}return this.p[e]=s,n(null,{id:e,mesh:s}),s}dt(t,e,r,n,i){const s=("phong"===(this.t.options.services[n].shader||"phong")?this.Z:this.W).getGeometryDefines(e);return i.asset&&"S3M"===i.asset.generator&&this.yt(s,e,i),e.data.uvRegion&&(s.HAS_I3S_UVREGION=1),s}yt(t,e,r){e.data.aNormal&&(t.VertexNormal=1),e.data.instanceId&&(t.Instance=1),e.data.aTexCoord0&&(t.TexCoord=1),e.data.aColor&&(t.VertexColor=1),e.data.aTexCoord1&&(t.TexCoord2=1),e.data.uv2&&(t.InstanceBim=1),e.data.aTexCoord0&&r.textures.length&&(t.COMPUTE_TEXCOORD=1)}_t(t,e,r,n,i,s,o){let a=!1;n.asset&&"S3M"===n.asset.generator&&(a=!0,n.extensions=n.extensions||{},n.extensions.KHR_techniques_webgl=Wt);const c=n.url+"-"+e+"-"+r;if(this.R[c])return this.R[c].refCount++,this.R[c];let l,f;const h=n.materials[t.material];if(n.extensions&&n.extensions.KHR_techniques_webgl&&h.extensions&&h.extensions.KHR_techniques_webgl){const e=this.Rt(t,n,s,a);l=e.material,f=e.geometry;this.t.options.services[i.H].fillEmptyDataInMissingAttribute&&(f.desc.fillEmptyDataInMissingAttribute=!0)}else{f=this.gt(t,s,Re);const e=this.t.options.services[i.H].material;l=this.bt(t.material,n,o,e||ce)}l&&!l.isReady()?l.It=i.id:l||(l=this.U);const u={refCount:1,geometry:f,material:l};return f.properties.url=c,this.R[c]=u,u}Rt(t,e,r,n){const{geometry:i,material:s}=this.B.createMesh(t,e,r,n);return{geometry:i,material:s}}gt(t,e,n){const i=t.attributes;if(i.COLOR_0){const t=i.COLOR_0.array||i.COLOR_0;if(t instanceof Float32Array){const e=new Uint8Array(t.length);for(let r=0;r<e.length;r++)e[r]=Math.round(255*t[r]);i.COLOR_0.array?(i.COLOR_0.array=e,i.COLOR_0.componentType=5121):i.COLOR_0=e}}const s={};for(const t in i){const e=te(this.l,i[t],{dimension:i[t].itemSize}),r=n[t]||t;s[r]={buffer:e},i[t].quantization&&(s[r].quantization=i[t].quantization),r===n.POSITION&&(s[r].array=i[t].array,s[r].min=i[t].min,s[r].max=i[t].max)}delete t.attributes;const o=new r.Geometry(s,t.indices?t.indices.array?t.indices.array.slice():t.indices:null,0,{positionAttribute:n.POSITION,normalAttribute:n.NORMAL,uv0Attribute:n.TEXCOORD_0,uv1Attribute:n.TEXCOORD_1,color0Attribute:n.COLOR_0,tangentAttribute:n.TANGENT,pickingIdAttribute:n._BATCHID,primitive:void 0===t.mode?"triangles":Jt(t.mode)});return o.generateBuffers(this.l,{excludeElementsInVAO:e}),o}Tt(t,e,r,s){const o=n.identity(t),a=this.getMap();Ee.x=r[0],Ee.y=r[1];const c=this._prjToPoint(Ee),l=this.Nt(),f=1/(a.getGLZoom?a.getResolution(a.getGLZoom()):a.getGLRes());let h;Ee.x=e[0],Ee.y=e[1],h=a.altitudeToPoint?this.P:a.distanceToPointAtRes(100,100,a.getGLRes(),Ee).y/100;let u=this.t.options.offset;y(u)&&(u=u(Ee));const _=this.t.options.services[s].heightOffset||0;return i.set(Ae,c.x-u[0],c.y-u[1],h*r[2]+h*_),n.translate(o,o,Ae),i.set(l,f,f,h),n.scale(o,o,l),o}lt(t,e){const r=n.identity(t),s=this.getMap(),o=this.Nt();Ee.x=e[0],Ee.y=e[1];const a=s.distanceToPointAtRes(100,100,s.getGLRes(),Ee);let c;return c=s.altitudeToPoint?this.P:a.y/100,i.set(o,a.x/100*1.01,a.y/100*1.01,c),n.scale(r,r,o),r}v(){const t={x:0,y:0,width:()=>this.i?this.i.width:1,height:()=>this.i?this.i.height:1};this.tt=new r.MeshShader({vert:"attribute vec3 aPosition;\n\n\n\nuniform mat4 projViewModelMatrix;\n\n\n\nvoid main() {\n\n gl_Position = projViewModelMatrix * vec4(aPosition, 1.0);\n\n}\n\n",frag:"precision mediump float;\nuniform vec3 color;\nvoid main() {\n gl_FragColor = vec4(color, 1.0);\n}\n",uniforms:["color",{name:"projViewModelMatrix",type:"function",fn:(t,e)=>n.multiply([],e.projViewMatrix,e.modelMatrix)}],extraCommandProps:{viewport:t}});const e=[],i=[];this.j=new r.MeshShader({vert:"const float SHIFT_RIGHT_11 = 1.0 / 2048.0;\n\nconst float SHIFT_RIGHT_5 = 1.0 / 32.0;\n\nconst float SHIFT_LEFT_11 = 2048.0;\n\nconst float SHIFT_LEFT_5 = 32.0;\n\nconst float NORMALIZE_6 = 1.0 / 64.0;\n\nconst float NORMALIZE_5 = 1.0 / 32.0;\n\n\n\n#ifdef HAS_POSITION\n\n attribute vec3 POSITION;\n\n#endif\n\n\n\n#if defined(HAS_RGB)\n\n attribute vec3 RGB;\n\n#elif defined(HAS_RGBA)\n\n attribute vec4 RGBA;\n\n#elif defined(HAS_RGB565)\n\n attribute float RGB565;\n\n#endif\n\n\n\nuniform vec4 pointColor;\n\nuniform float pointSize;\n\n\n\nuniform mat4 projViewModelMatrix;\n\nuniform float pointOpacity;\n\n\n\nvarying vec4 vColor;\n\n\n\n#ifdef HAS_NORMAL\n\n #ifdef HAS_NORMAL_OCT16P\n\n attribute vec2 NORMAL_OCT16P;\n\n float signNotZero(float value) {\n\n return value >= 0.0 ? 1.0 : -1.0;\n\n }\n\n vec2 signNotZero(vec2 value) {\n\n return vec2(signNotZero(value.x), signNotZero(value.y));\n\n }\n\n vec3 octDecode(vec2 encoded, float range) {\n\n if (encoded.x == 0.0 && encoded.y == 0.0) {\n\n return vec3(0.0, 0.0, 0.0);\n\n }\n\n encoded = encoded / range * 2.0 - 1.0;\n\n vec3 v = vec3(encoded.x, encoded.y, 1.0 - abs(encoded.x) - abs(encoded.y));\n\n if (v.z < 0.0) {\n\n v.xy = (1.0 - abs(v.yx)) * signNotZero(v.xy);\n\n }\n\n return normalize(v);\n\n }\n\n vec3 octDecode(vec2 encoded) {\n\n return octDecode(encoded, 255.0);\n\n }\n\n #else\n\n attribute vec3 NORMAL;\n\n #endif\n\n uniform vec3 lightDir;\n\n uniform mat3 modelNormalMatrix;\n\n uniform mat4 positionMatrix;\n\n float getLambertDiffuse(vec3 lightDir, vec3 normal) {\n\n return max(dot(-lightDir, normal), 0.0);\n\n }\n\n#endif\n\n\n\nvoid main() {\n\n #if defined(HAS_RGB)\n\n vColor = vec4(RGB / 255.0, 1.0) * pointOpacity;\n\n #elif defined(HAS_RGBA)\n\n vColor = RGBA / 255.0 * pointOpacity;\n\n #elif defined(HAS_RGB565)\n\n float compressed = RGB565;\n\n float r = floor(compressed * SHIFT_RIGHT_11);\n\n compressed -= r * SHIFT_LEFT_11;\n\n float g = floor(compressed * SHIFT_RIGHT_5);\n\n compressed -= g * SHIFT_LEFT_5;\n\n float b = compressed;\n\n vec3 rgb = vec3(r * NORMALIZE_5, g * NORMALIZE_6, b * NORMALIZE_5);\n\n vColor = vec4(rgb, 1.0);\n\n #else\n\n vColor = pointColor;\n\n #endif\n\n\n\n #ifdef HAS_POSITION\n\n vec3 localPos = POSITION;\n\n #endif\n\n\n\n #ifdef HAS_NORMAL\n\n mat3 positionNormalMatrix = mat3(positionMatrix);\n\n mat3 normalMatrix = modelNormalMatrix * positionNormalMatrix;\n\n #ifdef HAS_NORMAL_OCT16P\n\n vec3 localNormal = octDecode(NORMAL_OCT16P);\n\n #else\n\n vec3 localNormal = NORMAL;\n\n #endif\n\n vec3 normal = normalize(normalMatrix * localNormal);\n\n float colorStrength = getLambertDiffuse(lightDir, normal);\n\n colorStrength = max(colorStrength, 0.5);\n\n vColor *= colorStrength;\n\n #endif\n\n\n\n gl_Position = projViewModelMatrix * vec4(localPos, 1.0);\n\n gl_PointSize = pointSize;\n\n}\n\n",frag:"#define SHADER_NAME PNTS\n\nprecision mediump float;\n\n\n\nvarying vec4 vColor;\n\n\n\nvoid main() {\n\n gl_FragColor = vColor;\n\n}\n\n",uniforms:[{name:"projViewModelMatrix",type:"function",fn:(t,e)=>n.multiply(i,e.projViewMatrix,e.modelMatrix)},{name:"modelNormalMatrix",type:"function",fn:(t,r)=>s.fromMat4(e,r.modelMatrix)}],extraCommandProps:{viewport:t,blend:{enable:!0,func:{src:"src alpha",dst:"one minus src alpha"},equation:"add"},depth:{enable:!0,range:[0,1],func:"<"}}});const o=this.L();this.Z=new r.PhongShader({extraCommandProps:o}),this.W=new r.pbr.StandardShader({extraCommandProps:o});const a=this.t;ne(a.getRenderer().canvas,this.l,a.getMap()),this.picking=new r.FBORayPicking(this.h,{vert:this.W.vert,extraCommandProps:o,uniforms:this.W.uniforms,defines:{"PICKING_MODE":1,"ENABLE_PICKING":1,"HAS_PICKING_ID":1}},this.pickingFBO,this.getMap())}L(){return{viewport:{x:0,y:0,width:()=>this.i?this.i.width:1,height:()=>this.i?this.i.height:1},colorMask:(t,e)=>e.colorMask||_e,cull:{enable:!0,face:(t,e)=>e.cullFace||"back"},stencil:{enable:(t,e)=>!0===e.stencilEnable,func:{cmp:(t,e)=>e.meshProperties.isLeaf?"always":">=",ref:(t,e)=>e.meshProperties.level},opFront:{fail:"keep",zfail:"keep",zpass:"replace"},opBack:{fail:"keep",zfail:"keep",zpass:"replace"}},blend:{enable:!0,func:{src:"src alpha",dst:"one minus src alpha"},equation:"add"},polygonOffset:{enable:!0,offset:(t,e)=>e.meshProperties.polygonOffset}}}et(t){return{projViewMatrix:this.getMap().projViewMatrix,color:t&&t.color||[0,1,0]}}K(t){const e=this.getMap(),r=e.getLightManager(),n=(r&&r.getDirectionalLight()||{}).direction||[1,1,-1],s=t&&t.pointOpacity||1;return{projViewMatrix:e.projViewMatrix,pointOpacity:s,lightDir:i.normalize(n,n)}}F(){const t=this.getMap(),e=this.t.getRenderer().canvas,{iblTexes:r,dfgLUT:n}=se(e),i=oe(t,r,n);return p(i,{czm_lightDirectionEC:i.light0_viewDirection,lightSpecular:[1,1,1],viewMatrix:t.viewMatrix,projMatrix:t.projMatrix,projViewMatrix:t.projViewMatrix,outSize:[e.width,e.height],polygonFill:[1,1,1,1],polygonOpacity:1}),i}bt(t,e,n,i){const s=e.materials[t];if(!s||!s.baseColorTexture&&!s.pbrMetallicRoughness)return null;const a=p({},i);if(s.baseColorTexture){const t=e.textures[s.baseColorTexture.index];let r;t&&!t.image.color&&(r=this.St(t)),a.baseColorFactor=t&&t.image.color||s.baseColorFactor||[1,1,1,1],r&&(a.baseColorTexture=r)}else{if(s.normalTexture){const t=this.St(e.textures[s.normalTexture.index]),r=s.normalTexture.scale||1;a.normalTexture=t,a.normalMapFactor=r}if(s.occlusionTexture){const t=this.St(e.textures[s.occlusionTexture.index]),r=s.occlusionTexture.strength||1;a.occlusionTexture=t,a.occlusionFactor=r}if(s.emissiveTexture){const t=this.St(e.textures[s.emissiveTexture.index]);a.emissiveTexture=t}s.emissiveFactor;const t=s.pbrMetallicRoughness;if(t){if(t.baseColorFactor&&(a.baseColorFactor=t.baseColorFactor),t.baseColorTexture&&void 0!==t.baseColorTexture.index){const r=e.textures[t.baseColorTexture.index];r.image&&r.image.color?a.baseColorFactor=a.baseColorFactor?o.multiply(a.baseColorFactor,a.baseColorFactor,r.image.color):r.image.color:(a.baseColorTexture=this.St(r),a.baseColorTexture.getREGLTexture(this.l))}if(A(t.metallicFactor)||(a.metallicFactor=t.metallicFactor),A(t.roughnessFactor)||(a.roughnessFactor=t.roughnessFactor),s.metallicRoughnessTexture){const t=this.St(e.textures[s.metallicRoughnessTexture.index]);a.metallicRoughnessTexture=t}}}if(s.s3mMaterial)return new r.Material(a);let c=new r.pbr.StandardMaterial(a);return"phong"===n&&(c=r.PhongMaterial.convertFrom(c)),c.once("complete",this.M),c}St(t){const e={type:t.type?$t(t.type):"uint8",format:t.format?Qt(t.format):"rgba",flipY:!!t.flipY},n=t.image;n.array?e.data=n.array:n.mipmap&&(e.mipmap=n.mipmap),e.width=n.width,e.height=n.height;const i=t.sampler||t.texture.sampler;return i&&(i.magFilter&&(e.mag=Kt(i.magFilter)),i.minFilter&&(e.min=jt(i.minFilter)),i.wrapS&&(e.wrapS=qt(i.wrapS)),i.wrapT&&(e.wrapT=qt(i.wrapT))),new r.Texture2D(e,this.O)}Ot(t){const e=t.image,r=window.URL||window.webkitURL,n=new Blob([e.array],{type:e.mimeType});return r.createObjectURL(n)}C({target:t}){const e=t.It,r=this.u[e];if(r.count--,!r.count){const t=r.meshes;this.T[e]=t,delete this.u[e];const n=t.Et;delete t.Et,n(null,{mesh:r.meshes,id:e})}}Nt(){return le}st(t){return this.t.st(t)}ct(t,e){const r=this.getMap();return r.getGLZoom?r.distanceToPoint(t,e,r.getGLZoom()):r.distanceToPointAtRes(t,e,r.getGLRes())}_pointToPrj(t){const e=this.getMap();return e.getGLZoom?e._pointToPrj(t,e.getGLZoom()):e._pointToPrjAtRes(t,e.getGLRes())}_prjToPoint(t){const e=this.getMap();return e.getGLZoom?e._prjToPoint(t,e.getGLZoom()):e._prjToPointAtRes(t,e.getGLRes(),Te)}ht(t){return"Y"===t?ee:"X"===t?re:fe}pick(t,e,r=3){const n=this.t;if(!n||!n.options.picking)return[];if(!this.pickingFBO||!this.picking)return[];const i=this.getMap(),s=this.F(),o=this.picking;o.render(this.g.getMeshes(),s,!0);let a={};o.getRenderedMeshes().length&&(a=o.pick(t,e,r,s,{viewMatrix:i.viewMatrix,projMatrix:i.projMatrix,returnPoint:n.options.pickingPoint}));const{meshId:c,pickingId:l,point:f,coordinate:h}=a,u=(0===c||c)&&o.getMeshAt(c);if(!u||!u.geometry)return[];const _=u.properties;f&&f.length&&(f[0]=Math.round(1e5*f[0])/1e5,f[1]=Math.round(1e5*f[1])/1e5,f[2]=Math.round(1e5*f[2])/1e5);const d={batchId:l};if(n.options.debug&&(d.debugInfo=_),_&&_.batchTable){const{batchTable:t,batchTableBin:e,count:r}=_,n=l;for(const i in t)void 0!==t[i].byteOffset?d[i]=Et(t[i],e,r,n):d[i]=t[i][n]}return[{data:d,point:f,coordinate:h}]}G(t){let e=new Set;for(let r=0,n=t.length;r<n;r++){const n=t[r].data.node;this.k(n)&&e.add(n.V)}e=Array.from(e),e.sort();const r=new Map,n=e.length;for(let t=0;t<n;t++)r.set(e[t],t);return r}}
7
7
  /*!
8
- * @maptalks/gl v0.68.1
8
+ * @maptalks/gl v0.76.1
9
9
  * LICENSE : UNLICENSED
10
10
  * (c) 2016-2022 maptalks.com
11
- */const be=function(){if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if("undefined"!=typeof global)return global;throw new Error("unable to locate global object")},Ie=be(),Ne=Ie.gl_trans__coders=Ie.gl_trans__coders||{};function Se(t,e){if(e)for(let r=0;r<e.length;r++){t[e[r].id||e[r].index]=e[r]}}Ne.inject=function(t){const e=t.toString(),r=e.indexOf("{")+1,n=e.substring(0,r),i=Ie.gl_trans__coders=Ie.gl_trans__coders||{};let s=`${n}\n const _____getGlobal = ${be.toString()};\n const g___lobals = _____getGlobal()\n const tran_____scoders = g___lobals['gl_trans__coders'] = g___lobals['gl_trans__coders'] || {};`;for(const t in i)"inject"!==t&&"getTranscoder"!==t&&"registerTranscoder"!==t&&(s+='tran_____scoders["'+t+'"] ='+i[t].toString()+"\n;");return s+="\n"+e.substring(n.length),s},Ne.registerTranscoder=function(t,e){Ne[t]=e},Ne.getTranscoder=function(t){return Ne[t]};const Oe=[];class xe{constructor(t,e,r,n){this.St=t,this.k=e,this.Ot=n,this.xt=r.version,t.indexOf("i3s:tileset:")<0?(this.xt<=1.6?this.wt="root":this.wt=0,r.version=this.xt):(this.wt=t.substring("i3s:tileset:".length),this.xt>1.6&&(this.wt=parseInt(this.wt))),this.St=t,this.Mt=r}load(){const t=this.Mt,e=t.layerScene.baseUrl;if(this.xt<=1.6)return t[this.wt]&&t[this.wt].lodSelection?(this.Ct=t[this.wt],this.vt()):new Promise((r=>{let n=e+"/nodes/"+this.wt;t.layerScene.eslpk&&(n+="/3dNodeIndexDocument.json"),this.Ot(this.k,n,(()=>{this.Ct=t[this.wt],r(this.vt())}))}));if(this.xt>=1.7){if(t[this.wt])return this.Ct=t[this.wt],this.vt();const r=Math.floor(this.wt/t.nodesPerPage);return new Promise((n=>{let i=e+"/nodepages/"+r;t.layerScene.eslpk&&(i+=".json"),this.Ot(this.k,i,(()=>{this.Ct=t[this.wt],n(this.vt())}))}))}return null}getTileset(){return this.Ut}getChildrenURL(){return this.Bt}vt(){const t=this.Mt,e=t.layerScene.baseUrl,r=this.Ct.children,n=[],i={};if(r)for(let s=0;s<r.length;s++)if(this.xt<=1.6){const o=r[s].id;if(t[o])continue;const a=o;i[a]||(i[a]=new Promise((r=>{let n=e+"/nodes/"+a;t.layerScene.eslpk&&(n+="/3dNodeIndexDocument.json"),this.Ot(this.k,n,(()=>{r()}))})),n.push(i[a]))}else{const o=r[s];if(t[o])continue;const a=Math.floor(o/t.nodesPerPage);i[a]||(i[a]=new Promise((r=>{let n=e+"/nodepages/"+a;t.layerScene.eslpk&&(n+=".json"),this.Ot(this.k,n,(()=>{r()}))})),n.push(i[a]))}return n.length?Promise.all(n).then((()=>this.Lt())):this.Lt()}Lt(){return Promise.resolve(this.Pt())}Dt(t){Se(this.Mt,t)}Pt(){return{asset:{i3s:!0,version:"1.0",gltfUpAxis:"Z"},geometricError:Number.MAX_VALUE,root:this.Ft(this.Ct,!0)}}Ft(t){const e=this.xt,r=this.Mt,n=t;var i,s=n.obb,o=n.mbs,a={};if(o)i=we([],o[0],o[1],o[2]),a.sphere=[...i,o[3]];else if(s){const t=function(t,e,r){const n=T.fromQuat([],r);return n[0]=n[0]*e[0],n[1]=n[1]*e[0],n[2]=n[2]*e[0],n[3]=n[3]*e[1],n[4]=n[4]*e[1],n[5]=n[5]*e[1],n[6]=n[6]*e[2],n[7]=n[7]*e[2],n[8]=n[8]*e[2],[...t,...n]}(i=we([],s.center[0],s.center[1],s.center[2]),s.halfSize,s.quaternion),e=t[3]+t[6]+t[9],r=t[4]+t[7]+t[10],n=t[5]+t[8]+t[11];d.set(Oe,e,r,n);const o=d.len(Oe);a.sphere=[...i,o]}var c=1/0,l=0;if(n.mbs?l=n.mbs[3]:n.obb&&(l=Math.max(Math.max(n.obb.halfSize[0],n.obb.halfSize[1]),n.obb.halfSize[2])),void 0!==n.lodThreshold)"maxScreenThresholdSQ"===r.lodSelectionMetricType?c=l/(Math.sqrt(n.lodThreshold)/(.25*Math.PI)):console.error("Unsupported lodSelectionMetricType in Layer");else if(void 0!==n.lodSelection)for(var f=0;f<n.lodSelection.length;f++)"maxScreenThreshold"===n.lodSelection[f].metricType&&(c=l/n.lodSelection[f].maxError);(c===1/0||isNaN(c))&&(c=1e5);var u=16*c;const h=E.identity([]),_=n.children;var m;if(_){m=[];const t=this.Mt;for(let r=0;r<_.length;r++){const n=e<=1.6?_[r].id:_[r];if(!t[n]){m=null;break}m.push(this.Ft(t[n]))}}var A={refine:"REPLACE",boundingVolume:a,transform:h,geometricError:u};return e<=1.6?t.lodSelection?t.geometryData&&(A.content={uri:"i3s:mesh:"+(t.id||t.index)}):A.content={uri:"i3s:tileset:"+(t.id||t.index)}:_&&_.length&&!m?A.content={uri:"i3s:tileset:"+(t.id||t.index)}:n.mesh&&(A.content={uri:"i3s:mesh:"+(t.id||t.index)}),m&&m.length&&(A.children=m),A}getJSON(){return this.Ct}}function we(t,e,r,n){return K(t,g(e),g(r),n)}const Me=!!Ne.ktx2,Ce=n.identity([]),ve=(()=>{try{if("object"==typeof WebAssembly&&"function"==typeof WebAssembly.instantiate){const t=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(t instanceof WebAssembly.Module)return new WebAssembly.Instance(t)instanceof WebAssembly.Instance}}catch(t){}return!1})();function Ue(t){return t.indexOf("i3s:mesh")>=0}const Be="i3s:mesh:".length;function Le(t,e,r,n,i){const s=e.layerScene.eslpk,o=function(t,e){const r=e.substring(Be);return t>=1.7?parseInt(r):r}(e.version,t),a=e[o],c=e.layerScene.baseUrl,l=[];let f=!1;const u=Ce;let h,_;if(e.version<=1.6){if(!a.geometryData)return null;const t=a.geometryData.length;let r=c+`/nodes/${a.id}/`+a.geometryData[t-1].href;s&&(r+=".bin");const n={geometry:{url:r,info:e.layerScene.store.defaultGeometrySchema}};let i=a.textureData&&a.textureData[0]&&a.textureData[0].href;if(i){const t=e.layerScene.store.textureEncoding[0];let r;r="image/jpeg"===t?"jpg":"png",s&&(i+="."+r);const o={pbrMetallicRoughness:{baseColorTexture:{url:c+`/nodes/${a.id}/`+i,factor:1,format:r,mimeType:t},metallicFactor:0}};n.material=o}l.push(n)}else{h=a.mesh.geometry,_=a.mesh.material;const t=e.layerScene.geometryDefinitions[h.definition],{geometryBuffers:o}=t;f=n&&2===o.length;const u=Ne.draco&&f?o[1]:o[0],d=Ne.draco&&f?1:0;let E=c+`/nodes/${h.resource}/geometries/`+d;s&&(E+=".bin");const T={geometry:{url:E,info:u}};if(i&&ve&&f&&!Ne.draco)throw new Error("Must import @maptalks/transcoder.draco to load i3s draco compressed geometry");const m=e.layerScene.materialDefinitions,A=e.layerScene.textureSetDefinitions;let p,y=0;if(_&&(y=m[_.definition]),m){p=function(t,e,r,n,i,s){const o=JSON.parse(JSON.stringify(t));return Pe(o,e,r,n,i,s),o}(y,A,c,_.resource,r,e.layerScene.eslpk)}else p={pbrMetallicRoughness:{metallicFactor:0}};T.material=p,l.push(T)}return{dracoCompression:f,meshes:l,nodeIndex:o,center:a.obb&&a.obb.center||a.mbs&&[a.mbs[0],a.mbs[1],a.mbs[2]],transform:u}}function Pe(t,e,r,n,i,s){for(const o in t)if(t[o]&&t[o].textureSetDefinitionId>=0){const a=e[t[o].textureSetDefinitionId],c="images/"+a.formats[0].format,l=De(a.formats,i),f={url:r+`/nodes/${n}/textures/${l.name}`,factor:void 0===t[o].factor?1:t[o].factor,format:l.format,mimeType:c};if(s){let t="";switch(l.format){case"dds":t="bin.dds";break;case"jpg":case"png":t=l.format}f.url+="."+t}t[o]=f}else R(t[o])&&Pe(t[o],e,r,n,i,s)}function De(t,e){for(let r=0;r<=t.length;r++){const n=t[r].format;if("dds"===n&&e.hasExtension("WEBGL_compressed_texture_s3tc"))return t[r];if("jpg"===n||"png"===n)return t[r];if("ktx2"===n&&Me)return t[r]}return null}const Fe=[];class Ge extends t.renderer.CanvasRenderer{constructor(t){super(t),this.prepareWorker(),this.tilesLoading={},this.tileCache=new G(1024*t.options.maxGPUMemory*1024,this.deleteTile.bind(this)),this.Gt={},this.kt=[],this.Ot=this.Ht.bind(this)}getAnalysisMeshes(){if(!this.painter)return Fe;const t=this.painter.getPaintedMeshes();if(!t)return Fe;const e=[],{b3dmMeshes:r,pntsMeshes:n,i3dmMeshes:i}=t;return r.length&&U(e,r),n.length&&U(e,n),i.length&&U(e,i),e}needToRedraw(){return!!this.getMap().isInteracting()||(!!this.kt.length||super.needToRedraw())}drawOnInteracting(t,e,r){this.draw(e,r)}draw(t,e){const r=this.prepareCanvas();if(r&&!r.intersects(this.canvasExtent2D))return void this.completeRender();const{root:n,tiles:i}=this.layer.getTiles(),s=i.length;if(!i||!s)return void this.completeRender();this.zt(),this.Vt();const{selectedTiles:o,leaves:a,requests:c}=this.Xt(n,i);c.length&&this.loadTiles(c),this.Yt(o,a,e),this.Zt(),c.length||this.completeRender()}Xt(t,e){let r=[];this.Kt();let n=0;const i=this.Wt(),s={};let o=!1,a=!1;for(let t=0;t<e.length;t++){const i=e[t],c=i.node;if(s[c.id])continue;s[c.id]=1;let l=!1;const f=this.getCachedTile(c.id);if(this.jt(c.id)?(n++,l=a=!0,this.tilesLoading[c.id].current=!0):f?(this.getTileOpacity(f)<1&&(l=a=!0),o=!0,i.selected=!0,i.data=f):this.painter.has(c)||(l=a=!0,r.push(c)),!l)continue;if(this.qt(i))o=!0;else{this.$t(i).length&&(o=!0)}}let c=[],l={};if(o&&({selectedTiles:c,leaves:l}=this.Jt(t)),r.length>1&&(r.sort(ke),i)){const t=i-n;r=t>0?r.slice(0,t):[]}return{loading:a,requests:r,selectedTiles:c,leaves:l}}Jt(t){const e=[],r={};let n;const i=[t],s=[];for(;i.length>0||s.length>0;){if(s.length>0){const t=s[s.length-1];if(t.Qt===i.length){s.pop(),t===n&&(t.leave=!0,r[t.node.id]=1),e.push(t);continue}}const t=i.pop(),o=t.children;if(t.selected)if("add"===t.node.refine)r[t.node.id]=1,t.selectionDepth=s.length,e.push(t);else{if(t.selectionDepth=s.length,n=t,0===o.length){t.leave=!0,r[t.node.id]=1,e.push(t);continue}s.push(t),t.Qt=i.length}for(let t=0;t<o.length;t++)i.push(o[t])}return{selectedTiles:e,leaves:r}}qt(t){if(!t.parent)return null;let e=t.parent;for(;e&&e.level>=0;){const t=e.node.id;if(this.tileCache.has(t))return e.selected=!0,e.data=this.tileCache.get(t),e;e=e.parent}return null}$t(t){const e=[];if(!t.node.children||!t.node.children.length)return e;const r=t.te+1,n=[t.node];for(;n.length>0;){const i=n.pop().children;for(let s=0,o=i.length;s<o;s++){if((!i[s].content||!i[s].content.url)&&i[s].children&&i[s].children.length){n.push(i[s]);continue}const o=i[s].id;if(this.tileCache.has(o)){const r=this.layer.ee(i[s],t);r.selected=!0,r.data=this.tileCache.get(o),t.children.push(r),e.push(r)}else i[s].te<=r&&n.push(i[s])}}return e}Yt(t,e,r){this.tileCache.markAll(!1);for(let e=0,r=t.length;e<r;e++){const r=t[e].data;r.current=!0,this.tileCache.add(t[e].node.id,r)}this.tileCache.shrink();const n={tiles:t,leaves:e};this.onDrawTileStart(n);const i=r&&r.renderTarget,s=r&&r.sceneFilter,o=this.painter.paint(t,e,s,i);this.layer.options.debug&&this.painter.paintRegion(t,{color:this.layer.options.debugOutline},s,i),this.onDrawTileEnd(n),o&&this.layer.fire("canvasisdirty",{renderCount:o})}onDrawTileStart(){}onDrawTileEnd(){}loadTiles(t){for(let e=0,r=t.length;e<r;e++){const r=t[e];this.tilesLoading[r.id]={current:!0,node:r},this.loadTile(r)}}loadTile(t){let e=t.content.url;if(C(e)){const r=v(e);return void this.re(e,r,t)}if(function(t){return t.indexOf("i3s:tileset")>=0}(e)){const r=t.k,n=this.ne[r];return new xe(e,r,n,this.Ot).load().then((r=>{this.onTilesetLoad(r,t,e)}))}t&&-1===e.indexOf("http://")&&-1===e.indexOf("https://")&&!Ue(e)&&(e=t.baseUrl+e);const r=this.layer.options.services[t.k];if(r.ajaxInMainThread){let n=r.urlParams;n&&(n=(e.indexOf("?")>0?"&":"?")+n);let i=_.getArrayBuffer(e+(n||""),r.fetchOptions);const s=i.xhr;i=i.then((r=>{delete this.Gt[e],r?this.re(e,r.data,t):this.onTileError(null,t)})).catch((r=>{delete this.Gt[e],this.onTileError(r,t)})),this.Gt[e]=s}else this.re(e,null,t)}re(t,e,n){let i=this.ie;i||(i=r.Util.getSupportedFormats(this.gl.gl||this.gl),this.ie=i);const s=this.layer.options.services[n.k];s.isSuperMapiServer&&(t=function(t,e){const r=t.substring(e.length).split("/"),n=[];for(let t=0;t<r.length;t++)n.push(encodeURIComponent(r[t]));return e+n.join("/")}(t,n.baseUrl));const o={url:t=this.layer.getTileUrl(t,n.baseUrl,s),arraybuffer:e,rootIdx:n.k,upAxis:n.ft,transform:n.matrix,supportedFormats:i};if(Ue(t)){const e=this.ne[n.k];if(o.i3sInfo=Le(t,e,this.regl,this.layer.options.enableI3SCompressedGeometry,this.layer.options.forceI3SCompressedGeometry),!o.i3sInfo)return void this.onTileError({status:404},n)}this.workerConn.loadTile(this.layer.getId(),o,((e,r)=>{if(e)return void this.onTileError(e,n);const{magic:i}=r;"b3dm"===i||"pnts"===i||"i3dm"===i||"cmpt"===i?this.kt.push({data:r,tile:n}):this.onTilesetLoad(r,n,t)}))}Vt(){const t=this.getMap(),e=this.layer.options.meshLimitPerFrame;let r=0;for(;this.kt.length&&(r<e||!t.isInteracting());){const{data:t,tile:e}=this.kt.shift(),{magic:n}=t;"b3dm"===n?this.painter.createB3DMMesh(t,e.id,e,((r,{mesh:n})=>{this.se(t,e,r,n)})):"pnts"===n?this.painter.createPntsMesh(t,e.id,e,((r,{mesh:n})=>{this.se(t,e,r,n)})):"i3dm"===n?this.painter.createI3DMMesh(t,e.id,e,((r,{mesh:n})=>{this.se(t,e,r,n)})):"cmpt"===n&&this.painter.createCMPTMesh(t,e.id,e,((r,{mesh:n})=>{this.se(t,e,r,n)})),r++}}se(t,e,r,n){if(r)this.onTileError(r,e);else{const r=this.oe(n);e.memorySize=r,this.onTileLoad(t,e)}}oe(t){let e=0;if(Array.isArray(t))for(let r=0;r<t.length;r++)t[r]&&(e+=this.oe(t[r]));else t&&(e+=t.getMemorySize());return e}onTileLoad(t,e){this.layer&&(delete this.tilesLoading[e.id],this.layer.onTileLoad(t,e),this.ae(e),this.setToRedraw(),this.layer.fire("tileload",{node:e}))}onTilesetLoad(t,e,r){this.layer&&(t.capabilities||t.layers&&t.layers[0]&&t.layers[0].capabilities?this.ce(t,e,r):(delete this.tilesLoading[e.id],this.layer.onTilesetLoad(t,e,r)))}onTileError(t,e){if(!this.layer)return;const r=e.content.url;console.warn("failed to load 3d tile: "+r),console.warn(t),delete this.tilesLoading[e.id],this.le(e,t),this.setToRedraw(),this.layer.fire("tileerror",{node:e,error:t})}getCachedTile(t){return this.tileCache.get(t)}le(e,r){const n={loadTime:t.Util.now(),current:!0,error:r,node:e};this.tileCache.add(e.id,n)}ae(e){const r={loadTime:t.Util.now(),current:!0,node:e};this.tileCache.add(e.id,r)}abortTileLoading(t){if(!t||!this.workerConn)return;const e=t.node.content.url;if(this.layer.options.services[t.node.k].ajaxInMainThread){const t=this.Gt[e];t&&t.abort()}else this.workerConn.abortTileLoading(this.layer.getId(),e);delete this.Gt[e]}Kt(){if(this.tilesLoading)for(const t in this.tilesLoading)this.tilesLoading[t].current=!1}deleteTile(t){this.painter.deleteTile(t)}createContext(){const t=this.layer,e=t.options.glOptions||{alpha:!0,depth:!0,stencil:!0,preserveDrawingBuffer:!0,antialias:t.options.antialias},r=this.canvas.gl&&this.canvas.gl.wrap;r?(this.gl=this.canvas.gl.wrap(),this.regl=this.canvas.gl.regl):(this.glOptions=e,this.gl=this.fe(this.canvas,e)),this.regl=this.regl||c({gl:this.gl,attributes:e,extensions:["OES_element_index_uint"],optionalExtensions:t.options.optionalExtensions||[]}),r&&(this.canvas.pickingFBO=this.canvas.pickingFBO||this.regl.framebuffer(this.canvas.width,this.canvas.height)),this.pickingFBO=this.canvas.pickingFBO||this.regl.framebuffer(this.canvas.width,this.canvas.height),this.painter=new ge(this.regl,t)}prepareWorker(){const t=this.getMap();this.workerConn||(this.workerConn=new P("@maptalks/3dtiles",t.id));const e=this.workerConn;if(!e.isActive())return;let r=this.layer.options||{};r=p({},r),delete r.offset,r.projection=t.getSpatialReference().getProjection().code;const n=this.layer.getId();e.addLayer(n,r,(t=>{if(t)throw t;this.layer&&(this.ready=!0,this.layer.fire("workerready"))}))}onRemove(){this.painter&&this.painter.remove(),this.pickingFBO&&(this.canvas.pickingFBO||this.pickingFBO.destroy(),delete this.pickingFBO),this.workerConn&&(this.workerConn.removeLayer(this.layer.getId(),(t=>{if(t)throw t})),this.workerConn.remove(),delete this.workerConn),this.clear(),delete this.tileCache,super.onRemove()}clear(){this.Zt(!0),this.tileCache.reset(),this.tilesLoading={},super.clear()}clearCanvas(){this.regl&&this.regl.clear({color:[0,0,0,0],depth:1,stencil:0}),super.clearCanvas()}getTileOpacity(){return 1}getStencilValue(){return 0}Zt(t){this.ue||(this.ue=Date.now());const e=Date.now();if(t||!(e-this.ue<this.layer.options.retireInterval)){this.ue=e;for(const e in this.tilesLoading){const r=this.tilesLoading[e];!t&&r.current||this.abortTileLoading(r)}}}Wt(){return this.getMap().isInteracting()?this.layer.options.loadingLimitOnInteracting:this.layer.options.loadingLimit}fe(t,e){const r=["webgl","experimental-webgl"];let n=null;for(let i=0;i<r.length;++i){try{n=t.getContext(r[i],e)}catch(t){}if(n)break}return n}jt(t){return!!this.tilesLoading[t]}getI3DMMeshes(){return this.painter.getI3DMMeshes()}getPNTSMeshes(){return this.painter.getPNTSMeshes()}getB3DMMeshes(){return this.painter.getB3DMMeshes()}readBatchData(t,e,r){return _t(t,e,0,r)}zt(){if(!this.he)return;const t=this.layer.options.i3sNodepageLimitPerFrame||Number.MAX_VALUE;let e=0;const r=[];for(const n in this.he){const i=this.he[n];if("pending"===i.status)continue;i.status="pending";const s=i.rootIdx;if(r.push(_.getJSON(n).then((t=>{delete this.he[n];const e=this.ne[s];if(e){t.nodes?Se(e,t.nodes):(e[t.id]=t,Se(e,t.children));for(let t=0;t<i.length;t++)i[t]();this.setToRedraw()}else this.setToRedraw()}))),e++,e>=t)break}r.length&&Promise.all(r)}Ht(t,e,r){this.he||(this.he={}),this.he[e]=this.he[e]||[],this.he[e].rootIdx=t,this.he[e].push(r),this.setToRedraw()}ce(t,e,r){this.ne||(this.ne=[]);const n=e.k;this.ne[n]||(this.ne[n]={});const i=this.ne[n],s=this.layer.options.services[n];t.layers&&(t=t.layers[0],"/"!==r[r.length-1]&&(r+="/"),r+="layers/0"),i.version=+(s.i3sVersion||t.store.version),function(t,e,r,n,i,s){if(!i.layerScene){i.layerScene=t,i.nodesPerPage=t.nodePages&&t.nodePages.nodesPerPage||64,i.lodSelectionMetricType=t.nodePages&&t.nodePages.lodSelectionMetricType;let e=n;if(i.layerScene.eslpk=e.indexOf("3dSceneLayer.json")>=0,e.endsWith(".json")){const t=n.lastIndexOf("/");e=t<0?"./":n.substring(0,t)}i.layerScene.baseUrl=function(t){return t.split("?")[0]}(e)}return new xe(n,e,i,s).load()}(t,n,0,r,i,this.Ot).then((t=>{this.onTilesetLoad(t,e,r)}))}pick(t,e,r){return this.painter?this.painter.pick(t,e,r&&r.tolerance):[]}}function ke(t,e){return t.j-e.j}function He(t,e,r){return t[0]=e[r],t[1]=e[r+3],t[2]=e[r+6],t}function ze(t,e,r){return Math.sqrt(function(t,e,r){var n=d.subtract(Ve,r,t),i=He(Xe,e,0),s=He(Ye,e,1),o=He(Ze,e,2),a=d.len(i),c=d.len(s),l=d.len(o);d.normalize(i,i),d.normalize(s,s),d.normalize(o,o);var f=Ke;f[0]=d.dot(n,i),f[1]=d.dot(n,s),f[2]=d.dot(n,o);var u,h=0;f[0]<-a?h+=(u=f[0]+a)*u:f[0]>a&&(h+=(u=f[0]-a)*u);f[1]<-c?h+=(u=f[1]+c)*u:f[1]>c&&(h+=(u=f[1]-c)*u);f[2]<-l?h+=(u=f[2]+l)*u:f[2]>l&&(h+=(u=f[2]-l)*u);return h}(t,e,r))}const Ve=[],Xe=[],Ye=[],Ze=[],Ke=[];const We=2*Math.PI;class je{constructor(t,e,r,n){this.west=t,this.south=e,this.east=r,this.north=n}static contains(t,e){var r=e[0],n=e[1],i=t.west,s=t.east;return s<i&&(s+=We,r<0&&(r+=We)),(r>i||at(r,i,1e-14))&&(r<s||at(r,s,1e-14))&&n>=t.south&&n<=t.north}static southwest(t,e){return e[0]=t.west,e[1]=t.south,e[2]=0,e}static northeast(t,e){return e[0]=t.east,e[1]=t.north,e[2]=0,e}static southeast(t,e){return e[0]=t.east,e[1]=t.south,e[2]=0,e}static northwest(t,e){return e[0]=t.west,e[1]=t.north,e[2]=0,e}}const qe=[0,0,1];function $e(t,e){return K(e,t[0],t[1],t[2])}class Je{constructor(t,e){this.normal=i.copy([],t),this.distance=e}static fromPointNormal(t,e,r){var n=-i.dot(e,t);return i.copy(r.normal,e),r.distance=n,r}}const Qe=[],tr=[],er=[],rr=[],nr=[],ir=[],sr=[],or=[],ar=[],cr=[],lr=new Je([1,0,0],0),fr=[];class ur{constructor(t){this.southwestCornerCartesian=[],this.northeastCornerCartesian=[],this.westNormal=[],this.eastNormal=[],this.southNormal=[],this.northNormal=[],this.rectangle=new je(...t),this.minimumHeight=t[4],this.maximumHeight=t[5],this.computeBox(this.rectangle)}distanceToCamera(t,e){var r,n,s,o=0;if(!je.contains(this.rectangle,e)){var a=this.southwestCornerCartesian,c=this.northeastCornerCartesian,l=this.westNormal,f=this.southNormal,u=this.eastNormal,h=this.northNormal,_=i.subtract(fr,t,a),d=i.dot(_,l),E=i.dot(_,f),T=i.subtract(fr,t,c),m=i.dot(T,u),A=i.dot(T,h);d>0?o+=d*d:m>0&&(o+=m*m),E>0?o+=E*E:A>0&&(o+=A*A)}if(r=e[2],n=this.minimumHeight,r>(s=this.maximumHeight)){var p=r-s;o+=p*p}else if(r<n){var y=n-r;o+=y*y}return Math.sqrt(o)}computeBox(t){const e=this;$e(je.southwest(t,tr),e.southwestCornerCartesian),$e(je.northeast(t,tr),e.northeastCornerCartesian),Qe[0]=t.west,Qe[1]=.5*(t.south+t.north),Qe[2]=0;var r=$e(Qe,er),n=i.cross(nr,r,qe);i.normalize(e.westNormal,n),Qe[0]=t.east;var s=$e(Qe,or),o=i.cross(nr,qe,s);i.normalize(e.eastNormal,o);var a,c=i.subtract(nr,r,s),l=i.normalize(rr,c),f=t.south;if(f>0){Qe[0]=.5*(t.west+t.east),Qe[1]=f;var u=$e(Qe,ar);i.copy(cr,l);var h=Je.fromPointNormal(e.southwestCornerCartesian,e.westNormal,lr);hr(ar,cr,h,e.southwestCornerCartesian),a=it(u,ir)}else a=st(je.southeast(t,tr),ir);var _=i.cross(sr,a,c);i.normalize(e.southNormal,_);var d,E=t.north;if(E<0){Qe[0]=.5*(t.west+t.east),Qe[1]=E;var T=$e(Qe,ar);i.scale(cr,l,-1);var m=Je.fromPointNormal(e.northeastCornerCartesian,e.eastNormal,lr);hr(ar,cr,m,e.northeastCornerCartesian),d=it(T,ir)}else d=st(je.northwest(t,tr),ir);var A=i.cross(sr,c,d);i.normalize(e.northNormal,A)}}function hr(t,e,r,n){var s=t,o=e,a=r.normal,c=i.dot(a,o);if(!(Math.abs(c)<1e-15)){var l=(-r.distance-i.dot(a,s))/c;if(!(l<0))return n=i.scale(n,o,l),i.add(n,s,n)}}const _r=new t.Extent(0,0,0,0),dr=new t.Extent(0,0,0,0),Er=[],Tr=[],mr=[],Ar=[],pr=new t.Point(0,0),yr=[],Rr=new t.Coordinate(0,0),gr=n.identity([]);class br extends t.Layer{constructor(t,e){super(t,e),this._e(),this.Gt={},this.de=[]}_e(){let t=this.options.services.map((t=>t.url));this.Ee=t.map(((t,e)=>function(t,e){t=I(t);return{baseUrl:t.substring(0,t.lastIndexOf("/"))+"/",content:{url:t},refine:"replace",matrix:n.identity([]),k:e,te:0}}(t,e))),this.fire("rootready",{roots:this.Ee.slice(0)})}getTileUrl(t){return t}getExtent(e){if(!e&&0!==e){const e=new t.Extent;for(let t=0;t<this.Ee.length;t++)if(this.Ee[t].boundingVolume){const r=this.boundingVolumeToExtent(this.Ee[t]);e._combine(r)}return e}return this.Ee[e]&&this.Ee[e].boundingVolume?this.boundingVolumeToExtent(this.Ee[e]):null}boundingVolumeToExtent(e){const r=e.boundingVolume.Te?gr:e.matrix,n=this.getMap();if(e.boundingVolume.region){const r=e.boundingVolume.region;return new t.Extent(b(r[0]),b(r[1]),b(r[2]),b(r[3]))}if(e.boundingVolume.sphere){const s=e.boundingVolume.sphere,o=Q([],i.transformMat4([],s,r)),a=s[3],c=n.locate(o,-a,a),l=n.locate(o,a,-a);return new t.Extent(c,l)}if(e.boundingVolume.box){const o=e.boundingVolume.box,a=i.transformMat4([],o,r),c=new t.Coordinate(Q([],a)),l=o.slice(3);s.multiply(l,s.fromMat4([],e.matrix),l);const f=i.length(l.slice(0,3)),u=i.length(l.slice(3,6)),h=i.length(l.slice(6,9)),_=Math.max(f,u,h),d=n.locate(c,-_,_),E=n.locate(c,_,-_);return new t.Extent(d,E)}return null}getRootTiles(){return this.Ee}getTiles(){const t=this.getRenderer();if(!t.ready)return this.me(),{tiles:Ar};const e=this.getMap(),r=e.cameraPosition;let n,s;if(e.getGLZoom)s=e.pointToDistance(r[2],0,e.getGLZoom()),Rr.set(r[0],r[1]),n=e.pointToCoord(Rr,e.getGLZoom());else{const t=e.getGLRes();s=e.pointAtResToDistance(r[2],0,t),Rr.set(r[0],r[1]),n=e.pointAtResToCoord(Rr,t)}this.Ae=this.Ae||[],i.set(this.Ae,g(n.x),g(n.y),s),this.pe=K(this.pe||[],this.Ae[0],this.Ae[1],this.Ae[2]),this.ye=2*Math.tan(.5*g(e.getFov()));const o=e.projViewMatrix,a={children:[],level:-1};let c=a;const l=[];for(let e=0;e<this.Ee.length;e++){let r=1/0;const n=[this.Ee[e]],i=this.Re(e);for(;n.length>0;){const e=n.pop();for(e.id||this.ge(e);c.level>=e.te;)c=c.parent;const s=this.be(e,i,o);if(s<1){let t=c;for(;t&&!t.content;)t=t.parent;0===s&&t&&t.content&&this.Ie(l,t);if(!1===this.options.services[e.k].alwaysShow)continue;if(!(0===s&&e.te<=r))continue;e.content&&(r=e.te)}e.j<1/0&&this.Ne(e);const a=this.ee(e,c);c.children.push(a);const f=e.children,u=f&&f.length,h=a.content;if(!u&&h&&this.Ie(l,a),u){h&&"add"===e.refine&&this.Ie(l,a),c=a;const r=f[0].parent;let i=!1;for(let s=0,o=f.length;s<o;s++){if(r){const e=t.getCachedTile(f[s].id);if(e&&e.error&&404!==e.error.status)continue;i=!0}else{i=!0,f[s].parent=e,f[s].ft=e.ft,f[s].baseUrl=e.baseUrl;const t=f[s].content&&(f[s].content.url||f[s].content.uri);t&&(C(t)||t.indexOf("i3s:")>=0?f[s].baseUrl=e.baseUrl:-1===t.indexOf("http://")&&-1===t.indexOf("https://")?f[s].content.url=e.baseUrl+t:f[s].baseUrl=t.substring(0,t.lastIndexOf("/")+1))}n.push(f[s])}!i&&h&&this.Ie(l,a)}}}return{root:a,tiles:l}}Ie(t,e){const{viewerRequestVolume:r}=e.node;r&&!function(t,e,r){if(r.region){const e=r.region;if(t[0]>=e[0]&&t[0]<=e[2]&&t[1]>=e[1]&&t[1]<=e[3])return!0}else{if(r.sphere)return Ir(r,e);if(r.box)return 0===Nr(r,e)}return!1}(this.Ae,this.pe,r)||t.push(e)}ee(t,e){return{id:t.id,node:t,children:[],level:t.te,parent:e,content:t.content&&t.content.url}}ge(e){e.id=t.Util.GUID(),e.matrix=e.transform||n.identity([]),e.Se=this.Oe(e),e.parent&&(function(t){return t.content&&t.content.uri&&t.content.uri.indexOf("i3s:")>=0}(e)||(e.matrix=n.multiply(e.matrix,e.parent.matrix,e.matrix)),e.k=e.parent.k,void 0===e.te&&(e.te=e.parent.te+1),e.maxExtent=e.parent.maxExtent),e.refine=e.refine&&e.refine.toLowerCase()||"replace",e.content&&!e.content.url&&e.content.uri&&(e.content.url=e.content.uri),this.xe(e)}xe(t){const e=t.boundingVolume;if(!e||e.Te)return;const r=this.options.services[t.k].heightOffset||0,s=this.options.offset,o=y(s)||s[0]||s[1];if(!t.boundingVolume||!r&&n.exactEquals(t.matrix,gr)&&!o)return;const{region:a,box:c,sphere:l}=e;if(a){const t=this.we([b(a[0]),b(a[1])]);a[0]=g(t.x),a[1]=g(t.y);const e=this.we([b(a[2]),b(a[3])]);a[2]=g(e.x),a[3]=g(e.y),a[4]+=r,a[5]+=r}else if(c||l){const e=c||l,n=i.transformMat4(Er,e,t.matrix),s=Q(Tr,n),o=this.we([s[0],s[1]]);s[0]=o.x,s[1]=o.y,s[2]+=r,K(e,g(s[0]),g(s[1]),s[2])}e.Te=!0}Oe(t){return void 0===t.geometricError||!t.boundingVolume}Ne(t){let e=t.parent;for(;e&&e.Se&&!(e.j<=t.j);)e.j=t.j,e=t.parent}onTileLoad(t,e){if(t.children&&(!e.children||!e.children.length)){e.children=t.children;const r=e.content.url;e.baseUrl=r.substring(0,r.lastIndexOf("/")+1);const n=this.getRenderer();n&&n.setToRedraw()}}onTilesetLoad(t,e,r){if(!t)return void console.warn("invalid tileset at : "+r);const i=this.options.services[e.k],s=(t.asset&&t.asset.gltfUpAxis||e&&e.ft||i.upAxis||"Y").toUpperCase();t.root.baseUrl=r.substring(0,r.lastIndexOf("/")+1);const o=r.indexOf("realspace/")>-1;0===e.te&&(t.asset&&t.asset.s3mType&&o||i.isSuperMapiServer)&&(t.root.baseUrl+="data/path/");const a=t.asset.i3s;if(t.root.ft=s,e){const r=e.boundingVolume;p(e,t.root),e.refine=e.refine&&e.refine.toLowerCase()||"replace",r&&(e.boundingVolume=r);const i=t.root.transform;i&&(e.parent?a||(e.matrix=n.multiply([],e.parent.matrix,i)):e.matrix=i),this.xe(e),e.Me=e.content,delete e.content,t.root.content&&(e.content=t.root.content),e.Se=this.Oe(e);const s=e.content&&(e.content.url||e.content.uri);s&&e.content.uri&&(e.content.url=e.content.uri,delete e.content.uri),a||!s||C(s)||-1!==s.indexOf("http://")||-1!==s.indexOf("https://")||(e.content.url=e.baseUrl+s)}this.me(),this.fire("loadtileset",{tileset:t,index:e.k,url:r})}be(t,e,r){if(t.j=1/0,0===t.te||t.Se)return 1;if(!this.Ce(t,e,r))return-1;if(0===t.geometricError)return 1;let n=this.options.services[t.k].maximumScreenSpaceError;null==n&&(n=8);let i=this.ve(t);return 0===i&&t.parent&&(i=.5*(t.parent.Ue||0)),i>=n?1:0}nt(e,r){r||(r=new t.Point(0,0));const n=this.getMap();return n.getGLZoom?n.coordToPoint(e,n.getGLZoom(),r):n.coordToPointAtRes(e,n.getGLRes(),r)}Ce(e,r,i){const o=e.id;let a=this.de[o];const{boundingVolume:c}=e,h=c.sphere,_=c.region,d=c.box;if(!a){let r,i,c;if(_){r=_r.set(b(_[0]),b(_[1]),b(_[2]),b(_[3]));const t=r.getCenter(),e=this.Be(t);r=r.convertTo((t=>this.nt(t,pr)),dr),c=_[4],i=_[5],a=this.de[o]=[[r.xmin,r.ymin,c*e[2]],[r.xmax,r.ymax,i*e[2]]],a.center=t}else if(h){const e=Q(Er,h),r=new t.Coordinate(e),n=this.nt(r,pr).toArray(),i=this.Be(r);n.push(e[2]*i[2]),a=this.de[o]=[n,h[3]*i[2]],a.center=r}else if(d){const r=Q(Er,d),i=new t.Coordinate(r),c=this.nt(i,pr).toArray(),l=this.Be(i);c.push(r[2]*l[2]);const f=d.slice(3);n.exactEquals(e.matrix,gr)||s.multiply(f,s.fromMat4(yr,e.matrix),f);for(let t=0;t<f.length;t++)f[t]*=l[t%3],d[3+t]=f[t];a=this.de[o]=[...c,...f],a.center=i}}if(r){if(_)_r.xmin=a[0][0],_r.ymin=a[0][1],_r.xmax=a[1][0],_r.ymax=a[1][1];else if(h){const t=a[2];_r.xmin=a[0][0]-t,_r.ymin=a[0][1]-t,_r.xmax=a[0][0]+t,_r.ymax=a[0][1]+t}else if(d){const t=a[1],e=a[2];_r.xmin=a[0][0]-t,_r.ymin=a[0][1]-e,_r.xmax=a[0][0]+t,_r.ymax=a[0][1]+e}if(!r.intersects(_r))return!1}return _?l(i,a):h?f(i,a):!!d&&u(i,a)}Be(t){const e=this.getMap(),r=e.distanceToPointAtRes(100,100,e.getGLRes(),t);let n;return n=e.altitudeToPoint?e.altitudeToPoint(100,e.getGLRes())/100:r.y/100,i.set(mr,r.x/100*1.01,r.y/100*1.01,n),mr}we(e){Array.isArray(e)&&(e=new t.Coordinate(e));let r=this.options.offset;if(y(r)&&(r=r(Array.isArray(e)?new t.Coordinate(e):e)),r[0]||r[1]){const t=this.getMap(),n=t.getGLRes(),i=t.coordToPointAtRes(e,n);return i._sub(r),t.pointAtResToCoord(i,n)}return e}Re(e){const r=this.options.services[e].maxExtent;if(!r)return null;const n=this.Ee[e];return n.maxExtent||(n.maxExtent=new t.Extent(r).convertTo((t=>this.nt(t)))),n.maxExtent}ve(t){const e=this.ye,r=t.geometricError;if(0===r)return 0;const n=this.getMap();let i;t.boundingVolume.region?i=function(t,e,r){t.Le||(t.Le=new ur(t.boundingVolume.region));return t.Le.distanceToCamera(e,r)}(t,this.pe,this.Ae):t.boundingVolume.sphere?i=Ir(t.boundingVolume,this.pe):t.boundingVolume.box&&(i=Nr(t.boundingVolume,this.pe));const s=Math.max(Math.abs(i),1e-7),o=r*n.height/(s*e);return t.j=i,t.Ue=o,o}me(){const t=this.getRenderer();t&&t.setToRedraw()}Et(t){return this.de[t]}identify(e,r={}){const n=this.getMap(),i=this.getRenderer();if(!n||!i)return[];const s=n.coordToContainerPoint(new t.Coordinate(e));return this.identifyAtPoint(s,r)}identifyAtPoint(t,e={}){const r=this.getMap(),n=this.getRenderer();if(!r||!n)return[];const i=r.getDevicePixelRatio();return n.pick(t.x*i,t.y*i,e)}}function Ir(t,e){const r=t.sphere,n=i.dist(r,e),s=t.sphere[3];return n<s?0:n-s}function Nr(t,e){const r=t.box;return ze(i.set(Er,r[0],r[1],r[2]),s.set(yr,r[3],r[4],r[5],r[6],r[7],r[8],r[9],r[10],r[11]),e)}br.mergeOptions({"maxGPUMemory":512,"retireInterval":2e3,"loadingLimitOnInteracting":5,"loadingLimit":0,"renderer":"gl","forceRenderOnZooming":!0,"forceRenderOnRotating":!0,"forceRenderOnMoving":!0,"debug":!1,"debugOutline":[0,1,0],"meshLimitPerFrame":1,"i3sNodepageLimitPerFrame":1,"enableI3SCompressedGeometry":!0,"forceI3SCompressedGeometry":!0,"picking":!0,"pickingPoint":!0,"geometryEvents":!1,"antialias":!1,"optionalExtensions":["ANGLE_instanced_arrays","OES_element_index_uint","OES_standard_derivatives","OES_vertex_array_object","OES_texture_half_float","OES_texture_half_float_linear","OES_texture_float","OES_texture_float_linear","WEBGL_depth_texture","EXT_shader_texture_lod","WEBGL_compressed_texture_astc","WEBGL_compressed_texture_etc","WEBGL_compressed_texture_etc1","WEBGL_compressed_texture_pvrtc","WEBGL_compressed_texture_s3tc","WEBGL_compressed_texture_s3tc_srgb"],"offset":[0,0]}),br.registerRenderer("gl",Ge),br.registerJSONType("Geo3DTilesLayer");class Sr{constructor(t,e,r){this.Pe=t,this.De=e||h,this.ie=r,this.Fe={"image/crn":Ne.crn&&Ne.crn(),"image/ktx2":Ne.ktx2&&Ne.ktx2(),"image/cttf":Ne.ktx2&&Ne.ktx2(),"draco":Ne.draco&&Ne.draco()}}static createEmptyB3DM(){return{featureTable:null,batchTable:null,gltf:{}}}load(t,e,r=0,n=0,i){return e?(n||(n=e.byteLength),this.Ge(t,e,r,n,i)):_.getArrayBuffer(t,{}).then((e=>{const i=e.data;return n||(n=i.byteLength),this.Ge(t,i,r,n)}))}Ge(t,e,r,n,i){const s=i&&i.maxTextureSize,o=this.ke(e,r,n,t);if(o.error)return Promise.resolve(o);const a=t.substring(0,t.lastIndexOf("/")),c=new this.De(a,o.glb,{transferable:!0,requestImage:this.Pe,decoders:this.Fe,supportedFormats:this.ie,maxTextureSize:s});return c.load({skipAttributeTransform:!1}).then((e=>{e.url=`${t}-${r}-${n}`;const i=c.transferables;for(let t=0;t<o.transferables.length;t++)i.indexOf(o.transferables[t])<0&&i.push(o.transferables[t]);return{magic:"b3dm",count:o.count,transferables:i,featureTable:o.featureTable,batchTable:o.batchTable,batchTableBin:o.batchTableBin,gltf:e}}))}ke(t,e,r,n){const i=new DataView(t,e,r),s=i.getUint32(4,!0);if(1!==s){const t="Unsupported b3dm version: "+s+", url:"+n;return console.warn(t),{error:t}}if(i.getUint32(8,!0)!==i.byteLength){const t="Length in b3dm header is inconsistent with b3dm's byte length, url: "+n;return console.warn(t),{error:t}}let o,a=i.getUint32(12,!0),c=i.getUint32(16,!0),l=i.getUint32(20,!0),f=i.getUint32(24,!0),u=28+e;l>=570425344?(u-=8,o=a,l=c,f=0,a=0,c=0):f>=570425344&&(u-=4,o=l,l=a,f=c,a=0,c=0);const h=[t];let _,d,E;if(a>0?(_=ft(t,u,a),u+=a,o=_.BATCH_LENGTH):_={"BATCH_LENGTH":o},c>0&&(u+=c),l>0&&(d=ut(t,u,l),u+=l,f>0)){const e=ht(0,u,f);E=t.slice(e.offset,e.offset+e.byteLength),u+=f,h.push(E)}const T=_.BATCH_LENGTH,m={};if(_&&_.BATCH_ID){m.BATCH_ID=dt(_.BATCH_ID,t,undefined.offset,T);const e=m.BATCH_ID.array&&m.BATCH_ID.array.buffer;e&&h.indexOf(e)<0&&h.push(e)}return{count:o,transferables:h,featureTable:_,batchTable:d,batchTableBin:E,b3dm:m,glb:{buffer:t,byteOffset:u,byteLength:i.byteLength+i.byteOffset-u}}}He(){return null}}class Or{constructor(t,e,r,n){this.Pe=t,this.De=e||h,this.ie=r,this.Fe={"image/crn":Ne.crn&&Ne.crn(),"image/ktx2":Ne.ktx2&&Ne.ktx2(),"image/cttf":Ne.ktx2&&Ne.ktx2(),"draco":Ne.draco&&Ne.draco()},this.ze=n}load(t,e,r=0,n=0,i){return e?(n||(n=e.byteLength),this.Ge(t,e,r,n,i)):_.getArrayBuffer(t,{}).then((e=>{const i=e.data;return n||(n=i.byteLength),this.Ge(t,i,r,n)}))}Ge(t,e,r,n,i){return this.Ve(t,e,r,n,i).then((({gltf:i,transferables:s})=>{const o=this.Xe(e,r,n,t);if(o.error)return Promise.resolve(o);for(let t=0;t<s.length;t++)-1===o.transferables.indexOf(s[t])&&o.transferables.push(s[t]);return delete i.transferables,Promise.resolve({magic:"i3dm",count:o.count,transferables:o.transferables,featureTable:o.featureTable,batchTable:o.batchTable,batchTableBin:o.batchTableBin,i3dm:o.i3dm,gltf:i})}))}Ve(t,e,r,n,i){const s=i&&i.maxTextureSize,o={transferable:!0,requestImage:this.Pe,decoders:this.Fe,supportedFormats:this.ie,maxTextureSize:s},a=new DataView(e,r,n),c=32+a.getUint32(12,!0)+a.getUint32(16,!0)+a.getUint32(20,!0)+a.getUint32(24,!0);if(0===a.getUint32(28,!0)){let n=O(new Uint8Array(e,c+r,a.byteLength-c));-1==n.indexOf("://")&&(n=t.substring(0,t.lastIndexOf("/"))+"/"+n);return n.indexOf(".glb")>0?_.getArrayBuffer(n,{}).then((t=>this.Ye(n,{buffer:t.data,byteOffset:0},o))):_.getJSON(n,{}).then((t=>this.Ye(n,t,o)))}{const n={buffer:e,byteOffset:c+r,byteLength:a.byteLength-c};return this.Ye(t,n,o)}}Ye(t,e,r){const n=t.substring(0,t.lastIndexOf("/")),i=new this.De(n,e,r);return i.load({skipAttributeTransform:!0}).then((r=>{let n=0,s=0;return e.buffer&&(n=e.byteOffset||0,s=e.byteLength||0),r.url=`${t}-${n}-${s}`,{transferables:i.transferables,gltf:r}}))}Xe(t,e,r,n){const i=new DataView(t,e,r),s=i.getUint32(4,!0);if(1!==s){const t="Unsupported pnts version: "+s+", url:"+n;return console.warn(t),{error:t}}if(i.getUint32(8,!0)!==i.byteLength){const t="Length in pnts header is inconsistent with pnts's byte length, url: "+n;return console.warn(t),{error:t}}const o=[t],{featureTable:a,featureTableBin:c,batchTable:l,batchTableBin:f}=gt(i,32+e,o),u={},h=a.INSTANCES_LENGTH;if(a.POSITION){const{byteOffset:e}=a.POSITION;u.POSITION={byteStride:0,byteOffset:0,itemSize:3,count:h,componentType:5126,array:new Float32Array(t,e+c.offset,3*h).slice()},o.push(u.POSITION.array.buffer)}else if(a.POSITION_QUANTIZED){const e=a.QUANTIZED_VOLUME_OFFSET,r=a.QUANTIZED_VOLUME_SCALE,{byteOffset:n}=a.POSITION_QUANTIZED;u.POSITION={byteStride:12,byteOffset:0,itemSize:3,count:h,componentType:5126,array:this.Ze(new Uint16Array(t,n+c.offset,3*h),e,r)},o.push(u.POSITION.array.buffer)}if(a.BATCH_ID){u.BATCH_ID=dt(a.BATCH_ID,t,c.offset,h);const e=u.BATCH_ID.array&&u.BATCH_ID.array.buffer;e&&o.indexOf(e)<0&&o.push(e)}if(a.NORMAL_UP){let{byteOffset:e}=a.NORMAL_UP;u.NORMAL_UP={byteStride:0,byteOffset:0,itemSize:3,count:h,componentType:5126,array:new Float32Array(t,e+c.offset,3*h).slice()},o.push(u.NORMAL_UP.array.buffer),e=a.NORMAL_RIGHT.byteOffset,u.NORMAL_RIGHT={byteStride:0,byteOffset:0,itemSize:3,count:h,componentType:5126,array:new Float32Array(t,e+c.offset,3*h).slice()},o.push(u.NORMAL_RIGHT.array.buffer)}else if(a.NORMAL_UP_OCT32P){let{byteOffset:e}=a.NORMAL_UP_OCT32P;u.NORMAL_UP={byteStride:0,byteOffset:0,itemSize:3,count:h,componentType:5126,array:this.Ke(new Uint16Array(t,e+c.offset,2*h))},o.push(u.NORMAL_UP.array.buffer),e=a.NORMAL_RIGHT_OCT32P.byteOffset,u.NORMAL_RIGHT={byteStride:0,byteOffset:0,itemSize:3,count:h,componentType:5126,array:this.Ke(new Uint16Array(t,e+c.offset,2*h))},o.push(u.NORMAL_RIGHT.array.buffer)}if(a.SCALE){const{byteOffset:e}=a.SCALE;u.SCALE={byteStride:0,byteOffset:0,itemSize:1,count:h,componentType:5126,array:new Float32Array(t,e+c.offset,h).slice()},o.push(u.SCALE.array.buffer)}else if(a.SCALE_NON_UNIFORM){const{byteOffset:e}=a.SCALE_NON_UNIFORM;u.SCALE_NON_UNIFORM={byteStride:0,byteOffset:0,itemSize:3,count:h,componentType:5126,array:new Float32Array(t,e+c.offset,3*h).slice()},o.push(u.SCALE_NON_UNIFORM.array.buffer)}return{count:h,batchTable:l,batchTableBin:f,featureTable:a,i3dm:u,transferables:o}}Ke(t){const e=t.length/2,r=new Float32Array(3*e),n=[];for(let i=0;i<e;i++)xr(n,t[2*i],t[2*i+1],65535),r[3*i]=n[0],r[3*i+1]=n[1],r[3*i+2]=n[2];return r}Ze(t,e,r){return Rt(new Float32Array(t.length),t,e,r)}He(){return null}}function xr(t,e,r,n){if(t[0]=wr(e,n),t[1]=wr(r,n),t[2]=1-(Math.abs(t[0])+Math.abs(t[1])),t[2]<0){const e=t[0];t[0]=(1-Math.abs(t[1]))*Mr(e),t[1]=(1-Math.abs(e))*Mr(t[1])}return d.normalize(t,t)}function wr(t,e){return function(t,e,r){return t<e?e:t>r?r:t}(t,0,e=function(t,e){if(null!=t)return t;return e}(e,255))/e*2-1}function Mr(t){return t<0?-1:1}class Cr{constructor(){}load(t,e,r=0,n=0){return e?(n||(n=e.byteLength),this.Ge(t,e,r,n)):_.getArrayBuffer(t,{}).then((e=>{const i=e.data;return n||(n=i.byteLength),this.Ge(t,i,r,n)}))}Ge(t,e,r,n){return this.We(e,r,n,t).then((t=>t.error?t:{magic:"pnts",count:t.count,transferables:t.transferables,featureTable:t.featureTable,batchTable:t.batchTable,batchTableBin:t.batchTableBin,pnts:t.pnts}))}We(t,e,r,n){const i=new DataView(t,e,r),s=i.getUint32(4,!0);if(1!==s){const t="Unsupported pnts version: "+s+", url:"+n;return console.warn(t),{error:t}}if(i.getUint32(8,!0)!==i.byteLength){const t="Length in pnts header is inconsistent with pnts's byte length, url: "+n;return console.warn(t),{error:t}}const o=[t],{featureTable:a,featureTableBin:c,batchTable:l,batchTableBin:f}=gt(i,e+28,o),u=a.QUANTIZED_VOLUME_OFFSET,h=a.QUANTIZED_VOLUME_SCALE,_=a.POINTS_LENGTH;let d,E={};if(a.extensions&&a.extensions["3DTILES_draco_point_compression"]){E=a.extensions["3DTILES_draco_point_compression"],d=new DataView(t,E.byteOffset+c.offset,E.byteLength);const e={attributes:E.properties,useUniqueIDs:!1};return this.je||(this.je=Ne.draco()),this.je(d,e).then((e=>{const r=e.attributes;!a.POSITION&&!a.POSITION_QUANTIZED||r.POSITION||r.POSITION_QUANTIZED||(r.POSITION=a.POSITION,r.POSITION_QUANTIZED=a.POSITION_QUANTIZED),!(a.RGB||a.RGBA||a.RGB565)||r.RGB||r.RGBA||r.RGB565||(r.RGB=a.RGB,r.RGBA=a.RGBA,r.RGB565=a.RGB565),!a.NORMAL&&!a.NORMAL_OCT16P||r.NORMAL||r.NORMAL_OCT16P||(r.NORMAL=a.NORMAL,r.NORMAL_OCT16P=a.NORMAL_OCT16P);const n=this.qe(t,e.attributes,c.offset,_,o,u,h);if(e.attributes.BATCH_ID){const t=e.attributes.BATCH_ID.array;n.BATCH_ID={byteStride:0,byteOffset:0,itemSize:1,count:t.length,componentType:yt(t.constructor),array:t},o.push(t.buffer)}else if(a.BATCH_ID||Object.keys(l).length){a.BATCH_ID?n.BATCH_ID=dt(a.BATCH_ID,t,c.offset,_):n.BATCH_ID=vr(_);const e=n.BATCH_ID.array&&n.BATCH_ID.array.buffer;e&&o.indexOf(e)<0&&o.push(e)}return{count:_,batchTable:l,batchTableBin:f,featureTable:a,pnts:n,transferables:o}}))}const T=this.qe(t,a,c.offset,_,o,u,h);if(a.BATCH_ID||Object.keys(l).length){a.BATCH_ID?T.BATCH_ID=dt(a.BATCH_ID,t,c.offset,_):T.BATCH_ID=vr(_);const e=T.BATCH_ID.array&&T.BATCH_ID.array.buffer;e&&o.indexOf(e)<0&&o.push(e)}return Promise.resolve({count:_,batchTable:l,batchTableBin:f,featureTable:a,pnts:T,transferables:o})}qe(t,e,r,n,i,s,o){const a={};if(e.POSITION){let{byteOffset:s,array:o}=e.POSITION;s=s||0;const c=o?0:r;if(!o){const e=t.slice(s+c,s+c+3*n*4);o=new Float32Array(e)}a.POSITION={byteStride:0,byteOffset:0,itemSize:3,count:n,componentType:5126,array:o},i.push(o.buffer)}else if(e.POSITION_QUANTIZED){let{byteOffset:c,array:l}=e.POSITION_QUANTIZED;c=c||0;const f=l?0:r;a.POSITION={byteStride:0,byteOffset:0,itemSize:3,count:n,componentType:5126,array:this.Ze(l||new Uint16Array(t,c+f,3*n),s,o)},i.push(a.POSITION.array.buffer)}if(e.RGBA){let{byteOffset:s,array:o}=e.RGBA;s=s||0;const c=o?0:r;if(!o){const e=t.slice(s+c,s+c+4*n);o=new Uint8Array(e)}a.RGBA={byteStride:0,byteOffset:0,itemSize:4,count:n,componentType:5121,array:o},i.push(o.buffer)}else if(e.RGB){let{byteOffset:s,array:o}=e.RGB;s=s||0;const c=o?0:r;if(!o){const e=t.slice(s+c,s+c+3*n);o=new Uint8Array(e)}a.RGB={byteStride:0,byteOffset:0,itemSize:3,count:n,componentType:5121,array:o},i.push(o.buffer)}else if(e.RGB565){let{byteOffset:s,array:o}=e.RGB565;s=s||0;const c=o?0:r;if(!o){const e=t.slice(s+c,s+c+2*n);o=new Uint16Array(e)}a.RGB565={byteStride:0,byteOffset:0,itemSize:1,count:n,componentType:5123,array:o},i.push(o.buffer)}if(e.NORMAL){let{byteOffset:s,array:o}=e.NORMAL;s=s||0;const c=o?0:r;if(!o){const e=t.slice(s+c,s+c+3*n*4);o=new Float32Array(e)}a.NORMAL={byteStride:0,byteOffset:0,itemSize:3,count:n,componentType:5126,array:o},i.push(o.buffer)}else if(e.NORMAL_OCT16P){let{byteOffset:s,array:o}=e.NORMAL_OCT16P;s=s||0;const c=o?0:r;if(!o){const e=t.slice(s+c,s+c+2*n);o=new Uint8Array(e)}a.NORMAL_OCT16P={byteStride:0,byteOffset:0,itemSize:2,count:n,componentType:5121,array:o},i.push(o.buffer)}return a}Ze(t,e,r){return Rt(new Float32Array(t.length),t,e,r)}He(){return null}}function vr(t){const e=M(t),r=new e(t);for(let e=0;e<t;e++)r[e]=e;return{byteStride:0,byteOffset:0,itemSize:1,count:t,componentType:yt(e),array:r}}class Ur{constructor(t,e){this.Pe=t,this.De=e||h}load(t,e,r=0,n=0,i){return e?this.Ge(t,e,r,n,i):_.getArrayBuffer(t,{}).then((e=>{const i=e.data;return this.Ge(t,i,r,n)}))}Ge(t,e,r,n,i){n||(n=e.byteLength);const s=this.$e(e,t,r,n),o=[];for(let r=0;r<s.length;r++){let n;if("b3dm"===s[r].magic)n=new Sr(this.Pe,this.De);else if("i3dm"===s[r].magic)n=new Or(this.Pe,this.De);else if("pnts"===s[r].magic)n=new Cr;else{if("cmpt"!==s[r].magic){console.warn("Unsupported magic in CMPT tile:",s[r].magic);continue}n=new Ur(this.Pe,this.De)}o.push(n.load(t,e,s[r].offset,s[r].byteLength,i).then((t=>t)))}return Promise.all(o).then((t=>({magic:"cmpt",tiles:t})))}$e(t,e,r,n){const i=new DataView(t,r,n),s=i.getUint32(4,!0);if(1!==s){const t="Unsupported cmpt version: "+s+", url:"+e;return console.warn(t),{error:t}}if(16===i.byteLength)return[];const o=[],a=i.getUint32(12,!0);let c=16;for(let e=0;e<a;e++){const e=ct(i,c),n=i.getUint32(c+8,!0);o.push({magic:e,buffer:t,offset:c+r,byteLength:n}),c+=n}return o}}if(e.transcoders){const r=t.Map.VERSION;if(r.indexOf("1.0.0-beta")>=0||r.indexOf("1.0.0-alpha")>=0){const r=e.transcoders.inject(m);t.registerWorkerAdapter("@maptalks/3dtiles",r)}else t.registerWorkerAdapter("@maptalks/3dtiles",(function(){return e.transcoders.inject(m)}))}else t.registerWorkerAdapter("@maptalks/3dtiles",m);export{Sr as B3DMLoader,Ur as CMPTLoader,br as Geo3DTilesLayer,B as Geo3DTilesUtil,ot as Geo3DTransform};"undefined"!=typeof console&&console.log("@maptalks/3dtiles v0.18.2");
11
+ */const be=function(){if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if("undefined"!=typeof global)return global;throw new Error("unable to locate global object")},Ie=be(),Ne=Ie.gl_trans__coders=Ie.gl_trans__coders||{};function Se(t,e){if(e)for(let r=0;r<e.length;r++){t[e[r].id||e[r].index]=e[r]}}Ne.inject=function(t){const e=t.toString(),r=e.indexOf("{")+1,n=e.substring(0,r),i=Ie.gl_trans__coders=Ie.gl_trans__coders||{};let s=`${n}\n const _____getGlobal = ${be.toString()};\n const g___lobals = _____getGlobal()\n const tran_____scoders = g___lobals['gl_trans__coders'] = g___lobals['gl_trans__coders'] || {};`;for(const t in i)"inject"!==t&&"getTranscoder"!==t&&"registerTranscoder"!==t&&(s+='tran_____scoders["'+t+'"] ='+i[t].toString()+"\n;");return s+="\n"+e.substring(n.length),s},Ne.registerTranscoder=function(t,e){Ne[t]=e},Ne.getTranscoder=function(t){return Ne[t]};const Oe=[];class Me{constructor(t,e,r,n){this.Mt=t,this.H=e,this.wt=n,this.Ct=r.version,t.indexOf("i3s:tileset:")<0?(this.Ct<=1.6?this.xt="root":this.xt=0,r.version=this.Ct):(this.xt=t.substring("i3s:tileset:".length),this.Ct>1.6&&(this.xt=parseInt(this.xt))),this.Mt=t,this.Ut=r}load(){const t=this.Ut,e=t.layerScene.baseUrl;if(this.Ct<=1.6)return t[this.xt]&&t[this.xt].lodSelection?(this.vt=t[this.xt],this.Bt()):new Promise((r=>{let n=e+"/nodes/"+this.xt;t.layerScene.eslpk&&(n+="/3dNodeIndexDocument.json"),this.wt(this.H,n,(()=>{this.vt=t[this.xt],r(this.Bt())}))}));if(this.Ct>=1.7){if(t[this.xt])return this.vt=t[this.xt],this.Bt();const r=Math.floor(this.xt/t.nodesPerPage);return new Promise((n=>{let i=e+"/nodepages/"+r;t.layerScene.eslpk&&(i+=".json"),this.wt(this.H,i,(()=>{this.vt=t[this.xt],n(this.Bt())}))}))}return null}getTileset(){return this.Lt}getChildrenURL(){return this.Pt}Bt(){const t=this.Ut,e=t.layerScene.baseUrl,r=this.vt.children,n=[],i={};if(r)for(let s=0;s<r.length;s++)if(this.Ct<=1.6){const o=r[s].id;if(t[o])continue;const a=o;i[a]||(i[a]=new Promise((r=>{let n=e+"/nodes/"+a;t.layerScene.eslpk&&(n+="/3dNodeIndexDocument.json"),this.wt(this.H,n,(()=>{r()}))})),n.push(i[a]))}else{const o=r[s];if(t[o])continue;const a=Math.floor(o/t.nodesPerPage);i[a]||(i[a]=new Promise((r=>{let n=e+"/nodepages/"+a;t.layerScene.eslpk&&(n+=".json"),this.wt(this.H,n,(()=>{r()}))})),n.push(i[a]))}return n.length?Promise.all(n).then((()=>this.Dt())):this.Dt()}Dt(){return Promise.resolve(this.Ft())}Gt(t){Se(this.Ut,t)}Ft(){return{asset:{i3s:!0,version:"1.0",gltfUpAxis:"Z"},geometricError:Number.MAX_VALUE,root:this.kt(this.vt,!0)}}kt(t){const e=this.Ct,r=this.Ut,n=t;var i,s=n.obb,o=n.mbs,a={};if(o)i=we([],o[0],o[1],o[2]),a.sphere=[...i,o[3]];else if(s){const t=function(t,e,r){const n=T.fromQuat([],r);return n[0]=n[0]*e[0],n[1]=n[1]*e[0],n[2]=n[2]*e[0],n[3]=n[3]*e[1],n[4]=n[4]*e[1],n[5]=n[5]*e[1],n[6]=n[6]*e[2],n[7]=n[7]*e[2],n[8]=n[8]*e[2],[...t,...n]}(i=we([],s.center[0],s.center[1],s.center[2]),s.halfSize,s.quaternion),e=t[3]+t[6]+t[9],r=t[4]+t[7]+t[10],n=t[5]+t[8]+t[11];d.set(Oe,e,r,n);const o=d.len(Oe);a.sphere=[...i,o]}var c=1/0,l=0;if(n.mbs?l=n.mbs[3]:n.obb&&(l=Math.max(Math.max(n.obb.halfSize[0],n.obb.halfSize[1]),n.obb.halfSize[2])),void 0!==n.lodThreshold)"maxScreenThresholdSQ"===r.lodSelectionMetricType?c=l/(Math.sqrt(n.lodThreshold)/(.25*Math.PI)):console.error("Unsupported lodSelectionMetricType in Layer");else if(void 0!==n.lodSelection)for(var f=0;f<n.lodSelection.length;f++)"maxScreenThreshold"===n.lodSelection[f].metricType&&(c=l/n.lodSelection[f].maxError);(c===1/0||isNaN(c))&&(c=1e5);var h=16*c;const u=E.identity([]),_=n.children;var m;if(_){m=[];const t=this.Ut;for(let r=0;r<_.length;r++){const n=e<=1.6?_[r].id:_[r];if(!t[n]){m=null;break}m.push(this.kt(t[n]))}}var A={refine:"REPLACE",boundingVolume:a,transform:u,geometricError:h};return e<=1.6?t.lodSelection?t.geometryData&&(A.content={uri:"i3s:mesh:"+(t.id||t.index)}):A.content={uri:"i3s:tileset:"+(t.id||t.index)}:_&&_.length&&!m?A.content={uri:"i3s:tileset:"+(t.id||t.index)}:n.mesh&&(A.content={uri:"i3s:mesh:"+(t.id||t.index)}),m&&m.length&&(A.children=m),A}getJSON(){return this.vt}}function we(t,e,r,n){return W(t,g(e),g(r),n)}const Ce=!!Ne.ktx2,xe=n.identity([]),Ue=(()=>{try{if("object"==typeof WebAssembly&&"function"==typeof WebAssembly.instantiate){const t=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(t instanceof WebAssembly.Module)return new WebAssembly.Instance(t)instanceof WebAssembly.Instance}}catch(t){}return!1})();function ve(t){return t.indexOf("i3s:mesh")>=0}const Be="i3s:mesh:".length;function Le(t,e,r,n,i){const s=e.layerScene.eslpk,o=function(t,e){const r=e.substring(Be);return t>=1.7?parseInt(r):r}(e.version,t),a=e[o],c=e.layerScene.baseUrl,l=[];let f=!1;const h=xe;let u,_;if(e.version<=1.6){if(!a.geometryData)return null;const t=a.geometryData.length;let r=c+`/nodes/${a.id}/`+a.geometryData[t-1].href;s&&(r+=".bin");const n={geometry:{url:r,info:e.layerScene.store.defaultGeometrySchema}};let i=a.textureData&&a.textureData[0]&&a.textureData[0].href;if(i){const t=e.layerScene.store.textureEncoding[0];let r;r="image/jpeg"===t?"jpg":"png",s&&(i+="."+r);const o={pbrMetallicRoughness:{baseColorTexture:{url:c+`/nodes/${a.id}/`+i,factor:1,format:r,mimeType:t},metallicFactor:0}};n.material=o}l.push(n)}else{u=a.mesh.geometry,_=a.mesh.material;const t=e.layerScene.geometryDefinitions[u.definition],{geometryBuffers:o}=t;f=n&&2===o.length;const h=Ne.draco&&f?o[1]:o[0],d=Ne.draco&&f?1:0;let E=c+`/nodes/${u.resource}/geometries/`+d;s&&(E+=".bin");const T={geometry:{url:E,info:h}};if(i&&Ue&&f&&!Ne.draco)throw new Error("Must import @maptalks/transcoder.draco to load i3s draco compressed geometry");const m=e.layerScene.materialDefinitions,A=e.layerScene.textureSetDefinitions;let p,y=0;if(_&&(y=m[_.definition]),m){p=function(t,e,r,n,i,s){const o=JSON.parse(JSON.stringify(t));return Pe(o,e,r,n,i,s),o}(y,A,c,_.resource,r,e.layerScene.eslpk)}else p={pbrMetallicRoughness:{metallicFactor:0}};T.material=p,l.push(T)}return{dracoCompression:f,meshes:l,nodeIndex:o,center:a.obb&&a.obb.center||a.mbs&&[a.mbs[0],a.mbs[1],a.mbs[2]],transform:h}}function Pe(t,e,r,n,i,s){for(const o in t)if(t[o]&&t[o].textureSetDefinitionId>=0){const a=e[t[o].textureSetDefinitionId],c="images/"+a.formats[0].format,l=De(a.formats,i),f={url:r+`/nodes/${n}/textures/${l.name}`,factor:void 0===t[o].factor?1:t[o].factor,format:l.format,mimeType:c};if(s){let t="";switch(l.format){case"dds":t="bin.dds";break;case"jpg":case"png":t=l.format}f.url+="."+t}t[o]=f}else R(t[o])&&Pe(t[o],e,r,n,i,s)}function De(t,e){for(let r=0;r<=t.length;r++){const n=t[r].format;if("dds"===n&&e.hasExtension("WEBGL_compressed_texture_s3tc"))return t[r];if("jpg"===n||"png"===n)return t[r];if("ktx2"===n&&Ce)return t[r]}return null}const Fe=[];class Ge extends t.renderer.CanvasRenderer{constructor(t){super(t),this.prepareWorker(),this.tilesLoading={},this.tileCache=new G(1024*t.options.maxGPUMemory*1024,this.deleteTile.bind(this)),this.Ht={},this.Vt=[],this.wt=this.zt.bind(this)}getAnalysisMeshes(){if(!this.painter)return Fe;const t=this.painter.getPaintedMeshes();if(!t)return Fe;const e=[],{b3dmMeshes:r,pntsMeshes:n,i3dmMeshes:i}=t;return r.length&&v(e,r),n.length&&v(e,n),i.length&&v(e,i),e}needToRedraw(){return!!this.getMap().isInteracting()||(!!this.Vt.length||super.needToRedraw())}drawOnInteracting(t,e,r){this.draw(e,r)}draw(t,e){const r=this.prepareCanvas();if(r&&!r.intersects(this.canvasExtent2D))return void this.completeRender();const{root:n,tiles:i}=this.layer.getTiles(),s=i.length;if(!i||!s)return void this.completeRender();this.Xt(),this.Yt();const{selectedTiles:o,leaves:a,requests:c}=this.Zt(n,i);c.length&&this.loadTiles(c),this.Wt(o,a,e),this.Kt(),c.length||this.completeRender()}Zt(t,e){let r=[];this.jt();let n=0;const i=this.qt(),s={};let o=!1,a=!1;for(let t=0;t<e.length;t++){const i=e[t],c=i.node;if(s[c.id])continue;s[c.id]=1;let l=!1;const f=this.getCachedTile(c.id);if(this.$t(c.id)?(n++,l=a=!0,this.tilesLoading[c.id].current=!0):f?(this.getTileOpacity(f)<1&&(l=a=!0),(!i.node.Qt||i.node.Qt<=500)&&(o=!0,i.selected=!0,i.data=f)):this.painter.has(c)||(l=a=!0,r.push(c)),!l)continue;if(this.Jt(i))o=!0;else{this.te(i).length&&(o=!0)}}let c=[],l={};if(o&&({selectedTiles:c,leaves:l}=this.ee(t)),r.length>1&&(r.sort(ke),i)){const t=i-n;r=t>0?r.slice(0,t):[]}return{loading:a,requests:r,selectedTiles:c,leaves:l}}ee(t){const e=[],r={};let n;const i=[t],s=[];for(;i.length>0||s.length>0;){if(s.length>0){const t=s[s.length-1];if(t.re===i.length){s.pop(),t===n&&(t.leave=!0,r[t.node.id]=1),e.push(t);continue}}const t=i.pop(),o=t.children;if(t.selected)if("add"===t.node.refine)r[t.node.id]=1,t.selectionDepth=s.length,e.push(t);else{if(t.selectionDepth=s.length,n=t,0===o.length){t.leave=!0,r[t.node.id]=1,e.push(t);continue}s.push(t),t.re=i.length}for(let t=0;t<o.length;t++)i.push(o[t])}return{selectedTiles:e,leaves:r}}Jt(t){if(!t.parent)return null;let e=t.parent;for(;e&&e.level>=0;){const t=e.node.id;if(this.tileCache.has(t))return e.selected=!0,e.data=this.tileCache.get(t),e;e=e.parent}return null}te(t){const e=[];if(!t.node.children||!t.node.children.length)return e;const r=t.V+1,n=[t.node];for(;n.length>0;){const i=n.pop().children;for(let s=0,o=i.length;s<o;s++){if((!i[s].content||!i[s].content.url)&&i[s].children&&i[s].children.length){n.push(i[s]);continue}const o=i[s].id;if(this.tileCache.has(o)){const r=this.layer.ne(i[s],t);r.selected=!0,r.data=this.tileCache.get(o),t.children.push(r),e.push(r)}else i[s].V<=r&&n.push(i[s])}}return e}Wt(t,e,r){this.tileCache.markAll(!1);for(let e=0,r=t.length;e<r;e++){const r=t[e].data;r.current=!0,this.tileCache.add(t[e].node.id,r)}this.tileCache.shrink();const n={tiles:t,leaves:e};this.onDrawTileStart(n);const i=r&&r.renderTarget,s=r&&r.sceneFilter,o=this.painter.paint(t,e,s,i);this.onDrawTileEnd(n),o&&this.layer.fire("canvasisdirty",{renderCount:o})}onDrawTileStart(){}onDrawTileEnd(){}loadTiles(t){for(let e=0,r=t.length;e<r;e++){const r=t[e];this.tilesLoading[r.id]={current:!0,node:r},this.loadTile(r)}}loadTile(t){let e=t.content.url;if(x(e)){const r=U(e);return void this.ie(e,r,t)}if(function(t){return t.indexOf("i3s:tileset")>=0}(e)){const r=t.H,n=this.se[r];return new Me(e,r,n,this.wt).load().then((r=>{this.onTilesetLoad(r,t,e)}))}t&&-1===e.indexOf("http://")&&-1===e.indexOf("https://")&&!ve(e)&&(e=t.baseUrl+e);const r=this.layer.options.services[t.H];if(r.ajaxInMainThread){let n=r.urlParams;n&&(n=(e.indexOf("?")>0?"&":"?")+n);let i=_.getArrayBuffer(e+(n||""),r.fetchOptions);const s=i.xhr;i=i.then((r=>{delete this.Ht[e],r?this.ie(e,r.data,t):this.onTileError(null,t)})).catch((r=>{delete this.Ht[e],this.onTileError(r,t)})),this.Ht[e]=s}else this.ie(e,null,t)}ie(t,e,n){let i=this.oe;i||(i=r.Util.getSupportedFormats(this.gl.gl||this.gl),this.oe=i);const s=this.layer.options.services[n.H];s.isSuperMapiServer&&(t=function(t,e){const r=t.substring(e.length).split("/"),n=[];for(let t=0;t<r.length;t++)n.push(encodeURIComponent(r[t]));return e+n.join("/")}(t,n.baseUrl));const o={url:t=this.layer.getTileUrl(t,n.baseUrl,s),arraybuffer:e,rootIdx:n.H,upAxis:n.ut,transform:n.matrix,supportedFormats:i};if(ve(t)){const e=this.se[n.H];if(o.i3sInfo=Le(t,e,this.regl,this.layer.options.enableI3SCompressedGeometry,this.layer.options.forceI3SCompressedGeometry),!o.i3sInfo)return void this.onTileError({status:404},n)}this.workerConn.loadTile(this.layer.getId(),o,((e,r)=>{if(e)return void this.onTileError(e,n);const{magic:i}=r;"b3dm"===i||"pnts"===i||"i3dm"===i||"cmpt"===i?this.Vt.push({data:r,tile:n}):this.onTilesetLoad(r,n,t)}))}Yt(){const t=this.getMap(),e=this.layer.options.meshLimitPerFrame;let r=0;for(;this.Vt.length&&(r<e||!t.isInteracting());){const{data:t,tile:e}=this.Vt.shift(),{magic:n}=t;"b3dm"===n?this.painter.createB3DMMesh(t,e.id,e,((r,{mesh:n})=>{this.ae(t,e,r,n)})):"pnts"===n?this.painter.createPntsMesh(t,e.id,e,((r,{mesh:n})=>{this.ae(t,e,r,n)})):"i3dm"===n?this.painter.createI3DMMesh(t,e.id,e,((r,{mesh:n})=>{this.ae(t,e,r,n)})):"cmpt"===n&&this.painter.createCMPTMesh(t,e.id,e,((r,{mesh:n})=>{this.ae(t,e,r,n)})),r++}}ae(t,e,r,n){if(r)this.onTileError(r,e);else{const r=this.ce(n);e.memorySize=r,this.onTileLoad(t,e)}}ce(t){let e=0;if(Array.isArray(t))for(let r=0;r<t.length;r++)t[r]&&(e+=this.ce(t[r]));else t&&(e+=t.getMemorySize());return e}onTileLoad(t,e){this.layer&&(delete this.tilesLoading[e.id],this.layer.onTileLoad(t,e),this.le(e),this.setToRedraw(),this.layer.fire("tileload",{node:e}))}onTilesetLoad(t,e,r){this.layer&&(t.capabilities||t.layers&&t.layers[0]&&t.layers[0].capabilities?this.fe(t,e,r):(delete this.tilesLoading[e.id],this.layer.onTilesetLoad(t,e,r)))}onTileError(t,e){if(!this.layer)return;const r=e.content.url;console.warn("failed to load 3d tile: "+r),console.warn(t),delete this.tilesLoading[e.id],this.he(e,t),this.setToRedraw(),this.layer.fire("tileerror",{node:e,error:t})}getCachedTile(t){return this.tileCache.get(t)}he(e,r){const n={loadTime:t.Util.now(),current:!0,error:r,node:e};this.tileCache.add(e.id,n)}le(e){const r={loadTime:t.Util.now(),current:!0,node:e};this.tileCache.add(e.id,r)}abortTileLoading(t){if(!t||!this.workerConn)return;const e=t.node.content.url;if(this.layer.options.services[t.node.H].ajaxInMainThread){const t=this.Ht[e];t&&t.abort()}else this.workerConn.abortTileLoading(this.layer.getId(),e);delete this.Ht[e]}jt(){if(this.tilesLoading)for(const t in this.tilesLoading)this.tilesLoading[t].current=!1}deleteTile(t){this.painter.deleteTile(t)}createContext(){const t=this.layer,e=t.options.glOptions||{alpha:!0,depth:!0,stencil:!0,preserveDrawingBuffer:!0,antialias:t.options.antialias},r=this.canvas.gl&&this.canvas.gl.wrap;r?(this.gl=this.canvas.gl.wrap(),this.regl=this.canvas.gl.regl):(this.glOptions=e,this.gl=this.ue(this.canvas,e)),this.regl=this.regl||c({gl:this.gl,attributes:e,extensions:["OES_element_index_uint"],optionalExtensions:t.options.optionalExtensions||[]}),r&&(this.canvas.pickingFBO=this.canvas.pickingFBO||this.regl.framebuffer(this.canvas.width,this.canvas.height)),this.pickingFBO=this.canvas.pickingFBO||this.regl.framebuffer(this.canvas.width,this.canvas.height),this.painter=new ge(this.regl,t)}prepareWorker(){const t=this.getMap();this.workerConn||(this.workerConn=new P("@maptalks/3dtiles",t.id));const e=this.workerConn;if(!e.isActive())return;let r=this.layer.options||{};r=p({},r),delete r.offset,r.projection=t.getSpatialReference().getProjection().code;const n=this.layer.getId();e.addLayer(n,r,(t=>{if(t)throw t;this.layer&&(this.ready=!0,this.layer.fire("workerready"))}))}onRemove(){this.painter&&this.painter.remove(),this.pickingFBO&&(this.canvas.pickingFBO||this.pickingFBO.destroy(),delete this.pickingFBO),this.workerConn&&(this.workerConn.removeLayer(this.layer.getId(),(t=>{if(t)throw t})),this.workerConn.remove(),delete this.workerConn),this.clear(),delete this.tileCache,super.onRemove()}clear(){this.Kt(!0),this.tileCache.reset(),this.tilesLoading={},super.clear()}clearCanvas(){this.regl&&this.regl.clear({color:[0,0,0,0],depth:1,stencil:0}),super.clearCanvas()}getTileOpacity(){return 1}getStencilValue(){return 0}Kt(t){this._e||(this._e=Date.now());const e=Date.now();if(t||!(e-this._e<this.layer.options.retireInterval)){this._e=e;for(const e in this.tilesLoading){const r=this.tilesLoading[e];!t&&r.current||this.abortTileLoading(r)}}}qt(){return this.getMap().isInteracting()?this.layer.options.loadingLimitOnInteracting:this.layer.options.loadingLimit}ue(t,e){const r=["webgl","experimental-webgl"];let n=null;for(let i=0;i<r.length;++i){try{n=t.getContext(r[i],e)}catch(t){}if(n)break}return n}$t(t){return!!this.tilesLoading[t]}getI3DMMeshes(){return this.painter.getI3DMMeshes()}getPNTSMeshes(){return this.painter.getPNTSMeshes()}getB3DMMeshes(){return this.painter.getB3DMMeshes()}readBatchData(t,e,r){return _t(t,e,0,r)}Xt(){if(!this.de)return;const t=this.layer.options.i3sNodepageLimitPerFrame||Number.MAX_VALUE;let e=0;const r=[];for(const n in this.de){const i=this.de[n];if("pending"===i.status)continue;i.status="pending";const s=i.rootIdx;if(r.push(_.getJSON(n).then((t=>{delete this.de[n];const e=this.se[s];if(e){t.nodes?Se(e,t.nodes):(e[t.id]=t,Se(e,t.children));for(let t=0;t<i.length;t++)i[t]();this.setToRedraw()}else this.setToRedraw()}))),e++,e>=t)break}r.length&&Promise.all(r)}zt(t,e,r){this.de||(this.de={}),this.de[e]=this.de[e]||[],this.de[e].rootIdx=t,this.de[e].push(r),this.setToRedraw()}fe(t,e,r){this.se||(this.se=[]);const n=e.H;this.se[n]||(this.se[n]={});const i=this.se[n],s=this.layer.options.services[n];t.layers&&(t=t.layers[0],"/"!==r[r.length-1]&&(r+="/"),r+="layers/0"),i.version=+(s.i3sVersion||t.store.version),function(t,e,r,n,i,s){if(!i.layerScene){i.layerScene=t,i.nodesPerPage=t.nodePages&&t.nodePages.nodesPerPage||64,i.lodSelectionMetricType=t.nodePages&&t.nodePages.lodSelectionMetricType;let e=n;if(i.layerScene.eslpk=e.indexOf("3dSceneLayer.json")>=0,e.endsWith(".json")){const t=n.lastIndexOf("/");e=t<0?"./":n.substring(0,t)}i.layerScene.baseUrl=function(t){return t.split("?")[0]}(e)}return new Me(n,e,i,s).load()}(t,n,0,r,i,this.wt).then((t=>{this.onTilesetLoad(t,e,r)}))}pick(t,e,r){return this.painter?this.painter.pick(t,e,r&&r.tolerance):[]}}function ke(t,e){return t.$-e.$}function He(t,e,r){return t[0]=e[r],t[1]=e[r+3],t[2]=e[r+6],t}function Ve(t,e,r){return Math.sqrt(function(t,e,r){var n=d.subtract(ze,r,t),i=He(Xe,e,0),s=He(Ye,e,1),o=He(Ze,e,2),a=d.len(i),c=d.len(s),l=d.len(o);d.normalize(i,i),d.normalize(s,s),d.normalize(o,o);var f=We;f[0]=d.dot(n,i),f[1]=d.dot(n,s),f[2]=d.dot(n,o);var h,u=0;f[0]<-a?u+=(h=f[0]+a)*h:f[0]>a&&(u+=(h=f[0]-a)*h);f[1]<-c?u+=(h=f[1]+c)*h:f[1]>c&&(u+=(h=f[1]-c)*h);f[2]<-l?u+=(h=f[2]+l)*h:f[2]>l&&(u+=(h=f[2]-l)*h);return u}(t,e,r))}const ze=[],Xe=[],Ye=[],Ze=[],We=[];const Ke=2*Math.PI;class je{constructor(t,e,r,n){this.west=t,this.south=e,this.east=r,this.north=n}static contains(t,e){var r=e[0],n=e[1],i=t.west,s=t.east;return s<i&&(s+=Ke,r<0&&(r+=Ke)),(r>i||at(r,i,1e-14))&&(r<s||at(r,s,1e-14))&&n>=t.south&&n<=t.north}static southwest(t,e){return e[0]=t.west,e[1]=t.south,e[2]=0,e}static northeast(t,e){return e[0]=t.east,e[1]=t.north,e[2]=0,e}static southeast(t,e){return e[0]=t.east,e[1]=t.south,e[2]=0,e}static northwest(t,e){return e[0]=t.west,e[1]=t.north,e[2]=0,e}}const qe=[0,0,1];function $e(t,e){return W(e,t[0],t[1],t[2])}class Qe{constructor(t,e){this.normal=i.copy([],t),this.distance=e}static fromPointNormal(t,e,r){var n=-i.dot(e,t);return i.copy(r.normal,e),r.distance=n,r}}const Je=[],tr=[],er=[],rr=[],nr=[],ir=[],sr=[],or=[],ar=[],cr=[],lr=new Qe([1,0,0],0),fr=[];class hr{constructor(t){this.southwestCornerCartesian=[],this.northeastCornerCartesian=[],this.westNormal=[],this.eastNormal=[],this.southNormal=[],this.northNormal=[],this.rectangle=new je(...t),this.minimumHeight=t[4],this.maximumHeight=t[5],this.computeBox(this.rectangle)}distanceToCamera(t,e){var r,n,s,o=0;if(!je.contains(this.rectangle,e)){var a=this.southwestCornerCartesian,c=this.northeastCornerCartesian,l=this.westNormal,f=this.southNormal,h=this.eastNormal,u=this.northNormal,_=i.subtract(fr,t,a),d=i.dot(_,l),E=i.dot(_,f),T=i.subtract(fr,t,c),m=i.dot(T,h),A=i.dot(T,u);d>0?o+=d*d:m>0&&(o+=m*m),E>0?o+=E*E:A>0&&(o+=A*A)}if(r=e[2],n=this.minimumHeight,r>(s=this.maximumHeight)){var p=r-s;o+=p*p}else if(r<n){var y=n-r;o+=y*y}return Math.sqrt(o)}computeBox(t){const e=this;$e(je.southwest(t,tr),e.southwestCornerCartesian),$e(je.northeast(t,tr),e.northeastCornerCartesian),Je[0]=t.west,Je[1]=.5*(t.south+t.north),Je[2]=0;var r=$e(Je,er),n=i.cross(nr,r,qe);i.normalize(e.westNormal,n),Je[0]=t.east;var s=$e(Je,or),o=i.cross(nr,qe,s);i.normalize(e.eastNormal,o);var a,c=i.subtract(nr,r,s),l=i.normalize(rr,c),f=t.south;if(f>0){Je[0]=.5*(t.west+t.east),Je[1]=f;var h=$e(Je,ar);i.copy(cr,l);var u=Qe.fromPointNormal(e.southwestCornerCartesian,e.westNormal,lr);ur(ar,cr,u,e.southwestCornerCartesian),a=it(h,ir)}else a=st(je.southeast(t,tr),ir);var _=i.cross(sr,a,c);i.normalize(e.southNormal,_);var d,E=t.north;if(E<0){Je[0]=.5*(t.west+t.east),Je[1]=E;var T=$e(Je,ar);i.scale(cr,l,-1);var m=Qe.fromPointNormal(e.northeastCornerCartesian,e.eastNormal,lr);ur(ar,cr,m,e.northeastCornerCartesian),d=it(T,ir)}else d=st(je.northwest(t,tr),ir);var A=i.cross(sr,c,d);i.normalize(e.northNormal,A)}}function ur(t,e,r,n){var s=t,o=e,a=r.normal,c=i.dot(a,o);if(!(Math.abs(c)<1e-15)){var l=(-r.distance-i.dot(a,s))/c;if(!(l<0))return n=i.scale(n,o,l),i.add(n,s,n)}}const _r=new t.Extent(0,0,0,0),dr=new t.Extent(0,0,0,0),Er=[],Tr=[],mr=[],Ar=[],pr=new t.Point(0,0),yr=[],Rr=new t.Coordinate(0,0),gr=n.identity([]);class br extends t.Layer{constructor(t,e){super(t,e),this.Ee(),this.Ht={},this.Te=[]}Ee(){let t=this.options.services.map((t=>t.url));this.me=t.map(((t,e)=>function(t,e){t=I(t);return{visible:1,baseUrl:t.substring(0,t.lastIndexOf("/"))+"/",content:{url:t},refine:"replace",matrix:n.identity([]),H:e,V:0}}(t,e))),this.fire("rootready",{roots:this.me.slice(0)})}showService(t){return this.Ae(t,1),this}hideService(t){return this.Ae(t,0),this}Ae(t,e){const r=this.me[t];if(!r)return;r.visible=e;const n=this.getRenderer();n&&n.setToRedraw()}getTileUrl(t){return t}getExtent(e){if(!e&&0!==e){const e=new t.Extent;for(let t=0;t<this.me.length;t++)if(this.me[t].boundingVolume){const r=this.boundingVolumeToExtent(this.me[t]);e._combine(r)}return e}return this.me[e]&&this.me[e].boundingVolume?this.boundingVolumeToExtent(this.me[e]):null}boundingVolumeToExtent(e){const r=e.boundingVolume.pe?gr:e.matrix,n=this.getMap();if(e.boundingVolume.region){const r=e.boundingVolume.region;return new t.Extent(b(r[0]),b(r[1]),b(r[2]),b(r[3]))}if(e.boundingVolume.sphere){const s=e.boundingVolume.sphere,o=J([],i.transformMat4([],s,r)),a=s[3],c=n.locate(o,-a,a),l=n.locate(o,a,-a);return new t.Extent(c,l)}if(e.boundingVolume.box){const o=e.boundingVolume.box,a=i.transformMat4([],o,r),c=new t.Coordinate(J([],a)),l=o.slice(3);s.multiply(l,s.fromMat4([],e.matrix),l);const f=i.length(l.slice(0,3)),h=i.length(l.slice(3,6)),u=i.length(l.slice(6,9)),_=Math.max(f,h,u),d=n.locate(c,-_,_),E=n.locate(c,_,-_);return new t.Extent(d,E)}return null}getRootTiles(){return this.me}getTiles(){const t=this.getRenderer();if(!t.ready)return this.ye(),{tiles:Ar};const e=this.getMap(),r=e.cameraPosition;let n,s;if(e.getGLZoom)s=e.pointToDistance(r[2],0,e.getGLZoom()),Rr.set(r[0],r[1]),n=e.pointToCoord(Rr,e.getGLZoom());else{const t=e.getGLRes();s=e.pointAtResToDistance(r[2],0,t),Rr.set(r[0],r[1]),n=e.pointAtResToCoord(Rr,t)}this.Re=this.Re||[],i.set(this.Re,g(n.x),g(n.y),s),this.ge=W(this.ge||[],this.Re[0],this.Re[1],this.Re[2]),this.be=2*Math.tan(.5*g(e.getFov()));const o=e.projViewMatrix,a={children:[],level:-1};let c=a;const l=[];for(let e=0;e<this.me.length;e++){const r=this.me[e];if(!r.visible)continue;let n=1/0;const i=[r],s=this.Ie(e);for(;i.length>0;){const e=i.pop();for(e.id||this.Ne(e);c.level>=e.V;)c=c.parent;const r=this.Se(e,s,o);if(r<1){let t=c;for(;t&&!t.content;)t=t.parent;0===r&&t&&t.content&&this.Oe(l,t);if(!1===this.options.services[e.H].alwaysShow)continue;if(!(0===r&&e.V<=n))continue;e.content&&(n=e.V)}e.$<1/0&&this.Me(e);const a=this.ne(e,c);c.children.push(a);const f=e.children,h=f&&f.length,u=a.content;if(!h&&u&&this.Oe(l,a),h){u&&"add"===e.refine&&this.Oe(l,a),c=a;const r=f[0].parent;let n=!1;for(let s=0,o=f.length;s<o;s++){if(r){const e=t.getCachedTile(f[s].id);if(e&&e.error&&404!==e.error.status)continue;n=!0}else{n=!0,f[s].parent=e,f[s].ut=e.ut,f[s].baseUrl=e.baseUrl;const t=f[s].content&&(f[s].content.url||f[s].content.uri);t&&(x(t)||t.indexOf("i3s:")>=0?f[s].baseUrl=e.baseUrl:-1===t.indexOf("http://")&&-1===t.indexOf("https://")?f[s].content.url=e.baseUrl+t:f[s].baseUrl=t.substring(0,t.lastIndexOf("/")+1))}i.push(f[s])}!n&&u&&this.Oe(l,a)}}}return{root:a,tiles:l}}Oe(t,e){const{viewerRequestVolume:r}=e.node;r&&!function(t,e,r){if(r.region){const e=r.region;if(t[0]>=e[0]&&t[0]<=e[2]&&t[1]>=e[1]&&t[1]<=e[3])return!0}else{if(r.sphere)return Ir(r,e);if(r.box)return 0===Nr(r,e)}return!1}(this.Re,this.ge,r)||t.push(e)}ne(t,e){return{id:t.id,node:t,children:[],level:t.V,parent:e,content:t.content&&t.content.url}}Ne(e){e.id=t.Util.GUID(),e.matrix=e.transform||n.identity([]),e.we=this.Ce(e),e.parent&&(function(t){return t.content&&t.content.uri&&t.content.uri.indexOf("i3s:")>=0}(e)||(e.matrix=n.multiply(e.matrix,e.parent.matrix,e.matrix)),e.H=e.parent.H,void 0===e.V&&(e.V=e.parent.V+1),e.maxExtent=e.parent.maxExtent),e.refine=e.refine&&e.refine.toLowerCase()||"replace",e.content&&!e.content.url&&e.content.uri&&(e.content.url=e.content.uri),this.xe(e)}xe(t){const e=t.boundingVolume;if(!e||e.pe)return;const r=this.options.services[t.H].heightOffset||0,s=this.options.offset,o=y(s)||s[0]||s[1];if(!t.boundingVolume||!r&&n.exactEquals(t.matrix,gr)&&!o)return;const{region:a,box:c,sphere:l}=e;if(a){const t=this.Ue([b(a[0]),b(a[1])]);a[0]=g(t.x),a[1]=g(t.y);const e=this.Ue([b(a[2]),b(a[3])]);a[2]=g(e.x),a[3]=g(e.y),a[4]+=r,a[5]+=r}else if(c||l){const e=c||l,n=i.transformMat4(Er,e,t.matrix),s=J(Tr,n),o=this.Ue([s[0],s[1]]);s[0]=o.x,s[1]=o.y,s[2]+=r,W(e,g(s[0]),g(s[1]),s[2])}e.pe=!0}Ce(t){return void 0===t.geometricError||!t.boundingVolume}Me(t){let e=t.parent;for(;e&&e.we&&!(e.$<=t.$);)e.$=t.$,e=t.parent}onTileLoad(t,e){if(t.children&&(!e.children||!e.children.length)){e.children=t.children;const r=e.content.url;e.baseUrl=r.substring(0,r.lastIndexOf("/")+1);const n=this.getRenderer();n&&n.setToRedraw()}}onTilesetLoad(t,e,r){if(!t)return void console.warn("invalid tileset at : "+r);const i=this.options.services[e.H],s=(t.asset&&t.asset.gltfUpAxis||e&&e.ut||i.upAxis||"Y").toUpperCase();t.root.baseUrl=r.substring(0,r.lastIndexOf("/")+1);const o=r.indexOf("realspace/")>-1;0===e.V&&(t.asset&&t.asset.s3mType&&o||i.isSuperMapiServer)&&(t.root.baseUrl+="data/path/");const a=t.asset.i3s;if(t.root.ut=s,e){const r=e.boundingVolume;p(e,t.root),e.refine=e.refine&&e.refine.toLowerCase()||"replace",r&&(e.boundingVolume=r);const i=t.root.transform;i&&(e.parent?a||(e.matrix=n.multiply([],e.parent.matrix,i)):e.matrix=i),this.xe(e),e.ve=e.content,delete e.content,t.root.content&&(e.content=t.root.content),e.we=this.Ce(e);const s=e.content&&(e.content.url||e.content.uri);s&&e.content.uri&&(e.content.url=e.content.uri,delete e.content.uri),a||!s||x(s)||-1!==s.indexOf("http://")||-1!==s.indexOf("https://")||(e.content.url=e.baseUrl+s)}this.ye(),this.fire("loadtileset",{tileset:t,index:e.H,url:r})}Se(t,e,r){if(t.$=1/0,0===t.V||t.we)return 1;if(!this.Be(t,e,r))return-1;if(0===t.geometricError)return 1;let n=this.options.services[t.H].maximumScreenSpaceError;null==n&&(n=8);let i=this.Le(t);return 0===i&&t.parent&&(i=.5*(t.parent.Qt||0)),i>=n?1:0}st(e,r){r||(r=new t.Point(0,0));const n=this.getMap();return n.getGLZoom?n.coordToPoint(e,n.getGLZoom(),r):n.coordToPointAtRes(e,n.getGLRes(),r)}Be(e,r,o){const a=e.id;let c=this.Te[a];const{boundingVolume:u}=e,_=u.sphere;let d=u.region;const E=u.box;if(!c){let r,o,l;if(E&&(d=function(t,e){for(let e=0;e<9;e++)Lr[e]=t[e+3];const r=Lr;n.exactEquals(e,gr)||s.multiply(r,s.fromMat4(yr,e),r);const o=i.copy(Sr,t),a=i.set(Or,r[0],r[1],r[2]),c=i.set(Mr,r[3],r[4],r[5]),l=i.set(wr,r[6],r[7],r[8]);Cr[0]=Cr[0]||[];const f=i.copy(Cr[0],o);i.sub(f,f,a),i.sub(f,f,c),i.sub(f,f,l),Cr[1]=Cr[1]||[];const h=i.copy(Cr[1],o);i.sub(h,h,a),i.sub(h,h,c),i.add(h,h,l),Cr[2]=Cr[2]||[];const u=i.copy(Cr[2],o);i.sub(u,u,a),i.add(u,u,c),i.sub(u,u,l),Cr[3]=Cr[3]||[];const _=i.copy(Cr[3],o);i.sub(_,_,a),i.add(_,_,c),i.add(_,_,l),Cr[4]=Cr[4]||[];const d=i.copy(Cr[4],o);i.add(d,d,a),i.sub(d,d,c),i.sub(d,d,l),Cr[5]=Cr[5]||[];const E=i.copy(Cr[5],o);i.add(E,E,a),i.sub(E,E,c),i.add(E,E,l),Cr[6]=Cr[6]||[];const T=i.copy(Cr[6],o);i.add(T,T,a),i.add(T,T,c),i.sub(T,T,l),Cr[7]=Cr[7]||[];const m=i.copy(Cr[7],o);i.add(m,m,a),i.add(m,m,c),i.add(m,m,l);for(let t=0;t<Cr.length;t++)xr[t]=xr[t]||[],J(xr[t],Cr[t]),Ur[t]=xr[t][0],vr[t]=xr[t][1],Br[t]=xr[t][2];return[g(Math.min(...Ur)),g(Math.min(...vr)),g(Math.max(...Ur)),g(Math.max(...vr)),Math.min(...Br),Math.max(...Br)]}(E,e.matrix),u.region=d),d){r=_r.set(b(d[0]),b(d[1]),b(d[2]),b(d[3]));const t=r.getCenter(),e=this.Pe(t);r=r.convertTo((t=>this.st(t,pr)),dr),l=d[4],o=d[5],c=this.Te[a]=[[r.xmin,r.ymin,l*e[2]],[r.xmax,r.ymax,o*e[2]]],c.center=t}else if(_){const e=J(Er,_),r=new t.Coordinate(e),n=this.st(r,pr).toArray(),i=this.Pe(r);n.push(e[2]*i[2]),c=this.Te[a]=[n,_[3]*i[2]],c.center=r}}if(r){if(d)_r.xmin=c[0][0],_r.ymin=c[0][1],_r.xmax=c[1][0],_r.ymax=c[1][1];else if(_){const t=c[2];_r.xmin=c[0][0]-t,_r.ymin=c[0][1]-t,_r.xmax=c[0][0]+t,_r.ymax=c[0][1]+t}else if(E){const t=c[1],e=c[2];_r.xmin=c[0][0]-t,_r.ymin=c[0][1]-e,_r.xmax=c[0][0]+t,_r.ymax=c[0][1]+e}if(!r.intersects(_r))return!1}return d?l(o,c):_?f(o,c):!!E&&h(o,c)}Pe(t){const e=this.getMap(),r=e.distanceToPointAtRes(100,100,e.getGLRes(),t);let n;return n=e.altitudeToPoint?e.altitudeToPoint(100,e.getGLRes())/100:r.y/100,i.set(mr,r.x/100*1.01,r.y/100*1.01,n),mr}Ue(e){Array.isArray(e)&&(e=new t.Coordinate(e));let r=this.options.offset;if(y(r)&&(r=r(Array.isArray(e)?new t.Coordinate(e):e)),r[0]||r[1]){const t=this.getMap(),n=t.getGLRes(),i=t.coordToPointAtRes(e,n);return i._sub(r),t.pointAtResToCoord(i,n)}return e}Ie(e){const r=this.options.services[e].maxExtent;if(!r)return null;const n=this.me[e];return n.maxExtent||(n.maxExtent=new t.Extent(r).convertTo((t=>this.st(t)))),n.maxExtent}Le(t){const e=this.be,r=t.geometricError;if(0===r)return t.Qt=0,0;const n=this.getMap();let i;t.boundingVolume.region?i=function(t,e,r){t.De||(t.De=new hr(t.boundingVolume.region));return t.De.distanceToCamera(e,r)}(t,this.ge,this.Re):t.boundingVolume.sphere?i=Ir(t.boundingVolume,this.ge):t.boundingVolume.box&&(i=Nr(t.boundingVolume,this.ge));const s=Math.max(Math.abs(i),1e-7),o=r*n.height/(s*e);return t.$=i,t.Qt=o,o}ye(){const t=this.getRenderer();t&&t.setToRedraw()}At(t){return this.Te[t]}identify(e,r={}){const n=this.getMap(),i=this.getRenderer();if(!n||!i)return[];const s=n.coordToContainerPoint(new t.Coordinate(e));return this.identifyAtPoint(s,r)}identifyAtPoint(t,e={}){const r=this.getMap(),n=this.getRenderer();if(!r||!n)return[];const i=r.getDevicePixelRatio();return n.pick(t.x*i,t.y*i,e)}}function Ir(t,e){const r=t.sphere,n=i.dist(r,e),s=t.sphere[3];return n<s?0:n-s}function Nr(t,e){const r=t.box;return Ve(i.set(Er,r[0],r[1],r[2]),s.set(yr,r[3],r[4],r[5],r[6],r[7],r[8],r[9],r[10],r[11]),e)}br.mergeOptions({"maxGPUMemory":512,"retireInterval":2e3,"loadingLimitOnInteracting":5,"loadingLimit":0,"renderer":"gl","forceRenderOnZooming":!0,"forceRenderOnRotating":!0,"forceRenderOnMoving":!0,"debug":!1,"debugOutline":[0,1,0],"meshLimitPerFrame":1,"i3sNodepageLimitPerFrame":1,"enableI3SCompressedGeometry":!0,"forceI3SCompressedGeometry":!0,"picking":!0,"pickingPoint":!0,"geometryEvents":!1,"antialias":!1,"optionalExtensions":["ANGLE_instanced_arrays","OES_element_index_uint","OES_standard_derivatives","OES_vertex_array_object","OES_texture_half_float","OES_texture_half_float_linear","OES_texture_float","OES_texture_float_linear","WEBGL_depth_texture","EXT_shader_texture_lod","WEBGL_compressed_texture_astc","WEBGL_compressed_texture_etc","WEBGL_compressed_texture_etc1","WEBGL_compressed_texture_pvrtc","WEBGL_compressed_texture_s3tc","WEBGL_compressed_texture_s3tc_srgb"],"offset":[0,0]}),br.registerRenderer("gl",Ge),br.registerJSONType("Geo3DTilesLayer");const Sr=[],Or=[],Mr=[],wr=[],Cr=[],xr=[],Ur=[],vr=[],Br=[],Lr=[];class Pr{constructor(t,e,r){this.Fe=t,this.Ge=e||u,this.oe=r,this.ke={"image/crn":Ne.crn&&Ne.crn(),"image/ktx2":Ne.ktx2&&Ne.ktx2(),"image/cttf":Ne.ktx2&&Ne.ktx2(),"draco":Ne.draco&&Ne.draco()}}static createEmptyB3DM(){return{featureTable:null,batchTable:null,gltf:{}}}load(t,e,r=0,n=0,i){return e?(n||(n=e.byteLength),this.He(t,e,r,n,i)):_.getArrayBuffer(t,{}).then((e=>{const i=e.data;return n||(n=i.byteLength),this.He(t,i,r,n)}))}He(t,e,r,n,i){const s=i&&i.maxTextureSize,o=this.Ve(e,r,n,t);if(o.error)return Promise.resolve(o);const a=t.substring(0,t.lastIndexOf("/")),c=new this.Ge(a,o.glb,{transferable:!0,requestImage:this.Fe,decoders:this.ke,supportedFormats:this.oe,maxTextureSize:s});return c.load({skipAttributeTransform:!1}).then((e=>{e.url=`${t}-${r}-${n}`;const i=c.transferables;for(let t=0;t<o.transferables.length;t++)i.indexOf(o.transferables[t])<0&&i.push(o.transferables[t]);return{magic:"b3dm",count:o.count,transferables:i,featureTable:o.featureTable,batchTable:o.batchTable,batchTableBin:o.batchTableBin,gltf:e}}))}Ve(t,e,r,n){const i=new DataView(t,e,r),s=i.getUint32(4,!0);if(1!==s){const t="Unsupported b3dm version: "+s+", url:"+n;return console.warn(t),{error:t}}if(i.getUint32(8,!0)!==i.byteLength){const t="Length in b3dm header is inconsistent with b3dm's byte length, url: "+n;return console.warn(t),{error:t}}let o,a=i.getUint32(12,!0),c=i.getUint32(16,!0),l=i.getUint32(20,!0),f=i.getUint32(24,!0),h=28+e;l>=570425344?(h-=8,o=a,l=c,f=0,a=0,c=0):f>=570425344&&(h-=4,o=l,l=a,f=c,a=0,c=0);const u=[t];let _,d,E;if(a>0?(_=ft(t,h,a),h+=a,o=_.BATCH_LENGTH):_={"BATCH_LENGTH":o},c>0&&(h+=c),l>0&&(d=ht(t,h,l),h+=l,f>0)){const e=ut(0,h,f);E=t.slice(e.offset,e.offset+e.byteLength),h+=f,u.push(E)}const T=_.BATCH_LENGTH,m={};if(_&&_.BATCH_ID){m.BATCH_ID=dt(_.BATCH_ID,t,undefined.offset,T);const e=m.BATCH_ID.array&&m.BATCH_ID.array.buffer;e&&u.indexOf(e)<0&&u.push(e)}return{count:o,transferables:u,featureTable:_,batchTable:d,batchTableBin:E,b3dm:m,glb:{buffer:t,byteOffset:h,byteLength:i.byteLength+i.byteOffset-h}}}ze(){return null}}class Dr{constructor(t,e,r,n){this.Fe=t,this.Ge=e||u,this.oe=r,this.ke={"image/crn":Ne.crn&&Ne.crn(),"image/ktx2":Ne.ktx2&&Ne.ktx2(),"image/cttf":Ne.ktx2&&Ne.ktx2(),"draco":Ne.draco&&Ne.draco()},this.Xe=n}load(t,e,r=0,n=0,i){return e?(n||(n=e.byteLength),this.He(t,e,r,n,i)):_.getArrayBuffer(t,{}).then((e=>{const i=e.data;return n||(n=i.byteLength),this.He(t,i,r,n)}))}He(t,e,r,n,i){return this.Ye(t,e,r,n,i).then((({gltf:i,transferables:s})=>{const o=this.Ze(e,r,n,t);if(o.error)return Promise.resolve(o);for(let t=0;t<s.length;t++)-1===o.transferables.indexOf(s[t])&&o.transferables.push(s[t]);return delete i.transferables,Promise.resolve({magic:"i3dm",count:o.count,transferables:o.transferables,featureTable:o.featureTable,batchTable:o.batchTable,batchTableBin:o.batchTableBin,i3dm:o.i3dm,gltf:i})}))}Ye(t,e,r,n,i){const s=i&&i.maxTextureSize,o={transferable:!0,requestImage:this.Fe,decoders:this.ke,supportedFormats:this.oe,maxTextureSize:s},a=new DataView(e,r,n),c=32+a.getUint32(12,!0)+a.getUint32(16,!0)+a.getUint32(20,!0)+a.getUint32(24,!0);if(0===a.getUint32(28,!0)){let n=O(new Uint8Array(e,c+r,a.byteLength-c));-1==n.indexOf("://")&&(n=t.substring(0,t.lastIndexOf("/"))+"/"+n);return n.indexOf(".glb")>0?_.getArrayBuffer(n,{}).then((t=>this.We(n,{buffer:t.data,byteOffset:0},o))):_.getJSON(n,{}).then((t=>this.We(n,t,o)))}{const n={buffer:e,byteOffset:c+r,byteLength:a.byteLength-c};return this.We(t,n,o)}}We(t,e,r){const n=t.substring(0,t.lastIndexOf("/")),i=new this.Ge(n,e,r);return i.load({skipAttributeTransform:!0}).then((r=>{let n=0,s=0;return e.buffer&&(n=e.byteOffset||0,s=e.byteLength||0),r.url=`${t}-${n}-${s}`,{transferables:i.transferables,gltf:r}}))}Ze(t,e,r,n){const i=new DataView(t,e,r),s=i.getUint32(4,!0);if(1!==s){const t="Unsupported pnts version: "+s+", url:"+n;return console.warn(t),{error:t}}if(i.getUint32(8,!0)!==i.byteLength){const t="Length in pnts header is inconsistent with pnts's byte length, url: "+n;return console.warn(t),{error:t}}const o=[t],{featureTable:a,featureTableBin:c,batchTable:l,batchTableBin:f}=gt(i,32+e,o),h={},u=a.INSTANCES_LENGTH;if(a.POSITION){const{byteOffset:e}=a.POSITION;h.POSITION={byteStride:0,byteOffset:0,itemSize:3,count:u,componentType:5126,array:new Float32Array(t,e+c.offset,3*u).slice()},o.push(h.POSITION.array.buffer)}else if(a.POSITION_QUANTIZED){const e=a.QUANTIZED_VOLUME_OFFSET,r=a.QUANTIZED_VOLUME_SCALE,{byteOffset:n}=a.POSITION_QUANTIZED;h.POSITION={byteStride:12,byteOffset:0,itemSize:3,count:u,componentType:5126,array:this.Ke(new Uint16Array(t,n+c.offset,3*u),e,r)},o.push(h.POSITION.array.buffer)}if(a.BATCH_ID){h.BATCH_ID=dt(a.BATCH_ID,t,c.offset,u);const e=h.BATCH_ID.array&&h.BATCH_ID.array.buffer;e&&o.indexOf(e)<0&&o.push(e)}if(a.NORMAL_UP){let{byteOffset:e}=a.NORMAL_UP;h.NORMAL_UP={byteStride:0,byteOffset:0,itemSize:3,count:u,componentType:5126,array:new Float32Array(t,e+c.offset,3*u).slice()},o.push(h.NORMAL_UP.array.buffer),e=a.NORMAL_RIGHT.byteOffset,h.NORMAL_RIGHT={byteStride:0,byteOffset:0,itemSize:3,count:u,componentType:5126,array:new Float32Array(t,e+c.offset,3*u).slice()},o.push(h.NORMAL_RIGHT.array.buffer)}else if(a.NORMAL_UP_OCT32P){let{byteOffset:e}=a.NORMAL_UP_OCT32P;h.NORMAL_UP={byteStride:0,byteOffset:0,itemSize:3,count:u,componentType:5126,array:this.je(new Uint16Array(t,e+c.offset,2*u))},o.push(h.NORMAL_UP.array.buffer),e=a.NORMAL_RIGHT_OCT32P.byteOffset,h.NORMAL_RIGHT={byteStride:0,byteOffset:0,itemSize:3,count:u,componentType:5126,array:this.je(new Uint16Array(t,e+c.offset,2*u))},o.push(h.NORMAL_RIGHT.array.buffer)}if(a.SCALE){const{byteOffset:e}=a.SCALE;h.SCALE={byteStride:0,byteOffset:0,itemSize:1,count:u,componentType:5126,array:new Float32Array(t,e+c.offset,u).slice()},o.push(h.SCALE.array.buffer)}else if(a.SCALE_NON_UNIFORM){const{byteOffset:e}=a.SCALE_NON_UNIFORM;h.SCALE_NON_UNIFORM={byteStride:0,byteOffset:0,itemSize:3,count:u,componentType:5126,array:new Float32Array(t,e+c.offset,3*u).slice()},o.push(h.SCALE_NON_UNIFORM.array.buffer)}return{count:u,batchTable:l,batchTableBin:f,featureTable:a,i3dm:h,transferables:o}}je(t){const e=t.length/2,r=new Float32Array(3*e),n=[];for(let i=0;i<e;i++)Fr(n,t[2*i],t[2*i+1],65535),r[3*i]=n[0],r[3*i+1]=n[1],r[3*i+2]=n[2];return r}Ke(t,e,r){return Rt(new Float32Array(t.length),t,e,r)}ze(){return null}}function Fr(t,e,r,n){if(t[0]=Gr(e,n),t[1]=Gr(r,n),t[2]=1-(Math.abs(t[0])+Math.abs(t[1])),t[2]<0){const e=t[0];t[0]=(1-Math.abs(t[1]))*kr(e),t[1]=(1-Math.abs(e))*kr(t[1])}return d.normalize(t,t)}function Gr(t,e){return function(t,e,r){return t<e?e:t>r?r:t}(t,0,e=function(t,e){if(null!=t)return t;return e}(e,255))/e*2-1}function kr(t){return t<0?-1:1}class Hr{constructor(){}load(t,e,r=0,n=0){return e?(n||(n=e.byteLength),this.He(t,e,r,n)):_.getArrayBuffer(t,{}).then((e=>{const i=e.data;return n||(n=i.byteLength),this.He(t,i,r,n)}))}He(t,e,r,n){return this.qe(e,r,n,t).then((t=>t.error?t:{magic:"pnts",count:t.count,transferables:t.transferables,featureTable:t.featureTable,batchTable:t.batchTable,batchTableBin:t.batchTableBin,pnts:t.pnts}))}qe(t,e,r,n){const i=new DataView(t,e,r),s=i.getUint32(4,!0);if(1!==s){const t="Unsupported pnts version: "+s+", url:"+n;return console.warn(t),{error:t}}if(i.getUint32(8,!0)!==i.byteLength){const t="Length in pnts header is inconsistent with pnts's byte length, url: "+n;return console.warn(t),{error:t}}const o=[t],{featureTable:a,featureTableBin:c,batchTable:l,batchTableBin:f}=gt(i,e+28,o),h=a.QUANTIZED_VOLUME_OFFSET,u=a.QUANTIZED_VOLUME_SCALE,_=a.POINTS_LENGTH;let d,E={};if(a.extensions&&a.extensions["3DTILES_draco_point_compression"]){E=a.extensions["3DTILES_draco_point_compression"],d=new DataView(t,E.byteOffset+c.offset,E.byteLength);const e={attributes:E.properties,useUniqueIDs:!1};return this.$e||(this.$e=Ne.draco()),this.$e(d,e).then((e=>{const r=e.attributes;!a.POSITION&&!a.POSITION_QUANTIZED||r.POSITION||r.POSITION_QUANTIZED||(r.POSITION=a.POSITION,r.POSITION_QUANTIZED=a.POSITION_QUANTIZED),!(a.RGB||a.RGBA||a.RGB565)||r.RGB||r.RGBA||r.RGB565||(r.RGB=a.RGB,r.RGBA=a.RGBA,r.RGB565=a.RGB565),!a.NORMAL&&!a.NORMAL_OCT16P||r.NORMAL||r.NORMAL_OCT16P||(r.NORMAL=a.NORMAL,r.NORMAL_OCT16P=a.NORMAL_OCT16P);const n=this.Qe(t,e.attributes,c.offset,_,o,h,u);if(e.attributes.BATCH_ID){const t=e.attributes.BATCH_ID.array;n.BATCH_ID={byteStride:0,byteOffset:0,itemSize:1,count:t.length,componentType:yt(t.constructor),array:t},o.push(t.buffer)}else if(a.BATCH_ID||Object.keys(l).length){a.BATCH_ID?n.BATCH_ID=dt(a.BATCH_ID,t,c.offset,_):n.BATCH_ID=Vr(_);const e=n.BATCH_ID.array&&n.BATCH_ID.array.buffer;e&&o.indexOf(e)<0&&o.push(e)}return{count:_,batchTable:l,batchTableBin:f,featureTable:a,pnts:n,transferables:o}}))}const T=this.Qe(t,a,c.offset,_,o,h,u);if(a.BATCH_ID||Object.keys(l).length){a.BATCH_ID?T.BATCH_ID=dt(a.BATCH_ID,t,c.offset,_):T.BATCH_ID=Vr(_);const e=T.BATCH_ID.array&&T.BATCH_ID.array.buffer;e&&o.indexOf(e)<0&&o.push(e)}return Promise.resolve({count:_,batchTable:l,batchTableBin:f,featureTable:a,pnts:T,transferables:o})}Qe(t,e,r,n,i,s,o){const a={};if(e.POSITION){let{byteOffset:s,array:o}=e.POSITION;s=s||0;const c=o?0:r;if(!o){const e=t.slice(s+c,s+c+3*n*4);o=new Float32Array(e)}a.POSITION={byteStride:0,byteOffset:0,itemSize:3,count:n,componentType:5126,array:o},i.push(o.buffer)}else if(e.POSITION_QUANTIZED){let{byteOffset:c,array:l}=e.POSITION_QUANTIZED;c=c||0;const f=l?0:r;a.POSITION={byteStride:0,byteOffset:0,itemSize:3,count:n,componentType:5126,array:this.Ke(l||new Uint16Array(t,c+f,3*n),s,o)},i.push(a.POSITION.array.buffer)}if(e.RGBA){let{byteOffset:s,array:o}=e.RGBA;s=s||0;const c=o?0:r;if(!o){const e=t.slice(s+c,s+c+4*n);o=new Uint8Array(e)}a.RGBA={byteStride:0,byteOffset:0,itemSize:4,count:n,componentType:5121,array:o},i.push(o.buffer)}else if(e.RGB){let{byteOffset:s,array:o}=e.RGB;s=s||0;const c=o?0:r;if(!o){const e=t.slice(s+c,s+c+3*n);o=new Uint8Array(e)}a.RGB={byteStride:0,byteOffset:0,itemSize:3,count:n,componentType:5121,array:o},i.push(o.buffer)}else if(e.RGB565){let{byteOffset:s,array:o}=e.RGB565;s=s||0;const c=o?0:r;if(!o){const e=t.slice(s+c,s+c+2*n);o=new Uint16Array(e)}a.RGB565={byteStride:0,byteOffset:0,itemSize:1,count:n,componentType:5123,array:o},i.push(o.buffer)}if(e.NORMAL){let{byteOffset:s,array:o}=e.NORMAL;s=s||0;const c=o?0:r;if(!o){const e=t.slice(s+c,s+c+3*n*4);o=new Float32Array(e)}a.NORMAL={byteStride:0,byteOffset:0,itemSize:3,count:n,componentType:5126,array:o},i.push(o.buffer)}else if(e.NORMAL_OCT16P){let{byteOffset:s,array:o}=e.NORMAL_OCT16P;s=s||0;const c=o?0:r;if(!o){const e=t.slice(s+c,s+c+2*n);o=new Uint8Array(e)}a.NORMAL_OCT16P={byteStride:0,byteOffset:0,itemSize:2,count:n,componentType:5121,array:o},i.push(o.buffer)}return a}Ke(t,e,r){return Rt(new Float32Array(t.length),t,e,r)}ze(){return null}}function Vr(t){const e=C(t),r=new e(t);for(let e=0;e<t;e++)r[e]=e;return{byteStride:0,byteOffset:0,itemSize:1,count:t,componentType:yt(e),array:r}}class zr{constructor(t,e){this.Fe=t,this.Ge=e||u}load(t,e,r=0,n=0,i){return e?this.He(t,e,r,n,i):_.getArrayBuffer(t,{}).then((e=>{const i=e.data;return this.He(t,i,r,n)}))}He(t,e,r,n,i){n||(n=e.byteLength);const s=this.Je(e,t,r,n),o=[];for(let r=0;r<s.length;r++){let n;if("b3dm"===s[r].magic)n=new Pr(this.Fe,this.Ge);else if("i3dm"===s[r].magic)n=new Dr(this.Fe,this.Ge);else if("pnts"===s[r].magic)n=new Hr;else{if("cmpt"!==s[r].magic){console.warn("Unsupported magic in CMPT tile:",s[r].magic);continue}n=new zr(this.Fe,this.Ge)}o.push(n.load(t,e,s[r].offset,s[r].byteLength,i).then((t=>t)))}return Promise.all(o).then((t=>({magic:"cmpt",tiles:t})))}Je(t,e,r,n){const i=new DataView(t,r,n),s=i.getUint32(4,!0);if(1!==s){const t="Unsupported cmpt version: "+s+", url:"+e;return console.warn(t),{error:t}}if(16===i.byteLength)return[];const o=[],a=i.getUint32(12,!0);let c=16;for(let e=0;e<a;e++){const e=ct(i,c),n=i.getUint32(c+8,!0);o.push({magic:e,buffer:t,offset:c+r,byteLength:n}),c+=n}return o}}if(e.transcoders){const r=t.Map.VERSION;if(r.indexOf("1.0.0-beta")>=0||r.indexOf("1.0.0-alpha")>=0){const r=e.transcoders.inject(m);t.registerWorkerAdapter("@maptalks/3dtiles",r)}else t.registerWorkerAdapter("@maptalks/3dtiles",(function(){return e.transcoders.inject(m)}))}else t.registerWorkerAdapter("@maptalks/3dtiles",m);export{Pr as B3DMLoader,zr as CMPTLoader,br as Geo3DTilesLayer,B as Geo3DTilesUtil,ot as Geo3DTransform};"undefined"!=typeof console&&console.log("@maptalks/3dtiles v0.19.1");