@gisatcz/deckgl-geolib 2.6.0-dev.5 → 2.6.0-dev.6
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/cjs/index.js +172 -56
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/index.min.js +2 -2
- package/dist/cjs/index.min.js.map +1 -1
- package/dist/esm/index.js +172 -56
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.min.js +2 -2
- package/dist/esm/index.min.js.map +1 -1
- package/dist/esm/types/core/types.d.ts +2 -0
- package/dist/esm/types/layers/CogTerrainLayer.d.ts +15 -0
- package/package.json +1 -1
package/dist/cjs/index.min.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var A=require("@deck.gl/core"),g=require("@deck.gl/geo-layers"),I=require("@deck.gl/layers"),C=require("@deck.gl/extensions"),e=require("chroma-js"),i=require("@loaders.gl/schema"),B=require("@loaders.gl/loader-utils"),t=require("@deck.gl/mesh-layers");let Q=!1;function s(){"undefined"==typeof window||Q||(window.addEventListener("unhandledrejection",A=>{A.reason&&"AbortError"===A.reason.name&&A.preventDefault()}),Q=!0)}function o(A){return(g,...I)=>E(A,g,I)}function a(A,g){return o(r(A,g).get)}const{apply:E,getOwnPropertyDescriptor:r,getPrototypeOf:n,ownKeys:h}=Reflect,{iterator:l,toStringTag:c}=Symbol,w=Object,{create:D,defineProperty:d}=w,y=Array.prototype[l],G=o(y),u=ArrayBuffer;a(u.prototype,"byteLength");const S="undefined"!=typeof SharedArrayBuffer?SharedArrayBuffer:null;S&&a(S.prototype,"byteLength");const f=n(Uint8Array);f.from;const N=f.prototype;N[l],o(N.keys),o(N.values),o(N.entries),o(N.set),o(N.reverse),o(N.fill),o(N.copyWithin),o(N.sort),o(N.slice),o(N.subarray),a(N,"buffer"),a(N,"byteOffset"),a(N,"length"),a(N,c);const k=Uint8Array,R=Uint16Array,F=Uint32Array,p=Float32Array,L=n([][l]()),Y=o(L.next),U=o(function*(){}().next),m=n(L),M=o(DataView.prototype.getUint16),b=WeakMap,K=b.prototype,H=o(K.get),J=o(K.set),x=new b,T=D(null,{next:{value:function(){const A=H(x,this);return Y(A)}},[l]:{value:function(){return this}}});const Z=new b,q=D(m,{next:{value:function(){const A=H(Z,this);return U(A)},writable:!0,configurable:!0}});for(const A of h(L))"next"!==A&&d(q,A,r(L,A));const O=new u(4),W=new p(O),V=new F(O),v=new R(512),z=new k(512);for(let A=0;A<256;++A){const g=A-127;g<-24?(v[A]=0,v[256|A]=32768,z[A]=24,z[256|A]=24):g<-14?(v[A]=1024>>-g-14,v[256|A]=1024>>-g-14|32768,z[A]=-g-1,z[256|A]=-g-1):g<=15?(v[A]=g+15<<10,v[256|A]=g+15<<10|32768,z[A]=13,z[256|A]=13):g<128?(v[A]=31744,v[256|A]=64512,z[A]=24,z[256|A]=24):(v[A]=31744,v[256|A]=64512,z[A]=13,z[256|A]=13)}const X=new F(2048);for(let A=1;A<1024;++A){let g=A<<13,I=0;for(;!(8388608&g);)g<<=1,I-=8388608;g&=-8388609,I+=947912704,X[A]=g|I}for(let A=1024;A<2048;++A)X[A]=939524096+(A-1024<<13);const P=new F(64);for(let A=1;A<31;++A)P[A]=A<<23;P[31]=1199570944,P[32]=2147483648;for(let A=33;A<63;++A)P[A]=2147483648+(A-32<<23);P[63]=3347054592;const j=new R(64);for(let A=1;A<64;++A)32!==A&&(j[A]=1024);function _(A,g,...I){return function(A){const g=A>>10;return V[0]=X[j[g]+(1023&A)]+P[g],W[0]}(M(A,g,...function(A){if(A[l]===y&&L.next===Y)return A;const g=D(T);return J(x,g,G(A)),g}(I)))}function $(A,g,I){const C="object"==typeof A?A.outer:A,e=C.slice(0,C.indexOf(">")+1),i=['"',"'"];for(let A=0;A<i.length;A++){const I=i[A],C=new RegExp(g+"\\="+I+"([^"+I+"]*)"+I).exec(e);if(C)return C[1]}}function AA(A,g,I){const C=new RegExp(g).exec(A.slice(I));return C?I+C.index+C[0].length-1:-1}function gA(A,g){const I=new RegExp(g,"g"),C=A.match(I);return C?C.length:0}function IA(A,g,I){const C=I&&I.debug||!1,e=!(I&&!1===typeof I.nested),i=I&&I.startIndex||0;C&&console.log("[xml-utils] starting findTagByName with",g," and ",I);const B=function(A,g,I){const C=new RegExp(g).exec(A.slice(I));return C?I+C.index:-1}(A,`<${g}[ \n>/]`,i);if(C&&console.log("[xml-utils] start:",B),-1===B)return;const t=A.slice(B+g.length);let Q=AA(t,"^[^<]*[ /]>",0);const s=-1!==Q&&"/"===t[Q-1];if(C&&console.log("[xml-utils] selfClosing:",s),!1===s)if(e){let A=0,I=1,C=0;for(;-1!==(Q=AA(t,"[ /]"+g+">",A));){const e=t.substring(A,Q+1);if(I+=gA(e,"<"+g+"[ \n\t>]"),C+=gA(e,"</"+g+">"),C>=I)break;A=Q}}else Q=AA(t,"[ /]"+g+">",0);const o=B+g.length+Q+1;if(C&&console.log("[xml-utils] end:",o),-1===o)return;const a=A.slice(B,o);let E;return E=s?null:a.slice(a.indexOf(">")+1,a.lastIndexOf("<")),{inner:E,outer:a,start:B,end:o}}const CA={BYTE:1,ASCII:2,SHORT:3,LONG:4,RATIONAL:5,SBYTE:6,UNDEFINED:7,SSHORT:8,SLONG:9,SRATIONAL:10,FLOAT:11,DOUBLE:12,IFD:13,LONG8:16,SLONG8:17,IFD8:18},eA={[CA.BYTE]:1,[CA.ASCII]:1,[CA.SBYTE]:1,[CA.UNDEFINED]:1,[CA.SHORT]:2,[CA.SSHORT]:2,[CA.LONG]:4,[CA.SLONG]:4,[CA.FLOAT]:4,[CA.IFD]:4,[CA.RATIONAL]:8,[CA.SRATIONAL]:8,[CA.DOUBLE]:8,[CA.LONG8]:8,[CA.SLONG8]:8,[CA.IFD8]:8};function iA(A){const g=eA[A];if(void 0===g)throw new RangeError(`Invalid field type: ${A}`);return g}const BA={NewSubfileType:{tag:254,type:CA.LONG,eager:!0},SubfileType:{tag:255,type:CA.SHORT,eager:!0},ImageWidth:{tag:256,type:CA.SHORT,eager:!0},ImageLength:{tag:257,type:CA.SHORT,eager:!0},BitsPerSample:{tag:258,type:CA.SHORT,isArray:!0,eager:!0},Compression:{tag:259,type:CA.SHORT,eager:!0},PhotometricInterpretation:{tag:262,type:CA.SHORT,eager:!0},Threshholding:{tag:263,type:CA.SHORT},CellWidth:{tag:264,type:CA.SHORT},CellLength:{tag:265,type:CA.SHORT},FillOrder:{tag:266,type:CA.SHORT},DocumentName:{tag:269,type:CA.ASCII},ImageDescription:{tag:270,type:CA.ASCII},Make:{tag:271,type:CA.ASCII},Model:{tag:272,type:CA.ASCII},StripOffsets:{tag:273,type:CA.SHORT,isArray:!0},Orientation:{tag:274,type:CA.SHORT},SamplesPerPixel:{tag:277,type:CA.SHORT,eager:!0},RowsPerStrip:{tag:278,type:CA.SHORT,eager:!0},StripByteCounts:{tag:279,type:CA.LONG,isArray:!0},MinSampleValue:{tag:280,type:CA.SHORT,isArray:!0},MaxSampleValue:{tag:281,type:CA.SHORT,isArray:!0},XResolution:{tag:282,type:CA.RATIONAL},YResolution:{tag:283,type:CA.RATIONAL},PlanarConfiguration:{tag:284,type:CA.SHORT,eager:!0},PageName:{tag:285,type:CA.ASCII},XPosition:{tag:286,type:CA.RATIONAL},YPosition:{tag:287,type:CA.RATIONAL},FreeOffsets:{tag:288,type:CA.LONG},FreeByteCounts:{tag:289,type:CA.LONG},GrayResponseUnit:{tag:290,type:CA.SHORT},GrayResponseCurve:{tag:291,type:CA.SHORT,isArray:!0},T4Options:{tag:292,type:CA.LONG},T6Options:{tag:293,type:CA.LONG},ResolutionUnit:{tag:296,type:CA.SHORT},PageNumber:{tag:297,type:CA.SHORT,isArray:!0},TransferFunction:{tag:301,type:CA.SHORT,isArray:!0},Software:{tag:305,type:CA.ASCII},DateTime:{tag:306,type:CA.ASCII},Artist:{tag:315,type:CA.ASCII},HostComputer:{tag:316,type:CA.ASCII},Predictor:{tag:317,type:CA.SHORT},WhitePoint:{tag:318,type:CA.RATIONAL,isArray:!0},PrimaryChromaticities:{tag:319,type:CA.RATIONAL,isArray:!0},ColorMap:{tag:320,type:CA.SHORT,isArray:!0},HalftoneHints:{tag:321,type:CA.SHORT,isArray:!0},TileWidth:{tag:322,type:CA.SHORT,eager:!0},TileLength:{tag:323,type:CA.SHORT,eager:!0},TileOffsets:{tag:324,type:CA.LONG,isArray:!0},TileByteCounts:{tag:325,type:CA.SHORT,isArray:!0},InkSet:{tag:332,type:CA.SHORT},InkNames:{tag:333,type:CA.ASCII},NumberOfInks:{tag:334,type:CA.SHORT},DotRange:{tag:336,type:CA.BYTE,isArray:!0},TargetPrinter:{tag:337,type:CA.ASCII},ExtraSamples:{tag:338,type:CA.BYTE,isArray:!0,eager:!0},SampleFormat:{tag:339,type:CA.SHORT,isArray:!0,eager:!0},SMinSampleValue:{tag:340,isArray:!0},SMaxSampleValue:{tag:341,isArray:!0},TransferRange:{tag:342,type:CA.SHORT,isArray:!0},JPEGProc:{tag:512,type:CA.SHORT},JPEGInterchangeFormat:{tag:513,type:CA.LONG},JPEGInterchangeFormatLngth:{tag:514,type:CA.LONG},JPEGRestartInterval:{tag:515,type:CA.SHORT},JPEGLosslessPredictors:{tag:517,type:CA.SHORT,isArray:!0},JPEGPointTransforms:{tag:518,type:CA.SHORT,isArray:!0},JPEGQTables:{tag:519,type:CA.LONG,isArray:!0},JPEGDCTables:{tag:520,type:CA.LONG,isArray:!0},JPEGACTables:{tag:521,type:CA.LONG,isArray:!0},YCbCrCoefficients:{tag:529,type:CA.RATIONAL,isArray:!0},YCbCrSubSampling:{tag:530,type:CA.SHORT,isArray:!0},YCbCrPositioning:{tag:531,type:CA.SHORT},ReferenceBlackWhite:{tag:532,type:CA.LONG,isArray:!0},Copyright:{tag:33432,type:CA.ASCII},BadFaxLines:{tag:326},CleanFaxData:{tag:327},ClipPath:{tag:343},ConsecutiveBadFaxLines:{tag:328},Decode:{tag:433},DefaultImageColor:{tag:434},Indexed:{tag:346},JPEGTables:{tag:347,isArray:!0,eager:!0},StripRowCounts:{tag:559,isArray:!0},SubIFDs:{tag:330,isArray:!0},XClipPathUnits:{tag:344},YClipPathUnits:{tag:345},ApertureValue:{tag:37378},ColorSpace:{tag:40961},DateTimeDigitized:{tag:36868},DateTimeOriginal:{tag:36867},ExifIFD:{tag:34665,name:"Exif IFD",type:CA.LONG},ExifVersion:{tag:36864},ExposureTime:{tag:33434},FileSource:{tag:41728},Flash:{tag:37385},FlashpixVersion:{tag:40960},FNumber:{tag:33437},ImageUniqueID:{tag:42016},LightSource:{tag:37384},MakerNote:{tag:37500},ShutterSpeedValue:{tag:37377},UserComment:{tag:37510},IPTC:{tag:33723},CZ_LSMINFO:{tag:34412},ICCProfile:{tag:34675,name:"ICC Profile"},XMP:{tag:700},GDAL_METADATA:{tag:42112},GDAL_NODATA:{tag:42113,type:CA.ASCII,eager:!0},Photoshop:{tag:34377},ModelPixelScale:{tag:33550,type:CA.DOUBLE,isArray:!0,eager:!0},ModelTiepoint:{tag:33922,type:CA.DOUBLE,isArray:!0,eager:!0},ModelTransformation:{tag:34264,type:CA.DOUBLE,isArray:!0,eager:!0},GeoKeyDirectory:{tag:34735,type:CA.SHORT,isArray:!0,eager:!0},GeoDoubleParams:{tag:34736,type:CA.DOUBLE,isArray:!0,eager:!0},GeoAsciiParams:{tag:34737,type:CA.ASCII,eager:!0},LercParameters:{tag:50674,eager:!0}},tA={},QA={};function sA(A,g,I,C=!1,e=!1){tA[g]=A,QA[A]={tag:A,name:g,type:"string"==typeof I?CA[I]:I,isArray:C,eager:e}}for(const[A,g]of Object.entries(BA)){const I=g;sA(I.tag,I.name||A,I.type,I.isArray,I.eager)}function oA(A){return"number"==typeof A?A:tA[A]}const aA=0,EA=1,rA=2,nA=3,hA=5,lA=6,cA=8,wA=0,DA=1,dA=0,yA=1,GA=2,uA={1024:"GTModelTypeGeoKey",1025:"GTRasterTypeGeoKey",1026:"GTCitationGeoKey",2048:"GeographicTypeGeoKey",2049:"GeogCitationGeoKey",2050:"GeogGeodeticDatumGeoKey",2051:"GeogPrimeMeridianGeoKey",2052:"GeogLinearUnitsGeoKey",2053:"GeogLinearUnitSizeGeoKey",2054:"GeogAngularUnitsGeoKey",2055:"GeogAngularUnitSizeGeoKey",2056:"GeogEllipsoidGeoKey",2057:"GeogSemiMajorAxisGeoKey",2058:"GeogSemiMinorAxisGeoKey",2059:"GeogInvFlatteningGeoKey",2060:"GeogAzimuthUnitsGeoKey",2061:"GeogPrimeMeridianLongGeoKey",2062:"GeogTOWGS84GeoKey",3072:"ProjectedCSTypeGeoKey",3073:"PCSCitationGeoKey",3074:"ProjectionGeoKey",3075:"ProjCoordTransGeoKey",3076:"ProjLinearUnitsGeoKey",3077:"ProjLinearUnitSizeGeoKey",3078:"ProjStdParallel1GeoKey",3079:"ProjStdParallel2GeoKey",3080:"ProjNatOriginLongGeoKey",3081:"ProjNatOriginLatGeoKey",3082:"ProjFalseEastingGeoKey",3083:"ProjFalseNorthingGeoKey",3084:"ProjFalseOriginLongGeoKey",3085:"ProjFalseOriginLatGeoKey",3086:"ProjFalseOriginEastingGeoKey",3087:"ProjFalseOriginNorthingGeoKey",3088:"ProjCenterLongGeoKey",3089:"ProjCenterLatGeoKey",3090:"ProjCenterEastingGeoKey",3091:"ProjCenterNorthingGeoKey",3092:"ProjScaleAtNatOriginGeoKey",3093:"ProjScaleAtCenterGeoKey",3094:"ProjAzimuthAngleGeoKey",3095:"ProjStraightVertPoleLongGeoKey",3096:"ProjRectifiedGridAngleGeoKey",4096:"VerticalCSTypeGeoKey",4097:"VerticalCitationGeoKey",4098:"VerticalDatumGeoKey",4099:"VerticalUnitsGeoKey"};for(const[A,g]of Object.entries(uA));const SA=new Map;async function fA(A){const g=!A.hasTag("StripOffsets");return{tileWidth:g?await A.loadValue("TileWidth"):await A.loadValue("ImageWidth"),tileHeight:g?await A.loadValue("TileLength"):await A.loadValue("RowsPerStrip")||await A.loadValue("ImageLength"),planarConfiguration:await A.loadValue("PlanarConfiguration"),bitsPerSample:await A.loadValue("BitsPerSample"),predictor:await A.loadValue("Predictor")||1}}function NA(A,g,I=fA,C=!0){Array.isArray(A)||(A=[A]),A.forEach(A=>{SA.set(A,{importFn:g,decoderParameterFn:I,preferWorker:C})})}const kA=[{cases:[void 0,1],importFn:()=>Promise.resolve().then(function(){return iI}).then(A=>A.default),preferWorker:!1},{cases:5,importFn:()=>Promise.resolve().then(function(){return QI}).then(A=>A.default)},{cases:6,importFn:()=>{throw new Error("old style JPEG compression is not supported.")}},{cases:7,importFn:()=>Promise.resolve().then(function(){return GI}).then(A=>A.default),decoderParameterFn:async A=>({...await fA(A),JPEGTables:await A.loadValue("JPEGTables")})},{cases:[8,32946],importFn:()=>Promise.resolve().then(function(){return JC}).then(A=>A.default)},{cases:32773,importFn:()=>Promise.resolve().then(function(){return xC}).then(A=>A.default)},{cases:34887,importFn:()=>Promise.resolve().then(function(){return $C}).then(async A=>(await A.zstd.init(),A)).then(A=>A.default),decoderParameterFn:async A=>({...await fA(A),LercParameters:await A.loadValue("LercParameters")})},{cases:5e4,importFn:()=>Promise.resolve().then(function(){return te}).then(async A=>(await A.zstd.init(),A)).then(A=>A.default)},{cases:50001,importFn:()=>Promise.resolve().then(function(){return Qe}).then(A=>A.default),decoderParameterFn:async A=>({...await fA(A),samplesPerPixel:Number(await A.loadValue("SamplesPerPixel"))||4}),preferWorker:!1}];for(const A of kA){const{cases:g,importFn:I,decoderParameterFn:C,preferWorker:e}=A;NA(g,I,C,e)}function RA(A,g,I,C=1){return new(Object.getPrototypeOf(A).constructor)(g*I*C)}function FA(A,g,I){return(1-I)*A+I*g}function pA(A,g,I,C,e,i="nearest"){switch(i.toLowerCase()){case"nearest":return function(A,g,I,C,e){const i=g/C,B=I/e;return A.map(A=>{const t=RA(A,C,e);for(let Q=0;Q<e;++Q){const e=Math.min(Math.round(B*Q),I-1);for(let I=0;I<C;++I){const B=Math.min(Math.round(i*I),g-1),s=A[e*g+B];t[Q*C+I]=s}}return t})}(A,g,I,C,e);case"bilinear":case"linear":return function(A,g,I,C,e){const i=g/C,B=I/e;return A.map(A=>{const t=RA(A,C,e);for(let Q=0;Q<e;++Q){const e=B*Q,s=Math.floor(e),o=Math.min(Math.ceil(e),I-1);for(let I=0;I<C;++I){const B=i*I,a=B%1,E=Math.floor(B),r=Math.min(Math.ceil(B),g-1),n=A[s*g+E],h=A[s*g+r],l=A[o*g+E],c=A[o*g+r],w=FA(FA(n,h,a),FA(l,c,a),e%1);t[Q*C+I]=w}}return t})}(A,g,I,C,e);default:throw new Error(`Unsupported resampling method: '${i}'`)}}function LA(A,g,I,C,e,i,B="nearest"){switch(B.toLowerCase()){case"nearest":return function(A,g,I,C,e,i){const B=g/C,t=I/e,Q=RA(A,C,e,i);for(let s=0;s<e;++s){const e=Math.min(Math.round(t*s),I-1);for(let I=0;I<C;++I){const t=Math.min(Math.round(B*I),g-1);for(let B=0;B<i;++B){const o=A[e*g*i+t*i+B];Q[s*C*i+I*i+B]=o}}}return Q}(A,g,I,C,e,i);case"bilinear":case"linear":return function(A,g,I,C,e,i){const B=g/C,t=I/e,Q=RA(A,C,e,i);for(let s=0;s<e;++s){const e=t*s,o=Math.floor(e),a=Math.min(Math.ceil(e),I-1);for(let I=0;I<C;++I){const t=B*I,E=t%1,r=Math.floor(t),n=Math.min(Math.ceil(t),g-1);for(let B=0;B<i;++B){const t=A[o*g*i+r*i+B],h=A[o*g*i+n*i+B],l=A[a*g*i+r*i+B],c=A[a*g*i+n*i+B],w=FA(FA(t,h,E),FA(l,c,E),e%1);Q[s*C*i+I*i+B]=w}}}return Q}(A,g,I,C,e,i);default:throw new Error(`Unsupported resampling method: '${B}'`)}}function YA(A,g,I){let C=0;for(let e=g;e<I;++e)C+=A[e];return C}function UA(A,g,I){let C;switch(A){case 1:g<=8?C=Uint8Array:g<=16?C=Uint16Array:g<=32&&(C=Uint32Array);break;case 2:8===g?C=Int8Array:16===g?C=Int16Array:32===g&&(C=Int32Array);break;case 3:switch(g){case 16:case 32:C=Float32Array;break;case 64:C=Float64Array}}if(C){if("number"==typeof I)return new C(I);if(I instanceof ArrayBuffer)return new C(I)}throw Error("Unsupported data format/bitsPerSample")}class mA{constructor(A,g,I,C){this.fileDirectory=A,this.littleEndian=g,this.tiles=I?[]:null,this.isTiled=!A.hasTag("StripOffsets");const e=A.getValue("PlanarConfiguration")??1;if(1!==e&&2!==e)throw new Error("Invalid planar configuration.");this.planarConfiguration=e,this.source=C}getFileDirectory(){return this.fileDirectory}getGeoKeys(){return this.fileDirectory.parseGeoKeyDirectory()}getWidth(){return this.fileDirectory.getValue("ImageWidth")||0}getHeight(){return this.fileDirectory.getValue("ImageLength")||0}getSamplesPerPixel(){return this.fileDirectory.getValue("SamplesPerPixel")??1}getTileWidth(){return this.isTiled?this.fileDirectory.getValue("TileWidth")||0:this.getWidth()}getTileHeight(){if(this.isTiled)return this.fileDirectory.getValue("TileLength")||0;const A=this.fileDirectory.hasTag("RowsPerStrip")&&this.fileDirectory.getValue("RowsPerStrip");return A?Math.min(A,this.getHeight()):this.getHeight()}getBlockWidth(){return this.getTileWidth()}getBlockHeight(A){return this.isTiled||(A+1)*this.getTileHeight()<=this.getHeight()?this.getTileHeight():this.getHeight()-A*this.getTileHeight()}getBytesPerPixel(){let A=0;const g=this.fileDirectory.getValue("BitsPerSample")||[];for(let I=0;I<g.length;++I)A+=this.getSampleByteSize(I);return A}getSampleByteSize(A){const g=this.fileDirectory.getValue("BitsPerSample")||[];if(A>=g.length)throw new RangeError(`Sample index ${A} is out of range.`);return Math.ceil(g[A]/8)}getReaderForSample(A){const g=this.fileDirectory.getValue("SampleFormat"),I=g?g[A]:1,C=(this.fileDirectory.getValue("BitsPerSample")||[])[A];switch(I){case 1:if(C<=8)return DataView.prototype.getUint8;if(C<=16)return DataView.prototype.getUint16;if(C<=32)return DataView.prototype.getUint32;break;case 2:if(C<=8)return DataView.prototype.getInt8;if(C<=16)return DataView.prototype.getInt16;if(C<=32)return DataView.prototype.getInt32;break;case 3:switch(C){case 16:return function(A,g){return _(this,A,g)};case 32:return DataView.prototype.getFloat32;case 64:return DataView.prototype.getFloat64}}throw Error("Unsupported data format/bitsPerSample")}getSampleFormat(A=0){const g=this.fileDirectory.getValue("SampleFormat");return g?g[A]:1}getBitsPerSample(A=0){const g=this.fileDirectory.getValue("BitsPerSample");return g?g[A]:0}getArrayForSample(A,g){return UA(this.getSampleFormat(A),this.getBitsPerSample(A),g)}async getTileOrStrip(A,g,I,C,e){const i=Math.ceil(this.getWidth()/this.getTileWidth()),B=Math.ceil(this.getHeight()/this.getTileHeight());let t;const{tiles:Q}=this;if(1===this.planarConfiguration?t=g*i+A:2===this.planarConfiguration&&(t=I*i*B+g*i+A),void 0===t)throw new Error("Could not determine tile or strip index.");let s,o;if(this.isTiled?(s=Number(await this.fileDirectory.loadValueIndexed("TileOffsets",t)),o=Number(await this.fileDirectory.loadValueIndexed("TileByteCounts",t))):(s=Number(await this.fileDirectory.loadValueIndexed("StripOffsets",t)),o=Number(await this.fileDirectory.loadValueIndexed("StripByteCounts",t))),0===o){const C=this.getBlockHeight(g)*this.getTileWidth(),e=2===this.planarConfiguration?this.getSampleByteSize(I):this.getBytesPerPixel(),i=new ArrayBuffer(C*e);return this.getArrayForSample(I,i).fill(this.getGDALNoData()||0),{x:A,y:g,sample:I,data:i}}const a=(await this.source.fetch([{offset:s,length:o}],e))[0];let E;return null!==Q&&Q[t]?E=Q[t]:(E=(async()=>{let A=await C.decode(a);const I=this.getSampleFormat(),e=this.getBitsPerSample();return function(A,g){return(1!==A&&2!==A||!(g<=32)||g%8!=0)&&(3!==A||16!==g&&32!==g&&64!==g)}(I,e)&&(A=function(A,g,I,C,e,i,B){const t=new DataView(A),Q=2===I?1:C,s=UA(g,e,2===I?B*i:B*i*C),o=parseInt("1".repeat(e),2);if(1===g){let A;A=1===I?C*e:e;let g=i*A;7&g&&(g=g+7&-8);for(let A=0;A<B;++A){const I=A*g;for(let g=0;g<i;++g){const C=I+g*Q*e;for(let I=0;I<Q;++I){const B=C+I*e,a=(A*i+g)*Q+I,E=Math.floor(B/8),r=B%8;if(r+e<=8)s[a]=t.getUint8(E)>>8-e-r&o;else if(r+e<=16)s[a]=t.getUint16(E)>>16-e-r&o;else if(r+e<=24){const A=t.getUint16(E)<<8|t.getUint8(E+2);s[a]=A>>24-e-r&o}else s[a]=t.getUint32(E)>>32-e-r&o}}}}return s.buffer}(A,I,this.planarConfiguration,this.getSamplesPerPixel(),e,this.getTileWidth(),this.getBlockHeight(g))),A})(),null!==Q&&(Q[t]=E)),{x:A,y:g,sample:I,data:await E}}async _readRaster(A,g,I,C,e,i,B,t,Q){const s=this.getTileWidth(),o=this.getTileHeight(),a=this.getWidth(),E=this.getHeight(),r=Math.max(Math.floor(A[0]/s),0),n=Math.min(Math.ceil(A[2]/s),Math.ceil(a/s)),h=Math.max(Math.floor(A[1]/o),0),l=Math.min(Math.ceil(A[3]/o),Math.ceil(E/o)),c=A[2]-A[0];let w=this.getBytesPerPixel();const D=[],d=[];for(let A=0;A<g.length;++A){if(1===this.planarConfiguration){const I=await this.fileDirectory.loadValue("BitsPerSample");if("object"!=typeof I)throw new Error("Expected BitsPerSample to be an array or typed array.");D.push(YA(I,0,g[A])/8)}else D.push(0);d.push(this.getReaderForSample(g[A]))}const y=[],{littleEndian:G}=this;for(let i=h;i<l;++i)for(let B=r;B<n;++B){let t;1===this.planarConfiguration&&(t=this.getTileOrStrip(B,i,0,e,Q));for(let r=0;r<g.length;++r){const n=r,h=g[r];if(2===this.planarConfiguration&&(w=this.getSampleByteSize(h),t=this.getTileOrStrip(B,i,h,e,Q)),!t)throw new Error("Could not get tile or strip data.");const l=t.then(e=>{const i=e.data,B=new DataView(i),t=this.getBlockHeight(e.y),Q=e.y*o,r=e.x*s,h=Q+t,l=(e.x+1)*s,y=d[n],u=Math.min(t,t-(h-A[3]),E-Q),S=Math.min(s,s-(l-A[2]),a-r);for(let e=Math.max(0,A[1]-Q);e<u;++e)for(let i=Math.max(0,A[0]-r);i<S;++i){const t=(e*s+i)*w,o=y.call(B,t+D[n],G);let a;C?(a=(e+Q-A[1])*c*g.length+(i+r-A[0])*g.length+n,I[a]=o):(a=(e+Q-A[1])*c+i+r-A[0],I[n][a]=o)}});y.push(l)}}if(await Promise.all(y),i&&A[2]-A[0]!==i||B&&A[3]-A[1]!==B){let e;e=C?LA(I,A[2]-A[0],A[3]-A[1],i,B,g.length,t):pA(I,A[2]-A[0],A[3]-A[1],i,B,t);const Q=e;return Q.width=i??A[2]-A[0],Q.height=B??A[3]-A[1],Q}const u=I;return u.width=i||A[2]-A[0],u.height=B||A[3]-A[1],u}async readRasters(A={}){const{window:g,samples:I=[],pool:C=null,width:e,height:i,resampleMethod:B,fillValue:t,signal:Q}=A,s="interleave"in A&&A.interleave,o=g||[0,0,this.getWidth(),this.getHeight()];if(o[0]>o[2]||o[1]>o[3])throw new Error("Invalid subsets");const a=(o[2]-o[0])*(o[3]-o[1]),E=this.getSamplesPerPixel();if(I&&I.length){for(let A=0;A<I.length;++A)if(I[A]>=E)return Promise.reject(new RangeError(`Invalid sample index '${I[A]}'.`))}else for(let A=0;A<E;++A)I.push(A);let r;if(s){const{fileDirectory:A}=this,g=A.getValue("SampleFormat"),C=g?Math.max.apply(null,Array.from(g)):1;if(1!==C&&2!==C&&3!==C)throw new Error("Unsupported sample format for interleaved data. Must be 1, 2, or 3.");const e=A.getValue("BitsPerSample");if(r=UA(C,e?Math.max.apply(null,Array.from(e)):8,a*I.length),t){if(Array.isArray(t))throw new Error("When reading interleaved data, fillValue must be a single number.");r.fill(t)}}else{r=[];for(let A=0;A<I.length;++A){const g=this.getArrayForSample(I[A],a);Array.isArray(t)&&A<t.length?g.fill(t[A]):t&&!Array.isArray(t)&&g.fill(t),r.push(g)}}const n=this.fileDirectory.getValue("Compression")||1,h=await async function(A,g){if(!SA.has(A))throw new Error(`Unknown compression method identifier: ${A}`);const{decoderParameterFn:I}=SA.get(A);return I(g)}(n,this.fileDirectory),l=C?C.bindParameters(n,h):await async function(A,g){if(!SA.has(A))throw new Error(`Unknown compression method identifier: ${A}`);const{importFn:I}=SA.get(A);return new(await I())(g)}(n,h);return await this._readRaster(o,I,r,s,l,e,i,B,Q)}async readRGB(A={}){const{window:g,pool:I=null,width:C,height:e,resampleMethod:i,enableAlpha:B=!1,signal:t}=A,Q=("interleave"in A&&A.interleave)??!1,s=g||[0,0,this.getWidth(),this.getHeight()];if(s[0]>s[2]||s[1]>s[3])throw new Error("Invalid subsets");const o=this.fileDirectory.getValue("PhotometricInterpretation");if(o===rA){let A=[0,1,2];const s=this.fileDirectory.getValue("ExtraSamples");if(s&&s[0]!==wA&&B){A=[];const g=this.fileDirectory.getValue("BitsPerSample")||[];for(let I=0;I<g.length;I+=1)A.push(I)}return this.readRasters({window:g,interleave:Q,samples:A,pool:I,width:C,height:e,resampleMethod:i,signal:t})}let a;switch(o){case aA:case EA:case nA:a=[0];break;case hA:a=[0,1,2,3];break;case lA:case cA:a=[0,1,2];break;default:throw new Error("Invalid or unsupported photometric interpretation.")}const E={window:s,interleave:!0,samples:a,pool:I,width:C,height:e,resampleMethod:i,signal:t},{fileDirectory:r}=this,n=await this.readRasters(E),h=2**this.getBitsPerSample(0);let l;switch(o){case aA:l=function(A,g){const{width:I,height:C}=A,e=new Uint8Array(I*C*3);let i;for(let I=0,C=0;I<A.length;++I,C+=3)i=256-A[I]/g*256,e[C]=i,e[C+1]=i,e[C+2]=i;return e}(n,h);break;case EA:l=function(A,g){const{width:I,height:C}=A,e=new Uint8Array(I*C*3);let i;for(let I=0,C=0;I<A.length;++I,C+=3)i=A[I]/g*256,e[C]=i,e[C+1]=i,e[C+2]=i;return e}(n,h);break;case nA:l=function(A,g){const{width:I,height:C}=A,e=new Uint8Array(I*C*3),i=g.length/3,B=g.length/3*2;for(let I=0,C=0;I<A.length;++I,C+=3){const t=A[I];e[C]=g[t]/65536*256,e[C+1]=g[t+i]/65536*256,e[C+2]=g[t+B]/65536*256}return e}(n,await r.loadValue("ColorMap"));break;case hA:l=function(A){const{width:g,height:I}=A,C=new Uint8Array(g*I*3);for(let g=0,I=0;g<A.length;g+=4,I+=3){const e=A[g],i=A[g+1],B=A[g+2],t=A[g+3];C[I]=(255-e)/256*255*((255-t)/256),C[I+1]=(255-i)/256*255*((255-t)/256),C[I+2]=(255-B)/256*255*((255-t)/256)}return C}(n);break;case lA:l=function(A){const{width:g,height:I}=A,C=new Uint8ClampedArray(g*I*3);for(let g=0,I=0;g<A.length;g+=3,I+=3){const e=A[g],i=A[g+1],B=A[g+2];C[I]=e+1.402*(B-128),C[I+1]=e-.34414*(i-128)-.71414*(B-128),C[I+2]=e+1.772*(i-128)}return C}(n);break;case cA:l=function(A){const{width:g,height:I}=A,C=new Uint8Array(g*I*3);for(let g=0,I=0;g<A.length;g+=3,I+=3){let e,i,B,t=(A[g+0]+16)/116,Q=(A[g+1]<<24>>24)/500+t,s=t-(A[g+2]<<24>>24)/200;Q=.95047*(Q*Q*Q>.008856?Q*Q*Q:(Q-16/116)/7.787),t=1*(t*t*t>.008856?t*t*t:(t-16/116)/7.787),s=1.08883*(s*s*s>.008856?s*s*s:(s-16/116)/7.787),e=3.2406*Q+-1.5372*t+-.4986*s,i=-.9689*Q+1.8758*t+.0415*s,B=.0557*Q+-.204*t+1.057*s,e=e>.0031308?1.055*e**(1/2.4)-.055:12.92*e,i=i>.0031308?1.055*i**(1/2.4)-.055:12.92*i,B=B>.0031308?1.055*B**(1/2.4)-.055:12.92*B,C[I]=255*Math.max(0,Math.min(1,e)),C[I+1]=255*Math.max(0,Math.min(1,i)),C[I+2]=255*Math.max(0,Math.min(1,B))}return C}(n);break;default:throw new Error("Unsupported photometric interpretation.")}if(!Q){const A=new Uint8Array(l.length/3),g=new Uint8Array(l.length/3),I=new Uint8Array(l.length/3);for(let C=0,e=0;C<l.length;C+=3,++e)A[e]=l[C],g[e]=l[C+1],I[e]=l[C+2];l=[A,g,I]}const c=l;return c.width=n.width,c.height=n.height,c}async getTiePoints(){if(!this.fileDirectory.hasTag("ModelTiepoint"))return[];const A=await this.fileDirectory.loadValue("ModelTiepoint");if("object"!=typeof A)throw new Error("Expected ModelTiepoint to be an array or typed array.");const g=[];for(let I=0;I<A.length;I+=6)g.push({i:A[I],j:A[I+1],k:A[I+2],x:A[I+3],y:A[I+4],z:A[I+5]});return g}async getGDALMetadata(A=null){const g={};if(!this.fileDirectory.hasTag("GDAL_METADATA"))return null;let I=function(A,g){const I=[];let C,e=0;for(;C=IA(A,g,{debug:!1,startIndex:e});)e=C.start+1+g.length,I.push(C);return I}(await this.fileDirectory.loadValue("GDAL_METADATA"),"Item");I=null===A?I.filter(A=>void 0===$(A,"sample")):I.filter(g=>Number($(g,"sample"))===A);for(let A=0;A<I.length;++A){const C=I[A];g[$(C,"name")]=C.inner}return g}getGDALNoData(){const A=this.fileDirectory.hasTag("GDAL_NODATA")&&this.fileDirectory.getValue("GDAL_NODATA");return A?Number(A.substring(0,A.length-1)):null}getOrigin(){const A=this.fileDirectory.getValue("ModelTiepoint"),g=this.fileDirectory.getValue("ModelTransformation");if(A&&6===A.length)return[A[3],A[4],A[5]];if(g)return[g[3],g[7],g[11]];throw new Error("The image does not have an affine transformation.")}getResolution(A=null){const g=this.fileDirectory.getValue("ModelPixelScale"),I=this.fileDirectory.getValue("ModelTransformation");if(g)return[g[0],-g[1],g[2]];if(I)return 0===I[1]&&0===I[4]?[I[0],-I[5],I[10]]:[Math.sqrt(I[0]*I[0]+I[4]*I[4]),-Math.sqrt(I[1]*I[1]+I[5]*I[5]),I[10]];if(A){const[g,I,C]=A.getResolution();return[g*A.getWidth()/this.getWidth(),I*A.getHeight()/this.getHeight(),C*A.getWidth()/this.getWidth()]}throw new Error("The image does not have an affine transformation.")}pixelIsArea(){return 1===this.getGeoKeys()?.GTRasterTypeGeoKey}getBoundingBox(A=!1){const g=this.getHeight(),I=this.getWidth(),C=this.fileDirectory.getValue("ModelTransformation");if(C&&!A){const[A,e,,i,B,t,,Q]=C,s=[[0,0],[0,g],[I,0],[I,g]].map(([g,I])=>[i+A*g+e*I,Q+B*g+t*I]),o=s.map(A=>A[0]),a=s.map(A=>A[1]);return[Math.min(...o),Math.min(...a),Math.max(...o),Math.max(...a)]}{const A=this.getOrigin(),C=this.getResolution(),e=A[0],i=A[1],B=e+C[0]*I,t=i+C[1]*g;return[Math.min(e,B),Math.min(i,t),Math.max(e,B),Math.max(i,t)]}}}class MA{constructor(A){this._dataView=new DataView(A)}get buffer(){return this._dataView.buffer}getUint64(A,g){const I=this.getUint32(A,g),C=this.getUint32(A+4,g);let e;if(g){if(e=I+2**32*C,!Number.isSafeInteger(e))throw new Error(`${e} exceeds MAX_SAFE_INTEGER. Precision may be lost. Please report if you get this message to https://github.com/geotiffjs/geotiff.js/issues`);return e}if(e=2**32*I+C,!Number.isSafeInteger(e))throw new Error(`${e} exceeds MAX_SAFE_INTEGER. Precision may be lost. Please report if you get this message to https://github.com/geotiffjs/geotiff.js/issues`);return e}getInt64(A,g){let I=0;const C=(128&this._dataView.getUint8(A+(g?7:0)))>0;let e=!0;for(let i=0;i<8;i++){let B=this._dataView.getUint8(A+(g?i:7-i));C&&(e?0!==B&&(B=255&~(B-1),e=!1):B=255&~B),I+=B*256**i}return C&&(I=-I),I}getUint8(A){return this._dataView.getUint8(A)}getInt8(A){return this._dataView.getInt8(A)}getUint16(A,g){return this._dataView.getUint16(A,g)}getInt16(A,g){return this._dataView.getInt16(A,g)}getUint32(A,g){return this._dataView.getUint32(A,g)}getInt32(A,g){return this._dataView.getInt32(A,g)}getFloat16(A,g){return _(this._dataView,A,g)}getFloat32(A,g){return this._dataView.getFloat32(A,g)}getFloat64(A,g){return this._dataView.getFloat64(A,g)}}class bA{constructor(A,g,I,C){this._dataView=new DataView(A),this._sliceOffset=g,this._littleEndian=I,this._bigTiff=C}get sliceOffset(){return this._sliceOffset}get sliceTop(){return this._sliceOffset+this.buffer.byteLength}get littleEndian(){return this._littleEndian}get bigTiff(){return this._bigTiff}get buffer(){return this._dataView.buffer}covers(A,g){return this.sliceOffset<=A&&this.sliceTop>=A+g}readUint8(A){return this._dataView.getUint8(A-this._sliceOffset)}readInt8(A){return this._dataView.getInt8(A-this._sliceOffset)}readUint16(A){return this._dataView.getUint16(A-this._sliceOffset,this._littleEndian)}readInt16(A){return this._dataView.getInt16(A-this._sliceOffset,this._littleEndian)}readUint32(A){return this._dataView.getUint32(A-this._sliceOffset,this._littleEndian)}readInt32(A){return this._dataView.getInt32(A-this._sliceOffset,this._littleEndian)}readFloat32(A){return this._dataView.getFloat32(A-this._sliceOffset,this._littleEndian)}readFloat64(A){return this._dataView.getFloat64(A-this._sliceOffset,this._littleEndian)}readUint64(A){const g=this.readUint32(A),I=this.readUint32(A+4);let C;if(this._littleEndian){if(C=g+2**32*I,!Number.isSafeInteger(C))throw new Error(`${C} exceeds MAX_SAFE_INTEGER. Precision may be lost. Please report if you get this message to https://github.com/geotiffjs/geotiff.js/issues`);return C}if(C=2**32*g+I,!Number.isSafeInteger(C))throw new Error(`${C} exceeds MAX_SAFE_INTEGER. Precision may be lost. Please report if you get this message to https://github.com/geotiffjs/geotiff.js/issues`);return C}readInt64(A){let g=0;const I=(128&this._dataView.getUint8(A+(this._littleEndian?7:0)))>0;let C=!0;for(let e=0;e<8;e++){let i=this._dataView.getUint8(A+(this._littleEndian?e:7-e));I&&(C?0!==i&&(i=255&~(i-1),C=!1):i=255&~i),g+=i*256**e}return I&&(g=-g),g}readOffset(A){return this._bigTiff?this.readUint64(A):this.readUint32(A)}}const KA="\r\n\r\n";function HA(A){if(void 0!==Object.fromEntries)return Object.fromEntries(A);const g={};for(const[I,C]of A)g[I.toLowerCase()]=C;return g}function JA(A){return HA(A.split("\r\n").map(A=>{const g=A.split(":").map(A=>A.trim());return g[0]=g[0].toLowerCase(),g}))}function xA(A){let g=NaN,I=NaN,C=NaN;return A&&([,g,I,C]=(A.match(/bytes (\d+)-(\d+)\/(\d+)/)||[]).map(Number)),{start:g,end:I,total:C}}class TA{async fetch(A,g){return Promise.all(A.map(async A=>(await this.fetchSlice(A,g)).data))}async fetchSlice(A,g){throw new Error(`fetching of slice ${A} not possible, not implemented`)}get fileSize(){return null}async close(){}}class ZA extends Map{constructor(A={}){if(super(),!(A.maxSize&&A.maxSize>0))throw new TypeError("`maxSize` must be a number greater than 0");if("number"==typeof A.maxAge&&0===A.maxAge)throw new TypeError("`maxAge` must be a number greater than 0");this.maxSize=A.maxSize,this.maxAge=A.maxAge||Number.POSITIVE_INFINITY,this.onEviction=A.onEviction,this.cache=new Map,this.oldCache=new Map,this._size=0}_emitEvictions(A){if("function"==typeof this.onEviction)for(const[g,I]of A)this.onEviction(g,I.value)}_deleteIfExpired(A,g){return"number"==typeof g.expiry&&g.expiry<=Date.now()&&("function"==typeof this.onEviction&&this.onEviction(A,g.value),this.delete(A))}_getOrDeleteIfExpired(A,g){if(!1===this._deleteIfExpired(A,g))return g.value}_getItemValue(A,g){return g.expiry?this._getOrDeleteIfExpired(A,g):g.value}_peek(A,g){const I=g.get(A);return this._getItemValue(A,I)}_set(A,g){this.cache.set(A,g),this._size++,this._size>=this.maxSize&&(this._size=0,this._emitEvictions(this.oldCache),this.oldCache=this.cache,this.cache=new Map)}_moveToRecent(A,g){this.oldCache.delete(A),this._set(A,g)}*_entriesAscending(){for(const A of this.oldCache){const[g,I]=A;if(!this.cache.has(g)){!1===this._deleteIfExpired(g,I)&&(yield A)}}for(const A of this.cache){const[g,I]=A;!1===this._deleteIfExpired(g,I)&&(yield A)}}get(A){if(this.cache.has(A)){const g=this.cache.get(A);return this._getItemValue(A,g)}if(this.oldCache.has(A)){const g=this.oldCache.get(A);if(!1===this._deleteIfExpired(A,g))return this._moveToRecent(A,g),g.value}}set(A,g,{maxAge:I=this.maxAge}={}){const C="number"==typeof I&&I!==Number.POSITIVE_INFINITY?Date.now()+I:void 0;return this.cache.has(A)?this.cache.set(A,{value:g,expiry:C}):this._set(A,{value:g,expiry:C}),this}has(A){return this.cache.has(A)?!this._deleteIfExpired(A,this.cache.get(A)):!!this.oldCache.has(A)&&!this._deleteIfExpired(A,this.oldCache.get(A))}peek(A){return this.cache.has(A)?this._peek(A,this.cache):this.oldCache.has(A)?this._peek(A,this.oldCache):void 0}delete(A){const g=this.cache.delete(A);return g&&this._size--,this.oldCache.delete(A)||g}clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}resize(A){if(!(A&&A>0))throw new TypeError("`maxSize` must be a number greater than 0");const g=[...this._entriesAscending()],I=g.length-A;I<0?(this.cache=new Map(g),this.oldCache=new Map,this._size=g.length):(I>0&&this._emitEvictions(g.slice(0,I)),this.oldCache=new Map(g.slice(I)),this.cache=new Map,this._size=0),this.maxSize=A}*keys(){for(const[A]of this)yield A}*values(){for(const[,A]of this)yield A}*[Symbol.iterator](){for(const A of this.cache){const[g,I]=A;!1===this._deleteIfExpired(g,I)&&(yield[g,I.value])}for(const A of this.oldCache){const[g,I]=A;if(!this.cache.has(g)){!1===this._deleteIfExpired(g,I)&&(yield[g,I.value])}}}*entriesDescending(){let A=[...this.cache];for(let g=A.length-1;g>=0;--g){const I=A[g],[C,e]=I;!1===this._deleteIfExpired(C,e)&&(yield[C,e.value])}A=[...this.oldCache];for(let g=A.length-1;g>=0;--g){const I=A[g],[C,e]=I;if(!this.cache.has(C)){!1===this._deleteIfExpired(C,e)&&(yield[C,e.value])}}}*entriesAscending(){for(const[A,g]of this._entriesAscending())yield[A,g.value]}get size(){if(!this._size)return this.oldCache.size;let A=0;for(const g of this.oldCache.keys())this.cache.has(g)||A++;return Math.min(this._size+A,this.maxSize)}entries(){return this.entriesAscending()}forEach(A,g=this){for(const[I,C]of this.entriesAscending())A.call(g,C,I,this)}get[Symbol.toStringTag](){return JSON.stringify([...this.entriesAscending()])}}class qA extends Error{constructor(...A){super(...A),Error.captureStackTrace&&Error.captureStackTrace(this,qA),this.name="AbortError",this.signal=void 0}}class OA extends Error{constructor(A,g){super(g),this.errors=A,this.message=g,this.name="AggregateError"}}const WA=OA;class VA{constructor(A,g,I){this.offset=A,this.length=g,this.data=I}get top(){return this.offset+this.length}}class vA{constructor(A,g,I){this.offset=A,this.length=g,this.blockIds=I}}class zA extends TA{constructor(A,{blockSize:g=65536,cacheSize:I=100}={}){super(),this.source=A,this.blockSize=g,this.blockCache=new ZA({maxSize:I,onEviction:(A,g)=>{this.evictedBlocks.set(A,g)}}),this.evictedBlocks=new Map,this.blockRequests=new Map,this.blockIdsToFetch=new Set,this.abortedBlockIds=new Set}get fileSize(){return this.source.fileSize}async fetch(A,g){const I=[],C=[],e=[];this.evictedBlocks.clear();for(const{offset:g,length:i}of A){let A=g+i;const{fileSize:B}=this;null!==B&&(A=Math.min(A,B));for(let i=Math.floor(g/this.blockSize)*this.blockSize;i<A;i+=this.blockSize){const A=Math.floor(i/this.blockSize);this.blockCache.has(A)||this.blockRequests.has(A)||(this.blockIdsToFetch.add(A),C.push(A)),this.blockRequests.has(A)&&I.push(this.blockRequests.get(A)),e.push(A)}}await async function(A){return new Promise(g=>setTimeout(g,A))}(),this.fetchBlocks(g);const i=[];for(const A of C)this.blockRequests.has(A)&&i.push(this.blockRequests.get(A));await Promise.allSettled(I),await Promise.allSettled(i);const B=[],t=e.filter(A=>this.abortedBlockIds.has(A)||!this.blockCache.has(A));if(t.forEach(A=>this.blockIdsToFetch.add(A)),t.length>0&&g&&!g.aborted){this.fetchBlocks();for(const A of t){const g=this.blockRequests.get(A);if(!g)throw new Error(`Block ${A} is not in the block requests`);B.push(g)}await Promise.allSettled(B)}if(g&&g.aborted)throw new qA("Request was aborted");const Q=e.map(A=>this.blockCache.get(A)||this.evictedBlocks.get(A)),s=Q.filter(A=>!A);if(s.length)throw new WA(s,"Request failed");const o=new Map(function(A,g){const I=Array.isArray(A)?A:Array.from(A),C=Array.isArray(g)?g:Array.from(g);return I.map((A,g)=>[A,C[g]])}(e,Q));return this.readSliceData(A,o)}fetchBlocks(A){if(this.blockIdsToFetch.size>0){const g=this.groupBlocks(this.blockIdsToFetch),I=g.map(async g=>({...g,...await this.source.fetchSlice(g,A)}));for(let C=0;C<g.length;++C){const e=g[C];for(const g of e.blockIds)this.blockRequests.set(g,(async()=>{try{const A=(await Promise.all(I))[C],e=g*this.blockSize,i=e-A.offset,B=Math.min(i+this.blockSize,A.data.byteLength),t=A.data.slice(i,B),Q=new VA(e,t.byteLength,t);this.blockCache.set(g,Q),this.abortedBlockIds.delete(g)}catch(I){if(!(I instanceof qA&&"AbortError"===I.name))throw I;I.signal=A,this.blockCache.delete(g),this.abortedBlockIds.add(g)}finally{this.blockRequests.delete(g)}})())}this.blockIdsToFetch.clear()}}groupBlocks(A){const g=Array.from(A).sort((A,g)=>A-g);if(0===g.length)return[];let I=[],C=null;const e=[];for(const A of g)null===C||C+1===A?(I.push(A),C=A):(e.push(new vA(I[0]*this.blockSize,I.length*this.blockSize,I)),I=[A],C=A);return e.push(new vA(I[0]*this.blockSize,I.length*this.blockSize,I)),e}readSliceData(A,g){return A.map(A=>{let I=A.offset+A.length;null!==this.fileSize&&(I=Math.min(this.fileSize,I));const C=Math.floor(A.offset/this.blockSize),e=Math.floor((I-1)/this.blockSize),i=new ArrayBuffer(A.length),B=new Uint8Array(i);for(let i=C;i<=e;++i){const C=g.get(i);if(!C)continue;const e=C.offset-A.offset;let t,Q=0,s=0;e<0?Q=-e:e>0&&(s=e),t=C.top-I<0?C.length-Q:I-C.offset-Q;const o=new Uint8Array(C.data,Q,t);B.set(o,s)}return i})}}class XA{get ok(){return this.status>=200&&this.status<=299}get status(){throw new Error("not implemented")}getHeader(A){throw new Error("not implemented")}async getData(){throw new Error("not implemented")}}class PA{constructor(A){this.url=A}async request(A){throw new Error("request is not implemented")}}class jA extends XA{constructor(A){super(),this.response=A}get status(){return this.response.status}getHeader(A){return this.response.headers.get(A)||void 0}async getData(){return this.response.arrayBuffer?await this.response.arrayBuffer():(await this.response.buffer()).buffer}}class _A extends PA{constructor(A,g){super(A),this.credentials=g}async request({headers:A,signal:g}={}){const I=await fetch(this.url,{headers:A,credentials:this.credentials,signal:g});return new jA(I)}}class $A extends XA{constructor(A,g){super(),this.xhr=A,this.data=g}get status(){return this.xhr.status}getHeader(A){return this.xhr.getResponseHeader(A)||void 0}async getData(){return this.data}}class Ag extends PA{constructRequest(A,g){return new Promise((I,C)=>{const e=new XMLHttpRequest;e.open("GET",this.url),e.responseType="arraybuffer";for(const[g,I]of Object.entries(A))e.setRequestHeader(g,I);e.onload=()=>{const A=e.response;I(new $A(e,A))},e.onerror=C,e.onabort=()=>C(new qA("Request aborted")),e.send(),g&&(g.aborted&&e.abort(),g.addEventListener("abort",()=>e.abort()))})}async request({headers:A={},signal:g}={}){return await this.constructRequest(A,g)}}var gg={};class Ig extends XA{constructor(A,g){super(),this.response=A,this.dataPromise=g}get status(){return this.response.statusCode}getHeader(A){const g=this.response.headers[A];return Array.isArray(g)?g.join(", "):g}async getData(){return await this.dataPromise}}class Cg extends PA{constructor(A){super(A),this.parsedUrl=gg.parse(this.url),this.httpApi=(this.parsedUrl.protocol,gg)}constructRequest(A,g){return new Promise((I,C)=>{const e=this.httpApi.get({...this.parsedUrl,headers:A},A=>{const g=new Promise(g=>{const I=[];A.on("data",A=>{I.push(A)}),A.on("end",()=>{const A=Buffer.concat(I).buffer;g(A)}),A.on("error",C)});I(new Ig(A,g))});e.on("error",C),g&&(g.aborted&&e.destroy(new qA("Request aborted")),g.addEventListener("abort",()=>e.destroy(new qA("Request aborted"))))})}async request({headers:A={},signal:g}={}){return await this.constructRequest(A,g)}}class eg extends TA{constructor(A,{headers:g,maxRanges:I=0,allowFullFile:C}={}){super(),this.client=A,this.headers=g,this.maxRanges=I,this.allowFullFile=C,this._fileSize=null}async fetch(A,g){return this.maxRanges>=A.length?this.fetchSlices(A,g).then(A=>A.map(A=>A.data)):(this.maxRanges>0&&A.length,Promise.all(A.map(async A=>(await this.fetchSlice(A,g)).data)))}async fetchSlices(A,g){const I=await this.client.request({headers:{...this.headers,Range:`bytes=${A.map(({offset:A,length:g})=>`${A}-${A+g-1}`).join(",")}`},signal:g});if(I.ok){if(206===I.status){const{type:C,params:e}=function(A){if(!A)return{type:null,params:{}};const[g,...I]=A.split(";").map(A=>A.trim());return{type:g,params:HA(I.map(A=>A.split("=")))}}(I.getHeader("content-type"));if("multipart/byteranges"===C){const A=function(A,g){let I=-1;const C=new TextDecoder("ascii"),e=[],i=`--${g}`,B=`${i}--`;for(let g=0;g<10;++g)C.decode(new Uint8Array(A,g,i.length))===i&&(I=g);if(-1===I)throw new Error("Could not find initial boundary");for(;I<A.byteLength;){const g=C.decode(new Uint8Array(A,I,Math.min(i.length+1024,A.byteLength-I)));if(0===g.length||g.startsWith(B))break;if(!g.startsWith(i))throw new Error("Part does not start with boundary");const t=g.substr(i.length+2);if(0===t.length)break;const Q=t.indexOf(KA),s=JA(t.substr(0,Q)),{start:o,end:a,total:E}=xA(s["content-range"]),r=I+i.length+Q+4,n=a+1-o;e.push({headers:s,data:A.slice(r,r+n),offset:o,length:n,fileSize:E}),I=r+n+4}return e}(await I.getData(),e.boundary);return this._fileSize=A[0].fileSize||null,A}const i=await I.getData(),{start:B,end:t,total:Q}=xA(I.getHeader("content-range"));this._fileSize=Q||null;const s=[{data:i,offset:B,length:t+1-B}];if(A.length>1){const I=await Promise.all(A.slice(1).map(A=>this.fetchSlice(A,g)));return s.concat(I)}return s}{if(!this.allowFullFile)throw new Error("Server responded with full file");const A=await I.getData();return this._fileSize=A.byteLength,[{data:A,offset:0,length:A.byteLength}]}}throw new Error("Error fetching data.")}async fetchSlice(A,g){const{offset:I,length:C}=A,e=await this.client.request({headers:{...this.headers,Range:`bytes=${I}-${I+C-1}`},signal:g});if(e.ok){if(206===e.status){const A=await e.getData(),{total:g}=xA(e.getHeader("content-range"));return this._fileSize=g||null,{data:A,offset:I,length:C}}{if(!this.allowFullFile)throw new Error("Server responded with full file");const A=await e.getData();return this._fileSize=A.byteLength,{data:A,offset:0,length:A.byteLength}}}throw new Error("Error fetching data.")}get fileSize(){return this._fileSize}}function ig(A,{blockSize:g,cacheSize:I}){return void 0===g?A:new zA(A,{blockSize:g,cacheSize:I})}function Bg(A,{forceXHR:g=!1,...I}={}){return"function"!=typeof fetch||g?"undefined"!=typeof XMLHttpRequest?function(A,{headers:g={},maxRanges:I=0,allowFullFile:C=!1,...e}={}){const i=new Ag(A);return ig(new eg(i,{headers:g,maxRanges:I,allowFullFile:C}),e)}(A,I):function(A,{headers:g={},maxRanges:I=0,allowFullFile:C=!1,...e}={}){const i=new Cg(A);return ig(new eg(i,{headers:g,maxRanges:I,allowFullFile:C}),e)}(A,I):function(A,{headers:g={},credentials:I,maxRanges:C=0,allowFullFile:e=!1,...i}={}){const B=new _A(A,I);return ig(new eg(B,{headers:g,maxRanges:C,allowFullFile:e}),i)}(A,I)}class tg extends TA{constructor(A){super(),this.arrayBuffer=A}fetchSlice(A,g){if(g&&g.aborted)throw new qA("Request aborted");return Promise.resolve({data:this.arrayBuffer.slice(A.offset,A.offset+A.length),offset:A.offset,length:A.length})}}function Qg(A,g){switch(A){case CA.BYTE:case CA.ASCII:case CA.UNDEFINED:return new Uint8Array(g);case CA.SBYTE:return new Int8Array(g);case CA.SHORT:return new Uint16Array(g);case CA.SSHORT:return new Int16Array(g);case CA.LONG:case CA.IFD:return new Uint32Array(g);case CA.SLONG:return new Int32Array(g);case CA.LONG8:case CA.IFD8:case CA.SLONG8:return new Array(g);case CA.RATIONAL:return new Uint32Array(2*g);case CA.SRATIONAL:return new Int32Array(2*g);case CA.FLOAT:return new Float32Array(g);case CA.DOUBLE:return new Float64Array(g);default:throw new RangeError(`Invalid field type: ${A}`)}}function sg(A,g){switch(g){case CA.BYTE:case CA.ASCII:case CA.UNDEFINED:return A.readUint8;case CA.SBYTE:return A.readInt8;case CA.SHORT:return A.readUint16;case CA.SSHORT:return A.readInt16;case CA.LONG:case CA.IFD:return A.readUint32;case CA.SLONG:return A.readInt32;case CA.LONG8:case CA.IFD8:return A.readUint64;case CA.SLONG8:return A.readInt64;case CA.RATIONAL:return A.readUint32;case CA.SRATIONAL:return A.readInt32;case CA.FLOAT:return A.readFloat32;case CA.DOUBLE:return A.readFloat64;default:throw new RangeError(`Invalid field type: ${g}`)}}function og(A=null,g,I,C,e,i,B=!1){const t=iA(C),Q=A||Qg(C,e),s=C===CA.RATIONAL||C===CA.SRATIONAL;if(s)for(let A=0;A<e;A+=2)Q[A]=g.call(I,i+A*t),Q[A+1]=g.call(I,i+(A*t+4));else for(let A=0;A<e;++A)Q[A]=g.call(I,i+A*t);return C===CA.ASCII?new TextDecoder("utf-8").decode(Q):1!==e||B||s?Q:Q[0]}class ag{constructor(A,g,I,C,e){this.source=A,this.arrayOffset=g,this.littleEndian=I,this.fieldType=C,this.length=e,this.data=Qg(C,e),this.itemSize=iA(C),this.maskBitmap=new Uint8Array(Math.ceil(e/8)),this.fetchIndexPromises=new Map,this.fullFetchPromise=null}async loadAll(){return this.fullFetchPromise||(this.fullFetchPromise=this.source.fetch([{offset:this.arrayOffset,length:this.itemSize*this.length}]).then(A=>{const g=new bA(A[0],this.arrayOffset,!0,!1),I=og(this.data,sg(g,this.fieldType),g,this.fieldType,this.length,this.arrayOffset,!0);return this.maskBitmap.fill(255),this.fetchIndexPromises.clear(),I})),this.fullFetchPromise}async get(A){if(A<0||A>=this.data.length)throw new RangeError(`Index ${A} out of bounds for length ${this.data.length}`);const g=Math.floor(A/8),I=1<<A%8,C=this.arrayOffset+A*this.itemSize;if(0===(this.maskBitmap[g]&I)){if(!this.fetchIndexPromises.has(A)){const e=this.source.fetch([{offset:C,length:this.itemSize}]).then(e=>{const i=new bA(e[0],this.arrayOffset+A*this.itemSize,!0,!1),B=sg(i,this.fieldType).call(i,C);return this.data[A]=B,this.maskBitmap[g]|=I,this.fetchIndexPromises.delete(A),B});this.fetchIndexPromises.set(A,e)}return this.fetchIndexPromises.get(A)}return this.data[A]}}class Eg{constructor(A,g,I,C){this.actualizedFields=A,this.deferredFields=g,this.deferredFieldsBeingResolved=new Map,this.deferredArrays=I,this.nextIFDByteOffset=C}hasTag(A){const g=oA(A);return this.actualizedFields.has(g)||this.deferredFields.has(g)||this.deferredArrays.has(g)}getValue(A){const g=oA(A);if(this.deferredFields.has(g)||this.deferredArrays.has(g)){const A=QA[g];throw new Error(`Field '${A?.name||`Tag${g}`}' (${g}) is deferred. Use loadValue() to load it asynchronously.`)}if(this.actualizedFields.has(g))return this.actualizedFields.get(g)}async loadValue(A){const g=oA(A);if(this.actualizedFields.has(g))return this.actualizedFields.get(g);if(this.deferredFieldsBeingResolved.has(g))return this.deferredFieldsBeingResolved.get(g);const I=this.deferredFields.get(g);if(I){this.deferredFields.delete(g);const A=(async()=>{try{const A=await I();return this.actualizedFields.set(g,A),A}finally{this.deferredFieldsBeingResolved.delete(g)}})();return this.deferredFieldsBeingResolved.set(g,A),A}const C=this.deferredArrays.get(g);return C?C.loadAll():void 0}async loadValueIndexed(A,g){const I=oA(A);if(this.actualizedFields.has(I)){return this.actualizedFields.get(I)[g]}if(this.deferredArrays.has(I)){return this.deferredArrays.get(I).get(g)}if(this.hasTag(I)){const A=await this.loadValue(I);if(A&&"number"!=typeof A)return A[g]}}parseGeoKeyDirectory(){const A=this.getValue("GeoKeyDirectory");if(!A)return null;const g={};for(let I=4;I<=4*A[3];I+=4){const C=uA[A[I]],e=A[I+1]||null,i=A[I+2],B=A[I+3];let t=null;if(e){if(t=this.getValue(e),null==t)throw new Error(`Could not get value of geoKey '${C}'.`);"string"==typeof t?t=t.substring(B,B+i-1):t.subarray&&(t=t.subarray(B,B+i),1===i&&(t=t[0]))}else t=B;g[C]=t}return g}toObject(){const A={};for(const[g,I]of this.actualizedFields.entries()){const C="number"==typeof g?QA[g]:void 0;A[C?C.name:`Tag${g}`]=I}return A}}class rg{constructor(A,g,I,C=!1){this.source=A,this.littleEndian=g,this.bigTiff=I,this.eager=C}async getSlice(A,g){const I=this.bigTiff?4048:1024;return new bA((await this.source.fetch([{offset:A,length:void 0!==g?g:I}]))[0],A,this.littleEndian,this.bigTiff)}async parseFileDirectoryAt(A){const g=this.bigTiff?20:12,I=this.bigTiff?8:2;let C=await this.getSlice(A);const e=this.bigTiff?C.readUint64(A):C.readUint16(A),i=e*(g+(this.bigTiff?16:6));C.covers(A,i)||(C=await this.getSlice(A,i));const B=new Map,t=new Map,Q=new Map;let s=A+(this.bigTiff?8:2);for(let A=0;A<e;s+=g,++A){const A=C.readUint16(s),g=C.readUint16(s+2),I=this.bigTiff?C.readUint64(s+4):C.readUint32(s+4);let e=null,i=null,o=null;const a=iA(g),E=s+(this.bigTiff?12:8),r=QA[A]?.isArray,n=QA[A]?.eager||this.eager;if(a*I<=(this.bigTiff?8:4))e=og(Qg(g,I),sg(C,g),C,g,I,E,r);else{const A=C.readOffset(E),B=iA(g)*I;if(C.covers(A,B))e=og(Qg(g,I),sg(C,g),C,g,I,A,r);else if(n){const C=await this.getSlice(A,B);e=og(Qg(g,I),sg(C,g),C,g,I,A,r)}else r?o=new ag(this.source,A,this.littleEndian,g,I):i=async()=>{const C=await this.getSlice(A,B);return og(Qg(g,I),sg(C,g),C,g,I,A,r)}}null!==e?B.set(A,e):null!==i?t.set(A,i):null!==o&&Q.set(A,o)}const o=C.readOffset(A+I+g*e);return new Eg(B,t,Q,o)}}function ng(A,g){let I=A.length-g,C=0;do{for(let I=g;I>0;I--)A[C+g]+=A[C],C++;I-=g}while(I>0)}function hg(A,g,I){let C=0,e=A.length;const i=e/I;for(;e>g;){for(let I=g;I>0;--I)A[C+g]+=A[C],++C;e-=g}const B=A.slice();for(let g=0;g<i;++g)for(let C=0;C<I;++C)A[I*g+C]=B[(I-C-1)*i+g]}class lg{constructor(A){this.parameters=A}decodeBlock(A){throw new Error("decodeBlock not implemented")}async decode(A){const g=await this.decodeBlock(A),{tileWidth:I,tileHeight:C,predictor:e,bitsPerSample:i,planarConfiguration:B}=this.parameters;if(1!==e){return function(A,g,I,C,e,i){if(!g||1===g)return A;for(let A=0;A<e.length;++A){if(e[A]%8!=0)throw new Error("When decoding with predictor, only multiple of 8 bits are supported.");if(e[A]!==e[0])throw new Error("When decoding with predictor, all samples must have the same size.")}const B=e[0]/8,t=2===i?1:e.length;for(let i=0;i<C&&!(i*t*I*B>=A.byteLength);++i){let C;if(2===g){switch(e[0]){case 8:C=new Uint8Array(A,i*t*I*B,t*I*B);break;case 16:C=new Uint16Array(A,i*t*I*B,t*I*B/2);break;case 32:C=new Uint32Array(A,i*t*I*B,t*I*B/4);break;default:throw new Error(`Predictor 2 not allowed with ${e[0]} bits per sample.`)}ng(C,t)}else 3===g&&(C=new Uint8Array(A,i*t*I*B,t*I*B),hg(C,t,B))}return A}(g,e,I,C,Array.isArray(i)||ArrayBuffer.isView(i)?Array.from(i):[i],B)}return g}}function cg(A,g,I,C){let e=null,i=null;const B=iA(g);switch(g){case CA.BYTE:case CA.ASCII:case CA.UNDEFINED:e=new Uint8Array(I),i=A.readUint8;break;case CA.SBYTE:e=new Int8Array(I),i=A.readInt8;break;case CA.SHORT:e=new Uint16Array(I),i=A.readUint16;break;case CA.SSHORT:e=new Int16Array(I),i=A.readInt16;break;case CA.LONG:case CA.IFD:e=new Uint32Array(I),i=A.readUint32;break;case CA.SLONG:e=new Int32Array(I),i=A.readInt32;break;case CA.LONG8:case CA.IFD8:e=new Array(I),i=A.readUint64;break;case CA.SLONG8:e=new Array(I),i=A.readInt64;break;case CA.RATIONAL:e=new Uint32Array(2*I),i=A.readUint32;break;case CA.SRATIONAL:e=new Int32Array(2*I),i=A.readInt32;break;case CA.FLOAT:e=new Float32Array(I),i=A.readFloat32;break;case CA.DOUBLE:e=new Float64Array(I),i=A.readFloat64}if(null===e||null===i)throw new RangeError(`Invalid field type: ${g}`);for(let g=0;g<I;++g)e[g]=i.call(A,C+g*B);return new TextDecoder("utf-8").decode(e)}class wg extends Error{constructor(A){super(`No image at index ${A}`),this.index=A}}class Dg{async getImage(A=0){throw new Error("Not implemented")}async getImageCount(){throw new Error("Not implemented")}async readRasters(A={}){const{window:g,width:I,height:C}=A;let{resX:e,resY:i,bbox:B}=A;const t=await this.getImage();let Q=t;const s=await this.getImageCount(),o=t.getBoundingBox();if(g&&B)throw new Error('Both "bbox" and "window" passed.');if(I||C){if(g){const[A,I]=t.getOrigin(),[C,e]=t.getResolution();B=[A+g[0]*C,I+g[1]*e,A+g[2]*C,I+g[3]*e]}const A=B||o;if(I){if(e)throw new Error("Both width and resX passed");e=(A[2]-A[0])/I}if(C){if(i)throw new Error("Both width and resY passed");i=(A[3]-A[1])/C}}if(e||i){const A=[];for(let g=0;g<s;++g){const I=await this.getImage(g),C=I.fileDirectory.getValue("SubfileType"),e=I.fileDirectory.getValue("NewSubfileType");(0===g||2===C||1&(e||0))&&A.push(I)}A.sort((A,g)=>A.getWidth()-g.getWidth());for(let g=0;g<A.length;++g){const I=A[g],C=(o[2]-o[0])/I.getWidth(),B=(o[3]-o[1])/I.getHeight();if(Q=I,e&&e>C||i&&i>B)break}}let a=g;if(B){const[A,g]=t.getOrigin(),[I,C]=Q.getResolution(t);a=[Math.round((B[0]-A)/I),Math.round((B[1]-g)/C),Math.round((B[2]-A)/I),Math.round((B[3]-g)/C)],a=[Math.min(a[0],a[2]),Math.min(a[1],a[3]),Math.max(a[0],a[2]),Math.max(a[1],a[3])]}return Q.readRasters({...A,window:a})}}class dg extends Dg{constructor(A,g,I,C,e={}){super(),this.source=A,this.parser=new rg(A,g,I,!1),this.littleEndian=g,this.bigTiff=I,this.firstIFDOffset=C,this.cache=e.cache||!1,this.ifdRequests=[],this.ghostValues=null}async getSlice(A,g){const I=this.bigTiff?4048:1024;return new bA((await this.source.fetch([{offset:A,length:void 0!==g?g:I}]))[0],A,this.littleEndian,this.bigTiff)}async requestIFD(A){if(this.ifdRequests[A])return this.ifdRequests[A];if(0===A)return this.ifdRequests[A]=this.parser.parseFileDirectoryAt(this.firstIFDOffset),this.ifdRequests[A];if(!this.ifdRequests[A-1])try{this.ifdRequests[A-1]=this.requestIFD(A-1)}catch(g){if(g instanceof wg)throw new wg(A);throw g}return this.ifdRequests[A]=(async()=>{const g=this.ifdRequests[A-1];if(!g)throw new Error("Previous IFD request missing");const I=await g;if(0===I.nextIFDByteOffset)throw new wg(A);return this.parser.parseFileDirectoryAt(I.nextIFDByteOffset)})(),this.ifdRequests[A]}async getImage(A=0){return new mA(await this.requestIFD(A),this.littleEndian,this.cache,this.source)}async getImageCount(){let A=0,g=!0;for(;g;)try{await this.requestIFD(A),++A}catch(A){if(!(A instanceof wg))throw A;g=!1}return A}async getGhostValues(){const A=this.bigTiff?16:8;if(null!==this.ghostValues)return this.ghostValues;const g="GDAL_STRUCTURAL_METADATA_SIZE=";let I=await this.getSlice(A,130);if(g===cg(I,CA.ASCII,30,A)){const g=cg(I,CA.ASCII,130,A).split("\n")[0],C=Number(g.split("=")[1].split(" ")[0])+g.length;C>130&&(I=await this.getSlice(A,C));const e=cg(I,CA.ASCII,C,A),i={};e.split("\n").filter(A=>A.length>0).map(A=>A.split("=")).forEach(([A,g])=>{i[A]=g}),this.ghostValues=i}return this.ghostValues}static async fromSource(A,g,I){const C=(await A.fetch([{offset:0,length:1024}],I))[0],e=new MA(C),i=e.getUint16(0,!1);let B;if(18761===i)B=!0;else{if(19789!==i)throw new TypeError("Invalid byte order value.");B=!1}const t=e.getUint16(2,B);let Q;if(42===t)Q=!1;else{if(43!==t)throw new TypeError("Invalid magic number.");Q=!0;if(8!==e.getUint16(4,B))throw new Error("Unsupported offset byte-size.")}const s=Q?e.getUint64(8,B):e.getUint32(4,B);return new dg(A,B,Q,s,g)}close(){return"function"==typeof this.source.close&&this.source.close()}}async function yg(A,g){return dg.fromSource(function(A){return new tg(A)}(A),void 0,g)}const Gg={type:"image",blockSize:65536,format:void 0,useChannel:null,useChannelIndex:null,noDataValue:void 0,multiplier:1,verticalExaggeration:1,numOfChannels:void 0,planarConfig:void 0,tesselator:"martini",terrainColor:[200,200,200,255],terrainSkirtHeight:100,terrainMinValue:0,useHeatMap:!0,useColorsBasedOnValues:!1,useColorClasses:!1,useAutoRange:!1,useDataForOpacity:!1,useSingleColor:!1,blurredTexture:!0,skipTexture:!1,noDataCheck:"full",clipLow:null,clipHigh:null,color:[255,0,255,255],colorScale:e.brewer.YlOrRd,colorScaleValueRange:[0,255],colorsBasedOnValues:void 0,colorClasses:void 0,alpha:100,maxGlazeAlpha:128,nullColor:[0,0,0,0],unidentifiedColor:[0,0,0,0],clippedColor:[0,0,0,0],useSlope:!1,useHillshade:!1,hillshadeAzimuth:315,hillshadeAltitude:45,zFactor:1,useSwissRelief:!1,swissSlopeWeight:.5,useReliefGlaze:!1,disableLighting:!1,cacheAllBands:!1};class ug{constructor(A=257){this.gridSize=A;const g=A-1;if(g&g-1)throw new Error(`Expected grid size to be 2^n+1, got ${A}.`);this.numTriangles=g*g*2-2,this.numParentTriangles=this.numTriangles-g*g,this.indices=new Uint32Array(this.gridSize*this.gridSize),this.coords=new Uint16Array(4*this.numTriangles);for(let A=0;A<this.numTriangles;A++){let I=A+2,C=0,e=0,i=0,B=0,t=0,Q=0;for(1&I?i=B=t=g:C=e=Q=g;(I>>=1)>1;){const A=C+i>>1,g=e+B>>1;1&I?(i=C,B=e,C=t,e=Q):(C=i,e=B,i=t,B=Q),t=A,Q=g}const s=4*A;this.coords[s+0]=C,this.coords[s+1]=e,this.coords[s+2]=i,this.coords[s+3]=B}}createTile(A){return new Sg(A,this)}}class Sg{constructor(A,g){const I=g.gridSize;if(A.length!==I*I)throw new Error(`Expected terrain data of length ${I*I} (${I} x ${I}), got ${A.length}.`);this.terrain=A,this.martini=g,this.errors=new Float32Array(A.length),this.update()}update(){const{numTriangles:A,numParentTriangles:g,coords:I,gridSize:C}=this.martini,{terrain:e,errors:i}=this;for(let B=A-1;B>=0;B--){const A=4*B,t=I[A+0],Q=I[A+1],s=I[A+2],o=I[A+3],a=t+s>>1,E=Q+o>>1,r=a+E-Q,n=E+t-a,h=(e[Q*C+t]+e[o*C+s])/2,l=E*C+a,c=Math.abs(h-e[l]);if(i[l]=Math.max(i[l],c),B<g){const A=(Q+n>>1)*C+(t+r>>1),g=(o+n>>1)*C+(s+r>>1);i[l]=Math.max(i[l],i[A],i[g])}}}getMesh(A=0){const{gridSize:g,indices:I}=this.martini,{errors:C}=this;let e=0,i=0;const B=g-1;function t(B,Q,s,o,a,E){const r=B+s>>1,n=Q+o>>1;Math.abs(B-a)+Math.abs(Q-E)>1&&C[n*g+r]>A?(t(a,E,B,Q,r,n),t(s,o,a,E,r,n)):(I[Q*g+B]=I[Q*g+B]||++e,I[o*g+s]=I[o*g+s]||++e,I[E*g+a]=I[E*g+a]||++e,i++)}I.fill(0),t(0,0,B,B,B,0),t(B,B,0,0,0,B);const Q=new Uint16Array(2*e),s=new Uint32Array(3*i);let o=0;function a(e,i,B,t,E,r){const n=e+B>>1,h=i+t>>1;if(Math.abs(e-E)+Math.abs(i-r)>1&&C[h*g+n]>A)a(E,r,e,i,n,h),a(B,t,E,r,n,h);else{const A=I[i*g+e]-1,C=I[t*g+B]-1,a=I[r*g+E]-1;Q[2*A]=e,Q[2*A+1]=i,Q[2*C]=B,Q[2*C+1]=t,Q[2*a]=E,Q[2*a+1]=r,s[o++]=A,s[o++]=C,s[o++]=a}}return a(0,0,B,B,B,0),a(B,B,0,0,0,B),{vertices:Q,triangles:s}}}function fg(A,g,I,C,e,i){return(I-e)*(g-i)-(C-i)*(A-e)}class Ng{constructor(A,g,I=g){this.data=A,this.width=g,this.height=I,this.coords=[],this.triangles=[],this._halfedges=[],this._candidates=[],this._queueIndices=[],this._queue=[],this._errors=[],this._rms=[],this._pending=[],this._pendingLen=0,this._rmsSum=0;const C=g-1,e=I-1,i=this._addPoint(0,0),B=this._addPoint(C,0),t=this._addPoint(0,e),Q=this._addPoint(C,e),s=this._addTriangle(Q,i,t,-1,-1,-1);this._addTriangle(i,Q,B,s,-1,-1),this._flush()}run(A=1){for(;this.getMaxError()>A;)this.refine()}refine(){this._step(),this._flush()}getMaxError(){return this._errors[0]}getRMSD(){return this._rmsSum>0?Math.sqrt(this._rmsSum/(this.width*this.height)):0}heightAt(A,g){return this.data[this.width*g+A]}_flush(){const{coords:A}=this;for(let g=0;g<this._pendingLen;g++){const I=this._pending[g],C=2*this.triangles[3*I+0],e=2*this.triangles[3*I+1],i=2*this.triangles[3*I+2];this._findCandidate(A[C],A[C+1],A[e],A[e+1],A[i],A[i+1],I)}this._pendingLen=0}_findCandidate(A,g,I,C,e,i,B){const t=Math.min(A,I,e),Q=Math.min(g,C,i),s=Math.max(A,I,e),o=Math.max(g,C,i);let a=fg(I,C,e,i,t,Q),E=fg(e,i,A,g,t,Q),r=fg(A,g,I,C,t,Q);const n=C-g,h=A-I,l=i-C,c=I-e,w=g-i,D=e-A,d=fg(A,g,I,C,e,i),y=this.heightAt(A,g)/d,G=this.heightAt(I,C)/d,u=this.heightAt(e,i)/d;let S=0,f=0,N=0,k=0;for(let A=Q;A<=o;A++){let g=0;a<0&&0!==l&&(g=Math.max(g,Math.floor(-a/l))),E<0&&0!==w&&(g=Math.max(g,Math.floor(-E/w))),r<0&&0!==n&&(g=Math.max(g,Math.floor(-r/n)));let I=a+l*g,C=E+w*g,e=r+n*g,i=!1;for(let B=t+g;B<=s;B++){if(I>=0&&C>=0&&e>=0){i=!0;const g=y*I+G*C+u*e,t=Math.abs(g-this.heightAt(B,A));k+=t*t,t>S&&(S=t,f=B,N=A)}else if(i)break;I+=l,C+=w,e+=n}a+=c,E+=D,r+=h}(f===A&&N===g||f===I&&N===C||f===e&&N===i)&&(S=0),this._candidates[2*B]=f,this._candidates[2*B+1]=N,this._rms[B]=k,this._queuePush(B,S,k)}_step(){const A=this._queuePop(),g=3*A+0,I=3*A+1,C=3*A+2,e=this.triangles[g],i=this.triangles[I],B=this.triangles[C],t=this.coords[2*e],Q=this.coords[2*e+1],s=this.coords[2*i],o=this.coords[2*i+1],a=this.coords[2*B],E=this.coords[2*B+1],r=this._candidates[2*A],n=this._candidates[2*A+1],h=this._addPoint(r,n);if(0===fg(t,Q,s,o,r,n))this._handleCollinear(h,g);else if(0===fg(s,o,a,E,r,n))this._handleCollinear(h,I);else if(0===fg(a,E,t,Q,r,n))this._handleCollinear(h,C);else{const A=this._halfedges[g],t=this._halfedges[I],Q=this._halfedges[C],s=this._addTriangle(e,i,h,A,-1,-1,g),o=this._addTriangle(i,B,h,t,-1,s+1),a=this._addTriangle(B,e,h,Q,s+2,o+1);this._legalize(s),this._legalize(o),this._legalize(a)}}_addPoint(A,g){const I=this.coords.length>>1;return this.coords.push(A,g),I}_addTriangle(A,g,I,C,e,i,B=this.triangles.length){const t=B/3;return this.triangles[B+0]=A,this.triangles[B+1]=g,this.triangles[B+2]=I,this._halfedges[B+0]=C,this._halfedges[B+1]=e,this._halfedges[B+2]=i,C>=0&&(this._halfedges[C]=B+0),e>=0&&(this._halfedges[e]=B+1),i>=0&&(this._halfedges[i]=B+2),this._candidates[2*t+0]=0,this._candidates[2*t+1]=0,this._queueIndices[t]=-1,this._rms[t]=0,this._pending[this._pendingLen++]=t,B}_legalize(A){const g=this._halfedges[A];if(g<0)return;const I=A-A%3,C=g-g%3,e=I+(A+1)%3,i=I+(A+2)%3,B=C+(g+2)%3,t=C+(g+1)%3,Q=this.triangles[i],s=this.triangles[A],o=this.triangles[e],a=this.triangles[B],{coords:E}=this;if(!function(A,g,I,C,e,i,B,t){const Q=A-B,s=g-t,o=I-B,a=C-t,E=e-B,r=i-t,n=o*o+a*a,h=E*E+r*r;return Q*(a*h-n*r)-s*(o*h-n*E)+(Q*Q+s*s)*(o*r-a*E)<0}(E[2*Q],E[2*Q+1],E[2*s],E[2*s+1],E[2*o],E[2*o+1],E[2*a],E[2*a+1]))return;const r=this._halfedges[e],n=this._halfedges[i],h=this._halfedges[B],l=this._halfedges[t];this._queueRemove(I/3),this._queueRemove(C/3);const c=this._addTriangle(Q,a,o,-1,h,r,I),w=this._addTriangle(a,Q,s,c,n,l,C);this._legalize(c+1),this._legalize(w+2)}_handleCollinear(A,g){const I=g-g%3,C=I+(g+1)%3,e=I+(g+2)%3,i=this.triangles[e],B=this.triangles[g],t=this.triangles[C],Q=this._halfedges[C],s=this._halfedges[e],o=this._halfedges[g];if(o<0){const g=this._addTriangle(A,i,B,-1,s,-1,I),C=this._addTriangle(i,A,t,g,-1,Q);return this._legalize(g+1),void this._legalize(C+2)}const a=o-o%3,E=a+(o+2)%3,r=a+(o+1)%3,n=this.triangles[E],h=this._halfedges[E],l=this._halfedges[r];this._queueRemove(a/3);const c=this._addTriangle(i,B,A,s,-1,-1,I),w=this._addTriangle(B,n,A,l,-1,c+1,a),D=this._addTriangle(n,t,A,h,-1,w+1),d=this._addTriangle(t,i,A,Q,c+2,D+1);this._legalize(c),this._legalize(w),this._legalize(D),this._legalize(d)}_queuePush(A,g,I){const C=this._queue.length;this._queueIndices[A]=C,this._queue.push(A),this._errors.push(g),this._rmsSum+=I,this._queueUp(C)}_queuePop(){const A=this._queue.length-1;return this._queueSwap(0,A),this._queueDown(0,A),this._queuePopBack()}_queuePopBack(){const A=this._queue.pop();return this._errors.pop(),this._rmsSum-=this._rms[A],this._queueIndices[A]=-1,A}_queueRemove(A){const g=this._queueIndices[A];if(g<0){const g=this._pending.indexOf(A);if(-1===g)throw new Error("Broken triangulation (something went wrong).");return void(this._pending[g]=this._pending[--this._pendingLen])}const I=this._queue.length-1;I!==g&&(this._queueSwap(g,I),this._queueDown(g,I)||this._queueUp(g)),this._queuePopBack()}_queueLess(A,g){return this._errors[A]>this._errors[g]}_queueSwap(A,g){const I=this._queue[A],C=this._queue[g];this._queue[A]=C,this._queue[g]=I,this._queueIndices[I]=g,this._queueIndices[C]=A;const e=this._errors[A];this._errors[A]=this._errors[g],this._errors[g]=e}_queueUp(A){let g=A;for(;;){const A=g-1>>1;if(A===g||!this._queueLess(g,A))break;this._queueSwap(A,g),g=A}}_queueDown(A,g){let I=A;for(;;){const A=2*I+1;if(A>=g||A<0)break;const C=A+1;let e=A;if(C<g&&this._queueLess(C,A)&&(e=C),!this._queueLess(e,I))break;this._queueSwap(I,e),I=e}return I>A}}function kg(A,g,I,C){const e=function(A){const g=new Map,I=(A,I)=>{const C=Math.min(A,I),e=Math.max(A,I),i=BigInt(C)<<32n|BigInt(e);g.has(i)?g.delete(i):g.set(i,[A,I])};for(let g=0;g<A.length;g+=3){const C=A[g],e=A[g+1],i=A[g+2];I(C,e),I(e,i),I(i,C)}return Array.from(g.values())}(g),i=new A.POSITION.value.constructor(6*e.length),t=new A.TEXCOORD_0.value.constructor(4*e.length),Q=new g.constructor(6*e.length);for(let g=0;g<e.length;g++){Rg({edge:e[g],edgeIndex:g,attributes:A,skirtHeight:I,newPosition:i,newTexcoord0:t,newTriangles:Q})}A.POSITION.value=B.concatenateTypedArrays(A.POSITION.value,i),A.TEXCOORD_0.value=B.concatenateTypedArrays(A.TEXCOORD_0.value,t);return{attributes:A,triangles:g instanceof Array?g.concat(Q):B.concatenateTypedArrays(g,Q)}}function Rg({edge:A,edgeIndex:g,attributes:I,skirtHeight:C,newPosition:e,newTexcoord0:i,newTriangles:B}){const t=I.POSITION.value.length,Q=2*g,s=2*g+1;e.set(I.POSITION.value.subarray(3*A[0],3*A[0]+3),3*Q),e[3*Q+2]=e[3*Q+2]-C,e.set(I.POSITION.value.subarray(3*A[1],3*A[1]+3),3*s),e[3*s+2]=e[3*s+2]-C,i.set(I.TEXCOORD_0.value.subarray(2*A[0],2*A[0]+2),2*Q),i.set(I.TEXCOORD_0.value.subarray(2*A[1],2*A[1]+2),2*s);const o=2*g*3;B[o]=A[0],B[o+1]=t/3+s,B[o+2]=A[1],B[o+3]=t/3+s,B[o+4]=A[0],B[o+5]=t/3+Q}function Fg(A,g,I,C,e){return I===g?C:(A-g)*(e-C)/(I-g)+C}function pg(A){return Math.fround(A)}function Lg(A,g){if(null==g)return!1;const I=pg(A),C=pg(g);return Number.isNaN(C)?Number.isNaN(I):I===C}class Yg{static _swissColorLUTCache=new Map;static _8bitLUTCache=new Map;static _floatLUTCache=new Map;static getLUTCacheKey(A,g,I,C){return`${g}_${I}_${C}_${JSON.stringify(A.colorScale)}_${A.useSingleColor}_${JSON.stringify(A.color)}_${A.useColorClasses}_${JSON.stringify(A.colorClasses)}_${A.useColorsBasedOnValues}_${JSON.stringify(A.colorsBasedOnValues)}_${A.useHeatMap}_${A.clipLow??""}_${A.clipHigh??""}_${JSON.stringify(A.clippedColor)}_${JSON.stringify(A.nullColor)}_${JSON.stringify(A.unidentifiedColor)}`}static async generate(A,g){const I={...g},{rasters:C,width:e,height:i}=A,B=1===C.length,t=document.createElement("canvas");t.width=e,t.height=i;const Q=t.getContext("2d"),s=Q.createImageData(e,i),o=e*i*4,a=Math.floor(2.55*I.alpha);I.unidentifiedColor=this.getColorFromChromaType(I.unidentifiedColor,a),I.nullColor=this.getColorFromChromaType(I.nullColor,a),I.clippedColor=this.getColorFromChromaType(I.clippedColor,a),I.color=this.getColorFromChromaType(I.color,a),I.useChannelIndex??=null==I.useChannel?null:I.useChannel-1;const E=I.numOfChannels??(1===C.length?C[0].length/(e*i):C.length);if(I.useReliefGlaze)if(C.length>=1)s.data.set(this.getReliefGlazeRGBA(C,I,o));else{const A=new Uint8ClampedArray(o);A.fill(0),s.data.set(A)}else if(I.useSwissRelief)if(2===C.length)s.data.set(this.getColorValue(C,I,o));else{this.getDefaultColor(o,I.nullColor).forEach((A,g)=>{s.data[g]=A})}else if(null==I.useChannelIndex)if(B){const A=C[0].length/(e*i);if(1===A)I.useAutoRange&&(I.colorScaleValueRange=this.getMinMax(C[0],I)),s.data.set(this.getColorValue(C[0],I,o));else if(3===A||4===A){let g=0;for(let e=0;e<o;e+=4){const i=[C[0][g],C[0][g+1],C[0][g+2]],B=this.hasPixelsNoData(i,I.noDataValue);s.data[e]=B?I.nullColor[0]:i[0],s.data[e+1]=B?I.nullColor[1]:i[1],s.data[e+2]=B?I.nullColor[2]:i[2],s.data[e+3]=B?I.nullColor[3]:4===A?C[0][g+3]:a,g+=A}}}else{let A=0;for(let g=0;g<o;g+=4)s.data[g]=C[0][A],s.data[g+1]=C[1][A],s.data[g+2]=C[2][A],s.data[g+3]=4===C.length?C[3][A]:a,A++}else if(I.useChannelIndex<E&&I.useChannelIndex>=0){const A=1===C.length&&E>1,g=A?C[0]:C[I.useChannelIndex]??C[0],e=A?E:1;I.useAutoRange&&(I.colorScaleValueRange=this.getMinMax(g,I,e)),s.data.set(this.getColorValue(g,I,o,e))}else{console.log(`Defined channel(${g.useChannel}) or channel index(${g.useChannelIndex}) does not exist, choose a different channel or set the useChannel property to null if you want to visualize RGB(A) imagery`);this.getDefaultColor(o,I.nullColor).forEach((A,g)=>{s.data[g]=A})}Q.putImageData(s,0,0);return{map:await createImageBitmap(t),raw:C[0],width:e,height:i}}static getColorValue(A,g,I,C=1){const i=e.scale(g.colorScale?.map(A=>Array.isArray(A)?e(A):A)).domain(g.colorScaleValueRange??[0,255]),B=new Uint8ClampedArray(I),t=Math.floor(2.55*(g.alpha??100)),Q=g.colorScaleValueRange?.[0]??0,s=g.colorScaleValueRange?.[1]??255,o=Array.isArray(A),a=o?A[0]:A,E=g.useSwissRelief&&o&&A.length>=2,r=a instanceof Uint8Array||a instanceof Uint8ClampedArray,n=!r&&(a instanceof Float32Array||a instanceof Uint16Array||a instanceof Int16Array);if(E){const e=A[1],o=s-Q||1;let E=null;if(g.useHeatMap){const A=1024,I=`${Q}_${s}_${t}_${JSON.stringify(g.colorScale)}`;if(E=this._swissColorLUTCache.get(I)||null,!E){E=new Uint8ClampedArray(4*A);for(let g=0;g<A;g++){const I=i(Q+g/(A-1)*o).rgb();E[4*g]=I[0],E[4*g+1]=I[1],E[4*g+2]=I[2],E[4*g+3]=t}this._swissColorLUTCache.set(I,E)}}for(let A=0,s=g.useChannelIndex??0;A<I;A+=4,s+=C){const I=a[s],C=Lg(I,g.noDataValue);if(Number.isNaN(I)||C){B.set(g.nullColor,A);continue}let r;if(E){const A=(I-Q)/o,g=4*Math.min(1023,Math.max(0,Math.floor(1023*A)));r=[E[g],E[g+1],E[g+2],E[g+3]]}else r=this.calculateSingleColor(I,i,g,t);const n=.4+e[s]/255*.6;B[A]=Math.floor(r[0]*n),B[A+1]=Math.floor(r[1]*n),B[A+2]=Math.floor(r[2]*n),B[A+3]=r[3]}return B}if(r&&!g.useDataForOpacity){const A=g.useAutoRange?null:this.getLUTCacheKey(g,Q,s,t);let e=A?this._8bitLUTCache.get(A)??null:null;if(!e){e=new Uint8ClampedArray(1024);for(let A=0;A<256;A++)null!=g.clipLow&&A<=g.clipLow||null!=g.clipHigh&&A>=g.clipHigh?e.set(g.clippedColor,4*A):e.set(this.calculateSingleColor(A,i,g,t),4*A);A&&this._8bitLUTCache.set(A,e)}for(let A=0,i=g.useChannelIndex??0;A<I;A+=4,i+=C){const g=4*a[i];B[A]=e[g],B[A+1]=e[g+1],B[A+2]=e[g+2],B[A+3]=e[g+3]}return B}if(n&&g.useHeatMap&&!g.useSingleColor&&!g.useColorClasses&&!g.useColorsBasedOnValues&&!g.useDataForOpacity){const A=1024,e=s-Q||1,o=g.useAutoRange?null:this.getLUTCacheKey(g,Q,s,t);let E=o?this._floatLUTCache.get(o)??null:null;if(!E){E=new Uint8ClampedArray(4*A);for(let I=0;I<A;I++){const C=Q+I/(A-1)*e;if(null!=g.clipLow&&C<=g.clipLow||null!=g.clipHigh&&C>=g.clipHigh)E.set(g.clippedColor,4*I);else{const A=i(C).rgb();E[4*I]=A[0],E[4*I+1]=A[1],E[4*I+2]=A[2],E[4*I+3]=t}}o&&this._floatLUTCache.set(o,E)}for(let i=0,t=g.useChannelIndex??0;i<I;i+=4,t+=C){const I=a[t];if(this.isInvalid(I,g))B.set(this.getInvalidColor(I,g),i);else{const g=(I-Q)/e,C=4*Math.min(A-1,Math.max(0,Math.floor(g*(A-1))));B[i]=E[C],B[i+1]=E[C+1],B[i+2]=E[C+2],B[i+3]=E[C+3]}}return B}let h=g.useChannelIndex??0;for(let A=0;A<I;A+=4){const I=a[h];let e;e=null!=g.clipLow&&I<=g.clipLow||null!=g.clipHigh&&I>=g.clipHigh?g.clippedColor:this.calculateSingleColor(I,i,g,t),g.useDataForOpacity&&!this.isInvalid(I,g)&&(e[3]=Fg(I,Q,s,0,255)),B.set(e,A),h+=C}return B}static getReliefGlazeRGBA(A,g,I){const C=A[0],e=(g.maxGlazeAlpha??128)/255,i=new Uint8Array(256);for(let A=0;A<256;A++)if(0===A)i[A]=0;else{const g=Math.abs(A-128)/128,I=A<128?.6:.8;i[A]=Math.floor(255*Math.pow(g,I)*e)}const B=new Uint8ClampedArray(I);let t=0;for(let A=0;A<I;A+=4){const g=C[t],I=g<128?0:255,e=i[g];B[A]=I,B[A+1]=I,B[A+2]=I,B[A+3]=e,t++}return B}static calculateSingleColor(A,g,I,C){if(this.isInvalid(A,I))return I.nullColor;if(I.useSingleColor)return I.color;if(I.useColorClasses){const g=this.findClassIndex(A,I);return g>-1?[...e(Array.isArray(I.colorClasses[g][0])?e(I.colorClasses[g][0]):I.colorClasses[g][0]).rgb(),C]:I.unidentifiedColor}if(I.useColorsBasedOnValues){const g=I.colorsBasedOnValues?.find(([g])=>g===A);return g?[...e(Array.isArray(g[1])?e(g[1]):g[1]).rgb(),C]:I.unidentifiedColor}return I.useHeatMap?[...g(A).rgb(),C]:I.unidentifiedColor}static findClassIndex(A,g){if(!g.colorClasses)return-1;for(let I=0;I<g.colorClasses.length;I++){const[,[C,e],i]=g.colorClasses[I],[B,t]=i||(I===g.colorClasses.length-1?[!0,!0]:[!0,!1]);if((B?A>=C:A>C)&&(t?A<=e:A<e))return I}return-1}static getDefaultColor(A,g){const I=new Uint8ClampedArray(A);for(let C=0;C<A;C+=4)[I[C],I[C+1],I[C+2],I[C+3]]=g;return I}static isInvalid(A,g){return Number.isNaN(A)||Lg(A,g.noDataValue)}static getInvalidColor(A,g){return g.nullColor}static getMinMax(A,g,I=1){let C=-1/0,e=1/0;for(let i=g.useChannelIndex??0;i<A.length;i+=I){const I=A[i];this.isInvalid(I,g)||(I>C&&(C=I),I<e&&(e=I))}return C===-1/0?g.colorScaleValueRange||[0,255]:[e,C]}static getColorFromChromaType(A,g=255){return Array.isArray(A)&&4===A.length?A:[...e(A).rgb(),g]}static hasPixelsNoData(A,g){return void 0!==g&&A.every(A=>Lg(A,g))}}class Ug{static computeGradients(A,g,I,C,e,i,B,t,Q,s=!0){return{dzdx:(I+2*e+t-(A+2*C+i))*Q,dzdy:s?(A+2*g+I-(i+2*B+t))*Q:(i+2*B+t-(A+2*g+I))*Q}}static calculateSlope(A,g,I=1,C){const e=256,i=258,B=new Float32Array(65536),t=1/(8*g),Q=180/Math.PI;for(let g=0;g<e;g++)for(let s=0;s<e;s++){const o=g*i+s;if(Lg(A[o+i+1],C)){B[g*e+s]=NaN;continue}const a=A[o],E=A[o+1],r=A[o+2],n=A[o+i],h=A[o+i+2],l=A[o+516],c=A[o+516+1],w=A[o+516+2],{dzdx:D,dzdy:d}=this.computeGradients(a,E,r,n,h,l,c,w,t,!1),y=Math.atan(I*Math.sqrt(D*D+d*d));B[g*e+s]=y*Q}return B}static calculateHillshade(A,g,I=315,C=45,e=1,i){const B=256,t=258,Q=new Float32Array(65536),s=(90-C)*(Math.PI/180);let o=360-I+90;o>=360&&(o-=360);const a=o*(Math.PI/180),E=1/(8*g);for(let g=0;g<B;g++)for(let I=0;I<B;I++){const C=g*t+I;if(Lg(A[C+t+1],i)){Q[g*B+I]=NaN;continue}const o=A[C],r=A[C+1],n=A[C+2],h=A[C+t],l=A[C+t+2],c=A[C+516],w=A[C+516+1],D=A[C+516+2],{dzdx:d,dzdy:y}=this.computeGradients(o,r,n,h,l,c,w,D,E,!0),G=Math.atan(e*Math.sqrt(d*d+y*y)),u=Math.atan2(y,-d),S=255*(Math.cos(s)*Math.cos(G)+Math.sin(s)*Math.sin(G)*Math.cos(a-u));Q[g*B+I]=Math.max(0,Math.min(255,S))}return Q}static calculateMultiHillshade(A,g,I=1,C){const e=256,i=258,B=new Float32Array(65536),t=1/(8*g),Q=[{az:315,alt:45,weight:.6},{az:225,alt:35,weight:.25},{az:0,alt:35,weight:.15}].map(A=>{const g=(90-A.alt)*(Math.PI/180);let I=360-A.az+90;return I>=360&&(I-=360),{zCos:Math.cos(g),zSin:Math.sin(g),aRad:I*(Math.PI/180),w:A.weight}});for(let g=0;g<e;g++)for(let s=0;s<e;s++){const o=g*i+s;if(Lg(A[o+i+1],C)){B[g*e+s]=NaN;continue}const a=A[o],E=A[o+1],r=A[o+2],n=A[o+i],h=A[o+i+2],l=A[o+516],c=A[o+516+1],w=A[o+516+2],{dzdx:D,dzdy:d}=this.computeGradients(a,E,r,n,h,l,c,w,t,!0),y=Math.atan(I*Math.sqrt(D*D+d*d)),G=Math.atan2(d,-D),u=Math.cos(y),S=Math.sin(y);let f=0;for(const A of Q){const g=A.zCos*u+A.zSin*S*Math.cos(A.aRad-G);f+=Math.max(0,g)*A.w}B[g*e+s]=Math.min(255,255*f)}return B}}class mg{static _swissReliefLUT=null;static _lastWeight=null;static getSwissReliefLUT(A=.5){if(this._swissReliefLUT&&this._lastWeight===A)return this._swissReliefLUT;const g=new Float32Array(65536);for(let I=0;I<256;I++){const C=I/255;for(let e=0;e<256;e++){const i=1-e/255*A;g[I<<8|e]=Math.max(.01,C*i)}}return this._swissReliefLUT=g,this._lastWeight=A,g}static composeSwissRelief(A,g,I,C,e){const i=g.swissSlopeWeight??.5,B=Ug.calculateSlope(A,I,g.zFactor??1,g.noDataValue),t=Ug.calculateMultiHillshade(A,I,g.zFactor??1,g.noDataValue),Q=this.getSwissReliefLUT(i),s=new Uint8ClampedArray(C*e),o=255/90;for(let A=0;A<C*e;A++){if(isNaN(B[A])){s[A]=0;continue}const g=Math.max(0,Math.min(255,B[A]*o|0)),I=0|Math.max(0,Math.min(255,t[A]));s[A]=Math.max(1,255*Q[I<<8|g]|0)}return s}}class Mg{static async generate(A,g,I,C,e){const{width:B,height:t}=A,Q=258===B,s=this.computeTerrainData(A,g);let o=Q?this.extractMeshRaster(s):s;const a=Q?257:B,E=Q?257:t,{terrainSkirtHeight:r,verticalExaggeration:n=1}=g;let h,l;if(C){const A=await C.computeMesh({terrain:o,meshMaxError:I,tesselator:g.tesselator||"martini",width:a,height:E,signal:e});h={vertices:A.vertices,triangles:A.triangles},l=A.terrain,o=A.terrain}else{switch(g.tesselator){case"martini":default:h=this.getMartiniTileMesh(I,a,o);break;case"delatin":h=this.getDelatinTileMesh(I,a,E,o)}l=o}const{vertices:c}=h;let{triangles:w}=h,D=this.getMeshAttributes(c,l,a,E,A.bounds,n);const d=i.getMeshBoundingBox(D);if(r){const A=r*n;if(A>0){const{attributes:g,triangles:I}=kg(D,w,A);D=g,w=I}}const y=257===a?257:a+1,G=257===E?257:E+1,u={map:{loaderData:{header:{}},header:{vertexCount:w.length,boundingBox:d},mode:4,indices:{value:Uint32Array.from(w),size:1},attributes:D},raw:o,width:y,height:G},S=!!g.skipTexture;if(Q&&g.useSwissRelief){const I=A.cellSizeMeters??(A.bounds[2]-A.bounds[0])/256,C=this.preserveNoDataForKernel(s,A.rasters[0],g.noDataValue),e=mg.composeSwissRelief(C,g,I,256,256);if(u.rawDerived=e,!S&&this.hasVisualizationOptions(g)){const A=this.cropRaster(o,y,G,256,256),I=await Yg.generate({width:256,height:256,rasters:[A,e]},{...g,type:"image"});u.texture=I.map}}else if(Q&&(g.useSlope||g.useHillshade)){const I=A.cellSizeMeters??(A.bounds[2]-A.bounds[0])/256,C=g.zFactor??1;g.useSlope&&g.useHillshade&&console.warn("[TerrainGenerator] useSlope and useHillshade are mutually exclusive; useSlope takes precedence.");const e=this.preserveNoDataForKernel(s,A.rasters[0],g.noDataValue);let i;if(i=g.useSlope?Ug.calculateSlope(e,I,C,g.noDataValue):Ug.calculateHillshade(e,I,g.hillshadeAzimuth??315,g.hillshadeAltitude??45,C,g.noDataValue),u.rawDerived=i,!S&&this.hasVisualizationOptions(g)){const A=await Yg.generate({width:256,height:256,rasters:[i]},{...g,type:"image"});u.texture=A.map}}else if(!S&&this.hasVisualizationOptions(g)){const I=g.multiplier??1,C=g.noDataValue,e=A.rasters[0],i=A.width,B=A.height,t=Math.max(1,Math.round(e.length/(i*B))),Q=g.useChannelIndex??(null!=g.useChannel?g.useChannel-1:0),s=new Float32Array(65536);for(let A=0;A<256;A++)for(let g=0;g<256;g++){const o=Math.min(g,i-1),a=e[(Math.min(A,B-1)*i+o)*t+Q],E=Lg(a,C);s[256*A+g]=E?C*I:a*I}const o={...g,type:"image",useChannelIndex:0,numOfChannels:1,noDataValue:void 0!==C?C*I:void 0},a=await Yg.generate({width:256,height:256,rasters:[s]},o);u.texture=a.map}return u}static extractMeshRaster(A){const g=257,I=new Float32Array(66049);for(let C=0;C<g;C++)for(let e=0;e<g;e++)I[C*g+e]=A[258*(C+1)+(e+1)];return I}static hasVisualizationOptions(A){return!!(A.useSingleColor||A.useHeatMap||A.useSwissRelief||A.useColorsBasedOnValues||A.useColorClasses)}static preserveNoDataForKernel(A,g,I){const C=new Float32Array(A.length);if(null!=I&&g&&g.length===A.length)for(let e=0;e<A.length;e++){const i=Lg(g[e],I);C[e]=i?I:A[e]}else C.set(A);return C}static cropRaster(A,g,I,C,e){const i=new Float32Array(C*e);for(let I=0;I<e;I++)for(let e=0;e<C;e++)i[I*C+e]=A[I*g+e];return i}static computeTerrainData(A,g){const{width:I,height:C,rasters:e}=A,i={...g};i.useChannelIndex??=null==i.useChannel?null:i.useChannel-1;const B=e.length>1,t=B?e[i.useChannelIndex??0]??e[0]:e[0],Q=258===I,s=257===I,o=new Float32Array((Q?258:s?257:I+1)*(Q?258:s?257:C+1)),a=B?1:t.length/(I*C);let E=B?0:i.useChannelIndex??0;const r=g.terrainMinValue??0;for(let A=0;A<C;A++)for(let C=0;C<I;C++){const e=g.multiplier??1;let i=Lg(t[E],g.noDataValue)?r:t[E]*e;(Number.isNaN(i)||i<-34e37||i>34e37)&&(i=r);o[Q||s?A*I+C:A*(I+1)+C]=i,E+=a}if(!Q&&!s){for(let A=(I+1)*I,g=0;g<I;g++,A++)o[A]=o[A-I-1];for(let A=C,g=0;g<C+1;g++,A+=C+1)o[A]=o[A-1]}return o}static getMartiniTileMesh(A,g,I){const C=new ug(257===g?257:g+1).createTile(I),{vertices:e,triangles:i}=C.getMesh(A);return{vertices:e,triangles:i}}static getDelatinTileMesh(A,g,I,C){const e=new Ng(C,257===g?257:g+1,257===I?257:I+1);e.run(A);const{coords:i,triangles:B}=e;return{vertices:i,triangles:B}}static getMeshAttributes(A,g,I,C,e,i=1){const B=257===I?257:I+1,t=A.length/2,Q=new Float32Array(3*t),s=new Float32Array(2*t),[o,a,E,r]=e||[0,0,I,C],n=257===I?I-1:I,h=257===C?C-1:C,l=(E-o)/n,c=(r-a)/h;for(let I=0;I<t;I++){const C=A[2*I],e=A[2*I+1],t=e*B+C;Q[3*I]=C*l+o,Q[3*I+1]=-e*c+r,Q[3*I+2]=g[t]*i,s[2*I]=C/n,s[2*I+1]=e/h}return{POSITION:{value:Q,size:3},TEXCOORD_0:{value:s,size:2}}}}class bg{data;async setUrl(A){const g=await fetch(A),I=await g.arrayBuffer(),C=await yg(I),e=await C.getImage(0);this.data=e}async getMap(A,g,I,C,e){const i=bg.resolveVisualizationMode({...Gg,...g},g);switch(i.type){case"image":return this.getBitmap(A,i);case"terrain":return this.getHeightmap(A,i,I,C,e);default:return null}}static resolveVisualizationMode(A,g){const I=["useSingleColor","useColorClasses","useColorsBasedOnValues","useHeatMap"],C=I.filter(A=>!0===g[A]),e={...A};if(C.length>0){for(const A of I)e[A]=!1;for(const A of C)e[A]=!0}else if("terrain"===A.type){(g.useSwissRelief||g.useSlope||g.useHillshade)&&!A.skipTexture||(e.useHeatMap=!1,e.useSingleColor=!0,e.color=A.terrainColor)}return e}async getHeightmap(A,g,I,C,e){let i,B,t,Q,s=[];return"string"==typeof A?(await this.setUrl(A),s=await this.data.readRasters(),i=this.data.getWidth(),B=this.data.getHeight(),t=this.data.getBoundingBox()):(s=A.rasters,i=A.width,B=A.height,t=A.bounds,Q=A.cellSizeMeters),await Mg.generate({width:i,height:B,rasters:s,bounds:t,cellSizeMeters:Q},g,I,C,e)}async getBitmap(A,g){let I,C,e=[];return"string"==typeof A?(await this.setUrl(A),e=await this.data.readRasters(),I=this.data.getWidth(),C=this.data.getHeight()):(e=A.rasters,I=A.width,C=A.height),Yg.generate({width:I,height:C,rasters:e},g)}}function Kg(A,g,I){var C=function(A){return atob(A)}(A),e=C.indexOf("\n",10)+1,i=C.substring(e)+"",B=new Blob([i],{type:"application/javascript"});return URL.createObjectURL(B)}function Hg(A,g,I){var C;return function(g){return C=C||Kg(A),new Worker(C,g)}}var Jg=Hg("Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwooZnVuY3Rpb24gKCkgewogICAgJ3VzZSBzdHJpY3QnOwoKICAgIGNsYXNzIE1hcnRpbmkgewogICAgICAgIGNvbnN0cnVjdG9yKGdyaWRTaXplID0gMjU3KSB7CiAgICAgICAgICAgIHRoaXMuZ3JpZFNpemUgPSBncmlkU2l6ZTsKICAgICAgICAgICAgY29uc3QgdGlsZVNpemUgPSBncmlkU2l6ZSAtIDE7CiAgICAgICAgICAgIGlmICh0aWxlU2l6ZSAmICh0aWxlU2l6ZSAtIDEpKSB0aHJvdyBuZXcgRXJyb3IoCiAgICAgICAgICAgICAgICBgRXhwZWN0ZWQgZ3JpZCBzaXplIHRvIGJlIDJebisxLCBnb3QgJHtncmlkU2l6ZX0uYCk7CgogICAgICAgICAgICB0aGlzLm51bVRyaWFuZ2xlcyA9IHRpbGVTaXplICogdGlsZVNpemUgKiAyIC0gMjsKICAgICAgICAgICAgdGhpcy5udW1QYXJlbnRUcmlhbmdsZXMgPSB0aGlzLm51bVRyaWFuZ2xlcyAtIHRpbGVTaXplICogdGlsZVNpemU7CgogICAgICAgICAgICB0aGlzLmluZGljZXMgPSBuZXcgVWludDMyQXJyYXkodGhpcy5ncmlkU2l6ZSAqIHRoaXMuZ3JpZFNpemUpOwoKICAgICAgICAgICAgLy8gY29vcmRpbmF0ZXMgZm9yIGFsbCBwb3NzaWJsZSB0cmlhbmdsZXMgaW4gYW4gUlRJTiB0aWxlCiAgICAgICAgICAgIHRoaXMuY29vcmRzID0gbmV3IFVpbnQxNkFycmF5KHRoaXMubnVtVHJpYW5nbGVzICogNCk7CgogICAgICAgICAgICAvLyBnZXQgdHJpYW5nbGUgY29vcmRpbmF0ZXMgZnJvbSBpdHMgaW5kZXggaW4gYW4gaW1wbGljaXQgYmluYXJ5IHRyZWUKICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm51bVRyaWFuZ2xlczsgaSsrKSB7CiAgICAgICAgICAgICAgICBsZXQgaWQgPSBpICsgMjsKICAgICAgICAgICAgICAgIGxldCBheCA9IDAsIGF5ID0gMCwgYnggPSAwLCBieSA9IDAsIGN4ID0gMCwgY3kgPSAwOwogICAgICAgICAgICAgICAgaWYgKGlkICYgMSkgewogICAgICAgICAgICAgICAgICAgIGJ4ID0gYnkgPSBjeCA9IHRpbGVTaXplOyAvLyBib3R0b20tbGVmdCB0cmlhbmdsZQogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBheCA9IGF5ID0gY3kgPSB0aWxlU2l6ZTsgLy8gdG9wLXJpZ2h0IHRyaWFuZ2xlCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB3aGlsZSAoKGlkID4+PSAxKSA+IDEpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBteCA9IChheCArIGJ4KSA+PiAxOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IG15ID0gKGF5ICsgYnkpID4+IDE7CgogICAgICAgICAgICAgICAgICAgIGlmIChpZCAmIDEpIHsgLy8gbGVmdCBoYWxmCiAgICAgICAgICAgICAgICAgICAgICAgIGJ4ID0gYXg7IGJ5ID0gYXk7CiAgICAgICAgICAgICAgICAgICAgICAgIGF4ID0gY3g7IGF5ID0gY3k7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsgLy8gcmlnaHQgaGFsZgogICAgICAgICAgICAgICAgICAgICAgICBheCA9IGJ4OyBheSA9IGJ5OwogICAgICAgICAgICAgICAgICAgICAgICBieCA9IGN4OyBieSA9IGN5OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBjeCA9IG14OyBjeSA9IG15OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY29uc3QgayA9IGkgKiA0OwogICAgICAgICAgICAgICAgdGhpcy5jb29yZHNbayArIDBdID0gYXg7CiAgICAgICAgICAgICAgICB0aGlzLmNvb3Jkc1trICsgMV0gPSBheTsKICAgICAgICAgICAgICAgIHRoaXMuY29vcmRzW2sgKyAyXSA9IGJ4OwogICAgICAgICAgICAgICAgdGhpcy5jb29yZHNbayArIDNdID0gYnk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGNyZWF0ZVRpbGUodGVycmFpbikgewogICAgICAgICAgICByZXR1cm4gbmV3IFRpbGUodGVycmFpbiwgdGhpcyk7CiAgICAgICAgfQogICAgfQoKICAgIGNsYXNzIFRpbGUgewogICAgICAgIGNvbnN0cnVjdG9yKHRlcnJhaW4sIG1hcnRpbmkpIHsKICAgICAgICAgICAgY29uc3Qgc2l6ZSA9IG1hcnRpbmkuZ3JpZFNpemU7CiAgICAgICAgICAgIGlmICh0ZXJyYWluLmxlbmd0aCAhPT0gc2l6ZSAqIHNpemUpIHRocm93IG5ldyBFcnJvcigKICAgICAgICAgICAgICAgIGBFeHBlY3RlZCB0ZXJyYWluIGRhdGEgb2YgbGVuZ3RoICR7c2l6ZSAqIHNpemV9ICgke3NpemV9IHggJHtzaXplfSksIGdvdCAke3RlcnJhaW4ubGVuZ3RofS5gKTsKCiAgICAgICAgICAgIHRoaXMudGVycmFpbiA9IHRlcnJhaW47CiAgICAgICAgICAgIHRoaXMubWFydGluaSA9IG1hcnRpbmk7CiAgICAgICAgICAgIHRoaXMuZXJyb3JzID0gbmV3IEZsb2F0MzJBcnJheSh0ZXJyYWluLmxlbmd0aCk7CiAgICAgICAgICAgIHRoaXMudXBkYXRlKCk7CiAgICAgICAgfQoKICAgICAgICB1cGRhdGUoKSB7CiAgICAgICAgICAgIGNvbnN0IHtudW1UcmlhbmdsZXMsIG51bVBhcmVudFRyaWFuZ2xlcywgY29vcmRzLCBncmlkU2l6ZTogc2l6ZX0gPSB0aGlzLm1hcnRpbmk7CiAgICAgICAgICAgIGNvbnN0IHt0ZXJyYWluLCBlcnJvcnN9ID0gdGhpczsKCiAgICAgICAgICAgIC8vIGl0ZXJhdGUgb3ZlciBhbGwgcG9zc2libGUgdHJpYW5nbGVzLCBzdGFydGluZyBmcm9tIHRoZSBzbWFsbGVzdCBsZXZlbAogICAgICAgICAgICBmb3IgKGxldCBpID0gbnVtVHJpYW5nbGVzIC0gMTsgaSA+PSAwOyBpLS0pIHsKICAgICAgICAgICAgICAgIGNvbnN0IGsgPSBpICogNDsKICAgICAgICAgICAgICAgIGNvbnN0IGF4ID0gY29vcmRzW2sgKyAwXTsKICAgICAgICAgICAgICAgIGNvbnN0IGF5ID0gY29vcmRzW2sgKyAxXTsKICAgICAgICAgICAgICAgIGNvbnN0IGJ4ID0gY29vcmRzW2sgKyAyXTsKICAgICAgICAgICAgICAgIGNvbnN0IGJ5ID0gY29vcmRzW2sgKyAzXTsKICAgICAgICAgICAgICAgIGNvbnN0IG14ID0gKGF4ICsgYngpID4+IDE7CiAgICAgICAgICAgICAgICBjb25zdCBteSA9IChheSArIGJ5KSA+PiAxOwogICAgICAgICAgICAgICAgY29uc3QgY3ggPSBteCArIG15IC0gYXk7CiAgICAgICAgICAgICAgICBjb25zdCBjeSA9IG15ICsgYXggLSBteDsKCiAgICAgICAgICAgICAgICAvLyBjYWxjdWxhdGUgZXJyb3IgaW4gdGhlIG1pZGRsZSBvZiB0aGUgbG9uZyBlZGdlIG9mIHRoZSB0cmlhbmdsZQogICAgICAgICAgICAgICAgY29uc3QgaW50ZXJwb2xhdGVkSGVpZ2h0ID0gKHRlcnJhaW5bYXkgKiBzaXplICsgYXhdICsgdGVycmFpbltieSAqIHNpemUgKyBieF0pIC8gMjsKICAgICAgICAgICAgICAgIGNvbnN0IG1pZGRsZUluZGV4ID0gbXkgKiBzaXplICsgbXg7CiAgICAgICAgICAgICAgICBjb25zdCBtaWRkbGVFcnJvciA9IE1hdGguYWJzKGludGVycG9sYXRlZEhlaWdodCAtIHRlcnJhaW5bbWlkZGxlSW5kZXhdKTsKCiAgICAgICAgICAgICAgICBlcnJvcnNbbWlkZGxlSW5kZXhdID0gTWF0aC5tYXgoZXJyb3JzW21pZGRsZUluZGV4XSwgbWlkZGxlRXJyb3IpOwoKICAgICAgICAgICAgICAgIGlmIChpIDwgbnVtUGFyZW50VHJpYW5nbGVzKSB7IC8vIGJpZ2dlciB0cmlhbmdsZXM7IGFjY3VtdWxhdGUgZXJyb3Igd2l0aCBjaGlsZHJlbgogICAgICAgICAgICAgICAgICAgIGNvbnN0IGxlZnRDaGlsZEluZGV4ID0gKChheSArIGN5KSA+PiAxKSAqIHNpemUgKyAoKGF4ICsgY3gpID4+IDEpOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJpZ2h0Q2hpbGRJbmRleCA9ICgoYnkgKyBjeSkgPj4gMSkgKiBzaXplICsgKChieCArIGN4KSA+PiAxKTsKICAgICAgICAgICAgICAgICAgICBlcnJvcnNbbWlkZGxlSW5kZXhdID0gTWF0aC5tYXgoZXJyb3JzW21pZGRsZUluZGV4XSwgZXJyb3JzW2xlZnRDaGlsZEluZGV4XSwgZXJyb3JzW3JpZ2h0Q2hpbGRJbmRleF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBnZXRNZXNoKG1heEVycm9yID0gMCkgewogICAgICAgICAgICBjb25zdCB7Z3JpZFNpemU6IHNpemUsIGluZGljZXN9ID0gdGhpcy5tYXJ0aW5pOwogICAgICAgICAgICBjb25zdCB7ZXJyb3JzfSA9IHRoaXM7CiAgICAgICAgICAgIGxldCBudW1WZXJ0aWNlcyA9IDA7CiAgICAgICAgICAgIGxldCBudW1UcmlhbmdsZXMgPSAwOwogICAgICAgICAgICBjb25zdCBtYXggPSBzaXplIC0gMTsKCiAgICAgICAgICAgIC8vIHVzZSBhbiBpbmRleCBncmlkIHRvIGtlZXAgdHJhY2sgb2YgdmVydGljZXMgdGhhdCB3ZXJlIGFscmVhZHkgdXNlZCB0byBhdm9pZCBkdXBsaWNhdGlvbgogICAgICAgICAgICBpbmRpY2VzLmZpbGwoMCk7CgogICAgICAgICAgICAvLyByZXRyaWV2ZSBtZXNoIGluIHR3byBzdGFnZXMgdGhhdCBib3RoIHRyYXZlcnNlIHRoZSBlcnJvciBtYXA6CiAgICAgICAgICAgIC8vIC0gY291bnRFbGVtZW50czogZmluZCB1c2VkIHZlcnRpY2VzIChhbmQgYXNzaWduIGVhY2ggYW4gaW5kZXgpLCBhbmQgY291bnQgdHJpYW5nbGVzIChmb3IgbWluaW11bSBhbGxvY2F0aW9uKQogICAgICAgICAgICAvLyAtIHByb2Nlc3NUcmlhbmdsZTogZmlsbCB0aGUgYWxsb2NhdGVkIHZlcnRpY2VzICYgdHJpYW5nbGVzIHR5cGVkIGFycmF5cwoKICAgICAgICAgICAgZnVuY3Rpb24gY291bnRFbGVtZW50cyhheCwgYXksIGJ4LCBieSwgY3gsIGN5KSB7CiAgICAgICAgICAgICAgICBjb25zdCBteCA9IChheCArIGJ4KSA+PiAxOwogICAgICAgICAgICAgICAgY29uc3QgbXkgPSAoYXkgKyBieSkgPj4gMTsKCiAgICAgICAgICAgICAgICBpZiAoTWF0aC5hYnMoYXggLSBjeCkgKyBNYXRoLmFicyhheSAtIGN5KSA+IDEgJiYgZXJyb3JzW215ICogc2l6ZSArIG14XSA+IG1heEVycm9yKSB7CiAgICAgICAgICAgICAgICAgICAgY291bnRFbGVtZW50cyhjeCwgY3ksIGF4LCBheSwgbXgsIG15KTsKICAgICAgICAgICAgICAgICAgICBjb3VudEVsZW1lbnRzKGJ4LCBieSwgY3gsIGN5LCBteCwgbXkpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBpbmRpY2VzW2F5ICogc2l6ZSArIGF4XSA9IGluZGljZXNbYXkgKiBzaXplICsgYXhdIHx8ICsrbnVtVmVydGljZXM7CiAgICAgICAgICAgICAgICAgICAgaW5kaWNlc1tieSAqIHNpemUgKyBieF0gPSBpbmRpY2VzW2J5ICogc2l6ZSArIGJ4XSB8fCArK251bVZlcnRpY2VzOwogICAgICAgICAgICAgICAgICAgIGluZGljZXNbY3kgKiBzaXplICsgY3hdID0gaW5kaWNlc1tjeSAqIHNpemUgKyBjeF0gfHwgKytudW1WZXJ0aWNlczsKICAgICAgICAgICAgICAgICAgICBudW1UcmlhbmdsZXMrKzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBjb3VudEVsZW1lbnRzKDAsIDAsIG1heCwgbWF4LCBtYXgsIDApOwogICAgICAgICAgICBjb3VudEVsZW1lbnRzKG1heCwgbWF4LCAwLCAwLCAwLCBtYXgpOwoKICAgICAgICAgICAgY29uc3QgdmVydGljZXMgPSBuZXcgVWludDE2QXJyYXkobnVtVmVydGljZXMgKiAyKTsKICAgICAgICAgICAgY29uc3QgdHJpYW5nbGVzID0gbmV3IFVpbnQzMkFycmF5KG51bVRyaWFuZ2xlcyAqIDMpOwogICAgICAgICAgICBsZXQgdHJpSW5kZXggPSAwOwoKICAgICAgICAgICAgZnVuY3Rpb24gcHJvY2Vzc1RyaWFuZ2xlKGF4LCBheSwgYngsIGJ5LCBjeCwgY3kpIHsKICAgICAgICAgICAgICAgIGNvbnN0IG14ID0gKGF4ICsgYngpID4+IDE7CiAgICAgICAgICAgICAgICBjb25zdCBteSA9IChheSArIGJ5KSA+PiAxOwoKICAgICAgICAgICAgICAgIGlmIChNYXRoLmFicyhheCAtIGN4KSArIE1hdGguYWJzKGF5IC0gY3kpID4gMSAmJiBlcnJvcnNbbXkgKiBzaXplICsgbXhdID4gbWF4RXJyb3IpIHsKICAgICAgICAgICAgICAgICAgICAvLyB0cmlhbmdsZSBkb2Vzbid0IGFwcHJveGltYXRlIHRoZSBzdXJmYWNlIHdlbGwgZW5vdWdoOyBkcmlsbCBkb3duIGZ1cnRoZXIKICAgICAgICAgICAgICAgICAgICBwcm9jZXNzVHJpYW5nbGUoY3gsIGN5LCBheCwgYXksIG14LCBteSk7CiAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc1RyaWFuZ2xlKGJ4LCBieSwgY3gsIGN5LCBteCwgbXkpOwoKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgLy8gYWRkIGEgdHJpYW5nbGUKICAgICAgICAgICAgICAgICAgICBjb25zdCBhID0gaW5kaWNlc1theSAqIHNpemUgKyBheF0gLSAxOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IGIgPSBpbmRpY2VzW2J5ICogc2l6ZSArIGJ4XSAtIDE7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgYyA9IGluZGljZXNbY3kgKiBzaXplICsgY3hdIC0gMTsKCiAgICAgICAgICAgICAgICAgICAgdmVydGljZXNbMiAqIGFdID0gYXg7CiAgICAgICAgICAgICAgICAgICAgdmVydGljZXNbMiAqIGEgKyAxXSA9IGF5OwoKICAgICAgICAgICAgICAgICAgICB2ZXJ0aWNlc1syICogYl0gPSBieDsKICAgICAgICAgICAgICAgICAgICB2ZXJ0aWNlc1syICogYiArIDFdID0gYnk7CgogICAgICAgICAgICAgICAgICAgIHZlcnRpY2VzWzIgKiBjXSA9IGN4OwogICAgICAgICAgICAgICAgICAgIHZlcnRpY2VzWzIgKiBjICsgMV0gPSBjeTsKCiAgICAgICAgICAgICAgICAgICAgdHJpYW5nbGVzW3RyaUluZGV4KytdID0gYTsKICAgICAgICAgICAgICAgICAgICB0cmlhbmdsZXNbdHJpSW5kZXgrK10gPSBiOwogICAgICAgICAgICAgICAgICAgIHRyaWFuZ2xlc1t0cmlJbmRleCsrXSA9IGM7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcHJvY2Vzc1RyaWFuZ2xlKDAsIDAsIG1heCwgbWF4LCBtYXgsIDApOwogICAgICAgICAgICBwcm9jZXNzVHJpYW5nbGUobWF4LCBtYXgsIDAsIDAsIDAsIG1heCk7CgogICAgICAgICAgICByZXR1cm4ge3ZlcnRpY2VzLCB0cmlhbmdsZXN9OwogICAgICAgIH0KICAgIH0KCiAgICAvLyBsb2FkZXJzLmdsCiAgICAvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUCiAgICAvLyBDb3B5cmlnaHQgKGMpIHZpcy5nbCBjb250cmlidXRvcnMKICAgIC8vIElTQyBMaWNlbnNlCiAgICAvLyBDb3B5cmlnaHQoYykgMjAxOSwgTWljaGFlbCBGb2dsZW1hbiwgVmxhZGltaXIgQWdhZm9ua2luCiAgICAvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnQgKi8KICAgIC8vIEB0cy1ub2NoZWNrCiAgICAvKiBlc2xpbnQtZW5hYmxlIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudCAqLwogICAgZnVuY3Rpb24gb3JpZW50KGF4LCBheSwgYngsIGJ5LCBjeCwgY3kpIHsKICAgICAgICByZXR1cm4gKGJ4IC0gY3gpICogKGF5IC0gY3kpIC0gKGJ5IC0gY3kpICogKGF4IC0gY3gpOwogICAgfQogICAgY2xhc3MgRGVsYXRpbiB7CiAgICAgICAgY29uc3RydWN0b3IoZGF0YSwgd2lkdGgsIGhlaWdodCA9IHdpZHRoKSB7CiAgICAgICAgICAgIHRoaXMuZGF0YSA9IGRhdGE7IC8vIGhlaWdodCBkYXRhCiAgICAgICAgICAgIHRoaXMud2lkdGggPSB3aWR0aDsKICAgICAgICAgICAgdGhpcy5oZWlnaHQgPSBoZWlnaHQ7CiAgICAgICAgICAgIHRoaXMuY29vcmRzID0gW107IC8vIHZlcnRleCBjb29yZGluYXRlcyAoeCwgeSkKICAgICAgICAgICAgdGhpcy50cmlhbmdsZXMgPSBbXTsgLy8gbWVzaCB0cmlhbmdsZSBpbmRpY2VzCiAgICAgICAgICAgIC8vIGFkZGl0aW9uYWwgdHJpYW5nbGUgZGF0YQogICAgICAgICAgICB0aGlzLl9oYWxmZWRnZXMgPSBbXTsKICAgICAgICAgICAgdGhpcy5fY2FuZGlkYXRlcyA9IFtdOwogICAgICAgICAgICB0aGlzLl9xdWV1ZUluZGljZXMgPSBbXTsKICAgICAgICAgICAgdGhpcy5fcXVldWUgPSBbXTsgLy8gcXVldWUgb2YgYWRkZWQgdHJpYW5nbGVzCiAgICAgICAgICAgIHRoaXMuX2Vycm9ycyA9IFtdOwogICAgICAgICAgICB0aGlzLl9ybXMgPSBbXTsKICAgICAgICAgICAgdGhpcy5fcGVuZGluZyA9IFtdOyAvLyB0cmlhbmdsZXMgcGVuZGluZyBhZGRpdGlvbiB0byBxdWV1ZQogICAgICAgICAgICB0aGlzLl9wZW5kaW5nTGVuID0gMDsKICAgICAgICAgICAgdGhpcy5fcm1zU3VtID0gMDsKICAgICAgICAgICAgY29uc3QgeDEgPSB3aWR0aCAtIDE7CiAgICAgICAgICAgIGNvbnN0IHkxID0gaGVpZ2h0IC0gMTsKICAgICAgICAgICAgY29uc3QgcDAgPSB0aGlzLl9hZGRQb2ludCgwLCAwKTsKICAgICAgICAgICAgY29uc3QgcDEgPSB0aGlzLl9hZGRQb2ludCh4MSwgMCk7CiAgICAgICAgICAgIGNvbnN0IHAyID0gdGhpcy5fYWRkUG9pbnQoMCwgeTEpOwogICAgICAgICAgICBjb25zdCBwMyA9IHRoaXMuX2FkZFBvaW50KHgxLCB5MSk7CiAgICAgICAgICAgIC8vIGFkZCBpbml0aWFsIHR3byB0cmlhbmdsZXMKICAgICAgICAgICAgY29uc3QgdDAgPSB0aGlzLl9hZGRUcmlhbmdsZShwMywgcDAsIHAyLCAtMSwgLTEsIC0xKTsKICAgICAgICAgICAgdGhpcy5fYWRkVHJpYW5nbGUocDAsIHAzLCBwMSwgdDAsIC0xLCAtMSk7CiAgICAgICAgICAgIHRoaXMuX2ZsdXNoKCk7CiAgICAgICAgfQogICAgICAgIC8vIHJlZmluZSB0aGUgbWVzaCB1bnRpbCBpdHMgbWF4aW11bSBlcnJvciBnZXRzIGJlbG93IHRoZSBnaXZlbiBvbmUKICAgICAgICBydW4obWF4RXJyb3IgPSAxKSB7CiAgICAgICAgICAgIHdoaWxlICh0aGlzLmdldE1heEVycm9yKCkgPiBtYXhFcnJvcikgewogICAgICAgICAgICAgICAgdGhpcy5yZWZpbmUoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAvLyByZWZpbmUgdGhlIG1lc2ggd2l0aCBhIHNpbmdsZSBwb2ludAogICAgICAgIHJlZmluZSgpIHsKICAgICAgICAgICAgdGhpcy5fc3RlcCgpOwogICAgICAgICAgICB0aGlzLl9mbHVzaCgpOwogICAgICAgIH0KICAgICAgICAvLyBtYXggZXJyb3Igb2YgdGhlIGN1cnJlbnQgbWVzaAogICAgICAgIGdldE1heEVycm9yKCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5fZXJyb3JzWzBdOwogICAgICAgIH0KICAgICAgICAvLyByb290LW1lYW4tc3F1YXJlIGRldmlhdGlvbiBvZiB0aGUgY3VycmVudCBtZXNoCiAgICAgICAgZ2V0Uk1TRCgpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Jtc1N1bSA+IDAgPyBNYXRoLnNxcnQodGhpcy5fcm1zU3VtIC8gKHRoaXMud2lkdGggKiB0aGlzLmhlaWdodCkpIDogMDsKICAgICAgICB9CiAgICAgICAgLy8gaGVpZ2h0IHZhbHVlIGF0IGEgZ2l2ZW4gcG9zaXRpb24KICAgICAgICBoZWlnaHRBdCh4LCB5KSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLmRhdGFbdGhpcy53aWR0aCAqIHkgKyB4XTsKICAgICAgICB9CiAgICAgICAgLy8gcmFzdGVyaXplIGFuZCBxdWV1ZSBhbGwgdHJpYW5nbGVzIHRoYXQgZ290IGFkZGVkIG9yIHVwZGF0ZWQgaW4gX3N0ZXAKICAgICAgICBfZmx1c2goKSB7CiAgICAgICAgICAgIGNvbnN0IHsgY29vcmRzIH0gPSB0aGlzOwogICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuX3BlbmRpbmdMZW47IGkrKykgewogICAgICAgICAgICAgICAgY29uc3QgdCA9IHRoaXMuX3BlbmRpbmdbaV07CiAgICAgICAgICAgICAgICAvLyByYXN0ZXJpemUgdHJpYW5nbGUgdG8gZmluZCBtYXhpbXVtIHBpeGVsIGVycm9yCiAgICAgICAgICAgICAgICBjb25zdCBhID0gMiAqIHRoaXMudHJpYW5nbGVzW3QgKiAzICsgMF07CiAgICAgICAgICAgICAgICBjb25zdCBiID0gMiAqIHRoaXMudHJpYW5nbGVzW3QgKiAzICsgMV07CiAgICAgICAgICAgICAgICBjb25zdCBjID0gMiAqIHRoaXMudHJpYW5nbGVzW3QgKiAzICsgMl07CiAgICAgICAgICAgICAgICB0aGlzLl9maW5kQ2FuZGlkYXRlKGNvb3Jkc1thXSwgY29vcmRzW2EgKyAxXSwgY29vcmRzW2JdLCBjb29yZHNbYiArIDFdLCBjb29yZHNbY10sIGNvb3Jkc1tjICsgMV0sIHQpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHRoaXMuX3BlbmRpbmdMZW4gPSAwOwogICAgICAgIH0KICAgICAgICAvLyByYXN0ZXJpemUgYSB0cmlhbmdsZSwgZmluZCBpdHMgbWF4IGVycm9yLCBhbmQgcXVldWUgaXQgZm9yIHByb2Nlc3NpbmcKICAgICAgICBfZmluZENhbmRpZGF0ZShwMHgsIHAweSwgcDF4LCBwMXksIHAyeCwgcDJ5LCB0KSB7CiAgICAgICAgICAgIC8vIHRyaWFuZ2xlIGJvdW5kaW5nIGJveAogICAgICAgICAgICBjb25zdCBtaW5YID0gTWF0aC5taW4ocDB4LCBwMXgsIHAyeCk7CiAgICAgICAgICAgIGNvbnN0IG1pblkgPSBNYXRoLm1pbihwMHksIHAxeSwgcDJ5KTsKICAgICAgICAgICAgY29uc3QgbWF4WCA9IE1hdGgubWF4KHAweCwgcDF4LCBwMngpOwogICAgICAgICAgICBjb25zdCBtYXhZID0gTWF0aC5tYXgocDB5LCBwMXksIHAyeSk7CiAgICAgICAgICAgIC8vIGZvcndhcmQgZGlmZmVyZW5jaW5nIHZhcmlhYmxlcwogICAgICAgICAgICBsZXQgdzAwID0gb3JpZW50KHAxeCwgcDF5LCBwMngsIHAyeSwgbWluWCwgbWluWSk7CiAgICAgICAgICAgIGxldCB3MDEgPSBvcmllbnQocDJ4LCBwMnksIHAweCwgcDB5LCBtaW5YLCBtaW5ZKTsKICAgICAgICAgICAgbGV0IHcwMiA9IG9yaWVudChwMHgsIHAweSwgcDF4LCBwMXksIG1pblgsIG1pblkpOwogICAgICAgICAgICBjb25zdCBhMDEgPSBwMXkgLSBwMHk7CiAgICAgICAgICAgIGNvbnN0IGIwMSA9IHAweCAtIHAxeDsKICAgICAgICAgICAgY29uc3QgYTEyID0gcDJ5IC0gcDF5OwogICAgICAgICAgICBjb25zdCBiMTIgPSBwMXggLSBwMng7CiAgICAgICAgICAgIGNvbnN0IGEyMCA9IHAweSAtIHAyeTsKICAgICAgICAgICAgY29uc3QgYjIwID0gcDJ4IC0gcDB4OwogICAgICAgICAgICAvLyBwcmUtbXVsdGlwbGllZCB6IHZhbHVlcyBhdCB2ZXJ0aWNlcwogICAgICAgICAgICBjb25zdCBhID0gb3JpZW50KHAweCwgcDB5LCBwMXgsIHAxeSwgcDJ4LCBwMnkpOwogICAgICAgICAgICBjb25zdCB6MCA9IHRoaXMuaGVpZ2h0QXQocDB4LCBwMHkpIC8gYTsKICAgICAgICAgICAgY29uc3QgejEgPSB0aGlzLmhlaWdodEF0KHAxeCwgcDF5KSAvIGE7CiAgICAgICAgICAgIGNvbnN0IHoyID0gdGhpcy5oZWlnaHRBdChwMngsIHAyeSkgLyBhOwogICAgICAgICAgICAvLyBpdGVyYXRlIG92ZXIgcGl4ZWxzIGluIGJvdW5kaW5nIGJveAogICAgICAgICAgICBsZXQgbWF4RXJyb3IgPSAwOwogICAgICAgICAgICBsZXQgbXggPSAwOwogICAgICAgICAgICBsZXQgbXkgPSAwOwogICAgICAgICAgICBsZXQgcm1zID0gMDsKICAgICAgICAgICAgZm9yIChsZXQgeSA9IG1pblk7IHkgPD0gbWF4WTsgeSsrKSB7CiAgICAgICAgICAgICAgICAvLyBjb21wdXRlIHN0YXJ0aW5nIG9mZnNldAogICAgICAgICAgICAgICAgbGV0IGR4ID0gMDsKICAgICAgICAgICAgICAgIGlmICh3MDAgPCAwICYmIGExMiAhPT0gMCkgewogICAgICAgICAgICAgICAgICAgIGR4ID0gTWF0aC5tYXgoZHgsIE1hdGguZmxvb3IoLXcwMCAvIGExMikpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKHcwMSA8IDAgJiYgYTIwICE9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgZHggPSBNYXRoLm1heChkeCwgTWF0aC5mbG9vcigtdzAxIC8gYTIwKSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAodzAyIDwgMCAmJiBhMDEgIT09IDApIHsKICAgICAgICAgICAgICAgICAgICBkeCA9IE1hdGgubWF4KGR4LCBNYXRoLmZsb29yKC13MDIgLyBhMDEpKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGxldCB3MCA9IHcwMCArIGExMiAqIGR4OwogICAgICAgICAgICAgICAgbGV0IHcxID0gdzAxICsgYTIwICogZHg7CiAgICAgICAgICAgICAgICBsZXQgdzIgPSB3MDIgKyBhMDEgKiBkeDsKICAgICAgICAgICAgICAgIGxldCB3YXNJbnNpZGUgPSBmYWxzZTsKICAgICAgICAgICAgICAgIGZvciAobGV0IHggPSBtaW5YICsgZHg7IHggPD0gbWF4WDsgeCsrKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gY2hlY2sgaWYgaW5zaWRlIHRyaWFuZ2xlCiAgICAgICAgICAgICAgICAgICAgaWYgKHcwID49IDAgJiYgdzEgPj0gMCAmJiB3MiA+PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHdhc0luc2lkZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbXB1dGUgeiB1c2luZyBiYXJ5Y2VudHJpYyBjb29yZGluYXRlcwogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB6ID0gejAgKiB3MCArIHoxICogdzEgKyB6MiAqIHcyOwogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkeiA9IE1hdGguYWJzKHogLSB0aGlzLmhlaWdodEF0KHgsIHkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgcm1zICs9IGR6ICogZHo7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkeiA+IG1heEVycm9yKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhFcnJvciA9IGR6OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXggPSB4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgPSB5OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHdhc0luc2lkZSkgewogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdzAgKz0gYTEyOwogICAgICAgICAgICAgICAgICAgIHcxICs9IGEyMDsKICAgICAgICAgICAgICAgICAgICB3MiArPSBhMDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB3MDAgKz0gYjEyOwogICAgICAgICAgICAgICAgdzAxICs9IGIyMDsKICAgICAgICAgICAgICAgIHcwMiArPSBiMDE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKChteCA9PT0gcDB4ICYmIG15ID09PSBwMHkpIHx8IChteCA9PT0gcDF4ICYmIG15ID09PSBwMXkpIHx8IChteCA9PT0gcDJ4ICYmIG15ID09PSBwMnkpKSB7CiAgICAgICAgICAgICAgICBtYXhFcnJvciA9IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gdXBkYXRlIHRyaWFuZ2xlIG1ldGFkYXRhCiAgICAgICAgICAgIHRoaXMuX2NhbmRpZGF0ZXNbMiAqIHRdID0gbXg7CiAgICAgICAgICAgIHRoaXMuX2NhbmRpZGF0ZXNbMiAqIHQgKyAxXSA9IG15OwogICAgICAgICAgICB0aGlzLl9ybXNbdF0gPSBybXM7CiAgICAgICAgICAgIC8vIGFkZCB0cmlhbmdsZSB0byBwcmlvcml0eSBxdWV1ZQogICAgICAgICAgICB0aGlzLl9xdWV1ZVB1c2godCwgbWF4RXJyb3IsIHJtcyk7CiAgICAgICAgfQogICAgICAgIC8vIHByb2Nlc3MgdGhlIG5leHQgdHJpYW5nbGUgaW4gdGhlIHF1ZXVlLCBzcGxpdHRpbmcgaXQgd2l0aCBhIG5ldyBwb2ludAogICAgICAgIF9zdGVwKCkgewogICAgICAgICAgICAvLyBwb3AgdHJpYW5nbGUgd2l0aCBoaWdoZXN0IGVycm9yIGZyb20gcHJpb3JpdHkgcXVldWUKICAgICAgICAgICAgY29uc3QgdCA9IHRoaXMuX3F1ZXVlUG9wKCk7CiAgICAgICAgICAgIGNvbnN0IGUwID0gdCAqIDMgKyAwOwogICAgICAgICAgICBjb25zdCBlMSA9IHQgKiAzICsgMTsKICAgICAgICAgICAgY29uc3QgZTIgPSB0ICogMyArIDI7CiAgICAgICAgICAgIGNvbnN0IHAwID0gdGhpcy50cmlhbmdsZXNbZTBdOwogICAgICAgICAgICBjb25zdCBwMSA9IHRoaXMudHJpYW5nbGVzW2UxXTsKICAgICAgICAgICAgY29uc3QgcDIgPSB0aGlzLnRyaWFuZ2xlc1tlMl07CiAgICAgICAgICAgIGNvbnN0IGF4ID0gdGhpcy5jb29yZHNbMiAqIHAwXTsKICAgICAgICAgICAgY29uc3QgYXkgPSB0aGlzLmNvb3Jkc1syICogcDAgKyAxXTsKICAgICAgICAgICAgY29uc3QgYnggPSB0aGlzLmNvb3Jkc1syICogcDFdOwogICAgICAgICAgICBjb25zdCBieSA9IHRoaXMuY29vcmRzWzIgKiBwMSArIDFdOwogICAgICAgICAgICBjb25zdCBjeCA9IHRoaXMuY29vcmRzWzIgKiBwMl07CiAgICAgICAgICAgIGNvbnN0IGN5ID0gdGhpcy5jb29yZHNbMiAqIHAyICsgMV07CiAgICAgICAgICAgIGNvbnN0IHB4ID0gdGhpcy5fY2FuZGlkYXRlc1syICogdF07CiAgICAgICAgICAgIGNvbnN0IHB5ID0gdGhpcy5fY2FuZGlkYXRlc1syICogdCArIDFdOwogICAgICAgICAgICBjb25zdCBwbiA9IHRoaXMuX2FkZFBvaW50KHB4LCBweSk7CiAgICAgICAgICAgIGlmIChvcmllbnQoYXgsIGF5LCBieCwgYnksIHB4LCBweSkgPT09IDApIHsKICAgICAgICAgICAgICAgIHRoaXMuX2hhbmRsZUNvbGxpbmVhcihwbiwgZTApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYgKG9yaWVudChieCwgYnksIGN4LCBjeSwgcHgsIHB5KSA9PT0gMCkgewogICAgICAgICAgICAgICAgdGhpcy5faGFuZGxlQ29sbGluZWFyKHBuLCBlMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiAob3JpZW50KGN4LCBjeSwgYXgsIGF5LCBweCwgcHkpID09PSAwKSB7CiAgICAgICAgICAgICAgICB0aGlzLl9oYW5kbGVDb2xsaW5lYXIocG4sIGUyKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGNvbnN0IGgwID0gdGhpcy5faGFsZmVkZ2VzW2UwXTsKICAgICAgICAgICAgICAgIGNvbnN0IGgxID0gdGhpcy5faGFsZmVkZ2VzW2UxXTsKICAgICAgICAgICAgICAgIGNvbnN0IGgyID0gdGhpcy5faGFsZmVkZ2VzW2UyXTsKICAgICAgICAgICAgICAgIGNvbnN0IHQwID0gdGhpcy5fYWRkVHJpYW5nbGUocDAsIHAxLCBwbiwgaDAsIC0xLCAtMSwgZTApOwogICAgICAgICAgICAgICAgY29uc3QgdDEgPSB0aGlzLl9hZGRUcmlhbmdsZShwMSwgcDIsIHBuLCBoMSwgLTEsIHQwICsgMSk7CiAgICAgICAgICAgICAgICBjb25zdCB0MiA9IHRoaXMuX2FkZFRyaWFuZ2xlKHAyLCBwMCwgcG4sIGgyLCB0MCArIDIsIHQxICsgMSk7CiAgICAgICAgICAgICAgICB0aGlzLl9sZWdhbGl6ZSh0MCk7CiAgICAgICAgICAgICAgICB0aGlzLl9sZWdhbGl6ZSh0MSk7CiAgICAgICAgICAgICAgICB0aGlzLl9sZWdhbGl6ZSh0Mik7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgLy8gYWRkIGNvb3JkaW5hdGVzIGZvciBhIG5ldyB2ZXJ0ZXgKICAgICAgICBfYWRkUG9pbnQoeCwgeSkgewogICAgICAgICAgICBjb25zdCBpID0gdGhpcy5jb29yZHMubGVuZ3RoID4+IDE7CiAgICAgICAgICAgIHRoaXMuY29vcmRzLnB1c2goeCwgeSk7CiAgICAgICAgICAgIHJldHVybiBpOwogICAgICAgIH0KICAgICAgICAvLyBhZGQgb3IgdXBkYXRlIGEgdHJpYW5nbGUgaW4gdGhlIG1lc2gKICAgICAgICBfYWRkVHJpYW5nbGUoYSwgYiwgYywgYWIsIGJjLCBjYSwgZSA9IHRoaXMudHJpYW5nbGVzLmxlbmd0aCkgewogICAgICAgICAgICBjb25zdCB0ID0gZSAvIDM7IC8vIG5ldyB0cmlhbmdsZSBpbmRleAogICAgICAgICAgICAvLyBhZGQgdHJpYW5nbGUgdmVydGljZXMKICAgICAgICAgICAgdGhpcy50cmlhbmdsZXNbZSArIDBdID0gYTsKICAgICAgICAgICAgdGhpcy50cmlhbmdsZXNbZSArIDFdID0gYjsKICAgICAgICAgICAgdGhpcy50cmlhbmdsZXNbZSArIDJdID0gYzsKICAgICAgICAgICAgLy8gYWRkIHRyaWFuZ2xlIGhhbGZlZGdlcwogICAgICAgICAgICB0aGlzLl9oYWxmZWRnZXNbZSArIDBdID0gYWI7CiAgICAgICAgICAgIHRoaXMuX2hhbGZlZGdlc1tlICsgMV0gPSBiYzsKICAgICAgICAgICAgdGhpcy5faGFsZmVkZ2VzW2UgKyAyXSA9IGNhOwogICAgICAgICAgICAvLyBsaW5rIG5laWdoYm9yaW5nIGhhbGZlZGdlcwogICAgICAgICAgICBpZiAoYWIgPj0gMCkgewogICAgICAgICAgICAgICAgdGhpcy5faGFsZmVkZ2VzW2FiXSA9IGUgKyAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChiYyA+PSAwKSB7CiAgICAgICAgICAgICAgICB0aGlzLl9oYWxmZWRnZXNbYmNdID0gZSArIDE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGNhID49IDApIHsKICAgICAgICAgICAgICAgIHRoaXMuX2hhbGZlZGdlc1tjYV0gPSBlICsgMjsKICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBpbml0IHRyaWFuZ2xlIG1ldGFkYXRhCiAgICAgICAgICAgIHRoaXMuX2NhbmRpZGF0ZXNbMiAqIHQgKyAwXSA9IDA7CiAgICAgICAgICAgIHRoaXMuX2NhbmRpZGF0ZXNbMiAqIHQgKyAxXSA9IDA7CiAgICAgICAgICAgIHRoaXMuX3F1ZXVlSW5kaWNlc1t0XSA9IC0xOwogICAgICAgICAgICB0aGlzLl9ybXNbdF0gPSAwOwogICAgICAgICAgICAvLyBhZGQgdHJpYW5nbGUgdG8gcGVuZGluZyBxdWV1ZSBmb3IgbGF0ZXIgcmFzdGVyaXphdGlvbgogICAgICAgICAgICB0aGlzLl9wZW5kaW5nW3RoaXMuX3BlbmRpbmdMZW4rK10gPSB0OwogICAgICAgICAgICAvLyByZXR1cm4gZmlyc3QgaGFsZmVkZ2UgaW5kZXgKICAgICAgICAgICAgcmV0dXJuIGU7CiAgICAgICAgfQogICAgICAgIF9sZWdhbGl6ZShhKSB7CiAgICAgICAgICAgIC8vIGlmIHRoZSBwYWlyIG9mIHRyaWFuZ2xlcyBkb2Vzbid0IHNhdGlzZnkgdGhlIERlbGF1bmF5IGNvbmRpdGlvbgogICAgICAgICAgICAvLyAocDEgaXMgaW5zaWRlIHRoZSBjaXJjdW1jaXJjbGUgb2YgW3AwLCBwbCwgcHJdKSwgZmxpcCB0aGVtLAogICAgICAgICAgICAvLyB0aGVuIGRvIHRoZSBzYW1lIGNoZWNrL2ZsaXAgcmVjdXJzaXZlbHkgZm9yIHRoZSBuZXcgcGFpciBvZiB0cmlhbmdsZXMKICAgICAgICAgICAgLy8KICAgICAgICAgICAgLy8gICAgICAgICAgIHBsICAgICAgICAgICAgICAgICAgICBwbAogICAgICAgICAgICAvLyAgICAgICAgICAvfHxcICAgICAgICAgICAgICAgICAgLyAgXAogICAgICAgICAgICAvLyAgICAgICBhbC8gfHwgXGJsICAgICAgICAgICAgYWwvICAgIFxhCiAgICAgICAgICAgIC8vICAgICAgICAvICB8fCAgXCAgICAgICAgICAgICAgLyAgICAgIFwKICAgICAgICAgICAgLy8gICAgICAgLyAgYXx8YiAgXCAgICBmbGlwICAgIC9fX19hcl9fX1wKICAgICAgICAgICAgLy8gICAgIHAwXCAgIHx8ICAgL3AxICAgPT4gICBwMFwtLS1ibC0tLS9wMQogICAgICAgICAgICAvLyAgICAgICAgXCAgfHwgIC8gICAgICAgICAgICAgIFwgICAgICAvCiAgICAgICAgICAgIC8vICAgICAgIGFyXCB8fCAvYnIgICAgICAgICAgICAgYlwgICAgL2JyCiAgICAgICAgICAgIC8vICAgICAgICAgIFx8fC8gICAgICAgICAgICAgICAgICBcICAvCiAgICAgICAgICAgIC8vICAgICAgICAgICBwciAgICAgICAgICAgICAgICAgICAgcHIKICAgICAgICAgICAgY29uc3QgYiA9IHRoaXMuX2hhbGZlZGdlc1thXTsKICAgICAgICAgICAgaWYgKGIgPCAwKSB7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgYTAgPSBhIC0gKGEgJSAzKTsKICAgICAgICAgICAgY29uc3QgYjAgPSBiIC0gKGIgJSAzKTsKICAgICAgICAgICAgY29uc3QgYWwgPSBhMCArICgoYSArIDEpICUgMyk7CiAgICAgICAgICAgIGNvbnN0IGFyID0gYTAgKyAoKGEgKyAyKSAlIDMpOwogICAgICAgICAgICBjb25zdCBibCA9IGIwICsgKChiICsgMikgJSAzKTsKICAgICAgICAgICAgY29uc3QgYnIgPSBiMCArICgoYiArIDEpICUgMyk7CiAgICAgICAgICAgIGNvbnN0IHAwID0gdGhpcy50cmlhbmdsZXNbYXJdOwogICAgICAgICAgICBjb25zdCBwciA9IHRoaXMudHJpYW5nbGVzW2FdOwogICAgICAgICAgICBjb25zdCBwbCA9IHRoaXMudHJpYW5nbGVzW2FsXTsKICAgICAgICAgICAgY29uc3QgcDEgPSB0aGlzLnRyaWFuZ2xlc1tibF07CiAgICAgICAgICAgIGNvbnN0IHsgY29vcmRzIH0gPSB0aGlzOwogICAgICAgICAgICBpZiAoIWluQ2lyY2xlKGNvb3Jkc1syICogcDBdLCBjb29yZHNbMiAqIHAwICsgMV0sIGNvb3Jkc1syICogcHJdLCBjb29yZHNbMiAqIHByICsgMV0sIGNvb3Jkc1syICogcGxdLCBjb29yZHNbMiAqIHBsICsgMV0sIGNvb3Jkc1syICogcDFdLCBjb29yZHNbMiAqIHAxICsgMV0pKSB7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgaGFsID0gdGhpcy5faGFsZmVkZ2VzW2FsXTsKICAgICAgICAgICAgY29uc3QgaGFyID0gdGhpcy5faGFsZmVkZ2VzW2FyXTsKICAgICAgICAgICAgY29uc3QgaGJsID0gdGhpcy5faGFsZmVkZ2VzW2JsXTsKICAgICAgICAgICAgY29uc3QgaGJyID0gdGhpcy5faGFsZmVkZ2VzW2JyXTsKICAgICAgICAgICAgdGhpcy5fcXVldWVSZW1vdmUoYTAgLyAzKTsKICAgICAgICAgICAgdGhpcy5fcXVldWVSZW1vdmUoYjAgLyAzKTsKICAgICAgICAgICAgY29uc3QgdDAgPSB0aGlzLl9hZGRUcmlhbmdsZShwMCwgcDEsIHBsLCAtMSwgaGJsLCBoYWwsIGEwKTsKICAgICAgICAgICAgY29uc3QgdDEgPSB0aGlzLl9hZGRUcmlhbmdsZShwMSwgcDAsIHByLCB0MCwgaGFyLCBoYnIsIGIwKTsKICAgICAgICAgICAgdGhpcy5fbGVnYWxpemUodDAgKyAxKTsKICAgICAgICAgICAgdGhpcy5fbGVnYWxpemUodDEgKyAyKTsKICAgICAgICB9CiAgICAgICAgLy8gaGFuZGxlIGEgY2FzZSB3aGVyZSBuZXcgdmVydGV4IGlzIG9uIHRoZSBlZGdlIG9mIGEgdHJpYW5nbGUKICAgICAgICBfaGFuZGxlQ29sbGluZWFyKHBuLCBhKSB7CiAgICAgICAgICAgIGNvbnN0IGEwID0gYSAtIChhICUgMyk7CiAgICAgICAgICAgIGNvbnN0IGFsID0gYTAgKyAoKGEgKyAxKSAlIDMpOwogICAgICAgICAgICBjb25zdCBhciA9IGEwICsgKChhICsgMikgJSAzKTsKICAgICAgICAgICAgY29uc3QgcDAgPSB0aGlzLnRyaWFuZ2xlc1thcl07CiAgICAgICAgICAgIGNvbnN0IHByID0gdGhpcy50cmlhbmdsZXNbYV07CiAgICAgICAgICAgIGNvbnN0IHBsID0gdGhpcy50cmlhbmdsZXNbYWxdOwogICAgICAgICAgICBjb25zdCBoYWwgPSB0aGlzLl9oYWxmZWRnZXNbYWxdOwogICAgICAgICAgICBjb25zdCBoYXIgPSB0aGlzLl9oYWxmZWRnZXNbYXJdOwogICAgICAgICAgICBjb25zdCBiID0gdGhpcy5faGFsZmVkZ2VzW2FdOwogICAgICAgICAgICBpZiAoYiA8IDApIHsKICAgICAgICAgICAgICAgIGNvbnN0IHQwID0gdGhpcy5fYWRkVHJpYW5nbGUocG4sIHAwLCBwciwgLTEsIGhhciwgLTEsIGEwKTsKICAgICAgICAgICAgICAgIGNvbnN0IHQxID0gdGhpcy5fYWRkVHJpYW5nbGUocDAsIHBuLCBwbCwgdDAsIC0xLCBoYWwpOwogICAgICAgICAgICAgICAgdGhpcy5fbGVnYWxpemUodDAgKyAxKTsKICAgICAgICAgICAgICAgIHRoaXMuX2xlZ2FsaXplKHQxICsgMik7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgYjAgPSBiIC0gKGIgJSAzKTsKICAgICAgICAgICAgY29uc3QgYmwgPSBiMCArICgoYiArIDIpICUgMyk7CiAgICAgICAgICAgIGNvbnN0IGJyID0gYjAgKyAoKGIgKyAxKSAlIDMpOwogICAgICAgICAgICBjb25zdCBwMSA9IHRoaXMudHJpYW5nbGVzW2JsXTsKICAgICAgICAgICAgY29uc3QgaGJsID0gdGhpcy5faGFsZmVkZ2VzW2JsXTsKICAgICAgICAgICAgY29uc3QgaGJyID0gdGhpcy5faGFsZmVkZ2VzW2JyXTsKICAgICAgICAgICAgdGhpcy5fcXVldWVSZW1vdmUoYjAgLyAzKTsKICAgICAgICAgICAgY29uc3QgdDAgPSB0aGlzLl9hZGRUcmlhbmdsZShwMCwgcHIsIHBuLCBoYXIsIC0xLCAtMSwgYTApOwogICAgICAgICAgICBjb25zdCB0MSA9IHRoaXMuX2FkZFRyaWFuZ2xlKHByLCBwMSwgcG4sIGhiciwgLTEsIHQwICsgMSwgYjApOwogICAgICAgICAgICBjb25zdCB0MiA9IHRoaXMuX2FkZFRyaWFuZ2xlKHAxLCBwbCwgcG4sIGhibCwgLTEsIHQxICsgMSk7CiAgICAgICAgICAgIGNvbnN0IHQzID0gdGhpcy5fYWRkVHJpYW5nbGUocGwsIHAwLCBwbiwgaGFsLCB0MCArIDIsIHQyICsgMSk7CiAgICAgICAgICAgIHRoaXMuX2xlZ2FsaXplKHQwKTsKICAgICAgICAgICAgdGhpcy5fbGVnYWxpemUodDEpOwogICAgICAgICAgICB0aGlzLl9sZWdhbGl6ZSh0Mik7CiAgICAgICAgICAgIHRoaXMuX2xlZ2FsaXplKHQzKTsKICAgICAgICB9CiAgICAgICAgLy8gcHJpb3JpdHkgcXVldWUgbWV0aG9kcwogICAgICAgIF9xdWV1ZVB1c2godCwgZXJyb3IsIHJtcykgewogICAgICAgICAgICBjb25zdCBpID0gdGhpcy5fcXVldWUubGVuZ3RoOwogICAgICAgICAgICB0aGlzLl9xdWV1ZUluZGljZXNbdF0gPSBpOwogICAgICAgICAgICB0aGlzLl9xdWV1ZS5wdXNoKHQpOwogICAgICAgICAgICB0aGlzLl9lcnJvcnMucHVzaChlcnJvcik7CiAgICAgICAgICAgIHRoaXMuX3Jtc1N1bSArPSBybXM7CiAgICAgICAgICAgIHRoaXMuX3F1ZXVlVXAoaSk7CiAgICAgICAgfQogICAgICAgIF9xdWV1ZVBvcCgpIHsKICAgICAgICAgICAgY29uc3QgbiA9IHRoaXMuX3F1ZXVlLmxlbmd0aCAtIDE7CiAgICAgICAgICAgIHRoaXMuX3F1ZXVlU3dhcCgwLCBuKTsKICAgICAgICAgICAgdGhpcy5fcXVldWVEb3duKDAsIG4pOwogICAgICAgICAgICByZXR1cm4gdGhpcy5fcXVldWVQb3BCYWNrKCk7CiAgICAgICAgfQogICAgICAgIF9xdWV1ZVBvcEJhY2soKSB7CiAgICAgICAgICAgIGNvbnN0IHQgPSB0aGlzLl9xdWV1ZS5wb3AoKTsKICAgICAgICAgICAgdGhpcy5fZXJyb3JzLnBvcCgpOwogICAgICAgICAgICB0aGlzLl9ybXNTdW0gLT0gdGhpcy5fcm1zW3RdOwogICAgICAgICAgICB0aGlzLl9xdWV1ZUluZGljZXNbdF0gPSAtMTsKICAgICAgICAgICAgcmV0dXJuIHQ7CiAgICAgICAgfQogICAgICAgIF9xdWV1ZVJlbW92ZSh0KSB7CiAgICAgICAgICAgIGNvbnN0IGkgPSB0aGlzLl9xdWV1ZUluZGljZXNbdF07CiAgICAgICAgICAgIGlmIChpIDwgMCkgewogICAgICAgICAgICAgICAgY29uc3QgaXQgPSB0aGlzLl9wZW5kaW5nLmluZGV4T2YodCk7CiAgICAgICAgICAgICAgICBpZiAoaXQgIT09IC0xKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcGVuZGluZ1tpdF0gPSB0aGlzLl9wZW5kaW5nWy0tdGhpcy5fcGVuZGluZ0xlbl07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Jyb2tlbiB0cmlhbmd1bGF0aW9uIChzb21ldGhpbmcgd2VudCB3cm9uZykuJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbiA9IHRoaXMuX3F1ZXVlLmxlbmd0aCAtIDE7CiAgICAgICAgICAgIGlmIChuICE9PSBpKSB7CiAgICAgICAgICAgICAgICB0aGlzLl9xdWV1ZVN3YXAoaSwgbik7CiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX3F1ZXVlRG93bihpLCBuKSkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuX3F1ZXVlVXAoaSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdGhpcy5fcXVldWVQb3BCYWNrKCk7CiAgICAgICAgfQogICAgICAgIF9xdWV1ZUxlc3MoaSwgaikgewogICAgICAgICAgICByZXR1cm4gdGhpcy5fZXJyb3JzW2ldID4gdGhpcy5fZXJyb3JzW2pdOwogICAgICAgIH0KICAgICAgICBfcXVldWVTd2FwKGksIGopIHsKICAgICAgICAgICAgY29uc3QgcGkgPSB0aGlzLl9xdWV1ZVtpXTsKICAgICAgICAgICAgY29uc3QgcGogPSB0aGlzLl9xdWV1ZVtqXTsKICAgICAgICAgICAgdGhpcy5fcXVldWVbaV0gPSBwajsKICAgICAgICAgICAgdGhpcy5fcXVldWVbal0gPSBwaTsKICAgICAgICAgICAgdGhpcy5fcXVldWVJbmRpY2VzW3BpXSA9IGo7CiAgICAgICAgICAgIHRoaXMuX3F1ZXVlSW5kaWNlc1twal0gPSBpOwogICAgICAgICAgICBjb25zdCBlID0gdGhpcy5fZXJyb3JzW2ldOwogICAgICAgICAgICB0aGlzLl9lcnJvcnNbaV0gPSB0aGlzLl9lcnJvcnNbal07CiAgICAgICAgICAgIHRoaXMuX2Vycm9yc1tqXSA9IGU7CiAgICAgICAgfQogICAgICAgIF9xdWV1ZVVwKGowKSB7CiAgICAgICAgICAgIGxldCBqID0gajA7CiAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgICAgICAgICBjb25zdCBpID0gKGogLSAxKSA+PiAxOwogICAgICAgICAgICAgICAgaWYgKGkgPT09IGogfHwgIXRoaXMuX3F1ZXVlTGVzcyhqLCBpKSkgewogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdGhpcy5fcXVldWVTd2FwKGksIGopOwogICAgICAgICAgICAgICAgaiA9IGk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgX3F1ZXVlRG93bihpMCwgbikgewogICAgICAgICAgICBsZXQgaSA9IGkwOwogICAgICAgICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICAgICAgICAgY29uc3QgajEgPSAyICogaSArIDE7CiAgICAgICAgICAgICAgICBpZiAoajEgPj0gbiB8fCBqMSA8IDApIHsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNvbnN0IGoyID0gajEgKyAxOwogICAgICAgICAgICAgICAgbGV0IGogPSBqMTsKICAgICAgICAgICAgICAgIGlmIChqMiA8IG4gJiYgdGhpcy5fcXVldWVMZXNzKGoyLCBqMSkpIHsKICAgICAgICAgICAgICAgICAgICBqID0gajI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX3F1ZXVlTGVzcyhqLCBpKSkgewogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdGhpcy5fcXVldWVTd2FwKGksIGopOwogICAgICAgICAgICAgICAgaSA9IGo7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGkgPiBpMDsKICAgICAgICB9CiAgICB9CiAgICBmdW5jdGlvbiBpbkNpcmNsZShheCwgYXksIGJ4LCBieSwgY3gsIGN5LCBweCwgcHkpIHsKICAgICAgICBjb25zdCBkeCA9IGF4IC0gcHg7CiAgICAgICAgY29uc3QgZHkgPSBheSAtIHB5OwogICAgICAgIGNvbnN0IGV4ID0gYnggLSBweDsKICAgICAgICBjb25zdCBleSA9IGJ5IC0gcHk7CiAgICAgICAgY29uc3QgZnggPSBjeCAtIHB4OwogICAgICAgIGNvbnN0IGZ5ID0gY3kgLSBweTsKICAgICAgICBjb25zdCBhcCA9IGR4ICogZHggKyBkeSAqIGR5OwogICAgICAgIGNvbnN0IGJwID0gZXggKiBleCArIGV5ICogZXk7CiAgICAgICAgY29uc3QgY3AgPSBmeCAqIGZ4ICsgZnkgKiBmeTsKICAgICAgICByZXR1cm4gZHggKiAoZXkgKiBjcCAtIGJwICogZnkpIC0gZHkgKiAoZXggKiBjcCAtIGJwICogZngpICsgYXAgKiAoZXggKiBmeSAtIGV5ICogZngpIDwgMDsKICAgIH0KCiAgICAvKioKICAgICAqIFdlYiBXb3JrZXIgZm9yIHRlcnJhaW4gbWVzaCB0ZXNzZWxsYXRpb24uCiAgICAgKiBSdW5zIE1hcnRpbmkvRGVsYXRpbiBhbGdvcml0aG1zIG9uIGEgYmFja2dyb3VuZCB0aHJlYWQgdG8gYXZvaWQgYmxvY2tpbmcgdGhlIG1haW4gdGhyZWFkLgogICAgICovCiAgICAvLyBUcmFjayBhYm9ydGVkIHRhc2tzIHRvIGF2b2lkIHNlbmRpbmcgcmVzdWx0cyBmb3IgY2FuY2VsbGVkIHdvcmsKICAgIGNvbnN0IGFib3J0ZWRUYXNrcyA9IG5ldyBNYXAoKTsKICAgIHNlbGYub25tZXNzYWdlID0gKGUpID0+IHsKICAgICAgICBjb25zdCBkYXRhID0gZS5kYXRhOwogICAgICAgIGlmIChkYXRhLnR5cGUgPT09ICdhYm9ydCcpIHsKICAgICAgICAgICAgLy8gTWFyayB0YXNrIGFzIGFib3J0ZWQ7IGlmIGl0J3Mgc3RpbGwgY29tcHV0aW5nLCB3ZSdsbCBza2lwIHRoZSByZXNwb25zZQogICAgICAgICAgICBhYm9ydGVkVGFza3Muc2V0KGRhdGEudGFza0lkLCB0cnVlKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBpZiAoZGF0YS50eXBlID09PSAnY29tcHV0ZU1lc2gnKSB7CiAgICAgICAgICAgIGNvbnN0IHsgdGFza0lkLCB0ZXJyYWluLCBtZXNoTWF4RXJyb3IsIHRlc3NlbGF0b3IsIHdpZHRoLCBoZWlnaHQgfSA9IGRhdGE7CiAgICAgICAgICAgIGxldCBtZXNoOwogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgaWYgKHRlc3NlbGF0b3IgPT09ICdkZWxhdGluJykgewogICAgICAgICAgICAgICAgICAgIC8vIERlbGF0aW4gdGVzc2VsbGF0aW9uCiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGluID0gbmV3IERlbGF0aW4odGVycmFpbiwgd2lkdGgsIGhlaWdodCk7CiAgICAgICAgICAgICAgICAgICAgdGluLnJ1bihtZXNoTWF4RXJyb3IpOwogICAgICAgICAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IERlbGF0aW4gaW5zdGFuY2UgcHJvcGVydGllcyAnY29vcmRzJyBhbmQgJ3RyaWFuZ2xlcycgYXJlIG5vdCBleHBsaWNpdGx5IHR5cGVkIGluIHRoZSBsaWJyYXJ5IHBvcnQKICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGNvb3JkcywgdHJpYW5nbGVzIH0gPSB0aW47CiAgICAgICAgICAgICAgICAgICAgLy8gY29vcmRzIGlzIGEgcGxhaW4gYXJyYXkg4oCUIGNvbnZlcnQgdG8gRmxvYXQ2NEFycmF5IHNvIGl0IGhhcyAuYnVmZmVyIGZvciB0cmFuc2ZlcgogICAgICAgICAgICAgICAgICAgIGNvbnN0IHZlcnRpY2VzVHlwZWQgPSBGbG9hdDY0QXJyYXkuZnJvbShjb29yZHMpOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHRyaWFuZ2xlc1R5cGVkID0gVWludDMyQXJyYXkuZnJvbSh0cmlhbmdsZXMpOwogICAgICAgICAgICAgICAgICAgIG1lc2ggPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZlcnRpY2VzOiB2ZXJ0aWNlc1R5cGVkLAogICAgICAgICAgICAgICAgICAgICAgICB0cmlhbmdsZXM6IHRyaWFuZ2xlc1R5cGVkLAogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAvLyBNYXJ0aW5pIHRlc3NlbGxhdGlvbiAoZGVmYXVsdCkKICAgICAgICAgICAgICAgICAgICBjb25zdCBncmlkU2l6ZSA9IHdpZHRoID09PSAyNTcgPyAyNTcgOiB3aWR0aCArIDE7IC8vIE9ubHkgYWRkIDEgaWYgd2lkdGggaXMgbm90IGFscmVhZHkgMl5uKzEKICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXJ0aW5pID0gbmV3IE1hcnRpbmkoZ3JpZFNpemUpOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHRpbGUgPSBtYXJ0aW5pLmNyZWF0ZVRpbGUodGVycmFpbik7CiAgICAgICAgICAgICAgICAgICAgbWVzaCA9IHRpbGUuZ2V0TWVzaChtZXNoTWF4RXJyb3IpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLy8gT25seSBzZW5kIHJlc3VsdCBpZiBub3QgYWJvcnRlZAogICAgICAgICAgICAgICAgaWYgKCFhYm9ydGVkVGFza3MuZ2V0KHRhc2tJZCkpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ21lc2hSZXN1bHQnLAogICAgICAgICAgICAgICAgICAgICAgICB0YXNrSWQsCiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdDogbWVzaCwKICAgICAgICAgICAgICAgICAgICAgICAgdGVycmFpbiwgLy8g4oaQIENSSVRJQ0FMOiBSZXR1cm4gdGVycmFpbiBidWZmZXIgdG8gbWFpbiB0aHJlYWQKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIC8vIFRyYW5zZmVyIG93bmVyc2hpcCBvZiBBTEwgYnVmZmVycyBiYWNrIHRvIG1haW4gdGhyZWFkICh6ZXJvLWNvcHkgcm91bmR0cmlwKQogICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgYXZvaWRzIG1lc2hUZXJyYWluLnNsaWNlKCkgYWxsb2NhdGlvbiBvbiBtYWluIHRocmVhZAogICAgICAgICAgICAgICAgICAgIHNlbGYucG9zdE1lc3NhZ2UocmVzcG9uc2UsIHsKICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmZXI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc2gudmVydGljZXMuYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzaC50cmlhbmdsZXMuYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVycmFpbi5idWZmZXIsIC8vIOKGkCBUcmFuc2ZlciB0ZXJyYWluIGJhY2sKICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBjYXRjaCAoZXJyb3IpIHsKICAgICAgICAgICAgICAgIC8vIE9ubHkgcmVwb3J0IGVycm9ycyBmb3Igbm9uLWFib3J0ZWQgdGFza3MKICAgICAgICAgICAgICAgIGlmICghYWJvcnRlZFRhc2tzLmdldCh0YXNrSWQpKSB7CiAgICAgICAgICAgICAgICAgICAgc2VsZi5wb3N0TWVzc2FnZSh7CiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgICAgIHRhc2tJZCwKICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKSwKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBmaW5hbGx5IHsKICAgICAgICAgICAgICAgIC8vIENsZWFuIHVwIGFib3J0IHRyYWNraW5nCiAgICAgICAgICAgICAgICBhYm9ydGVkVGFza3MuZGVsZXRlKHRhc2tJZCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9OwogICAgLy8gU2lnbmFsIHRoYXQgd29ya2VyIGlzIHJlYWR5CiAgICBzZWxmLnBvc3RNZXNzYWdlKHsgdHlwZTogJ3JlYWR5JyB9KTsKCn0pKCk7Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPXRlcnJhaW4ud29ya2VyLmpzLm1hcAoK");class xg{workers=[];pendingTasks=new Map;taskCounter=0;roundRobinIndex=0;constructor(A){const g=Math.min(navigator.hardwareConcurrency||4,8),I=navigator.deviceMemory&&navigator.deviceMemory<4?2:g,C=A??I;for(let A=0;A<C;A++){const A=new Jg;A.onmessage=this.handleWorkerMessage.bind(this),A.onerror=this.handleWorkerError.bind(this),this.workers.push(A)}}async computeMesh(A){const{terrain:g,meshMaxError:I,tesselator:C,width:e,height:i,signal:B}=A;if(B?.aborted)throw new DOMException("Aborted","AbortError");const t="task_"+ ++this.taskCounter;return new Promise((A,Q)=>{const s=this.getNextWorker(),o={resolve:A,reject:Q,aborted:!1,worker:s};this.pendingTasks.set(t,o),B&&B.addEventListener("abort",()=>{this.pendingTasks.has(t)&&(o.aborted=!0,this.pendingTasks.delete(t),s.postMessage({type:"abort",taskId:t}),Q(new DOMException("Aborted","AbortError")))},{once:!0}),s.postMessage({type:"computeMesh",taskId:t,terrain:g,meshMaxError:I,tesselator:C,width:e,height:i},[g.buffer])})}getNextWorker(){const A=this.workers[this.roundRobinIndex];return this.roundRobinIndex=(this.roundRobinIndex+1)%this.workers.length,A}handleWorkerMessage(A){const{type:g,taskId:I,result:C,terrain:e,error:i}=A.data;if("ready"===g)return;const B=this.pendingTasks.get(I);B&&(this.pendingTasks.delete(I),B.aborted||("meshResult"===g?B.resolve({vertices:C.vertices,triangles:C.triangles,terrain:e}):"error"===g&&B.reject(new Error(`Worker error: ${i}`))))}handleWorkerError(A){const g=A.target,I=[];this.pendingTasks.forEach((A,C)=>{A.worker===g&&I.push(C)});for(const g of I){const I=this.pendingTasks.get(g);I&&(this.pendingTasks.delete(g),I.reject(new Error(`Worker crashed: ${A.message||"Unknown error"}`)))}const C=this.workers.indexOf(g);if(-1!==C)try{const A=new Jg;A.onmessage=this.handleWorkerMessage.bind(this),A.onerror=this.handleWorkerError.bind(this),this.workers[C]=A}catch(A){console.error("[TerrainWorkerPool] Failed to respawn worker:",A)}}terminate(){this.pendingTasks.forEach(A=>{A.reject(new DOMException("Worker pool terminated","AbortError"))}),this.pendingTasks.clear(),this.workers.forEach(A=>A.terminate()),this.workers=[]}}let Tg=null;const Zg=2*Math.PI*6378137,qg=Zg/2,Og=[-20037508.342789244,20037508.342789244];function Wg(A){const g=A[0],I=A[1],C=g/qg*180;let e=I/qg*180;return e=180/Math.PI*(2*Math.atan(Math.exp(e*Math.PI/180))-Math.PI/2),[C,e]}function Vg(A,g,I){const C=function(A,g){return Math.round(Math.log2(Zg/(g*A)))}(A,g);return[C-(I-1),C]}class vg{tileResultCache=new Map;tileResultCacheMaxSize;rasterCache=new Map;rasterCacheMaxSize;reliefMaskCache=new Map;reliefMaskCacheMaxSize;imageCache=new Map;constructor(A){this.tileResultCacheMaxSize=A?.tileResultCacheMaxSize??32,this.rasterCacheMaxSize=A?.rasterCacheMaxSize??64,this.reliefMaskCacheMaxSize=A?.reliefMaskCacheMaxSize??64}getTileResultCacheKey(A,g,I,C,e){return`${I}/${A}/${g}/${C}/${e?"1":"0"}`}getTileCacheKey(A,g,I){return`${I}/${A}/${g}`}getTileResult(A){const g=this.tileResultCache.get(A);if(g)return this.tileResultCache.delete(A),this.tileResultCache.set(A,g),g}setTileResult(A,g){if(this.tileResultCache.set(A,g),this.tileResultCache.size>this.tileResultCacheMaxSize){const A=this.tileResultCache.keys().next().value;if(A){const g=this.tileResultCache.get(A);g&&!g.settled&&g.controller.abort(),this.tileResultCache.delete(A)}}}deleteTileResult(A){return this.tileResultCache.delete(A)}clearTileResultCache(){for(const A of this.tileResultCache.values())A.settled||A.controller.abort();this.tileResultCache.clear()}getRaster(A){const g=this.rasterCache.get(A);if(g)return this.rasterCache.delete(A),this.rasterCache.set(A,g),g}setRaster(A,g){if(this.rasterCache.set(A,g),g.catch(()=>this.rasterCache.delete(A)),this.rasterCache.size>this.rasterCacheMaxSize){const A=this.rasterCache.keys().next().value;A&&this.rasterCache.delete(A)}}deleteRaster(A){return this.rasterCache.delete(A)}clearRasterCache(){this.rasterCache.clear()}getReliefMask(A){const g=this.reliefMaskCache.get(A);if(g)return this.reliefMaskCache.delete(A),this.reliefMaskCache.set(A,g),g}setReliefMask(A,g){if(this.reliefMaskCache.set(A,g),g.catch(()=>this.reliefMaskCache.delete(A)),this.reliefMaskCache.size>this.reliefMaskCacheMaxSize){const A=this.reliefMaskCache.keys().next().value;A&&this.reliefMaskCache.delete(A)}}deleteReliefMask(A){return this.reliefMaskCache.delete(A)}clearReliefMaskCache(){this.reliefMaskCache.clear()}getImage(A){return this.imageCache.get(A)}setImage(A,g){this.imageCache.set(A,g)}deleteImage(A){return this.imageCache.delete(A)}clearImageCache(){this.imageCache.clear()}clearAll(){this.clearTileResultCache(),this.clearRasterCache(),this.clearReliefMaskCache(),this.clearImageCache()}}class zg{options;tileSize;constructor(A){this.options=A.options,this.tileSize=A.tileSize}createEmptyTile(A){const g=A||this.tileSize,I=this.options.numOfChannels||1,C=new Float32Array(g*g*I);return void 0!==this.options.noDataValue&&C.fill(this.options.noDataValue),C}createTileBuffer(A,g,I=1){const C=g*g*I;switch(A){case"UInt8":return new Uint8Array(C);case"Int8":return new Int8Array(C);case"UInt16":return new Uint16Array(C);case"Int16":return new Int16Array(C);case"UInt32":return new Uint32Array(C);case"Int32":return new Int32Array(C);case"Float32":return new Float32Array(C);case"Float64":return new Float64Array(C);default:return console.warn(`Unsupported data type: ${A}, defaulting to Float32`),new Float32Array(C)}}}const Xg=new Map,Pg={blurredTexture:!0,debugTileStats:!1};class jg{cog;cogZoomLookup=[];cogResolutionLookup=[];cogMeshMaxErrorLookup=[];cogOrigin=[0,0];zoomRange=[0,0];tileSize=256;bounds=[0,0,0,0];bandDescriptions=[];geo=new bg;options;cache=new vg;tileReader;workerPool;initializePromise;lastInitializedUrl;constructor(A){this.options={...Pg,...A},"terrain"===A.type&&(this.workerPool=(Tg||(Tg=new xg),Tg))}async initializeCog(A){if(this.initializePromise&&(!this.cog||this.lastInitializedUrl===A))return this.initializePromise;if(void 0!==this.lastInitializedUrl&&this.lastInitializedUrl!==A){this.cache.clearAll();const A=[];Xg.forEach((g,I)=>{I.startsWith(this.lastInitializedUrl)&&A.push(I)}),A.forEach(A=>Xg.delete(A)),this.cog=void 0,this.cogOrigin=[0,0],this.cogZoomLookup=[],this.cogResolutionLookup=[],this.cogMeshMaxErrorLookup=[],this.tileSize=256,this.zoomRange=[0,0],this.bounds=[0,0,0,0],this.bandDescriptions=[],this.initializePromise=void 0,this.lastInitializedUrl=void 0}return this.cog&&this.lastInitializedUrl===A?this.initializePromise??Promise.resolve():(this.initializePromise=(async()=>{try{const g=this.options.blockSize??65536;this.cog=await async function(A,g={},I){return dg.fromSource(Bg(A,g),void 0,I)}(A,{blockSize:g});const I=this.cog.getImage();this.cache.setImage(0,I);const C=await I,e=C.fileDirectory;this.cogOrigin=C.getOrigin(),this.options.noDataValue??=function(A){const g=A.getGDALNoData();if(null==g)return void console.warn("No noData value defined — raster might be rendered incorrectly.");const I=String(g).replace(/\0/g,"").trim();if(""===I)return void console.warn("noData value is an empty string after cleanup.");const C=Number(I);return"nan"===I.toLowerCase()?NaN:Number.isNaN(C)?void console.warn(`Failed to parse numeric noData value: '${I}'`):C}(C),this.options.format??=await async function(A){const g=A.hasTag("SampleFormat"),I=A.hasTag("BitsPerSample");if(!g||!I)return console.warn("Missing SampleFormat or BitsPerSample tags, defaulting to UInt8"),"UInt8";const C=A.getValue("SampleFormat"),e=A.getValue("BitsPerSample"),i=C&&"number"==typeof C.length&&C.length>0?C[0]:C;let B;return B=1===i?"UInt":2===i?"Int":3===i?"Float":"Unknown",`${B}${e&&"number"==typeof e.length&&e.length>0?e[0]:e}`}(e),this.options.numOfChannels=e.getValue("SamplesPerPixel"),this.options.planarConfig=e.getValue("PlanarConfiguration");const i=this.options.numOfChannels??1,B=Array(i).fill("");if(C.fileDirectory.hasTag("GDAL_METADATA")){const A=await C.fileDirectory.loadValue("GDAL_METADATA"),g=/<Item[^>]*name="DESCRIPTION"[^>]*sample="(\d+)"[^>]*>([^<]*)<\/Item>/g;let I;for(;null!==(I=g.exec(A));){const A=parseInt(I[1],10),g=I[2];A<i&&(B[A]=g)}B.every(A=>""===A)&&console.debug("[CogTiles] GDAL_METADATA present but no DESCRIPTION items found")}if(this.bandDescriptions=B,[this.cogZoomLookup,this.cogResolutionLookup]=await async function(A){const g=await A.getImageCount(),I=await A.getImage(0),C=I.getResolution()[0],e=I.getWidth(),i=[],B=[];for(let I=0;I<g;I++){const g=C*(e/(await A.getImage(I)).getWidth()),t=Math.round(Math.log2(156543.03125/g));i[I]=t,B[I]=g}return[i,B]}(this.cog),"terrain"===this.options.type&&this.computeMeshMaxErrorLookup(),this.tileSize=C.getTileWidth(),!this.tileSize||!C.getTileHeight())throw new Error('GeoTIFF Error: The provided image is not tiled. Please use "rio cogeo create --web-optimized" to fix this.');this.zoomRange=Vg(this.tileSize,C.getResolution()[0],await this.cog.getImageCount()),this.bounds=function(A){const g=Math.min(A[0],A[2]),I=Math.max(A[0],A[2]),C=Math.min(A[1],A[3]),e=Math.max(A[1],A[3]),i=Wg([g,C]),B=Wg([I,e]);return[i[0],i[1],B[0],B[1]]}(C.getBoundingBox()),this.tileReader=new zg({options:this.options,tileSize:this.tileSize}),this.lastInitializedUrl=A}catch(g){throw this.initializePromise=void 0,console.error(`[CogTiles] Failed to initialize COG from ${A}:`,g),g}})(),this.initializePromise)}getZoomRange(){return this.zoomRange}getBoundsAsLatLon(){return this.bounds}getNumChannels(){return this.options.numOfChannels||1}getBandDescriptions(){return this.bandDescriptions}getMeshMaxErrorForImageIndex(A){return this.cogMeshMaxErrorLookup[A]}computeMeshMaxErrorLookup(){const A=this.cogZoomLookup[this.cogZoomLookup.length-1],g=this.cogZoomLookup[0];this.cogMeshMaxErrorLookup=this.cogResolutionLookup.map((I,C)=>function(A,g,I,C){const e=function(A,g,I){return A>=I?.5:A<=g?3:3-(A-g)/(I-g)*2.5}(A,I,C),i=g*e;return Math.round(Math.max(.5,Math.min(100,i)))}(this.cogZoomLookup[C],I,A,g))}getImageIndexForZoomLevel(A){return function(A,g){const I=g[g.length-1];if(A>g[0])return 0;if(A<I)return g.length-1;const C=g.indexOf(A);if(-1!==C)return C;let e=0,i=Math.abs(g[0]-A);for(let I=1;I<g.length;I+=1){const C=Math.abs(g[I]-A);C<i&&(i=C,e=I)}return e}(A,this.cogZoomLookup)}async getTileFromImage(A,g,I,C,e){const i=new AbortController;e&&!e.aborted&&e.addEventListener("abort",()=>i.abort(),{once:!0});const B=i.signal;try{const e=this.getImageIndexForZoomLevel(I);let i=this.cache.getImage(e);i||(i=this.cog.getImage(e),this.cache.setImage(e,i));const t=await i,Q=this.cogResolutionLookup[e],s=t.getHeight(),o=t.getWidth(),[a,E]=this.cogOrigin,r=this.tileSize,n=Zg/r/2**I,h=(Og[0]+A*r*n-a)/Q,l=(E-(Og[1]-g*r*n))/Q,c=C||r,w=Math.round(h),D=Math.round(l),d=w+c,y=D+c,G=Math.max(0,w),u=Math.max(0,D),S=Math.min(o,d),f=Math.min(s,y),N=S-G,k=f-u;if(N<=0||k<=0)return[this.tileReader.createEmptyTile(c)];const R=G-w,F=u-D,p=[G,u,S,f];if(R>0||F>0||N<c||k<c){const A=this.options.numOfChannels||1,g=this.tileReader.createTileBuffer(this.options.format||"Float32",c,A);void 0!==this.options.noDataValue&&g.fill(this.options.noDataValue);const I=await t.readRasters({window:p,signal:B});for(let C=0;C<I.length;C+=1){const e=this.tileReader.createTileBuffer(this.options.format||"Float32",c);void 0!==this.options.noDataValue&&e.fill(this.options.noDataValue);for(let A=0;A<k;A+=1){const g=F+A,i=g*c,B=A*I.width;for(let A=0;A<N;A+=1){const t=R+A;g<c&&t<c?e[i+t]=I[C][B+A]:console.error(`[CogTiles] tile buffer bounds exceeded: destRow ${g}, destCol ${t}, FETCH_SIZE ${c}`)}}for(let I=0;I<e.length;I+=1)g[I*A+C]=e[I]}return[g]}return[await t.readRasters({window:p,interleave:!0,signal:B})]}catch(A){if(A instanceof AggregateError&&1===A.errors.length){const g=A.errors[0];if(g instanceof DOMException&&"AbortError"===g.name)throw g;if(g instanceof Error&&"Request was aborted"===g.message)throw new DOMException("Tile request aborted","AbortError");throw g}if(B.aborted||A instanceof DOMException&&"AbortError"===A.name||A instanceof Error&&"Request was aborted"===A.message)throw new DOMException("Tile request aborted","AbortError");if(A instanceof AggregateError){if(A.errors.some(A=>A instanceof DOMException&&"AbortError"===A.name||A instanceof Error&&"Request was aborted"===A.message))throw new DOMException("Tile request aborted","AbortError")}throw A}}async getTile(A,g,I,C,e,i,B){const t=Math.atan(Math.sinh(Math.PI*(1-2*(g+.5)/Math.pow(2,I)))),Q=Zg/Math.pow(2,I)*Math.cos(t)/this.tileSize,s="terrain"===this.options.type,o="image"===this.options.type&&this.options.useReliefGlaze;let a=e;if(!s||e&&0!==e)a=e??4;else{const A=this.getImageIndexForZoomLevel(I);a=this.getMeshMaxErrorForImageIndex(A)??4}return s?this.getTerrainTile(A,g,I,C,a,Q,i,B):o?this.getGlazeTile(A,g,I,C,Q,e,i):this.getBitmapTile(A,g,I,C,Q,e,i)}async getTerrainTile(A,g,I,C,e,i,B,t){const Q=t??this.options.skipTexture??!1;if(this.options.cacheAllBands){if(B?.aborted)return null;const i=this.options.useChannel||1,t=`${this.lastInitializedUrl}_${I}_${A}_${g}_${e}_${Q}_band_${i}`;if(Xg.has(t)){const A=Xg.get(t);if(A)return A}try{const t=await this.getTileAllBands(A,g,I,e,void 0,C);if(t&&t.length>0){if(B?.aborted)return null;t.forEach((C,i)=>{const B=i+1,t=`${this.lastInitializedUrl}_${I}_${A}_${g}_${e}_${Q}_band_${B}`;Xg.set(t,C)});const C=(i||1)-1;return C<0||C>=t.length?(console.error(`[CogTiles] Requested band index ${C} out of range (0-${t.length-1})`),null):t[C]}}catch(A){console.warn("[CogTiles] Multi-band fetch failed, falling back to single-band:",A)}}const s=this.cache.getTileResultCacheKey(A,g,I,e,Q),o=this.cache.getTileResult(s);if(o){if(o.settled)return B?.aborted?null:o.promise;o.callerCount+=1,B&&!B.aborted&&B.addEventListener("abort",()=>{o.callerCount-=1,o.callerCount<=0&&!o.settled&&o.controller.abort()},{once:!0});const A=await o.promise;return B?.aborted?null:A}const a=new AbortController,E=(async()=>{const B=this.options.useSlope||this.options.useHillshade||this.options.useSwissRelief,t=this.tileSize+(B?2:1),o=await this.getTileFromImage(A,g,I,t,a.signal),E=o[0],r=this.options.noDataValue;if(void 0!==r&&E){const A=this.options.numOfChannels||1;let g=this.options.useChannelIndex??(this.options.useChannel?this.options.useChannel-1:0);null==g&&(g=0);const I=this.options.noDataCheck??"full",C=t,e=t,i=A=>Lg(A,r);let B=!0;if("full"===I)if(A>1)for(let I=g;I<E.length;I+=A){if(!i(E[I])){B=!1;break}}else for(let A=0;A<E.length;A++){if(!i(E[A])){B=!1;break}}else if("border+center"===I){const I=A;for(let A=0;A<C;A++){if(!i(E[A*I+g])){B=!1;break}}if(B)for(let A=0;A<C;A++){if(!i(E[((e-1)*C+A)*I+g])){B=!1;break}}if(B)for(let A=1;A<e-1;A++){const e=(A*C+(C-1))*I+g,t=E[A*C*I+g],Q=E[e];if(!i(t)||!i(Q)){B=!1;break}}if(B){const A=[[Math.floor(C/2),Math.floor(e/2)],[Math.floor(C/4),Math.floor(e/4)],[Math.floor(3*C/4),Math.floor(e/4)],[Math.floor(C/4),Math.floor(3*e/4)],[Math.floor(3*C/4),Math.floor(3*e/4)]];for(const[e,t]of A){if(!i(E[(t*C+e)*I+g])){B=!1;break}}}}else for(let A=0;A<E.length;A++){if(!i(E[A])){B=!1;break}}if(B)return this.cache.deleteTileResult(s),null}const n={...this.options,skipTexture:Q};return this.geo.getMap({rasters:[o[0]],width:t,height:t,bounds:C??[0,0,0,0],cellSizeMeters:i},n,e,this.workerPool,a.signal)})(),r={promise:E,controller:a,callerCount:1,settled:!1};B&&!B.aborted&&B.addEventListener("abort",()=>{r.callerCount-=1,r.callerCount<=0&&!r.settled&&r.controller.abort()},{once:!0}),r.promise=E,this.cache.setTileResult(s,r);try{const A=await E;return r.settled=!0,B?.aborted?null:A}catch(A){throw r.settled=!0,this.cache.deleteTileResult(s),A}}async getGlazeTile(A,g,I,C,e,i,B){const t=this.cache.getTileCacheKey(A,g,I);let Q=this.cache.getReliefMask(t);if(!Q){const C=new AbortController;Q=(async()=>{const i=await this.getTileFromImage(A,g,I,this.tileSize+2,C.signal);return mg.composeSwissRelief(i[0],this.options,e,this.tileSize,this.tileSize)})(),this.cache.setReliefMask(t,Q),Q.catch(()=>this.cache.deleteReliefMask(t))}if(B?.aborted)return null;const s=await Q;return B?.aborted?null:this.geo.getMap({rasters:[s],width:this.tileSize,height:this.tileSize,bounds:C??[0,0,0,0],cellSizeMeters:e},this.options,i??4,this.workerPool,B)}async getBitmapTile(A,g,I,C,e,i,B){const t=this.cache.getTileCacheKey(A,g,I);let Q=this.cache.getRaster(t);if(!Q){const C=new AbortController;Q=this.getTileFromImage(A,g,I,this.tileSize,C.signal),this.cache.setRaster(t,Q),Q.catch(()=>this.cache.deleteRaster(t))}if(B?.aborted)return null;const s=await Q;return B?.aborted?null:this.geo.getMap({rasters:[s[0]],width:this.tileSize,height:this.tileSize,bounds:C??[0,0,0,0],cellSizeMeters:e},this.options,i??4,this.workerPool)}async getTileAllBands(A,g,I,C,e,i){if(!this.cog)return[];const B=Math.atan(Math.sinh(Math.PI*(1-2*(g+.5)/Math.pow(2,I)))),t=Zg/Math.pow(2,I)*Math.cos(B)/this.tileSize;let Q;if(C&&0!==C)Q=C;else{const A=this.getImageIndexForZoomLevel(I);Q=this.getMeshMaxErrorForImageIndex(A)??4}const s=new AbortController;e&&!e.aborted&&e.addEventListener("abort",()=>s.abort(),{once:!0});const o=s.signal;try{const C=this.getImageIndexForZoomLevel(I);let B=this.cache.getImage(C);B||(B=this.cog.getImage(C),this.cache.setImage(C,B));const s=await B,a=this.cogResolutionLookup[C],E=s.getHeight(),r=s.getWidth(),[n,h]=this.cogOrigin,l=this.tileSize,c=Og[0],w=Og[1],D=this.options.useSlope||this.options.useHillshade||this.options.useSwissRelief,d=this.tileSize+(D?2:1),y=Zg/l/2**I,G=(c+A*l*y-n)/a,u=(h-(w-g*l*y))/a,S=Math.round(G),f=Math.round(u),N=S+d,k=f+d,R=Math.max(0,S),F=Math.max(0,f),p=Math.min(r,N),L=Math.min(E,k),Y=p-R,U=L-F;if(Y<=0||U<=0)return[];const m=R-S,M=F-f,b=[R,F,p,L],K=await s.readRasters({window:b,signal:o});if(e?.aborted)return[];const H=[],J=K.length;for(let A=0;A<J;A+=1){const g=K[A],I=this.tileReader.createTileBuffer(this.options.format||"Float32",d);void 0!==this.options.noDataValue&&I.fill(this.options.noDataValue);for(let A=0;A<U;A+=1){const C=M+A,e=C*d,i=A*Y;for(let A=0;A<Y;A+=1){const B=m+A;C<d&&B<d&&(I[e+B]=g[i+A])}}const C={...this.options,useChannel:1,useChannelIndex:0,numOfChannels:1},B=await this.geo.getMap({rasters:[I],width:d,height:d,bounds:i??[0,0,0,0],cellSizeMeters:t},C,Q,this.workerPool,e);B&&H.push(B)}return H}catch(A){return e?.aborted||console.error("[CogTiles.getTileAllBands] Error fetching all bands:",A),[]}}clearTileResultCache(){this.cache.clearTileResultCache()}}const _g={type:"object",value:null,validate:(A,g)=>g.optional&&null===A||"string"==typeof A||Array.isArray(A)&&A.every(A=>"string"==typeof A),equal:(A,g)=>{if(A===g)return!0;if(!Array.isArray(A)||!Array.isArray(g))return!1;const I=A.length;if(I!==g.length)return!1;for(let C=0;C<I;C++)if(A[C]!==g[C])return!1;return!0}},$g={...g.TileLayer.defaultProps,bounds:{type:"array",value:null,optional:!0,compare:!0},rasterData:_g,clampToTerrain:!1,workerUrl:""};class AI extends A.CompositeLayer{static defaultProps=$g;static layerName="CogBitmapLayer";async initializeState(A){super.initializeState(A),this.setState({bitmapCogTiles:this.props.cogTiles||new jg(this.props.cogBitmapOptions),initialized:!1}),await this.init()}async init(){await this.state.bitmapCogTiles.initializeCog(this.props.rasterData);const A=this.state.bitmapCogTiles.getZoomRange(),[g,I]=A;this.setState({initialized:!0,minZoom:g,maxZoom:I})}updateState({props:g,oldProps:I}){const C=g.rasterData!==I.rasterData;if(C){const{rasterData:A}=g,I=A&&(Array.isArray(A)||A.includes("{x}")&&A.includes("{y}")||this.props.isTiled);this.setState({isTiled:I})}C||(g.bounds,I.bounds);this.state.isTiled,g?.cogBitmapOptions?.useChannel!==I.cogBitmapOptions?.useChannel&&(this.state.bitmapCogTiles.options.useChannel=g.cogBitmapOptions.useChannel,this.state.bitmapCogTiles.options.useChannelIndex=null),g.workerUrl&&A.log.removed("workerUrl","loadOptions.terrain.workerUrl")()}async getTiledBitmapData(A){let g;try{g=await this.state.bitmapCogTiles.getTile(A.index.x,A.index.y,A.index.z,void 0,void 0,A.signal)}catch(A){if(A instanceof DOMException&&"AbortError"===A.name)return null;throw A}return g&&!this.props.pickable&&(g.raw=null),g}renderSubLayers(A){const g=this.getSubLayerClass("image",I.BitmapLayer),{blurredTexture:e}=this.state.bitmapCogTiles.options,{clampToTerrain:i}=this.props,B="object"==typeof i&&null!==i&&"terrainDrawMode"in i,{data:t}=A;if(!t)return null;const{bbox:{west:Q,south:s,east:o,north:a}}=A.tile;return new g({...A,tileSize:this.state.bitmapCogTiles.tileSize},{data:[1],image:t.map,_instanced:!1,pickable:A.pickable,bounds:[Q,s,o,a],textureParameters:{minFilter:e?"linear":"nearest",magFilter:e?"linear":"nearest"},extensions:i?[new C._TerrainExtension]:[],...B?{terrainDrawMode:i.terrainDrawMode}:{}})}renderLayers(){const{clampToTerrain:A,maxRequests:I,onTileLoad:C,onTileUnload:e,onTileError:i,maxCacheSize:B,maxCacheByteSize:t,refinementStrategy:Q,cogBitmapOptions:s}=this.props;if(this.state.isTiled&&this.state.initialized){const{tileSize:o}=this.state.bitmapCogTiles;return new g.TileLayer(this.getSubLayerProps({id:"tiles"}),{getTileData:this.getTiledBitmapData.bind(this),renderSubLayers:this.renderSubLayers.bind(this),pickable:this.props.pickable,onClick:this.props.onClick,updateTriggers:{getTileData:[A,s.useChannel]},extent:this.state.bitmapCogTiles.getBoundsAsLatLon(),tileSize:o,minZoom:this.state.minZoom,maxZoom:this.state.maxZoom,maxRequests:I,onTileLoad:C,onTileUnload:e,onTileError:i,maxCacheSize:B,maxCacheByteSize:t,refinementStrategy:Q})}return null}}const gI={type:"object",value:null,validate:(A,g)=>g.optional&&null===A||"string"==typeof A||Array.isArray(A)&&A.every(A=>"string"==typeof A),equal:(A,g)=>{if(A===g)return!0;if(!Array.isArray(A)||!Array.isArray(g))return!1;const I=A.length;if(I!==g.length)return!1;for(let C=0;C<I;C++)if(A[C]!==g[C])return!1;return!0}},II=[1],CI={...g.TileLayer.defaultProps,elevationData:gI,texture:{...gI,optional:!0},meshMaxError:{type:"object",value:"auto",validate:A=>"number"==typeof A||"auto"===A,equal:(A,g)=>A===g},bounds:{type:"array",value:null,optional:!0,compare:!0},color:{type:"color",value:[255,255,255]},elevationDecoder:{type:"object",value:{rScaler:1,gScaler:0,bScaler:0,offset:0}},workerUrl:"",wireframe:!1,material:!0};class eI extends A.CompositeLayer{static defaultProps=CI;static layerName="CogTerrainLayer";terrainUrl="";async initializeState(A){super.initializeState(A);const g=this.props.cogTiles||new jg(this.props.terrainOptions);if(this.setState({terrainCogTiles:g,initialized:!1}),g.cog){const A=g.getZoomRange(),[I,C]=A;this.setState({initialized:!0,minZoom:I,maxZoom:C})}else await this.init()}async init(){await this.state.terrainCogTiles.initializeCog(this.props.elevationData);const A=this.state.terrainCogTiles.getZoomRange(),[g,I]=A;this.setState({initialized:!0,minZoom:g,maxZoom:I})}updateState({props:g,oldProps:I}){const C=g.elevationData!==I.elevationData;if(C){const{elevationData:A}=g,I=A&&(Array.isArray(A)||A.includes("{x}")&&A.includes("{y}"))||this.props.isTiled;this.setState({isTiled:I})}C||g.meshMaxError!==I.meshMaxError||g.elevationDecoder!==I.elevationDecoder||(g.bounds,I.bounds);g.meshMaxError!==I.meshMaxError&&this.state.terrainCogTiles&&this.state.terrainCogTiles.clearTileResultCache(),this.state.isTiled,g?.terrainOptions?.useChannel!==I.terrainOptions?.useChannel&&this.state.terrainCogTiles&&(this.state.terrainCogTiles.options.useChannel=g.terrainOptions.useChannel,this.state.terrainCogTiles.options.useChannelIndex=null,this.state.terrainCogTiles.clearTileResultCache());const e=!(!g?.wireframe&&"terrain"!==g?.operation&&!g?.disableTexture);e!==!(!I?.wireframe&&"terrain"!==I?.operation&&!I?.disableTexture)&&this.state.terrainCogTiles&&(this.state.terrainCogTiles.options.skipTexture=e,this.state.terrainCogTiles.clearTileResultCache()),g.cogTiles&&g.cogTiles!==I.cogTiles&&this.setState({terrainCogTiles:g.cogTiles}),g.workerUrl&&A.log.removed("workerUrl","loadOptions.terrain.workerUrl")()}loadTerrain({elevationData:A,bounds:g,elevationDecoder:I,meshMaxError:C,signal:e}){if(!A)return null;let i=this.getLoadOptions();i={...i,_workerType:"test",terrain:{skirtHeight:this.state.isTiled?2*C:0,...i?.terrain,bounds:g,meshMaxError:C,elevationDecoder:I}};const{fetch:B}=this.props;return B(A,{propName:"elevationData",layer:this,loadOptions:i,signal:e,loaders:[]})}async getTiledTerrainData(A){const{viewport:g}=this.context;let I=[0,0],C=[0,0];if(g.isGeospatial){const e=A.bbox;I=g.projectFlat([e.west,e.south]),C=g.projectFlat([e.east,e.north])}else{const g=A.bbox;I=[g.left,g.bottom],C=[g.right,g.top]}const e=[I[0],I[1],C[0],C[1]];let i=null;try{const g=!(!this.props.wireframe&&"terrain"!==this.props.operation&&!this.props.disableTexture),I="auto"===this.props.meshMaxError?void 0:this.props.meshMaxError;i=await this.state.terrainCogTiles.getTile(A.index.x,A.index.y,A.index.z,e,I,A.signal,g)}catch(A){if(A instanceof DOMException&&"AbortError"===A.name)return null;throw A}return i&&!this.props.pickable&&(i.raw=null),i?[i,null]:null}renderSubLayers(g){const I=this.getSubLayerClass("mesh",t.SimpleMeshLayer),{color:C,wireframe:e,terrainOptions:i}=this.props,{data:B}=g;if(!B)return null;const[Q]=B,s=!this.props.disableTexture&&Q?.texture?Q.texture:null,o=i?.useSwissRelief,a=i?.disableLighting,E=o||a?{material:{ambient:1,diffuse:0,shininess:0,specularColor:[0,0,0]}}:{material:this.props.material};return new I({...g,tileSize:g.tileSize},{...E,data:II,mesh:Q?.map,texture:s,_instanced:!1,pickable:g.pickable,coordinateSystem:A.COORDINATE_SYSTEM.CARTESIAN,getColor:s?[255,255,255]:C,wireframe:e})}onViewportLoad(A){if(!A)return;const{zRange:g}=this.state,I=A.map(A=>A.content).filter(A=>!!A&&!!A[0]).map(A=>{if(!A||!A[0])return;const g=A[0]?.map?.header?.boundingBox;return g?.map(A=>A[2])}).filter(A=>void 0!==A);if(0===I.length)return;const C=Math.min(...I.map(A=>A?.[0]??0).filter(A=>Number.isFinite(A))),e=Math.max(...I.map(A=>A?.[1]??0).filter(A=>Number.isFinite(A)));if(!g||C<g[0]||e>g[1]){const A=[Number.isFinite(C)?C:0,Number.isFinite(e)?e:0];this.setState({zRange:A}),this.props.onZRangeUpdate?.(A)}}renderLayers(){const{elevationData:A,meshMaxError:I,elevationDecoder:C,tileSize:e,extent:i,maxRequests:B,onTileLoad:t,onTileUnload:Q,onTileError:s,maxCacheSize:o,maxCacheByteSize:a,refinementStrategy:E}=this.props;return this.state.isTiled&&this.state.initialized?new g.TileLayer(this.getSubLayerProps({id:"tiles"}),{getTileData:this.getTiledTerrainData.bind(this),renderSubLayers:this.renderSubLayers.bind(this),pickable:this.props.pickable,onClick:this.props.onClick,updateTriggers:{getTileData:{elevationData:(r=A,Array.isArray(r)?r.join(";"):r||""),meshMaxError:I,elevationDecoder:C,terrainCogTiles:this.state.terrainCogTiles,skipTexture:!(!this.props.wireframe&&"terrain"!==this.props.operation&&!this.props.disableTexture),useChannel:this.props.terrainOptions?.useChannel},renderSubLayers:{disableTexture:this.props.disableTexture,terrainOptions:this.props.terrainOptions}},onViewportLoad:this.onViewportLoad.bind(this),zRange:this.state.zRange||null,tileSize:e,minZoom:this.state.minZoom,maxZoom:this.state.maxZoom,extent:i,maxRequests:B,onTileLoad:t,onTileUnload:Q,onTileError:s,maxCacheSize:o,maxCacheByteSize:a,refinementStrategy:E}):null;var r}}s();var iI=Object.freeze({__proto__:null,default:class extends lg{decodeBlock(A){return A}}});function BI(A,g){for(let I=g.length-1;I>=0;I--)A.push(g[I]);return A}function tI(A){const g=new Uint16Array(4093),I=new Uint8Array(4093);for(let A=0;A<=257;A++)g[A]=4096,I[A]=A;let C=258,e=9,i=0;function B(){C=258,e=9}function t(A){const g=function(A,g,I){const C=g%8,e=Math.floor(g/8),i=8-C,B=g+I-8*(e+1);let t=8*(e+2)-(g+I);const Q=8*(e+2)-g;if(t=Math.max(0,t),e>=A.length)return console.warn("ran off the end of the buffer before finding EOI_CODE (end on input code)"),257;let s=A[e]&2**(8-C)-1;s<<=I-i;let o=s;if(e+1<A.length){let g=A[e+1]>>>t;g<<=Math.max(0,I-Q),o+=g}if(B>8&&e+2<A.length){const C=8*(e+3)-(g+I);o+=A[e+2]>>>C}return o}(A,i,e);return i+=e,g}function Q(A,e){return I[C]=e,g[C]=A,C++,C-1}function s(A){const C=[];for(let e=A;4096!==e;e=g[e])C.push(I[e]);return C}const o=[];B();const a=new Uint8Array(A);let E,r=t(a);for(;257!==r;){if(256===r){for(B(),r=t(a);256===r;)r=t(a);if(257===r)break;if(r>256)throw new Error(`corrupted code at scanline ${r}`);BI(o,s(r)),E=r}else if(r<C){const A=s(r);BI(o,A),void 0!==E&&Q(E,A[A.length-1]),E=r}else{if(void 0===E)throw new Error(`Invalid LZW code: ${r} with no previous code`);const A=s(E);if(!A)throw new Error(`Bogus entry. Not in dictionary, ${E} / ${C}, position: ${i}`);BI(o,A),o.push(A[A.length-1]),Q(E,A[A.length-1]),E=r}C+1>=2**e&&(12===e?E=void 0:e++),r=t(a)}return new Uint8Array(o)}var QI=Object.freeze({__proto__:null,default:class extends lg{decodeBlock(A){return tI(A).buffer}}});const sI=new Int32Array([0,1,8,16,9,2,3,10,17,24,32,25,18,11,4,5,12,19,26,33,40,48,41,34,27,20,13,6,7,14,21,28,35,42,49,56,57,50,43,36,29,22,15,23,30,37,44,51,58,59,52,45,38,31,39,46,53,60,61,54,47,55,62,63]),oI=4017,aI=799,EI=3406,rI=2276,nI=1567,hI=3784,lI=5793,cI=2896;function wI(A,g){let I=0;const C=[];let e=16;for(;e>0&&!A[e-1];)--e;C.push({children:[],index:0});let i,B=C[0];for(let t=0;t<e;t++){for(let e=0;e<A[t];e++){if(B=C.pop(),!B)throw new Error("buildHuffmanTable: codeLength mismatch");for(B.children[B.index]=g[I];B.index>0;)if(B=C.pop(),!B)throw new Error("buildHuffmanTable: codeLength mismatch");for(B.index++,C.push(B);C.length<=t;)C.push(i={children:[],index:0}),B.children[B.index]=i.children,B=i;I++}t+1<e&&(C.push(i={children:[],index:0}),B.children[B.index]=i.children,B=i)}return C[0].children}function DI(A,g,I,C,e,i,B,t,Q){const{mcusPerLine:s,progressive:o}=I;if(C.length>1&&(void 0===s||void 0===I.mcusPerColumn))throw new Error("Missing MCU dimensions");if(1===C.length&&(void 0===C[0].blocksPerLine||void 0===C[0].blocksPerColumn))throw new Error("Missing block dimensions");const a=g;let E=g,r=0,n=0;function h(){if(n>0)return n--,r>>n&1;if(r=A[E++],255===r){const g=A[E++];if(g)throw new Error(`unexpected marker: ${(r<<8|g).toString(16)}`)}return n=7,r>>>7}function l(A){if(!A)throw new Error("Huffman table not found");let g,I=A;for(;null!==(g=h());){const A=I[g];if("number"==typeof A)return A;if("object"!=typeof A)throw new Error("invalid huffman sequence");I=A}return null}function c(A){let g=A,I=0;for(;g>0;){const A=h();if(null===A)return;I=I<<1|A,--g}return I}function w(A){const g=c(A);if(void 0!==g)return g>=1<<A-1?g:g+(-1<<A)+1}let D=0;let d,y=0;function G(A,g,I,C,e){const i=I%s,B=(I/s|0)*A.v+C,t=i*A.h+e;if(!A.blocks)throw new Error("Missing blocks");g(A,A.blocks[B][t])}function u(A,g,I){const C=I/A.blocksPerLine|0,e=I%A.blocksPerLine;if(!A.blocks)throw new Error("Missing blocks");g(A,A.blocks[C][e])}const S=C.length;let f,N,k,R,F,p;p=o?0===i?0===t?function(A,g){const I=l(A.huffmanTableDC);if(null===I)throw new Error("Huffman error");const C=w(I);if(void 0===C)throw new Error("Unexpected end of data in DC coefficient decoding");const e=0===I?0:C<<Q;void 0===A.pred&&(A.pred=0),A.pred+=e,g[0]=A.pred}:function(A,g){const I=h();if(null===I)throw new Error("Unexpected end of data in DC coefficient decoding");g[0]|=I<<Q}:0===t?function(A,g){if(D>0)return void D--;let I=i;const C=B;for(;I<=C;){const C=l(A.huffmanTableAC);if(null===C)throw new Error("Unexpected end of data in AC coefficient decoding");const e=15&C,i=C>>4;if(0===e){if(i<15){const A=c(i);if(void 0===A)throw new Error("Unexpected end of data in AC coefficient decoding");D=A+(1<<i)-1;break}I+=16}else{I+=i;const A=sI[I],C=w(e);if(void 0===C)throw new Error("Unexpected end of data in AC coefficient decoding");g[A]=C*(1<<Q),I++}}}:function(A,g){let I=i;const C=B;let e=0;for(;I<=C;){const C=sI[I],i=g[C]<0?-1:1;switch(y){case 0:{const g=l(A.huffmanTableAC);if(null===g)throw new Error("Unexpected end of data in AC coefficient decoding");const I=15&g;if(e=g>>4,0===I)if(e<15){const A=c(e);if(void 0===A)throw new Error("Unexpected end of data in AC coefficient decoding");D=A+(1<<e),y=4}else e=16,y=1;else{if(1!==I)throw new Error("invalid ACn encoding");const A=w(I);if(void 0===A)throw new Error("Unexpected end of data in AC coefficient decoding");d=A,y=e?2:3}continue}case 1:case 2:if(g[C]){const A=h();if(null===A)throw new Error("Unexpected end of data in AC coefficient decoding");g[C]+=(A<<Q)*i}else e--,0===e&&(y=2===y?3:0);break;case 3:if(g[C]){const A=h();if(null===A)throw new Error("Unexpected end of data in AC coefficient decoding");g[C]+=(A<<Q)*i}else g[C]=d<<Q,y=0;break;case 4:if(g[C]){const A=h();if(null===A)throw new Error("Unexpected end of data in AC coefficient decoding");g[C]+=(A<<Q)*i}}I++}4===y&&(D--,0===D&&(y=0))}:function(A,g){const I=l(A.huffmanTableDC);if(null===I)throw new Error("Huffman error");const C=0===I?0:w(I);if(void 0===C)throw new Error("Unexpected end of stream");void 0===A.pred&&(A.pred=0),A.pred+=C,g[0]=A.pred;let e=1;for(;e<64;){const I=l(A.huffmanTableAC);if(null===I)throw new Error("Unexpected end of data in AC coefficient decoding");const C=15&I,i=I>>4;if(0===C){if(i<15)break;e+=16}else{e+=i;const A=sI[e],I=w(C);if(void 0===I)throw new Error("Unexpected end of stream");g[A]=I,e++}}};let L,Y,U=0;Y=1===S?C[0].blocksPerLine*C[0].blocksPerColumn:s*I.mcusPerColumn;const m=e||Y;for(;U<Y;){for(N=0;N<S;N++)C[N].pred=0;if(D=0,1===S)for(f=C[0],F=0;F<m;F++)u(f,p,U),U++;else for(F=0;F<m;F++){for(N=0;N<S;N++){f=C[N];const{h:A,v:g}=f;for(k=0;k<g;k++)for(R=0;R<A;R++)G(f,p,U,k,R)}if(U++,U===Y)break}if(n=0,L=A[E]<<8|A[E+1],L<65280)throw new Error("marker was not found");if(!(L>=65488&&L<=65495))break;E+=2}return E-a}function dI(A){const g=[],{blocksPerLine:I,blocksPerColumn:C}=A;if(!I||!C||!A.blocks)throw new Error("Missing component data");const e=I<<3,i=new Int32Array(64),B=new Uint8Array(64);function t(g,I,C){const e=A.quantizationTable;if(!e)throw new Error("No quantization table found");let i,B,t,Q,s,o,a,E,r;const n=C;let h;for(h=0;h<64;h++)n[h]=g[h]*e[h];for(h=0;h<8;++h){const A=8*h;0!==n[1+A]||0!==n[2+A]||0!==n[3+A]||0!==n[4+A]||0!==n[5+A]||0!==n[6+A]||0!==n[7+A]?(i=lI*n[0+A]+128>>8,B=lI*n[4+A]+128>>8,t=n[2+A],Q=n[6+A],s=cI*(n[1+A]-n[7+A])+128>>8,E=cI*(n[1+A]+n[7+A])+128>>8,o=n[3+A]<<4,a=n[5+A]<<4,r=i-B+1>>1,i=i+B+1>>1,B=r,r=t*hI+Q*nI+128>>8,t=t*nI-Q*hI+128>>8,Q=r,r=s-a+1>>1,s=s+a+1>>1,a=r,r=E+o+1>>1,o=E-o+1>>1,E=r,r=i-Q+1>>1,i=i+Q+1>>1,Q=r,r=B-t+1>>1,B=B+t+1>>1,t=r,r=s*rI+E*EI+2048>>12,s=s*EI-E*rI+2048>>12,E=r,r=o*aI+a*oI+2048>>12,o=o*oI-a*aI+2048>>12,a=r,n[0+A]=i+E,n[7+A]=i-E,n[1+A]=B+a,n[6+A]=B-a,n[2+A]=t+o,n[5+A]=t-o,n[3+A]=Q+s,n[4+A]=Q-s):(r=lI*n[0+A]+512>>10,n[0+A]=r,n[1+A]=r,n[2+A]=r,n[3+A]=r,n[4+A]=r,n[5+A]=r,n[6+A]=r,n[7+A]=r)}for(h=0;h<8;++h){const A=h;0!==n[8+A]||0!==n[16+A]||0!==n[24+A]||0!==n[32+A]||0!==n[40+A]||0!==n[48+A]||0!==n[56+A]?(i=lI*n[0+A]+2048>>12,B=lI*n[32+A]+2048>>12,t=n[16+A],Q=n[48+A],s=cI*(n[8+A]-n[56+A])+2048>>12,E=cI*(n[8+A]+n[56+A])+2048>>12,o=n[24+A],a=n[40+A],r=i-B+1>>1,i=i+B+1>>1,B=r,r=t*hI+Q*nI+2048>>12,t=t*nI-Q*hI+2048>>12,Q=r,r=s-a+1>>1,s=s+a+1>>1,a=r,r=E+o+1>>1,o=E-o+1>>1,E=r,r=i-Q+1>>1,i=i+Q+1>>1,Q=r,r=B-t+1>>1,B=B+t+1>>1,t=r,r=s*rI+E*EI+2048>>12,s=s*EI-E*rI+2048>>12,E=r,r=o*aI+a*oI+2048>>12,o=o*oI-a*aI+2048>>12,a=r,n[0+A]=i+E,n[56+A]=i-E,n[8+A]=B+a,n[48+A]=B-a,n[16+A]=t+o,n[40+A]=t-o,n[24+A]=Q+s,n[32+A]=Q-s):(r=lI*C[h+0]+8192>>14,n[0+A]=r,n[8+A]=r,n[16+A]=r,n[24+A]=r,n[32+A]=r,n[40+A]=r,n[48+A]=r,n[56+A]=r)}for(h=0;h<64;++h){const A=128+(n[h]+8>>4);I[h]=A<0?0:A>255?255:A}}for(let Q=0;Q<C;Q++){const C=Q<<3;for(let A=0;A<8;A++)g.push(new Uint8Array(e));for(let e=0;e<I;e++){t(A.blocks[Q][e],B,i);let I=0;const s=e<<3;for(let A=0;A<8;A++){const e=g[C+A];for(let A=0;A<8;A++)e[s+A]=B[I++]}}}return g}class yI{constructor(){this.jfif=null,this.adobe=null,this.resetInterval=0,this.quantizationTables=[],this.huffmanTablesAC=[],this.huffmanTablesDC=[],this.frames=[]}resetFrames(){this.frames=[]}parse(A){let g=0;function I(){const I=A[g]<<8|A[g+1];return g+=2,I}function C(){const C=I(),e=A.subarray(g,g+C-2);return g+=e.length,e}function e(A){let g,I,C=0,e=0;for(I in A.components)A.components.hasOwnProperty(I)&&(g=A.components[I],C<g.h&&(C=g.h),e<g.v&&(e=g.v));const i=Math.ceil(A.samplesPerLine/8/C),B=Math.ceil(A.scanLines/8/e);for(I in A.components)if(A.components.hasOwnProperty(I)){g=A.components[I];const t=Math.ceil(Math.ceil(A.samplesPerLine/8)*g.h/C),Q=Math.ceil(Math.ceil(A.scanLines/8)*g.v/e),s=i*g.h,o=B*g.v,a=[];for(let A=0;A<o;A++){const A=[];for(let g=0;g<s;g++)A.push(new Int32Array(64));a.push(A)}g.blocksPerLine=t,g.blocksPerColumn=Q,g.blocks=a}A.maxH=C,A.maxV=e,A.mcusPerLine=i,A.mcusPerColumn=B}let i=I();if(65496!==i)throw new Error("SOI not found");for(i=I();65497!==i;){switch(i){case 65280:break;case 65504:case 65505:case 65506:case 65507:case 65508:case 65509:case 65510:case 65511:case 65512:case 65513:case 65514:case 65515:case 65516:case 65517:case 65518:case 65519:case 65534:{const A=C();65504===i&&74===A[0]&&70===A[1]&&73===A[2]&&70===A[3]&&0===A[4]&&(this.jfif={version:{major:A[5],minor:A[6]},densityUnits:A[7],xDensity:A[8]<<8|A[9],yDensity:A[10]<<8|A[11],thumbWidth:A[12],thumbHeight:A[13],thumbData:A.subarray(14,14+3*A[12]*A[13])}),65518===i&&65===A[0]&&100===A[1]&&111===A[2]&&98===A[3]&&101===A[4]&&0===A[5]&&(this.adobe={version:A[6],flags0:A[7]<<8|A[8],flags1:A[9]<<8|A[10],transformCode:A[11]});break}case 65499:{const C=I()+g-2;for(;g<C;){const C=A[g++],e=new Int32Array(64);if(C>>4){if(C>>4!=1)throw new Error("DQT: invalid table spec");for(let A=0;A<64;A++){e[sI[A]]=I()}}else for(let I=0;I<64;I++){e[sI[I]]=A[g++]}this.quantizationTables[15&C]=e}break}case 65472:case 65473:case 65474:{I();const C={extended:65473===i,progressive:65474===i,precision:A[g++],scanLines:I(),samplesPerLine:I(),components:{},componentsOrder:[],maxH:0,maxV:0,mcusPerLine:0,mcusPerColumn:0},B=A[g++];let t;for(let I=0;I<B;I++){t=A[g];const I=A[g+1]>>4,e=15&A[g+1],i=A[g+2];C.componentsOrder.push(t),C.components[t]={h:I,v:e,quantizationIdx:i,blocksPerLine:0,blocksPerColumn:0,blocks:[]},g+=3}e(C),this.frames.push(C);break}case 65476:{const C=I();for(let I=2;I<C;){const C=A[g++],e=new Uint8Array(16);let i=0;for(let I=0;I<16;I++,g++)e[I]=A[g],i+=e[I];const B=new Uint8Array(i);for(let I=0;I<i;I++,g++)B[I]=A[g];I+=17+i,C>>4?this.huffmanTablesAC[15&C]=wI(e,B):this.huffmanTablesDC[15&C]=wI(e,B)}break}case 65501:I(),this.resetInterval=I();break;case 65498:{I();const C=A[g++],e=[],i=this.frames[0];for(let I=0;I<C;I++){const I=i.components[A[g++]],C=A[g++];I.huffmanTableDC=this.huffmanTablesDC[C>>4],I.huffmanTableAC=this.huffmanTablesAC[15&C],e.push(I)}const B=A[g++],t=A[g++],Q=A[g++],s=DI(A,g,i,e,this.resetInterval,B,t,Q>>4,15&Q);g+=s;break}case 65535:255!==A[g]&&g--;break;default:if(255===A[g-3]&&A[g-2]>=192&&A[g-2]<=254){g-=3;break}throw new Error(`unknown JPEG marker ${i.toString(16)}`)}i=I()}}getResult(){const{frames:A}=this;if(0===this.frames.length)throw new Error("no frames were decoded");this.frames.length>1&&console.warn("more than one frame is not supported");for(let A=0;A<this.frames.length;A++){const g=this.frames[A].components;for(const A of Object.keys(g)){const I=g[A].quantizationIdx;"number"==typeof I&&(g[A].quantizationTable=this.quantizationTables[I],delete g[A].quantizationIdx)}}const g=A[0];if(!g.maxH||!g.maxV)throw new Error("Invalid frame dimensions");const{components:I,componentsOrder:C}=g,e=[],i=g.samplesPerLine,B=g.scanLines;for(let A=0;A<C.length;A++){const i=I[C[A]];e.push({lines:dI(i),scaleX:i.h/g.maxH,scaleY:i.v/g.maxV})}const t=new Uint8Array(i*B*e.length);let Q=0;for(let A=0;A<B;++A)for(let g=0;g<i;++g)for(let I=0;I<e.length;++I){const C=e[I];t[Q]=C.lines[0|A*C.scaleY][0|g*C.scaleX],++Q}return t}}var GI=Object.freeze({__proto__:null,default:class extends lg{constructor(A){super(A),this.reader=new yI,A.JPEGTables&&this.reader.parse(A.JPEGTables)}decodeBlock(A){return this.reader.resetFrames(),this.reader.parse(new Uint8Array(A)),this.reader.getResult().buffer}}});function uI(A){let g=A.length;for(;--g>=0;)A[g]=0}uI(new Array(576));uI(new Array(60));uI(new Array(512));uI(new Array(256));uI(new Array(29));uI(new Array(30));var SI=(A,g,I,C)=>{let e=65535&A,i=A>>>16&65535,B=0;for(;0!==I;){B=I>2e3?2e3:I,I-=B;do{e=e+g[C++]|0,i=i+e|0}while(--B);e%=65521,i%=65521}return e|i<<16};const fI=new Uint32Array((()=>{let A,g=[];for(var I=0;I<256;I++){A=I;for(var C=0;C<8;C++)A=1&A?3988292384^A>>>1:A>>>1;g[I]=A}return g})());var NI=(A,g,I,C)=>{const e=fI,i=C+I;A^=-1;for(let I=C;I<i;I++)A=A>>>8^e[255&(A^g[I])];return-1^A},kI={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"},RI={Z_NO_FLUSH:0,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_DEFLATED:8};const FI=(A,g)=>Object.prototype.hasOwnProperty.call(A,g);var pI=function(A){const g=Array.prototype.slice.call(arguments,1);for(;g.length;){const I=g.shift();if(I){if("object"!=typeof I)throw new TypeError(I+"must be non-object");for(const g in I)FI(I,g)&&(A[g]=I[g])}}return A},LI=A=>{let g=0;for(let I=0,C=A.length;I<C;I++)g+=A[I].length;const I=new Uint8Array(g);for(let g=0,C=0,e=A.length;g<e;g++){let e=A[g];I.set(e,C),C+=e.length}return I};let YI=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(A){YI=!1}const UI=new Uint8Array(256);for(let A=0;A<256;A++)UI[A]=A>=252?6:A>=248?5:A>=240?4:A>=224?3:A>=192?2:1;UI[254]=UI[254]=1;var mI=A=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(A);let g,I,C,e,i,B=A.length,t=0;for(e=0;e<B;e++)I=A.charCodeAt(e),55296==(64512&I)&&e+1<B&&(C=A.charCodeAt(e+1),56320==(64512&C)&&(I=65536+(I-55296<<10)+(C-56320),e++)),t+=I<128?1:I<2048?2:I<65536?3:4;for(g=new Uint8Array(t),i=0,e=0;i<t;e++)I=A.charCodeAt(e),55296==(64512&I)&&e+1<B&&(C=A.charCodeAt(e+1),56320==(64512&C)&&(I=65536+(I-55296<<10)+(C-56320),e++)),I<128?g[i++]=I:I<2048?(g[i++]=192|I>>>6,g[i++]=128|63&I):I<65536?(g[i++]=224|I>>>12,g[i++]=128|I>>>6&63,g[i++]=128|63&I):(g[i++]=240|I>>>18,g[i++]=128|I>>>12&63,g[i++]=128|I>>>6&63,g[i++]=128|63&I);return g},MI=(A,g)=>{const I=g||A.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(A.subarray(0,g));let C,e;const i=new Array(2*I);for(e=0,C=0;C<I;){let g=A[C++];if(g<128){i[e++]=g;continue}let B=UI[g];if(B>4)i[e++]=65533,C+=B-1;else{for(g&=2===B?31:3===B?15:7;B>1&&C<I;)g=g<<6|63&A[C++],B--;B>1?i[e++]=65533:g<65536?i[e++]=g:(g-=65536,i[e++]=55296|g>>10&1023,i[e++]=56320|1023&g)}}return((A,g)=>{if(g<65534&&A.subarray&&YI)return String.fromCharCode.apply(null,A.length===g?A:A.subarray(0,g));let I="";for(let C=0;C<g;C++)I+=String.fromCharCode(A[C]);return I})(i,e)},bI=(A,g)=>{(g=g||A.length)>A.length&&(g=A.length);let I=g-1;for(;I>=0&&128==(192&A[I]);)I--;return I<0||0===I?g:I+UI[A[I]]>g?I:g};var KI=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 HI=16209;var JI=function(A,g){let I,C,e,i,B,t,Q,s,o,a,E,r,n,h,l,c,w,D,d,y,G,u,S,f;const N=A.state;I=A.next_in,S=A.input,C=I+(A.avail_in-5),e=A.next_out,f=A.output,i=e-(g-A.avail_out),B=e+(A.avail_out-257),t=N.dmax,Q=N.wsize,s=N.whave,o=N.wnext,a=N.window,E=N.hold,r=N.bits,n=N.lencode,h=N.distcode,l=(1<<N.lenbits)-1,c=(1<<N.distbits)-1;A:do{r<15&&(E+=S[I++]<<r,r+=8,E+=S[I++]<<r,r+=8),w=n[E&l];g:for(;;){if(D=w>>>24,E>>>=D,r-=D,D=w>>>16&255,0===D)f[e++]=65535&w;else{if(!(16&D)){if(64&D){if(32&D){N.mode=16191;break A}A.msg="invalid literal/length code",N.mode=HI;break A}w=n[(65535&w)+(E&(1<<D)-1)];continue g}for(d=65535&w,D&=15,D&&(r<D&&(E+=S[I++]<<r,r+=8),d+=E&(1<<D)-1,E>>>=D,r-=D),r<15&&(E+=S[I++]<<r,r+=8,E+=S[I++]<<r,r+=8),w=h[E&c];;){if(D=w>>>24,E>>>=D,r-=D,D=w>>>16&255,16&D){if(y=65535&w,D&=15,r<D&&(E+=S[I++]<<r,r+=8,r<D&&(E+=S[I++]<<r,r+=8)),y+=E&(1<<D)-1,y>t){A.msg="invalid distance too far back",N.mode=HI;break A}if(E>>>=D,r-=D,D=e-i,y>D){if(D=y-D,D>s&&N.sane){A.msg="invalid distance too far back",N.mode=HI;break A}if(G=0,u=a,0===o){if(G+=Q-D,D<d){d-=D;do{f[e++]=a[G++]}while(--D);G=e-y,u=f}}else if(o<D){if(G+=Q+o-D,D-=o,D<d){d-=D;do{f[e++]=a[G++]}while(--D);if(G=0,o<d){D=o,d-=D;do{f[e++]=a[G++]}while(--D);G=e-y,u=f}}}else if(G+=o-D,D<d){d-=D;do{f[e++]=a[G++]}while(--D);G=e-y,u=f}for(;d>2;)f[e++]=u[G++],f[e++]=u[G++],f[e++]=u[G++],d-=3;d&&(f[e++]=u[G++],d>1&&(f[e++]=u[G++]))}else{G=e-y;do{f[e++]=f[G++],f[e++]=f[G++],f[e++]=f[G++],d-=3}while(d>2);d&&(f[e++]=f[G++],d>1&&(f[e++]=f[G++]))}break}if(64&D){A.msg="invalid distance code",N.mode=HI;break A}w=h[(65535&w)+(E&(1<<D)-1)]}}break}}while(I<C&&e<B);d=r>>3,I-=d,r-=d<<3,E&=(1<<r)-1,A.next_in=I,A.next_out=e,A.avail_in=I<C?C-I+5:5-(I-C),A.avail_out=e<B?B-e+257:257-(e-B),N.hold=E,N.bits=r};const xI=15,TI=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]),ZI=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]),qI=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]),OI=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 WI=(A,g,I,C,e,i,B,t)=>{const Q=t.bits;let s,o,a,E,r,n,h=0,l=0,c=0,w=0,D=0,d=0,y=0,G=0,u=0,S=0,f=null;const N=new Uint16Array(16),k=new Uint16Array(16);let R,F,p,L=null;for(h=0;h<=xI;h++)N[h]=0;for(l=0;l<C;l++)N[g[I+l]]++;for(D=Q,w=xI;w>=1&&0===N[w];w--);if(D>w&&(D=w),0===w)return e[i++]=20971520,e[i++]=20971520,t.bits=1,0;for(c=1;c<w&&0===N[c];c++);for(D<c&&(D=c),G=1,h=1;h<=xI;h++)if(G<<=1,G-=N[h],G<0)return-1;if(G>0&&(0===A||1!==w))return-1;for(k[1]=0,h=1;h<xI;h++)k[h+1]=k[h]+N[h];for(l=0;l<C;l++)0!==g[I+l]&&(B[k[g[I+l]]++]=l);if(0===A?(f=L=B,n=20):1===A?(f=TI,L=ZI,n=257):(f=qI,L=OI,n=0),S=0,l=0,h=c,r=i,d=D,y=0,a=-1,u=1<<D,E=u-1,1===A&&u>852||2===A&&u>592)return 1;for(;;){R=h-y,B[l]+1<n?(F=0,p=B[l]):B[l]>=n?(F=L[B[l]-n],p=f[B[l]-n]):(F=96,p=0),s=1<<h-y,o=1<<d,c=o;do{o-=s,e[r+(S>>y)+o]=R<<24|F<<16|p}while(0!==o);for(s=1<<h-1;S&s;)s>>=1;if(0!==s?(S&=s-1,S+=s):S=0,l++,0===--N[h]){if(h===w)break;h=g[I+B[l]]}if(h>D&&(S&E)!==a){for(0===y&&(y=D),r+=c,d=h-y,G=1<<d;d+y<w&&(G-=N[d+y],!(G<=0));)d++,G<<=1;if(u+=1<<d,1===A&&u>852||2===A&&u>592)return 1;a=S&E,e[a]=D<<24|d<<16|r-i}}return 0!==S&&(e[r+S]=h-y<<24|64<<16),t.bits=D,0};const{Z_FINISH:VI,Z_BLOCK:vI,Z_TREES:zI,Z_OK:XI,Z_STREAM_END:PI,Z_NEED_DICT:jI,Z_STREAM_ERROR:_I,Z_DATA_ERROR:$I,Z_MEM_ERROR:AC,Z_BUF_ERROR:gC,Z_DEFLATED:IC}=RI,CC=16180,eC=16190,iC=16191,BC=16192,tC=16194,QC=16199,sC=16200,oC=16206,aC=16209,EC=A=>(A>>>24&255)+(A>>>8&65280)+((65280&A)<<8)+((255&A)<<24);function rC(){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 nC=A=>{if(!A)return 1;const g=A.state;return!g||g.strm!==A||g.mode<CC||g.mode>16211?1:0},hC=A=>{if(nC(A))return _I;const g=A.state;return A.total_in=A.total_out=g.total=0,A.msg="",g.wrap&&(A.adler=1&g.wrap),g.mode=CC,g.last=0,g.havedict=0,g.flags=-1,g.dmax=32768,g.head=null,g.hold=0,g.bits=0,g.lencode=g.lendyn=new Int32Array(852),g.distcode=g.distdyn=new Int32Array(592),g.sane=1,g.back=-1,XI},lC=A=>{if(nC(A))return _I;const g=A.state;return g.wsize=0,g.whave=0,g.wnext=0,hC(A)},cC=(A,g)=>{let I;if(nC(A))return _I;const C=A.state;return g<0?(I=0,g=-g):(I=5+(g>>4),g<48&&(g&=15)),g&&(g<8||g>15)?_I:(null!==C.window&&C.wbits!==g&&(C.window=null),C.wrap=I,C.wbits=g,lC(A))},wC=(A,g)=>{if(!A)return _I;const I=new rC;A.state=I,I.strm=A,I.window=null,I.mode=CC;const C=cC(A,g);return C!==XI&&(A.state=null),C};let DC,dC,yC=!0;const GC=A=>{if(yC){DC=new Int32Array(512),dC=new Int32Array(32);let g=0;for(;g<144;)A.lens[g++]=8;for(;g<256;)A.lens[g++]=9;for(;g<280;)A.lens[g++]=7;for(;g<288;)A.lens[g++]=8;for(WI(1,A.lens,0,288,DC,0,A.work,{bits:9}),g=0;g<32;)A.lens[g++]=5;WI(2,A.lens,0,32,dC,0,A.work,{bits:5}),yC=!1}A.lencode=DC,A.lenbits=9,A.distcode=dC,A.distbits=5},uC=(A,g,I,C)=>{let e;const i=A.state;return null===i.window&&(i.wsize=1<<i.wbits,i.wnext=0,i.whave=0,i.window=new Uint8Array(i.wsize)),C>=i.wsize?(i.window.set(g.subarray(I-i.wsize,I),0),i.wnext=0,i.whave=i.wsize):(e=i.wsize-i.wnext,e>C&&(e=C),i.window.set(g.subarray(I-C,I-C+e),i.wnext),(C-=e)?(i.window.set(g.subarray(I-C,I),0),i.wnext=C,i.whave=i.wsize):(i.wnext+=e,i.wnext===i.wsize&&(i.wnext=0),i.whave<i.wsize&&(i.whave+=e))),0};var SC={inflateReset:lC,inflateReset2:cC,inflateResetKeep:hC,inflateInit:A=>wC(A,15),inflateInit2:wC,inflate:(A,g)=>{let I,C,e,i,B,t,Q,s,o,a,E,r,n,h,l,c,w,D,d,y,G,u,S=0;const f=new Uint8Array(4);let N,k;const R=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(nC(A)||!A.output||!A.input&&0!==A.avail_in)return _I;I=A.state,I.mode===iC&&(I.mode=BC),B=A.next_out,e=A.output,Q=A.avail_out,i=A.next_in,C=A.input,t=A.avail_in,s=I.hold,o=I.bits,a=t,E=Q,u=XI;A:for(;;)switch(I.mode){case CC:if(0===I.wrap){I.mode=BC;break}for(;o<16;){if(0===t)break A;t--,s+=C[i++]<<o,o+=8}if(2&I.wrap&&35615===s){0===I.wbits&&(I.wbits=15),I.check=0,f[0]=255&s,f[1]=s>>>8&255,I.check=NI(I.check,f,2,0),s=0,o=0,I.mode=16181;break}if(I.head&&(I.head.done=!1),!(1&I.wrap)||(((255&s)<<8)+(s>>8))%31){A.msg="incorrect header check",I.mode=aC;break}if((15&s)!==IC){A.msg="unknown compression method",I.mode=aC;break}if(s>>>=4,o-=4,G=8+(15&s),0===I.wbits&&(I.wbits=G),G>15||G>I.wbits){A.msg="invalid window size",I.mode=aC;break}I.dmax=1<<I.wbits,I.flags=0,A.adler=I.check=1,I.mode=512&s?16189:iC,s=0,o=0;break;case 16181:for(;o<16;){if(0===t)break A;t--,s+=C[i++]<<o,o+=8}if(I.flags=s,(255&I.flags)!==IC){A.msg="unknown compression method",I.mode=aC;break}if(57344&I.flags){A.msg="unknown header flags set",I.mode=aC;break}I.head&&(I.head.text=s>>8&1),512&I.flags&&4&I.wrap&&(f[0]=255&s,f[1]=s>>>8&255,I.check=NI(I.check,f,2,0)),s=0,o=0,I.mode=16182;case 16182:for(;o<32;){if(0===t)break A;t--,s+=C[i++]<<o,o+=8}I.head&&(I.head.time=s),512&I.flags&&4&I.wrap&&(f[0]=255&s,f[1]=s>>>8&255,f[2]=s>>>16&255,f[3]=s>>>24&255,I.check=NI(I.check,f,4,0)),s=0,o=0,I.mode=16183;case 16183:for(;o<16;){if(0===t)break A;t--,s+=C[i++]<<o,o+=8}I.head&&(I.head.xflags=255&s,I.head.os=s>>8),512&I.flags&&4&I.wrap&&(f[0]=255&s,f[1]=s>>>8&255,I.check=NI(I.check,f,2,0)),s=0,o=0,I.mode=16184;case 16184:if(1024&I.flags){for(;o<16;){if(0===t)break A;t--,s+=C[i++]<<o,o+=8}I.length=s,I.head&&(I.head.extra_len=s),512&I.flags&&4&I.wrap&&(f[0]=255&s,f[1]=s>>>8&255,I.check=NI(I.check,f,2,0)),s=0,o=0}else I.head&&(I.head.extra=null);I.mode=16185;case 16185:if(1024&I.flags&&(r=I.length,r>t&&(r=t),r&&(I.head&&(G=I.head.extra_len-I.length,I.head.extra||(I.head.extra=new Uint8Array(I.head.extra_len)),I.head.extra.set(C.subarray(i,i+r),G)),512&I.flags&&4&I.wrap&&(I.check=NI(I.check,C,r,i)),t-=r,i+=r,I.length-=r),I.length))break A;I.length=0,I.mode=16186;case 16186:if(2048&I.flags){if(0===t)break A;r=0;do{G=C[i+r++],I.head&&G&&I.length<65536&&(I.head.name+=String.fromCharCode(G))}while(G&&r<t);if(512&I.flags&&4&I.wrap&&(I.check=NI(I.check,C,r,i)),t-=r,i+=r,G)break A}else I.head&&(I.head.name=null);I.length=0,I.mode=16187;case 16187:if(4096&I.flags){if(0===t)break A;r=0;do{G=C[i+r++],I.head&&G&&I.length<65536&&(I.head.comment+=String.fromCharCode(G))}while(G&&r<t);if(512&I.flags&&4&I.wrap&&(I.check=NI(I.check,C,r,i)),t-=r,i+=r,G)break A}else I.head&&(I.head.comment=null);I.mode=16188;case 16188:if(512&I.flags){for(;o<16;){if(0===t)break A;t--,s+=C[i++]<<o,o+=8}if(4&I.wrap&&s!==(65535&I.check)){A.msg="header crc mismatch",I.mode=aC;break}s=0,o=0}I.head&&(I.head.hcrc=I.flags>>9&1,I.head.done=!0),A.adler=I.check=0,I.mode=iC;break;case 16189:for(;o<32;){if(0===t)break A;t--,s+=C[i++]<<o,o+=8}A.adler=I.check=EC(s),s=0,o=0,I.mode=eC;case eC:if(0===I.havedict)return A.next_out=B,A.avail_out=Q,A.next_in=i,A.avail_in=t,I.hold=s,I.bits=o,jI;A.adler=I.check=1,I.mode=iC;case iC:if(g===vI||g===zI)break A;case BC:if(I.last){s>>>=7&o,o-=7&o,I.mode=oC;break}for(;o<3;){if(0===t)break A;t--,s+=C[i++]<<o,o+=8}switch(I.last=1&s,s>>>=1,o-=1,3&s){case 0:I.mode=16193;break;case 1:if(GC(I),I.mode=QC,g===zI){s>>>=2,o-=2;break A}break;case 2:I.mode=16196;break;case 3:A.msg="invalid block type",I.mode=aC}s>>>=2,o-=2;break;case 16193:for(s>>>=7&o,o-=7&o;o<32;){if(0===t)break A;t--,s+=C[i++]<<o,o+=8}if((65535&s)!=(s>>>16^65535)){A.msg="invalid stored block lengths",I.mode=aC;break}if(I.length=65535&s,s=0,o=0,I.mode=tC,g===zI)break A;case tC:I.mode=16195;case 16195:if(r=I.length,r){if(r>t&&(r=t),r>Q&&(r=Q),0===r)break A;e.set(C.subarray(i,i+r),B),t-=r,i+=r,Q-=r,B+=r,I.length-=r;break}I.mode=iC;break;case 16196:for(;o<14;){if(0===t)break A;t--,s+=C[i++]<<o,o+=8}if(I.nlen=257+(31&s),s>>>=5,o-=5,I.ndist=1+(31&s),s>>>=5,o-=5,I.ncode=4+(15&s),s>>>=4,o-=4,I.nlen>286||I.ndist>30){A.msg="too many length or distance symbols",I.mode=aC;break}I.have=0,I.mode=16197;case 16197:for(;I.have<I.ncode;){for(;o<3;){if(0===t)break A;t--,s+=C[i++]<<o,o+=8}I.lens[R[I.have++]]=7&s,s>>>=3,o-=3}for(;I.have<19;)I.lens[R[I.have++]]=0;if(I.lencode=I.lendyn,I.lenbits=7,N={bits:I.lenbits},u=WI(0,I.lens,0,19,I.lencode,0,I.work,N),I.lenbits=N.bits,u){A.msg="invalid code lengths set",I.mode=aC;break}I.have=0,I.mode=16198;case 16198:for(;I.have<I.nlen+I.ndist;){for(;S=I.lencode[s&(1<<I.lenbits)-1],l=S>>>24,c=S>>>16&255,w=65535&S,!(l<=o);){if(0===t)break A;t--,s+=C[i++]<<o,o+=8}if(w<16)s>>>=l,o-=l,I.lens[I.have++]=w;else{if(16===w){for(k=l+2;o<k;){if(0===t)break A;t--,s+=C[i++]<<o,o+=8}if(s>>>=l,o-=l,0===I.have){A.msg="invalid bit length repeat",I.mode=aC;break}G=I.lens[I.have-1],r=3+(3&s),s>>>=2,o-=2}else if(17===w){for(k=l+3;o<k;){if(0===t)break A;t--,s+=C[i++]<<o,o+=8}s>>>=l,o-=l,G=0,r=3+(7&s),s>>>=3,o-=3}else{for(k=l+7;o<k;){if(0===t)break A;t--,s+=C[i++]<<o,o+=8}s>>>=l,o-=l,G=0,r=11+(127&s),s>>>=7,o-=7}if(I.have+r>I.nlen+I.ndist){A.msg="invalid bit length repeat",I.mode=aC;break}for(;r--;)I.lens[I.have++]=G}}if(I.mode===aC)break;if(0===I.lens[256]){A.msg="invalid code -- missing end-of-block",I.mode=aC;break}if(I.lenbits=9,N={bits:I.lenbits},u=WI(1,I.lens,0,I.nlen,I.lencode,0,I.work,N),I.lenbits=N.bits,u){A.msg="invalid literal/lengths set",I.mode=aC;break}if(I.distbits=6,I.distcode=I.distdyn,N={bits:I.distbits},u=WI(2,I.lens,I.nlen,I.ndist,I.distcode,0,I.work,N),I.distbits=N.bits,u){A.msg="invalid distances set",I.mode=aC;break}if(I.mode=QC,g===zI)break A;case QC:I.mode=sC;case sC:if(t>=6&&Q>=258){A.next_out=B,A.avail_out=Q,A.next_in=i,A.avail_in=t,I.hold=s,I.bits=o,JI(A,E),B=A.next_out,e=A.output,Q=A.avail_out,i=A.next_in,C=A.input,t=A.avail_in,s=I.hold,o=I.bits,I.mode===iC&&(I.back=-1);break}for(I.back=0;S=I.lencode[s&(1<<I.lenbits)-1],l=S>>>24,c=S>>>16&255,w=65535&S,!(l<=o);){if(0===t)break A;t--,s+=C[i++]<<o,o+=8}if(c&&!(240&c)){for(D=l,d=c,y=w;S=I.lencode[y+((s&(1<<D+d)-1)>>D)],l=S>>>24,c=S>>>16&255,w=65535&S,!(D+l<=o);){if(0===t)break A;t--,s+=C[i++]<<o,o+=8}s>>>=D,o-=D,I.back+=D}if(s>>>=l,o-=l,I.back+=l,I.length=w,0===c){I.mode=16205;break}if(32&c){I.back=-1,I.mode=iC;break}if(64&c){A.msg="invalid literal/length code",I.mode=aC;break}I.extra=15&c,I.mode=16201;case 16201:if(I.extra){for(k=I.extra;o<k;){if(0===t)break A;t--,s+=C[i++]<<o,o+=8}I.length+=s&(1<<I.extra)-1,s>>>=I.extra,o-=I.extra,I.back+=I.extra}I.was=I.length,I.mode=16202;case 16202:for(;S=I.distcode[s&(1<<I.distbits)-1],l=S>>>24,c=S>>>16&255,w=65535&S,!(l<=o);){if(0===t)break A;t--,s+=C[i++]<<o,o+=8}if(!(240&c)){for(D=l,d=c,y=w;S=I.distcode[y+((s&(1<<D+d)-1)>>D)],l=S>>>24,c=S>>>16&255,w=65535&S,!(D+l<=o);){if(0===t)break A;t--,s+=C[i++]<<o,o+=8}s>>>=D,o-=D,I.back+=D}if(s>>>=l,o-=l,I.back+=l,64&c){A.msg="invalid distance code",I.mode=aC;break}I.offset=w,I.extra=15&c,I.mode=16203;case 16203:if(I.extra){for(k=I.extra;o<k;){if(0===t)break A;t--,s+=C[i++]<<o,o+=8}I.offset+=s&(1<<I.extra)-1,s>>>=I.extra,o-=I.extra,I.back+=I.extra}if(I.offset>I.dmax){A.msg="invalid distance too far back",I.mode=aC;break}I.mode=16204;case 16204:if(0===Q)break A;if(r=E-Q,I.offset>r){if(r=I.offset-r,r>I.whave&&I.sane){A.msg="invalid distance too far back",I.mode=aC;break}r>I.wnext?(r-=I.wnext,n=I.wsize-r):n=I.wnext-r,r>I.length&&(r=I.length),h=I.window}else h=e,n=B-I.offset,r=I.length;r>Q&&(r=Q),Q-=r,I.length-=r;do{e[B++]=h[n++]}while(--r);0===I.length&&(I.mode=sC);break;case 16205:if(0===Q)break A;e[B++]=I.length,Q--,I.mode=sC;break;case oC:if(I.wrap){for(;o<32;){if(0===t)break A;t--,s|=C[i++]<<o,o+=8}if(E-=Q,A.total_out+=E,I.total+=E,4&I.wrap&&E&&(A.adler=I.check=I.flags?NI(I.check,e,E,B-E):SI(I.check,e,E,B-E)),E=Q,4&I.wrap&&(I.flags?s:EC(s))!==I.check){A.msg="incorrect data check",I.mode=aC;break}s=0,o=0}I.mode=16207;case 16207:if(I.wrap&&I.flags){for(;o<32;){if(0===t)break A;t--,s+=C[i++]<<o,o+=8}if(4&I.wrap&&s!==(4294967295&I.total)){A.msg="incorrect length check",I.mode=aC;break}s=0,o=0}I.mode=16208;case 16208:u=PI;break A;case aC:u=$I;break A;case 16210:return AC;default:return _I}return A.next_out=B,A.avail_out=Q,A.next_in=i,A.avail_in=t,I.hold=s,I.bits=o,(I.wsize||E!==A.avail_out&&I.mode<aC&&(I.mode<oC||g!==VI))&&uC(A,A.output,A.next_out,E-A.avail_out),a-=A.avail_in,E-=A.avail_out,A.total_in+=a,A.total_out+=E,I.total+=E,4&I.wrap&&E&&(A.adler=I.check=I.flags?NI(I.check,e,E,A.next_out-E):SI(I.check,e,E,A.next_out-E)),A.data_type=I.bits+(I.last?64:0)+(I.mode===iC?128:0)+(I.mode===QC||I.mode===tC?256:0),(0===a&&0===E||g===VI)&&u===XI&&(u=gC),u},inflateEnd:A=>{if(nC(A))return _I;let g=A.state;return g.window&&(g.window=null),A.state=null,XI},inflateGetHeader:(A,g)=>{if(nC(A))return _I;const I=A.state;return 2&I.wrap?(I.head=g,g.done=!1,XI):_I},inflateSetDictionary:(A,g)=>{const I=g.length;let C,e,i;return nC(A)?_I:(C=A.state,0!==C.wrap&&C.mode!==eC?_I:C.mode===eC&&(e=1,e=SI(e,g,I,0),e!==C.check)?$I:(i=uC(A,g,I,I),i?(C.mode=16210,AC):(C.havedict=1,XI)))},inflateInfo:"pako inflate (from Nodeca project)"};var fC=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 NC=Object.prototype.toString,{Z_NO_FLUSH:kC,Z_FINISH:RC,Z_OK:FC,Z_STREAM_END:pC,Z_NEED_DICT:LC,Z_STREAM_ERROR:YC,Z_DATA_ERROR:UC,Z_MEM_ERROR:mC}=RI;function MC(A){this.options=pI({chunkSize:65536,windowBits:15,to:""},A||{});const g=this.options;g.raw&&g.windowBits>=0&&g.windowBits<16&&(g.windowBits=-g.windowBits,0===g.windowBits&&(g.windowBits=-15)),!(g.windowBits>=0&&g.windowBits<16)||A&&A.windowBits||(g.windowBits+=32),g.windowBits>15&&g.windowBits<48&&(15&g.windowBits||(g.windowBits|=15)),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new KI,this.strm.avail_out=0;let I=SC.inflateInit2(this.strm,g.windowBits);if(I!==FC)throw new Error(kI[I]);if(this.header=new fC,SC.inflateGetHeader(this.strm,this.header),g.dictionary&&("string"==typeof g.dictionary?g.dictionary=mI(g.dictionary):"[object ArrayBuffer]"===NC.call(g.dictionary)&&(g.dictionary=new Uint8Array(g.dictionary)),g.raw&&(I=SC.inflateSetDictionary(this.strm,g.dictionary),I!==FC)))throw new Error(kI[I])}MC.prototype.push=function(A,g){const I=this.strm,C=this.options.chunkSize,e=this.options.dictionary;let i,B,t;if(this.ended)return!1;for(B=g===~~g?g:!0===g?RC:kC,"[object ArrayBuffer]"===NC.call(A)?I.input=new Uint8Array(A):I.input=A,I.next_in=0,I.avail_in=I.input.length;;){for(0===I.avail_out&&(I.output=new Uint8Array(C),I.next_out=0,I.avail_out=C),i=SC.inflate(I,B),i===LC&&e&&(i=SC.inflateSetDictionary(I,e),i===FC?i=SC.inflate(I,B):i===UC&&(i=LC));I.avail_in>0&&i===pC&&I.state.wrap>0&&0!==A[I.next_in];)SC.inflateReset(I),i=SC.inflate(I,B);switch(i){case YC:case UC:case LC:case mC:return this.onEnd(i),this.ended=!0,!1}if(t=I.avail_out,I.next_out&&(0===I.avail_out||i===pC))if("string"===this.options.to){let A=bI(I.output,I.next_out),g=I.next_out-A,e=MI(I.output,A);I.next_out=g,I.avail_out=C-g,g&&I.output.set(I.output.subarray(A,A+g),0),this.onData(e)}else this.onData(I.output.length===I.next_out?I.output:I.output.subarray(0,I.next_out));if(i!==FC||0!==t){if(i===pC)return i=SC.inflateEnd(this.strm),this.onEnd(i),this.ended=!0,!0;if(0===I.avail_in)break}}return!0},MC.prototype.onData=function(A){this.chunks.push(A)},MC.prototype.onEnd=function(A){A===FC&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=LI(this.chunks)),this.chunks=[],this.err=A,this.msg=this.strm.msg};var bC={inflate:function(A,g){const I=new MC(g);if(I.push(A),I.err)throw I.msg||kI[I.err];return I.result}};const{inflate:KC}=bC;var HC=KC;var JC=Object.freeze({__proto__:null,default:class extends lg{decodeBlock(A){return HC(new Uint8Array(A)).buffer}}});var xC=Object.freeze({__proto__:null,default:class extends lg{decodeBlock(A){const g=new DataView(A),I=[];for(let C=0;C<A.byteLength;++C){let A=g.getInt8(C);if(A<0){const e=g.getUint8(C+1);A=-A;for(let g=0;g<=A;++g)I.push(e);C+=1}else{for(let e=0;e<=A;++e)I.push(g.getUint8(C+e+1));C+=A+1}}return new Uint8Array(I).buffer}}});function TC(A){return A&&A.__esModule&&Object.prototype.hasOwnProperty.call(A,"default")?A.default:A}var ZC,qC={exports:{}};var OC,WC=(ZC||(ZC=1,OC=qC,
|
|
1
|
+
"use strict";var A=require("@deck.gl/core"),g=require("@deck.gl/geo-layers"),I=require("@deck.gl/layers"),C=require("@deck.gl/extensions"),e=require("chroma-js"),i=require("@loaders.gl/schema"),t=require("@loaders.gl/loader-utils"),B=require("@deck.gl/mesh-layers");let s=!1;function Q(){"undefined"==typeof window||s||(window.addEventListener("unhandledrejection",A=>{A.reason&&"AbortError"===A.reason.name&&A.preventDefault()}),s=!0)}function o(A){return(g,...I)=>E(A,g,I)}function a(A,g){return o(r(A,g).get)}const{apply:E,getOwnPropertyDescriptor:r,getPrototypeOf:n,ownKeys:h}=Reflect,{iterator:l,toStringTag:c}=Symbol,w=Object,{create:D,defineProperty:d}=w,y=Array.prototype[l],G=o(y),u=ArrayBuffer;a(u.prototype,"byteLength");const S="undefined"!=typeof SharedArrayBuffer?SharedArrayBuffer:null;S&&a(S.prototype,"byteLength");const f=n(Uint8Array);f.from;const N=f.prototype;N[l],o(N.keys),o(N.values),o(N.entries),o(N.set),o(N.reverse),o(N.fill),o(N.copyWithin),o(N.sort),o(N.slice),o(N.subarray),a(N,"buffer"),a(N,"byteOffset"),a(N,"length"),a(N,c);const k=Uint8Array,R=Uint16Array,F=Uint32Array,p=Float32Array,L=n([][l]()),Y=o(L.next),U=o(function*(){}().next),m=n(L),M=o(DataView.prototype.getUint16),b=WeakMap,K=b.prototype,H=o(K.get),J=o(K.set),x=new b,T=D(null,{next:{value:function(){const A=H(x,this);return Y(A)}},[l]:{value:function(){return this}}});const Z=new b,q=D(m,{next:{value:function(){const A=H(Z,this);return U(A)},writable:!0,configurable:!0}});for(const A of h(L))"next"!==A&&d(q,A,r(L,A));const O=new u(4),W=new p(O),V=new F(O),v=new R(512),z=new k(512);for(let A=0;A<256;++A){const g=A-127;g<-24?(v[A]=0,v[256|A]=32768,z[A]=24,z[256|A]=24):g<-14?(v[A]=1024>>-g-14,v[256|A]=1024>>-g-14|32768,z[A]=-g-1,z[256|A]=-g-1):g<=15?(v[A]=g+15<<10,v[256|A]=g+15<<10|32768,z[A]=13,z[256|A]=13):g<128?(v[A]=31744,v[256|A]=64512,z[A]=24,z[256|A]=24):(v[A]=31744,v[256|A]=64512,z[A]=13,z[256|A]=13)}const P=new F(2048);for(let A=1;A<1024;++A){let g=A<<13,I=0;for(;!(8388608&g);)g<<=1,I-=8388608;g&=-8388609,I+=947912704,P[A]=g|I}for(let A=1024;A<2048;++A)P[A]=939524096+(A-1024<<13);const X=new F(64);for(let A=1;A<31;++A)X[A]=A<<23;X[31]=1199570944,X[32]=2147483648;for(let A=33;A<63;++A)X[A]=2147483648+(A-32<<23);X[63]=3347054592;const j=new R(64);for(let A=1;A<64;++A)32!==A&&(j[A]=1024);function _(A,g,...I){return function(A){const g=A>>10;return V[0]=P[j[g]+(1023&A)]+X[g],W[0]}(M(A,g,...function(A){if(A[l]===y&&L.next===Y)return A;const g=D(T);return J(x,g,G(A)),g}(I)))}function $(A,g,I){const C="object"==typeof A?A.outer:A,e=C.slice(0,C.indexOf(">")+1),i=['"',"'"];for(let A=0;A<i.length;A++){const I=i[A],C=new RegExp(g+"\\="+I+"([^"+I+"]*)"+I).exec(e);if(C)return C[1]}}function AA(A,g,I){const C=new RegExp(g).exec(A.slice(I));return C?I+C.index+C[0].length-1:-1}function gA(A,g){const I=new RegExp(g,"g"),C=A.match(I);return C?C.length:0}function IA(A,g,I){const C=I&&I.debug||!1,e=!(I&&!1===typeof I.nested),i=I&&I.startIndex||0;C&&console.log("[xml-utils] starting findTagByName with",g," and ",I);const t=function(A,g,I){const C=new RegExp(g).exec(A.slice(I));return C?I+C.index:-1}(A,`<${g}[ \n>/]`,i);if(C&&console.log("[xml-utils] start:",t),-1===t)return;const B=A.slice(t+g.length);let s=AA(B,"^[^<]*[ /]>",0);const Q=-1!==s&&"/"===B[s-1];if(C&&console.log("[xml-utils] selfClosing:",Q),!1===Q)if(e){let A=0,I=1,C=0;for(;-1!==(s=AA(B,"[ /]"+g+">",A));){const e=B.substring(A,s+1);if(I+=gA(e,"<"+g+"[ \n\t>]"),C+=gA(e,"</"+g+">"),C>=I)break;A=s}}else s=AA(B,"[ /]"+g+">",0);const o=t+g.length+s+1;if(C&&console.log("[xml-utils] end:",o),-1===o)return;const a=A.slice(t,o);let E;return E=Q?null:a.slice(a.indexOf(">")+1,a.lastIndexOf("<")),{inner:E,outer:a,start:t,end:o}}const CA={BYTE:1,ASCII:2,SHORT:3,LONG:4,RATIONAL:5,SBYTE:6,UNDEFINED:7,SSHORT:8,SLONG:9,SRATIONAL:10,FLOAT:11,DOUBLE:12,IFD:13,LONG8:16,SLONG8:17,IFD8:18},eA={[CA.BYTE]:1,[CA.ASCII]:1,[CA.SBYTE]:1,[CA.UNDEFINED]:1,[CA.SHORT]:2,[CA.SSHORT]:2,[CA.LONG]:4,[CA.SLONG]:4,[CA.FLOAT]:4,[CA.IFD]:4,[CA.RATIONAL]:8,[CA.SRATIONAL]:8,[CA.DOUBLE]:8,[CA.LONG8]:8,[CA.SLONG8]:8,[CA.IFD8]:8};function iA(A){const g=eA[A];if(void 0===g)throw new RangeError(`Invalid field type: ${A}`);return g}const tA={NewSubfileType:{tag:254,type:CA.LONG,eager:!0},SubfileType:{tag:255,type:CA.SHORT,eager:!0},ImageWidth:{tag:256,type:CA.SHORT,eager:!0},ImageLength:{tag:257,type:CA.SHORT,eager:!0},BitsPerSample:{tag:258,type:CA.SHORT,isArray:!0,eager:!0},Compression:{tag:259,type:CA.SHORT,eager:!0},PhotometricInterpretation:{tag:262,type:CA.SHORT,eager:!0},Threshholding:{tag:263,type:CA.SHORT},CellWidth:{tag:264,type:CA.SHORT},CellLength:{tag:265,type:CA.SHORT},FillOrder:{tag:266,type:CA.SHORT},DocumentName:{tag:269,type:CA.ASCII},ImageDescription:{tag:270,type:CA.ASCII},Make:{tag:271,type:CA.ASCII},Model:{tag:272,type:CA.ASCII},StripOffsets:{tag:273,type:CA.SHORT,isArray:!0},Orientation:{tag:274,type:CA.SHORT},SamplesPerPixel:{tag:277,type:CA.SHORT,eager:!0},RowsPerStrip:{tag:278,type:CA.SHORT,eager:!0},StripByteCounts:{tag:279,type:CA.LONG,isArray:!0},MinSampleValue:{tag:280,type:CA.SHORT,isArray:!0},MaxSampleValue:{tag:281,type:CA.SHORT,isArray:!0},XResolution:{tag:282,type:CA.RATIONAL},YResolution:{tag:283,type:CA.RATIONAL},PlanarConfiguration:{tag:284,type:CA.SHORT,eager:!0},PageName:{tag:285,type:CA.ASCII},XPosition:{tag:286,type:CA.RATIONAL},YPosition:{tag:287,type:CA.RATIONAL},FreeOffsets:{tag:288,type:CA.LONG},FreeByteCounts:{tag:289,type:CA.LONG},GrayResponseUnit:{tag:290,type:CA.SHORT},GrayResponseCurve:{tag:291,type:CA.SHORT,isArray:!0},T4Options:{tag:292,type:CA.LONG},T6Options:{tag:293,type:CA.LONG},ResolutionUnit:{tag:296,type:CA.SHORT},PageNumber:{tag:297,type:CA.SHORT,isArray:!0},TransferFunction:{tag:301,type:CA.SHORT,isArray:!0},Software:{tag:305,type:CA.ASCII},DateTime:{tag:306,type:CA.ASCII},Artist:{tag:315,type:CA.ASCII},HostComputer:{tag:316,type:CA.ASCII},Predictor:{tag:317,type:CA.SHORT},WhitePoint:{tag:318,type:CA.RATIONAL,isArray:!0},PrimaryChromaticities:{tag:319,type:CA.RATIONAL,isArray:!0},ColorMap:{tag:320,type:CA.SHORT,isArray:!0},HalftoneHints:{tag:321,type:CA.SHORT,isArray:!0},TileWidth:{tag:322,type:CA.SHORT,eager:!0},TileLength:{tag:323,type:CA.SHORT,eager:!0},TileOffsets:{tag:324,type:CA.LONG,isArray:!0},TileByteCounts:{tag:325,type:CA.SHORT,isArray:!0},InkSet:{tag:332,type:CA.SHORT},InkNames:{tag:333,type:CA.ASCII},NumberOfInks:{tag:334,type:CA.SHORT},DotRange:{tag:336,type:CA.BYTE,isArray:!0},TargetPrinter:{tag:337,type:CA.ASCII},ExtraSamples:{tag:338,type:CA.BYTE,isArray:!0,eager:!0},SampleFormat:{tag:339,type:CA.SHORT,isArray:!0,eager:!0},SMinSampleValue:{tag:340,isArray:!0},SMaxSampleValue:{tag:341,isArray:!0},TransferRange:{tag:342,type:CA.SHORT,isArray:!0},JPEGProc:{tag:512,type:CA.SHORT},JPEGInterchangeFormat:{tag:513,type:CA.LONG},JPEGInterchangeFormatLngth:{tag:514,type:CA.LONG},JPEGRestartInterval:{tag:515,type:CA.SHORT},JPEGLosslessPredictors:{tag:517,type:CA.SHORT,isArray:!0},JPEGPointTransforms:{tag:518,type:CA.SHORT,isArray:!0},JPEGQTables:{tag:519,type:CA.LONG,isArray:!0},JPEGDCTables:{tag:520,type:CA.LONG,isArray:!0},JPEGACTables:{tag:521,type:CA.LONG,isArray:!0},YCbCrCoefficients:{tag:529,type:CA.RATIONAL,isArray:!0},YCbCrSubSampling:{tag:530,type:CA.SHORT,isArray:!0},YCbCrPositioning:{tag:531,type:CA.SHORT},ReferenceBlackWhite:{tag:532,type:CA.LONG,isArray:!0},Copyright:{tag:33432,type:CA.ASCII},BadFaxLines:{tag:326},CleanFaxData:{tag:327},ClipPath:{tag:343},ConsecutiveBadFaxLines:{tag:328},Decode:{tag:433},DefaultImageColor:{tag:434},Indexed:{tag:346},JPEGTables:{tag:347,isArray:!0,eager:!0},StripRowCounts:{tag:559,isArray:!0},SubIFDs:{tag:330,isArray:!0},XClipPathUnits:{tag:344},YClipPathUnits:{tag:345},ApertureValue:{tag:37378},ColorSpace:{tag:40961},DateTimeDigitized:{tag:36868},DateTimeOriginal:{tag:36867},ExifIFD:{tag:34665,name:"Exif IFD",type:CA.LONG},ExifVersion:{tag:36864},ExposureTime:{tag:33434},FileSource:{tag:41728},Flash:{tag:37385},FlashpixVersion:{tag:40960},FNumber:{tag:33437},ImageUniqueID:{tag:42016},LightSource:{tag:37384},MakerNote:{tag:37500},ShutterSpeedValue:{tag:37377},UserComment:{tag:37510},IPTC:{tag:33723},CZ_LSMINFO:{tag:34412},ICCProfile:{tag:34675,name:"ICC Profile"},XMP:{tag:700},GDAL_METADATA:{tag:42112},GDAL_NODATA:{tag:42113,type:CA.ASCII,eager:!0},Photoshop:{tag:34377},ModelPixelScale:{tag:33550,type:CA.DOUBLE,isArray:!0,eager:!0},ModelTiepoint:{tag:33922,type:CA.DOUBLE,isArray:!0,eager:!0},ModelTransformation:{tag:34264,type:CA.DOUBLE,isArray:!0,eager:!0},GeoKeyDirectory:{tag:34735,type:CA.SHORT,isArray:!0,eager:!0},GeoDoubleParams:{tag:34736,type:CA.DOUBLE,isArray:!0,eager:!0},GeoAsciiParams:{tag:34737,type:CA.ASCII,eager:!0},LercParameters:{tag:50674,eager:!0}},BA={},sA={};function QA(A,g,I,C=!1,e=!1){BA[g]=A,sA[A]={tag:A,name:g,type:"string"==typeof I?CA[I]:I,isArray:C,eager:e}}for(const[A,g]of Object.entries(tA)){const I=g;QA(I.tag,I.name||A,I.type,I.isArray,I.eager)}function oA(A){return"number"==typeof A?A:BA[A]}const aA=0,EA=1,rA=2,nA=3,hA=5,lA=6,cA=8,wA=0,DA=1,dA=0,yA=1,GA=2,uA={1024:"GTModelTypeGeoKey",1025:"GTRasterTypeGeoKey",1026:"GTCitationGeoKey",2048:"GeographicTypeGeoKey",2049:"GeogCitationGeoKey",2050:"GeogGeodeticDatumGeoKey",2051:"GeogPrimeMeridianGeoKey",2052:"GeogLinearUnitsGeoKey",2053:"GeogLinearUnitSizeGeoKey",2054:"GeogAngularUnitsGeoKey",2055:"GeogAngularUnitSizeGeoKey",2056:"GeogEllipsoidGeoKey",2057:"GeogSemiMajorAxisGeoKey",2058:"GeogSemiMinorAxisGeoKey",2059:"GeogInvFlatteningGeoKey",2060:"GeogAzimuthUnitsGeoKey",2061:"GeogPrimeMeridianLongGeoKey",2062:"GeogTOWGS84GeoKey",3072:"ProjectedCSTypeGeoKey",3073:"PCSCitationGeoKey",3074:"ProjectionGeoKey",3075:"ProjCoordTransGeoKey",3076:"ProjLinearUnitsGeoKey",3077:"ProjLinearUnitSizeGeoKey",3078:"ProjStdParallel1GeoKey",3079:"ProjStdParallel2GeoKey",3080:"ProjNatOriginLongGeoKey",3081:"ProjNatOriginLatGeoKey",3082:"ProjFalseEastingGeoKey",3083:"ProjFalseNorthingGeoKey",3084:"ProjFalseOriginLongGeoKey",3085:"ProjFalseOriginLatGeoKey",3086:"ProjFalseOriginEastingGeoKey",3087:"ProjFalseOriginNorthingGeoKey",3088:"ProjCenterLongGeoKey",3089:"ProjCenterLatGeoKey",3090:"ProjCenterEastingGeoKey",3091:"ProjCenterNorthingGeoKey",3092:"ProjScaleAtNatOriginGeoKey",3093:"ProjScaleAtCenterGeoKey",3094:"ProjAzimuthAngleGeoKey",3095:"ProjStraightVertPoleLongGeoKey",3096:"ProjRectifiedGridAngleGeoKey",4096:"VerticalCSTypeGeoKey",4097:"VerticalCitationGeoKey",4098:"VerticalDatumGeoKey",4099:"VerticalUnitsGeoKey"};for(const[A,g]of Object.entries(uA));const SA=new Map;async function fA(A){const g=!A.hasTag("StripOffsets");return{tileWidth:g?await A.loadValue("TileWidth"):await A.loadValue("ImageWidth"),tileHeight:g?await A.loadValue("TileLength"):await A.loadValue("RowsPerStrip")||await A.loadValue("ImageLength"),planarConfiguration:await A.loadValue("PlanarConfiguration"),bitsPerSample:await A.loadValue("BitsPerSample"),predictor:await A.loadValue("Predictor")||1}}function NA(A,g,I=fA,C=!0){Array.isArray(A)||(A=[A]),A.forEach(A=>{SA.set(A,{importFn:g,decoderParameterFn:I,preferWorker:C})})}const kA=[{cases:[void 0,1],importFn:()=>Promise.resolve().then(function(){return iI}).then(A=>A.default),preferWorker:!1},{cases:5,importFn:()=>Promise.resolve().then(function(){return sI}).then(A=>A.default)},{cases:6,importFn:()=>{throw new Error("old style JPEG compression is not supported.")}},{cases:7,importFn:()=>Promise.resolve().then(function(){return GI}).then(A=>A.default),decoderParameterFn:async A=>({...await fA(A),JPEGTables:await A.loadValue("JPEGTables")})},{cases:[8,32946],importFn:()=>Promise.resolve().then(function(){return JC}).then(A=>A.default)},{cases:32773,importFn:()=>Promise.resolve().then(function(){return xC}).then(A=>A.default)},{cases:34887,importFn:()=>Promise.resolve().then(function(){return $C}).then(async A=>(await A.zstd.init(),A)).then(A=>A.default),decoderParameterFn:async A=>({...await fA(A),LercParameters:await A.loadValue("LercParameters")})},{cases:5e4,importFn:()=>Promise.resolve().then(function(){return Be}).then(async A=>(await A.zstd.init(),A)).then(A=>A.default)},{cases:50001,importFn:()=>Promise.resolve().then(function(){return se}).then(A=>A.default),decoderParameterFn:async A=>({...await fA(A),samplesPerPixel:Number(await A.loadValue("SamplesPerPixel"))||4}),preferWorker:!1}];for(const A of kA){const{cases:g,importFn:I,decoderParameterFn:C,preferWorker:e}=A;NA(g,I,C,e)}function RA(A,g,I,C=1){return new(Object.getPrototypeOf(A).constructor)(g*I*C)}function FA(A,g,I){return(1-I)*A+I*g}function pA(A,g,I,C,e,i="nearest"){switch(i.toLowerCase()){case"nearest":return function(A,g,I,C,e){const i=g/C,t=I/e;return A.map(A=>{const B=RA(A,C,e);for(let s=0;s<e;++s){const e=Math.min(Math.round(t*s),I-1);for(let I=0;I<C;++I){const t=Math.min(Math.round(i*I),g-1),Q=A[e*g+t];B[s*C+I]=Q}}return B})}(A,g,I,C,e);case"bilinear":case"linear":return function(A,g,I,C,e){const i=g/C,t=I/e;return A.map(A=>{const B=RA(A,C,e);for(let s=0;s<e;++s){const e=t*s,Q=Math.floor(e),o=Math.min(Math.ceil(e),I-1);for(let I=0;I<C;++I){const t=i*I,a=t%1,E=Math.floor(t),r=Math.min(Math.ceil(t),g-1),n=A[Q*g+E],h=A[Q*g+r],l=A[o*g+E],c=A[o*g+r],w=FA(FA(n,h,a),FA(l,c,a),e%1);B[s*C+I]=w}}return B})}(A,g,I,C,e);default:throw new Error(`Unsupported resampling method: '${i}'`)}}function LA(A,g,I,C,e,i,t="nearest"){switch(t.toLowerCase()){case"nearest":return function(A,g,I,C,e,i){const t=g/C,B=I/e,s=RA(A,C,e,i);for(let Q=0;Q<e;++Q){const e=Math.min(Math.round(B*Q),I-1);for(let I=0;I<C;++I){const B=Math.min(Math.round(t*I),g-1);for(let t=0;t<i;++t){const o=A[e*g*i+B*i+t];s[Q*C*i+I*i+t]=o}}}return s}(A,g,I,C,e,i);case"bilinear":case"linear":return function(A,g,I,C,e,i){const t=g/C,B=I/e,s=RA(A,C,e,i);for(let Q=0;Q<e;++Q){const e=B*Q,o=Math.floor(e),a=Math.min(Math.ceil(e),I-1);for(let I=0;I<C;++I){const B=t*I,E=B%1,r=Math.floor(B),n=Math.min(Math.ceil(B),g-1);for(let t=0;t<i;++t){const B=A[o*g*i+r*i+t],h=A[o*g*i+n*i+t],l=A[a*g*i+r*i+t],c=A[a*g*i+n*i+t],w=FA(FA(B,h,E),FA(l,c,E),e%1);s[Q*C*i+I*i+t]=w}}}return s}(A,g,I,C,e,i);default:throw new Error(`Unsupported resampling method: '${t}'`)}}function YA(A,g,I){let C=0;for(let e=g;e<I;++e)C+=A[e];return C}function UA(A,g,I){let C;switch(A){case 1:g<=8?C=Uint8Array:g<=16?C=Uint16Array:g<=32&&(C=Uint32Array);break;case 2:8===g?C=Int8Array:16===g?C=Int16Array:32===g&&(C=Int32Array);break;case 3:switch(g){case 16:case 32:C=Float32Array;break;case 64:C=Float64Array}}if(C){if("number"==typeof I)return new C(I);if(I instanceof ArrayBuffer)return new C(I)}throw Error("Unsupported data format/bitsPerSample")}class mA{constructor(A,g,I,C){this.fileDirectory=A,this.littleEndian=g,this.tiles=I?[]:null,this.isTiled=!A.hasTag("StripOffsets");const e=A.getValue("PlanarConfiguration")??1;if(1!==e&&2!==e)throw new Error("Invalid planar configuration.");this.planarConfiguration=e,this.source=C}getFileDirectory(){return this.fileDirectory}getGeoKeys(){return this.fileDirectory.parseGeoKeyDirectory()}getWidth(){return this.fileDirectory.getValue("ImageWidth")||0}getHeight(){return this.fileDirectory.getValue("ImageLength")||0}getSamplesPerPixel(){return this.fileDirectory.getValue("SamplesPerPixel")??1}getTileWidth(){return this.isTiled?this.fileDirectory.getValue("TileWidth")||0:this.getWidth()}getTileHeight(){if(this.isTiled)return this.fileDirectory.getValue("TileLength")||0;const A=this.fileDirectory.hasTag("RowsPerStrip")&&this.fileDirectory.getValue("RowsPerStrip");return A?Math.min(A,this.getHeight()):this.getHeight()}getBlockWidth(){return this.getTileWidth()}getBlockHeight(A){return this.isTiled||(A+1)*this.getTileHeight()<=this.getHeight()?this.getTileHeight():this.getHeight()-A*this.getTileHeight()}getBytesPerPixel(){let A=0;const g=this.fileDirectory.getValue("BitsPerSample")||[];for(let I=0;I<g.length;++I)A+=this.getSampleByteSize(I);return A}getSampleByteSize(A){const g=this.fileDirectory.getValue("BitsPerSample")||[];if(A>=g.length)throw new RangeError(`Sample index ${A} is out of range.`);return Math.ceil(g[A]/8)}getReaderForSample(A){const g=this.fileDirectory.getValue("SampleFormat"),I=g?g[A]:1,C=(this.fileDirectory.getValue("BitsPerSample")||[])[A];switch(I){case 1:if(C<=8)return DataView.prototype.getUint8;if(C<=16)return DataView.prototype.getUint16;if(C<=32)return DataView.prototype.getUint32;break;case 2:if(C<=8)return DataView.prototype.getInt8;if(C<=16)return DataView.prototype.getInt16;if(C<=32)return DataView.prototype.getInt32;break;case 3:switch(C){case 16:return function(A,g){return _(this,A,g)};case 32:return DataView.prototype.getFloat32;case 64:return DataView.prototype.getFloat64}}throw Error("Unsupported data format/bitsPerSample")}getSampleFormat(A=0){const g=this.fileDirectory.getValue("SampleFormat");return g?g[A]:1}getBitsPerSample(A=0){const g=this.fileDirectory.getValue("BitsPerSample");return g?g[A]:0}getArrayForSample(A,g){return UA(this.getSampleFormat(A),this.getBitsPerSample(A),g)}async getTileOrStrip(A,g,I,C,e){const i=Math.ceil(this.getWidth()/this.getTileWidth()),t=Math.ceil(this.getHeight()/this.getTileHeight());let B;const{tiles:s}=this;if(1===this.planarConfiguration?B=g*i+A:2===this.planarConfiguration&&(B=I*i*t+g*i+A),void 0===B)throw new Error("Could not determine tile or strip index.");let Q,o;if(this.isTiled?(Q=Number(await this.fileDirectory.loadValueIndexed("TileOffsets",B)),o=Number(await this.fileDirectory.loadValueIndexed("TileByteCounts",B))):(Q=Number(await this.fileDirectory.loadValueIndexed("StripOffsets",B)),o=Number(await this.fileDirectory.loadValueIndexed("StripByteCounts",B))),0===o){const C=this.getBlockHeight(g)*this.getTileWidth(),e=2===this.planarConfiguration?this.getSampleByteSize(I):this.getBytesPerPixel(),i=new ArrayBuffer(C*e);return this.getArrayForSample(I,i).fill(this.getGDALNoData()||0),{x:A,y:g,sample:I,data:i}}const a=(await this.source.fetch([{offset:Q,length:o}],e))[0];let E;return null!==s&&s[B]?E=s[B]:(E=(async()=>{let A=await C.decode(a);const I=this.getSampleFormat(),e=this.getBitsPerSample();return function(A,g){return(1!==A&&2!==A||!(g<=32)||g%8!=0)&&(3!==A||16!==g&&32!==g&&64!==g)}(I,e)&&(A=function(A,g,I,C,e,i,t){const B=new DataView(A),s=2===I?1:C,Q=UA(g,e,2===I?t*i:t*i*C),o=parseInt("1".repeat(e),2);if(1===g){let A;A=1===I?C*e:e;let g=i*A;7&g&&(g=g+7&-8);for(let A=0;A<t;++A){const I=A*g;for(let g=0;g<i;++g){const C=I+g*s*e;for(let I=0;I<s;++I){const t=C+I*e,a=(A*i+g)*s+I,E=Math.floor(t/8),r=t%8;if(r+e<=8)Q[a]=B.getUint8(E)>>8-e-r&o;else if(r+e<=16)Q[a]=B.getUint16(E)>>16-e-r&o;else if(r+e<=24){const A=B.getUint16(E)<<8|B.getUint8(E+2);Q[a]=A>>24-e-r&o}else Q[a]=B.getUint32(E)>>32-e-r&o}}}}return Q.buffer}(A,I,this.planarConfiguration,this.getSamplesPerPixel(),e,this.getTileWidth(),this.getBlockHeight(g))),A})(),null!==s&&(s[B]=E)),{x:A,y:g,sample:I,data:await E}}async _readRaster(A,g,I,C,e,i,t,B,s){const Q=this.getTileWidth(),o=this.getTileHeight(),a=this.getWidth(),E=this.getHeight(),r=Math.max(Math.floor(A[0]/Q),0),n=Math.min(Math.ceil(A[2]/Q),Math.ceil(a/Q)),h=Math.max(Math.floor(A[1]/o),0),l=Math.min(Math.ceil(A[3]/o),Math.ceil(E/o)),c=A[2]-A[0];let w=this.getBytesPerPixel();const D=[],d=[];for(let A=0;A<g.length;++A){if(1===this.planarConfiguration){const I=await this.fileDirectory.loadValue("BitsPerSample");if("object"!=typeof I)throw new Error("Expected BitsPerSample to be an array or typed array.");D.push(YA(I,0,g[A])/8)}else D.push(0);d.push(this.getReaderForSample(g[A]))}const y=[],{littleEndian:G}=this;for(let i=h;i<l;++i)for(let t=r;t<n;++t){let B;1===this.planarConfiguration&&(B=this.getTileOrStrip(t,i,0,e,s));for(let r=0;r<g.length;++r){const n=r,h=g[r];if(2===this.planarConfiguration&&(w=this.getSampleByteSize(h),B=this.getTileOrStrip(t,i,h,e,s)),!B)throw new Error("Could not get tile or strip data.");const l=B.then(e=>{const i=e.data,t=new DataView(i),B=this.getBlockHeight(e.y),s=e.y*o,r=e.x*Q,h=s+B,l=(e.x+1)*Q,y=d[n],u=Math.min(B,B-(h-A[3]),E-s),S=Math.min(Q,Q-(l-A[2]),a-r);for(let e=Math.max(0,A[1]-s);e<u;++e)for(let i=Math.max(0,A[0]-r);i<S;++i){const B=(e*Q+i)*w,o=y.call(t,B+D[n],G);let a;C?(a=(e+s-A[1])*c*g.length+(i+r-A[0])*g.length+n,I[a]=o):(a=(e+s-A[1])*c+i+r-A[0],I[n][a]=o)}});y.push(l)}}if(await Promise.all(y),i&&A[2]-A[0]!==i||t&&A[3]-A[1]!==t){let e;e=C?LA(I,A[2]-A[0],A[3]-A[1],i,t,g.length,B):pA(I,A[2]-A[0],A[3]-A[1],i,t,B);const s=e;return s.width=i??A[2]-A[0],s.height=t??A[3]-A[1],s}const u=I;return u.width=i||A[2]-A[0],u.height=t||A[3]-A[1],u}async readRasters(A={}){const{window:g,samples:I=[],pool:C=null,width:e,height:i,resampleMethod:t,fillValue:B,signal:s}=A,Q="interleave"in A&&A.interleave,o=g||[0,0,this.getWidth(),this.getHeight()];if(o[0]>o[2]||o[1]>o[3])throw new Error("Invalid subsets");const a=(o[2]-o[0])*(o[3]-o[1]),E=this.getSamplesPerPixel();if(I&&I.length){for(let A=0;A<I.length;++A)if(I[A]>=E)return Promise.reject(new RangeError(`Invalid sample index '${I[A]}'.`))}else for(let A=0;A<E;++A)I.push(A);let r;if(Q){const{fileDirectory:A}=this,g=A.getValue("SampleFormat"),C=g?Math.max.apply(null,Array.from(g)):1;if(1!==C&&2!==C&&3!==C)throw new Error("Unsupported sample format for interleaved data. Must be 1, 2, or 3.");const e=A.getValue("BitsPerSample");if(r=UA(C,e?Math.max.apply(null,Array.from(e)):8,a*I.length),B){if(Array.isArray(B))throw new Error("When reading interleaved data, fillValue must be a single number.");r.fill(B)}}else{r=[];for(let A=0;A<I.length;++A){const g=this.getArrayForSample(I[A],a);Array.isArray(B)&&A<B.length?g.fill(B[A]):B&&!Array.isArray(B)&&g.fill(B),r.push(g)}}const n=this.fileDirectory.getValue("Compression")||1,h=await async function(A,g){if(!SA.has(A))throw new Error(`Unknown compression method identifier: ${A}`);const{decoderParameterFn:I}=SA.get(A);return I(g)}(n,this.fileDirectory),l=C?C.bindParameters(n,h):await async function(A,g){if(!SA.has(A))throw new Error(`Unknown compression method identifier: ${A}`);const{importFn:I}=SA.get(A);return new(await I())(g)}(n,h);return await this._readRaster(o,I,r,Q,l,e,i,t,s)}async readRGB(A={}){const{window:g,pool:I=null,width:C,height:e,resampleMethod:i,enableAlpha:t=!1,signal:B}=A,s=("interleave"in A&&A.interleave)??!1,Q=g||[0,0,this.getWidth(),this.getHeight()];if(Q[0]>Q[2]||Q[1]>Q[3])throw new Error("Invalid subsets");const o=this.fileDirectory.getValue("PhotometricInterpretation");if(o===rA){let A=[0,1,2];const Q=this.fileDirectory.getValue("ExtraSamples");if(Q&&Q[0]!==wA&&t){A=[];const g=this.fileDirectory.getValue("BitsPerSample")||[];for(let I=0;I<g.length;I+=1)A.push(I)}return this.readRasters({window:g,interleave:s,samples:A,pool:I,width:C,height:e,resampleMethod:i,signal:B})}let a;switch(o){case aA:case EA:case nA:a=[0];break;case hA:a=[0,1,2,3];break;case lA:case cA:a=[0,1,2];break;default:throw new Error("Invalid or unsupported photometric interpretation.")}const E={window:Q,interleave:!0,samples:a,pool:I,width:C,height:e,resampleMethod:i,signal:B},{fileDirectory:r}=this,n=await this.readRasters(E),h=2**this.getBitsPerSample(0);let l;switch(o){case aA:l=function(A,g){const{width:I,height:C}=A,e=new Uint8Array(I*C*3);let i;for(let I=0,C=0;I<A.length;++I,C+=3)i=256-A[I]/g*256,e[C]=i,e[C+1]=i,e[C+2]=i;return e}(n,h);break;case EA:l=function(A,g){const{width:I,height:C}=A,e=new Uint8Array(I*C*3);let i;for(let I=0,C=0;I<A.length;++I,C+=3)i=A[I]/g*256,e[C]=i,e[C+1]=i,e[C+2]=i;return e}(n,h);break;case nA:l=function(A,g){const{width:I,height:C}=A,e=new Uint8Array(I*C*3),i=g.length/3,t=g.length/3*2;for(let I=0,C=0;I<A.length;++I,C+=3){const B=A[I];e[C]=g[B]/65536*256,e[C+1]=g[B+i]/65536*256,e[C+2]=g[B+t]/65536*256}return e}(n,await r.loadValue("ColorMap"));break;case hA:l=function(A){const{width:g,height:I}=A,C=new Uint8Array(g*I*3);for(let g=0,I=0;g<A.length;g+=4,I+=3){const e=A[g],i=A[g+1],t=A[g+2],B=A[g+3];C[I]=(255-e)/256*255*((255-B)/256),C[I+1]=(255-i)/256*255*((255-B)/256),C[I+2]=(255-t)/256*255*((255-B)/256)}return C}(n);break;case lA:l=function(A){const{width:g,height:I}=A,C=new Uint8ClampedArray(g*I*3);for(let g=0,I=0;g<A.length;g+=3,I+=3){const e=A[g],i=A[g+1],t=A[g+2];C[I]=e+1.402*(t-128),C[I+1]=e-.34414*(i-128)-.71414*(t-128),C[I+2]=e+1.772*(i-128)}return C}(n);break;case cA:l=function(A){const{width:g,height:I}=A,C=new Uint8Array(g*I*3);for(let g=0,I=0;g<A.length;g+=3,I+=3){let e,i,t,B=(A[g+0]+16)/116,s=(A[g+1]<<24>>24)/500+B,Q=B-(A[g+2]<<24>>24)/200;s=.95047*(s*s*s>.008856?s*s*s:(s-16/116)/7.787),B=1*(B*B*B>.008856?B*B*B:(B-16/116)/7.787),Q=1.08883*(Q*Q*Q>.008856?Q*Q*Q:(Q-16/116)/7.787),e=3.2406*s+-1.5372*B+-.4986*Q,i=-.9689*s+1.8758*B+.0415*Q,t=.0557*s+-.204*B+1.057*Q,e=e>.0031308?1.055*e**(1/2.4)-.055:12.92*e,i=i>.0031308?1.055*i**(1/2.4)-.055:12.92*i,t=t>.0031308?1.055*t**(1/2.4)-.055:12.92*t,C[I]=255*Math.max(0,Math.min(1,e)),C[I+1]=255*Math.max(0,Math.min(1,i)),C[I+2]=255*Math.max(0,Math.min(1,t))}return C}(n);break;default:throw new Error("Unsupported photometric interpretation.")}if(!s){const A=new Uint8Array(l.length/3),g=new Uint8Array(l.length/3),I=new Uint8Array(l.length/3);for(let C=0,e=0;C<l.length;C+=3,++e)A[e]=l[C],g[e]=l[C+1],I[e]=l[C+2];l=[A,g,I]}const c=l;return c.width=n.width,c.height=n.height,c}async getTiePoints(){if(!this.fileDirectory.hasTag("ModelTiepoint"))return[];const A=await this.fileDirectory.loadValue("ModelTiepoint");if("object"!=typeof A)throw new Error("Expected ModelTiepoint to be an array or typed array.");const g=[];for(let I=0;I<A.length;I+=6)g.push({i:A[I],j:A[I+1],k:A[I+2],x:A[I+3],y:A[I+4],z:A[I+5]});return g}async getGDALMetadata(A=null){const g={};if(!this.fileDirectory.hasTag("GDAL_METADATA"))return null;let I=function(A,g){const I=[];let C,e=0;for(;C=IA(A,g,{debug:!1,startIndex:e});)e=C.start+1+g.length,I.push(C);return I}(await this.fileDirectory.loadValue("GDAL_METADATA"),"Item");I=null===A?I.filter(A=>void 0===$(A,"sample")):I.filter(g=>Number($(g,"sample"))===A);for(let A=0;A<I.length;++A){const C=I[A];g[$(C,"name")]=C.inner}return g}getGDALNoData(){const A=this.fileDirectory.hasTag("GDAL_NODATA")&&this.fileDirectory.getValue("GDAL_NODATA");return A?Number(A.substring(0,A.length-1)):null}getOrigin(){const A=this.fileDirectory.getValue("ModelTiepoint"),g=this.fileDirectory.getValue("ModelTransformation");if(A&&6===A.length)return[A[3],A[4],A[5]];if(g)return[g[3],g[7],g[11]];throw new Error("The image does not have an affine transformation.")}getResolution(A=null){const g=this.fileDirectory.getValue("ModelPixelScale"),I=this.fileDirectory.getValue("ModelTransformation");if(g)return[g[0],-g[1],g[2]];if(I)return 0===I[1]&&0===I[4]?[I[0],-I[5],I[10]]:[Math.sqrt(I[0]*I[0]+I[4]*I[4]),-Math.sqrt(I[1]*I[1]+I[5]*I[5]),I[10]];if(A){const[g,I,C]=A.getResolution();return[g*A.getWidth()/this.getWidth(),I*A.getHeight()/this.getHeight(),C*A.getWidth()/this.getWidth()]}throw new Error("The image does not have an affine transformation.")}pixelIsArea(){return 1===this.getGeoKeys()?.GTRasterTypeGeoKey}getBoundingBox(A=!1){const g=this.getHeight(),I=this.getWidth(),C=this.fileDirectory.getValue("ModelTransformation");if(C&&!A){const[A,e,,i,t,B,,s]=C,Q=[[0,0],[0,g],[I,0],[I,g]].map(([g,I])=>[i+A*g+e*I,s+t*g+B*I]),o=Q.map(A=>A[0]),a=Q.map(A=>A[1]);return[Math.min(...o),Math.min(...a),Math.max(...o),Math.max(...a)]}{const A=this.getOrigin(),C=this.getResolution(),e=A[0],i=A[1],t=e+C[0]*I,B=i+C[1]*g;return[Math.min(e,t),Math.min(i,B),Math.max(e,t),Math.max(i,B)]}}}class MA{constructor(A){this._dataView=new DataView(A)}get buffer(){return this._dataView.buffer}getUint64(A,g){const I=this.getUint32(A,g),C=this.getUint32(A+4,g);let e;if(g){if(e=I+2**32*C,!Number.isSafeInteger(e))throw new Error(`${e} exceeds MAX_SAFE_INTEGER. Precision may be lost. Please report if you get this message to https://github.com/geotiffjs/geotiff.js/issues`);return e}if(e=2**32*I+C,!Number.isSafeInteger(e))throw new Error(`${e} exceeds MAX_SAFE_INTEGER. Precision may be lost. Please report if you get this message to https://github.com/geotiffjs/geotiff.js/issues`);return e}getInt64(A,g){let I=0;const C=(128&this._dataView.getUint8(A+(g?7:0)))>0;let e=!0;for(let i=0;i<8;i++){let t=this._dataView.getUint8(A+(g?i:7-i));C&&(e?0!==t&&(t=255&~(t-1),e=!1):t=255&~t),I+=t*256**i}return C&&(I=-I),I}getUint8(A){return this._dataView.getUint8(A)}getInt8(A){return this._dataView.getInt8(A)}getUint16(A,g){return this._dataView.getUint16(A,g)}getInt16(A,g){return this._dataView.getInt16(A,g)}getUint32(A,g){return this._dataView.getUint32(A,g)}getInt32(A,g){return this._dataView.getInt32(A,g)}getFloat16(A,g){return _(this._dataView,A,g)}getFloat32(A,g){return this._dataView.getFloat32(A,g)}getFloat64(A,g){return this._dataView.getFloat64(A,g)}}class bA{constructor(A,g,I,C){this._dataView=new DataView(A),this._sliceOffset=g,this._littleEndian=I,this._bigTiff=C}get sliceOffset(){return this._sliceOffset}get sliceTop(){return this._sliceOffset+this.buffer.byteLength}get littleEndian(){return this._littleEndian}get bigTiff(){return this._bigTiff}get buffer(){return this._dataView.buffer}covers(A,g){return this.sliceOffset<=A&&this.sliceTop>=A+g}readUint8(A){return this._dataView.getUint8(A-this._sliceOffset)}readInt8(A){return this._dataView.getInt8(A-this._sliceOffset)}readUint16(A){return this._dataView.getUint16(A-this._sliceOffset,this._littleEndian)}readInt16(A){return this._dataView.getInt16(A-this._sliceOffset,this._littleEndian)}readUint32(A){return this._dataView.getUint32(A-this._sliceOffset,this._littleEndian)}readInt32(A){return this._dataView.getInt32(A-this._sliceOffset,this._littleEndian)}readFloat32(A){return this._dataView.getFloat32(A-this._sliceOffset,this._littleEndian)}readFloat64(A){return this._dataView.getFloat64(A-this._sliceOffset,this._littleEndian)}readUint64(A){const g=this.readUint32(A),I=this.readUint32(A+4);let C;if(this._littleEndian){if(C=g+2**32*I,!Number.isSafeInteger(C))throw new Error(`${C} exceeds MAX_SAFE_INTEGER. Precision may be lost. Please report if you get this message to https://github.com/geotiffjs/geotiff.js/issues`);return C}if(C=2**32*g+I,!Number.isSafeInteger(C))throw new Error(`${C} exceeds MAX_SAFE_INTEGER. Precision may be lost. Please report if you get this message to https://github.com/geotiffjs/geotiff.js/issues`);return C}readInt64(A){let g=0;const I=(128&this._dataView.getUint8(A+(this._littleEndian?7:0)))>0;let C=!0;for(let e=0;e<8;e++){let i=this._dataView.getUint8(A+(this._littleEndian?e:7-e));I&&(C?0!==i&&(i=255&~(i-1),C=!1):i=255&~i),g+=i*256**e}return I&&(g=-g),g}readOffset(A){return this._bigTiff?this.readUint64(A):this.readUint32(A)}}const KA="\r\n\r\n";function HA(A){if(void 0!==Object.fromEntries)return Object.fromEntries(A);const g={};for(const[I,C]of A)g[I.toLowerCase()]=C;return g}function JA(A){return HA(A.split("\r\n").map(A=>{const g=A.split(":").map(A=>A.trim());return g[0]=g[0].toLowerCase(),g}))}function xA(A){let g=NaN,I=NaN,C=NaN;return A&&([,g,I,C]=(A.match(/bytes (\d+)-(\d+)\/(\d+)/)||[]).map(Number)),{start:g,end:I,total:C}}class TA{async fetch(A,g){return Promise.all(A.map(async A=>(await this.fetchSlice(A,g)).data))}async fetchSlice(A,g){throw new Error(`fetching of slice ${A} not possible, not implemented`)}get fileSize(){return null}async close(){}}class ZA extends Map{constructor(A={}){if(super(),!(A.maxSize&&A.maxSize>0))throw new TypeError("`maxSize` must be a number greater than 0");if("number"==typeof A.maxAge&&0===A.maxAge)throw new TypeError("`maxAge` must be a number greater than 0");this.maxSize=A.maxSize,this.maxAge=A.maxAge||Number.POSITIVE_INFINITY,this.onEviction=A.onEviction,this.cache=new Map,this.oldCache=new Map,this._size=0}_emitEvictions(A){if("function"==typeof this.onEviction)for(const[g,I]of A)this.onEviction(g,I.value)}_deleteIfExpired(A,g){return"number"==typeof g.expiry&&g.expiry<=Date.now()&&("function"==typeof this.onEviction&&this.onEviction(A,g.value),this.delete(A))}_getOrDeleteIfExpired(A,g){if(!1===this._deleteIfExpired(A,g))return g.value}_getItemValue(A,g){return g.expiry?this._getOrDeleteIfExpired(A,g):g.value}_peek(A,g){const I=g.get(A);return this._getItemValue(A,I)}_set(A,g){this.cache.set(A,g),this._size++,this._size>=this.maxSize&&(this._size=0,this._emitEvictions(this.oldCache),this.oldCache=this.cache,this.cache=new Map)}_moveToRecent(A,g){this.oldCache.delete(A),this._set(A,g)}*_entriesAscending(){for(const A of this.oldCache){const[g,I]=A;if(!this.cache.has(g)){!1===this._deleteIfExpired(g,I)&&(yield A)}}for(const A of this.cache){const[g,I]=A;!1===this._deleteIfExpired(g,I)&&(yield A)}}get(A){if(this.cache.has(A)){const g=this.cache.get(A);return this._getItemValue(A,g)}if(this.oldCache.has(A)){const g=this.oldCache.get(A);if(!1===this._deleteIfExpired(A,g))return this._moveToRecent(A,g),g.value}}set(A,g,{maxAge:I=this.maxAge}={}){const C="number"==typeof I&&I!==Number.POSITIVE_INFINITY?Date.now()+I:void 0;return this.cache.has(A)?this.cache.set(A,{value:g,expiry:C}):this._set(A,{value:g,expiry:C}),this}has(A){return this.cache.has(A)?!this._deleteIfExpired(A,this.cache.get(A)):!!this.oldCache.has(A)&&!this._deleteIfExpired(A,this.oldCache.get(A))}peek(A){return this.cache.has(A)?this._peek(A,this.cache):this.oldCache.has(A)?this._peek(A,this.oldCache):void 0}delete(A){const g=this.cache.delete(A);return g&&this._size--,this.oldCache.delete(A)||g}clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}resize(A){if(!(A&&A>0))throw new TypeError("`maxSize` must be a number greater than 0");const g=[...this._entriesAscending()],I=g.length-A;I<0?(this.cache=new Map(g),this.oldCache=new Map,this._size=g.length):(I>0&&this._emitEvictions(g.slice(0,I)),this.oldCache=new Map(g.slice(I)),this.cache=new Map,this._size=0),this.maxSize=A}*keys(){for(const[A]of this)yield A}*values(){for(const[,A]of this)yield A}*[Symbol.iterator](){for(const A of this.cache){const[g,I]=A;!1===this._deleteIfExpired(g,I)&&(yield[g,I.value])}for(const A of this.oldCache){const[g,I]=A;if(!this.cache.has(g)){!1===this._deleteIfExpired(g,I)&&(yield[g,I.value])}}}*entriesDescending(){let A=[...this.cache];for(let g=A.length-1;g>=0;--g){const I=A[g],[C,e]=I;!1===this._deleteIfExpired(C,e)&&(yield[C,e.value])}A=[...this.oldCache];for(let g=A.length-1;g>=0;--g){const I=A[g],[C,e]=I;if(!this.cache.has(C)){!1===this._deleteIfExpired(C,e)&&(yield[C,e.value])}}}*entriesAscending(){for(const[A,g]of this._entriesAscending())yield[A,g.value]}get size(){if(!this._size)return this.oldCache.size;let A=0;for(const g of this.oldCache.keys())this.cache.has(g)||A++;return Math.min(this._size+A,this.maxSize)}entries(){return this.entriesAscending()}forEach(A,g=this){for(const[I,C]of this.entriesAscending())A.call(g,C,I,this)}get[Symbol.toStringTag](){return JSON.stringify([...this.entriesAscending()])}}class qA extends Error{constructor(...A){super(...A),Error.captureStackTrace&&Error.captureStackTrace(this,qA),this.name="AbortError",this.signal=void 0}}class OA extends Error{constructor(A,g){super(g),this.errors=A,this.message=g,this.name="AggregateError"}}const WA=OA;class VA{constructor(A,g,I){this.offset=A,this.length=g,this.data=I}get top(){return this.offset+this.length}}class vA{constructor(A,g,I){this.offset=A,this.length=g,this.blockIds=I}}class zA extends TA{constructor(A,{blockSize:g=65536,cacheSize:I=100}={}){super(),this.source=A,this.blockSize=g,this.blockCache=new ZA({maxSize:I,onEviction:(A,g)=>{this.evictedBlocks.set(A,g)}}),this.evictedBlocks=new Map,this.blockRequests=new Map,this.blockIdsToFetch=new Set,this.abortedBlockIds=new Set}get fileSize(){return this.source.fileSize}async fetch(A,g){const I=[],C=[],e=[];this.evictedBlocks.clear();for(const{offset:g,length:i}of A){let A=g+i;const{fileSize:t}=this;null!==t&&(A=Math.min(A,t));for(let i=Math.floor(g/this.blockSize)*this.blockSize;i<A;i+=this.blockSize){const A=Math.floor(i/this.blockSize);this.blockCache.has(A)||this.blockRequests.has(A)||(this.blockIdsToFetch.add(A),C.push(A)),this.blockRequests.has(A)&&I.push(this.blockRequests.get(A)),e.push(A)}}await async function(A){return new Promise(g=>setTimeout(g,A))}(),this.fetchBlocks(g);const i=[];for(const A of C)this.blockRequests.has(A)&&i.push(this.blockRequests.get(A));await Promise.allSettled(I),await Promise.allSettled(i);const t=[],B=e.filter(A=>this.abortedBlockIds.has(A)||!this.blockCache.has(A));if(B.forEach(A=>this.blockIdsToFetch.add(A)),B.length>0&&g&&!g.aborted){this.fetchBlocks();for(const A of B){const g=this.blockRequests.get(A);if(!g)throw new Error(`Block ${A} is not in the block requests`);t.push(g)}await Promise.allSettled(t)}if(g&&g.aborted)throw new qA("Request was aborted");const s=e.map(A=>this.blockCache.get(A)||this.evictedBlocks.get(A)),Q=s.filter(A=>!A);if(Q.length)throw new WA(Q,"Request failed");const o=new Map(function(A,g){const I=Array.isArray(A)?A:Array.from(A),C=Array.isArray(g)?g:Array.from(g);return I.map((A,g)=>[A,C[g]])}(e,s));return this.readSliceData(A,o)}fetchBlocks(A){if(this.blockIdsToFetch.size>0){const g=this.groupBlocks(this.blockIdsToFetch),I=g.map(async g=>({...g,...await this.source.fetchSlice(g,A)}));for(let C=0;C<g.length;++C){const e=g[C];for(const g of e.blockIds)this.blockRequests.set(g,(async()=>{try{const A=(await Promise.all(I))[C],e=g*this.blockSize,i=e-A.offset,t=Math.min(i+this.blockSize,A.data.byteLength),B=A.data.slice(i,t),s=new VA(e,B.byteLength,B);this.blockCache.set(g,s),this.abortedBlockIds.delete(g)}catch(I){if(!(I instanceof qA&&"AbortError"===I.name))throw I;I.signal=A,this.blockCache.delete(g),this.abortedBlockIds.add(g)}finally{this.blockRequests.delete(g)}})())}this.blockIdsToFetch.clear()}}groupBlocks(A){const g=Array.from(A).sort((A,g)=>A-g);if(0===g.length)return[];let I=[],C=null;const e=[];for(const A of g)null===C||C+1===A?(I.push(A),C=A):(e.push(new vA(I[0]*this.blockSize,I.length*this.blockSize,I)),I=[A],C=A);return e.push(new vA(I[0]*this.blockSize,I.length*this.blockSize,I)),e}readSliceData(A,g){return A.map(A=>{let I=A.offset+A.length;null!==this.fileSize&&(I=Math.min(this.fileSize,I));const C=Math.floor(A.offset/this.blockSize),e=Math.floor((I-1)/this.blockSize),i=new ArrayBuffer(A.length),t=new Uint8Array(i);for(let i=C;i<=e;++i){const C=g.get(i);if(!C)continue;const e=C.offset-A.offset;let B,s=0,Q=0;e<0?s=-e:e>0&&(Q=e),B=C.top-I<0?C.length-s:I-C.offset-s;const o=new Uint8Array(C.data,s,B);t.set(o,Q)}return i})}}class PA{get ok(){return this.status>=200&&this.status<=299}get status(){throw new Error("not implemented")}getHeader(A){throw new Error("not implemented")}async getData(){throw new Error("not implemented")}}class XA{constructor(A){this.url=A}async request(A){throw new Error("request is not implemented")}}class jA extends PA{constructor(A){super(),this.response=A}get status(){return this.response.status}getHeader(A){return this.response.headers.get(A)||void 0}async getData(){return this.response.arrayBuffer?await this.response.arrayBuffer():(await this.response.buffer()).buffer}}class _A extends XA{constructor(A,g){super(A),this.credentials=g}async request({headers:A,signal:g}={}){const I=await fetch(this.url,{headers:A,credentials:this.credentials,signal:g});return new jA(I)}}class $A extends PA{constructor(A,g){super(),this.xhr=A,this.data=g}get status(){return this.xhr.status}getHeader(A){return this.xhr.getResponseHeader(A)||void 0}async getData(){return this.data}}class Ag extends XA{constructRequest(A,g){return new Promise((I,C)=>{const e=new XMLHttpRequest;e.open("GET",this.url),e.responseType="arraybuffer";for(const[g,I]of Object.entries(A))e.setRequestHeader(g,I);e.onload=()=>{const A=e.response;I(new $A(e,A))},e.onerror=C,e.onabort=()=>C(new qA("Request aborted")),e.send(),g&&(g.aborted&&e.abort(),g.addEventListener("abort",()=>e.abort()))})}async request({headers:A={},signal:g}={}){return await this.constructRequest(A,g)}}var gg={};class Ig extends PA{constructor(A,g){super(),this.response=A,this.dataPromise=g}get status(){return this.response.statusCode}getHeader(A){const g=this.response.headers[A];return Array.isArray(g)?g.join(", "):g}async getData(){return await this.dataPromise}}class Cg extends XA{constructor(A){super(A),this.parsedUrl=gg.parse(this.url),this.httpApi=(this.parsedUrl.protocol,gg)}constructRequest(A,g){return new Promise((I,C)=>{const e=this.httpApi.get({...this.parsedUrl,headers:A},A=>{const g=new Promise(g=>{const I=[];A.on("data",A=>{I.push(A)}),A.on("end",()=>{const A=Buffer.concat(I).buffer;g(A)}),A.on("error",C)});I(new Ig(A,g))});e.on("error",C),g&&(g.aborted&&e.destroy(new qA("Request aborted")),g.addEventListener("abort",()=>e.destroy(new qA("Request aborted"))))})}async request({headers:A={},signal:g}={}){return await this.constructRequest(A,g)}}class eg extends TA{constructor(A,{headers:g,maxRanges:I=0,allowFullFile:C}={}){super(),this.client=A,this.headers=g,this.maxRanges=I,this.allowFullFile=C,this._fileSize=null}async fetch(A,g){return this.maxRanges>=A.length?this.fetchSlices(A,g).then(A=>A.map(A=>A.data)):(this.maxRanges>0&&A.length,Promise.all(A.map(async A=>(await this.fetchSlice(A,g)).data)))}async fetchSlices(A,g){const I=await this.client.request({headers:{...this.headers,Range:`bytes=${A.map(({offset:A,length:g})=>`${A}-${A+g-1}`).join(",")}`},signal:g});if(I.ok){if(206===I.status){const{type:C,params:e}=function(A){if(!A)return{type:null,params:{}};const[g,...I]=A.split(";").map(A=>A.trim());return{type:g,params:HA(I.map(A=>A.split("=")))}}(I.getHeader("content-type"));if("multipart/byteranges"===C){const A=function(A,g){let I=-1;const C=new TextDecoder("ascii"),e=[],i=`--${g}`,t=`${i}--`;for(let g=0;g<10;++g)C.decode(new Uint8Array(A,g,i.length))===i&&(I=g);if(-1===I)throw new Error("Could not find initial boundary");for(;I<A.byteLength;){const g=C.decode(new Uint8Array(A,I,Math.min(i.length+1024,A.byteLength-I)));if(0===g.length||g.startsWith(t))break;if(!g.startsWith(i))throw new Error("Part does not start with boundary");const B=g.substr(i.length+2);if(0===B.length)break;const s=B.indexOf(KA),Q=JA(B.substr(0,s)),{start:o,end:a,total:E}=xA(Q["content-range"]),r=I+i.length+s+4,n=a+1-o;e.push({headers:Q,data:A.slice(r,r+n),offset:o,length:n,fileSize:E}),I=r+n+4}return e}(await I.getData(),e.boundary);return this._fileSize=A[0].fileSize||null,A}const i=await I.getData(),{start:t,end:B,total:s}=xA(I.getHeader("content-range"));this._fileSize=s||null;const Q=[{data:i,offset:t,length:B+1-t}];if(A.length>1){const I=await Promise.all(A.slice(1).map(A=>this.fetchSlice(A,g)));return Q.concat(I)}return Q}{if(!this.allowFullFile)throw new Error("Server responded with full file");const A=await I.getData();return this._fileSize=A.byteLength,[{data:A,offset:0,length:A.byteLength}]}}throw new Error("Error fetching data.")}async fetchSlice(A,g){const{offset:I,length:C}=A,e=await this.client.request({headers:{...this.headers,Range:`bytes=${I}-${I+C-1}`},signal:g});if(e.ok){if(206===e.status){const A=await e.getData(),{total:g}=xA(e.getHeader("content-range"));return this._fileSize=g||null,{data:A,offset:I,length:C}}{if(!this.allowFullFile)throw new Error("Server responded with full file");const A=await e.getData();return this._fileSize=A.byteLength,{data:A,offset:0,length:A.byteLength}}}throw new Error("Error fetching data.")}get fileSize(){return this._fileSize}}function ig(A,{blockSize:g,cacheSize:I}){return void 0===g?A:new zA(A,{blockSize:g,cacheSize:I})}function tg(A,{forceXHR:g=!1,...I}={}){return"function"!=typeof fetch||g?"undefined"!=typeof XMLHttpRequest?function(A,{headers:g={},maxRanges:I=0,allowFullFile:C=!1,...e}={}){const i=new Ag(A);return ig(new eg(i,{headers:g,maxRanges:I,allowFullFile:C}),e)}(A,I):function(A,{headers:g={},maxRanges:I=0,allowFullFile:C=!1,...e}={}){const i=new Cg(A);return ig(new eg(i,{headers:g,maxRanges:I,allowFullFile:C}),e)}(A,I):function(A,{headers:g={},credentials:I,maxRanges:C=0,allowFullFile:e=!1,...i}={}){const t=new _A(A,I);return ig(new eg(t,{headers:g,maxRanges:C,allowFullFile:e}),i)}(A,I)}class Bg extends TA{constructor(A){super(),this.arrayBuffer=A}fetchSlice(A,g){if(g&&g.aborted)throw new qA("Request aborted");return Promise.resolve({data:this.arrayBuffer.slice(A.offset,A.offset+A.length),offset:A.offset,length:A.length})}}function sg(A,g){switch(A){case CA.BYTE:case CA.ASCII:case CA.UNDEFINED:return new Uint8Array(g);case CA.SBYTE:return new Int8Array(g);case CA.SHORT:return new Uint16Array(g);case CA.SSHORT:return new Int16Array(g);case CA.LONG:case CA.IFD:return new Uint32Array(g);case CA.SLONG:return new Int32Array(g);case CA.LONG8:case CA.IFD8:case CA.SLONG8:return new Array(g);case CA.RATIONAL:return new Uint32Array(2*g);case CA.SRATIONAL:return new Int32Array(2*g);case CA.FLOAT:return new Float32Array(g);case CA.DOUBLE:return new Float64Array(g);default:throw new RangeError(`Invalid field type: ${A}`)}}function Qg(A,g){switch(g){case CA.BYTE:case CA.ASCII:case CA.UNDEFINED:return A.readUint8;case CA.SBYTE:return A.readInt8;case CA.SHORT:return A.readUint16;case CA.SSHORT:return A.readInt16;case CA.LONG:case CA.IFD:return A.readUint32;case CA.SLONG:return A.readInt32;case CA.LONG8:case CA.IFD8:return A.readUint64;case CA.SLONG8:return A.readInt64;case CA.RATIONAL:return A.readUint32;case CA.SRATIONAL:return A.readInt32;case CA.FLOAT:return A.readFloat32;case CA.DOUBLE:return A.readFloat64;default:throw new RangeError(`Invalid field type: ${g}`)}}function og(A=null,g,I,C,e,i,t=!1){const B=iA(C),s=A||sg(C,e),Q=C===CA.RATIONAL||C===CA.SRATIONAL;if(Q)for(let A=0;A<e;A+=2)s[A]=g.call(I,i+A*B),s[A+1]=g.call(I,i+(A*B+4));else for(let A=0;A<e;++A)s[A]=g.call(I,i+A*B);return C===CA.ASCII?new TextDecoder("utf-8").decode(s):1!==e||t||Q?s:s[0]}class ag{constructor(A,g,I,C,e){this.source=A,this.arrayOffset=g,this.littleEndian=I,this.fieldType=C,this.length=e,this.data=sg(C,e),this.itemSize=iA(C),this.maskBitmap=new Uint8Array(Math.ceil(e/8)),this.fetchIndexPromises=new Map,this.fullFetchPromise=null}async loadAll(){return this.fullFetchPromise||(this.fullFetchPromise=this.source.fetch([{offset:this.arrayOffset,length:this.itemSize*this.length}]).then(A=>{const g=new bA(A[0],this.arrayOffset,!0,!1),I=og(this.data,Qg(g,this.fieldType),g,this.fieldType,this.length,this.arrayOffset,!0);return this.maskBitmap.fill(255),this.fetchIndexPromises.clear(),I})),this.fullFetchPromise}async get(A){if(A<0||A>=this.data.length)throw new RangeError(`Index ${A} out of bounds for length ${this.data.length}`);const g=Math.floor(A/8),I=1<<A%8,C=this.arrayOffset+A*this.itemSize;if(0===(this.maskBitmap[g]&I)){if(!this.fetchIndexPromises.has(A)){const e=this.source.fetch([{offset:C,length:this.itemSize}]).then(e=>{const i=new bA(e[0],this.arrayOffset+A*this.itemSize,!0,!1),t=Qg(i,this.fieldType).call(i,C);return this.data[A]=t,this.maskBitmap[g]|=I,this.fetchIndexPromises.delete(A),t});this.fetchIndexPromises.set(A,e)}return this.fetchIndexPromises.get(A)}return this.data[A]}}class Eg{constructor(A,g,I,C){this.actualizedFields=A,this.deferredFields=g,this.deferredFieldsBeingResolved=new Map,this.deferredArrays=I,this.nextIFDByteOffset=C}hasTag(A){const g=oA(A);return this.actualizedFields.has(g)||this.deferredFields.has(g)||this.deferredArrays.has(g)}getValue(A){const g=oA(A);if(this.deferredFields.has(g)||this.deferredArrays.has(g)){const A=sA[g];throw new Error(`Field '${A?.name||`Tag${g}`}' (${g}) is deferred. Use loadValue() to load it asynchronously.`)}if(this.actualizedFields.has(g))return this.actualizedFields.get(g)}async loadValue(A){const g=oA(A);if(this.actualizedFields.has(g))return this.actualizedFields.get(g);if(this.deferredFieldsBeingResolved.has(g))return this.deferredFieldsBeingResolved.get(g);const I=this.deferredFields.get(g);if(I){this.deferredFields.delete(g);const A=(async()=>{try{const A=await I();return this.actualizedFields.set(g,A),A}finally{this.deferredFieldsBeingResolved.delete(g)}})();return this.deferredFieldsBeingResolved.set(g,A),A}const C=this.deferredArrays.get(g);return C?C.loadAll():void 0}async loadValueIndexed(A,g){const I=oA(A);if(this.actualizedFields.has(I)){return this.actualizedFields.get(I)[g]}if(this.deferredArrays.has(I)){return this.deferredArrays.get(I).get(g)}if(this.hasTag(I)){const A=await this.loadValue(I);if(A&&"number"!=typeof A)return A[g]}}parseGeoKeyDirectory(){const A=this.getValue("GeoKeyDirectory");if(!A)return null;const g={};for(let I=4;I<=4*A[3];I+=4){const C=uA[A[I]],e=A[I+1]||null,i=A[I+2],t=A[I+3];let B=null;if(e){if(B=this.getValue(e),null==B)throw new Error(`Could not get value of geoKey '${C}'.`);"string"==typeof B?B=B.substring(t,t+i-1):B.subarray&&(B=B.subarray(t,t+i),1===i&&(B=B[0]))}else B=t;g[C]=B}return g}toObject(){const A={};for(const[g,I]of this.actualizedFields.entries()){const C="number"==typeof g?sA[g]:void 0;A[C?C.name:`Tag${g}`]=I}return A}}class rg{constructor(A,g,I,C=!1){this.source=A,this.littleEndian=g,this.bigTiff=I,this.eager=C}async getSlice(A,g){const I=this.bigTiff?4048:1024;return new bA((await this.source.fetch([{offset:A,length:void 0!==g?g:I}]))[0],A,this.littleEndian,this.bigTiff)}async parseFileDirectoryAt(A){const g=this.bigTiff?20:12,I=this.bigTiff?8:2;let C=await this.getSlice(A);const e=this.bigTiff?C.readUint64(A):C.readUint16(A),i=e*(g+(this.bigTiff?16:6));C.covers(A,i)||(C=await this.getSlice(A,i));const t=new Map,B=new Map,s=new Map;let Q=A+(this.bigTiff?8:2);for(let A=0;A<e;Q+=g,++A){const A=C.readUint16(Q),g=C.readUint16(Q+2),I=this.bigTiff?C.readUint64(Q+4):C.readUint32(Q+4);let e=null,i=null,o=null;const a=iA(g),E=Q+(this.bigTiff?12:8),r=sA[A]?.isArray,n=sA[A]?.eager||this.eager;if(a*I<=(this.bigTiff?8:4))e=og(sg(g,I),Qg(C,g),C,g,I,E,r);else{const A=C.readOffset(E),t=iA(g)*I;if(C.covers(A,t))e=og(sg(g,I),Qg(C,g),C,g,I,A,r);else if(n){const C=await this.getSlice(A,t);e=og(sg(g,I),Qg(C,g),C,g,I,A,r)}else r?o=new ag(this.source,A,this.littleEndian,g,I):i=async()=>{const C=await this.getSlice(A,t);return og(sg(g,I),Qg(C,g),C,g,I,A,r)}}null!==e?t.set(A,e):null!==i?B.set(A,i):null!==o&&s.set(A,o)}const o=C.readOffset(A+I+g*e);return new Eg(t,B,s,o)}}function ng(A,g){let I=A.length-g,C=0;do{for(let I=g;I>0;I--)A[C+g]+=A[C],C++;I-=g}while(I>0)}function hg(A,g,I){let C=0,e=A.length;const i=e/I;for(;e>g;){for(let I=g;I>0;--I)A[C+g]+=A[C],++C;e-=g}const t=A.slice();for(let g=0;g<i;++g)for(let C=0;C<I;++C)A[I*g+C]=t[(I-C-1)*i+g]}class lg{constructor(A){this.parameters=A}decodeBlock(A){throw new Error("decodeBlock not implemented")}async decode(A){const g=await this.decodeBlock(A),{tileWidth:I,tileHeight:C,predictor:e,bitsPerSample:i,planarConfiguration:t}=this.parameters;if(1!==e){return function(A,g,I,C,e,i){if(!g||1===g)return A;for(let A=0;A<e.length;++A){if(e[A]%8!=0)throw new Error("When decoding with predictor, only multiple of 8 bits are supported.");if(e[A]!==e[0])throw new Error("When decoding with predictor, all samples must have the same size.")}const t=e[0]/8,B=2===i?1:e.length;for(let i=0;i<C&&!(i*B*I*t>=A.byteLength);++i){let C;if(2===g){switch(e[0]){case 8:C=new Uint8Array(A,i*B*I*t,B*I*t);break;case 16:C=new Uint16Array(A,i*B*I*t,B*I*t/2);break;case 32:C=new Uint32Array(A,i*B*I*t,B*I*t/4);break;default:throw new Error(`Predictor 2 not allowed with ${e[0]} bits per sample.`)}ng(C,B)}else 3===g&&(C=new Uint8Array(A,i*B*I*t,B*I*t),hg(C,B,t))}return A}(g,e,I,C,Array.isArray(i)||ArrayBuffer.isView(i)?Array.from(i):[i],t)}return g}}function cg(A,g,I,C){let e=null,i=null;const t=iA(g);switch(g){case CA.BYTE:case CA.ASCII:case CA.UNDEFINED:e=new Uint8Array(I),i=A.readUint8;break;case CA.SBYTE:e=new Int8Array(I),i=A.readInt8;break;case CA.SHORT:e=new Uint16Array(I),i=A.readUint16;break;case CA.SSHORT:e=new Int16Array(I),i=A.readInt16;break;case CA.LONG:case CA.IFD:e=new Uint32Array(I),i=A.readUint32;break;case CA.SLONG:e=new Int32Array(I),i=A.readInt32;break;case CA.LONG8:case CA.IFD8:e=new Array(I),i=A.readUint64;break;case CA.SLONG8:e=new Array(I),i=A.readInt64;break;case CA.RATIONAL:e=new Uint32Array(2*I),i=A.readUint32;break;case CA.SRATIONAL:e=new Int32Array(2*I),i=A.readInt32;break;case CA.FLOAT:e=new Float32Array(I),i=A.readFloat32;break;case CA.DOUBLE:e=new Float64Array(I),i=A.readFloat64}if(null===e||null===i)throw new RangeError(`Invalid field type: ${g}`);for(let g=0;g<I;++g)e[g]=i.call(A,C+g*t);return new TextDecoder("utf-8").decode(e)}class wg extends Error{constructor(A){super(`No image at index ${A}`),this.index=A}}class Dg{async getImage(A=0){throw new Error("Not implemented")}async getImageCount(){throw new Error("Not implemented")}async readRasters(A={}){const{window:g,width:I,height:C}=A;let{resX:e,resY:i,bbox:t}=A;const B=await this.getImage();let s=B;const Q=await this.getImageCount(),o=B.getBoundingBox();if(g&&t)throw new Error('Both "bbox" and "window" passed.');if(I||C){if(g){const[A,I]=B.getOrigin(),[C,e]=B.getResolution();t=[A+g[0]*C,I+g[1]*e,A+g[2]*C,I+g[3]*e]}const A=t||o;if(I){if(e)throw new Error("Both width and resX passed");e=(A[2]-A[0])/I}if(C){if(i)throw new Error("Both width and resY passed");i=(A[3]-A[1])/C}}if(e||i){const A=[];for(let g=0;g<Q;++g){const I=await this.getImage(g),C=I.fileDirectory.getValue("SubfileType"),e=I.fileDirectory.getValue("NewSubfileType");(0===g||2===C||1&(e||0))&&A.push(I)}A.sort((A,g)=>A.getWidth()-g.getWidth());for(let g=0;g<A.length;++g){const I=A[g],C=(o[2]-o[0])/I.getWidth(),t=(o[3]-o[1])/I.getHeight();if(s=I,e&&e>C||i&&i>t)break}}let a=g;if(t){const[A,g]=B.getOrigin(),[I,C]=s.getResolution(B);a=[Math.round((t[0]-A)/I),Math.round((t[1]-g)/C),Math.round((t[2]-A)/I),Math.round((t[3]-g)/C)],a=[Math.min(a[0],a[2]),Math.min(a[1],a[3]),Math.max(a[0],a[2]),Math.max(a[1],a[3])]}return s.readRasters({...A,window:a})}}class dg extends Dg{constructor(A,g,I,C,e={}){super(),this.source=A,this.parser=new rg(A,g,I,!1),this.littleEndian=g,this.bigTiff=I,this.firstIFDOffset=C,this.cache=e.cache||!1,this.ifdRequests=[],this.ghostValues=null}async getSlice(A,g){const I=this.bigTiff?4048:1024;return new bA((await this.source.fetch([{offset:A,length:void 0!==g?g:I}]))[0],A,this.littleEndian,this.bigTiff)}async requestIFD(A){if(this.ifdRequests[A])return this.ifdRequests[A];if(0===A)return this.ifdRequests[A]=this.parser.parseFileDirectoryAt(this.firstIFDOffset),this.ifdRequests[A];if(!this.ifdRequests[A-1])try{this.ifdRequests[A-1]=this.requestIFD(A-1)}catch(g){if(g instanceof wg)throw new wg(A);throw g}return this.ifdRequests[A]=(async()=>{const g=this.ifdRequests[A-1];if(!g)throw new Error("Previous IFD request missing");const I=await g;if(0===I.nextIFDByteOffset)throw new wg(A);return this.parser.parseFileDirectoryAt(I.nextIFDByteOffset)})(),this.ifdRequests[A]}async getImage(A=0){return new mA(await this.requestIFD(A),this.littleEndian,this.cache,this.source)}async getImageCount(){let A=0,g=!0;for(;g;)try{await this.requestIFD(A),++A}catch(A){if(!(A instanceof wg))throw A;g=!1}return A}async getGhostValues(){const A=this.bigTiff?16:8;if(null!==this.ghostValues)return this.ghostValues;const g="GDAL_STRUCTURAL_METADATA_SIZE=";let I=await this.getSlice(A,130);if(g===cg(I,CA.ASCII,30,A)){const g=cg(I,CA.ASCII,130,A).split("\n")[0],C=Number(g.split("=")[1].split(" ")[0])+g.length;C>130&&(I=await this.getSlice(A,C));const e=cg(I,CA.ASCII,C,A),i={};e.split("\n").filter(A=>A.length>0).map(A=>A.split("=")).forEach(([A,g])=>{i[A]=g}),this.ghostValues=i}return this.ghostValues}static async fromSource(A,g,I){const C=(await A.fetch([{offset:0,length:1024}],I))[0],e=new MA(C),i=e.getUint16(0,!1);let t;if(18761===i)t=!0;else{if(19789!==i)throw new TypeError("Invalid byte order value.");t=!1}const B=e.getUint16(2,t);let s;if(42===B)s=!1;else{if(43!==B)throw new TypeError("Invalid magic number.");s=!0;if(8!==e.getUint16(4,t))throw new Error("Unsupported offset byte-size.")}const Q=s?e.getUint64(8,t):e.getUint32(4,t);return new dg(A,t,s,Q,g)}close(){return"function"==typeof this.source.close&&this.source.close()}}async function yg(A,g){return dg.fromSource(function(A){return new Bg(A)}(A),void 0,g)}const Gg={type:"image",blockSize:65536,format:void 0,useChannel:null,useChannelIndex:null,noDataValue:void 0,multiplier:1,verticalExaggeration:1,numOfChannels:void 0,planarConfig:void 0,tesselator:"martini",terrainColor:[200,200,200,255],terrainSkirtHeight:100,terrainMinValue:0,useHeatMap:!0,useColorsBasedOnValues:!1,useColorClasses:!1,useAutoRange:!1,useDataForOpacity:!1,useSingleColor:!1,blurredTexture:!0,skipTexture:!1,noDataCheck:"full",clipLow:null,clipHigh:null,color:[255,0,255,255],colorScale:e.brewer.YlOrRd,colorScaleValueRange:[0,255],colorsBasedOnValues:void 0,colorClasses:void 0,alpha:100,maxGlazeAlpha:128,nullColor:[0,0,0,0],unidentifiedColor:[0,0,0,0],clippedColor:[0,0,0,0],useSlope:!1,useHillshade:!1,hillshadeAzimuth:315,hillshadeAltitude:45,zFactor:1,useSwissRelief:!1,swissSlopeWeight:.5,useReliefGlaze:!1,disableLighting:!1,cacheAllBands:!1,disableWorkerPool:!1};class ug{constructor(A=257){this.gridSize=A;const g=A-1;if(g&g-1)throw new Error(`Expected grid size to be 2^n+1, got ${A}.`);this.numTriangles=g*g*2-2,this.numParentTriangles=this.numTriangles-g*g,this.indices=new Uint32Array(this.gridSize*this.gridSize),this.coords=new Uint16Array(4*this.numTriangles);for(let A=0;A<this.numTriangles;A++){let I=A+2,C=0,e=0,i=0,t=0,B=0,s=0;for(1&I?i=t=B=g:C=e=s=g;(I>>=1)>1;){const A=C+i>>1,g=e+t>>1;1&I?(i=C,t=e,C=B,e=s):(C=i,e=t,i=B,t=s),B=A,s=g}const Q=4*A;this.coords[Q+0]=C,this.coords[Q+1]=e,this.coords[Q+2]=i,this.coords[Q+3]=t}}createTile(A){return new Sg(A,this)}}class Sg{constructor(A,g){const I=g.gridSize;if(A.length!==I*I)throw new Error(`Expected terrain data of length ${I*I} (${I} x ${I}), got ${A.length}.`);this.terrain=A,this.martini=g,this.errors=new Float32Array(A.length),this.update()}update(){const{numTriangles:A,numParentTriangles:g,coords:I,gridSize:C}=this.martini,{terrain:e,errors:i}=this;for(let t=A-1;t>=0;t--){const A=4*t,B=I[A+0],s=I[A+1],Q=I[A+2],o=I[A+3],a=B+Q>>1,E=s+o>>1,r=a+E-s,n=E+B-a,h=(e[s*C+B]+e[o*C+Q])/2,l=E*C+a,c=Math.abs(h-e[l]);if(i[l]=Math.max(i[l],c),t<g){const A=(s+n>>1)*C+(B+r>>1),g=(o+n>>1)*C+(Q+r>>1);i[l]=Math.max(i[l],i[A],i[g])}}}getMesh(A=0){const{gridSize:g,indices:I}=this.martini,{errors:C}=this;let e=0,i=0;const t=g-1;function B(t,s,Q,o,a,E){const r=t+Q>>1,n=s+o>>1;Math.abs(t-a)+Math.abs(s-E)>1&&C[n*g+r]>A?(B(a,E,t,s,r,n),B(Q,o,a,E,r,n)):(I[s*g+t]=I[s*g+t]||++e,I[o*g+Q]=I[o*g+Q]||++e,I[E*g+a]=I[E*g+a]||++e,i++)}I.fill(0),B(0,0,t,t,t,0),B(t,t,0,0,0,t);const s=new Uint16Array(2*e),Q=new Uint32Array(3*i);let o=0;function a(e,i,t,B,E,r){const n=e+t>>1,h=i+B>>1;if(Math.abs(e-E)+Math.abs(i-r)>1&&C[h*g+n]>A)a(E,r,e,i,n,h),a(t,B,E,r,n,h);else{const A=I[i*g+e]-1,C=I[B*g+t]-1,a=I[r*g+E]-1;s[2*A]=e,s[2*A+1]=i,s[2*C]=t,s[2*C+1]=B,s[2*a]=E,s[2*a+1]=r,Q[o++]=A,Q[o++]=C,Q[o++]=a}}return a(0,0,t,t,t,0),a(t,t,0,0,0,t),{vertices:s,triangles:Q}}}function fg(A,g,I,C,e,i){return(I-e)*(g-i)-(C-i)*(A-e)}class Ng{constructor(A,g,I=g){this.data=A,this.width=g,this.height=I,this.coords=[],this.triangles=[],this._halfedges=[],this._candidates=[],this._queueIndices=[],this._queue=[],this._errors=[],this._rms=[],this._pending=[],this._pendingLen=0,this._rmsSum=0;const C=g-1,e=I-1,i=this._addPoint(0,0),t=this._addPoint(C,0),B=this._addPoint(0,e),s=this._addPoint(C,e),Q=this._addTriangle(s,i,B,-1,-1,-1);this._addTriangle(i,s,t,Q,-1,-1),this._flush()}run(A=1){for(;this.getMaxError()>A;)this.refine()}refine(){this._step(),this._flush()}getMaxError(){return this._errors[0]}getRMSD(){return this._rmsSum>0?Math.sqrt(this._rmsSum/(this.width*this.height)):0}heightAt(A,g){return this.data[this.width*g+A]}_flush(){const{coords:A}=this;for(let g=0;g<this._pendingLen;g++){const I=this._pending[g],C=2*this.triangles[3*I+0],e=2*this.triangles[3*I+1],i=2*this.triangles[3*I+2];this._findCandidate(A[C],A[C+1],A[e],A[e+1],A[i],A[i+1],I)}this._pendingLen=0}_findCandidate(A,g,I,C,e,i,t){const B=Math.min(A,I,e),s=Math.min(g,C,i),Q=Math.max(A,I,e),o=Math.max(g,C,i);let a=fg(I,C,e,i,B,s),E=fg(e,i,A,g,B,s),r=fg(A,g,I,C,B,s);const n=C-g,h=A-I,l=i-C,c=I-e,w=g-i,D=e-A,d=fg(A,g,I,C,e,i),y=this.heightAt(A,g)/d,G=this.heightAt(I,C)/d,u=this.heightAt(e,i)/d;let S=0,f=0,N=0,k=0;for(let A=s;A<=o;A++){let g=0;a<0&&0!==l&&(g=Math.max(g,Math.floor(-a/l))),E<0&&0!==w&&(g=Math.max(g,Math.floor(-E/w))),r<0&&0!==n&&(g=Math.max(g,Math.floor(-r/n)));let I=a+l*g,C=E+w*g,e=r+n*g,i=!1;for(let t=B+g;t<=Q;t++){if(I>=0&&C>=0&&e>=0){i=!0;const g=y*I+G*C+u*e,B=Math.abs(g-this.heightAt(t,A));k+=B*B,B>S&&(S=B,f=t,N=A)}else if(i)break;I+=l,C+=w,e+=n}a+=c,E+=D,r+=h}(f===A&&N===g||f===I&&N===C||f===e&&N===i)&&(S=0),this._candidates[2*t]=f,this._candidates[2*t+1]=N,this._rms[t]=k,this._queuePush(t,S,k)}_step(){const A=this._queuePop(),g=3*A+0,I=3*A+1,C=3*A+2,e=this.triangles[g],i=this.triangles[I],t=this.triangles[C],B=this.coords[2*e],s=this.coords[2*e+1],Q=this.coords[2*i],o=this.coords[2*i+1],a=this.coords[2*t],E=this.coords[2*t+1],r=this._candidates[2*A],n=this._candidates[2*A+1],h=this._addPoint(r,n);if(0===fg(B,s,Q,o,r,n))this._handleCollinear(h,g);else if(0===fg(Q,o,a,E,r,n))this._handleCollinear(h,I);else if(0===fg(a,E,B,s,r,n))this._handleCollinear(h,C);else{const A=this._halfedges[g],B=this._halfedges[I],s=this._halfedges[C],Q=this._addTriangle(e,i,h,A,-1,-1,g),o=this._addTriangle(i,t,h,B,-1,Q+1),a=this._addTriangle(t,e,h,s,Q+2,o+1);this._legalize(Q),this._legalize(o),this._legalize(a)}}_addPoint(A,g){const I=this.coords.length>>1;return this.coords.push(A,g),I}_addTriangle(A,g,I,C,e,i,t=this.triangles.length){const B=t/3;return this.triangles[t+0]=A,this.triangles[t+1]=g,this.triangles[t+2]=I,this._halfedges[t+0]=C,this._halfedges[t+1]=e,this._halfedges[t+2]=i,C>=0&&(this._halfedges[C]=t+0),e>=0&&(this._halfedges[e]=t+1),i>=0&&(this._halfedges[i]=t+2),this._candidates[2*B+0]=0,this._candidates[2*B+1]=0,this._queueIndices[B]=-1,this._rms[B]=0,this._pending[this._pendingLen++]=B,t}_legalize(A){const g=this._halfedges[A];if(g<0)return;const I=A-A%3,C=g-g%3,e=I+(A+1)%3,i=I+(A+2)%3,t=C+(g+2)%3,B=C+(g+1)%3,s=this.triangles[i],Q=this.triangles[A],o=this.triangles[e],a=this.triangles[t],{coords:E}=this;if(!function(A,g,I,C,e,i,t,B){const s=A-t,Q=g-B,o=I-t,a=C-B,E=e-t,r=i-B,n=o*o+a*a,h=E*E+r*r;return s*(a*h-n*r)-Q*(o*h-n*E)+(s*s+Q*Q)*(o*r-a*E)<0}(E[2*s],E[2*s+1],E[2*Q],E[2*Q+1],E[2*o],E[2*o+1],E[2*a],E[2*a+1]))return;const r=this._halfedges[e],n=this._halfedges[i],h=this._halfedges[t],l=this._halfedges[B];this._queueRemove(I/3),this._queueRemove(C/3);const c=this._addTriangle(s,a,o,-1,h,r,I),w=this._addTriangle(a,s,Q,c,n,l,C);this._legalize(c+1),this._legalize(w+2)}_handleCollinear(A,g){const I=g-g%3,C=I+(g+1)%3,e=I+(g+2)%3,i=this.triangles[e],t=this.triangles[g],B=this.triangles[C],s=this._halfedges[C],Q=this._halfedges[e],o=this._halfedges[g];if(o<0){const g=this._addTriangle(A,i,t,-1,Q,-1,I),C=this._addTriangle(i,A,B,g,-1,s);return this._legalize(g+1),void this._legalize(C+2)}const a=o-o%3,E=a+(o+2)%3,r=a+(o+1)%3,n=this.triangles[E],h=this._halfedges[E],l=this._halfedges[r];this._queueRemove(a/3);const c=this._addTriangle(i,t,A,Q,-1,-1,I),w=this._addTriangle(t,n,A,l,-1,c+1,a),D=this._addTriangle(n,B,A,h,-1,w+1),d=this._addTriangle(B,i,A,s,c+2,D+1);this._legalize(c),this._legalize(w),this._legalize(D),this._legalize(d)}_queuePush(A,g,I){const C=this._queue.length;this._queueIndices[A]=C,this._queue.push(A),this._errors.push(g),this._rmsSum+=I,this._queueUp(C)}_queuePop(){const A=this._queue.length-1;return this._queueSwap(0,A),this._queueDown(0,A),this._queuePopBack()}_queuePopBack(){const A=this._queue.pop();return this._errors.pop(),this._rmsSum-=this._rms[A],this._queueIndices[A]=-1,A}_queueRemove(A){const g=this._queueIndices[A];if(g<0){const g=this._pending.indexOf(A);if(-1===g)throw new Error("Broken triangulation (something went wrong).");return void(this._pending[g]=this._pending[--this._pendingLen])}const I=this._queue.length-1;I!==g&&(this._queueSwap(g,I),this._queueDown(g,I)||this._queueUp(g)),this._queuePopBack()}_queueLess(A,g){return this._errors[A]>this._errors[g]}_queueSwap(A,g){const I=this._queue[A],C=this._queue[g];this._queue[A]=C,this._queue[g]=I,this._queueIndices[I]=g,this._queueIndices[C]=A;const e=this._errors[A];this._errors[A]=this._errors[g],this._errors[g]=e}_queueUp(A){let g=A;for(;;){const A=g-1>>1;if(A===g||!this._queueLess(g,A))break;this._queueSwap(A,g),g=A}}_queueDown(A,g){let I=A;for(;;){const A=2*I+1;if(A>=g||A<0)break;const C=A+1;let e=A;if(C<g&&this._queueLess(C,A)&&(e=C),!this._queueLess(e,I))break;this._queueSwap(I,e),I=e}return I>A}}function kg(A,g,I,C){const e=function(A){const g=new Map,I=(A,I)=>{const C=Math.min(A,I),e=Math.max(A,I),i=BigInt(C)<<32n|BigInt(e);g.has(i)?g.delete(i):g.set(i,[A,I])};for(let g=0;g<A.length;g+=3){const C=A[g],e=A[g+1],i=A[g+2];I(C,e),I(e,i),I(i,C)}return Array.from(g.values())}(g),i=new A.POSITION.value.constructor(6*e.length),B=new A.TEXCOORD_0.value.constructor(4*e.length),s=new g.constructor(6*e.length);for(let g=0;g<e.length;g++){Rg({edge:e[g],edgeIndex:g,attributes:A,skirtHeight:I,newPosition:i,newTexcoord0:B,newTriangles:s})}A.POSITION.value=t.concatenateTypedArrays(A.POSITION.value,i),A.TEXCOORD_0.value=t.concatenateTypedArrays(A.TEXCOORD_0.value,B);return{attributes:A,triangles:g instanceof Array?g.concat(s):t.concatenateTypedArrays(g,s)}}function Rg({edge:A,edgeIndex:g,attributes:I,skirtHeight:C,newPosition:e,newTexcoord0:i,newTriangles:t}){const B=I.POSITION.value.length,s=2*g,Q=2*g+1;e.set(I.POSITION.value.subarray(3*A[0],3*A[0]+3),3*s),e[3*s+2]=e[3*s+2]-C,e.set(I.POSITION.value.subarray(3*A[1],3*A[1]+3),3*Q),e[3*Q+2]=e[3*Q+2]-C,i.set(I.TEXCOORD_0.value.subarray(2*A[0],2*A[0]+2),2*s),i.set(I.TEXCOORD_0.value.subarray(2*A[1],2*A[1]+2),2*Q);const o=2*g*3;t[o]=A[0],t[o+1]=B/3+Q,t[o+2]=A[1],t[o+3]=B/3+Q,t[o+4]=A[0],t[o+5]=B/3+s}function Fg(A,g,I,C,e){return I===g?C:(A-g)*(e-C)/(I-g)+C}function pg(A){return Math.fround(A)}function Lg(A,g){if(null==g)return!1;const I=pg(A),C=pg(g);return Number.isNaN(C)?Number.isNaN(I):I===C}class Yg{static _swissColorLUTCache=new Map;static _8bitLUTCache=new Map;static _floatLUTCache=new Map;static getLUTCacheKey(A,g,I,C){return`${g}_${I}_${C}_${JSON.stringify(A.colorScale)}_${A.useSingleColor}_${JSON.stringify(A.color)}_${A.useColorClasses}_${JSON.stringify(A.colorClasses)}_${A.useColorsBasedOnValues}_${JSON.stringify(A.colorsBasedOnValues)}_${A.useHeatMap}_${A.clipLow??""}_${A.clipHigh??""}_${JSON.stringify(A.clippedColor)}_${JSON.stringify(A.nullColor)}_${JSON.stringify(A.unidentifiedColor)}`}static async generate(A,g){const I={...g},{rasters:C,width:e,height:i}=A,t=1===C.length,B=document.createElement("canvas");B.width=e,B.height=i;const s=B.getContext("2d"),Q=s.createImageData(e,i),o=e*i*4,a=Math.floor(2.55*I.alpha);I.unidentifiedColor=this.getColorFromChromaType(I.unidentifiedColor,a),I.nullColor=this.getColorFromChromaType(I.nullColor,a),I.clippedColor=this.getColorFromChromaType(I.clippedColor,a),I.color=this.getColorFromChromaType(I.color,a),I.useChannelIndex??=null==I.useChannel?null:I.useChannel-1;const E=I.numOfChannels??(1===C.length?C[0].length/(e*i):C.length);if(I.useReliefGlaze)if(C.length>=1)Q.data.set(this.getReliefGlazeRGBA(C,I,o));else{const A=new Uint8ClampedArray(o);A.fill(0),Q.data.set(A)}else if(I.useSwissRelief)if(2===C.length)Q.data.set(this.getColorValue(C,I,o));else{this.getDefaultColor(o,I.nullColor).forEach((A,g)=>{Q.data[g]=A})}else if(null==I.useChannelIndex)if(t){const A=C[0].length/(e*i);if(1===A)I.useAutoRange&&(I.colorScaleValueRange=this.getMinMax(C[0],I)),Q.data.set(this.getColorValue(C[0],I,o));else if(3===A||4===A){let g=0;for(let e=0;e<o;e+=4){const i=[C[0][g],C[0][g+1],C[0][g+2]],t=this.hasPixelsNoData(i,I.noDataValue);Q.data[e]=t?I.nullColor[0]:i[0],Q.data[e+1]=t?I.nullColor[1]:i[1],Q.data[e+2]=t?I.nullColor[2]:i[2],Q.data[e+3]=t?I.nullColor[3]:4===A?C[0][g+3]:a,g+=A}}}else{let A=0;for(let g=0;g<o;g+=4)Q.data[g]=C[0][A],Q.data[g+1]=C[1][A],Q.data[g+2]=C[2][A],Q.data[g+3]=4===C.length?C[3][A]:a,A++}else if(I.useChannelIndex<E&&I.useChannelIndex>=0){const A=1===C.length&&E>1,g=A?C[0]:C[I.useChannelIndex]??C[0],e=A?E:1;I.useAutoRange&&(I.colorScaleValueRange=this.getMinMax(g,I,e)),Q.data.set(this.getColorValue(g,I,o,e))}else{console.log(`Defined channel(${g.useChannel}) or channel index(${g.useChannelIndex}) does not exist, choose a different channel or set the useChannel property to null if you want to visualize RGB(A) imagery`);this.getDefaultColor(o,I.nullColor).forEach((A,g)=>{Q.data[g]=A})}s.putImageData(Q,0,0);return{map:await createImageBitmap(B),raw:C[0],width:e,height:i}}static getColorValue(A,g,I,C=1){const i=e.scale(g.colorScale?.map(A=>Array.isArray(A)?e(A):A)).domain(g.colorScaleValueRange??[0,255]),t=new Uint8ClampedArray(I),B=Math.floor(2.55*(g.alpha??100)),s=g.colorScaleValueRange?.[0]??0,Q=g.colorScaleValueRange?.[1]??255,o=Array.isArray(A),a=o?A[0]:A,E=g.useSwissRelief&&o&&A.length>=2,r=a instanceof Uint8Array||a instanceof Uint8ClampedArray,n=!r&&(a instanceof Float32Array||a instanceof Uint16Array||a instanceof Int16Array);if(E){const e=A[1],o=Q-s||1;let E=null;if(g.useHeatMap){const A=1024,I=`${s}_${Q}_${B}_${JSON.stringify(g.colorScale)}`;if(E=this._swissColorLUTCache.get(I)||null,!E){E=new Uint8ClampedArray(4*A);for(let g=0;g<A;g++){const I=i(s+g/(A-1)*o).rgb();E[4*g]=I[0],E[4*g+1]=I[1],E[4*g+2]=I[2],E[4*g+3]=B}this._swissColorLUTCache.set(I,E)}}for(let A=0,Q=g.useChannelIndex??0;A<I;A+=4,Q+=C){const I=a[Q],C=Lg(I,g.noDataValue);if(Number.isNaN(I)||C){t.set(g.nullColor,A);continue}let r;if(E){const A=(I-s)/o,g=4*Math.min(1023,Math.max(0,Math.floor(1023*A)));r=[E[g],E[g+1],E[g+2],E[g+3]]}else r=this.calculateSingleColor(I,i,g,B);const n=.4+e[Q]/255*.6;t[A]=Math.floor(r[0]*n),t[A+1]=Math.floor(r[1]*n),t[A+2]=Math.floor(r[2]*n),t[A+3]=r[3]}return t}if(r&&!g.useDataForOpacity){const A=g.useAutoRange?null:this.getLUTCacheKey(g,s,Q,B);let e=A?this._8bitLUTCache.get(A)??null:null;if(!e){e=new Uint8ClampedArray(1024);for(let A=0;A<256;A++)null!=g.clipLow&&A<=g.clipLow||null!=g.clipHigh&&A>=g.clipHigh?e.set(g.clippedColor,4*A):e.set(this.calculateSingleColor(A,i,g,B),4*A);A&&this._8bitLUTCache.set(A,e)}for(let A=0,i=g.useChannelIndex??0;A<I;A+=4,i+=C){const g=4*a[i];t[A]=e[g],t[A+1]=e[g+1],t[A+2]=e[g+2],t[A+3]=e[g+3]}return t}if(n&&g.useHeatMap&&!g.useSingleColor&&!g.useColorClasses&&!g.useColorsBasedOnValues&&!g.useDataForOpacity){const A=1024,e=Q-s||1,o=g.useAutoRange?null:this.getLUTCacheKey(g,s,Q,B);let E=o?this._floatLUTCache.get(o)??null:null;if(!E){E=new Uint8ClampedArray(4*A);for(let I=0;I<A;I++){const C=s+I/(A-1)*e;if(null!=g.clipLow&&C<=g.clipLow||null!=g.clipHigh&&C>=g.clipHigh)E.set(g.clippedColor,4*I);else{const A=i(C).rgb();E[4*I]=A[0],E[4*I+1]=A[1],E[4*I+2]=A[2],E[4*I+3]=B}}o&&this._floatLUTCache.set(o,E)}for(let i=0,B=g.useChannelIndex??0;i<I;i+=4,B+=C){const I=a[B];if(this.isInvalid(I,g))t.set(this.getInvalidColor(I,g),i);else{const g=(I-s)/e,C=4*Math.min(A-1,Math.max(0,Math.floor(g*(A-1))));t[i]=E[C],t[i+1]=E[C+1],t[i+2]=E[C+2],t[i+3]=E[C+3]}}return t}let h=g.useChannelIndex??0;for(let A=0;A<I;A+=4){const I=a[h];let e;e=null!=g.clipLow&&I<=g.clipLow||null!=g.clipHigh&&I>=g.clipHigh?g.clippedColor:this.calculateSingleColor(I,i,g,B),g.useDataForOpacity&&!this.isInvalid(I,g)&&(e[3]=Fg(I,s,Q,0,255)),t.set(e,A),h+=C}return t}static getReliefGlazeRGBA(A,g,I){const C=A[0],e=(g.maxGlazeAlpha??128)/255,i=new Uint8Array(256);for(let A=0;A<256;A++)if(0===A)i[A]=0;else{const g=Math.abs(A-128)/128,I=A<128?.6:.8;i[A]=Math.floor(255*Math.pow(g,I)*e)}const t=new Uint8ClampedArray(I);let B=0;for(let A=0;A<I;A+=4){const g=C[B],I=g<128?0:255,e=i[g];t[A]=I,t[A+1]=I,t[A+2]=I,t[A+3]=e,B++}return t}static calculateSingleColor(A,g,I,C){if(this.isInvalid(A,I))return I.nullColor;if(I.useSingleColor)return I.color;if(I.useColorClasses){const g=this.findClassIndex(A,I);return g>-1?[...e(Array.isArray(I.colorClasses[g][0])?e(I.colorClasses[g][0]):I.colorClasses[g][0]).rgb(),C]:I.unidentifiedColor}if(I.useColorsBasedOnValues){const g=I.colorsBasedOnValues?.find(([g])=>g===A);return g?[...e(Array.isArray(g[1])?e(g[1]):g[1]).rgb(),C]:I.unidentifiedColor}return I.useHeatMap?[...g(A).rgb(),C]:I.unidentifiedColor}static findClassIndex(A,g){if(!g.colorClasses)return-1;for(let I=0;I<g.colorClasses.length;I++){const[,[C,e],i]=g.colorClasses[I],[t,B]=i||(I===g.colorClasses.length-1?[!0,!0]:[!0,!1]);if((t?A>=C:A>C)&&(B?A<=e:A<e))return I}return-1}static getDefaultColor(A,g){const I=new Uint8ClampedArray(A);for(let C=0;C<A;C+=4)[I[C],I[C+1],I[C+2],I[C+3]]=g;return I}static isInvalid(A,g){return Number.isNaN(A)||Lg(A,g.noDataValue)}static getInvalidColor(A,g){return g.nullColor}static getMinMax(A,g,I=1){let C=-1/0,e=1/0;for(let i=g.useChannelIndex??0;i<A.length;i+=I){const I=A[i];this.isInvalid(I,g)||(I>C&&(C=I),I<e&&(e=I))}return C===-1/0?g.colorScaleValueRange||[0,255]:[e,C]}static getColorFromChromaType(A,g=255){return Array.isArray(A)&&4===A.length?A:[...e(A).rgb(),g]}static hasPixelsNoData(A,g){return void 0!==g&&A.every(A=>Lg(A,g))}}class Ug{static computeGradients(A,g,I,C,e,i,t,B,s,Q=!0){return{dzdx:(I+2*e+B-(A+2*C+i))*s,dzdy:Q?(A+2*g+I-(i+2*t+B))*s:(i+2*t+B-(A+2*g+I))*s}}static calculateSlope(A,g,I=1,C){const e=256,i=258,t=new Float32Array(65536),B=1/(8*g),s=180/Math.PI;for(let g=0;g<e;g++)for(let Q=0;Q<e;Q++){const o=g*i+Q;if(Lg(A[o+i+1],C)){t[g*e+Q]=NaN;continue}const a=A[o],E=A[o+1],r=A[o+2],n=A[o+i],h=A[o+i+2],l=A[o+516],c=A[o+516+1],w=A[o+516+2],{dzdx:D,dzdy:d}=this.computeGradients(a,E,r,n,h,l,c,w,B,!1),y=Math.atan(I*Math.sqrt(D*D+d*d));t[g*e+Q]=y*s}return t}static calculateHillshade(A,g,I=315,C=45,e=1,i){const t=256,B=258,s=new Float32Array(65536),Q=(90-C)*(Math.PI/180);let o=360-I+90;o>=360&&(o-=360);const a=o*(Math.PI/180),E=1/(8*g);for(let g=0;g<t;g++)for(let I=0;I<t;I++){const C=g*B+I;if(Lg(A[C+B+1],i)){s[g*t+I]=NaN;continue}const o=A[C],r=A[C+1],n=A[C+2],h=A[C+B],l=A[C+B+2],c=A[C+516],w=A[C+516+1],D=A[C+516+2],{dzdx:d,dzdy:y}=this.computeGradients(o,r,n,h,l,c,w,D,E,!0),G=Math.atan(e*Math.sqrt(d*d+y*y)),u=Math.atan2(y,-d),S=255*(Math.cos(Q)*Math.cos(G)+Math.sin(Q)*Math.sin(G)*Math.cos(a-u));s[g*t+I]=Math.max(0,Math.min(255,S))}return s}static calculateMultiHillshade(A,g,I=1,C){const e=256,i=258,t=new Float32Array(65536),B=1/(8*g),s=[{az:315,alt:45,weight:.6},{az:225,alt:35,weight:.25},{az:0,alt:35,weight:.15}].map(A=>{const g=(90-A.alt)*(Math.PI/180);let I=360-A.az+90;return I>=360&&(I-=360),{zCos:Math.cos(g),zSin:Math.sin(g),aRad:I*(Math.PI/180),w:A.weight}});for(let g=0;g<e;g++)for(let Q=0;Q<e;Q++){const o=g*i+Q;if(Lg(A[o+i+1],C)){t[g*e+Q]=NaN;continue}const a=A[o],E=A[o+1],r=A[o+2],n=A[o+i],h=A[o+i+2],l=A[o+516],c=A[o+516+1],w=A[o+516+2],{dzdx:D,dzdy:d}=this.computeGradients(a,E,r,n,h,l,c,w,B,!0),y=Math.atan(I*Math.sqrt(D*D+d*d)),G=Math.atan2(d,-D),u=Math.cos(y),S=Math.sin(y);let f=0;for(const A of s){const g=A.zCos*u+A.zSin*S*Math.cos(A.aRad-G);f+=Math.max(0,g)*A.w}t[g*e+Q]=Math.min(255,255*f)}return t}}class mg{static _swissReliefLUT=null;static _lastWeight=null;static getSwissReliefLUT(A=.5){if(this._swissReliefLUT&&this._lastWeight===A)return this._swissReliefLUT;const g=new Float32Array(65536);for(let I=0;I<256;I++){const C=I/255;for(let e=0;e<256;e++){const i=1-e/255*A;g[I<<8|e]=Math.max(.01,C*i)}}return this._swissReliefLUT=g,this._lastWeight=A,g}static composeSwissRelief(A,g,I,C,e){const i=g.swissSlopeWeight??.5,t=Ug.calculateSlope(A,I,g.zFactor??1,g.noDataValue),B=Ug.calculateMultiHillshade(A,I,g.zFactor??1,g.noDataValue),s=this.getSwissReliefLUT(i),Q=new Uint8ClampedArray(C*e),o=255/90;for(let A=0;A<C*e;A++){if(isNaN(t[A])){Q[A]=0;continue}const g=Math.max(0,Math.min(255,t[A]*o|0)),I=0|Math.max(0,Math.min(255,B[A]));Q[A]=Math.max(1,255*s[I<<8|g]|0)}return Q}}class Mg{static async generate(A,g,I,C,e){const{width:t,height:B}=A,s=258===t,Q=this.computeTerrainData(A,g);let o=s?this.extractMeshRaster(Q):Q;const a=s?257:t,E=s?257:B,{terrainSkirtHeight:r,verticalExaggeration:n=1}=g;let h,l;if(C){const A=await C.computeMesh({terrain:o,meshMaxError:I,tesselator:g.tesselator||"martini",width:a,height:E,signal:e});h={vertices:A.vertices,triangles:A.triangles},l=A.terrain,o=A.terrain}else{switch(g.tesselator){case"martini":default:h=this.getMartiniTileMesh(I,a,o);break;case"delatin":h=this.getDelatinTileMesh(I,a,E,o)}l=o}const{vertices:c}=h;let{triangles:w}=h,D=this.getMeshAttributes(c,l,a,E,A.bounds,n);const d=i.getMeshBoundingBox(D);if(r){const A=r*n;if(A>0){const{attributes:g,triangles:I}=kg(D,w,A);D=g,w=I}}const y=257===a?257:a+1,G=257===E?257:E+1,u={map:{loaderData:{header:{}},header:{vertexCount:w.length,boundingBox:d},mode:4,indices:{value:Uint32Array.from(w),size:1},attributes:D},raw:o,width:y,height:G},S=!!g.skipTexture;if(s&&g.useSwissRelief){const I=A.cellSizeMeters??(A.bounds[2]-A.bounds[0])/256,C=this.preserveNoDataForKernel(Q,A.rasters[0],g.noDataValue),e=mg.composeSwissRelief(C,g,I,256,256);if(u.rawDerived=e,!S&&this.hasVisualizationOptions(g)){const A=this.cropRaster(o,y,G,256,256),I=await Yg.generate({width:256,height:256,rasters:[A,e]},{...g,type:"image"});u.texture=I.map}}else if(s&&(g.useSlope||g.useHillshade)){const I=A.cellSizeMeters??(A.bounds[2]-A.bounds[0])/256,C=g.zFactor??1;g.useSlope&&g.useHillshade&&console.warn("[TerrainGenerator] useSlope and useHillshade are mutually exclusive; useSlope takes precedence.");const e=this.preserveNoDataForKernel(Q,A.rasters[0],g.noDataValue);let i;if(i=g.useSlope?Ug.calculateSlope(e,I,C,g.noDataValue):Ug.calculateHillshade(e,I,g.hillshadeAzimuth??315,g.hillshadeAltitude??45,C,g.noDataValue),u.rawDerived=i,!S&&this.hasVisualizationOptions(g)){const A=await Yg.generate({width:256,height:256,rasters:[i]},{...g,type:"image"});u.texture=A.map}}else if(!S&&this.hasVisualizationOptions(g)){const I=g.multiplier??1,C=g.noDataValue,e=A.rasters[0],i=A.width,t=A.height,B=Math.max(1,Math.round(e.length/(i*t))),s=g.useChannelIndex??(null!=g.useChannel?g.useChannel-1:0),Q=new Float32Array(65536);for(let A=0;A<256;A++)for(let g=0;g<256;g++){const o=Math.min(g,i-1),a=e[(Math.min(A,t-1)*i+o)*B+s],E=Lg(a,C);Q[256*A+g]=E?C*I:a*I}const o={...g,type:"image",useChannelIndex:0,numOfChannels:1,noDataValue:void 0!==C?C*I:void 0},a=await Yg.generate({width:256,height:256,rasters:[Q]},o);u.texture=a.map}return u}static extractMeshRaster(A){const g=257,I=new Float32Array(66049);for(let C=0;C<g;C++)for(let e=0;e<g;e++)I[C*g+e]=A[258*(C+1)+(e+1)];return I}static hasVisualizationOptions(A){return!!(A.useSingleColor||A.useHeatMap||A.useSwissRelief||A.useColorsBasedOnValues||A.useColorClasses)}static preserveNoDataForKernel(A,g,I){const C=new Float32Array(A.length);if(null!=I&&g&&g.length===A.length)for(let e=0;e<A.length;e++){const i=Lg(g[e],I);C[e]=i?I:A[e]}else C.set(A);return C}static cropRaster(A,g,I,C,e){const i=new Float32Array(C*e);for(let I=0;I<e;I++)for(let e=0;e<C;e++)i[I*C+e]=A[I*g+e];return i}static computeTerrainData(A,g){const{width:I,height:C,rasters:e}=A,i={...g};i.useChannelIndex??=null==i.useChannel?null:i.useChannel-1;const t=e.length>1,B=t?e[i.useChannelIndex??0]??e[0]:e[0],s=258===I,Q=257===I,o=new Float32Array((s?258:Q?257:I+1)*(s?258:Q?257:C+1)),a=t?1:B.length/(I*C);let E=t?0:i.useChannelIndex??0;const r=g.terrainMinValue??0;for(let A=0;A<C;A++)for(let C=0;C<I;C++){const e=g.multiplier??1;let i=Lg(B[E],g.noDataValue)?r:B[E]*e;(Number.isNaN(i)||i<-34e37||i>34e37)&&(i=r);o[s||Q?A*I+C:A*(I+1)+C]=i,E+=a}if(!s&&!Q){for(let A=(I+1)*I,g=0;g<I;g++,A++)o[A]=o[A-I-1];for(let A=C,g=0;g<C+1;g++,A+=C+1)o[A]=o[A-1]}return o}static getMartiniTileMesh(A,g,I){const C=new ug(257===g?257:g+1).createTile(I),{vertices:e,triangles:i}=C.getMesh(A);return{vertices:e,triangles:i}}static getDelatinTileMesh(A,g,I,C){const e=new Ng(C,257===g?257:g+1,257===I?257:I+1);e.run(A);const{coords:i,triangles:t}=e;return{vertices:i,triangles:t}}static getMeshAttributes(A,g,I,C,e,i=1){const t=257===I?257:I+1,B=A.length/2,s=new Float32Array(3*B),Q=new Float32Array(2*B),[o,a,E,r]=e||[0,0,I,C],n=257===I?I-1:I,h=257===C?C-1:C,l=(E-o)/n,c=(r-a)/h;for(let I=0;I<B;I++){const C=A[2*I],e=A[2*I+1],B=e*t+C;s[3*I]=C*l+o,s[3*I+1]=-e*c+r,s[3*I+2]=g[B]*i,Q[2*I]=C/n,Q[2*I+1]=e/h}return{POSITION:{value:s,size:3},TEXCOORD_0:{value:Q,size:2}}}}class bg{data;async setUrl(A){const g=await fetch(A),I=await g.arrayBuffer(),C=await yg(I),e=await C.getImage(0);this.data=e}async getMap(A,g,I,C,e){const i=bg.resolveVisualizationMode({...Gg,...g},g);switch(i.type){case"image":return this.getBitmap(A,i);case"terrain":return this.getHeightmap(A,i,I,C,e);default:return null}}static resolveVisualizationMode(A,g){const I=["useSingleColor","useColorClasses","useColorsBasedOnValues","useHeatMap"],C=I.filter(A=>!0===g[A]),e={...A};if(C.length>0){for(const A of I)e[A]=!1;for(const A of C)e[A]=!0}else if("terrain"===A.type){(g.useSwissRelief||g.useSlope||g.useHillshade)&&!A.skipTexture||(e.useHeatMap=!1,e.useSingleColor=!0,e.color=A.terrainColor)}return e}async getHeightmap(A,g,I,C,e){let i,t,B,s,Q=[];return"string"==typeof A?(await this.setUrl(A),Q=await this.data.readRasters(),i=this.data.getWidth(),t=this.data.getHeight(),B=this.data.getBoundingBox()):(Q=A.rasters,i=A.width,t=A.height,B=A.bounds,s=A.cellSizeMeters),await Mg.generate({width:i,height:t,rasters:Q,bounds:B,cellSizeMeters:s},g,I,C,e)}async getBitmap(A,g){let I,C,e=[];return"string"==typeof A?(await this.setUrl(A),e=await this.data.readRasters(),I=this.data.getWidth(),C=this.data.getHeight()):(e=A.rasters,I=A.width,C=A.height),Yg.generate({width:I,height:C,rasters:e},g)}}function Kg(A,g,I){var C=function(A){return atob(A)}(A),e=C.indexOf("\n",10)+1,i=C.substring(e)+"",t=new Blob([i],{type:"application/javascript"});return URL.createObjectURL(t)}function Hg(A,g,I){var C;return function(g){return C=C||Kg(A),new Worker(C,g)}}var Jg=Hg("Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwooZnVuY3Rpb24gKCkgewogICAgJ3VzZSBzdHJpY3QnOwoKICAgIGNsYXNzIE1hcnRpbmkgewogICAgICAgIGNvbnN0cnVjdG9yKGdyaWRTaXplID0gMjU3KSB7CiAgICAgICAgICAgIHRoaXMuZ3JpZFNpemUgPSBncmlkU2l6ZTsKICAgICAgICAgICAgY29uc3QgdGlsZVNpemUgPSBncmlkU2l6ZSAtIDE7CiAgICAgICAgICAgIGlmICh0aWxlU2l6ZSAmICh0aWxlU2l6ZSAtIDEpKSB0aHJvdyBuZXcgRXJyb3IoCiAgICAgICAgICAgICAgICBgRXhwZWN0ZWQgZ3JpZCBzaXplIHRvIGJlIDJebisxLCBnb3QgJHtncmlkU2l6ZX0uYCk7CgogICAgICAgICAgICB0aGlzLm51bVRyaWFuZ2xlcyA9IHRpbGVTaXplICogdGlsZVNpemUgKiAyIC0gMjsKICAgICAgICAgICAgdGhpcy5udW1QYXJlbnRUcmlhbmdsZXMgPSB0aGlzLm51bVRyaWFuZ2xlcyAtIHRpbGVTaXplICogdGlsZVNpemU7CgogICAgICAgICAgICB0aGlzLmluZGljZXMgPSBuZXcgVWludDMyQXJyYXkodGhpcy5ncmlkU2l6ZSAqIHRoaXMuZ3JpZFNpemUpOwoKICAgICAgICAgICAgLy8gY29vcmRpbmF0ZXMgZm9yIGFsbCBwb3NzaWJsZSB0cmlhbmdsZXMgaW4gYW4gUlRJTiB0aWxlCiAgICAgICAgICAgIHRoaXMuY29vcmRzID0gbmV3IFVpbnQxNkFycmF5KHRoaXMubnVtVHJpYW5nbGVzICogNCk7CgogICAgICAgICAgICAvLyBnZXQgdHJpYW5nbGUgY29vcmRpbmF0ZXMgZnJvbSBpdHMgaW5kZXggaW4gYW4gaW1wbGljaXQgYmluYXJ5IHRyZWUKICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm51bVRyaWFuZ2xlczsgaSsrKSB7CiAgICAgICAgICAgICAgICBsZXQgaWQgPSBpICsgMjsKICAgICAgICAgICAgICAgIGxldCBheCA9IDAsIGF5ID0gMCwgYnggPSAwLCBieSA9IDAsIGN4ID0gMCwgY3kgPSAwOwogICAgICAgICAgICAgICAgaWYgKGlkICYgMSkgewogICAgICAgICAgICAgICAgICAgIGJ4ID0gYnkgPSBjeCA9IHRpbGVTaXplOyAvLyBib3R0b20tbGVmdCB0cmlhbmdsZQogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBheCA9IGF5ID0gY3kgPSB0aWxlU2l6ZTsgLy8gdG9wLXJpZ2h0IHRyaWFuZ2xlCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB3aGlsZSAoKGlkID4+PSAxKSA+IDEpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBteCA9IChheCArIGJ4KSA+PiAxOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IG15ID0gKGF5ICsgYnkpID4+IDE7CgogICAgICAgICAgICAgICAgICAgIGlmIChpZCAmIDEpIHsgLy8gbGVmdCBoYWxmCiAgICAgICAgICAgICAgICAgICAgICAgIGJ4ID0gYXg7IGJ5ID0gYXk7CiAgICAgICAgICAgICAgICAgICAgICAgIGF4ID0gY3g7IGF5ID0gY3k7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsgLy8gcmlnaHQgaGFsZgogICAgICAgICAgICAgICAgICAgICAgICBheCA9IGJ4OyBheSA9IGJ5OwogICAgICAgICAgICAgICAgICAgICAgICBieCA9IGN4OyBieSA9IGN5OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBjeCA9IG14OyBjeSA9IG15OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY29uc3QgayA9IGkgKiA0OwogICAgICAgICAgICAgICAgdGhpcy5jb29yZHNbayArIDBdID0gYXg7CiAgICAgICAgICAgICAgICB0aGlzLmNvb3Jkc1trICsgMV0gPSBheTsKICAgICAgICAgICAgICAgIHRoaXMuY29vcmRzW2sgKyAyXSA9IGJ4OwogICAgICAgICAgICAgICAgdGhpcy5jb29yZHNbayArIDNdID0gYnk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGNyZWF0ZVRpbGUodGVycmFpbikgewogICAgICAgICAgICByZXR1cm4gbmV3IFRpbGUodGVycmFpbiwgdGhpcyk7CiAgICAgICAgfQogICAgfQoKICAgIGNsYXNzIFRpbGUgewogICAgICAgIGNvbnN0cnVjdG9yKHRlcnJhaW4sIG1hcnRpbmkpIHsKICAgICAgICAgICAgY29uc3Qgc2l6ZSA9IG1hcnRpbmkuZ3JpZFNpemU7CiAgICAgICAgICAgIGlmICh0ZXJyYWluLmxlbmd0aCAhPT0gc2l6ZSAqIHNpemUpIHRocm93IG5ldyBFcnJvcigKICAgICAgICAgICAgICAgIGBFeHBlY3RlZCB0ZXJyYWluIGRhdGEgb2YgbGVuZ3RoICR7c2l6ZSAqIHNpemV9ICgke3NpemV9IHggJHtzaXplfSksIGdvdCAke3RlcnJhaW4ubGVuZ3RofS5gKTsKCiAgICAgICAgICAgIHRoaXMudGVycmFpbiA9IHRlcnJhaW47CiAgICAgICAgICAgIHRoaXMubWFydGluaSA9IG1hcnRpbmk7CiAgICAgICAgICAgIHRoaXMuZXJyb3JzID0gbmV3IEZsb2F0MzJBcnJheSh0ZXJyYWluLmxlbmd0aCk7CiAgICAgICAgICAgIHRoaXMudXBkYXRlKCk7CiAgICAgICAgfQoKICAgICAgICB1cGRhdGUoKSB7CiAgICAgICAgICAgIGNvbnN0IHtudW1UcmlhbmdsZXMsIG51bVBhcmVudFRyaWFuZ2xlcywgY29vcmRzLCBncmlkU2l6ZTogc2l6ZX0gPSB0aGlzLm1hcnRpbmk7CiAgICAgICAgICAgIGNvbnN0IHt0ZXJyYWluLCBlcnJvcnN9ID0gdGhpczsKCiAgICAgICAgICAgIC8vIGl0ZXJhdGUgb3ZlciBhbGwgcG9zc2libGUgdHJpYW5nbGVzLCBzdGFydGluZyBmcm9tIHRoZSBzbWFsbGVzdCBsZXZlbAogICAgICAgICAgICBmb3IgKGxldCBpID0gbnVtVHJpYW5nbGVzIC0gMTsgaSA+PSAwOyBpLS0pIHsKICAgICAgICAgICAgICAgIGNvbnN0IGsgPSBpICogNDsKICAgICAgICAgICAgICAgIGNvbnN0IGF4ID0gY29vcmRzW2sgKyAwXTsKICAgICAgICAgICAgICAgIGNvbnN0IGF5ID0gY29vcmRzW2sgKyAxXTsKICAgICAgICAgICAgICAgIGNvbnN0IGJ4ID0gY29vcmRzW2sgKyAyXTsKICAgICAgICAgICAgICAgIGNvbnN0IGJ5ID0gY29vcmRzW2sgKyAzXTsKICAgICAgICAgICAgICAgIGNvbnN0IG14ID0gKGF4ICsgYngpID4+IDE7CiAgICAgICAgICAgICAgICBjb25zdCBteSA9IChheSArIGJ5KSA+PiAxOwogICAgICAgICAgICAgICAgY29uc3QgY3ggPSBteCArIG15IC0gYXk7CiAgICAgICAgICAgICAgICBjb25zdCBjeSA9IG15ICsgYXggLSBteDsKCiAgICAgICAgICAgICAgICAvLyBjYWxjdWxhdGUgZXJyb3IgaW4gdGhlIG1pZGRsZSBvZiB0aGUgbG9uZyBlZGdlIG9mIHRoZSB0cmlhbmdsZQogICAgICAgICAgICAgICAgY29uc3QgaW50ZXJwb2xhdGVkSGVpZ2h0ID0gKHRlcnJhaW5bYXkgKiBzaXplICsgYXhdICsgdGVycmFpbltieSAqIHNpemUgKyBieF0pIC8gMjsKICAgICAgICAgICAgICAgIGNvbnN0IG1pZGRsZUluZGV4ID0gbXkgKiBzaXplICsgbXg7CiAgICAgICAgICAgICAgICBjb25zdCBtaWRkbGVFcnJvciA9IE1hdGguYWJzKGludGVycG9sYXRlZEhlaWdodCAtIHRlcnJhaW5bbWlkZGxlSW5kZXhdKTsKCiAgICAgICAgICAgICAgICBlcnJvcnNbbWlkZGxlSW5kZXhdID0gTWF0aC5tYXgoZXJyb3JzW21pZGRsZUluZGV4XSwgbWlkZGxlRXJyb3IpOwoKICAgICAgICAgICAgICAgIGlmIChpIDwgbnVtUGFyZW50VHJpYW5nbGVzKSB7IC8vIGJpZ2dlciB0cmlhbmdsZXM7IGFjY3VtdWxhdGUgZXJyb3Igd2l0aCBjaGlsZHJlbgogICAgICAgICAgICAgICAgICAgIGNvbnN0IGxlZnRDaGlsZEluZGV4ID0gKChheSArIGN5KSA+PiAxKSAqIHNpemUgKyAoKGF4ICsgY3gpID4+IDEpOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJpZ2h0Q2hpbGRJbmRleCA9ICgoYnkgKyBjeSkgPj4gMSkgKiBzaXplICsgKChieCArIGN4KSA+PiAxKTsKICAgICAgICAgICAgICAgICAgICBlcnJvcnNbbWlkZGxlSW5kZXhdID0gTWF0aC5tYXgoZXJyb3JzW21pZGRsZUluZGV4XSwgZXJyb3JzW2xlZnRDaGlsZEluZGV4XSwgZXJyb3JzW3JpZ2h0Q2hpbGRJbmRleF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBnZXRNZXNoKG1heEVycm9yID0gMCkgewogICAgICAgICAgICBjb25zdCB7Z3JpZFNpemU6IHNpemUsIGluZGljZXN9ID0gdGhpcy5tYXJ0aW5pOwogICAgICAgICAgICBjb25zdCB7ZXJyb3JzfSA9IHRoaXM7CiAgICAgICAgICAgIGxldCBudW1WZXJ0aWNlcyA9IDA7CiAgICAgICAgICAgIGxldCBudW1UcmlhbmdsZXMgPSAwOwogICAgICAgICAgICBjb25zdCBtYXggPSBzaXplIC0gMTsKCiAgICAgICAgICAgIC8vIHVzZSBhbiBpbmRleCBncmlkIHRvIGtlZXAgdHJhY2sgb2YgdmVydGljZXMgdGhhdCB3ZXJlIGFscmVhZHkgdXNlZCB0byBhdm9pZCBkdXBsaWNhdGlvbgogICAgICAgICAgICBpbmRpY2VzLmZpbGwoMCk7CgogICAgICAgICAgICAvLyByZXRyaWV2ZSBtZXNoIGluIHR3byBzdGFnZXMgdGhhdCBib3RoIHRyYXZlcnNlIHRoZSBlcnJvciBtYXA6CiAgICAgICAgICAgIC8vIC0gY291bnRFbGVtZW50czogZmluZCB1c2VkIHZlcnRpY2VzIChhbmQgYXNzaWduIGVhY2ggYW4gaW5kZXgpLCBhbmQgY291bnQgdHJpYW5nbGVzIChmb3IgbWluaW11bSBhbGxvY2F0aW9uKQogICAgICAgICAgICAvLyAtIHByb2Nlc3NUcmlhbmdsZTogZmlsbCB0aGUgYWxsb2NhdGVkIHZlcnRpY2VzICYgdHJpYW5nbGVzIHR5cGVkIGFycmF5cwoKICAgICAgICAgICAgZnVuY3Rpb24gY291bnRFbGVtZW50cyhheCwgYXksIGJ4LCBieSwgY3gsIGN5KSB7CiAgICAgICAgICAgICAgICBjb25zdCBteCA9IChheCArIGJ4KSA+PiAxOwogICAgICAgICAgICAgICAgY29uc3QgbXkgPSAoYXkgKyBieSkgPj4gMTsKCiAgICAgICAgICAgICAgICBpZiAoTWF0aC5hYnMoYXggLSBjeCkgKyBNYXRoLmFicyhheSAtIGN5KSA+IDEgJiYgZXJyb3JzW215ICogc2l6ZSArIG14XSA+IG1heEVycm9yKSB7CiAgICAgICAgICAgICAgICAgICAgY291bnRFbGVtZW50cyhjeCwgY3ksIGF4LCBheSwgbXgsIG15KTsKICAgICAgICAgICAgICAgICAgICBjb3VudEVsZW1lbnRzKGJ4LCBieSwgY3gsIGN5LCBteCwgbXkpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBpbmRpY2VzW2F5ICogc2l6ZSArIGF4XSA9IGluZGljZXNbYXkgKiBzaXplICsgYXhdIHx8ICsrbnVtVmVydGljZXM7CiAgICAgICAgICAgICAgICAgICAgaW5kaWNlc1tieSAqIHNpemUgKyBieF0gPSBpbmRpY2VzW2J5ICogc2l6ZSArIGJ4XSB8fCArK251bVZlcnRpY2VzOwogICAgICAgICAgICAgICAgICAgIGluZGljZXNbY3kgKiBzaXplICsgY3hdID0gaW5kaWNlc1tjeSAqIHNpemUgKyBjeF0gfHwgKytudW1WZXJ0aWNlczsKICAgICAgICAgICAgICAgICAgICBudW1UcmlhbmdsZXMrKzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBjb3VudEVsZW1lbnRzKDAsIDAsIG1heCwgbWF4LCBtYXgsIDApOwogICAgICAgICAgICBjb3VudEVsZW1lbnRzKG1heCwgbWF4LCAwLCAwLCAwLCBtYXgpOwoKICAgICAgICAgICAgY29uc3QgdmVydGljZXMgPSBuZXcgVWludDE2QXJyYXkobnVtVmVydGljZXMgKiAyKTsKICAgICAgICAgICAgY29uc3QgdHJpYW5nbGVzID0gbmV3IFVpbnQzMkFycmF5KG51bVRyaWFuZ2xlcyAqIDMpOwogICAgICAgICAgICBsZXQgdHJpSW5kZXggPSAwOwoKICAgICAgICAgICAgZnVuY3Rpb24gcHJvY2Vzc1RyaWFuZ2xlKGF4LCBheSwgYngsIGJ5LCBjeCwgY3kpIHsKICAgICAgICAgICAgICAgIGNvbnN0IG14ID0gKGF4ICsgYngpID4+IDE7CiAgICAgICAgICAgICAgICBjb25zdCBteSA9IChheSArIGJ5KSA+PiAxOwoKICAgICAgICAgICAgICAgIGlmIChNYXRoLmFicyhheCAtIGN4KSArIE1hdGguYWJzKGF5IC0gY3kpID4gMSAmJiBlcnJvcnNbbXkgKiBzaXplICsgbXhdID4gbWF4RXJyb3IpIHsKICAgICAgICAgICAgICAgICAgICAvLyB0cmlhbmdsZSBkb2Vzbid0IGFwcHJveGltYXRlIHRoZSBzdXJmYWNlIHdlbGwgZW5vdWdoOyBkcmlsbCBkb3duIGZ1cnRoZXIKICAgICAgICAgICAgICAgICAgICBwcm9jZXNzVHJpYW5nbGUoY3gsIGN5LCBheCwgYXksIG14LCBteSk7CiAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc1RyaWFuZ2xlKGJ4LCBieSwgY3gsIGN5LCBteCwgbXkpOwoKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgLy8gYWRkIGEgdHJpYW5nbGUKICAgICAgICAgICAgICAgICAgICBjb25zdCBhID0gaW5kaWNlc1theSAqIHNpemUgKyBheF0gLSAxOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IGIgPSBpbmRpY2VzW2J5ICogc2l6ZSArIGJ4XSAtIDE7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgYyA9IGluZGljZXNbY3kgKiBzaXplICsgY3hdIC0gMTsKCiAgICAgICAgICAgICAgICAgICAgdmVydGljZXNbMiAqIGFdID0gYXg7CiAgICAgICAgICAgICAgICAgICAgdmVydGljZXNbMiAqIGEgKyAxXSA9IGF5OwoKICAgICAgICAgICAgICAgICAgICB2ZXJ0aWNlc1syICogYl0gPSBieDsKICAgICAgICAgICAgICAgICAgICB2ZXJ0aWNlc1syICogYiArIDFdID0gYnk7CgogICAgICAgICAgICAgICAgICAgIHZlcnRpY2VzWzIgKiBjXSA9IGN4OwogICAgICAgICAgICAgICAgICAgIHZlcnRpY2VzWzIgKiBjICsgMV0gPSBjeTsKCiAgICAgICAgICAgICAgICAgICAgdHJpYW5nbGVzW3RyaUluZGV4KytdID0gYTsKICAgICAgICAgICAgICAgICAgICB0cmlhbmdsZXNbdHJpSW5kZXgrK10gPSBiOwogICAgICAgICAgICAgICAgICAgIHRyaWFuZ2xlc1t0cmlJbmRleCsrXSA9IGM7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcHJvY2Vzc1RyaWFuZ2xlKDAsIDAsIG1heCwgbWF4LCBtYXgsIDApOwogICAgICAgICAgICBwcm9jZXNzVHJpYW5nbGUobWF4LCBtYXgsIDAsIDAsIDAsIG1heCk7CgogICAgICAgICAgICByZXR1cm4ge3ZlcnRpY2VzLCB0cmlhbmdsZXN9OwogICAgICAgIH0KICAgIH0KCiAgICAvLyBsb2FkZXJzLmdsCiAgICAvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUCiAgICAvLyBDb3B5cmlnaHQgKGMpIHZpcy5nbCBjb250cmlidXRvcnMKICAgIC8vIElTQyBMaWNlbnNlCiAgICAvLyBDb3B5cmlnaHQoYykgMjAxOSwgTWljaGFlbCBGb2dsZW1hbiwgVmxhZGltaXIgQWdhZm9ua2luCiAgICAvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnQgKi8KICAgIC8vIEB0cy1ub2NoZWNrCiAgICAvKiBlc2xpbnQtZW5hYmxlIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudCAqLwogICAgZnVuY3Rpb24gb3JpZW50KGF4LCBheSwgYngsIGJ5LCBjeCwgY3kpIHsKICAgICAgICByZXR1cm4gKGJ4IC0gY3gpICogKGF5IC0gY3kpIC0gKGJ5IC0gY3kpICogKGF4IC0gY3gpOwogICAgfQogICAgY2xhc3MgRGVsYXRpbiB7CiAgICAgICAgY29uc3RydWN0b3IoZGF0YSwgd2lkdGgsIGhlaWdodCA9IHdpZHRoKSB7CiAgICAgICAgICAgIHRoaXMuZGF0YSA9IGRhdGE7IC8vIGhlaWdodCBkYXRhCiAgICAgICAgICAgIHRoaXMud2lkdGggPSB3aWR0aDsKICAgICAgICAgICAgdGhpcy5oZWlnaHQgPSBoZWlnaHQ7CiAgICAgICAgICAgIHRoaXMuY29vcmRzID0gW107IC8vIHZlcnRleCBjb29yZGluYXRlcyAoeCwgeSkKICAgICAgICAgICAgdGhpcy50cmlhbmdsZXMgPSBbXTsgLy8gbWVzaCB0cmlhbmdsZSBpbmRpY2VzCiAgICAgICAgICAgIC8vIGFkZGl0aW9uYWwgdHJpYW5nbGUgZGF0YQogICAgICAgICAgICB0aGlzLl9oYWxmZWRnZXMgPSBbXTsKICAgICAgICAgICAgdGhpcy5fY2FuZGlkYXRlcyA9IFtdOwogICAgICAgICAgICB0aGlzLl9xdWV1ZUluZGljZXMgPSBbXTsKICAgICAgICAgICAgdGhpcy5fcXVldWUgPSBbXTsgLy8gcXVldWUgb2YgYWRkZWQgdHJpYW5nbGVzCiAgICAgICAgICAgIHRoaXMuX2Vycm9ycyA9IFtdOwogICAgICAgICAgICB0aGlzLl9ybXMgPSBbXTsKICAgICAgICAgICAgdGhpcy5fcGVuZGluZyA9IFtdOyAvLyB0cmlhbmdsZXMgcGVuZGluZyBhZGRpdGlvbiB0byBxdWV1ZQogICAgICAgICAgICB0aGlzLl9wZW5kaW5nTGVuID0gMDsKICAgICAgICAgICAgdGhpcy5fcm1zU3VtID0gMDsKICAgICAgICAgICAgY29uc3QgeDEgPSB3aWR0aCAtIDE7CiAgICAgICAgICAgIGNvbnN0IHkxID0gaGVpZ2h0IC0gMTsKICAgICAgICAgICAgY29uc3QgcDAgPSB0aGlzLl9hZGRQb2ludCgwLCAwKTsKICAgICAgICAgICAgY29uc3QgcDEgPSB0aGlzLl9hZGRQb2ludCh4MSwgMCk7CiAgICAgICAgICAgIGNvbnN0IHAyID0gdGhpcy5fYWRkUG9pbnQoMCwgeTEpOwogICAgICAgICAgICBjb25zdCBwMyA9IHRoaXMuX2FkZFBvaW50KHgxLCB5MSk7CiAgICAgICAgICAgIC8vIGFkZCBpbml0aWFsIHR3byB0cmlhbmdsZXMKICAgICAgICAgICAgY29uc3QgdDAgPSB0aGlzLl9hZGRUcmlhbmdsZShwMywgcDAsIHAyLCAtMSwgLTEsIC0xKTsKICAgICAgICAgICAgdGhpcy5fYWRkVHJpYW5nbGUocDAsIHAzLCBwMSwgdDAsIC0xLCAtMSk7CiAgICAgICAgICAgIHRoaXMuX2ZsdXNoKCk7CiAgICAgICAgfQogICAgICAgIC8vIHJlZmluZSB0aGUgbWVzaCB1bnRpbCBpdHMgbWF4aW11bSBlcnJvciBnZXRzIGJlbG93IHRoZSBnaXZlbiBvbmUKICAgICAgICBydW4obWF4RXJyb3IgPSAxKSB7CiAgICAgICAgICAgIHdoaWxlICh0aGlzLmdldE1heEVycm9yKCkgPiBtYXhFcnJvcikgewogICAgICAgICAgICAgICAgdGhpcy5yZWZpbmUoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAvLyByZWZpbmUgdGhlIG1lc2ggd2l0aCBhIHNpbmdsZSBwb2ludAogICAgICAgIHJlZmluZSgpIHsKICAgICAgICAgICAgdGhpcy5fc3RlcCgpOwogICAgICAgICAgICB0aGlzLl9mbHVzaCgpOwogICAgICAgIH0KICAgICAgICAvLyBtYXggZXJyb3Igb2YgdGhlIGN1cnJlbnQgbWVzaAogICAgICAgIGdldE1heEVycm9yKCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5fZXJyb3JzWzBdOwogICAgICAgIH0KICAgICAgICAvLyByb290LW1lYW4tc3F1YXJlIGRldmlhdGlvbiBvZiB0aGUgY3VycmVudCBtZXNoCiAgICAgICAgZ2V0Uk1TRCgpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Jtc1N1bSA+IDAgPyBNYXRoLnNxcnQodGhpcy5fcm1zU3VtIC8gKHRoaXMud2lkdGggKiB0aGlzLmhlaWdodCkpIDogMDsKICAgICAgICB9CiAgICAgICAgLy8gaGVpZ2h0IHZhbHVlIGF0IGEgZ2l2ZW4gcG9zaXRpb24KICAgICAgICBoZWlnaHRBdCh4LCB5KSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLmRhdGFbdGhpcy53aWR0aCAqIHkgKyB4XTsKICAgICAgICB9CiAgICAgICAgLy8gcmFzdGVyaXplIGFuZCBxdWV1ZSBhbGwgdHJpYW5nbGVzIHRoYXQgZ290IGFkZGVkIG9yIHVwZGF0ZWQgaW4gX3N0ZXAKICAgICAgICBfZmx1c2goKSB7CiAgICAgICAgICAgIGNvbnN0IHsgY29vcmRzIH0gPSB0aGlzOwogICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuX3BlbmRpbmdMZW47IGkrKykgewogICAgICAgICAgICAgICAgY29uc3QgdCA9IHRoaXMuX3BlbmRpbmdbaV07CiAgICAgICAgICAgICAgICAvLyByYXN0ZXJpemUgdHJpYW5nbGUgdG8gZmluZCBtYXhpbXVtIHBpeGVsIGVycm9yCiAgICAgICAgICAgICAgICBjb25zdCBhID0gMiAqIHRoaXMudHJpYW5nbGVzW3QgKiAzICsgMF07CiAgICAgICAgICAgICAgICBjb25zdCBiID0gMiAqIHRoaXMudHJpYW5nbGVzW3QgKiAzICsgMV07CiAgICAgICAgICAgICAgICBjb25zdCBjID0gMiAqIHRoaXMudHJpYW5nbGVzW3QgKiAzICsgMl07CiAgICAgICAgICAgICAgICB0aGlzLl9maW5kQ2FuZGlkYXRlKGNvb3Jkc1thXSwgY29vcmRzW2EgKyAxXSwgY29vcmRzW2JdLCBjb29yZHNbYiArIDFdLCBjb29yZHNbY10sIGNvb3Jkc1tjICsgMV0sIHQpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHRoaXMuX3BlbmRpbmdMZW4gPSAwOwogICAgICAgIH0KICAgICAgICAvLyByYXN0ZXJpemUgYSB0cmlhbmdsZSwgZmluZCBpdHMgbWF4IGVycm9yLCBhbmQgcXVldWUgaXQgZm9yIHByb2Nlc3NpbmcKICAgICAgICBfZmluZENhbmRpZGF0ZShwMHgsIHAweSwgcDF4LCBwMXksIHAyeCwgcDJ5LCB0KSB7CiAgICAgICAgICAgIC8vIHRyaWFuZ2xlIGJvdW5kaW5nIGJveAogICAgICAgICAgICBjb25zdCBtaW5YID0gTWF0aC5taW4ocDB4LCBwMXgsIHAyeCk7CiAgICAgICAgICAgIGNvbnN0IG1pblkgPSBNYXRoLm1pbihwMHksIHAxeSwgcDJ5KTsKICAgICAgICAgICAgY29uc3QgbWF4WCA9IE1hdGgubWF4KHAweCwgcDF4LCBwMngpOwogICAgICAgICAgICBjb25zdCBtYXhZID0gTWF0aC5tYXgocDB5LCBwMXksIHAyeSk7CiAgICAgICAgICAgIC8vIGZvcndhcmQgZGlmZmVyZW5jaW5nIHZhcmlhYmxlcwogICAgICAgICAgICBsZXQgdzAwID0gb3JpZW50KHAxeCwgcDF5LCBwMngsIHAyeSwgbWluWCwgbWluWSk7CiAgICAgICAgICAgIGxldCB3MDEgPSBvcmllbnQocDJ4LCBwMnksIHAweCwgcDB5LCBtaW5YLCBtaW5ZKTsKICAgICAgICAgICAgbGV0IHcwMiA9IG9yaWVudChwMHgsIHAweSwgcDF4LCBwMXksIG1pblgsIG1pblkpOwogICAgICAgICAgICBjb25zdCBhMDEgPSBwMXkgLSBwMHk7CiAgICAgICAgICAgIGNvbnN0IGIwMSA9IHAweCAtIHAxeDsKICAgICAgICAgICAgY29uc3QgYTEyID0gcDJ5IC0gcDF5OwogICAgICAgICAgICBjb25zdCBiMTIgPSBwMXggLSBwMng7CiAgICAgICAgICAgIGNvbnN0IGEyMCA9IHAweSAtIHAyeTsKICAgICAgICAgICAgY29uc3QgYjIwID0gcDJ4IC0gcDB4OwogICAgICAgICAgICAvLyBwcmUtbXVsdGlwbGllZCB6IHZhbHVlcyBhdCB2ZXJ0aWNlcwogICAgICAgICAgICBjb25zdCBhID0gb3JpZW50KHAweCwgcDB5LCBwMXgsIHAxeSwgcDJ4LCBwMnkpOwogICAgICAgICAgICBjb25zdCB6MCA9IHRoaXMuaGVpZ2h0QXQocDB4LCBwMHkpIC8gYTsKICAgICAgICAgICAgY29uc3QgejEgPSB0aGlzLmhlaWdodEF0KHAxeCwgcDF5KSAvIGE7CiAgICAgICAgICAgIGNvbnN0IHoyID0gdGhpcy5oZWlnaHRBdChwMngsIHAyeSkgLyBhOwogICAgICAgICAgICAvLyBpdGVyYXRlIG92ZXIgcGl4ZWxzIGluIGJvdW5kaW5nIGJveAogICAgICAgICAgICBsZXQgbWF4RXJyb3IgPSAwOwogICAgICAgICAgICBsZXQgbXggPSAwOwogICAgICAgICAgICBsZXQgbXkgPSAwOwogICAgICAgICAgICBsZXQgcm1zID0gMDsKICAgICAgICAgICAgZm9yIChsZXQgeSA9IG1pblk7IHkgPD0gbWF4WTsgeSsrKSB7CiAgICAgICAgICAgICAgICAvLyBjb21wdXRlIHN0YXJ0aW5nIG9mZnNldAogICAgICAgICAgICAgICAgbGV0IGR4ID0gMDsKICAgICAgICAgICAgICAgIGlmICh3MDAgPCAwICYmIGExMiAhPT0gMCkgewogICAgICAgICAgICAgICAgICAgIGR4ID0gTWF0aC5tYXgoZHgsIE1hdGguZmxvb3IoLXcwMCAvIGExMikpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKHcwMSA8IDAgJiYgYTIwICE9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgZHggPSBNYXRoLm1heChkeCwgTWF0aC5mbG9vcigtdzAxIC8gYTIwKSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAodzAyIDwgMCAmJiBhMDEgIT09IDApIHsKICAgICAgICAgICAgICAgICAgICBkeCA9IE1hdGgubWF4KGR4LCBNYXRoLmZsb29yKC13MDIgLyBhMDEpKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGxldCB3MCA9IHcwMCArIGExMiAqIGR4OwogICAgICAgICAgICAgICAgbGV0IHcxID0gdzAxICsgYTIwICogZHg7CiAgICAgICAgICAgICAgICBsZXQgdzIgPSB3MDIgKyBhMDEgKiBkeDsKICAgICAgICAgICAgICAgIGxldCB3YXNJbnNpZGUgPSBmYWxzZTsKICAgICAgICAgICAgICAgIGZvciAobGV0IHggPSBtaW5YICsgZHg7IHggPD0gbWF4WDsgeCsrKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gY2hlY2sgaWYgaW5zaWRlIHRyaWFuZ2xlCiAgICAgICAgICAgICAgICAgICAgaWYgKHcwID49IDAgJiYgdzEgPj0gMCAmJiB3MiA+PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHdhc0luc2lkZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbXB1dGUgeiB1c2luZyBiYXJ5Y2VudHJpYyBjb29yZGluYXRlcwogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB6ID0gejAgKiB3MCArIHoxICogdzEgKyB6MiAqIHcyOwogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkeiA9IE1hdGguYWJzKHogLSB0aGlzLmhlaWdodEF0KHgsIHkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgcm1zICs9IGR6ICogZHo7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkeiA+IG1heEVycm9yKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhFcnJvciA9IGR6OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXggPSB4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgPSB5OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHdhc0luc2lkZSkgewogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdzAgKz0gYTEyOwogICAgICAgICAgICAgICAgICAgIHcxICs9IGEyMDsKICAgICAgICAgICAgICAgICAgICB3MiArPSBhMDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB3MDAgKz0gYjEyOwogICAgICAgICAgICAgICAgdzAxICs9IGIyMDsKICAgICAgICAgICAgICAgIHcwMiArPSBiMDE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKChteCA9PT0gcDB4ICYmIG15ID09PSBwMHkpIHx8IChteCA9PT0gcDF4ICYmIG15ID09PSBwMXkpIHx8IChteCA9PT0gcDJ4ICYmIG15ID09PSBwMnkpKSB7CiAgICAgICAgICAgICAgICBtYXhFcnJvciA9IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gdXBkYXRlIHRyaWFuZ2xlIG1ldGFkYXRhCiAgICAgICAgICAgIHRoaXMuX2NhbmRpZGF0ZXNbMiAqIHRdID0gbXg7CiAgICAgICAgICAgIHRoaXMuX2NhbmRpZGF0ZXNbMiAqIHQgKyAxXSA9IG15OwogICAgICAgICAgICB0aGlzLl9ybXNbdF0gPSBybXM7CiAgICAgICAgICAgIC8vIGFkZCB0cmlhbmdsZSB0byBwcmlvcml0eSBxdWV1ZQogICAgICAgICAgICB0aGlzLl9xdWV1ZVB1c2godCwgbWF4RXJyb3IsIHJtcyk7CiAgICAgICAgfQogICAgICAgIC8vIHByb2Nlc3MgdGhlIG5leHQgdHJpYW5nbGUgaW4gdGhlIHF1ZXVlLCBzcGxpdHRpbmcgaXQgd2l0aCBhIG5ldyBwb2ludAogICAgICAgIF9zdGVwKCkgewogICAgICAgICAgICAvLyBwb3AgdHJpYW5nbGUgd2l0aCBoaWdoZXN0IGVycm9yIGZyb20gcHJpb3JpdHkgcXVldWUKICAgICAgICAgICAgY29uc3QgdCA9IHRoaXMuX3F1ZXVlUG9wKCk7CiAgICAgICAgICAgIGNvbnN0IGUwID0gdCAqIDMgKyAwOwogICAgICAgICAgICBjb25zdCBlMSA9IHQgKiAzICsgMTsKICAgICAgICAgICAgY29uc3QgZTIgPSB0ICogMyArIDI7CiAgICAgICAgICAgIGNvbnN0IHAwID0gdGhpcy50cmlhbmdsZXNbZTBdOwogICAgICAgICAgICBjb25zdCBwMSA9IHRoaXMudHJpYW5nbGVzW2UxXTsKICAgICAgICAgICAgY29uc3QgcDIgPSB0aGlzLnRyaWFuZ2xlc1tlMl07CiAgICAgICAgICAgIGNvbnN0IGF4ID0gdGhpcy5jb29yZHNbMiAqIHAwXTsKICAgICAgICAgICAgY29uc3QgYXkgPSB0aGlzLmNvb3Jkc1syICogcDAgKyAxXTsKICAgICAgICAgICAgY29uc3QgYnggPSB0aGlzLmNvb3Jkc1syICogcDFdOwogICAgICAgICAgICBjb25zdCBieSA9IHRoaXMuY29vcmRzWzIgKiBwMSArIDFdOwogICAgICAgICAgICBjb25zdCBjeCA9IHRoaXMuY29vcmRzWzIgKiBwMl07CiAgICAgICAgICAgIGNvbnN0IGN5ID0gdGhpcy5jb29yZHNbMiAqIHAyICsgMV07CiAgICAgICAgICAgIGNvbnN0IHB4ID0gdGhpcy5fY2FuZGlkYXRlc1syICogdF07CiAgICAgICAgICAgIGNvbnN0IHB5ID0gdGhpcy5fY2FuZGlkYXRlc1syICogdCArIDFdOwogICAgICAgICAgICBjb25zdCBwbiA9IHRoaXMuX2FkZFBvaW50KHB4LCBweSk7CiAgICAgICAgICAgIGlmIChvcmllbnQoYXgsIGF5LCBieCwgYnksIHB4LCBweSkgPT09IDApIHsKICAgICAgICAgICAgICAgIHRoaXMuX2hhbmRsZUNvbGxpbmVhcihwbiwgZTApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYgKG9yaWVudChieCwgYnksIGN4LCBjeSwgcHgsIHB5KSA9PT0gMCkgewogICAgICAgICAgICAgICAgdGhpcy5faGFuZGxlQ29sbGluZWFyKHBuLCBlMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiAob3JpZW50KGN4LCBjeSwgYXgsIGF5LCBweCwgcHkpID09PSAwKSB7CiAgICAgICAgICAgICAgICB0aGlzLl9oYW5kbGVDb2xsaW5lYXIocG4sIGUyKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGNvbnN0IGgwID0gdGhpcy5faGFsZmVkZ2VzW2UwXTsKICAgICAgICAgICAgICAgIGNvbnN0IGgxID0gdGhpcy5faGFsZmVkZ2VzW2UxXTsKICAgICAgICAgICAgICAgIGNvbnN0IGgyID0gdGhpcy5faGFsZmVkZ2VzW2UyXTsKICAgICAgICAgICAgICAgIGNvbnN0IHQwID0gdGhpcy5fYWRkVHJpYW5nbGUocDAsIHAxLCBwbiwgaDAsIC0xLCAtMSwgZTApOwogICAgICAgICAgICAgICAgY29uc3QgdDEgPSB0aGlzLl9hZGRUcmlhbmdsZShwMSwgcDIsIHBuLCBoMSwgLTEsIHQwICsgMSk7CiAgICAgICAgICAgICAgICBjb25zdCB0MiA9IHRoaXMuX2FkZFRyaWFuZ2xlKHAyLCBwMCwgcG4sIGgyLCB0MCArIDIsIHQxICsgMSk7CiAgICAgICAgICAgICAgICB0aGlzLl9sZWdhbGl6ZSh0MCk7CiAgICAgICAgICAgICAgICB0aGlzLl9sZWdhbGl6ZSh0MSk7CiAgICAgICAgICAgICAgICB0aGlzLl9sZWdhbGl6ZSh0Mik7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgLy8gYWRkIGNvb3JkaW5hdGVzIGZvciBhIG5ldyB2ZXJ0ZXgKICAgICAgICBfYWRkUG9pbnQoeCwgeSkgewogICAgICAgICAgICBjb25zdCBpID0gdGhpcy5jb29yZHMubGVuZ3RoID4+IDE7CiAgICAgICAgICAgIHRoaXMuY29vcmRzLnB1c2goeCwgeSk7CiAgICAgICAgICAgIHJldHVybiBpOwogICAgICAgIH0KICAgICAgICAvLyBhZGQgb3IgdXBkYXRlIGEgdHJpYW5nbGUgaW4gdGhlIG1lc2gKICAgICAgICBfYWRkVHJpYW5nbGUoYSwgYiwgYywgYWIsIGJjLCBjYSwgZSA9IHRoaXMudHJpYW5nbGVzLmxlbmd0aCkgewogICAgICAgICAgICBjb25zdCB0ID0gZSAvIDM7IC8vIG5ldyB0cmlhbmdsZSBpbmRleAogICAgICAgICAgICAvLyBhZGQgdHJpYW5nbGUgdmVydGljZXMKICAgICAgICAgICAgdGhpcy50cmlhbmdsZXNbZSArIDBdID0gYTsKICAgICAgICAgICAgdGhpcy50cmlhbmdsZXNbZSArIDFdID0gYjsKICAgICAgICAgICAgdGhpcy50cmlhbmdsZXNbZSArIDJdID0gYzsKICAgICAgICAgICAgLy8gYWRkIHRyaWFuZ2xlIGhhbGZlZGdlcwogICAgICAgICAgICB0aGlzLl9oYWxmZWRnZXNbZSArIDBdID0gYWI7CiAgICAgICAgICAgIHRoaXMuX2hhbGZlZGdlc1tlICsgMV0gPSBiYzsKICAgICAgICAgICAgdGhpcy5faGFsZmVkZ2VzW2UgKyAyXSA9IGNhOwogICAgICAgICAgICAvLyBsaW5rIG5laWdoYm9yaW5nIGhhbGZlZGdlcwogICAgICAgICAgICBpZiAoYWIgPj0gMCkgewogICAgICAgICAgICAgICAgdGhpcy5faGFsZmVkZ2VzW2FiXSA9IGUgKyAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChiYyA+PSAwKSB7CiAgICAgICAgICAgICAgICB0aGlzLl9oYWxmZWRnZXNbYmNdID0gZSArIDE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGNhID49IDApIHsKICAgICAgICAgICAgICAgIHRoaXMuX2hhbGZlZGdlc1tjYV0gPSBlICsgMjsKICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBpbml0IHRyaWFuZ2xlIG1ldGFkYXRhCiAgICAgICAgICAgIHRoaXMuX2NhbmRpZGF0ZXNbMiAqIHQgKyAwXSA9IDA7CiAgICAgICAgICAgIHRoaXMuX2NhbmRpZGF0ZXNbMiAqIHQgKyAxXSA9IDA7CiAgICAgICAgICAgIHRoaXMuX3F1ZXVlSW5kaWNlc1t0XSA9IC0xOwogICAgICAgICAgICB0aGlzLl9ybXNbdF0gPSAwOwogICAgICAgICAgICAvLyBhZGQgdHJpYW5nbGUgdG8gcGVuZGluZyBxdWV1ZSBmb3IgbGF0ZXIgcmFzdGVyaXphdGlvbgogICAgICAgICAgICB0aGlzLl9wZW5kaW5nW3RoaXMuX3BlbmRpbmdMZW4rK10gPSB0OwogICAgICAgICAgICAvLyByZXR1cm4gZmlyc3QgaGFsZmVkZ2UgaW5kZXgKICAgICAgICAgICAgcmV0dXJuIGU7CiAgICAgICAgfQogICAgICAgIF9sZWdhbGl6ZShhKSB7CiAgICAgICAgICAgIC8vIGlmIHRoZSBwYWlyIG9mIHRyaWFuZ2xlcyBkb2Vzbid0IHNhdGlzZnkgdGhlIERlbGF1bmF5IGNvbmRpdGlvbgogICAgICAgICAgICAvLyAocDEgaXMgaW5zaWRlIHRoZSBjaXJjdW1jaXJjbGUgb2YgW3AwLCBwbCwgcHJdKSwgZmxpcCB0aGVtLAogICAgICAgICAgICAvLyB0aGVuIGRvIHRoZSBzYW1lIGNoZWNrL2ZsaXAgcmVjdXJzaXZlbHkgZm9yIHRoZSBuZXcgcGFpciBvZiB0cmlhbmdsZXMKICAgICAgICAgICAgLy8KICAgICAgICAgICAgLy8gICAgICAgICAgIHBsICAgICAgICAgICAgICAgICAgICBwbAogICAgICAgICAgICAvLyAgICAgICAgICAvfHxcICAgICAgICAgICAgICAgICAgLyAgXAogICAgICAgICAgICAvLyAgICAgICBhbC8gfHwgXGJsICAgICAgICAgICAgYWwvICAgIFxhCiAgICAgICAgICAgIC8vICAgICAgICAvICB8fCAgXCAgICAgICAgICAgICAgLyAgICAgIFwKICAgICAgICAgICAgLy8gICAgICAgLyAgYXx8YiAgXCAgICBmbGlwICAgIC9fX19hcl9fX1wKICAgICAgICAgICAgLy8gICAgIHAwXCAgIHx8ICAgL3AxICAgPT4gICBwMFwtLS1ibC0tLS9wMQogICAgICAgICAgICAvLyAgICAgICAgXCAgfHwgIC8gICAgICAgICAgICAgIFwgICAgICAvCiAgICAgICAgICAgIC8vICAgICAgIGFyXCB8fCAvYnIgICAgICAgICAgICAgYlwgICAgL2JyCiAgICAgICAgICAgIC8vICAgICAgICAgIFx8fC8gICAgICAgICAgICAgICAgICBcICAvCiAgICAgICAgICAgIC8vICAgICAgICAgICBwciAgICAgICAgICAgICAgICAgICAgcHIKICAgICAgICAgICAgY29uc3QgYiA9IHRoaXMuX2hhbGZlZGdlc1thXTsKICAgICAgICAgICAgaWYgKGIgPCAwKSB7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgYTAgPSBhIC0gKGEgJSAzKTsKICAgICAgICAgICAgY29uc3QgYjAgPSBiIC0gKGIgJSAzKTsKICAgICAgICAgICAgY29uc3QgYWwgPSBhMCArICgoYSArIDEpICUgMyk7CiAgICAgICAgICAgIGNvbnN0IGFyID0gYTAgKyAoKGEgKyAyKSAlIDMpOwogICAgICAgICAgICBjb25zdCBibCA9IGIwICsgKChiICsgMikgJSAzKTsKICAgICAgICAgICAgY29uc3QgYnIgPSBiMCArICgoYiArIDEpICUgMyk7CiAgICAgICAgICAgIGNvbnN0IHAwID0gdGhpcy50cmlhbmdsZXNbYXJdOwogICAgICAgICAgICBjb25zdCBwciA9IHRoaXMudHJpYW5nbGVzW2FdOwogICAgICAgICAgICBjb25zdCBwbCA9IHRoaXMudHJpYW5nbGVzW2FsXTsKICAgICAgICAgICAgY29uc3QgcDEgPSB0aGlzLnRyaWFuZ2xlc1tibF07CiAgICAgICAgICAgIGNvbnN0IHsgY29vcmRzIH0gPSB0aGlzOwogICAgICAgICAgICBpZiAoIWluQ2lyY2xlKGNvb3Jkc1syICogcDBdLCBjb29yZHNbMiAqIHAwICsgMV0sIGNvb3Jkc1syICogcHJdLCBjb29yZHNbMiAqIHByICsgMV0sIGNvb3Jkc1syICogcGxdLCBjb29yZHNbMiAqIHBsICsgMV0sIGNvb3Jkc1syICogcDFdLCBjb29yZHNbMiAqIHAxICsgMV0pKSB7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgaGFsID0gdGhpcy5faGFsZmVkZ2VzW2FsXTsKICAgICAgICAgICAgY29uc3QgaGFyID0gdGhpcy5faGFsZmVkZ2VzW2FyXTsKICAgICAgICAgICAgY29uc3QgaGJsID0gdGhpcy5faGFsZmVkZ2VzW2JsXTsKICAgICAgICAgICAgY29uc3QgaGJyID0gdGhpcy5faGFsZmVkZ2VzW2JyXTsKICAgICAgICAgICAgdGhpcy5fcXVldWVSZW1vdmUoYTAgLyAzKTsKICAgICAgICAgICAgdGhpcy5fcXVldWVSZW1vdmUoYjAgLyAzKTsKICAgICAgICAgICAgY29uc3QgdDAgPSB0aGlzLl9hZGRUcmlhbmdsZShwMCwgcDEsIHBsLCAtMSwgaGJsLCBoYWwsIGEwKTsKICAgICAgICAgICAgY29uc3QgdDEgPSB0aGlzLl9hZGRUcmlhbmdsZShwMSwgcDAsIHByLCB0MCwgaGFyLCBoYnIsIGIwKTsKICAgICAgICAgICAgdGhpcy5fbGVnYWxpemUodDAgKyAxKTsKICAgICAgICAgICAgdGhpcy5fbGVnYWxpemUodDEgKyAyKTsKICAgICAgICB9CiAgICAgICAgLy8gaGFuZGxlIGEgY2FzZSB3aGVyZSBuZXcgdmVydGV4IGlzIG9uIHRoZSBlZGdlIG9mIGEgdHJpYW5nbGUKICAgICAgICBfaGFuZGxlQ29sbGluZWFyKHBuLCBhKSB7CiAgICAgICAgICAgIGNvbnN0IGEwID0gYSAtIChhICUgMyk7CiAgICAgICAgICAgIGNvbnN0IGFsID0gYTAgKyAoKGEgKyAxKSAlIDMpOwogICAgICAgICAgICBjb25zdCBhciA9IGEwICsgKChhICsgMikgJSAzKTsKICAgICAgICAgICAgY29uc3QgcDAgPSB0aGlzLnRyaWFuZ2xlc1thcl07CiAgICAgICAgICAgIGNvbnN0IHByID0gdGhpcy50cmlhbmdsZXNbYV07CiAgICAgICAgICAgIGNvbnN0IHBsID0gdGhpcy50cmlhbmdsZXNbYWxdOwogICAgICAgICAgICBjb25zdCBoYWwgPSB0aGlzLl9oYWxmZWRnZXNbYWxdOwogICAgICAgICAgICBjb25zdCBoYXIgPSB0aGlzLl9oYWxmZWRnZXNbYXJdOwogICAgICAgICAgICBjb25zdCBiID0gdGhpcy5faGFsZmVkZ2VzW2FdOwogICAgICAgICAgICBpZiAoYiA8IDApIHsKICAgICAgICAgICAgICAgIGNvbnN0IHQwID0gdGhpcy5fYWRkVHJpYW5nbGUocG4sIHAwLCBwciwgLTEsIGhhciwgLTEsIGEwKTsKICAgICAgICAgICAgICAgIGNvbnN0IHQxID0gdGhpcy5fYWRkVHJpYW5nbGUocDAsIHBuLCBwbCwgdDAsIC0xLCBoYWwpOwogICAgICAgICAgICAgICAgdGhpcy5fbGVnYWxpemUodDAgKyAxKTsKICAgICAgICAgICAgICAgIHRoaXMuX2xlZ2FsaXplKHQxICsgMik7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgYjAgPSBiIC0gKGIgJSAzKTsKICAgICAgICAgICAgY29uc3QgYmwgPSBiMCArICgoYiArIDIpICUgMyk7CiAgICAgICAgICAgIGNvbnN0IGJyID0gYjAgKyAoKGIgKyAxKSAlIDMpOwogICAgICAgICAgICBjb25zdCBwMSA9IHRoaXMudHJpYW5nbGVzW2JsXTsKICAgICAgICAgICAgY29uc3QgaGJsID0gdGhpcy5faGFsZmVkZ2VzW2JsXTsKICAgICAgICAgICAgY29uc3QgaGJyID0gdGhpcy5faGFsZmVkZ2VzW2JyXTsKICAgICAgICAgICAgdGhpcy5fcXVldWVSZW1vdmUoYjAgLyAzKTsKICAgICAgICAgICAgY29uc3QgdDAgPSB0aGlzLl9hZGRUcmlhbmdsZShwMCwgcHIsIHBuLCBoYXIsIC0xLCAtMSwgYTApOwogICAgICAgICAgICBjb25zdCB0MSA9IHRoaXMuX2FkZFRyaWFuZ2xlKHByLCBwMSwgcG4sIGhiciwgLTEsIHQwICsgMSwgYjApOwogICAgICAgICAgICBjb25zdCB0MiA9IHRoaXMuX2FkZFRyaWFuZ2xlKHAxLCBwbCwgcG4sIGhibCwgLTEsIHQxICsgMSk7CiAgICAgICAgICAgIGNvbnN0IHQzID0gdGhpcy5fYWRkVHJpYW5nbGUocGwsIHAwLCBwbiwgaGFsLCB0MCArIDIsIHQyICsgMSk7CiAgICAgICAgICAgIHRoaXMuX2xlZ2FsaXplKHQwKTsKICAgICAgICAgICAgdGhpcy5fbGVnYWxpemUodDEpOwogICAgICAgICAgICB0aGlzLl9sZWdhbGl6ZSh0Mik7CiAgICAgICAgICAgIHRoaXMuX2xlZ2FsaXplKHQzKTsKICAgICAgICB9CiAgICAgICAgLy8gcHJpb3JpdHkgcXVldWUgbWV0aG9kcwogICAgICAgIF9xdWV1ZVB1c2godCwgZXJyb3IsIHJtcykgewogICAgICAgICAgICBjb25zdCBpID0gdGhpcy5fcXVldWUubGVuZ3RoOwogICAgICAgICAgICB0aGlzLl9xdWV1ZUluZGljZXNbdF0gPSBpOwogICAgICAgICAgICB0aGlzLl9xdWV1ZS5wdXNoKHQpOwogICAgICAgICAgICB0aGlzLl9lcnJvcnMucHVzaChlcnJvcik7CiAgICAgICAgICAgIHRoaXMuX3Jtc1N1bSArPSBybXM7CiAgICAgICAgICAgIHRoaXMuX3F1ZXVlVXAoaSk7CiAgICAgICAgfQogICAgICAgIF9xdWV1ZVBvcCgpIHsKICAgICAgICAgICAgY29uc3QgbiA9IHRoaXMuX3F1ZXVlLmxlbmd0aCAtIDE7CiAgICAgICAgICAgIHRoaXMuX3F1ZXVlU3dhcCgwLCBuKTsKICAgICAgICAgICAgdGhpcy5fcXVldWVEb3duKDAsIG4pOwogICAgICAgICAgICByZXR1cm4gdGhpcy5fcXVldWVQb3BCYWNrKCk7CiAgICAgICAgfQogICAgICAgIF9xdWV1ZVBvcEJhY2soKSB7CiAgICAgICAgICAgIGNvbnN0IHQgPSB0aGlzLl9xdWV1ZS5wb3AoKTsKICAgICAgICAgICAgdGhpcy5fZXJyb3JzLnBvcCgpOwogICAgICAgICAgICB0aGlzLl9ybXNTdW0gLT0gdGhpcy5fcm1zW3RdOwogICAgICAgICAgICB0aGlzLl9xdWV1ZUluZGljZXNbdF0gPSAtMTsKICAgICAgICAgICAgcmV0dXJuIHQ7CiAgICAgICAgfQogICAgICAgIF9xdWV1ZVJlbW92ZSh0KSB7CiAgICAgICAgICAgIGNvbnN0IGkgPSB0aGlzLl9xdWV1ZUluZGljZXNbdF07CiAgICAgICAgICAgIGlmIChpIDwgMCkgewogICAgICAgICAgICAgICAgY29uc3QgaXQgPSB0aGlzLl9wZW5kaW5nLmluZGV4T2YodCk7CiAgICAgICAgICAgICAgICBpZiAoaXQgIT09IC0xKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcGVuZGluZ1tpdF0gPSB0aGlzLl9wZW5kaW5nWy0tdGhpcy5fcGVuZGluZ0xlbl07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Jyb2tlbiB0cmlhbmd1bGF0aW9uIChzb21ldGhpbmcgd2VudCB3cm9uZykuJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbiA9IHRoaXMuX3F1ZXVlLmxlbmd0aCAtIDE7CiAgICAgICAgICAgIGlmIChuICE9PSBpKSB7CiAgICAgICAgICAgICAgICB0aGlzLl9xdWV1ZVN3YXAoaSwgbik7CiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX3F1ZXVlRG93bihpLCBuKSkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuX3F1ZXVlVXAoaSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdGhpcy5fcXVldWVQb3BCYWNrKCk7CiAgICAgICAgfQogICAgICAgIF9xdWV1ZUxlc3MoaSwgaikgewogICAgICAgICAgICByZXR1cm4gdGhpcy5fZXJyb3JzW2ldID4gdGhpcy5fZXJyb3JzW2pdOwogICAgICAgIH0KICAgICAgICBfcXVldWVTd2FwKGksIGopIHsKICAgICAgICAgICAgY29uc3QgcGkgPSB0aGlzLl9xdWV1ZVtpXTsKICAgICAgICAgICAgY29uc3QgcGogPSB0aGlzLl9xdWV1ZVtqXTsKICAgICAgICAgICAgdGhpcy5fcXVldWVbaV0gPSBwajsKICAgICAgICAgICAgdGhpcy5fcXVldWVbal0gPSBwaTsKICAgICAgICAgICAgdGhpcy5fcXVldWVJbmRpY2VzW3BpXSA9IGo7CiAgICAgICAgICAgIHRoaXMuX3F1ZXVlSW5kaWNlc1twal0gPSBpOwogICAgICAgICAgICBjb25zdCBlID0gdGhpcy5fZXJyb3JzW2ldOwogICAgICAgICAgICB0aGlzLl9lcnJvcnNbaV0gPSB0aGlzLl9lcnJvcnNbal07CiAgICAgICAgICAgIHRoaXMuX2Vycm9yc1tqXSA9IGU7CiAgICAgICAgfQogICAgICAgIF9xdWV1ZVVwKGowKSB7CiAgICAgICAgICAgIGxldCBqID0gajA7CiAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgICAgICAgICBjb25zdCBpID0gKGogLSAxKSA+PiAxOwogICAgICAgICAgICAgICAgaWYgKGkgPT09IGogfHwgIXRoaXMuX3F1ZXVlTGVzcyhqLCBpKSkgewogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdGhpcy5fcXVldWVTd2FwKGksIGopOwogICAgICAgICAgICAgICAgaiA9IGk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgX3F1ZXVlRG93bihpMCwgbikgewogICAgICAgICAgICBsZXQgaSA9IGkwOwogICAgICAgICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICAgICAgICAgY29uc3QgajEgPSAyICogaSArIDE7CiAgICAgICAgICAgICAgICBpZiAoajEgPj0gbiB8fCBqMSA8IDApIHsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNvbnN0IGoyID0gajEgKyAxOwogICAgICAgICAgICAgICAgbGV0IGogPSBqMTsKICAgICAgICAgICAgICAgIGlmIChqMiA8IG4gJiYgdGhpcy5fcXVldWVMZXNzKGoyLCBqMSkpIHsKICAgICAgICAgICAgICAgICAgICBqID0gajI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX3F1ZXVlTGVzcyhqLCBpKSkgewogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdGhpcy5fcXVldWVTd2FwKGksIGopOwogICAgICAgICAgICAgICAgaSA9IGo7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGkgPiBpMDsKICAgICAgICB9CiAgICB9CiAgICBmdW5jdGlvbiBpbkNpcmNsZShheCwgYXksIGJ4LCBieSwgY3gsIGN5LCBweCwgcHkpIHsKICAgICAgICBjb25zdCBkeCA9IGF4IC0gcHg7CiAgICAgICAgY29uc3QgZHkgPSBheSAtIHB5OwogICAgICAgIGNvbnN0IGV4ID0gYnggLSBweDsKICAgICAgICBjb25zdCBleSA9IGJ5IC0gcHk7CiAgICAgICAgY29uc3QgZnggPSBjeCAtIHB4OwogICAgICAgIGNvbnN0IGZ5ID0gY3kgLSBweTsKICAgICAgICBjb25zdCBhcCA9IGR4ICogZHggKyBkeSAqIGR5OwogICAgICAgIGNvbnN0IGJwID0gZXggKiBleCArIGV5ICogZXk7CiAgICAgICAgY29uc3QgY3AgPSBmeCAqIGZ4ICsgZnkgKiBmeTsKICAgICAgICByZXR1cm4gZHggKiAoZXkgKiBjcCAtIGJwICogZnkpIC0gZHkgKiAoZXggKiBjcCAtIGJwICogZngpICsgYXAgKiAoZXggKiBmeSAtIGV5ICogZngpIDwgMDsKICAgIH0KCiAgICAvKioKICAgICAqIFdlYiBXb3JrZXIgZm9yIHRlcnJhaW4gbWVzaCB0ZXNzZWxsYXRpb24uCiAgICAgKiBSdW5zIE1hcnRpbmkvRGVsYXRpbiBhbGdvcml0aG1zIG9uIGEgYmFja2dyb3VuZCB0aHJlYWQgdG8gYXZvaWQgYmxvY2tpbmcgdGhlIG1haW4gdGhyZWFkLgogICAgICovCiAgICAvLyBUcmFjayBhYm9ydGVkIHRhc2tzIHRvIGF2b2lkIHNlbmRpbmcgcmVzdWx0cyBmb3IgY2FuY2VsbGVkIHdvcmsKICAgIGNvbnN0IGFib3J0ZWRUYXNrcyA9IG5ldyBNYXAoKTsKICAgIHNlbGYub25tZXNzYWdlID0gKGUpID0+IHsKICAgICAgICBjb25zdCBkYXRhID0gZS5kYXRhOwogICAgICAgIGlmIChkYXRhLnR5cGUgPT09ICdhYm9ydCcpIHsKICAgICAgICAgICAgLy8gTWFyayB0YXNrIGFzIGFib3J0ZWQ7IGlmIGl0J3Mgc3RpbGwgY29tcHV0aW5nLCB3ZSdsbCBza2lwIHRoZSByZXNwb25zZQogICAgICAgICAgICBhYm9ydGVkVGFza3Muc2V0KGRhdGEudGFza0lkLCB0cnVlKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBpZiAoZGF0YS50eXBlID09PSAnY29tcHV0ZU1lc2gnKSB7CiAgICAgICAgICAgIGNvbnN0IHsgdGFza0lkLCB0ZXJyYWluLCBtZXNoTWF4RXJyb3IsIHRlc3NlbGF0b3IsIHdpZHRoLCBoZWlnaHQgfSA9IGRhdGE7CiAgICAgICAgICAgIGxldCBtZXNoOwogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgaWYgKHRlc3NlbGF0b3IgPT09ICdkZWxhdGluJykgewogICAgICAgICAgICAgICAgICAgIC8vIERlbGF0aW4gdGVzc2VsbGF0aW9uCiAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2lkdGhQbHVzID0gd2lkdGggPT09IDI1NyA/IDI1NyA6IHdpZHRoICsgMTsKICAgICAgICAgICAgICAgICAgICBjb25zdCBoZWlnaHRQbHVzID0gaGVpZ2h0ID09PSAyNTcgPyAyNTcgOiBoZWlnaHQgKyAxOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHRpbiA9IG5ldyBEZWxhdGluKHRlcnJhaW4sIHdpZHRoUGx1cywgaGVpZ2h0UGx1cyk7CiAgICAgICAgICAgICAgICAgICAgdGluLnJ1bihtZXNoTWF4RXJyb3IpOwogICAgICAgICAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IERlbGF0aW4gaW5zdGFuY2UgcHJvcGVydGllcyAnY29vcmRzJyBhbmQgJ3RyaWFuZ2xlcycgYXJlIG5vdCBleHBsaWNpdGx5IHR5cGVkIGluIHRoZSBsaWJyYXJ5IHBvcnQKICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGNvb3JkcywgdHJpYW5nbGVzIH0gPSB0aW47CiAgICAgICAgICAgICAgICAgICAgLy8gY29vcmRzIGlzIGEgcGxhaW4gYXJyYXkg4oCUIGNvbnZlcnQgdG8gRmxvYXQ2NEFycmF5IHNvIGl0IGhhcyAuYnVmZmVyIGZvciB0cmFuc2ZlcgogICAgICAgICAgICAgICAgICAgIGNvbnN0IHZlcnRpY2VzVHlwZWQgPSBGbG9hdDY0QXJyYXkuZnJvbShjb29yZHMpOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHRyaWFuZ2xlc1R5cGVkID0gVWludDMyQXJyYXkuZnJvbSh0cmlhbmdsZXMpOwogICAgICAgICAgICAgICAgICAgIG1lc2ggPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZlcnRpY2VzOiB2ZXJ0aWNlc1R5cGVkLAogICAgICAgICAgICAgICAgICAgICAgICB0cmlhbmdsZXM6IHRyaWFuZ2xlc1R5cGVkLAogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAvLyBNYXJ0aW5pIHRlc3NlbGxhdGlvbiAoZGVmYXVsdCkKICAgICAgICAgICAgICAgICAgICBjb25zdCBncmlkU2l6ZSA9IHdpZHRoID09PSAyNTcgPyAyNTcgOiB3aWR0aCArIDE7IC8vIE9ubHkgYWRkIDEgaWYgd2lkdGggaXMgbm90IGFscmVhZHkgMl5uKzEKICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXJ0aW5pID0gbmV3IE1hcnRpbmkoZ3JpZFNpemUpOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHRpbGUgPSBtYXJ0aW5pLmNyZWF0ZVRpbGUodGVycmFpbik7CiAgICAgICAgICAgICAgICAgICAgbWVzaCA9IHRpbGUuZ2V0TWVzaChtZXNoTWF4RXJyb3IpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLy8gT25seSBzZW5kIHJlc3VsdCBpZiBub3QgYWJvcnRlZAogICAgICAgICAgICAgICAgaWYgKCFhYm9ydGVkVGFza3MuZ2V0KHRhc2tJZCkpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ21lc2hSZXN1bHQnLAogICAgICAgICAgICAgICAgICAgICAgICB0YXNrSWQsCiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdDogbWVzaCwKICAgICAgICAgICAgICAgICAgICAgICAgdGVycmFpbiwgLy8g4oaQIENSSVRJQ0FMOiBSZXR1cm4gdGVycmFpbiBidWZmZXIgdG8gbWFpbiB0aHJlYWQKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIC8vIFRyYW5zZmVyIG93bmVyc2hpcCBvZiBBTEwgYnVmZmVycyBiYWNrIHRvIG1haW4gdGhyZWFkICh6ZXJvLWNvcHkgcm91bmR0cmlwKQogICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgYXZvaWRzIG1lc2hUZXJyYWluLnNsaWNlKCkgYWxsb2NhdGlvbiBvbiBtYWluIHRocmVhZAogICAgICAgICAgICAgICAgICAgIHNlbGYucG9zdE1lc3NhZ2UocmVzcG9uc2UsIHsKICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmZXI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc2gudmVydGljZXMuYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzaC50cmlhbmdsZXMuYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVycmFpbi5idWZmZXIsIC8vIOKGkCBUcmFuc2ZlciB0ZXJyYWluIGJhY2sKICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBjYXRjaCAoZXJyb3IpIHsKICAgICAgICAgICAgICAgIC8vIE9ubHkgcmVwb3J0IGVycm9ycyBmb3Igbm9uLWFib3J0ZWQgdGFza3MKICAgICAgICAgICAgICAgIGlmICghYWJvcnRlZFRhc2tzLmdldCh0YXNrSWQpKSB7CiAgICAgICAgICAgICAgICAgICAgc2VsZi5wb3N0TWVzc2FnZSh7CiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgICAgIHRhc2tJZCwKICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKSwKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBmaW5hbGx5IHsKICAgICAgICAgICAgICAgIC8vIENsZWFuIHVwIGFib3J0IHRyYWNraW5nCiAgICAgICAgICAgICAgICBhYm9ydGVkVGFza3MuZGVsZXRlKHRhc2tJZCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9OwogICAgLy8gU2lnbmFsIHRoYXQgd29ya2VyIGlzIHJlYWR5CiAgICBzZWxmLnBvc3RNZXNzYWdlKHsgdHlwZTogJ3JlYWR5JyB9KTsKCn0pKCk7Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPXRlcnJhaW4ud29ya2VyLmpzLm1hcAoK");class xg{workers=[];pendingTasks=new Map;taskCounter=0;roundRobinIndex=0;constructor(A){let g=1;"undefined"!=typeof navigator&&(g=Math.min(navigator.hardwareConcurrency||4,8),navigator.deviceMemory&&navigator.deviceMemory<4&&(g=2));const I=Math.max(1,A??g);for(let A=0;A<I;A++){const A=new Jg;A.onmessage=this.handleWorkerMessage.bind(this),A.onerror=this.handleWorkerError.bind(this),this.workers.push(A)}}async computeMesh(A){const{terrain:g,meshMaxError:I,tesselator:C,width:e,height:i,signal:t}=A;if(t?.aborted)throw new DOMException("Aborted","AbortError");const B="task_"+ ++this.taskCounter;return new Promise((A,s)=>{const Q=this.getNextWorker(),o={resolve:A,reject:s,aborted:!1,worker:Q};this.pendingTasks.set(B,o),t&&t.addEventListener("abort",()=>{this.pendingTasks.has(B)&&(o.aborted=!0,this.pendingTasks.delete(B),Q.postMessage({type:"abort",taskId:B}),s(new DOMException("Aborted","AbortError")))},{once:!0}),Q.postMessage({type:"computeMesh",taskId:B,terrain:g,meshMaxError:I,tesselator:C,width:e,height:i},[g.buffer])})}getNextWorker(){const A=this.workers[this.roundRobinIndex];return this.roundRobinIndex=(this.roundRobinIndex+1)%this.workers.length,A}handleWorkerMessage(A){const{type:g,taskId:I,result:C,terrain:e,error:i}=A.data;if("ready"===g)return;const t=this.pendingTasks.get(I);t&&(this.pendingTasks.delete(I),t.aborted||("meshResult"===g?t.resolve({vertices:C.vertices,triangles:C.triangles,terrain:e}):"error"===g&&t.reject(new Error(`Worker error: ${i}`))))}handleWorkerError(A){const g=A.target,I=[];this.pendingTasks.forEach((A,C)=>{A.worker===g&&I.push(C)});for(const g of I){const I=this.pendingTasks.get(g);I&&(this.pendingTasks.delete(g),I.reject(new Error(`Worker crashed: ${A.message||"Unknown error"}`)))}const C=this.workers.indexOf(g);if(-1!==C)try{const A=new Jg;A.onmessage=this.handleWorkerMessage.bind(this),A.onerror=this.handleWorkerError.bind(this),this.workers[C]=A}catch(A){console.error("[TerrainWorkerPool] Failed to respawn worker:",A)}}terminate(){this.pendingTasks.forEach(A=>{A.reject(new DOMException("Worker pool terminated","AbortError"))}),this.pendingTasks.clear(),this.workers.forEach(A=>A.terminate()),this.workers=[]}}let Tg=null;const Zg=2*Math.PI*6378137,qg=Zg/2,Og=[-20037508.342789244,20037508.342789244];function Wg(A){const g=A[0],I=A[1],C=g/qg*180;let e=I/qg*180;return e=180/Math.PI*(2*Math.atan(Math.exp(e*Math.PI/180))-Math.PI/2),[C,e]}function Vg(A,g,I){const C=function(A,g){return Math.round(Math.log2(Zg/(g*A)))}(A,g);return[C-(I-1),C]}class vg{tileResultCache=new Map;tileResultCacheMaxSize;rasterCache=new Map;rasterCacheMaxSize;reliefMaskCache=new Map;reliefMaskCacheMaxSize;imageCache=new Map;constructor(A){this.tileResultCacheMaxSize=A?.tileResultCacheMaxSize??32,this.rasterCacheMaxSize=A?.rasterCacheMaxSize??64,this.reliefMaskCacheMaxSize=A?.reliefMaskCacheMaxSize??64}getTileResultCacheKey(A,g,I,C,e){return`${I}/${A}/${g}/${C}/${e?"1":"0"}`}getTileCacheKey(A,g,I){return`${I}/${A}/${g}`}getTileResult(A){const g=this.tileResultCache.get(A);if(g)return this.tileResultCache.delete(A),this.tileResultCache.set(A,g),g}setTileResult(A,g){if(this.tileResultCache.set(A,g),this.tileResultCache.size>this.tileResultCacheMaxSize){const A=this.tileResultCache.keys().next().value;if(A){const g=this.tileResultCache.get(A);g&&!g.settled&&g.controller.abort(),this.tileResultCache.delete(A)}}}deleteTileResult(A){return this.tileResultCache.delete(A)}clearTileResultCache(){for(const A of this.tileResultCache.values())A.settled||A.controller.abort();this.tileResultCache.clear()}getRaster(A){const g=this.rasterCache.get(A);if(g)return this.rasterCache.delete(A),this.rasterCache.set(A,g),g}setRaster(A,g){if(this.rasterCache.set(A,g),g.catch(()=>this.rasterCache.delete(A)),this.rasterCache.size>this.rasterCacheMaxSize){const A=this.rasterCache.keys().next().value;A&&this.rasterCache.delete(A)}}deleteRaster(A){return this.rasterCache.delete(A)}clearRasterCache(){this.rasterCache.clear()}getReliefMask(A){const g=this.reliefMaskCache.get(A);if(g)return this.reliefMaskCache.delete(A),this.reliefMaskCache.set(A,g),g}setReliefMask(A,g){if(this.reliefMaskCache.set(A,g),g.catch(()=>this.reliefMaskCache.delete(A)),this.reliefMaskCache.size>this.reliefMaskCacheMaxSize){const A=this.reliefMaskCache.keys().next().value;A&&this.reliefMaskCache.delete(A)}}deleteReliefMask(A){return this.reliefMaskCache.delete(A)}clearReliefMaskCache(){this.reliefMaskCache.clear()}getImage(A){return this.imageCache.get(A)}setImage(A,g){this.imageCache.set(A,g)}deleteImage(A){return this.imageCache.delete(A)}clearImageCache(){this.imageCache.clear()}clearAll(){this.clearTileResultCache(),this.clearRasterCache(),this.clearReliefMaskCache(),this.clearImageCache()}}class zg{options;tileSize;constructor(A){this.options=A.options,this.tileSize=A.tileSize}createEmptyTile(A){const g=A||this.tileSize,I=this.options.numOfChannels||1,C=new Float32Array(g*g*I);return void 0!==this.options.noDataValue&&C.fill(this.options.noDataValue),C}createTileBuffer(A,g,I=1){const C=g*g*I;switch(A){case"UInt8":return new Uint8Array(C);case"Int8":return new Int8Array(C);case"UInt16":return new Uint16Array(C);case"Int16":return new Int16Array(C);case"UInt32":return new Uint32Array(C);case"Int32":return new Int32Array(C);case"Float32":return new Float32Array(C);case"Float64":return new Float64Array(C);default:return console.warn(`Unsupported data type: ${A}, defaulting to Float32`),new Float32Array(C)}}}const Pg=new Map,Xg={blurredTexture:!0,debugTileStats:!1};class jg{cog;cogZoomLookup=[];cogResolutionLookup=[];cogMeshMaxErrorLookup=[];cogOrigin=[0,0];zoomRange=[0,0];tileSize=256;bounds=[0,0,0,0];bandDescriptions=[];geo=new bg;options;cache=new vg;tileReader;workerPool;initializePromise;lastInitializedUrl;constructor(A){this.options={...Xg,...A},"terrain"!==A.type||"undefined"==typeof Worker||A.disableWorkerPool||(this.workerPool=(Tg||(Tg=new xg),Tg))}async initializeCog(A){if(this.initializePromise&&(!this.cog||this.lastInitializedUrl===A))return this.initializePromise;if(void 0!==this.lastInitializedUrl&&this.lastInitializedUrl!==A){this.cache.clearAll();const A=[];Pg.forEach((g,I)=>{I.startsWith(this.lastInitializedUrl)&&A.push(I)}),A.forEach(A=>Pg.delete(A)),this.cog=void 0,this.cogOrigin=[0,0],this.cogZoomLookup=[],this.cogResolutionLookup=[],this.cogMeshMaxErrorLookup=[],this.tileSize=256,this.zoomRange=[0,0],this.bounds=[0,0,0,0],this.bandDescriptions=[],this.initializePromise=void 0,this.lastInitializedUrl=void 0}return this.cog&&this.lastInitializedUrl===A?this.initializePromise??Promise.resolve():(this.initializePromise=(async()=>{try{const g=this.options.blockSize??65536;this.cog=await async function(A,g={},I){return dg.fromSource(tg(A,g),void 0,I)}(A,{blockSize:g});const I=this.cog.getImage();this.cache.setImage(0,I);const C=await I,e=C.fileDirectory;this.cogOrigin=C.getOrigin(),this.options.noDataValue??=function(A){const g=A.getGDALNoData();if(null==g)return void console.warn("No noData value defined — raster might be rendered incorrectly.");const I=String(g).replace(/\0/g,"").trim();if(""===I)return void console.warn("noData value is an empty string after cleanup.");const C=Number(I);return"nan"===I.toLowerCase()?NaN:Number.isNaN(C)?void console.warn(`Failed to parse numeric noData value: '${I}'`):C}(C),this.options.format??=await async function(A){const g=A.hasTag("SampleFormat"),I=A.hasTag("BitsPerSample");if(!g||!I)return console.warn("Missing SampleFormat or BitsPerSample tags, defaulting to UInt8"),"UInt8";const C=A.getValue("SampleFormat"),e=A.getValue("BitsPerSample"),i=C&&"number"==typeof C.length&&C.length>0?C[0]:C;let t;return t=1===i?"UInt":2===i?"Int":3===i?"Float":"Unknown",`${t}${e&&"number"==typeof e.length&&e.length>0?e[0]:e}`}(e),this.options.numOfChannels=e.getValue("SamplesPerPixel"),this.options.planarConfig=e.getValue("PlanarConfiguration");const i=this.options.numOfChannels??1,t=Array(i).fill("");if(C.fileDirectory.hasTag("GDAL_METADATA")){const A=await C.fileDirectory.loadValue("GDAL_METADATA"),g=/<Item[^>]*name="DESCRIPTION"[^>]*sample="(\d+)"[^>]*>([^<]*)<\/Item>/g;let I;for(;null!==(I=g.exec(A));){const A=parseInt(I[1],10),g=I[2];A<i&&(t[A]=g)}t.every(A=>""===A)&&console.debug("[CogTiles] GDAL_METADATA present but no DESCRIPTION items found")}if(this.bandDescriptions=t,[this.cogZoomLookup,this.cogResolutionLookup]=await async function(A){const g=await A.getImageCount(),I=await A.getImage(0),C=I.getResolution()[0],e=I.getWidth(),i=[],t=[];for(let I=0;I<g;I++){const g=C*(e/(await A.getImage(I)).getWidth()),B=Math.round(Math.log2(156543.03125/g));i[I]=B,t[I]=g}return[i,t]}(this.cog),"terrain"===this.options.type&&this.computeMeshMaxErrorLookup(),this.tileSize=C.getTileWidth(),!this.tileSize||!C.getTileHeight())throw new Error('GeoTIFF Error: The provided image is not tiled. Please use "rio cogeo create --web-optimized" to fix this.');this.zoomRange=Vg(this.tileSize,C.getResolution()[0],await this.cog.getImageCount()),this.bounds=function(A){const g=Math.min(A[0],A[2]),I=Math.max(A[0],A[2]),C=Math.min(A[1],A[3]),e=Math.max(A[1],A[3]),i=Wg([g,C]),t=Wg([I,e]);return[i[0],i[1],t[0],t[1]]}(C.getBoundingBox()),this.tileReader=new zg({options:this.options,tileSize:this.tileSize}),this.lastInitializedUrl=A}catch(g){throw this.initializePromise=void 0,console.error(`[CogTiles] Failed to initialize COG from ${A}:`,g),g}})(),this.initializePromise)}getZoomRange(){return this.zoomRange}getBoundsAsLatLon(){return this.bounds}getNumChannels(){return this.options.numOfChannels||1}getBandDescriptions(){return this.bandDescriptions}getMeshMaxErrorForImageIndex(A){return this.cogMeshMaxErrorLookup[A]}computeMeshMaxErrorLookup(){const A=this.cogZoomLookup[this.cogZoomLookup.length-1],g=this.cogZoomLookup[0];this.cogMeshMaxErrorLookup=this.cogResolutionLookup.map((I,C)=>function(A,g,I,C){const e=function(A,g,I){return A>=I?.5:A<=g?3:3-(A-g)/(I-g)*2.5}(A,I,C),i=g*e;return Math.round(Math.max(.5,Math.min(100,i)))}(this.cogZoomLookup[C],I,A,g))}getImageIndexForZoomLevel(A){return function(A,g){const I=g[g.length-1];if(A>g[0])return 0;if(A<I)return g.length-1;const C=g.indexOf(A);if(-1!==C)return C;let e=0,i=Math.abs(g[0]-A);for(let I=1;I<g.length;I+=1){const C=Math.abs(g[I]-A);C<i&&(i=C,e=I)}return e}(A,this.cogZoomLookup)}async getTileFromImage(A,g,I,C,e){const i=new AbortController;e&&!e.aborted&&e.addEventListener("abort",()=>i.abort(),{once:!0});const t=i.signal;try{const e=this.getImageIndexForZoomLevel(I);let i=this.cache.getImage(e);i||(i=this.cog.getImage(e),this.cache.setImage(e,i));const B=await i,s=this.cogResolutionLookup[e],Q=B.getHeight(),o=B.getWidth(),[a,E]=this.cogOrigin,r=this.tileSize,n=Zg/r/2**I,h=(Og[0]+A*r*n-a)/s,l=(E-(Og[1]-g*r*n))/s,c=C||r,w=Math.round(h),D=Math.round(l),d=w+c,y=D+c,G=Math.max(0,w),u=Math.max(0,D),S=Math.min(o,d),f=Math.min(Q,y),N=S-G,k=f-u;if(N<=0||k<=0)return[this.tileReader.createEmptyTile(c)];const R=G-w,F=u-D,p=[G,u,S,f];if(R>0||F>0||N<c||k<c){const A=this.options.numOfChannels||1,g=this.tileReader.createTileBuffer(this.options.format||"Float32",c,A);void 0!==this.options.noDataValue&&g.fill(this.options.noDataValue);const I=await B.readRasters({window:p,signal:t});for(let C=0;C<I.length;C+=1){const e=this.tileReader.createTileBuffer(this.options.format||"Float32",c);void 0!==this.options.noDataValue&&e.fill(this.options.noDataValue);for(let A=0;A<k;A+=1){const g=F+A,i=g*c,t=A*I.width;for(let A=0;A<N;A+=1){const B=R+A;g<c&&B<c?e[i+B]=I[C][t+A]:console.error(`[CogTiles] tile buffer bounds exceeded: destRow ${g}, destCol ${B}, FETCH_SIZE ${c}`)}}for(let I=0;I<e.length;I+=1)g[I*A+C]=e[I]}return[g]}return[await B.readRasters({window:p,interleave:!0,signal:t})]}catch(A){if(A instanceof AggregateError&&1===A.errors.length){const g=A.errors[0];if(g instanceof DOMException&&"AbortError"===g.name)throw g;if(g instanceof Error&&"Request was aborted"===g.message)throw new DOMException("Tile request aborted","AbortError");throw g}if(t.aborted||A instanceof DOMException&&"AbortError"===A.name||A instanceof Error&&"Request was aborted"===A.message)throw new DOMException("Tile request aborted","AbortError");if(A instanceof AggregateError){if(A.errors.some(A=>A instanceof DOMException&&"AbortError"===A.name||A instanceof Error&&"Request was aborted"===A.message))throw new DOMException("Tile request aborted","AbortError")}throw A}}async getTile(A,g,I,C,e,i,t){const B=Math.atan(Math.sinh(Math.PI*(1-2*(g+.5)/Math.pow(2,I)))),s=Zg/Math.pow(2,I)*Math.cos(B)/this.tileSize,Q="terrain"===this.options.type,o="image"===this.options.type&&this.options.useReliefGlaze;let a=e;if(!Q||e&&0!==e)a=e??4;else{const A=this.getImageIndexForZoomLevel(I);a=this.getMeshMaxErrorForImageIndex(A)??4}return Q?this.getTerrainTile(A,g,I,C,a,s,i,t):o?this.getGlazeTile(A,g,I,C,s,e,i):this.getBitmapTile(A,g,I,C,s,e,i)}async getTerrainTile(A,g,I,C,e,i,t,B){const s=B??this.options.skipTexture??!1;if(this.options.cacheAllBands){if(t?.aborted)return null;const i=this.options.useChannel||1,B=`${this.lastInitializedUrl}_${I}_${A}_${g}_${e}_${s}_band_${i}`;if(Pg.has(B)){const A=Pg.get(B);if(A)return A}try{const B=await this.getTileAllBands(A,g,I,e,void 0,C);if(B&&B.length>0){if(t?.aborted)return null;B.forEach((C,i)=>{const t=i+1,B=`${this.lastInitializedUrl}_${I}_${A}_${g}_${e}_${s}_band_${t}`;Pg.set(B,C)});const C=(i||1)-1;return C<0||C>=B.length?(console.error(`[CogTiles] Requested band index ${C} out of range (0-${B.length-1})`),null):B[C]}}catch(A){console.warn("[CogTiles] Multi-band fetch failed, falling back to single-band:",A)}}const Q=this.cache.getTileResultCacheKey(A,g,I,e,s),o=this.cache.getTileResult(Q);if(o){if(o.settled)return t?.aborted?null:o.promise;o.callerCount+=1,t&&!t.aborted&&t.addEventListener("abort",()=>{o.callerCount-=1,o.callerCount<=0&&!o.settled&&o.controller.abort()},{once:!0});const A=await o.promise;return t?.aborted?null:A}const a=new AbortController,E=(async()=>{const t=this.options.useSlope||this.options.useHillshade||this.options.useSwissRelief,B=this.tileSize+(t?2:1),o=await this.getTileFromImage(A,g,I,B,a.signal),E=o[0],r=this.options.noDataValue;if(void 0!==r&&E){const A=this.options.numOfChannels||1;let g=this.options.useChannelIndex??(this.options.useChannel?this.options.useChannel-1:0);null==g&&(g=0);const I=this.options.noDataCheck??"full",C=B,e=B,i=A=>Lg(A,r);let t=!0;if("full"===I)if(A>1)for(let I=g;I<E.length;I+=A){if(!i(E[I])){t=!1;break}}else for(let A=0;A<E.length;A++){if(!i(E[A])){t=!1;break}}else if("border+center"===I){const I=A;for(let A=0;A<C;A++){if(!i(E[A*I+g])){t=!1;break}}if(t)for(let A=0;A<C;A++){if(!i(E[((e-1)*C+A)*I+g])){t=!1;break}}if(t)for(let A=1;A<e-1;A++){const e=(A*C+(C-1))*I+g,B=E[A*C*I+g],s=E[e];if(!i(B)||!i(s)){t=!1;break}}if(t){const A=[[Math.floor(C/2),Math.floor(e/2)],[Math.floor(C/4),Math.floor(e/4)],[Math.floor(3*C/4),Math.floor(e/4)],[Math.floor(C/4),Math.floor(3*e/4)],[Math.floor(3*C/4),Math.floor(3*e/4)]];for(const[e,B]of A){if(!i(E[(B*C+e)*I+g])){t=!1;break}}}}else for(let A=0;A<E.length;A++){if(!i(E[A])){t=!1;break}}if(t)return this.cache.deleteTileResult(Q),null}const n={...this.options,skipTexture:s};return this.geo.getMap({rasters:[o[0]],width:B,height:B,bounds:C??[0,0,0,0],cellSizeMeters:i},n,e,this.workerPool,a.signal)})(),r={promise:E,controller:a,callerCount:1,settled:!1};t&&!t.aborted&&t.addEventListener("abort",()=>{r.callerCount-=1,r.callerCount<=0&&!r.settled&&r.controller.abort()},{once:!0}),r.promise=E,this.cache.setTileResult(Q,r);try{const A=await E;return r.settled=!0,t?.aborted?null:A}catch(A){throw r.settled=!0,this.cache.deleteTileResult(Q),A}}async getGlazeTile(A,g,I,C,e,i,t){const B=this.cache.getTileCacheKey(A,g,I);let s=this.cache.getReliefMask(B);if(!s){const C=new AbortController;s=(async()=>{const i=await this.getTileFromImage(A,g,I,this.tileSize+2,C.signal);return mg.composeSwissRelief(i[0],this.options,e,this.tileSize,this.tileSize)})(),this.cache.setReliefMask(B,s),s.catch(()=>this.cache.deleteReliefMask(B))}if(t?.aborted)return null;const Q=await s;return t?.aborted?null:this.geo.getMap({rasters:[Q],width:this.tileSize,height:this.tileSize,bounds:C??[0,0,0,0],cellSizeMeters:e},this.options,i??4,this.workerPool,t)}async getBitmapTile(A,g,I,C,e,i,t){const B=this.cache.getTileCacheKey(A,g,I);let s=this.cache.getRaster(B);if(!s){const C=new AbortController;s=this.getTileFromImage(A,g,I,this.tileSize,C.signal),this.cache.setRaster(B,s),s.catch(()=>this.cache.deleteRaster(B))}if(t?.aborted)return null;const Q=await s;return t?.aborted?null:this.geo.getMap({rasters:[Q[0]],width:this.tileSize,height:this.tileSize,bounds:C??[0,0,0,0],cellSizeMeters:e},this.options,i??4,this.workerPool)}async getTileAllBands(A,g,I,C,e,i){if(!this.cog)return[];const t=Math.atan(Math.sinh(Math.PI*(1-2*(g+.5)/Math.pow(2,I)))),B=Zg/Math.pow(2,I)*Math.cos(t)/this.tileSize;let s;if(C&&0!==C)s=C;else{const A=this.getImageIndexForZoomLevel(I);s=this.getMeshMaxErrorForImageIndex(A)??4}const Q=new AbortController;e&&!e.aborted&&e.addEventListener("abort",()=>Q.abort(),{once:!0});const o=Q.signal;try{const C=this.getImageIndexForZoomLevel(I);let t=this.cache.getImage(C);t||(t=this.cog.getImage(C),this.cache.setImage(C,t));const Q=await t,a=this.cogResolutionLookup[C],E=Q.getHeight(),r=Q.getWidth(),[n,h]=this.cogOrigin,l=this.tileSize,c=Og[0],w=Og[1],D=this.options.useSlope||this.options.useHillshade||this.options.useSwissRelief,d=this.tileSize+(D?2:1),y=Zg/l/2**I,G=(c+A*l*y-n)/a,u=(h-(w-g*l*y))/a,S=Math.round(G),f=Math.round(u),N=S+d,k=f+d,R=Math.max(0,S),F=Math.max(0,f),p=Math.min(r,N),L=Math.min(E,k),Y=p-R,U=L-F;if(Y<=0||U<=0)return[];const m=R-S,M=F-f,b=[R,F,p,L],K=await Q.readRasters({window:b,signal:o});if(e?.aborted)return[];const H=[],J=K.length;for(let A=0;A<J;A+=1){const g=K[A],I=this.tileReader.createTileBuffer(this.options.format||"Float32",d);void 0!==this.options.noDataValue&&I.fill(this.options.noDataValue);for(let A=0;A<U;A+=1){const C=M+A,e=C*d,i=A*Y;for(let A=0;A<Y;A+=1){const t=m+A;C<d&&t<d&&(I[e+t]=g[i+A])}}const C={...this.options,useChannel:1,useChannelIndex:0,numOfChannels:1},t=await this.geo.getMap({rasters:[I],width:d,height:d,bounds:i??[0,0,0,0],cellSizeMeters:B},C,s,this.workerPool,e);t&&H.push(t)}return H}catch(A){return e?.aborted||console.error("[CogTiles.getTileAllBands] Error fetching all bands:",A),[]}}clearTileResultCache(){this.cache.clearTileResultCache()}}const _g={type:"object",value:null,validate:(A,g)=>g.optional&&null===A||"string"==typeof A||Array.isArray(A)&&A.every(A=>"string"==typeof A),equal:(A,g)=>{if(A===g)return!0;if(!Array.isArray(A)||!Array.isArray(g))return!1;const I=A.length;if(I!==g.length)return!1;for(let C=0;C<I;C++)if(A[C]!==g[C])return!1;return!0}},$g={...g.TileLayer.defaultProps,bounds:{type:"array",value:null,optional:!0,compare:!0},rasterData:_g,clampToTerrain:!1,workerUrl:""};class AI extends A.CompositeLayer{static defaultProps=$g;static layerName="CogBitmapLayer";async initializeState(A){super.initializeState(A),this.setState({bitmapCogTiles:this.props.cogTiles||new jg(this.props.cogBitmapOptions),initialized:!1}),await this.init()}async init(){await this.state.bitmapCogTiles.initializeCog(this.props.rasterData);const A=this.state.bitmapCogTiles.getZoomRange(),[g,I]=A;this.setState({initialized:!0,minZoom:g,maxZoom:I})}updateState({props:g,oldProps:I}){const C=g.rasterData!==I.rasterData;if(C){const{rasterData:A}=g,I=A&&(Array.isArray(A)||A.includes("{x}")&&A.includes("{y}")||this.props.isTiled);this.setState({isTiled:I})}C||(g.bounds,I.bounds);this.state.isTiled,g?.cogBitmapOptions?.useChannel!==I.cogBitmapOptions?.useChannel&&(this.state.bitmapCogTiles.options.useChannel=g.cogBitmapOptions.useChannel,this.state.bitmapCogTiles.options.useChannelIndex=null),g.workerUrl&&A.log.removed("workerUrl","loadOptions.terrain.workerUrl")()}async getTiledBitmapData(A){let g;try{g=await this.state.bitmapCogTiles.getTile(A.index.x,A.index.y,A.index.z,void 0,void 0,A.signal)}catch(A){if(A instanceof DOMException&&"AbortError"===A.name)return null;throw A}return g&&!this.props.pickable&&(g.raw=null),g}renderSubLayers(A){const g=this.getSubLayerClass("image",I.BitmapLayer),{blurredTexture:e}=this.state.bitmapCogTiles.options,{clampToTerrain:i}=this.props,t="object"==typeof i&&null!==i&&"terrainDrawMode"in i,{data:B}=A;if(!B)return null;const{bbox:{west:s,south:Q,east:o,north:a}}=A.tile;return new g({...A,tileSize:this.state.bitmapCogTiles.tileSize},{data:[1],image:B.map,_instanced:!1,pickable:A.pickable,bounds:[s,Q,o,a],textureParameters:{minFilter:e?"linear":"nearest",magFilter:e?"linear":"nearest"},extensions:i?[new C._TerrainExtension]:[],...t?{terrainDrawMode:i.terrainDrawMode}:{}})}renderLayers(){const{clampToTerrain:A,maxRequests:I,onTileLoad:C,onTileUnload:e,onTileError:i,maxCacheSize:t,maxCacheByteSize:B,refinementStrategy:s,cogBitmapOptions:Q}=this.props;if(this.state.isTiled&&this.state.initialized){const{tileSize:o}=this.state.bitmapCogTiles;return new g.TileLayer(this.getSubLayerProps({id:"tiles"}),{getTileData:this.getTiledBitmapData.bind(this),renderSubLayers:this.renderSubLayers.bind(this),pickable:this.props.pickable,onClick:this.props.onClick,updateTriggers:{getTileData:[A,Q.useChannel]},extent:this.state.bitmapCogTiles.getBoundsAsLatLon(),tileSize:o,minZoom:this.state.minZoom,maxZoom:this.state.maxZoom,maxRequests:I,onTileLoad:C,onTileUnload:e,onTileError:i,maxCacheSize:t,maxCacheByteSize:B,refinementStrategy:s})}return null}}const gI={type:"object",value:null,validate:(A,g)=>g.optional&&null===A||"string"==typeof A||Array.isArray(A)&&A.every(A=>"string"==typeof A),equal:(A,g)=>{if(A===g)return!0;if(!Array.isArray(A)||!Array.isArray(g))return!1;const I=A.length;if(I!==g.length)return!1;for(let C=0;C<I;C++)if(A[C]!==g[C])return!1;return!0}},II=[1],CI={...g.TileLayer.defaultProps,elevationData:gI,texture:{...gI,optional:!0},meshMaxError:{type:"object",value:"auto",validate:A=>"number"==typeof A||"auto"===A,equal:(A,g)=>A===g},bounds:{type:"array",value:null,optional:!0,compare:!0},color:{type:"color",value:[255,255,255]},elevationDecoder:{type:"object",value:{rScaler:1,gScaler:0,bScaler:0,offset:0}},workerUrl:"",wireframe:!1,material:!0,enableProgressiveLoading:!0};class eI extends A.CompositeLayer{static defaultProps=CI;static layerName="CogTerrainLayer";terrainUrl="";zRangeUpdateTimeoutId=null;lastZRangeValue=null;async initializeState(A){super.initializeState(A);const g=this.props.cogTiles||new jg(this.props.terrainOptions);if(this.setState({terrainCogTiles:g,initialized:!1,overviewLoaded:!1}),g.cog){const A=g.getZoomRange(),[I,C]=A;this.setState({initialized:!0,minZoom:I,maxZoom:C})}else await this.init()}async init(){await this.state.terrainCogTiles.initializeCog(this.props.elevationData);const A=this.state.terrainCogTiles.getZoomRange(),[g,I]=A;this.setState({initialized:!0,minZoom:g,maxZoom:I})}updateState({props:g,oldProps:I}){const C=g.elevationData!==I.elevationData;if(C){const{elevationData:A}=g,I=A&&(Array.isArray(A)||A.includes("{x}")&&A.includes("{y}"))||this.props.isTiled;this.setState({isTiled:I})}C||g.meshMaxError!==I.meshMaxError||g.elevationDecoder!==I.elevationDecoder||(g.bounds,I.bounds);g.meshMaxError!==I.meshMaxError&&this.state.terrainCogTiles&&this.state.terrainCogTiles.clearTileResultCache(),this.state.isTiled,g?.terrainOptions?.useChannel!==I.terrainOptions?.useChannel&&this.state.terrainCogTiles&&(this.state.terrainCogTiles.options.useChannel=g.terrainOptions.useChannel,this.state.terrainCogTiles.options.useChannelIndex=null,this.state.terrainCogTiles.clearTileResultCache());(g?.terrainOptions?.useHillshade!==I.terrainOptions?.useHillshade||g?.terrainOptions?.useSlope!==I.terrainOptions?.useSlope||g?.terrainOptions?.useSwissRelief!==I.terrainOptions?.useSwissRelief||g?.terrainOptions?.hillshadeAzimuth!==I.terrainOptions?.hillshadeAzimuth||g?.terrainOptions?.hillshadeAltitude!==I.terrainOptions?.hillshadeAltitude||g?.terrainOptions?.zFactor!==I.terrainOptions?.zFactor)&&this.state.terrainCogTiles&&(this.state.terrainCogTiles.options.useHillshade=g.terrainOptions?.useHillshade,this.state.terrainCogTiles.options.useSlope=g.terrainOptions?.useSlope,this.state.terrainCogTiles.options.useSwissRelief=g.terrainOptions?.useSwissRelief,this.state.terrainCogTiles.options.hillshadeAzimuth=g.terrainOptions?.hillshadeAzimuth,this.state.terrainCogTiles.options.hillshadeAltitude=g.terrainOptions?.hillshadeAltitude,this.state.terrainCogTiles.options.zFactor=g.terrainOptions?.zFactor,this.state.terrainCogTiles.clearTileResultCache());const e=!(!g?.wireframe&&"terrain"!==g?.operation&&!g?.disableTexture);if(e!==!(!I?.wireframe&&"terrain"!==I?.operation&&!I?.disableTexture)&&this.state.terrainCogTiles&&(this.state.terrainCogTiles.options.skipTexture=e,this.state.terrainCogTiles.clearTileResultCache()),g.cogTiles&&g.cogTiles!==I.cogTiles){const A={terrainCogTiles:g.cogTiles};this.props.enableProgressiveLoading&&(A.overviewLoaded=!1),this.setState(A)}else C&&this.props.enableProgressiveLoading&&this.setState({overviewLoaded:!1});g.workerUrl&&A.log.removed("workerUrl","loadOptions.terrain.workerUrl")()}loadTerrain({elevationData:A,bounds:g,elevationDecoder:I,meshMaxError:C,signal:e}){if(!A)return null;let i=this.getLoadOptions();i={...i,_workerType:"test",terrain:{skirtHeight:this.state.isTiled?2*C:0,...i?.terrain,bounds:g,meshMaxError:C,elevationDecoder:I}};const{fetch:t}=this.props;return t(A,{propName:"elevationData",layer:this,loadOptions:i,signal:e,loaders:[]})}async getTiledTerrainData(A){const{viewport:g}=this.context;let I=[0,0],C=[0,0];if(g.isGeospatial){const e=A.bbox;I=g.projectFlat([e.west,e.south]),C=g.projectFlat([e.east,e.north])}else{const g=A.bbox;I=[g.left,g.bottom],C=[g.right,g.top]}const e=[I[0],I[1],C[0],C[1]];let i=null;try{const g=!(!this.props.wireframe&&"terrain"!==this.props.operation&&!this.props.disableTexture),I="auto"===this.props.meshMaxError?void 0:this.props.meshMaxError;i=await this.state.terrainCogTiles.getTile(A.index.x,A.index.y,A.index.z,e,I,A.signal,g)}catch(A){if(A instanceof DOMException&&"AbortError"===A.name)return null;throw A}return i&&!this.props.pickable&&(i.raw=null),i?[i,null]:null}renderSubLayers(g){const I=this.getSubLayerClass("mesh",B.SimpleMeshLayer),{color:C,wireframe:e,terrainOptions:i}=this.props,{data:t}=g;if(!t)return null;const[s]=t,Q=!this.props.disableTexture&&s?.texture?s.texture:null,o=i?.useSwissRelief,a=i?.disableLighting,E=o||a?{material:{ambient:1,diffuse:0,shininess:0,specularColor:[0,0,0]}}:{material:this.props.material};return new I({...g,tileSize:g.tileSize},{...E,data:II,mesh:s?.map,texture:Q,_instanced:!1,pickable:g.pickable,coordinateSystem:A.COORDINATE_SYSTEM.CARTESIAN,getPolygonOffset:null!=this.props.getPolygonOffset&&this.props.getPolygonOffset!==(eI.defaultProps.getPolygonOffset?.value??eI.defaultProps.getPolygonOffset)?this.props.getPolygonOffset:()=>[0,-1e3*(g.tile?.index?.z??0)],getColor:Q?[255,255,255]:C,wireframe:e,parameters:this.props.parameters})}onViewportLoad(A){if(!A)return;const{zRange:g}=this.state,I=A.map(A=>A.content).filter(A=>!!A&&!!A[0]).map(A=>{if(!A||!A[0])return;const g=A[0]?.map?.header?.boundingBox;return g?.map(A=>A[2])}).filter(A=>void 0!==A);if(0===I.length)return;const C=I.map(A=>A?.[0]).filter(A=>void 0!==A&&Number.isFinite(A)),e=I.map(A=>A?.[1]).filter(A=>void 0!==A&&Number.isFinite(A));if(0===C.length||0===e.length)return;const i=Math.min(...C),t=Math.max(...e);if(!g||i<g[0]||t>g[1]){const A=[Number.isFinite(i)?i:0,Number.isFinite(t)?t:0];this.setState({zRange:A}),null!==this.zRangeUpdateTimeoutId&&clearTimeout(this.zRangeUpdateTimeoutId),this.lastZRangeValue=A,this.zRangeUpdateTimeoutId=setTimeout(()=>{this.props.onZRangeUpdate?.(this.lastZRangeValue),this.zRangeUpdateTimeoutId=null},200)}}renderLayers(){const{elevationData:A,meshMaxError:I,elevationDecoder:C,tileSize:e,extent:i,maxRequests:t,onTileUnload:B,onTileError:s,maxCacheSize:Q,maxCacheByteSize:o,refinementStrategy:a}=this.props;if(!this.state.isTiled||!this.state.initialized)return null;let E=this.state.minZoom,r=this.state.maxZoom;return void 0!==this.props.zoomOverride?(E=this.props.zoomOverride,r=this.props.zoomOverride):this.props.enableProgressiveLoading&&!this.state.overviewLoaded&&(E=this.state.minZoom,r=this.state.minZoom),new g.TileLayer(this.getSubLayerProps({id:"tiles"}),{getTileData:this.getTiledTerrainData.bind(this),renderSubLayers:this.renderSubLayers.bind(this),pickable:this.props.pickable,onClick:this.props.onClick,updateTriggers:{getTileData:{elevationData:(n=A,Array.isArray(n)?n.join(";"):n||""),meshMaxError:I,elevationDecoder:C,terrainCogTiles:this.state.terrainCogTiles,skipTexture:!(!this.props.wireframe&&"terrain"!==this.props.operation&&!this.props.disableTexture),useChannel:this.props.terrainOptions?.useChannel,...void 0!==this.props.terrainOptions?.useHillshade&&{useHillshade:this.props.terrainOptions.useHillshade},...void 0!==this.props.terrainOptions?.useSlope&&{useSlope:this.props.terrainOptions.useSlope},...void 0!==this.props.terrainOptions?.useSwissRelief&&{useSwissRelief:this.props.terrainOptions.useSwissRelief},...void 0!==this.props.terrainOptions?.hillshadeAzimuth&&{hillshadeAzimuth:this.props.terrainOptions.hillshadeAzimuth},...void 0!==this.props.terrainOptions?.hillshadeAltitude&&{hillshadeAltitude:this.props.terrainOptions.hillshadeAltitude},...void 0!==this.props.terrainOptions?.zFactor&&{zFactor:this.props.terrainOptions.zFactor}},renderSubLayers:{disableTexture:this.props.disableTexture,terrainOptions:this.props.terrainOptions}},onViewportLoad:this.onViewportLoad.bind(this),zRange:this.state.zRange||null,tileSize:e,minZoom:E,maxZoom:r,extent:i,maxRequests:t,onTileLoad:A=>{this.props.enableProgressiveLoading&&A.index.z===this.state.minZoom&&!this.state.overviewLoaded&&this.setState({overviewLoaded:!0}),this.props.onTileLoad?.(A)},onTileUnload:B,onTileError:s,maxCacheSize:Q,maxCacheByteSize:o,refinementStrategy:a});var n}_finalize(){null!==this.zRangeUpdateTimeoutId&&(clearTimeout(this.zRangeUpdateTimeoutId),this.zRangeUpdateTimeoutId=null),super._finalize?.()}}Q();var iI=Object.freeze({__proto__:null,default:class extends lg{decodeBlock(A){return A}}});function tI(A,g){for(let I=g.length-1;I>=0;I--)A.push(g[I]);return A}function BI(A){const g=new Uint16Array(4093),I=new Uint8Array(4093);for(let A=0;A<=257;A++)g[A]=4096,I[A]=A;let C=258,e=9,i=0;function t(){C=258,e=9}function B(A){const g=function(A,g,I){const C=g%8,e=Math.floor(g/8),i=8-C,t=g+I-8*(e+1);let B=8*(e+2)-(g+I);const s=8*(e+2)-g;if(B=Math.max(0,B),e>=A.length)return console.warn("ran off the end of the buffer before finding EOI_CODE (end on input code)"),257;let Q=A[e]&2**(8-C)-1;Q<<=I-i;let o=Q;if(e+1<A.length){let g=A[e+1]>>>B;g<<=Math.max(0,I-s),o+=g}if(t>8&&e+2<A.length){const C=8*(e+3)-(g+I);o+=A[e+2]>>>C}return o}(A,i,e);return i+=e,g}function s(A,e){return I[C]=e,g[C]=A,C++,C-1}function Q(A){const C=[];for(let e=A;4096!==e;e=g[e])C.push(I[e]);return C}const o=[];t();const a=new Uint8Array(A);let E,r=B(a);for(;257!==r;){if(256===r){for(t(),r=B(a);256===r;)r=B(a);if(257===r)break;if(r>256)throw new Error(`corrupted code at scanline ${r}`);tI(o,Q(r)),E=r}else if(r<C){const A=Q(r);tI(o,A),void 0!==E&&s(E,A[A.length-1]),E=r}else{if(void 0===E)throw new Error(`Invalid LZW code: ${r} with no previous code`);const A=Q(E);if(!A)throw new Error(`Bogus entry. Not in dictionary, ${E} / ${C}, position: ${i}`);tI(o,A),o.push(A[A.length-1]),s(E,A[A.length-1]),E=r}C+1>=2**e&&(12===e?E=void 0:e++),r=B(a)}return new Uint8Array(o)}var sI=Object.freeze({__proto__:null,default:class extends lg{decodeBlock(A){return BI(A).buffer}}});const QI=new Int32Array([0,1,8,16,9,2,3,10,17,24,32,25,18,11,4,5,12,19,26,33,40,48,41,34,27,20,13,6,7,14,21,28,35,42,49,56,57,50,43,36,29,22,15,23,30,37,44,51,58,59,52,45,38,31,39,46,53,60,61,54,47,55,62,63]),oI=4017,aI=799,EI=3406,rI=2276,nI=1567,hI=3784,lI=5793,cI=2896;function wI(A,g){let I=0;const C=[];let e=16;for(;e>0&&!A[e-1];)--e;C.push({children:[],index:0});let i,t=C[0];for(let B=0;B<e;B++){for(let e=0;e<A[B];e++){if(t=C.pop(),!t)throw new Error("buildHuffmanTable: codeLength mismatch");for(t.children[t.index]=g[I];t.index>0;)if(t=C.pop(),!t)throw new Error("buildHuffmanTable: codeLength mismatch");for(t.index++,C.push(t);C.length<=B;)C.push(i={children:[],index:0}),t.children[t.index]=i.children,t=i;I++}B+1<e&&(C.push(i={children:[],index:0}),t.children[t.index]=i.children,t=i)}return C[0].children}function DI(A,g,I,C,e,i,t,B,s){const{mcusPerLine:Q,progressive:o}=I;if(C.length>1&&(void 0===Q||void 0===I.mcusPerColumn))throw new Error("Missing MCU dimensions");if(1===C.length&&(void 0===C[0].blocksPerLine||void 0===C[0].blocksPerColumn))throw new Error("Missing block dimensions");const a=g;let E=g,r=0,n=0;function h(){if(n>0)return n--,r>>n&1;if(r=A[E++],255===r){const g=A[E++];if(g)throw new Error(`unexpected marker: ${(r<<8|g).toString(16)}`)}return n=7,r>>>7}function l(A){if(!A)throw new Error("Huffman table not found");let g,I=A;for(;null!==(g=h());){const A=I[g];if("number"==typeof A)return A;if("object"!=typeof A)throw new Error("invalid huffman sequence");I=A}return null}function c(A){let g=A,I=0;for(;g>0;){const A=h();if(null===A)return;I=I<<1|A,--g}return I}function w(A){const g=c(A);if(void 0!==g)return g>=1<<A-1?g:g+(-1<<A)+1}let D=0;let d,y=0;function G(A,g,I,C,e){const i=I%Q,t=(I/Q|0)*A.v+C,B=i*A.h+e;if(!A.blocks)throw new Error("Missing blocks");g(A,A.blocks[t][B])}function u(A,g,I){const C=I/A.blocksPerLine|0,e=I%A.blocksPerLine;if(!A.blocks)throw new Error("Missing blocks");g(A,A.blocks[C][e])}const S=C.length;let f,N,k,R,F,p;p=o?0===i?0===B?function(A,g){const I=l(A.huffmanTableDC);if(null===I)throw new Error("Huffman error");const C=w(I);if(void 0===C)throw new Error("Unexpected end of data in DC coefficient decoding");const e=0===I?0:C<<s;void 0===A.pred&&(A.pred=0),A.pred+=e,g[0]=A.pred}:function(A,g){const I=h();if(null===I)throw new Error("Unexpected end of data in DC coefficient decoding");g[0]|=I<<s}:0===B?function(A,g){if(D>0)return void D--;let I=i;const C=t;for(;I<=C;){const C=l(A.huffmanTableAC);if(null===C)throw new Error("Unexpected end of data in AC coefficient decoding");const e=15&C,i=C>>4;if(0===e){if(i<15){const A=c(i);if(void 0===A)throw new Error("Unexpected end of data in AC coefficient decoding");D=A+(1<<i)-1;break}I+=16}else{I+=i;const A=QI[I],C=w(e);if(void 0===C)throw new Error("Unexpected end of data in AC coefficient decoding");g[A]=C*(1<<s),I++}}}:function(A,g){let I=i;const C=t;let e=0;for(;I<=C;){const C=QI[I],i=g[C]<0?-1:1;switch(y){case 0:{const g=l(A.huffmanTableAC);if(null===g)throw new Error("Unexpected end of data in AC coefficient decoding");const I=15&g;if(e=g>>4,0===I)if(e<15){const A=c(e);if(void 0===A)throw new Error("Unexpected end of data in AC coefficient decoding");D=A+(1<<e),y=4}else e=16,y=1;else{if(1!==I)throw new Error("invalid ACn encoding");const A=w(I);if(void 0===A)throw new Error("Unexpected end of data in AC coefficient decoding");d=A,y=e?2:3}continue}case 1:case 2:if(g[C]){const A=h();if(null===A)throw new Error("Unexpected end of data in AC coefficient decoding");g[C]+=(A<<s)*i}else e--,0===e&&(y=2===y?3:0);break;case 3:if(g[C]){const A=h();if(null===A)throw new Error("Unexpected end of data in AC coefficient decoding");g[C]+=(A<<s)*i}else g[C]=d<<s,y=0;break;case 4:if(g[C]){const A=h();if(null===A)throw new Error("Unexpected end of data in AC coefficient decoding");g[C]+=(A<<s)*i}}I++}4===y&&(D--,0===D&&(y=0))}:function(A,g){const I=l(A.huffmanTableDC);if(null===I)throw new Error("Huffman error");const C=0===I?0:w(I);if(void 0===C)throw new Error("Unexpected end of stream");void 0===A.pred&&(A.pred=0),A.pred+=C,g[0]=A.pred;let e=1;for(;e<64;){const I=l(A.huffmanTableAC);if(null===I)throw new Error("Unexpected end of data in AC coefficient decoding");const C=15&I,i=I>>4;if(0===C){if(i<15)break;e+=16}else{e+=i;const A=QI[e],I=w(C);if(void 0===I)throw new Error("Unexpected end of stream");g[A]=I,e++}}};let L,Y,U=0;Y=1===S?C[0].blocksPerLine*C[0].blocksPerColumn:Q*I.mcusPerColumn;const m=e||Y;for(;U<Y;){for(N=0;N<S;N++)C[N].pred=0;if(D=0,1===S)for(f=C[0],F=0;F<m;F++)u(f,p,U),U++;else for(F=0;F<m;F++){for(N=0;N<S;N++){f=C[N];const{h:A,v:g}=f;for(k=0;k<g;k++)for(R=0;R<A;R++)G(f,p,U,k,R)}if(U++,U===Y)break}if(n=0,L=A[E]<<8|A[E+1],L<65280)throw new Error("marker was not found");if(!(L>=65488&&L<=65495))break;E+=2}return E-a}function dI(A){const g=[],{blocksPerLine:I,blocksPerColumn:C}=A;if(!I||!C||!A.blocks)throw new Error("Missing component data");const e=I<<3,i=new Int32Array(64),t=new Uint8Array(64);function B(g,I,C){const e=A.quantizationTable;if(!e)throw new Error("No quantization table found");let i,t,B,s,Q,o,a,E,r;const n=C;let h;for(h=0;h<64;h++)n[h]=g[h]*e[h];for(h=0;h<8;++h){const A=8*h;0!==n[1+A]||0!==n[2+A]||0!==n[3+A]||0!==n[4+A]||0!==n[5+A]||0!==n[6+A]||0!==n[7+A]?(i=lI*n[0+A]+128>>8,t=lI*n[4+A]+128>>8,B=n[2+A],s=n[6+A],Q=cI*(n[1+A]-n[7+A])+128>>8,E=cI*(n[1+A]+n[7+A])+128>>8,o=n[3+A]<<4,a=n[5+A]<<4,r=i-t+1>>1,i=i+t+1>>1,t=r,r=B*hI+s*nI+128>>8,B=B*nI-s*hI+128>>8,s=r,r=Q-a+1>>1,Q=Q+a+1>>1,a=r,r=E+o+1>>1,o=E-o+1>>1,E=r,r=i-s+1>>1,i=i+s+1>>1,s=r,r=t-B+1>>1,t=t+B+1>>1,B=r,r=Q*rI+E*EI+2048>>12,Q=Q*EI-E*rI+2048>>12,E=r,r=o*aI+a*oI+2048>>12,o=o*oI-a*aI+2048>>12,a=r,n[0+A]=i+E,n[7+A]=i-E,n[1+A]=t+a,n[6+A]=t-a,n[2+A]=B+o,n[5+A]=B-o,n[3+A]=s+Q,n[4+A]=s-Q):(r=lI*n[0+A]+512>>10,n[0+A]=r,n[1+A]=r,n[2+A]=r,n[3+A]=r,n[4+A]=r,n[5+A]=r,n[6+A]=r,n[7+A]=r)}for(h=0;h<8;++h){const A=h;0!==n[8+A]||0!==n[16+A]||0!==n[24+A]||0!==n[32+A]||0!==n[40+A]||0!==n[48+A]||0!==n[56+A]?(i=lI*n[0+A]+2048>>12,t=lI*n[32+A]+2048>>12,B=n[16+A],s=n[48+A],Q=cI*(n[8+A]-n[56+A])+2048>>12,E=cI*(n[8+A]+n[56+A])+2048>>12,o=n[24+A],a=n[40+A],r=i-t+1>>1,i=i+t+1>>1,t=r,r=B*hI+s*nI+2048>>12,B=B*nI-s*hI+2048>>12,s=r,r=Q-a+1>>1,Q=Q+a+1>>1,a=r,r=E+o+1>>1,o=E-o+1>>1,E=r,r=i-s+1>>1,i=i+s+1>>1,s=r,r=t-B+1>>1,t=t+B+1>>1,B=r,r=Q*rI+E*EI+2048>>12,Q=Q*EI-E*rI+2048>>12,E=r,r=o*aI+a*oI+2048>>12,o=o*oI-a*aI+2048>>12,a=r,n[0+A]=i+E,n[56+A]=i-E,n[8+A]=t+a,n[48+A]=t-a,n[16+A]=B+o,n[40+A]=B-o,n[24+A]=s+Q,n[32+A]=s-Q):(r=lI*C[h+0]+8192>>14,n[0+A]=r,n[8+A]=r,n[16+A]=r,n[24+A]=r,n[32+A]=r,n[40+A]=r,n[48+A]=r,n[56+A]=r)}for(h=0;h<64;++h){const A=128+(n[h]+8>>4);I[h]=A<0?0:A>255?255:A}}for(let s=0;s<C;s++){const C=s<<3;for(let A=0;A<8;A++)g.push(new Uint8Array(e));for(let e=0;e<I;e++){B(A.blocks[s][e],t,i);let I=0;const Q=e<<3;for(let A=0;A<8;A++){const e=g[C+A];for(let A=0;A<8;A++)e[Q+A]=t[I++]}}}return g}class yI{constructor(){this.jfif=null,this.adobe=null,this.resetInterval=0,this.quantizationTables=[],this.huffmanTablesAC=[],this.huffmanTablesDC=[],this.frames=[]}resetFrames(){this.frames=[]}parse(A){let g=0;function I(){const I=A[g]<<8|A[g+1];return g+=2,I}function C(){const C=I(),e=A.subarray(g,g+C-2);return g+=e.length,e}function e(A){let g,I,C=0,e=0;for(I in A.components)A.components.hasOwnProperty(I)&&(g=A.components[I],C<g.h&&(C=g.h),e<g.v&&(e=g.v));const i=Math.ceil(A.samplesPerLine/8/C),t=Math.ceil(A.scanLines/8/e);for(I in A.components)if(A.components.hasOwnProperty(I)){g=A.components[I];const B=Math.ceil(Math.ceil(A.samplesPerLine/8)*g.h/C),s=Math.ceil(Math.ceil(A.scanLines/8)*g.v/e),Q=i*g.h,o=t*g.v,a=[];for(let A=0;A<o;A++){const A=[];for(let g=0;g<Q;g++)A.push(new Int32Array(64));a.push(A)}g.blocksPerLine=B,g.blocksPerColumn=s,g.blocks=a}A.maxH=C,A.maxV=e,A.mcusPerLine=i,A.mcusPerColumn=t}let i=I();if(65496!==i)throw new Error("SOI not found");for(i=I();65497!==i;){switch(i){case 65280:break;case 65504:case 65505:case 65506:case 65507:case 65508:case 65509:case 65510:case 65511:case 65512:case 65513:case 65514:case 65515:case 65516:case 65517:case 65518:case 65519:case 65534:{const A=C();65504===i&&74===A[0]&&70===A[1]&&73===A[2]&&70===A[3]&&0===A[4]&&(this.jfif={version:{major:A[5],minor:A[6]},densityUnits:A[7],xDensity:A[8]<<8|A[9],yDensity:A[10]<<8|A[11],thumbWidth:A[12],thumbHeight:A[13],thumbData:A.subarray(14,14+3*A[12]*A[13])}),65518===i&&65===A[0]&&100===A[1]&&111===A[2]&&98===A[3]&&101===A[4]&&0===A[5]&&(this.adobe={version:A[6],flags0:A[7]<<8|A[8],flags1:A[9]<<8|A[10],transformCode:A[11]});break}case 65499:{const C=I()+g-2;for(;g<C;){const C=A[g++],e=new Int32Array(64);if(C>>4){if(C>>4!=1)throw new Error("DQT: invalid table spec");for(let A=0;A<64;A++){e[QI[A]]=I()}}else for(let I=0;I<64;I++){e[QI[I]]=A[g++]}this.quantizationTables[15&C]=e}break}case 65472:case 65473:case 65474:{I();const C={extended:65473===i,progressive:65474===i,precision:A[g++],scanLines:I(),samplesPerLine:I(),components:{},componentsOrder:[],maxH:0,maxV:0,mcusPerLine:0,mcusPerColumn:0},t=A[g++];let B;for(let I=0;I<t;I++){B=A[g];const I=A[g+1]>>4,e=15&A[g+1],i=A[g+2];C.componentsOrder.push(B),C.components[B]={h:I,v:e,quantizationIdx:i,blocksPerLine:0,blocksPerColumn:0,blocks:[]},g+=3}e(C),this.frames.push(C);break}case 65476:{const C=I();for(let I=2;I<C;){const C=A[g++],e=new Uint8Array(16);let i=0;for(let I=0;I<16;I++,g++)e[I]=A[g],i+=e[I];const t=new Uint8Array(i);for(let I=0;I<i;I++,g++)t[I]=A[g];I+=17+i,C>>4?this.huffmanTablesAC[15&C]=wI(e,t):this.huffmanTablesDC[15&C]=wI(e,t)}break}case 65501:I(),this.resetInterval=I();break;case 65498:{I();const C=A[g++],e=[],i=this.frames[0];for(let I=0;I<C;I++){const I=i.components[A[g++]],C=A[g++];I.huffmanTableDC=this.huffmanTablesDC[C>>4],I.huffmanTableAC=this.huffmanTablesAC[15&C],e.push(I)}const t=A[g++],B=A[g++],s=A[g++],Q=DI(A,g,i,e,this.resetInterval,t,B,s>>4,15&s);g+=Q;break}case 65535:255!==A[g]&&g--;break;default:if(255===A[g-3]&&A[g-2]>=192&&A[g-2]<=254){g-=3;break}throw new Error(`unknown JPEG marker ${i.toString(16)}`)}i=I()}}getResult(){const{frames:A}=this;if(0===this.frames.length)throw new Error("no frames were decoded");this.frames.length>1&&console.warn("more than one frame is not supported");for(let A=0;A<this.frames.length;A++){const g=this.frames[A].components;for(const A of Object.keys(g)){const I=g[A].quantizationIdx;"number"==typeof I&&(g[A].quantizationTable=this.quantizationTables[I],delete g[A].quantizationIdx)}}const g=A[0];if(!g.maxH||!g.maxV)throw new Error("Invalid frame dimensions");const{components:I,componentsOrder:C}=g,e=[],i=g.samplesPerLine,t=g.scanLines;for(let A=0;A<C.length;A++){const i=I[C[A]];e.push({lines:dI(i),scaleX:i.h/g.maxH,scaleY:i.v/g.maxV})}const B=new Uint8Array(i*t*e.length);let s=0;for(let A=0;A<t;++A)for(let g=0;g<i;++g)for(let I=0;I<e.length;++I){const C=e[I];B[s]=C.lines[0|A*C.scaleY][0|g*C.scaleX],++s}return B}}var GI=Object.freeze({__proto__:null,default:class extends lg{constructor(A){super(A),this.reader=new yI,A.JPEGTables&&this.reader.parse(A.JPEGTables)}decodeBlock(A){return this.reader.resetFrames(),this.reader.parse(new Uint8Array(A)),this.reader.getResult().buffer}}});function uI(A){let g=A.length;for(;--g>=0;)A[g]=0}uI(new Array(576));uI(new Array(60));uI(new Array(512));uI(new Array(256));uI(new Array(29));uI(new Array(30));var SI=(A,g,I,C)=>{let e=65535&A,i=A>>>16&65535,t=0;for(;0!==I;){t=I>2e3?2e3:I,I-=t;do{e=e+g[C++]|0,i=i+e|0}while(--t);e%=65521,i%=65521}return e|i<<16};const fI=new Uint32Array((()=>{let A,g=[];for(var I=0;I<256;I++){A=I;for(var C=0;C<8;C++)A=1&A?3988292384^A>>>1:A>>>1;g[I]=A}return g})());var NI=(A,g,I,C)=>{const e=fI,i=C+I;A^=-1;for(let I=C;I<i;I++)A=A>>>8^e[255&(A^g[I])];return-1^A},kI={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"},RI={Z_NO_FLUSH:0,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_DEFLATED:8};const FI=(A,g)=>Object.prototype.hasOwnProperty.call(A,g);var pI=function(A){const g=Array.prototype.slice.call(arguments,1);for(;g.length;){const I=g.shift();if(I){if("object"!=typeof I)throw new TypeError(I+"must be non-object");for(const g in I)FI(I,g)&&(A[g]=I[g])}}return A},LI=A=>{let g=0;for(let I=0,C=A.length;I<C;I++)g+=A[I].length;const I=new Uint8Array(g);for(let g=0,C=0,e=A.length;g<e;g++){let e=A[g];I.set(e,C),C+=e.length}return I};let YI=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(A){YI=!1}const UI=new Uint8Array(256);for(let A=0;A<256;A++)UI[A]=A>=252?6:A>=248?5:A>=240?4:A>=224?3:A>=192?2:1;UI[254]=UI[254]=1;var mI=A=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(A);let g,I,C,e,i,t=A.length,B=0;for(e=0;e<t;e++)I=A.charCodeAt(e),55296==(64512&I)&&e+1<t&&(C=A.charCodeAt(e+1),56320==(64512&C)&&(I=65536+(I-55296<<10)+(C-56320),e++)),B+=I<128?1:I<2048?2:I<65536?3:4;for(g=new Uint8Array(B),i=0,e=0;i<B;e++)I=A.charCodeAt(e),55296==(64512&I)&&e+1<t&&(C=A.charCodeAt(e+1),56320==(64512&C)&&(I=65536+(I-55296<<10)+(C-56320),e++)),I<128?g[i++]=I:I<2048?(g[i++]=192|I>>>6,g[i++]=128|63&I):I<65536?(g[i++]=224|I>>>12,g[i++]=128|I>>>6&63,g[i++]=128|63&I):(g[i++]=240|I>>>18,g[i++]=128|I>>>12&63,g[i++]=128|I>>>6&63,g[i++]=128|63&I);return g},MI=(A,g)=>{const I=g||A.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(A.subarray(0,g));let C,e;const i=new Array(2*I);for(e=0,C=0;C<I;){let g=A[C++];if(g<128){i[e++]=g;continue}let t=UI[g];if(t>4)i[e++]=65533,C+=t-1;else{for(g&=2===t?31:3===t?15:7;t>1&&C<I;)g=g<<6|63&A[C++],t--;t>1?i[e++]=65533:g<65536?i[e++]=g:(g-=65536,i[e++]=55296|g>>10&1023,i[e++]=56320|1023&g)}}return((A,g)=>{if(g<65534&&A.subarray&&YI)return String.fromCharCode.apply(null,A.length===g?A:A.subarray(0,g));let I="";for(let C=0;C<g;C++)I+=String.fromCharCode(A[C]);return I})(i,e)},bI=(A,g)=>{(g=g||A.length)>A.length&&(g=A.length);let I=g-1;for(;I>=0&&128==(192&A[I]);)I--;return I<0||0===I?g:I+UI[A[I]]>g?I:g};var KI=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 HI=16209;var JI=function(A,g){let I,C,e,i,t,B,s,Q,o,a,E,r,n,h,l,c,w,D,d,y,G,u,S,f;const N=A.state;I=A.next_in,S=A.input,C=I+(A.avail_in-5),e=A.next_out,f=A.output,i=e-(g-A.avail_out),t=e+(A.avail_out-257),B=N.dmax,s=N.wsize,Q=N.whave,o=N.wnext,a=N.window,E=N.hold,r=N.bits,n=N.lencode,h=N.distcode,l=(1<<N.lenbits)-1,c=(1<<N.distbits)-1;A:do{r<15&&(E+=S[I++]<<r,r+=8,E+=S[I++]<<r,r+=8),w=n[E&l];g:for(;;){if(D=w>>>24,E>>>=D,r-=D,D=w>>>16&255,0===D)f[e++]=65535&w;else{if(!(16&D)){if(64&D){if(32&D){N.mode=16191;break A}A.msg="invalid literal/length code",N.mode=HI;break A}w=n[(65535&w)+(E&(1<<D)-1)];continue g}for(d=65535&w,D&=15,D&&(r<D&&(E+=S[I++]<<r,r+=8),d+=E&(1<<D)-1,E>>>=D,r-=D),r<15&&(E+=S[I++]<<r,r+=8,E+=S[I++]<<r,r+=8),w=h[E&c];;){if(D=w>>>24,E>>>=D,r-=D,D=w>>>16&255,16&D){if(y=65535&w,D&=15,r<D&&(E+=S[I++]<<r,r+=8,r<D&&(E+=S[I++]<<r,r+=8)),y+=E&(1<<D)-1,y>B){A.msg="invalid distance too far back",N.mode=HI;break A}if(E>>>=D,r-=D,D=e-i,y>D){if(D=y-D,D>Q&&N.sane){A.msg="invalid distance too far back",N.mode=HI;break A}if(G=0,u=a,0===o){if(G+=s-D,D<d){d-=D;do{f[e++]=a[G++]}while(--D);G=e-y,u=f}}else if(o<D){if(G+=s+o-D,D-=o,D<d){d-=D;do{f[e++]=a[G++]}while(--D);if(G=0,o<d){D=o,d-=D;do{f[e++]=a[G++]}while(--D);G=e-y,u=f}}}else if(G+=o-D,D<d){d-=D;do{f[e++]=a[G++]}while(--D);G=e-y,u=f}for(;d>2;)f[e++]=u[G++],f[e++]=u[G++],f[e++]=u[G++],d-=3;d&&(f[e++]=u[G++],d>1&&(f[e++]=u[G++]))}else{G=e-y;do{f[e++]=f[G++],f[e++]=f[G++],f[e++]=f[G++],d-=3}while(d>2);d&&(f[e++]=f[G++],d>1&&(f[e++]=f[G++]))}break}if(64&D){A.msg="invalid distance code",N.mode=HI;break A}w=h[(65535&w)+(E&(1<<D)-1)]}}break}}while(I<C&&e<t);d=r>>3,I-=d,r-=d<<3,E&=(1<<r)-1,A.next_in=I,A.next_out=e,A.avail_in=I<C?C-I+5:5-(I-C),A.avail_out=e<t?t-e+257:257-(e-t),N.hold=E,N.bits=r};const xI=15,TI=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]),ZI=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]),qI=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]),OI=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 WI=(A,g,I,C,e,i,t,B)=>{const s=B.bits;let Q,o,a,E,r,n,h=0,l=0,c=0,w=0,D=0,d=0,y=0,G=0,u=0,S=0,f=null;const N=new Uint16Array(16),k=new Uint16Array(16);let R,F,p,L=null;for(h=0;h<=xI;h++)N[h]=0;for(l=0;l<C;l++)N[g[I+l]]++;for(D=s,w=xI;w>=1&&0===N[w];w--);if(D>w&&(D=w),0===w)return e[i++]=20971520,e[i++]=20971520,B.bits=1,0;for(c=1;c<w&&0===N[c];c++);for(D<c&&(D=c),G=1,h=1;h<=xI;h++)if(G<<=1,G-=N[h],G<0)return-1;if(G>0&&(0===A||1!==w))return-1;for(k[1]=0,h=1;h<xI;h++)k[h+1]=k[h]+N[h];for(l=0;l<C;l++)0!==g[I+l]&&(t[k[g[I+l]]++]=l);if(0===A?(f=L=t,n=20):1===A?(f=TI,L=ZI,n=257):(f=qI,L=OI,n=0),S=0,l=0,h=c,r=i,d=D,y=0,a=-1,u=1<<D,E=u-1,1===A&&u>852||2===A&&u>592)return 1;for(;;){R=h-y,t[l]+1<n?(F=0,p=t[l]):t[l]>=n?(F=L[t[l]-n],p=f[t[l]-n]):(F=96,p=0),Q=1<<h-y,o=1<<d,c=o;do{o-=Q,e[r+(S>>y)+o]=R<<24|F<<16|p}while(0!==o);for(Q=1<<h-1;S&Q;)Q>>=1;if(0!==Q?(S&=Q-1,S+=Q):S=0,l++,0===--N[h]){if(h===w)break;h=g[I+t[l]]}if(h>D&&(S&E)!==a){for(0===y&&(y=D),r+=c,d=h-y,G=1<<d;d+y<w&&(G-=N[d+y],!(G<=0));)d++,G<<=1;if(u+=1<<d,1===A&&u>852||2===A&&u>592)return 1;a=S&E,e[a]=D<<24|d<<16|r-i}}return 0!==S&&(e[r+S]=h-y<<24|64<<16),B.bits=D,0};const{Z_FINISH:VI,Z_BLOCK:vI,Z_TREES:zI,Z_OK:PI,Z_STREAM_END:XI,Z_NEED_DICT:jI,Z_STREAM_ERROR:_I,Z_DATA_ERROR:$I,Z_MEM_ERROR:AC,Z_BUF_ERROR:gC,Z_DEFLATED:IC}=RI,CC=16180,eC=16190,iC=16191,tC=16192,BC=16194,sC=16199,QC=16200,oC=16206,aC=16209,EC=A=>(A>>>24&255)+(A>>>8&65280)+((65280&A)<<8)+((255&A)<<24);function rC(){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 nC=A=>{if(!A)return 1;const g=A.state;return!g||g.strm!==A||g.mode<CC||g.mode>16211?1:0},hC=A=>{if(nC(A))return _I;const g=A.state;return A.total_in=A.total_out=g.total=0,A.msg="",g.wrap&&(A.adler=1&g.wrap),g.mode=CC,g.last=0,g.havedict=0,g.flags=-1,g.dmax=32768,g.head=null,g.hold=0,g.bits=0,g.lencode=g.lendyn=new Int32Array(852),g.distcode=g.distdyn=new Int32Array(592),g.sane=1,g.back=-1,PI},lC=A=>{if(nC(A))return _I;const g=A.state;return g.wsize=0,g.whave=0,g.wnext=0,hC(A)},cC=(A,g)=>{let I;if(nC(A))return _I;const C=A.state;return g<0?(I=0,g=-g):(I=5+(g>>4),g<48&&(g&=15)),g&&(g<8||g>15)?_I:(null!==C.window&&C.wbits!==g&&(C.window=null),C.wrap=I,C.wbits=g,lC(A))},wC=(A,g)=>{if(!A)return _I;const I=new rC;A.state=I,I.strm=A,I.window=null,I.mode=CC;const C=cC(A,g);return C!==PI&&(A.state=null),C};let DC,dC,yC=!0;const GC=A=>{if(yC){DC=new Int32Array(512),dC=new Int32Array(32);let g=0;for(;g<144;)A.lens[g++]=8;for(;g<256;)A.lens[g++]=9;for(;g<280;)A.lens[g++]=7;for(;g<288;)A.lens[g++]=8;for(WI(1,A.lens,0,288,DC,0,A.work,{bits:9}),g=0;g<32;)A.lens[g++]=5;WI(2,A.lens,0,32,dC,0,A.work,{bits:5}),yC=!1}A.lencode=DC,A.lenbits=9,A.distcode=dC,A.distbits=5},uC=(A,g,I,C)=>{let e;const i=A.state;return null===i.window&&(i.wsize=1<<i.wbits,i.wnext=0,i.whave=0,i.window=new Uint8Array(i.wsize)),C>=i.wsize?(i.window.set(g.subarray(I-i.wsize,I),0),i.wnext=0,i.whave=i.wsize):(e=i.wsize-i.wnext,e>C&&(e=C),i.window.set(g.subarray(I-C,I-C+e),i.wnext),(C-=e)?(i.window.set(g.subarray(I-C,I),0),i.wnext=C,i.whave=i.wsize):(i.wnext+=e,i.wnext===i.wsize&&(i.wnext=0),i.whave<i.wsize&&(i.whave+=e))),0};var SC={inflateReset:lC,inflateReset2:cC,inflateResetKeep:hC,inflateInit:A=>wC(A,15),inflateInit2:wC,inflate:(A,g)=>{let I,C,e,i,t,B,s,Q,o,a,E,r,n,h,l,c,w,D,d,y,G,u,S=0;const f=new Uint8Array(4);let N,k;const R=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(nC(A)||!A.output||!A.input&&0!==A.avail_in)return _I;I=A.state,I.mode===iC&&(I.mode=tC),t=A.next_out,e=A.output,s=A.avail_out,i=A.next_in,C=A.input,B=A.avail_in,Q=I.hold,o=I.bits,a=B,E=s,u=PI;A:for(;;)switch(I.mode){case CC:if(0===I.wrap){I.mode=tC;break}for(;o<16;){if(0===B)break A;B--,Q+=C[i++]<<o,o+=8}if(2&I.wrap&&35615===Q){0===I.wbits&&(I.wbits=15),I.check=0,f[0]=255&Q,f[1]=Q>>>8&255,I.check=NI(I.check,f,2,0),Q=0,o=0,I.mode=16181;break}if(I.head&&(I.head.done=!1),!(1&I.wrap)||(((255&Q)<<8)+(Q>>8))%31){A.msg="incorrect header check",I.mode=aC;break}if((15&Q)!==IC){A.msg="unknown compression method",I.mode=aC;break}if(Q>>>=4,o-=4,G=8+(15&Q),0===I.wbits&&(I.wbits=G),G>15||G>I.wbits){A.msg="invalid window size",I.mode=aC;break}I.dmax=1<<I.wbits,I.flags=0,A.adler=I.check=1,I.mode=512&Q?16189:iC,Q=0,o=0;break;case 16181:for(;o<16;){if(0===B)break A;B--,Q+=C[i++]<<o,o+=8}if(I.flags=Q,(255&I.flags)!==IC){A.msg="unknown compression method",I.mode=aC;break}if(57344&I.flags){A.msg="unknown header flags set",I.mode=aC;break}I.head&&(I.head.text=Q>>8&1),512&I.flags&&4&I.wrap&&(f[0]=255&Q,f[1]=Q>>>8&255,I.check=NI(I.check,f,2,0)),Q=0,o=0,I.mode=16182;case 16182:for(;o<32;){if(0===B)break A;B--,Q+=C[i++]<<o,o+=8}I.head&&(I.head.time=Q),512&I.flags&&4&I.wrap&&(f[0]=255&Q,f[1]=Q>>>8&255,f[2]=Q>>>16&255,f[3]=Q>>>24&255,I.check=NI(I.check,f,4,0)),Q=0,o=0,I.mode=16183;case 16183:for(;o<16;){if(0===B)break A;B--,Q+=C[i++]<<o,o+=8}I.head&&(I.head.xflags=255&Q,I.head.os=Q>>8),512&I.flags&&4&I.wrap&&(f[0]=255&Q,f[1]=Q>>>8&255,I.check=NI(I.check,f,2,0)),Q=0,o=0,I.mode=16184;case 16184:if(1024&I.flags){for(;o<16;){if(0===B)break A;B--,Q+=C[i++]<<o,o+=8}I.length=Q,I.head&&(I.head.extra_len=Q),512&I.flags&&4&I.wrap&&(f[0]=255&Q,f[1]=Q>>>8&255,I.check=NI(I.check,f,2,0)),Q=0,o=0}else I.head&&(I.head.extra=null);I.mode=16185;case 16185:if(1024&I.flags&&(r=I.length,r>B&&(r=B),r&&(I.head&&(G=I.head.extra_len-I.length,I.head.extra||(I.head.extra=new Uint8Array(I.head.extra_len)),I.head.extra.set(C.subarray(i,i+r),G)),512&I.flags&&4&I.wrap&&(I.check=NI(I.check,C,r,i)),B-=r,i+=r,I.length-=r),I.length))break A;I.length=0,I.mode=16186;case 16186:if(2048&I.flags){if(0===B)break A;r=0;do{G=C[i+r++],I.head&&G&&I.length<65536&&(I.head.name+=String.fromCharCode(G))}while(G&&r<B);if(512&I.flags&&4&I.wrap&&(I.check=NI(I.check,C,r,i)),B-=r,i+=r,G)break A}else I.head&&(I.head.name=null);I.length=0,I.mode=16187;case 16187:if(4096&I.flags){if(0===B)break A;r=0;do{G=C[i+r++],I.head&&G&&I.length<65536&&(I.head.comment+=String.fromCharCode(G))}while(G&&r<B);if(512&I.flags&&4&I.wrap&&(I.check=NI(I.check,C,r,i)),B-=r,i+=r,G)break A}else I.head&&(I.head.comment=null);I.mode=16188;case 16188:if(512&I.flags){for(;o<16;){if(0===B)break A;B--,Q+=C[i++]<<o,o+=8}if(4&I.wrap&&Q!==(65535&I.check)){A.msg="header crc mismatch",I.mode=aC;break}Q=0,o=0}I.head&&(I.head.hcrc=I.flags>>9&1,I.head.done=!0),A.adler=I.check=0,I.mode=iC;break;case 16189:for(;o<32;){if(0===B)break A;B--,Q+=C[i++]<<o,o+=8}A.adler=I.check=EC(Q),Q=0,o=0,I.mode=eC;case eC:if(0===I.havedict)return A.next_out=t,A.avail_out=s,A.next_in=i,A.avail_in=B,I.hold=Q,I.bits=o,jI;A.adler=I.check=1,I.mode=iC;case iC:if(g===vI||g===zI)break A;case tC:if(I.last){Q>>>=7&o,o-=7&o,I.mode=oC;break}for(;o<3;){if(0===B)break A;B--,Q+=C[i++]<<o,o+=8}switch(I.last=1&Q,Q>>>=1,o-=1,3&Q){case 0:I.mode=16193;break;case 1:if(GC(I),I.mode=sC,g===zI){Q>>>=2,o-=2;break A}break;case 2:I.mode=16196;break;case 3:A.msg="invalid block type",I.mode=aC}Q>>>=2,o-=2;break;case 16193:for(Q>>>=7&o,o-=7&o;o<32;){if(0===B)break A;B--,Q+=C[i++]<<o,o+=8}if((65535&Q)!=(Q>>>16^65535)){A.msg="invalid stored block lengths",I.mode=aC;break}if(I.length=65535&Q,Q=0,o=0,I.mode=BC,g===zI)break A;case BC:I.mode=16195;case 16195:if(r=I.length,r){if(r>B&&(r=B),r>s&&(r=s),0===r)break A;e.set(C.subarray(i,i+r),t),B-=r,i+=r,s-=r,t+=r,I.length-=r;break}I.mode=iC;break;case 16196:for(;o<14;){if(0===B)break A;B--,Q+=C[i++]<<o,o+=8}if(I.nlen=257+(31&Q),Q>>>=5,o-=5,I.ndist=1+(31&Q),Q>>>=5,o-=5,I.ncode=4+(15&Q),Q>>>=4,o-=4,I.nlen>286||I.ndist>30){A.msg="too many length or distance symbols",I.mode=aC;break}I.have=0,I.mode=16197;case 16197:for(;I.have<I.ncode;){for(;o<3;){if(0===B)break A;B--,Q+=C[i++]<<o,o+=8}I.lens[R[I.have++]]=7&Q,Q>>>=3,o-=3}for(;I.have<19;)I.lens[R[I.have++]]=0;if(I.lencode=I.lendyn,I.lenbits=7,N={bits:I.lenbits},u=WI(0,I.lens,0,19,I.lencode,0,I.work,N),I.lenbits=N.bits,u){A.msg="invalid code lengths set",I.mode=aC;break}I.have=0,I.mode=16198;case 16198:for(;I.have<I.nlen+I.ndist;){for(;S=I.lencode[Q&(1<<I.lenbits)-1],l=S>>>24,c=S>>>16&255,w=65535&S,!(l<=o);){if(0===B)break A;B--,Q+=C[i++]<<o,o+=8}if(w<16)Q>>>=l,o-=l,I.lens[I.have++]=w;else{if(16===w){for(k=l+2;o<k;){if(0===B)break A;B--,Q+=C[i++]<<o,o+=8}if(Q>>>=l,o-=l,0===I.have){A.msg="invalid bit length repeat",I.mode=aC;break}G=I.lens[I.have-1],r=3+(3&Q),Q>>>=2,o-=2}else if(17===w){for(k=l+3;o<k;){if(0===B)break A;B--,Q+=C[i++]<<o,o+=8}Q>>>=l,o-=l,G=0,r=3+(7&Q),Q>>>=3,o-=3}else{for(k=l+7;o<k;){if(0===B)break A;B--,Q+=C[i++]<<o,o+=8}Q>>>=l,o-=l,G=0,r=11+(127&Q),Q>>>=7,o-=7}if(I.have+r>I.nlen+I.ndist){A.msg="invalid bit length repeat",I.mode=aC;break}for(;r--;)I.lens[I.have++]=G}}if(I.mode===aC)break;if(0===I.lens[256]){A.msg="invalid code -- missing end-of-block",I.mode=aC;break}if(I.lenbits=9,N={bits:I.lenbits},u=WI(1,I.lens,0,I.nlen,I.lencode,0,I.work,N),I.lenbits=N.bits,u){A.msg="invalid literal/lengths set",I.mode=aC;break}if(I.distbits=6,I.distcode=I.distdyn,N={bits:I.distbits},u=WI(2,I.lens,I.nlen,I.ndist,I.distcode,0,I.work,N),I.distbits=N.bits,u){A.msg="invalid distances set",I.mode=aC;break}if(I.mode=sC,g===zI)break A;case sC:I.mode=QC;case QC:if(B>=6&&s>=258){A.next_out=t,A.avail_out=s,A.next_in=i,A.avail_in=B,I.hold=Q,I.bits=o,JI(A,E),t=A.next_out,e=A.output,s=A.avail_out,i=A.next_in,C=A.input,B=A.avail_in,Q=I.hold,o=I.bits,I.mode===iC&&(I.back=-1);break}for(I.back=0;S=I.lencode[Q&(1<<I.lenbits)-1],l=S>>>24,c=S>>>16&255,w=65535&S,!(l<=o);){if(0===B)break A;B--,Q+=C[i++]<<o,o+=8}if(c&&!(240&c)){for(D=l,d=c,y=w;S=I.lencode[y+((Q&(1<<D+d)-1)>>D)],l=S>>>24,c=S>>>16&255,w=65535&S,!(D+l<=o);){if(0===B)break A;B--,Q+=C[i++]<<o,o+=8}Q>>>=D,o-=D,I.back+=D}if(Q>>>=l,o-=l,I.back+=l,I.length=w,0===c){I.mode=16205;break}if(32&c){I.back=-1,I.mode=iC;break}if(64&c){A.msg="invalid literal/length code",I.mode=aC;break}I.extra=15&c,I.mode=16201;case 16201:if(I.extra){for(k=I.extra;o<k;){if(0===B)break A;B--,Q+=C[i++]<<o,o+=8}I.length+=Q&(1<<I.extra)-1,Q>>>=I.extra,o-=I.extra,I.back+=I.extra}I.was=I.length,I.mode=16202;case 16202:for(;S=I.distcode[Q&(1<<I.distbits)-1],l=S>>>24,c=S>>>16&255,w=65535&S,!(l<=o);){if(0===B)break A;B--,Q+=C[i++]<<o,o+=8}if(!(240&c)){for(D=l,d=c,y=w;S=I.distcode[y+((Q&(1<<D+d)-1)>>D)],l=S>>>24,c=S>>>16&255,w=65535&S,!(D+l<=o);){if(0===B)break A;B--,Q+=C[i++]<<o,o+=8}Q>>>=D,o-=D,I.back+=D}if(Q>>>=l,o-=l,I.back+=l,64&c){A.msg="invalid distance code",I.mode=aC;break}I.offset=w,I.extra=15&c,I.mode=16203;case 16203:if(I.extra){for(k=I.extra;o<k;){if(0===B)break A;B--,Q+=C[i++]<<o,o+=8}I.offset+=Q&(1<<I.extra)-1,Q>>>=I.extra,o-=I.extra,I.back+=I.extra}if(I.offset>I.dmax){A.msg="invalid distance too far back",I.mode=aC;break}I.mode=16204;case 16204:if(0===s)break A;if(r=E-s,I.offset>r){if(r=I.offset-r,r>I.whave&&I.sane){A.msg="invalid distance too far back",I.mode=aC;break}r>I.wnext?(r-=I.wnext,n=I.wsize-r):n=I.wnext-r,r>I.length&&(r=I.length),h=I.window}else h=e,n=t-I.offset,r=I.length;r>s&&(r=s),s-=r,I.length-=r;do{e[t++]=h[n++]}while(--r);0===I.length&&(I.mode=QC);break;case 16205:if(0===s)break A;e[t++]=I.length,s--,I.mode=QC;break;case oC:if(I.wrap){for(;o<32;){if(0===B)break A;B--,Q|=C[i++]<<o,o+=8}if(E-=s,A.total_out+=E,I.total+=E,4&I.wrap&&E&&(A.adler=I.check=I.flags?NI(I.check,e,E,t-E):SI(I.check,e,E,t-E)),E=s,4&I.wrap&&(I.flags?Q:EC(Q))!==I.check){A.msg="incorrect data check",I.mode=aC;break}Q=0,o=0}I.mode=16207;case 16207:if(I.wrap&&I.flags){for(;o<32;){if(0===B)break A;B--,Q+=C[i++]<<o,o+=8}if(4&I.wrap&&Q!==(4294967295&I.total)){A.msg="incorrect length check",I.mode=aC;break}Q=0,o=0}I.mode=16208;case 16208:u=XI;break A;case aC:u=$I;break A;case 16210:return AC;default:return _I}return A.next_out=t,A.avail_out=s,A.next_in=i,A.avail_in=B,I.hold=Q,I.bits=o,(I.wsize||E!==A.avail_out&&I.mode<aC&&(I.mode<oC||g!==VI))&&uC(A,A.output,A.next_out,E-A.avail_out),a-=A.avail_in,E-=A.avail_out,A.total_in+=a,A.total_out+=E,I.total+=E,4&I.wrap&&E&&(A.adler=I.check=I.flags?NI(I.check,e,E,A.next_out-E):SI(I.check,e,E,A.next_out-E)),A.data_type=I.bits+(I.last?64:0)+(I.mode===iC?128:0)+(I.mode===sC||I.mode===BC?256:0),(0===a&&0===E||g===VI)&&u===PI&&(u=gC),u},inflateEnd:A=>{if(nC(A))return _I;let g=A.state;return g.window&&(g.window=null),A.state=null,PI},inflateGetHeader:(A,g)=>{if(nC(A))return _I;const I=A.state;return 2&I.wrap?(I.head=g,g.done=!1,PI):_I},inflateSetDictionary:(A,g)=>{const I=g.length;let C,e,i;return nC(A)?_I:(C=A.state,0!==C.wrap&&C.mode!==eC?_I:C.mode===eC&&(e=1,e=SI(e,g,I,0),e!==C.check)?$I:(i=uC(A,g,I,I),i?(C.mode=16210,AC):(C.havedict=1,PI)))},inflateInfo:"pako inflate (from Nodeca project)"};var fC=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 NC=Object.prototype.toString,{Z_NO_FLUSH:kC,Z_FINISH:RC,Z_OK:FC,Z_STREAM_END:pC,Z_NEED_DICT:LC,Z_STREAM_ERROR:YC,Z_DATA_ERROR:UC,Z_MEM_ERROR:mC}=RI;function MC(A){this.options=pI({chunkSize:65536,windowBits:15,to:""},A||{});const g=this.options;g.raw&&g.windowBits>=0&&g.windowBits<16&&(g.windowBits=-g.windowBits,0===g.windowBits&&(g.windowBits=-15)),!(g.windowBits>=0&&g.windowBits<16)||A&&A.windowBits||(g.windowBits+=32),g.windowBits>15&&g.windowBits<48&&(15&g.windowBits||(g.windowBits|=15)),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new KI,this.strm.avail_out=0;let I=SC.inflateInit2(this.strm,g.windowBits);if(I!==FC)throw new Error(kI[I]);if(this.header=new fC,SC.inflateGetHeader(this.strm,this.header),g.dictionary&&("string"==typeof g.dictionary?g.dictionary=mI(g.dictionary):"[object ArrayBuffer]"===NC.call(g.dictionary)&&(g.dictionary=new Uint8Array(g.dictionary)),g.raw&&(I=SC.inflateSetDictionary(this.strm,g.dictionary),I!==FC)))throw new Error(kI[I])}MC.prototype.push=function(A,g){const I=this.strm,C=this.options.chunkSize,e=this.options.dictionary;let i,t,B;if(this.ended)return!1;for(t=g===~~g?g:!0===g?RC:kC,"[object ArrayBuffer]"===NC.call(A)?I.input=new Uint8Array(A):I.input=A,I.next_in=0,I.avail_in=I.input.length;;){for(0===I.avail_out&&(I.output=new Uint8Array(C),I.next_out=0,I.avail_out=C),i=SC.inflate(I,t),i===LC&&e&&(i=SC.inflateSetDictionary(I,e),i===FC?i=SC.inflate(I,t):i===UC&&(i=LC));I.avail_in>0&&i===pC&&I.state.wrap>0&&0!==A[I.next_in];)SC.inflateReset(I),i=SC.inflate(I,t);switch(i){case YC:case UC:case LC:case mC:return this.onEnd(i),this.ended=!0,!1}if(B=I.avail_out,I.next_out&&(0===I.avail_out||i===pC))if("string"===this.options.to){let A=bI(I.output,I.next_out),g=I.next_out-A,e=MI(I.output,A);I.next_out=g,I.avail_out=C-g,g&&I.output.set(I.output.subarray(A,A+g),0),this.onData(e)}else this.onData(I.output.length===I.next_out?I.output:I.output.subarray(0,I.next_out));if(i!==FC||0!==B){if(i===pC)return i=SC.inflateEnd(this.strm),this.onEnd(i),this.ended=!0,!0;if(0===I.avail_in)break}}return!0},MC.prototype.onData=function(A){this.chunks.push(A)},MC.prototype.onEnd=function(A){A===FC&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=LI(this.chunks)),this.chunks=[],this.err=A,this.msg=this.strm.msg};var bC={inflate:function(A,g){const I=new MC(g);if(I.push(A),I.err)throw I.msg||kI[I.err];return I.result}};const{inflate:KC}=bC;var HC=KC;var JC=Object.freeze({__proto__:null,default:class extends lg{decodeBlock(A){return HC(new Uint8Array(A)).buffer}}});var xC=Object.freeze({__proto__:null,default:class extends lg{decodeBlock(A){const g=new DataView(A),I=[];for(let C=0;C<A.byteLength;++C){let A=g.getInt8(C);if(A<0){const e=g.getUint8(C+1);A=-A;for(let g=0;g<=A;++g)I.push(e);C+=1}else{for(let e=0;e<=A;++e)I.push(g.getUint8(C+e+1));C+=A+1}}return new Uint8Array(I).buffer}}});function TC(A){return A&&A.__esModule&&Object.prototype.hasOwnProperty.call(A,"default")?A.default:A}var ZC,qC={exports:{}};var OC,WC=(ZC||(ZC=1,OC=qC,
|
|
2
2
|
/* Copyright 2015-2021 Esri. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 @preserve */
|
|
3
|
-
function(){var A,g,I,C,e,i,B,t,Q,s,o,a,E,r,n,h,l=(A={defaultNoDataValue:-34027999387901484e22,decode:function(i,B){var t=(B=B||{}).encodedMaskData||null===B.encodedMaskData,Q=e(i,B.inputOffset||0,t),s=null!==B.noDataValue?B.noDataValue:A.defaultNoDataValue,o=g(Q,B.pixelType||Float32Array,B.encodedMaskData,s,B.returnMask),a={width:Q.width,height:Q.height,pixelData:o.resultPixels,minValue:o.minValue,maxValue:Q.pixels.maxValue,noDataValue:s};return o.resultMask&&(a.maskData=o.resultMask),B.returnEncodedMask&&Q.mask&&(a.encodedMaskData=Q.mask.bitset?Q.mask.bitset:null),B.returnFileInfo&&(a.fileInfo=I(Q),B.computeUsedBitDepths&&(a.fileInfo.bitDepths=C(Q))),a}},g=function(A,g,I,C,e){var B,t,Q,s=0,o=A.pixels.numBlocksX,a=A.pixels.numBlocksY,E=Math.floor(A.width/o),r=Math.floor(A.height/a),n=2*A.maxZError,h=Number.MAX_VALUE;I=I||(A.mask?A.mask.bitset:null),t=new g(A.width*A.height),e&&I&&(Q=new Uint8Array(A.width*A.height));for(var l,c,w=new Float32Array(E*r),D=0;D<=a;D++){var d=D!==a?r:A.height%a;if(0!==d)for(var y=0;y<=o;y++){var G=y!==o?E:A.width%o;if(0!==G){var u,S,f,N,k=D*A.width*r+y*E,R=A.width-G,F=A.pixels.blocks[s];if(F.encoding<2?(0===F.encoding?u=F.rawData:(i(F.stuffedData,F.bitsPerPixel,F.numValidPixels,F.offset,n,w,A.pixels.maxValue),u=w),S=0):f=2===F.encoding?0:F.offset,I)for(c=0;c<d;c++){for(7&k&&(N=I[k>>3],N<<=7&k),l=0;l<G;l++)7&k||(N=I[k>>3]),128&N?(Q&&(Q[k]=1),h=h>(B=F.encoding<2?u[S++]:f)?B:h,t[k++]=B):(Q&&(Q[k]=0),t[k++]=C),N<<=1;k+=R}else if(F.encoding<2)for(c=0;c<d;c++){for(l=0;l<G;l++)h=h>(B=u[S++])?B:h,t[k++]=B;k+=R}else for(h=h>f?f:h,c=0;c<d;c++){for(l=0;l<G;l++)t[k++]=f;k+=R}if(1===F.encoding&&S!==F.numValidPixels)throw"Block and Mask do not match";s++}}}return{resultPixels:t,resultMask:Q,minValue:h}},I=function(A){return{fileIdentifierString:A.fileIdentifierString,fileVersion:A.fileVersion,imageType:A.imageType,height:A.height,width:A.width,maxZError:A.maxZError,eofOffset:A.eofOffset,mask:A.mask?{numBlocksX:A.mask.numBlocksX,numBlocksY:A.mask.numBlocksY,numBytes:A.mask.numBytes,maxValue:A.mask.maxValue}:null,pixels:{numBlocksX:A.pixels.numBlocksX,numBlocksY:A.pixels.numBlocksY,numBytes:A.pixels.numBytes,maxValue:A.pixels.maxValue,noDataValue:A.noDataValue}}},C=function(A){for(var g=A.pixels.numBlocksX*A.pixels.numBlocksY,I={},C=0;C<g;C++){var e=A.pixels.blocks[C];0===e.encoding?I.float32=!0:1===e.encoding?I[e.bitsPerPixel]=!0:I[0]=!0}return Object.keys(I)},e=function(A,g,I){var C={},e=new Uint8Array(A,g,10);if(C.fileIdentifierString=String.fromCharCode.apply(null,e),"CntZImage"!==C.fileIdentifierString.trim())throw"Unexpected file identifier string: "+C.fileIdentifierString;g+=10;var i=new DataView(A,g,24);if(C.fileVersion=i.getInt32(0,!0),C.imageType=i.getInt32(4,!0),C.height=i.getUint32(8,!0),C.width=i.getUint32(12,!0),C.maxZError=i.getFloat64(16,!0),g+=24,!I)if(i=new DataView(A,g,16),C.mask={},C.mask.numBlocksY=i.getUint32(0,!0),C.mask.numBlocksX=i.getUint32(4,!0),C.mask.numBytes=i.getUint32(8,!0),C.mask.maxValue=i.getFloat32(12,!0),g+=16,C.mask.numBytes>0){var B=new Uint8Array(Math.ceil(C.width*C.height/8)),t=(i=new DataView(A,g,C.mask.numBytes)).getInt16(0,!0),Q=2,s=0;do{if(t>0)for(;t--;)B[s++]=i.getUint8(Q++);else{var o=i.getUint8(Q++);for(t=-t;t--;)B[s++]=o}t=i.getInt16(Q,!0),Q+=2}while(Q<C.mask.numBytes);if(-32768!==t||s<B.length)throw"Unexpected end of mask RLE encoding";C.mask.bitset=B,g+=C.mask.numBytes}else 0===(C.mask.numBytes|C.mask.numBlocksY|C.mask.maxValue)&&(C.mask.bitset=new Uint8Array(Math.ceil(C.width*C.height/8)));i=new DataView(A,g,16),C.pixels={},C.pixels.numBlocksY=i.getUint32(0,!0),C.pixels.numBlocksX=i.getUint32(4,!0),C.pixels.numBytes=i.getUint32(8,!0),C.pixels.maxValue=i.getFloat32(12,!0),g+=16;var a=C.pixels.numBlocksX,E=C.pixels.numBlocksY,r=a+(C.width%a>0?1:0),n=E+(C.height%E>0?1:0);C.pixels.blocks=new Array(r*n);for(var h=0,l=0;l<n;l++)for(var c=0;c<r;c++){var w=0,D=A.byteLength-g;i=new DataView(A,g,Math.min(10,D));var d={};C.pixels.blocks[h++]=d;var y=i.getUint8(0);if(w++,d.encoding=63&y,d.encoding>3)throw"Invalid block encoding ("+d.encoding+")";if(2!==d.encoding){if(0!==y&&2!==y){if(y>>=6,d.offsetType=y,2===y)d.offset=i.getInt8(1),w++;else if(1===y)d.offset=i.getInt16(1,!0),w+=2;else{if(0!==y)throw"Invalid block offset type";d.offset=i.getFloat32(1,!0),w+=4}if(1===d.encoding)if(y=i.getUint8(w),w++,d.bitsPerPixel=63&y,y>>=6,d.numValidPixelsType=y,2===y)d.numValidPixels=i.getUint8(w),w++;else if(1===y)d.numValidPixels=i.getUint16(w,!0),w+=2;else{if(0!==y)throw"Invalid valid pixel count type";d.numValidPixels=i.getUint32(w,!0),w+=4}}var G;if(g+=w,3!==d.encoding)if(0===d.encoding){var u=(C.pixels.numBytes-1)/4;if(u!==Math.floor(u))throw"uncompressed block has invalid length";G=new ArrayBuffer(4*u),new Uint8Array(G).set(new Uint8Array(A,g,4*u));var S=new Float32Array(G);d.rawData=S,g+=4*u}else if(1===d.encoding){var f=Math.ceil(d.numValidPixels*d.bitsPerPixel/8),N=Math.ceil(f/4);G=new ArrayBuffer(4*N),new Uint8Array(G).set(new Uint8Array(A,g,f)),d.stuffedData=new Uint32Array(G),g+=f}}else g++}return C.eofOffset=g,C},i=function(A,g,I,C,e,i,B){var t,Q,s,o=(1<<g)-1,a=0,E=0,r=Math.ceil((B-C)/e),n=4*A.length-Math.ceil(g*I/8);for(A[A.length-1]<<=8*n,t=0;t<I;t++){if(0===E&&(s=A[a++],E=32),E>=g)Q=s>>>E-g&o,E-=g;else{var h=g-E;Q=(s&o)<<h&o,Q+=(s=A[a++])>>>(E=32-h)}i[t]=Q<r?C+Q*e:B}return i},A),c=(B=function(A,g,I,C,e,i,B,t){var Q,s,o,a,E,r=(1<<I)-1,n=0,h=0,l=4*A.length-Math.ceil(I*C/8);if(A[A.length-1]<<=8*l,e)for(Q=0;Q<C;Q++)0===h&&(o=A[n++],h=32),h>=I?(s=o>>>h-I&r,h-=I):(s=(o&r)<<(a=I-h)&r,s+=(o=A[n++])>>>(h=32-a)),g[Q]=e[s];else for(E=Math.ceil((t-i)/B),Q=0;Q<C;Q++)0===h&&(o=A[n++],h=32),h>=I?(s=o>>>h-I&r,h-=I):(s=(o&r)<<(a=I-h)&r,s+=(o=A[n++])>>>(h=32-a)),g[Q]=s<E?i+s*B:t},t=function(A,g,I,C,e,i){var B,t=(1<<g)-1,Q=0,s=0,o=0,a=0,E=0,r=[],n=4*A.length-Math.ceil(g*I/8);A[A.length-1]<<=8*n;var h=Math.ceil((i-C)/e);for(s=0;s<I;s++)0===a&&(B=A[Q++],a=32),a>=g?(E=B>>>a-g&t,a-=g):(E=(B&t)<<(o=g-a)&t,E+=(B=A[Q++])>>>(a=32-o)),r[s]=E<h?C+E*e:i;return r.unshift(C),r},Q=function(A,g,I,C,e,i,B,t){var Q,s,o,a,E=(1<<I)-1,r=0,n=0,h=0;if(e)for(Q=0;Q<C;Q++)0===n&&(o=A[r++],n=32,h=0),n>=I?(s=o>>>h&E,n-=I,h+=I):(s=o>>>h&E,n=32-(a=I-n),s|=((o=A[r++])&(1<<a)-1)<<I-a,h=a),g[Q]=e[s];else{var l=Math.ceil((t-i)/B);for(Q=0;Q<C;Q++)0===n&&(o=A[r++],n=32,h=0),n>=I?(s=o>>>h&E,n-=I,h+=I):(s=o>>>h&E,n=32-(a=I-n),s|=((o=A[r++])&(1<<a)-1)<<I-a,h=a),g[Q]=s<l?i+s*B:t}return g},s=function(A,g,I,C,e,i){var B,t=(1<<g)-1,Q=0,s=0,o=0,a=0,E=0,r=0,n=[],h=Math.ceil((i-C)/e);for(s=0;s<I;s++)0===a&&(B=A[Q++],a=32,r=0),a>=g?(E=B>>>r&t,a-=g,r+=g):(E=B>>>r&t,a=32-(o=g-a),E|=((B=A[Q++])&(1<<o)-1)<<g-o,r=o),n[s]=E<h?C+E*e:i;return n.unshift(C),n},o=function(A,g,I,C){var e,i,B,t,Q=(1<<I)-1,s=0,o=0,a=4*A.length-Math.ceil(I*C/8);for(A[A.length-1]<<=8*a,e=0;e<C;e++)0===o&&(B=A[s++],o=32),o>=I?(i=B>>>o-I&Q,o-=I):(i=(B&Q)<<(t=I-o)&Q,i+=(B=A[s++])>>>(o=32-t)),g[e]=i;return g},a=function(A,g,I,C){var e,i,B,t,Q=(1<<I)-1,s=0,o=0,a=0;for(e=0;e<C;e++)0===o&&(B=A[s++],o=32,a=0),o>=I?(i=B>>>a&Q,o-=I,a+=I):(i=B>>>a&Q,o=32-(t=I-o),i|=((B=A[s++])&(1<<t)-1)<<I-t,a=t),g[e]=i;return g},E={HUFFMAN_LUT_BITS_MAX:12,computeChecksumFletcher32:function(A){for(var g=65535,I=65535,C=A.length,e=Math.floor(C/2),i=0;e;){var B=e>=359?359:e;e-=B;do{g+=A[i++]<<8,I+=g+=A[i++]}while(--B);g=(65535&g)+(g>>>16),I=(65535&I)+(I>>>16)}return 1&C&&(I+=g+=A[i]<<8),((I=(65535&I)+(I>>>16))<<16|(g=(65535&g)+(g>>>16)))>>>0},readHeaderInfo:function(A,g){var I=g.ptr,C=new Uint8Array(A,I,6),e={};if(e.fileIdentifierString=String.fromCharCode.apply(null,C),0!==e.fileIdentifierString.lastIndexOf("Lerc2",0))throw"Unexpected file identifier string (expect Lerc2 ): "+e.fileIdentifierString;I+=6;var i,B=new DataView(A,I,8),t=B.getInt32(0,!0);if(e.fileVersion=t,I+=4,t>=3&&(e.checksum=B.getUint32(4,!0),I+=4),B=new DataView(A,I,12),e.height=B.getUint32(0,!0),e.width=B.getUint32(4,!0),I+=8,t>=4?(e.numDims=B.getUint32(8,!0),I+=4):e.numDims=1,B=new DataView(A,I,40),e.numValidPixel=B.getUint32(0,!0),e.microBlockSize=B.getInt32(4,!0),e.blobSize=B.getInt32(8,!0),e.imageType=B.getInt32(12,!0),e.maxZError=B.getFloat64(16,!0),e.zMin=B.getFloat64(24,!0),e.zMax=B.getFloat64(32,!0),I+=40,g.headerInfo=e,g.ptr=I,t>=3&&(i=t>=4?52:48,this.computeChecksumFletcher32(new Uint8Array(A,I-i,e.blobSize-14))!==e.checksum))throw"Checksum failed.";return!0},checkMinMaxRanges:function(A,g){var I=g.headerInfo,C=this.getDataTypeArray(I.imageType),e=I.numDims*this.getDataTypeSize(I.imageType),i=this.readSubArray(A,g.ptr,C,e),B=this.readSubArray(A,g.ptr+e,C,e);g.ptr+=2*e;var t,Q=!0;for(t=0;t<I.numDims;t++)if(i[t]!==B[t]){Q=!1;break}return I.minValues=i,I.maxValues=B,Q},readSubArray:function(A,g,I,C){var e;if(I===Uint8Array)e=new Uint8Array(A,g,C);else{var i=new ArrayBuffer(C);new Uint8Array(i).set(new Uint8Array(A,g,C)),e=new I(i)}return e},readMask:function(A,g){var I,C,e=g.ptr,i=g.headerInfo,B=i.width*i.height,t=i.numValidPixel,Q=new DataView(A,e,4),s={};if(s.numBytes=Q.getUint32(0,!0),e+=4,(0===t||B===t)&&0!==s.numBytes)throw"invalid mask";if(0===t)I=new Uint8Array(Math.ceil(B/8)),s.bitset=I,C=new Uint8Array(B),g.pixels.resultMask=C,e+=s.numBytes;else if(s.numBytes>0){I=new Uint8Array(Math.ceil(B/8));var o=(Q=new DataView(A,e,s.numBytes)).getInt16(0,!0),a=2,E=0,r=0;do{if(o>0)for(;o--;)I[E++]=Q.getUint8(a++);else for(r=Q.getUint8(a++),o=-o;o--;)I[E++]=r;o=Q.getInt16(a,!0),a+=2}while(a<s.numBytes);if(-32768!==o||E<I.length)throw"Unexpected end of mask RLE encoding";C=new Uint8Array(B);var n=0,h=0;for(h=0;h<B;h++)7&h?(n=I[h>>3],n<<=7&h):n=I[h>>3],128&n&&(C[h]=1);g.pixels.resultMask=C,s.bitset=I,e+=s.numBytes}return g.ptr=e,g.mask=s,!0},readDataOneSweep:function(A,g,I,C){var e,i=g.ptr,B=g.headerInfo,t=B.numDims,Q=B.width*B.height,s=B.imageType,o=B.numValidPixel*E.getDataTypeSize(s)*t,a=g.pixels.resultMask;if(I===Uint8Array)e=new Uint8Array(A,i,o);else{var r=new ArrayBuffer(o);new Uint8Array(r).set(new Uint8Array(A,i,o)),e=new I(r)}if(e.length===Q*t)g.pixels.resultPixels=C?E.swapDimensionOrder(e,Q,t,I,!0):e;else{g.pixels.resultPixels=new I(Q*t);var n=0,h=0,l=0,c=0;if(t>1){if(C){for(h=0;h<Q;h++)if(a[h])for(c=h,l=0;l<t;l++,c+=Q)g.pixels.resultPixels[c]=e[n++]}else for(h=0;h<Q;h++)if(a[h])for(c=h*t,l=0;l<t;l++)g.pixels.resultPixels[c+l]=e[n++]}else for(h=0;h<Q;h++)a[h]&&(g.pixels.resultPixels[h]=e[n++])}return i+=o,g.ptr=i,!0},readHuffmanTree:function(A,g){var I=this.HUFFMAN_LUT_BITS_MAX,C=new DataView(A,g.ptr,16);if(g.ptr+=16,C.getInt32(0,!0)<2)throw"unsupported Huffman version";var e=C.getInt32(4,!0),i=C.getInt32(8,!0),B=C.getInt32(12,!0);if(i>=B)return!1;var t=new Uint32Array(B-i);E.decodeBits(A,g,t);var Q,s,o,a,n=[];for(Q=i;Q<B;Q++)n[s=Q-(Q<e?0:e)]={first:t[Q-i],second:null};var h=A.byteLength-g.ptr,l=Math.ceil(h/4),c=new ArrayBuffer(4*l);new Uint8Array(c).set(new Uint8Array(A,g.ptr,h));var w,D=new Uint32Array(c),d=0,y=0;for(w=D[0],Q=i;Q<B;Q++)(a=n[s=Q-(Q<e?0:e)].first)>0&&(n[s].second=w<<d>>>32-a,32-d>=a?32===(d+=a)&&(d=0,w=D[++y]):(d+=a-32,w=D[++y],n[s].second|=w>>>32-d));var G=0,u=0,S=new r;for(Q=0;Q<n.length;Q++)void 0!==n[Q]&&(G=Math.max(G,n[Q].first));u=G>=I?I:G;var f,N,k,R,F,p=[];for(Q=i;Q<B;Q++)if((a=n[s=Q-(Q<e?0:e)].first)>0)if(f=[a,s],a<=u)for(N=n[s].second<<u-a,k=1<<u-a,o=0;o<k;o++)p[N|o]=f;else for(N=n[s].second,F=S,R=a-1;R>=0;R--)N>>>R&1?(F.right||(F.right=new r),F=F.right):(F.left||(F.left=new r),F=F.left),0!==R||F.val||(F.val=f[1]);return{decodeLut:p,numBitsLUTQick:u,numBitsLUT:G,tree:S,stuffedData:D,srcPtr:y,bitPos:d}},readHuffman:function(A,g,I,C){var e,i,B,t,Q,s,o,a,r,n=g.headerInfo.numDims,h=g.headerInfo.height,l=g.headerInfo.width,c=l*h,w=this.readHuffmanTree(A,g),D=w.decodeLut,d=w.tree,y=w.stuffedData,G=w.srcPtr,u=w.bitPos,S=w.numBitsLUTQick,f=w.numBitsLUT,N=0===g.headerInfo.imageType?128:0,k=g.pixels.resultMask,R=0;u>0&&(G++,u=0);var F,p=y[G],L=1===g.encodeMode,Y=new I(c*n),U=Y;if(n<2||L){for(F=0;F<n;F++)if(n>1&&(U=new I(Y.buffer,c*F,c),R=0),g.headerInfo.numValidPixel===l*h)for(a=0,s=0;s<h;s++)for(o=0;o<l;o++,a++){if(i=0,Q=t=p<<u>>>32-S,32-u<S&&(Q=t|=y[G+1]>>>64-u-S),D[Q])i=D[Q][1],u+=D[Q][0];else for(Q=t=p<<u>>>32-f,32-u<f&&(Q=t|=y[G+1]>>>64-u-f),e=d,r=0;r<f;r++)if(!(e=t>>>f-r-1&1?e.right:e.left).left&&!e.right){i=e.val,u=u+r+1;break}u>=32&&(u-=32,p=y[++G]),B=i-N,L?(B+=o>0?R:s>0?U[a-l]:R,B&=255,U[a]=B,R=B):U[a]=B}else for(a=0,s=0;s<h;s++)for(o=0;o<l;o++,a++)if(k[a]){if(i=0,Q=t=p<<u>>>32-S,32-u<S&&(Q=t|=y[G+1]>>>64-u-S),D[Q])i=D[Q][1],u+=D[Q][0];else for(Q=t=p<<u>>>32-f,32-u<f&&(Q=t|=y[G+1]>>>64-u-f),e=d,r=0;r<f;r++)if(!(e=t>>>f-r-1&1?e.right:e.left).left&&!e.right){i=e.val,u=u+r+1;break}u>=32&&(u-=32,p=y[++G]),B=i-N,L?(o>0&&k[a-1]?B+=R:s>0&&k[a-l]?B+=U[a-l]:B+=R,B&=255,U[a]=B,R=B):U[a]=B}}else for(a=0,s=0;s<h;s++)for(o=0;o<l;o++)if(a=s*l+o,!k||k[a])for(F=0;F<n;F++,a+=c){if(i=0,Q=t=p<<u>>>32-S,32-u<S&&(Q=t|=y[G+1]>>>64-u-S),D[Q])i=D[Q][1],u+=D[Q][0];else for(Q=t=p<<u>>>32-f,32-u<f&&(Q=t|=y[G+1]>>>64-u-f),e=d,r=0;r<f;r++)if(!(e=t>>>f-r-1&1?e.right:e.left).left&&!e.right){i=e.val,u=u+r+1;break}u>=32&&(u-=32,p=y[++G]),B=i-N,U[a]=B}g.ptr=g.ptr+4*(G+1)+(u>0?4:0),g.pixels.resultPixels=Y,n>1&&!C&&(g.pixels.resultPixels=E.swapDimensionOrder(Y,c,n,I))},decodeBits:function(A,g,I,C,e){var i=g.headerInfo,E=i.fileVersion,r=0,n=A.byteLength-g.ptr>=5?5:A.byteLength-g.ptr,h=new DataView(A,g.ptr,n),l=h.getUint8(0);r++;var c=l>>6,w=0===c?4:3-c,D=(32&l)>0,d=31&l,y=0;if(1===w)y=h.getUint8(r),r++;else if(2===w)y=h.getUint16(r,!0),r+=2;else{if(4!==w)throw"Invalid valid pixel count type";y=h.getUint32(r,!0),r+=4}var G,u,S,f,N,k,R,F,p,L=2*i.maxZError,Y=i.numDims>1?i.maxValues[e]:i.zMax;if(D){for(g.counter.lut++,F=h.getUint8(r),r++,f=Math.ceil((F-1)*d/8),N=Math.ceil(f/4),u=new ArrayBuffer(4*N),S=new Uint8Array(u),g.ptr+=r,S.set(new Uint8Array(A,g.ptr,f)),R=new Uint32Array(u),g.ptr+=f,p=0;F-1>>>p;)p++;f=Math.ceil(y*p/8),N=Math.ceil(f/4),u=new ArrayBuffer(4*N),(S=new Uint8Array(u)).set(new Uint8Array(A,g.ptr,f)),G=new Uint32Array(u),g.ptr+=f,k=E>=3?s(R,d,F-1,C,L,Y):t(R,d,F-1,C,L,Y),E>=3?Q(G,I,p,y,k):B(G,I,p,y,k)}else g.counter.bitstuffer++,p=d,g.ptr+=r,p>0&&(f=Math.ceil(y*p/8),N=Math.ceil(f/4),u=new ArrayBuffer(4*N),(S=new Uint8Array(u)).set(new Uint8Array(A,g.ptr,f)),G=new Uint32Array(u),g.ptr+=f,E>=3?null==C?a(G,I,p,y):Q(G,I,p,y,!1,C,L,Y):null==C?o(G,I,p,y):B(G,I,p,y,!1,C,L,Y))},readTiles:function(A,g,I,C){var e=g.headerInfo,i=e.width,B=e.height,t=i*B,Q=e.microBlockSize,s=e.imageType,o=E.getDataTypeSize(s),a=Math.ceil(i/Q),r=Math.ceil(B/Q);g.pixels.numBlocksY=r,g.pixels.numBlocksX=a,g.pixels.ptr=0;var n,h,l,c,w,D,d,y,G,u,S=0,f=0,N=0,k=0,R=0,F=0,p=0,L=0,Y=0,U=0,m=0,M=0,b=0,K=0,H=0,J=new I(Q*Q),x=B%Q||Q,T=i%Q||Q,Z=e.numDims,q=g.pixels.resultMask,O=g.pixels.resultPixels,W=e.fileVersion>=5?14:15,V=e.zMax;for(N=0;N<r;N++)for(R=N!==r-1?Q:x,k=0;k<a;k++)for(U=N*i*Q+k*Q,m=i-(F=k!==a-1?Q:T),y=0;y<Z;y++){if(Z>1?(u=O,U=N*i*Q+k*Q,O=new I(g.pixels.resultPixels.buffer,t*y*o,t),V=e.maxValues[y]):u=null,p=A.byteLength-g.ptr,h={},H=0,L=(n=new DataView(A,g.ptr,Math.min(10,p))).getUint8(0),H++,G=e.fileVersion>=5?4&L:0,Y=L>>6&255,(L>>2&W)!=(k*Q>>3&W))throw"integrity issue";if(G&&0===y)throw"integrity issue";if((w=3&L)>3)throw g.ptr+=H,"Invalid block encoding ("+w+")";if(2!==w)if(0===w){if(G)throw"integrity issue";if(g.counter.uncompressed++,g.ptr+=H,M=(M=R*F*o)<(b=A.byteLength-g.ptr)?M:b,l=new ArrayBuffer(M%o===0?M:M+o-M%o),new Uint8Array(l).set(new Uint8Array(A,g.ptr,M)),c=new I(l),K=0,q)for(S=0;S<R;S++){for(f=0;f<F;f++)q[U]&&(O[U]=c[K++]),U++;U+=m}else for(S=0;S<R;S++){for(f=0;f<F;f++)O[U++]=c[K++];U+=m}g.ptr+=K*o}else if(D=E.getDataTypeUsed(G&&s<6?4:s,Y),d=E.getOnePixel(h,H,D,n),H+=E.getDataTypeSize(D),3===w)if(g.ptr+=H,g.counter.constantoffset++,q)for(S=0;S<R;S++){for(f=0;f<F;f++)q[U]&&(O[U]=G?Math.min(V,u[U]+d):d),U++;U+=m}else for(S=0;S<R;S++){for(f=0;f<F;f++)O[U]=G?Math.min(V,u[U]+d):d,U++;U+=m}else if(g.ptr+=H,E.decodeBits(A,g,J,d,y),H=0,G)if(q)for(S=0;S<R;S++){for(f=0;f<F;f++)q[U]&&(O[U]=J[H++]+u[U]),U++;U+=m}else for(S=0;S<R;S++){for(f=0;f<F;f++)O[U]=J[H++]+u[U],U++;U+=m}else if(q)for(S=0;S<R;S++){for(f=0;f<F;f++)q[U]&&(O[U]=J[H++]),U++;U+=m}else for(S=0;S<R;S++){for(f=0;f<F;f++)O[U++]=J[H++];U+=m}else{if(G)if(q)for(S=0;S<R;S++)for(f=0;f<F;f++)q[U]&&(O[U]=u[U]),U++;else for(S=0;S<R;S++)for(f=0;f<F;f++)O[U]=u[U],U++;g.counter.constant++,g.ptr+=H}}Z>1&&!C&&(g.pixels.resultPixels=E.swapDimensionOrder(g.pixels.resultPixels,t,Z,I))},formatFileInfo:function(A){return{fileIdentifierString:A.headerInfo.fileIdentifierString,fileVersion:A.headerInfo.fileVersion,imageType:A.headerInfo.imageType,height:A.headerInfo.height,width:A.headerInfo.width,numValidPixel:A.headerInfo.numValidPixel,microBlockSize:A.headerInfo.microBlockSize,blobSize:A.headerInfo.blobSize,maxZError:A.headerInfo.maxZError,pixelType:E.getPixelType(A.headerInfo.imageType),eofOffset:A.eofOffset,mask:A.mask?{numBytes:A.mask.numBytes}:null,pixels:{numBlocksX:A.pixels.numBlocksX,numBlocksY:A.pixels.numBlocksY,maxValue:A.headerInfo.zMax,minValue:A.headerInfo.zMin,noDataValue:A.noDataValue}}},constructConstantSurface:function(A,g){var I=A.headerInfo.zMax,C=A.headerInfo.zMin,e=A.headerInfo.maxValues,i=A.headerInfo.numDims,B=A.headerInfo.height*A.headerInfo.width,t=0,Q=0,s=0,o=A.pixels.resultMask,a=A.pixels.resultPixels;if(o)if(i>1){if(g)for(t=0;t<i;t++)for(s=t*B,I=e[t],Q=0;Q<B;Q++)o[Q]&&(a[s+Q]=I);else for(Q=0;Q<B;Q++)if(o[Q])for(s=Q*i,t=0;t<i;t++)a[s+i]=e[t]}else for(Q=0;Q<B;Q++)o[Q]&&(a[Q]=I);else if(i>1&&C!==I)if(g)for(t=0;t<i;t++)for(s=t*B,I=e[t],Q=0;Q<B;Q++)a[s+Q]=I;else for(Q=0;Q<B;Q++)for(s=Q*i,t=0;t<i;t++)a[s+t]=e[t];else for(Q=0;Q<B*i;Q++)a[Q]=I},getDataTypeArray:function(A){var g;switch(A){case 0:g=Int8Array;break;case 1:g=Uint8Array;break;case 2:g=Int16Array;break;case 3:g=Uint16Array;break;case 4:g=Int32Array;break;case 5:g=Uint32Array;break;case 6:default:g=Float32Array;break;case 7:g=Float64Array}return g},getPixelType:function(A){var g;switch(A){case 0:g="S8";break;case 1:g="U8";break;case 2:g="S16";break;case 3:g="U16";break;case 4:g="S32";break;case 5:g="U32";break;case 6:default:g="F32";break;case 7:g="F64"}return g},isValidPixelValue:function(A,g){if(null==g)return!1;var I;switch(A){case 0:I=g>=-128&&g<=127;break;case 1:I=g>=0&&g<=255;break;case 2:I=g>=-32768&&g<=32767;break;case 3:I=g>=0&&g<=65536;break;case 4:I=g>=-2147483648&&g<=2147483647;break;case 5:I=g>=0&&g<=4294967296;break;case 6:I=g>=-34027999387901484e22&&g<=34027999387901484e22;break;case 7:I=g>=-17976931348623157e292&&g<=17976931348623157e292;break;default:I=!1}return I},getDataTypeSize:function(A){var g=0;switch(A){case 0:case 1:g=1;break;case 2:case 3:g=2;break;case 4:case 5:case 6:g=4;break;case 7:g=8;break;default:g=A}return g},getDataTypeUsed:function(A,g){var I=A;switch(A){case 2:case 4:I=A-g;break;case 3:case 5:I=A-2*g;break;case 6:I=0===g?A:1===g?2:1;break;case 7:I=0===g?A:A-2*g+1;break;default:I=A}return I},getOnePixel:function(A,g,I,C){var e=0;switch(I){case 0:e=C.getInt8(g);break;case 1:e=C.getUint8(g);break;case 2:e=C.getInt16(g,!0);break;case 3:e=C.getUint16(g,!0);break;case 4:e=C.getInt32(g,!0);break;case 5:e=C.getUInt32(g,!0);break;case 6:e=C.getFloat32(g,!0);break;case 7:e=C.getFloat64(g,!0);break;default:throw"the decoder does not understand this pixel type"}return e},swapDimensionOrder:function(A,g,I,C,e){var i=0,B=0,t=0,Q=0,s=A;if(I>1)if(s=new C(g*I),e)for(i=0;i<g;i++)for(Q=i,t=0;t<I;t++,Q+=g)s[Q]=A[B++];else for(i=0;i<g;i++)for(Q=i,t=0;t<I;t++,Q+=g)s[B++]=A[Q];return s}},r=function(A,g,I){this.val=A,this.left=g,this.right=I},{decode:function(A,g){var I=(g=g||{}).noDataValue,C=0,e={};if(e.ptr=g.inputOffset||0,e.pixels={},E.readHeaderInfo(A,e)){var i=e.headerInfo,B=i.fileVersion,t=E.getDataTypeArray(i.imageType);if(B>5)throw"unsupported lerc version 2."+B;E.readMask(A,e),i.numValidPixel===i.width*i.height||e.pixels.resultMask||(e.pixels.resultMask=g.maskData);var Q=i.width*i.height;e.pixels.resultPixels=new t(Q*i.numDims),e.counter={onesweep:0,uncompressed:0,lut:0,bitstuffer:0,constant:0,constantoffset:0};var s,o=!g.returnPixelInterleavedDims;if(0!==i.numValidPixel)if(i.zMax===i.zMin)E.constructConstantSurface(e,o);else if(B>=4&&E.checkMinMaxRanges(A,e))E.constructConstantSurface(e,o);else{var a=new DataView(A,e.ptr,2),r=a.getUint8(0);if(e.ptr++,r)E.readDataOneSweep(A,e,t,o);else if(B>1&&i.imageType<=1&&Math.abs(i.maxZError-.5)<1e-5){var n=a.getUint8(1);if(e.ptr++,e.encodeMode=n,n>2||B<4&&n>1)throw"Invalid Huffman flag "+n;n?E.readHuffman(A,e,t,o):E.readTiles(A,e,t,o)}else E.readTiles(A,e,t,o)}e.eofOffset=e.ptr,g.inputOffset?(s=e.headerInfo.blobSize+g.inputOffset-e.ptr,Math.abs(s)>=1&&(e.eofOffset=g.inputOffset+e.headerInfo.blobSize)):(s=e.headerInfo.blobSize-e.ptr,Math.abs(s)>=1&&(e.eofOffset=e.headerInfo.blobSize));var h={width:i.width,height:i.height,pixelData:e.pixels.resultPixels,minValue:i.zMin,maxValue:i.zMax,validPixelCount:i.numValidPixel,dimCount:i.numDims,dimStats:{minValues:i.minValues,maxValues:i.maxValues},maskData:e.pixels.resultMask};if(e.pixels.resultMask&&E.isValidPixelValue(i.imageType,I)){var l=e.pixels.resultMask;for(C=0;C<Q;C++)l[C]||(h.pixelData[C]=I);h.noDataValue=I}return e.noDataValue=I,g.returnFileInfo&&(h.fileInfo=E.formatFileInfo(e)),h}},getBandCount:function(A){for(var g=0,I=0,C={ptr:0,pixels:{}};I<A.byteLength-58;)E.readHeaderInfo(A,C),I+=C.headerInfo.blobSize,g++,C.ptr=I;return g}}),w=(n=new ArrayBuffer(4),h=new Uint8Array(n),new Uint32Array(n)[0]=1,1===h[0]),D={decode:function(A,g){if(!w)throw"Big endian system is not supported.";var I,C,e=(g=g||{}).inputOffset||0,i=new Uint8Array(A,e,10),B=String.fromCharCode.apply(null,i);if("CntZImage"===B.trim())I=l,C=1;else{if("Lerc2"!==B.substring(0,5))throw"Unexpected file identifier string: "+B;I=c,C=2}for(var t,Q,s,o,a,E,r=0,n=A.byteLength-10,h=[],D={width:0,height:0,pixels:[],pixelType:g.pixelType,mask:null,statistics:[]},d=0;e<n;){var y=I.decode(A,{inputOffset:e,encodedMaskData:t,maskData:s,returnMask:0===r,returnEncodedMask:0===r,returnFileInfo:!0,returnPixelInterleavedDims:g.returnPixelInterleavedDims,pixelType:g.pixelType||null,noDataValue:g.noDataValue||null});e=y.fileInfo.eofOffset,s=y.maskData,0===r&&(t=y.encodedMaskData,D.width=y.width,D.height=y.height,D.dimCount=y.dimCount||1,D.pixelType=y.pixelType||y.fileInfo.pixelType,D.mask=s),C>1&&(s&&h.push(s),y.fileInfo.mask&&y.fileInfo.mask.numBytes>0&&d++),r++,D.pixels.push(y.pixelData),D.statistics.push({minValue:y.minValue,maxValue:y.maxValue,noDataValue:y.noDataValue,dimStats:y.dimStats})}if(C>1&&d>1){for(E=D.width*D.height,D.bandMasks=h,(s=new Uint8Array(E)).set(h[0]),o=1;o<h.length;o++)for(Q=h[o],a=0;a<E;a++)s[a]=s[a]&Q[a];D.maskData=s}return D}};OC.exports?OC.exports=D:this.Lerc=D}()),qC.exports),VC=TC(WC);let vC,zC,XC;const PC={env:{emscripten_notify_memory_growth:A=>{XC=new Uint8Array(zC.exports.memory.buffer)}}};const jC="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AikACDcACCAHIDo3AAAgEUEZSA0BIARBGGohBANAIAIpABAhOiAEIAIpABg3AAggBCA6NwAAIAIpACAhOiAEIAIpACg3ABggBCA6NwAQIAJBIGohAiAEQSBqIgQgCkkNAAsMAQsCQAJAIAUoAswCIhEgBUHgAWogJUEHcUEMbGoiDygCACICaiIHIBxLDQAgCSAPKAIEIgogAmoiBmogG0sNACAGQSBqIBQgCWtNDQELIAUgDygCCDYCoAEgBSAPKQIANwOYASAJIBQgBUGYAWogBUHMAmogHCALIBcgIhAgIQYMAQsgAiAJaiEEIA8oAgghFSARKQAAITogCSARKQAINwAIIAkgOjcAAAJAIAJBEUkNACARKQAQITogCSARKQAYNwAYIAkgOjcAECACQRBrQRFIDQAgEUEQaiECIAlBIGohEgNAIAIpABAhOiASIAIpABg3AAggEiA6NwAAIAIpACAhOiASIAIpACg3ABggEiA6NwAQIAJBIGohAiASQSBqIhIgBEkNAAsLIAQgFWshAiAFIAc2AswCIAQgC2sgFUkEQCAVIAQgF2tLDQwgIiAiIAIgC2siD2oiByAKak8EQCAKRQ0CIAQgByAK/AoAAAwCC0EAIA9rIgIEQCAEIAcgAvwKAAALIAogD2ohCiAEIA9rIQQgCyECCyAVQRBPBEAgAikAACE6IAQgAikACDcACCAEIDo3AAAgCkERSA0BIAQgCmohByAEQRBqIQQDQCACKQAQITogBCACKQAYNwAIIAQgOjcAACACKQAgITogBCACKQAoNwAYIAQgOjcAECACQSBqIQIgBEEgaiIEIAdJDQALDAELAkAgFUEHTQRAIAQgAi0AADoAACAEIAItAAE6AAEgBCACLQACOgACIAQgAi0AAzoAAyAEIAIgFUECdCIHQeAaaigCAGoiAigAADYABCACIAdBgBtqKAIAayECDAELIAQgAikAADcAAAsgCkEJSQ0AIAQgCmohDyAEQQhqIgcgAkEIaiICa0EPTARAA0AgByACKQAANwAAIAJBCGohAiAHQQhqIgcgD0kNAAwCCwALIAIpAAAhOiAHIAIpAAg3AAggByA6NwAAIApBGUgNACAEQRhqIQQDQCACKQAQITogBCACKQAYNwAIIAQgOjcAACACKQAgITogBCACKQAoNwAYIAQgOjcAECACQSBqIQIgBEEgaiIEIA9JDQALCyAGQYh/SwRAIAYhAwwLCyAFQeABaiAlQQdxQQxsaiICIA02AgggAiAMNgIEIAIgEDYCAAsgBiAJaiEJICVBAWohJSAQIC1qIAxqIS0MAQsLIAUoArABIAUoArQBRw0HIAUoAqwBQSBHDQcgDiAoayEQA0ACQCAOIBBMBEBBACECA0AgAkEDRg0CIDIgAkECdCIDaiADICZqKAIANgIAIAJBAWohAgwACwALIAVB4AFqIBBBB3FBDGxqIQoCfwJAIAgoAoTsAUECRgRAIAUoAswCIg8gCigCACIEaiIHIAgoAoDsASICSwRAIAIgD0cEQCACIA9rIgIgFCAJa0sNCyAJIA8gAhAfIAogBCACayIENgIAIAIgCWohCQsgBSAWNgLMAiAIQQA2AoTsAQJAAkACQCAEQYCABEoNACAJIAooAgQiDSAEaiIGaiAbSw0AIAZBIGogFCAJa00NAQsgBSAKKAIINgJQIAUgCikCADcDSCAJIBQgBUHIAGogBUHMAmogGSALIBcgIhAgIQYMAQsgBCAWaiEHIAQgCWohDCAKKAIIIQogFikAACE6IAkgFikACDcACCAJIDo3AAACQCAEQRFJDQAgHikAACE6IAkgHikACDcAGCAJIDo3ABAgBEEQa0ERSA0AIAlBIGohAiAeIQQDQCAEKQAQITogAiAEKQAYNwAIIAIgOjcAACAEKQAgITogAiAEKQAoNwAYIAIgOjcAECAEQSBqIQQgAkEgaiICIAxJDQALCyAMIAprIQIgBSAHNgLMAiAMIAtrIApJBEAgCiAMIBdrSw0PICIgIiACIAtrIgdqIgQgDWpPBEAgDUUNAiAMIAQgDfwKAAAMAgtBACAHayICBEAgDCAEIAL8CgAACyAHIA1qIQ0gDCAHayEMIAshAgsgCkEQTwRAIAIpAAAhOiAMIAIpAAg3AAggDCA6NwAAIA1BEUgNASAMIA1qIQcgDEEQaiEEA0AgAikAECE6IAQgAikAGDcACCAEIDo3AAAgAikAICE6IAQgAikAKDcAGCAEIDo3ABAgAkEgaiECIARBIGoiBCAHSQ0ACwwBCwJAIApBB00EQCAMIAItAAA6AAAgDCACLQABOgABIAwgAi0AAjoAAiAMIAItAAM6AAMgDCACIApBAnQiBEHgGmooAgBqIgIoAAA2AAQgAiAEQYAbaigCAGshAgwBCyAMIAIpAAA3AAALIA1BCUkNACAMIA1qIQcgDEEIaiIEIAJBCGoiAmtBD0wEQANAIAQgAikAADcAACACQQhqIQIgBEEIaiIEIAdJDQAMAgsACyACKQAAITogBCACKQAINwAIIAQgOjcAACANQRlIDQAgDEEYaiEEA0AgAikAECE6IAQgAikAGDcACCAEIDo3AAAgAikAICE6IAQgAikAKDcAGCAEIDo3ABAgAkEgaiECIARBIGoiBCAHSQ0ACwsgBkGJf08EQCAGIQMMDgsgGSEcIAYgCWoMAwsgB0EgayECAkACQCAHIBxLDQAgCSAKKAIEIhIgBGoiDGogAksNACAMQSBqIBQgCWtNDQELIAUgCigCCDYCYCAFIAopAgA3A1ggCSAUIAIgBUHYAGogBUHMAmogHCALIBcgIhAhIQwMAgsgBCAJaiEGIAooAgghCiAPKQAAITogCSAPKQAINwAIIAkgOjcAAAJAIARBEUkNACAPKQAQITogCSAPKQAYNwAYIAkgOjcAECAEQRBrQRFIDQAgD0EQaiECIAlBIGohBANAIAIpABAhOiAEIAIpABg3AAggBCA6NwAAIAIpACAhOiAEIAIpACg3ABggBCA6NwAQIAJBIGohAiAEQSBqIgQgBkkNAAsLIAYgCmshAiAFIAc2AswCIAYgC2sgCkkEQCAKIAYgF2tLDQ0gIiAiIAIgC2siB2oiBCASak8EQCASRQ0DIAYgBCAS/AoAAAwDC0EAIAdrIgIEQCAGIAQgAvwKAAALIAcgEmohEiAGIAdrIQYgCyECCyAKQRBPBEAgAikAACE6IAYgAikACDcACCAGIDo3AAAgEkERSA0CIAYgEmohByAGQRBqIQQDQCACKQAQITogBCACKQAYNwAIIAQgOjcAACACKQAgITogBCACKQAoNwAYIAQgOjcAECACQSBqIQIgBEEgaiIEIAdJDQALDAILAkAgCkEHTQRAIAYgAi0AADoAACAGIAItAAE6AAEgBiACLQACOgACIAYgAi0AAzoAAyAGIAIgCkECdCIEQeAaaigCAGoiAigAADYABCACIARBgBtqKAIAayECDAELIAYgAikAADcAAAsgEkEJSQ0BIAYgEmohByAGQQhqIgQgAkEIaiICa0EPTARAA0AgBCACKQAANwAAIAJBCGohAiAE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",_C=new class{init(){return vC||(vC="undefined"!=typeof fetch?fetch(`data:application/wasm;base64,${jC}`).then(A=>A.arrayBuffer()).then(A=>WebAssembly.instantiate(A,PC)).then(this._init):WebAssembly.instantiate(Buffer.from(jC,"base64"),PC).then(this._init),vC)}_init(A){zC=A.instance,PC.env.emscripten_notify_memory_growth(0)}decode(A,g=0){if(!zC)throw new Error("ZSTDDecoder: Await .init() before decoding.");const I=A.byteLength,C=zC.exports.malloc(I);XC.set(A,C),g=g||Number(zC.exports.ZSTD_findDecompressedSize(C,I));const e=zC.exports.malloc(g),i=zC.exports.ZSTD_decompress(e,g,C,I),B=XC.slice(e,e+i);return zC.exports.free(C),zC.exports.free(e),B}};var $C=Object.freeze({__proto__:null,default:class extends lg{decodeBlock(A){const g=this.parameters,I=g.LercParameters?.[DA];let C=A;switch(I){case dA:break;case yA:C=HC(new Uint8Array(C)).buffer;break;case GA:C=_C.decode(new Uint8Array(C)).buffer;break;default:throw new Error(`Unsupported LERC additional compression method identifier: ${I}`)}return VC.decode(C,{returnPixelInterleavedDims:1===this.parameters.planarConfiguration}).pixels[0].buffer}},zstd:_C});let Ae,ge,Ie,Ce;const ee={env:{emscripten_notify_memory_growth:A=>{Ie=new Uint8Array(ge.exports.memory.buffer),Ce=new DataView(Ie.buffer)}}};const ie="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QQhyIQBBACEDA0AgACADTQ0DIANBQGshAwwACwALQWwhCiAOIA5B/ABqIA5B+ABqIAUgBhAGIgJBiH9LDQEgDigCeCIDIARLDQEgACAOIA4oAnwgByAIIAMgDRAlIAEgADYCACACIQoMAQtBbCEKCyAOQYABaiQAIAoLcAEEfyAAQgA3AgAgAgRAIAFBCmohBiABKAIEIQRBACECQQAhAQNAIAEgBHZFBEAgAiAGIAFBA3RqLQAAIgUgAiAFSxshAiABQQFqIQEgAyAFQRZLaiEDDAELCyAAIAI2AgQgACADQQggBGt0NgIACwuuAQEEfyABIAIoAgQiAyABKAIEaiIENgIEIAAgA0ECdEGwGWooAgAgASgCAEEAIARrdnE2AgACQCAEQSFPBEAgAUGwGjYCCAwBCyABKAIIIgMgASgCEE8EQCABEAwMAQsgAyABKAIMIgVGDQAgASADIAMgBWsgBEEDdiIGIAMgBmsgBUkbIgNrIgU2AgggASAEIANBA3RrNgIEIAEgBSgAADYCAAsgACACQQhqNgIEC40CAgN/AX4gACACaiEEAkACQCACQQhOBEAgACABayICQXlIDQELA0AgACAETw0CIAAgAS0AADoAACAAQQFqIQAgAUEBaiEBDAALAAsCQAJAIAJBb0sNACAAIARBIGsiAksNACABKQAAIQYgACABKQAINwAIIAAgBjcAACACIABrIgVBEU4EQCAAQRBqIQAgASEDA0AgAykAECEGIAAgAykAGDcACCAAIAY3AAAgAykAICEGIAAgAykAKDcAGCAAIAY3ABAgA0EgaiEDIABBIGoiACACSQ0ACwsgASAFaiEBDAELIAAhAgsDQCACIARPDQEgAiABLQAAOgAAIAJBAWohAiABQQFqIQEMAAsACwvfAQEGf0G6fyEKAkAgAigCBCIIIAIoAgAiCWoiDSABIABrSw0AQWwhCiAJIAQgAygCACILa0sNACAAIAlqIgQgAigCCCIMayECIAAgAUEgayIBIAsgCUEAEDMgAyAJIAtqNgIAAkACQCAEIAVrIAxPBEAgAiEFDAELIAwgBCAGa0sNAiAHIAcgAiAFayIDaiICIAhqTwRAIAhFDQIgBCACIAj8CgAADAILQQAgA2siAARAIAQgAiAA/AoAAAsgAyAIaiEIIAQgA2shBAsgBCABIAUgCEEBEDML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",Be=new class{init(){return Ae||(Ae="undefined"!=typeof fetch?fetch(`data:application/wasm;base64,${ie}`).then(A=>A.arrayBuffer()).then(A=>WebAssembly.instantiate(A,ee)).then(this._init):WebAssembly.instantiate(Buffer.from(ie,"base64"),ee).then(this._init),Ae)}_init(A){ge=A.instance,ee.env.emscripten_notify_memory_growth(0)}decode(A,g=0){if(!ge)throw new Error("ZSTDDecoder: Await .init() before decoding.");const I=A.byteLength,C=ge.exports.malloc(I);if(Ie.set(A,C),0===g&&(g=Number(ge.exports.ZSTD_findDecompressedSize(C,I))),-1===g){ge.exports.free(C);const g=[];for(const I of this.decodeStreaming([A]))g.push(I);if(1===g.length)return g[0];const I=g.reduce((A,g)=>A+g.byteLength,0),e=new Uint8Array(I);let i=0;for(const A of g)e.set(A,i),i+=A.byteLength;return e}const e=ge.exports.malloc(g),i=ge.exports.ZSTD_decompress(e,g,C,I),B=Ie.slice(e,e+i);return ge.exports.free(C),ge.exports.free(e),B}*decodeStreaming(A){if(!ge)throw new Error("ZSTDDecoder: Await .init() before decoding.");const g=ge.exports.ZSTD_DStreamInSize(),I=ge.exports.malloc(g),C=ge.exports.ZSTD_DStreamOutSize(),e=ge.exports.malloc(C),i=ge.exports.ZSTD_createDCtx(),B=ge.exports.malloc(12),t=ge.exports.malloc(12);let Q=0;for(const g of A){const A=ge.exports.malloc(g.byteLength);for(Ie.set(g,A),Ce.setInt32(B,A,!0),Ce.setInt32(B+4,g.byteLength,!0),Ce.setInt32(B+4+4,0,!0);Ce.getUint32(B+4+4,!0)<Ce.getUint32(B+4,!0);){Ce.setInt32(t,e,!0),Ce.setInt32(t+4,C,!0),Ce.setInt32(t+4+4,0,!0),Q=ge.exports.ZSTD_decompressStream(i,t,B);const A=Ce.getUint32(t+4+4,!0);yield Ie.slice(e,e+A)}ge.exports.free(A)}if(ge.exports.ZSTD_freeDCtx(i),ge.exports.free(I),ge.exports.free(e),ge.exports.free(B),ge.exports.free(t),0!==Q)throw new Error("Incomplete stream, more data expected.")}};var te=Object.freeze({__proto__:null,default:class extends lg{decodeBlock(A){return Be.decode(new Uint8Array(A)).buffer}},zstd:Be});var Qe=Object.freeze({__proto__:null,default:class extends lg{constructor(A){if(super(A),"undefined"==typeof createImageBitmap)throw new Error("Cannot decode WebImage as `createImageBitmap` is not available");if("undefined"==typeof document&&"undefined"==typeof OffscreenCanvas)throw new Error("Cannot decode WebImage as neither `document` nor `OffscreenCanvas` is not available")}async decodeBlock(A){const g=new Blob([A]),I=await createImageBitmap(g);let C;"undefined"!=typeof document?(C=document.createElement("canvas"),C.width=I.width,C.height=I.height):C=new OffscreenCanvas(I.width,I.height);const e=C.getContext("2d");e.drawImage(I,0,0);const i=e.getImageData(0,0,I.width,I.height).data,B=this.parameters.samplesPerPixel||4;if(4===B)return i.buffer;if(3===B){const A=new Uint8ClampedArray(I.width*I.height*3);for(let g=0,I=0;g<A.length;g+=3,I+=4)A[g]=i[I],A[g+1]=i[I+1],A[g+2]=i[I+2];return A.buffer}throw new Error(`Unsupported SamplesPerPixel value: ${B}`)}}});exports.CogBitmapLayer=AI,exports.CogTerrainLayer=eI,exports.CogTiles=jg,exports.GeoImage=bg,exports.extractTerrainCoordinate=function(A){try{if(!A?.coordinate||A.coordinate.length<3)return null;const[g,I,C]=A.coordinate;return void 0===g||void 0===I||void 0===C?null:{longitude:g,latitude:I,elevation:C}}catch{return null}},exports.sampleTerrainTileCoordinates=function(A,g=3){try{if(!A?.tile?.content)return[];const I=A.tile.content[0];if(!I?.raw)return[];const{raw:C,width:e,height:i}=I,B=A.tile.bbox;if(!B)return[];const t=B.west??B[0],Q=B.south??B[1],s=B.east??B[2],o=B.north??B[3];if(void 0===t||void 0===Q||void 0===s||void 0===o)return[];const a=A.coordinate;if(!a||a.length<2)return[];const[E,r]=a,n=Math.floor(g/2),h=(E-t)/(s-t),l=r*Math.PI/180,c=o*Math.PI/180,w=Q*Math.PI/180,D=Math.log(Math.tan(Math.PI/4+l/2)),d=Math.log(Math.tan(Math.PI/4+c/2)),y=Math.log(Math.tan(Math.PI/4+w/2)),G=(d-D)/(d-y),u=Math.floor(h*(e-1)),S=Math.floor(G*(i-1)),f=[];for(let A=-n;A<=n;A++)for(let g=-n;g<=n;g++){const I=u+g,B=S+A;if(I<0||I>=e||B<0||B>=i)continue;const Q=C[B*e+I];if(null==Q)continue;const o=t+I/(e-1)*(s-t),a=d-B/(i-1)*(d-y),E=180*(2*Math.atan(Math.exp(a))-Math.PI/2)/Math.PI;f.push({longitude:o,latitude:E,elevation:Q})}return f}catch{return[]}},exports.suppressGlobalAbortErrors=s,exports.terminateGlobalTerrainWorkerPool=function(){Tg&&(Tg.terminate(),Tg=null)};
|
|
3
|
+
function(){var A,g,I,C,e,i,t,B,s,Q,o,a,E,r,n,h,l=(A={defaultNoDataValue:-34027999387901484e22,decode:function(i,t){var B=(t=t||{}).encodedMaskData||null===t.encodedMaskData,s=e(i,t.inputOffset||0,B),Q=null!==t.noDataValue?t.noDataValue:A.defaultNoDataValue,o=g(s,t.pixelType||Float32Array,t.encodedMaskData,Q,t.returnMask),a={width:s.width,height:s.height,pixelData:o.resultPixels,minValue:o.minValue,maxValue:s.pixels.maxValue,noDataValue:Q};return o.resultMask&&(a.maskData=o.resultMask),t.returnEncodedMask&&s.mask&&(a.encodedMaskData=s.mask.bitset?s.mask.bitset:null),t.returnFileInfo&&(a.fileInfo=I(s),t.computeUsedBitDepths&&(a.fileInfo.bitDepths=C(s))),a}},g=function(A,g,I,C,e){var t,B,s,Q=0,o=A.pixels.numBlocksX,a=A.pixels.numBlocksY,E=Math.floor(A.width/o),r=Math.floor(A.height/a),n=2*A.maxZError,h=Number.MAX_VALUE;I=I||(A.mask?A.mask.bitset:null),B=new g(A.width*A.height),e&&I&&(s=new Uint8Array(A.width*A.height));for(var l,c,w=new Float32Array(E*r),D=0;D<=a;D++){var d=D!==a?r:A.height%a;if(0!==d)for(var y=0;y<=o;y++){var G=y!==o?E:A.width%o;if(0!==G){var u,S,f,N,k=D*A.width*r+y*E,R=A.width-G,F=A.pixels.blocks[Q];if(F.encoding<2?(0===F.encoding?u=F.rawData:(i(F.stuffedData,F.bitsPerPixel,F.numValidPixels,F.offset,n,w,A.pixels.maxValue),u=w),S=0):f=2===F.encoding?0:F.offset,I)for(c=0;c<d;c++){for(7&k&&(N=I[k>>3],N<<=7&k),l=0;l<G;l++)7&k||(N=I[k>>3]),128&N?(s&&(s[k]=1),h=h>(t=F.encoding<2?u[S++]:f)?t:h,B[k++]=t):(s&&(s[k]=0),B[k++]=C),N<<=1;k+=R}else if(F.encoding<2)for(c=0;c<d;c++){for(l=0;l<G;l++)h=h>(t=u[S++])?t:h,B[k++]=t;k+=R}else for(h=h>f?f:h,c=0;c<d;c++){for(l=0;l<G;l++)B[k++]=f;k+=R}if(1===F.encoding&&S!==F.numValidPixels)throw"Block and Mask do not match";Q++}}}return{resultPixels:B,resultMask:s,minValue:h}},I=function(A){return{fileIdentifierString:A.fileIdentifierString,fileVersion:A.fileVersion,imageType:A.imageType,height:A.height,width:A.width,maxZError:A.maxZError,eofOffset:A.eofOffset,mask:A.mask?{numBlocksX:A.mask.numBlocksX,numBlocksY:A.mask.numBlocksY,numBytes:A.mask.numBytes,maxValue:A.mask.maxValue}:null,pixels:{numBlocksX:A.pixels.numBlocksX,numBlocksY:A.pixels.numBlocksY,numBytes:A.pixels.numBytes,maxValue:A.pixels.maxValue,noDataValue:A.noDataValue}}},C=function(A){for(var g=A.pixels.numBlocksX*A.pixels.numBlocksY,I={},C=0;C<g;C++){var e=A.pixels.blocks[C];0===e.encoding?I.float32=!0:1===e.encoding?I[e.bitsPerPixel]=!0:I[0]=!0}return Object.keys(I)},e=function(A,g,I){var C={},e=new Uint8Array(A,g,10);if(C.fileIdentifierString=String.fromCharCode.apply(null,e),"CntZImage"!==C.fileIdentifierString.trim())throw"Unexpected file identifier string: "+C.fileIdentifierString;g+=10;var i=new DataView(A,g,24);if(C.fileVersion=i.getInt32(0,!0),C.imageType=i.getInt32(4,!0),C.height=i.getUint32(8,!0),C.width=i.getUint32(12,!0),C.maxZError=i.getFloat64(16,!0),g+=24,!I)if(i=new DataView(A,g,16),C.mask={},C.mask.numBlocksY=i.getUint32(0,!0),C.mask.numBlocksX=i.getUint32(4,!0),C.mask.numBytes=i.getUint32(8,!0),C.mask.maxValue=i.getFloat32(12,!0),g+=16,C.mask.numBytes>0){var t=new Uint8Array(Math.ceil(C.width*C.height/8)),B=(i=new DataView(A,g,C.mask.numBytes)).getInt16(0,!0),s=2,Q=0;do{if(B>0)for(;B--;)t[Q++]=i.getUint8(s++);else{var o=i.getUint8(s++);for(B=-B;B--;)t[Q++]=o}B=i.getInt16(s,!0),s+=2}while(s<C.mask.numBytes);if(-32768!==B||Q<t.length)throw"Unexpected end of mask RLE encoding";C.mask.bitset=t,g+=C.mask.numBytes}else 0===(C.mask.numBytes|C.mask.numBlocksY|C.mask.maxValue)&&(C.mask.bitset=new Uint8Array(Math.ceil(C.width*C.height/8)));i=new DataView(A,g,16),C.pixels={},C.pixels.numBlocksY=i.getUint32(0,!0),C.pixels.numBlocksX=i.getUint32(4,!0),C.pixels.numBytes=i.getUint32(8,!0),C.pixels.maxValue=i.getFloat32(12,!0),g+=16;var a=C.pixels.numBlocksX,E=C.pixels.numBlocksY,r=a+(C.width%a>0?1:0),n=E+(C.height%E>0?1:0);C.pixels.blocks=new Array(r*n);for(var h=0,l=0;l<n;l++)for(var c=0;c<r;c++){var w=0,D=A.byteLength-g;i=new DataView(A,g,Math.min(10,D));var d={};C.pixels.blocks[h++]=d;var y=i.getUint8(0);if(w++,d.encoding=63&y,d.encoding>3)throw"Invalid block encoding ("+d.encoding+")";if(2!==d.encoding){if(0!==y&&2!==y){if(y>>=6,d.offsetType=y,2===y)d.offset=i.getInt8(1),w++;else if(1===y)d.offset=i.getInt16(1,!0),w+=2;else{if(0!==y)throw"Invalid block offset type";d.offset=i.getFloat32(1,!0),w+=4}if(1===d.encoding)if(y=i.getUint8(w),w++,d.bitsPerPixel=63&y,y>>=6,d.numValidPixelsType=y,2===y)d.numValidPixels=i.getUint8(w),w++;else if(1===y)d.numValidPixels=i.getUint16(w,!0),w+=2;else{if(0!==y)throw"Invalid valid pixel count type";d.numValidPixels=i.getUint32(w,!0),w+=4}}var G;if(g+=w,3!==d.encoding)if(0===d.encoding){var u=(C.pixels.numBytes-1)/4;if(u!==Math.floor(u))throw"uncompressed block has invalid length";G=new ArrayBuffer(4*u),new Uint8Array(G).set(new Uint8Array(A,g,4*u));var S=new Float32Array(G);d.rawData=S,g+=4*u}else if(1===d.encoding){var f=Math.ceil(d.numValidPixels*d.bitsPerPixel/8),N=Math.ceil(f/4);G=new ArrayBuffer(4*N),new Uint8Array(G).set(new Uint8Array(A,g,f)),d.stuffedData=new Uint32Array(G),g+=f}}else g++}return C.eofOffset=g,C},i=function(A,g,I,C,e,i,t){var B,s,Q,o=(1<<g)-1,a=0,E=0,r=Math.ceil((t-C)/e),n=4*A.length-Math.ceil(g*I/8);for(A[A.length-1]<<=8*n,B=0;B<I;B++){if(0===E&&(Q=A[a++],E=32),E>=g)s=Q>>>E-g&o,E-=g;else{var h=g-E;s=(Q&o)<<h&o,s+=(Q=A[a++])>>>(E=32-h)}i[B]=s<r?C+s*e:t}return i},A),c=(t=function(A,g,I,C,e,i,t,B){var s,Q,o,a,E,r=(1<<I)-1,n=0,h=0,l=4*A.length-Math.ceil(I*C/8);if(A[A.length-1]<<=8*l,e)for(s=0;s<C;s++)0===h&&(o=A[n++],h=32),h>=I?(Q=o>>>h-I&r,h-=I):(Q=(o&r)<<(a=I-h)&r,Q+=(o=A[n++])>>>(h=32-a)),g[s]=e[Q];else for(E=Math.ceil((B-i)/t),s=0;s<C;s++)0===h&&(o=A[n++],h=32),h>=I?(Q=o>>>h-I&r,h-=I):(Q=(o&r)<<(a=I-h)&r,Q+=(o=A[n++])>>>(h=32-a)),g[s]=Q<E?i+Q*t:B},B=function(A,g,I,C,e,i){var t,B=(1<<g)-1,s=0,Q=0,o=0,a=0,E=0,r=[],n=4*A.length-Math.ceil(g*I/8);A[A.length-1]<<=8*n;var h=Math.ceil((i-C)/e);for(Q=0;Q<I;Q++)0===a&&(t=A[s++],a=32),a>=g?(E=t>>>a-g&B,a-=g):(E=(t&B)<<(o=g-a)&B,E+=(t=A[s++])>>>(a=32-o)),r[Q]=E<h?C+E*e:i;return r.unshift(C),r},s=function(A,g,I,C,e,i,t,B){var s,Q,o,a,E=(1<<I)-1,r=0,n=0,h=0;if(e)for(s=0;s<C;s++)0===n&&(o=A[r++],n=32,h=0),n>=I?(Q=o>>>h&E,n-=I,h+=I):(Q=o>>>h&E,n=32-(a=I-n),Q|=((o=A[r++])&(1<<a)-1)<<I-a,h=a),g[s]=e[Q];else{var l=Math.ceil((B-i)/t);for(s=0;s<C;s++)0===n&&(o=A[r++],n=32,h=0),n>=I?(Q=o>>>h&E,n-=I,h+=I):(Q=o>>>h&E,n=32-(a=I-n),Q|=((o=A[r++])&(1<<a)-1)<<I-a,h=a),g[s]=Q<l?i+Q*t:B}return g},Q=function(A,g,I,C,e,i){var t,B=(1<<g)-1,s=0,Q=0,o=0,a=0,E=0,r=0,n=[],h=Math.ceil((i-C)/e);for(Q=0;Q<I;Q++)0===a&&(t=A[s++],a=32,r=0),a>=g?(E=t>>>r&B,a-=g,r+=g):(E=t>>>r&B,a=32-(o=g-a),E|=((t=A[s++])&(1<<o)-1)<<g-o,r=o),n[Q]=E<h?C+E*e:i;return n.unshift(C),n},o=function(A,g,I,C){var e,i,t,B,s=(1<<I)-1,Q=0,o=0,a=4*A.length-Math.ceil(I*C/8);for(A[A.length-1]<<=8*a,e=0;e<C;e++)0===o&&(t=A[Q++],o=32),o>=I?(i=t>>>o-I&s,o-=I):(i=(t&s)<<(B=I-o)&s,i+=(t=A[Q++])>>>(o=32-B)),g[e]=i;return g},a=function(A,g,I,C){var e,i,t,B,s=(1<<I)-1,Q=0,o=0,a=0;for(e=0;e<C;e++)0===o&&(t=A[Q++],o=32,a=0),o>=I?(i=t>>>a&s,o-=I,a+=I):(i=t>>>a&s,o=32-(B=I-o),i|=((t=A[Q++])&(1<<B)-1)<<I-B,a=B),g[e]=i;return g},E={HUFFMAN_LUT_BITS_MAX:12,computeChecksumFletcher32:function(A){for(var g=65535,I=65535,C=A.length,e=Math.floor(C/2),i=0;e;){var t=e>=359?359:e;e-=t;do{g+=A[i++]<<8,I+=g+=A[i++]}while(--t);g=(65535&g)+(g>>>16),I=(65535&I)+(I>>>16)}return 1&C&&(I+=g+=A[i]<<8),((I=(65535&I)+(I>>>16))<<16|(g=(65535&g)+(g>>>16)))>>>0},readHeaderInfo:function(A,g){var I=g.ptr,C=new Uint8Array(A,I,6),e={};if(e.fileIdentifierString=String.fromCharCode.apply(null,C),0!==e.fileIdentifierString.lastIndexOf("Lerc2",0))throw"Unexpected file identifier string (expect Lerc2 ): "+e.fileIdentifierString;I+=6;var i,t=new DataView(A,I,8),B=t.getInt32(0,!0);if(e.fileVersion=B,I+=4,B>=3&&(e.checksum=t.getUint32(4,!0),I+=4),t=new DataView(A,I,12),e.height=t.getUint32(0,!0),e.width=t.getUint32(4,!0),I+=8,B>=4?(e.numDims=t.getUint32(8,!0),I+=4):e.numDims=1,t=new DataView(A,I,40),e.numValidPixel=t.getUint32(0,!0),e.microBlockSize=t.getInt32(4,!0),e.blobSize=t.getInt32(8,!0),e.imageType=t.getInt32(12,!0),e.maxZError=t.getFloat64(16,!0),e.zMin=t.getFloat64(24,!0),e.zMax=t.getFloat64(32,!0),I+=40,g.headerInfo=e,g.ptr=I,B>=3&&(i=B>=4?52:48,this.computeChecksumFletcher32(new Uint8Array(A,I-i,e.blobSize-14))!==e.checksum))throw"Checksum failed.";return!0},checkMinMaxRanges:function(A,g){var I=g.headerInfo,C=this.getDataTypeArray(I.imageType),e=I.numDims*this.getDataTypeSize(I.imageType),i=this.readSubArray(A,g.ptr,C,e),t=this.readSubArray(A,g.ptr+e,C,e);g.ptr+=2*e;var B,s=!0;for(B=0;B<I.numDims;B++)if(i[B]!==t[B]){s=!1;break}return I.minValues=i,I.maxValues=t,s},readSubArray:function(A,g,I,C){var e;if(I===Uint8Array)e=new Uint8Array(A,g,C);else{var i=new ArrayBuffer(C);new Uint8Array(i).set(new Uint8Array(A,g,C)),e=new I(i)}return e},readMask:function(A,g){var I,C,e=g.ptr,i=g.headerInfo,t=i.width*i.height,B=i.numValidPixel,s=new DataView(A,e,4),Q={};if(Q.numBytes=s.getUint32(0,!0),e+=4,(0===B||t===B)&&0!==Q.numBytes)throw"invalid mask";if(0===B)I=new Uint8Array(Math.ceil(t/8)),Q.bitset=I,C=new Uint8Array(t),g.pixels.resultMask=C,e+=Q.numBytes;else if(Q.numBytes>0){I=new Uint8Array(Math.ceil(t/8));var o=(s=new DataView(A,e,Q.numBytes)).getInt16(0,!0),a=2,E=0,r=0;do{if(o>0)for(;o--;)I[E++]=s.getUint8(a++);else for(r=s.getUint8(a++),o=-o;o--;)I[E++]=r;o=s.getInt16(a,!0),a+=2}while(a<Q.numBytes);if(-32768!==o||E<I.length)throw"Unexpected end of mask RLE encoding";C=new Uint8Array(t);var n=0,h=0;for(h=0;h<t;h++)7&h?(n=I[h>>3],n<<=7&h):n=I[h>>3],128&n&&(C[h]=1);g.pixels.resultMask=C,Q.bitset=I,e+=Q.numBytes}return g.ptr=e,g.mask=Q,!0},readDataOneSweep:function(A,g,I,C){var e,i=g.ptr,t=g.headerInfo,B=t.numDims,s=t.width*t.height,Q=t.imageType,o=t.numValidPixel*E.getDataTypeSize(Q)*B,a=g.pixels.resultMask;if(I===Uint8Array)e=new Uint8Array(A,i,o);else{var r=new ArrayBuffer(o);new Uint8Array(r).set(new Uint8Array(A,i,o)),e=new I(r)}if(e.length===s*B)g.pixels.resultPixels=C?E.swapDimensionOrder(e,s,B,I,!0):e;else{g.pixels.resultPixels=new I(s*B);var n=0,h=0,l=0,c=0;if(B>1){if(C){for(h=0;h<s;h++)if(a[h])for(c=h,l=0;l<B;l++,c+=s)g.pixels.resultPixels[c]=e[n++]}else for(h=0;h<s;h++)if(a[h])for(c=h*B,l=0;l<B;l++)g.pixels.resultPixels[c+l]=e[n++]}else for(h=0;h<s;h++)a[h]&&(g.pixels.resultPixels[h]=e[n++])}return i+=o,g.ptr=i,!0},readHuffmanTree:function(A,g){var I=this.HUFFMAN_LUT_BITS_MAX,C=new DataView(A,g.ptr,16);if(g.ptr+=16,C.getInt32(0,!0)<2)throw"unsupported Huffman version";var e=C.getInt32(4,!0),i=C.getInt32(8,!0),t=C.getInt32(12,!0);if(i>=t)return!1;var B=new Uint32Array(t-i);E.decodeBits(A,g,B);var s,Q,o,a,n=[];for(s=i;s<t;s++)n[Q=s-(s<e?0:e)]={first:B[s-i],second:null};var h=A.byteLength-g.ptr,l=Math.ceil(h/4),c=new ArrayBuffer(4*l);new Uint8Array(c).set(new Uint8Array(A,g.ptr,h));var w,D=new Uint32Array(c),d=0,y=0;for(w=D[0],s=i;s<t;s++)(a=n[Q=s-(s<e?0:e)].first)>0&&(n[Q].second=w<<d>>>32-a,32-d>=a?32===(d+=a)&&(d=0,w=D[++y]):(d+=a-32,w=D[++y],n[Q].second|=w>>>32-d));var G=0,u=0,S=new r;for(s=0;s<n.length;s++)void 0!==n[s]&&(G=Math.max(G,n[s].first));u=G>=I?I:G;var f,N,k,R,F,p=[];for(s=i;s<t;s++)if((a=n[Q=s-(s<e?0:e)].first)>0)if(f=[a,Q],a<=u)for(N=n[Q].second<<u-a,k=1<<u-a,o=0;o<k;o++)p[N|o]=f;else for(N=n[Q].second,F=S,R=a-1;R>=0;R--)N>>>R&1?(F.right||(F.right=new r),F=F.right):(F.left||(F.left=new r),F=F.left),0!==R||F.val||(F.val=f[1]);return{decodeLut:p,numBitsLUTQick:u,numBitsLUT:G,tree:S,stuffedData:D,srcPtr:y,bitPos:d}},readHuffman:function(A,g,I,C){var e,i,t,B,s,Q,o,a,r,n=g.headerInfo.numDims,h=g.headerInfo.height,l=g.headerInfo.width,c=l*h,w=this.readHuffmanTree(A,g),D=w.decodeLut,d=w.tree,y=w.stuffedData,G=w.srcPtr,u=w.bitPos,S=w.numBitsLUTQick,f=w.numBitsLUT,N=0===g.headerInfo.imageType?128:0,k=g.pixels.resultMask,R=0;u>0&&(G++,u=0);var F,p=y[G],L=1===g.encodeMode,Y=new I(c*n),U=Y;if(n<2||L){for(F=0;F<n;F++)if(n>1&&(U=new I(Y.buffer,c*F,c),R=0),g.headerInfo.numValidPixel===l*h)for(a=0,Q=0;Q<h;Q++)for(o=0;o<l;o++,a++){if(i=0,s=B=p<<u>>>32-S,32-u<S&&(s=B|=y[G+1]>>>64-u-S),D[s])i=D[s][1],u+=D[s][0];else for(s=B=p<<u>>>32-f,32-u<f&&(s=B|=y[G+1]>>>64-u-f),e=d,r=0;r<f;r++)if(!(e=B>>>f-r-1&1?e.right:e.left).left&&!e.right){i=e.val,u=u+r+1;break}u>=32&&(u-=32,p=y[++G]),t=i-N,L?(t+=o>0?R:Q>0?U[a-l]:R,t&=255,U[a]=t,R=t):U[a]=t}else for(a=0,Q=0;Q<h;Q++)for(o=0;o<l;o++,a++)if(k[a]){if(i=0,s=B=p<<u>>>32-S,32-u<S&&(s=B|=y[G+1]>>>64-u-S),D[s])i=D[s][1],u+=D[s][0];else for(s=B=p<<u>>>32-f,32-u<f&&(s=B|=y[G+1]>>>64-u-f),e=d,r=0;r<f;r++)if(!(e=B>>>f-r-1&1?e.right:e.left).left&&!e.right){i=e.val,u=u+r+1;break}u>=32&&(u-=32,p=y[++G]),t=i-N,L?(o>0&&k[a-1]?t+=R:Q>0&&k[a-l]?t+=U[a-l]:t+=R,t&=255,U[a]=t,R=t):U[a]=t}}else for(a=0,Q=0;Q<h;Q++)for(o=0;o<l;o++)if(a=Q*l+o,!k||k[a])for(F=0;F<n;F++,a+=c){if(i=0,s=B=p<<u>>>32-S,32-u<S&&(s=B|=y[G+1]>>>64-u-S),D[s])i=D[s][1],u+=D[s][0];else for(s=B=p<<u>>>32-f,32-u<f&&(s=B|=y[G+1]>>>64-u-f),e=d,r=0;r<f;r++)if(!(e=B>>>f-r-1&1?e.right:e.left).left&&!e.right){i=e.val,u=u+r+1;break}u>=32&&(u-=32,p=y[++G]),t=i-N,U[a]=t}g.ptr=g.ptr+4*(G+1)+(u>0?4:0),g.pixels.resultPixels=Y,n>1&&!C&&(g.pixels.resultPixels=E.swapDimensionOrder(Y,c,n,I))},decodeBits:function(A,g,I,C,e){var i=g.headerInfo,E=i.fileVersion,r=0,n=A.byteLength-g.ptr>=5?5:A.byteLength-g.ptr,h=new DataView(A,g.ptr,n),l=h.getUint8(0);r++;var c=l>>6,w=0===c?4:3-c,D=(32&l)>0,d=31&l,y=0;if(1===w)y=h.getUint8(r),r++;else if(2===w)y=h.getUint16(r,!0),r+=2;else{if(4!==w)throw"Invalid valid pixel count type";y=h.getUint32(r,!0),r+=4}var G,u,S,f,N,k,R,F,p,L=2*i.maxZError,Y=i.numDims>1?i.maxValues[e]:i.zMax;if(D){for(g.counter.lut++,F=h.getUint8(r),r++,f=Math.ceil((F-1)*d/8),N=Math.ceil(f/4),u=new ArrayBuffer(4*N),S=new Uint8Array(u),g.ptr+=r,S.set(new Uint8Array(A,g.ptr,f)),R=new Uint32Array(u),g.ptr+=f,p=0;F-1>>>p;)p++;f=Math.ceil(y*p/8),N=Math.ceil(f/4),u=new ArrayBuffer(4*N),(S=new Uint8Array(u)).set(new Uint8Array(A,g.ptr,f)),G=new Uint32Array(u),g.ptr+=f,k=E>=3?Q(R,d,F-1,C,L,Y):B(R,d,F-1,C,L,Y),E>=3?s(G,I,p,y,k):t(G,I,p,y,k)}else g.counter.bitstuffer++,p=d,g.ptr+=r,p>0&&(f=Math.ceil(y*p/8),N=Math.ceil(f/4),u=new ArrayBuffer(4*N),(S=new Uint8Array(u)).set(new Uint8Array(A,g.ptr,f)),G=new Uint32Array(u),g.ptr+=f,E>=3?null==C?a(G,I,p,y):s(G,I,p,y,!1,C,L,Y):null==C?o(G,I,p,y):t(G,I,p,y,!1,C,L,Y))},readTiles:function(A,g,I,C){var e=g.headerInfo,i=e.width,t=e.height,B=i*t,s=e.microBlockSize,Q=e.imageType,o=E.getDataTypeSize(Q),a=Math.ceil(i/s),r=Math.ceil(t/s);g.pixels.numBlocksY=r,g.pixels.numBlocksX=a,g.pixels.ptr=0;var n,h,l,c,w,D,d,y,G,u,S=0,f=0,N=0,k=0,R=0,F=0,p=0,L=0,Y=0,U=0,m=0,M=0,b=0,K=0,H=0,J=new I(s*s),x=t%s||s,T=i%s||s,Z=e.numDims,q=g.pixels.resultMask,O=g.pixels.resultPixels,W=e.fileVersion>=5?14:15,V=e.zMax;for(N=0;N<r;N++)for(R=N!==r-1?s:x,k=0;k<a;k++)for(U=N*i*s+k*s,m=i-(F=k!==a-1?s:T),y=0;y<Z;y++){if(Z>1?(u=O,U=N*i*s+k*s,O=new I(g.pixels.resultPixels.buffer,B*y*o,B),V=e.maxValues[y]):u=null,p=A.byteLength-g.ptr,h={},H=0,L=(n=new DataView(A,g.ptr,Math.min(10,p))).getUint8(0),H++,G=e.fileVersion>=5?4&L:0,Y=L>>6&255,(L>>2&W)!=(k*s>>3&W))throw"integrity issue";if(G&&0===y)throw"integrity issue";if((w=3&L)>3)throw g.ptr+=H,"Invalid block encoding ("+w+")";if(2!==w)if(0===w){if(G)throw"integrity issue";if(g.counter.uncompressed++,g.ptr+=H,M=(M=R*F*o)<(b=A.byteLength-g.ptr)?M:b,l=new ArrayBuffer(M%o===0?M:M+o-M%o),new Uint8Array(l).set(new Uint8Array(A,g.ptr,M)),c=new I(l),K=0,q)for(S=0;S<R;S++){for(f=0;f<F;f++)q[U]&&(O[U]=c[K++]),U++;U+=m}else for(S=0;S<R;S++){for(f=0;f<F;f++)O[U++]=c[K++];U+=m}g.ptr+=K*o}else if(D=E.getDataTypeUsed(G&&Q<6?4:Q,Y),d=E.getOnePixel(h,H,D,n),H+=E.getDataTypeSize(D),3===w)if(g.ptr+=H,g.counter.constantoffset++,q)for(S=0;S<R;S++){for(f=0;f<F;f++)q[U]&&(O[U]=G?Math.min(V,u[U]+d):d),U++;U+=m}else for(S=0;S<R;S++){for(f=0;f<F;f++)O[U]=G?Math.min(V,u[U]+d):d,U++;U+=m}else if(g.ptr+=H,E.decodeBits(A,g,J,d,y),H=0,G)if(q)for(S=0;S<R;S++){for(f=0;f<F;f++)q[U]&&(O[U]=J[H++]+u[U]),U++;U+=m}else for(S=0;S<R;S++){for(f=0;f<F;f++)O[U]=J[H++]+u[U],U++;U+=m}else if(q)for(S=0;S<R;S++){for(f=0;f<F;f++)q[U]&&(O[U]=J[H++]),U++;U+=m}else for(S=0;S<R;S++){for(f=0;f<F;f++)O[U++]=J[H++];U+=m}else{if(G)if(q)for(S=0;S<R;S++)for(f=0;f<F;f++)q[U]&&(O[U]=u[U]),U++;else for(S=0;S<R;S++)for(f=0;f<F;f++)O[U]=u[U],U++;g.counter.constant++,g.ptr+=H}}Z>1&&!C&&(g.pixels.resultPixels=E.swapDimensionOrder(g.pixels.resultPixels,B,Z,I))},formatFileInfo:function(A){return{fileIdentifierString:A.headerInfo.fileIdentifierString,fileVersion:A.headerInfo.fileVersion,imageType:A.headerInfo.imageType,height:A.headerInfo.height,width:A.headerInfo.width,numValidPixel:A.headerInfo.numValidPixel,microBlockSize:A.headerInfo.microBlockSize,blobSize:A.headerInfo.blobSize,maxZError:A.headerInfo.maxZError,pixelType:E.getPixelType(A.headerInfo.imageType),eofOffset:A.eofOffset,mask:A.mask?{numBytes:A.mask.numBytes}:null,pixels:{numBlocksX:A.pixels.numBlocksX,numBlocksY:A.pixels.numBlocksY,maxValue:A.headerInfo.zMax,minValue:A.headerInfo.zMin,noDataValue:A.noDataValue}}},constructConstantSurface:function(A,g){var I=A.headerInfo.zMax,C=A.headerInfo.zMin,e=A.headerInfo.maxValues,i=A.headerInfo.numDims,t=A.headerInfo.height*A.headerInfo.width,B=0,s=0,Q=0,o=A.pixels.resultMask,a=A.pixels.resultPixels;if(o)if(i>1){if(g)for(B=0;B<i;B++)for(Q=B*t,I=e[B],s=0;s<t;s++)o[s]&&(a[Q+s]=I);else for(s=0;s<t;s++)if(o[s])for(Q=s*i,B=0;B<i;B++)a[Q+i]=e[B]}else for(s=0;s<t;s++)o[s]&&(a[s]=I);else if(i>1&&C!==I)if(g)for(B=0;B<i;B++)for(Q=B*t,I=e[B],s=0;s<t;s++)a[Q+s]=I;else for(s=0;s<t;s++)for(Q=s*i,B=0;B<i;B++)a[Q+B]=e[B];else for(s=0;s<t*i;s++)a[s]=I},getDataTypeArray:function(A){var g;switch(A){case 0:g=Int8Array;break;case 1:g=Uint8Array;break;case 2:g=Int16Array;break;case 3:g=Uint16Array;break;case 4:g=Int32Array;break;case 5:g=Uint32Array;break;case 6:default:g=Float32Array;break;case 7:g=Float64Array}return g},getPixelType:function(A){var g;switch(A){case 0:g="S8";break;case 1:g="U8";break;case 2:g="S16";break;case 3:g="U16";break;case 4:g="S32";break;case 5:g="U32";break;case 6:default:g="F32";break;case 7:g="F64"}return g},isValidPixelValue:function(A,g){if(null==g)return!1;var I;switch(A){case 0:I=g>=-128&&g<=127;break;case 1:I=g>=0&&g<=255;break;case 2:I=g>=-32768&&g<=32767;break;case 3:I=g>=0&&g<=65536;break;case 4:I=g>=-2147483648&&g<=2147483647;break;case 5:I=g>=0&&g<=4294967296;break;case 6:I=g>=-34027999387901484e22&&g<=34027999387901484e22;break;case 7:I=g>=-17976931348623157e292&&g<=17976931348623157e292;break;default:I=!1}return I},getDataTypeSize:function(A){var g=0;switch(A){case 0:case 1:g=1;break;case 2:case 3:g=2;break;case 4:case 5:case 6:g=4;break;case 7:g=8;break;default:g=A}return g},getDataTypeUsed:function(A,g){var I=A;switch(A){case 2:case 4:I=A-g;break;case 3:case 5:I=A-2*g;break;case 6:I=0===g?A:1===g?2:1;break;case 7:I=0===g?A:A-2*g+1;break;default:I=A}return I},getOnePixel:function(A,g,I,C){var e=0;switch(I){case 0:e=C.getInt8(g);break;case 1:e=C.getUint8(g);break;case 2:e=C.getInt16(g,!0);break;case 3:e=C.getUint16(g,!0);break;case 4:e=C.getInt32(g,!0);break;case 5:e=C.getUInt32(g,!0);break;case 6:e=C.getFloat32(g,!0);break;case 7:e=C.getFloat64(g,!0);break;default:throw"the decoder does not understand this pixel type"}return e},swapDimensionOrder:function(A,g,I,C,e){var i=0,t=0,B=0,s=0,Q=A;if(I>1)if(Q=new C(g*I),e)for(i=0;i<g;i++)for(s=i,B=0;B<I;B++,s+=g)Q[s]=A[t++];else for(i=0;i<g;i++)for(s=i,B=0;B<I;B++,s+=g)Q[t++]=A[s];return Q}},r=function(A,g,I){this.val=A,this.left=g,this.right=I},{decode:function(A,g){var I=(g=g||{}).noDataValue,C=0,e={};if(e.ptr=g.inputOffset||0,e.pixels={},E.readHeaderInfo(A,e)){var i=e.headerInfo,t=i.fileVersion,B=E.getDataTypeArray(i.imageType);if(t>5)throw"unsupported lerc version 2."+t;E.readMask(A,e),i.numValidPixel===i.width*i.height||e.pixels.resultMask||(e.pixels.resultMask=g.maskData);var s=i.width*i.height;e.pixels.resultPixels=new B(s*i.numDims),e.counter={onesweep:0,uncompressed:0,lut:0,bitstuffer:0,constant:0,constantoffset:0};var Q,o=!g.returnPixelInterleavedDims;if(0!==i.numValidPixel)if(i.zMax===i.zMin)E.constructConstantSurface(e,o);else if(t>=4&&E.checkMinMaxRanges(A,e))E.constructConstantSurface(e,o);else{var a=new DataView(A,e.ptr,2),r=a.getUint8(0);if(e.ptr++,r)E.readDataOneSweep(A,e,B,o);else if(t>1&&i.imageType<=1&&Math.abs(i.maxZError-.5)<1e-5){var n=a.getUint8(1);if(e.ptr++,e.encodeMode=n,n>2||t<4&&n>1)throw"Invalid Huffman flag "+n;n?E.readHuffman(A,e,B,o):E.readTiles(A,e,B,o)}else E.readTiles(A,e,B,o)}e.eofOffset=e.ptr,g.inputOffset?(Q=e.headerInfo.blobSize+g.inputOffset-e.ptr,Math.abs(Q)>=1&&(e.eofOffset=g.inputOffset+e.headerInfo.blobSize)):(Q=e.headerInfo.blobSize-e.ptr,Math.abs(Q)>=1&&(e.eofOffset=e.headerInfo.blobSize));var h={width:i.width,height:i.height,pixelData:e.pixels.resultPixels,minValue:i.zMin,maxValue:i.zMax,validPixelCount:i.numValidPixel,dimCount:i.numDims,dimStats:{minValues:i.minValues,maxValues:i.maxValues},maskData:e.pixels.resultMask};if(e.pixels.resultMask&&E.isValidPixelValue(i.imageType,I)){var l=e.pixels.resultMask;for(C=0;C<s;C++)l[C]||(h.pixelData[C]=I);h.noDataValue=I}return e.noDataValue=I,g.returnFileInfo&&(h.fileInfo=E.formatFileInfo(e)),h}},getBandCount:function(A){for(var g=0,I=0,C={ptr:0,pixels:{}};I<A.byteLength-58;)E.readHeaderInfo(A,C),I+=C.headerInfo.blobSize,g++,C.ptr=I;return g}}),w=(n=new ArrayBuffer(4),h=new Uint8Array(n),new Uint32Array(n)[0]=1,1===h[0]),D={decode:function(A,g){if(!w)throw"Big endian system is not supported.";var I,C,e=(g=g||{}).inputOffset||0,i=new Uint8Array(A,e,10),t=String.fromCharCode.apply(null,i);if("CntZImage"===t.trim())I=l,C=1;else{if("Lerc2"!==t.substring(0,5))throw"Unexpected file identifier string: "+t;I=c,C=2}for(var B,s,Q,o,a,E,r=0,n=A.byteLength-10,h=[],D={width:0,height:0,pixels:[],pixelType:g.pixelType,mask:null,statistics:[]},d=0;e<n;){var y=I.decode(A,{inputOffset:e,encodedMaskData:B,maskData:Q,returnMask:0===r,returnEncodedMask:0===r,returnFileInfo:!0,returnPixelInterleavedDims:g.returnPixelInterleavedDims,pixelType:g.pixelType||null,noDataValue:g.noDataValue||null});e=y.fileInfo.eofOffset,Q=y.maskData,0===r&&(B=y.encodedMaskData,D.width=y.width,D.height=y.height,D.dimCount=y.dimCount||1,D.pixelType=y.pixelType||y.fileInfo.pixelType,D.mask=Q),C>1&&(Q&&h.push(Q),y.fileInfo.mask&&y.fileInfo.mask.numBytes>0&&d++),r++,D.pixels.push(y.pixelData),D.statistics.push({minValue:y.minValue,maxValue:y.maxValue,noDataValue:y.noDataValue,dimStats:y.dimStats})}if(C>1&&d>1){for(E=D.width*D.height,D.bandMasks=h,(Q=new Uint8Array(E)).set(h[0]),o=1;o<h.length;o++)for(s=h[o],a=0;a<E;a++)Q[a]=Q[a]&s[a];D.maskData=Q}return D}};OC.exports?OC.exports=D:this.Lerc=D}()),qC.exports),VC=TC(WC);let vC,zC,PC;const XC={env:{emscripten_notify_memory_growth:A=>{PC=new Uint8Array(zC.exports.memory.buffer)}}};const jC="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AikACDcACCAHIDo3AAAgEUEZSA0BIARBGGohBANAIAIpABAhOiAEIAIpABg3AAggBCA6NwAAIAIpACAhOiAEIAIpACg3ABggBCA6NwAQIAJBIGohAiAEQSBqIgQgCkkNAAsMAQsCQAJAIAUoAswCIhEgBUHgAWogJUEHcUEMbGoiDygCACICaiIHIBxLDQAgCSAPKAIEIgogAmoiBmogG0sNACAGQSBqIBQgCWtNDQELIAUgDygCCDYCoAEgBSAPKQIANwOYASAJIBQgBUGYAWogBUHMAmogHCALIBcgIhAgIQYMAQsgAiAJaiEEIA8oAgghFSARKQAAITogCSARKQAINwAIIAkgOjcAAAJAIAJBEUkNACARKQAQITogCSARKQAYNwAYIAkgOjcAECACQRBrQRFIDQAgEUEQaiECIAlBIGohEgNAIAIpABAhOiASIAIpABg3AAggEiA6NwAAIAIpACAhOiASIAIpACg3ABggEiA6NwAQIAJBIGohAiASQSBqIhIgBEkNAAsLIAQgFWshAiAFIAc2AswCIAQgC2sgFUkEQCAVIAQgF2tLDQwgIiAiIAIgC2siD2oiByAKak8EQCAKRQ0CIAQgByAK/AoAAAwCC0EAIA9rIgIEQCAEIAcgAvwKAAALIAogD2ohCiAEIA9rIQQgCyECCyAVQRBPBEAgAikAACE6IAQgAikACDcACCAEIDo3AAAgCkERSA0BIAQgCmohByAEQRBqIQQDQCACKQAQITogBCACKQAYNwAIIAQgOjcAACACKQAgITogBCACKQAoNwAYIAQgOjcAECACQSBqIQIgBEEgaiIEIAdJDQALDAELAkAgFUEHTQRAIAQgAi0AADoAACAEIAItAAE6AAEgBCACLQACOgACIAQgAi0AAzoAAyAEIAIgFUECdCIHQeAaaigCAGoiAigAADYABCACIAdBgBtqKAIAayECDAELIAQgAikAADcAAAsgCkEJSQ0AIAQgCmohDyAEQQhqIgcgAkEIaiICa0EPTARAA0AgByACKQAANwAAIAJBCGohAiAHQQhqIgcgD0kNAAwCCwALIAIpAAAhOiAHIAIpAAg3AAggByA6NwAAIApBGUgNACAEQRhqIQQDQCACKQAQITogBCACKQAYNwAIIAQgOjcAACACKQAgITogBCACKQAoNwAYIAQgOjcAECACQSBqIQIgBEEgaiIEIA9JDQALCyAGQYh/SwRAIAYhAwwLCyAFQeABaiAlQQdxQQxsaiICIA02AgggAiAMNgIEIAIgEDYCAAsgBiAJaiEJICVBAWohJSAQIC1qIAxqIS0MAQsLIAUoArABIAUoArQBRw0HIAUoAqwBQSBHDQcgDiAoayEQA0ACQCAOIBBMBEBBACECA0AgAkEDRg0CIDIgAkECdCIDaiADICZqKAIANgIAIAJBAWohAgwACwALIAVB4AFqIBBBB3FBDGxqIQoCfwJAIAgoAoTsAUECRgRAIAUoAswCIg8gCigCACIEaiIHIAgoAoDsASICSwRAIAIgD0cEQCACIA9rIgIgFCAJa0sNCyAJIA8gAhAfIAogBCACayIENgIAIAIgCWohCQsgBSAWNgLMAiAIQQA2AoTsAQJAAkACQCAEQYCABEoNACAJIAooAgQiDSAEaiIGaiAbSw0AIAZBIGogFCAJa00NAQsgBSAKKAIINgJQIAUgCikCADcDSCAJIBQgBUHIAGogBUHMAmogGSALIBcgIhAgIQYMAQsgBCAWaiEHIAQgCWohDCAKKAIIIQogFikAACE6IAkgFikACDcACCAJIDo3AAACQCAEQRFJDQAgHikAACE6IAkgHikACDcAGCAJIDo3ABAgBEEQa0ERSA0AIAlBIGohAiAeIQQDQCAEKQAQITogAiAEKQAYNwAIIAIgOjcAACAEKQAgITogAiAEKQAoNwAYIAIgOjcAECAEQSBqIQQgAkEgaiICIAxJDQALCyAMIAprIQIgBSAHNgLMAiAMIAtrIApJBEAgCiAMIBdrSw0PICIgIiACIAtrIgdqIgQgDWpPBEAgDUUNAiAMIAQgDfwKAAAMAgtBACAHayICBEAgDCAEIAL8CgAACyAHIA1qIQ0gDCAHayEMIAshAgsgCkEQTwRAIAIpAAAhOiAMIAIpAAg3AAggDCA6NwAAIA1BEUgNASAMIA1qIQcgDEEQaiEEA0AgAikAECE6IAQgAikAGDcACCAEIDo3AAAgAikAICE6IAQgAikAKDcAGCAEIDo3ABAgAkEgaiECIARBIGoiBCAHSQ0ACwwBCwJAIApBB00EQCAMIAItAAA6AAAgDCACLQABOgABIAwgAi0AAjoAAiAMIAItAAM6AAMgDCACIApBAnQiBEHgGmooAgBqIgIoAAA2AAQgAiAEQYAbaigCAGshAgwBCyAMIAIpAAA3AAALIA1BCUkNACAMIA1qIQcgDEEIaiIEIAJBCGoiAmtBD0wEQANAIAQgAikAADcAACACQQhqIQIgBEEIaiIEIAdJDQAMAgsACyACKQAAITogBCACKQAINwAIIAQgOjcAACANQRlIDQAgDEEYaiEEA0AgAikAECE6IAQgAikAGDcACCAEIDo3AAAgAikAICE6IAQgAikAKDcAGCAEIDo3ABAgAkEgaiECIARBIGoiBCAHSQ0ACwsgBkGJf08EQCAGIQMMDgsgGSEcIAYgCWoMAwsgB0EgayECAkACQCAHIBxLDQAgCSAKKAIEIhIgBGoiDGogAksNACAMQSBqIBQgCWtNDQELIAUgCigCCDYCYCAFIAopAgA3A1ggCSAUIAIgBUHYAGogBUHMAmogHCALIBcgIhAhIQwMAgsgBCAJaiEGIAooAgghCiAPKQAAITogCSAPKQAINwAIIAkgOjcAAAJAIARBEUkNACAPKQAQITogCSAPKQAYNwAYIAkgOjcAECAEQRBrQRFIDQAgD0EQaiECIAlBIGohBANAIAIpABAhOiAEIAIpABg3AAggBCA6NwAAIAIpACAhOiAEIAIpACg3ABggBCA6NwAQIAJBIGohAiAEQSBqIgQgBkkNAAsLIAYgCmshAiAFIAc2AswCIAYgC2sgCkkEQCAKIAYgF2tLDQ0gIiAiIAIgC2siB2oiBCASak8EQCASRQ0DIAYgBCAS/AoAAAwDC0EAIAdrIgIEQCAGIAQgAvwKAAALIAcgEmohEiAGIAdrIQYgCyECCyAKQRBPBEAgAikAACE6IAYgAikACDcACCAGIDo3AAAgEkERSA0CIAYgEmohByAGQRBqIQQDQCACKQAQITogBCACKQAYNwAIIAQgOjcAACACKQAgITogBCACKQAoNwAYIAQgOjcAECACQSBqIQIgBEEgaiIEIAdJDQALDAILAkAgCkEHTQRAIAYgAi0AADoAACAGIAItAAE6AAEgBiACLQACOgACIAYgAi0AAzoAAyAGIAIgCkECdCIEQeAaaigCAGoiAigAADYABCACIARBgBtqKAIAayECDAELIAYgAikAADcAAAsgEkEJSQ0BIAYgEmohByAGQQhqIgQgAkEIaiICa0EPTARAA0AgBCACKQAANwAAIAJBCGohAiAE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",_C=new class{init(){return vC||(vC="undefined"!=typeof fetch?fetch(`data:application/wasm;base64,${jC}`).then(A=>A.arrayBuffer()).then(A=>WebAssembly.instantiate(A,XC)).then(this._init):WebAssembly.instantiate(Buffer.from(jC,"base64"),XC).then(this._init),vC)}_init(A){zC=A.instance,XC.env.emscripten_notify_memory_growth(0)}decode(A,g=0){if(!zC)throw new Error("ZSTDDecoder: Await .init() before decoding.");const I=A.byteLength,C=zC.exports.malloc(I);PC.set(A,C),g=g||Number(zC.exports.ZSTD_findDecompressedSize(C,I));const e=zC.exports.malloc(g),i=zC.exports.ZSTD_decompress(e,g,C,I),t=PC.slice(e,e+i);return zC.exports.free(C),zC.exports.free(e),t}};var $C=Object.freeze({__proto__:null,default:class extends lg{decodeBlock(A){const g=this.parameters,I=g.LercParameters?.[DA];let C=A;switch(I){case dA:break;case yA:C=HC(new Uint8Array(C)).buffer;break;case GA:C=_C.decode(new Uint8Array(C)).buffer;break;default:throw new Error(`Unsupported LERC additional compression method identifier: ${I}`)}return VC.decode(C,{returnPixelInterleavedDims:1===this.parameters.planarConfiguration}).pixels[0].buffer}},zstd:_C});let Ae,ge,Ie,Ce;const ee={env:{emscripten_notify_memory_growth:A=>{Ie=new Uint8Array(ge.exports.memory.buffer),Ce=new DataView(Ie.buffer)}}};const ie="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QQhyIQBBACEDA0AgACADTQ0DIANBQGshAwwACwALQWwhCiAOIA5B/ABqIA5B+ABqIAUgBhAGIgJBiH9LDQEgDigCeCIDIARLDQEgACAOIA4oAnwgByAIIAMgDRAlIAEgADYCACACIQoMAQtBbCEKCyAOQYABaiQAIAoLcAEEfyAAQgA3AgAgAgRAIAFBCmohBiABKAIEIQRBACECQQAhAQNAIAEgBHZFBEAgAiAGIAFBA3RqLQAAIgUgAiAFSxshAiABQQFqIQEgAyAFQRZLaiEDDAELCyAAIAI2AgQgACADQQggBGt0NgIACwuuAQEEfyABIAIoAgQiAyABKAIEaiIENgIEIAAgA0ECdEGwGWooAgAgASgCAEEAIARrdnE2AgACQCAEQSFPBEAgAUGwGjYCCAwBCyABKAIIIgMgASgCEE8EQCABEAwMAQsgAyABKAIMIgVGDQAgASADIAMgBWsgBEEDdiIGIAMgBmsgBUkbIgNrIgU2AgggASAEIANBA3RrNgIEIAEgBSgAADYCAAsgACACQQhqNgIEC40CAgN/AX4gACACaiEEAkACQCACQQhOBEAgACABayICQXlIDQELA0AgACAETw0CIAAgAS0AADoAACAAQQFqIQAgAUEBaiEBDAALAAsCQAJAIAJBb0sNACAAIARBIGsiAksNACABKQAAIQYgACABKQAINwAIIAAgBjcAACACIABrIgVBEU4EQCAAQRBqIQAgASEDA0AgAykAECEGIAAgAykAGDcACCAAIAY3AAAgAykAICEGIAAgAykAKDcAGCAAIAY3ABAgA0EgaiEDIABBIGoiACACSQ0ACwsgASAFaiEBDAELIAAhAgsDQCACIARPDQEgAiABLQAAOgAAIAJBAWohAiABQQFqIQEMAAsACwvfAQEGf0G6fyEKAkAgAigCBCIIIAIoAgAiCWoiDSABIABrSw0AQWwhCiAJIAQgAygCACILa0sNACAAIAlqIgQgAigCCCIMayECIAAgAUEgayIBIAsgCUEAEDMgAyAJIAtqNgIAAkACQCAEIAVrIAxPBEAgAiEFDAELIAwgBCAGa0sNAiAHIAcgAiAFayIDaiICIAhqTwRAIAhFDQIgBCACIAj8CgAADAILQQAgA2siAARAIAQgAiAA/AoAAAsgAyAIaiEIIAQgA2shBAsgBCABIAUgCEEBEDML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",te=new class{init(){return Ae||(Ae="undefined"!=typeof fetch?fetch(`data:application/wasm;base64,${ie}`).then(A=>A.arrayBuffer()).then(A=>WebAssembly.instantiate(A,ee)).then(this._init):WebAssembly.instantiate(Buffer.from(ie,"base64"),ee).then(this._init),Ae)}_init(A){ge=A.instance,ee.env.emscripten_notify_memory_growth(0)}decode(A,g=0){if(!ge)throw new Error("ZSTDDecoder: Await .init() before decoding.");const I=A.byteLength,C=ge.exports.malloc(I);if(Ie.set(A,C),0===g&&(g=Number(ge.exports.ZSTD_findDecompressedSize(C,I))),-1===g){ge.exports.free(C);const g=[];for(const I of this.decodeStreaming([A]))g.push(I);if(1===g.length)return g[0];const I=g.reduce((A,g)=>A+g.byteLength,0),e=new Uint8Array(I);let i=0;for(const A of g)e.set(A,i),i+=A.byteLength;return e}const e=ge.exports.malloc(g),i=ge.exports.ZSTD_decompress(e,g,C,I),t=Ie.slice(e,e+i);return ge.exports.free(C),ge.exports.free(e),t}*decodeStreaming(A){if(!ge)throw new Error("ZSTDDecoder: Await .init() before decoding.");const g=ge.exports.ZSTD_DStreamInSize(),I=ge.exports.malloc(g),C=ge.exports.ZSTD_DStreamOutSize(),e=ge.exports.malloc(C),i=ge.exports.ZSTD_createDCtx(),t=ge.exports.malloc(12),B=ge.exports.malloc(12);let s=0;for(const g of A){const A=ge.exports.malloc(g.byteLength);for(Ie.set(g,A),Ce.setInt32(t,A,!0),Ce.setInt32(t+4,g.byteLength,!0),Ce.setInt32(t+4+4,0,!0);Ce.getUint32(t+4+4,!0)<Ce.getUint32(t+4,!0);){Ce.setInt32(B,e,!0),Ce.setInt32(B+4,C,!0),Ce.setInt32(B+4+4,0,!0),s=ge.exports.ZSTD_decompressStream(i,B,t);const A=Ce.getUint32(B+4+4,!0);yield Ie.slice(e,e+A)}ge.exports.free(A)}if(ge.exports.ZSTD_freeDCtx(i),ge.exports.free(I),ge.exports.free(e),ge.exports.free(t),ge.exports.free(B),0!==s)throw new Error("Incomplete stream, more data expected.")}};var Be=Object.freeze({__proto__:null,default:class extends lg{decodeBlock(A){return te.decode(new Uint8Array(A)).buffer}},zstd:te});var se=Object.freeze({__proto__:null,default:class extends lg{constructor(A){if(super(A),"undefined"==typeof createImageBitmap)throw new Error("Cannot decode WebImage as `createImageBitmap` is not available");if("undefined"==typeof document&&"undefined"==typeof OffscreenCanvas)throw new Error("Cannot decode WebImage as neither `document` nor `OffscreenCanvas` is not available")}async decodeBlock(A){const g=new Blob([A]),I=await createImageBitmap(g);let C;"undefined"!=typeof document?(C=document.createElement("canvas"),C.width=I.width,C.height=I.height):C=new OffscreenCanvas(I.width,I.height);const e=C.getContext("2d");e.drawImage(I,0,0);const i=e.getImageData(0,0,I.width,I.height).data,t=this.parameters.samplesPerPixel||4;if(4===t)return i.buffer;if(3===t){const A=new Uint8ClampedArray(I.width*I.height*3);for(let g=0,I=0;g<A.length;g+=3,I+=4)A[g]=i[I],A[g+1]=i[I+1],A[g+2]=i[I+2];return A.buffer}throw new Error(`Unsupported SamplesPerPixel value: ${t}`)}}});exports.CogBitmapLayer=AI,exports.CogTerrainLayer=eI,exports.CogTiles=jg,exports.GeoImage=bg,exports.extractTerrainCoordinate=function(A){try{if(!A?.coordinate||A.coordinate.length<3)return null;const[g,I,C]=A.coordinate;return void 0===g||void 0===I||void 0===C?null:{longitude:g,latitude:I,elevation:C}}catch{return null}},exports.sampleTerrainTileCoordinates=function(A,g=3){try{if(!A?.tile?.content)return[];const I=A.tile.content[0];if(!I?.raw)return[];const{raw:C,width:e,height:i}=I,t=A.tile.bbox;if(!t)return[];const B=t.west??t[0],s=t.south??t[1],Q=t.east??t[2],o=t.north??t[3];if(void 0===B||void 0===s||void 0===Q||void 0===o)return[];const a=A.coordinate;if(!a||a.length<2)return[];const[E,r]=a,n=Math.floor(g/2),h=(E-B)/(Q-B),l=r*Math.PI/180,c=o*Math.PI/180,w=s*Math.PI/180,D=Math.log(Math.tan(Math.PI/4+l/2)),d=Math.log(Math.tan(Math.PI/4+c/2)),y=Math.log(Math.tan(Math.PI/4+w/2)),G=(d-D)/(d-y),u=Math.floor(h*(e-1)),S=Math.floor(G*(i-1)),f=[];for(let A=-n;A<=n;A++)for(let g=-n;g<=n;g++){const I=u+g,t=S+A;if(I<0||I>=e||t<0||t>=i)continue;const s=C[t*e+I];if(null==s)continue;const o=B+I/(e-1)*(Q-B),a=d-t/(i-1)*(d-y),E=180*(2*Math.atan(Math.exp(a))-Math.PI/2)/Math.PI;f.push({longitude:o,latitude:E,elevation:s})}return f}catch{return[]}},exports.suppressGlobalAbortErrors=Q,exports.terminateGlobalTerrainWorkerPool=function(){Tg&&(Tg.terminate(),Tg=null)};
|
|
4
4
|
//# sourceMappingURL=index.min.js.map
|