@maptalks/3dtiles 0.22.0 → 0.23.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.
package/dist/maptalks.3dtiles.js
CHANGED
|
@@ -1,23 +1,22 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* @maptalks/3dtiles v0.
|
|
2
|
+
* @maptalks/3dtiles v0.23.1
|
|
3
3
|
* LICENSE : UNLICENSED
|
|
4
|
-
* (c) 2016-
|
|
4
|
+
* (c) 2016-2023 maptalks.org
|
|
5
5
|
*/
|
|
6
|
-
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("maptalks"),require("@maptalks/gl")):"function"==typeof define&&define.amd?define(["exports","maptalks","@maptalks/gl"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).maptalks=t.maptalks||{},t.maptalks,t.maptalksgl)}(this,(function(t,e,r){"use strict";function n(t){if(t&&t.t)return t;var e=Object.create(null);return t&&Object.keys(t).forEach((function(r){if("default"!==r){var n=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(e,r,n.get?n:{enumerable:!0,get:function(){return t[r]}})}})),e.default=t,Object.freeze(e)}var i=n(e),s=n(r);const o='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]=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}function c(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}function f(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}function u(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 l(){var t=new r(3);return r!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0),t}function E(t){var e=t[0],r=t[1],n=t[2];return Math.sqrt(e*e+r*r+n*n)}function _(t,e,n){var i=new r(3);return i[0]=t,i[1]=e,i[2]=n,i}function A(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function h(t,e,r,n){return t[0]=e,t[1]=r,t[2]=n,t}function T(t,e,r){return t[0]=e[0]+r[0],t[1]=e[1]+r[1],t[2]=e[2]+r[2],t}function R(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t}function y(t,e,r){return t[0]=e[0]*r[0],t[1]=e[1]*r[1],t[2]=e[2]*r[2],t}function I(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t}function N(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 U(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 d(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function S(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 m(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 O=R,F=y,M=E;function C(t,e,r,n,i){return t[0]=e,t[1]=r,t[2]=n,t[3]=i,t}function b(){var t=new r(4);return r!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0),t[3]=1,t}function p(t){return t[0]=0,t[1]=0,t[2]=0,t[3]=1,t}function w(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}l(),function(){var t,e=(t=new r(4),r!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0,t[3]=0),t)}();var D,B=function(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t};l(),_(1,0,0),_(0,1,0),b(),b(),D=new r(9),r!=Float32Array&&(D[1]=0,D[2]=0,D[3]=0,D[5]=0,D[6]=0,D[7]=0),D[0]=1,D[4]=1,D[8]=1;\n/*!\n * @maptalks/gltf-loader v0.27.2\n * LICENSE : UNLICENSED\n * (c) 2016-2022 maptalks.org\n */\nlet L=0;function P(t){return null==t}function g(t){return!P(t)}function G(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 v(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 X(t){return 0===t.indexOf("data:")&&t.indexOf("base64,")>0}function H(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 x=[],V=[],k=[],Z=[0,0,0],Y=p([]),K=[1,1,1];function z(t,e,r,n,i,s,o){const a=v(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 W="undefined"!=typeof TextDecoder?new TextDecoder("utf-8"):null;function j(t,e,r){const n=new Uint8Array(t,e,r);return W.decode(n)}const q={get:function(t,e={}){e||(e={});const r=new AbortController,n=r.signal,i=G({},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",q.get(t,e)),getJSON:function(t,e={}){return e&&e.jsonp?q.jsonp(t):((e=e||{}).responseType="json",q.get(t,e))},jsonp:function(t){const e="_maptalks_jsonp_"+L++;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 ${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(X(t.uri)){const n=this.buffers[t.id]=H(t.uri),i=this.l(e,n);return this.getImageByBuffer(i,r)}return this.u[t.id]=q.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 J=["SCALAR",1,"VEC2",2,"VEC3",3,"VEC4",4,"MAT2",4,"MAT3",9,"MAT4",16];class Q{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(X(e.uri)){const t=this.buffers[e.id]=H(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]=q.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=v(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=z(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=J.indexOf(t);return J[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=j(i,s+(e.byteOffset||0),r);return t.content=o,t}))}if(t.uri){if(X(t.uri)){const e=H(t.uri),r=j(e,0,e.byteLength);return t.content=r,Promise.resolve(t)}{const e=this.rootPath+"/"+t.uri;return q.get(e).then((e=>(t.content=e,t)))}}return Promise.resolve(t)}));return Promise.all(r).then((()=>t))}}class tt extends ${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 Q(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(g(t.name)&&(e.name=t.name),g(t.children)&&(e.children=t.children),g(t.jointName)&&(e.jointName=t.jointName),g(t.matrix)&&(e.matrix=t.matrix),g(t.rotation)&&(e.rotation=t.rotation),g(t.scale)&&(e.scale=t.scale),g(t.translation)&&(e.translation=t.translation),g(t.extras)&&(e.extras=t.extras),g(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=a(x,e.translation||Z),n=f(V,e.rotation||Y),i=c(k,e.scale||K);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)}F(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 et extends ${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 Q(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 G(e,t),!g(t.weights)&&this.gltf.meshes&&g(e.mesh)?e.weights=this.gltf.meshes[e.mesh].weights:t.weights&&(e.weights=t.weights),e}F(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}};G(n,e);const i=g(e.sampler)?this.gltf.samplers[e.sampler]:void 0;return i&&(n.sampler=i),t.format&&(n.format=t.format),n}))}O(t){if(!g(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.M(e,t)}return null}M(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++)(g(t[r].input)||g(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 rt="undefined"!=typeof TextDecoder?new TextDecoder("utf-8"):null;class nt{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 nt.readV1(n,e);if(2===i)return nt.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=it(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=it(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 it(t,e,r){if(rt){const n=new Uint8Array(t,e,r);return rt.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=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}(new Uint8Array(t,e,r))}const st=[1,1,1,1,2,2,3,0],ot=[0,0,0],at=[0,0,0,1],ct=[1,1,1],ft={TRANSLATION:[0,0,0],ROTATION:[0,0,0,1],SCALE:[1,1,1]},ut={PREVIOUS:null,NEXT:null,PREINDEX:null,NEXTINDEX:null,INTERPOLATION:null},lt={p(t,e,r,n,i,s,o,a){const c=g(t)?e.animations:[e.animations[0]],f={};for(let e=0;e<c.length;e++){const u=c[e],l=u.name||e;if(g(t)&&l!==t)continue;const E=u.channelsMap[r];if(E)for(let t=0;t<E.length;t++){const e=E[t];"translation"===e.target.path?(this.D(i,u.samplers[e.sampler],n,1),f.translation=A(ot,i)):"rotation"===e.target.path?(this.B(s,u.samplers[e.sampler],n,1),f.rotation=B(at,s)):"scale"===e.target.path?(this.D(o,u.samplers[e.sampler],n,1),f.scale=A(ct,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(ut,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(ut,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(ut,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(ut,e,r,1);n&&w(t,n.PREVIOUS,n.NEXT,n.INTERPOLATION);break}case"STEP":{const n=this.L(ut,e,r,1);n&&(t=C(t,...n.PREVIOUS));break}case"CUBICSPLINE":{const n=this.L(ut,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 h(ot,...ft.TRANSLATION),C(at,...ft.ROTATION),h(ct,...ft.SCALE),this.p(n,t,e,r,ot,at,ct,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?g(e)?r[e]:r[Object.keys(r)[0]]:null}};let Et=!1;if("undefined"!=typeof OffscreenCanvas){let t;try{t=new OffscreenCanvas(2,2).getContext("2d")}catch(Re){}t&&"undefined"!=typeof createImageBitmap&&(Et=!0)}const _t="undefined"==typeof document?null:document.createElement("canvas");class At{constructor(t,e,r){if(this.options=r||{},this.options.decoders||(this.options.decoders={}),e.buffer instanceof ArrayBuffer){const{json:r,glbBuffer:n}=nt.read(e.buffer,e.byteOffset,e.byteLength);this.v(t,r,n)}else this.v(t,e);this.X=new Q(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 lt.getAnimationClip(t,e,r,n)}static getAnimationTimeSpan(t,e){return lt.getTimeSpanByName(t,e)}static getTypedArrayCtor(t){return v(t)}static readInterleavedArray(t,e,r,n,i,s,o){return z(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=Et?yt.bind(this):this.options.requestImage||ht,this.options.transferable&&(this.transferables=[]),2===this.version?(this.adapter=new et(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 tt(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!P(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 g(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 G(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.F(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(g(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(g(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;I(t,t,i),T(t,t,s),I(r,r,i),T(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=g(t.mode)?t.mode:4,g(t.extras)&&(s.extras=t.extras),s}))}}function ht(t,e){const r=new Image;r.crossOrigin="",r.onload=()=>{if(!_t)return void e(new Error("There is no canvas to draw image!"));_t.width=r.width,_t.height=r.height;const t=_t.getContext("2d",{willReadFrequently:!0});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 Tt,Rt;function yt(t,e){Tt||(Tt=new OffscreenCanvas(2,2),Rt=Tt.getContext("2d",{willReadFrequently:!0})),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;It(r)||(r=Nt(r)),It(n)||(n=Nt(n));const i=this.options.maxTextureSize;i&&(r=Math.min(i,r),n=Math.min(i,n)),Tt.width=r,Tt.height=n,Rt.drawImage(t,0,0,r,n),t.close();const s=Rt.getImageData(0,0,r,n);e(null,{width:r,height:n,data:new Uint8Array(s.data)})})).catch((t=>{console.warn(t),e(t)}))}function It(t){return 0==(t&t-1)&&0!==t}function Nt(t){return Math.pow(2,Math.floor(Math.log(t)/Math.LN2))}function Ut(t){return"object"==typeof t&&!!t}function dt(t){return t*Math.PI/180}function St(t){return t/Math.PI*180}function mt(t){return Math.sign?Math.sign(t):0===(t=+t)||isNaN(t)?Number(t):t>0?1:-1}const Ot=[1,1,1,1,2,2,3,0];function Ft(t){const e=t.length;let r="";for(let n=0;n<e;){let i=t[n++];if(128&i){let r=Ot[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 Mt=new Array(3),Ct=new Array(3),bt=[40680631590769,40680631590769,40408299984661.445];const pt=[1/6378137,1/6378137,1/6356752.314245179],wt=[1/40680631590769,1/40680631590769,1/40408299984661.445],Dt=new Array(3),Bt=new Array(3),Lt=new Array(3);function Pt(t,e){const r=wt,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),T=I(gt,e,h);if(A<i)return isFinite(h)?T:void 0;const R=n[0],y=n[1],N=n[2],U=Gt;U[0]=T[0]*R*2,U[1]=T[1]*y*2,U[2]=T[2]*N*2;let d,S,m,O,F,M,C,b,p,w,D,B=(1-h)*vt(e)/(.5*vt(U)),L=0;do{B-=L,m=1/(1+B*R),O=1/(1+B*y),F=1/(1+B*N),M=m*m,C=O*O,b=F*F,p=M*m,w=C*O,D=b*F,d=l*M+E*C+_*b-1,S=l*p*R+E*w*y+_*D*N;L=d/(-2*S)}while(Math.abs(d)>1e-12);return t[0]=s*m,t[1]=o*O,t[2]=a*F,t}(Dt,e,pt,r,.1);let i=F(Bt,n,r);i=Xt(i,i);const s=O(Lt,e,n),o=Math.atan2(i[1],i[0]),a=Math.asin(i[2]),c=mt(d(s,e))*vt(s);return t[0]=St(o),t[1]=St(a),t[2]=c,t}const gt=new Array(3),Gt=new Array(3);function vt(t){return E(t)}function Xt(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 Ht(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 Vt="undefined"!=typeof TextDecoder?new TextDecoder("utf-8"):null;function kt(t,e,r){const n=new Uint8Array(t,e,r);return Vt?JSON.parse(Vt.decode(n)):JSON.parse(Ft(n))}function Zt(t,e,r){const n=new Uint8Array(t,e,r);return Vt?JSON.parse(Vt.decode(n)):JSON.parse(Ft(n))}function Yt(t,e,r){return{offset:e,byteLength:r}}function Kt(t,e,r,n){const{byteOffset:i,componentType:s,type:o}=t,{ctor:a,type:c}=function(t){return jt[t]}(s||"UNSIGNED_SHORT"),f=function(t){if(!t)return 1;return Wt[t]}(o);return{byteStride:0,byteOffset:i+r,itemSize:f,count:n*f,componentType:c,array:new a(e,r+i,n*f)}}function zt(t,e,r,n){const i=Kt(t,e,r,n);return i.array.buffer.byteLength!==e.byteLength&&(i.array=i.array.slice()),i}const Wt={"SCALAR":1,"VEC2":2,"VEC3":3,"VEC4":4};const jt={"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 qt(t){for(let e in jt)if(t===jt[e].ctor)return jt[e].type;throw new Error("unrecognized ctor:"+t)}function $t(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 Jt(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=kt(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=Zt(a,e,s),e+=s);const E=Yt(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 Qt={north:[-1,0,0],east:[0,1,0],up:[0,0,1],south:[1,0,0],west:[0,-1,0],down:[0,0,-1]},te={},ee={east:[],north:[],up:[],west:[],south:[],down:[]},re=[],ne=[],ie=[];const se=[0,0,0];const oe=(ue={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"}}[ae="east"][ce="north"],te[le=ae+ce]?fe=te[le]:(fe=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,se))A(re,Qt[ae]),A(ne,Qt[ce]),A(ie,Qt[ue]);else if(Ht(t[0],0,1e-14)&&Ht(t[1],0,1e-14)){var i=mt(t[2]);A(re,Qt[ae]),"east"!==ae&&"west"!==ae&&I(re,re,i),A(ne,Qt[ce]),"east"!==ce&&"west"!==ce&&I(ne,ne,i),A(ie,Qt[ue]),"east"!==ue&&"west"!==ue&&I(ie,ie,i)}else{!function(t,e){y(e,t,wt),U(e,e)}(t,ee.up);var s=ee.up,o=ee.east;o[0]=-t[1],o[1]=t[0],o[2]=0,U(ee.east,o),S(ee.north,s,o),I(ee.down,ee.up,-1),I(ee.west,ee.east,-1),I(ee.south,ee.north,-1),re=ee[ae],ne=ee[ce],ie=ee[ue]}return n[0]=re[0],n[1]=re[1],n[2]=re[2],n[3]=0,n[4]=ne[0],n[5]=ne[1],n[6]=ne[2],n[7]=0,n[8]=ie[0],n[9]=ie[1],n[10]=ie[2],n[11]=0,n[12]=t[0],n[13]=t[1],n[14]=t[2],n[15]=1,n},te[le]=fe),fe);var ae,ce,fe,ue,le;const Ee={5120:Int8Array,5122:Int16Array,5124:Int32Array,5121:Uint8Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array};function _e(t){for(let e in Ee)if(t===Ee[e])return+e;throw new Error("unrecognized ctor:"+t)}function Ae(t){return 1===t?"FLOAT":"VEC"+t}\n/*!\n * @maptalks/gl v0.80.0\n * LICENSE : UNLICENSED\n * (c) 2016-2022 maptalks.com\n */const he=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")},Te=he(),Re=Te.gl_trans__coders=Te.gl_trans__coders||{};Re.inject=function(t){const e=t.toString(),r=e.indexOf("{")+1,n=e.substring(0,r),i=Te.gl_trans__coders=Te.gl_trans__coders||{};let s=`${n}\\n const _____getGlobal = ${he.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},Re.registerTranscoder=function(t,e){Re[t]=e},Re.getTranscoder=function(t){return Re[t]};let ye=null;function Ie(){return ye||(ye={"image/crn":Re.crn&&Re.crn(),"image/ktx2":Re.ktx2&&Re.ktx2(),"image/cttf":Re.ktx2&&Re.ktx2(),"draco":Re.draco&&Re.draco()}),ye}class Ne{constructor(t,e,r){this.i=t,this.et=e||At,this.o=r,this.rt=Ie()}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)):q.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?(_=kt(t,l,a),l+=a,o=_.BATCH_LENGTH):_={"BATCH_LENGTH":o},c>0&&(l+=c),f>0&&(A=Zt(t,l,f),l+=f,u>0)){const e=Yt(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=zt(_.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 Ue{constructor(t,e,r,n){this.i=t,this.et=e||At,this.o=r,this.rt=Ie(),this.ot=n}load(t,e,r=0,n=0,i){return e?(n||(n=e.byteLength),this.nt(t,e,r,n,i)):q.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=Ft(new Uint8Array(e,c+r,a.byteLength-c));-1==n.indexOf("://")&&(n=t.substring(0,t.lastIndexOf("/"))+"/"+n);return n.indexOf(".glb")>0?q.getArrayBuffer(n,{}).then((t=>this.ut(n,{buffer:t.data,byteOffset:0},o))):q.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}=Jt(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=zt(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++)de(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 $t(new Float32Array(t.length),t,e,r)}st(){return null}}function de(t,e,r,n){if(t[0]=Se(e,n),t[1]=Se(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]))*me(e),t[1]=(1-Math.abs(e))*me(t[1])}return U(t,t)}function Se(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 me(t){return t<0?-1:1}class Oe{constructor(){}load(t,e,r=0,n=0){return e?(n||(n=e.byteLength),this.nt(t,e,r,n)):q.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}=Jt(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=Ie().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:qt(t.constructor),array:t},o.push(t.buffer)}else if(a.BATCH_ID||Object.keys(f).length){a.BATCH_ID?n.BATCH_ID=zt(a.BATCH_ID,t,c.offset,_):n.BATCH_ID=Fe(_);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=zt(a.BATCH_ID,t,c.offset,_):T.BATCH_ID=Fe(_);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 $t(new Float32Array(t.length),t,e,r)}st(){return null}}function Fe(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:qt(e),array:n}}class Me{constructor(t,e,r,n){this.o=r,this.i=t,this.et=e||At,this.ot=n}load(t,e,r=0,n=0,i){return e?this.nt(t,e,r,n,i):q.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 Ne(this.i,this.et,this.o);else if("i3dm"===s[r].magic)n=new Ue(this.i,this.et,this.o,this.ot);else if("pnts"===s[r].magic)n=new Oe;else{if("cmpt"!==s[r].magic){console.warn("Unsupported magic in CMPT tile:",s[r].magic);continue}n=new Me(this.i,this.et,this.o,this.ot)}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 Ce(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=[];Pe(n[r],i,t,e)}}}const be=[],pe=[],we=[],De=[0,0,0],Be=p([]),Le=[1,1,1];function Pe(t,e,r,n){const i=e.slice(0);if(t.matrix)i.push(t.matrix);else if(t.rotation||t.translation||t.scale){const e=a(be,t.translation||De),r=f(pe,t.rotation||Be),n=c(we,t.scale||Le);o(n,r,n);const s=o([],e,n);i.push(s)}if(t.children&&t.children.length)for(let e=0,s=t.children.length;e<s;e++)Pe(t.children[e],i,r,n);if(void 0!==t.mesh){const e=t.mesh,s=r.meshes[e];if(s){const t=i.slice(0),o=s.primitives;for(let i=0,s=o.length;i<s;i++){const s=o[i];s&&(s.matrices=t,n(s,e,i,r))}}}}function ge(t,e){let{componentType:r,byteOffset:n,byteStride:i,count:s,itemSize:o}=t;const a=t.array.buffer,c=r?At.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 Ge=[],ve=[];function Xe(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=bt,s=Math.cos(r);Mt[0]=s*Math.cos(e),Mt[1]=s*Math.sin(e),Mt[2]=Math.sin(r),Xt(Mt,Mt),y(Ct,i,Mt);const o=Math.sqrt(d(Mt,Ct));var a,c,f;return c=Ct,f=o,(a=Ct)[0]=c[0]/f,a[1]=c[1]/f,a[2]=c[2]/f,I(Mt,Mt,n),T(t,Ct,Mt)}([],dt(r),dt(n),s),a=oe(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;h(Ge,n.min.x,n.min.y,n.min.z),h(ve,n.max.x,n.max.y,n.max.z);const i={center:[0,0,0],radius:0};He(Ge,ve,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 A(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=R(Ve,s,n),c=nr(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=I(ke,a,(-i+f)/c);return T(u,u,n),A(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=h(e.center,0,0,0),e.radius=0,e;const r=A(qe,t[0]),n=A(Ze,r),i=A(Ye,r),s=A(Ke,r),o=A(ze,r),a=A(We,r),c=A(je,r),f=t.length;for(let e=1;e<f;e++){A(r,t[e]);const f=r[0],u=r[1],l=r[2];f<n[0]&&A(n,r),f>o[0]&&A(o,r),u<i[1]&&A(i,r),u>a[1]&&A(a,r),l<s[2]&&A(s,r),l>c[2]&&A(c,r)}const u=rr(R($e,o,n)),l=rr(R($e,a,i)),E=rr(R($e,c,s));let _=n,T=o,y=u;l>y&&(y=l,_=i,T=a);E>y&&(y=E,_=s,T=c);const I=Je;I[0]=.5*(_[0]+T[0]),I[1]=.5*(_[1]+T[1]),I[2]=.5*(_[2]+T[2]);let N=rr(R($e,T,I)),U=Math.sqrt(N);const d=Qe;d[0]=n[0],d[1]=i[1],d[2]=s[2];const S=tr;S[0]=o[0],S[1]=a[1],S[2]=c[2];const m=xe(d,S,er);let O=0;for(let e=0;e<f;e++){A(r,t[e]);const n=nr(R($e,r,m));n>O&&(O=n);const i=rr(R($e,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?(A(e.center,I),e.radius=U):(A(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,N(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 He(t,e,r){var n=xe(t,e,r.center);return r.radius=N(n,e),r}function xe(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 Ve=[],ke=[];const Ze=[],Ye=[],Ke=[],ze=[],We=[],je=[],qe=[],$e=[],Je=[],Qe=[],tr=[],er=[];function rr(t){return t[0]*t[0]+t[1]*t[1]+t[2]*t[2]}function nr(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 ir(t){let e=t.length;for(;--e>=0;)t[e]=0}const sr=256,or=286,ar=30,cr=15,fr=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]),ur=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]),lr=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),Er=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),_r=new Array(576);ir(_r);const Ar=new Array(60);ir(Ar);const hr=new Array(512);ir(hr);const Tr=new Array(256);ir(Tr);const Rr=new Array(29);ir(Rr);const yr=new Array(ar);function Ir(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 Nr,Ur,dr;function Sr(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}ir(yr);const mr=t=>t<256?hr[t]:hr[256+(t>>>7)],Or=(t,e)=>{t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255},Fr=(t,e,r)=>{t.bi_valid>16-r?(t.bi_buf|=e<<t.bi_valid&65535,Or(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)},Mr=(t,e,r)=>{Fr(t,r[2*e],r[2*e+1])},Cr=(t,e)=>{let r=0;do{r|=1&t,t>>>=1,r<<=1}while(--e>0);return r>>>1},br=(t,e,r)=>{const n=new Array(16);let i,s,o=0;for(i=1;i<=cr;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]=Cr(n[e]++,e))}},pr=t=>{let e;for(e=0;e<or;e++)t.dyn_ltree[2*e]=0;for(e=0;e<ar;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},wr=t=>{t.bi_valid>8?Or(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]},Br=(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},Lr=(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?Mr(t,i,e):(s=Tr[i],Mr(t,s+sr+1,e),o=fr[s],0!==o&&(i-=Rr[s],Fr(t,i,o)),n--,s=mr(n),Mr(t,s,r),o=ur[s],0!==o&&(n-=yr[s],Fr(t,n,o)))}while(a<t.last_lit);Mr(t,256,e)},Pr=(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--)Br(t,r,o);c=s;do{o=t.heap[1],t.heap[1]=t.heap[t.heap_len--],Br(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++,Br(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<=cr;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),br(r,f,t.bl_count)},gr=(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))},Gr=(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{Mr(t,i,t.bl_tree)}while(0!=--a);else 0!==i?(i!==s&&(Mr(t,i,t.bl_tree),a--),Mr(t,16,t.bl_tree),Fr(t,a-3,2)):a<=10?(Mr(t,17,t.bl_tree),Fr(t,a-3,3)):(Mr(t,18,t.bl_tree),Fr(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 vr=!1;const Xr=(t,e,r,n)=>{Fr(t,0+(n?1:0),3),((t,e,r,n)=>{wr(t),n&&(Or(t,r),Or(t,~r)),t.pending_buf.set(t.window.subarray(e,e+r),t.pending),t.pending+=r})(t,e,r,!0)};var Hr=t=>{vr||((()=>{let t,e,r,n,i;const s=new Array(16);for(r=0,n=0;n<28;n++)for(Rr[n]=r,t=0;t<1<<fr[n];t++)Tr[r++]=n;for(Tr[r-1]=n,i=0,n=0;n<16;n++)for(yr[n]=i,t=0;t<1<<ur[n];t++)hr[i++]=n;for(i>>=7;n<ar;n++)for(yr[n]=i<<7,t=0;t<1<<ur[n]-7;t++)hr[256+i++]=n;for(e=0;e<=cr;e++)s[e]=0;for(t=0;t<=143;)_r[2*t+1]=8,t++,s[8]++;for(;t<=255;)_r[2*t+1]=9,t++,s[9]++;for(;t<=279;)_r[2*t+1]=7,t++,s[7]++;for(;t<=287;)_r[2*t+1]=8,t++,s[8]++;for(br(_r,287,s),t=0;t<ar;t++)Ar[2*t+1]=5,Ar[2*t]=Cr(t,5);Nr=new Ir(_r,fr,257,or,cr),Ur=new Ir(Ar,ur,0,ar,cr),dr=new Ir(new Array(0),lr,0,19,7)})(),vr=!0),t.l_desc=new Sr(t.dyn_ltree,Nr),t.d_desc=new Sr(t.dyn_dtree,Ur),t.bl_desc=new Sr(t.bl_tree,dr),t.bi_buf=0,t.bi_valid=0,pr(t)},xr=(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<sr;e++)if(0!==t.dyn_ltree[2*e])return 1;return 0})(t)),Pr(t,t.l_desc),Pr(t,t.d_desc),o=(t=>{let e;for(gr(t,t.dyn_ltree,t.l_desc.max_code),gr(t,t.dyn_dtree,t.d_desc.max_code),Pr(t,t.bl_desc),e=18;e>=3&&0===t.bl_tree[2*Er[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?Xr(t,e,r,n):4===t.strategy||s===i?(Fr(t,2+(n?1:0),3),Lr(t,_r,Ar)):(Fr(t,4+(n?1:0),3),((t,e,r,n)=>{let i;for(Fr(t,e-257,5),Fr(t,r-1,5),Fr(t,n-4,4),i=0;i<n;i++)Fr(t,t.bl_tree[2*Er[i]+1],3);Gr(t,t.dyn_ltree,e-1),Gr(t,t.dyn_dtree,r-1)})(t,t.l_desc.max_code+1,t.d_desc.max_code+1,o+1),Lr(t,t.dyn_ltree,t.dyn_dtree)),pr(t),n&&wr(t)},Vr={Rt:Hr,yt:Xr,It:xr,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*(Tr[r]+sr+1)]++,t.dyn_dtree[2*mr(e)]++),t.last_lit===t.lit_bufsize-1),Ut:t=>{Fr(t,2,3),Mr(t,256,_r),(t=>{16===t.bi_valid?(Or(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 kr=(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 Zr=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 Yr=(t,e,r,n)=>{const i=Zr,s=n+r;t^=-1;for(let r=n;r<s;r++)t=t>>>8^i[255&(t^e[r])];return-1^t},Kr={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"},zr={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:Wr,yt:jr,It:qr,Nt:$r,Ut:Jr}=Vr,{Z_NO_FLUSH:Qr,Z_PARTIAL_FLUSH:tn,Z_FULL_FLUSH:en,Z_FINISH:rn,Z_BLOCK:nn,Z_OK:sn,Z_STREAM_END:on,Z_STREAM_ERROR:an,Z_DATA_ERROR:cn,Z_BUF_ERROR:fn,Z_DEFAULT_COMPRESSION:un,Z_FILTERED:ln,Z_HUFFMAN_ONLY:En,Z_RLE:_n,Z_FIXED:An,Z_DEFAULT_STRATEGY:hn,Z_UNKNOWN:Tn,Z_DEFLATED:Rn}=zr,yn=258,In=262,Nn=103,Un=113,dn=666,Sn=(t,e)=>(t.msg=Kr[e],e),mn=t=>(t<<1)-(t>4?9:0),On=t=>{let e=t.length;for(;--e>=0;)t[e]=0};let Fn=(t,e,r)=>(e<<t.hash_shift^r)&t.hash_mask;const Mn=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))},Cn=(t,e)=>{qr(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,Mn(t.strm)},bn=(t,e)=>{t.pending_buf[t.pending++]=e},pn=(t,e)=>{t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e},wn=(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=kr(t.adler,e,i,r):2===t.state.wrap&&(t.adler=Yr(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-In?t.strstart-(t.w_size-In):0,f=t.window,u=t.w_mask,l=t.prev,E=t.strstart+yn;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=yn-(E-s),s=E-yn,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},Bn=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-In)){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=wn(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=Fn(t,t.ins_h,t.window[o+1]);t.insert&&(t.ins_h=Fn(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<In&&0!==t.strm.avail_in)},Ln=(t,e)=>{let r,n;for(;;){if(t.lookahead<In){if(Bn(t),t.lookahead<In&&e===Qr)return 1;if(0===t.lookahead)break}if(r=0,t.lookahead>=3&&(t.ins_h=Fn(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-In&&(t.match_length=Dn(t,r)),t.match_length>=3)if(n=$r(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=Fn(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=Fn(t,t.ins_h,t.window[t.strstart+1]);else n=$r(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(n&&(Cn(t,!1),0===t.strm.avail_out))return 1}return t.insert=t.strstart<2?t.strstart:2,e===rn?(Cn(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(Cn(t,!1),0===t.strm.avail_out)?1:2},Pn=(t,e)=>{let r,n,i;for(;;){if(t.lookahead<In){if(Bn(t),t.lookahead<In&&e===Qr)return 1;if(0===t.lookahead)break}if(r=0,t.lookahead>=3&&(t.ins_h=Fn(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-In&&(t.match_length=Dn(t,r),t.match_length<=5&&(t.strategy===ln||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=$r(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=Fn(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&&(Cn(t,!1),0===t.strm.avail_out))return 1}else if(t.match_available){if(n=$r(t,0,t.window[t.strstart-1]),n&&Cn(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=$r(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<2?t.strstart:2,e===rn?(Cn(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(Cn(t,!1),0===t.strm.avail_out)?1:2};function gn(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 Gn=[new gn(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(Bn(t),0===t.lookahead&&e===Qr)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,Cn(t,!1),0===t.strm.avail_out))return 1;if(t.strstart-t.block_start>=t.w_size-In&&(Cn(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===rn?(Cn(t,!0),0===t.strm.avail_out?3:4):(t.strstart>t.block_start&&(Cn(t,!1),t.strm.avail_out),1)})),new gn(4,4,8,4,Ln),new gn(4,5,16,8,Ln),new gn(4,6,32,32,Ln),new gn(4,4,16,16,Pn),new gn(8,16,32,32,Pn),new gn(8,16,128,128,Pn),new gn(8,32,128,256,Pn),new gn(32,128,258,1024,Pn),new gn(32,258,258,4096,Pn)];function vn(){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=Rn,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),On(this.dyn_ltree),On(this.dyn_dtree),On(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),On(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),On(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 Xn=t=>{if(!t||!t.state)return Sn(t,an);t.total_in=t.total_out=0,t.data_type=Tn;const e=t.state;return e.pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=e.wrap?42:Un,t.adler=2===e.wrap?0:1,e.last_flush=Qr,Wr(e),sn},Hn=t=>{const e=Xn(t);var r;return e===sn&&((r=t.state).window_size=2*r.w_size,On(r.head),r.max_lazy_match=Gn[r.level].max_lazy,r.good_match=Gn[r.level].good_length,r.nice_match=Gn[r.level].nice_length,r.max_chain_length=Gn[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},xn=(t,e,r,n,i,s)=>{if(!t)return an;let o=1;if(e===un&&(e=6),n<0?(o=0,n=-n):n>15&&(o=2,n-=16),i<1||i>9||r!==Rn||n<8||n>15||e<0||e>9||s<0||s>An)return Sn(t,an);8===n&&(n=9);const a=new vn;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,Hn(t)};var Vn=(t,e)=>{let r=e.length;if(!t||!t.state)return an;const n=t.state,i=n.wrap;if(2===i||1===i&&42!==n.status||n.lookahead)return an;if(1===i&&(t.adler=kr(t.adler,e,r,0)),n.wrap=0,r>=n.w_size){0===i&&(On(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,Bn(n);n.lookahead>=3;){let t=n.strstart,e=n.lookahead-2;do{n.ins_h=Fn(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,Bn(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,sn},kn={deflateInit:(t,e)=>xn(t,e,Rn,15,8,hn),deflateInit2:xn,deflateReset:Hn,deflateResetKeep:Xn,deflateSetHeader:(t,e)=>t&&t.state?2!==t.state.wrap?an:(t.state.gzhead=e,sn):an,deflate:(t,e)=>{let r,n;if(!t||!t.state||e>nn||e<0)return t?Sn(t,an):an;const i=t.state;if(!t.output||!t.input&&0!==t.avail_in||i.status===dn&&e!==rn)return Sn(t,0===t.avail_out?fn:an);i.strm=t;const s=i.last_flush;if(i.last_flush=e,42===i.status)if(2===i.wrap)t.adler=0,bn(i,31),bn(i,139),bn(i,8),i.gzhead?(bn(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)),bn(i,255&i.gzhead.time),bn(i,i.gzhead.time>>8&255),bn(i,i.gzhead.time>>16&255),bn(i,i.gzhead.time>>24&255),bn(i,9===i.level?2:i.strategy>=En||i.level<2?4:0),bn(i,255&i.gzhead.os),i.gzhead.extra&&i.gzhead.extra.length&&(bn(i,255&i.gzhead.extra.length),bn(i,i.gzhead.extra.length>>8&255)),i.gzhead.hcrc&&(t.adler=Yr(t.adler,i.pending_buf,i.pending,0)),i.gzindex=0,i.status=69):(bn(i,0),bn(i,0),bn(i,0),bn(i,0),bn(i,0),bn(i,9===i.level?2:i.strategy>=En||i.level<2?4:0),bn(i,3),i.status=Un);else{let e=Rn+(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=Un,pn(i,e),0!==i.strstart&&(pn(i,t.adler>>>16),pn(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=Yr(t.adler,i.pending_buf,i.pending-r,r)),Mn(t),r=i.pending,i.pending!==i.pending_buf_size));)bn(i,255&i.gzhead.extra[i.gzindex]),i.gzindex++;i.gzhead.hcrc&&i.pending>r&&(t.adler=Yr(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=Yr(t.adler,i.pending_buf,i.pending-r,r)),Mn(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,bn(i,n)}while(0!==n);i.gzhead.hcrc&&i.pending>r&&(t.adler=Yr(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=Yr(t.adler,i.pending_buf,i.pending-r,r)),Mn(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,bn(i,n)}while(0!==n);i.gzhead.hcrc&&i.pending>r&&(t.adler=Yr(t.adler,i.pending_buf,i.pending-r,r)),0===n&&(i.status=Nn)}else i.status=Nn;if(i.status===Nn&&(i.gzhead.hcrc?(i.pending+2>i.pending_buf_size&&Mn(t),i.pending+2<=i.pending_buf_size&&(bn(i,255&t.adler),bn(i,t.adler>>8&255),t.adler=0,i.status=Un)):i.status=Un),0!==i.pending){if(Mn(t),0===t.avail_out)return i.last_flush=-1,sn}else if(0===t.avail_in&&mn(e)<=mn(s)&&e!==rn)return Sn(t,fn);if(i.status===dn&&0!==t.avail_in)return Sn(t,fn);if(0!==t.avail_in||0!==i.lookahead||e!==Qr&&i.status!==dn){let r=i.strategy===En?((t,e)=>{let r;for(;;){if(0===t.lookahead&&(Bn(t),0===t.lookahead)){if(e===Qr)return 1;break}if(t.match_length=0,r=$r(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,r&&(Cn(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===rn?(Cn(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(Cn(t,!1),0===t.strm.avail_out)?1:2})(i,e):i.strategy===_n?((t,e)=>{let r,n,i,s;const o=t.window;for(;;){if(t.lookahead<=yn){if(Bn(t),t.lookahead<=yn&&e===Qr)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+yn;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=yn-(s-i),t.match_length>t.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=3?(r=$r(t,1,t.match_length-3),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(r=$r(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),r&&(Cn(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===rn?(Cn(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(Cn(t,!1),0===t.strm.avail_out)?1:2})(i,e):Gn[i.level].func(i,e);if(3!==r&&4!==r||(i.status=dn),1===r||3===r)return 0===t.avail_out&&(i.last_flush=-1),sn;if(2===r&&(e===tn?Jr(i):e!==nn&&(jr(i,0,0,!1),e===en&&(On(i.head),0===i.lookahead&&(i.strstart=0,i.block_start=0,i.insert=0))),Mn(t),0===t.avail_out))return i.last_flush=-1,sn}return e!==rn?sn:i.wrap<=0?on:(2===i.wrap?(bn(i,255&t.adler),bn(i,t.adler>>8&255),bn(i,t.adler>>16&255),bn(i,t.adler>>24&255),bn(i,255&t.total_in),bn(i,t.total_in>>8&255),bn(i,t.total_in>>16&255),bn(i,t.total_in>>24&255)):(pn(i,t.adler>>>16),pn(i,65535&t.adler)),Mn(t),i.wrap>0&&(i.wrap=-i.wrap),0!==i.pending?sn:on)},deflateEnd:t=>{if(!t||!t.state)return an;const e=t.state.status;return 42!==e&&69!==e&&73!==e&&91!==e&&e!==Nn&&e!==Un&&e!==dn?Sn(t,an):(t.state=null,e===Un?Sn(t,cn):sn)},deflateSetDictionary:Vn,deflateInfo:"pako deflate (from Nodeca project)"};const Zn=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var Yn=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)Zn(r,e)&&(t[e]=r[e])}}return t},Kn=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 zn=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(t){zn=!1}const Wn=new Uint8Array(256);for(let t=0;t<256;t++)Wn[t]=t>=252?6:t>=248?5:t>=240?4:t>=224?3:t>=192?2:1;Wn[254]=Wn[254]=1;var jn=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},qn=(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=Wn[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&&zn)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)},$n=(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+Wn[t[r]]>e?r:e};var Jn=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 Qn=Object.prototype.toString,{Z_NO_FLUSH:ti,Z_SYNC_FLUSH:ei,Z_FULL_FLUSH:ri,Z_FINISH:ni,Z_OK:ii,Z_STREAM_END:si,Z_DEFAULT_COMPRESSION:oi,Z_DEFAULT_STRATEGY:ai,Z_DEFLATED:ci}=zr;function fi(t){this.options=Yn({level:oi,method:ci,chunkSize:16384,windowBits:15,memLevel:8,strategy:ai},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 Jn,this.strm.avail_out=0;let r=kn.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(r!==ii)throw new Error(Kr[r]);if(e.header&&kn.deflateSetHeader(this.strm,e.header),e.dictionary){let t;if(t="string"==typeof e.dictionary?jn(e.dictionary):"[object ArrayBuffer]"===Qn.call(e.dictionary)?new Uint8Array(e.dictionary):e.dictionary,r=kn.deflateSetDictionary(this.strm,t),r!==ii)throw new Error(Kr[r]);this.dt=!0}}function ui(t,e){const r=new fi(e);if(r.push(t,!0),r.err)throw r.msg||Kr[r.err];return r.result}fi.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?ni:ti,"string"==typeof t?r.input=jn(t):"[object ArrayBuffer]"===Qn.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===ei||s===ri)&&r.avail_out<=6)this.onData(r.output.subarray(0,r.next_out)),r.avail_out=0;else{if(i=kn.deflate(r,s),i===si)return r.next_out>0&&this.onData(r.output.subarray(0,r.next_out)),i=kn.deflateEnd(this.strm),this.onEnd(i),this.ended=!0,i===ii;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},fi.prototype.onData=function(t){this.chunks.push(t)},fi.prototype.onEnd=function(t){t===ii&&(this.result=Kn(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};var li={Deflate:fi,deflate:ui,deflateRaw:function(t,e){return(e=e||{}).raw=!0,ui(t,e)},gzip:function(t,e){return(e=e||{}).gzip=!0,ui(t,e)},constants:zr};var Ei=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 F=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=F.dmax,c=F.wsize,f=F.whave,u=F.wnext,l=F.window,E=F.hold,_=F.bits,A=F.lencode,h=F.distcode,T=(1<<F.lenbits)-1,R=(1<<F.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){F.mode=12;break t}t.msg="invalid literal/length code",F.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",F.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",F.mode=30;break t}if(E>>>=I,_-=I,I=i-s,U>I){if(I=U-I,I>f&&F.sane){t.msg="invalid distance too far back",F.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),F.hold=E,F.bits=_};const _i=15,Ai=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]),hi=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]),Ti=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]),Ri=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 yi=(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,F=0;const M=new Uint16Array(16),C=new Uint16Array(16);let b,p,w,D=null,B=0;for(h=0;h<=_i;h++)M[h]=0;for(T=0;T<n;T++)M[e[r+T]]++;for(I=c,y=_i;y>=1&&0===M[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===M[R];R++);for(I<R&&(I=R),d=1,h=1;h<=_i;h++)if(d<<=1,d-=M[h],d<0)return-1;if(d>0&&(0===t||1!==y))return-1;for(C[1]=0,h=1;h<_i;h++)C[h+1]=C[h]+M[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=Ai,F-=257,D=hi,B-=257,A=256):(O=Ti,D=Ri,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[F+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==--M[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-=M[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:Ii,Z_BLOCK:Ni,Z_TREES:Ui,Z_OK:di,Z_STREAM_END:Si,Z_NEED_DICT:mi,Z_STREAM_ERROR:Oi,Z_DATA_ERROR:Fi,Z_MEM_ERROR:Mi,Z_BUF_ERROR:Ci,Z_DEFLATED:bi}=zr,pi=12,wi=30,Di=t=>(t>>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24);function Bi(){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 Li=t=>{if(!t||!t.state)return Oi;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,di},Pi=t=>{if(!t||!t.state)return Oi;const e=t.state;return e.wsize=0,e.whave=0,e.wnext=0,Li(t)},gi=(t,e)=>{let r;if(!t||!t.state)return Oi;const n=t.state;return e<0?(r=0,e=-e):(r=1+(e>>4),e<48&&(e&=15)),e&&(e<8||e>15)?Oi:(null!==n.window&&n.wbits!==e&&(n.window=null),n.wrap=r,n.wbits=e,Pi(t))},Gi=(t,e)=>{if(!t)return Oi;const r=new Bi;t.state=r,r.window=null;const n=gi(t,e);return n!==di&&(t.state=null),n};let vi,Xi,Hi=!0;const xi=t=>{if(Hi){vi=new Int32Array(512),Xi=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(yi(1,t.lens,0,288,vi,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;yi(2,t.lens,0,32,Xi,0,t.work,{bits:5}),Hi=!1}t.lencode=vi,t.lenbits=9,t.distcode=Xi,t.distbits=5},Vi=(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 ki=(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 F,M;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 Oi;r=t.state,r.mode===pi&&(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=di;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=Yr(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=wi;break}if((15&f)!==bi){t.msg="unknown compression method",r.mode=wi;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=wi;break}r.dmax=1<<r.wbits,t.adler=r.check=1,r.mode=512&f?10:pi,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)!==bi){t.msg="unknown compression method",r.mode=wi;break}if(57344&r.flags){t.msg="unknown header flags set",r.mode=wi;break}r.head&&(r.head.text=f>>8&1),512&r.flags&&(O[0]=255&f,O[1]=f>>>8&255,r.check=Yr(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=Yr(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=Yr(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=Yr(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=Yr(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=Yr(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=Yr(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=wi;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=pi;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,mi;t.adler=r.check=1,r.mode=pi;case pi:if(e===Ni||e===Ui)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(xi(r),r.mode=20,e===Ui){f>>>=2,u-=2;break t}break;case 2:r.mode=17;break;case 3:t.msg="invalid block type",r.mode=wi}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=wi;break}if(r.length=65535&f,f=0,u=0,r.mode=15,e===Ui)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=pi;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=wi;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,F={bits:r.lenbits},S=yi(0,r.lens,0,19,r.lencode,0,r.work,F),r.lenbits=F.bits,S){t.msg="invalid code lengths set",r.mode=wi;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(M=T+2;u<M;){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=wi;break}d=r.lens[r.have-1],_=3+(3&f),f>>>=2,u-=2}else if(17===y){for(M=T+3;u<M;){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(M=T+7;u<M;){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=wi;break}for(;_--;)r.lens[r.have++]=d}}if(r.mode===wi)break;if(0===r.lens[256]){t.msg="invalid code -- missing end-of-block",r.mode=wi;break}if(r.lenbits=9,F={bits:r.lenbits},S=yi(1,r.lens,0,r.nlen,r.lencode,0,r.work,F),r.lenbits=F.bits,S){t.msg="invalid literal/lengths set",r.mode=wi;break}if(r.distbits=6,r.distcode=r.distdyn,F={bits:r.distbits},S=yi(2,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,F),r.distbits=F.bits,S){t.msg="invalid distances set",r.mode=wi;break}if(r.mode=20,e===Ui)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,Ei(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===pi&&(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=pi;break}if(64&R){t.msg="invalid literal/length code",r.mode=wi;break}r.extra=15&R,r.mode=22;case 22:if(r.extra){for(M=r.extra;u<M;){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=wi;break}r.offset=y,r.extra=15&R,r.mode=24;case 24:if(r.extra){for(M=r.extra;u<M;){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=wi;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=wi;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?Yr(r.check,i,E,o-E):kr(r.check,i,E,o-E)),E=c,(r.flags?f:Di(f))!==r.check){t.msg="incorrect data check",r.mode=wi;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=wi;break}f=0,u=0}r.mode=29;case 29:S=Si;break t;case wi:S=Fi;break t;case 31:return Mi;default:return Oi}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<wi&&(r.mode<27||e!==Ii))&&Vi(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?Yr(r.check,i,E,t.next_out-E):kr(r.check,i,E,t.next_out-E)),t.data_type=r.bits+(r.last?64:0)+(r.mode===pi?128:0)+(20===r.mode||15===r.mode?256:0),(0===l&&0===E||e===Ii)&&S===di&&(S=Ci),S},Zi={inflateReset:Pi,inflateReset2:gi,inflateResetKeep:Li,inflateInit:t=>Gi(t,15),inflateInit2:Gi,inflate:ki,inflateEnd:t=>{if(!t||!t.state)return Oi;let e=t.state;return e.window&&(e.window=null),t.state=null,di},inflateGetHeader:(t,e)=>{if(!t||!t.state)return Oi;const r=t.state;return 0==(2&r.wrap)?Oi:(r.head=e,e.done=!1,di)},inflateSetDictionary:(t,e)=>{const r=e.length;let n,i,s;return t&&t.state?(n=t.state,0!==n.wrap&&11!==n.mode?Oi:11===n.mode&&(i=1,i=kr(i,e,r,0),i!==n.check)?Fi:(s=Vi(t,e,r,r),s?(n.mode=31,Mi):(n.havedict=1,di))):Oi},inflateInfo:"pako inflate (from Nodeca project)"};var Yi=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 Ki=Object.prototype.toString,{Z_NO_FLUSH:zi,Z_FINISH:Wi,Z_OK:ji,Z_STREAM_END:qi,Z_NEED_DICT:$i,Z_STREAM_ERROR:Ji,Z_DATA_ERROR:Qi,Z_MEM_ERROR:ts}=zr;function es(t){this.options=Yn({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 Jn,this.strm.avail_out=0;let r=Zi.inflateInit2(this.strm,e.windowBits);if(r!==ji)throw new Error(Kr[r]);if(this.header=new Yi,Zi.inflateGetHeader(this.strm,this.header),e.dictionary&&("string"==typeof e.dictionary?e.dictionary=jn(e.dictionary):"[object ArrayBuffer]"===Ki.call(e.dictionary)&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(r=Zi.inflateSetDictionary(this.strm,e.dictionary),r!==ji)))throw new Error(Kr[r])}function rs(t,e){const r=new es(e);if(r.push(t),r.err)throw r.msg||Kr[r.err];return r.result}es.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?Wi:zi,"[object ArrayBuffer]"===Ki.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=Zi.inflate(r,o),s===$i&&i&&(s=Zi.inflateSetDictionary(r,i),s===ji?s=Zi.inflate(r,o):s===Qi&&(s=$i));r.avail_in>0&&s===qi&&r.state.wrap>0&&0!==t[r.next_in];)Zi.inflateReset(r),s=Zi.inflate(r,o);switch(s){case Ji:case Qi:case $i:case ts:return this.onEnd(s),this.ended=!0,!1}if(a=r.avail_out,r.next_out&&(0===r.avail_out||s===qi))if("string"===this.options.to){let t=$n(r.output,r.next_out),e=r.next_out-t,i=qn(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!==ji||0!==a){if(s===qi)return s=Zi.inflateEnd(this.strm),this.onEnd(s),this.ended=!0,!0;if(0===r.avail_in)break}}return!0},es.prototype.onData=function(t){this.chunks.push(t)},es.prototype.onEnd=function(t){t===ji&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=Kn(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};var ns={Inflate:es,inflate:rs,inflateRaw:function(t,e){return(e=e||{}).raw=!0,rs(t,e)},ungzip:rs,constants:zr};const{Deflate:is,deflate:ss,deflateRaw:os,gzip:as}=li,{Inflate:cs,inflate:fs,inflateRaw:us,ungzip:ls}=ns;var Es={Deflate:is,deflate:ss,deflateRaw:os,gzip:as,Inflate:cs,inflate:fs,inflateRaw:us,ungzip:ls,constants:zr},_s=5,As=11,hs=13,Ts=14;function Rs(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 ys=new Uint8Array(16),Is=new Uint8Array(16);function Ns(t,e,r,n){var i=0;0!=(6&n)&&(i=8),function(t,e,r,n){for(var i=Rs(e[r+0],e[r+1],ys,0),s=Rs(e[r+2],e[r+3],ys,4),o=0;o<3;o++){var a=ys[o],c=ys[4+o];n&&i<=s?(ys[8+o]=(a+c)/2,ys[12+o]=0):(ys[8+o]=(2*a+c)/3,ys[12+o]=(a+2*c)/3)}for(ys[11]=255,ys[15]=n&&i<=s?0:255,o=0;o<4;++o){var f=e[r+4+o];Is[4*o+0]=3&f,Is[4*o+1]=f>>2&3,Is[4*o+2]=f>>4&3,Is[4*o+3]=f>>6&3}for(o=0;o<16;++o)for(var u=4*Is[o],l=0;l<4;++l)t[4*o+l]=ys[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(ys[0]=n,ys[1]=i,n<=i){for(var s=1;s<5;++s)ys[1+s]=((5-s)*n+s*i)/5;ys[6]=0,ys[7]=255}else for(s=1;s<7;++s)ys[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;Is[o++]=f}}for(s=0;s<16;++s)t[4*s+3]=ys[Is[s]]}(t,e,r)}var Us=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 ds=new Uint8Array(64);function Ss(t){}function ms(){}Ss.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),Us[0]=n[a],Us[1]=n[a+1],c=31&Us[0],f=2016&Us[0],u=63488&Us[0],l=31&Us[1],E=2016&Us[1],_=63488&Us[1],Us[2]=5*c+3*l>>3|5*f+3*E>>3&2016|5*u+3*_>>3&63488,Us[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]=Us[3&s],i[o+1]=Us[s>>2&3],i[o+2]=Us[s>>4&3],i[o+3]=Us[s>>6&3],i[o+=e]=Us[s>>8&3],i[o+1]=Us[s>>10&3],i[o+2]=Us[s>>12&3],i[o+3]=Us[s>>14],s=n[a+3],i[o+=e]=Us[3&s],i[o+1]=Us[s>>2&3],i[o+2]=Us[s>>4&3],i[o+3]=Us[s>>6&3],i[o+=e]=Us[s>>8&3],i[o+1]=Us[s>>10&3],i[o+2]=Us[s>>12&3],i[o+3]=Us[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){Ns(ds,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===hs||s===Ts)t[h+2]=ds[u++],t[h+1]=ds[u++],t[h+0]=ds[u++],t[h+3]=ds[u++];else for(var T=0;T<4;++T)t[h++]=ds[u++]}else u+=4}a+=o}}(t,e,r,n,s,i)}},ms.s3tc=!0,ms.pvrtc=!1,ms.etc1=!1;let Os=1,Fs=2;const Ms=10,Cs=11,bs=1,ps=2,ws=16,Ds=32;function Bs(t,e,r){r=t.byteLength;return t=t.subarray(0,0+r),new TextDecoder("utf-8").decode(t)}function Ls(t,e,r){let n=e.getUint32(r,!0);return r+=Uint32Array.BYTES_PER_ELEMENT,{string:Bs(new Uint8Array(t,r,n)),bytesOffset:r+=n}}function Ps(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=Ls(t,e,r);s.push(n.string),r=n.bytesOffset}return n.push(i),r}function gs(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=Ls(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=Ps(t,e,r,i.geodes);return n.push(i),r}function Gs(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 vs(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 Xs(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 Hs(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 xs(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 Vs(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 ks(t,e,r,n){return r=Vs(t,e,r=xs(t,e,r=Hs(t,e,r=Xs(t,e,r=vs(t,e,r=Gs(t,e,r,n),n),n),n),n),n)}function Zs(t,e,r,n){let i=e.getUint32(r,!0);return n.compressOptions=i,r+=Uint32Array.BYTES_PER_ELEMENT,r=(i&bs)===bs?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):Gs(t,e,r,n),r=(i&ps)===ps?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):vs(t,e,r,n),r=Hs(t,e,r=Xs(t,e,r,n),n),r=(i&ws)===ws?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):xs(t,e,r,n),(i&Ds)===Ds&&(n.textureCoordIsW=!0),r=Vs(t,e,r,n)}function Ys(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=Ls(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 Ks={red:0,green:0,blue:0,alpha:0};function zs(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})}ms.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 Es.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=gs(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=Ls(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===Os?r=ks(t,e,r,c):a===Fs&&(r=Zs(t,e,r,c));let f,u=[];r=Ys(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=Ls(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===Ms||l===Cs?33776:33779;if(22===f&&(_=36196),!ms.s3tc&&(33776===_||33779===_)){let t=new Uint8Array(a*c*4);Ss.decode(t,a,c,E,l),E=t,f=0,_=l===Ms||l===Ms?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=Bs(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=Ls(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}zs(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,Ks);let r=2===s?l[e]:Ks.red+256*Ks.green+65536*Ks.blue;void 0===c[r]&&(c[r]={vertexColorCount:1,instanceIds:[],vertexColorOffset:e}),c[r].instanceIds.push(e)}zs(i[o].vertexPackage,u,1)}}}}(i,n,e,s,r.geoPackage,r.version),r};class Ws{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 js(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 Ws(r,0,{width:o,height:1,colorDepth:32,format:"BGRA"}),f=new Ws(r,c.offset+c.size,{width:n,height:i,colorDepth:s,format:"C"}),u=a?new Ws(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 Ws(r,0,{width:n,height:i,colorDepth:s,format:"BGRA"}),c=24===s&&o?new Ws(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 qs=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}),$s={UNSIGNED_BYTE:qs.UNSIGNED_BYTE,UNSIGNED_SHORT:qs.UNSIGNED_SHORT,UNSIGNED_INT:qs.UNSIGNED_INT,FLOAT:qs.FLOAT,HALF_FLOAT:qs.HALF_FLOAT_OES,UNSIGNED_INT_24_8:qs.UNSIGNED_INT_24_8,UNSIGNED_SHORT_4_4_4_4:qs.UNSIGNED_SHORT_4_4_4_4,UNSIGNED_SHORT_5_5_5_1:qs.UNSIGNED_SHORT_5_5_5_1,UNSIGNED_SHORT_5_6_5:qs.UNSIGNED_SHORT_5_6_5,toWebGLConstant:function(t,e){switch(t){case $s.UNSIGNED_BYTE:return qs.UNSIGNED_BYTE;case $s.UNSIGNED_SHORT:return qs.UNSIGNED_SHORT;case $s.UNSIGNED_INT:return qs.UNSIGNED_INT;case $s.FLOAT:return qs.FLOAT;case $s.HALF_FLOAT:return e.webgl2?qs.HALF_FLOAT:qs.HALF_FLOAT_OES;case $s.UNSIGNED_INT_24_8:return qs.UNSIGNED_INT_24_8;case $s.UNSIGNED_SHORT_4_4_4_4:return qs.UNSIGNED_SHORT_4_4_4_4;case $s.UNSIGNED_SHORT_5_5_5_1:return qs.UNSIGNED_SHORT_5_5_5_1;case $s.UNSIGNED_SHORT_5_6_5:return $s.UNSIGNED_SHORT_5_6_5}},isPacked:function(t){return t===$s.UNSIGNED_INT_24_8||t===$s.UNSIGNED_SHORT_4_4_4_4||t===$s.UNSIGNED_SHORT_5_5_5_1||t===$s.UNSIGNED_SHORT_5_6_5},sizeInBytes:function(t){switch(t){case $s.UNSIGNED_BYTE:return 1;case $s.UNSIGNED_SHORT:case $s.UNSIGNED_SHORT_4_4_4_4:case $s.UNSIGNED_SHORT_5_5_5_1:case $s.UNSIGNED_SHORT_5_6_5:case $s.HALF_FLOAT:return 2;case $s.UNSIGNED_INT:case $s.FLOAT:case $s.UNSIGNED_INT_24_8:return 4}},validate:function(t){return t===$s.UNSIGNED_BYTE||t===$s.UNSIGNED_SHORT||t===$s.UNSIGNED_INT||t===$s.FLOAT||t===$s.HALF_FLOAT||t===$s.UNSIGNED_INT_24_8||t===$s.UNSIGNED_SHORT_4_4_4_4||t===$s.UNSIGNED_SHORT_5_5_5_1||t===$s.UNSIGNED_SHORT_5_6_5}},Js=Object.freeze($s),Qs={DEPTH_COMPONENT:qs.DEPTH_COMPONENT,DEPTH_STENCIL:qs.DEPTH_STENCIL,ALPHA:qs.ALPHA,RGB:qs.RGB,RGBA:qs.RGBA,LUMINANCE:qs.LUMINANCE,LUMINANCE_ALPHA:qs.LUMINANCE_ALPHA,RGB_DXT1:qs.COMPRESSED_RGB_S3TC_DXT1_EXT,RGBA_DXT1:qs.COMPRESSED_RGBA_S3TC_DXT1_EXT,RGBA_DXT3:qs.COMPRESSED_RGBA_S3TC_DXT3_EXT,RGBA_DXT5:qs.COMPRESSED_RGBA_S3TC_DXT5_EXT,RGB_PVRTC_4BPPV1:qs.COMPRESSED_RGB_PVRTC_4BPPV1_IMG,RGB_PVRTC_2BPPV1:qs.COMPRESSED_RGB_PVRTC_2BPPV1_IMG,RGBA_PVRTC_4BPPV1:qs.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG,RGBA_PVRTC_2BPPV1:qs.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG,RGBA_ASTC:qs.COMPRESSED_RGBA_ASTC_4x4_WEBGL,RGB_ETC1:qs.COMPRESSED_RGB_ETC1_WEBGL,RGB8_ETC2:qs.COMPRESSED_RGB8_ETC2,RGBA8_ETC2_EAC:qs.COMPRESSED_RGBA8_ETC2_EAC,RGBA_BC7:qs.COMPRESSED_RGBA_BPTC_UNORM,componentsLength:function(t){switch(t){case Qs.RGB:return 3;case Qs.RGBA:return 4;case Qs.LUMINANCE_ALPHA:return 2;case Qs.ALPHA:case Qs.LUMINANCE:default:return 1}},validate:function(t){return t===Qs.DEPTH_COMPONENT||t===Qs.DEPTH_STENCIL||t===Qs.ALPHA||t===Qs.RGB||t===Qs.RGBA||t===Qs.LUMINANCE||t===Qs.LUMINANCE_ALPHA||t===Qs.RGB_DXT1||t===Qs.RGBA_DXT1||t===Qs.RGBA_DXT3||t===Qs.RGBA_DXT5||t===Qs.RGB_PVRTC_4BPPV1||t===Qs.RGB_PVRTC_2BPPV1||t===Qs.RGBA_PVRTC_4BPPV1||t===Qs.RGBA_PVRTC_2BPPV1||t===Qs.RGBA_ASTC||t===Qs.RGB_ETC1||t===Qs.RGB8_ETC2||t===Qs.RGBA8_ETC2_EAC||t===Qs.RGBA_BC7},isColorFormat:function(t){return t===Qs.ALPHA||t===Qs.RGB||t===Qs.RGBA||t===Qs.LUMINANCE||t===Qs.LUMINANCE_ALPHA},isDepthFormat:function(t){return t===Qs.DEPTH_COMPONENT||t===Qs.DEPTH_STENCIL},isCompressedFormat:function(t){return t===Qs.RGB_DXT1||t===Qs.RGBA_DXT1||t===Qs.RGBA_DXT3||t===Qs.RGBA_DXT5||t===Qs.RGB_PVRTC_4BPPV1||t===Qs.RGB_PVRTC_2BPPV1||t===Qs.RGBA_PVRTC_4BPPV1||t===Qs.RGBA_PVRTC_2BPPV1||t===Qs.RGBA_ASTC||t===Qs.RGB_ETC1||t===Qs.RGB8_ETC2||t===Qs.RGBA8_ETC2_EAC||t===Qs.RGBA_BC7},isDXTFormat:function(t){return t===Qs.RGB_DXT1||t===Qs.RGBA_DXT1||t===Qs.RGBA_DXT3||t===Qs.RGBA_DXT5},isPVRTCFormat:function(t){return t===Qs.RGB_PVRTC_4BPPV1||t===Qs.RGB_PVRTC_2BPPV1||t===Qs.RGBA_PVRTC_4BPPV1||t===Qs.RGBA_PVRTC_2BPPV1},isASTCFormat:function(t){return t===Qs.RGBA_ASTC},isETC1Format:function(t){return t===Qs.RGB_ETC1},isETC2Format:function(t){return t===Qs.RGB8_ETC2||t===Qs.RGBA8_ETC2_EAC},isBC7Format:function(t){return t===Qs.RGBA_BC7},compressedTextureSizeInBytes:function(t,e,r){switch(t){case Qs.RGB_DXT1:case Qs.RGBA_DXT1:case Qs.RGB_ETC1:case Qs.RGB8_ETC2:return Math.floor((e+3)/4)*Math.floor((r+3)/4)*8;case Qs.RGBA_DXT3:case Qs.RGBA_DXT5:case Qs.RGBA_ASTC:case Qs.RGBA8_ETC2_EAC:return Math.floor((e+3)/4)*Math.floor((r+3)/4)*16;case Qs.RGB_PVRTC_4BPPV1:case Qs.RGBA_PVRTC_4BPPV1:return Math.floor((Math.max(e,8)*Math.max(r,8)*4+7)/8);case Qs.RGB_PVRTC_2BPPV1:case Qs.RGBA_PVRTC_2BPPV1:return Math.floor((Math.max(e,16)*Math.max(r,8)*2+7)/8);case Qs.RGBA_BC7:return Math.ceil(e/4)*Math.ceil(r/4)*16;default:return 0}},textureSizeInBytes:function(t,e,r,n){var i=Qs.componentsLength(t);return Js.isPacked(e)&&(i=1),i*Js.sizeInBytes(e)*r*n},alignmentInBytes:function(t,e,r){var n=Qs.textureSizeInBytes(t,e,r,1)%4;return 0===n?4:2===n?2:1},createTypedArray:function(t,e,r,n){var i=Js.sizeInBytes(e);return new(i===Uint8Array.BYTES_PER_ELEMENT?Uint8Array:i===Uint16Array.BYTES_PER_ELEMENT?Uint16Array:i===Float32Array.BYTES_PER_ELEMENT&&e===Js.FLOAT?Float32Array:Uint32Array)(Qs.componentsLength(t)*r*n)},flipY:function(t,e,r,n,i){if(1===i)return t;for(var s=Qs.createTypedArray(e,r,n,i),o=Qs.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===Qs.DEPTH_STENCIL)return qs.DEPTH24_STENCIL8;if(t===Qs.DEPTH_COMPONENT){if(e===Js.UNSIGNED_SHORT)return qs.DEPTH_COMPONENT16;if(e===Js.UNSIGNED_INT)return qs.DEPTH_COMPONENT24}if(e===Js.FLOAT)switch(t){case Qs.RGBA:return qs.RGBA32F;case Qs.RGB:return qs.RGB32F;case Qs.RG:return qs.RG32F;case Qs.R:return qs.R32F}if(e===Js.HALF_FLOAT)switch(t){case Qs.RGBA:return qs.RGBA16F;case Qs.RGB:return qs.RGB16F;case Qs.RG:return qs.RG16F;case Qs.R:return qs.R16F}return t}},to=Object.freeze(Qs);function eo(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+=to.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=to.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 ro(t,e){for(var r,n,i,s=t.bytesOffset,o=ms.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 F=a[O].vertexPackage;r=F.verticesCount;var M=F.vertexAttributes[0].typedArray.buffer,C=F.vertexAttributes[0].typedArray.byteOffset,b=F.vertexAttributes[0].componentsPerAttribute;i=new Float32Array(M,F.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),Co("aTexCoord0",F,M,r,l),Co("batchId",F,M,r,_),F.vertexColor?E.push(F.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);(!io||h>io)&&(no=new Uint8ClampedArray(h+122),io=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],F=n&&n[c]&&n[c],M=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:Ae(m.length/S),itemSize:m.length/S,name:"POSITION",min:f,max:u}};N.indexOf(m.buffer)<0&&N.push(m.buffer),O&&bo(b,"TEXCOORD_0",O,S,N),F&&bo(b,"NORMAL",F,S,N),M&&bo(b,"COLOR_0",M,S,N),C&&bo(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(ao(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})))}ms.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 no,io=0;let so=!1;if("undefined"!=typeof OffscreenCanvas){let t;try{t=new OffscreenCanvas(2,2).getContext("2d",{willReadFrequently:!0})}catch(Sn){}t&&"undefined"!=typeof createImageBitmap&&(so=!0)}const oo={};function ao(t,e,r,n,i){const s=no;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===Ao||t===ho||t===To||t===Ro||t===yo||t===Io||t===No||t===Uo||t===So||t===mo||t===Oo||t===Fo||t===Mo}(u)&&a.width===a.height){const t=eo(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>As||f===_s?122+a.width*a.height*4:61+a.width*a.height,Ss.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;co(E)||(E=fo(E)),co(_)||(_=fo(_));const A=i;let h;A&&(E=Math.min(A,E),_=Math.min(A,_));let T=6408;const R=a.width*a.height*4;!so||E===a.width&&_===a.height?(h=new Uint8Array(3*R/4),T=6407):(oo[R]||(oo[R]=new Uint8Array(R)),h=oo[R]),h=js(h,s.buffer,0,l),!so||E===a.width&&_===a.height||(h=function(t,e,r,n,i){uo||(uo=new OffscreenCanvas(2,2),lo=uo.getContext("2d"),Eo=new OffscreenCanvas(2,2),_o=Eo.getContext("2d",{willReadFrequently:!0}));const s=new ImageData(new Uint8ClampedArray(t.buffer),e,r);return uo.width=e,uo.height=r,lo.putImageData(s,0,0),Eo.width=n,Eo.height=i,_o.drawImage(uo,0,0,n,i),_o.getImageData(0,0,n,i).data}(h,a.width,a.height,E,_)),h.buffer===(oo[R]&&oo[R].buffer)&&(h=new Uint8Array(h)),r({array:h,width:E,height:_,format:T})}else r(null)}(t)}))}function co(t){return 0==(t&t-1)&&0!==t}function fo(t){return Math.pow(2,Math.floor(Math.log(t)/Math.LN2))}let uo,lo,Eo,_o;const Ao=33776,ho=33777,To=33778,Ro=33779,yo=35840,Io=35841,No=35842,Uo=35843,So=37808,mo=36196,Oo=37492,Fo=37496,Mo=36492;function Co(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,Ee[s])(r,t.offsetInBytes+t.typedArray.byteOffset,n*a);i.push(c)}}else i.push(void 0)}function bo(t,e,r,n,i){t[e]={array:r,componentType:_e(r.constructor),count:n,byteOffset:r.byteOffset,byteStride:0,byteLength:r.byteLength,type:Ae(r.length/n),itemSize:r.length/n,name:e},i.indexOf(r.buffer)<0&&i.push(r.buffer)}var po=Po("DXT1"),wo=Po("DXT3"),Do=Po("DXT5"),Bo=Po("DX10"),Lo=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 po:e=8,r="dxt1";break;case wo:e=16,r="dxt3";break;case Do:e=16,r="dxt5";break;case 116:r="rgba32f";break;case Bo: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===Bo&&(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 Po(t){return t.charCodeAt(0)+(t.charCodeAt(1)<<8)+(t.charCodeAt(2)<<16)+(t.charCodeAt(3)<<24)}const go=Math.PI/180,Go=6378137*Math.PI/180,vo=85.0511287798;function Xo(t,e,r){if("EPSG:3857"===r)return function(t,e){const r=vo,n=e[0],i=Math.max(Math.min(r,e[1]),-r);let s;s=0===i?0:Math.log(Math.tan((90+i)*go/2))/go;return t[0]=n*Go,t[1]=s*Go,t}(t,e);if("EPSG:4326"===r||"EPSG:4490"===r||"identity"===r)return Ho(t,e);if("baidu"===r)return Ho(t,e);throw new Error("unsupported projection:"+r)}function Ho(t,e){return t[0]=e[0],t[1]=e[1],t}const xo=s([]),Vo=Ie().draco,ko=Ie().ktx2,Zo={"pbrMetallicRoughness":{"baseColorFactor":[.5,.5,.5,1],"metallicFactor":0,"roughnessFactor":.5}},Yo={"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 Ko(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=q.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(ta(n,f),f.length){const t=f.map((t=>{const e=q.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=oa(E)?Wo(o,c,u,E,t.transform,t.center,i):qo(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=Zo);const _=Jo(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 zo={"magFilter":9728,"minFilter":9728,"wrapR":33071,"wrapS":33071,"wrapT":33071};function Wo(t,e,r,n,i,s,o){const a=r.info.compressedAttributes.attributes.reduce(((t,e,r)=>{const n=Yo[e];if(!n)return t;return t[n.name||e]=r,t}),{});return Vo(n,{attributes:a,metadatas:{"POSITION":[{name:"i3s-scale_x",type:"double"},{name:"i3s-scale_y",type:"double"}]},useUniqueIDs:!1,skipAttributeTransform:!1}).then((r=>$o(r,t,e,i,s,o)))}var jo={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 qo(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++)jo[e[u]]?f=jo[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=jo[e[l]];E||console.log(e[l]),f=E(a,n,f)}for(var _=0;_<i.length;_++){var A=jo[i[_]];A||console.log(i[_]),f=A(a,n,f)}}}catch(t){}a.scale_x=1,a.scale_y=1;const h={};for(const t in a){const e=Yo[t]&&Yo[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:_e(r),array:n,itemSize:1,count:n.length,type:"SCALAR"}}var T;return $o({attributes:h},t,e,i,s,o)}function $o(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 a=function(t,e,r,n){const i=r;let s,o=[0,0,0,1],a=[0,0];const c=Xo([],r,n);c[2]=r[2];const f=e&&u(xo,e);return ge(t,(t=>(o[0]=t[0],o[1]=t[1],o[2]=t[2],f||(o=m(o,o,e)),i&&T(o,o,i),Xo(a,o,n),s=o[2],t[0]=a[0]-c[0],t[1]=a[1]-c[1],t[2]=s-c[2],t))),c}(t.attributes.POSITION,n,i,s);e.meshes[r]={primitives:[o],index:r},e.extensions.MAPTALKS_RTC={projCenter:a},e.extensions.CESIUM_RTC={rtcCoord:i};for(const r in t.attributes)sa(e.transferables,t.attributes[r].array.buffer);return t.indices&&sa(e.transferables,t.indices.array.buffer),o}function Jo(t,e,r,n,i,s){const o=n.map((t=>function(t,e,r,n,i){if("dds"===e){const e=Lo(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:zo,format:i})}if("png"===e||"jpg"===e)return function(t,e){ea||(ea=new OffscreenCanvas(2,2),ra=ea.getContext("2d",{willReadFrequently:!0}));const r=new Blob([new Uint8Array(t)]);return createImageBitmap(r).then((t=>{let{width:r,height:n}=t;na(r)||(r=ia(r)),na(n)||(n=ia(n));const i=e;i&&(r=Math.min(i,r),n=Math.min(i,n)),ea.width=r,ea.height=n,ra.drawImage(t,0,0,r,n),t.close();const s=ra.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:zo,format:6408}}));if("ktx2"===e)return ko(t,n).then((t=>(t.mimeType=r,{image:t,sampler:zo,format:t.format})))}(t.data,t.format,t.mimeType,i,s).then((t=>{if(t.image)if(t.image.array)sa(e.transferables,t.image.array.buffer);else if(t.image.mipmap)for(let r=0;r<t.image.mipmap.length;r++)sa(e.transferables,t.image.mipmap[r].buffer);return t}))));return Promise.all(o).then((n=>{Qo(t,e,r,n)}))}function Qo(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)):Ut(r[t])&&(i[t]=Qo(-1,e,r[t],n));return t>=0&&(e.materials[t]=i),i}function ta(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}):Ut(t[r])&&ta(t[r],e)}let ea,ra;function na(t){return 0==(t&t-1)&&0!==t}function ia(t){return Math.pow(2,Math.floor(Math.log(t)/Math.LN2))}function sa(t,e){e&&(t.indexOf(e)>=0||t.push(e))}function oa(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 aa=[1,0,0,0,0,0,1,0,0,-1,0,0,0,0,0,1],ca=[0,0,1,0,0,1,0,0,-1,0,0,0,0,0,0,1],fa="undefined"!=typeof TextDecoder?new TextDecoder("utf-8"):null;let ua,la,Ea=!1;if("undefined"!=typeof OffscreenCanvas){try{la=new OffscreenCanvas(2,2).getContext("2d",{willReadFrequently:!0})}catch(Sn){}la&&"undefined"!=typeof createImageBitmap&&(Ea=!0)}const _a=s([]),Aa=[0,0,0],ha=[],Ta=[],Ra=[],ya=[];class Ia{constructor(t,e,r,n){this.id=t,this.options=e,this.St=this.requestImage.bind(this),this.Ot=r,this.Ft={},n(null,{},[])}Mt(t){this.Ct||(this.o=t,this.bt=new Oe,this.Ct=new Ne(this.St,At,t),this.wt=new Ue(this.St,At,t))}requestImage(t,e){Ea?fetch(t).then((t=>t.blob())).then((t=>createImageBitmap(t))).then((t=>{ua.width=t.width,ua.height=t.height,la.drawImage(t,0,0);const r=la.getImageData(0,0,ua.width,ua.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.Mt(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=Ko(n,t.supportedFormats,this.options.projection,i);return s.then((t=>{if(delete this.Ft[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.Ft[r]=s.xhr)}if(n){delete this.Ft[r];const i=new DataView(n),s=xt(i,0);if("{"===s[0]||" "===s[0]||"<"===s[0]){const i=function(t,e,r){if(fa){const n=new Uint8Array(t,e,r);return fa.decode(n)}return Ft(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=q.getArrayBuffer(r+(i||""),n.fetchOptions);const o=s.xhr;s=s.then((n=>{delete this.Ft[r],n&&n.status?e(n):(t.arraybuffer=n&&n.data,this.loadTile(t,e))})).catch((t=>{delete this.Ft[r],e(t)})),this.Ft[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 Me(this.St,At,this.o,s.maxTextureSize||1024).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){ro({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,Xe(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);Sa(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);Sa(i,c),n.content.push(a)}else if("cmpt"===s){const{content:s,transferables:o}=this.Gt(r[t],e);Sa(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=[];ge(s.POSITION,((t,s)=>{T(a,t,o),oe(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,_a,a);const c=da(a),f=A([],c),u=[1/0,1/0,1/0],l=[-1/0,-1/0,-1/0];ge(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]>l[0]&&(l[0]=t[0]),t[1]>l[1]&&(l[1]=t[1]),t[2]>l[2]&&(l[2]=t[2])})),s.POSITION.min=u,s.POSITION.max=l,e&&m(c,c,e);const E=this.Vt(c);t.rtcCenter=f,t.rtcCoord=E,t.rootIdx=r;const _=t.transferables;return delete t.transferables,{content:t,transferables:_}}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.Ft[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.Ft[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=aa;"X"===(r=r&&r.toUpperCase())?a=ca:"Z"===r&&(a=_a),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};Ce(t,(t=>{if(!(t.attributes&&t.attributes.POSITION))return;const e=s(ha);t.matrices&&ma(e,t.matrices);const r=t.attributes.POSITION.array,f=t.attributes.POSITION.itemSize;o(e,a,e),n&&o(e,n,e),Ua(r,f,i||Aa,e,c)}));const f=da(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=A([],i);n&&m(i,i,n),t.extensions.CESIUM_RTC.rtcCoord=this.Vt(i),c||(Ce(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(ha);t.matrices&&ma(r,t.matrices),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,F=u*R-_*A,M=l*T-E*h,C=l*R-_*h,b=E*R-_*T,p=y*b-I*C+N*M+U*F-d*O+S*m;return p?(p=1/p,t[0]=(a*b-c*C+f*M)*p,t[1]=(i*C-n*b-s*M)*p,t[2]=(h*S-T*d+R*U)*p,t[3]=(E*d-l*S-_*U)*p,t[4]=(c*F-o*b-f*O)*p,t[5]=(r*b-i*F+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*F+f*m)*p,t[9]=(n*F-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*M-c*m)*p,t[13]=(r*M-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}(Ta,r),i=[1/0,1/0,1/0],c=[-1/0,-1/0,-1/0];ge(e,(t=>{m(t,t,r),t[0]=t[0]-f[0],t[1]=t[1]-f[1],t[2]=t[2]-f[2],m(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),Ce(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=_a}}Zt(t){0===M(t)?h(Ra,0,0,-6378137):Pt(Ra,t);const e=this.options.projection;Xo(ya,Ra,e);const r=Ra[2],n=[];return n[0]=ya[0],n[1]=ya[1],n[2]=r,n}Yt(t,e,r){let s;s="Y"===r?aa:"X"===r?ca:_a;const o=i([],s);if(ma(o,e),u(o,_a))return;const a=n([],o),c=[];ge(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]}(c,t,a),U(c,c),A(t,c),c)))}Kt(t,e,r,n,i,o){if(t.array.buffer.projected&&t.array.buffer.projected[t.byteOffset])return;const a=s([]);ma(a,e);const c=this.options.projection;i=i&&i.toUpperCase();const f=r;let l=null;"Y"===i?l=aa:"X"===i&&(l=ca);let E=[0,0,0,1],_=[0,0,0],A=[0,0];const R=n.projCenter,y=o&&u(_a,o),I=t.min=t.min||[],N=t.max=t.max||[];return h(I,1/0,1/0,1/0),h(N,-1/0,-1/0,-1/0),ge(t,(t=>(E[0]=t[0],E[1]=t[1],E[2]=t[2],E=m(E,E,a),l&&(E=m(E,E,l)),f&&T(E,E,f),o&&!y&&(E=m(E,E,o)),0===M(E)?h(_,0,0,-6378137):Pt(_,E),Xo(A,_,c),t[0]=A[0]-R[0],t[1]=A[1]-R[1],t[2]=_[2]-R[2],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]>N[0]&&(N[0]=t[0]),t[1]>N[1]&&(N[1]=t[1]),t[2]>N[2]&&(N[2]=t[2]),t))),t.array.buffer.projected||(t.array.buffer.projected={}),t.array.buffer.projected[t.byteOffset]=1,{projCenter:R}}Vt(t){return 0===M(t)?h([],0,0,-6378137):Pt([],t)}onRemove(){}}const Na=[];function Ua(t,e,r,n,i){for(let s=0,o=t.length;s<o;s+=e){const{xmin:o,ymin:a,xmax:c,ymax:f,hmin:u,hmax:l}=i;h(Na,t[s],t[s+1],t[s+2]),m(Na,Na,n);const E=T(Na,r,Na);E[0]<o&&(i.xmin=E[0]),E[0]>c&&(i.xmax=E[0]),E[1]<a&&(i.ymin=E[1]),E[1]>f&&(i.ymax=E[1]),e>2&&(E[2]<u&&(i.hmin=E[2]),E[2]>l&&(i.hmax=E[2]))}}function da(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 Sa(t,e){for(let r=0;r<e.length;r++)t.indexOf(e[r])<0&&t.push(e[r])}function ma(t,e){const r=t;for(let t=e.length-1;t>=0;t--)o(r,e[t],r);return r}let Oa=0;class Fa{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 Ia(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}-${Oa++}`: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 Fa(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})}';for(
|
|
6
|
+
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("maptalks"),require("@maptalks/gl")):"function"==typeof define&&define.amd?define(["exports","maptalks","@maptalks/gl"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).maptalks=t.maptalks||{},t.maptalks,t.maptalksgl)}(this,(function(t,e,r){"use strict";function n(t){if(t&&t.t)return t;var e=Object.create(null);return t&&Object.keys(t).forEach((function(r){if("default"!==r){var n=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(e,r,n.get?n:{enumerable:!0,get:function(){return t[r]}})}})),e.default=t,Object.freeze(e)}var i=n(e),s=n(r);const o="${",a=`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 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],t}function i(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],A=e[1],i=e[2],o=e[3],s=e[4],a=e[5],B=e[6],E=e[7],c=e[8],C=e[9],f=e[10],l=e[11],u=e[12],_=e[13],D=e[14],R=e[15],I=r[0],T=r[1],h=r[2],F=r[3];return t[0]=I*n+T*s+h*c+F*u,t[1]=I*A+T*a+h*C+F*_,t[2]=I*i+T*B+h*f+F*D,t[3]=I*o+T*E+h*l+F*R,I=r[4],T=r[5],h=r[6],F=r[7],t[4]=I*n+T*s+h*c+F*u,t[5]=I*A+T*a+h*C+F*_,t[6]=I*i+T*B+h*f+F*D,t[7]=I*o+T*E+h*l+F*R,I=r[8],T=r[9],h=r[10],F=r[11],t[8]=I*n+T*s+h*c+F*u,t[9]=I*A+T*a+h*C+F*_,t[10]=I*i+T*B+h*f+F*D,t[11]=I*o+T*E+h*l+F*R,I=r[12],T=r[13],h=r[14],F=r[15],t[12]=I*n+T*s+h*c+F*u,t[13]=I*A+T*a+h*C+F*_,t[14]=I*i+T*B+h*f+F*D,t[15]=I*o+T*E+h*l+F*R,t}function s(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}function a(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}function B(t,e){var r=e[0],n=e[1],A=e[2],i=e[3],o=r+r,s=n+n,a=A+A,B=r*o,E=n*o,c=n*s,C=A*o,f=A*s,l=A*a,u=i*o,_=i*s,D=i*a;return t[0]=1-c-l,t[1]=E+D,t[2]=C-_,t[3]=0,t[4]=E-D,t[5]=1-B-l,t[6]=f+u,t[7]=0,t[8]=C+_,t[9]=f-u,t[10]=1-B-c,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function E(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 C(t){var e=t[0],r=t[1],n=t[2];return Math.sqrt(e*e+r*r+n*n)}function f(t,e,n){var A=new r(3);return A[0]=t,A[1]=e,A[2]=n,A}function l(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function u(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 D(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t}function R(t,e,r){return t[0]=e[0]*r[0],t[1]=e[1]*r[1],t[2]=e[2]*r[2],t}function I(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t}function T(t,e){var r=e[0]-t[0],n=e[1]-t[1],A=e[2]-t[2];return Math.sqrt(r*r+n*n+A*A)}function h(t,e){var r=e[0],n=e[1],A=e[2],i=r*r+n*n+A*A;return i>0&&(i=1/Math.sqrt(i),t[0]=e[0]*i,t[1]=e[1]*i,t[2]=e[2]*i),t}function F(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function P(t,e,r){var n=e[0],A=e[1],i=e[2],o=r[0],s=r[1],a=r[2];return t[0]=A*a-i*s,t[1]=i*o-n*a,t[2]=n*s-A*o,t}function L(t,e,r){var n=e[0],A=e[1],i=e[2],o=r[3]*n+r[7]*A+r[11]*i+r[15];return o=o||1,t[0]=(r[0]*n+r[4]*A+r[8]*i+r[12])/o,t[1]=(r[1]*n+r[5]*A+r[9]*i+r[13])/o,t[2]=(r[2]*n+r[6]*A+r[10]*i+r[14])/o,t}var O=D,y=R,M=C;function N(t,e,r,n,A){return t[0]=e,t[1]=r,t[2]=n,t[3]=A,t}function S(){var t=new r(4);return r!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0),t[3]=1,t}function d(t){return t[0]=0,t[1]=0,t[2]=0,t[3]=1,t}function U(t,r,n,A){var i=r[0],o=r[1],s=r[2],a=r[3],B=n[0],E=n[1],c=n[2],C=n[3],f=void 0,l=void 0,u=void 0,_=void 0,D=void 0;return(l=i*B+o*E+s*c+a*C)<0&&(l=-l,B=-B,E=-E,c=-c,C=-C),1-l>e?(f=Math.acos(l),u=Math.sin(f),_=Math.sin((1-A)*f)/u,D=Math.sin(A*f)/u):(_=1-A,D=A),t[0]=_*i+D*B,t[1]=_*o+D*E,t[2]=_*s+D*c,t[3]=_*a+D*C,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 G,m=function(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t};c(),f(1,0,0),f(0,1,0),S(),S(),G=new r(9),r!=Float32Array&&(G[1]=0,G[2]=0,G[3]=0,G[5]=0,G[6]=0,G[7]=0),G[0]=1,G[4]=1,G[8]=1;\n/*!\n * @maptalks/gltf-loader v0.27.2\n * LICENSE : UNLICENSED\n * (c) 2016-2022 maptalks.org\n */\nlet b=0;function p(t){return null==t}function w(t){return!p(t)}function H(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 K(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 g(t){return 0===t.indexOf("data:")&&t.indexOf("base64,")>0}function V(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 X=[],J=[],v=[],Z=[0,0,0],x=d([]),k=[1,1,1];function W(t,e,r,n,A,i,o){const s=K(o);if((0===A||A===n*s.BYTES_PER_ELEMENT)&&i%s.BYTES_PER_ELEMENT==0){const A=new s(e,i,r*n);return t.set(A),t}0===A&&(A=n*s.BYTES_PER_ELEMENT);const a=new Uint8Array(n*s.BYTES_PER_ELEMENT);for(let o=0;o<r;o++){let r=null;const B=new Uint8Array(e,A*o+i,n*s.BYTES_PER_ELEMENT);a.set(B),r=new s(a.buffer,0,n);for(let e=0;e<n;e++)t[o*n+e]=r[e]}return t}const Q="undefined"!=typeof TextDecoder?new TextDecoder("utf-8"):null;function j(t,e,r){const n=new Uint8Array(t,e,r);return Q.decode(n)}const Y={get:function(t,e={}){e||(e={});const r=new AbortController,n=r.signal,A=H({},e);A.signal=n,A.method||(A.method="GET");const i=fetch(t,A).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 i.xhr=r,i},t:(t,e)=>200!==t.status?{status:t.status,statusText:t.statusText,message:\`incorrect http request with status code(${o}t.status}): ${o}t.statusText}\`}:"arraybuffer"===e?t.arrayBuffer():"json"===e?t.json():t.text(),getArrayBuffer:(t,e={})=>(e||(e={}),e.responseType="arraybuffer",Y.get(t,e)),getJSON:function(t,e={}){return e&&e.jsonp?Y.jsonp(t):((e=e||{}).responseType="json",Y.get(t,e))},jsonp:function(t){const e="_maptalks_jsonp_"+b++;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.A=t,this.decoders=e,this.i=r,this.images={},this.o={}}requestImageFromBufferURI(t,e,r){if(this.buffers[t.id]){const n=this.buffers[t.id],A=this.B(e,n);return this.getImageByBuffer(A,r)}if(this.o[t.id])return this.o[t.id].then((()=>{const n=this.buffers[t.id],A=this.B(e,n);return this.getImageByBuffer(A,r)}));if(g(t.uri)){const n=this.buffers[t.id]=V(t.uri),A=this.B(e,n);return this.getImageByBuffer(A,r)}return this.o[t.id]=Y.getArrayBuffer(t.uri,null).then((n=>{const A=this.buffers[t.id]=n.data,i=this.B(e,A);return this.getImageByBuffer(i,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.i});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.C(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.o[t.id]?this.o[t.id].then((()=>this.images[t.id])):this.o[t.id]=this.C(t.id,e)}C(t,e){return new Promise(((r,n)=>{this.A(e,((A,i)=>{A?n(A):(URL.revokeObjectURL(e),this.images[t]=i,r(this.images[t]))}))}))}}const q=["SCALAR",1,"VEC2",2,"VEC3",3,"VEC4",4,"MAT2",4,"MAT3",9,"MAT4",16];class ${o}constructor(t,e,r){this.rootPath=t,this.gltf=e,this.l=!1,this.glbBuffer=r,this.buffers={},this.requests={},this.accessors={},this.u()}_(t,e){const r=this.gltf,n=r.accessors[e];if(void 0===n.bufferView)return this.accessors[n.id]=this.D(t,e,null,0),Promise.resolve(this.accessors[n.id]);if(n&&this.accessors[n.id])return Promise.resolve(this.accessors[n.id]);const A=r.bufferViews[n.bufferView];return this.I(A).then((r=>{const{buffer:A,byteOffset:i}=r;return this.accessors[n.id]=this.D(t,e,A,i)}))}I(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(g(e.uri)){const t=this.buffers[e.id]=V(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]=Y.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})}D(t,e,r,n=0){const A=this.gltf,i=A.accessors[e],o=void 0!==i.bufferView?A.bufferViews[i.bufferView]:{},s=(o.byteOffset||0)+n,a=this.T(i.type),B=K(i.componentType),E=o.byteStride||0,c={array:void 0,name:t,accessorName:e,byteLength:i.count*a*B.BYTES_PER_ELEMENT,componentType:i.componentType,count:i.count,type:i.type,itemSize:a};if(i.min&&(c.min=i.min),i.max&&(c.max=i.max),r)if(this.l)c.byteStride=E,c.byteOffset=s+(i.byteOffset||0),!E||E===a*B.BYTES_PER_ELEMENT||"indices"===t||"input"===t||"output"===t||t.indexOf("morph")>=0?(c.array=this.h(r,i.count,a,s+(i.byteOffset||0),B),c.array.buffer.byteLength===c.byteLength&&(c.byteOffset=0)):c.array=new Uint8Array(r,s,o.byteLength);else if(i.interleaved){c.byteStride=0,c.byteOffset=0;const t=new B(i.count*a);c.array=W(t,r,i.count,a,E,s+(i.byteOffset||0),i.componentType)}else c.byteStride=0,c.array=this.h(r,i.count,a,s+(i.byteOffset||0),B),c.byteOffset=c.array.byteOffset;else{c.array=new B(i.count);const t=c.min||c.max;t&&(c.array[0]=t[0],c.array[1]=t[1],c.array[2]=t[2])}return c}u(){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)}h(t,e,r,n,A){return n%A.BYTES_PER_ELEMENT!=0&&(t=t.slice(n,n+e*r*A.BYTES_PER_ELEMENT),n=0),new A(t,n,r*e)}T(t){const e=q.indexOf(t);return q[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.I(e).then((n=>{const{buffer:A,byteOffset:i}=n,o=j(A,i+(e.byteOffset||0),r);return t.content=o,t}))}if(t.uri){if(g(t.uri)){const e=V(t.uri),r=j(e,0,e.byteLength);return t.content=r,Promise.resolve(t)}{const e=this.rootPath+"/"+t.uri;return Y.get(e).then((e=>(t.content=e,t)))}}return Promise.resolve(t)}));return Promise.all(r).then((()=>t))}}class tt extends z{constructor(t,e,r,n,A,i){super(n,A,i),this.rootPath=t,this.gltf=e,this.requests={},this.buffers={},this.glbBuffer=r,this.accessor=new $(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(w(t.name)&&(e.name=t.name),w(t.children)&&(e.children=t.children),w(t.jointName)&&(e.jointName=t.jointName),w(t.matrix)&&(e.matrix=t.matrix),w(t.rotation)&&(e.rotation=t.rotation),w(t.scale)&&(e.scale=t.scale),w(t.translation)&&(e.translation=t.translation),w(t.extras)&&(e.extras=t.extras),w(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=s(X,e.translation||Z),n=B(J,e.rotation||x),A=a(v,e.scale||k);return o(A,n,A),o(t,r,A)}return i(t)}([],e);delete e.translation,delete e.rotation,delete e.scale,e.matrix=t}return e}F(t){const e={};for(const r in t){const n=t[r];let A,i;n.instanceTechnique&&n.instanceTechnique.values?(A=n.instanceTechnique,i=A.values.diffuse):(A=n,i=A.values.tex||A.values.diffuseTex||A.values.diffuse);const o={baseColorTexture:{index:i}};n.name&&(o.name=n.name),n.extensions&&(o.extensions=n.extensions),n.extras&&(o.extras=n.extras),e[r]=o}return e}P(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,A=r.byteLength,i=this.buffers[e.bufferView]=new Uint8Array(this.glbBuffer.buffer,n,A);return this.getImageByBuffer(i,t)}return this.requestExternalImage(t)}L(t){const e=this.gltf.textures[t];if(!e)return null;const r=this.gltf.images[e.source];return this.P(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 A=this.gltf.textures[n];if(!A)return null;const i=this.gltf.samplers[A.sampler];return{format:A.format||6408,internalFormat:A.internalFormat||6408,type:A.type||5121,sampler:i,source:this.gltf.images[A.source]}}getMaterial(){return null}getAnimations(){return null}}class et extends z{constructor(t,e,r,n,A,i){super(n,A,i),this.rootPath=t,this.gltf=e,this.glbBuffer=r,this.buffers={},this.requests={},this.accessor=new $(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 H(e,t),!w(t.weights)&&this.gltf.meshes&&w(e.mesh)?e.weights=this.gltf.meshes[e.mesh].weights:t.weights&&(e.weights=t.weights),e}L(t){const e=this.gltf.textures[t];if(!e)return null;const r=this.gltf.images[e.source];return this.P(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}};H(n,e);const A=w(e.sampler)?this.gltf.samplers[e.sampler]:void 0;return A&&(n.sampler=A),t.format&&(n.format=t.format),n}))}P(t){if(!w(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.O(e,t)}return null}O(t,e){const r=this.B(t,this.glbBuffer.buffer,this.glbBuffer.byteOffset);return this.getImageByBuffer(r,e)}B(t,e,r){r=r||0;const n=t.byteOffset+r,A=t.byteLength;return new Uint8Array(e,n,A)}M(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++)(w(t[r].input)||w(t[r].output))&&(e.push(this.accessor._("input",t[r].input)),e.push(this.accessor._("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 rt="undefined"!=typeof TextDecoder?new TextDecoder("utf-8"):null;class nt{static read(t,e=0,r=0){r||(r=t.byteLength);const n=new DataView(t,e,r),A=n.getUint32(4,!0);if(1===A)return nt.readV1(n,e);if(2===A)return nt.readV2(t,e);throw new Error("Unsupported glb version : "+A)}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 A=At(t.buffer,20+e,n);return{json:JSON.parse(A),glbBuffer:{byteOffset:20+e+n,buffer:t.buffer,byteLength:r}}}static readV2(t,e){let r,n,A;const i=new DataView(t,e+12);let o=0;for(;o<i.byteLength;){const s=i.getUint32(o,!0);o+=4;const a=i.getUint32(o,!0);if(o+=4,1313821514===a)r=At(t,e+12+o,s);else if(5130562===a){A=e+12+o,n=s;break}o+=s}return{json:JSON.parse(r),glbBuffer:{byteOffset:A,buffer:t,byteLength:n}}}}function At(t,e,r){if(rt){const n=new Uint8Array(t,e,r);return rt.decode(n)}return function(t){const e=t.length;let r="";for(let n=0;n<e;){let A=t[n++];if(128&A){let r=it[A>>3&7];if(!(64&A)||!r||n+r>e)return null;for(A&=63>>r;r>0;r-=1){const e=t[n++];if(128!=(192&e))return null;A=A<<6|63&e}}r+=String.fromCharCode(A)}return r}(new Uint8Array(t,e,r))}const it=[1,1,1,1,2,2,3,0],ot=[0,0,0],st=[0,0,0,1],at=[1,1,1],Bt={TRANSLATION:[0,0,0],ROTATION:[0,0,0,1],SCALE:[1,1,1]},Et={PREVIOUS:null,NEXT:null,PREINDEX:null,NEXTINDEX:null,INTERPOLATION:null},ct={N(t,e,r,n,A,i,o,s){const a=w(t)?e.animations:[e.animations[0]],B={};for(let e=0;e<a.length;e++){const E=a[e],c=E.name||e;if(w(t)&&c!==t)continue;const C=E.channelsMap[r];if(C)for(let t=0;t<C.length;t++){const e=C[t];"translation"===e.target.path?(this.S(A,E.samplers[e.sampler],n,1),B.translation=l(ot,A)):"rotation"===e.target.path?(this.U(i,E.samplers[e.sampler],n,1),B.rotation=m(st,i)):"scale"===e.target.path?(this.S(o,E.samplers[e.sampler],n,1),B.scale=l(at,o)):"weights"===e.target.path&&s&&(this.S(s,E.samplers[e.sampler],n,s.length),B.weights=s)}}return B},S(t,e,r,n){switch(e.interpolation){case"LINEAR":{const A=this.G(Et,e,r,1*n);A&&(t=function(t,e,r,n){for(let A=0;A<t.length;A++)t[A]=e[A]+n*(r[A]-e[A]);return t}(t,A.PREVIOUS,A.NEXT,A.INTERPOLATION));break}case"STEP":{const A=this.G(Et,e,r,1*n);A&&(t=function(t,e){for(let r=0;r<t.length;r++)t[r]=e[r];return t}(t,...A.PREVIOUS));break}case"CUBICSPLINE":{const A=this.G(Et,e,r,3*n);A&&(t=this.m(t,A,e.input.array,3*n));break}}return t},U(t,e,r){switch(e.interpolation){case"LINEAR":{const n=this.G(Et,e,r,1);n&&U(t,n.PREVIOUS,n.NEXT,n.INTERPOLATION);break}case"STEP":{const n=this.G(Et,e,r,1);n&&(t=N(t,...n.PREVIOUS));break}case"CUBICSPLINE":{const n=this.G(Et,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.m(t,n,e.input.array,3);for(let e=0;e<t.length;e++)t[e]=Math.cos(t[e])}break}}return t},p(t,e){const r=t.length;let n,A,i,o=0,s=r-1,a=Math.floor((o+s)/2);for(;o<=r-1&&s>=0;){if(o===s)return null;if(t[a]<=e&&e<=t[a+1]){const r=t[a];return n=a,A=a+1,i=(e-r)/(t[a+1]-r),{preIndx:n,nextIndex:A,interpolation:i}}e<t[a]?(s=a,a=Math.floor((o+s)/2)):t[a+1]<e&&(o=a,a=Math.floor((o+s)/2))}return null},G(t,e,r,n){const A=e.input.array,i=e.output.array,o=e.output.itemSize;(r<A[0]||r>A[A.length-1])&&(r=Math.max(A[0],Math.min(A[A.length-1],r))),r===A[A.length-1]&&(r=A[0]);const s=this.p(A,r);if(!s||!s.nextIndex)return null;const{preIndx:a,nextIndex:B,interpolation:E}=s;t.PREINDEX=a,t.NEXTINDEX=B,t.INTERPOLATION=E;const c=o*n;return t.PREVIOUS=i.subarray(t.PREINDEX*c,(t.PREINDEX+1)*c),t.NEXT=i.subarray(t.NEXTINDEX*c,(t.NEXTINDEX+1)*c),t},m(t,e,r,n){const A=e.INTERPOLATION,i=r[e.PREINDEX],o=r[e.NEXTINDEX];for(let r=0;r<3;r++){const s=e.PREVIOUS[n+r],a=(o-i)*e.PREVIOUS[2*n+r],B=e.NEXT[3+r],E=(o-i)*e.NEXT[r],c=(2*Math.pow(A,3)-3*Math.pow(A,2)+1)*s+(Math.pow(A,3)-2*Math.pow(A,2)+A)*a+(2*-Math.pow(A,3)+3*Math.pow(A,2))*B+(Math.pow(A,3)-Math.pow(A,2))*E;t[r]=c}return t},getAnimationClip(t,e,r,n){const A=t.nodes[e]&&t.nodes[e].weights;return u(ot,...Bt.TRANSLATION),N(st,...Bt.ROTATION),u(at,...Bt.SCALE),this.N(n,t,e,r,ot,st,at,A)},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,A=1/0;const i=e.channels;for(let t=0;t<i.length;t++){const r=i[t],o=e.samplers[r.sampler].input.array;o[o.length-1]>n&&(n=o[o.length-1]),o[0]<A&&(A=o[0])}const o=e.name||r;t.timeSpan[o]={max:n,min:A}})),t.timeSpan},getTimeSpanByName(t,e){const r=this.getTimeSpan(t);return r?w(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(Te){}t&&"undefined"!=typeof createImageBitmap&&(Ct=!0)}const ft="undefined"==typeof document?null:document.createElement("canvas");class lt{constructor(t,e,r){if(this.options=r||{},this.options.decoders||(this.options.decoders={}),e.buffer instanceof ArrayBuffer){const{json:r,glbBuffer:n}=nt.read(e.buffer,e.byteOffset,e.byteLength);this.H(t,r,n)}else this.H(t,e);this.K=new $(this.rootPath,this.gltf,this.glbBuffer),this.V()}V(){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")}}X(){const t=this.gltf.extensions;return t&&t.KHR_techniques_webgl?this.K.requestKHRTechniquesWebgl(t.KHR_techniques_webgl).then((e=>(t.KHR_techniques_webgl=e,t))):Promise.resolve(t)}load(t){t=t||{};const e=this.J(t),r=this.v(),n=this.Z(),A=this.X();return Promise.all([e,r,n,A]).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 ct.getAnimationClip(t,e,r,n)}static getAnimationTimeSpan(t,e){return ct.getTimeSpanByName(t,e)}static getTypedArrayCtor(t){return K(t)}static readInterleavedArray(t,e,r,n,A,i,o){return W(t,e,r,n,A,i,o)}H(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?Rt.bind(this):this.options.requestImage||ut,this.options.transferable&&(this.transferables=[]),2===this.version?(this.adapter=new et(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 tt(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!p(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}J(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,A,i)=>{const o={};A.name&&(o.name=A.name),A.nodes&&(o.nodes=A.nodes.map((e=>t[e]))),this.gltf.scene===n&&(r=i),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.F(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}))}Y(){this.skins=[];const t=[];return this.adapter.iterate(((e,r,n)=>{t.push(this.q(r).then((t=>{t.index=n,this.skins.push(t)})))}),"skins"),t}q(t){const e=t.inverseBindMatrices;return this.adapter.accessor._("inverseBindMatrices",e).then((e=>(t.inverseBindMatrices=e,e&&e.buffer&&this.transferables&&this.transferables.indexOf(e.buffer)<0&&this.transferables.push(e.buffer),t)))}v(){const t=this.gltf.animations;return w(t)?this.adapter.getAnimations(t):null}j(t){this.meshes={};let e=[];return this.adapter.iterate(((r,n,A)=>{e.push(this.$(n,t).then((t=>{t.index=A,this.meshes[r]=t})))}),"meshes"),e=e.concat(this.Y()),Promise.all(e)}$(t,e){const r=t.primitives.map((t=>this.tt(t,e))).filter((t=>!!t));return Promise.all(r).then((e=>{const r={};return H(r,t),r.primitives=e,r}))}Z(){const t=this.gltf.textures;if(!t)return null;const e=[];for(const r in t)e.push(this.adapter.L(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=[],A=t.extensions;if(w(t.targets))for(let e=0;e<t.targets.length;e++){const r=t.targets[e];for(const t in r){const A=this.adapter.accessor._(\`morphTargets_${o}t}_${o}e}\`,r[t]);A&&n.push(A)}}if(A&&A.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:i,attributes:o}=A.KHR_draco_mesh_compression,s=this.gltf.bufferViews[i],a=this.K.I(s).then((r=>{const{buffer:n,byteOffset:A}=r;let{byteOffset:i,byteLength:a}=s;i||(i=0);const B=new DataView(n,A+i,a),E={attributes:o,useUniqueIDs:!1,skipAttributeTransform:e.skipAttributeTransform};return t(B,E).then((t=>{const e=Object.values(t.attributes);return t.indices&&e.push(t.indices),e}))}));n.push(a),r=Promise.all(n)}else{const e=t.attributes;for(const t in e){const r=this.adapter.accessor._(t,e[t]);r&&n.push(r)}if(w(t.indices)){const e=this.adapter.accessor._("indices",t.indices);e&&n.push(e)}r=Promise.all(n)}return r.then((e=>{if(A&&A.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 i={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:A}=e,i=A.length/n;for(let e=0;e<i;e++)for(let i=0;i<n;i++){const o=e*n+i;A[o]<t[i]&&(t[i]=A[o]),A[o]>r[i]&&(r[i]=A[o])}if(e.quantization){const n=e.quantization,A=n.range/(1<<n.quantizationBits),i=n.minValues;I(t,t,A),_(t,t,i),I(r,r,A),_(r,r,i)}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&&(i.indices=r),n&&(i.morphTargets=n),i.mode=w(t.mode)?t.mode:4,w(t.extras)&&(i.extras=t.extras),i}))}}function ut(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",{willReadFrequently:!0});t.drawImage(r,0,0,r.width,r.height);const n=t.getImageData(0,0,r.width,r.height),A={width:r.width,height:r.height,data:new Uint8Array(n.data)};e(null,A)},r.onerror=function(t){e(t)},r.src=t}let _t,Dt;function Rt(t,e){_t||(_t=new OffscreenCanvas(2,2),Dt=_t.getContext("2d",{willReadFrequently:!0})),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;It(r)||(r=Tt(r)),It(n)||(n=Tt(n));const A=this.options.maxTextureSize;A&&(r=Math.min(A,r),n=Math.min(A,n)),_t.width=r,_t.height=n,Dt.drawImage(t,0,0,r,n),t.close();const i=Dt.getImageData(0,0,r,n);e(null,{width:r,height:n,data:new Uint8Array(i.data)})})).catch((t=>{console.warn(t),e(t)}))}function It(t){return 0==(t&t-1)&&0!==t}function Tt(t){return Math.pow(2,Math.floor(Math.log(t)/Math.LN2))}function ht(t){return"object"==typeof t&&!!t}function Ft(t){return t*Math.PI/180}function Pt(t){return t/Math.PI*180}function Lt(t){return Math.sign?Math.sign(t):0===(t=+t)||isNaN(t)?Number(t):t>0?1:-1}const Ot=[1,1,1,1,2,2,3,0];function yt(t){const e=t.length;let r="";for(let n=0;n<e;){let A=t[n++];if(128&A){let r=Ot[A>>3&7];if(!(64&A)||!r||n+r>e)return null;for(A&=63>>r;r>0;r-=1){const e=t[n++];if(128!=(192&e))return null;A=A<<6|63&e}}r+=String.fromCharCode(A)}return r}const Mt=new Array(3),Nt=new Array(3),St=[40680631590769,40680631590769,40408299984661.445];const dt=[1/6378137,1/6378137,1/6356752.314245179],Ut=[1/40680631590769,1/40680631590769,1/40408299984661.445],Gt=new Array(3),mt=new Array(3),bt=new Array(3);function pt(t,e){const r=Ut,n=function(t,e,r,n,A){const i=e[0],o=e[1],s=e[2],a=r[0],B=r[1],E=r[2],c=i*i*a*a,C=o*o*B*B,f=s*s*E*E,l=c+C+f,u=Math.sqrt(1/l),_=I(wt,e,u);if(l<A)return isFinite(u)?_:void 0;const D=n[0],R=n[1],T=n[2],h=Ht;h[0]=_[0]*D*2,h[1]=_[1]*R*2,h[2]=_[2]*T*2;let F,P,L,O,y,M,N,S,d,U,G,m=(1-u)*gt(e)/(.5*gt(h)),b=0;do{m-=b,L=1/(1+m*D),O=1/(1+m*R),y=1/(1+m*T),M=L*L,N=O*O,S=y*y,d=M*L,U=N*O,G=S*y,F=c*M+C*N+f*S-1,P=c*d*D+C*U*R+f*G*T;b=F/(-2*P)}while(Math.abs(F)>Kt);return t[0]=i*L,t[1]=o*O,t[2]=s*y,t}(Gt,e,dt,r,.1);let A=y(mt,n,r);A=Vt(A,A);const i=O(bt,e,n),o=Math.atan2(A[1],A[0]),s=Math.asin(A[2]),a=Lt(F(i,e))*gt(i);return t[0]=Pt(o),t[1]=Pt(s),t[2]=a,t}const wt=new Array(3),Ht=new Array(3),Kt=1e-12;function gt(t){return C(t)}function Vt(t,e){const r=e[0],n=e[1],A=e[2];let i=r*r+n*n+A*A;return i>0&&(i=Math.sqrt(i),t[0]=e[0]/i,t[1]=e[1]/i,t[2]=e[2]/i),t}const Xt=1e-14;function Jt(t,e,r,n){r=r||0,n=n||r;var A=Math.abs(t-e);return A<=n||A<=r*Math.max(Math.abs(t),Math.abs(e))}function vt(t,e){let r="";for(let n=0;n<4;n++){const A=t.getUint8(e+n);r+=String.fromCharCode(A)}return r}const Zt="undefined"!=typeof TextDecoder?new TextDecoder("utf-8"):null;function xt(t,e,r){const n=new Uint8Array(t,e,r);return Zt?JSON.parse(Zt.decode(n)):JSON.parse(yt(n))}function kt(t,e,r){const n=new Uint8Array(t,e,r);return Zt?JSON.parse(Zt.decode(n)):JSON.parse(yt(n))}function Wt(t,e,r){return{offset:e,byteLength:r}}function Qt(t,e,r,n){const{byteOffset:A,componentType:i,type:o}=t,{ctor:s,type:a}=function(t){return zt[t]}(i||"UNSIGNED_SHORT"),B=function(t){if(!t)return 1;return Yt[t]}(o);return{byteStride:0,byteOffset:A+r,itemSize:B,count:n*B,componentType:a,array:new s(e,r+A,n*B)}}function jt(t,e,r,n){const A=Qt(t,e,r,n);return A.array.buffer.byteLength!==e.byteLength&&(A.array=A.array.slice()),A}const Yt={"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 qt(t){for(let e in zt)if(t===zt[e].ctor)return zt[e].type;throw new Error("unrecognized ctor:"+t)}function $t(t,e,r,n){const A=t,i=e.length/3;for(let t=0;t<i;t++)A[3*t]=e[3*t]/65535*n[0]+r[0],A[3*t+1]=e[3*t+1]/65535*n[1]+r[1],A[3*t+2]=e[3*t+2]/65535*n[2]+r[2];return A}function te(t,e,r){let n=t.getUint32(12,!0),A=t.getUint32(16,!0),i=t.getUint32(20,!0),o=t.getUint32(24,!0);const s=t.buffer;let a,B,E={},c={};n>0&&(E=xt(s,e,n),e+=n),A>0&&(a=function(t,e,r){return{offset:e,byteLength:r}}(0,e,A),e+=A),i>0&&(c=kt(s,e,i),e+=i);const C=Wt(0,e,o);return B=s.slice(C.offset,C.offset+C.byteLength),r.push(B),{featureTable:E,featureTableBin:a,batchTable:c,batchTableBin:B}}var ee={north:[-1,0,0],east:[0,1,0],up:[0,0,1],south:[1,0,0],west:[0,-1,0],down:[0,0,-1]},re={},ne={east:[],north:[],up:[],west:[],south:[],down:[]},Ae=[],ie=[],oe=[];const se=[0,0,0];const ae=(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"}}[Be="east"][Ee="north"],re[fe=Be+Ee]?ce=re[fe]:(ce=function(t,r,n){if(function(t,r){var n=t[0],A=t[1],i=t[2],o=r[0],s=r[1],a=r[2];return Math.abs(n-o)<=e*Math.max(1,Math.abs(n),Math.abs(o))&&Math.abs(A-s)<=e*Math.max(1,Math.abs(A),Math.abs(s))&&Math.abs(i-a)<=e*Math.max(1,Math.abs(i),Math.abs(a))}(t,se))l(Ae,ee[Be]),l(ie,ee[Ee]),l(oe,ee[Ce]);else if(Jt(t[0],0,Xt)&&Jt(t[1],0,Xt)){var A=Lt(t[2]);l(Ae,ee[Be]),"east"!==Be&&"west"!==Be&&I(Ae,Ae,A),l(ie,ee[Ee]),"east"!==Ee&&"west"!==Ee&&I(ie,ie,A),l(oe,ee[Ce]),"east"!==Ce&&"west"!==Ce&&I(oe,oe,A)}else{!function(t,e){R(e,t,Ut),h(e,e)}(t,ne.up);var i=ne.up,o=ne.east;o[0]=-t[1],o[1]=t[0],o[2]=0,h(ne.east,o),P(ne.north,i,o),I(ne.down,ne.up,-1),I(ne.west,ne.east,-1),I(ne.south,ne.north,-1),Ae=ne[Be],ie=ne[Ee],oe=ne[Ce]}return n[0]=Ae[0],n[1]=Ae[1],n[2]=Ae[2],n[3]=0,n[4]=ie[0],n[5]=ie[1],n[6]=ie[2],n[7]=0,n[8]=oe[0],n[9]=oe[1],n[10]=oe[2],n[11]=0,n[12]=t[0],n[13]=t[1],n[14]=t[2],n[15]=1,n},re[fe]=ce),ce);var Be,Ee,ce,Ce,fe;const le={5120:Int8Array,5122:Int16Array,5124:Int32Array,5121:Uint8Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array};function ue(t){return le[t]}function _e(t){for(let e in le)if(t===le[e])return+e;throw new Error("unrecognized ctor:"+t)}function De(t){return 1===t?"FLOAT":"VEC"+t}\n/*!\n * @maptalks/gl v0.81.2\n * LICENSE : UNLICENSED\n * (c) 2016-2023 maptalks.com\n */const Re=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")},Ie=Re(),Te=Ie.gl_trans__coders=Ie.gl_trans__coders||{};Te.inject=function(t){const e=t.toString(),r=e.indexOf("{")+1,n=e.substring(0,r),A=Ie.gl_trans__coders=Ie.gl_trans__coders||{};let i=\`${o}n}\\n const _____getGlobal = ${o}Re.toString()};\\n const g___lobals = _____getGlobal()\\n const tran_____scoders = g___lobals['gl_trans__coders'] = g___lobals['gl_trans__coders'] || {};\`;for(const t in A)"inject"!==t&&"getTranscoder"!==t&&"registerTranscoder"!==t&&(i+='tran_____scoders["'+t+'"] ='+A[t].toString()+"\\n;");return i+="\\n"+e.substring(n.length),i},Te.registerTranscoder=function(t,e){Te[t]=e},Te.getTranscoder=function(t){return Te[t]};let he=null;function Fe(){return he||(he={"image/crn":Te.crn&&Te.crn(),"image/ktx2":Te.ktx2&&Te.ktx2(),"image/cttf":Te.ktx2&&Te.ktx2(),"draco":Te.draco&&Te.draco()}),he}class Pe{constructor(t,e,r){this.A=t,this.et=e||lt,this.i=r,this.rt=Fe()}static createEmptyB3DM(){return{featureTable:null,batchTable:null,gltf:{}}}load(t,e,r=0,n=0,A){return e?(n||(n=e.byteLength),this.nt(t,e,r,n,A)):Y.getArrayBuffer(t,{}).then((e=>{const A=e.data;return n||(n=A.byteLength),this.nt(t,A,r,n)}))}nt(t,e,r,n,A){const i=A&&A.maxTextureSize,o=this.At(e,r,n,t);if(o.error)return Promise.resolve(o);const s=t.substring(0,t.lastIndexOf("/")),a=new this.et(s,o.glb,{transferable:!0,requestImage:this.A,decoders:this.rt,supportedFormats:this.i,maxTextureSize:i});return a.load({skipAttributeTransform:!1}).then((e=>{e.url=\`${o}t}-${o}r}-${o}n}\`;const A=a.transferables;for(let t=0;t<o.transferables.length;t++)A.indexOf(o.transferables[t])<0&&A.push(o.transferables[t]);return{magic:"b3dm",count:o.count,transferables:A,featureTable:o.featureTable,batchTable:o.batchTable,batchTableBin:o.batchTableBin,gltf:e}}))}At(t,e,r,n){const A=new DataView(t,e,r),i=A.getUint32(4,!0);if(1!==i){const t="Unsupported b3dm version: "+i+", url:"+n;return console.warn(t),{error:t}}if(A.getUint32(8,!0)!==A.byteLength){const t="Length in b3dm header is inconsistent with b3dm's byte length, url: "+n;return console.warn(t),{error:t}}let o,s=A.getUint32(12,!0),a=A.getUint32(16,!0),B=A.getUint32(20,!0),E=A.getUint32(24,!0),c=28+e;B>=570425344?(c-=8,o=s,B=a,E=0,s=0,a=0):E>=570425344&&(c-=4,o=B,B=s,E=a,s=0,a=0);const C=[t];let f,l,u;if(s>0?(f=xt(t,c,s),c+=s,o=f.BATCH_LENGTH):f={"BATCH_LENGTH":o},a>0&&(c+=a),B>0&&(l=kt(t,c,B),c+=B,E>0)){const e=Wt(0,c,E);u=t.slice(e.offset,e.offset+e.byteLength),c+=E,C.push(u)}const _=f.BATCH_LENGTH,D={};if(f&&f.BATCH_ID){D.BATCH_ID=jt(f.BATCH_ID,t,undefined.offset,_);const e=D.BATCH_ID.array&&D.BATCH_ID.array.buffer;e&&C.indexOf(e)<0&&C.push(e)}return{count:o,transferables:C,featureTable:f,batchTable:l,batchTableBin:u,b3dm:D,glb:{buffer:t,byteOffset:c,byteLength:A.byteLength+A.byteOffset-c}}}it(){return null}}class Le{constructor(t,e,r,n){this.A=t,this.et=e||lt,this.i=r,this.rt=Fe(),this.ot=n}load(t,e,r=0,n=0,A){return e?(n||(n=e.byteLength),this.nt(t,e,r,n,A)):Y.getArrayBuffer(t,{}).then((e=>{const A=e.data;return n||(n=A.byteLength),this.nt(t,A,r,n)}))}nt(t,e,r,n,A){return this.st(t,e,r,n,A).then((({gltf:A,transferables:i})=>{const o=this.Bt(e,r,n,t);if(o.error)return Promise.resolve(o);for(let t=0;t<i.length;t++)-1===o.transferables.indexOf(i[t])&&o.transferables.push(i[t]);return delete A.transferables,Promise.resolve({magic:"i3dm",count:o.count,transferables:o.transferables,featureTable:o.featureTable,batchTable:o.batchTable,batchTableBin:o.batchTableBin,i3dm:o.i3dm,gltf:A})}))}st(t,e,r,n,A){const i=A&&A.maxTextureSize,o={transferable:!0,requestImage:this.A,decoders:this.rt,supportedFormats:this.i,maxTextureSize:i},s=new DataView(e,r,n),a=32+s.getUint32(12,!0)+s.getUint32(16,!0)+s.getUint32(20,!0)+s.getUint32(24,!0);if(0===s.getUint32(28,!0)){let n=yt(new Uint8Array(e,a+r,s.byteLength-a));-1==n.indexOf("://")&&(n=t.substring(0,t.lastIndexOf("/"))+"/"+n);return n.indexOf(".glb")>0?Y.getArrayBuffer(n,{}).then((t=>this.Et(n,{buffer:t.data,byteOffset:0},o))):Y.getJSON(n,{}).then((t=>this.Et(n,t,o)))}{const n={buffer:e,byteOffset:a+r,byteLength:s.byteLength-a};return this.Et(t,n,o)}}Et(t,e,r){const n=t.substring(0,t.lastIndexOf("/")),A=new this.et(n,e,r);return A.load({skipAttributeTransform:!0}).then((r=>{let n=0,i=0;return e.buffer&&(n=e.byteOffset||0,i=e.byteLength||0),r.url=\`${o}t}-${o}n}-${o}i}\`,{transferables:A.transferables,gltf:r}}))}Bt(t,e,r,n){const A=new DataView(t,e,r),i=A.getUint32(4,!0);if(1!==i){const t="Unsupported pnts version: "+i+", url:"+n;return console.warn(t),{error:t}}if(A.getUint32(8,!0)!==A.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:s,featureTableBin:a,batchTable:B,batchTableBin:E}=te(A,32+e,o),c={},C=s.INSTANCES_LENGTH;if(s.POSITION){const{byteOffset:e}=s.POSITION;c.POSITION={byteStride:0,byteOffset:0,itemSize:3,count:C,componentType:5126,array:new Float32Array(t,e+a.offset,3*C).slice()},o.push(c.POSITION.array.buffer)}else if(s.POSITION_QUANTIZED){const e=s.QUANTIZED_VOLUME_OFFSET,r=s.QUANTIZED_VOLUME_SCALE,{byteOffset:n}=s.POSITION_QUANTIZED;c.POSITION={byteStride:12,byteOffset:0,itemSize:3,count:C,componentType:5126,array:this.ct(new Uint16Array(t,n+a.offset,3*C),e,r)},o.push(c.POSITION.array.buffer)}if(s.BATCH_ID){c.BATCH_ID=jt(s.BATCH_ID,t,a.offset,C);const e=c.BATCH_ID.array&&c.BATCH_ID.array.buffer;e&&o.indexOf(e)<0&&o.push(e)}if(s.NORMAL_UP){let{byteOffset:e}=s.NORMAL_UP;c.NORMAL_UP={byteStride:0,byteOffset:0,itemSize:3,count:C,componentType:5126,array:new Float32Array(t,e+a.offset,3*C).slice()},o.push(c.NORMAL_UP.array.buffer),e=s.NORMAL_RIGHT.byteOffset,c.NORMAL_RIGHT={byteStride:0,byteOffset:0,itemSize:3,count:C,componentType:5126,array:new Float32Array(t,e+a.offset,3*C).slice()},o.push(c.NORMAL_RIGHT.array.buffer)}else if(s.NORMAL_UP_OCT32P){let{byteOffset:e}=s.NORMAL_UP_OCT32P;c.NORMAL_UP={byteStride:0,byteOffset:0,itemSize:3,count:C,componentType:5126,array:this.Ct(new Uint16Array(t,e+a.offset,2*C))},o.push(c.NORMAL_UP.array.buffer),e=s.NORMAL_RIGHT_OCT32P.byteOffset,c.NORMAL_RIGHT={byteStride:0,byteOffset:0,itemSize:3,count:C,componentType:5126,array:this.Ct(new Uint16Array(t,e+a.offset,2*C))},o.push(c.NORMAL_RIGHT.array.buffer)}if(s.SCALE){const{byteOffset:e}=s.SCALE;c.SCALE={byteStride:0,byteOffset:0,itemSize:1,count:C,componentType:5126,array:new Float32Array(t,e+a.offset,C).slice()},o.push(c.SCALE.array.buffer)}else if(s.SCALE_NON_UNIFORM){const{byteOffset:e}=s.SCALE_NON_UNIFORM;c.SCALE_NON_UNIFORM={byteStride:0,byteOffset:0,itemSize:3,count:C,componentType:5126,array:new Float32Array(t,e+a.offset,3*C).slice()},o.push(c.SCALE_NON_UNIFORM.array.buffer)}return{count:C,batchTable:B,batchTableBin:E,featureTable:s,i3dm:c,transferables:o}}Ct(t){const e=t.length/2,r=new Float32Array(3*e),n=[];for(let A=0;A<e;A++)Oe(n,t[2*A],t[2*A+1],65535),r[3*A]=n[0],r[3*A+1]=n[1],r[3*A+2]=n[2];return r}ct(t,e,r){return $t(new Float32Array(t.length),t,e,r)}it(){return null}}function Oe(t,e,r,n){if(t[0]=ye(e,n),t[1]=ye(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]))*Me(e),t[1]=(1-Math.abs(e))*Me(t[1])}return h(t,t)}function ye(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 Me(t){return t<0?-1:1}class Ne{constructor(){}load(t,e,r=0,n=0){return e?(n||(n=e.byteLength),this.nt(t,e,r,n)):Y.getArrayBuffer(t,{}).then((e=>{const A=e.data;return n||(n=A.byteLength),this.nt(t,A,r,n)}))}nt(t,e,r,n){return this.ft(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}))}ft(t,e,r,n){const A=new DataView(t,e,r),i=A.getUint32(4,!0);if(1!==i){const t="Unsupported pnts version: "+i+", url:"+n;return console.warn(t),{error:t}}if(A.getUint32(8,!0)!==A.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:s,featureTableBin:a,batchTable:B,batchTableBin:E}=te(A,e+28,o),c=s.QUANTIZED_VOLUME_OFFSET,C=s.QUANTIZED_VOLUME_SCALE,f=s.POINTS_LENGTH;let l,u={};if(s.extensions&&s.extensions["3DTILES_draco_point_compression"]){u=s.extensions["3DTILES_draco_point_compression"],l=new DataView(t,u.byteOffset+a.offset,u.byteLength);const e={attributes:u.properties,useUniqueIDs:!1};return this.lt||(this.lt=Fe().draco),this.lt(l,e).then((e=>{const r=e.attributes;!s.POSITION&&!s.POSITION_QUANTIZED||r.POSITION||r.POSITION_QUANTIZED||(r.POSITION=s.POSITION,r.POSITION_QUANTIZED=s.POSITION_QUANTIZED),!(s.RGB||s.RGBA||s.RGB565)||r.RGB||r.RGBA||r.RGB565||(r.RGB=s.RGB,r.RGBA=s.RGBA,r.RGB565=s.RGB565),!s.NORMAL&&!s.NORMAL_OCT16P||r.NORMAL||r.NORMAL_OCT16P||(r.NORMAL=s.NORMAL,r.NORMAL_OCT16P=s.NORMAL_OCT16P);const n=this.ut(t,e.attributes,a.offset,f,o,c,C);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:qt(t.constructor),array:t},o.push(t.buffer)}else if(s.BATCH_ID||Object.keys(B).length){s.BATCH_ID?n.BATCH_ID=jt(s.BATCH_ID,t,a.offset,f):n.BATCH_ID=Se(f);const e=n.BATCH_ID.array&&n.BATCH_ID.array.buffer;e&&o.indexOf(e)<0&&o.push(e)}return{count:f,batchTable:B,batchTableBin:E,featureTable:s,pnts:n,transferables:o}}))}const _=this.ut(t,s,a.offset,f,o,c,C);if(s.BATCH_ID||Object.keys(B).length){s.BATCH_ID?_.BATCH_ID=jt(s.BATCH_ID,t,a.offset,f):_.BATCH_ID=Se(f);const e=_.BATCH_ID.array&&_.BATCH_ID.array.buffer;e&&o.indexOf(e)<0&&o.push(e)}return Promise.resolve({count:f,batchTable:B,batchTableBin:E,featureTable:s,pnts:_,transferables:o})}ut(t,e,r,n,A,i,o){const s={};if(e.POSITION){let{byteOffset:i,array:o}=e.POSITION;i=i||0;const a=o?0:r;if(!o){const e=t.slice(i+a,i+a+3*n*4);o=new Float32Array(e)}s.POSITION={byteStride:0,byteOffset:0,itemSize:3,count:n,componentType:5126,array:o},A.push(o.buffer)}else if(e.POSITION_QUANTIZED){let{byteOffset:a,array:B}=e.POSITION_QUANTIZED;a=a||0;const E=B?0:r;s.POSITION={byteStride:0,byteOffset:0,itemSize:3,count:n,componentType:5126,array:this.ct(B||new Uint16Array(t,a+E,3*n),i,o)},A.push(s.POSITION.array.buffer)}if(e.RGBA){let{byteOffset:i,array:o}=e.RGBA;i=i||0;const a=o?0:r;if(!o){const e=t.slice(i+a,i+a+4*n);o=new Uint8Array(e)}s.RGBA={byteStride:0,byteOffset:0,itemSize:4,count:n,componentType:5121,array:o},A.push(o.buffer)}else if(e.RGB){let{byteOffset:i,array:o}=e.RGB;i=i||0;const a=o?0:r;if(!o){const e=t.slice(i+a,i+a+3*n);o=new Uint8Array(e)}s.RGB={byteStride:0,byteOffset:0,itemSize:3,count:n,componentType:5121,array:o},A.push(o.buffer)}else if(e.RGB565){let{byteOffset:i,array:o}=e.RGB565;i=i||0;const a=o?0:r;if(!o){const e=t.slice(i+a,i+a+2*n);o=new Uint16Array(e)}s.RGB565={byteStride:0,byteOffset:0,itemSize:1,count:n,componentType:5123,array:o},A.push(o.buffer)}if(e.NORMAL){let{byteOffset:i,array:o}=e.NORMAL;i=i||0;const a=o?0:r;if(!o){const e=t.slice(i+a,i+a+3*n*4);o=new Float32Array(e)}s.NORMAL={byteStride:0,byteOffset:0,itemSize:3,count:n,componentType:5126,array:o},A.push(o.buffer)}else if(e.NORMAL_OCT16P){let{byteOffset:i,array:o}=e.NORMAL_OCT16P;i=i||0;const a=o?0:r;if(!o){const e=t.slice(i+a,i+a+2*n);o=new Uint8Array(e)}s.NORMAL_OCT16P={byteStride:0,byteOffset:0,itemSize:2,count:n,componentType:5121,array:o},A.push(o.buffer)}return s}ct(t,e,r){return $t(new Float32Array(t.length),t,e,r)}it(){return null}}function Se(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:qt(e),array:n}}class de{constructor(t,e,r,n){this.i=r,this.A=t,this.et=e||lt,this.ot=n}load(t,e,r=0,n=0,A){return e?this.nt(t,e,r,n,A):Y.getArrayBuffer(t,{}).then((e=>{const A=e.data;return this.nt(t,A,r,n)}))}nt(t,e,r,n,A){n||(n=e.byteLength);const i=this._t(e,t,r,n),o=[];for(let r=0;r<i.length;r++){let n;if("b3dm"===i[r].magic)n=new Pe(this.A,this.et,this.i);else if("i3dm"===i[r].magic)n=new Le(this.A,this.et,this.i,this.ot);else if("pnts"===i[r].magic)n=new Ne;else{if("cmpt"!==i[r].magic){console.warn("Unsupported magic in CMPT tile:",i[r].magic);continue}n=new de(this.A,this.et,this.i,this.ot)}o.push(n.load(t,e,i[r].offset,i[r].byteLength,A).then((t=>t)))}return Promise.all(o).then((t=>({magic:"cmpt",tiles:t})))}_t(t,e,r,n){const A=new DataView(t,r,n),i=A.getUint32(4,!0);if(1!==i){const t="Unsupported cmpt version: "+i+", url:"+e;return console.warn(t),{error:t}}if(16===A.byteLength)return[];const o=[],s=A.getUint32(12,!0);let a=16;for(let e=0;e<s;e++){const e=vt(A,a),n=A.getUint32(a+8,!0);o.push({magic:e,buffer:t,offset:a+r,byteLength:n}),a+=n}return o}}function Ue(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,A=n.length;r<A;r++){const A=[];Ke(n[r],A,t,e)}}}const Ge=[],me=[],be=[],pe=[0,0,0],we=d([]),He=[1,1,1];function Ke(t,e,r,n){const A=e.slice(0);if(t.matrix)A.push(t.matrix);else if(t.rotation||t.translation||t.scale){const e=s(Ge,t.translation||pe),r=B(me,t.rotation||we),n=a(be,t.scale||He);o(n,r,n);const i=o([],e,n);A.push(i)}if(t.children&&t.children.length)for(let e=0,i=t.children.length;e<i;e++)Ke(t.children[e],A,r,n);if(void 0!==t.mesh){const e=t.mesh,i=r.meshes[e];if(i){const t=A.slice(0),o=i.primitives;for(let A=0,i=o.length;A<i;A++){const i=o[A];i&&(i.matrices=t,n(i,e,A,r))}}}}function ge(t,e){let{componentType:r,byteOffset:n,byteStride:A,count:i,itemSize:o}=t;const s=t.array.buffer,a=r?lt.getTypedArrayCtor(r):t.array.constructor;if(n=void 0===n?t.array.byteOffset:n,A=A||0,i=i||t.array.length/o,(!A||A===o*a.BYTES_PER_ELEMENT)&&n%a.BYTES_PER_ELEMENT==0){const t=new a(s,n,i*o);for(let r=0;r<i*o;r+=o){e(new a(t.buffer,n+r*a.BYTES_PER_ELEMENT,o),r/o)}return}const B=new Uint8Array(o*a.BYTES_PER_ELEMENT);A||(A=o*a.BYTES_PER_ELEMENT);for(let t=0;t<i;t++){const r=new Uint8Array(s,A*t+n,o*a.BYTES_PER_ELEMENT);B.set(r);e(new a(B.buffer),t),r.set(B)}}const Ve=[],Xe=[];function Je(t){"3.0"===t.version&&(t=function(t){const e=JSON.parse(JSON.stringify(t)),r=e.rootTiles;for(let t=0;t<r.length;t++){const{boundingbox:e}=r[t],{center:n,xExtent:A,yExtent:i,zExtent:o}=e,s={x:2*n.x-A.x,y:2*n.y-i.y,z:2*n.z-o.z},a={x:A.x,y:i.y,z:o.z};e.min=s,e.max=a}return e.tiles=r,e}(t));const e={asset:{version:"1.0",gltfUpAxis:"Z",s3mType:t.dataType},extensions:t.extensions,geometricError:0,root:{boundingVolume:{},content:{uri:""},transform:[],geometricError:0,refine:"REPLACE",children:[]}},r=t.position.x,n=t.position.y,i=t.position.z,o=function(t,e,r,n){const A=St,i=Math.cos(r);Mt[0]=i*Math.cos(e),Mt[1]=i*Math.sin(e),Mt[2]=Math.sin(r),Vt(Mt,Mt),R(Nt,A,Mt);const o=Math.sqrt(F(Mt,Nt));var s,a,B;return a=Nt,B=o,(s=Nt)[0]=a[0]/B,s[1]=a[1]/B,s[2]=a[2]/B,I(Mt,Mt,n),_(t,Nt,Mt)}([],Ft(r),Ft(n),i),s=ae(o,null,[]);e.root.transform=A([],s);const a=[];for(let r=0,n=t.tiles.length;r<n;r++)if(t.tiles[r].boundingbox){const n=t.tiles[r].boundingbox;u(Ve,n.min.x,n.min.y,n.min.z),u(Xe,n.max.x,n.max.y,n.max.z);const A={center:[0,0,0],radius:0};ve(Ve,Xe,A),e.root.children.push({boundingVolume:{sphere:[...A.center,A.radius]},content:{uri:t.tiles[r].url},geometricError:70,refine:"REPLACE"}),a.push(A)}else if(t.tiles[r].boundingsphere){const{boundingsphere:n}=t.tiles[r],A={center:[n.center.x,n.center.y,n.center.z],radius:n.radius};e.root.children.push({boundingVolume:{sphere:[...A.center,A.radius]},content:{uri:t.tiles[r].url},geometricError:70,refine:"REPLACE"}),a.push(A)}const B=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,A=t.radius,i=e.center,o=e.radius,s=D(xe,i,n),a=or(s);if(A>=a+o)return t.clone(r),r;if(o>=a+A)return e.clone(r),r;const B=.5*(A+a+o),E=I(ke,s,(-A+B)/a);return _(E,E,n),l(r.center,E),r.radius=B,r}(t[0],t[1],e);const n=[];for(let e=0;e<r;e++)n.push(t[e].center);const A=(e=function(t,e){if(0===t.length)return e.center=u(e.center,0,0,0),e.radius=0,e;const r=l($e,t[0]),n=l(We,r),A=l(Qe,r),i=l(je,r),o=l(Ye,r),s=l(ze,r),a=l(qe,r),B=t.length;for(let e=1;e<B;e++){l(r,t[e]);const B=r[0],E=r[1],c=r[2];B<n[0]&&l(n,r),B>o[0]&&l(o,r),E<A[1]&&l(A,r),E>s[1]&&l(s,r),c<i[2]&&l(i,r),c>a[2]&&l(a,r)}const E=ir(D(tr,o,n)),c=ir(D(tr,s,A)),C=ir(D(tr,a,i));let f=n,_=o,R=E;c>R&&(R=c,f=A,_=s);C>R&&(R=C,f=i,_=a);const I=er;I[0]=.5*(f[0]+_[0]),I[1]=.5*(f[1]+_[1]),I[2]=.5*(f[2]+_[2]);let T=ir(D(tr,_,I)),h=Math.sqrt(T);const F=rr;F[0]=n[0],F[1]=A[1],F[2]=i[2];const P=nr;P[0]=o[0],P[1]=s[1],P[2]=a[2];const L=Ze(F,P,Ar);let O=0;for(let e=0;e<B;e++){l(r,t[e]);const n=or(D(tr,r,L));n>O&&(O=n);const A=ir(D(tr,r,I));if(A>T){const t=Math.sqrt(A);h=.5*(h+t),T=h*h;const e=t-h;I[0]=(h*I[0]+e*r[0])/t,I[1]=(h*I[1]+e*r[1])/t,I[2]=(h*I[2]+e*r[2])/t}}h<O?(l(e.center,I),e.radius=h):(l(e.center,L),e.radius=O);return e}(n,e)).center;let i=e.radius;for(let e=0;e<r;e++){const r=t[e];i=Math.max(i,T(A,r.center)+r.radius)}return e.radius=i,e}(a,{center:[0,0,0],radius:0});return e.root.boundingVolume.sphere=[...B.center,B.radius],e}function ve(t,e,r){var n=Ze(t,e,r.center);return r.radius=T(n,e),r}function Ze(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 xe=[],ke=[];const We=[],Qe=[],je=[],Ye=[],ze=[],qe=[],$e=[],tr=[],er=[],rr=[],nr=[],Ar=[];function ir(t){return t[0]*t[0]+t[1]*t[1]+t[2]*t[2]}function or(t){return Math.hypot(t[0],t[1],t[2])}\n/*! pako 2.1.0 https://github.com/nodeca/pako @license (MIT AND Zlib) */function sr(t){let e=t.length;for(;--e>=0;)t[e]=0}const ar=256,Br=286,Er=30,cr=15,Cr=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]),fr=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]),lr=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),ur=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),_r=new Array(576);sr(_r);const Dr=new Array(60);sr(Dr);const Rr=new Array(512);sr(Rr);const Ir=new Array(256);sr(Ir);const Tr=new Array(29);sr(Tr);const hr=new Array(Er);function Fr(t,e,r,n,A){this.static_tree=t,this.extra_bits=e,this.extra_base=r,this.elems=n,this.max_length=A,this.has_stree=t&&t.length}let Pr,Lr,Or;function yr(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}sr(hr);const Mr=t=>t<256?Rr[t]:Rr[256+(t>>>7)],Nr=(t,e)=>{t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255},Sr=(t,e,r)=>{t.bi_valid>16-r?(t.bi_buf|=e<<t.bi_valid&65535,Nr(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)},dr=(t,e,r)=>{Sr(t,r[2*e],r[2*e+1])},Ur=(t,e)=>{let r=0;do{r|=1&t,t>>>=1,r<<=1}while(--e>0);return r>>>1},Gr=(t,e,r)=>{const n=new Array(16);let A,i,o=0;for(A=1;A<=cr;A++)o=o+r[A-1]<<1,n[A]=o;for(i=0;i<=e;i++){let e=t[2*i+1];0!==e&&(t[2*i]=Ur(n[e]++,e))}},mr=t=>{let e;for(e=0;e<Br;e++)t.dyn_ltree[2*e]=0;for(e=0;e<Er;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.sym_next=t.matches=0},br=t=>{t.bi_valid>8?Nr(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0},pr=(t,e,r,n)=>{const A=2*e,i=2*r;return t[A]<t[i]||t[A]===t[i]&&n[e]<=n[r]},wr=(t,e,r)=>{const n=t.heap[r];let A=r<<1;for(;A<=t.heap_len&&(A<t.heap_len&&pr(e,t.heap[A+1],t.heap[A],t.depth)&&A++,!pr(e,n,t.heap[A],t.depth));)t.heap[r]=t.heap[A],r=A,A<<=1;t.heap[r]=n},Hr=(t,e,r)=>{let n,A,i,o,s=0;if(0!==t.sym_next)do{n=255&t.pending_buf[t.sym_buf+s++],n+=(255&t.pending_buf[t.sym_buf+s++])<<8,A=t.pending_buf[t.sym_buf+s++],0===n?dr(t,A,e):(i=Ir[A],dr(t,i+ar+1,e),o=Cr[i],0!==o&&(A-=Tr[i],Sr(t,A,o)),n--,i=Mr(n),dr(t,i,r),o=fr[i],0!==o&&(n-=hr[i],Sr(t,n,o)))}while(s<t.sym_next);dr(t,256,e)},Kr=(t,e)=>{const r=e.dyn_tree,n=e.stat_desc.static_tree,A=e.stat_desc.has_stree,i=e.stat_desc.elems;let o,s,a,B=-1;for(t.heap_len=0,t.heap_max=573,o=0;o<i;o++)0!==r[2*o]?(t.heap[++t.heap_len]=B=o,t.depth[o]=0):r[2*o+1]=0;for(;t.heap_len<2;)a=t.heap[++t.heap_len]=B<2?++B:0,r[2*a]=1,t.depth[a]=0,t.opt_len--,A&&(t.static_len-=n[2*a+1]);for(e.max_code=B,o=t.heap_len>>1;o>=1;o--)wr(t,r,o);a=i;do{o=t.heap[1],t.heap[1]=t.heap[t.heap_len--],wr(t,r,1),s=t.heap[1],t.heap[--t.heap_max]=o,t.heap[--t.heap_max]=s,r[2*a]=r[2*o]+r[2*s],t.depth[a]=(t.depth[o]>=t.depth[s]?t.depth[o]:t.depth[s])+1,r[2*o+1]=r[2*s+1]=a,t.heap[1]=a++,wr(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,A=e.stat_desc.static_tree,i=e.stat_desc.has_stree,o=e.stat_desc.extra_bits,s=e.stat_desc.extra_base,a=e.stat_desc.max_length;let B,E,c,C,f,l,u=0;for(C=0;C<=cr;C++)t.bl_count[C]=0;for(r[2*t.heap[t.heap_max]+1]=0,B=t.heap_max+1;B<573;B++)E=t.heap[B],C=r[2*r[2*E+1]+1]+1,C>a&&(C=a,u++),r[2*E+1]=C,E>n||(t.bl_count[C]++,f=0,E>=s&&(f=o[E-s]),l=r[2*E],t.opt_len+=l*(C+f),i&&(t.static_len+=l*(A[2*E+1]+f)));if(0!==u){do{for(C=a-1;0===t.bl_count[C];)C--;t.bl_count[C]--,t.bl_count[C+1]+=2,t.bl_count[a]--,u-=2}while(u>0);for(C=a;0!==C;C--)for(E=t.bl_count[C];0!==E;)c=t.heap[--B],c>n||(r[2*c+1]!==C&&(t.opt_len+=(C-r[2*c+1])*r[2*c],r[2*c+1]=C),E--)}})(t,e),Gr(r,B,t.bl_count)},gr=(t,e,r)=>{let n,A,i=-1,o=e[1],s=0,a=7,B=4;for(0===o&&(a=138,B=3),e[2*(r+1)+1]=65535,n=0;n<=r;n++)A=o,o=e[2*(n+1)+1],++s<a&&A===o||(s<B?t.bl_tree[2*A]+=s:0!==A?(A!==i&&t.bl_tree[2*A]++,t.bl_tree[32]++):s<=10?t.bl_tree[34]++:t.bl_tree[36]++,s=0,i=A,0===o?(a=138,B=3):A===o?(a=6,B=3):(a=7,B=4))},Vr=(t,e,r)=>{let n,A,i=-1,o=e[1],s=0,a=7,B=4;for(0===o&&(a=138,B=3),n=0;n<=r;n++)if(A=o,o=e[2*(n+1)+1],!(++s<a&&A===o)){if(s<B)do{dr(t,A,t.bl_tree)}while(0!=--s);else 0!==A?(A!==i&&(dr(t,A,t.bl_tree),s--),dr(t,16,t.bl_tree),Sr(t,s-3,2)):s<=10?(dr(t,17,t.bl_tree),Sr(t,s-3,3)):(dr(t,18,t.bl_tree),Sr(t,s-11,7));s=0,i=A,0===o?(a=138,B=3):A===o?(a=6,B=3):(a=7,B=4)}};let Xr=!1;const Jr=(t,e,r,n)=>{Sr(t,0+(n?1:0),3),br(t),Nr(t,r),Nr(t,~r),r&&t.pending_buf.set(t.window.subarray(e,e+r),t.pending),t.pending+=r};var vr=t=>{Xr||((()=>{let t,e,r,n,A;const i=new Array(16);for(r=0,n=0;n<28;n++)for(Tr[n]=r,t=0;t<1<<Cr[n];t++)Ir[r++]=n;for(Ir[r-1]=n,A=0,n=0;n<16;n++)for(hr[n]=A,t=0;t<1<<fr[n];t++)Rr[A++]=n;for(A>>=7;n<Er;n++)for(hr[n]=A<<7,t=0;t<1<<fr[n]-7;t++)Rr[256+A++]=n;for(e=0;e<=cr;e++)i[e]=0;for(t=0;t<=143;)_r[2*t+1]=8,t++,i[8]++;for(;t<=255;)_r[2*t+1]=9,t++,i[9]++;for(;t<=279;)_r[2*t+1]=7,t++,i[7]++;for(;t<=287;)_r[2*t+1]=8,t++,i[8]++;for(Gr(_r,287,i),t=0;t<Er;t++)Dr[2*t+1]=5,Dr[2*t]=Ur(t,5);Pr=new Fr(_r,Cr,257,Br,cr),Lr=new Fr(Dr,fr,0,Er,cr),Or=new Fr(new Array(0),lr,0,19,7)})(),Xr=!0),t.l_desc=new yr(t.dyn_ltree,Pr),t.d_desc=new yr(t.dyn_dtree,Lr),t.bl_desc=new yr(t.bl_tree,Or),t.bi_buf=0,t.bi_valid=0,mr(t)},Zr=(t,e,r,n)=>{let A,i,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<ar;e++)if(0!==t.dyn_ltree[2*e])return 1;return 0})(t)),Kr(t,t.l_desc),Kr(t,t.d_desc),o=(t=>{let e;for(gr(t,t.dyn_ltree,t.l_desc.max_code),gr(t,t.dyn_dtree,t.d_desc.max_code),Kr(t,t.bl_desc),e=18;e>=3&&0===t.bl_tree[2*ur[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e})(t),A=t.opt_len+3+7>>>3,i=t.static_len+3+7>>>3,i<=A&&(A=i)):A=i=r+5,r+4<=A&&-1!==e?Jr(t,e,r,n):4===t.strategy||i===A?(Sr(t,2+(n?1:0),3),Hr(t,_r,Dr)):(Sr(t,4+(n?1:0),3),((t,e,r,n)=>{let A;for(Sr(t,e-257,5),Sr(t,r-1,5),Sr(t,n-4,4),A=0;A<n;A++)Sr(t,t.bl_tree[2*ur[A]+1],3);Vr(t,t.dyn_ltree,e-1),Vr(t,t.dyn_dtree,r-1)})(t,t.l_desc.max_code+1,t.d_desc.max_code+1,o+1),Hr(t,t.dyn_ltree,t.dyn_dtree)),mr(t),n&&br(t)},xr={Dt:vr,Rt:Jr,It:Zr,Tt:(t,e,r)=>(t.pending_buf[t.sym_buf+t.sym_next++]=e,t.pending_buf[t.sym_buf+t.sym_next++]=e>>8,t.pending_buf[t.sym_buf+t.sym_next++]=r,0===e?t.dyn_ltree[2*r]++:(t.matches++,e--,t.dyn_ltree[2*(Ir[r]+ar+1)]++,t.dyn_dtree[2*Mr(e)]++),t.sym_next===t.sym_end),ht:t=>{Sr(t,2,3),dr(t,256,_r),(t=>{16===t.bi_valid?(Nr(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 kr=(t,e,r,n)=>{let A=65535&t|0,i=t>>>16&65535|0,o=0;for(;0!==r;){o=r>2e3?2e3:r,r-=o;do{A=A+e[n++]|0,i=i+A|0}while(--o);A%=65521,i%=65521}return A|i<<16|0};const Wr=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 Qr=(t,e,r,n)=>{const A=Wr,i=n+r;t^=-1;for(let r=n;r<i;r++)t=t>>>8^A[255&(t^e[r])];return-1^t},jr={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"},Yr={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{Dt:zr,Rt:qr,It:$r,Tt:tn,ht:en}=xr,{Z_NO_FLUSH:rn,Z_PARTIAL_FLUSH:nn,Z_FULL_FLUSH:An,Z_FINISH:on,Z_BLOCK:sn,Z_OK:an,Z_STREAM_END:Bn,Z_STREAM_ERROR:En,Z_DATA_ERROR:cn,Z_BUF_ERROR:Cn,Z_DEFAULT_COMPRESSION:fn,Z_FILTERED:ln,Z_HUFFMAN_ONLY:un,Z_RLE:_n,Z_FIXED:Dn,Z_DEFAULT_STRATEGY:Rn,Z_UNKNOWN:In,Z_DEFLATED:Tn}=Yr,hn=286,Fn=30,Pn=19,Ln=2*hn+1,On=15,yn=258,Mn=262,Nn=42,Sn=113,dn=666,Un=(t,e)=>(t.msg=jr[e],e),Gn=t=>2*t-(t>4?9:0),mn=t=>{let e=t.length;for(;--e>=0;)t[e]=0},bn=t=>{let e,r,n,A=t.w_size;e=t.hash_size,n=e;do{r=t.head[--n],t.head[n]=r>=A?r-A:0}while(--e);e=A,n=e;do{r=t.prev[--n],t.prev[n]=r>=A?r-A:0}while(--e)};let pn=(t,e,r)=>(e<<t.hash_shift^r)&t.hash_mask;const wn=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))},Hn=(t,e)=>{$r(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,wn(t.strm)},Kn=(t,e)=>{t.pending_buf[t.pending++]=e},gn=(t,e)=>{t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e},Vn=(t,e,r,n)=>{let A=t.avail_in;return A>n&&(A=n),0===A?0:(t.avail_in-=A,e.set(t.input.subarray(t.next_in,t.next_in+A),r),1===t.state.wrap?t.adler=kr(t.adler,e,A,r):2===t.state.wrap&&(t.adler=Qr(t.adler,e,A,r)),t.next_in+=A,t.total_in+=A,A)},Xn=(t,e)=>{let r,n,A=t.max_chain_length,i=t.strstart,o=t.prev_length,s=t.nice_match;const a=t.strstart>t.w_size-Mn?t.strstart-(t.w_size-Mn):0,B=t.window,E=t.w_mask,c=t.prev,C=t.strstart+yn;let f=B[i+o-1],l=B[i+o];t.prev_length>=t.good_match&&(A>>=2),s>t.lookahead&&(s=t.lookahead);do{if(r=e,B[r+o]===l&&B[r+o-1]===f&&B[r]===B[i]&&B[++r]===B[i+1]){i+=2,r++;do{}while(B[++i]===B[++r]&&B[++i]===B[++r]&&B[++i]===B[++r]&&B[++i]===B[++r]&&B[++i]===B[++r]&&B[++i]===B[++r]&&B[++i]===B[++r]&&B[++i]===B[++r]&&i<C);if(n=yn-(C-i),i=C-yn,n>o){if(t.match_start=e,o=n,n>=s)break;f=B[i+o-1],l=B[i+o]}}}while((e=c[e&E])>a&&0!=--A);return o<=t.lookahead?o:t.lookahead},Jn=t=>{const e=t.w_size;let r,n,A;do{if(n=t.window_size-t.lookahead-t.strstart,t.strstart>=e+(e-Mn)&&(t.window.set(t.window.subarray(e,e+e-n),0),t.match_start-=e,t.strstart-=e,t.block_start-=e,t.insert>t.strstart&&(t.insert=t.strstart),bn(t),n+=e),0===t.strm.avail_in)break;if(r=Vn(t.strm,t.window,t.strstart+t.lookahead,n),t.lookahead+=r,t.lookahead+t.insert>=3)for(A=t.strstart-t.insert,t.ins_h=t.window[A],t.ins_h=pn(t,t.ins_h,t.window[A+1]);t.insert&&(t.ins_h=pn(t,t.ins_h,t.window[A+3-1]),t.prev[A&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=A,A++,t.insert--,!(t.lookahead+t.insert<3)););}while(t.lookahead<Mn&&0!==t.strm.avail_in)},vn=(t,e)=>{let r,n,A,i=t.pending_buf_size-5>t.w_size?t.w_size:t.pending_buf_size-5,o=0,s=t.strm.avail_in;do{if(r=65535,A=t.bi_valid+42>>3,t.strm.avail_out<A)break;if(A=t.strm.avail_out-A,n=t.strstart-t.block_start,r>n+t.strm.avail_in&&(r=n+t.strm.avail_in),r>A&&(r=A),r<i&&(0===r&&e!==on||e===rn||r!==n+t.strm.avail_in))break;o=e===on&&r===n+t.strm.avail_in?1:0,qr(t,0,0,o),t.pending_buf[t.pending-4]=r,t.pending_buf[t.pending-3]=r>>8,t.pending_buf[t.pending-2]=~r,t.pending_buf[t.pending-1]=~r>>8,wn(t.strm),n&&(n>r&&(n=r),t.strm.output.set(t.window.subarray(t.block_start,t.block_start+n),t.strm.next_out),t.strm.next_out+=n,t.strm.avail_out-=n,t.strm.total_out+=n,t.block_start+=n,r-=n),r&&(Vn(t.strm,t.strm.output,t.strm.next_out,r),t.strm.next_out+=r,t.strm.avail_out-=r,t.strm.total_out+=r)}while(0===o);return s-=t.strm.avail_in,s&&(s>=t.w_size?(t.matches=2,t.window.set(t.strm.input.subarray(t.strm.next_in-t.w_size,t.strm.next_in),0),t.strstart=t.w_size,t.insert=t.strstart):(t.window_size-t.strstart<=s&&(t.strstart-=t.w_size,t.window.set(t.window.subarray(t.w_size,t.w_size+t.strstart),0),t.matches<2&&t.matches++,t.insert>t.strstart&&(t.insert=t.strstart)),t.window.set(t.strm.input.subarray(t.strm.next_in-s,t.strm.next_in),t.strstart),t.strstart+=s,t.insert+=s>t.w_size-t.insert?t.w_size-t.insert:s),t.block_start=t.strstart),t.high_water<t.strstart&&(t.high_water=t.strstart),o?4:e!==rn&&e!==on&&0===t.strm.avail_in&&t.strstart===t.block_start?2:(A=t.window_size-t.strstart,t.strm.avail_in>A&&t.block_start>=t.w_size&&(t.block_start-=t.w_size,t.strstart-=t.w_size,t.window.set(t.window.subarray(t.w_size,t.w_size+t.strstart),0),t.matches<2&&t.matches++,A+=t.w_size,t.insert>t.strstart&&(t.insert=t.strstart)),A>t.strm.avail_in&&(A=t.strm.avail_in),A&&(Vn(t.strm,t.window,t.strstart,A),t.strstart+=A,t.insert+=A>t.w_size-t.insert?t.w_size-t.insert:A),t.high_water<t.strstart&&(t.high_water=t.strstart),A=t.bi_valid+42>>3,A=t.pending_buf_size-A>65535?65535:t.pending_buf_size-A,i=A>t.w_size?t.w_size:A,n=t.strstart-t.block_start,(n>=i||(n||e===on)&&e!==rn&&0===t.strm.avail_in&&n<=A)&&(r=n>A?A:n,o=e===on&&0===t.strm.avail_in&&r===n?1:0,qr(t,t.block_start,r,o),t.block_start+=r,wn(t.strm)),o?3:1)},Zn=(t,e)=>{let r,n;for(;;){if(t.lookahead<Mn){if(Jn(t),t.lookahead<Mn&&e===rn)return 1;if(0===t.lookahead)break}if(r=0,t.lookahead>=3&&(t.ins_h=pn(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-Mn&&(t.match_length=Xn(t,r)),t.match_length>=3)if(n=tn(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=pn(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=pn(t,t.ins_h,t.window[t.strstart+1]);else n=tn(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(n&&(Hn(t,!1),0===t.strm.avail_out))return 1}return t.insert=t.strstart<2?t.strstart:2,e===on?(Hn(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(Hn(t,!1),0===t.strm.avail_out)?1:2},xn=(t,e)=>{let r,n,A;for(;;){if(t.lookahead<Mn){if(Jn(t),t.lookahead<Mn&&e===rn)return 1;if(0===t.lookahead)break}if(r=0,t.lookahead>=3&&(t.ins_h=pn(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-Mn&&(t.match_length=Xn(t,r),t.match_length<=5&&(t.strategy===ln||3===t.match_length&&t.strstart-t.match_start>4096)&&(t.match_length=2)),t.prev_length>=3&&t.match_length<=t.prev_length){A=t.strstart+t.lookahead-3,n=tn(t,t.strstart-1-t.prev_match,t.prev_length-3),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=A&&(t.ins_h=pn(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&&(Hn(t,!1),0===t.strm.avail_out))return 1}else if(t.match_available){if(n=tn(t,0,t.window[t.strstart-1]),n&&Hn(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=tn(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<2?t.strstart:2,e===on?(Hn(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(Hn(t,!1),0===t.strm.avail_out)?1:2};function kn(t,e,r,n,A){this.good_length=t,this.max_lazy=e,this.nice_length=r,this.max_chain=n,this.func=A}const Wn=[new kn(0,0,0,0,vn),new kn(4,4,8,4,Zn),new kn(4,5,16,8,Zn),new kn(4,6,32,32,Zn),new kn(4,4,16,16,xn),new kn(8,16,32,32,xn),new kn(8,16,128,128,xn),new kn(8,32,128,256,xn),new kn(32,128,258,1024,xn),new kn(32,258,258,4096,xn)];function Qn(){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=Tn,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(2*Ln),this.dyn_dtree=new Uint16Array(2*(2*Fn+1)),this.bl_tree=new Uint16Array(2*(2*Pn+1)),mn(this.dyn_ltree),mn(this.dyn_dtree),mn(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(On+1),this.heap=new Uint16Array(2*hn+1),mn(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(2*hn+1),mn(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const jn=t=>{if(!t)return 1;const e=t.state;return!e||e.strm!==t||e.status!==Nn&&57!==e.status&&69!==e.status&&73!==e.status&&91!==e.status&&103!==e.status&&e.status!==Sn&&e.status!==dn?1:0},Yn=t=>{if(jn(t))return Un(t,En);t.total_in=t.total_out=0,t.data_type=In;const e=t.state;return e.pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=2===e.wrap?57:e.wrap?Nn:Sn,t.adler=2===e.wrap?0:1,e.last_flush=-2,zr(e),an},zn=t=>{const e=Yn(t);var r;return e===an&&((r=t.state).window_size=2*r.w_size,mn(r.head),r.max_lazy_match=Wn[r.level].max_lazy,r.good_match=Wn[r.level].good_length,r.nice_match=Wn[r.level].nice_length,r.max_chain_length=Wn[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},qn=(t,e,r,n,A,i)=>{if(!t)return En;let o=1;if(e===fn&&(e=6),n<0?(o=0,n=-n):n>15&&(o=2,n-=16),A<1||A>9||r!==Tn||n<8||n>15||e<0||e>9||i<0||i>Dn||8===n&&1!==o)return Un(t,En);8===n&&(n=9);const s=new Qn;return t.state=s,s.strm=t,s.status=Nn,s.wrap=o,s.gzhead=null,s.w_bits=n,s.w_size=1<<s.w_bits,s.w_mask=s.w_size-1,s.hash_bits=A+7,s.hash_size=1<<s.hash_bits,s.hash_mask=s.hash_size-1,s.hash_shift=~~((s.hash_bits+3-1)/3),s.window=new Uint8Array(2*s.w_size),s.head=new Uint16Array(s.hash_size),s.prev=new Uint16Array(s.w_size),s.lit_bufsize=1<<A+6,s.pending_buf_size=4*s.lit_bufsize,s.pending_buf=new Uint8Array(s.pending_buf_size),s.sym_buf=s.lit_bufsize,s.sym_end=3*(s.lit_bufsize-1),s.level=e,s.strategy=i,s.method=r,zn(t)};var $n=(t,e)=>{if(jn(t)||e>sn||e<0)return t?Un(t,En):En;const r=t.state;if(!t.output||0!==t.avail_in&&!t.input||r.status===dn&&e!==on)return Un(t,0===t.avail_out?Cn:En);const n=r.last_flush;if(r.last_flush=e,0!==r.pending){if(wn(t),0===t.avail_out)return r.last_flush=-1,an}else if(0===t.avail_in&&Gn(e)<=Gn(n)&&e!==on)return Un(t,Cn);if(r.status===dn&&0!==t.avail_in)return Un(t,Cn);if(r.status===Nn&&0===r.wrap&&(r.status=Sn),r.status===Nn){let e=Tn+(r.w_bits-8<<4)<<8,n=-1;if(n=r.strategy>=un||r.level<2?0:r.level<6?1:6===r.level?2:3,e|=n<<6,0!==r.strstart&&(e|=32),e+=31-e%31,gn(r,e),0!==r.strstart&&(gn(r,t.adler>>>16),gn(r,65535&t.adler)),t.adler=1,r.status=Sn,wn(t),0!==r.pending)return r.last_flush=-1,an}if(57===r.status)if(t.adler=0,Kn(r,31),Kn(r,139),Kn(r,8),r.gzhead)Kn(r,(r.gzhead.text?1:0)+(r.gzhead.hcrc?2:0)+(r.gzhead.extra?4:0)+(r.gzhead.name?8:0)+(r.gzhead.comment?16:0)),Kn(r,255&r.gzhead.time),Kn(r,r.gzhead.time>>8&255),Kn(r,r.gzhead.time>>16&255),Kn(r,r.gzhead.time>>24&255),Kn(r,9===r.level?2:r.strategy>=un||r.level<2?4:0),Kn(r,255&r.gzhead.os),r.gzhead.extra&&r.gzhead.extra.length&&(Kn(r,255&r.gzhead.extra.length),Kn(r,r.gzhead.extra.length>>8&255)),r.gzhead.hcrc&&(t.adler=Qr(t.adler,r.pending_buf,r.pending,0)),r.gzindex=0,r.status=69;else if(Kn(r,0),Kn(r,0),Kn(r,0),Kn(r,0),Kn(r,0),Kn(r,9===r.level?2:r.strategy>=un||r.level<2?4:0),Kn(r,3),r.status=Sn,wn(t),0!==r.pending)return r.last_flush=-1,an;if(69===r.status){if(r.gzhead.extra){let e=r.pending,n=(65535&r.gzhead.extra.length)-r.gzindex;for(;r.pending+n>r.pending_buf_size;){let A=r.pending_buf_size-r.pending;if(r.pending_buf.set(r.gzhead.extra.subarray(r.gzindex,r.gzindex+A),r.pending),r.pending=r.pending_buf_size,r.gzhead.hcrc&&r.pending>e&&(t.adler=Qr(t.adler,r.pending_buf,r.pending-e,e)),r.gzindex+=A,wn(t),0!==r.pending)return r.last_flush=-1,an;e=0,n-=A}let A=new Uint8Array(r.gzhead.extra);r.pending_buf.set(A.subarray(r.gzindex,r.gzindex+n),r.pending),r.pending+=n,r.gzhead.hcrc&&r.pending>e&&(t.adler=Qr(t.adler,r.pending_buf,r.pending-e,e)),r.gzindex=0}r.status=73}if(73===r.status){if(r.gzhead.name){let e,n=r.pending;do{if(r.pending===r.pending_buf_size){if(r.gzhead.hcrc&&r.pending>n&&(t.adler=Qr(t.adler,r.pending_buf,r.pending-n,n)),wn(t),0!==r.pending)return r.last_flush=-1,an;n=0}e=r.gzindex<r.gzhead.name.length?255&r.gzhead.name.charCodeAt(r.gzindex++):0,Kn(r,e)}while(0!==e);r.gzhead.hcrc&&r.pending>n&&(t.adler=Qr(t.adler,r.pending_buf,r.pending-n,n)),r.gzindex=0}r.status=91}if(91===r.status){if(r.gzhead.comment){let e,n=r.pending;do{if(r.pending===r.pending_buf_size){if(r.gzhead.hcrc&&r.pending>n&&(t.adler=Qr(t.adler,r.pending_buf,r.pending-n,n)),wn(t),0!==r.pending)return r.last_flush=-1,an;n=0}e=r.gzindex<r.gzhead.comment.length?255&r.gzhead.comment.charCodeAt(r.gzindex++):0,Kn(r,e)}while(0!==e);r.gzhead.hcrc&&r.pending>n&&(t.adler=Qr(t.adler,r.pending_buf,r.pending-n,n))}r.status=103}if(103===r.status){if(r.gzhead.hcrc){if(r.pending+2>r.pending_buf_size&&(wn(t),0!==r.pending))return r.last_flush=-1,an;Kn(r,255&t.adler),Kn(r,t.adler>>8&255),t.adler=0}if(r.status=Sn,wn(t),0!==r.pending)return r.last_flush=-1,an}if(0!==t.avail_in||0!==r.lookahead||e!==rn&&r.status!==dn){let n=0===r.level?vn(r,e):r.strategy===un?((t,e)=>{let r;for(;;){if(0===t.lookahead&&(Jn(t),0===t.lookahead)){if(e===rn)return 1;break}if(t.match_length=0,r=tn(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,r&&(Hn(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===on?(Hn(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(Hn(t,!1),0===t.strm.avail_out)?1:2})(r,e):r.strategy===_n?((t,e)=>{let r,n,A,i;const o=t.window;for(;;){if(t.lookahead<=yn){if(Jn(t),t.lookahead<=yn&&e===rn)return 1;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=3&&t.strstart>0&&(A=t.strstart-1,n=o[A],n===o[++A]&&n===o[++A]&&n===o[++A])){i=t.strstart+yn;do{}while(n===o[++A]&&n===o[++A]&&n===o[++A]&&n===o[++A]&&n===o[++A]&&n===o[++A]&&n===o[++A]&&n===o[++A]&&A<i);t.match_length=yn-(i-A),t.match_length>t.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=3?(r=tn(t,1,t.match_length-3),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(r=tn(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),r&&(Hn(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===on?(Hn(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(Hn(t,!1),0===t.strm.avail_out)?1:2})(r,e):Wn[r.level].func(r,e);if(3!==n&&4!==n||(r.status=dn),1===n||3===n)return 0===t.avail_out&&(r.last_flush=-1),an;if(2===n&&(e===nn?en(r):e!==sn&&(qr(r,0,0,!1),e===An&&(mn(r.head),0===r.lookahead&&(r.strstart=0,r.block_start=0,r.insert=0))),wn(t),0===t.avail_out))return r.last_flush=-1,an}return e!==on?an:r.wrap<=0?Bn:(2===r.wrap?(Kn(r,255&t.adler),Kn(r,t.adler>>8&255),Kn(r,t.adler>>16&255),Kn(r,t.adler>>24&255),Kn(r,255&t.total_in),Kn(r,t.total_in>>8&255),Kn(r,t.total_in>>16&255),Kn(r,t.total_in>>24&255)):(gn(r,t.adler>>>16),gn(r,65535&t.adler)),wn(t),r.wrap>0&&(r.wrap=-r.wrap),0!==r.pending?an:Bn)},tA=(t,e)=>{let r=e.length;if(jn(t))return En;const n=t.state,A=n.wrap;if(2===A||1===A&&n.status!==Nn||n.lookahead)return En;if(1===A&&(t.adler=kr(t.adler,e,r,0)),n.wrap=0,r>=n.w_size){0===A&&(mn(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 i=t.avail_in,o=t.next_in,s=t.input;for(t.avail_in=r,t.next_in=0,t.input=e,Jn(n);n.lookahead>=3;){let t=n.strstart,e=n.lookahead-2;do{n.ins_h=pn(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,Jn(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=s,t.avail_in=i,n.wrap=A,an},eA={deflateInit:(t,e)=>qn(t,e,Tn,15,8,Rn),deflateInit2:qn,deflateReset:zn,deflateResetKeep:Yn,deflateSetHeader:(t,e)=>jn(t)||2!==t.state.wrap?En:(t.state.gzhead=e,an),deflate:$n,deflateEnd:t=>{if(jn(t))return En;const e=t.state.status;return t.state=null,e===Sn?Un(t,cn):an},deflateSetDictionary:tA,deflateInfo:"pako deflate (from Nodeca project)"};const rA=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var nA={assign: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)rA(r,e)&&(t[e]=r[e])}}return t},flattenChunks: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,A=t.length;e<A;e++){let A=t[e];r.set(A,n),n+=A.length}return r}};let AA=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(t){AA=!1}const iA=new Uint8Array(256);for(let t=0;t<256;t++)iA[t]=t>=252?6:t>=248?5:t>=240?4:t>=224?3:t>=192?2:1;iA[254]=iA[254]=1;var oA={string2buf:t=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(t);let e,r,n,A,i,o=t.length,s=0;for(A=0;A<o;A++)r=t.charCodeAt(A),55296==(64512&r)&&A+1<o&&(n=t.charCodeAt(A+1),56320==(64512&n)&&(r=65536+(r-55296<<10)+(n-56320),A++)),s+=r<128?1:r<2048?2:r<65536?3:4;for(e=new Uint8Array(s),i=0,A=0;i<s;A++)r=t.charCodeAt(A),55296==(64512&r)&&A+1<o&&(n=t.charCodeAt(A+1),56320==(64512&n)&&(r=65536+(r-55296<<10)+(n-56320),A++)),r<128?e[i++]=r:r<2048?(e[i++]=192|r>>>6,e[i++]=128|63&r):r<65536?(e[i++]=224|r>>>12,e[i++]=128|r>>>6&63,e[i++]=128|63&r):(e[i++]=240|r>>>18,e[i++]=128|r>>>12&63,e[i++]=128|r>>>6&63,e[i++]=128|63&r);return e},buf2string:(t,e)=>{const r=e||t.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(t.subarray(0,e));let n,A;const i=new Array(2*r);for(A=0,n=0;n<r;){let e=t[n++];if(e<128){i[A++]=e;continue}let o=iA[e];if(o>4)i[A++]=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?i[A++]=65533:e<65536?i[A++]=e:(e-=65536,i[A++]=55296|e>>10&1023,i[A++]=56320|1023&e)}}return((t,e)=>{if(e<65534&&t.subarray&&AA)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})(i,A)},utf8border:(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+iA[t[r]]>e?r:e}};var sA=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 aA=Object.prototype.toString,{Z_NO_FLUSH:BA,Z_SYNC_FLUSH:EA,Z_FULL_FLUSH:cA,Z_FINISH:CA,Z_OK:fA,Z_STREAM_END:lA,Z_DEFAULT_COMPRESSION:uA,Z_DEFAULT_STRATEGY:_A,Z_DEFLATED:DA}=Yr;function RA(t){this.options=nA.assign({level:uA,method:DA,chunkSize:16384,windowBits:15,memLevel:8,strategy:_A},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 sA,this.strm.avail_out=0;let r=eA.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(r!==fA)throw new Error(jr[r]);if(e.header&&eA.deflateSetHeader(this.strm,e.header),e.dictionary){let t;if(t="string"==typeof e.dictionary?oA.string2buf(e.dictionary):"[object ArrayBuffer]"===aA.call(e.dictionary)?new Uint8Array(e.dictionary):e.dictionary,r=eA.deflateSetDictionary(this.strm,t),r!==fA)throw new Error(jr[r]);this.Ft=!0}}function IA(t,e){const r=new RA(e);if(r.push(t,!0),r.err)throw r.msg||jr[r.err];return r.result}RA.prototype.push=function(t,e){const r=this.strm,n=this.options.chunkSize;let A,i;if(this.ended)return!1;for(i=e===~~e?e:!0===e?CA:BA,"string"==typeof t?r.input=oA.string2buf(t):"[object ArrayBuffer]"===aA.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),(i===EA||i===cA)&&r.avail_out<=6)this.onData(r.output.subarray(0,r.next_out)),r.avail_out=0;else{if(A=eA.deflate(r,i),A===lA)return r.next_out>0&&this.onData(r.output.subarray(0,r.next_out)),A=eA.deflateEnd(this.strm),this.onEnd(A),this.ended=!0,A===fA;if(0!==r.avail_out){if(i>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},RA.prototype.onData=function(t){this.chunks.push(t)},RA.prototype.onEnd=function(t){t===fA&&(this.result=nA.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};var TA={Deflate:RA,deflate:IA,deflateRaw:function(t,e){return(e=e||{}).raw=!0,IA(t,e)},gzip:function(t,e){return(e=e||{}).gzip=!0,IA(t,e)},constants:Yr};const hA=16209;var FA=function(t,e){let r,n,A,i,o,s,a,B,E,c,C,f,l,u,_,D,R,I,T,h,F,P,L,O;const y=t.state;r=t.next_in,L=t.input,n=r+(t.avail_in-5),A=t.next_out,O=t.output,i=A-(e-t.avail_out),o=A+(t.avail_out-257),s=y.dmax,a=y.wsize,B=y.whave,E=y.wnext,c=y.window,C=y.hold,f=y.bits,l=y.lencode,u=y.distcode,_=(1<<y.lenbits)-1,D=(1<<y.distbits)-1;t:do{f<15&&(C+=L[r++]<<f,f+=8,C+=L[r++]<<f,f+=8),R=l[C&_];e:for(;;){if(I=R>>>24,C>>>=I,f-=I,I=R>>>16&255,0===I)O[A++]=65535&R;else{if(!(16&I)){if(0==(64&I)){R=l[(65535&R)+(C&(1<<I)-1)];continue e}if(32&I){y.mode=16191;break t}t.msg="invalid literal/length code",y.mode=hA;break t}T=65535&R,I&=15,I&&(f<I&&(C+=L[r++]<<f,f+=8),T+=C&(1<<I)-1,C>>>=I,f-=I),f<15&&(C+=L[r++]<<f,f+=8,C+=L[r++]<<f,f+=8),R=u[C&D];r:for(;;){if(I=R>>>24,C>>>=I,f-=I,I=R>>>16&255,!(16&I)){if(0==(64&I)){R=u[(65535&R)+(C&(1<<I)-1)];continue r}t.msg="invalid distance code",y.mode=hA;break t}if(h=65535&R,I&=15,f<I&&(C+=L[r++]<<f,f+=8,f<I&&(C+=L[r++]<<f,f+=8)),h+=C&(1<<I)-1,h>s){t.msg="invalid distance too far back",y.mode=hA;break t}if(C>>>=I,f-=I,I=A-i,h>I){if(I=h-I,I>B&&y.sane){t.msg="invalid distance too far back",y.mode=hA;break t}if(F=0,P=c,0===E){if(F+=a-I,I<T){T-=I;do{O[A++]=c[F++]}while(--I);F=A-h,P=O}}else if(E<I){if(F+=a+E-I,I-=E,I<T){T-=I;do{O[A++]=c[F++]}while(--I);if(F=0,E<T){I=E,T-=I;do{O[A++]=c[F++]}while(--I);F=A-h,P=O}}}else if(F+=E-I,I<T){T-=I;do{O[A++]=c[F++]}while(--I);F=A-h,P=O}for(;T>2;)O[A++]=P[F++],O[A++]=P[F++],O[A++]=P[F++],T-=3;T&&(O[A++]=P[F++],T>1&&(O[A++]=P[F++]))}else{F=A-h;do{O[A++]=O[F++],O[A++]=O[F++],O[A++]=O[F++],T-=3}while(T>2);T&&(O[A++]=O[F++],T>1&&(O[A++]=O[F++]))}break}}break}}while(r<n&&A<o);T=f>>3,r-=T,f-=T<<3,C&=(1<<f)-1,t.next_in=r,t.next_out=A,t.avail_in=r<n?n-r+5:5-(r-n),t.avail_out=A<o?o-A+257:257-(A-o),y.hold=C,y.bits=f};const PA=15,LA=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]),OA=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]),yA=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]),MA=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 NA=(t,e,r,n,A,i,o,s)=>{const a=s.bits;let B,E,c,C,f,l,u=0,_=0,D=0,R=0,I=0,T=0,h=0,F=0,P=0,L=0,O=null;const y=new Uint16Array(16),M=new Uint16Array(16);let N,S,d,U=null;for(u=0;u<=PA;u++)y[u]=0;for(_=0;_<n;_++)y[e[r+_]]++;for(I=a,R=PA;R>=1&&0===y[R];R--);if(I>R&&(I=R),0===R)return A[i++]=20971520,A[i++]=20971520,s.bits=1,0;for(D=1;D<R&&0===y[D];D++);for(I<D&&(I=D),F=1,u=1;u<=PA;u++)if(F<<=1,F-=y[u],F<0)return-1;if(F>0&&(0===t||1!==R))return-1;for(M[1]=0,u=1;u<PA;u++)M[u+1]=M[u]+y[u];for(_=0;_<n;_++)0!==e[r+_]&&(o[M[e[r+_]]++]=_);if(0===t?(O=U=o,l=20):1===t?(O=LA,U=OA,l=257):(O=yA,U=MA,l=0),L=0,_=0,u=D,f=i,T=I,h=0,c=-1,P=1<<I,C=P-1,1===t&&P>852||2===t&&P>592)return 1;for(;;){N=u-h,o[_]+1<l?(S=0,d=o[_]):o[_]>=l?(S=U[o[_]-l],d=O[o[_]-l]):(S=96,d=0),B=1<<u-h,E=1<<T,D=E;do{E-=B,A[f+(L>>h)+E]=N<<24|S<<16|d|0}while(0!==E);for(B=1<<u-1;L&B;)B>>=1;if(0!==B?(L&=B-1,L+=B):L=0,_++,0==--y[u]){if(u===R)break;u=e[r+o[_]]}if(u>I&&(L&C)!==c){for(0===h&&(h=I),f+=D,T=u-h,F=1<<T;T+h<R&&(F-=y[T+h],!(F<=0));)T++,F<<=1;if(P+=1<<T,1===t&&P>852||2===t&&P>592)return 1;c=L&C,A[c]=I<<24|T<<16|f-i|0}}return 0!==L&&(A[f+L]=u-h<<24|64<<16|0),s.bits=I,0};const{Z_FINISH:SA,Z_BLOCK:dA,Z_TREES:UA,Z_OK:GA,Z_STREAM_END:mA,Z_NEED_DICT:bA,Z_STREAM_ERROR:pA,Z_DATA_ERROR:wA,Z_MEM_ERROR:HA,Z_BUF_ERROR:KA,Z_DEFLATED:gA}=Yr,VA=16180,XA=16190,JA=16191,vA=16192,ZA=16194,xA=16199,kA=16200,WA=16206,QA=16209,jA=t=>(t>>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24);function YA(){this.strm=null,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 zA=t=>{if(!t)return 1;const e=t.state;return!e||e.strm!==t||e.mode<VA||e.mode>16211?1:0},qA=t=>{if(zA(t))return pA;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=VA,e.last=0,e.havedict=0,e.flags=-1,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,GA},$A=t=>{if(zA(t))return pA;const e=t.state;return e.wsize=0,e.whave=0,e.wnext=0,qA(t)},ti=(t,e)=>{let r;if(zA(t))return pA;const n=t.state;return e<0?(r=0,e=-e):(r=5+(e>>4),e<48&&(e&=15)),e&&(e<8||e>15)?pA:(null!==n.window&&n.wbits!==e&&(n.window=null),n.wrap=r,n.wbits=e,$A(t))},ei=(t,e)=>{if(!t)return pA;const r=new YA;t.state=r,r.strm=t,r.window=null,r.mode=VA;const n=ti(t,e);return n!==GA&&(t.state=null),n};let ri,ni,Ai=!0;const ii=t=>{if(Ai){ri=new Int32Array(512),ni=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(NA(1,t.lens,0,288,ri,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;NA(2,t.lens,0,32,ni,0,t.work,{bits:5}),Ai=!1}t.lencode=ri,t.lenbits=9,t.distcode=ni,t.distbits=5},oi=(t,e,r,n)=>{let A;const i=t.state;return null===i.window&&(i.wsize=1<<i.wbits,i.wnext=0,i.whave=0,i.window=new Uint8Array(i.wsize)),n>=i.wsize?(i.window.set(e.subarray(r-i.wsize,r),0),i.wnext=0,i.whave=i.wsize):(A=i.wsize-i.wnext,A>n&&(A=n),i.window.set(e.subarray(r-n,r-n+A),i.wnext),(n-=A)?(i.window.set(e.subarray(r-n,r),0),i.wnext=n,i.whave=i.wsize):(i.wnext+=A,i.wnext===i.wsize&&(i.wnext=0),i.whave<i.wsize&&(i.whave+=A))),0};var si=(t,e)=>{let r,n,A,i,o,s,a,B,E,c,C,f,l,u,_,D,R,I,T,h,F,P,L=0;const O=new Uint8Array(4);let y,M;const N=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(zA(t)||!t.output||!t.input&&0!==t.avail_in)return pA;r=t.state,r.mode===JA&&(r.mode=vA),o=t.next_out,A=t.output,a=t.avail_out,i=t.next_in,n=t.input,s=t.avail_in,B=r.hold,E=r.bits,c=s,C=a,P=GA;t:for(;;)switch(r.mode){case VA:if(0===r.wrap){r.mode=vA;break}for(;E<16;){if(0===s)break t;s--,B+=n[i++]<<E,E+=8}if(2&r.wrap&&35615===B){0===r.wbits&&(r.wbits=15),r.check=0,O[0]=255&B,O[1]=B>>>8&255,r.check=Qr(r.check,O,2,0),B=0,E=0,r.mode=16181;break}if(r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&B)<<8)+(B>>8))%31){t.msg="incorrect header check",r.mode=QA;break}if((15&B)!==gA){t.msg="unknown compression method",r.mode=QA;break}if(B>>>=4,E-=4,F=8+(15&B),0===r.wbits&&(r.wbits=F),F>15||F>r.wbits){t.msg="invalid window size",r.mode=QA;break}r.dmax=1<<r.wbits,r.flags=0,t.adler=r.check=1,r.mode=512&B?16189:JA,B=0,E=0;break;case 16181:for(;E<16;){if(0===s)break t;s--,B+=n[i++]<<E,E+=8}if(r.flags=B,(255&r.flags)!==gA){t.msg="unknown compression method",r.mode=QA;break}if(57344&r.flags){t.msg="unknown header flags set",r.mode=QA;break}r.head&&(r.head.text=B>>8&1),512&r.flags&&4&r.wrap&&(O[0]=255&B,O[1]=B>>>8&255,r.check=Qr(r.check,O,2,0)),B=0,E=0,r.mode=16182;case 16182:for(;E<32;){if(0===s)break t;s--,B+=n[i++]<<E,E+=8}r.head&&(r.head.time=B),512&r.flags&&4&r.wrap&&(O[0]=255&B,O[1]=B>>>8&255,O[2]=B>>>16&255,O[3]=B>>>24&255,r.check=Qr(r.check,O,4,0)),B=0,E=0,r.mode=16183;case 16183:for(;E<16;){if(0===s)break t;s--,B+=n[i++]<<E,E+=8}r.head&&(r.head.xflags=255&B,r.head.os=B>>8),512&r.flags&&4&r.wrap&&(O[0]=255&B,O[1]=B>>>8&255,r.check=Qr(r.check,O,2,0)),B=0,E=0,r.mode=16184;case 16184:if(1024&r.flags){for(;E<16;){if(0===s)break t;s--,B+=n[i++]<<E,E+=8}r.length=B,r.head&&(r.head.extra_len=B),512&r.flags&&4&r.wrap&&(O[0]=255&B,O[1]=B>>>8&255,r.check=Qr(r.check,O,2,0)),B=0,E=0}else r.head&&(r.head.extra=null);r.mode=16185;case 16185:if(1024&r.flags&&(f=r.length,f>s&&(f=s),f&&(r.head&&(F=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Uint8Array(r.head.extra_len)),r.head.extra.set(n.subarray(i,i+f),F)),512&r.flags&&4&r.wrap&&(r.check=Qr(r.check,n,f,i)),s-=f,i+=f,r.length-=f),r.length))break t;r.length=0,r.mode=16186;case 16186:if(2048&r.flags){if(0===s)break t;f=0;do{F=n[i+f++],r.head&&F&&r.length<65536&&(r.head.name+=String.fromCharCode(F))}while(F&&f<s);if(512&r.flags&&4&r.wrap&&(r.check=Qr(r.check,n,f,i)),s-=f,i+=f,F)break t}else r.head&&(r.head.name=null);r.length=0,r.mode=16187;case 16187:if(4096&r.flags){if(0===s)break t;f=0;do{F=n[i+f++],r.head&&F&&r.length<65536&&(r.head.comment+=String.fromCharCode(F))}while(F&&f<s);if(512&r.flags&&4&r.wrap&&(r.check=Qr(r.check,n,f,i)),s-=f,i+=f,F)break t}else r.head&&(r.head.comment=null);r.mode=16188;case 16188:if(512&r.flags){for(;E<16;){if(0===s)break t;s--,B+=n[i++]<<E,E+=8}if(4&r.wrap&&B!==(65535&r.check)){t.msg="header crc mismatch",r.mode=QA;break}B=0,E=0}r.head&&(r.head.hcrc=r.flags>>9&1,r.head.done=!0),t.adler=r.check=0,r.mode=JA;break;case 16189:for(;E<32;){if(0===s)break t;s--,B+=n[i++]<<E,E+=8}t.adler=r.check=jA(B),B=0,E=0,r.mode=XA;case XA:if(0===r.havedict)return t.next_out=o,t.avail_out=a,t.next_in=i,t.avail_in=s,r.hold=B,r.bits=E,bA;t.adler=r.check=1,r.mode=JA;case JA:if(e===dA||e===UA)break t;case vA:if(r.last){B>>>=7&E,E-=7&E,r.mode=WA;break}for(;E<3;){if(0===s)break t;s--,B+=n[i++]<<E,E+=8}switch(r.last=1&B,B>>>=1,E-=1,3&B){case 0:r.mode=16193;break;case 1:if(ii(r),r.mode=xA,e===UA){B>>>=2,E-=2;break t}break;case 2:r.mode=16196;break;case 3:t.msg="invalid block type",r.mode=QA}B>>>=2,E-=2;break;case 16193:for(B>>>=7&E,E-=7&E;E<32;){if(0===s)break t;s--,B+=n[i++]<<E,E+=8}if((65535&B)!=(B>>>16^65535)){t.msg="invalid stored block lengths",r.mode=QA;break}if(r.length=65535&B,B=0,E=0,r.mode=ZA,e===UA)break t;case ZA:r.mode=16195;case 16195:if(f=r.length,f){if(f>s&&(f=s),f>a&&(f=a),0===f)break t;A.set(n.subarray(i,i+f),o),s-=f,i+=f,a-=f,o+=f,r.length-=f;break}r.mode=JA;break;case 16196:for(;E<14;){if(0===s)break t;s--,B+=n[i++]<<E,E+=8}if(r.nlen=257+(31&B),B>>>=5,E-=5,r.ndist=1+(31&B),B>>>=5,E-=5,r.ncode=4+(15&B),B>>>=4,E-=4,r.nlen>286||r.ndist>30){t.msg="too many length or distance symbols",r.mode=QA;break}r.have=0,r.mode=16197;case 16197:for(;r.have<r.ncode;){for(;E<3;){if(0===s)break t;s--,B+=n[i++]<<E,E+=8}r.lens[N[r.have++]]=7&B,B>>>=3,E-=3}for(;r.have<19;)r.lens[N[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,y={bits:r.lenbits},P=NA(0,r.lens,0,19,r.lencode,0,r.work,y),r.lenbits=y.bits,P){t.msg="invalid code lengths set",r.mode=QA;break}r.have=0,r.mode=16198;case 16198:for(;r.have<r.nlen+r.ndist;){for(;L=r.lencode[B&(1<<r.lenbits)-1],_=L>>>24,D=L>>>16&255,R=65535&L,!(_<=E);){if(0===s)break t;s--,B+=n[i++]<<E,E+=8}if(R<16)B>>>=_,E-=_,r.lens[r.have++]=R;else{if(16===R){for(M=_+2;E<M;){if(0===s)break t;s--,B+=n[i++]<<E,E+=8}if(B>>>=_,E-=_,0===r.have){t.msg="invalid bit length repeat",r.mode=QA;break}F=r.lens[r.have-1],f=3+(3&B),B>>>=2,E-=2}else if(17===R){for(M=_+3;E<M;){if(0===s)break t;s--,B+=n[i++]<<E,E+=8}B>>>=_,E-=_,F=0,f=3+(7&B),B>>>=3,E-=3}else{for(M=_+7;E<M;){if(0===s)break t;s--,B+=n[i++]<<E,E+=8}B>>>=_,E-=_,F=0,f=11+(127&B),B>>>=7,E-=7}if(r.have+f>r.nlen+r.ndist){t.msg="invalid bit length repeat",r.mode=QA;break}for(;f--;)r.lens[r.have++]=F}}if(r.mode===QA)break;if(0===r.lens[256]){t.msg="invalid code -- missing end-of-block",r.mode=QA;break}if(r.lenbits=9,y={bits:r.lenbits},P=NA(1,r.lens,0,r.nlen,r.lencode,0,r.work,y),r.lenbits=y.bits,P){t.msg="invalid literal/lengths set",r.mode=QA;break}if(r.distbits=6,r.distcode=r.distdyn,y={bits:r.distbits},P=NA(2,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,y),r.distbits=y.bits,P){t.msg="invalid distances set",r.mode=QA;break}if(r.mode=xA,e===UA)break t;case xA:r.mode=kA;case kA:if(s>=6&&a>=258){t.next_out=o,t.avail_out=a,t.next_in=i,t.avail_in=s,r.hold=B,r.bits=E,FA(t,C),o=t.next_out,A=t.output,a=t.avail_out,i=t.next_in,n=t.input,s=t.avail_in,B=r.hold,E=r.bits,r.mode===JA&&(r.back=-1);break}for(r.back=0;L=r.lencode[B&(1<<r.lenbits)-1],_=L>>>24,D=L>>>16&255,R=65535&L,!(_<=E);){if(0===s)break t;s--,B+=n[i++]<<E,E+=8}if(D&&0==(240&D)){for(I=_,T=D,h=R;L=r.lencode[h+((B&(1<<I+T)-1)>>I)],_=L>>>24,D=L>>>16&255,R=65535&L,!(I+_<=E);){if(0===s)break t;s--,B+=n[i++]<<E,E+=8}B>>>=I,E-=I,r.back+=I}if(B>>>=_,E-=_,r.back+=_,r.length=R,0===D){r.mode=16205;break}if(32&D){r.back=-1,r.mode=JA;break}if(64&D){t.msg="invalid literal/length code",r.mode=QA;break}r.extra=15&D,r.mode=16201;case 16201:if(r.extra){for(M=r.extra;E<M;){if(0===s)break t;s--,B+=n[i++]<<E,E+=8}r.length+=B&(1<<r.extra)-1,B>>>=r.extra,E-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=16202;case 16202:for(;L=r.distcode[B&(1<<r.distbits)-1],_=L>>>24,D=L>>>16&255,R=65535&L,!(_<=E);){if(0===s)break t;s--,B+=n[i++]<<E,E+=8}if(0==(240&D)){for(I=_,T=D,h=R;L=r.distcode[h+((B&(1<<I+T)-1)>>I)],_=L>>>24,D=L>>>16&255,R=65535&L,!(I+_<=E);){if(0===s)break t;s--,B+=n[i++]<<E,E+=8}B>>>=I,E-=I,r.back+=I}if(B>>>=_,E-=_,r.back+=_,64&D){t.msg="invalid distance code",r.mode=QA;break}r.offset=R,r.extra=15&D,r.mode=16203;case 16203:if(r.extra){for(M=r.extra;E<M;){if(0===s)break t;s--,B+=n[i++]<<E,E+=8}r.offset+=B&(1<<r.extra)-1,B>>>=r.extra,E-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){t.msg="invalid distance too far back",r.mode=QA;break}r.mode=16204;case 16204:if(0===a)break t;if(f=C-a,r.offset>f){if(f=r.offset-f,f>r.whave&&r.sane){t.msg="invalid distance too far back",r.mode=QA;break}f>r.wnext?(f-=r.wnext,l=r.wsize-f):l=r.wnext-f,f>r.length&&(f=r.length),u=r.window}else u=A,l=o-r.offset,f=r.length;f>a&&(f=a),a-=f,r.length-=f;do{A[o++]=u[l++]}while(--f);0===r.length&&(r.mode=kA);break;case 16205:if(0===a)break t;A[o++]=r.length,a--,r.mode=kA;break;case WA:if(r.wrap){for(;E<32;){if(0===s)break t;s--,B|=n[i++]<<E,E+=8}if(C-=a,t.total_out+=C,r.total+=C,4&r.wrap&&C&&(t.adler=r.check=r.flags?Qr(r.check,A,C,o-C):kr(r.check,A,C,o-C)),C=a,4&r.wrap&&(r.flags?B:jA(B))!==r.check){t.msg="incorrect data check",r.mode=QA;break}B=0,E=0}r.mode=16207;case 16207:if(r.wrap&&r.flags){for(;E<32;){if(0===s)break t;s--,B+=n[i++]<<E,E+=8}if(4&r.wrap&&B!==(4294967295&r.total)){t.msg="incorrect length check",r.mode=QA;break}B=0,E=0}r.mode=16208;case 16208:P=mA;break t;case QA:P=wA;break t;case 16210:return HA;default:return pA}return t.next_out=o,t.avail_out=a,t.next_in=i,t.avail_in=s,r.hold=B,r.bits=E,(r.wsize||C!==t.avail_out&&r.mode<QA&&(r.mode<WA||e!==SA))&&oi(t,t.output,t.next_out,C-t.avail_out),c-=t.avail_in,C-=t.avail_out,t.total_in+=c,t.total_out+=C,r.total+=C,4&r.wrap&&C&&(t.adler=r.check=r.flags?Qr(r.check,A,C,t.next_out-C):kr(r.check,A,C,t.next_out-C)),t.data_type=r.bits+(r.last?64:0)+(r.mode===JA?128:0)+(r.mode===xA||r.mode===ZA?256:0),(0===c&&0===C||e===SA)&&P===GA&&(P=KA),P},ai={inflateReset:$A,inflateReset2:ti,inflateResetKeep:qA,inflateInit:t=>ei(t,15),inflateInit2:ei,inflate:si,inflateEnd:t=>{if(zA(t))return pA;let e=t.state;return e.window&&(e.window=null),t.state=null,GA},inflateGetHeader:(t,e)=>{if(zA(t))return pA;const r=t.state;return 0==(2&r.wrap)?pA:(r.head=e,e.done=!1,GA)},inflateSetDictionary:(t,e)=>{const r=e.length;let n,A,i;return zA(t)?pA:(n=t.state,0!==n.wrap&&n.mode!==XA?pA:n.mode===XA&&(A=1,A=kr(A,e,r,0),A!==n.check)?wA:(i=oi(t,e,r,r),i?(n.mode=16210,HA):(n.havedict=1,GA)))},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 Ei=Object.prototype.toString,{Z_NO_FLUSH:ci,Z_FINISH:Ci,Z_OK:fi,Z_STREAM_END:li,Z_NEED_DICT:ui,Z_STREAM_ERROR:_i,Z_DATA_ERROR:Di,Z_MEM_ERROR:Ri}=Yr;function Ii(t){this.options=nA.assign({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 sA,this.strm.avail_out=0;let r=ai.inflateInit2(this.strm,e.windowBits);if(r!==fi)throw new Error(jr[r]);if(this.header=new Bi,ai.inflateGetHeader(this.strm,this.header),e.dictionary&&("string"==typeof e.dictionary?e.dictionary=oA.string2buf(e.dictionary):"[object ArrayBuffer]"===Ei.call(e.dictionary)&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(r=ai.inflateSetDictionary(this.strm,e.dictionary),r!==fi)))throw new Error(jr[r])}function Ti(t,e){const r=new Ii(e);if(r.push(t),r.err)throw r.msg||jr[r.err];return r.result}Ii.prototype.push=function(t,e){const r=this.strm,n=this.options.chunkSize,A=this.options.dictionary;let i,o,s;if(this.ended)return!1;for(o=e===~~e?e:!0===e?Ci:ci,"[object ArrayBuffer]"===Ei.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),i=ai.inflate(r,o),i===ui&&A&&(i=ai.inflateSetDictionary(r,A),i===fi?i=ai.inflate(r,o):i===Di&&(i=ui));r.avail_in>0&&i===li&&r.state.wrap>0&&0!==t[r.next_in];)ai.inflateReset(r),i=ai.inflate(r,o);switch(i){case _i:case Di:case ui:case Ri:return this.onEnd(i),this.ended=!0,!1}if(s=r.avail_out,r.next_out&&(0===r.avail_out||i===li))if("string"===this.options.to){let t=oA.utf8border(r.output,r.next_out),e=r.next_out-t,A=oA.buf2string(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(A)}else this.onData(r.output.length===r.next_out?r.output:r.output.subarray(0,r.next_out));if(i!==fi||0!==s){if(i===li)return i=ai.inflateEnd(this.strm),this.onEnd(i),this.ended=!0,!0;if(0===r.avail_in)break}}return!0},Ii.prototype.onData=function(t){this.chunks.push(t)},Ii.prototype.onEnd=function(t){t===fi&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=nA.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};var hi={Inflate:Ii,inflate:Ti,inflateRaw:function(t,e){return(e=e||{}).raw=!0,Ti(t,e)},ungzip:Ti,constants:Yr};const{Deflate:Fi,deflate:Pi,deflateRaw:Li,gzip:Oi}=TA,{Inflate:yi,inflate:Mi,inflateRaw:Ni,ungzip:Si}=hi;var di={Deflate:Fi,deflate:Pi,deflateRaw:Li,gzip:Oi,Inflate:yi,inflate:Mi,inflateRaw:Ni,ungzip:Si,constants:Yr},Ui={LUMINANCE_8:1,LUMINANCE_16:2,ALPHA:3,ALPHA_4_LUMINANCE_4:4,LUMINANCE_ALPHA:5,RGB_565:6,BGR565:7,RGB:10,BGR:11,ARGB:12,ABGR:13,BGRA:14,WEBP:25,RGBA:28,DXT1:17,DXT2:18,DXT3:19,DXT4:20,DXT5:21,CRN_DXT5:26},Gi=1,mi=2,bi=4;function pi(t,e,r,n){var A=t|e<<8,i=A>>11&31,o=A>>5&63,s=31&A;return r[n+0]=i<<3|i>>2,r[n+1]=o<<2|o>>4,r[n+2]=s<<3|s>>2,r[n+3]=255,A}var wi=new Uint8Array(16),Hi=new Uint8Array(16);function Ki(t,e,r,n){var A=0;0!=(n&(mi|bi))&&(A=8),function(t,e,r,n){for(var A=pi(e[r+0],e[r+1],wi,0),i=pi(e[r+2],e[r+3],wi,4),o=0;o<3;o++){var s=wi[o],a=wi[4+o];n&&A<=i?(wi[8+o]=(s+a)/2,wi[12+o]=0):(wi[8+o]=(2*s+a)/3,wi[12+o]=(s+2*a)/3)}for(wi[11]=255,wi[15]=n&&A<=i?0:255,o=0;o<4;++o){var B=e[r+4+o];Hi[4*o+0]=3&B,Hi[4*o+1]=B>>2&3,Hi[4*o+2]=B>>4&3,Hi[4*o+3]=B>>6&3}for(o=0;o<16;++o)for(var E=4*Hi[o],c=0;c<4;++c)t[4*o+c]=wi[E+c]}(t,e,r+A,0!=(n&Gi)),0!=(n&mi)?function(t,e,r){for(var n=0;n<8;++n){var A=bytes[r+n],i=15&A,o=240&A;t[8*n+3]=i|i<<4,t[8*n+7]=o|o>>4}}(t,0,r):0!=(n&bi)&&function(t,e,r){var n=e[r+0],A=e[r+1];if(wi[0]=n,wi[1]=A,n<=A){for(var i=1;i<5;++i)wi[1+i]=((5-i)*n+i*A)/5;wi[6]=0,wi[7]=255}else for(i=1;i<7;++i)wi[1+i]=((7-i)*n+i*A)/7;r+=2;var o=0;for(i=0;i<2;++i){for(var s=0,a=0;a<3;++a)s|=e[r++]<<8*a;for(a=0;a<8;++a){var B=s>>3*a&7;Hi[o++]=B}}for(i=0;i<16;++i)t[4*i+3]=wi[Hi[i]]}(t,e,r)}var gi=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 Vi=new Uint8Array(64);function Xi(t){}Xi.decode=function(t,e,r,n,A){if(null!=t&&null!=n&&0!=r&&0!=e){var i=0;(i=A>11||5===A?bi:32|Gi)&Gi&&32&i?function(t,e,r,n){for(var A=t,i=0,o=0,s=0,a=0,B=0,E=0,c=0,C=0,f=0,l=e/4,u=r/4,_=0;_<u;_++)for(var D=0;D<l;D++)s=4*((u-_)*l+D),gi[0]=n[s],gi[1]=n[s+1],a=31&gi[0],B=2016&gi[0],E=63488&gi[0],c=31&gi[1],C=2016&gi[1],f=63488&gi[1],gi[2]=5*a+3*c>>3|5*B+3*C>>3&2016|5*E+3*f>>3&63488,gi[3]=5*c+3*a>>3|5*C+3*B>>3&2016|5*f+3*E>>3&63488,i=n[s+2],A[o=4*_*e+4*D]=gi[3&i],A[o+1]=gi[i>>2&3],A[o+2]=gi[i>>4&3],A[o+3]=gi[i>>6&3],A[o+=e]=gi[i>>8&3],A[o+1]=gi[i>>10&3],A[o+2]=gi[i>>12&3],A[o+3]=gi[i>>14],i=n[s+3],A[o+=e]=gi[3&i],A[o+1]=gi[i>>2&3],A[o+2]=gi[i>>4&3],A[o+3]=gi[i>>6&3],A[o+=e]=gi[i>>8&3],A[o+1]=gi[i>>10&3],A[o+2]=gi[i>>12&3],A[o+3]=gi[i>>14]}(t,e,r,n):function(t,e,r,n,A,i){for(var o=0!=(A&Gi)?8:16,s=0,a=0;a<r;a+=4)for(var B=0;B<e;B+=4){Ki(Vi,n,s,A);for(var E=0,c=0;c<4;++c)for(var C=0;C<4;++C){var f=B+C,l=a+c;if(f<e&&l<r){var u=4*(e*(r-l)+f);if(i===Ui.ABGR||i===Ui.BGRA)t[u+2]=Vi[E++],t[u+1]=Vi[E++],t[u+0]=Vi[E++],t[u+3]=Vi[E++];else for(var _=0;_<4;++_)t[u++]=Vi[E++]}else E+=4}s+=o}}(t,e,r,n,i,A)}};var Ji=function(){var t=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]),e=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if("object"!=typeof WebAssembly)return{supported:!1};var r,n="B9h79tEBBBE8fV9gBB9gVUUUUUEU9gIUUUB9gEUEU9gIUUUEUIKQBEEEDDDILLLVE9wEEEVIEBEOWEUEC+Q/IEKR/LEdO9tw9t9vv95DBh9f9f939h79t9f9j9h229f9jT9vv7BB8a9tw79o9v9wT9f9kw9j9v9kw9WwvTw949C919m9mwvBEy9tw79o9v9wT9f9kw9j9v9kw69u9kw949C919m9mwvBDe9tw79o9v9wT9f9kw9j9v9kw69u9kw949Twg91w9u9jwBIl9tw79o9v9wT9f9kw9j9v9kws9p2Twv9P9jTBLk9tw79o9v9wT9f9kw9j9v9kws9p2Twv9R919hTBVl9tw79o9v9wT9f9kw9j9v9kws9p2Twvt949wBOL79iv9rBRQ+x8yQDBK/qMEZU8jJJJJBCJ/EB9rGV8kJJJJBC9+HODNADCEFAL0MBCUHOAIrBBC+gE9HMBAVAIALFGRAD9rADZ1JJJBHWCJ/ABAD9uC/wfBgGOCJDAOCJD6eHdAICEFHLCBHQDNINAQAE9PMEAdAEAQ9rAQAdFAE6eHKDNDNADtMBAKCSFGOC9wgHXAOCL4CIFCD4HMAWCJDFHpCBHSALHZINDNARAZ9rAM9PMBCBHLXIKAZAMFHLDNAXtMBCBHhCBHIINDNARAL9rCk9PMBCBHLXVKAWCJ/CBFAIFHODNDNDNDNDNAZAICO4FrBBAhCOg4CIgpLBEDIBKAO9CB83IBAOCWF9CB83IBXIKAOALrBLALrBBGoCO4GaAaCIsGae86BBAOCEFALCLFAaFGarBBAoCL4CIgGcAcCIsGce86BBAOCDFAaAcFGarBBAoCD4CIgGcAcCIsGce86BBAOCIFAaAcFGarBBAoCIgGoAoCIsGoe86BBAOCLFAaAoFGarBBALrBEGoCO4GcAcCIsGce86BBAOCVFAaAcFGarBBAoCL4CIgGcAcCIsGce86BBAOCOFAaAcFGarBBAoCD4CIgGcAcCIsGce86BBAOCRFAaAcFGarBBAoCIgGoAoCIsGoe86BBAOCWFAaAoFGarBBALrBDGoCO4GcAcCIsGce86BBAOCdFAaAcFGarBBAoCL4CIgGcAcCIsGce86BBAOCQFAaAcFGarBBAoCD4CIgGcAcCIsGce86BBAOCKFAaAcFGarBBAoCIgGoAoCIsGoe86BBAOCXFAaAoFGorBBALrBIGLCO4GaAaCIsGae86BBAOCMFAoAaFGorBBALCL4CIgGaAaCIsGae86BBAOCpFAoAaFGorBBALCD4CIgGaAaCIsGae86BBAOCSFAoAaFGOrBBALCIgGLALCIsGLe86BBAOALFHLXDKAOALrBWALrBBGoCL4GaAaCSsGae86BBAOCEFALCWFAaFGarBBAoCSgGoAoCSsGoe86BBAOCDFAaAoFGorBBALrBEGaCL4GcAcCSsGce86BBAOCIFAoAcFGorBBAaCSgGaAaCSsGae86BBAOCLFAoAaFGorBBALrBDGaCL4GcAcCSsGce86BBAOCVFAoAcFGorBBAaCSgGaAaCSsGae86BBAOCOFAoAaFGorBBALrBIGaCL4GcAcCSsGce86BBAOCRFAoAcFGorBBAaCSgGaAaCSsGae86BBAOCWFAoAaFGorBBALrBLGaCL4GcAcCSsGce86BBAOCdFAoAcFGorBBAaCSgGaAaCSsGae86BBAOCQFAoAaFGorBBALrBVGaCL4GcAcCSsGce86BBAOCKFAoAcFGorBBAaCSgGaAaCSsGae86BBAOCXFAoAaFGorBBALrBOGaCL4GcAcCSsGce86BBAOCMFAoAcFGorBBAaCSgGaAaCSsGae86BBAOCpFAoAaFGorBBALrBRGLCL4GaAaCSsGae86BBAOCSFAoAaFGOrBBALCSgGLALCSsGLe86BBAOALFHLXEKAOAL8pBB83BBAOCWFALCWF8pBB83BBALCZFHLKAhCDFHhAICZFGIAX6MBKKDNALMBCBHLXIKDNAKtMBAWASFrBBHhCBHOApHIINAIAWCJ/CBFAOFrBBGZCE4CBAZCEg9r7AhFGh86BBAIADFHIAOCEFGOAK9HMBKKApCEFHpALHZASCEFGSAD9HMBKKABAQAD2FAWCJDFAKAD2Z1JJJB8aAWAWCJDFAKCUFAD2FADZ1JJJB8aKAKCBALeAQFHQALMBKC9+HOXEKCBC99ARAL9rADCAADCA0eseHOKAVCJ/EBF8kJJJJBAOK+OoEZU8jJJJJBC/AE9rGV8kJJJJBC9+HODNAECI9uGRChFAL0MBCUHOAIrBBGWC/wEgC/gE9HMBAWCSgGdCE0MBAVC/ABFCfECJEZ+JJJJB8aAVCuF9CU83IBAVC8wF9CU83IBAVCYF9CU83IBAVCAF9CU83IBAVCkF9CU83IBAVCZF9CU83IBAV9CU83IWAV9CU83IBAIALFC9wFHQAICEFGWARFHKDNAEtMBCMCSAdCEseHXABHICBHdCBHMCBHpCBHLCBHOINDNAKAQ9NMBC9+HOXIKDNDNAWrBBGRC/vE0MBAVC/ABFARCL4CU7AOFCSgCITFGSYDLHZASYDBHhDNARCSgGSAX9PMBAVARCU7ALFCSgCDTFYDBAdASeHRAStHSDNDNADCD9HMBABAh87EBABCLFAR87EBABCDFAZ87EBXEKAIAhbDBAICWFARbDBAICLFAZbDBKAdASFHdAVC/ABFAOCITFGoARbDBAoAZbDLAVALCDTFARbDBAVC/ABFAOCEFCSgGOCITFGZAhbDBAZARbDLALASFHLAOCEFHOXDKDNDNASCSsMBAMASFASC987FCEFHMXEKAK8sBBGSCfEgHRDNDNASCU9MMBAKCEFHKXEKAK8sBEGSCfBgCRTARCfBgvHRDNASCU9MMBAKCDFHKXEKAK8sBDGSCfBgCpTARvHRDNASCU9MMBAKCIFHKXEKAK8sBIGSCfBgCxTARvHRDNASCU9MMBAKCLFHKXEKAKrBLC3TARvHRAKCVFHKKARCE4CBARCEg9r7AMFHMKDNDNADCD9HMBABAh87EBABCLFAM87EBABCDFAZ87EBXEKAIAhbDBAICWFAMbDBAICLFAZbDBKAVC/ABFAOCITFGRAMbDBARAZbDLAVALCDTFAMbDBAVC/ABFAOCEFCSgGOCITFGRAhbDBARAMbDLALCEFHLAOCEFHOXEKDNARCPE0MBAVALAQARCSgFrBBGSCL4GZ9rCSgCDTFYDBAdCEFGhAZeHRAVALAS9rCSgCDTFYDBAhAZtGoFGhASCSgGZeHSAZtHZDNDNADCD9HMBABAd87EBABCLFAS87EBABCDFAR87EBXEKAIAdbDBAICWFASbDBAICLFARbDBKAVALCDTFAdbDBAVC/ABFAOCITFGaARbDBAaAdbDLAVALCEFGLCSgCDTFARbDBAVC/ABFAOCEFCSgCITFGaASbDBAaARbDLAVALAoFCSgGLCDTFASbDBAVC/ABFAOCDFCSgGOCITFGRAdbDBARASbDLAOCEFHOALAZFHLAhAZFHdXEKAdCBAKrBBGaeGZARC/+EsGcFHRAaCSgHhDNDNAaCL4GoMBARCEFHSXEKARHSAVALAo9rCSgCDTFYDBHRKDNDNAhMBASCEFHdXEKASHdAVALAa9rCSgCDTFYDBHSKDNDNActMBAKCEFHaXEKAK8sBEGaCfEgHZDNDNAaCU9MMBAKCDFHaXEKAK8sBDGaCfBgCRTAZCfBgvHZDNAaCU9MMBAKCIFHaXEKAK8sBIGaCfBgCpTAZvHZDNAaCU9MMBAKCLFHaXEKAK8sBLGaCfBgCxTAZvHZDNAaCU9MMBAKCVFHaXEKAKCOFHaAKrBVC3TAZvHZKAZCE4CBAZCEg9r7AMFGMHZKDNDNAoCSsMBAaHcXEKAa8sBBGKCfEgHRDNDNAKCU9MMBAaCEFHcXEKAa8sBEGKCfBgCRTARCfBgvHRDNAKCU9MMBAaCDFHcXEKAa8sBDGKCfBgCpTARvHRDNAKCU9MMBAaCIFHcXEKAa8sBIGKCfBgCxTARvHRDNAKCU9MMBAaCLFHcXEKAaCVFHcAarBLC3TARvHRKARCE4CBARCEg9r7AMFGMHRKDNDNAhCSsMBAcHKXEKAc8sBBGKCfEgHSDNDNAKCU9MMBAcCEFHKXEKAc8sBEGKCfBgCRTASCfBgvHSDNAKCU9MMBAcCDFHKXEKAc8sBDGKCfBgCpTASvHSDNAKCU9MMBAcCIFHKXEKAc8sBIGKCfBgCxTASvHSDNAKCU9MMBAcCLFHKXEKAcCVFHKAcrBLC3TASvHSKASCE4CBASCEg9r7AMFGMHSKDNDNADCD9HMBABAZ87EBABCLFAS87EBABCDFAR87EBXEKAIAZbDBAICWFASbDBAICLFARbDBKAVC/ABFAOCITFGaARbDBAaAZbDLAVALCDTFAZbDBAVC/ABFAOCEFCSgCITFGaASbDBAaARbDLAVALCEFGLCSgCDTFARbDBAVC/ABFAOCDFCSgCITFGRAZbDBARASbDLAVALAotAoCSsvFGLCSgCDTFASbDBALAhtAhCSsvFHLAOCIFHOKAWCEFHWABCOFHBAICXFHIAOCSgHOALCSgHLApCIFGpAE6MBKKCBC99AKAQseHOKAVC/AEF8kJJJJBAOK/tLEDU8jJJJJBCZ9rHVC9+HODNAECVFAL0MBCUHOAIrBBC/+EgC/QE9HMBAV9CB83IWAICEFHOAIALFC98FHIDNAEtMBDNADCDsMBINDNAOAI6MBC9+SKAO8sBBGDCfEgHLDNDNADCU9MMBAOCEFHOXEKAO8sBEGDCfBgCRTALCfBgvHLDNADCU9MMBAOCDFHOXEKAO8sBDGDCfBgCpTALvHLDNADCU9MMBAOCIFHOXEKAO8sBIGDCfBgCxTALvHLDNADCU9MMBAOCLFHOXEKAOrBLC3TALvHLAOCVFHOKAVCWFALCEgCDTvGDALCD4CBALCE4CEg9r7ADYDBFGLbDBABALbDBABCLFHBAECUFGEMBXDKKINDNAOAI6MBC9+SKAO8sBBGDCfEgHLDNDNADCU9MMBAOCEFHOXEKAO8sBEGDCfBgCRTALCfBgvHLDNADCU9MMBAOCDFHOXEKAO8sBDGDCfBgCpTALvHLDNADCU9MMBAOCIFHOXEKAO8sBIGDCfBgCxTALvHLDNADCU9MMBAOCLFHOXEKAOrBLC3TALvHLAOCVFHOKABALCD4CBALCE4CEg9r7AVCWFALCEgCDTvGLYDBFGD87EBALADbDBABCDFHBAECUFGEMBKKCBC99AOAIseHOKAOK+lVOEUE99DUD99EUD99DNDNADCL9HMBAEtMEINDNDNjBBBzjBBB+/ABCDFGD8sBB+yAB8sBBGI+yGL+L+TABCEFGV8sBBGO+yGR+L+TGWjBBBB9gGdeAWjBB/+9CAWAWnjBBBBAWAdeGQAQ+MGKAICU9KeALmGLALnAQAKAOCU9KeARmGQAQnmm+R+VGRnmGW+LjBBB9P9dtMBAW+oHIXEKCJJJJ94HIKADAI86BBDNDNjBBBzjBBB+/AQjBBBB9geAQARnmGW+LjBBB9P9dtMBAW+oHDXEKCJJJJ94HDKAVAD86BBDNDNjBBBzjBBB+/ALjBBBB9geALARnmGW+LjBBB9P9dtMBAW+oHDXEKCJJJJ94HDKABAD86BBABCLFHBAECUFGEMBXDKKAEtMBINDNDNjBBBzjBBB+/ABCLFGD8uEB+yAB8uEBGI+yGL+L+TABCDFGV8uEBGO+yGR+L+TGWjBBBB9gGdeAWjB/+fsAWAWnjBBBBAWAdeGQAQ+MGKAICU9KeALmGLALnAQAKAOCU9KeARmGQAQnmm+R+VGRnmGW+LjBBB9P9dtMBAW+oHIXEKCJJJJ94HIKADAI87EBDNDNjBBBzjBBB+/AQjBBBB9geAQARnmGW+LjBBB9P9dtMBAW+oHDXEKCJJJJ94HDKAVAD87EBDNDNjBBBzjBBB+/ALjBBBB9geALARnmGW+LjBBB9P9dtMBAW+oHDXEKCJJJJ94HDKABAD87EBABCWFHBAECUFGEMBKKK/SILIUI99IUE99DNAEtMBCBHIABHLINDNDNj/zL81zALCOF8uEBGVCIv+y+VGOAL8uEB+ynGRjB/+fsnjBBBzjBBB+/ARjBBBB9gemGW+LjBBB9P9dtMBAW+oHdXEKCJJJJ94HdKALCLF8uEBHQALCDF8uEBHKABAVCEFCIgAIvCETFAd87EBDNDNAOAK+ynGWjB/+fsnjBBBzjBBB+/AWjBBBB9gemGX+LjBBB9P9dtMBAX+oHKXEKCJJJJ94HKKABAVCDFCIgAIvCETFAK87EBDNDNAOAQ+ynGOjB/+fsnjBBBzjBBB+/AOjBBBB9gemGX+LjBBB9P9dtMBAX+oHQXEKCJJJJ94HQKABAVCUFCIgAIvCETFAQ87EBDNDNjBBJzARARn+TAWAWn+TAOAOn+TGRjBBBBARjBBBB9ge+RjB/+fsnjBBBzmGR+LjBBB9P9dtMBAR+oHQXEKCJJJJ94HQKABAVCIgAIvCETFAQ87EBALCWFHLAICLFHIAECUFGEMBKKK6BDNADCD4AE2GEtMBINABABYDBGDCWTCW91+yADCk91ClTCJJJ/8IF++nuDBABCLFHBAECUFGEMBKKK9TEIUCBCBYDJ1JJBGEABCIFC98gFGBbDJ1JJBDNDNABzBCZTGD9NMBCUHIABAD9rCffIFCZ4NBCUsMEKAEHIKAIK/lEEEUDNDNAEABvCIgtMBABHIXEKDNDNADCZ9PMBABHIXEKABHIINAIAEYDBbDBAICLFAECLFYDBbDBAICWFAECWFYDBbDBAICXFAECXFYDBbDBAICZFHIAECZFHEADC9wFGDCS0MBKKADCL6MBINAIAEYDBbDBAECLFHEAICLFHIADC98FGDCI0MBKKDNADtMBINAIAErBB86BBAICEFHIAECEFHEADCUFGDMBKKABK/AEEDUDNDNABCIgtMBABHIXEKAECfEgC+B+C+EW2HLDNDNADCZ9PMBABHIXEKABHIINAIALbDBAICXFALbDBAICWFALbDBAICLFALbDBAICZFHIADC9wFGDCS0MBKKADCL6MBINAIALbDBAICLFHIADC98FGDCI0MBKKDNADtMBINAIAE86BBAICEFHIADCUFGDMBKKABKKKEBCJWKLZ9kBB";WebAssembly.validate(t)&&(n="B9h79tEBBBE5V9gBB9gVUUUUUEU9gIUUUB9gDUUB9gEUEUIMXBBEBEEDIDIDLLVE9wEEEVIEBEOWEUEC+Q/aEKR/LEdO9tw9t9vv95DBh9f9f939h79t9f9j9h229f9jT9vv7BB8a9tw79o9v9wT9f9kw9j9v9kw9WwvTw949C919m9mwvBDy9tw79o9v9wT9f9kw9j9v9kw69u9kw949C919m9mwvBLe9tw79o9v9wT9f9kw9j9v9kw69u9kw949Twg91w9u9jwBVl9tw79o9v9wT9f9kw9j9v9kws9p2Twv9P9jTBOk9tw79o9v9wT9f9kw9j9v9kws9p2Twv9R919hTBWl9tw79o9v9wT9f9kw9j9v9kws9p2Twvt949wBQL79iv9rBKQ/j6XLBZIK9+EVU8jJJJJBCZ9rHBCBHEINCBHDCBHIINABCWFADFAICJUAEAD4CEgGLe86BBAIALFHIADCEFGDCW9HMBKAEC+Q+YJJBFAI86BBAECITC+Q1JJBFAB8pIW83IBAECEFGECJD9HMBKK1HLSUD97EUO978jJJJJBCJ/KB9rGV8kJJJJBC9+HODNADCEFAL0MBCUHOAIrBBC+gE9HMBAVAIALFGRAD9rAD/8QBBCJ/ABAD9uC/wfBgGOCJDAOCJD6eHWAICEFHOCBHdDNINAdAE9PMEAWAEAd9rAdAWFAE6eHQDNDNADtMBAQCSFGLC9wgGKCI2HXAKCETHMALCL4CIFCD4HpCBHSINAOHZCBHhDNINDNARAZ9rAp9PMBCBHOXVKAVCJ/CBFAhAK2FHoAZApFHOCBHIDNAKC/AB6MBARAO9rC/gB6MBCBHLINAoALFHIDNDNDNDNDNAZALCO4FrBBGaCIgpLBEDIBKAICBPhPKLBXIKAIAOPBBLAOPBBBGcCLP+MEAcPMBZEhDoIaLcVxOqRlGcCDP+MEAcPMBZEhDoIaLcVxOqRlC+D+G+MkPhP9OGxCIPSP8jGcP5B9CJf/8/4/w/g/AB9+9Cu1+nGqCITC+Q1JJBFPBIBAqC+Q+YJJBFPBBBGlAlPMBBBBBBBBBBBBBBBBAcP5E9CJf/8/4/w/g/AB9+9Cu1+nGqCITC+Q1JJBFPBIBP9uPMBEDILVORZhoacxqlPpAxAcP9SPKLBAOCLFAlPqBFAqC+Q+YJJBFrBBFHOXDKAIAOPBBWAOPBBBGcCLP+MEAcPMBZEhDoIaLcVxOqRlC+P+e+8/4BPhP9OGxCSPSP8jGcP5B9CJf/8/4/w/g/AB9+9Cu1+nGqCITC+Q1JJBFPBIBAqC+Q+YJJBFPBBBGlAlPMBBBBBBBBBBBBBBBBAcP5E9CJf/8/4/w/g/AB9+9Cu1+nGqCITC+Q1JJBFPBIBP9uPMBEDILVORZhoacxqlPpAxAcP9SPKLBAOCWFAlPqBFAqC+Q+YJJBFrBBFHOXEKAIAOPBBBPKLBAOCZFHOKDNDNDNDNDNAaCD4CIgpLBEDIBKAICBPhPKLZXIKAIAOPBBLAOPBBBGcCLP+MEAcPMBZEhDoIaLcVxOqRlGcCDP+MEAcPMBZEhDoIaLcVxOqRlC+D+G+MkPhP9OGxCIPSP8jGcP5B9CJf/8/4/w/g/AB9+9Cu1+nGqCITC+Q1JJBFPBIBAqC+Q+YJJBFPBBBGlAlPMBBBBBBBBBBBBBBBBAcP5E9CJf/8/4/w/g/AB9+9Cu1+nGqCITC+Q1JJBFPBIBP9uPMBEDILVORZhoacxqlPpAxAcP9SPKLZAOCLFAlPqBFAqC+Q+YJJBFrBBFHOXDKAIAOPBBWAOPBBBGcCLP+MEAcPMBZEhDoIaLcVxOqRlC+P+e+8/4BPhP9OGxCSPSP8jGcP5B9CJf/8/4/w/g/AB9+9Cu1+nGqCITC+Q1JJBFPBIBAqC+Q+YJJBFPBBBGlAlPMBBBBBBBBBBBBBBBBAcP5E9CJf/8/4/w/g/AB9+9Cu1+nGqCITC+Q1JJBFPBIBP9uPMBEDILVORZhoacxqlPpAxAcP9SPKLZAOCWFAlPqBFAqC+Q+YJJBFrBBFHOXEKAIAOPBBBPKLZAOCZFHOKDNDNDNDNDNAaCL4CIgpLBEDIBKAICBPhPKLAXIKAIAOPBBLAOPBBBGcCLP+MEAcPMBZEhDoIaLcVxOqRlGcCDP+MEAcPMBZEhDoIaLcVxOqRlC+D+G+MkPhP9OGxCIPSP8jGcP5B9CJf/8/4/w/g/AB9+9Cu1+nGqCITC+Q1JJBFPBIBAqC+Q+YJJBFPBBBGlAlPMBBBBBBBBBBBBBBBBAcP5E9CJf/8/4/w/g/AB9+9Cu1+nGqCITC+Q1JJBFPBIBP9uPMBEDILVORZhoacxqlPpAxAcP9SPKLAAOCLFAlPqBFAqC+Q+YJJBFrBBFHOXDKAIAOPBBWAOPBBBGcCLP+MEAcPMBZEhDoIaLcVxOqRlC+P+e+8/4BPhP9OGxCSPSP8jGcP5B9CJf/8/4/w/g/AB9+9Cu1+nGqCITC+Q1JJBFPBIBAqC+Q+YJJBFPBBBGlAlPMBBBBBBBBBBBBBBBBAcP5E9CJf/8/4/w/g/AB9+9Cu1+nGqCITC+Q1JJBFPBIBP9uPMBEDILVORZhoacxqlPpAxAcP9SPKLAAOCWFAlPqBFAqC+Q+YJJBFrBBFHOXEKAIAOPBBBPKLAAOCZFHOKDNDNDNDNDNAaCO4pLBEDIBKAICBPhPKL8wXIKAIAOPBBLAOPBBBGcCLP+MEAcPMBZEhDoIaLcVxOqRlGcCDP+MEAcPMBZEhDoIaLcVxOqRlC+D+G+MkPhP9OGxCIPSP8jGcP5B9CJf/8/4/w/g/AB9+9Cu1+nGaCITC+Q1JJBFPBIBAaC+Q+YJJBFPBBBGlAlPMBBBBBBBBBBBBBBBBAcP5E9CJf/8/4/w/g/AB9+9Cu1+nGaCITC+Q1JJBFPBIBP9uPMBEDILVORZhoacxqlPpAxAcP9SPKL8wAOCLFAlPqBFAaC+Q+YJJBFrBBFHOXDKAIAOPBBWAOPBBBGcCLP+MEAcPMBZEhDoIaLcVxOqRlC+P+e+8/4BPhP9OGxCSPSP8jGcP5B9CJf/8/4/w/g/AB9+9Cu1+nGaCITC+Q1JJBFPBIBAaC+Q+YJJBFPBBBGlAlPMBBBBBBBBBBBBBBBBAcP5E9CJf/8/4/w/g/AB9+9Cu1+nGaCITC+Q1JJBFPBIBP9uPMBEDILVORZhoacxqlPpAxAcP9SPKL8wAOCWFAlPqBFAaC+Q+YJJBFrBBFHOXEKAIAOPBBBPKL8wAOCZFHOKALC/ABFHIALCJEFAK0MEAIHLARAO9rC/fB0MBKKDNAIAK9PMBAICI4HLINDNARAO9rCk9PMBCBHOXRKAoAIFHaDNDNDNDNDNAZAICO4FrBBALCOg4CIgpLBEDIBKAaCBPhPKLBXIKAaAOPBBLAOPBBBGcCLP+MEAcPMBZEhDoIaLcVxOqRlGcCDP+MEAcPMBZEhDoIaLcVxOqRlC+D+G+MkPhP9OGxCIPSP8jGcP5B9CJf/8/4/w/g/AB9+9Cu1+nGqCITC+Q1JJBFPBIBAqC+Q+YJJBFPBBBGlAlPMBBBBBBBBBBBBBBBBAcP5E9CJf/8/4/w/g/AB9+9Cu1+nGqCITC+Q1JJBFPBIBP9uPMBEDILVORZhoacxqlPpAxAcP9SPKLBAOCLFAlPqBFAqC+Q+YJJBFrBBFHOXDKAaAOPBBWAOPBBBGcCLP+MEAcPMBZEhDoIaLcVxOqRlC+P+e+8/4BPhP9OGxCSPSP8jGcP5B9CJf/8/4/w/g/AB9+9Cu1+nGqCITC+Q1JJBFPBIBAqC+Q+YJJBFPBBBGlAlPMBBBBBBBBBBBBBBBBAcP5E9CJf/8/4/w/g/AB9+9Cu1+nGqCITC+Q1JJBFPBIBP9uPMBEDILVORZhoacxqlPpAxAcP9SPKLBAOCWFAlPqBFAqC+Q+YJJBFrBBFHOXEKAaAOPBBBPKLBAOCZFHOKALCDFHLAICZFGIAK6MBKKDNAOtMBAOHZAhCEFGhCLsMDXEKKCBHOXIKDNAKtMBAVCJDFASFHIAVASFPBDBHlCBHaINAIAVCJ/CBFAaFGLPBLBGxCEP9tAxCEPSGcP9OP9hP9RGxALAKFPBLBGkCEP9tAkAcP9OP9hP9RGkPMBZEhDoIaLcVxOqRlGyALAMFPBLBG8aCEP9tA8aAcP9OP9hP9RG8aALAXFPBLBGeCEP9tAeAcP9OP9hP9RGePMBZEhDoIaLcVxOqRlG3PMBEZhDIoaLVcxORqlGcAcPMBEDIBEDIBEDIBEDIAlP9uGlPeBbDBAIADFGLAlAcAcPMLVORLVORLVORLVORP9uGlPeBbDBALADFGLAlAcAcPMWdQKWdQKWdQKWdQKP9uGlPeBbDBALADFGLAlAcAcPMXMpSXMpSXMpSXMpSP9uGlPeBbDBALADFGLAlAyA3PMWdkyQK8aeXM35pS8e8fGcAcPMBEDIBEDIBEDIBEDIP9uGlPeBbDBALADFGLAlAcAcPMLVORLVORLVORLVORP9uGlPeBbDBALADFGLAlAcAcPMWdQKWdQKWdQKWdQKP9uGlPeBbDBALADFGLAlAcAcPMXMpSXMpSXMpSXMpSP9uGlPeBbDBALADFGLAlAxAkPMWkdyQ8aKeX3M5p8eS8fGxA8aAePMWkdyQ8aKeX3M5p8eS8fGkPMBEZhDIoaLVcxORqlGcAcPMBEDIBEDIBEDIBEDIP9uGlPeBbDBALADFGLAlAcAcPMLVORLVORLVORLVORP9uGlPeBbDBALADFGLAlAcAcPMWdQKWdQKWdQKWdQKP9uGlPeBbDBALADFGLAlAcAcPMXMpSXMpSXMpSXMpSP9uGlPeBbDBALADFGLAlAxAkPMWdkyQK8aeXM35pS8e8fGcAcPMBEDIBEDIBEDIBEDIP9uGlPeBbDBALADFGLAlAcAcPMLVORLVORLVORLVORP9uGlPeBbDBALADFGLAlAcAcPMWdQKWdQKWdQKWdQKP9uGlPeBbDBALADFGLAlAcAcPMXMpSXMpSXMpSXMpSP9uGlPeBbDBALADFHIAaCZFGaAK6MBKKASCLFGSAD6MBKKABAdAD2FAVCJDFAQAD2/8QBBAVAVCJDFAQCUFAD2FAD/8QBBKAQCBAOeAdFHdAOMBKC9+HOXEKCBC99ARAO9rADCAADCA0eseHOKAVCJ/KBF8kJJJJBAOKWBZ+BJJJBK+KoEZU8jJJJJBC/AE9rGV8kJJJJBC9+HODNAECI9uGRChFAL0MBCUHOAIrBBGWC/wEgC/gE9HMBAWCSgGdCE0MBAVC/ABFCfECJE/8KBAVCuF9CU83IBAVC8wF9CU83IBAVCYF9CU83IBAVCAF9CU83IBAVCkF9CU83IBAVCZF9CU83IBAV9CU83IWAV9CU83IBAIALFC9wFHQAICEFGWARFHKDNAEtMBCMCSAdCEseHXABHICBHdCBHMCBHpCBHLCBHOINDNAKAQ9NMBC9+HOXIKDNDNAWrBBGRC/vE0MBAVC/ABFARCL4CU7AOFCSgCITFGSYDLHZASYDBHhDNARCSgGSAX9PMBAVARCU7ALFCSgCDTFYDBAdASeHRAStHSDNDNADCD9HMBABAh87EBABCLFAR87EBABCDFAZ87EBXEKAIAhbDBAICWFARbDBAICLFAZbDBKAdASFHdAVC/ABFAOCITFGoARbDBAoAZbDLAVALCDTFARbDBAVC/ABFAOCEFCSgGOCITFGZAhbDBAZARbDLALASFHLAOCEFHOXDKDNDNASCSsMBAMASFASC987FCEFHMXEKAK8sBBGSCfEgHRDNDNASCU9MMBAKCEFHKXEKAK8sBEGSCfBgCRTARCfBgvHRDNASCU9MMBAKCDFHKXEKAK8sBDGSCfBgCpTARvHRDNASCU9MMBAKCIFHKXEKAK8sBIGSCfBgCxTARvHRDNASCU9MMBAKCLFHKXEKAKrBLC3TARvHRAKCVFHKKARCE4CBARCEg9r7AMFHMKDNDNADCD9HMBABAh87EBABCLFAM87EBABCDFAZ87EBXEKAIAhbDBAICWFAMbDBAICLFAZbDBKAVC/ABFAOCITFGRAMbDBARAZbDLAVALCDTFAMbDBAVC/ABFAOCEFCSgGOCITFGRAhbDBARAMbDLALCEFHLAOCEFHOXEKDNARCPE0MBAVALAQARCSgFrBBGSCL4GZ9rCSgCDTFYDBAdCEFGhAZeHRAVALAS9rCSgCDTFYDBAhAZtGoFGhASCSgGZeHSAZtHZDNDNADCD9HMBABAd87EBABCLFAS87EBABCDFAR87EBXEKAIAdbDBAICWFASbDBAICLFARbDBKAVALCDTFAdbDBAVC/ABFAOCITFGaARbDBAaAdbDLAVALCEFGLCSgCDTFARbDBAVC/ABFAOCEFCSgCITFGaASbDBAaARbDLAVALAoFCSgGLCDTFASbDBAVC/ABFAOCDFCSgGOCITFGRAdbDBARASbDLAOCEFHOALAZFHLAhAZFHdXEKAdCBAKrBBGaeGZARC/+EsGcFHRAaCSgHhDNDNAaCL4GoMBARCEFHSXEKARHSAVALAo9rCSgCDTFYDBHRKDNDNAhMBASCEFHdXEKASHdAVALAa9rCSgCDTFYDBHSKDNDNActMBAKCEFHaXEKAK8sBEGaCfEgHZDNDNAaCU9MMBAKCDFHaXEKAK8sBDGaCfBgCRTAZCfBgvHZDNAaCU9MMBAKCIFHaXEKAK8sBIGaCfBgCpTAZvHZDNAaCU9MMBAKCLFHaXEKAK8sBLGaCfBgCxTAZvHZDNAaCU9MMBAKCVFHaXEKAKCOFHaAKrBVC3TAZvHZKAZCE4CBAZCEg9r7AMFGMHZKDNDNAoCSsMBAaHcXEKAa8sBBGKCfEgHRDNDNAKCU9MMBAaCEFHcXEKAa8sBEGKCfBgCRTARCfBgvHRDNAKCU9MMBAaCDFHcXEKAa8sBDGKCfBgCpTARvHRDNAKCU9MMBAaCIFHcXEKAa8sBIGKCfBgCxTARvHRDNAKCU9MMBAaCLFHcXEKAaCVFHcAarBLC3TARvHRKARCE4CBARCEg9r7AMFGMHRKDNDNAhCSsMBAcHKXEKAc8sBBGKCfEgHSDNDNAKCU9MMBAcCEFHKXEKAc8sBEGKCfBgCRTASCfBgvHSDNAKCU9MMBAcCDFHKXEKAc8sBDGKCfBgCpTASvHSDNAKCU9MMBAcCIFHKXEKAc8sBIGKCfBgCxTASvHSDNAKCU9MMBAcCLFHKXEKAcCVFHKAcrBLC3TASvHSKASCE4CBASCEg9r7AMFGMHSKDNDNADCD9HMBABAZ87EBABCLFAS87EBABCDFAR87EBXEKAIAZbDBAICWFASbDBAICLFARbDBKAVC/ABFAOCITFGaARbDBAaAZbDLAVALCDTFAZbDBAVC/ABFAOCEFCSgCITFGaASbDBAaARbDLAVALCEFGLCSgCDTFARbDBAVC/ABFAOCDFCSgCITFGRAZbDBARASbDLAVALAotAoCSsvFGLCSgCDTFASbDBALAhtAhCSsvFHLAOCIFHOKAWCEFHWABCOFHBAICXFHIAOCSgHOALCSgHLApCIFGpAE6MBKKCBC99AKAQseHOKAVC/AEF8kJJJJBAOK/tLEDU8jJJJJBCZ9rHVC9+HODNAECVFAL0MBCUHOAIrBBC/+EgC/QE9HMBAV9CB83IWAICEFHOAIALFC98FHIDNAEtMBDNADCDsMBINDNAOAI6MBC9+SKAO8sBBGDCfEgHLDNDNADCU9MMBAOCEFHOXEKAO8sBEGDCfBgCRTALCfBgvHLDNADCU9MMBAOCDFHOXEKAO8sBDGDCfBgCpTALvHLDNADCU9MMBAOCIFHOXEKAO8sBIGDCfBgCxTALvHLDNADCU9MMBAOCLFHOXEKAOrBLC3TALvHLAOCVFHOKAVCWFALCEgCDTvGDALCD4CBALCE4CEg9r7ADYDBFGLbDBABALbDBABCLFHBAECUFGEMBXDKKINDNAOAI6MBC9+SKAO8sBBGDCfEgHLDNDNADCU9MMBAOCEFHOXEKAO8sBEGDCfBgCRTALCfBgvHLDNADCU9MMBAOCDFHOXEKAO8sBDGDCfBgCpTALvHLDNADCU9MMBAOCIFHOXEKAO8sBIGDCfBgCxTALvHLDNADCU9MMBAOCLFHOXEKAOrBLC3TALvHLAOCVFHOKABALCD4CBALCE4CEg9r7AVCWFALCEgCDTvGLYDBFGD87EBALADbDBABCDFHBAECUFGEMBKKCBC99AOAIseHOKAOK/xVDIUO978jJJJJBCA9rGI8kJJJJBDNDNADCL9HMBDNAEC98gGLtMBABHDCBHVINADADPBBBGOCkP+rECkP+sEP/6EGRAOCWP+rECkP+sEP/6EARP/gEAOCZP+rECkP+sEP/6EGWP/gEP/kEP/lEGdCBPhP+2EGQARCJJJJ94PhGKP9OP9RP/kEGRjBB/+9CPaARARP/mEAdAdP/mEAWAQAWAKP9OP9RP/kEGRARP/mEP/kEP/kEP/jEP/nEGWP/mEjBBN0PaGQP/kECfEPhP9OAOCJJJ94PhP9OP9QARAWP/mEAQP/kECWP+rECJ/+IPhP9OP9QAdAWP/mEAQP/kECZP+rECJJ/8RPhP9OP9QPKBBADCZFHDAVCLFGVAL6MBKKALAE9PMEAIAECIgGVCDTGDvCBCZAD9r/8KBAIABALCDTFGLAD/8QBBDNAVtMBAIAIPBLBGOCkP+rECkP+sEP/6EGRAOCWP+rECkP+sEP/6EARP/gEAOCZP+rECkP+sEP/6EGWP/gEP/kEP/lEGdCBPhP+2EGQARCJJJJ94PhGKP9OP9RP/kEGRjBB/+9CPaARARP/mEAdAdP/mEAWAQAWAKP9OP9RP/kEGRARP/mEP/kEP/kEP/jEP/nEGWP/mEjBBN0PaGQP/kECfEPhP9OAOCJJJ94PhP9OP9QARAWP/mEAQP/kECWP+rECJ/+IPhP9OP9QAdAWP/mEAQP/kECZP+rECJJ/8RPhP9OP9QPKLBKALAIAD/8QBBXEKABAEC98gGDZ+HJJJBADAE9PMBAIAECIgGLCITGVFCBCAAV9r/8KBAIABADCITFGDAV/8QBBAIALZ+HJJJBADAIAV/8QBBKAICAF8kJJJJBK+yIDDUR97DNAEtMBCBHDINABCZFGIAIPBBBGLCBPhGVCJJ98P3ECJJ98P3IGOP9OABPBBBGRALPMLVORXMpScxql358e8fCffEPhP9OP/6EARALPMBEDIWdQKZhoaky8aeGLCZP+sEP/6EGWP/gEALCZP+rECZP+sEP/6EGdP/gEP/kEP/lEGLjB/+fsPaAdALAVP+2EGVAdCJJJJ94PhGQP9OP9RP/kEGdAdP/mEALALP/mEAWAVAWAQP9OP9RP/kEGLALP/mEP/kEP/kEP/jEP/nEGWP/mEjBBN0PaGVP/kECZP+rEAdAWP/mEAVP/kECffIPhP9OP9QGdALAWP/mEAVP/kECUPSCBPlDCBPlICBPlOCBPlRCBPlQCBPlKCBPlpCBPlSP9OGLPMWdkyQK8aeXM35pS8e8fP9QPKBBABARAOP9OAdALPMBEZhDIoaLVcxORqlP9QPKBBABCAFHBADCLFGDAE6MBKKK94EIU8jJJJJBCA9rGI8kJJJJBABAEC98gGLZ+JJJJBDNALAE9PMBAIAECIgGVCITGEFCBCAAE9r/8KBAIABALCITFGBAE/8QBBAIAVZ+JJJJBABAIAE/8QBBKAICAF8kJJJJBK/hILDUE97EUV978jJJJJBCZ9rHDDNAEtMBCBHIINADABPBBBGLABCZFGVPBBBGOPMLVORXMpScxql358e8fGRCZP+sEGWCLP+rEPKLBABjBBJzPaj/zL81zPaAWCIPhP9QP/6EP/nEGWALAOPMBEDIWdQKZhoaky8aeGLCZP+rECZP+sEP/6EP/mEGOAOP/mEAWALCZP+sEP/6EP/mEGdAdP/mEAWARCZP+rECZP+sEP/6EP/mEGRARP/mEP/kEP/kEP/lECBPhP+4EP/jEjB/+fsPaGWP/mEjBBN0PaGLP/kECffIPhGQP9OAdAWP/mEALP/kECZP+rEP9QGdARAWP/mEALP/kECZP+rEAOAWP/mEALP/kEAQP9OP9QGWPMBEZhDIoaLVcxORqlGLP5BADPBLBPeB+t+J83IBABCWFALP5EADPBLBPeE+t+J83IBAVAdAWPMWdkyQK8aeXM35pS8e8fGWP5BADPBLBPeD+t+J83IBABCkFAWP5EADPBLBPeI+t+J83IBABCAFHBAICLFGIAE6MBKKK/3EDIUE978jJJJJBC/AB9rHIDNADCD4AE2GLC98gGVtMBCBHDABHEINAEAEPBBBGOCWP+rECWP+sEP/6EAOCkP+sEClP+rECJJJ/8IPhP+uEP/mEPKBBAECZFHEADCLFGDAV6MBKKDNAVAL9PMBAIALCIgGDCDTGEvCBC/ABAE9r/8KBAIABAVCDTFGVAE/8QBBDNADtMBAIAIPBLBGOCWP+rECWP+sEP/6EAOCkP+sEClP+rECJJJ/8IPhP+uEP/mEPKLBKAVAIAE/8QBBKK9TEIUCBCBYDJ1JJBGEABCIFC98gFGBbDJ1JJBDNDNABzBCZTGD9NMBCUHIABAD9rCffIFCZ4NBCUsMEKAEHIKAIKKKEBCJWKLZ9tBB");var A=WebAssembly.instantiate(function(t){for(var r=new Uint8Array(t.length),n=0;n<t.length;++n){var A=t.charCodeAt(n);r[n]=A>96?A-71:A>64?A-65:A>47?A+4:A>46?63:62}var i=0;for(n=0;n<t.length;++n)r[i++]=r[n]<60?e[r[n]]:64*(r[n]-60)+r[++n];return r.buffer.slice(0,i)}(n),{}).then((function(t){(r=t.instance).exports.__wasm_call_ctors()}));function i(t,e,n,A,i,o){var s=r.exports.sbrk,a=n+3&-4,B=s(a*A),E=s(i.length),c=new Uint8Array(r.exports.memory.buffer);c.set(i,E);var C=t(B,n,A,E,i.length);if(0==C&&o&&o(B,a,A),e.set(c.subarray(B,B+n*A)),s(B-s(0)),0!=C)throw new Error("Malformed buffer data: "+C)}var o={0:"",1:"meshopt_decodeFilterOct",2:"meshopt_decodeFilterQuat",3:"meshopt_decodeFilterExp",NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},s={0:"meshopt_decodeVertexBuffer",1:"meshopt_decodeIndexBuffer",2:"meshopt_decodeIndexSequence",ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"};return{ready:A,supported:!0,decodeVertexBuffer:function(t,e,n,A,s){i(r.exports.meshopt_decodeVertexBuffer,t,e,n,A,r.exports[o[s]])},decodeIndexBuffer:function(t,e,n,A){i(r.exports.meshopt_decodeIndexBuffer,t,e,n,A)},decodeIndexSequence:function(t,e,n,A){i(r.exports.meshopt_decodeIndexSequence,t,e,n,A)},decodeGltfBuffer:function(t,e,n,A,a,B){i(r.exports[s[a]],t,e,n,A,r.exports[o[B]])}}}();function vi(){}vi.s3tc=!0,vi.pvrtc=!1,vi.etc1=!1;const Zi={SV_Unkown:0,SV_Standard:1,SV_Compressed:2,SV_DracoCompressed:3},xi={Standard:0,Draco:1,MeshOpt:2},ki={0:Uint32Array.BYTES_PER_ELEMENT,1:Float32Array.BYTES_PER_ELEMENT,2:Float64Array.BYTES_PER_ELEMENT},Wi={LUMINANCE_8:1,LUMINANCE_16:2,ALPHA:3,ALPHA_4_LUMINANCE_4:4,LUMINANCE_ALPHA:5,RGB_565:6,BGR565:7,RGB:10,BGR:11,ARGB:12,ABGR:13,BGRA:14,WEBP:25,RGBA:28,DXT1:17,DXT2:18,DXT3:19,DXT4:20,DXT5:21,CRN_DXT5:26,STANDARD_CRN:27},Qi={SVC_Vertex:1,SVC_Normal:2,SVC_VertexColor:4,SVC_SecondColor:8,SVC_TexutreCoord:16,SVC_TexutreCoordIsW:32},ji={Invalid:0,Position:1,PositionW:2,Normal:4,Tangent:8,FirstTexcoord:16,SecondTexcoord:32,Color:64,SecondColor:128,Custom0:512,Custom1:1024};function Yi(t,e,r){r=t.byteLength;return t=t.subarray(0,0+r),new TextDecoder("utf-8").decode(t)}function zi(t,e,r){let n=e.getUint32(r,!0);return r+=Uint32Array.BYTES_PER_ELEMENT,{string:Yi(new Uint8Array(t,r,n)),bytesOffset:r+=n,length:n}}function qi(t,e,r,n){let A={},i=[],o=new Array(16);for(let t=0;t<16;t++)o[t]=e.getFloat64(r,!0),r+=Float64Array.BYTES_PER_ELEMENT;A.matrix=o,A.skeletonNames=i;let s=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;for(let n=0;n<s;n++){let n=zi(t,e,r);i.push(n.string),r=n.bytesOffset}return n.push(A),r}function $i(t,e,r,n,A){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 o={};o.x=e.getFloat64(r,!0),r+=Float64Array.BYTES_PER_ELEMENT,o.y=e.getFloat64(r,!0),r+=Float64Array.BYTES_PER_ELEMENT,o.z=e.getFloat64(r,!0),r+=Float64Array.BYTES_PER_ELEMENT;let s=e.getFloat64(r,!0);if(r+=Float64Array.BYTES_PER_ELEMENT,i.boundingSphere={center:o,radius:s},3===A){const t={};t.x=e.getFloat64(r,!0),r+=Float64Array.BYTES_PER_ELEMENT,t.y=e.getFloat64(r,!0),r+=Float64Array.BYTES_PER_ELEMENT,t.z=e.getFloat64(r,!0),r+=Float64Array.BYTES_PER_ELEMENT;const n={};n.x=e.getFloat64(r,!0),r+=Float64Array.BYTES_PER_ELEMENT,n.y=e.getFloat64(r,!0),r+=Float64Array.BYTES_PER_ELEMENT,n.z=e.getFloat64(r,!0),r+=Float64Array.BYTES_PER_ELEMENT;const A={};A.x=e.getFloat64(r,!0),r+=Float64Array.BYTES_PER_ELEMENT,A.y=e.getFloat64(r,!0),r+=Float64Array.BYTES_PER_ELEMENT,A.z=e.getFloat64(r,!0),r+=Float64Array.BYTES_PER_ELEMENT;const o={};o.x=e.getFloat64(r,!0),r+=Float64Array.BYTES_PER_ELEMENT,o.y=e.getFloat64(r,!0),r+=Float64Array.BYTES_PER_ELEMENT,o.z=e.getFloat64(r,!0),r+=Float64Array.BYTES_PER_ELEMENT,i.obb={xExtent:n,yExtent:A,zExtent:o,obbCenter:t}}let a=zi(t,e,r),B=a.string;r=a.bytesOffset;let E=B.indexOf("Geometry");if(-1!==E){let t=B.substring(E);B=B.replace(t,"")}i.childTile=B,i.geodes=[];let c=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;for(let n=0;n<c;n++)r=qi(t,e,r,i.geodes);if(n.push(i),3===A){r=zi(t,e,r).bytesOffset}return r}function to(t,e,r,n){let A=e.getUint32(r,!0);if(n.verticesCount=A,(r+=Uint32Array.BYTES_PER_ELEMENT)<=0)return r;let i=e.getUint16(r,!0);r+=Uint16Array.BYTES_PER_ELEMENT;let o=e.getUint16(r,!0);o=i*Float32Array.BYTES_PER_ELEMENT,r+=Uint16Array.BYTES_PER_ELEMENT;let s=A*i*Float32Array.BYTES_PER_ELEMENT,a=new Uint8Array(t,r,s);r+=s;let B=n.vertexAttributes,E=n.attrLocation;return E.aPosition=B.length,B.push({index:E.aPosition,typedArray:a,componentsPerAttribute:i,componentDatatype:5126,offsetInBytes:0,strideInBytes:o,normalize:!1}),r}function eo(t,e,r,n){let A=e.getUint32(r,!0);if(r+=Uint32Array.BYTES_PER_ELEMENT,A<=0)return r;let i=e.getUint16(r,!0);r+=Uint16Array.BYTES_PER_ELEMENT;let o=e.getUint16(r,!0);r+=Uint16Array.BYTES_PER_ELEMENT;let s=A*i*Float32Array.BYTES_PER_ELEMENT,a=new Uint8Array(t,r,s);r+=s;let B=n.vertexAttributes,E=n.attrLocation;return E.aNormal=B.length,B.push({index:E.aNormal,typedArray:a,componentsPerAttribute:i,componentDatatype:5126,offsetInBytes:0,strideInBytes:o,normalize:!1}),r}function ro(t,e,r,n){let A=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;let i,o=n.verticesCount;if(A>0){e.getUint16(r,!0),r+=Uint16Array.BYTES_PER_ELEMENT,r+=2*Uint8Array.BYTES_PER_ELEMENT;let n=A*Uint8Array.BYTES_PER_ELEMENT*4;i=new Uint8Array(t,r,n).slice(0,n),r+=n}else{i=new Uint8Array(4*o);for(let t=0;t<o;t++)i[4*t]=255,i[4*t+1]=255,i[4*t+2]=255,i[4*t+3]=255}let s=n.vertexAttributes,a=n.attrLocation;return a.aColor=s.length,s.push({index:a.aColor,typedArray:i,componentsPerAttribute:4,componentDatatype:5121,offsetInBytes:0,strideInBytes:4,normalize:!0}),n.vertexColor=i,r}function no(t,e,r,n){let A=e.getUint32(r,!0);if(r+=Uint32Array.BYTES_PER_ELEMENT,A<=0)return r;e.getUint16(r,!0),r+=Uint16Array.BYTES_PER_ELEMENT,r+=2*Uint8Array.BYTES_PER_ELEMENT;let i=A*Uint8Array.BYTES_PER_ELEMENT*4,o=new Uint8Array(t,r,i);r+=i;let s=n.vertexAttributes,a=n.attrLocation;return a.aSecondColor=s.length,s.push({index:a.aSecondColor,typedArray:o,componentsPerAttribute:4,componentDatatype:5121,offsetInBytes:0,strideInBytes:4,normalize:!0}),r}function Ao(t,e,r,n){let A=e.getUint16(r,!0);r+=Uint16Array.BYTES_PER_ELEMENT,r+=Uint16Array.BYTES_PER_ELEMENT;for(let i=0;i<A;i++){let A=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 s=A*o*Float32Array.BYTES_PER_ELEMENT,a=new Uint8Array(t,r,s);r+=s;let B="aTexCoord"+i,E=n.vertexAttributes,c=n.attrLocation;c[B]=E.length,E.push({index:c[B],typedArray:a,componentsPerAttribute:o,componentDatatype:5126,offsetInBytes:0,strideInBytes:o*Float32Array.BYTES_PER_ELEMENT,normalize:!1})}return r}function io(t,e,r,n){let A=e.getUint16(r,!0);r+=Uint16Array.BYTES_PER_ELEMENT,r+=Uint16Array.BYTES_PER_ELEMENT;let i=n.vertexAttributes,o=n.attrLocation;for(let s=0;s<A;s++){let A=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;let s=e.getUint16(r,!0);r+=Uint16Array.BYTES_PER_ELEMENT,e.getUint16(r,!0),r+=Uint16Array.BYTES_PER_ELEMENT;let a=A*s*Float32Array.BYTES_PER_ELEMENT;if(17===s||29===s){let e=new Uint8Array(t,r,a);n.instanceCount=A,n.instanceMode=s,n.instanceBuffer=e,n.instanceIndex=1;let B,E=s*A*4,c=e.slice(0,E);n.vertexColorInstance=c,17===s?(B=17*Float32Array.BYTES_PER_ELEMENT,o.uv2=i.length,i.push({index:o.uv2,componentsPerAttribute:4,componentDatatype:5126,normalize:!1,offsetInBytes:0,strideInBytes:B,instanceDivisor:1}),o.uv3=i.length,i.push({index:o.uv3,componentsPerAttribute:4,componentDatatype:5126,normalize:!1,offsetInBytes:4*Float32Array.BYTES_PER_ELEMENT,strideInBytes:B,instanceDivisor:1}),o.uv4=i.length,i.push({index:o.uv4,componentsPerAttribute:4,componentDatatype:5126,normalize:!1,offsetInBytes:8*Float32Array.BYTES_PER_ELEMENT,strideInBytes:B,instanceDivisor:1}),o.secondary_colour=i.length,i.push({index:o.secondary_colour,componentsPerAttribute:4,componentDatatype:5126,normalize:!1,offsetInBytes:12*Float32Array.BYTES_PER_ELEMENT,strideInBytes:B,instanceDivisor:1}),o.uv6=i.length,i.push({index:o.uv6,componentsPerAttribute:4,componentDatatype:5121,normalize:!0,offsetInBytes:16*Float32Array.BYTES_PER_ELEMENT,strideInBytes:B,instanceDivisor:1})):29===s&&(B=29*Float32Array.BYTES_PER_ELEMENT,o.uv1=i.length,i.push({index:o.uv1,componentsPerAttribute:4,componentDatatype:5126,normalize:!1,offsetInBytes:0,strideInBytes:B,instanceDivisor:1,byteLength:a}),o.uv2=i.length,i.push({index:o.uv2,componentsPerAttribute:4,componentDatatype:5126,normalize:!1,offsetInBytes:4*Float32Array.BYTES_PER_ELEMENT,strideInBytes:B,instanceDivisor:1}),o.uv3=i.length,i.push({index:o.uv3,componentsPerAttribute:4,componentDatatype:5126,normalize:!1,offsetInBytes:8*Float32Array.BYTES_PER_ELEMENT,strideInBytes:B,instanceDivisor:1}),o.uv4=i.length,i.push({index:o.uv4,componentsPerAttribute:4,componentDatatype:5126,normalize:!1,offsetInBytes:12*Float32Array.BYTES_PER_ELEMENT,strideInBytes:B,instanceDivisor:1}),o.uv5=i.length,i.push({index:o.uv5,componentsPerAttribute:4,componentDatatype:5126,normalize:!1,offsetInBytes:16*Float32Array.BYTES_PER_ELEMENT,strideInBytes:B,instanceDivisor:1}),o.uv6=i.length,i.push({index:o.uv6,componentsPerAttribute:4,componentDatatype:5126,normalize:!1,offsetInBytes:20*Float32Array.BYTES_PER_ELEMENT,strideInBytes:B,instanceDivisor:1}),o.uv7=i.length,i.push({index:o.uv7,componentsPerAttribute:3,componentDatatype:5126,normalize:!1,offsetInBytes:24*Float32Array.BYTES_PER_ELEMENT,strideInBytes:B,instanceDivisor:1}),o.secondary_colour=i.length,i.push({index:o.secondary_colour,componentsPerAttribute:4,componentDatatype:5121,normalize:!0,offsetInBytes:27*Float32Array.BYTES_PER_ELEMENT,strideInBytes:B,instanceDivisor:1}),o.uv9=i.length,i.push({index:o.uv9,componentsPerAttribute:4,componentDatatype:5121,normalize:!0,offsetInBytes:28*Float32Array.BYTES_PER_ELEMENT,strideInBytes:B,instanceDivisor:1}))}else{let t=A*s;n.instanceBounds=new Float32Array(t);for(let A=0;A<t;A++)n.instanceBounds[A]=e.getFloat32(r+A*Float32Array.BYTES_PER_ELEMENT,!0)}r+=a}return r}function oo(t,e,r,n,A){if(3===A&&(e.getUint32(r,!0),r+=Uint32Array.BYTES_PER_ELEMENT),r=ro(t,e,r=eo(t,e,r=to(t,e,r,n),n),n),3!==A&&(r=no(t,e,r,n)),r=io(t,e,r=Ao(t,e,r,n),n),3===A){r=function(t,e,r,n){const A=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;for(let i=0;i<A;i++){const A=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;const o=e.getUint16(r,!0);r+=Uint16Array.BYTES_PER_ELEMENT;const s=e.getUint16(r,!0);r+=Uint16Array.BYTES_PER_ELEMENT;const a=A*o*ki[s],B=new Uint8Array(t,r,a);r+=a;const E=n.vertexAttributes,c=n.attrLocation,C="aCustom"+i;c[C]=E.length,E.push({index:c[C],typedArray:B,componentsPerAttribute:o,componentDatatype:5126,offsetInBytes:0,strideInBytes:0,normalize:!1})}return r}(t,e,r,n);const A=zi(t,e,r);r=A.bytesOffset,n.customVertexAttribute=JSON.parse(A.string);const i="aCustom"+n.customVertexAttribute.TextureCoordMatrix,o="aCustom"+n.customVertexAttribute.VertexWeight;void 0!==n.attrLocation[i]&&(n.attrLocation.aTextureCoordMatrix=n.attrLocation[i],delete n.attrLocation[i]),void 0!==n.attrLocation[o]&&(n.attrLocation.aVertexWeight=n.attrLocation[o],delete n.attrLocation[o]);let s=r%4;s&&(s=4-s),r=function(t,e,r,n){const A=e.getUint32(r,!0);if(r+=Uint32Array.BYTES_PER_ELEMENT,A<=0)return r;const i=e.getUint16(r,!0);return r+=Uint16Array.BYTES_PER_ELEMENT,e.getUint16(r,!0),r+=Uint16Array.BYTES_PER_ELEMENT,r+=A*i*Float32Array.BYTES_PER_ELEMENT}(0,e,r+=s)}return r}function so(t,e,r,n,A,i){let o,s=0;const a=A.vertexAttributes,B=A.attrLocation;switch(e){case ji.Normal:case ji.FirstTexcoord:case ji.SecondTexcoord:s=2*Uint16Array.BYTES_PER_ELEMENT,0!=(16&i)||e!==ji.FirstTexcoord&&e!==ji.SecondTexcoord||(s=2*Float32Array.BYTES_PER_ELEMENT),o=new Uint8Array(t*s);break;case ji.Color:case ji.SecondColor:s=4*Uint8Array.BYTES_PER_ELEMENT,o=new Uint8Array(4*t);break;case ji.Custom0:case ji.Custom1:s=Float32Array.BYTES_PER_ELEMENT*r,o=new Uint8Array(t*r*4);break;default:s=4*Uint16Array.BYTES_PER_ELEMENT,o=new Uint8Array(t*s)}let E,c;switch(Ji.decodeVertexBuffer(o,t,s,n,n.length),e){case ji.Position:B.aPosition=a.length,a.push({index:B.aPosition,typedArray:new Uint16Array(o.buffer,0,o.length/2),componentsPerAttribute:4,componentDatatype:5122,offsetInBytes:0,strideInBytes:0,normalize:!1}),A.verticesCount=t;break;case ji.Normal:B.aNormal=a.length,a.push({index:B.aNormal,typedArray:new Int16Array(o.buffer,0,o.length/2),componentsPerAttribute:2,componentDatatype:5122,offsetInBytes:0,strideInBytes:0,normalize:!1});break;case ji.FirstTexcoord:0==(16&i)?(c=5126,E=new Float32Array(o.buffer,0,o.length/4)):(c=5122,E=new Uint16Array(o.buffer,0,o.length/2)),B.aTexCoord0=a.length,a.push({index:B.aTexCoord0,typedArray:E,componentsPerAttribute:2,componentDatatype:c,offsetInBytes:0,strideInBytes:0,normalize:!1});break;case ji.SecondTexcoord:0==(16&i)?(c=5126,E=new Float32Array(o.buffer,0,o.length/4)):(c=5122,E=new Uint16Array(o.buffer,0,o.length/2)),B.aTexCoord1=a.length,a.push({index:B.aTexCoord1,typedArray:E,componentsPerAttribute:2,componentDatatype:c,offsetInBytes:0,strideInBytes:0,normalize:!1});break;case ji.Color:B.aColor=a.length,a.push({index:B.aColor,typedArray:o,componentsPerAttribute:4,componentDatatype:5121,offsetInBytes:0,strideInBytes:0,normalize:!0});break;case ji.SecondColor:B.aSecondColor=a.length,a.push({index:B.aSecondColor,typedArray:o,componentsPerAttribute:4,componentDatatype:5120,offsetInBytes:0,strideInBytes:0,normalize:!1});break;case ji.Custom0:B.aCustom0=a.length,a.push({index:B.aCustom0,typedArray:new Float32Array(o.buffer,0,o.length/4),componentsPerAttribute:r,componentDatatype:5126,offsetInBytes:0,strideInBytes:0,normalize:!1});break;case ji.Custom1:B.aCustom1=a.length,a.push({index:B.aCustom1,typedArray:new Float32Array(o.buffer,0,o.length/4),componentsPerAttribute:r,componentDatatype:5126,offsetInBytes:0,strideInBytes:0,normalize:!1})}}function ao(t,e,r,n,A){const i=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT,n.compressOptions=i;const o=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT,n.minVerticesValue={x:0,y:0,z:0,w:0},n.minTexCoordValue=[{x:0,y:0},{x:0,y:0}],n.texCoordCompressConstant=[{x:0,y:0,z:0},{x:0,y:0,z:0}];for(let A=0;A<o;A++){const s=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT,n.vertCompressConstant=e.getFloat32(r,!0),r+=Float32Array.BYTES_PER_ELEMENT,n.minVerticesValue.x=e.getFloat64(r,!0),r+=Float64Array.BYTES_PER_ELEMENT,n.minVerticesValue.y=e.getFloat64(r,!0),r+=Float64Array.BYTES_PER_ELEMENT,n.minVerticesValue.z=e.getFloat64(r,!0),r+=Float64Array.BYTES_PER_ELEMENT;const a=e.getFloat64(r,!0);r+=Float64Array.BYTES_PER_ELEMENT;const B=e.getFloat64(r,!0);r+=Float64Array.BYTES_PER_ELEMENT;const E=e.getFloat64(r,!0);r+=Float64Array.BYTES_PER_ELEMENT;const c=e.getFloat64(r,!0);r+=Float64Array.BYTES_PER_ELEMENT;const C=e.getFloat64(r,!0);r+=Float64Array.BYTES_PER_ELEMENT;const f=e.getFloat64(r,!0);r+=Float64Array.BYTES_PER_ELEMENT;const l=e.getFloat64(r,!0);r+=Float64Array.BYTES_PER_ELEMENT;const u=e.getFloat64(r,!0);r+=Float64Array.BYTES_PER_ELEMENT,n.minTexCoordValue[0].x=E,n.minTexCoordValue[0].y=c,n.minTexCoordValue[1].x=l,n.minTexCoordValue[1].y=u,n.texCoordCompressConstant[0].x=a,n.texCoordCompressConstant[0].y=B,n.texCoordCompressConstant[1].x=C,n.texCoordCompressConstant[1].y=f;const _=e.getInt32(r,!0);r+=Int32Array.BYTES_PER_ELEMENT;for(let A=0;A<_;A++){const A=e.getInt32(r,!0);r+=Int32Array.BYTES_PER_ELEMENT;let o=0;A!==ji.Custom0&&A!==ji.Custom1||(o=e.getInt32(r,!0),r+=Int32Array.BYTES_PER_ELEMENT);const a=e.getInt32(r,!0);r+=Int32Array.BYTES_PER_ELEMENT;const B=new Uint8Array(t,r,a);let E=(r+=Uint8Array.BYTES_PER_ELEMENT*a)%4;E&&(E=4-E),r+=E,so(s,A,o,B,n,i)}let D=zi(t,e,r);r=D.bytesOffset,n.customVertexAttribute=JSON.parse(D.string);let R="aCustom"+n.customVertexAttribute.TextureCoordMatrix,I="aCustom"+n.customVertexAttribute.VertexWeight;void 0!==n.attrLocation[R]&&(n.attrLocation.aTextureCoordMatrix=n.attrLocation[R],A===o-1&&delete n.attrLocation[R]),void 0!==n.attrLocation[I]&&(n.attrLocation.aVertexWeight=n.attrLocation[I],A===o-1&&delete n.attrLocation[I]);let T=r%4;T&&(T=4-T),r+=T}return r}function Bo(t,e,r,n,A){const i=e.getInt32(r,!0);r+=Int32Array.BYTES_PER_ELEMENT;for(let A=0;A<i;A++){const A={},i=e.getInt32(r,!0);if(r+=Int32Array.BYTES_PER_ELEMENT,i<1)continue;const o=e.getInt8(r,!0);r+=Int8Array.BYTES_PER_ELEMENT,e.getInt8(r,!0),r+=Int8Array.BYTES_PER_ELEMENT;const s=e.getInt8(r,!0);r+=Int8Array.BYTES_PER_ELEMENT,e.getInt8(r,!0),r+=Int8Array.BYTES_PER_ELEMENT;const a=e.getInt32(r,!0);let B;r+=Int32Array.BYTES_PER_ELEMENT,13!==s?(B=new Uint8Array(t,r,a),r+=Uint8Array.BYTES_PER_ELEMENT*a):(B=new Uint32Array(t,r,a),r+=Uint32Array.BYTES_PER_ELEMENT*a);let E,c=r%4;c&&(c=4-c),r+=c,13!==s?(E=new Uint8Array(i*Uint32Array.BYTES_PER_ELEMENT),Ji.decodeIndexBuffer(E,i,Uint32Array.BYTES_PER_ELEMENT,B)):E=B;const C=e.getInt32(r,!0);r+=Int32Array.BYTES_PER_ELEMENT,A.indexType=o;const f=0===o?new Uint16Array(i):new Uint32Array(i);A.indicesCount=i;const l=new Uint32Array(E.buffer,E.byteOffset,E.byteLength/4);f.set(l,0),A.indicesTypedArray=f,A.primitiveType=s;for(let n=0;n<C;n++){const n=zi(t,e,r);r=n.bytesOffset,A.materialCode=n.string}n.push(A),c=r%4,c&&(c=4-c),r+=c}return r}function Eo(t,e,r,n){let A=e.getUint32(r,!0);return n.compressOptions=A,r+=Uint32Array.BYTES_PER_ELEMENT,r=(A&Qi.SVC_Vertex)===Qi.SVC_Vertex?function(t,e,r,n){let A=e.getUint32(r,!0);if(n.verticesCount=A,(r+=Uint32Array.BYTES_PER_ELEMENT)<=0)return r;let i=e.getUint16(r,!0);r+=Uint16Array.BYTES_PER_ELEMENT;let o=e.getUint16(r,!0);o=i*Int16Array.BYTES_PER_ELEMENT,r+=Uint16Array.BYTES_PER_ELEMENT;let s=e.getFloat32(r,!0);r+=Float32Array.BYTES_PER_ELEMENT;let a={};a.x=e.getFloat32(r,!0),r+=Float32Array.BYTES_PER_ELEMENT,a.y=e.getFloat32(r,!0),r+=Float32Array.BYTES_PER_ELEMENT,a.z=e.getFloat32(r,!0),r+=Float32Array.BYTES_PER_ELEMENT,a.w=e.getFloat32(r,!0),r+=Float32Array.BYTES_PER_ELEMENT,n.vertCompressConstant=s,n.minVerticesValue=a;let B=A*i*Int16Array.BYTES_PER_ELEMENT,E=new Uint8Array(t,r,B);r+=B;let c=n.vertexAttributes,C=n.attrLocation;return C.aPosition=c.length,c.push({index:C.aPosition,typedArray:E,componentsPerAttribute:i,componentDatatype:5122,offsetInBytes:0,strideInBytes:o,normalize:!1}),r}(t,e,r,n):to(t,e,r,n),r=(A&Qi.SVC_Normal)===Qi.SVC_Normal?function(t,e,r,n){let A=e.getUint32(r,!0);if(r+=Uint32Array.BYTES_PER_ELEMENT,A<=0)return r;e.getUint16(r,!0),r+=Uint16Array.BYTES_PER_ELEMENT;let i=e.getUint16(r,!0);r+=Uint16Array.BYTES_PER_ELEMENT;let o=2*A*Int16Array.BYTES_PER_ELEMENT,s=new Uint8Array(t,r,o);r+=o;let a=n.vertexAttributes,B=n.attrLocation;return B.aNormal=a.length,a.push({index:B.aNormal,typedArray:s,componentsPerAttribute:2,componentDatatype:5122,offsetInBytes:0,strideInBytes:i,normalize:!1}),r}(t,e,r,n):eo(t,e,r,n),r=no(t,e,r=ro(t,e,r,n),n),r=(A&Qi.SVC_TexutreCoord)===Qi.SVC_TexutreCoord?function(t,e,r,n){n.texCoordCompressConstant=[],n.minTexCoordValue=[];let A=e.getUint16(r,!0);r+=Uint16Array.BYTES_PER_ELEMENT,r+=Uint16Array.BYTES_PER_ELEMENT;for(let i=0;i<A;i++){let A=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 s=e.getUint16(r,!0);r+=Uint16Array.BYTES_PER_ELEMENT,e.getUint16(r,!0),r+=Uint16Array.BYTES_PER_ELEMENT;let a=e.getFloat32(r,!0);r+=Float32Array.BYTES_PER_ELEMENT,n.texCoordCompressConstant.push(a);let B={};B.x=e.getFloat32(r,!0),r+=Float32Array.BYTES_PER_ELEMENT,B.y=e.getFloat32(r,!0),r+=Float32Array.BYTES_PER_ELEMENT,B.z=e.getFloat32(r,!0),r+=Float32Array.BYTES_PER_ELEMENT,B.w=e.getFloat32(r,!0),r+=Float32Array.BYTES_PER_ELEMENT,n.minTexCoordValue.push(B);let E=o*s*Int16Array.BYTES_PER_ELEMENT,c=new Uint8Array(t,r,E),C=(r+=E)%4;0!==C&&(r+=4-C);let f="aTexCoord"+i,l=n.vertexAttributes,u=n.attrLocation;if(u[f]=l.length,l.push({index:u[f],typedArray:c,componentsPerAttribute:s,componentDatatype:5122,offsetInBytes:0,strideInBytes:s*Int16Array.BYTES_PER_ELEMENT,normalize:!1}),A){E=o*Float32Array.BYTES_PER_ELEMENT;let e=new Uint8Array(t,r,E);r+=E,n.texCoordZMatrix=!0,f="aTexCoordZ"+i,u[f]=l.length,l.push({index:u[f],typedArray:e,componentsPerAttribute:1,componentDatatype:5126,offsetInBytes:0,strideInBytes:Float32Array.BYTES_PER_ELEMENT,normalize:!1})}}return r}(t,e,r,n):Ao(t,e,r,n),(A&Qi.SVC_TexutreCoordIsW)===Qi.SVC_TexutreCoordIsW&&(n.textureCoordIsW=!0),r=io(t,e,r,n)}function co(t,e,r,n,A){let i=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;for(let o=0;o<i;o++){let i={};3===A&&(e.getUint32(r,!0),r+=Uint32Array.BYTES_PER_ELEMENT);let o=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;let s=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,o>0){let e,n=null;1===s||3===s?(e=o*Uint32Array.BYTES_PER_ELEMENT,n=new Uint8Array(t,r,e)):(e=o*Uint16Array.BYTES_PER_ELEMENT,n=new Uint8Array(t,r,e),o%2!=0&&(e+=2)),i.indicesTypedArray=n,r+=e}i.indicesCount=o,i.indexType=s,i.primitiveType=a;let B=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;for(let n=0;n<B;n++){let n=zi(t,e,r),A=n.string;r=n.bytesOffset,i.materialCode=A}if(0!==r%4){r+=4-r%4}n.push(i)}return r}let Co={red:0,green:0,blue:0,alpha:0},fo=65536;function lo(t,e,r){let n=t.vertexAttributes,A=t.attrLocation,i=n.length;A[1===r?"instanceId":"batchId"]=i,n.push({index:i,typedArray:e,componentsPerAttribute:1,componentDatatype:5126,offsetInBytes:0,strideInBytes:0,instanceDivisor:r})}vi.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),r.version>=3&&(n.getUint32(e,!0),e+=Uint32Array.BYTES_PER_ELEMENT),n.getUint32(e,!0),e+=Uint32Array.BYTES_PER_ELEMENT;let A=function(t,e){let r=new Uint8Array(t,e);return di.inflate(r).buffer}(t,e);n=new DataView(A),e=0;let i=n.getUint32(e,!0);return e+=Uint32Array.BYTES_PER_ELEMENT,e=function(t,e,r,n){let A={},i=[];e.getUint32(r,!0),r+=Uint32Array.BYTES_PER_ELEMENT;let o=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;for(let A=0;A<o;A++)r=$i(t,e,r,i,n.version);A.pageLods=i;let s=r%4;return 0!==s&&(r+=4-s),n.groupNode=A,r}(A,n,e,r),e=function(t,e,r,n,A){e.getUint32(r,!0),r+=Uint32Array.BYTES_PER_ELEMENT;let i=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;for(let o=0;o<i;o++){3===A&&(e.getUint32(r,!0),r+=Uint32Array.BYTES_PER_ELEMENT);let i=zi(t,e,r),o=i.string;r=i.bytesOffset;let s=i.length%4;0!==s&&(r+=4-s);let a=e.getUint32(r,!0);if(r+=Int32Array.BYTES_PER_ELEMENT,3===A)switch(a){case xi.Standard:a=Zi.SV_Standard;break;case xi.Draco:a=Zi.SV_DracoCompressed;break;case xi.MeshOpt:a=Zi.SV_Compressed}let B={vertexAttributes:[],attrLocation:{},instanceCount:0,instanceMode:0,instanceIndex:-1};a===Zi.SV_Standard?r=oo(t,e,r,B,A):a===Zi.SV_Compressed&&3===A?r=ao(t,e,r,B):a===Zi.SV_Compressed&&(r=Eo(t,e,r,B));let E,c=[];r=a===Zi.SV_Compressed&&3===A?Bo(t,e,r,c):co(t,e,r,c,A),2===c.length&&13===c[1].primitiveType&&c[1].indicesCount>=3&&(E=S3MEdgeProcessor.createEdgeDataByIndices(B,c[1])),n[o]={vertexPackage:B,arrIndexPackage:c,edgeGeometry:E},3===A&&(e.getFloat64(r,!0),r+=Float64Array.BYTES_PER_ELEMENT,e.getFloat64(r,!0),r+=Float64Array.BYTES_PER_ELEMENT,e.getFloat64(r,!0),r+=Float64Array.BYTES_PER_ELEMENT,e.getFloat64(r,!0),r+=Float64Array.BYTES_PER_ELEMENT,e.getFloat64(r,!0),r+=Float64Array.BYTES_PER_ELEMENT,e.getFloat64(r,!0),r+=Float64Array.BYTES_PER_ELEMENT,e.getFloat64(r,!0),r+=Float64Array.BYTES_PER_ELEMENT,e.getFloat64(r,!0),r+=Float64Array.BYTES_PER_ELEMENT,e.getFloat64(r,!0),r+=Float64Array.BYTES_PER_ELEMENT,e.getFloat64(r,!0),r+=Float64Array.BYTES_PER_ELEMENT,e.getFloat64(r,!0),r+=Float64Array.BYTES_PER_ELEMENT,e.getFloat64(r,!0),r+=Float64Array.BYTES_PER_ELEMENT)}3!==A&&(r+=e.getUint32(r,!0),r+=Uint32Array.BYTES_PER_ELEMENT);return r}(A,n,e,r.geoPackage,r.version),e=function(t,e,r,n){e.getUint32(r,!0),r+=Uint32Array.BYTES_PER_ELEMENT;let A=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;for(let i=0;i<A;i++){let A=zi(t,e,r),i=A.string;r=A.bytesOffset;let o=A.length%4;0!==o&&(r+=4-o),e.getUint32(r,!0),r+=Uint32Array.BYTES_PER_ELEMENT;let s=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;let a=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;let B=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;let E=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;let c=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;let C=new Uint8Array(t,r,E);r+=E;let f=c===Wi.RGB||c===Wi.BGR?33776:33779;if(22===B&&(f=36196),!vi.s3tc&&(33776===f||33779===f)){let t=new Uint8Array(s*a*4);Xi.decode(t,s,a,C,c),C=t,B=0,f=c===Wi.RGB||c===Wi.RGB?273:4369}n[i]={id:i,width:s,height:a,compressType:B,nFormat:c,internalFormat:f,arrayBufferView:C}}return r}(A,n,e,r.texturePackage),e=function(t,e,r,n){let A=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;let i=Yi(new Uint8Array(t,r,A));return r+=A,n.materials=JSON.parse(i),r}(A,n,e,r),function(t,e,r,n,A,i){if(3===i&&(n=e.getUint32(r,!0),r+=Uint32Array.BYTES_PER_ELEMENT),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=zi(t,e,r),o=n.string;r=n.bytesOffset;let s=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;let a={};if(A[o].pickInfo=a,-1==A[o].vertexPackage.instanceIndex){let t=new Float32Array(A[o].vertexPackage.verticesCount);for(let n=0;n<s;n++){let A=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;let i=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;let o=[];for(let A=0;A<i;A++){let A=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT;let i=e.getUint32(r,!0);r+=Uint32Array.BYTES_PER_ELEMENT,t.fill(n,A,A+i),o.push({vertexColorOffset:A,vertexColorCount:i,batchId:n})}a[A]=o}lo(A[o].vertexPackage,t,void 0)}else{let t=A[o].vertexPackage.instanceCount,n=A[o].vertexPackage.instanceBuffer,B=A[o].vertexPackage.instanceMode,E=new Float32Array(t),c=[];for(let t=0;t<s;t++){let t=e.getUint32(r,!0);c.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===i&&(e.getUint32(r,!0),r+=Uint32Array.BYTES_PER_ELEMENT)}let C=17===B?16:28;C*=Float32Array.BYTES_PER_ELEMENT;for(let e=0;e<t;e++){E[e]=e;let t=e*B*Float32Array.BYTES_PER_ELEMENT+C;Cesium.Color.unpack(n,t,Co);let r=2===i?c[e]:Co.red+256*Co.green+Co.blue*fo;void 0===a[r]&&(a[r]={vertexColorCount:1,instanceIds:[],vertexColorOffset:e}),a[r].instanceIds.push(e)}lo(A[o].vertexPackage,E,1)}}}}(A,n,e,i,r.geoPackage,r.version),r};class uo{constructor(t,e,{width:r,height:n,colorDepth:A,format:i}){if(this.format=i,this.offset=e,this.depth=A,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 _o(t,e,r,n,{width:A=0,height:i=0,icon:o=!1}={}){const s=new DataView(e,r,n);let a,B,E,c,C;o?(a=s.getUint32(0,!0),B=s.getUint32(4,!0)/1|0,E=s.getUint32(8,!0)/2|0,c=s.getUint16(14,!0),C=s.getUint32(32,!0)):(!function(t){if(19778!==t)throw new Error(\`Invalid magic byte 0x${o}t.toString(16)}\`)}(s.getUint16(0,!0)),a=14+s.getUint32(14,!0),B=s.getUint32(18,!0),E=s.getUint32(22,!0),c=s.getUint16(28,!0),C=s.getUint32(46,!0)),0===C&&c<=8&&(C=1<<c);const f=0===B?A:B,l=0===E?i:E,u=new Uint8Array(s.buffer,s.byteOffset+a,s.byteLength-a),_=t.byteLength===f*l*4,D=C?function(t,e,r,{width:n,height:A,colorDepth:i,colorCount:o,icon:s}){if(8!==i&&4!==i&&2!==i&&1!==i)throw new Error(\`A color depth of ${o}i} is not supported\`);const a=new uo(r,0,{width:o,height:1,colorDepth:32,format:"BGRA"}),B=new uo(r,a.offset+a.size,{width:n,height:A,colorDepth:i,format:"C"}),E=s?new uo(r,B.offset+B.size,{width:n,height:A,colorDepth:1,format:"A"}):null,c=t;let C=0;for(let t=0;t<A;t++)for(let r=0;r<n;r++){const n=B.get(r,A-t-1,"C");c[C++]=a.get(n,0,"R"),c[C++]=a.get(n,0,"G"),c[C++]=a.get(n,0,"B"),e&&(c[C++]=E&&E.get(r,A-t-1,"A")?0:255)}return c}(t,_,u,{width:f,height:l,colorDepth:c,colorCount:C,icon:o}):function(t,e,r,{width:n,height:A,colorDepth:i,icon:o}){if(32!==i&&24!==i)throw new Error(\`A color depth of ${o}i} is not supported\`);const s=new uo(r,0,{width:n,height:A,colorDepth:i,format:"BGRA"}),a=24===i&&o?new uo(r,s.offset+s.size,{width:n,height:A,colorDepth:1,format:"A"}):null,B=t;let E=0;for(let t=0;t<A;t++)for(let r=0;r<n;r++)B[E++]=s.get(r,A-t-1,"R"),B[E++]=s.get(r,A-t-1,"G"),B[E++]=s.get(r,A-t-1,"B"),e&&(B[E++]=32===i?s.get(r,A-t-1,"A"):a&&a.get(r,A-t-1,"A")?0:255);return B}(t,_,u,{width:f,height:l,colorDepth:c,icon:o});return D}var Do=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}),Ro={UNSIGNED_BYTE:Do.UNSIGNED_BYTE,UNSIGNED_SHORT:Do.UNSIGNED_SHORT,UNSIGNED_INT:Do.UNSIGNED_INT,FLOAT:Do.FLOAT,HALF_FLOAT:Do.HALF_FLOAT_OES,UNSIGNED_INT_24_8:Do.UNSIGNED_INT_24_8,UNSIGNED_SHORT_4_4_4_4:Do.UNSIGNED_SHORT_4_4_4_4,UNSIGNED_SHORT_5_5_5_1:Do.UNSIGNED_SHORT_5_5_5_1,UNSIGNED_SHORT_5_6_5:Do.UNSIGNED_SHORT_5_6_5,toWebGLConstant:function(t,e){switch(t){case Ro.UNSIGNED_BYTE:return Do.UNSIGNED_BYTE;case Ro.UNSIGNED_SHORT:return Do.UNSIGNED_SHORT;case Ro.UNSIGNED_INT:return Do.UNSIGNED_INT;case Ro.FLOAT:return Do.FLOAT;case Ro.HALF_FLOAT:return e.webgl2?Do.HALF_FLOAT:Do.HALF_FLOAT_OES;case Ro.UNSIGNED_INT_24_8:return Do.UNSIGNED_INT_24_8;case Ro.UNSIGNED_SHORT_4_4_4_4:return Do.UNSIGNED_SHORT_4_4_4_4;case Ro.UNSIGNED_SHORT_5_5_5_1:return Do.UNSIGNED_SHORT_5_5_5_1;case Ro.UNSIGNED_SHORT_5_6_5:return Ro.UNSIGNED_SHORT_5_6_5}},isPacked:function(t){return t===Ro.UNSIGNED_INT_24_8||t===Ro.UNSIGNED_SHORT_4_4_4_4||t===Ro.UNSIGNED_SHORT_5_5_5_1||t===Ro.UNSIGNED_SHORT_5_6_5},sizeInBytes:function(t){switch(t){case Ro.UNSIGNED_BYTE:return 1;case Ro.UNSIGNED_SHORT:case Ro.UNSIGNED_SHORT_4_4_4_4:case Ro.UNSIGNED_SHORT_5_5_5_1:case Ro.UNSIGNED_SHORT_5_6_5:case Ro.HALF_FLOAT:return 2;case Ro.UNSIGNED_INT:case Ro.FLOAT:case Ro.UNSIGNED_INT_24_8:return 4}},validate:function(t){return t===Ro.UNSIGNED_BYTE||t===Ro.UNSIGNED_SHORT||t===Ro.UNSIGNED_INT||t===Ro.FLOAT||t===Ro.HALF_FLOAT||t===Ro.UNSIGNED_INT_24_8||t===Ro.UNSIGNED_SHORT_4_4_4_4||t===Ro.UNSIGNED_SHORT_5_5_5_1||t===Ro.UNSIGNED_SHORT_5_6_5}},Io=Object.freeze(Ro),To={DEPTH_COMPONENT:Do.DEPTH_COMPONENT,DEPTH_STENCIL:Do.DEPTH_STENCIL,ALPHA:Do.ALPHA,RGB:Do.RGB,RGBA:Do.RGBA,LUMINANCE:Do.LUMINANCE,LUMINANCE_ALPHA:Do.LUMINANCE_ALPHA,RGB_DXT1:Do.COMPRESSED_RGB_S3TC_DXT1_EXT,RGBA_DXT1:Do.COMPRESSED_RGBA_S3TC_DXT1_EXT,RGBA_DXT3:Do.COMPRESSED_RGBA_S3TC_DXT3_EXT,RGBA_DXT5:Do.COMPRESSED_RGBA_S3TC_DXT5_EXT,RGB_PVRTC_4BPPV1:Do.COMPRESSED_RGB_PVRTC_4BPPV1_IMG,RGB_PVRTC_2BPPV1:Do.COMPRESSED_RGB_PVRTC_2BPPV1_IMG,RGBA_PVRTC_4BPPV1:Do.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG,RGBA_PVRTC_2BPPV1:Do.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG,RGBA_ASTC:Do.COMPRESSED_RGBA_ASTC_4x4_WEBGL,RGB_ETC1:Do.COMPRESSED_RGB_ETC1_WEBGL,RGB8_ETC2:Do.COMPRESSED_RGB8_ETC2,RGBA8_ETC2_EAC:Do.COMPRESSED_RGBA8_ETC2_EAC,RGBA_BC7:Do.COMPRESSED_RGBA_BPTC_UNORM,componentsLength:function(t){switch(t){case To.RGB:return 3;case To.RGBA:return 4;case To.LUMINANCE_ALPHA:return 2;case To.ALPHA:case To.LUMINANCE:default:return 1}},validate:function(t){return t===To.DEPTH_COMPONENT||t===To.DEPTH_STENCIL||t===To.ALPHA||t===To.RGB||t===To.RGBA||t===To.LUMINANCE||t===To.LUMINANCE_ALPHA||t===To.RGB_DXT1||t===To.RGBA_DXT1||t===To.RGBA_DXT3||t===To.RGBA_DXT5||t===To.RGB_PVRTC_4BPPV1||t===To.RGB_PVRTC_2BPPV1||t===To.RGBA_PVRTC_4BPPV1||t===To.RGBA_PVRTC_2BPPV1||t===To.RGBA_ASTC||t===To.RGB_ETC1||t===To.RGB8_ETC2||t===To.RGBA8_ETC2_EAC||t===To.RGBA_BC7},isColorFormat:function(t){return t===To.ALPHA||t===To.RGB||t===To.RGBA||t===To.LUMINANCE||t===To.LUMINANCE_ALPHA},isDepthFormat:function(t){return t===To.DEPTH_COMPONENT||t===To.DEPTH_STENCIL},isCompressedFormat:function(t){return t===To.RGB_DXT1||t===To.RGBA_DXT1||t===To.RGBA_DXT3||t===To.RGBA_DXT5||t===To.RGB_PVRTC_4BPPV1||t===To.RGB_PVRTC_2BPPV1||t===To.RGBA_PVRTC_4BPPV1||t===To.RGBA_PVRTC_2BPPV1||t===To.RGBA_ASTC||t===To.RGB_ETC1||t===To.RGB8_ETC2||t===To.RGBA8_ETC2_EAC||t===To.RGBA_BC7},isDXTFormat:function(t){return t===To.RGB_DXT1||t===To.RGBA_DXT1||t===To.RGBA_DXT3||t===To.RGBA_DXT5},isPVRTCFormat:function(t){return t===To.RGB_PVRTC_4BPPV1||t===To.RGB_PVRTC_2BPPV1||t===To.RGBA_PVRTC_4BPPV1||t===To.RGBA_PVRTC_2BPPV1},isASTCFormat:function(t){return t===To.RGBA_ASTC},isETC1Format:function(t){return t===To.RGB_ETC1},isETC2Format:function(t){return t===To.RGB8_ETC2||t===To.RGBA8_ETC2_EAC},isBC7Format:function(t){return t===To.RGBA_BC7},compressedTextureSizeInBytes:function(t,e,r){switch(t){case To.RGB_DXT1:case To.RGBA_DXT1:case To.RGB_ETC1:case To.RGB8_ETC2:return Math.floor((e+3)/4)*Math.floor((r+3)/4)*8;case To.RGBA_DXT3:case To.RGBA_DXT5:case To.RGBA_ASTC:case To.RGBA8_ETC2_EAC:return Math.floor((e+3)/4)*Math.floor((r+3)/4)*16;case To.RGB_PVRTC_4BPPV1:case To.RGBA_PVRTC_4BPPV1:return Math.floor((Math.max(e,8)*Math.max(r,8)*4+7)/8);case To.RGB_PVRTC_2BPPV1:case To.RGBA_PVRTC_2BPPV1:return Math.floor((Math.max(e,16)*Math.max(r,8)*2+7)/8);case To.RGBA_BC7:return Math.ceil(e/4)*Math.ceil(r/4)*16;default:return 0}},textureSizeInBytes:function(t,e,r,n){var A=To.componentsLength(t);return Io.isPacked(e)&&(A=1),A*Io.sizeInBytes(e)*r*n},alignmentInBytes:function(t,e,r){var n=To.textureSizeInBytes(t,e,r,1)%4;return 0===n?4:2===n?2:1},createTypedArray:function(t,e,r,n){var A=Io.sizeInBytes(e);return new(A===Uint8Array.BYTES_PER_ELEMENT?Uint8Array:A===Uint16Array.BYTES_PER_ELEMENT?Uint16Array:A===Float32Array.BYTES_PER_ELEMENT&&e===Io.FLOAT?Float32Array:Uint32Array)(To.componentsLength(t)*r*n)},flipY:function(t,e,r,n,A){if(1===A)return t;for(var i=To.createTypedArray(e,r,n,A),o=To.componentsLength(e),s=n*o,a=0;a<A;++a)for(var B=a*n*o,E=(A-a-1)*n*o,c=0;c<s;++c)i[E+c]=t[B+c];return i},toInternalFormat:function(t,e,r){if(!r.webgl2)return t;if(t===To.DEPTH_STENCIL)return Do.DEPTH24_STENCIL8;if(t===To.DEPTH_COMPONENT){if(e===Io.UNSIGNED_SHORT)return Do.DEPTH_COMPONENT16;if(e===Io.UNSIGNED_INT)return Do.DEPTH_COMPONENT24}if(e===Io.FLOAT)switch(t){case To.RGBA:return Do.RGBA32F;case To.RGB:return Do.RGB32F;case To.RG:return Do.RG32F;case To.R:return Do.R32F}if(e===Io.HALF_FLOAT)switch(t){case To.RGBA:return Do.RGBA16F;case To.RGB:return Do.RGB16F;case To.RG:return Do.RG16F;case To.R:return Do.R16F}return t}},ho=Object.freeze(To);const Fo=4369,Po=6410;function Lo(t,e,r,n,A,i){const o=function(t,e,r,n){let A=t.length,i=r,o=n,s=0;for(;i>0&&o>0;){if(s+=ho.compressedTextureSizeInBytes(e,i,o),i>>=1,o>>=1,0===i&&0===o)break;i=Math.max(i,1),o=Math.max(o,1)}return s===A}(t,r,A,i);if(!o)return null;const s=r===Po||r===Fo;let a=0,B=A,E=i;const c=[];do{let n=ho.compressedTextureSizeInBytes(r,B,E),A=new Uint8Array(t.buffer,e+a,n);c.push(A),B=Math.max(B>>1,1),E=Math.max(E>>1,1),a+=n}while(a<t.byteLength&&o);return{flipY:s,mipmap:c}}const Oo={SVC_Vertex:1,SVC_Normal:2,SVC_VertexColor:4,SVC_SecondColor:8,SVC_TexutreCoord:16,SVC_TexutreCoordIsW:32};function yo(t,e){const r={};if(t.compressOptions){let e=t.compressOptions;(e&Oo.SVC_Vertex)===Oo.SVC_Vertex&&(r.COMPRESS_VERTEX=1),(e&Oo.SVC_Normal)===Oo.SVC_Normal&&(r.COMPRESS_NORMAL=1),(e&Oo.SVC_VertexColor)===Oo.SVC_VertexColor&&(r.COMPRESS_COLOR=1),(e&Oo.SVC_TexutreCoord)===Oo.SVC_TexutreCoord&&(r.COMPRESS_TEXCOORD=1)}e.push(r)}function Mo(t){if(t&&ht(t)){const e=[];for(const r in t)e.push(t[r]);return e}return t}function No(t,e){const r={},n=t.compressOptions;(n&Oo.SVC_Vertex)===Oo.SVC_Vertex&&(r.decode_position_min=Mo(t.minVerticesValue),r.decode_position_normConstant=Mo(t.vertCompressConstant)),(n&Oo.SVC_Normal)===Oo.SVC_Normal&&(r.normal_rangeConstant=Mo(t.normalRangeConstant)),(n&Oo.SVC_TexutreCoord)===Oo.SVC_TexutreCoord&&(t.texCoordCompressConstant.length>0&&(r.decode_texCoord0_min=Mo(t.minTexCoordValue[0]),r.decode_texCoord0_normConstant=Mo(t.texCoordCompressConstant[0]),r.decode_texCoord0_vNormConstant=Mo(t.texCoordCompressConstant[0])),t.texCoordCompressConstant.length>1&&(r.decode_texCoord1_min=Mo(t.minTexCoordValue[1]),r.decode_texCoord1_normConstant=Mo(t.texCoordCompressConstant[1]),r.decode_texCoord1_vNormConstant=Mo(t.texCoordCompressConstant[1])),t.texCoordCompressConstant.length>2&&(r.decode_texCoord2_min=Mo(t.minTexCoordValue[2]),r.decode_texCoord2_normConstant=Mo(t.texCoordCompressConstant[2])),t.texCoordCompressConstant.length>3&&(r.decode_texCoord3_min=Mo(t.minTexCoordValue[3]),r.decode_texCoord3_normConstant=Mo(t.texCoordCompressConstant[3])),t.texCoordCompressConstant.length>4&&(r.decode_texCoord4_min=Mo(t.minTexCoordValue[4]),r.decode_texCoord4_normConstant=Mo(t.texCoordCompressConstant[4])),t.texCoordCompressConstant.length>5&&(r.decode_texCoord5_min=Mo(t.minTexCoordValue[5]),r.decode_texCoord5_normConstant=Mo(t.texCoordCompressConstant[5])),t.texCoordCompressConstant.length>6&&(r.decode_texCoord6_min=Mo(t.minTexCoordValue[6]),r.decode_texCoord6_normConstant=Mo(t.texCoordCompressConstant[6])),t.texCoordCompressConstant.length>7&&(r.decode_texCoord7_min=Mo(t.minTexCoordValue[7]),r.decode_texCoord7_normConstant=Mo(t.texCoordCompressConstant[7]))),e.push(r)}function So(t,e){var r,n,A,i=t.bytesOffset,o=vi.parseBuffer(t.buffer,i),s=o.geoPackage,a=o.groupNode.pageLods,B=[],E=[],c=[],C=[],f=[],l=[],u=[],_=[],D=[];if(!a[0].geodes[0])return null;var R=a[0].geodes[0].matrix;const I=[];for(var T={},h=0;h<o.materials.material.length;h++)T[o.materials.material[h].material.id]=o.materials.material[h].material;var F=Number.MAX_VALUE,P=Number.MAX_VALUE,L=Number.MAX_VALUE,O=Number.MIN_VALUE,y=Number.MIN_VALUE,M=Number.MIN_VALUE;for(var N in s){var S=s[N].vertexPackage;r=S.verticesCount;var d=S.vertexAttributes[0].typedArray.buffer,U=S.vertexAttributes[0].typedArray.byteOffset,G=S.vertexAttributes[0].componentsPerAttribute;A=new(ue(S.vertexAttributes[0].componentDatatype))(d,S.vertexAttributes[0].offsetInBytes+U,r*G);const t=Mo(S.minVerticesValue)||[0,0,0],e=Mo(S.vertCompressConstant)||0;for(let n=0;n<r;n++){var m=A[n*G]*e+t[0],b=A[n*G+1]*e+t[1],p=A[n*G+2]*e+t[2];F=Math.min(F,m),P=Math.min(P,b),L=Math.min(L,p),O=Math.max(O,m),y=Math.max(y,b),M=Math.max(M,p)}B.push(A),Zo("aColor",S,d,r,C),Zo("aTexCoord0",S,d,r,c),Zo("aTextureCoordMatrix",S,d,r,I),Zo("batchId",S,d,r,f),yo(S,u),No(S,_);var w=s[N].arrIndexPackage[0].indicesTypedArray,H=w.byteLength/s[N].arrIndexPackage[0].indicesCount;n=new(4===H?Uint32Array:2===H?Uint16Array:Uint8Array)(w.buffer,(s[N].arrIndexPackage[0].bytesOffset||0)+w.byteOffset,s[N].arrIndexPackage[0].indicesCount),E.push(n),n.length,D.push(r);var K=s[N].arrIndexPackage[0].materialCode;l.push(T[K])}var g=[F,P,L],V=[O,y,M];const X=function(t,e,r,n,A,i,o,s,a,B,E,c,C,f,l,u,_,D){let R=0;for(const t in a)a[t].width*a[t].height*4>R&&(R=a[t].width*a[t].height*4);(!mo||R>mo)&&(Go=new Uint8ClampedArray(R+Uo),mo=R);const I=[],T={magFilter:9729,minFilter:9729,wrapS:10497,wrapT:10497},h={},F={},P=[],L=[],O=[];for(let B=0;B<r.length;B++){const R=e[B],y=t[B],M=r[B],N=A&&A[B]&&A[B],S=i&&i[B],d=n&&n[B]&&n[B],U=o&&o[B]&&o[B],G=s&&s[B]&&s[B],m={POSITION:{array:M,componentType:_e(M.constructor),count:y,byteOffset:M.byteOffset,byteStride:0,byteLength:M.byteLength,type:De(M.length/y),itemSize:M.length/y,name:"POSITION",min:E,max:c}};P.indexOf(M.buffer)<0&&P.push(M.buffer),N&&xo(m,"TEXCOORD_0",N,y,P),S&&xo(m,"TextureCoordMatrix",S,y,P),d&&xo(m,"NORMAL",d,y,P),U&&xo(m,"COLOR_0",U,y,P),G&&xo(m,"_BATCHID",G,y,P);const b={attributes:m,material:B,compressDefines:l[B],compressUniforms:u[B],indices:{array:R.slice(),itemSize:1,byteLength:R.byteLength,byteOffset:0,byteStride:0,name:R,count:R.length,componentType:5123},mode:4};P.push(b.indices.array.buffer);const p={primitives:[b],index:B};F[B]=p;const w={mesh:B,nodeIndex:B,matrix:D};h[B]=w,L.push({nodes:[w]});const H=f[B],K={uFillForeColor:[1,1,1,1]};let g=H.ambient;K.ambientColor=[g.r,g.g,g.b,g.a];let V=H.diffuse;K.uDiffuseColor=[V.r,V.g,V.b,V.a];let X=H.specular;K.specularColor=[X.r,X.g,X.b,X.a],K.shininess=H.shininess,K.bTransparentSorting=H.transparentsorting;let J=H.textureunitstates;if(J.length){K.uTexMatrix=J[0].textureunitstate.texmodmatrix;const t=a[J[0].textureunitstate.id];if(K.uTexture0Width=t.width,J[1]){const t=a[J[1].textureunitstate.id];K.uTexture1Width=t.width}}O.push({pbrMetallicRoughness:{baseColorFactor:[.8,.8,.8,1],metallicFactor:0,roughnessFactor:.5},extensions:{KHR_techniques_webgl:{technique:0,values:K}}}),I.push(wo(B,f,C,a,_).then((t=>{if(!t)return null;const{array:e,mipmap:r,width:n,height:A,format:i,flipY:o}=t;if(e&&P.indexOf(e.buffer)<0&&P.push(e.buffer),r)for(let t=0;t<r.length;t++)e&&P.indexOf(r[t].buffer)<0&&P.push(r[t].buffer);let s=T;return r&&(s={magFilter:T.magFilter,minFilter:9987,wrapS:T.wrapS,wrapT:T.wrapT}),{materialIndex:B,image:{mipmap:r,array:e,flipY:!!o,width:n,height:A,mimeType:"image/bmp"},sampler:s,format:i,source:B}})))}return Promise.all(I).then((t=>{t=t.filter((t=>!!t));for(let e=0;e<t.length;e++){const{materialIndex:r}=t[e];let n="uTexture";O[r].extensions.KHR_techniques_webgl.values.uTexture&&(n="uTexture2"),O[r].extensions.KHR_techniques_webgl.values[n]={"index":e,"texCoord":r},delete t[e].materialIndex}return{transferables:P,gltf:{"asset":{"generator":"S3M","version":"2.0"},"scene":0,"scenes":L,"nodes":h,"meshes":F,"materials":O,"skins":[],"animations":null,"textures":t,"transferables":[{},{},{},{},{}]}}}))}(D,E,B,null,c,I,C,f,o.texturePackage,0,g,V,[],l,u,_,e,R);return X.then((({gltf:t,transferables:e})=>({gltf:t,featureTable:{"BATCH_LENGTH":0},transferables:e,pageLods:a})))}vi.multiplyByPoint=function(t,e,r){var n=e.x,A=e.y,i=e.z,o=t[0]*n+t[4]*A+t[8]*i+t[12],s=t[1]*n+t[5]*A+t[9]*i+t[13],a=t[2]*n+t[6]*A+t[10]*i+t[14];return r.x=o,r.y=s,r.z=a,r};const Uo=122;let Go,mo=0;let bo=!1;if("undefined"!=typeof OffscreenCanvas){let t;try{t=new OffscreenCanvas(2,2).getContext("2d",{willReadFrequently:!0})}catch(Un){}t&&"undefined"!=typeof createImageBitmap&&(bo=!0)}const po={};function wo(t,e,r,n,A){const i=Go,o=Uo;return new Promise((function(r){!function(t){if(e[t].textureunitstates[0]){var s=e[t].textureunitstates[0].textureunitstate.id,a=n[s],B=a.arrayBufferView,E=a.nFormat,c=a.internalFormat;if(function(t){return t===vo.RGB_DXT1||t===vo.RGBA_DXT1||t===vo.RGBA_DXT3||t===vo.RGBA_DXT5||t===vo.RGB_PVRTC_4BPPV1||t===vo.RGB_PVRTC_2BPPV1||t===vo.RGBA_PVRTC_4BPPV1||t===vo.RGBA_PVRTC_2BPPV1||t===vo.RGBA_ASTC||t===vo.RGB_ETC1||t===vo.RGB8_ETC2||t===vo.RGBA8_ETC2_EAC||t===vo.RGBA_BC7}(c)&&a.width===a.height){const t=Lo(B,B.byteOffset,c,0,a.width,a.height);if(t){const{mipmap:e,flipY:n}=t;return void r({format:c,mipmap:e,flipY:n,width:a.width,height:a.height})}}let C;C=E>Ui.BGR||E===Ui.LUMINANCE_ALPHA?o+a.width*a.height*4:o/2+a.width*a.height,Xi.decode(i.subarray(o),a.width,a.height,B,E),function(t,e,r){var n=r*(4*e+e%4),A=n+o,i=new DataView(t),o=0;i.setUint16(o,19778,!0),o+=2,i.setUint32(o,A,!0),o+=4,i.setUint32(o,0,!0),o+=4,i.setUint32(o,122,!0),o+=4,i.setUint32(o,108,!0),o+=4,i.setUint32(o,e,!0),o+=4,i.setUint32(o,r,!0),o+=4,i.setUint16(o,1,!0),o+=2,i.setUint16(o,32,!0),o+=2,i.setUint32(o,this.compress,!0),o+=4,i.setUint32(o,n,!0),o+=4,i.setUint32(o,2835,!0),o+=4,i.setUint32(o,2835,!0),o+=4,i.setUint8(o,0,!0),o+=4,i.setUint32(o,0,!0),o+=4,i.setUint32(o,16711680,!0),o+=4,i.setUint32(o,65280,!0),o+=4,i.setUint32(o,255,!0),o+=4,i.setUint32(o,4278190080,!0),o+=4,i.setUint32(o,1466527264,!0),o+=4}(i.buffer,a.width,a.height);let{width:f,height:l}=a;Ho(f)||(f=Ko(f)),Ho(l)||(l=Ko(l));const u=A;let _;u&&(f=Math.min(u,f),l=Math.min(u,l));let D=6408;const R=a.width*a.height*4;!bo||f===a.width&&l===a.height?(_=new Uint8Array(3*R/4),D=6407):(po[R]||(po[R]=new Uint8Array(R)),_=po[R]),_=_o(_,i.buffer,0,C),!bo||f===a.width&&l===a.height||(_=function(t,e,r,n,A){go||(go=new OffscreenCanvas(2,2),Vo=go.getContext("2d"),Xo=new OffscreenCanvas(2,2),Jo=Xo.getContext("2d",{willReadFrequently:!0}));const i=new ImageData(new Uint8ClampedArray(t.buffer),e,r);return go.width=e,go.height=r,Vo.putImageData(i,0,0),Xo.width=n,Xo.height=A,Jo.drawImage(go,0,0,n,A),Jo.getImageData(0,0,n,A).data}(_,a.width,a.height,f,l)),_.buffer===(po[R]&&po[R].buffer)&&(_=new Uint8Array(_)),r({array:_,width:f,height:l,format:D})}else r(null)}(t)}))}function Ho(t){return 0==(t&t-1)&&0!==t}function Ko(t){return Math.pow(2,Math.floor(Math.log(t)/Math.LN2))}let go,Vo,Xo,Jo;const vo={RGB_DXT1:33776,RGBA_DXT1:33777,RGBA_DXT3:33778,RGBA_DXT5:33779,RGB_PVRTC_4BPPV1:35840,RGB_PVRTC_2BPPV1:35841,RGBA_PVRTC_4BPPV1:35842,RGBA_PVRTC_2BPPV1:35843,RGBA_ASTC:37808,RGB_ETC1:36196,RGB8_ETC2:37492,RGBA8_ETC2_EAC:37496,RGBA_BC7:36492};function Zo(t,e,r,n,A){var i=e.attrLocation[t];if(i){const t=e.vertexAttributes[i];if(t.typedArray.buffer!==r)A.push(t.typedArray);else{var o=t.componentsPerAttribute;var s=new(ue(t.componentDatatype))(r,t.offsetInBytes+t.typedArray.byteOffset,n*o);A.push(s)}}else A.push(void 0)}function xo(t,e,r,n,A){t[e]={array:r,componentType:_e(r.constructor),count:n,byteOffset:r.byteOffset,byteStride:0,byteLength:r.byteLength,type:De(r.length/n),itemSize:r.length/n,name:e},A.indexOf(r.buffer)<0&&A.push(r.buffer)}var ko=542327876,Wo=131072,Qo=4,jo=ls("DXT1"),Yo=ls("DXT3"),zo=ls("DXT5"),qo=ls("DX10"),$o=116,ts=512,es=3,rs=2,ns=31,As=0,is=1,os=2,ss=3,as=4,Bs=7,Es=20,cs=21,Cs=28,fs=function(t){var e,r,n=new Int32Array(t,0,ns);if(n[As]!==ko)throw new Error("Invalid magic number in DDS header");if(!n[Es]&Qo)throw new Error("Unsupported format, must contain a FourCC code");var A=n[cs];switch(A){case jo:e=8,r="dxt1";break;case Yo:e=16,r="dxt3";break;case zo:e=16,r="dxt5";break;case $o:r="rgba32f";break;case qo:var i=new Uint32Array(t.slice(128,148));r=i[0];var o=i[1];if(i[2],i[3],i[4],o!==es||r!==rs)throw new Error("Unsupported DX10 texture format "+r);r="rgba32f";break;default:throw new Error("Unsupported FourCC code: "+(s=A,String.fromCharCode(255&s,s>>8&255,s>>16&255,s>>24&255)))}var s;var a=n[os],B=1;a&Wo&&(B=Math.max(1,n[Bs]));var E=!1;n[Cs]&ts&&(E=!0);var c,C=n[as],f=n[ss],l=n[is]+4,u=C,_=f,D=[];A===qo&&(l+=20);if(E)for(var R=0;R<6;R++){if("rgba32f"!==r)throw new Error("Only RGBA32f cubemaps are supported");C=u,f=_;for(var I=Math.log(C)/Math.log(2)+1,T=0;T<I;T++)c=C*f*16,D.push({offset:l,length:c,shape:[C,f]}),T<B&&(l+=c),C=Math.floor(C/2),f=Math.floor(f/2)}else for(T=0;T<B;T++)c=Math.max(4,C)/4*Math.max(4,f)/4*e,D.push({offset:l,length:c,shape:[C,f]}),l+=c,C=Math.floor(C/2),f=Math.floor(f/2);return{shape:[u,_],images:D,format:r,flags:a,cubemap:E}};function ls(t){return t.charCodeAt(0)+(t.charCodeAt(1)<<8)+(t.charCodeAt(2)<<16)+(t.charCodeAt(3)<<24)}const us=Math.PI/180,_s=6378137*Math.PI/180,Ds=85.0511287798;function Rs(t,e,r){if("EPSG:3857"===r)return function(t,e){const r=Ds,n=e[0],A=Math.max(Math.min(r,e[1]),-r);let i;i=0===A?0:Math.log(Math.tan((90+A)*us/2))/us;return t[0]=n*_s,t[1]=i*_s,t}(t,e);if("EPSG:4326"===r||"EPSG:4490"===r||"identity"===r)return Is(t,e);if("baidu"===r)return Is(t,e);throw new Error("unsupported projection:"+r)}function Is(t,e){return t[0]=e[0],t[1]=e[1],t}const Ts=i([]),hs=Fe().draco,Fs=Fe().ktx2,Ps={"pbrMetallicRoughness":{"baseColorFactor":[.5,.5,.5,1],"metallicFactor":0,"roughnessFactor":.5}},Ls={"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 Os(t,e,r,n){const A=[],o=[],s=[];for(let e=0;e<t.meshes.length;e++){const{geometry:r,material:n}=t.meshes[e];let i=Y.getArrayBuffer(r.url);i.xhr.url=r.url,s.push(i.xhr);const a=i.then((t=>({buffer:t})));A.push(a);const B=[];if(ms(n,B),B.length){const t=B.map((t=>{const e=Y.getArrayBuffer(t.url);return e.xhr.url=t.url,s.push(e.xhr),e.then((e=>e&&e.status?null:{buffer:e,mimeType:t.mimeType,format:t.format}))}));A.push(...t)}o[e]=B.length}const a=Promise.all(A).then((A=>{for(let t=0;t<A.length;t++)if(!A[t]||!A[t].buffer)return Promise.resolve(null);const s=[];let a=0;for(let t=0;t<o.length;t++){const e=o[t];s.push({geoBuffer:{data:A[a].buffer.data},textureBuffers:A.slice(a+1,e+a+1).map((t=>({data:t.buffer.data,mimeType:t.mimeType,format:t.format})))}),a+=1+e}const B=function(t,e,r,n,A){const o={asset:{generator:"i3s",version:"2.0"},extensions:{},scene:0,scenes:[{nodes:[]}],nodes:{},meshes:{},materials:[],skins:[],animations:null,textures:[],transferables:[]},s=[];for(let a=0;a<t.meshes.length;a++){let B,{geometry:E,material:c}=t.meshes[a];const C=e[a].geoBuffer.data;if(!C)continue;B=gs(C)?Ms(o,a,E,C,t.transform,t.center,A):Ss(o,a,E,C,t.transform,t.center,A),s.push(B),o.nodes[a]={mesh:a,nodeIndex:a,matrix:i([])},o.scenes[0].nodes[a]=o.nodes[a],c||(c=Ps);const f=Us(a,o,c,e[a].textureBuffers,r,n);s.push(f)}return Promise.all(s).then((()=>({gltf:o,featureTable:{BATCH_LENGTH:0},transferables:o.transferables})))}(t,s,e,n,r);return B}));return a.xhr=s,a}const ys={"magFilter":9728,"minFilter":9728,"wrapR":33071,"wrapS":33071,"wrapT":33071};function Ms(t,e,r,n,A,i,o){const s=r.info.compressedAttributes.attributes.reduce(((t,e,r)=>{const n=Ls[e];if(!n)return t;return t[n.name||e]=r,t}),{});return hs(n,{attributes:s,metadatas:{"POSITION":[{name:"i3s-scale_x",type:"double"},{name:"i3s-scale_y",type:"double"}]},useUniqueIDs:!1,skipAttributeTransform:!1}).then((r=>ds(r,t,e,A,i,o)))}var Ns={position:function(t,e,r){const n=3*t.vertexCount,A=new Float32Array(e,r,n);return t.position={array:A,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 A=new Float32Array(e,r,n);return t.normal={array:A,componentType:5126,itemSize:3,count:n/3,type:"VEC3"},r+=4*n},uv0:function(t,e,r){var n=2*t.vertexCount;const A=new Float32Array(e,r,n);return t.uv0={array:A,componentType:5126,itemSize:2,count:n/2,type:"VEC2"},r+=4*n},color:function(t,e,r){var n=4*t.vertexCount;const A=new Uint8Array(e,r,n);return t.color={array:A,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 A=new Uint32Array(e,r,n);return t.faceRange={array:A,componentType:5125,itemSize:2,count:n/2,type:"VEC2"},r+=4*n},uvRegion:function(t,e,r){var n=4*t.vertexCount;const A=new Uint16Array(e,r,n);return t["uv-region"]={array:A,componentType:5123,itemSize:4,count:n/4,type:"VEC4"},r+=2*n},region:function(t,e,r){var n=4*t.vertexCount;const A=new Uint16Array(e,r,n);return t["uv-region"]={array:A,componentType:5123,itemSize:4,count:n/4,type:"VEC4"},r+=2*n}};function Ss(t,e,r,n,A,i,o){const s={vertexCount:0},a=new DataView(n);try{var B=0;s.vertexCount=a.getUint32(B,1),B+=4,s.featureCount=a.getUint32(B,1),B+=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 E=0;E<e.length;E++)Ns[e[E]]?B=Ns[e[E]](s,n,B):console.error("Unknown decoder for",e[E])}else{const t=r.info;let e=t.ordering,A=t.featureAttributeOrder;const i=null;i&&i.geometryData&&i.geometryData[0]&&i.geometryData[0].params;for(var c=0;c<e.length;c++){var C=Ns[e[c]];C||console.log(e[c]),B=C(s,n,B)}for(var f=0;f<A.length;f++){var l=Ns[A[f]];l||console.log(A[f]),B=l(s,n,B)}}}catch(t){}s.scale_x=1,s.scale_y=1;const u={};for(const t in s){const e=Ls[t]&&Ls[t].name;e&&(u[e]=s[t])}if(s.faceRange){const t=s.faceRange.array,e=t.length/2,r=(_=e)<=255?Uint8Array:_<=65535?Uint16Array:Uint32Array,n=new r(u.POSITION.array.length/3);for(let e=0;e<t.length-1;e+=2){const r=e/2,A=t[e],i=t[e+1];for(let t=A;t<=i;t++)n[3*t]=r,n[3*t+1]=r,n[3*t+2]=r}u._BATCHID={componentType:_e(r),array:n,itemSize:1,count:n.length,type:"SCALAR"}}var _;return ds({attributes:u},t,e,A,i,o)}function ds(t,e,r,n,A,i){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 s=function(t,e,r,n){const A=r;let i,o=[0,0,0,1],s=[0,0];const a=Rs([],r,n);a[2]=r[2];const B=e&&E(Ts,e);return ge(t,(t=>(o[0]=t[0],o[1]=t[1],o[2]=t[2],B||(o=L(o,o,e)),A&&_(o,o,A),Rs(s,o,n),i=o[2],t[0]=s[0]-a[0],t[1]=s[1]-a[1],t[2]=i-a[2],t))),a}(t.attributes.POSITION,n,A,i);e.meshes[r]={primitives:[o],index:r},e.extensions.MAPTALKS_RTC={projCenter:s},e.extensions.CESIUM_RTC={rtcCoord:A};for(const r in t.attributes)Ks(e.transferables,t.attributes[r].array.buffer);return t.indices&&Ks(e.transferables,t.indices.array.buffer),o}function Us(t,e,r,n,A,i){const o=n.map((t=>function(t,e,r,n,A){if("dds"===e){const e=fs(t),n=e.images.map((e=>new Uint8Array(t,e.offset,e.length))),A="dxt1"===e.format?33777:33779;return Promise.resolve({image:{mipmap:n,width:e.shape[0],height:e.shape[1],mimeType:r},sampler:ys,format:A})}if("png"===e||"jpg"===e)return function(t,e){bs||(bs=new OffscreenCanvas(2,2),ps=bs.getContext("2d",{willReadFrequently:!0}));const r=new Blob([new Uint8Array(t)]);return createImageBitmap(r).then((t=>{let{width:r,height:n}=t;ws(r)||(r=Hs(r)),ws(n)||(n=Hs(n));const A=e;A&&(r=Math.min(A,r),n=Math.min(A,n)),bs.width=r,bs.height=n,ps.drawImage(t,0,0,r,n),t.close();const i=ps.getImageData(0,0,r,n);return{width:r,height:n,array:new Uint8Array(i.data)}})).catch((()=>({width:2,height:2,array:new Uint8Array(4)})))}(t,A).then((t=>{t.mimeType=r;return{image:t,sampler:ys,format:6408}}));if("ktx2"===e)return Fs(t,n).then((t=>(t.mimeType=r,{image:t,sampler:ys,format:t.format})))}(t.data,t.format,t.mimeType,A,i).then((t=>{if(t.image)if(t.image.array)Ks(e.transferables,t.image.array.buffer);else if(t.image.mipmap)for(let r=0;r<t.image.mipmap.length;r++)Ks(e.transferables,t.image.mipmap[r].buffer);return t}))));return Promise.all(o).then((n=>{Gs(t,e,r,n)}))}function Gs(t,e,r,n){const A=JSON.parse(JSON.stringify(r)),i=e.textures;n.ptr||(n.ptr=0);for(const t in r)r[t]&&r[t].url?(i.push(n[n.ptr++]),A[t]={index:i.length-1},void 0!==r[t].factor&&(A[t].scale=r[t].factor)):ht(r[t])&&(A[t]=Gs(-1,e,r[t],n));return t>=0&&(e.materials[t]=A),A}function ms(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}):ht(t[r])&&ms(t[r],e)}let bs,ps;function ws(t){return 0==(t&t-1)&&0!==t}function Hs(t){return Math.pow(2,Math.floor(Math.log(t)/Math.LN2))}function Ks(t,e){e&&(t.indexOf(e)>=0||t.push(e))}function gs(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 Vs=[1,0,0,0,0,0,1,0,0,-1,0,0,0,0,0,1],Xs=[0,0,1,0,0,1,0,0,-1,0,0,0,0,0,0,1],Js="undefined"!=typeof TextDecoder?new TextDecoder("utf-8"):null;let vs,Zs,xs=!1;if("undefined"!=typeof OffscreenCanvas){try{Zs=new OffscreenCanvas(2,2).getContext("2d",{willReadFrequently:!0})}catch(Un){}Zs&&"undefined"!=typeof createImageBitmap&&(xs=!0)}const ks=i([]),Ws=[0,0,0],Qs=[],js=[],Ys=[],zs=[];class qs{constructor(t,e,r,n){this.id=t,this.options=e,this.Pt=this.requestImage.bind(this),this.Lt=r,this.Ot={},n(null,{},[])}yt(t){this.Mt||(this.i=t,this.Nt=new Ne,this.Mt=new Pe(this.Pt,lt,t),this.St=new Le(this.Pt,lt,t))}requestImage(t,e){xs?fetch(t).then((t=>t.blob())).then((t=>createImageBitmap(t))).then((t=>{vs.width=t.width,vs.height=t.height,Zs.drawImage(t,0,0);const r=Zs.getImageData(0,0,vs.width,vs.height);e(null,{width:t.width,height:t.height,data:new Uint8Array(r.data)})})):this.Lt("requestImage",{url:t},null,e)}loadTile(t,e){this.yt(t.supportedFormats);const r=t.url,n=t.arraybuffer;if(function(t){return t.indexOf("i3s:")>=0}(r)){const n=t.i3sInfo,A=this.options.services[t.rootIdx].maxTextureSize||1024,i=Os(n,t.supportedFormats,this.options.projection,A);return i.then((t=>{if(delete this.Ot[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:A}=t;t.magic="b3dm",e(null,t,A)})),void(this.Ot[r]=i.xhr)}if(n){delete this.Ot[r];const A=new DataView(n),i=vt(A,0);if("{"===i[0]||" "===i[0]||"<"===i[0]){const A=function(t,e,r){if(Js){const n=new Uint8Array(t,e,r);return Js.decode(n)}return yt(new Uint8Array(t,e,r))}(n,0,n.byteLength),i=JSON.parse(A);this.dt(t.rootIdx,i,n,r,e)}else{const o=A.getFloat32(0,!0);1===o||2===o||3===o?this.Ut(n,r,t,e):this.Gt(n,r,t,i,e)}}else{const n=this.options.services[t.rootIdx];let A=n.urlParams;A&&(A=(r.indexOf("?")>0?"&":"?")+A);const i=r.replace(/\\+/g,"%2B");let o=Y.getArrayBuffer(i+(A||""),n.fetchOptions);const s=o.xhr;o=o.then((n=>{delete this.Ot[r],n&&n.status?e(n):(t.arraybuffer=n&&n.data,this.loadTile(t,e))})).catch((t=>{delete this.Ot[r],e(t)})),this.Ot[r]=s}}Gt(t,e,r,n,A){const i=this.options.services[r.rootIdx];if("b3dm"===n){this.Mt.load(e,t,0,0,{maxTextureSize:i.maxTextureSize||1024}).then((t=>{if(t.error)return void A(t);const{content:e,transferables:n}=this.bt(t,r);A(null,e,n)})).catch((t=>{A(t)}))}else if("pnts"===n){const n=r.transform;this.Nt.load(e,t).then((t=>{const{content:e,transferables:i}=this.wt(t,n,r.rootIdx);A(null,e,i)}))}else if("i3dm"===n){const n=r.transform;this.St.load(e,t,0,0,{maxTextureSize:i.maxTextureSize||1024}).then((t=>{const{content:e,transferables:i}=this.wt(t,n,r.rootIdx);A(null,e,i)}))}else if("cmpt"===n){new de(this.Pt,lt,this.i,i.maxTextureSize||1024).load(e,t,0,0,{maxTextureSize:i.maxTextureSize||1024}).then((t=>{const{content:e,transferables:n}=this.Ht(t,r);A(null,e,n)})).catch((t=>{A(t)}))}}Ut(t,e,r,n){So({buffer:t,bytesOffset:0},this.options.services[r.rootIdx].maxTextureSize||1024).then((t=>{t.gltf.url=e;const{content:A,transferables:i}=this.bt(t,r);if(A.magic="b3dm",t.pageLods){const e=this.Kt(t.pageLods);e.length&&(A.children=e)}n(null,A,i)}))}Kt(t){const e=[];for(let r=0;r<t.length;r++){const n=t[r];if(!n.childTile)continue;const A={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(A)}return e}dt(t,e,r,n,A){return e.dataType&&e.position?void A(null,Je(e)):(e.capabilities,void A(null,e))}Ht(t,e){const{tiles:r}=t,n={magic:"cmpt",content:[]},A=[];for(let t=0;t<r.length;t++){const{magic:i}=r[t];if("b3dm"===i){const{content:i,transferables:o}=this.bt(r[t],e);ra(A,o),n.content.push(i)}else if("i3dm"===i||"pnts"===i){const{transform:i,rootIdx:o}=e,{content:s,transferables:a}=this.wt(r[t],i,o);ra(A,a),n.content.push(s)}else if("cmpt"===i){const{content:i,transferables:o}=this.Ht(r[t],e);ra(A,o),n.content.push(i)}}return{content:n,transferables:A}}bt(t,e){const{gltf:r,transferables:n,featureTable:A}=t,i=function(t){if(!t||!t.meshes)return!1;const e="visited";let r=1;const n=[];for(const A in t.meshes){const i=t.meshes[A],{primitives:o}=i;if(o)for(let t=0;t<o.length;t++){const A=o[t].attributes&&o[t].attributes.POSITION;if(!A||!A.array)continue;A.array.buffer[e]||(A.array.buffer[e]=r++);const i=r-1+"-"+(A.byteOffset||0);if(n.indexOf(i)>=0)return!0;n.push(i)}}return!1}(r);return this.gt(t.gltf),t.gltf.asset||(t.gltf.asset={}),i?(t.gltf.asset.sharePosition=!0,this.Vt(r,A,e.upAxis,e.transform)):this.Xt(r,A,e.upAxis,e.transform),delete t.transferables,{content:t,transferables:n}}wt(t,e,r){const{featureTable:A}=t,i=t.pnts||t.i3dm;let o=A&&A.RTC_CENTER||[0,0,0];if(A.EAST_NORTH_UP&&!i.NORMAL_UP&&!i.NORMAL_UP_OCT32P){const e=new Float32Array(3*i.POSITION.array.length),r=[],A=[],s=[];ge(i.POSITION,((t,i)=>{_(s,t,o),ae(s,null,r),n(A,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*i,9*(i+1)),A)})),i.INSTANCE_ROTATION={byteStride:0,byteOffset:0,itemSize:9,componentType:5126,array:e},t.transferables.push(e.buffer)}const s={xmin:1/0,xmax:-1/0,ymin:1/0,ymax:-1/0,hmin:1/0,hmax:-1/0};ta(i.POSITION.array,3,o,ks,s);const a=ea(s),B=l([],a),E=[1/0,1/0,1/0],c=[-1/0,-1/0,-1/0];ge(i.POSITION,(t=>{t[0]=t[0]+o[0]-B[0],t[1]=t[1]+o[1]-B[1],t[2]=t[2]+o[2]-B[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]),t[0]>c[0]&&(c[0]=t[0]),t[1]>c[1]&&(c[1]=t[1]),t[2]>c[2]&&(c[2]=t[2])})),i.POSITION.min=E,i.POSITION.max=c,e&&L(a,a,e);const C=this.Jt(a);t.rtcCenter=B,t.rtcCoord=C,t.rootIdx=r;const f=t.transferables;return delete t.transferables,{content:t,transferables:f}}gt(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],A=r[1],i=r[2],o=r[3];let s=!0;for(let t=4;t<r.length;t+=4)if(r[t]!==n||r[t+1]!==A||r[t+2]!==i||r[t+3]!==o){s=!1;break}s&&(e[t].image.color=[n/255,A/255,i/255,o/255],delete e[t].image.array)}}}abortTileLoading(t,e){const r=this.Ot[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.Ot[t.url],e(null)}vt(t,e,r,n){let A=e&&e.RTC_CENTER||t.extensions&&t.extensions.CESIUM_RTC&&t.extensions.CESIUM_RTC.center,s=Vs;"X"===(r=r&&r.toUpperCase())?s=Xs:"Z"===r&&(s=ks),t.extensions=t.extensions||{},t.extensions.CESIUM_RTC||(t.extensions.CESIUM_RTC={}),A&&(t.extensions.CESIUM_RTC.center=A),t.extensions.MAPTALKS_RTC={};const a={xmin:1/0,xmax:-1/0,ymin:1/0,ymax:-1/0,hmin:1/0,hmax:-1/0};Ue(t,(t=>{if(!(t.attributes&&t.attributes.POSITION))return;const e=i(Qs);t.matrices&&na(e,t.matrices);const r=t.attributes.POSITION.array,B=t.attributes.POSITION.itemSize;o(e,s,e),n&&o(e,n,e),ta(r,B,A||Ws,e,a,t.compressUniforms)}));const B=ea(a);return{rtcCenter:A,modelCenter:B,upAxisTransform:s}}Vt(t,e,r,n){const{modelCenter:A,upAxisTransform:s,rtcCenter:a}=this.vt(t,e,r),B=l([],A);n&&L(A,A,n),t.extensions.CESIUM_RTC.rtcCoord=this.Jt(A),a||(Ue(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=i(Qs);t.matrices&&na(r,t.matrices),o(r,s,r);const n=function(t,e){var r=e[0],n=e[1],A=e[2],i=e[3],o=e[4],s=e[5],a=e[6],B=e[7],E=e[8],c=e[9],C=e[10],f=e[11],l=e[12],u=e[13],_=e[14],D=e[15],R=r*s-n*o,I=r*a-A*o,T=r*B-i*o,h=n*a-A*s,F=n*B-i*s,P=A*B-i*a,L=E*u-c*l,O=E*_-C*l,y=E*D-f*l,M=c*_-C*u,N=c*D-f*u,S=C*D-f*_,d=R*S-I*N+T*M+h*y-F*O+P*L;return d?(d=1/d,t[0]=(s*S-a*N+B*M)*d,t[1]=(A*N-n*S-i*M)*d,t[2]=(u*P-_*F+D*h)*d,t[3]=(C*F-c*P-f*h)*d,t[4]=(a*y-o*S-B*O)*d,t[5]=(r*S-A*y+i*O)*d,t[6]=(_*T-l*P-D*I)*d,t[7]=(E*P-C*T+f*I)*d,t[8]=(o*N-s*y+B*L)*d,t[9]=(n*y-r*N-i*L)*d,t[10]=(l*F-u*T+D*R)*d,t[11]=(c*T-E*F-f*R)*d,t[12]=(s*O-o*M-a*L)*d,t[13]=(r*M-n*O+A*L)*d,t[14]=(u*I-l*h-_*R)*d,t[15]=(E*h-c*I+C*R)*d,t):null}(js,r),A=[1/0,1/0,1/0],a=[-1/0,-1/0,-1/0];ge(e,(t=>{L(t,t,r),t[0]=t[0]-B[0],t[1]=t[1]-B[1],t[2]=t[2]-B[2],L(t,t,n),t[0]<A[0]&&(A[0]=t[0]),t[1]<A[1]&&(A[1]=t[1]),t[2]<A[2]&&(A[2]=t[2]),t[0]>a[0]&&(a[0]=t[0]),t[1]>a[1]&&(a[1]=t[1]),t[2]>a[2]&&(a[2]=t[2])})),e.min=A,e.max=a,e.array.buffer.projected||(e.array.buffer.projected={}),e.array.buffer.projected[e.byteOffset]=1}})),t.extensions.CESIUM_RTC.center=B)}Xt(t,e,r,n){const{modelCenter:A,rtcCenter:i}=this.vt(t,e,r,n),o=this.Zt(A);t.extensions.MAPTALKS_RTC.projCenter=o,t.extensions.CESIUM_RTC.rtcCoord=this.Jt(A),Ue(t,(e=>{if(e.attributes&&e.attributes.POSITION){e.attributes.NORMAL&&this.xt(e.attributes.NORMAL,e.matrices,r),e.attributes.TANGENT&&this.xt(e.attributes.TANGENT,e.matrices,r);const{newPositions:A}=this.kt(e.attributes.POSITION,e.matrices,i,t.extensions.MAPTALKS_RTC,r,n,e.compressUniforms);let{componentType:o}=e.attributes.POSITION;5126!==o&&(e.attributes.POSITION.array=new Float32Array(A))}}));for(const e in t.nodes){t.nodes[e].matrix=ks}}Zt(t){0===M(t)?u(Ys,0,0,-6378137):pt(Ys,t);const e=this.options.projection;Rs(zs,Ys,e);const r=Ys[2],n=[];return n[0]=zs[0],n[1]=zs[1],n[2]=r,n}xt(t,e,r){let i;i="Y"===r?Vs:"X"===r?Xs:ks;const o=A([],i);if(na(o,e),E(o,ks))return;const s=n([],o),a=[];ge(t,(t=>(function(t,e,r){var n=e[0],A=e[1],i=e[2];t[0]=n*r[0]+A*r[3]+i*r[6],t[1]=n*r[1]+A*r[4]+i*r[7],t[2]=n*r[2]+A*r[5]+i*r[8]}(a,t,s),h(a,a),l(t,a),a)))}kt(t,e,r,n,A,o,s){if(t.array.buffer.projected&&t.array.buffer.projected[t.byteOffset])return;const a=i([]);na(a,e);const B=this.options.projection;A=A&&A.toUpperCase();const c=r;let C=null;"Y"===A?C=Vs:"X"===A&&(C=Xs);let f=[0,0,0,1],l=[0,0,0],D=[0,0];const R=n.projCenter,I=o&&E(ks,o),T=t.min=t.min||[],h=t.max=t.max||[];u(T,1/0,1/0,1/0),u(h,-1/0,-1/0,-1/0);const F=s||{},{decode_position_min:P,decode_position_normConstant:O}=F;let y=[0,0,0,0],N=1;P&&(y=P),O&&(N=O);const S=[];return ge(t,(t=>{if(f[0]=t[0]*N+y[0],f[1]=t[1]*N+y[1],f[2]=t[2]*N+y[2],f=L(f,f,a),C&&(f=L(f,f,C)),c&&_(f,f,c),o&&!I&&(f=L(f,f,o)),0===M(f)?u(l,0,0,-6378137):pt(l,f),Rs(D,l,B),t instanceof Float32Array)t[0]=D[0]-R[0],t[1]=D[1]-R[1],t[2]=l[2]-R[2];else{const e=D[0]-R[0],r=D[1]-R[1],n=l[2]-R[2];S.push(e),S.push(r),S.push(n),S.push(t[3])}return t[0]<T[0]&&(T[0]=t[0]),t[1]<T[1]&&(T[1]=t[1]),t[2]<T[2]&&(T[2]=t[2]),t[0]>h[0]&&(h[0]=t[0]),t[1]>h[1]&&(h[1]=t[1]),t[2]>h[2]&&(h[2]=t[2]),t})),t.array.buffer.projected||(t.array.buffer.projected={}),t.array.buffer.projected[t.byteOffset]=1,{projCenter:R,newPositions:S}}Jt(t){return 0===M(t)?u([],0,0,-6378137):pt([],t)}onRemove(){}}const $s=[];function ta(t,e,r,n,A,i){const o=i||{},{decode_position_min:s,decode_position_normConstant:a}=o;let B=[0,0,0,0],E=1;s&&(B=s),a&&(E=a);for(let i=0,o=t.length;i<o;i+=e){const{xmin:o,ymin:s,xmax:a,ymax:c,hmin:C,hmax:f}=A;u($s,t[i]*E+B[0],t[i+1]*E+B[1],t[i+2]*E+B[2]),L($s,$s,n);const l=_($s,r,$s);l[0]<o&&(A.xmin=l[0]),l[0]>a&&(A.xmax=l[0]),l[1]<s&&(A.ymin=l[1]),l[1]>c&&(A.ymax=l[1]),e>2&&(l[2]<C&&(A.hmin=l[2]),l[2]>f&&(A.hmax=l[2]))}}function ea(t){const{xmax:e,ymax:r,xmin:n,ymin:A,hmin:i,hmax:o}=t,s=[(n+e)/2,(A+r)/2,(i+o)/2];return e===-1/0&&(s[0]=0),r===-1/0&&(s[1]=0),o===-1/0&&(s[2]=0),isNaN(s[2])&&(s[2]=0),s}function ra(t,e){for(let r=0;r<e.length;r++)t.indexOf(e[r])<0&&t.push(e[r])}function na(t,e){const r=t;for(let t=e.length-1;t>=0;t--)o(r,e[t],r);return r}let Aa=0;class ia{constructor(t){this.workerId=t,this.workers={},this.Wt={}}addLayer({actorId:t,mapId:e,layerId:r,params:n},A){if(this.Qt(e,r))return;const i=this.jt(e,r),o=n.options,s=this.send.bind(this,t);this.workers[i]=new qs(r,o,s,A)}removeLayer({mapId:t,layerId:e},r){const n=this.Qt(t,e),A=this.jt(t,e);delete this.workers[A],n&&n.onRemove(r)}loadTile({mapId:t,layerId:e,params:r},n){const A=this.Qt(t,e);A&&A.loadTile(r,n)}abortTileLoading({mapId:t,layerId:e,params:r},n){const A=this.Qt(t,e);A&&A.abortTileLoading(r,n)}receive(t){const e=t.callback,r=this.Wt[e];delete this.Wt[e],r&&t.error?r(new Error(t.error)):r&&r(null,t.data)}send(t,e,r,n,A){const i=A?\`${o}t}-${o}Aa++}\`:null;A&&(this.Wt[i]=A),postMessage({type:"<request>",workerId:this.workerId,actorId:t,command:e,params:r,callback:String(i)},n||[])}jt(t,e){return\`${o}t}-${o}e}\`}Qt(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 ia(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,"Yt",{value:!0})}`
|
|
7
7
|
/*!
|
|
8
8
|
* Contains code from THREE.js
|
|
9
9
|
* MIT License
|
|
10
10
|
* https://github.com/mrdoob/three.js
|
|
11
|
-
|
|
12
|
-
var a=[],c=0;c<6;c++)a[c]=[];var l=[];function f(t,e,r){h(t);for(var n=0;n<6;n++)if(!r||"0"!==r.charAt(n)){var i=a[n];if(l[0]=i[0]>0?e[1][0]:e[0][0],l[1]=i[1]>0?e[1][1]:e[0][1],l[2]=i[2]>0?e[1][2]:e[0][2],d(i,l)<0)return!1}return!0}function u(t,e){var r=e,n=t,i=e,s=n[0],o=n[1],a=n[2],c=Math.abs(s*i[3]+o*i[6]+a*i[9])+Math.abs(s*i[4]+o*i[7]+a*i[10])+Math.abs(s*i[5]+o*i[8]+a*i[11]),l=d(t,r);return!(l<=-c)}function h(t){var e=t,r=e[0],n=e[1],i=e[2],s=e[3],o=e[4],c=e[5],l=e[6],f=e[7],u=e[8],h=e[9],d=e[10],E=e[11],T=e[12],m=e[13],p=e[14],A=e[15];_(a[0],s-r,f-o,E-u,A-T),_(a[1],s+r,f+o,E+u,A+T),_(a[2],s+n,f+c,E+h,A+m),_(a[3],s-n,f-c,E-h,A-m),_(a[4],s-i,f-l,E-d,A-p),_(a[5],s+i,f+l,E+d,A+p)}function _(t,e,r,n,i){var s=1/Math.sqrt(e*e+r*r+n*n);return t[0]=e*s,t[1]=r*s,t[2]=n*s,t[3]=i*s,t}function d(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]+t[3]}function E(t){return null==t}function T(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 m(t){return null!=t&&("function"==typeof t||null!==t.constructor&&t.constructor===Function)}function p(t){return"object"==typeof t&&!!t}function A(t){return"number"==typeof t&&!isNaN(t)}function y(t){return t*Math.PI/180}function g(t){return t/Math.PI*180}function R(t){let e=document.createElement("a");return e.href=t,t=e.href,e=null,t}function b(t){return Math.sign?Math.sign(t):0===(t=+t)||isNaN(t)?Number(t):t>0?1:-1}const I=[1,1,1,1,2,2,3,0];function N(t){const e=t.length;let r="";for(let n=0;n<e;){let i=t[n++];if(128&i){let r=I[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 S(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 O(t){return t<256?Uint8Array:t<65536?Uint16Array:Uint32Array}function M(t){return 0===t.indexOf("data:")}function C(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 x=Object.freeze({__proto__:null,isNil:E,extend:T,isFunction:m,isObject:p,isNumber:A,toRadian:y,toDegree:g,getAbsoluteURL:R,sign:b,stringFromUTF8Array:N,setColumn3:S,flatArr:w,getBatchIdArrayType:O,isBase64:M,base64URLToArrayBuffer:C,pushIn:U});var v=1e-6,B="undefined"!=typeof Float32Array?Float32Array:Array;function L(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 P(t,e,r){var n=e[0],i=e[1],s=e[2],o=e[3],a=e[4],c=e[5],l=e[6],f=e[7],u=e[8],h=e[9],_=e[10],d=e[11],E=e[12],T=e[13],m=e[14],p=e[15],A=r[0],y=r[1],g=r[2],R=r[3];return t[0]=A*n+y*a+g*u+R*E,t[1]=A*i+y*c+g*h+R*T,t[2]=A*s+y*l+g*_+R*m,t[3]=A*o+y*f+g*d+R*p,A=r[4],y=r[5],g=r[6],R=r[7],t[4]=A*n+y*a+g*u+R*E,t[5]=A*i+y*c+g*h+R*T,t[6]=A*s+y*l+g*_+R*m,t[7]=A*o+y*f+g*d+R*p,A=r[8],y=r[9],g=r[10],R=r[11],t[8]=A*n+y*a+g*u+R*E,t[9]=A*i+y*c+g*h+R*T,t[10]=A*s+y*l+g*_+R*m,t[11]=A*o+y*f+g*d+R*p,A=r[12],y=r[13],g=r[14],R=r[15],t[12]=A*n+y*a+g*u+R*E,t[13]=A*i+y*c+g*h+R*T,t[14]=A*s+y*l+g*_+R*m,t[15]=A*o+y*f+g*d+R*p,t}function F(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}function D(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}function G(t,e){var r=e[0],n=e[1],i=e[2],s=e[3],o=r+r,a=n+n,c=i+i,l=r*o,f=n*o,u=n*a,h=i*o,_=i*a,d=i*c,E=s*o,T=s*a,m=s*c;return t[0]=1-u-d,t[1]=f+m,t[2]=h-T,t[3]=0,t[4]=f-m,t[5]=1-l-d,t[6]=_+E,t[7]=0,t[8]=h+T,t[9]=_-E,t[10]=1-l-u,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function k(){var t=new B(3);return B!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0),t}function H(t){var e=t[0],r=t[1],n=t[2];return Math.sqrt(e*e+r*r+n*n)}function V(t,e,r){var n=new B(3);return n[0]=t,n[1]=e,n[2]=r,n}function z(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function X(t,e,r,n){return t[0]=e,t[1]=r,t[2]=n,t}function Y(t,e,r){return t[0]=e[0]+r[0],t[1]=e[1]+r[1],t[2]=e[2]+r[2],t}function q(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t}function Z(t,e,r){return t[0]=e[0]*r[0],t[1]=e[1]*r[1],t[2]=e[2]*r[2],t}function j(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t}function W(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 Q(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function K(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}var $=q,J=Z,tt=H;function et(t,e,r,n,i){return t[0]=e,t[1]=r,t[2]=n,t[3]=i,t}function rt(){var t=new B(4);return B!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0),t[3]=1,t}function nt(t){return t[0]=0,t[1]=0,t[2]=0,t[3]=1,t}function it(t,e,r,n){var i=e[0],s=e[1],o=e[2],a=e[3],c=r[0],l=r[1],f=r[2],u=r[3],h=void 0,_=void 0,d=void 0,E=void 0,T=void 0;return(_=i*c+s*l+o*f+a*u)<0&&(_=-_,c=-c,l=-l,f=-f,u=-u),1-_>v?(h=Math.acos(_),d=Math.sin(h),E=Math.sin((1-n)*h)/d,T=Math.sin(n*h)/d):(E=1-n,T=n),t[0]=E*i+T*c,t[1]=E*s+T*l,t[2]=E*o+T*f,t[3]=E*a+T*u,t}k(),function(){var t,e=(t=new B(4),B!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0,t[3]=0),t)}();var st,ot=function(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t};k(),V(1,0,0),V(0,1,0),rt(),rt(),st=new B(9),B!=Float32Array&&(st[1]=0,st[2]=0,st[3]=0,st[5]=0,st[6]=0,st[7]=0),st[0]=1,st[4]=1,st[8]=1;
|
|
11
|
+
*/;for(var A=[],c=0;c<6;c++)A[c]=[];var l=[];function f(t,e,r){p(t);for(var n=0;n<6;n++)if(!r||"0"!==r.charAt(n)){var i=A[n];if(l[0]=i[0]>0?e[1][0]:e[0][0],l[1]=i[1]>0?e[1][1]:e[0][1],l[2]=i[2]>0?e[1][2]:e[0][2],y(i,l)<0)return!1}return!0}var h=3,u=6,E=9,_=4,B=7,d=10,C=5,T=8,m=11;function g(t,e){var r=e,n=t,i=e,s=n[0],o=n[1],a=n[2],A=Math.abs(s*i[h]+o*i[u]+a*i[E])+Math.abs(s*i[_]+o*i[B]+a*i[d])+Math.abs(s*i[C]+o*i[T]+a*i[m]),c=y(t,r);return!(c<=-A)}function p(t){var e=t,r=e[0],n=e[1],i=e[2],s=e[3],o=e[4],a=e[5],c=e[6],l=e[7],f=e[8],h=e[9],u=e[10],E=e[11],_=e[12],B=e[13],d=e[14],C=e[15];R(A[0],s-r,l-o,E-f,C-_),R(A[1],s+r,l+o,E+f,C+_),R(A[2],s+n,l+a,E+h,C+B),R(A[3],s-n,l-a,E-h,C-B),R(A[4],s-i,l-c,E-u,C-d),R(A[5],s+i,l+c,E+u,C+d)}function R(t,e,r,n,i){var s=1/Math.sqrt(e*e+r*r+n*n);return t[0]=e*s,t[1]=r*s,t[2]=n*s,t[3]=i*s,t}function y(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]+t[3]}function I(t){return null==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 S(t){return null!=t&&("function"==typeof t||null!==t.constructor&&t.constructor===Function)}function P(t){return"object"==typeof t&&!!t}function M(t){return"number"==typeof t&&!isNaN(t)}function N(t){return t*Math.PI/180}function D(t){return t/Math.PI*180}function O(t){let e=document.createElement("a");return e.href=t,t=e.href,e=null,t}function L(t){return Math.sign?Math.sign(t):0===(t=+t)||isNaN(t)?Number(t):t>0?1:-1}const F=[1,1,1,1,2,2,3,0];function x(t){const e=t.length;let r="";for(let n=0;n<e;){let i=t[n++];if(128&i){let r=F[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 w(t,e,r){return t[3*r]=e[0],t[3*r+1]=e[1],t[3*r+2]=e[2],t}function v(t){return t.flat?t.flat(1/0):t.reduce(((t,e)=>t.concat(e)),[])}function U(t){return t<256?Uint8Array:t<65536?Uint16Array:Uint32Array}function G(t){return 0===t.indexOf("data:")}function H(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 K=Object.freeze({__proto__:null,isNil:I,extend:b,isFunction:S,isObject:P,isNumber:M,toRadian:N,toDegree:D,getAbsoluteURL:O,sign:L,stringFromUTF8Array:x,setColumn3:w,flatArr:v,getBatchIdArrayType:U,isBase64:G,base64URLToArrayBuffer:H,pushIn:V});var k=1e-6,X="undefined"!=typeof Float32Array?Float32Array:Array;function z(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 J(t,e,r){var n=e[0],i=e[1],s=e[2],o=e[3],a=e[4],A=e[5],c=e[6],l=e[7],f=e[8],h=e[9],u=e[10],E=e[11],_=e[12],B=e[13],d=e[14],C=e[15],T=r[0],m=r[1],g=r[2],p=r[3];return t[0]=T*n+m*a+g*f+p*_,t[1]=T*i+m*A+g*h+p*B,t[2]=T*s+m*c+g*u+p*d,t[3]=T*o+m*l+g*E+p*C,T=r[4],m=r[5],g=r[6],p=r[7],t[4]=T*n+m*a+g*f+p*_,t[5]=T*i+m*A+g*h+p*B,t[6]=T*s+m*c+g*u+p*d,t[7]=T*o+m*l+g*E+p*C,T=r[8],m=r[9],g=r[10],p=r[11],t[8]=T*n+m*a+g*f+p*_,t[9]=T*i+m*A+g*h+p*B,t[10]=T*s+m*c+g*u+p*d,t[11]=T*o+m*l+g*E+p*C,T=r[12],m=r[13],g=r[14],p=r[15],t[12]=T*n+m*a+g*f+p*_,t[13]=T*i+m*A+g*h+p*B,t[14]=T*s+m*c+g*u+p*d,t[15]=T*o+m*l+g*E+p*C,t}function Y(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}function Z(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}function W(t,e){var r=e[0],n=e[1],i=e[2],s=e[3],o=r+r,a=n+n,A=i+i,c=r*o,l=n*o,f=n*a,h=i*o,u=i*a,E=i*A,_=s*o,B=s*a,d=s*A;return t[0]=1-f-E,t[1]=l+d,t[2]=h-B,t[3]=0,t[4]=l-d,t[5]=1-c-E,t[6]=u+_,t[7]=0,t[8]=h+B,t[9]=u-_,t[10]=1-c-f,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function j(){var t=new X(3);return X!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0),t}function Q(t){var e=t[0],r=t[1],n=t[2];return Math.sqrt(e*e+r*r+n*n)}function q(t,e,r){var n=new X(3);return n[0]=t,n[1]=e,n[2]=r,n}function $(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function tt(t,e,r,n){return t[0]=e,t[1]=r,t[2]=n,t}function et(t,e,r){return t[0]=e[0]+r[0],t[1]=e[1]+r[1],t[2]=e[2]+r[2],t}function rt(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t}function nt(t,e,r){return t[0]=e[0]*r[0],t[1]=e[1]*r[1],t[2]=e[2]*r[2],t}function it(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t}function st(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 ot(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function at(t,e,r){var n=e[0],i=e[1],s=e[2],o=r[0],a=r[1],A=r[2];return t[0]=i*A-s*a,t[1]=s*o-n*A,t[2]=n*a-i*o,t}var At=rt,ct=nt,lt=Q;function ft(t,e,r,n,i){return t[0]=e,t[1]=r,t[2]=n,t[3]=i,t}function ht(){var t=new X(4);return X!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0),t[3]=1,t}function ut(t){return t[0]=0,t[1]=0,t[2]=0,t[3]=1,t}function Et(t,e,r,n){var i=e[0],s=e[1],o=e[2],a=e[3],A=r[0],c=r[1],l=r[2],f=r[3],h=void 0,u=void 0,E=void 0,_=void 0,B=void 0;return(u=i*A+s*c+o*l+a*f)<0&&(u=-u,A=-A,c=-c,l=-l,f=-f),1-u>k?(h=Math.acos(u),E=Math.sin(h),_=Math.sin((1-n)*h)/E,B=Math.sin(n*h)/E):(_=1-n,B=n),t[0]=_*i+B*A,t[1]=_*s+B*c,t[2]=_*o+B*l,t[3]=_*a+B*f,t}j(),function(){var t,e=(t=new X(4),X!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0,t[3]=0),t)}();var _t,Bt=function(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t};j(),q(1,0,0),q(0,1,0),ht(),ht(),_t=new X(9),X!=Float32Array&&(_t[1]=0,_t[2]=0,_t[3]=0,_t[5]=0,_t[6]=0,_t[7]=0),_t[0]=1,_t[4]=1,_t[8]=1;
|
|
13
12
|
/*!
|
|
14
13
|
* @maptalks/gltf-loader v0.27.2
|
|
15
14
|
* LICENSE : UNLICENSED
|
|
16
15
|
* (c) 2016-2022 maptalks.org
|
|
17
16
|
*/
|
|
18
|
-
let at=0;function ct(t){return null==t}function lt(t){return!ct(t)}function ft(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 ut(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 ht(t){return 0===t.indexOf("data:")&&t.indexOf("base64,")>0}function _t(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 dt=[],Et=[],Tt=[],mt=[0,0,0],pt=nt([]),At=[1,1,1];function yt(t,e,r,n,i,s,o){const a=ut(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 l=new Uint8Array(e,i*o+s,n*a.BYTES_PER_ELEMENT);c.set(l),r=new a(c.buffer,0,n);for(let e=0;e<n;e++)t[o*n+e]=r[e]}return t}const gt="undefined"!=typeof TextDecoder?new TextDecoder("utf-8"):null;function Rt(t,e,r){const n=new Uint8Array(t,e,r);return gt.decode(n)}const bt={get:function(t,e={}){e||(e={});const r=new AbortController,n=r.signal,i=ft({},e);i.signal=n,i.method||(i.method="GET");const s=fetch(t,i).then((t=>{const r=this.i(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},i:(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",bt.get(t,e)),getJSON:function(t,e={}){return e&&e.jsonp?bt.jsonp(t):((e=e||{}).responseType="json",bt.get(t,e))},jsonp:function(t){const e="_maptalks_jsonp_"+at++;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 It{constructor(t,e,r){this.o=t,this.decoders=e,this.l=r,this.images={},this.u={}}requestImageFromBufferURI(t,e,r){if(this.buffers[t.id]){const n=this.buffers[t.id],i=this.h(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.h(e,n);return this.getImageByBuffer(i,r)}));if(ht(t.uri)){const n=this.buffers[t.id]=_t(t.uri),i=this.h(e,n);return this.getImageByBuffer(i,r)}return this.u[t.id]=bt.getArrayBuffer(t.uri,null).then((n=>{const i=this.buffers[t.id]=n.data,s=this.h(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.l});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.o(e,((i,s)=>{i?n(i):(URL.revokeObjectURL(e),this.images[t]=s,r(this.images[t]))}))}))}}const Nt=["SCALAR",1,"VEC2",2,"VEC3",3,"VEC4",4,"MAT2",4,"MAT3",9,"MAT4",16];class St{constructor(t,e,r){this.rootPath=t,this.gltf=e,this.T=!1,this.glbBuffer=r,this.buffers={},this.requests={},this.accessors={},this.m()}p(t,e){const r=this.gltf,n=r.accessors[e];if(void 0===n.bufferView)return this.accessors[n.id]=this.A(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.g(i).then((r=>{const{buffer:i,byteOffset:s}=r;return this.accessors[n.id]=this.A(t,e,i,s)}))}g(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(ht(e.uri)){const t=this.buffers[e.id]=_t(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]=bt.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})}A(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.R(s.type),l=ut(s.componentType),f=o.byteStride||0,u={array:void 0,name:t,accessorName:e,byteLength:s.count*c*l.BYTES_PER_ELEMENT,componentType:s.componentType,count:s.count,type:s.type,itemSize:c};if(s.min&&(u.min=s.min),s.max&&(u.max=s.max),r)if(this.T)u.byteStride=f,u.byteOffset=a+(s.byteOffset||0),!f||f===c*l.BYTES_PER_ELEMENT||"indices"===t||"input"===t||"output"===t||t.indexOf("morph")>=0?(u.array=this.I(r,s.count,c,a+(s.byteOffset||0),l),u.array.buffer.byteLength===u.byteLength&&(u.byteOffset=0)):u.array=new Uint8Array(r,a,o.byteLength);else if(s.interleaved){u.byteStride=0,u.byteOffset=0;const t=new l(s.count*c);u.array=yt(t,r,s.count,c,f,a+(s.byteOffset||0),s.componentType)}else u.byteStride=0,u.array=this.I(r,s.count,c,a+(s.byteOffset||0),l),u.byteOffset=u.array.byteOffset;else{u.array=new l(s.count);const t=u.min||u.max;t&&(u.array[0]=t[0],u.array[1]=t[1],u.array[2]=t[2])}return u}m(){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)}I(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)}R(t){const e=Nt.indexOf(t);return Nt[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.g(e).then((n=>{const{buffer:i,byteOffset:s}=n,o=Rt(i,s+(e.byteOffset||0),r);return t.content=o,t}))}if(t.uri){if(ht(t.uri)){const e=_t(t.uri),r=Rt(e,0,e.byteLength);return t.content=r,Promise.resolve(t)}{const e=this.rootPath+"/"+t.uri;return bt.get(e).then((e=>(t.content=e,t)))}}return Promise.resolve(t)}));return Promise.all(r).then((()=>t))}}class wt extends It{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 St(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(lt(t.name)&&(e.name=t.name),lt(t.children)&&(e.children=t.children),lt(t.jointName)&&(e.jointName=t.jointName),lt(t.matrix)&&(e.matrix=t.matrix),lt(t.rotation)&&(e.rotation=t.rotation),lt(t.scale)&&(e.scale=t.scale),lt(t.translation)&&(e.translation=t.translation),lt(t.extras)&&(e.extras=t.extras),lt(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=F(dt,e.translation||mt),n=G(Et,e.rotation||pt),i=D(Tt,e.scale||At);return P(i,n,i),P(t,r,i)}return L(t)}([],e);delete e.translation,delete e.rotation,delete e.scale,e.matrix=t}return e}N(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}S(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)}O(t){const e=this.gltf.textures[t];if(!e)return null;const r=this.gltf.images[e.source];return this.S(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 Ot extends It{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 St(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 ft(e,t),!lt(t.weights)&&this.gltf.meshes&<(e.mesh)?e.weights=this.gltf.meshes[e.mesh].weights:t.weights&&(e.weights=t.weights),e}O(t){const e=this.gltf.textures[t];if(!e)return null;const r=this.gltf.images[e.source];return this.S(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}};ft(n,e);const i=lt(e.sampler)?this.gltf.samplers[e.sampler]:void 0;return i&&(n.sampler=i),t.format&&(n.format=t.format),n}))}S(t){if(!lt(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.M(e,t)}return null}M(t,e){const r=this.h(t,this.glbBuffer.buffer,this.glbBuffer.byteOffset);return this.getImageByBuffer(r,e)}h(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++)(lt(t[r].input)||lt(t[r].output))&&(e.push(this.accessor.p("input",t[r].input)),e.push(this.accessor.p("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 Mt="undefined"!=typeof TextDecoder?new TextDecoder("utf-8"):null;class Ct{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 Ct.readV1(n,e);if(2===i)return Ct.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=Ut(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=Ut(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 Ut(t,e,r){if(Mt){const n=new Uint8Array(t,e,r);return Mt.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=xt[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 xt=[1,1,1,1,2,2,3,0],vt=[0,0,0],Bt=[0,0,0,1],Lt=[1,1,1],Pt={TRANSLATION:[0,0,0],ROTATION:[0,0,0,1],SCALE:[1,1,1]},Ft={PREVIOUS:null,NEXT:null,PREINDEX:null,NEXTINDEX:null,INTERPOLATION:null},Dt={U(t,e,r,n,i,s,o,a){const c=lt(t)?e.animations:[e.animations[0]],l={};for(let e=0;e<c.length;e++){const f=c[e],u=f.name||e;if(lt(t)&&u!==t)continue;const h=f.channelsMap[r];if(h)for(let t=0;t<h.length;t++){const e=h[t];"translation"===e.target.path?(this.v(i,f.samplers[e.sampler],n,1),l.translation=z(vt,i)):"rotation"===e.target.path?(this.B(s,f.samplers[e.sampler],n,1),l.rotation=ot(Bt,s)):"scale"===e.target.path?(this.v(o,f.samplers[e.sampler],n,1),l.scale=z(Lt,o)):"weights"===e.target.path&&a&&(this.v(a,f.samplers[e.sampler],n,a.length),l.weights=a)}}return l},v(t,e,r,n){switch(e.interpolation){case"LINEAR":{const i=this.L(Ft,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(Ft,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(Ft,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(Ft,e,r,1);n&&it(t,n.PREVIOUS,n.NEXT,n.INTERPOLATION);break}case"STEP":{const n=this.L(Ft,e,r,1);n&&(t=et(t,...n.PREVIOUS));break}case"CUBICSPLINE":{const n=this.L(Ft,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},F(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.F(i,r);if(!a||!a.nextIndex)return null;const{preIndx:c,nextIndex:l,interpolation:f}=a;t.PREINDEX=c,t.NEXTINDEX=l,t.INTERPOLATION=f;const u=o*n;return t.PREVIOUS=s.subarray(t.PREINDEX*u,(t.PREINDEX+1)*u),t.NEXT=s.subarray(t.NEXTINDEX*u,(t.NEXTINDEX+1)*u),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],l=e.NEXT[3+r],f=(o-s)*e.NEXT[r],u=(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))*l+(Math.pow(i,3)-Math.pow(i,2))*f;t[r]=u}return t},getAnimationClip(t,e,r,n){const i=t.nodes[e]&&t.nodes[e].weights;return X(vt,...Pt.TRANSLATION),et(Bt,...Pt.ROTATION),X(Lt,...Pt.SCALE),this.U(n,t,e,r,vt,Bt,Lt,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?lt(e)?r[e]:r[Object.keys(r)[0]]:null}};let Gt=!1;if("undefined"!=typeof OffscreenCanvas){let t;try{t=new OffscreenCanvas(2,2).getContext("2d")}catch(Xr){}t&&"undefined"!=typeof createImageBitmap&&(Gt=!0)}const kt="undefined"==typeof document?null:document.createElement("canvas");class Ht{constructor(t,e,r){if(this.options=r||{},this.options.decoders||(this.options.decoders={}),e.buffer instanceof ArrayBuffer){const{json:r,glbBuffer:n}=Ct.read(e.buffer,e.byteOffset,e.byteLength);this.D(t,r,n)}else this.D(t,e);this.G=new St(this.rootPath,this.gltf,this.glbBuffer),this.k()}k(){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")}}H(){const t=this.gltf.extensions;return t&&t.KHR_techniques_webgl?this.G.requestKHRTechniquesWebgl(t.KHR_techniques_webgl).then((e=>(t.KHR_techniques_webgl=e,t))):Promise.resolve(t)}load(t){t=t||{};const e=this.V(t),r=this.X(),n=this.Y(),i=this.H();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 Dt.getAnimationClip(t,e,r,n)}static getAnimationTimeSpan(t,e){return Dt.getTimeSpanByName(t,e)}static getTypedArrayCtor(t){return ut(t)}static readInterleavedArray(t,e,r,n,i,s,o){return yt(t,e,r,n,i,s,o)}D(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=Gt?Yt.bind(this):this.options.requestImage||Vt,this.options.transferable&&(this.transferables=[]),2===this.version?(this.adapter=new Ot(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 wt(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"))}q(t,e){if(t.children&&t.children.length>0){if(!("number"==typeof(r=t.children[0])&&isFinite(r)||function(t){return!ct(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.q(r,e)}));t.children=n}var r;return t}V(t){return this.Z(t).then((t=>{const e=this.scenes=[];let r;for(const e in t)t[e]=this.q(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.N(this.gltf.materials);n.materials=t}return n}))}Z(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}))}W(){this.skins=[];const t=[];return this.adapter.iterate(((e,r,n)=>{t.push(this.K(r).then((t=>{t.index=n,this.skins.push(t)})))}),"skins"),t}K(t){const e=t.inverseBindMatrices;return this.adapter.accessor.p("inverseBindMatrices",e).then((e=>(t.inverseBindMatrices=e,e&&e.buffer&&this.transferables&&this.transferables.indexOf(e.buffer)<0&&this.transferables.push(e.buffer),t)))}X(){const t=this.gltf.animations;return lt(t)?this.adapter.getAnimations(t):null}j(t){this.meshes={};let e=[];return this.adapter.iterate(((r,n,i)=>{e.push(this.$(n,t).then((t=>{t.index=i,this.meshes[r]=t})))}),"meshes"),e=e.concat(this.W()),Promise.all(e)}$(t,e){const r=t.primitives.map((t=>this.J(t,e))).filter((t=>!!t));return Promise.all(r).then((e=>{const r={};return ft(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.O(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}))}J(t,e){let r;const n=[],i=t.extensions;if(lt(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.p(`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.G.g(a).then((r=>{const{buffer:n,byteOffset:i}=r;let{byteOffset:s,byteLength:c}=a;s||(s=0);const l=new DataView(n,i+s,c),f={attributes:o,useUniqueIDs:!1,skipAttributeTransform:e.skipAttributeTransform};return t(l,f).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.p(t,e[t]);r&&n.push(r)}if(lt(t.indices)){const e=this.adapter.accessor.p("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;j(t,t,i),Y(t,t,s),j(r,r,i),Y(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=lt(t.mode)?t.mode:4,lt(t.extras)&&(s.extras=t.extras),s}))}}function Vt(t,e){const r=new Image;r.crossOrigin="",r.onload=()=>{if(!kt)return void e(new Error("There is no canvas to draw image!"));kt.width=r.width,kt.height=r.height;const t=kt.getContext("2d",{willReadFrequently:!0});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 zt,Xt;function Yt(t,e){zt||(zt=new OffscreenCanvas(2,2),Xt=zt.getContext("2d",{willReadFrequently:!0})),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;qt(r)||(r=Zt(r)),qt(n)||(n=Zt(n));const i=this.options.maxTextureSize;i&&(r=Math.min(i,r),n=Math.min(i,n)),zt.width=r,zt.height=n,Xt.drawImage(t,0,0,r,n),t.close();const s=Xt.getImageData(0,0,r,n);e(null,{width:r,height:n,data:new Uint8Array(s.data)})})).catch((t=>{console.warn(t),e(t)}))}function qt(t){return 0==(t&t-1)&&0!==t}function Zt(t){return Math.pow(2,Math.floor(Math.log(t)/Math.LN2))}const jt="undefined"==typeof document?null:document.createElement("canvas");class Wt extends i.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(!jt)return void e(new Error("There is no canvas to draw image!"));const t=function(t){if(Qt(t.width)&&Qt(t.height))return t;let e=t.width,r=t.height;Qt(e)||(e=Kt(e));Qt(r)||(r=Kt(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);jt.width=t.width,jt.height=t.height;const n=jt.getContext("2d",{willReadFrequently:!0});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 Qt(t){return 0==(t&t-1)&&0!==t}function Kt(t){return Math.pow(2,Math.floor(Math.log(t)/Math.LN2))}class $t{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 Jt(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)}}}const te=[],ee=[],re=[],ne=[0,0,0],ie=nt([]),se=[1,1,1];function oe(t,e,r,n){const i=e.slice(0);if(t.matrix)i.push(t.matrix);else if(t.rotation||t.translation||t.scale){const e=F(te,t.translation||ne),r=G(ee,t.rotation||ie),n=D(re,t.scale||se);P(n,r,n);const s=P([],e,n);i.push(s)}if(t.children&&t.children.length)for(let e=0,s=t.children.length;e<s;e++)oe(t.children[e],i,r,n);if(void 0!==t.mesh){const e=t.mesh,s=r.meshes[e];if(s){const t=i.slice(0),o=s.primitives;for(let i=0,s=o.length;i<s;i++){const s=o[i];s&&(s.matrices=t,n(s,e,i,r))}}}}function ae(t,e,r){let{componentType:n,byteOffset:i,byteStride:s,itemSize:o}=e;const a=e.array.buffer,c=n?Ht.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 ce(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 le=new Array(3),fe=new Array(3),ue=[40680631590769,40680631590769,40408299984661.445];function he(t,e,r,n){const i=ue,s=Math.cos(r);le[0]=s*Math.cos(e),le[1]=s*Math.sin(e),le[2]=Math.sin(r),Re(le,le),Z(fe,i,le);const o=Math.sqrt(Q(le,fe));var a,c,l;return c=fe,l=o,(a=fe)[0]=c[0]/l,a[1]=c[1]/l,a[2]=c[2]/l,j(le,le,n),Y(t,fe,le)}const _e=[1/6378137,1/6378137,1/6356752.314245179],de=[1/40680631590769,1/40680631590769,1/40408299984661.445],Ee=new Array(3),Te=new Array(3),me=new Array(3);function pe(t,e){const r=de,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,d=u+h+_,E=Math.sqrt(1/d),T=j(Ae,e,E);if(d<i)return isFinite(E)?T:void 0;const m=n[0],p=n[1],A=n[2],y=ye;y[0]=T[0]*m*2,y[1]=T[1]*p*2,y[2]=T[2]*A*2;let g,R,b,I,N,S,w,O,M,C,U,x=(1-E)*ge(e)/(.5*ge(y)),v=0;do{x-=v,b=1/(1+x*m),I=1/(1+x*p),N=1/(1+x*A),S=b*b,w=I*I,O=N*N,M=S*b,C=w*I,U=O*N,g=u*S+h*w+_*O-1,R=u*M*m+h*C*p+_*U*A;v=g/(-2*R)}while(Math.abs(g)>1e-12);return t[0]=s*b,t[1]=o*I,t[2]=a*N,t}(Ee,e,_e,r,.1);let i=J(Te,n,r);i=Re(i,i);const s=$(me,e,n),o=Math.atan2(i[1],i[0]),a=Math.asin(i[2]),c=b(Q(s,e))*ge(s);return t[0]=g(o),t[1]=g(a),t[2]=c,t}const Ae=new Array(3),ye=new Array(3);function ge(t){return H(t)}function Re(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 be(t,e){return Z(e,t,de),W(e,e)}function Ie(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,W(e,e)}var Ne=Object.freeze({__proto__:null,radianToCartesian3:he,cartesian3ToDegree:pe,normalizeCartesian:Re,geodeticSurfaceNormal:be,geodeticSurfaceNormalCartographic:Ie});function Se(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 we(t,e){let r="";for(let n=0;n<4;n++){const i=t.getUint8(e+n);r+=String.fromCharCode(i)}return r}const Oe="undefined"!=typeof TextDecoder?new TextDecoder("utf-8"):null;function Me(t,e,r){const n=new Uint8Array(t,e,r);return Oe?JSON.parse(Oe.decode(n)):JSON.parse(N(n))}function Ce(t,e,r){const n=new Uint8Array(t,e,r);return Oe?JSON.parse(Oe.decode(n)):JSON.parse(N(n))}function Ue(t,e,r){return{offset:e,byteLength:r}}function xe(t,e,r,n){const{byteOffset:i,componentType:s,type:o}=t,{ctor:a,type:c}=De(s||"UNSIGNED_SHORT"),l=Pe(o);return{byteStride:0,byteOffset:i+r,itemSize:l,count:n*l,componentType:c,array:new a(e,r+i,n*l)}}function ve(t,e,r,n){const i=xe(t,e,r,n);return i.array.buffer.byteLength!==e.byteLength&&(i.array=i.array.slice()),i}function Be(t,e,r,n){const{byteOffset:i,componentType:s,type:o}=t,{ctor:a}=De(s||"UNSIGNED_SHORT"),c=Pe(o),l=new a(e,i,r*c);return 1===c?l[n]:l.subarray(n*c,n*c+c)}const Le={"SCALAR":1,"VEC2":2,"VEC3":3,"VEC4":4};function Pe(t){return t?Le[t]:1}const Fe={"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 De(t){return Fe[t]}function Ge(t){for(let e in Fe)if(t===Fe[e].ctor)return Fe[e].type;throw new Error("unrecognized ctor:"+t)}function ke(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 He(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=Me(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=Ce(a,e,s),e+=s);const h=Ue(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 Ve={north:[-1,0,0],east:[0,1,0],up:[0,0,1],south:[1,0,0],west:[0,-1,0],down:[0,0,-1]},ze={},Xe={east:[],north:[],up:[],west:[],south:[],down:[]},Ye=[],qe=[],Ze=[];const je=[0,0,0];function We(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 Qe=(tr={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"}}[Ke="east"][$e="north"],ze[er=Ke+$e]?Je=ze[er]:(Je=function(t,e,r){if(function(t,e){var r=t[0],n=t[1],i=t[2],s=e[0],o=e[1],a=e[2];return Math.abs(r-s)<=v*Math.max(1,Math.abs(r),Math.abs(s))&&Math.abs(n-o)<=v*Math.max(1,Math.abs(n),Math.abs(o))&&Math.abs(i-a)<=v*Math.max(1,Math.abs(i),Math.abs(a))}(t,je))z(Ye,Ve[Ke]),z(qe,Ve[$e]),z(Ze,Ve[tr]);else if(Se(t[0],0,1e-14)&&Se(t[1],0,1e-14)){var n=b(t[2]);z(Ye,Ve[Ke]),"east"!==Ke&&"west"!==Ke&&j(Ye,Ye,n),z(qe,Ve[$e]),"east"!==$e&&"west"!==$e&&j(qe,qe,n),z(Ze,Ve[tr]),"east"!==tr&&"west"!==tr&&j(Ze,Ze,n)}else{be(t,Xe.up);var i=Xe.up,s=Xe.east;s[0]=-t[1],s[1]=t[0],s[2]=0,W(Xe.east,s),K(Xe.north,i,s),j(Xe.down,Xe.up,-1),j(Xe.west,Xe.east,-1),j(Xe.south,Xe.north,-1),Ye=Xe[Ke],qe=Xe[$e],Ze=Xe[tr]}return r[0]=Ye[0],r[1]=Ye[1],r[2]=Ye[2],r[3]=0,r[4]=qe[0],r[5]=qe[1],r[6]=qe[2],r[7]=0,r[8]=Ze[0],r[9]=Ze[1],r[10]=Ze[2],r[11]=0,r[12]=t[0],r[13]=t[1],r[14]=t[2],r[15]=1,r},ze[er]=Je),Je);var Ke,$e,Je,tr,er;const rr=[],nr=[],ir=[],sr=[],or=[],ar=[],cr=[],lr={x:0,y:0},fr={x:0,y:0},ur=Math.PI/180;const hr={"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:_r,getTextureMinFilter:dr,getTextureWrap:Er,getMaterialType:Tr,getMaterialFormat:mr,getPrimitive:pr,getUniqueREGLBuffer:Ar}=r.reshader.REGLHelper,yr=[1,0,0,0,0,0,1,0,0,-1,0,0,0,0,0,1],gr=[0,0,1,0,0,1,0,0,-1,0,0,0,0,0,0,1],{loginIBLResOnCanvas:Rr,logoutIBLResOnCanvas:br,getIBLResOnCanvas:Ir,getPBRUniforms:Nr}=r.reshader.pbr.PBRUtils,Sr={factor:0,units:0},wr={specularStrength:0,materialShininess:1},Or=[1,1,1],Mr=r.mat4.identity([]),Cr=t=>t.material instanceof r.reshader.PhongMaterial,Ur=t=>t.material instanceof r.reshader.pbr.StandardMaterial,xr=[!0,!0,!0,!0],vr=[],Br=new i.Coordinate(0,0),Lr=new i.Point(0,0),Pr=[],Fr=[],Dr=[],Gr=[],kr={"POSITION":"POSITION","NORMAL":"NORMAL","TEXCOORD_0":"TEXCOORD_0","TEXCOORD_1":"TEXCOORD_1","COLOR_0":"COLOR_0","TANGENT":"TANGENT","_BATCHID":"_BATCHID"};class Hr{constructor(t,e){this.tt=e,this.et=e.getRenderer().canvas,this.pickingFBO=e.getRenderer().pickingFBO,this.rt=new i.SpatialReference,this.nt=t,this.it=new r.reshader.Renderer(t),this.st={},this.ot={},this.ct={},this.lt={},this.ft={},this.ut={},this.ht={},this._t=new r.reshader.Scene,this.dt=new r.reshader.Scene,this.Et=new r.reshader.Scene,this.Tt=new r.reshader.Scene,this.At=new r.reshader.ResourceLoader(t.texture(2)),this.yt=this.gt.bind(this),this.Rt=new r.reshader.PhongMaterial({"baseColorFactor":[1,1,1,1]}),this.bt(),this.It=new r.reshader.KHRTechniquesWebglManager(this.nt,this.Nt(),this.At);const n=this.getMap();n.altitudeToPoint&&(this.St=n.altitudeToPoint(100,n.getGLRes())/100)}getI3DMMeshes(){return this.ft}getPNTSMeshes(){return this.lt}getB3DMMeshes(){return this.ct}getPaintedMeshes(){return this.wt}getMap(){return this.tt.getMap()}paint(t,e,n){const i=n&&n.renderTarget,s=n&&n.sceneFilter,o=this.getMap();if(!t.length||!o)return;const a=this.Ot(),c=o.projViewMatrix,l=this.tt.options.services,u=[],h=[];let _=[];const d=[],E=[],T=this.Mt(t);for(let i=0,s=t.length;i<s;i++){const s=t[i].data.node;let o=this.Ct(s);if(!o)continue;this.ut[s.id]&&(o=this.ut[s.id],o=w(o));let a=l[s.Ut].polygonOffset||Sr;m(a)&&(a=a()),Array.isArray(o)||(u[0]=o,o=u);for(let t=0,i=o.length;t<i;t++){const i=o[t].properties.magic;if("b3dm"===i){if(o[t].getBoundingBox&&!f(c,o[t].getBoundingBox()))continue;const{batchIdData:e,batchIdMap:i}=o[t].geometry.properties;if(e&&i){const e=o[t].properties.node.Ut;this.xt&&this.xt[e]&&r.HighlightUtil.highlightMesh(this.nt,o[t],this.xt[e],this.vt,i)}n&&n.bloom&&o[t].properties.hlBloomMesh&&(o[t].properties.hlBloomMesh.properties.depthFunc="always",o[t].properties.hlBloomMesh.properties.polygonOffset=a,_.push(o[t].properties.hlBloomMesh)),_.push(o[t])}else"pnts"===i?d.push(o[t]):"i3dm"===i&&E.push(o[t]);o[t].properties.isLeaf=!!e[s.id],o[t].properties.level=T.get(s.Bt),o[t].properties.polygonOffset=a,o[t].Lt=s,e[s.id]||h.push(o[t])}}let p=0;const A=this.It.getExcludeFilter();p+=this.Pt(this.Ft,a,[s,Cr,A],i,h,_,E),p+=this.Pt(this.Dt,a,[s,Ur,A],i,h,_,E),this.It.forEachShader(((t,e,r)=>{const n=this.Ot(r);p+=this.Pt(t,n,[s,e],i,h,_,E)})),this.dt.setMeshes(d);const y=this.Gt();return p+=this.it.render(this.kt,y,this.dt,i&&i.fbo),this.wt={pntsMeshes:d,i3dmMeshes:E,b3dmMeshes:_},p}Pt(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=xr;let a=0;return this._t.setMeshes(s),a+=this.it.render(t,e,this._t,n&&n.fbo),e.stencilEnable=!0,this.Et.setMeshes(o),a+=this.it.render(t,e,this.Et,n&&n.fbo),a}Ht(t,e){return e.Lt.Vt-t.Lt.Vt}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.zt(e);n&&(n.getBoundingBox&&!f(o,n.getBoundingBox())||a.push(n))}this.Xt.filter=n,this.Tt.setMeshes(a);const c=this.Yt(r);this.it.render(this.Xt,c,this.Tt,i&&i.fbo)}deleteTile(t){const e=t.node.id;this.qt(e)}qt(t){const e=this.ot[t];e&&(e.geometry.dispose(),e.dispose(),delete this.ot[t]);let r=this.ct[t]||this.lt[t]||this.ft[t]||this.ut[t]||this.st[t];this.ut[t]?this.Zt(t):r&&(this.jt(r),delete this.ct[t],delete this.lt[t],delete this.ft[t],delete this.st[t])}Zt(t){let e=this.ut[t];e=w(e);for(let t=0;t<e.length;t++){const{id:r}=e[t].properties;this.qt(r)}delete this.ut[t]}jt(t){if(Array.isArray(t))for(let e=0,r=t.length;e<r;e++)this.jt(t[e]);else{const e=t.geometry.properties.url;if(e){const t=this.ht[e];t&&(t.refCount--,t.refCount<=0&&(t.geometry.dispose(),t.material.dispose(),delete this.ht[e]))}else t.geometry.dispose(),t.material&&t.material.dispose();t.dispose()}}remove(){const t=this.tt;br(t.getRenderer().canvas,t.getMap());for(const t in this.ut)this.Zt(t);this.ut={};for(const t in this.ct)this.qt(t);this.ct={};for(const t in this.lt)this.qt(t);this.lt={};for(const t in this.ft)this.qt(t);this.ft={};for(const t in this.st)this.qt(t);this.st={};for(const t in this.ot)this.qt(t);this.ot={},this.Ft&&(this.Ft.dispose(),delete this.Ft),this.Dt&&(this.Dt.dispose(),delete this.Dt),this.kt&&(this.kt.dispose(),delete this.kt),this.Xt&&(this.Xt.dispose(),delete this.Xt),this.It.dispose(),this.picking&&this.picking.dispose()}zt(t){if(!t.boundingVolume||!t.boundingVolume.region)return null;if(this.ot[t.id])return this.ot[t.id];const e=t.boundingVolume.region;let n=new i.Coordinate(g(e[0]),g(e[1])),s=new i.Coordinate(g(e[2]),g(e[3]));n=this.Wt(n),s=this.Wt(s);const o=n.add(s).Qt(.5);n._sub(o),s._sub(o);const a=this.Kt(e[4],e[5]),c=a.x,l=a.y,f=[n.x,n.y,l,s.x,n.y,l,s.x,s.y,l,n.x,s.y,l,n.x,n.y,c,s.x,n.y,c,s.x,s.y,c,n.x,s.y,c],u=new r.reshader.Geometry({aPosition:f},[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.nt);const h=new r.reshader.Mesh(u),_=r.mat4.identity([]);return h.setLocalTransform(r.mat4.translate(_,_,[o.x,o.y,0])),this.ot[t.id]=h,h}Ct(t){return this.ct[t.id]||this.lt[t.id]||this.ft[t.id]||this.ut[t.id]}has(t){return this.Ct(t)||this.st[t.id]}createPntsMesh(t,e,n,i){if(this.lt[e]){const t=this.lt[e];return console.warn(`pnts mesh with id(${e}) was already created.`),i(null,{id:e,mesh:t}),t}const{pnts:s,featureTable:o,rootIdx:a}=t,c=o.POINTS_LENGTH,l=new r.reshader.Geometry(s,null,c,{primitive:"points",positionAttribute:"POSITION"});l.generateBuffers(this.nt);const f={};s.POSITION?f.HAS_POSITION=1:s.POSITION_QUANTIZED&&(f.HAS_POSITION_QUANTIZED=1),s.RGB?f.HAS_RGB=1:s.RGBA?f.HAS_RGBA=1:s.RGB565&&(f.HAS_RGB565=1),(s.NORMAL||s.NORMAL_OCT16P)&&(f.HAS_NORMAL=1,s.NORMAL_OCT16P&&(f.HAS_NORMAL_OCT16P=1)),t.featureTable.CONSTANT_RGBA&&(t.featureTable.CONSTANT_RGBA=t.featureTable.CONSTANT_RGBA.map((t=>t/255)));const{rtcCenter:u,rtcCoord:h}=t,_=this.$t(Dr,h),d=this.Jt([],n,u,h);r.mat4.multiply(d,d,_);const E=this.tt.options.services[a],T=new r.reshader.Mesh(l);return T.properties.magic="pnts",T.properties.id=e,T.properties.node=n,T.properties.count=c,T.properties.batchTable=t.batchTable,T.properties.batchTableBin=t.batchTableBin,T.setDefines(f),Object.defineProperty(T.uniforms,"pointColor",{enumerable:!0,get:function(){return t.featureTable.CONSTANT_RGBA?t.featureTable.CONSTANT_RGBA:E&&E.pointColor||[1,1,1,1]}}),Object.defineProperty(T.uniforms,"pointSize",{enumerable:!0,get:function(){return E&&E.pointSize||2}}),Object.defineProperty(T.uniforms,"pointOpacity",{enumerable:!0,get:function(){return E&&E.pointOpacity||1}}),T.setLocalTransform(d),this.lt[e]=T,i(null,{id:e,mesh:[T]}),[T]}createI3DMMesh(t,e,n,i){if(this.ft[e]){const t=this.ft[e];return console.warn(`i3dm mesh with id(${e}) was already created.`),this.st[e]||i(null,{id:e,mesh:t}),t}const s=this.te(n.ee),{i3dm:o,featureTable:a,gltf:c,batchTable:l,batchTableBin:f,count:u}=t,h=a.INSTANCES_LENGTH,{rtcCenter:_,rtcCoord:d}=t,E=this.$t(Dr,d),T=this.Jt(Gr,n,_,d);r.mat4.multiply(E,T,E);const{POSITION:m,NORMAL_UP:p,NORMAL_RIGHT:A,SCALE:y,SCALE_NON_UNIFORM:g,INSTANCE_ROTATION:R}=o,b={"instance_vectorA":new Float32Array(4*h),"instance_vectorB":new Float32Array(4*h),"instance_vectorC":new Float32Array(4*h)},I=new Float32Array(3),N=new Float32Array(3),w=[],O=new Float32Array(1),M=new Float32Array(3),C=[],U=[],x=[],v=[],B=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?Ht.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)}}(m,((t,e)=>{p?(ae(N,A,e),ae(I,p,e),r.vec3.cross(w,N,I),r.vec3.normalize(w,w),S(C,N,0),S(C,I,1),S(C,w,2),r.quat.fromMat3(U,C)):R?(ae(B,R,e),r.quat.fromMat3(U,B)):r.quat.identity(U),y?(ae(O,y,e),r.vec3.set(x,O[0],O[0],O[0])):g?(ae(M,g,e),r.vec3.set(x,...M)):r.vec3.set(x,1,1,1),r.mat4.fromRotationTranslationScale(v,U,t,x),ce(b.instance_vectorA,e,v,0),ce(b.instance_vectorB,e,v,1),ce(b.instance_vectorC,e,v,2)}));const L={};for(const t in b)L[t]={buffer:this.nt.buffer({dimension:b[t].length/h,data:b[t]}),divisor:1};const P=this.tt.options.services[n.Ut].shader||"phong";let F=0,D=!0;const G=[];return Jt(c,((t,i,o,a)=>{let{geometry:c,material:_}=this.re(t,i,o,a,n,!0,P);_&&!_.isReady()&&(D=!1,F++);const d=new r.reshader.InstancedMesh(L,h,c,_);d.properties.magic="i3dm",d.properties.id=e,d.properties.count=u,d.properties.batchTable=l,d.properties.batchTableBin=f;const T=this.ne(t,c,_,n.Ut,a),m=r.mat4.identity([]);if(t.matrices&&t.matrices.length)for(let e=0;e<t.matrices.length;e++)r.mat4.multiply(m,m,t.matrices[e]);r.mat4.multiply(m,s,m),d.setPositionMatrix(m),d.setLocalTransform(r.mat4.copy([],E)),d.setDefines(T),d.properties.polygonOffset={offset:0,factor:0},G.push(d)})),D?(this.ft[e]=G,i(null,{id:e,mesh:G})):(this.st[e]={meshes:G,count:F},G.ie=i),G}createB3DMMesh(t,e,n,s){if(this.ct[e]||this.st[e]){const t=this.ct[e];return console.warn(`mesh with id(${e}) was already created.`),this.st[e]||s(null,{id:e,mesh:t}),t}let o;if(n.maxExtent){const t=new i.Extent(n.maxExtent).convertTo((t=>this._pointToPrj(t)));o=[t.xmin,t.ymin,t.xmax,t.ymax]}const a=t.gltf,{projCenter:c}=a.extensions.MAPTALKS_RTC,{rtcCoord:l,center:f}=a.extensions.CESIUM_RTC,u=this.te(n.ee);let h;h=a.asset&&a.asset.sharePosition?this.$t(Dr,l):this.se(Dr,l,c,n.Ut);const _=this.tt.options.services[n.Ut];let d=_.shader||"pbr";if(a.materials)for(let t=0;t<a.materials.length;t++)if(a.materials[t]&&a.materials[t].extensions&&a.materials[t].extensions.KHR_materials_unlit){d=_.shader="phong";break}const E=[];let T=0,m=!0;return Jt(a,((i,s,a,c)=>{let{geometry:p,material:y}=this.re(i,s,a,c,n,!1,d);y&&!y.isReady()&&(m=!1,T++);const g=new r.reshader.Mesh(p,y);g.properties.magic="b3dm",g.properties.id=e,g.properties.node=n,g.properties.batchTable=t.batchTable,g.properties.batchTableBin=t.batchTableBin,g.properties.count=t.featureTable.BATCH_LENGTH;const R=this.ne(i,p,y,n.Ut,c);g.setDefines(R),o&&(R.USE_MAX_EXTENT=1,g.setUniform("maxPrjExtent",o)),Object.prototype.hasOwnProperty.call(g.uniforms,"polygonOpacity")||Object.defineProperty(g.uniforms,"polygonOpacity",{enumerable:!0,get:function(){return A(_.opacity)?_.opacity:1}});let b=r.mat4.identity([]);if(c.asset.sharePosition&&i.matrices&&i.matrices.length)for(let t=0;t<i.matrices.length;t++)r.mat4.multiply(b,b,i.matrices[t]);if(c.asset.sharePosition){const t=this.Jt(Gr,n,f,l);r.mat4.multiply(b,u,b),r.mat4.multiply(b,h,b),r.mat4.multiply(b,t,b)}else r.mat4.multiply(b,h,b);g.setLocalTransform(b),E.push(g)})),m?(this.ct[e]=E,s(null,{id:e,mesh:E})):(this.st[e]={meshes:E,count:T},E.ie=s),E}Jt(t,e,n,s){const o=this.getMap(),a=this.tt.options.services[e.Ut].heightOffset||0,c=new i.Coordinate(s);let l;l=o.altitudeToPoint?this.St:o.distanceToPointAtRes(100,100,o.getGLRes(),c).y/100;let f=e.matrix?r.mat4.copy(t,e.matrix):r.mat4.identity(t);if(n){We(f,r.vec3.transformMat4(vr,n,f),f)}const u=function(t,e,r,n,i,s,o){e=z(rr,e);const a=he(rr,e[0]*ur,e[1]*ur,e[2]),c=function(t,e){return t[0]=e[12],t[1]=e[13],t[2]=e[14],t}(nr,r),l=n.ellipsoid;var f;f=0===tt(c)?X(ir,0,0,-6378137):pe(ir,c),lr.x=f[0],lr.y=f[1];const u=n.project(lr,fr);sr[0]=u.x/i,sr[1]=u.y/i,sr[2]=(f[2]+o)*s;const h=Qe(a,l,or),_=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],l=e[7],f=e[8],u=e[9],h=e[10],_=e[11],d=e[12],E=e[13],T=e[14],m=e[15],p=r*a-n*o,A=r*c-i*o,y=r*l-s*o,g=n*c-i*a,R=n*l-s*a,b=i*l-s*c,I=f*E-u*d,N=f*T-h*d,S=f*m-_*d,w=u*T-h*E,O=u*m-_*E,M=h*m-_*T,C=p*M-A*O+y*w+g*S-R*N+b*I;return C?(C=1/C,t[0]=(a*M-c*O+l*w)*C,t[1]=(i*O-n*M-s*w)*C,t[2]=(E*b-T*R+m*g)*C,t[3]=(h*R-u*b-_*g)*C,t[4]=(c*S-o*M-l*N)*C,t[5]=(r*M-i*S+s*N)*C,t[6]=(T*y-d*b-m*A)*C,t[7]=(f*b-h*y+_*A)*C,t[8]=(o*O-a*S+l*I)*C,t[9]=(n*S-r*O-s*I)*C,t[10]=(d*R-E*y+m*p)*C,t[11]=(u*y-f*R-_*p)*C,t[12]=(a*N-o*w-c*I)*C,t[13]=(r*w-n*N+i*I)*C,t[14]=(E*A-d*g-T*p)*C,t[15]=(f*g-u*A+h*p)*C,t):null}(ar,h),d=function(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}(cr,r),E=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],p=e[6],A=e[7],y=e[8],g=n*h+o*_+l*d,R=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,w=n*p+o*A+l*y,O=i*p+a*A+f*y,M=s*p+c*A+u*y;return r[0]=g,r[1]=R,r[2]=b,r[3]=0,r[4]=I,r[5]=N,r[6]=S,r[7]=0,r[8]=w,r[9]=O,r[10]=M,r[11]=0,r[12]=t[12],r[13]=t[13],r[14]=t[14],r[15]=t[15],r}(_,d,t);return We(t,sr,E),t}(f,s,f,o.getProjection(),o.getGLRes(),l,a),h=function(t,e){return X(t,e[12],e[13],e[14]),t}(Fr,u);let _=this.tt.options.offset;if(m(_)){_=_(this.tt.oe(e.id).center)}return r.vec3.set(Pr,_[0],_[1],0),r.vec3.sub(h,h,Pr),We(u,h,u),u}createCMPTMesh(t,e,r,n){if(this.ut[e]){const t=this.ut[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.ut[e]=s,n(null,{id:e,mesh:s}),s}ne(t,e,r,n,i){const s=("phong"===(this.tt.options.services[n].shader||"phong")?this.Ft:this.Dt).getGeometryDefines(e);return i.asset&&"S3M"===i.asset.generator&&this.ae(s,e,i),e.data.uvRegion&&(s.HAS_I3S_UVREGION=1),s}ae(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)}re(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=hr);const c=n.url+"-"+e+"-"+r;if(this.ht[c])return this.ht[c].refCount++,this.ht[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.ce(t,n,s,a);l=e.material,f=e.geometry;this.tt.options.services[i.Ut].fillEmptyDataInMissingAttribute&&(f.desc.fillEmptyDataInMissingAttribute=!0)}else{f=this.le(t,s,kr);const e=this.tt.options.services[i.Ut],r=e.ambientLight;let a=e.environmentExposure;const c=e.material,u=this.getMap().getLightManager(),h=u&&u.getAmbientLight();if(r&&(!h||h.color)&&void 0===a){const t=h&&h.color?h.color[0]:.2;a=r[0]/t}l=this.fe(t.material,n,o,c||wr,a||1)}l&&!l.isReady()?l.ue=i.id:l||(l=this.Rt);const h={refCount:1,geometry:f,material:l};return f.properties.url=c,this.ht[c]=h,h}ce(t,e,r,n){const{geometry:i,material:s}=this.It.createMesh(t,e,r,n);return{geometry:i,material:s}}le(t,e,n){const i=t.attributes;let s=i._BATCHID&&i._BATCHID.array;if(s&&s.byteOffset&&(s=new s.constructor(s)),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 o={};for(const t in i){const e=Ar(this.nt,i[t],{dimension:i[t].itemSize}),r=n[t]||t;o[r]={buffer:e},i[t].quantization&&(o[r].quantization=i[t].quantization),r===n.POSITION&&(o[r].array=i[t].array,o[r].min=i[t].min,o[r].max=i[t].max)}delete t.attributes;const a=t.indices?t.indices.array?t.indices.array.slice():t.indices:null,c=new r.reshader.Geometry(o,a,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":pr(t.mode)});return s&&a&&(c.properties.batchIdData=s,c.properties.batchIdMap=function(t,e){if(!e)return null;const r=new Map;for(let n=0;n<e.length;n++){const i=e[n],s=t[i];let o=r.get(s);o||(o=[],r.set(s,o)),o.push(i)}return r}
|
|
17
|
+
let dt=0;function Ct(t){return null==t}function Tt(t){return!Ct(t)}function mt(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 gt(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 pt(t){return 0===t.indexOf("data:")&&t.indexOf("base64,")>0}function Rt(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 yt=[],It=[],bt=[],St=[0,0,0],Pt=ut([]),Mt=[1,1,1];function Nt(t,e,r,n,i,s,o){const a=gt(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 A=new Uint8Array(n*a.BYTES_PER_ELEMENT);for(let o=0;o<r;o++){let r=null;const c=new Uint8Array(e,i*o+s,n*a.BYTES_PER_ELEMENT);A.set(c),r=new a(A.buffer,0,n);for(let e=0;e<n;e++)t[o*n+e]=r[e]}return t}const Dt="undefined"!=typeof TextDecoder?new TextDecoder("utf-8"):null;function Ot(t,e,r){const n=new Uint8Array(t,e,r);return Dt.decode(n)}const Lt={get:function(t,e={}){e||(e={});const r=new AbortController,n=r.signal,i=mt({},e);i.signal=n,i.method||(i.method="GET");const s=fetch(t,i).then((t=>{const r=this.i(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},i:(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",Lt.get(t,e)),getJSON:function(t,e={}){return e&&e.jsonp?Lt.jsonp(t):((e=e||{}).responseType="json",Lt.get(t,e))},jsonp:function(t){const e="_maptalks_jsonp_"+dt++;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 Ft{constructor(t,e,r){this.o=t,this.decoders=e,this.A=r,this.images={},this.l={}}requestImageFromBufferURI(t,e,r){if(this.buffers[t.id]){const n=this.buffers[t.id],i=this.h(e,n);return this.getImageByBuffer(i,r)}if(this.l[t.id])return this.l[t.id].then((()=>{const n=this.buffers[t.id],i=this.h(e,n);return this.getImageByBuffer(i,r)}));if(pt(t.uri)){const n=this.buffers[t.id]=Rt(t.uri),i=this.h(e,n);return this.getImageByBuffer(i,r)}return this.l[t.id]=Lt.getArrayBuffer(t.uri,null).then((n=>{const i=this.buffers[t.id]=n.data,s=this.h(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.A});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.u(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.l[t.id]?this.l[t.id].then((()=>this.images[t.id])):this.l[t.id]=this.u(t.id,e)}u(t,e){return new Promise(((r,n)=>{this.o(e,((i,s)=>{i?n(i):(URL.revokeObjectURL(e),this.images[t]=s,r(this.images[t]))}))}))}}const xt=["SCALAR",1,"VEC2",2,"VEC3",3,"VEC4",4,"MAT2",4,"MAT3",9,"MAT4",16];class wt{constructor(t,e,r){this.rootPath=t,this.gltf=e,this._=!1,this.glbBuffer=r,this.buffers={},this.requests={},this.accessors={},this.B()}C(t,e){const r=this.gltf,n=r.accessors[e];if(void 0===n.bufferView)return this.accessors[n.id]=this.T(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.m(i).then((r=>{const{buffer:i,byteOffset:s}=r;return this.accessors[n.id]=this.T(t,e,i,s)}))}m(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(pt(e.uri)){const t=this.buffers[e.id]=Rt(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]=Lt.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})}T(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,A=this.g(s.type),c=gt(s.componentType),l=o.byteStride||0,f={array:void 0,name:t,accessorName:e,byteLength:s.count*A*c.BYTES_PER_ELEMENT,componentType:s.componentType,count:s.count,type:s.type,itemSize:A};if(s.min&&(f.min=s.min),s.max&&(f.max=s.max),r)if(this._)f.byteStride=l,f.byteOffset=a+(s.byteOffset||0),!l||l===A*c.BYTES_PER_ELEMENT||"indices"===t||"input"===t||"output"===t||t.indexOf("morph")>=0?(f.array=this.p(r,s.count,A,a+(s.byteOffset||0),c),f.array.buffer.byteLength===f.byteLength&&(f.byteOffset=0)):f.array=new Uint8Array(r,a,o.byteLength);else if(s.interleaved){f.byteStride=0,f.byteOffset=0;const t=new c(s.count*A);f.array=Nt(t,r,s.count,A,l,a+(s.byteOffset||0),s.componentType)}else f.byteStride=0,f.array=this.p(r,s.count,A,a+(s.byteOffset||0),c),f.byteOffset=f.array.byteOffset;else{f.array=new c(s.count);const t=f.min||f.max;t&&(f.array[0]=t[0],f.array[1]=t[1],f.array[2]=t[2])}return f}B(){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)}p(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)}g(t){const e=xt.indexOf(t);return xt[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.m(e).then((n=>{const{buffer:i,byteOffset:s}=n,o=Ot(i,s+(e.byteOffset||0),r);return t.content=o,t}))}if(t.uri){if(pt(t.uri)){const e=Rt(t.uri),r=Ot(e,0,e.byteLength);return t.content=r,Promise.resolve(t)}{const e=this.rootPath+"/"+t.uri;return Lt.get(e).then((e=>(t.content=e,t)))}}return Promise.resolve(t)}));return Promise.all(r).then((()=>t))}}class vt extends Ft{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 wt(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(Tt(t.name)&&(e.name=t.name),Tt(t.children)&&(e.children=t.children),Tt(t.jointName)&&(e.jointName=t.jointName),Tt(t.matrix)&&(e.matrix=t.matrix),Tt(t.rotation)&&(e.rotation=t.rotation),Tt(t.scale)&&(e.scale=t.scale),Tt(t.translation)&&(e.translation=t.translation),Tt(t.extras)&&(e.extras=t.extras),Tt(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=Y(yt,e.translation||St),n=W(It,e.rotation||Pt),i=Z(bt,e.scale||Mt);return J(i,n,i),J(t,r,i)}return z(t)}([],e);delete e.translation,delete e.rotation,delete e.scale,e.matrix=t}return e}R(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}I(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)}S(t){const e=this.gltf.textures[t];if(!e)return null;const r=this.gltf.images[e.source];return this.I(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 Ut extends Ft{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 wt(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 mt(e,t),!Tt(t.weights)&&this.gltf.meshes&&Tt(e.mesh)?e.weights=this.gltf.meshes[e.mesh].weights:t.weights&&(e.weights=t.weights),e}S(t){const e=this.gltf.textures[t];if(!e)return null;const r=this.gltf.images[e.source];return this.I(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}};mt(n,e);const i=Tt(e.sampler)?this.gltf.samplers[e.sampler]:void 0;return i&&(n.sampler=i),t.format&&(n.format=t.format),n}))}I(t){if(!Tt(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.P(e,t)}return null}P(t,e){const r=this.h(t,this.glbBuffer.buffer,this.glbBuffer.byteOffset);return this.getImageByBuffer(r,e)}h(t,e,r){r=r||0;const n=t.byteOffset+r,i=t.byteLength;return new Uint8Array(e,n,i)}M(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++)(Tt(t[r].input)||Tt(t[r].output))&&(e.push(this.accessor.C("input",t[r].input)),e.push(this.accessor.C("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 Gt="undefined"!=typeof TextDecoder?new TextDecoder("utf-8"):null;class Ht{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 Ht.readV1(n,e);if(2===i)return Ht.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=Vt(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 A=s.getUint32(o,!0);if(o+=4,1313821514===A)r=Vt(t,e+12+o,a);else if(5130562===A){i=e+12+o,n=a;break}o+=a}return{json:JSON.parse(r),glbBuffer:{byteOffset:i,buffer:t,byteLength:n}}}}function Vt(t,e,r){if(Gt){const n=new Uint8Array(t,e,r);return Gt.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=Kt[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 Kt=[1,1,1,1,2,2,3,0],kt=[0,0,0],Xt=[0,0,0,1],zt=[1,1,1],Jt={TRANSLATION:[0,0,0],ROTATION:[0,0,0,1],SCALE:[1,1,1]},Yt={PREVIOUS:null,NEXT:null,PREINDEX:null,NEXTINDEX:null,INTERPOLATION:null},Zt={N(t,e,r,n,i,s,o,a){const A=Tt(t)?e.animations:[e.animations[0]],c={};for(let e=0;e<A.length;e++){const l=A[e],f=l.name||e;if(Tt(t)&&f!==t)continue;const h=l.channelsMap[r];if(h)for(let t=0;t<h.length;t++){const e=h[t];"translation"===e.target.path?(this.D(i,l.samplers[e.sampler],n,1),c.translation=$(kt,i)):"rotation"===e.target.path?(this.O(s,l.samplers[e.sampler],n,1),c.rotation=Bt(Xt,s)):"scale"===e.target.path?(this.D(o,l.samplers[e.sampler],n,1),c.scale=$(zt,o)):"weights"===e.target.path&&a&&(this.D(a,l.samplers[e.sampler],n,a.length),c.weights=a)}}return c},D(t,e,r,n){switch(e.interpolation){case"LINEAR":{const i=this.L(Yt,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(Yt,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(Yt,e,r,3*n);i&&(t=this.F(t,i,e.input.array,3*n));break}}return t},O(t,e,r){switch(e.interpolation){case"LINEAR":{const n=this.L(Yt,e,r,1);n&&Et(t,n.PREVIOUS,n.NEXT,n.INTERPOLATION);break}case"STEP":{const n=this.L(Yt,e,r,1);n&&(t=ft(t,...n.PREVIOUS));break}case"CUBICSPLINE":{const n=this.L(Yt,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.F(t,n,e.input.array,3);for(let e=0;e<t.length;e++)t[e]=Math.cos(t[e])}break}}return t},v(t,e){const r=t.length;let n,i,s,o=0,a=r-1,A=Math.floor((o+a)/2);for(;o<=r-1&&a>=0;){if(o===a)return null;if(t[A]<=e&&e<=t[A+1]){const r=t[A];return n=A,i=A+1,s=(e-r)/(t[A+1]-r),{preIndx:n,nextIndex:i,interpolation:s}}e<t[A]?(a=A,A=Math.floor((o+a)/2)):t[A+1]<e&&(o=A,A=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.v(i,r);if(!a||!a.nextIndex)return null;const{preIndx:A,nextIndex:c,interpolation:l}=a;t.PREINDEX=A,t.NEXTINDEX=c,t.INTERPOLATION=l;const f=o*n;return t.PREVIOUS=s.subarray(t.PREINDEX*f,(t.PREINDEX+1)*f),t.NEXT=s.subarray(t.NEXTINDEX*f,(t.NEXTINDEX+1)*f),t},F(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],A=(o-s)*e.PREVIOUS[2*n+r],c=e.NEXT[3+r],l=(o-s)*e.NEXT[r],f=(2*Math.pow(i,3)-3*Math.pow(i,2)+1)*a+(Math.pow(i,3)-2*Math.pow(i,2)+i)*A+(2*-Math.pow(i,3)+3*Math.pow(i,2))*c+(Math.pow(i,3)-Math.pow(i,2))*l;t[r]=f}return t},getAnimationClip(t,e,r,n){const i=t.nodes[e]&&t.nodes[e].weights;return tt(kt,...Jt.TRANSLATION),ft(Xt,...Jt.ROTATION),tt(zt,...Jt.SCALE),this.N(n,t,e,r,kt,Xt,zt,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?Tt(e)?r[e]:r[Object.keys(r)[0]]:null}};let Wt=!1;if("undefined"!=typeof OffscreenCanvas){let t;try{t=new OffscreenCanvas(2,2).getContext("2d")}catch(on){}t&&"undefined"!=typeof createImageBitmap&&(Wt=!0)}const jt="undefined"==typeof document?null:document.createElement("canvas");class Qt{constructor(t,e,r){if(this.options=r||{},this.options.decoders||(this.options.decoders={}),e.buffer instanceof ArrayBuffer){const{json:r,glbBuffer:n}=Ht.read(e.buffer,e.byteOffset,e.byteLength);this.U(t,r,n)}else this.U(t,e);this.G=new wt(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.G.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.k(),n=this.X(),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 Zt.getAnimationClip(t,e,r,n)}static getAnimationTimeSpan(t,e){return Zt.getTimeSpanByName(t,e)}static getTypedArrayCtor(t){return gt(t)}static readInterleavedArray(t,e,r,n,i,s,o){return Nt(t,e,r,n,i,s,o)}U(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=Wt?ee.bind(this):this.options.requestImage||qt,this.options.transferable&&(this.transferables=[]),2===this.version?(this.adapter=new Ut(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 vt(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"))}J(t,e){if(t.children&&t.children.length>0){if(!("number"==typeof(r=t.children[0])&&isFinite(r)||function(t){return!Ct(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.J(r,e)}));t.children=n}var r;return t}K(t){return this.Y(t).then((t=>{const e=this.scenes=[];let r;for(const e in t)t[e]=this.J(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.R(this.gltf.materials);n.materials=t}return n}))}Y(t){return this.Z(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}))}W(){this.skins=[];const t=[];return this.adapter.iterate(((e,r,n)=>{t.push(this.j(r).then((t=>{t.index=n,this.skins.push(t)})))}),"skins"),t}j(t){const e=t.inverseBindMatrices;return this.adapter.accessor.C("inverseBindMatrices",e).then((e=>(t.inverseBindMatrices=e,e&&e.buffer&&this.transferables&&this.transferables.indexOf(e.buffer)<0&&this.transferables.push(e.buffer),t)))}k(){const t=this.gltf.animations;return Tt(t)?this.adapter.getAnimations(t):null}Z(t){this.meshes={};let e=[];return this.adapter.iterate(((r,n,i)=>{e.push(this.q(n,t).then((t=>{t.index=i,this.meshes[r]=t})))}),"meshes"),e=e.concat(this.W()),Promise.all(e)}q(t,e){const r=t.primitives.map((t=>this.$(t,e))).filter((t=>!!t));return Promise.all(r).then((e=>{const r={};return mt(r,t),r.primitives=e,r}))}X(){const t=this.gltf.textures;if(!t)return null;const e=[];for(const r in t)e.push(this.adapter.S(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}))}$(t,e){let r;const n=[],i=t.extensions;if(Tt(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.C(`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],A=this.G.m(a).then((r=>{const{buffer:n,byteOffset:i}=r;let{byteOffset:s,byteLength:A}=a;s||(s=0);const c=new DataView(n,i+s,A),l={attributes:o,useUniqueIDs:!1,skipAttributeTransform:e.skipAttributeTransform};return t(c,l).then((t=>{const e=Object.values(t.attributes);return t.indices&&e.push(t.indices),e}))}));n.push(A),r=Promise.all(n)}else{const e=t.attributes;for(const t in e){const r=this.adapter.accessor.C(t,e[t]);r&&n.push(r)}if(Tt(t.indices)){const e=this.adapter.accessor.C("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;it(t,t,i),et(t,t,s),it(r,r,i),et(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=Tt(t.mode)?t.mode:4,Tt(t.extras)&&(s.extras=t.extras),s}))}}function qt(t,e){const r=new Image;r.crossOrigin="",r.onload=()=>{if(!jt)return void e(new Error("There is no canvas to draw image!"));jt.width=r.width,jt.height=r.height;const t=jt.getContext("2d",{willReadFrequently:!0});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 $t,te;function ee(t,e){$t||($t=new OffscreenCanvas(2,2),te=$t.getContext("2d",{willReadFrequently:!0})),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;re(r)||(r=ne(r)),re(n)||(n=ne(n));const i=this.options.maxTextureSize;i&&(r=Math.min(i,r),n=Math.min(i,n)),$t.width=r,$t.height=n,te.drawImage(t,0,0,r,n),t.close();const s=te.getImageData(0,0,r,n);e(null,{width:r,height:n,data:new Uint8Array(s.data)})})).catch((t=>{console.warn(t),e(t)}))}function re(t){return 0==(t&t-1)&&0!==t}function ne(t){return Math.pow(2,Math.floor(Math.log(t)/Math.LN2))}const ie="undefined"==typeof document?null:document.createElement("canvas");class se extends i.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(!ie)return void e(new Error("There is no canvas to draw image!"));const t=function(t){if(oe(t.width)&&oe(t.height))return t;let e=t.width,r=t.height;oe(e)||(e=ae(e));oe(r)||(r=ae(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);ie.width=t.width,ie.height=t.height;const n=ie.getContext("2d",{willReadFrequently:!0});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 oe(t){return 0==(t&t-1)&&0!==t}function ae(t){return Math.pow(2,Math.floor(Math.log(t)/Math.LN2))}class Ae{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 ce(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=[];Be(n[r],i,t,e)}}}const le=[],fe=[],he=[],ue=[0,0,0],Ee=ut([]),_e=[1,1,1];function Be(t,e,r,n){const i=e.slice(0);if(t.matrix)i.push(t.matrix);else if(t.rotation||t.translation||t.scale){const e=Y(le,t.translation||ue),r=W(fe,t.rotation||Ee),n=Z(he,t.scale||_e);J(n,r,n);const s=J([],e,n);i.push(s)}if(t.children&&t.children.length)for(let e=0,s=t.children.length;e<s;e++)Be(t.children[e],i,r,n);if(void 0!==t.mesh){const e=t.mesh,s=r.meshes[e];if(s){const t=i.slice(0),o=s.primitives;for(let i=0,s=o.length;i<s;i++){const s=o[i];s&&(s.matrices=t,n(s,e,i,r))}}}}function de(t,e,r){let{componentType:n,byteOffset:i,byteStride:s,itemSize:o}=e;const a=e.array.buffer,A=n?Qt.getTypedArrayCtor(n):e.array.constructor;if(i=void 0===i?e.array.byteOffset:i,s=s||0,!s||s===o*A.BYTES_PER_ELEMENT&&i%A.BYTES_PER_ELEMENT==0){const e=new A(a,i+r*o*A.BYTES_PER_ELEMENT,o);return t.set(e),t}s||(s=o*A.BYTES_PER_ELEMENT);const c=new Uint8Array(a,s*r+i,o*A.BYTES_PER_ELEMENT);return new Uint8Array(t.buffer).set(c),t}function Ce(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 Te=new Array(3),me=new Array(3),ge=[40680631590769,40680631590769,40408299984661.445];function pe(t,e,r,n){const i=ge,s=Math.cos(r);Te[0]=s*Math.cos(e),Te[1]=s*Math.sin(e),Te[2]=Math.sin(r),Le(Te,Te),nt(me,i,Te);const o=Math.sqrt(ot(Te,me));var a,A,c;return A=me,c=o,(a=me)[0]=A[0]/c,a[1]=A[1]/c,a[2]=A[2]/c,it(Te,Te,n),et(t,me,Te)}const Re=[1/6378137,1/6378137,1/6356752.314245179],ye=[1/40680631590769,1/40680631590769,1/40408299984661.445],Ie=new Array(3),be=new Array(3),Se=new Array(3);function Pe(t,e){const r=ye,n=function(t,e,r,n,i){const s=e[0],o=e[1],a=e[2],A=r[0],c=r[1],l=r[2],f=s*s*A*A,h=o*o*c*c,u=a*a*l*l,E=f+h+u,_=Math.sqrt(1/E),B=it(Me,e,_);if(E<i)return isFinite(_)?B:void 0;const d=n[0],C=n[1],T=n[2],m=Ne;m[0]=B[0]*d*2,m[1]=B[1]*C*2,m[2]=B[2]*T*2;let g,p,R,y,I,b,S,P,M,N,D,O=(1-_)*Oe(e)/(.5*Oe(m)),L=0;do{O-=L,R=1/(1+O*d),y=1/(1+O*C),I=1/(1+O*T),b=R*R,S=y*y,P=I*I,M=b*R,N=S*y,D=P*I,g=f*b+h*S+u*P-1,p=f*M*d+h*N*C+u*D*T;L=g/(-2*p)}while(Math.abs(g)>De);return t[0]=s*R,t[1]=o*y,t[2]=a*I,t}(Ie,e,Re,r,.1);let i=ct(be,n,r);i=Le(i,i);const s=At(Se,e,n),o=Math.atan2(i[1],i[0]),a=Math.asin(i[2]),A=L(ot(s,e))*Oe(s);return t[0]=D(o),t[1]=D(a),t[2]=A,t}const Me=new Array(3),Ne=new Array(3),De=1e-12;function Oe(t){return Q(t)}function Le(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 Fe(t,e){return nt(e,t,ye),st(e,e)}function xe(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,st(e,e)}var we=Object.freeze({__proto__:null,radianToCartesian3:pe,cartesian3ToDegree:Pe,normalizeCartesian:Le,geodeticSurfaceNormal:Fe,geodeticSurfaceNormalCartographic:xe});const ve=1e-14,Ue=1e-15;function Ge(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 He(t,e){let r="";for(let n=0;n<4;n++){const i=t.getUint8(e+n);r+=String.fromCharCode(i)}return r}const Ve="undefined"!=typeof TextDecoder?new TextDecoder("utf-8"):null;function Ke(t,e,r){const n=new Uint8Array(t,e,r);return Ve?JSON.parse(Ve.decode(n)):JSON.parse(x(n))}function ke(t,e,r){const n=new Uint8Array(t,e,r);return Ve?JSON.parse(Ve.decode(n)):JSON.parse(x(n))}function Xe(t,e,r){return{offset:e,byteLength:r}}function ze(t,e,r,n){const{byteOffset:i,componentType:s,type:o}=t,{ctor:a,type:A}=Qe(s||"UNSIGNED_SHORT"),c=We(o);return{byteStride:0,byteOffset:i+r,itemSize:c,count:n*c,componentType:A,array:new a(e,r+i,n*c)}}function Je(t,e,r,n){const i=ze(t,e,r,n);return i.array.buffer.byteLength!==e.byteLength&&(i.array=i.array.slice()),i}function Ye(t,e,r,n){const{byteOffset:i,componentType:s,type:o}=t,{ctor:a}=Qe(s||"UNSIGNED_SHORT"),A=We(o),c=new a(e,i,r*A);return 1===A?c[n]:c.subarray(n*A,n*A+A)}const Ze={"SCALAR":1,"VEC2":2,"VEC3":3,"VEC4":4};function We(t){return t?Ze[t]:1}const je={"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 Qe(t){return je[t]}function qe(t){for(let e in je)if(t===je[e].ctor)return je[e].type;throw new Error("unrecognized ctor:"+t)}function $e(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 tr(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 A,c,l={},f={};n>0&&(l=Ke(a,e,n),e+=n),i>0&&(A=function(t,e,r){return{offset:e,byteLength:r}}(0,e,i),e+=i),s>0&&(f=ke(a,e,s),e+=s);const h=Xe(0,e,o);return c=a.slice(h.offset,h.offset+h.byteLength),r.push(c),{featureTable:l,featureTableBin:A,batchTable:f,batchTableBin:c}}var er={north:[-1,0,0],east:[0,1,0],up:[0,0,1],south:[1,0,0],west:[0,-1,0],down:[0,0,-1]},rr={},nr={east:[],north:[],up:[],west:[],south:[],down:[]},ir=[],sr=[],or=[];const ar=[0,0,0];function Ar(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 cr=(ur={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"}}[lr="east"][fr="north"],rr[Er=lr+fr]?hr=rr[Er]:(hr=function(t,e,r){if(function(t,e){var r=t[0],n=t[1],i=t[2],s=e[0],o=e[1],a=e[2];return Math.abs(r-s)<=k*Math.max(1,Math.abs(r),Math.abs(s))&&Math.abs(n-o)<=k*Math.max(1,Math.abs(n),Math.abs(o))&&Math.abs(i-a)<=k*Math.max(1,Math.abs(i),Math.abs(a))}(t,ar))$(ir,er[lr]),$(sr,er[fr]),$(or,er[ur]);else if(Ge(t[0],0,ve)&&Ge(t[1],0,ve)){var n=L(t[2]);$(ir,er[lr]),"east"!==lr&&"west"!==lr&&it(ir,ir,n),$(sr,er[fr]),"east"!==fr&&"west"!==fr&&it(sr,sr,n),$(or,er[ur]),"east"!==ur&&"west"!==ur&&it(or,or,n)}else{Fe(t,nr.up);var i=nr.up,s=nr.east;s[0]=-t[1],s[1]=t[0],s[2]=0,st(nr.east,s),at(nr.north,i,s),it(nr.down,nr.up,-1),it(nr.west,nr.east,-1),it(nr.south,nr.north,-1),ir=nr[lr],sr=nr[fr],or=nr[ur]}return r[0]=ir[0],r[1]=ir[1],r[2]=ir[2],r[3]=0,r[4]=sr[0],r[5]=sr[1],r[6]=sr[2],r[7]=0,r[8]=or[0],r[9]=or[1],r[10]=or[2],r[11]=0,r[12]=t[0],r[13]=t[1],r[14]=t[2],r[15]=1,r},rr[Er]=hr),hr);var lr,fr,hr,ur,Er;const _r=[],Br=[],dr=[],Cr=[],Tr=[],mr=[],gr=[],pr={x:0,y:0},Rr={x:0,y:0},yr=Math.PI/180;const Ir={"programs":[{"attributes":["aPosition","instanceId","batchId","aTexCoord0","aTexCoord1","aNormal","aColor","uv2","uv3","uv4","secondary_colour","uv6"],"fragmentShader":1,"vertexShader":0}],"shaders":[{"type":35633,"content":"precision highp float;\n\n#include <gl2_vert>\n\n attribute vec4 aPosition;\n\n#ifdef VertexColor\n\n attribute vec4 aColor0;\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 HAS_VertexWeight\n\n attribute float aVertexWeight;\n\n#endif\n\n\n\n#ifdef HAS_TextureCoordMatrix\n\n attribute vec2 aTextureCoordMatrix;\n\n#endif\n\n\n\n#ifdef TexCoord\n\n attribute vec4 aTexCoord;\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#ifdef InstancePipe\n\n attribute vec4 uv1;\n\n attribute vec4 uv2;\n\n attribute vec4 uv3;\n\n attribute vec4 uv4;\n\n attribute vec4 uv5;\n\n attribute vec4 uv6;\n\n attribute vec4 uv7;\n\n attribute vec4 secondary_colour;\n\n attribute vec4 uv9;\n\n#endif\n\n uniform vec4 uFillForeColor;\n\n uniform vec4 uSelectedColor;\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 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#ifdef COMPRESS_TEXCOORD\n\n#ifdef TexCoord\n\n uniform vec2 decode_texCoord0_min;\n\n#endif\n\n#ifdef TexCoord2\n\n uniform vec2 decode_texCoord1_min;\n\n#endif\n\n#ifdef MeshOPT_Compress\n\n uniform vec3 decode_texCoord0_vNormConstant;\n\n uniform vec3 decode_texCoord1_vNormConstant;\n\n#else\n\n uniform float decode_texCoord0_normConstant;\n\n uniform float decode_texCoord1_normConstant;\n\n#endif\n\n#endif\n\n\n\n#ifdef COMPRESS_VERTEX\n\n uniform vec4 decode_position_min;\n\n uniform float decode_position_normConstant;\n\n#endif\n\n\n\n#ifdef COMPRESS_NORMAL\n\n uniform float normal_rangeConstant;\n\n#endif\n\n\n\nuniform mat4 modelMatrix;\n\nuniform mat4 modelViewMatrix;\n\nuniform mat4 projMatrix;\n\nuniform mat3 modelNormalMatrix;\n\n\n\n\n\n\n\nfloat czm_signNotZero(float value) {\n\n return value >= 0.0 ? 1.0 : -1.0;\n\n}\n\nvec2 czm_signNotZero(vec2 value) {\n\n return vec2(czm_signNotZero(value.x), czm_signNotZero(value.y));\n\n}\n\n\n\nvec3 czm_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)) * czm_signNotZero(v.xy);\n\n }\n\n return normalize(v);\n\n}\n\n\n\nvec4 czm_updatePositionDepth(vec4 coords) {\n\n coords.z = clamp(coords.z / coords.w, -1.0, 1.0) * coords.w;\n\n return coords;\n\n}\n\n\n\nvoid main()\n\n{\n\n#ifdef COMPRESS_VERTEX\n\n vec4 vertexPos = vec4(1.0);\n\n vertexPos = vec4(aPosition.xyz, 1.0);\n\n#else\n\n vec4 vertexPos = aPosition;\n\n#endif\n\n#ifdef TexCoord\n\n\n\n#ifdef COMPRESS_TEXCOORD\n\n#ifdef MeshOPT_Compress\n\n vec2 texCoord0;\n\n texCoord0.x = aTexCoord.x * decode_texCoord0_vNormConstant.x;\n\n texCoord0.y = aTexCoord.y * decode_texCoord0_vNormConstant.y;\n\n vTexCoord.xy = decode_texCoord0_min + texCoord0.xy;\n\n#else\n\n vTexCoord.xy = decode_texCoord0_min.xy + aTexCoord.xy * decode_texCoord0_normConstant;\n\n#endif\n\n#else\n\n vTexCoord.xy = aTexCoord.xy;\n\n#endif\n\n\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 = aTexCoord.z;\n\n #ifdef HAS_TextureCoordMatrix\n\n vTexCoordTransform.x = aTextureCoordMatrix.x;\n\n #endif\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\n\n #ifdef COMPRESS_TEXCOORD\n\n #ifdef MeshOPT_Compress\n\n vec2 texCoord1;\n\n texCoord1.x = aTexCoord1.x * decode_texCoord1_vNormConstant.x;\n\n texCoord1.y = aTexCoord1.y * decode_texCoord1_vNormConstant.y;\n\n vTexCoord.zw = decode_texCoord1_min + texCoord1.xy;\n\n #else\n\n vTexCoord.zw = decode_texCoord1_min.xy + aTexCoord1.xy * decode_texCoord1_normConstant;\n\n #endif\n\n #else\n\n vTexCoord.zw = aTexCoord1.xy;\n\n #endif\n\n\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 #ifdef HAS_TextureCoordMatrix\n\n vTexCoordTransform.y = aTextureCoordMatrix.y;\n\n #endif\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 vertexColor = uFillForeColor;\n\n#ifdef VertexColor\n\n vertexColor *= aColor0 / 255.0;\n\n#endif\n\n#ifdef VertexNormal\n\n vec3 normal = aNormal;\n\n #ifdef COMPRESS_NORMAL\n\n #ifdef MeshOPT_Compress\n\n normal.x = aNormal.x / 127.0;\n\n normal.y = aNormal.y / 127.0;\n\n normal.z = 1.0 - abs(normal.x) - abs(normal.y);\n\n normal = normalize(normal);\n\n #else\n\n normal = czm_octDecode(aNormal.xy, normal_rangeConstant).zxy;\n\n #endif\n\n #endif\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#ifdef InstancePipe\n\n mat4 worldMatrix;\n\n mat4 worldMatrix0;\n\n mat4 worldMatrix1;\n\n vec4 worldPos0;\n\n vec4 worldPos1;\n\n worldMatrix0[0] = uv1;\n\n worldMatrix0[1] = uv2;\n\n worldMatrix0[2] = uv3;\n\n worldMatrix0[3] = vec4( 0.0, 0.0, 0.0, 1.0 );\n\n worldMatrix1[0] = uv4;\n\n worldMatrix1[1] = uv5;\n\n worldMatrix1[2] = uv6;\n\n worldMatrix1[3] = vec4( 0.0, 0.0, 0.0, 1.0 );\n\n vec4 realVertex = vec4(vertexPos.xyz, 1.0);\n\n realVertex.x = realVertex.x * uv7.z;\n\n worldPos0 = realVertex * worldMatrix0;\n\n worldPos1 = realVertex * worldMatrix1;\n\n vertexColor *= secondary_colour; \n\n #ifdef TexCoord\n\n if(aTexCoord.y > 0.5)\n\n {\n\n vec4 tex4Vec = uTexMatrix * vec4(uv7.y, aTexCoord.x, 0.0, 1.0);\n\n vTexCoord.xy = tex4Vec.xy;\n\n vertexPos = worldPos1;\n\n worldMatrix = worldMatrix1;\n\n }\n\n else\n\n {\n\n vec4 tex4Vec = uTexMatrix * vec4(uv7.x, aTexCoord.x, 0.0, 1.0);\n\n vTexCoord.xy = tex4Vec.xy;\n\n vertexPos = worldPos0;\n\n worldMatrix = worldMatrix0;\n\n }\n\n #endif\n\n #ifdef VertexNormal\n\n normal.x = normal.x * uv7.z;\n\n #endif\n\n#endif\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 = modelNormalMatrix * normal;\n\n#endif\n\n vPositionMC = positionMC;\n\n vPositionEC = (modelViewMatrix * positionMC).xyz;\n\n gl_Position = projMatrix * modelViewMatrix * 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#endif\n\n#ifdef GL_EXT_shader_texture_lod\n\n #extension GL_EXT_shader_texture_lod : enable\n\n#endif\n\nprecision highp float;\n\n#include <gl2_frag>\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 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 vPositionMC;\n\n varying vec3 vPositionEC;\n\n varying vec4 vColor;\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 GL_OES_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 color = texture2DLodEXT(curTexture, realTexCoord.xy, mipLevel);\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\n\n vec3 czm_acesTonemapping(vec3 color) {\n\n float g = 0.985;\n\n float a = 0.065;\n\n float b = 0.0001;\n\n float c = 0.433;\n\n float d = 0.238;\n\n\n\n color = (color * (color + a) - b) / (color * (g * color + c) + d);\n\n\n\n color = clamp(color, 0.0, 1.0);\n\n\n\n return color;\n\n }\n\n vec4 SRGBtoLINEAR4(vec4 srgbIn) {\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 #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 vec3 applyTonemapping(vec3 linearIn) {\n\n #ifndef HDR\n\n return czm_acesTonemapping(linearIn);\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 uniform vec3 light0_viewDirection;\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(light0_viewDirection);\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 }"}],"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},"TextureCoordMatrix":{"semantic":"TextureCoordMatrix","type":35664}},"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:br,getTextureMinFilter:Sr,getTextureWrap:Pr,getMaterialType:Mr,getMaterialFormat:Nr,getPrimitive:Dr,getUniqueREGLBuffer:Or}=r.reshader.REGLHelper,Lr=[1,0,0,0,0,0,1,0,0,-1,0,0,0,0,0,1],Fr=[0,0,1,0,0,1,0,0,-1,0,0,0,0,0,0,1],{loginIBLResOnCanvas:xr,logoutIBLResOnCanvas:wr,getIBLResOnCanvas:vr,getPBRUniforms:Ur}=r.reshader.pbr.PBRUtils,Gr={factor:0,units:0},Hr={specularStrength:0,materialShininess:1},Vr=[1,1,1],Kr=r.mat4.identity([]),kr=t=>t.material instanceof r.reshader.PhongMaterial,Xr=t=>t.material instanceof r.reshader.pbr.StandardMaterial,zr=[!0,!0,!0,!0],Jr=[],Yr=new i.Coordinate(0,0),Zr=new i.Point(0,0),Wr=new i.Point(0,0),jr=new i.Point(0,0),Qr=[],qr=[],$r=[],tn=[],en={"POSITION":"POSITION","NORMAL":"NORMAL","TEXCOORD_0":"TEXCOORD_0","TEXCOORD_1":"TEXCOORD_1","COLOR_0":"COLOR_0","TANGENT":"TANGENT","_BATCHID":"_BATCHID"};class rn{constructor(t,e){this.tt=e,this.et=e.getRenderer().canvas,this.pickingFBO=e.getRenderer().pickingFBO,this.rt=new i.SpatialReference,this.nt=t,this.it=new r.reshader.Renderer(t),this.st={},this.ot={},this.At={},this.ct={},this.lt={},this.ft={},this.ht={},this.ut=new r.reshader.Scene,this.Et=new r.reshader.Scene,this._t=new r.reshader.Scene,this.Bt=new r.reshader.Scene,this.dt=new r.reshader.ResourceLoader(t.texture(2)),this.Ct=this.Tt.bind(this),this.gt=new r.reshader.PhongMaterial({"baseColorFactor":[1,1,1,1]}),this.Rt(),this.yt=new r.reshader.KHRTechniquesWebglManager(this.nt,this.It(),this.dt);const n=this.getMap();n.altitudeToPoint&&(this.bt=n.altitudeToPoint(100,n.getGLRes())/100)}getI3DMMeshes(){return this.lt}getPNTSMeshes(){return this.ct}getB3DMMeshes(){return this.At}getPaintedMeshes(){return this.St}getMap(){return this.tt.getMap()}paint(t,e,n){const i=n&&n.renderTarget,s=n&&n.sceneFilter,o=this.getMap();if(!t.length||!o)return;const a=this.Pt(),A=o.projViewMatrix,c=this.tt.options.services,l=[],h=[];let u=[];const E=[],_=[],B=this.Mt(t);for(let i=0,s=t.length;i<s;i++){const s=t[i].data.node;let o=this.Nt(s);if(!o)continue;this.ft[s.id]&&(o=this.ft[s.id],o=v(o));let a=c[s.Dt].polygonOffset||Gr;S(a)&&(a=a()),Array.isArray(o)||(l[0]=o,o=l);for(let t=0,i=o.length;t<i;t++){const i=o[t].properties.magic;if("b3dm"===i){if(o[t].getBoundingBox&&!f(A,o[t].getBoundingBox()))continue;const{batchIdData:e,batchIdMap:i}=o[t].geometry.properties;if(e&&i){const e=o[t].properties.node.Dt;this.Ot&&this.Ot[e]&&r.HighlightUtil.highlightMesh(this.nt,o[t],this.Ot[e],this.Lt,i),r.HighlightUtil.showOnly(this.nt,o[t],this.Ft&&this.Ft[e],this.xt,i)}n&&n.bloom&&o[t].properties.hlBloomMesh&&(o[t].properties.hlBloomMesh.properties.depthFunc="always",o[t].properties.hlBloomMesh.properties.polygonOffset=a,u.push(o[t].properties.hlBloomMesh)),u.push(o[t])}else"pnts"===i?E.push(o[t]):"i3dm"===i&&_.push(o[t]);o[t].properties.isLeaf=!!e[s.id],o[t].properties.level=B.get(s.wt),o[t].properties.polygonOffset=a,o[t].vt=s,e[s.id]||h.push(o[t])}}let d=0;const C=this.yt.getExcludeFilter();d+=this.Ut(this.Gt,a,[s,kr,C],i,h,u,_),d+=this.Ut(this.Ht,a,[s,Xr,C],i,h,u,_),this.yt.forEachShader(((t,e,r)=>{const n=this.Pt(r);d+=this.Ut(t,n,[s,e],i,h,u,_)})),this.Et.setMeshes(E);const T=this.Vt();return d+=this.it.render(this.Kt,T,this.Et,i&&i.fbo),this.St={pntsMeshes:E,i3dmMeshes:_,b3dmMeshes:u},d}Ut(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=zr;let a=0;return this.ut.setMeshes(s),a+=this.it.render(t,e,this.ut,n&&n.fbo),e.stencilEnable=!0,this._t.setMeshes(o),a+=this.it.render(t,e,this._t,n&&n.fbo),a}kt(t,e){return e.vt.Xt-t.vt.Xt}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.zt(e);n&&(n.getBoundingBox&&!f(o,n.getBoundingBox())||a.push(n))}this.Jt.filter=n,this.Bt.setMeshes(a);const A=this.Yt(r);this.it.render(this.Jt,A,this.Bt,i&&i.fbo)}deleteTile(t){const e=t.node.id;this.Zt(e)}Zt(t){const e=this.ot[t];e&&(e.geometry.dispose(),e.dispose(),delete this.ot[t]);let r=this.At[t]||this.ct[t]||this.lt[t]||this.ft[t]||this.st[t];this.ft[t]?this.Wt(t):r&&(this.jt(r),delete this.At[t],delete this.ct[t],delete this.lt[t],delete this.st[t])}Wt(t){let e=this.ft[t];e=v(e);for(let t=0;t<e.length;t++){const{id:r}=e[t].properties;this.Zt(r)}delete this.ft[t]}jt(t){if(Array.isArray(t))for(let e=0,r=t.length;e<r;e++)this.jt(t[e]);else{r.HighlightUtil.showOnly(this.nt,t),r.HighlightUtil.highlightMesh(this.nt,t);const e=t.geometry.properties.url;if(e){const t=this.ht[e];t&&(t.refCount--,t.refCount<=0&&(t.geometry.dispose(),t.material.dispose(),delete this.ht[e]))}else t.geometry.dispose(),t.material&&t.material.dispose();t.dispose()}}remove(){const t=this.tt;wr(t.getRenderer().canvas,t.getMap());for(const t in this.ft)this.Wt(t);this.ft={};for(const t in this.At)this.Zt(t);this.At={};for(const t in this.ct)this.Zt(t);this.ct={};for(const t in this.lt)this.Zt(t);this.lt={};for(const t in this.st)this.Zt(t);this.st={};for(const t in this.ot)this.Zt(t);this.ot={},this.Gt&&(this.Gt.dispose(),delete this.Gt),this.Ht&&(this.Ht.dispose(),delete this.Ht),this.Kt&&(this.Kt.dispose(),delete this.Kt),this.Jt&&(this.Jt.dispose(),delete this.Jt),this.yt.dispose(),this.picking&&this.picking.dispose()}zt(t){if(!t.boundingVolume||!t.boundingVolume.region)return null;if(this.ot[t.id])return this.ot[t.id];const e=t.boundingVolume.region;let n=new i.Coordinate(D(e[0]),D(e[1])),s=new i.Coordinate(D(e[2]),D(e[3]));n=this.Qt(n),s=this.Qt(s);const o=n.add(s).qt(.5);n._sub(o),s._sub(o);const a=this.$t(e[4],e[5]),A=a.x,c=a.y,l=[n.x,n.y,c,s.x,n.y,c,s.x,s.y,c,n.x,s.y,c,n.x,n.y,A,s.x,n.y,A,s.x,s.y,A,n.x,s.y,A],f=new r.reshader.Geometry({aPosition:l},[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"});f.generateBuffers(this.nt);const h=new r.reshader.Mesh(f),u=r.mat4.identity([]);return h.setLocalTransform(r.mat4.translate(u,u,[o.x,o.y,0])),this.ot[t.id]=h,h}Nt(t){return this.At[t.id]||this.ct[t.id]||this.lt[t.id]||this.ft[t.id]}has(t){return this.Nt(t)||this.st[t.id]}createPntsMesh(t,e,n,i){if(this.ct[e]){const t=this.ct[e];return console.warn(`pnts mesh with id(${e}) was already created.`),i(null,{id:e,mesh:t}),t}const{pnts:s,featureTable:o,rootIdx:a}=t,A=this.tt.options.services[a],c=o.POINTS_LENGTH,l=new r.reshader.Geometry(s,null,c,{primitive:"points",positionAttribute:"POSITION"});l.generateBuffers(this.nt);const f={};s.POSITION?f.HAS_POSITION=1:s.POSITION_QUANTIZED&&(f.HAS_POSITION_QUANTIZED=1),s.RGB?f.HAS_RGB=1:s.RGBA?f.HAS_RGBA=1:s.RGB565&&(f.HAS_RGB565=1),(s.NORMAL||s.NORMAL_OCT16P)&&(f.HAS_NORMAL=1,s.NORMAL_OCT16P&&(f.HAS_NORMAL_OCT16P=1)),t.featureTable.CONSTANT_RGBA&&(t.featureTable.CONSTANT_RGBA=t.featureTable.CONSTANT_RGBA.map((t=>t/255)));const{rtcCenter:h,rtcCoord:u}=t,E=this.te($r,u),_=this.ee([],n,h,u);r.mat4.multiply(_,_,E);const B=this.tt.options.services[a],d=new r.reshader.Mesh(l);if(d.properties.magic="pnts",d.properties.id=e,d.properties.node=n,d.properties.count=c,d.properties.batchTable=t.batchTable,d.properties.batchTableBin=t.batchTableBin,d.properties.serviceIndex=a,d.setDefines(f),Object.defineProperty(d.uniforms,"pointColor",{enumerable:!0,get:function(){return t.featureTable.CONSTANT_RGBA?t.featureTable.CONSTANT_RGBA:B&&B.pointColor||[1,1,1,1]}}),Object.defineProperty(d.uniforms,"pointSize",{enumerable:!0,get:function(){return B&&B.pointSize||2}}),Object.defineProperty(d.uniforms,"pointOpacity",{enumerable:!0,get:function(){return B&&B.pointOpacity||1}}),A.coordOffset){const t=this.re(n.Dt,u);r.mat4.multiply(_,t,_)}return d.setLocalTransform(_),this.ct[e]=d,i(null,{id:e,mesh:[d]}),[d]}createI3DMMesh(t,e,n,i){if(this.lt[e]){const t=this.lt[e];return console.warn(`i3dm mesh with id(${e}) was already created.`),this.st[e]||i(null,{id:e,mesh:t}),t}const s=this.tt.options.services[n.Dt],o=this.ne(n.ie),{i3dm:a,featureTable:A,gltf:c,batchTable:l,batchTableBin:f,count:h}=t,u=A.INSTANCES_LENGTH,{rtcCenter:E,rtcCoord:_}=t,B=this.te($r,_),d=this.ee(tn,n,E,_);r.mat4.multiply(B,d,B);const{POSITION:C,NORMAL_UP:T,NORMAL_RIGHT:m,SCALE:g,SCALE_NON_UNIFORM:p,INSTANCE_ROTATION:R}=a,y={"instance_vectorA":new Float32Array(4*u),"instance_vectorB":new Float32Array(4*u),"instance_vectorC":new Float32Array(4*u)},I=new Float32Array(3),b=new Float32Array(3),S=[],P=new Float32Array(1),M=new Float32Array(3),N=[],D=[],O=[],L=[],F=new Float32Array(9);!function(t,e){let{componentType:r,byteOffset:n,byteStride:i,count:s,itemSize:o}=t;const a=t.array.buffer,A=r?Qt.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*A.BYTES_PER_ELEMENT)&&n%A.BYTES_PER_ELEMENT==0){const t=new A(a,n,s*o);for(let r=0;r<s*o;r+=o)e(new A(t.buffer,n+r*A.BYTES_PER_ELEMENT,o),r/o);return}const c=new Uint8Array(o*A.BYTES_PER_ELEMENT);i||(i=o*A.BYTES_PER_ELEMENT);for(let t=0;t<s;t++){const r=new Uint8Array(a,i*t+n,o*A.BYTES_PER_ELEMENT);c.set(r),e(new A(c.buffer),t),r.set(c)}}(C,((t,e)=>{T?(de(b,m,e),de(I,T,e),r.vec3.cross(S,b,I),r.vec3.normalize(S,S),w(N,b,0),w(N,I,1),w(N,S,2),r.quat.fromMat3(D,N)):R?(de(F,R,e),r.quat.fromMat3(D,F)):r.quat.identity(D),g?(de(P,g,e),r.vec3.set(O,P[0],P[0],P[0])):p?(de(M,p,e),r.vec3.set(O,...M)):r.vec3.set(O,1,1,1),r.mat4.fromRotationTranslationScale(L,D,t,O),Ce(y.instance_vectorA,e,L,0),Ce(y.instance_vectorB,e,L,1),Ce(y.instance_vectorC,e,L,2)}));const x={};for(const t in y)x[t]={buffer:this.nt.buffer({dimension:y[t].length/u,data:y[t]}),divisor:1};const v=s.shader||"phong";let U=0,G=!0;const H=[];return ce(c,((t,i,a,A)=>{let{geometry:c,material:E}=this.se(t,i,a,A,n,!0,v);E&&!E.isReady()&&(G=!1,U++);const d=new r.reshader.InstancedMesh(x,u,c,E);d.properties.magic="i3dm",d.properties.id=e,d.properties.count=h,d.properties.batchTable=l,d.properties.batchTableBin=f,d.properties.serviceIndex=n.Dt;const C=this.oe(t,c,E,n.Dt,A),T=r.mat4.identity([]);if(t.matrices&&t.matrices.length)for(let e=0;e<t.matrices.length;e++)r.mat4.multiply(T,T,t.matrices[e]);let m;if(r.mat4.multiply(T,o,T),d.setPositionMatrix(T),s.coordOffset){const t=this.re(n.Dt,_);m=r.mat4.multiply([],t,B)}else m=r.mat4.copy([],B);d.setLocalTransform(m),d.setDefines(C),d.properties.polygonOffset={offset:0,factor:0},H.push(d)})),G?(this.lt[e]=H,i(null,{id:e,mesh:H})):(this.st[e]={meshes:H,count:U},H.ae=i),H}createB3DMMesh(t,e,n,s){if(this.At[e]||this.st[e]){const t=this.At[e];return console.warn(`mesh with id(${e}) was already created.`),this.st[e]||s(null,{id:e,mesh:t}),t}let o;if(n.maxExtent){const t=new i.Extent(n.maxExtent).convertTo((t=>this._pointToPrj(t)));o=[t.xmin,t.ymin,t.xmax,t.ymax]}const a=t.gltf,{projCenter:A}=a.extensions.MAPTALKS_RTC,{rtcCoord:c,center:l}=a.extensions.CESIUM_RTC,f=this.ne(n.ie);let h;h=a.asset&&a.asset.sharePosition?this.te($r,c):this.Ae($r,c,A,n.Dt);const u=this.tt.options.services[n.Dt];let E=u.shader||"pbr";if(a.materials)for(let t=0;t<a.materials.length;t++)if(a.materials[t]&&a.materials[t].extensions&&a.materials[t].extensions.KHR_materials_unlit){E=u.shader="phong";break}const _=[];let B=0,d=!0;return ce(a,((i,s,a,A)=>{let{geometry:C,material:T}=this.se(i,s,a,A,n,!1,E);T&&!T.isReady()&&(d=!1,B++);const m=new r.reshader.Mesh(C,T);m.properties.magic="b3dm",m.properties.id=e,m.properties.node=n,m.properties.batchTable=t.batchTable,m.properties.batchTableBin=t.batchTableBin,m.properties.count=t.featureTable.BATCH_LENGTH,m.properties.serviceIndex=n.Dt;const g=this.oe(i,C,T,n.Dt,A);m.setDefines(g);const p=i.compressUniforms;if(p)for(const t in p)m.setUniform(t,p[t]);o&&(g.USE_MAX_EXTENT=1,m.setUniform("maxPrjExtent",o)),Object.prototype.hasOwnProperty.call(m.uniforms,"polygonOpacity")||Object.defineProperty(m.uniforms,"polygonOpacity",{enumerable:!0,get:function(){return M(u.opacity)?u.opacity:1}});let R=r.mat4.identity([]);if(A.asset.sharePosition&&i.matrices&&i.matrices.length)for(let t=0;t<i.matrices.length;t++)r.mat4.multiply(R,R,i.matrices[t]);if(A.asset.sharePosition){const t=this.ee(tn,n,l,c);r.mat4.multiply(R,f,R),r.mat4.multiply(R,h,R),r.mat4.multiply(R,t,R)}else r.mat4.multiply(R,h,R);if(u.coordOffset){const t=this.re([],n.Dt,c);r.mat4.multiply(R,t,R)}m.setLocalTransform(R),_.push(m)})),d?(this.At[e]=_,s(null,{id:e,mesh:_})):(this.st[e]={meshes:_,count:B},_.ae=s),_}ee(t,e,n,s){const o=this.getMap(),a=this.tt.options.services[e.Dt].heightOffset||0,A=new i.Coordinate(s);let c;c=o.altitudeToPoint?this.bt:o.distanceToPointAtRes(100,100,o.getGLRes(),A).y/100;let l=e.matrix?r.mat4.copy(t,e.matrix):r.mat4.identity(t);if(n){Ar(l,r.vec3.transformMat4(Jr,n,l),l)}const f=function(t,e,r,n,i,s,o){e=$(_r,e);const a=pe(_r,e[0]*yr,e[1]*yr,e[2]),A=function(t,e){return t[0]=e[12],t[1]=e[13],t[2]=e[14],t}(Br,r),c=n.ellipsoid;var l;l=0===lt(A)?tt(dr,0,0,-6378137):Pe(dr,A),pr.x=l[0],pr.y=l[1];const f=n.project(pr,Rr);Cr[0]=f.x/i,Cr[1]=f.y/i,Cr[2]=(l[2]+o)*s;const h=cr(a,c,Tr),u=function(t,e){var r=e[0],n=e[1],i=e[2],s=e[3],o=e[4],a=e[5],A=e[6],c=e[7],l=e[8],f=e[9],h=e[10],u=e[11],E=e[12],_=e[13],B=e[14],d=e[15],C=r*a-n*o,T=r*A-i*o,m=r*c-s*o,g=n*A-i*a,p=n*c-s*a,R=i*c-s*A,y=l*_-f*E,I=l*B-h*E,b=l*d-u*E,S=f*B-h*_,P=f*d-u*_,M=h*d-u*B,N=C*M-T*P+m*S+g*b-p*I+R*y;return N?(N=1/N,t[0]=(a*M-A*P+c*S)*N,t[1]=(i*P-n*M-s*S)*N,t[2]=(_*R-B*p+d*g)*N,t[3]=(h*p-f*R-u*g)*N,t[4]=(A*b-o*M-c*I)*N,t[5]=(r*M-i*b+s*I)*N,t[6]=(B*m-E*R-d*T)*N,t[7]=(l*R-h*m+u*T)*N,t[8]=(o*P-a*b+c*y)*N,t[9]=(n*b-r*P-s*y)*N,t[10]=(E*p-_*m+d*C)*N,t[11]=(f*m-l*p-u*C)*N,t[12]=(a*I-o*S-A*y)*N,t[13]=(r*S-n*I+i*y)*N,t[14]=(_*T-E*g-B*C)*N,t[15]=(l*g-f*T+h*C)*N,t):null}(mr,h),E=function(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}(gr,r),_=function(t,e,r){var n=t[0],i=t[1],s=t[2],o=t[4],a=t[5],A=t[6],c=t[8],l=t[9],f=t[10],h=e[0],u=e[1],E=e[2],_=e[3],B=e[4],d=e[5],C=e[6],T=e[7],m=e[8],g=n*h+o*u+c*E,p=i*h+a*u+l*E,R=s*h+A*u+f*E,y=n*_+o*B+c*d,I=i*_+a*B+l*d,b=s*_+A*B+f*d,S=n*C+o*T+c*m,P=i*C+a*T+l*m,M=s*C+A*T+f*m;return r[0]=g,r[1]=p,r[2]=R,r[3]=0,r[4]=y,r[5]=I,r[6]=b,r[7]=0,r[8]=S,r[9]=P,r[10]=M,r[11]=0,r[12]=t[12],r[13]=t[13],r[14]=t[14],r[15]=t[15],r}(u,E,t);return Ar(t,Cr,_),t}(l,s,l,o.getProjection(),o.getGLRes(),c,a),h=function(t,e){return tt(t,e[12],e[13],e[14]),t}(qr,f);let u=this.tt.options.offset;if(S(u)){u=u(this.tt.ce(e.id).center)}return r.vec3.set(Qr,u[0],u[1],0),r.vec3.sub(h,h,Qr),Ar(f,h,f),f}re(t,e,n){const i=this.tt.options.services[e];if(!i.coordOffset)return null;const s=this.getMap(),o=s.getGLRes();Yr.set(n[0],n[1]);const a=s.coordToPointAtRes(Yr,o,Wr),A=i.coordOffset,c=Yr.set(n[0]+A[0],n[1]+A[1]),l=s.coordToPointAtRes(c,o,jr),f=l.x-a.x,h=l.y-a.y,u=this.le(),E=r.vec3.set(Qr,f,h,(A[2]||0)*u);return r.mat4.fromTranslation(t,E)}le(){const t=this.getMap();let e;return e=t.altitudeToPoint?this.bt:t.distanceToPointAtRes(100,100,t.getGLRes(),Yr).y/100,e}createCMPTMesh(t,e,r,n){if(this.ft[e]){const t=this.ft[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.ft[e]=s,n(null,{id:e,mesh:s}),s}oe(t,e,r,n,i){const s=("phong"===(this.tt.options.services[n].shader||"phong")?this.Gt:this.Ht).getGeometryDefines(e);i.asset&&"S3M"===i.asset.generator&&this.fe(s,e,i),e.data.uvRegion&&(s.HAS_I3S_UVREGION=1),e.data[e.desc.normalAttribute]&&(s.VertexNormal=1),e.data[e.desc.color0Attribute]&&(s.VertexColor=1),e.data[e.desc.uv0Attribute]&&(s.TexCoord=1),e.data[e.desc.textureCoordMatrixAttribute]&&(s.HAS_TextureCoordMatrix=1),r.get("uTexture")&&(s.COMPUTE_TEXCOORD=1),r.get("uTexture2")&&(s.TexCoord2=1),"MESHOPT"===this.tt.he&&(s.MeshOPT_Compress=1),this.hasIBL()&&(s.HAS_IBL_LIGHTING=1);return b(s,t.compressDefines),s}fe(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)}se(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=Ir);const A=n.url+"-"+e+"-"+r;if(this.ht[A])return this.ht[A].refCount++,this.ht[A];let c,l;const f=n.materials[t.material];if(n.extensions&&n.extensions.KHR_techniques_webgl&&f.extensions&&f.extensions.KHR_techniques_webgl){const e=this.ue(t,n,s,a);c=e.material,l=e.geometry;this.tt.options.services[i.Dt].fillEmptyDataInMissingAttribute&&(l.desc.fillEmptyDataInMissingAttribute=!0)}else{l=this.Ee(t,s,en);const e=this.tt.options.services[i.Dt],r=e.ambientLight;let a=e.environmentExposure;const A=e.material,f=this.getMap().getLightManager(),h=f&&f.getAmbientLight();if(r&&(!h||h.color)&&void 0===a){const t=h&&h.color?h.color[0]:.2;a=r[0]/t}c=this._e(t.material,n,o,A||Hr,a||1)}c&&!c.isReady()?c.Be=i.id:c||(c=this.gt);const h={refCount:1,geometry:l,material:c};return l.properties.url=A,this.ht[A]=h,h}ue(t,e,r,n){const{geometry:i,material:s}=this.yt.createMesh(t,e,r,n);return{geometry:i,material:s}}Ee(t,e,n){const i=t.attributes,s="COLOR_0";let o=i._BATCHID&&i._BATCHID.array;if(o&&o.byteOffset&&(o=new o.constructor(o)),i[s]){const t=i[s].array||i[s];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[s].array?(i[s].array=e,i[s].componentType=5121):i[s]=e}}const a={};for(const t in i){const e=Or(this.nt,i[t],{dimension:i[t].itemSize}),r=n[t]||t;a[r]={buffer:e},i[t].quantization&&(a[r].quantization=i[t].quantization),r===n.POSITION&&(a[r].array=i[t].array,a[r].min=i[t].min,a[r].max=i[t].max)}delete t.attributes;const A=t.indices?t.indices.array?t.indices.array.slice():t.indices:null,c=new r.reshader.Geometry(a,A,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":Dr(t.mode)});return o&&A&&(c.properties.batchIdData=o,c.properties.batchIdMap=function(t,e){if(!e)return null;const r=new Map;for(let n=0;n<e.length;n++){const i=e[n],s=t[i];let o=r.get(s);o||(o=[],r.set(s,o)),o.push(i)}return r}
|
|
19
18
|
/*!
|
|
20
|
-
* @maptalks/gl v0.
|
|
19
|
+
* @maptalks/gl v0.81.2
|
|
21
20
|
* LICENSE : UNLICENSED
|
|
22
|
-
* (c) 2016-
|
|
23
|
-
*/(s,a)),c.generateBuffers(this.nt,{excludeElementsInVAO:e}),c}se(t,e,n,i){const s=r.mat4.identity(t),o=this.getMap();Br.x=n[0],Br.y=n[1];const a=this._prjToPoint(Br),c=this.he(),l=1/(o.getGLZoom?o.getResolution(o.getGLZoom()):o.getGLRes());let f;Br.x=e[0],Br.y=e[1],f=o.altitudeToPoint?this.St:o.distanceToPointAtRes(100,100,o.getGLRes(),Br).y/100;let u=this.tt.options.offset;m(u)&&(u=u(Br));const h=this.tt.options.services[i].heightOffset||0;return r.vec3.set(Fr,a.x-u[0],a.y-u[1],f*n[2]+f*h),r.mat4.translate(s,s,Fr),r.vec3.set(c,l,l,f),r.mat4.scale(s,s,c),s}$t(t,e){const n=r.mat4.identity(t),i=this.getMap(),s=this.he();Br.x=e[0],Br.y=e[1];const o=i.distanceToPointAtRes(100,100,i.getGLRes(),Br);let a;return a=i.altitudeToPoint?this.St:o.y/100,r.vec3.set(s,o.x/100*1.01,o.y/100*1.01,a),r.mat4.scale(n,n,s),n}bt(){const t={x:0,y:0,width:()=>this.et?this.et.width:1,height:()=>this.et?this.et.height:1};this.Xt=new r.reshader.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)=>r.mat4.multiply([],e.projViewMatrix,e.modelMatrix)}],extraCommandProps:{viewport:t}});const e=[],n=[];this.kt=new r.reshader.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)=>r.mat4.multiply(n,e.projViewMatrix,e.modelMatrix)},{name:"modelNormalMatrix",type:"function",fn:(t,n)=>r.mat3.fromMat4(e,n.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 i=this.Nt();this.Ft=new r.reshader.PhongShader({extraCommandProps:i}),this.Dt=new r.reshader.pbr.StandardShader({extraCommandProps:i});const s=this.tt;Rr(s.getRenderer().canvas,this.nt,s.getMap()),this.picking=new r.reshader.FBORayPicking(this.it,{vert:this.Dt.vert,extraCommandProps:i,uniforms:this.Dt.uniforms,defines:{"PICKING_MODE":1,"ENABLE_PICKING":1,"HAS_PICKING_ID":1}},this.pickingFBO,this.getMap())}Nt(){return{viewport:{x:0,y:0,width:()=>this.et?this.et.width:1,height:()=>this.et?this.et.height:1},colorMask:(t,e)=>e.colorMask||xr,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"}},depth:{enable:!0,range:[0,1],func:(t,e)=>e.meshProperties.depthFunc||"<"},blend:{enable:!0,func:{src:"src alpha",dst:"one minus src alpha"},equation:"add"},polygonOffset:{enable:!0,offset:(t,e)=>e.meshProperties.polygonOffset}}}Yt(t){return{projViewMatrix:this.getMap().projViewMatrix,color:t&&t.color||[0,1,0]}}Gt(t){const e=this.getMap(),n=e.getLightManager(),i=(n&&n.getDirectionalLight()||{}).direction||[1,1,-1],s=t&&t.pointOpacity||1;return{projViewMatrix:e.projViewMatrix,pointOpacity:s,lightDir:r.vec3.normalize(i,i)}}Ot(){const t=this.getMap(),e=this.tt.getRenderer().canvas,{iblTexes:r,dfgLUT:n}=Ir(e),i=Nr(t,r,n);return T(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}fe(t,e,n,i,s){const o=e.materials[t];if(!o||!o.baseColorTexture&&!o.pbrMetallicRoughness)return null;const a=T({},i);if(o.baseColorTexture){const t=e.textures[o.baseColorTexture.index];let r;t&&!t.image.color&&(r=this.O(t)),a.baseColorFactor=t&&t.image.color||o.baseColorFactor||[1,1,1,1],r&&(a.baseColorTexture=r)}else{if(o.normalTexture){const t=this.O(e.textures[o.normalTexture.index]),r=o.normalTexture.scale||1;a.normalTexture=t,a.normalMapFactor=r}if(o.occlusionTexture){const t=this.O(e.textures[o.occlusionTexture.index]),r=o.occlusionTexture.strength||1;a.occlusionTexture=t,a.occlusionFactor=r}if(o.emissiveTexture){const t=this.O(e.textures[o.emissiveTexture.index]);a.emissiveTexture=t}o.emissiveFactor&&(a.emissiveFactor=o.emissiveFactor);const t=o.pbrMetallicRoughness;if(t){if(t.baseColorFactor&&(a.baseColorFactor=t.baseColorFactor),t.baseColorTexture&&void 0!==t.baseColorTexture.index){const n=e.textures[t.baseColorTexture.index];n.image&&n.image.color?a.baseColorFactor=a.baseColorFactor?r.vec4.multiply(a.baseColorFactor,a.baseColorFactor,n.image.color):n.image.color:(a.baseColorTexture=this.O(n),a.baseColorTexture.getREGLTexture(this.nt))}if(E(t.metallicFactor)||(a.metallicFactor=t.metallicFactor),E(t.roughnessFactor)||(a.roughnessFactor=t.roughnessFactor),o.metallicRoughnessTexture){const t=this.O(e.textures[o.metallicRoughnessTexture.index]);a.metallicRoughnessTexture=t}}}if(o.s3mMaterial)return new r.reshader.Material(a);if(a.environmentExposure=s,o.extensions&&o.extensions.KHR_materials_unlit)return a.environmentExposure=1,a.ambientColor=[1,1,1],a.light0_diffuse=[0,0,0,0],a.lightSpecular=[0,0,0],new r.reshader.PhongMaterial(a);let c=new r.reshader.pbr.StandardMaterial(a);"phong"===n&&(c=r.reshader.PhongMaterial.convertFrom(c));const l=o.pbrMetallicRoughness,f=l&&l.baseColorTexture&&l.baseColorTexture.extensions;return f&&f.KHR_texture_transform&&(c.set("khr_offset",f.KHR_texture_transform.offset||[0,0]),c.set("khr_rotation",f.KHR_texture_transform.rotation||0),c.set("khr_scale",f.KHR_texture_transform.scale||[1,1])),c.once("complete",this.yt),c}O(t){const e={type:t.type?Tr(t.type):"uint8",format:t.format?mr(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&&t.texture.sampler;return i&&(i.magFilter&&(e.mag=_r(i.magFilter)),i.minFilter&&(e.min=dr(i.minFilter)),i.wrapS&&(e.wrapS=Er(i.wrapS)),i.wrapT&&(e.wrapT=Er(i.wrapT))),new r.reshader.Texture2D(e,this.At)}_e(t){const e=t.image,r=window.URL||window.webkitURL,n=new Blob([e.array],{type:e.mimeType});return r.createObjectURL(n)}gt({target:t}){const e=t.ue,r=this.st[e];if(r.count--,!r.count){const t=r.meshes;this.ct[e]=t,delete this.st[e];const n=t.ie;delete t.ie,n(null,{mesh:r.meshes,id:e})}}he(){return Or}Wt(t){return this.tt.Wt(t)}Kt(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(),Lr)}te(t){return"Y"===t?yr:"X"===t?gr:Mr}pick(t,e,r=3){const n=this.tt;if(!n||!n.options.picking)return[];if(!this.pickingFBO||!this.picking)return[];const i=this.getMap(),s=this.Ot(),o=this.picking;o.render(this._t.getMeshes().filter((t=>!t.bloom)),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:u}=a,h=(0===c||c)&&o.getMeshAt(c);if(!h||!h.geometry)return[];const _=h.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]=Be(t[i],e,r,n):d[i]=t[i][n]}return[{data:d,point:f,coordinate:u}]}Mt(t){let e=new Set;for(let r=0,n=t.length;r<n;r++){const n=t[r].data.node;this.Ct(n)&&e.add(n.Bt)}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}highlight(t){this.xt=t;const e=this.tt.getRenderer();this.vt=e.getFrameTimestamp(),e.setToRedraw(!0)}cancelAllHighlight(){this.xt=null;const t=this.tt.getRenderer();this.vt=t.getFrameTimestamp(),t.setToRedraw(!0)}}const Vr=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")},zr=Vr(),Xr=zr.gl_trans__coders=zr.gl_trans__coders||{};function Yr(t,e){if(e)for(let r=0;r<e.length;r++){t[e[r].id||e[r].index]=e[r]}}Xr.inject=function(t){const e=t.toString(),r=e.indexOf("{")+1,n=e.substring(0,r),i=zr.gl_trans__coders=zr.gl_trans__coders||{};let s=`${n}\n const _____getGlobal = ${Vr.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},Xr.registerTranscoder=function(t,e){Xr[t]=e},Xr.getTranscoder=function(t){return Xr[t]};const qr=[];class Zr{constructor(t,e,r,n){this.de=t,this.Ut=e,this.Ee=n,this.Te=r.version,t.indexOf("i3s:tileset:")<0?(this.Te<=1.6?this.me="root":this.me=0,r.version=this.Te):(this.me=t.substring("i3s:tileset:".length),this.Te>1.6&&(this.me=parseInt(this.me))),this.de=t,this.pe=r}load(){const t=this.pe,e=t.layerScene.baseUrl;if(this.Te<=1.6)return t[this.me]&&t[this.me].lodSelection?(this.Ae=t[this.me],this.ye()):new Promise((r=>{let n=e+"/nodes/"+this.me;t.layerScene.eslpk&&(n+="/3dNodeIndexDocument.json"),this.Ee(this.Ut,n,(()=>{this.Ae=t[this.me],r(this.ye())}))}));if(this.Te>=1.7){if(t[this.me])return this.Ae=t[this.me],this.ye();const r=Math.floor(this.me/t.nodesPerPage);return new Promise((n=>{let i=e+"/nodepages/"+r;t.layerScene.eslpk&&(i+=".json"),this.Ee(this.Ut,i,(()=>{this.Ae=t[this.me],n(this.ye())}))}))}return null}getTileset(){return this.ge}getChildrenURL(){return this.Re}ye(){const t=this.pe,e=t.layerScene.baseUrl,r=this.Ae.children,n=[],i={};if(r)for(let s=0;s<r.length;s++)if(this.Te<=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.Ee(this.Ut,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.Ee(this.Ut,n,(()=>{r()}))})),n.push(i[a]))}return n.length?Promise.all(n).then((()=>this.be())):this.be()}be(){return Promise.resolve(this.Ie())}Ne(t){Yr(this.pe,t)}Ie(){return{asset:{i3s:!0,version:"1.0",gltfUpAxis:"Z"},geometricError:Number.MAX_VALUE,root:this.Se(this.Ae,!0)}}Se(t){const e=this.Te,r=this.pe,n=t;var i,s=n.obb,o=n.mbs,a={};if(o)i=jr([],o[0],o[1],o[2]),a.sphere=[...i,o[3]];else if(s){const t=function(t,e,r){const 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,l=r*o,f=n*o,u=n*a,h=i*o,_=i*a,d=i*c,E=s*o,T=s*a,m=s*c;return t[0]=1-u-d,t[3]=f-m,t[6]=h+T,t[1]=f+m,t[4]=1-l-d,t[7]=_-E,t[2]=h-T,t[5]=_+E,t[8]=1-l-u,t}([],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=jr([],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];X(qr,e,r,n);const o=tt(qr);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=L([]),_=n.children;var d;if(_){d=[];const t=this.pe;for(let r=0;r<_.length;r++){const n=e<=1.6?_[r].id:_[r];if(!t[n]){d=null;break}d.push(this.Se(t[n]))}}var E={refine:"REPLACE",boundingVolume:a,transform:h,geometricError:u};return e<=1.6?t.lodSelection?t.geometryData&&(E.content={uri:"i3s:mesh:"+(t.id||t.index)}):E.content={uri:"i3s:tileset:"+(t.id||t.index)}:_&&_.length&&!d?E.content={uri:"i3s:tileset:"+(t.id||t.index)}:n.mesh&&(E.content={uri:"i3s:mesh:"+(t.id||t.index)}),d&&d.length&&(E.children=d),E}getJSON(){return this.Ae}}function jr(t,e,r,n){return he(t,y(e),y(r),n)}const Wr=!!Xr.ktx2,Qr=r.mat4.identity([]),Kr=(()=>{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 $r(t){return t.indexOf("i3s:mesh")>=0}const Jr="i3s:mesh:".length;function tn(t,e,r,n,i){const s=e.layerScene.eslpk,o=function(t,e){const r=e.substring(Jr);return t>=1.7?parseInt(r):r}(e.version,t),a=e[o],c=e.layerScene.baseUrl,l=[];let f=!1;const u=Qr;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=Xr.draco&&f?o[1]:o[0],d=Xr.draco&&f?1:0;let E=c+`/nodes/${h.resource}/geometries/`+d;s&&(E+=".bin");const T={geometry:{url:E,info:u}};if(i&&Kr&&f&&!Xr.draco)throw new Error("Must import @maptalks/transcoder.draco to load i3s draco compressed geometry");const m=e.layerScene.materialDefinitions,p=e.layerScene.textureSetDefinitions;let A,y=0;if(_&&(y=m[_.definition]),m){A=function(t,e,r,n,i,s){const o=JSON.parse(JSON.stringify(t));return en(o,e,r,n,i,s),o}(y,p,c,_.resource,r,e.layerScene.eslpk)}else A={pbrMetallicRoughness:{metallicFactor:0}};T.material=A,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 en(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=rn(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 p(t[o])&&en(t[o],e,r,n,i,s)}function rn(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&&Wr)return t[r]}return null}const nn=[];class sn extends i.renderer.CanvasRenderer{constructor(t){super(t),this.prepareWorker(),this.tilesLoading={},this.tileCache=new $t(1024*t.options.maxGPUMemory*1024,this.deleteTile.bind(this)),this.we={},this.Oe=[],this.Ee=this.Me.bind(this)}getAnalysisMeshes(){if(!this.painter)return nn;const t=this.painter.getPaintedMeshes();if(!t)return nn;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.Oe.length||super.needToRedraw())}getFrameTimestamp(){return this.Ce}drawOnInteracting(t,e,r){this.draw(e,r)}draw(t,e){this.Ce=t;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.Ue(),this.xe();const{selectedTiles:o,leaves:a,requests:c}=this.ve(n,i);c.length&&this.loadTiles(c),this.Be(o,a,e),this.Le(),c.length||this.completeRender()}ve(t,e){let r=[];this.Pe();let n=0;const i=this.Fe(),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.De(c.id)?(n++,l=a=!0,this.tilesLoading[c.id].current=!0):f?(this.getTileOpacity(f)<1&&(l=a=!0),(!i.node.Ge||i.node.Ge<=500)&&(o=!0,i.selected=!0,i.data=f)):this.painter.has(c)||(l=a=!0,r.push(c)),!l)continue;if(this.ke(i))o=!0;else{this.He(i).length&&(o=!0)}}let c=[],l={};if(o&&({selectedTiles:c,leaves:l}=this.Ve(t)),r.length>1&&(r.sort(on),i)){const t=i-n;r=t>0?r.slice(0,t):[]}return{loading:a,requests:r,selectedTiles:c,leaves:l}}Ve(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.ze===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.ze=i.length}for(let t=0;t<o.length;t++)i.push(o[t])}return{selectedTiles:e,leaves:r}}ke(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}He(t){const e=[];if(!t.node.children||!t.node.children.length)return e;const r=t.Bt+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.Xe(i[s],t);r.selected=!0,r.data=this.tileCache.get(o),t.children.push(r),e.push(r)}else i[s].Bt<=r&&n.push(i[s])}}return e}Be(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=this.painter.paint(t,e,r);this.onDrawTileEnd(n),i&&this.layer.fire("canvasisdirty",{renderCount:i})}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(M(e)){const r=C(e);return void this.Ye(e,r,t)}if(function(t){return t.indexOf("i3s:tileset")>=0}(e)){const r=t.Ut,n=this.qe[r];return new Zr(e,r,n,this.Ee).load().then((r=>{this.onTilesetLoad(r,t,e)}))}t&&-1===e.indexOf("http://")&&-1===e.indexOf("https://")&&!$r(e)&&(e=t.baseUrl+e);const r=this.layer.options.services[t.Ut];if(r.ajaxInMainThread){let n=r.urlParams;n&&(n=(e.indexOf("?")>0?"&":"?")+n);let i=bt.getArrayBuffer(e+(n||""),r.fetchOptions);const s=i.xhr;i=i.then((r=>{delete this.we[e],r?this.Ye(e,r.data,t):this.onTileError(null,t)})).catch((r=>{delete this.we[e],this.onTileError(r,t)})),this.we[e]=s}else this.Ye(e,null,t)}Ye(t,e,n){let i=this.l;i||(i=r.reshader.Util.getSupportedFormats(this.gl.gl||this.gl),this.l=i);const s=this.layer.options.services[n.Ut];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.Ut,upAxis:n.ee,transform:n.matrix,supportedFormats:i};if($r(t)){const e=this.qe[n.Ut];if(o.i3sInfo=tn(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.Oe.push({data:r,tile:n}):this.onTilesetLoad(r,n,t)}))}xe(){const t=this.getMap(),e=this.layer.options.meshLimitPerFrame;let r=0;for(;this.Oe.length&&(r<e||!t.isInteracting());){const{data:t,tile:e}=this.Oe.shift(),{magic:n}=t;"b3dm"===n?this.painter.createB3DMMesh(t,e.id,e,((r,{mesh:n})=>{this.Ze(t,e,r,n)})):"pnts"===n?this.painter.createPntsMesh(t,e.id,e,((r,{mesh:n})=>{this.Ze(t,e,r,n)})):"i3dm"===n?this.painter.createI3DMMesh(t,e.id,e,((r,{mesh:n})=>{this.Ze(t,e,r,n)})):"cmpt"===n&&this.painter.createCMPTMesh(t,e.id,e,((r,{mesh:n})=>{this.Ze(t,e,r,n)})),r++}}Ze(t,e,r,n){if(r)this.onTileError(r,e);else{const r=this.je(n);e.memorySize=r,this.onTileLoad(t,e)}}je(t){let e=0;if(Array.isArray(t))for(let r=0;r<t.length;r++)t[r]&&(e+=this.je(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.We(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.Qe(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.Ke(e,t),this.setToRedraw(),this.layer.fire("tileerror",{node:e,error:t})}getCachedTile(t){return this.tileCache.get(t)}Ke(t,e){const r={loadTime:i.Util.now(),current:!0,error:e,node:t};this.tileCache.add(t.id,r)}We(t){const e={loadTime:i.Util.now(),current:!0,node:t};this.tileCache.add(t.id,e)}abortTileLoading(t){if(!t||!this.workerConn)return;const e=t.node.content.url;if(this.layer.options.services[t.node.Ut].ajaxInMainThread){const t=this.we[e];t&&t.abort()}else this.workerConn.abortTileLoading(this.layer.getId(),e);delete this.we[e]}Pe(){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},n=this.canvas.gl&&this.canvas.gl.wrap;n?(this.gl=this.canvas.gl.wrap(),this.regl=this.canvas.gl.regl):(this.glOptions=e,this.gl=this.$e(this.canvas,e)),this.regl=this.regl||r.createREGL({gl:this.gl,attributes:e,extensions:["OES_element_index_uint"],optionalExtensions:t.options.optionalExtensions||[]}),n&&(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 Hr(this.regl,t),this.layer.Je()}prepareWorker(){const t=this.getMap();this.workerConn||(this.workerConn=new Wt("@maptalks/3dtiles",t.id));const e=this.workerConn;if(!e.isActive())return;let r=this.layer.options||{};r=T({},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.Le(!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}Le(t){this.tr||(this.tr=Date.now());const e=Date.now();if(t||!(e-this.tr<this.layer.options.retireInterval)){this.tr=e;for(const e in this.tilesLoading){const r=this.tilesLoading[e];!t&&r.current||this.abortTileLoading(r)}}}Fe(){return this.getMap().isInteracting()?this.layer.options.loadingLimitOnInteracting:this.layer.options.loadingLimit}$e(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}De(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 xe(t,e,0,r)}Ue(){if(!this.er)return;const t=this.layer.options.i3sNodepageLimitPerFrame||Number.MAX_VALUE;let e=0;const r=[];for(const n in this.er){const i=this.er[n];if("pending"===i.status)continue;i.status="pending";const s=i.rootIdx;if(r.push(bt.getJSON(n).then((t=>{delete this.er[n];const e=this.qe[s];if(e){t.nodes?Yr(e,t.nodes):(e[t.id]=t,Yr(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)}Me(t,e,r){this.er||(this.er={}),this.er[e]=this.er[e]||[],this.er[e].rootIdx=t,this.er[e].push(r),this.setToRedraw()}Qe(t,e,r){this.qe||(this.qe=[]);const n=e.Ut;this.qe[n]||(this.qe[n]={});const i=this.qe[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 Zr(n,e,i,s).load()}(t,n,0,r,i,this.Ee).then((t=>{this.onTilesetLoad(t,e,r)}))}pick(t,e,r){return this.painter?this.painter.pick(t,e,r&&r.tolerance):[]}highlight(t){if(this.xt||(this.xt=[]),Array.isArray(t))for(let e=0;e<t.length;e++){const r=t[e].service||0;let n=this.xt[r];n||(n=this.xt[r]=new Map),n.set(t[e].id,t[e])}else{const e=t.service||0;let r=this.xt[e];r||(r=this.xt[e]=new Map),r.set(t.id,t)}this.painter.highlight(this.xt)}cancelHighlight(t,e){if(!this.xt)return;const r=this.xt[t];if(r){if(Array.isArray(e))for(let t=0;t<e.length;t++)r.delete(e[t]);else r.delete(e);this.painter.highlight(this.xt)}}cancelAllHighlight(){delete this.xt,this.painter.cancelAllHighlight()}}function on(t,e){return t.Vt-e.Vt}function an(t,e,r){return t[0]=e[r],t[1]=e[r+3],t[2]=e[r+6],t}function cn(t,e,r){return Math.sqrt(function(t,e,r){var n=q(ln,r,t),i=an(fn,e,0),s=an(un,e,1),o=an(hn,e,2),a=tt(i),c=tt(s),l=tt(o);W(i,i),W(s,s),W(o,o);var f=_n;f[0]=Q(n,i),f[1]=Q(n,s),f[2]=Q(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 ln=[],fn=[],un=[],hn=[],_n=[];const dn=2*Math.PI;class En{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+=dn,r<0&&(r+=dn)),(r>i||Se(r,i,1e-14))&&(r<s||Se(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 Tn=[0,0,1];function mn(t,e){return he(e,t[0],t[1],t[2])}class pn{constructor(t,e){this.normal=r.vec3.copy([],t),this.distance=e}static fromPointNormal(t,e,n){var i=-r.vec3.dot(e,t);return r.vec3.copy(n.normal,e),n.distance=i,n}}const An=[],yn=[],gn=[],Rn=[],bn=[],In=[],Nn=[],Sn=[],wn=[],On=[],Mn=new pn([1,0,0],0),Cn=[];class Un{constructor(t){this.southwestCornerCartesian=[],this.northeastCornerCartesian=[],this.westNormal=[],this.eastNormal=[],this.southNormal=[],this.northNormal=[],this.rectangle=new En(...t),this.minimumHeight=t[4],this.maximumHeight=t[5],this.computeBox(this.rectangle)}distanceToCamera(t,e){var n,i,s,o=0;if(!En.contains(this.rectangle,e)){var a=this.southwestCornerCartesian,c=this.northeastCornerCartesian,l=this.westNormal,f=this.southNormal,u=this.eastNormal,h=this.northNormal,_=r.vec3.subtract(Cn,t,a),d=r.vec3.dot(_,l),E=r.vec3.dot(_,f),T=r.vec3.subtract(Cn,t,c),m=r.vec3.dot(T,u),p=r.vec3.dot(T,h);d>0?o+=d*d:m>0&&(o+=m*m),E>0?o+=E*E:p>0&&(o+=p*p)}if(n=e[2],i=this.minimumHeight,n>(s=this.maximumHeight)){var A=n-s;o+=A*A}else if(n<i){var y=i-n;o+=y*y}return Math.sqrt(o)}computeBox(t){const e=this;mn(En.southwest(t,yn),e.southwestCornerCartesian),mn(En.northeast(t,yn),e.northeastCornerCartesian),An[0]=t.west,An[1]=.5*(t.south+t.north),An[2]=0;var n=mn(An,gn),i=r.vec3.cross(bn,n,Tn);r.vec3.normalize(e.westNormal,i),An[0]=t.east;var s=mn(An,Sn),o=r.vec3.cross(bn,Tn,s);r.vec3.normalize(e.eastNormal,o);var a,c=r.vec3.subtract(bn,n,s),l=r.vec3.normalize(Rn,c),f=t.south;if(f>0){An[0]=.5*(t.west+t.east),An[1]=f;var u=mn(An,wn);r.vec3.copy(On,l);var h=pn.fromPointNormal(e.southwestCornerCartesian,e.westNormal,Mn);xn(wn,On,h,e.southwestCornerCartesian),a=be(u,In)}else a=Ie(En.southeast(t,yn),In);var _=r.vec3.cross(Nn,a,c);r.vec3.normalize(e.southNormal,_);var d,E=t.north;if(E<0){An[0]=.5*(t.west+t.east),An[1]=E;var T=mn(An,wn);r.vec3.scale(On,l,-1);var m=pn.fromPointNormal(e.northeastCornerCartesian,e.eastNormal,Mn);xn(wn,On,m,e.northeastCornerCartesian),d=be(T,In)}else d=Ie(En.northwest(t,yn),In);var p=r.vec3.cross(Nn,c,d);r.vec3.normalize(e.northNormal,p)}}function xn(t,e,n,i){var s=t,o=e,a=n.normal,c=r.vec3.dot(a,o);if(!(Math.abs(c)<1e-15)){var l=(-n.distance-r.vec3.dot(a,s))/c;if(!(l<0))return i=r.vec3.scale(i,o,l),r.vec3.add(i,s,i)}}const vn=new i.Extent(0,0,0,0),Bn=new i.Extent(0,0,0,0),Ln=[],Pn=[],Fn=[],Dn=[],Gn=new i.Point(0,0),kn=[],Hn=new i.Coordinate(0,0),Vn=r.mat4.identity([]);class zn extends i.Layer{constructor(t,e){super(t,e),this.rr(),this.we={},this.nr=[]}rr(){let t=this.options.services.map((t=>t.url));this.ir=t.map(((t,e)=>function(t,e){t=R(t);return{visible:1,baseUrl:t.substring(0,t.lastIndexOf("/"))+"/",content:{url:t},refine:"replace",matrix:r.mat4.identity([]),Ut:e,Bt:0}}(t,e))),this.fire("rootready",{roots:this.ir.slice(0)})}showService(t){return this.sr(t,1),this}hideService(t){return this.sr(t,0),this}setToRedraw(){const t=this.getRenderer();t&&t.setToRedraw()}sr(t,e){const r=this.ir[t];if(!r)return;r.visible=e;const n=this.getRenderer();n&&n.setToRedraw()}getTileUrl(t){return t}getExtent(t){if(!t&&0!==t){const t=new i.Extent;for(let e=0;e<this.ir.length;e++)if(this.ir[e].boundingVolume){const r=this.boundingVolumeToExtent(this.ir[e]);t._combine(r)}return t}return this.ir[t]&&this.ir[t].boundingVolume?this.boundingVolumeToExtent(this.ir[t]):null}boundingVolumeToExtent(t){const e=t.boundingVolume.ar?Vn:t.matrix,n=this.getMap();if(t.boundingVolume.region){const e=t.boundingVolume.region;return new i.Extent(g(e[0]),g(e[1]),g(e[2]),g(e[3]))}if(t.boundingVolume.sphere){const s=t.boundingVolume.sphere,o=pe([],r.vec3.transformMat4([],s,e)),a=s[3],c=n.locate(o,-a,a),l=n.locate(o,a,-a);return new i.Extent(c,l)}if(t.boundingVolume.box){const s=t.boundingVolume.box,o=r.vec3.transformMat4([],s,e),a=new i.Coordinate(pe([],o)),c=s.slice(3);r.mat3.multiply(c,r.mat3.fromMat4([],t.matrix),c);const l=r.vec3.length(c.slice(0,3)),f=r.vec3.length(c.slice(3,6)),u=r.vec3.length(c.slice(6,9)),h=Math.max(l,f,u),_=n.locate(a,-h,h),d=n.locate(a,h,-h);return new i.Extent(_,d)}return null}getRootTiles(){return this.ir}getTiles(){const t=this.getRenderer();if(!t.ready)return this.cr(),{tiles:Dn};const e=this.getMap(),n=e.cameraPosition;let i,s;if(e.getGLZoom)s=e.pointToDistance(n[2],0,e.getGLZoom()),Hn.set(n[0],n[1]),i=e.pointToCoord(Hn,e.getGLZoom());else{const t=e.getGLRes();s=e.pointAtResToDistance(n[2],0,t),Hn.set(n[0],n[1]),i=e.pointAtResToCoord(Hn,t)}this.lr=this.lr||[],r.vec3.set(this.lr,y(i.x),y(i.y),s),this.ur=he(this.ur||[],this.lr[0],this.lr[1],this.lr[2]),this.hr=2*Math.tan(.5*y(e.getFov()));const o=e.projViewMatrix,a={children:[],level:-1};let c=a;const l=[];for(let e=0;e<this.ir.length;e++){const r=this.ir[e];if(!r.visible)continue;let n=1/0;const i=[r],s=this._r(e);for(;i.length>0;){const e=i.pop();for(e.id||this.dr(e);c.level>=e.Bt;)c=c.parent;const r=this.Er(e,s,o);if(r<1){let t=c;for(;t&&!t.content;)t=t.parent;0===r&&t&&t.content&&this.Tr(l,t);if(!1===this.options.services[e.Ut].alwaysShow)continue;if(!(0===r&&e.Bt<=n))continue;e.content&&(n=e.Bt)}e.Vt<1/0&&this.mr(e);const a=this.Xe(e,c);c.children.push(a);const f=e.children,u=f&&f.length,h=a.content;if(!u&&h&&this.Tr(l,a),u){h&&"add"===e.refine&&this.Tr(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].ee=e.ee,f[s].baseUrl=e.baseUrl;const t=f[s].content&&(f[s].content.url||f[s].content.uri);t&&(M(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&&h&&this.Tr(l,a)}}}return{root:a,tiles:l}}Tr(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 Xn(r,e);if(r.box)return 0===Yn(r,e)}return!1}(this.lr,this.ur,r)||t.push(e)}Xe(t,e){return{id:t.id,node:t,children:[],level:t.Bt,parent:e,content:t.content&&t.content.url}}dr(t){t.id=i.Util.GUID(),t.matrix=t.transform||r.mat4.identity([]),t.pr=this.Ar(t),t.parent&&(function(t){return t.content&&t.content.uri&&t.content.uri.indexOf("i3s:")>=0}(t)||(t.matrix=r.mat4.multiply(t.matrix,t.parent.matrix,t.matrix)),t.Ut=t.parent.Ut,void 0===t.Bt&&(t.Bt=t.parent.Bt+1),t.maxExtent=t.parent.maxExtent),t.refine=t.refine&&t.refine.toLowerCase()||"replace",t.content&&!t.content.url&&t.content.uri&&(t.content.url=t.content.uri),this.yr(t)}yr(t){const e=t.boundingVolume;if(!e||e.ar)return;const n=this.options.services[t.Ut].heightOffset||0,i=this.options.offset,s=m(i)||i[0]||i[1];if(!t.boundingVolume||!n&&r.mat4.exactEquals(t.matrix,Vn)&&!s)return;const{region:o,box:a,sphere:c}=e;if(o){const t=this.gr([g(o[0]),g(o[1])]);o[0]=y(t.x),o[1]=y(t.y);const e=this.gr([g(o[2]),g(o[3])]);o[2]=y(e.x),o[3]=y(e.y),o[4]+=n,o[5]+=n}else if(a||c){const e=a||c,i=r.vec3.transformMat4(Ln,e,t.matrix),s=pe(Pn,i),o=this.gr([s[0],s[1]]);s[0]=o.x,s[1]=o.y,s[2]+=n,he(e,y(s[0]),y(s[1]),s[2])}e.ar=!0}Ar(t){return void 0===t.geometricError||!t.boundingVolume}mr(t){let e=t.parent;for(;e&&e.pr&&!(e.Vt<=t.Vt);)e.Vt=t.Vt,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,n){if(!t)return void console.warn("invalid tileset at : "+n);const i=this.options.services[e.Ut],s=(t.asset&&t.asset.gltfUpAxis||e&&e.ee||i.upAxis||"Y").toUpperCase();t.root.baseUrl=n.substring(0,n.lastIndexOf("/")+1);const o=n.indexOf("realspace/")>-1;0===e.Bt&&(t.asset&&t.asset.s3mType&&o||i.isSuperMapiServer)&&(t.root.baseUrl+="data/path/");const a=t.asset.i3s;if(t.root.ee=s,e){const n=e.boundingVolume;T(e,t.root),e.refine=e.refine&&e.refine.toLowerCase()||"replace",n&&(e.boundingVolume=n);const i=t.root.transform;i&&(e.parent?a||(e.matrix=r.mat4.multiply([],e.parent.matrix,i)):e.matrix=i),this.yr(e),e.Rr=e.content,delete e.content,t.root.content&&(e.content=t.root.content),e.pr=this.Ar(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||M(s)||-1!==s.indexOf("http://")||-1!==s.indexOf("https://")||(e.content.url=e.baseUrl+s)}this.cr(),this.fire("loadtileset",{tileset:t,index:e.Ut,url:n})}Er(t,e,r){if(t.Vt=1/0,0===t.Bt||t.pr)return 1;if(!this.br(t,e,r))return-1;if(0===t.geometricError)return 1;let n=this.options.services[t.Ut].maximumScreenSpaceError;null==n&&(n=8);let i=this.Ir(t);return 0===i&&t.parent&&(i=.5*(t.parent.Ge||0)),i>=n?1:0}Wt(t,e){e||(e=new i.Point(0,0));const r=this.getMap();return r.getGLZoom?r.coordToPoint(t,r.getGLZoom(),e):r.coordToPointAtRes(t,r.getGLRes(),e)}br(t,e,n){const s=t.id;let o=this.nr[s];const{boundingVolume:c}=t,l=c.sphere;let _=c.region;const E=c.box;if(!o){let e,n,a;if(E&&(_=function(t,e){for(let e=0;e<9;e++)ei[e]=t[e+3];const n=ei;r.mat4.exactEquals(e,Vn)||r.mat3.multiply(n,r.mat3.fromMat4(kn,e),n);const i=r.vec3.copy(qn,t),s=r.vec3.set(Zn,n[0],n[1],n[2]),o=r.vec3.set(jn,n[3],n[4],n[5]),a=r.vec3.set(Wn,n[6],n[7],n[8]);Qn[0]=Qn[0]||[];const c=r.vec3.copy(Qn[0],i);r.vec3.sub(c,c,s),r.vec3.sub(c,c,o),r.vec3.sub(c,c,a),Qn[1]=Qn[1]||[];const l=r.vec3.copy(Qn[1],i);r.vec3.sub(l,l,s),r.vec3.sub(l,l,o),r.vec3.add(l,l,a),Qn[2]=Qn[2]||[];const f=r.vec3.copy(Qn[2],i);r.vec3.sub(f,f,s),r.vec3.add(f,f,o),r.vec3.sub(f,f,a),Qn[3]=Qn[3]||[];const u=r.vec3.copy(Qn[3],i);r.vec3.sub(u,u,s),r.vec3.add(u,u,o),r.vec3.add(u,u,a),Qn[4]=Qn[4]||[];const h=r.vec3.copy(Qn[4],i);r.vec3.add(h,h,s),r.vec3.sub(h,h,o),r.vec3.sub(h,h,a),Qn[5]=Qn[5]||[];const _=r.vec3.copy(Qn[5],i);r.vec3.add(_,_,s),r.vec3.sub(_,_,o),r.vec3.add(_,_,a),Qn[6]=Qn[6]||[];const d=r.vec3.copy(Qn[6],i);r.vec3.add(d,d,s),r.vec3.add(d,d,o),r.vec3.sub(d,d,a),Qn[7]=Qn[7]||[];const E=r.vec3.copy(Qn[7],i);r.vec3.add(E,E,s),r.vec3.add(E,E,o),r.vec3.add(E,E,a);for(let t=0;t<Qn.length;t++)Kn[t]=Kn[t]||[],pe(Kn[t],Qn[t]),$n[t]=Kn[t][0],Jn[t]=Kn[t][1],ti[t]=Kn[t][2];return[y(Math.min(...$n)),y(Math.min(...Jn)),y(Math.max(...$n)),y(Math.max(...Jn)),Math.min(...ti),Math.max(...ti)]}(E,t.matrix),c.region=_),_){e=vn.set(g(_[0]),g(_[1]),g(_[2]),g(_[3]));const t=e.getCenter(),r=this.Nr(t);e=e.convertTo((t=>this.Wt(t,Gn)),Bn),a=_[4],n=_[5],o=this.nr[s]=[[e.xmin,e.ymin,a*r[2]],[e.xmax,e.ymax,n*r[2]]],o.center=t}else if(l){const t=pe(Ln,l),e=new i.Coordinate(t),r=this.Wt(e,Gn).toArray(),n=this.Nr(e);r.push(t[2]*n[2]),o=this.nr[s]=[r,l[3]*n[2]],o.center=e}}if(e){if(_)vn.xmin=o[0][0],vn.ymin=o[0][1],vn.xmax=o[1][0],vn.ymax=o[1][1];else if(l){const t=o[2];vn.xmin=o[0][0]-t,vn.ymin=o[0][1]-t,vn.xmax=o[0][0]+t,vn.ymax=o[0][1]+t}else if(E){const t=o[1],e=o[2];vn.xmin=o[0][0]-t,vn.ymin=o[0][1]-e,vn.xmax=o[0][0]+t,vn.ymax=o[0][1]+e}if(!e.intersects(vn))return!1}return _?f(n,o):l?function(t,e,r){h(t);for(var n=e[0],i=-e[1],s=0;s<6;s++)if((!r||"0"!==r.charAt(s))&&d(a[s],n)<i)return!1;return!0}(n,o):!!E&&function(t,e,r){h(t);for(var n=0;n<6;n++)if(!(r&&"0"===r.charAt(n)||u(a[n],e)))return!1;return!0}(n,o)}Nr(t){const e=this.getMap(),n=e.distanceToPointAtRes(100,100,e.getGLRes(),t);let i;return i=e.altitudeToPoint?e.altitudeToPoint(100,e.getGLRes())/100:n.y/100,r.vec3.set(Fn,n.x/100*1.01,n.y/100*1.01,i),Fn}gr(t){Array.isArray(t)&&(t=new i.Coordinate(t));let e=this.options.offset;if(m(e)&&(e=e(Array.isArray(t)?new i.Coordinate(t):t)),e[0]||e[1]){const r=this.getMap(),n=r.getGLRes(),i=r.coordToPointAtRes(t,n);return i._sub(e),r.pointAtResToCoord(i,n)}return t}_r(t){const e=this.options.services[t].maxExtent;if(!e)return null;const r=this.ir[t];return r.maxExtent||(r.maxExtent=new i.Extent(e).convertTo((t=>this.Wt(t)))),r.maxExtent}Ir(t){const e=this.hr,r=t.geometricError;if(0===r)return t.Ge=0,0;const n=this.getMap();let i;t.boundingVolume.region?i=function(t,e,r){t.Sr||(t.Sr=new Un(t.boundingVolume.region));return t.Sr.distanceToCamera(e,r)}(t,this.ur,this.lr):t.boundingVolume.sphere?i=Xn(t.boundingVolume,this.ur):t.boundingVolume.box&&(i=Yn(t.boundingVolume,this.ur));const s=Math.max(Math.abs(i),1e-7),o=r*n.height/(s*e);return t.Vt=i,t.Ge=o,o}cr(){const t=this.getRenderer();t&&t.setToRedraw()}oe(t){return this.nr[t]}identify(t,e={}){const r=this.getMap(),n=this.getRenderer();if(!r||!n)return[];const s=r.coordToContainerPoint(new i.Coordinate(t));return this.identifyAtPoint(s,e)}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)}highlight(t){const e=this.getRenderer();return e?(e.highlight(t),this):(this.xt||(this.xt=[]),this.xt.push(t),this)}Je(){if(this.xt){for(let t=0;t<this.xt.length;t++)this.highlight(this.xt[t]);delete this.xt}}cancelHighlight(t,e){const r=this.getRenderer();return r?(r.cancelHighlight(t,e),this):this}cancelAllHighlight(){const t=this.getRenderer();return t?(t.cancelAllHighlight(),this):this}}function Xn(t,e){const n=t.sphere,i=r.vec3.dist(n,e),s=t.sphere[3];return i<s?0:i-s}function Yn(t,e){const n=t.box;return cn(r.vec3.set(Ln,n[0],n[1],n[2]),r.mat3.set(kn,n[3],n[4],n[5],n[6],n[7],n[8],n[9],n[10],n[11]),e)}zn.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]}),zn.registerRenderer("gl",sn),zn.registerJSONType("Geo3DTilesLayer");const qn=[],Zn=[],jn=[],Wn=[],Qn=[],Kn=[],$n=[],Jn=[],ti=[],ei=[];let ri=null;function ni(){return ri||(ri={"image/crn":Xr.crn&&Xr.crn(),"image/ktx2":Xr.ktx2&&Xr.ktx2(),"image/cttf":Xr.ktx2&&Xr.ktx2(),"draco":Xr.draco&&Xr.draco()}),ri}class ii{constructor(t,e,r){this.o=t,this.wr=e||Ht,this.l=r,this.Or=ni()}static createEmptyB3DM(){return{featureTable:null,batchTable:null,gltf:{}}}load(t,e,r=0,n=0,i){return e?(n||(n=e.byteLength),this.Mr(t,e,r,n,i)):bt.getArrayBuffer(t,{}).then((e=>{const i=e.data;return n||(n=i.byteLength),this.Mr(t,i,r,n)}))}Mr(t,e,r,n,i){const s=i&&i.maxTextureSize,o=this.Cr(e,r,n,t);if(o.error)return Promise.resolve(o);const a=t.substring(0,t.lastIndexOf("/")),c=new this.wr(a,o.glb,{transferable:!0,requestImage:this.o,decoders:this.Or,supportedFormats:this.l,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}}))}Cr(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?(_=Me(t,u,a),u+=a,o=_.BATCH_LENGTH):_={"BATCH_LENGTH":o},c>0&&(u+=c),l>0&&(d=Ce(t,u,l),u+=l,f>0)){const e=Ue(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=ve(_.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}}}Ur(){return null}}class si{constructor(t,e,r,n){this.o=t,this.wr=e||Ht,this.l=r,this.Or=ni(),this.vr=n}load(t,e,r=0,n=0,i){return e?(n||(n=e.byteLength),this.Mr(t,e,r,n,i)):bt.getArrayBuffer(t,{}).then((e=>{const i=e.data;return n||(n=i.byteLength),this.Mr(t,i,r,n)}))}Mr(t,e,r,n,i){return this.Br(t,e,r,n,i).then((({gltf:i,transferables:s})=>{const o=this.Lr(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})}))}Br(t,e,r,n,i){const s=i&&i.maxTextureSize,o={transferable:!0,requestImage:this.o,decoders:this.Or,supportedFormats:this.l,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=N(new Uint8Array(e,c+r,a.byteLength-c));-1==n.indexOf("://")&&(n=t.substring(0,t.lastIndexOf("/"))+"/"+n);return n.indexOf(".glb")>0?bt.getArrayBuffer(n,{}).then((t=>this.Pr(n,{buffer:t.data,byteOffset:0},o))):bt.getJSON(n,{}).then((t=>this.Pr(n,t,o)))}{const n={buffer:e,byteOffset:c+r,byteLength:a.byteLength-c};return this.Pr(t,n,o)}}Pr(t,e,r){const n=t.substring(0,t.lastIndexOf("/")),i=new this.wr(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}}))}Lr(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}=He(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.Fr(new Uint16Array(t,n+c.offset,3*h),e,r)},o.push(u.POSITION.array.buffer)}if(a.BATCH_ID){u.BATCH_ID=ve(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.Dr(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.Dr(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}}Dr(t){const e=t.length/2,r=new Float32Array(3*e),n=[];for(let i=0;i<e;i++)oi(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}Fr(t,e,r){return ke(new Float32Array(t.length),t,e,r)}Ur(){return null}}function oi(t,e,r,n){if(t[0]=ai(e,n),t[1]=ai(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]))*ci(e),t[1]=(1-Math.abs(e))*ci(t[1])}return W(t,t)}function ai(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 ci(t){return t<0?-1:1}class li{constructor(){}load(t,e,r=0,n=0){return e?(n||(n=e.byteLength),this.Mr(t,e,r,n)):bt.getArrayBuffer(t,{}).then((e=>{const i=e.data;return n||(n=i.byteLength),this.Mr(t,i,r,n)}))}Mr(t,e,r,n){return this.Gr(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}))}Gr(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}=He(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.kr||(this.kr=ni().draco),this.kr(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.Hr(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:Ge(t.constructor),array:t},o.push(t.buffer)}else if(a.BATCH_ID||Object.keys(l).length){a.BATCH_ID?n.BATCH_ID=ve(a.BATCH_ID,t,c.offset,_):n.BATCH_ID=fi(_);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.Hr(t,a,c.offset,_,o,u,h);if(a.BATCH_ID||Object.keys(l).length){a.BATCH_ID?T.BATCH_ID=ve(a.BATCH_ID,t,c.offset,_):T.BATCH_ID=fi(_);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})}Hr(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.Fr(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}Fr(t,e,r){return ke(new Float32Array(t.length),t,e,r)}Ur(){return null}}function fi(t){const e=O(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:Ge(e),array:r}}class ui{constructor(t,e,r,n){this.l=r,this.o=t,this.wr=e||Ht,this.vr=n}load(t,e,r=0,n=0,i){return e?this.Mr(t,e,r,n,i):bt.getArrayBuffer(t,{}).then((e=>{const i=e.data;return this.Mr(t,i,r,n)}))}Mr(t,e,r,n,i){n||(n=e.byteLength);const s=this.Vr(e,t,r,n),o=[];for(let r=0;r<s.length;r++){let n;if("b3dm"===s[r].magic)n=new ii(this.o,this.wr,this.l);else if("i3dm"===s[r].magic)n=new si(this.o,this.wr,this.l,this.vr);else if("pnts"===s[r].magic)n=new li;else{if("cmpt"!==s[r].magic){console.warn("Unsupported magic in CMPT tile:",s[r].magic);continue}n=new ui(this.o,this.wr,this.l,this.vr)}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})))}Vr(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=we(i,c),n=i.getUint32(c+8,!0);o.push({magic:e,buffer:t,offset:c+r,byteLength:n}),c+=n}return o}}if(s.transcoders){const t=i.Map.VERSION;if(t.indexOf("1.0.0-beta")>=0||t.indexOf("1.0.0-alpha")>=0){const t=s.transcoders.inject(o);i.registerWorkerAdapter("@maptalks/3dtiles",t)}else i.registerWorkerAdapter("@maptalks/3dtiles",(function(){return s.transcoders.inject(o)}))}else i.registerWorkerAdapter("@maptalks/3dtiles",o);t.B3DMLoader=ii,t.CMPTLoader=ui,t.Geo3DTilesLayer=zn,t.Geo3DTilesUtil=x,t.Geo3DTransform=Ne,Object.defineProperty(t,"t",{value:!0}),"undefined"!=typeof console&&console.log("@maptalks/3dtiles v0.22.0")}));
|
|
21
|
+
* (c) 2016-2023 maptalks.com
|
|
22
|
+
*/(o,A)),c.generateBuffers(this.nt,{excludeElementsInVAO:e}),c}Ae(t,e,n,i){const s=r.mat4.identity(t),o=this.getMap();Yr.x=n[0],Yr.y=n[1];const a=this._prjToPoint(Yr),A=this.de(),c=1/(o.getGLZoom?o.getResolution(o.getGLZoom()):o.getGLRes());Yr.x=e[0],Yr.y=e[1];const l=this.le();let f=this.tt.options.offset;S(f)&&(f=f(Yr));const h=this.tt.options.services[i].heightOffset||0;return r.vec3.set(qr,a.x-f[0],a.y-f[1],l*n[2]+l*h),r.mat4.translate(s,s,qr),r.vec3.set(A,c,c,l),r.mat4.scale(s,s,A),s}te(t,e){const n=r.mat4.identity(t),i=this.getMap(),s=this.de();Yr.x=e[0],Yr.y=e[1];const o=i.distanceToPointAtRes(100,100,i.getGLRes(),Yr);let a;return a=i.altitudeToPoint?this.bt:o.y/100,r.vec3.set(s,o.x/100*1.01,o.y/100*1.01,a),r.mat4.scale(n,n,s),n}Rt(){const t={x:0,y:0,width:()=>this.et?this.et.width:1,height:()=>this.et?this.et.height:1};this.Jt=new r.reshader.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)=>r.mat4.multiply([],e.projViewMatrix,e.modelMatrix)}],extraCommandProps:{viewport:t}});const e=[],n=[];this.Kt=new r.reshader.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)=>r.mat4.multiply(n,e.projViewMatrix,e.modelMatrix)},{name:"modelNormalMatrix",type:"function",fn:(t,n)=>r.mat3.fromMat4(e,n.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 i=this.It();this.Gt=new r.reshader.PhongShader({extraCommandProps:i}),this.Ht=new r.reshader.pbr.StandardShader({extraCommandProps:i});const s=this.tt;xr(s.getRenderer().canvas,this.nt,s.getMap()),this.picking=new r.reshader.FBORayPicking(this.it,{vert:this.Ht.vert,extraCommandProps:i,uniforms:this.Ht.uniforms,defines:{"PICKING_MODE":1,"ENABLE_PICKING":1,"HAS_PICKING_ID":1}},this.pickingFBO,this.getMap())}It(){return{viewport:{x:0,y:0,width:()=>this.et?this.et.width:1,height:()=>this.et?this.et.height:1},colorMask:(t,e)=>e.colorMask||zr,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"}},depth:{enable:!0,range:[0,1],func:(t,e)=>e.meshProperties.depthFunc||"<"},blend:{enable:!0,func:{src:"src alpha",dst:"one minus src alpha"},equation:"add"},polygonOffset:{enable:!0,offset:(t,e)=>e.meshProperties.polygonOffset}}}Yt(t){return{projViewMatrix:this.getMap().projViewMatrix,color:t&&t.color||[0,1,0]}}Vt(t){const e=this.getMap(),n=e.getLightManager(),i=(n&&n.getDirectionalLight()||{}).direction||[1,1,-1],s=t&&t.pointOpacity||1;return{projViewMatrix:e.projViewMatrix,pointOpacity:s,lightDir:r.vec3.normalize(i,i)}}Pt(){const t=this.getMap(),e=this.tt.getRenderer().canvas,{iblTexes:r,dfgLUT:n}=vr(e),i=Ur(t,r,n);return b(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}_e(t,e,n,i,s){const o=e.materials[t];if(!o||!o.baseColorTexture&&!o.pbrMetallicRoughness)return null;const a=b({},i);if(o.baseColorTexture){const t=e.textures[o.baseColorTexture.index];let r;t&&!t.image.color&&(r=this.S(t)),a.baseColorFactor=t&&t.image.color||o.baseColorFactor||[1,1,1,1],r&&(a.baseColorTexture=r)}else{if(o.normalTexture){const t=this.S(e.textures[o.normalTexture.index]),r=o.normalTexture.scale||1;a.normalTexture=t,a.normalMapFactor=r}if(o.occlusionTexture){const t=this.S(e.textures[o.occlusionTexture.index]),r=o.occlusionTexture.strength||1;a.occlusionTexture=t,a.occlusionFactor=r}if(o.emissiveTexture){const t=this.S(e.textures[o.emissiveTexture.index]);a.emissiveTexture=t}o.emissiveFactor&&(a.emissiveFactor=o.emissiveFactor);const t=o.pbrMetallicRoughness;if(t){if(t.baseColorFactor&&(a.baseColorFactor=t.baseColorFactor),t.baseColorTexture&&void 0!==t.baseColorTexture.index){const n=e.textures[t.baseColorTexture.index];n.image&&n.image.color?a.baseColorFactor=a.baseColorFactor?r.vec4.multiply(a.baseColorFactor,a.baseColorFactor,n.image.color):n.image.color:(a.baseColorTexture=this.S(n),a.baseColorTexture.getREGLTexture(this.nt))}if(I(t.metallicFactor)||(a.metallicFactor=t.metallicFactor),I(t.roughnessFactor)||(a.roughnessFactor=t.roughnessFactor),o.metallicRoughnessTexture){const t=this.S(e.textures[o.metallicRoughnessTexture.index]);a.metallicRoughnessTexture=t}}}if(o.s3mMaterial)return new r.reshader.Material(a);if(a.environmentExposure=s,o.extensions&&o.extensions.KHR_materials_unlit)return a.environmentExposure=1,a.ambientColor=[1,1,1],a.light0_diffuse=[0,0,0,0],a.lightSpecular=[0,0,0],new r.reshader.PhongMaterial(a);let A=new r.reshader.pbr.StandardMaterial(a);"phong"===n&&(A=r.reshader.PhongMaterial.convertFrom(A));const c=o.pbrMetallicRoughness,l=c&&c.baseColorTexture&&c.baseColorTexture.extensions;return l&&l.KHR_texture_transform&&(A.set("khr_offset",l.KHR_texture_transform.offset||[0,0]),A.set("khr_rotation",l.KHR_texture_transform.rotation||0),A.set("khr_scale",l.KHR_texture_transform.scale||[1,1])),A.once("complete",this.Ct),A}S(t){const e={type:t.type?Mr(t.type):"uint8",format:t.format?Nr(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&&t.texture.sampler;return i&&(i.magFilter&&(e.mag=br(i.magFilter)),i.minFilter&&(e.min=Sr(i.minFilter)),i.wrapS&&(e.wrapS=Pr(i.wrapS)),i.wrapT&&(e.wrapT=Pr(i.wrapT))),new r.reshader.Texture2D(e,this.dt)}Ce(t){const e=t.image,r=window.URL||window.webkitURL,n=new Blob([e.array],{type:e.mimeType});return r.createObjectURL(n)}Tt({target:t}){const e=t.Be,r=this.st[e];if(r.count--,!r.count){const t=r.meshes;this.At[e]=t,delete this.st[e];const n=t.ae;delete t.ae,n(null,{mesh:r.meshes,id:e})}}de(){return Vr}Qt(t){return this.tt.Qt(t)}$t(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(),Zr)}ne(t){return"Y"===t?Lr:"X"===t?Fr:Kr}pick(t,e,r=3){const n=this.tt;if(!n||!n.options.picking)return[];if(!this.pickingFBO||!this.picking)return[];const i=this.getMap(),s=this.Pt(),o=this.picking;o.render(this.ut.getMeshes().filter((t=>!t.bloom)),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:A,pickingId:c,point:l,coordinate:f}=a,h=(0===A||A)&&o.getMeshAt(A);if(!h||!h.geometry)return[];const u=h.properties;l&&l.length&&(l[0]=Math.round(1e5*l[0])/1e5,l[1]=Math.round(1e5*l[1])/1e5,l[2]=Math.round(1e5*l[2])/1e5);const E={batchId:c};if(n.options.debug&&(E.debugInfo=u),u&&u.batchTable){const{batchTable:t,batchTableBin:e,count:r}=u,n=c;for(const i in t)void 0!==t[i].byteOffset?E[i]=Ye(t[i],e,r,n):E[i]=t[i][n]}return[{service:h.properties.serviceIndex,data:E,point:l,coordinate:f}]}Mt(t){let e=new Set;for(let r=0,n=t.length;r<n;r++){const n=t[r].data.node;this.Nt(n)&&e.add(n.wt)}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}highlight(t){this.Ot=t;const e=this.tt.getRenderer();this.Lt=e.getFrameTimestamp(),e.setToRedraw(!0)}cancelAllHighlight(){this.Ot=null;const t=this.tt.getRenderer();this.Lt=t.getFrameTimestamp(),t.setToRedraw(!0)}showOnly(t){this.Ft=t;const e=this.tt.getRenderer();this.xt=e.getFrameTimestamp(),e.setToRedraw(!0)}cancelShowOnly(){this.Ft=null;const t=this.tt.getRenderer();this.xt=t.getFrameTimestamp(),t.setToRedraw(!0)}Te(){if(!this.St)return[];const t={},e=[];for(const r in this.St){const n=this.St[r];if(n)for(let r=0;r<n.length;r++){const i=n[r],s=i&&i.geometry;if(!i||!s)continue;const o=i.properties.serviceIndex;t[o]||(t[o]=new Set);const a=s.properties.batchIdData;if(a)for(let r=0;r<a.length;r++)t[o].has(a[r])||(e.push({id:a[r],service:o}),t[o].add(a[r]))}}return e}hasIBL(){const t=this.getMap().getLightManager();return!!(t&&t.getAmbientResource())}}const nn=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")},sn=nn(),on=sn.gl_trans__coders=sn.gl_trans__coders||{};function an(t,e){if(e)for(let r=0;r<e.length;r++){t[e[r].id||e[r].index]=e[r]}}on.inject=function(t){const e=t.toString(),r=e.indexOf("{")+1,n=e.substring(0,r),i=sn.gl_trans__coders=sn.gl_trans__coders||{};let s=`${n}\n const _____getGlobal = ${nn.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},on.registerTranscoder=function(t,e){on[t]=e},on.getTranscoder=function(t){return on[t]};const An=[];class cn{constructor(t,e,r,n){this.me=t,this.Dt=e,this.ge=n,this.pe=r.version,t.indexOf("i3s:tileset:")<0?(this.pe<=1.6?this.Re="root":this.Re=0,r.version=this.pe):(this.Re=t.substring("i3s:tileset:".length),this.pe>1.6&&(this.Re=parseInt(this.Re))),this.me=t,this.ye=r}load(){const t=this.ye,e=t.layerScene.baseUrl;if(this.pe<=1.6)return t[this.Re]&&t[this.Re].lodSelection?(this.Ie=t[this.Re],this.be()):new Promise((r=>{let n=e+"/nodes/"+this.Re;t.layerScene.eslpk&&(n+="/3dNodeIndexDocument.json"),this.ge(this.Dt,n,(()=>{this.Ie=t[this.Re],r(this.be())}))}));if(this.pe>=1.7){if(t[this.Re])return this.Ie=t[this.Re],this.be();const r=Math.floor(this.Re/t.nodesPerPage);return new Promise((n=>{let i=e+"/nodepages/"+r;t.layerScene.eslpk&&(i+=".json"),this.ge(this.Dt,i,(()=>{this.Ie=t[this.Re],n(this.be())}))}))}return null}getTileset(){return this.Se}getChildrenURL(){return this.Pe}be(){const t=this.ye,e=t.layerScene.baseUrl,r=this.Ie.children,n=[],i={};if(r)for(let s=0;s<r.length;s++)if(this.pe<=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.ge(this.Dt,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.ge(this.Dt,n,(()=>{r()}))})),n.push(i[a]))}return n.length?Promise.all(n).then((()=>this.Me())):this.Me()}Me(){return Promise.resolve(this.Ne())}De(t){an(this.ye,t)}Ne(){return{asset:{i3s:!0,version:"1.0",gltfUpAxis:"Z"},geometricError:Number.MAX_VALUE,root:this.Oe(this.Ie,!0)}}Oe(t){const e=this.pe,r=this.ye,n=t;var i,s=n.obb,o=n.mbs,a={};if(o)i=ln([],o[0],o[1],o[2]),a.sphere=[...i,o[3]];else if(s){const t=function(t,e,r){const n=function(t,e){var r=e[0],n=e[1],i=e[2],s=e[3],o=r+r,a=n+n,A=i+i,c=r*o,l=n*o,f=n*a,h=i*o,u=i*a,E=i*A,_=s*o,B=s*a,d=s*A;return t[0]=1-f-E,t[3]=l-d,t[6]=h+B,t[1]=l+d,t[4]=1-c-E,t[7]=u-_,t[2]=h-B,t[5]=u+_,t[8]=1-c-f,t}([],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=ln([],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];tt(An,e,r,n);const o=lt(An);a.sphere=[...i,o]}var A=1/0,c=0;if(n.mbs?c=n.mbs[3]:n.obb&&(c=Math.max(Math.max(n.obb.halfSize[0],n.obb.halfSize[1]),n.obb.halfSize[2])),void 0!==n.lodThreshold)"maxScreenThresholdSQ"===r.lodSelectionMetricType?A=c/(Math.sqrt(n.lodThreshold)/(.25*Math.PI)):console.error("Unsupported lodSelectionMetricType in Layer");else if(void 0!==n.lodSelection)for(var l=0;l<n.lodSelection.length;l++)"maxScreenThreshold"===n.lodSelection[l].metricType&&(A=c/n.lodSelection[l].maxError);(A===1/0||isNaN(A))&&(A=1e5);var f=16*A;const h=z([]),u=n.children;var E;if(u){E=[];const t=this.ye;for(let r=0;r<u.length;r++){const n=e<=1.6?u[r].id:u[r];if(!t[n]){E=null;break}E.push(this.Oe(t[n]))}}var _={refine:"REPLACE",boundingVolume:a,transform:h,geometricError:f};return e<=1.6?t.lodSelection?t.geometryData&&(_.content={uri:"i3s:mesh:"+(t.id||t.index)}):_.content={uri:"i3s:tileset:"+(t.id||t.index)}:u&&u.length&&!E?_.content={uri:"i3s:tileset:"+(t.id||t.index)}:n.mesh&&(_.content={uri:"i3s:mesh:"+(t.id||t.index)}),E&&E.length&&(_.children=E),_}getJSON(){return this.Ie}}function ln(t,e,r,n){return pe(t,N(e),N(r),n)}const fn=!!on.ktx2,hn=r.mat4.identity([]),un=(()=>{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 En(t){return t.indexOf("i3s:mesh")>=0}const _n="i3s:mesh:".length;function Bn(t,e,r,n,i){const s=e.layerScene.eslpk,o=function(t,e){const r=e.substring(_n);return t>=1.7?parseInt(r):r}(e.version,t),a=e[o],A=e.layerScene.baseUrl,c=[];let l=!1;const f=hn;let h,u;if(e.version<=1.6){if(!a.geometryData)return null;const t=a.geometryData.length;if(!t)return null;let r=A+`/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:A+`/nodes/${a.id}/`+i,factor:1,format:r,mimeType:t},metallicFactor:0}};n.material=o}c.push(n)}else{h=a.mesh.geometry,u=a.mesh.material;const t=e.layerScene.geometryDefinitions[h.definition],{geometryBuffers:o}=t;l=n&&2===o.length;const f=on.draco&&l?o[1]:o[0],E=on.draco&&l?1:0;let _=A+`/nodes/${h.resource}/geometries/`+E;s&&(_+=".bin");const B={geometry:{url:_,info:f}};if(i&&un&&l&&!on.draco)throw new Error("Must import @maptalks/transcoder.draco to load i3s draco compressed geometry");const d=e.layerScene.materialDefinitions,C=e.layerScene.textureSetDefinitions;let T,m=0;if(u&&(m=d[u.definition]),d){T=function(t,e,r,n,i,s){const o=JSON.parse(JSON.stringify(t));return dn(o,e,r,n,i,s),o}(m,C,A,u.resource,r,e.layerScene.eslpk)}else T={pbrMetallicRoughness:{metallicFactor:0}};B.material=T,c.push(B)}return{dracoCompression:l,meshes:c,nodeIndex:o,center:a.obb&&a.obb.center||a.mbs&&[a.mbs[0],a.mbs[1],a.mbs[2]],transform:f}}function dn(t,e,r,n,i,s){for(const o in t)if(t[o]&&t[o].textureSetDefinitionId>=0){const a=e[t[o].textureSetDefinitionId],A="images/"+a.formats[0].format,c=Cn(a.formats,i),l={url:r+`/nodes/${n}/textures/${c.name}`,factor:void 0===t[o].factor?1:t[o].factor,format:c.format,mimeType:A};if(s){let t="";switch(c.format){case"dds":t="bin.dds";break;case"jpg":case"png":t=c.format}l.url+="."+t}t[o]=l}else P(t[o])&&dn(t[o],e,r,n,i,s)}function Cn(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&&fn)return t[r]}return null}const Tn=[];class mn extends i.renderer.CanvasRenderer{constructor(t){super(t),this.prepareWorker(),this.tilesLoading={},this.tileCache=new Ae(1024*t.options.maxGPUMemory*1024,this.deleteTile.bind(this)),this.Le={},this.Fe=[],this.ge=this.xe.bind(this)}getAnalysisMeshes(){if(!this.painter)return Tn;const t=this.painter.getPaintedMeshes();if(!t)return Tn;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.Fe.length||super.needToRedraw())}getFrameTimestamp(){return this.we}drawOnInteracting(t,e,r){this.draw(e,r)}draw(t,e){this.we=t;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.ve(),this.Ue();const{selectedTiles:o,leaves:a,requests:A}=this.Ge(n,i);A.length&&this.loadTiles(A),this.He(o,a,e),this.Ve(),A.length||this.completeRender()}Ge(t,e){const r=this.layer.getRootTiles();let n=[];this.Ke();let i=0;const s=this.ke(),o={};let a=!1,A=!1;for(let t=0;t<e.length;t++){const s=e[t],c=s.node;if(o[c.id])continue;const l=r[c.Dt];o[c.id]=1;let f=!1;const h=this.getCachedTile(c.id);if(this.Xe(c.id)?(i++,f=A=!0,this.tilesLoading[c.id].current=!0):h?(this.getTileOpacity(h)<1&&(f=A=!0),(!s.node.ze||l.isS3M||!s.node.children||s.node.ze<=500)&&(a=!0,s.selected=!0,s.data=h)):this.painter.has(c)||(f=A=!0,n.push(c)),!f)continue;if(this.Je(s))a=!0;else{this.Ye(s).length&&(a=!0)}}let c=[],l={};if(a&&({selectedTiles:c,leaves:l}=this.Ze(t)),n.length>1&&(n.sort(gn),s)){const t=s-i;n=t>0?n.slice(0,t):[]}return{loading:A,requests:n,selectedTiles:c,leaves:l}}Ze(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.We===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.We=i.length}for(let t=0;t<o.length;t++)i.push(o[t])}return{selectedTiles:e,leaves:r}}Je(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}Ye(t){const e=[];if(!t.node.children||!t.node.children.length)return e;const r=t.wt+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.je(i[s],t);r.selected=!0,r.data=this.tileCache.get(o),t.children.push(r),e.push(r)}else i[s].wt<=r&&n.push(i[s])}}return e}He(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=this.painter.paint(t,e,r);this.onDrawTileEnd(n),i&&this.layer.fire("canvasisdirty",{renderCount:i})}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(G(e)){const r=H(e);return void this.Qe(e,r,t)}if(function(t){return t.indexOf("i3s:tileset")>=0}(e)){const r=t.Dt,n=this.qe[r];return new cn(e,r,n,this.ge).load().then((r=>{this.onTilesetLoad(r,t,e)}))}t&&-1===e.indexOf("http://")&&-1===e.indexOf("https://")&&!En(e)&&(e=t.baseUrl+e);const r=this.layer.options.services[t.Dt];if(r.ajaxInMainThread){let n=r.urlParams;n&&(n=(e.indexOf("?")>0?"&":"?")+n);let i=Lt.getArrayBuffer(e+(n||""),r.fetchOptions);const s=i.xhr;i=i.then((r=>{delete this.Le[e],r?this.Qe(e,r.data,t):this.onTileError(null,t)})).catch((r=>{delete this.Le[e],this.onTileError(r,t)})),this.Le[e]=s}else this.Qe(e,null,t)}Qe(t,e,n){let i=this.A;i||(i=r.reshader.Util.getSupportedFormats(this.gl.gl||this.gl),this.A=i);const s=this.layer.options.services[n.Dt];s.isSuperMapiServer&&(t=function(t,e){const r=t.substring(e.length),n=r.split("/"),i=[];for(let t=0;t<n.length;t++)i.push(encodeURIComponent(n[t]));return e+i.join("/")}(t,n.baseUrl));const o={url:t=this.layer.getTileUrl(t,n.baseUrl,s),arraybuffer:e,rootIdx:n.Dt,upAxis:n.ie,transform:n.matrix,supportedFormats:i};if(En(t)){const e=this.qe[n.Dt];if(o.i3sInfo=Bn(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.Fe.push({data:r,tile:n}):this.onTilesetLoad(r,n,t)}))}Ue(){const t=this.getMap(),e=this.layer.options.meshLimitPerFrame;let r=0;for(;this.Fe.length&&(r<e||!t.isInteracting());){const{data:t,tile:e}=this.Fe.shift(),{magic:n}=t;"b3dm"===n?this.painter.createB3DMMesh(t,e.id,e,((r,{mesh:n})=>{this.$e(t,e,r,n)})):"pnts"===n?this.painter.createPntsMesh(t,e.id,e,((r,{mesh:n})=>{this.$e(t,e,r,n)})):"i3dm"===n?this.painter.createI3DMMesh(t,e.id,e,((r,{mesh:n})=>{this.$e(t,e,r,n)})):"cmpt"===n&&this.painter.createCMPTMesh(t,e.id,e,((r,{mesh:n})=>{this.$e(t,e,r,n)})),r++}}$e(t,e,r,n){if(r)this.onTileError(r,e);else{const r=this.tr(n);e.memorySize=r,this.onTileLoad(t,e)}}tr(t){let e=0;if(Array.isArray(t))for(let r=0;r<t.length;r++)t[r]&&(e+=this.tr(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.er(e),this.setToRedraw(),this.layer.fire("tileload",{node:e}))}onTilesetLoad(t,e,r){this.layer&&(this.layer.he=t.extensions&&t.extensions["s3m:VertexCompressionType"],t.capabilities||t.layers&&t.layers[0]&&t.layers[0].capabilities?this.rr(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.nr(e,t),this.setToRedraw(),this.layer.fire("tileerror",{node:e,error:t})}getCachedTile(t){return this.tileCache.get(t)}nr(t,e){const r={loadTime:i.Util.now(),current:!0,error:e,node:t};this.tileCache.add(t.id,r)}er(t){const e={loadTime:i.Util.now(),current:!0,node:t};this.tileCache.add(t.id,e)}abortTileLoading(t){if(!t||!this.workerConn)return;const e=t.node.content.url;if(this.layer.options.services[t.node.Dt].ajaxInMainThread){const t=this.Le[e];t&&t.abort()}else this.workerConn.abortTileLoading(this.layer.getId(),e);delete this.Le[e]}Ke(){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},n=this.canvas.gl&&this.canvas.gl.wrap;n?(this.gl=this.canvas.gl.wrap(),this.regl=this.canvas.gl.regl):(this.glOptions=e,this.gl=this.ir(this.canvas,e)),this.regl=this.regl||r.createREGL({gl:this.gl,attributes:e,extensions:["OES_element_index_uint"],optionalExtensions:t.options.optionalExtensions||[]}),n&&(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 rn(this.regl,t),this.layer.sr()}prepareWorker(){const t=this.getMap();this.workerConn||(this.workerConn=new se("@maptalks/3dtiles",t.id));const e=this.workerConn;if(!e.isActive())return;let r=this.layer.options||{};r=b({},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.Ve(!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}Ve(t){this.ar||(this.ar=Date.now());const e=Date.now();if(t||!(e-this.ar<this.layer.options.retireInterval)){this.ar=e;for(const e in this.tilesLoading){const r=this.tilesLoading[e];!t&&r.current||this.abortTileLoading(r)}}}ke(){return this.getMap().isInteracting()?this.layer.options.loadingLimitOnInteracting:this.layer.options.loadingLimit}ir(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}Xe(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 ze(t,e,0,r)}ve(){if(!this.Ar)return;const t=this.layer.options.i3sNodepageLimitPerFrame||Number.MAX_VALUE;let e=0;const r=[];for(const n in this.Ar){const i=this.Ar[n];if("pending"===i.status)continue;i.status="pending";const s=i.rootIdx;if(r.push(Lt.getJSON(n).then((t=>{delete this.Ar[n];const e=this.qe[s];if(e){t.nodes?an(e,t.nodes):(e[t.id]=t,an(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)}xe(t,e,r){this.Ar||(this.Ar={}),this.Ar[e]=this.Ar[e]||[],this.Ar[e].rootIdx=t,this.Ar[e].push(r),this.setToRedraw()}rr(t,e,r){this.qe||(this.qe=[]);const n=e.Dt;this.qe[n]||(this.qe[n]={});const i=this.qe[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 cn(n,e,i,s).load()}(t,n,0,r,i,this.ge).then((t=>{this.onTilesetLoad(t,e,r)}))}pick(t,e,r){return this.painter?this.painter.pick(t,e,r&&r.tolerance):[]}highlight(t){if(this.Ot||(this.Ot=[]),Array.isArray(t))for(let e=0;e<t.length;e++){const r=t[e].service||0;let n=this.Ot[r];n||(n=this.Ot[r]=new Map),n.set(t[e].id,t[e])}else{const e=t.service||0;let r=this.Ot[e];r||(r=this.Ot[e]=new Map),r.set(t.id,t)}this.painter.highlight(this.Ot)}cancelHighlight(t,e){if(!this.Ot)return;const r=this.Ot[t];if(r){if(Array.isArray(e))for(let t=0;t<e.length;t++)r.delete(e[t]);else r.delete(e);this.painter.highlight(this.Ot)}}cancelAllHighlight(){delete this.Ot,this.painter.cancelAllHighlight()}showOnly(t){if(this.Ft||(this.Ft=[]),Array.isArray(t))for(let e=0;e<t.length;e++){const r=t[e].service||0;let n=this.Ft[r];n||(n=this.Ft[r]=new Map),n.set(t[e].id,t[e])}else{const e=t.service||0;let r=this.Ft[e];r||(r=this.Ft[e]=new Map),r.set(t.id,t)}this.painter.showOnly(this.Ft)}cancelShowOnly(){delete this.Ft,this.painter.cancelShowOnly()}Te(){return this.painter?this.painter.Te():[]}}function gn(t,e){return t.Xt-e.Xt}function pn(t,e,r){return t[0]=e[r],t[1]=e[r+3],t[2]=e[r+6],t}function Rn(t,e,r){return Math.sqrt(function(t,e,r){var n=rt(yn,r,t),i=pn(In,e,0),s=pn(bn,e,1),o=pn(Sn,e,2),a=lt(i),A=lt(s),c=lt(o);st(i,i),st(s,s),st(o,o);var l=Pn;l[0]=ot(n,i),l[1]=ot(n,s),l[2]=ot(n,o);var f,h=0;l[0]<-a?h+=(f=l[0]+a)*f:l[0]>a&&(h+=(f=l[0]-a)*f);l[1]<-A?h+=(f=l[1]+A)*f:l[1]>A&&(h+=(f=l[1]-A)*f);l[2]<-c?h+=(f=l[2]+c)*f:l[2]>c&&(h+=(f=l[2]-c)*f);return h}(t,e,r))}const yn=[],In=[],bn=[],Sn=[],Pn=[];const Mn=2*Math.PI;class Nn{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+=Mn,r<0&&(r+=Mn)),(r>i||Ge(r,i,1e-14))&&(r<s||Ge(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 Dn=[0,0,1];function On(t,e){return pe(e,t[0],t[1],t[2])}class Ln{constructor(t,e){this.normal=r.vec3.copy([],t),this.distance=e}static fromPointNormal(t,e,n){var i=-r.vec3.dot(e,t);return r.vec3.copy(n.normal,e),n.distance=i,n}}const Fn=[],xn=[],wn=[],vn=[],Un=[],Gn=[],Hn=[],Vn=[],Kn=[],kn=[],Xn=new Ln([1,0,0],0),zn=[];class Jn{constructor(t){this.southwestCornerCartesian=[],this.northeastCornerCartesian=[],this.westNormal=[],this.eastNormal=[],this.southNormal=[],this.northNormal=[],this.rectangle=new Nn(...t),this.minimumHeight=t[4],this.maximumHeight=t[5],this.computeBox(this.rectangle)}distanceToCamera(t,e){var n,i,s,o=0;if(!Nn.contains(this.rectangle,e)){var a=this.southwestCornerCartesian,A=this.northeastCornerCartesian,c=this.westNormal,l=this.southNormal,f=this.eastNormal,h=this.northNormal,u=r.vec3.subtract(zn,t,a),E=r.vec3.dot(u,c),_=r.vec3.dot(u,l),B=r.vec3.subtract(zn,t,A),d=r.vec3.dot(B,f),C=r.vec3.dot(B,h);E>0?o+=E*E:d>0&&(o+=d*d),_>0?o+=_*_:C>0&&(o+=C*C)}if(n=e[2],i=this.minimumHeight,n>(s=this.maximumHeight)){var T=n-s;o+=T*T}else if(n<i){var m=i-n;o+=m*m}return Math.sqrt(o)}computeBox(t){const e=this;On(Nn.southwest(t,xn),e.southwestCornerCartesian),On(Nn.northeast(t,xn),e.northeastCornerCartesian),Fn[0]=t.west,Fn[1]=.5*(t.south+t.north),Fn[2]=0;var n=On(Fn,wn),i=r.vec3.cross(Un,n,Dn);r.vec3.normalize(e.westNormal,i),Fn[0]=t.east;var s=On(Fn,Vn),o=r.vec3.cross(Un,Dn,s);r.vec3.normalize(e.eastNormal,o);var a,A=r.vec3.subtract(Un,n,s),c=r.vec3.normalize(vn,A),l=t.south;if(l>0){Fn[0]=.5*(t.west+t.east),Fn[1]=l;var f=On(Fn,Kn);r.vec3.copy(kn,c);var h=Ln.fromPointNormal(e.southwestCornerCartesian,e.westNormal,Xn);Yn(Kn,kn,h,e.southwestCornerCartesian),a=Fe(f,Gn)}else a=xe(Nn.southeast(t,xn),Gn);var u=r.vec3.cross(Hn,a,A);r.vec3.normalize(e.southNormal,u);var E,_=t.north;if(_<0){Fn[0]=.5*(t.west+t.east),Fn[1]=_;var B=On(Fn,Kn);r.vec3.scale(kn,c,-1);var d=Ln.fromPointNormal(e.northeastCornerCartesian,e.eastNormal,Xn);Yn(Kn,kn,d,e.northeastCornerCartesian),E=Fe(B,Gn)}else E=xe(Nn.northwest(t,xn),Gn);var C=r.vec3.cross(Hn,A,E);r.vec3.normalize(e.northNormal,C)}}function Yn(t,e,n,i){var s=t,o=e,a=n.normal,A=r.vec3.dot(a,o);if(!(Math.abs(A)<Ue)){var c=(-n.distance-r.vec3.dot(a,s))/A;if(!(c<0))return i=r.vec3.scale(i,o,c),r.vec3.add(i,s,i)}}const Zn=new i.Extent(0,0,0,0),Wn=new i.Extent(0,0,0,0),jn=[],Qn=[],qn=[],$n=[],ti=new i.Point(0,0),ei=[],ri=new i.Coordinate(0,0),ni=r.mat4.identity([]),ii=[0,0];class si extends i.Layer{constructor(t,e){super(t,e),this.cr(),this.Le={},this.lr=[]}cr(){let t=this.options.services.map((t=>t.url));this.hr=t.map(((t,e)=>function(t,e){t=O(t);const n={visible:1,baseUrl:t.substring(0,t.lastIndexOf("/"))+"/",content:{url:t},refine:"replace",matrix:r.mat4.identity([]),Dt:e,wt:0};return n}(t,e))),this.fire("rootready",{roots:this.hr.slice(0)})}showService(t){return this.ur(t,1),this}hideService(t){return this.ur(t,0),this}setToRedraw(){const t=this.getRenderer();t&&t.setToRedraw()}ur(t,e){const r=this.hr[t];if(!r)return;r.visible=e;const n=this.getRenderer();n&&n.setToRedraw()}getTileUrl(t){return t}getExtent(t){if(!t&&0!==t){const t=new i.Extent;for(let e=0;e<this.hr.length;e++)if(this.hr[e].boundingVolume){const r=this.boundingVolumeToExtent(this.hr[e]);t._combine(r)}return t}return this.hr[t]&&this.hr[t].boundingVolume?this.boundingVolumeToExtent(this.hr[t]):null}boundingVolumeToExtent(t){const e=t.boundingVolume.Er?ni:t.matrix,n=this.getMap();if(t.boundingVolume.region){const e=t.boundingVolume.region;return new i.Extent(D(e[0]),D(e[1]),D(e[2]),D(e[3]))}if(t.boundingVolume.sphere){const s=t.boundingVolume.sphere,o=Pe([],r.vec3.transformMat4([],s,e)),a=s[3],A=n.locate(o,-a,a),c=n.locate(o,a,-a);return new i.Extent(A,c)}if(t.boundingVolume.box){const s=t.boundingVolume.box,o=r.vec3.transformMat4([],s,e),a=new i.Coordinate(Pe([],o)),A=s.slice(3);r.mat3.multiply(A,r.mat3.fromMat4([],t.matrix),A);const c=r.vec3.length(A.slice(0,3)),l=r.vec3.length(A.slice(3,6)),f=r.vec3.length(A.slice(6,9)),h=Math.max(c,l,f),u=n.locate(a,-h,h),E=n.locate(a,h,-h);return new i.Extent(u,E)}return null}getRootTiles(){return this.hr}getTiles(){const t=this.getRenderer();if(!t.ready)return this._r(),{tiles:$n};const e=this.getMap(),n=e.cameraPosition;let i,s;if(e.getGLZoom)s=e.pointToDistance(n[2],0,e.getGLZoom()),ri.set(n[0],n[1]),i=e.pointToCoord(ri,e.getGLZoom());else{const t=e.getGLRes();s=e.pointAtResToDistance(n[2],0,t),ri.set(n[0],n[1]),i=e.pointAtResToCoord(ri,t)}this.Br=this.Br||[],r.vec3.set(this.Br,N(i.x),N(i.y),s),this.dr=pe(this.dr||[],this.Br[0],this.Br[1],this.Br[2]),this.Cr=2*Math.tan(.5*N(e.getFov()));const o=e.projViewMatrix,a={children:[],level:-1};let A=a;const c=[];for(let e=0;e<this.hr.length;e++){const r=this.hr[e];if(!r.visible)continue;let n=1/0;const i=[r],s=this.Tr(e);for(;i.length>0;){const e=i.pop();for(e.id||this.mr(e);A.level>=e.wt;)A=A.parent;const r=this.gr(e,s,o);if(r<1){let t=A;for(;t&&!t.content;)t=t.parent;0===r&&t&&t.content&&this.pr(c,t);if(!1===this.options.services[e.Dt].alwaysShow)continue;if(!(0===r&&e.wt<=n))continue;e.content&&(n=e.wt)}e.Xt<1/0&&this.Rr(e);const a=this.je(e,A);A.children.push(a);const l=e.children,f=l&&l.length,h=a.content;if(!f&&h&&this.pr(c,a),f){h&&"add"===e.refine&&this.pr(c,a),A=a;const r=l[0].parent;let n=!1;for(let s=0,o=l.length;s<o;s++){if(r){const e=t.getCachedTile(l[s].id);if(e&&e.error&&404!==e.error.status)continue;n=!0}else{n=!0,l[s].parent=e,l[s].ie=e.ie,l[s].baseUrl=e.baseUrl;const t=l[s].content&&(l[s].content.url||l[s].content.uri);t&&(G(t)||t.indexOf("i3s:")>=0?l[s].baseUrl=e.baseUrl:-1===t.indexOf("http://")&&-1===t.indexOf("https://")?l[s].content.url=e.baseUrl+t:l[s].baseUrl=t.substring(0,t.lastIndexOf("/")+1))}i.push(l[s])}!n&&h&&this.pr(c,a)}}}return{root:a,tiles:c}}pr(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 oi(r,e);if(r.box)return 0===ai(r,e)}return!1}(this.Br,this.dr,r)||t.push(e)}je(t,e){return{id:t.id,node:t,children:[],level:t.wt,parent:e,content:t.content&&t.content.url}}mr(t){t.id=i.Util.GUID(),t.matrix=t.transform||r.mat4.identity([]),t.yr=this.Ir(t),t.parent&&(function(t){return t.content&&t.content.uri&&t.content.uri.indexOf("i3s:")>=0}(t)||(t.matrix=r.mat4.multiply(t.matrix,t.parent.matrix,t.matrix)),t.Dt=t.parent.Dt,void 0===t.wt&&(t.wt=t.parent.wt+1),t.maxExtent=t.parent.maxExtent),t.refine=t.refine&&t.refine.toLowerCase()||"replace",t.content&&!t.content.url&&t.content.uri&&(t.content.url=t.content.uri),this.br(t)}br(t){const e=t.boundingVolume;if(!e||e.Er)return;const n=this.options.services[t.Dt],i=n.heightOffset||0,s=this.options.offset,o=S(s)||s[0]||s[1],a=n.coordOffset||ii;if(!Array.isArray(a))throw new Error("service.coordOffset must be an array");if(!t.boundingVolume||!i&&r.mat4.exactEquals(t.matrix,ni)&&!o&&a===ii)return;const{region:A,box:c,sphere:l}=e;if(A){const t=this.Sr([D(A[0]),D(A[1])]);A[0]=N(t.x+a[0]),A[1]=N(t.y+a[1]);const e=this.Sr([D(A[2]),D(A[3])]);A[2]=N(e.x+a[0]),A[3]=N(e.y+a[1]),A[4]+=i+(a[2]||0),A[5]+=i+(a[2]||0)}else if(c||l){const e=c||l,n=r.vec3.transformMat4(jn,e,t.matrix),s=Pe(Qn,n),o=this.Sr([s[0]+a[0],s[1]+a[1]]);s[0]=o.x,s[1]=o.y,s[2]+=i+(a[2]||0),pe(e,N(s[0]),N(s[1]),s[2])}e.Er=!0}Ir(t){return void 0===t.geometricError||!t.boundingVolume}Rr(t){let e=t.parent;for(;e&&e.yr&&!(e.Xt<=t.Xt);)e.Xt=t.Xt,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,n){if(!t)return void console.warn("invalid tileset at : "+n);const i=this.options.services[e.Dt],s=(t.asset&&t.asset.gltfUpAxis||e&&e.ie||i.upAxis||"Y").toUpperCase();t.root.baseUrl=n.substring(0,n.lastIndexOf("/")+1);const o=n.indexOf("realspace/")>-1;0===e.wt&&(t.asset&&t.asset.s3mType&&o||i.isSuperMapiServer)&&(t.root.baseUrl+="data/path/");const a=t.asset.i3s,A=!!t.asset.s3mType;if(t.root.ie=s,e){const n=e.Dt,i=this.hr[n];A&&!i.isS3M&&(i.isS3M=A);const s=e.boundingVolume;b(e,t.root),e.refine=e.refine&&e.refine.toLowerCase()||"replace",s&&(e.boundingVolume=s);const o=t.root.transform;o&&(e.parent?a||(e.matrix=r.mat4.multiply([],e.parent.matrix,o)):e.matrix=o),this.br(e),e.Pr=e.content,delete e.content,t.root.content&&(e.content=t.root.content),e.yr=this.Ir(e);const c=e.content&&(e.content.url||e.content.uri);c&&e.content.uri&&(e.content.url=e.content.uri,delete e.content.uri),a||!c||G(c)||-1!==c.indexOf("http://")||-1!==c.indexOf("https://")||(e.content.url=e.baseUrl+c)}this._r(),this.fire("loadtileset",{tileset:t,index:e&&e.Dt,url:n})}gr(t,e,r){if(t.Xt=1/0,0===t.wt||t.yr)return 1;if(!this.Mr(t,e,r))return-1;if(0===t.geometricError)return 1;let n=this.options.services[t.Dt].maximumScreenSpaceError;null==n&&(n=8);let i=this.Nr(t);return 0===i&&t.parent&&(i=.5*(t.parent.ze||0)),i>=n?1:0}Qt(t,e){e||(e=new i.Point(0,0));const r=this.getMap();return r.getGLZoom?r.coordToPoint(t,r.getGLZoom(),e):r.coordToPointAtRes(t,r.getGLRes(),e)}Mr(t,e,n){const s=t.id;let o=this.lr[s];const{boundingVolume:a}=t,c=a.sphere;let l=a.region;const h=a.box;if(!o){let e,n,A;if(h&&(l=function(t,e){for(let e=0;e<9;e++)di[e]=t[e+3];const n=di;r.mat4.exactEquals(e,ni)||r.mat3.multiply(n,r.mat3.fromMat4(ei,e),n);const i=r.vec3.copy(Ai,t),s=r.vec3.set(ci,n[0],n[1],n[2]),o=r.vec3.set(li,n[3],n[4],n[5]),a=r.vec3.set(fi,n[6],n[7],n[8]);hi[0]=hi[0]||[];const A=r.vec3.copy(hi[0],i);r.vec3.sub(A,A,s),r.vec3.sub(A,A,o),r.vec3.sub(A,A,a),hi[1]=hi[1]||[];const c=r.vec3.copy(hi[1],i);r.vec3.sub(c,c,s),r.vec3.sub(c,c,o),r.vec3.add(c,c,a),hi[2]=hi[2]||[];const l=r.vec3.copy(hi[2],i);r.vec3.sub(l,l,s),r.vec3.add(l,l,o),r.vec3.sub(l,l,a),hi[3]=hi[3]||[];const f=r.vec3.copy(hi[3],i);r.vec3.sub(f,f,s),r.vec3.add(f,f,o),r.vec3.add(f,f,a),hi[4]=hi[4]||[];const h=r.vec3.copy(hi[4],i);r.vec3.add(h,h,s),r.vec3.sub(h,h,o),r.vec3.sub(h,h,a),hi[5]=hi[5]||[];const u=r.vec3.copy(hi[5],i);r.vec3.add(u,u,s),r.vec3.sub(u,u,o),r.vec3.add(u,u,a),hi[6]=hi[6]||[];const E=r.vec3.copy(hi[6],i);r.vec3.add(E,E,s),r.vec3.add(E,E,o),r.vec3.sub(E,E,a),hi[7]=hi[7]||[];const _=r.vec3.copy(hi[7],i);r.vec3.add(_,_,s),r.vec3.add(_,_,o),r.vec3.add(_,_,a);for(let t=0;t<hi.length;t++)ui[t]=ui[t]||[],Pe(ui[t],hi[t]),Ei[t]=ui[t][0],_i[t]=ui[t][1],Bi[t]=ui[t][2];return[N(Math.min(...Ei)),N(Math.min(..._i)),N(Math.max(...Ei)),N(Math.max(..._i)),Math.min(...Bi),Math.max(...Bi)]}(h,t.matrix),a.region=l),l){e=Zn.set(D(l[0]),D(l[1]),D(l[2]),D(l[3]));const t=e.getCenter(),r=this.Dr(t);e=e.convertTo((t=>this.Qt(t,ti)),Wn),A=l[4],n=l[5],o=this.lr[s]=[[e.xmin,e.ymin,A*r[2]],[e.xmax,e.ymax,n*r[2]]],o.center=t}else if(c){const t=Pe(jn,c),e=new i.Coordinate(t),r=this.Qt(e,ti).toArray(),n=this.Dr(e);r.push(t[2]*n[2]),o=this.lr[s]=[r,c[3]*n[2]],o.center=e}}if(e){if(l)Zn.xmin=o[0][0],Zn.ymin=o[0][1],Zn.xmax=o[1][0],Zn.ymax=o[1][1];else if(c){const t=o[2];Zn.xmin=o[0][0]-t,Zn.ymin=o[0][1]-t,Zn.xmax=o[0][0]+t,Zn.ymax=o[0][1]+t}else if(h){const t=o[1],e=o[2];Zn.xmin=o[0][0]-t,Zn.ymin=o[0][1]-e,Zn.xmax=o[0][0]+t,Zn.ymax=o[0][1]+e}if(!e.intersects(Zn))return!1}return l?f(n,o):c?function(t,e,r){p(t);for(var n=e[0],i=-e[1],s=0;s<6;s++)if((!r||"0"!==r.charAt(s))&&y(A[s],n)<i)return!1;return!0}(n,o):!!h&&function(t,e,r){p(t);for(var n=0;n<6;n++)if(!(r&&"0"===r.charAt(n)||g(A[n],e)))return!1;return!0}(n,o)}Dr(t){const e=this.getMap(),n=e.distanceToPointAtRes(100,100,e.getGLRes(),t);let i;return i=e.altitudeToPoint?e.altitudeToPoint(100,e.getGLRes())/100:n.y/100,r.vec3.set(qn,n.x/100*1.01,n.y/100*1.01,i),qn}Sr(t){Array.isArray(t)&&(t=new i.Coordinate(t));let e=this.options.offset;if(S(e)&&(e=e(Array.isArray(t)?new i.Coordinate(t):t)),e[0]||e[1]){const r=this.getMap(),n=r.getGLRes(),i=r.coordToPointAtRes(t,n);return i._sub(e),r.pointAtResToCoord(i,n)}return t}Tr(t){const e=this.options.services[t].maxExtent;if(!e)return null;const r=this.hr[t];return r.maxExtent||(r.maxExtent=new i.Extent(e).convertTo((t=>this.Qt(t)))),r.maxExtent}Nr(t){const e=this.Cr,r=t.geometricError;if(0===r)return t.ze=0,0;const n=this.getMap();let i;t.boundingVolume.region?i=function(t,e,r){t.Or||(t.Or=new Jn(t.boundingVolume.region));return t.Or.distanceToCamera(e,r)}(t,this.dr,this.Br):t.boundingVolume.sphere?i=oi(t.boundingVolume,this.dr):t.boundingVolume.box&&(i=ai(t.boundingVolume,this.dr));const s=Math.max(Math.abs(i),1e-7),o=r*n.height/(s*e);return t.Xt=i,t.ze=o,o}_r(){const t=this.getRenderer();t&&t.setToRedraw()}ce(t){return this.lr[t]}identify(t,e={}){const r=this.getMap(),n=this.getRenderer();if(!r||!n)return[];const s=r.coordToContainerPoint(new i.Coordinate(t));return this.identifyAtPoint(s,e)}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)}getCurrentBatchIDs(){const t=this.getMap(),e=this.getRenderer();return t&&e?e.Te():[]}highlight(t){const e=this.getRenderer();return e?(e.highlight(t),this):(this.Ot||(this.Ot=[]),this.Ot.push(t),this)}sr(){if(this.Ot){for(let t=0;t<this.Ot.length;t++)this.highlight(this.Ot[t]);delete this.Ot}}cancelHighlight(t,e){const r=this.getRenderer();return r?(r.cancelHighlight(t,e),this):this}cancelAllHighlight(){const t=this.getRenderer();return t?(t.cancelAllHighlight(),this):this}showOnly(t){const e=this.getRenderer();return e?(e.showOnly(t),this):(this.Ft||(this.Ft=[]),this.Ft.push(t),this)}Lr(){if(this.Ft){for(let t=0;t<this.Ft.length;t++)this.showOnly(this.Ft[t]);delete this.Ft}}cancelShowOnly(t){const e=this.getRenderer();return e?(e.cancelShowOnly(t),this):this}}function oi(t,e){const n=t.sphere,i=r.vec3.dist(n,e),s=t.sphere[3];return i<s?0:i-s}function ai(t,e){const n=t.box;return Rn(r.vec3.set(jn,n[0],n[1],n[2]),r.mat3.set(ei,n[3],n[4],n[5],n[6],n[7],n[8],n[9],n[10],n[11]),e)}si.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]}),si.registerRenderer("gl",mn),si.registerJSONType("Geo3DTilesLayer");const Ai=[],ci=[],li=[],fi=[],hi=[],ui=[],Ei=[],_i=[],Bi=[],di=[];let Ci=null;function Ti(){return Ci||(Ci={"image/crn":on.crn&&on.crn(),"image/ktx2":on.ktx2&&on.ktx2(),"image/cttf":on.ktx2&&on.ktx2(),"draco":on.draco&&on.draco()}),Ci}class mi{constructor(t,e,r){this.o=t,this.Fr=e||Qt,this.A=r,this.wr=Ti()}static createEmptyB3DM(){return{featureTable:null,batchTable:null,gltf:{}}}load(t,e,r=0,n=0,i){return e?(n||(n=e.byteLength),this.vr(t,e,r,n,i)):Lt.getArrayBuffer(t,{}).then((e=>{const i=e.data;return n||(n=i.byteLength),this.vr(t,i,r,n)}))}vr(t,e,r,n,i){const s=i&&i.maxTextureSize,o=this.Ur(e,r,n,t);if(o.error)return Promise.resolve(o);const a=t.substring(0,t.lastIndexOf("/")),A=new this.Fr(a,o.glb,{transferable:!0,requestImage:this.o,decoders:this.wr,supportedFormats:this.A,maxTextureSize:s});return A.load({skipAttributeTransform:!1}).then((e=>{e.url=`${t}-${r}-${n}`;const i=A.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}}))}Ur(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),A=i.getUint32(16,!0),c=i.getUint32(20,!0),l=i.getUint32(24,!0),f=28+e;c>=570425344?(f-=8,o=a,c=A,l=0,a=0,A=0):l>=570425344&&(f-=4,o=c,c=a,l=A,a=0,A=0);const h=[t];let u,E,_;if(a>0?(u=Ke(t,f,a),f+=a,o=u.BATCH_LENGTH):u={"BATCH_LENGTH":o},A>0&&(f+=A),c>0&&(E=ke(t,f,c),f+=c,l>0)){const e=Xe(0,f,l);_=t.slice(e.offset,e.offset+e.byteLength),f+=l,h.push(_)}const B=u.BATCH_LENGTH,d={};if(u&&u.BATCH_ID){d.BATCH_ID=Je(u.BATCH_ID,t,undefined.offset,B);const e=d.BATCH_ID.array&&d.BATCH_ID.array.buffer;e&&h.indexOf(e)<0&&h.push(e)}return{count:o,transferables:h,featureTable:u,batchTable:E,batchTableBin:_,b3dm:d,glb:{buffer:t,byteOffset:f,byteLength:i.byteLength+i.byteOffset-f}}}Gr(){return null}}class gi{constructor(t,e,r,n){this.o=t,this.Fr=e||Qt,this.A=r,this.wr=Ti(),this.Hr=n}load(t,e,r=0,n=0,i){return e?(n||(n=e.byteLength),this.vr(t,e,r,n,i)):Lt.getArrayBuffer(t,{}).then((e=>{const i=e.data;return n||(n=i.byteLength),this.vr(t,i,r,n)}))}vr(t,e,r,n,i){return this.Vr(t,e,r,n,i).then((({gltf:i,transferables:s})=>{const o=this.Kr(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})}))}Vr(t,e,r,n,i){const s=i&&i.maxTextureSize,o={transferable:!0,requestImage:this.o,decoders:this.wr,supportedFormats:this.A,maxTextureSize:s},a=new DataView(e,r,n),A=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=x(new Uint8Array(e,A+r,a.byteLength-A));-1==n.indexOf("://")&&(n=t.substring(0,t.lastIndexOf("/"))+"/"+n);return n.indexOf(".glb")>0?Lt.getArrayBuffer(n,{}).then((t=>this.kr(n,{buffer:t.data,byteOffset:0},o))):Lt.getJSON(n,{}).then((t=>this.kr(n,t,o)))}{const n={buffer:e,byteOffset:A+r,byteLength:a.byteLength-A};return this.kr(t,n,o)}}kr(t,e,r){const n=t.substring(0,t.lastIndexOf("/")),i=new this.Fr(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}}))}Kr(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:A,batchTable:c,batchTableBin:l}=tr(i,32+e,o),f={},h=a.INSTANCES_LENGTH;if(a.POSITION){const{byteOffset:e}=a.POSITION;f.POSITION={byteStride:0,byteOffset:0,itemSize:3,count:h,componentType:5126,array:new Float32Array(t,e+A.offset,3*h).slice()},o.push(f.POSITION.array.buffer)}else if(a.POSITION_QUANTIZED){const e=a.QUANTIZED_VOLUME_OFFSET,r=a.QUANTIZED_VOLUME_SCALE,{byteOffset:n}=a.POSITION_QUANTIZED;f.POSITION={byteStride:12,byteOffset:0,itemSize:3,count:h,componentType:5126,array:this.Xr(new Uint16Array(t,n+A.offset,3*h),e,r)},o.push(f.POSITION.array.buffer)}if(a.BATCH_ID){f.BATCH_ID=Je(a.BATCH_ID,t,A.offset,h);const e=f.BATCH_ID.array&&f.BATCH_ID.array.buffer;e&&o.indexOf(e)<0&&o.push(e)}if(a.NORMAL_UP){let{byteOffset:e}=a.NORMAL_UP;f.NORMAL_UP={byteStride:0,byteOffset:0,itemSize:3,count:h,componentType:5126,array:new Float32Array(t,e+A.offset,3*h).slice()},o.push(f.NORMAL_UP.array.buffer),e=a.NORMAL_RIGHT.byteOffset,f.NORMAL_RIGHT={byteStride:0,byteOffset:0,itemSize:3,count:h,componentType:5126,array:new Float32Array(t,e+A.offset,3*h).slice()},o.push(f.NORMAL_RIGHT.array.buffer)}else if(a.NORMAL_UP_OCT32P){let{byteOffset:e}=a.NORMAL_UP_OCT32P;f.NORMAL_UP={byteStride:0,byteOffset:0,itemSize:3,count:h,componentType:5126,array:this.zr(new Uint16Array(t,e+A.offset,2*h))},o.push(f.NORMAL_UP.array.buffer),e=a.NORMAL_RIGHT_OCT32P.byteOffset,f.NORMAL_RIGHT={byteStride:0,byteOffset:0,itemSize:3,count:h,componentType:5126,array:this.zr(new Uint16Array(t,e+A.offset,2*h))},o.push(f.NORMAL_RIGHT.array.buffer)}if(a.SCALE){const{byteOffset:e}=a.SCALE;f.SCALE={byteStride:0,byteOffset:0,itemSize:1,count:h,componentType:5126,array:new Float32Array(t,e+A.offset,h).slice()},o.push(f.SCALE.array.buffer)}else if(a.SCALE_NON_UNIFORM){const{byteOffset:e}=a.SCALE_NON_UNIFORM;f.SCALE_NON_UNIFORM={byteStride:0,byteOffset:0,itemSize:3,count:h,componentType:5126,array:new Float32Array(t,e+A.offset,3*h).slice()},o.push(f.SCALE_NON_UNIFORM.array.buffer)}return{count:h,batchTable:c,batchTableBin:l,featureTable:a,i3dm:f,transferables:o}}zr(t){const e=t.length/2,r=new Float32Array(3*e),n=[];for(let i=0;i<e;i++)pi(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}Xr(t,e,r){return $e(new Float32Array(t.length),t,e,r)}Gr(){return null}}function pi(t,e,r,n){if(t[0]=Ri(e,n),t[1]=Ri(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]))*yi(e),t[1]=(1-Math.abs(e))*yi(t[1])}return st(t,t)}function Ri(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 yi(t){return t<0?-1:1}class Ii{constructor(){}load(t,e,r=0,n=0){return e?(n||(n=e.byteLength),this.vr(t,e,r,n)):Lt.getArrayBuffer(t,{}).then((e=>{const i=e.data;return n||(n=i.byteLength),this.vr(t,i,r,n)}))}vr(t,e,r,n){return this.Jr(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}))}Jr(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:A,batchTable:c,batchTableBin:l}=tr(i,e+28,o),f=a.QUANTIZED_VOLUME_OFFSET,h=a.QUANTIZED_VOLUME_SCALE,u=a.POINTS_LENGTH;let E,_={};if(a.extensions&&a.extensions["3DTILES_draco_point_compression"]){_=a.extensions["3DTILES_draco_point_compression"],E=new DataView(t,_.byteOffset+A.offset,_.byteLength);const e={attributes:_.properties,useUniqueIDs:!1};return this.Yr||(this.Yr=Ti().draco),this.Yr(E,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.Zr(t,e.attributes,A.offset,u,o,f,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:qe(t.constructor),array:t},o.push(t.buffer)}else if(a.BATCH_ID||Object.keys(c).length){a.BATCH_ID?n.BATCH_ID=Je(a.BATCH_ID,t,A.offset,u):n.BATCH_ID=bi(u);const e=n.BATCH_ID.array&&n.BATCH_ID.array.buffer;e&&o.indexOf(e)<0&&o.push(e)}return{count:u,batchTable:c,batchTableBin:l,featureTable:a,pnts:n,transferables:o}}))}const B=this.Zr(t,a,A.offset,u,o,f,h);if(a.BATCH_ID||Object.keys(c).length){a.BATCH_ID?B.BATCH_ID=Je(a.BATCH_ID,t,A.offset,u):B.BATCH_ID=bi(u);const e=B.BATCH_ID.array&&B.BATCH_ID.array.buffer;e&&o.indexOf(e)<0&&o.push(e)}return Promise.resolve({count:u,batchTable:c,batchTableBin:l,featureTable:a,pnts:B,transferables:o})}Zr(t,e,r,n,i,s,o){const a={};if(e.POSITION){let{byteOffset:s,array:o}=e.POSITION;s=s||0;const A=o?0:r;if(!o){const e=t.slice(s+A,s+A+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:A,array:c}=e.POSITION_QUANTIZED;A=A||0;const l=c?0:r;a.POSITION={byteStride:0,byteOffset:0,itemSize:3,count:n,componentType:5126,array:this.Xr(c||new Uint16Array(t,A+l,3*n),s,o)},i.push(a.POSITION.array.buffer)}if(e.RGBA){let{byteOffset:s,array:o}=e.RGBA;s=s||0;const A=o?0:r;if(!o){const e=t.slice(s+A,s+A+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 A=o?0:r;if(!o){const e=t.slice(s+A,s+A+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 A=o?0:r;if(!o){const e=t.slice(s+A,s+A+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 A=o?0:r;if(!o){const e=t.slice(s+A,s+A+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 A=o?0:r;if(!o){const e=t.slice(s+A,s+A+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}Xr(t,e,r){return $e(new Float32Array(t.length),t,e,r)}Gr(){return null}}function bi(t){const e=U(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:qe(e),array:r}}class Si{constructor(t,e,r,n){this.A=r,this.o=t,this.Fr=e||Qt,this.Hr=n}load(t,e,r=0,n=0,i){return e?this.vr(t,e,r,n,i):Lt.getArrayBuffer(t,{}).then((e=>{const i=e.data;return this.vr(t,i,r,n)}))}vr(t,e,r,n,i){n||(n=e.byteLength);const s=this.Wr(e,t,r,n),o=[];for(let r=0;r<s.length;r++){let n;if("b3dm"===s[r].magic)n=new mi(this.o,this.Fr,this.A);else if("i3dm"===s[r].magic)n=new gi(this.o,this.Fr,this.A,this.Hr);else if("pnts"===s[r].magic)n=new Ii;else{if("cmpt"!==s[r].magic){console.warn("Unsupported magic in CMPT tile:",s[r].magic);continue}n=new Si(this.o,this.Fr,this.A,this.Hr)}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})))}Wr(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 A=16;for(let e=0;e<a;e++){const e=He(i,A),n=i.getUint32(A+8,!0);o.push({magic:e,buffer:t,offset:A+r,byteLength:n}),A+=n}return o}}if(s.transcoders){const t=i.Map.VERSION;if(t.indexOf("1.0.0-beta")>=0||t.indexOf("1.0.0-alpha")>=0){const t=s.transcoders.inject(a);i.registerWorkerAdapter("@maptalks/3dtiles",t)}else i.registerWorkerAdapter("@maptalks/3dtiles",(function(){return s.transcoders.inject(a)}))}else i.registerWorkerAdapter("@maptalks/3dtiles",a);t.B3DMLoader=mi,t.CMPTLoader=Si,t.Geo3DTilesLayer=si,t.Geo3DTilesUtil=K,t.Geo3DTransform=we,Object.defineProperty(t,"t",{value:!0}),"undefined"!=typeof console&&console.log("@maptalks/3dtiles v0.23.1")}));
|