@gisatcz/deckgl-geolib 2.0.0 → 2.1.0-dev.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -20
- package/dist/cjs/index.js +4652 -4202
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/index.min.js +3 -3
- package/dist/cjs/index.min.js.map +1 -1
- package/dist/cjs/types/core/CogTiles.d.ts +8 -22
- package/dist/cjs/types/core/GeoImage.d.ts +1 -0
- package/dist/cjs/types/core/index.d.ts +1 -0
- package/dist/cjs/types/index.d.ts +1 -0
- package/dist/cjs/types/layers/CogBitmapLayer.d.ts +3 -0
- package/dist/cjs/types/layers/CogTerrainLayer.d.ts +2 -0
- package/dist/esm/index.js +4651 -4201
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.min.js +3 -3
- package/dist/esm/index.min.js.map +1 -1
- package/dist/esm/types/core/CogTiles.d.ts +8 -22
- package/dist/esm/types/core/GeoImage.d.ts +1 -0
- package/dist/esm/types/core/index.d.ts +1 -0
- package/dist/esm/types/index.d.ts +1 -0
- package/dist/esm/types/layers/CogBitmapLayer.d.ts +3 -0
- package/dist/esm/types/layers/CogTerrainLayer.d.ts +2 -0
- package/package.json +31 -26
package/dist/cjs/index.min.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
"use strict";var A=require("@deck.gl/core"),e=require("@deck.gl/geo-layers"),t=require("@deck.gl/layers"),i=require("@deck.gl/extensions"),a=require("chroma-js"),r=require("@loaders.gl/schema"),n=require("@loaders.gl/loader-utils"),s=require("@deck.gl/mesh-layers");function o(A){return(e,...t)=>l(A,e,t)}function g(A,e){return o(c(A,e).get)}const{apply:l,construct:I,defineProperty:h,get:B,getOwnPropertyDescriptor:c,getPrototypeOf:C,has:E,ownKeys:f,set:Q,setPrototypeOf:d}=Reflect,{iterator:u,species:w,toStringTag:p,for:m}=Symbol,y=Object,{create:D,defineProperty:k,freeze:_,is:b}=y,S=Array.prototype[u],x=o(S),F=ArrayBuffer;g(F.prototype,"byteLength");const G="undefined"!=typeof SharedArrayBuffer?SharedArrayBuffer:null;G&&g(G.prototype,"byteLength");const U=C(Uint8Array);U.from;const R=U.prototype;R[u],o(R.keys),o(R.values),o(R.entries),o(R.set),o(R.reverse),o(R.fill),o(R.copyWithin),o(R.sort),o(R.slice),o(R.subarray),g(R,"buffer"),g(R,"byteOffset"),g(R,"length"),g(R,p);const M=Uint8Array,L=Uint16Array,N=Uint32Array,v=Float32Array,T=C([][u]()),q=o(T.next),J=o(function*(){}().next),O=C(T),H=o(DataView.prototype.getUint16),Y=WeakMap,z=Y.prototype,K=o(z.get),P=o(z.set),V=new Y,Z=D(null,{next:{value:function(){const A=K(V,this);return q(A)}},[u]:{value:function(){return this}}});const X=new Y,W=D(O,{next:{value:function(){const A=K(X,this);return J(A)},writable:!0,configurable:!0}});for(const A of f(T))"next"!==A&&k(W,A,c(T,A));const j=new F(4),$=new v(j),AA=new N(j),eA=new L(512),tA=new M(512);for(let A=0;A<256;++A){const e=A-127;e<-24?(eA[A]=0,eA[256|A]=32768,tA[A]=24,tA[256|A]=24):e<-14?(eA[A]=1024>>-e-14,eA[256|A]=1024>>-e-14|32768,tA[A]=-e-1,tA[256|A]=-e-1):e<=15?(eA[A]=e+15<<10,eA[256|A]=e+15<<10|32768,tA[A]=13,tA[256|A]=13):e<128?(eA[A]=31744,eA[256|A]=64512,tA[A]=24,tA[256|A]=24):(eA[A]=31744,eA[256|A]=64512,tA[A]=13,tA[256|A]=13)}const iA=new N(2048);for(let A=1;A<1024;++A){let e=A<<13,t=0;for(;!(8388608&e);)e<<=1,t-=8388608;e&=-8388609,t+=947912704,iA[A]=e|t}for(let A=1024;A<2048;++A)iA[A]=939524096+(A-1024<<13);const aA=new N(64);for(let A=1;A<31;++A)aA[A]=A<<23;aA[31]=1199570944,aA[32]=2147483648;for(let A=33;A<63;++A)aA[A]=2147483648+(A-32<<23);aA[63]=3347054592;const rA=new L(64);for(let A=1;A<64;++A)32!==A&&(rA[A]=1024);function nA(A,e,...t){return function(A){const e=A>>10;return AA[0]=iA[rA[e]+(1023&A)]+aA[e],$[0]}(H(A,e,...function(A){if(A[u]===S&&T.next===q)return A;const e=D(Z);return P(V,e,x(A)),e}(t)))}function sA(A){return A&&A.__esModule&&Object.prototype.hasOwnProperty.call(A,"default")?A.default:A}var oA={exports:{}};function gA(A,e,t){const i=t&&t.debug||!1;i&&console.log("[xml-utils] getting "+e+" in "+A);const a="object"==typeof A?A.outer:A,r=a.slice(0,a.indexOf(">")+1),n=['"',"'"];for(let A=0;A<n.length;A++){const t=n[A],a=e+"\\="+t+"([^"+t+"]*)"+t;i&&console.log("[xml-utils] pattern:",a);const s=new RegExp(a).exec(r);if(i&&console.log("[xml-utils] match:",s),s)return s[1]}}oA.exports=gA,oA.exports.default=gA;var lA=sA(oA.exports),IA={exports:{}},hA={exports:{}},BA={exports:{}};function cA(A,e,t){const i=new RegExp(e).exec(A.slice(t));return i?t+i.index:-1}BA.exports=cA,BA.exports.default=cA;var CA=BA.exports,EA={exports:{}};function fA(A,e,t){const i=new RegExp(e).exec(A.slice(t));return i?t+i.index+i[0].length-1:-1}EA.exports=fA,EA.exports.default=fA;var QA=EA.exports,dA={exports:{}};function uA(A,e){const t=new RegExp(e,"g"),i=A.match(t);return i?i.length:0}dA.exports=uA,dA.exports.default=uA;var wA=dA.exports;const pA=CA,mA=QA,yA=wA;function DA(A,e,t){const i=t&&t.debug||!1,a=!(t&&!1===typeof t.nested),r=t&&t.startIndex||0;i&&console.log("[xml-utils] starting findTagByName with",e," and ",t);const n=pA(A,`<${e}[ \n>/]`,r);if(i&&console.log("[xml-utils] start:",n),-1===n)return;const s=A.slice(n+e.length);let o=mA(s,"^[^<]*[ /]>",0);const g=-1!==o&&"/"===s[o-1];if(i&&console.log("[xml-utils] selfClosing:",g),!1===g)if(a){let A=0,t=1,i=0;for(;-1!==(o=mA(s,"[ /]"+e+">",A));){const a=s.substring(A,o+1);if(t+=yA(a,"<"+e+"[ \n\t>]"),i+=yA(a,"</"+e+">"),i>=t)break;A=o}}else o=mA(s,"[ /]"+e+">",0);const l=n+e.length+o+1;if(i&&console.log("[xml-utils] end:",l),-1===l)return;const I=A.slice(n,l);let h;return h=g?null:I.slice(I.indexOf(">")+1,I.lastIndexOf("<")),{inner:h,outer:I,start:n,end:l}}hA.exports=DA,hA.exports.default=DA;const kA=hA.exports;function _A(A,e,t){const i=[],a=t&&t.debug||!1,r=!t||"boolean"!=typeof t.nested||t.nested;let n,s=t&&t.startIndex||0;for(;n=kA(A,e,{debug:a,startIndex:s});)s=r?n.start+1+e.length:n.end,i.push(n);return a&&console.log("findTagsByName found",i.length,"tags"),i}IA.exports=_A,IA.exports.default=_A;var bA=sA(IA.exports);const SA={315:"Artist",258:"BitsPerSample",265:"CellLength",264:"CellWidth",320:"ColorMap",259:"Compression",33432:"Copyright",306:"DateTime",338:"ExtraSamples",266:"FillOrder",289:"FreeByteCounts",288:"FreeOffsets",291:"GrayResponseCurve",290:"GrayResponseUnit",316:"HostComputer",270:"ImageDescription",257:"ImageLength",256:"ImageWidth",271:"Make",281:"MaxSampleValue",280:"MinSampleValue",272:"Model",254:"NewSubfileType",274:"Orientation",262:"PhotometricInterpretation",284:"PlanarConfiguration",296:"ResolutionUnit",278:"RowsPerStrip",277:"SamplesPerPixel",305:"Software",279:"StripByteCounts",273:"StripOffsets",255:"SubfileType",263:"Threshholding",282:"XResolution",283:"YResolution",326:"BadFaxLines",327:"CleanFaxData",343:"ClipPath",328:"ConsecutiveBadFaxLines",433:"Decode",434:"DefaultImageColor",269:"DocumentName",336:"DotRange",321:"HalftoneHints",346:"Indexed",347:"JPEGTables",285:"PageName",297:"PageNumber",317:"Predictor",319:"PrimaryChromaticities",532:"ReferenceBlackWhite",339:"SampleFormat",340:"SMinSampleValue",341:"SMaxSampleValue",559:"StripRowCounts",330:"SubIFDs",292:"T4Options",293:"T6Options",325:"TileByteCounts",323:"TileLength",324:"TileOffsets",322:"TileWidth",301:"TransferFunction",318:"WhitePoint",344:"XClipPathUnits",286:"XPosition",529:"YCbCrCoefficients",531:"YCbCrPositioning",530:"YCbCrSubSampling",345:"YClipPathUnits",287:"YPosition",37378:"ApertureValue",40961:"ColorSpace",36868:"DateTimeDigitized",36867:"DateTimeOriginal",34665:"Exif IFD",36864:"ExifVersion",33434:"ExposureTime",41728:"FileSource",37385:"Flash",40960:"FlashpixVersion",33437:"FNumber",42016:"ImageUniqueID",37384:"LightSource",37500:"MakerNote",37377:"ShutterSpeedValue",37510:"UserComment",33723:"IPTC",34675:"ICC Profile",700:"XMP",42112:"GDAL_METADATA",42113:"GDAL_NODATA",34377:"Photoshop",33550:"ModelPixelScale",33922:"ModelTiepoint",34264:"ModelTransformation",34735:"GeoKeyDirectory",34736:"GeoDoubleParams",34737:"GeoAsciiParams",50674:"LercParameters"},xA={};for(const A in SA)SA.hasOwnProperty(A)&&(xA[SA[A]]=parseInt(A,10));const FA=[xA.BitsPerSample,xA.ExtraSamples,xA.SampleFormat,xA.StripByteCounts,xA.StripOffsets,xA.StripRowCounts,xA.TileByteCounts,xA.TileOffsets,xA.SubIFDs],GA={1:"BYTE",2:"ASCII",3:"SHORT",4:"LONG",5:"RATIONAL",6:"SBYTE",7:"UNDEFINED",8:"SSHORT",9:"SLONG",10:"SRATIONAL",11:"FLOAT",12:"DOUBLE",13:"IFD",16:"LONG8",17:"SLONG8",18:"IFD8"},UA={};for(const A in GA)GA.hasOwnProperty(A)&&(UA[GA[A]]=parseInt(A,10));const RA=0,MA=1,LA=2,NA=3,vA=5,TA=6,qA=8,JA=0,OA=1,HA=0,YA=1,zA=2,KA={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"};const PA=new Map;function VA(A,e){Array.isArray(A)||(A=[A]),A.forEach((A=>PA.set(A,e)))}function ZA(A,e,t,i=1){return new(Object.getPrototypeOf(A).constructor)(e*t*i)}function XA(A,e,t){return(1-t)*A+t*e}function WA(A,e,t,i,a,r="nearest"){switch(r.toLowerCase()){case"nearest":return function(A,e,t,i,a){const r=e/i,n=t/a;return A.map((A=>{const s=ZA(A,i,a);for(let o=0;o<a;++o){const a=Math.min(Math.round(n*o),t-1);for(let t=0;t<i;++t){const n=Math.min(Math.round(r*t),e-1),g=A[a*e+n];s[o*i+t]=g}}return s}))}(A,e,t,i,a);case"bilinear":case"linear":return function(A,e,t,i,a){const r=e/i,n=t/a;return A.map((A=>{const s=ZA(A,i,a);for(let o=0;o<a;++o){const a=n*o,g=Math.floor(a),l=Math.min(Math.ceil(a),t-1);for(let t=0;t<i;++t){const n=r*t,I=n%1,h=Math.floor(n),B=Math.min(Math.ceil(n),e-1),c=A[g*e+h],C=A[g*e+B],E=A[l*e+h],f=A[l*e+B],Q=XA(XA(c,C,I),XA(E,f,I),a%1);s[o*i+t]=Q}}return s}))}(A,e,t,i,a);default:throw new Error(`Unsupported resampling method: '${r}'`)}}function jA(A,e,t,i,a,r,n="nearest"){switch(n.toLowerCase()){case"nearest":return function(A,e,t,i,a,r){const n=e/i,s=t/a,o=ZA(A,i,a,r);for(let g=0;g<a;++g){const a=Math.min(Math.round(s*g),t-1);for(let t=0;t<i;++t){const s=Math.min(Math.round(n*t),e-1);for(let n=0;n<r;++n){const l=A[a*e*r+s*r+n];o[g*i*r+t*r+n]=l}}}return o}(A,e,t,i,a,r);case"bilinear":case"linear":return function(A,e,t,i,a,r){const n=e/i,s=t/a,o=ZA(A,i,a,r);for(let g=0;g<a;++g){const a=s*g,l=Math.floor(a),I=Math.min(Math.ceil(a),t-1);for(let t=0;t<i;++t){const s=n*t,h=s%1,B=Math.floor(s),c=Math.min(Math.ceil(s),e-1);for(let n=0;n<r;++n){const s=A[l*e*r+B*r+n],C=A[l*e*r+c*r+n],E=A[I*e*r+B*r+n],f=A[I*e*r+c*r+n],Q=XA(XA(s,C,h),XA(E,f,h),a%1);o[g*i*r+t*r+n]=Q}}}return o}(A,e,t,i,a,r);default:throw new Error(`Unsupported resampling method: '${n}'`)}}function $A(A,e,t){let i=0;for(let a=e;a<t;++a)i+=A[a];return i}function Ae(A,e,t){switch(A){case 1:if(e<=8)return new Uint8Array(t);if(e<=16)return new Uint16Array(t);if(e<=32)return new Uint32Array(t);break;case 2:if(8===e)return new Int8Array(t);if(16===e)return new Int16Array(t);if(32===e)return new Int32Array(t);break;case 3:switch(e){case 16:case 32:return new Float32Array(t);case 64:return new Float64Array(t)}}throw Error("Unsupported data format/bitsPerSample")}VA([void 0,1],(()=>Promise.resolve().then((function(){return st})).then((A=>A.default)))),VA(5,(()=>Promise.resolve().then((function(){return lt})).then((A=>A.default)))),VA(6,(()=>{throw new Error("old style JPEG compression is not supported.")})),VA(7,(()=>Promise.resolve().then((function(){return yt})).then((A=>A.default)))),VA([8,32946],(()=>Promise.resolve().then((function(){return Lr})).then((A=>A.default)))),VA(32773,(()=>Promise.resolve().then((function(){return vr})).then((A=>A.default)))),VA(34887,(()=>Promise.resolve().then((function(){return Pr})).then((async A=>(await A.zstd.init(),A))).then((A=>A.default)))),VA(50001,(()=>Promise.resolve().then((function(){return Vr})).then((A=>A.default))));var ee=class{constructor(A,e,t,i,a,r){this.fileDirectory=A,this.geoKeys=e,this.dataView=t,this.littleEndian=i,this.tiles=a?{}:null,this.isTiled=!A.StripOffsets;const n=A.PlanarConfiguration;if(this.planarConfiguration=void 0===n?1:n,1!==this.planarConfiguration&&2!==this.planarConfiguration)throw new Error("Invalid planar configuration.");this.source=r}getFileDirectory(){return this.fileDirectory}getGeoKeys(){return this.geoKeys}getWidth(){return this.fileDirectory.ImageWidth}getHeight(){return this.fileDirectory.ImageLength}getSamplesPerPixel(){return void 0!==this.fileDirectory.SamplesPerPixel?this.fileDirectory.SamplesPerPixel:1}getTileWidth(){return this.isTiled?this.fileDirectory.TileWidth:this.getWidth()}getTileHeight(){return this.isTiled?this.fileDirectory.TileLength:void 0!==this.fileDirectory.RowsPerStrip?Math.min(this.fileDirectory.RowsPerStrip,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;for(let e=0;e<this.fileDirectory.BitsPerSample.length;++e)A+=this.getSampleByteSize(e);return A}getSampleByteSize(A){if(A>=this.fileDirectory.BitsPerSample.length)throw new RangeError(`Sample index ${A} is out of range.`);return Math.ceil(this.fileDirectory.BitsPerSample[A]/8)}getReaderForSample(A){const e=this.fileDirectory.SampleFormat?this.fileDirectory.SampleFormat[A]:1,t=this.fileDirectory.BitsPerSample[A];switch(e){case 1:if(t<=8)return DataView.prototype.getUint8;if(t<=16)return DataView.prototype.getUint16;if(t<=32)return DataView.prototype.getUint32;break;case 2:if(t<=8)return DataView.prototype.getInt8;if(t<=16)return DataView.prototype.getInt16;if(t<=32)return DataView.prototype.getInt32;break;case 3:switch(t){case 16:return function(A,e){return nA(this,A,e)};case 32:return DataView.prototype.getFloat32;case 64:return DataView.prototype.getFloat64}}throw Error("Unsupported data format/bitsPerSample")}getSampleFormat(A=0){return this.fileDirectory.SampleFormat?this.fileDirectory.SampleFormat[A]:1}getBitsPerSample(A=0){return this.fileDirectory.BitsPerSample[A]}getArrayForSample(A,e){return Ae(this.getSampleFormat(A),this.getBitsPerSample(A),e)}async getTileOrStrip(A,e,t,i,a){const r=Math.ceil(this.getWidth()/this.getTileWidth()),n=Math.ceil(this.getHeight()/this.getTileHeight());let s;const{tiles:o}=this;let g,l;1===this.planarConfiguration?s=e*r+A:2===this.planarConfiguration&&(s=t*r*n+e*r+A),this.isTiled?(g=this.fileDirectory.TileOffsets[s],l=this.fileDirectory.TileByteCounts[s]):(g=this.fileDirectory.StripOffsets[s],l=this.fileDirectory.StripByteCounts[s]);const I=(await this.source.fetch([{offset:g,length:l}],a))[0];let h;return null!==o&&o[s]?h=o[s]:(h=(async()=>{let A=await i.decode(this.fileDirectory,I);const t=this.getSampleFormat(),a=this.getBitsPerSample();return function(A,e){return(1!==A&&2!==A||!(e<=32)||e%8!=0)&&(3!==A||16!==e&&32!==e&&64!==e)}(t,a)&&(A=function(A,e,t,i,a,r,n){const s=new DataView(A),o=2===t?1:i,g=Ae(e,a,2===t?n*r:n*r*i),l=parseInt("1".repeat(a),2);if(1===e){let A;A=1===t?i*a:a;let e=r*A;7&e&&(e=e+7&-8);for(let A=0;A<n;++A){const t=A*e;for(let e=0;e<r;++e){const i=t+e*o*a;for(let t=0;t<o;++t){const n=i+t*a,I=(A*r+e)*o+t,h=Math.floor(n/8),B=n%8;if(B+a<=8)g[I]=s.getUint8(h)>>8-a-B&l;else if(B+a<=16)g[I]=s.getUint16(h)>>16-a-B&l;else if(B+a<=24){const A=s.getUint16(h)<<8|s.getUint8(h+2);g[I]=A>>24-a-B&l}else g[I]=s.getUint32(h)>>32-a-B&l}}}}return g.buffer}(A,t,this.planarConfiguration,this.getSamplesPerPixel(),a,this.getTileWidth(),this.getBlockHeight(e))),A})(),null!==o&&(o[s]=h)),{x:A,y:e,sample:t,data:await h}}async _readRaster(A,e,t,i,a,r,n,s,o){const g=this.getTileWidth(),l=this.getTileHeight(),I=this.getWidth(),h=this.getHeight(),B=Math.max(Math.floor(A[0]/g),0),c=Math.min(Math.ceil(A[2]/g),Math.ceil(I/g)),C=Math.max(Math.floor(A[1]/l),0),E=Math.min(Math.ceil(A[3]/l),Math.ceil(h/l)),f=A[2]-A[0];let Q=this.getBytesPerPixel();const d=[],u=[];for(let A=0;A<e.length;++A)1===this.planarConfiguration?d.push($A(this.fileDirectory.BitsPerSample,0,e[A])/8):d.push(0),u.push(this.getReaderForSample(e[A]));const w=[],{littleEndian:p}=this;for(let r=C;r<E;++r)for(let n=B;n<c;++n){let s;1===this.planarConfiguration&&(s=this.getTileOrStrip(n,r,0,a,o));for(let B=0;B<e.length;++B){const c=B,C=e[B];2===this.planarConfiguration&&(Q=this.getSampleByteSize(C),s=this.getTileOrStrip(n,r,C,a,o));const E=s.then((a=>{const r=a.data,n=new DataView(r),s=this.getBlockHeight(a.y),o=a.y*l,B=a.x*g,C=o+s,E=(a.x+1)*g,w=u[c],m=Math.min(s,s-(C-A[3]),h-o),y=Math.min(g,g-(E-A[2]),I-B);for(let a=Math.max(0,A[1]-o);a<m;++a)for(let r=Math.max(0,A[0]-B);r<y;++r){const s=(a*g+r)*Q,l=w.call(n,s+d[c],p);let I;i?(I=(a+o-A[1])*f*e.length+(r+B-A[0])*e.length+c,t[I]=l):(I=(a+o-A[1])*f+r+B-A[0],t[c][I]=l)}}));w.push(E)}}if(await Promise.all(w),r&&A[2]-A[0]!==r||n&&A[3]-A[1]!==n){let a;return a=i?jA(t,A[2]-A[0],A[3]-A[1],r,n,e.length,s):WA(t,A[2]-A[0],A[3]-A[1],r,n,s),a.width=r,a.height=n,a}return t.width=r||A[2]-A[0],t.height=n||A[3]-A[1],t}async readRasters({window:A,samples:e=[],interleave:t,pool:i=null,width:a,height:r,resampleMethod:n,fillValue:s,signal:o}={}){const g=A||[0,0,this.getWidth(),this.getHeight()];if(g[0]>g[2]||g[1]>g[3])throw new Error("Invalid subsets");const l=(g[2]-g[0])*(g[3]-g[1]),I=this.getSamplesPerPixel();if(e&&e.length){for(let A=0;A<e.length;++A)if(e[A]>=I)return Promise.reject(new RangeError(`Invalid sample index '${e[A]}'.`))}else for(let A=0;A<I;++A)e.push(A);let h;if(t){h=Ae(this.fileDirectory.SampleFormat?Math.max.apply(null,this.fileDirectory.SampleFormat):1,Math.max.apply(null,this.fileDirectory.BitsPerSample),l*e.length),s&&h.fill(s)}else{h=[];for(let A=0;A<e.length;++A){const t=this.getArrayForSample(e[A],l);Array.isArray(s)&&A<s.length?t.fill(s[A]):s&&!Array.isArray(s)&&t.fill(s),h.push(t)}}const B=i||await async function(A){const e=PA.get(A.Compression);if(!e)throw new Error(`Unknown compression method identifier: ${A.Compression}`);return new(await e())(A)}(this.fileDirectory);return await this._readRaster(g,e,h,t,B,a,r,n,o)}async readRGB({window:A,interleave:e=!0,pool:t=null,width:i,height:a,resampleMethod:r,enableAlpha:n=!1,signal:s}={}){const o=A||[0,0,this.getWidth(),this.getHeight()];if(o[0]>o[2]||o[1]>o[3])throw new Error("Invalid subsets");const g=this.fileDirectory.PhotometricInterpretation;if(g===LA){let o=[0,1,2];if(this.fileDirectory.ExtraSamples!==JA&&n){o=[];for(let A=0;A<this.fileDirectory.BitsPerSample.length;A+=1)o.push(A)}return this.readRasters({window:A,interleave:e,samples:o,pool:t,width:i,height:a,resampleMethod:r,signal:s})}let l;switch(g){case RA:case MA:case NA:l=[0];break;case vA:l=[0,1,2,3];break;case TA:case qA:l=[0,1,2];break;default:throw new Error("Invalid or unsupported photometric interpretation.")}const I={window:o,interleave:!0,samples:l,pool:t,width:i,height:a,resampleMethod:r,signal:s},{fileDirectory:h}=this,B=await this.readRasters(I),c=2**this.fileDirectory.BitsPerSample[0];let C;switch(g){case RA:C=function(A,e){const{width:t,height:i}=A,a=new Uint8Array(t*i*3);let r;for(let t=0,i=0;t<A.length;++t,i+=3)r=256-A[t]/e*256,a[i]=r,a[i+1]=r,a[i+2]=r;return a}(B,c);break;case MA:C=function(A,e){const{width:t,height:i}=A,a=new Uint8Array(t*i*3);let r;for(let t=0,i=0;t<A.length;++t,i+=3)r=A[t]/e*256,a[i]=r,a[i+1]=r,a[i+2]=r;return a}(B,c);break;case NA:C=function(A,e){const{width:t,height:i}=A,a=new Uint8Array(t*i*3),r=e.length/3,n=e.length/3*2;for(let t=0,i=0;t<A.length;++t,i+=3){const s=A[t];a[i]=e[s]/65536*256,a[i+1]=e[s+r]/65536*256,a[i+2]=e[s+n]/65536*256}return a}(B,h.ColorMap);break;case vA:C=function(A){const{width:e,height:t}=A,i=new Uint8Array(e*t*3);for(let e=0,t=0;e<A.length;e+=4,t+=3){const a=A[e],r=A[e+1],n=A[e+2],s=A[e+3];i[t]=(255-a)/256*255*((255-s)/256),i[t+1]=(255-r)/256*255*((255-s)/256),i[t+2]=(255-n)/256*255*((255-s)/256)}return i}(B);break;case TA:C=function(A){const{width:e,height:t}=A,i=new Uint8ClampedArray(e*t*3);for(let e=0,t=0;e<A.length;e+=3,t+=3){const a=A[e],r=A[e+1],n=A[e+2];i[t]=a+1.402*(n-128),i[t+1]=a-.34414*(r-128)-.71414*(n-128),i[t+2]=a+1.772*(r-128)}return i}(B);break;case qA:C=function(A){const{width:e,height:t}=A,i=new Uint8Array(e*t*3);for(let e=0,t=0;e<A.length;e+=3,t+=3){let a,r,n,s=(A[e+0]+16)/116,o=(A[e+1]<<24>>24)/500+s,g=s-(A[e+2]<<24>>24)/200;o=.95047*(o*o*o>.008856?o*o*o:(o-16/116)/7.787),s=1*(s*s*s>.008856?s*s*s:(s-16/116)/7.787),g=1.08883*(g*g*g>.008856?g*g*g:(g-16/116)/7.787),a=3.2406*o+-1.5372*s+-.4986*g,r=-.9689*o+1.8758*s+.0415*g,n=.0557*o+-.204*s+1.057*g,a=a>.0031308?1.055*a**(1/2.4)-.055:12.92*a,r=r>.0031308?1.055*r**(1/2.4)-.055:12.92*r,n=n>.0031308?1.055*n**(1/2.4)-.055:12.92*n,i[t]=255*Math.max(0,Math.min(1,a)),i[t+1]=255*Math.max(0,Math.min(1,r)),i[t+2]=255*Math.max(0,Math.min(1,n))}return i}(B);break;default:throw new Error("Unsupported photometric interpretation.")}if(!e){const A=new Uint8Array(C.length/3),e=new Uint8Array(C.length/3),t=new Uint8Array(C.length/3);for(let i=0,a=0;i<C.length;i+=3,++a)A[a]=C[i],e[a]=C[i+1],t[a]=C[i+2];C=[A,e,t]}return C.width=B.width,C.height=B.height,C}getTiePoints(){if(!this.fileDirectory.ModelTiepoint)return[];const A=[];for(let e=0;e<this.fileDirectory.ModelTiepoint.length;e+=6)A.push({i:this.fileDirectory.ModelTiepoint[e],j:this.fileDirectory.ModelTiepoint[e+1],k:this.fileDirectory.ModelTiepoint[e+2],x:this.fileDirectory.ModelTiepoint[e+3],y:this.fileDirectory.ModelTiepoint[e+4],z:this.fileDirectory.ModelTiepoint[e+5]});return A}getGDALMetadata(A=null){const e={};if(!this.fileDirectory.GDAL_METADATA)return null;const t=this.fileDirectory.GDAL_METADATA;let i=bA(t,"Item");i=null===A?i.filter((A=>void 0===lA(A,"sample"))):i.filter((e=>Number(lA(e,"sample"))===A));for(let A=0;A<i.length;++A){const t=i[A];e[lA(t,"name")]=t.inner}return e}getGDALNoData(){if(!this.fileDirectory.GDAL_NODATA)return null;const A=this.fileDirectory.GDAL_NODATA;return Number(A.substring(0,A.length-1))}getOrigin(){const A=this.fileDirectory.ModelTiepoint,e=this.fileDirectory.ModelTransformation;if(A&&6===A.length)return[A[3],A[4],A[5]];if(e)return[e[3],e[7],e[11]];throw new Error("The image does not have an affine transformation.")}getResolution(A=null){const e=this.fileDirectory.ModelPixelScale,t=this.fileDirectory.ModelTransformation;if(e)return[e[0],-e[1],e[2]];if(t)return 0===t[1]&&0===t[4]?[t[0],-t[5],t[10]]:[Math.sqrt(t[0]*t[0]+t[4]*t[4]),-Math.sqrt(t[1]*t[1]+t[5]*t[5]),t[10]];if(A){const[e,t,i]=A.getResolution();return[e*A.getWidth()/this.getWidth(),t*A.getHeight()/this.getHeight(),i*A.getWidth()/this.getWidth()]}throw new Error("The image does not have an affine transformation.")}pixelIsArea(){return 1===this.geoKeys.GTRasterTypeGeoKey}getBoundingBox(A=!1){const e=this.getHeight(),t=this.getWidth();if(this.fileDirectory.ModelTransformation&&!A){const[A,i,a,r,n,s,o,g]=this.fileDirectory.ModelTransformation,l=[[0,0],[0,e],[t,0],[t,e]].map((([e,t])=>[r+A*e+i*t,g+n*e+s*t])),I=l.map((A=>A[0])),h=l.map((A=>A[1]));return[Math.min(...I),Math.min(...h),Math.max(...I),Math.max(...h)]}{const A=this.getOrigin(),i=this.getResolution(),a=A[0],r=A[1],n=a+i[0]*t,s=r+i[1]*e;return[Math.min(a,n),Math.min(r,s),Math.max(a,n),Math.max(r,s)]}}};class te{constructor(A){this._dataView=new DataView(A)}get buffer(){return this._dataView.buffer}getUint64(A,e){const t=this.getUint32(A,e),i=this.getUint32(A+4,e);let a;if(e){if(a=t+2**32*i,!Number.isSafeInteger(a))throw new Error(`${a} exceeds MAX_SAFE_INTEGER. Precision may be lost. Please report if you get this message to https://github.com/geotiffjs/geotiff.js/issues`);return a}if(a=2**32*t+i,!Number.isSafeInteger(a))throw new Error(`${a} exceeds MAX_SAFE_INTEGER. Precision may be lost. Please report if you get this message to https://github.com/geotiffjs/geotiff.js/issues`);return a}getInt64(A,e){let t=0;const i=(128&this._dataView.getUint8(A+(e?7:0)))>0;let a=!0;for(let r=0;r<8;r++){let n=this._dataView.getUint8(A+(e?r:7-r));i&&(a?0!==n&&(n=255&~(n-1),a=!1):n=255&~n),t+=n*256**r}return i&&(t=-t),t}getUint8(A,e){return this._dataView.getUint8(A,e)}getInt8(A,e){return this._dataView.getInt8(A,e)}getUint16(A,e){return this._dataView.getUint16(A,e)}getInt16(A,e){return this._dataView.getInt16(A,e)}getUint32(A,e){return this._dataView.getUint32(A,e)}getInt32(A,e){return this._dataView.getInt32(A,e)}getFloat16(A,e){return nA(this._dataView,A,e)}getFloat32(A,e){return this._dataView.getFloat32(A,e)}getFloat64(A,e){return this._dataView.getFloat64(A,e)}}class ie{constructor(A,e,t,i){this._dataView=new DataView(A),this._sliceOffset=e,this._littleEndian=t,this._bigTiff=i}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,e){return this.sliceOffset<=A&&this.sliceTop>=A+e}readUint8(A){return this._dataView.getUint8(A-this._sliceOffset,this._littleEndian)}readInt8(A){return this._dataView.getInt8(A-this._sliceOffset,this._littleEndian)}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 e=this.readUint32(A),t=this.readUint32(A+4);let i;if(this._littleEndian){if(i=e+2**32*t,!Number.isSafeInteger(i))throw new Error(`${i} exceeds MAX_SAFE_INTEGER. Precision may be lost. Please report if you get this message to https://github.com/geotiffjs/geotiff.js/issues`);return i}if(i=2**32*e+t,!Number.isSafeInteger(i))throw new Error(`${i} exceeds MAX_SAFE_INTEGER. Precision may be lost. Please report if you get this message to https://github.com/geotiffjs/geotiff.js/issues`);return i}readInt64(A){let e=0;const t=(128&this._dataView.getUint8(A+(this._littleEndian?7:0)))>0;let i=!0;for(let a=0;a<8;a++){let r=this._dataView.getUint8(A+(this._littleEndian?a:7-a));t&&(i?0!==r&&(r=255&~(r-1),i=!1):r=255&~r),e+=r*256**a}return t&&(e=-e),e}readOffset(A){return this._bigTiff?this.readUint64(A):this.readUint32(A)}}const ae="\r\n\r\n";function re(A){if(void 0!==Object.fromEntries)return Object.fromEntries(A);const e={};for(const[t,i]of A)e[t.toLowerCase()]=i;return e}function ne(A){return re(A.split("\r\n").map((A=>{const e=A.split(":").map((A=>A.trim()));return e[0]=e[0].toLowerCase(),e})))}function se(A){let e,t,i;return A&&([,e,t,i]=A.match(/bytes (\d+)-(\d+)\/(\d+)/),e=parseInt(e,10),t=parseInt(t,10),i=parseInt(i,10)),{start:e,end:t,total:i}}class oe{async fetch(A,e=void 0){return Promise.all(A.map((A=>this.fetchSlice(A,e))))}async fetchSlice(A){throw new Error(`fetching of slice ${A} not possible, not implemented`)}get fileSize(){return null}async close(){}}class ge 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[e,t]of A)this.onEviction(e,t.value)}_deleteIfExpired(A,e){return"number"==typeof e.expiry&&e.expiry<=Date.now()&&("function"==typeof this.onEviction&&this.onEviction(A,e.value),this.delete(A))}_getOrDeleteIfExpired(A,e){if(!1===this._deleteIfExpired(A,e))return e.value}_getItemValue(A,e){return e.expiry?this._getOrDeleteIfExpired(A,e):e.value}_peek(A,e){const t=e.get(A);return this._getItemValue(A,t)}_set(A,e){this.cache.set(A,e),this._size++,this._size>=this.maxSize&&(this._size=0,this._emitEvictions(this.oldCache),this.oldCache=this.cache,this.cache=new Map)}_moveToRecent(A,e){this.oldCache.delete(A),this._set(A,e)}*_entriesAscending(){for(const A of this.oldCache){const[e,t]=A;if(!this.cache.has(e)){!1===this._deleteIfExpired(e,t)&&(yield A)}}for(const A of this.cache){const[e,t]=A;!1===this._deleteIfExpired(e,t)&&(yield A)}}get(A){if(this.cache.has(A)){const e=this.cache.get(A);return this._getItemValue(A,e)}if(this.oldCache.has(A)){const e=this.oldCache.get(A);if(!1===this._deleteIfExpired(A,e))return this._moveToRecent(A,e),e.value}}set(A,e,{maxAge:t=this.maxAge}={}){const i="number"==typeof t&&t!==Number.POSITIVE_INFINITY?Date.now()+t:void 0;return this.cache.has(A)?this.cache.set(A,{value:e,expiry:i}):this._set(A,{value:e,expiry:i}),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 e=this.cache.delete(A);return e&&this._size--,this.oldCache.delete(A)||e}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 e=[...this._entriesAscending()],t=e.length-A;t<0?(this.cache=new Map(e),this.oldCache=new Map,this._size=e.length):(t>0&&this._emitEvictions(e.slice(0,t)),this.oldCache=new Map(e.slice(t)),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[e,t]=A;!1===this._deleteIfExpired(e,t)&&(yield[e,t.value])}for(const A of this.oldCache){const[e,t]=A;if(!this.cache.has(e)){!1===this._deleteIfExpired(e,t)&&(yield[e,t.value])}}}*entriesDescending(){let A=[...this.cache];for(let e=A.length-1;e>=0;--e){const t=A[e],[i,a]=t;!1===this._deleteIfExpired(i,a)&&(yield[i,a.value])}A=[...this.oldCache];for(let e=A.length-1;e>=0;--e){const t=A[e],[i,a]=t;if(!this.cache.has(i)){!1===this._deleteIfExpired(i,a)&&(yield[i,a.value])}}}*entriesAscending(){for(const[A,e]of this._entriesAscending())yield[A,e.value]}get size(){if(!this._size)return this.oldCache.size;let A=0;for(const e of this.oldCache.keys())this.cache.has(e)||A++;return Math.min(this._size+A,this.maxSize)}entries(){return this.entriesAscending()}forEach(A,e=this){for(const[t,i]of this.entriesAscending())A.call(e,i,t,this)}get[Symbol.toStringTag](){return JSON.stringify([...this.entriesAscending()])}}class le extends Error{constructor(A){super(A),Error.captureStackTrace&&Error.captureStackTrace(this,le),this.name="AbortError"}}class Ie extends Error{constructor(A,e){super(e),this.errors=A,this.message=e,this.name="AggregateError"}}const he=Ie;class Be{constructor(A,e,t=null){this.offset=A,this.length=e,this.data=t}get top(){return this.offset+this.length}}class ce{constructor(A,e,t){this.offset=A,this.length=e,this.blockIds=t}}class Ce extends oe{constructor(A,{blockSize:e=65536,cacheSize:t=100}={}){super(),this.source=A,this.blockSize=e,this.blockCache=new ge({maxSize:t,onEviction:(A,e)=>{this.evictedBlocks.set(A,e)}}),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,e){const t=[],i=[],a=[];this.evictedBlocks.clear();for(const{offset:e,length:r}of A){let A=e+r;const{fileSize:n}=this;null!==n&&(A=Math.min(A,n));for(let r=Math.floor(e/this.blockSize)*this.blockSize;r<A;r+=this.blockSize){const A=Math.floor(r/this.blockSize);this.blockCache.has(A)||this.blockRequests.has(A)||(this.blockIdsToFetch.add(A),i.push(A)),this.blockRequests.has(A)&&t.push(this.blockRequests.get(A)),a.push(A)}}await async function(A){return new Promise((e=>setTimeout(e,A)))}(),this.fetchBlocks(e);const r=[];for(const A of i)this.blockRequests.has(A)&&r.push(this.blockRequests.get(A));await Promise.allSettled(t),await Promise.allSettled(r);const n=[],s=a.filter((A=>this.abortedBlockIds.has(A)||!this.blockCache.has(A)));if(s.forEach((A=>this.blockIdsToFetch.add(A))),s.length>0&&e&&!e.aborted){this.fetchBlocks(null);for(const A of s){const e=this.blockRequests.get(A);if(!e)throw new Error(`Block ${A} is not in the block requests`);n.push(e)}await Promise.allSettled(n)}if(e&&e.aborted)throw new le("Request was aborted");const o=a.map((A=>this.blockCache.get(A)||this.evictedBlocks.get(A))),g=o.filter((A=>!A));if(g.length)throw new he(g,"Request failed");const l=new Map(function(A,e){const t=Array.isArray(A)?A:Array.from(A),i=Array.isArray(e)?e:Array.from(e);return t.map(((A,e)=>[A,i[e]]))}(a,o));return this.readSliceData(A,l)}fetchBlocks(A){if(this.blockIdsToFetch.size>0){const e=this.groupBlocks(this.blockIdsToFetch),t=this.source.fetch(e,A);for(let i=0;i<e.length;++i){const a=e[i];for(const e of a.blockIds)this.blockRequests.set(e,(async()=>{try{const A=(await t)[i],a=e*this.blockSize,r=a-A.offset,n=Math.min(r+this.blockSize,A.data.byteLength),s=A.data.slice(r,n),o=new Be(a,s.byteLength,s,e);this.blockCache.set(e,o),this.abortedBlockIds.delete(e)}catch(t){if("AbortError"!==t.name)throw t;t.signal=A,this.blockCache.delete(e),this.abortedBlockIds.add(e)}finally{this.blockRequests.delete(e)}})())}this.blockIdsToFetch.clear()}}groupBlocks(A){const e=Array.from(A).sort(((A,e)=>A-e));if(0===e.length)return[];let t=[],i=null;const a=[];for(const A of e)null===i||i+1===A?(t.push(A),i=A):(a.push(new ce(t[0]*this.blockSize,t.length*this.blockSize,t)),t=[A],i=A);return a.push(new ce(t[0]*this.blockSize,t.length*this.blockSize,t)),a}readSliceData(A,e){return A.map((A=>{let t=A.offset+A.length;null!==this.fileSize&&(t=Math.min(this.fileSize,t));const i=Math.floor(A.offset/this.blockSize),a=Math.floor(t/this.blockSize),r=new ArrayBuffer(A.length),n=new Uint8Array(r);for(let r=i;r<=a;++r){const i=e.get(r),a=i.offset-A.offset;let s,o=0,g=0;a<0?o=-a:a>0&&(g=a),s=i.top-t<0?i.length-o:t-i.offset-o;const l=new Uint8Array(i.data,o,s);n.set(l,g)}return r}))}}class Ee{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 fe{constructor(A){this.url=A}async request({headers:A,signal:e}={}){throw new Error("request is not implemented")}}class Qe extends Ee{constructor(A){super(),this.response=A}get status(){return this.response.status}getHeader(A){return this.response.headers.get(A)}async getData(){return this.response.arrayBuffer?await this.response.arrayBuffer():(await this.response.buffer()).buffer}}class de extends fe{constructor(A,e){super(A),this.credentials=e}async request({headers:A,signal:e}={}){const t=await fetch(this.url,{headers:A,credentials:this.credentials,signal:e});return new Qe(t)}}class ue extends Ee{constructor(A,e){super(),this.xhr=A,this.data=e}get status(){return this.xhr.status}getHeader(A){return this.xhr.getResponseHeader(A)}async getData(){return this.data}}class we extends fe{constructRequest(A,e){return new Promise(((t,i)=>{const a=new XMLHttpRequest;a.open("GET",this.url),a.responseType="arraybuffer";for(const[e,t]of Object.entries(A))a.setRequestHeader(e,t);a.onload=()=>{const A=a.response;t(new ue(a,A))},a.onerror=i,a.onabort=()=>i(new le("Request aborted")),a.send(),e&&(e.aborted&&a.abort(),e.addEventListener("abort",(()=>a.abort())))}))}async request({headers:A,signal:e}={}){return await this.constructRequest(A,e)}}var pe={};class me extends Ee{constructor(A,e){super(),this.response=A,this.dataPromise=e}get status(){return this.response.statusCode}getHeader(A){return this.response.headers[A]}async getData(){return await this.dataPromise}}class ye extends fe{constructor(A){super(A),this.parsedUrl=pe.parse(this.url),this.httpApi=(this.parsedUrl.protocol,pe)}constructRequest(A,e){return new Promise(((t,i)=>{const a=this.httpApi.get({...this.parsedUrl,headers:A},(A=>{const e=new Promise((e=>{const t=[];A.on("data",(A=>{t.push(A)})),A.on("end",(()=>{const A=Buffer.concat(t).buffer;e(A)})),A.on("error",i)}));t(new me(A,e))}));a.on("error",i),e&&(e.aborted&&a.destroy(new le("Request aborted")),e.addEventListener("abort",(()=>a.destroy(new le("Request aborted")))))}))}async request({headers:A,signal:e}={}){return await this.constructRequest(A,e)}}class De extends oe{constructor(A,e,t,i){super(),this.client=A,this.headers=e,this.maxRanges=t,this.allowFullFile=i,this._fileSize=null}async fetch(A,e){return this.maxRanges>=A.length?this.fetchSlices(A,e):(this.maxRanges>0&&A.length,Promise.all(A.map((A=>this.fetchSlice(A,e)))))}async fetchSlices(A,e){const t=await this.client.request({headers:{...this.headers,Range:`bytes=${A.map((({offset:A,length:e})=>`${A}-${A+e}`)).join(",")}`},signal:e});if(t.ok){if(206===t.status){const{type:i,params:a}=function(A){const[e,...t]=A.split(";").map((A=>A.trim()));return{type:e,params:re(t.map((A=>A.split("="))))}}(t.getHeader("content-type"));if("multipart/byteranges"===i){const A=function(A,e){let t=null;const i=new TextDecoder("ascii"),a=[],r=`--${e}`,n=`${r}--`;for(let e=0;e<10;++e)i.decode(new Uint8Array(A,e,r.length))===r&&(t=e);if(null===t)throw new Error("Could not find initial boundary");for(;t<A.byteLength;){const e=i.decode(new Uint8Array(A,t,Math.min(r.length+1024,A.byteLength-t)));if(0===e.length||e.startsWith(n))break;if(!e.startsWith(r))throw new Error("Part does not start with boundary");const s=e.substr(r.length+2);if(0===s.length)break;const o=s.indexOf(ae),g=ne(s.substr(0,o)),{start:l,end:I,total:h}=se(g["content-range"]),B=t+r.length+o+4,c=parseInt(I,10)+1-parseInt(l,10);a.push({headers:g,data:A.slice(B,B+c),offset:l,length:c,fileSize:h}),t=B+c+4}return a}(await t.getData(),a.boundary);return this._fileSize=A[0].fileSize||null,A}const r=await t.getData(),{start:n,end:s,total:o}=se(t.getHeader("content-range"));this._fileSize=o||null;const g=[{data:r,offset:n,length:s-n}];if(A.length>1){const t=await Promise.all(A.slice(1).map((A=>this.fetchSlice(A,e))));return g.concat(t)}return g}{if(!this.allowFullFile)throw new Error("Server responded with full file");const A=await t.getData();return this._fileSize=A.byteLength,[{data:A,offset:0,length:A.byteLength}]}}throw new Error("Error fetching data.")}async fetchSlice(A,e){const{offset:t,length:i}=A,a=await this.client.request({headers:{...this.headers,Range:`bytes=${t}-${t+i}`},signal:e});if(a.ok){if(206===a.status){const A=await a.getData(),{total:e}=se(a.getHeader("content-range"));return this._fileSize=e||null,{data:A,offset:t,length:i}}{if(!this.allowFullFile)throw new Error("Server responded with full file");const A=await a.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 ke(A,{blockSize:e,cacheSize:t}){return null===e?A:new Ce(A,{blockSize:e,cacheSize:t})}function _e(A,{forceXHR:e=!1,...t}={}){return"function"!=typeof fetch||e?"undefined"!=typeof XMLHttpRequest?function(A,{headers:e={},maxRanges:t=0,allowFullFile:i=!1,...a}={}){const r=new we(A);return ke(new De(r,e,t,i),a)}(A,t):function(A,{headers:e={},maxRanges:t=0,allowFullFile:i=!1,...a}={}){const r=new ye(A);return ke(new De(r,e,t,i),a)}(A,t):function(A,{headers:e={},credentials:t,maxRanges:i=0,allowFullFile:a=!1,...r}={}){const n=new de(A,t);return ke(new De(n,e,i,a),r)}(A,t)}class be extends oe{constructor(A){super(),this.arrayBuffer=A}fetchSlice(A,e){if(e&&e.aborted)throw new le("Request aborted");return this.arrayBuffer.slice(A.offset,A.offset+A.length)}}function Se(A,e){let t=A.length-e,i=0;do{for(let t=e;t>0;t--)A[i+e]+=A[i],i++;t-=e}while(t>0)}function xe(A,e,t){let i=0,a=A.length;const r=a/t;for(;a>e;){for(let t=e;t>0;--t)A[i+e]+=A[i],++i;a-=e}const n=A.slice();for(let e=0;e<r;++e)for(let i=0;i<t;++i)A[t*e+i]=n[(t-i-1)*r+e]}class Fe{async decode(A,e){const t=await this.decodeBlock(e),i=A.Predictor||1;if(1!==i){const e=!A.StripOffsets;return function(A,e,t,i,a,r){if(!e||1===e)return A;for(let A=0;A<a.length;++A){if(a[A]%8!=0)throw new Error("When decoding with predictor, only multiple of 8 bits are supported.");if(a[A]!==a[0])throw new Error("When decoding with predictor, all samples must have the same size.")}const n=a[0]/8,s=2===r?1:a.length;for(let r=0;r<i&&!(r*s*t*n>=A.byteLength);++r){let i;if(2===e){switch(a[0]){case 8:i=new Uint8Array(A,r*s*t*n,s*t*n);break;case 16:i=new Uint16Array(A,r*s*t*n,s*t*n/2);break;case 32:i=new Uint32Array(A,r*s*t*n,s*t*n/4);break;default:throw new Error(`Predictor 2 not allowed with ${a[0]} bits per sample.`)}Se(i,s)}else 3===e&&(i=new Uint8Array(A,r*s*t*n,s*t*n),xe(i,s,n))}return A}(t,i,e?A.TileWidth:A.ImageWidth,e?A.TileLength:A.RowsPerStrip||A.ImageLength,A.BitsPerSample,A.PlanarConfiguration)}return t}}function Ge(A){switch(A){case UA.BYTE:case UA.ASCII:case UA.SBYTE:case UA.UNDEFINED:return 1;case UA.SHORT:case UA.SSHORT:return 2;case UA.LONG:case UA.SLONG:case UA.FLOAT:case UA.IFD:return 4;case UA.RATIONAL:case UA.SRATIONAL:case UA.DOUBLE:case UA.LONG8:case UA.SLONG8:case UA.IFD8:return 8;default:throw new RangeError(`Invalid field type: ${A}`)}}function Ue(A,e,t,i){let a=null,r=null;const n=Ge(e);switch(e){case UA.BYTE:case UA.ASCII:case UA.UNDEFINED:a=new Uint8Array(t),r=A.readUint8;break;case UA.SBYTE:a=new Int8Array(t),r=A.readInt8;break;case UA.SHORT:a=new Uint16Array(t),r=A.readUint16;break;case UA.SSHORT:a=new Int16Array(t),r=A.readInt16;break;case UA.LONG:case UA.IFD:a=new Uint32Array(t),r=A.readUint32;break;case UA.SLONG:a=new Int32Array(t),r=A.readInt32;break;case UA.LONG8:case UA.IFD8:a=new Array(t),r=A.readUint64;break;case UA.SLONG8:a=new Array(t),r=A.readInt64;break;case UA.RATIONAL:a=new Uint32Array(2*t),r=A.readUint32;break;case UA.SRATIONAL:a=new Int32Array(2*t),r=A.readInt32;break;case UA.FLOAT:a=new Float32Array(t),r=A.readFloat32;break;case UA.DOUBLE:a=new Float64Array(t),r=A.readFloat64;break;default:throw new RangeError(`Invalid field type: ${e}`)}if(e!==UA.RATIONAL&&e!==UA.SRATIONAL)for(let e=0;e<t;++e)a[e]=r.call(A,i+e*n);else for(let e=0;e<t;e+=2)a[e]=r.call(A,i+e*n),a[e+1]=r.call(A,i+(e*n+4));return e===UA.ASCII?new TextDecoder("utf-8").decode(a):a}class Re{constructor(A,e,t){this.fileDirectory=A,this.geoKeyDirectory=e,this.nextIFDByteOffset=t}}class Me extends Error{constructor(A){super(`No image at index ${A}`),this.index=A}}class Le{async readRasters(A={}){const{window:e,width:t,height:i}=A;let{resX:a,resY:r,bbox:n}=A;const s=await this.getImage();let o=s;const g=await this.getImageCount(),l=s.getBoundingBox();if(e&&n)throw new Error('Both "bbox" and "window" passed.');if(t||i){if(e){const[A,t]=s.getOrigin(),[i,a]=s.getResolution();n=[A+e[0]*i,t+e[1]*a,A+e[2]*i,t+e[3]*a]}const A=n||l;if(t){if(a)throw new Error("Both width and resX passed");a=(A[2]-A[0])/t}if(i){if(r)throw new Error("Both width and resY passed");r=(A[3]-A[1])/i}}if(a||r){const A=[];for(let e=0;e<g;++e){const t=await this.getImage(e),{SubfileType:i,NewSubfileType:a}=t.fileDirectory;(0===e||2===i||1&a)&&A.push(t)}A.sort(((A,e)=>A.getWidth()-e.getWidth()));for(let e=0;e<A.length;++e){const t=A[e],i=(l[2]-l[0])/t.getWidth(),n=(l[3]-l[1])/t.getHeight();if(o=t,a&&a>i||r&&r>n)break}}let I=e;if(n){const[A,e]=s.getOrigin(),[t,i]=o.getResolution(s);I=[Math.round((n[0]-A)/t),Math.round((n[1]-e)/i),Math.round((n[2]-A)/t),Math.round((n[3]-e)/i)],I=[Math.min(I[0],I[2]),Math.min(I[1],I[3]),Math.max(I[0],I[2]),Math.max(I[1],I[3])]}return o.readRasters({...A,window:I})}}class Ne extends Le{constructor(A,e,t,i,a={}){super(),this.source=A,this.littleEndian=e,this.bigTiff=t,this.firstIFDOffset=i,this.cache=a.cache||!1,this.ifdRequests=[],this.ghostValues=null}async getSlice(A,e){const t=this.bigTiff?4048:1024;return new ie((await this.source.fetch([{offset:A,length:void 0!==e?e:t}]))[0],A,this.littleEndian,this.bigTiff)}async parseFileDirectoryAt(A){const e=this.bigTiff?20:12,t=this.bigTiff?8:2;let i=await this.getSlice(A);const a=this.bigTiff?i.readUint64(A):i.readUint16(A),r=a*e+(this.bigTiff?16:6);i.covers(A,r)||(i=await this.getSlice(A,r));const n={};let s=A+(this.bigTiff?8:2);for(let A=0;A<a;s+=e,++A){const A=i.readUint16(s),e=i.readUint16(s+2),t=this.bigTiff?i.readUint64(s+4):i.readUint32(s+4);let a,r;const o=Ge(e),g=s+(this.bigTiff?12:8);if(o*t<=(this.bigTiff?8:4))a=Ue(i,e,t,g);else{const A=i.readOffset(g),r=Ge(e)*t;if(i.covers(A,r))a=Ue(i,e,t,A);else{a=Ue(await this.getSlice(A,r),e,t,A)}}r=1===t&&-1===FA.indexOf(A)&&e!==UA.RATIONAL&&e!==UA.SRATIONAL?a[0]:a,n[SA[A]]=r}const o=function(A){const e=A.GeoKeyDirectory;if(!e)return null;const t={};for(let i=4;i<=4*e[3];i+=4){const a=KA[e[i]],r=e[i+1]?SA[e[i+1]]:null,n=e[i+2],s=e[i+3];let o=null;if(r){if(o=A[r],null==o)throw new Error(`Could not get value of geoKey '${a}'.`);"string"==typeof o?o=o.substring(s,s+n-1):o.subarray&&(o=o.subarray(s,s+n),1===n&&(o=o[0]))}else o=s;t[a]=o}return t}(n),g=i.readOffset(A+t+e*a);return new Re(n,o,g)}async requestIFD(A){if(this.ifdRequests[A])return this.ifdRequests[A];if(0===A)return this.ifdRequests[A]=this.parseFileDirectoryAt(this.firstIFDOffset),this.ifdRequests[A];if(!this.ifdRequests[A-1])try{this.ifdRequests[A-1]=this.requestIFD(A-1)}catch(e){if(e instanceof Me)throw new Me(A);throw e}return this.ifdRequests[A]=(async()=>{const e=await this.ifdRequests[A-1];if(0===e.nextIFDByteOffset)throw new Me(A);return this.parseFileDirectoryAt(e.nextIFDByteOffset)})(),this.ifdRequests[A]}async getImage(A=0){const e=await this.requestIFD(A);return new ee(e.fileDirectory,e.geoKeyDirectory,this.dataView,this.littleEndian,this.cache,this.source)}async getImageCount(){let A=0,e=!0;for(;e;)try{await this.requestIFD(A),++A}catch(A){if(!(A instanceof Me))throw A;e=!1}return A}async getGhostValues(){const A=this.bigTiff?16:8;if(this.ghostValues)return this.ghostValues;const e="GDAL_STRUCTURAL_METADATA_SIZE=";let t=await this.getSlice(A,130);if(e===Ue(t,UA.ASCII,30,A)){const e=Ue(t,UA.ASCII,130,A).split("\n")[0],i=Number(e.split("=")[1].split(" ")[0])+e.length;i>130&&(t=await this.getSlice(A,i));const a=Ue(t,UA.ASCII,i,A);this.ghostValues={},a.split("\n").filter((A=>A.length>0)).map((A=>A.split("="))).forEach((([A,e])=>{this.ghostValues[A]=e}))}return this.ghostValues}static async fromSource(A,e,t){const i=(await A.fetch([{offset:0,length:1024}],t))[0],a=new te(i),r=a.getUint16(0,0);let n;if(18761===r)n=!0;else{if(19789!==r)throw new TypeError("Invalid byte order value.");n=!1}const s=a.getUint16(2,n);let o;if(42===s)o=!1;else{if(43!==s)throw new TypeError("Invalid magic number.");o=!0;if(8!==a.getUint16(4,n))throw new Error("Unsupported offset byte-size.")}const g=o?a.getUint64(8,n):a.getUint32(4,n);return new Ne(A,n,o,g,e)}close(){return"function"==typeof this.source.close&&this.source.close()}}async function ve(A,e){return Ne.fromSource(function(A){return new be(A)}(A),e)}const Te=Math.PI,qe=Te/4,Je=180/Te;class Oe{constructor(A=257){this.gridSize=A;const e=A-1;if(e&e-1)throw new Error(`Expected grid size to be 2^n+1, got ${A}.`);this.numTriangles=e*e*2-2,this.numParentTriangles=this.numTriangles-e*e,this.indices=new Uint32Array(this.gridSize*this.gridSize),this.coords=new Uint16Array(4*this.numTriangles);for(let A=0;A<this.numTriangles;A++){let t=A+2,i=0,a=0,r=0,n=0,s=0,o=0;for(1&t?r=n=s=e:i=a=o=e;(t>>=1)>1;){const A=i+r>>1,e=a+n>>1;1&t?(r=i,n=a,i=s,a=o):(i=r,a=n,r=s,n=o),s=A,o=e}const g=4*A;this.coords[g+0]=i,this.coords[g+1]=a,this.coords[g+2]=r,this.coords[g+3]=n}}createTile(A){return new He(A,this)}}class He{constructor(A,e){const t=e.gridSize;if(A.length!==t*t)throw new Error(`Expected terrain data of length ${t*t} (${t} x ${t}), got ${A.length}.`);this.terrain=A,this.martini=e,this.errors=new Float32Array(A.length),this.update()}update(){const{numTriangles:A,numParentTriangles:e,coords:t,gridSize:i}=this.martini,{terrain:a,errors:r}=this;for(let n=A-1;n>=0;n--){const A=4*n,s=t[A+0],o=t[A+1],g=t[A+2],l=t[A+3],I=s+g>>1,h=o+l>>1,B=I+h-o,c=h+s-I,C=(a[o*i+s]+a[l*i+g])/2,E=h*i+I,f=Math.abs(C-a[E]);if(r[E]=Math.max(r[E],f),n<e){const A=(o+c>>1)*i+(s+B>>1),e=(l+c>>1)*i+(g+B>>1);r[E]=Math.max(r[E],r[A],r[e])}}}getMesh(A=0){const{gridSize:e,indices:t}=this.martini,{errors:i}=this;let a=0,r=0;const n=e-1;function s(n,o,g,l,I,h){const B=n+g>>1,c=o+l>>1;Math.abs(n-I)+Math.abs(o-h)>1&&i[c*e+B]>A?(s(I,h,n,o,B,c),s(g,l,I,h,B,c)):(t[o*e+n]=t[o*e+n]||++a,t[l*e+g]=t[l*e+g]||++a,t[h*e+I]=t[h*e+I]||++a,r++)}t.fill(0),s(0,0,n,n,n,0),s(n,n,0,0,0,n);const o=new Uint16Array(2*a),g=new Uint32Array(3*r);let l=0;function I(a,r,n,s,h,B){const c=a+n>>1,C=r+s>>1;if(Math.abs(a-h)+Math.abs(r-B)>1&&i[C*e+c]>A)I(h,B,a,r,c,C),I(n,s,h,B,c,C);else{const A=t[r*e+a]-1,i=t[s*e+n]-1,I=t[B*e+h]-1;o[2*A]=a,o[2*A+1]=r,o[2*i]=n,o[2*i+1]=s,o[2*I]=h,o[2*I+1]=B,g[l++]=A,g[l++]=i,g[l++]=I}}return I(0,0,n,n,n,0),I(n,n,0,0,0,n),{vertices:o,triangles:g}}}function Ye(A,e,t,i){const a=i?function(A,e){A.westIndices.sort(((A,t)=>e[3*A+1]-e[3*t+1])),A.eastIndices.sort(((A,t)=>e[3*t+1]-e[3*A+1])),A.southIndices.sort(((A,t)=>e[3*t]-e[3*A])),A.northIndices.sort(((A,t)=>e[3*A]-e[3*t]));const t=[];for(const e in A){const i=A[e];for(let A=0;A<i.length-1;A++)t.push([i[A],i[A+1]])}return t}(i,A.POSITION.value):function(A){const e=[];for(let t=0;t<A.length;t+=3)e.push([A[t],A[t+1]]),e.push([A[t+1],A[t+2]]),e.push([A[t+2],A[t]]);e.sort(((A,e)=>Math.min(...A)-Math.min(...e)||Math.max(...A)-Math.max(...e)));const t=[];let i=0;for(;i<e.length;)e[i][0]===e[i+1]?.[1]&&e[i][1]===e[i+1]?.[0]?i+=2:(t.push(e[i]),i++);return t}(e),r=new A.POSITION.value.constructor(6*a.length),s=new A.TEXCOORD_0.value.constructor(4*a.length),o=new e.constructor(6*a.length);for(let e=0;e<a.length;e++){ze({edge:a[e],edgeIndex:e,attributes:A,skirtHeight:t,newPosition:r,newTexcoord0:s,newTriangles:o})}A.POSITION.value=n.concatenateTypedArrays(A.POSITION.value,r),A.TEXCOORD_0.value=n.concatenateTypedArrays(A.TEXCOORD_0.value,s);return{attributes:A,triangles:e instanceof Array?e.concat(o):n.concatenateTypedArrays(e,o)}}function ze({edge:A,edgeIndex:e,attributes:t,skirtHeight:i,newPosition:a,newTexcoord0:r,newTriangles:n}){const s=t.POSITION.value.length,o=2*e,g=2*e+1;a.set(t.POSITION.value.subarray(3*A[0],3*A[0]+3),3*o),a[3*o+2]=a[3*o+2]-i,a.set(t.POSITION.value.subarray(3*A[1],3*A[1]+3),3*g),a[3*g+2]=a[3*g+2]-i,r.set(t.TEXCOORD_0.value.subarray(2*A[0],2*A[0]+2),2*o),r.set(t.TEXCOORD_0.value.subarray(2*A[1],2*A[1]+2),2*g);const l=2*e*3;n[l]=A[0],n[l+1]=s/3+g,n[l+2]=A[1],n[l+3]=s/3+g,n[l+4]=A[0],n[l+5]=s/3+o}const Ke={type:"image",format:"uint8",useHeatMap:!0,useColorsBasedOnValues:!1,useAutoRange:!1,useDataForOpacity:!1,useSingleColor:!1,useColorClasses:!1,blurredTexture:!0,clipLow:null,clipHigh:null,multiplier:1,color:[255,0,255,255],colorScale:a.brewer.YlOrRd,colorScaleValueRange:[0,255],colorsBasedOnValues:null,colorClasses:null,alpha:100,useChannel:null,useChannelIndex:null,noDataValue:void 0,numOfChannels:void 0,nullColor:[0,0,0,0],unidentifiedColor:[0,0,0,0],clippedColor:[0,0,0,0],terrainColor:[133,133,133,255],terrainSkirtHeight:100,terrainMinValue:0,planarConfig:void 0};class Pe{data;scale=(A,e,t,i,a)=>(A-e)*(a-i)/(t-e)+i;async setUrl(A){const e=await fetch(A),t=await e.arrayBuffer(),i=await ve(t),a=await i.getImage(0);this.data=a}async getMap(A,e,t){const i={...Ke,...e};switch(i.type){case"image":return this.getBitmap(A,i);case"terrain":return this.getHeightmap(A,i,t);default:return null}}async getHeightmap(A,e,t){let i,a,n=[];"string"==typeof A?(await this.setUrl(A),n=await this.data.readRasters(),i=this.data.getWidth(),a=this.data.getHeight()):(n=A.rasters,i=A.width,a=A.height);const s={...e};let o=n[0];s.useChannelIndex??=null==s.useChannel?null:s.useChannel-1,null!=e.useChannelIndex&&n[s.useChannelIndex]&&(o=n[s.useChannelIndex]);const g=new Float32Array((i+1)*(a+1)),l=o.length/(i*a);let I=null===e.useChannelIndex?0:e.useChannelIndex;for(let A=0,t=0;t<a;t++)for(let a=0;a<i;a++,A++){const i=e.noDataValue&&o[I]===e.noDataValue?e.terrainMinValue:o[I]*e.multiplier;g[A+t]=i,I+=l}for(let A=(i+1)*i,e=0;e<i;e++,A++)g[A]=g[A-i-1];for(let A=a,e=0;e<a+1;e++,A+=a+1)g[A]=g[A-1];const{terrainSkirtHeight:h}=e;let B;B=Ve(t,i,g);const{vertices:c}=B;let{triangles:C}=B,E=function(A,e,t,i,a){const r=t+1,n=A.length/2,s=new Float32Array(3*n),o=new Float32Array(2*n),[g,l,I,h]=a||[0,0,t,i],B=(I-g)/t,c=(h-l)/i;for(let a=0;a<n;a++){const n=A[2*a],l=A[2*a+1],I=l*r+n;s[3*a+0]=n*B+g,s[3*a+1]=-l*c+h,s[3*a+2]=e[I],o[2*a+0]=n/t,o[2*a+1]=l/i}return{POSITION:{value:s,size:3},TEXCOORD_0:{value:o,size:2}}}(c,g,i,a,A.bounds);const f=r.getMeshBoundingBox(E);if(h){const{attributes:A,triangles:e}=Ye(E,C,h);E=A,C=e}return{loaderData:{header:{}},header:{vertexCount:C.length,boundingBox:f},mode:4,indices:{value:Uint32Array.from(C),size:1},attributes:E}}async getBitmap(A,e){const t={...e};let i,a,r,n=[];"string"==typeof A?(await this.setUrl(A),n=await this.data.readRasters(),i=n.length,a=this.data.getWidth(),r=this.data.getHeight()):(n=A.rasters,i=n.length,a=A.width,r=A.height);const s=document.createElement("canvas");s.width=a,s.height=r;const o=s.getContext("2d"),g=o.createImageData(a,r);let l,I,h,B;const c=a*r*4;if(t.unidentifiedColor=this.getColorFromChromaType(t.unidentifiedColor),t.nullColor=this.getColorFromChromaType(t.nullColor),t.clippedColor=this.getColorFromChromaType(t.clippedColor),t.color=this.getColorFromChromaType(t.color),t.useChannelIndex??=null===e.useChannel?null:e.useChannel-1,null==t.useChannelIndex){if(1===i){if(n[0].length/(a*r)==1){const A=n[0];t.useAutoRange&&(t.colorScaleValueRange=this.getMinMax(A,t));this.getColorValue(A,t,c).forEach(((A,e)=>{g.data[e]=A}))}if(n[0].length/(a*r)==3){let A=0;for(let e=0;e<c;e+=4){const i=[n[0][A],n[0][A+1],n[0][A+2]],a=this.hasPixelsNoData(i,t.noDataValue)?t.nullColor:[...i,Math.floor(2.55*t.alpha)];[g.data[e],g.data[e+1],g.data[e+2],g.data[e+3]]=a,A+=3}}n[0].length/(a*r)==4&&n[0].forEach(((A,e)=>{g.data[e]=A}))}if(3===i){let A=0;for(let e=0;e<c;e+=4)l=n[0][A],I=n[1][A],h=n[2][A],B=Math.floor(2.55*t.alpha),g.data[e]=l,g.data[e+1]=I,g.data[e+2]=h,g.data[e+3]=B,A+=1}if(4===i){let A=0;for(let e=0;e<c;e+=4)l=n[0][A],I=n[1][A],h=n[2][A],B=Math.floor(2.55*t.alpha),g.data[e]=l,g.data[e+1]=I,g.data[e+2]=h,g.data[e+3]=B,A+=1}}else if(t.useChannelIndex<t.numOfChannels&&t.useChannelIndex>=0){let A=n[0];n[t.useChannelIndex]&&(A=n[t.useChannelIndex]),t.useAutoRange&&(t.colorScaleValueRange=this.getMinMax(A,t));this.getColorValue(A,t,c,t.numOfChannels).forEach(((A,e)=>{g.data[e]=A}))}else{console.log(`Defined channel(${e.useChannel}) or channel index(${e.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(c,t.nullColor).forEach(((A,e)=>{g.data[e]=A}))}o.putImageData(g,0,0);return s.toDataURL("image/png")}getMinMax(A,e){let t=e.maxValue?e.maxValue:Number.MIN_VALUE,i=e.minValue?e.minValue:Number.MAX_VALUE;for(let a=0;a<A.length;a+=1)void 0!==e.noDataValue&&A[a]===e.noDataValue||(A[a]>t&&(t=A[a]),A[a]<i&&(i=A[a]));return[i,t]}getColorValue(A,e,t,i=1){const r=a.scale(e.colorScale).domain(e.colorScaleValueRange);let n=null===e.useChannelIndex?0:e.useChannelIndex;const s=new Array(t),o=e.colorsBasedOnValues?e.colorsBasedOnValues.map((([A])=>A)):void 0,g=e.colorsBasedOnValues?e.colorsBasedOnValues.map((([,A])=>[...a(A).rgb(),Math.floor(2.55*e.alpha)])):void 0,l=e.useColorClasses?e.colorClasses.map((([A])=>[...a(A).rgb(),Math.floor(2.55*e.alpha)])):void 0,I=e.useColorClasses?e.colorClasses.map((([,A])=>A)):void 0,h=e.useColorClasses?e.colorClasses.map((([,,A],t)=>void 0!==A?A:t===e.colorClasses.length-1?[!0,!0]:[!0,!1])):void 0;for(let a=0;a<t;a+=4){let t=e.nullColor;if(!Number.isNaN(A[n])&&(void 0===e.noDataValue||A[n]!==e.noDataValue))if(null!=e.clipLow&&A[n]<=e.clipLow||null!=e.clipHigh&&A[n]>=e.clipHigh)t=e.clippedColor;else{if(e.useHeatMap&&(t=[...r(A[n]).rgb(),Math.floor(2.55*e.alpha)]),e.useColorsBasedOnValues){const i=o.indexOf(A[n]);t=i>-1?g[i]:e.unidentifiedColor}if(e.useColorClasses){const i=this.findClassIndex(A[n],I,h);t=i>-1?l[i]:e.unidentifiedColor}e.useSingleColor&&(t=e.color),e.useDataForOpacity&&(t[3]=this.scale(A[n],e.colorScaleValueRange[0],e.colorScaleValueRange.slice(-1)[0],0,255))}[s[a],s[a+1],s[a+2],s[a+3]]=t,n+=i}return s}findClassIndex(A,e,t){for(let i=0;i<e.length;i+=1){const[a,r]=e[i],[n,s]=t[i];if((n?A>=a:A>a)&&(s?A<=r:A<r))return i}return-1}getDefaultColor(A,e){const t=new Array(A);for(let i=0;i<A;i+=4)[t[i],t[i+1],t[i+2],t[i+3]]=e;return t}getColorFromChromaType(A){return Array.isArray(A)&&4===A.length?A:[...a(A).rgb(),255]}hasPixelsNoData(A,e){return void 0!==e&&A.every((A=>A===e))}}function Ve(A,e,t){const i=new Oe(e+1).createTile(t),{vertices:a,triangles:r}=i.getMesh(A);return{vertices:a,triangles:r}}const Ze=2*Math.PI*6378137,Xe=Ze/2,We=[-20037508.342789244,20037508.342789244],je={blurredTexture:!0};class $e{cog;cogZoomLookup=[0];cogResolutionLookup=[0];cogOrigin=[0,0];zoomRange=[0,0];tileSize;bounds;geo=new Pe;options;constructor(A){this.options={...je,...A}}async initializeCog(A){this.cog=await async function(A,e={},t){return Ne.fromSource(_e(A,e),t)}(A);const e=await this.cog.getImage();this.cogOrigin=e.getOrigin(),this.options.noDataValue??=this.getNoDataValue(e),this.options.format??=this.getDataTypeFromTags(e),this.options.numOfChannels=this.getNumberOfChannels(e),this.options.planarConfig=this.getPlanarConfiguration(e),[this.cogZoomLookup,this.cogResolutionLookup]=await this.buildCogZoomResolutionLookup(this.cog),this.tileSize=e.getTileWidth(),this.zoomRange=this.calculateZoomRange(e,await this.cog.getImageCount()),this.bounds=this.calculateBoundsAsLatLon(e)}getZoomRange(){return this.zoomRange}calculateZoomRange(A,e){const t=this.getZoomLevelFromResolution(A.getTileWidth(),A.getResolution()[0]);return[t-(e-1),t]}calculateBoundsAsLatLon(A){const e=A.getBoundingBox(),t=Math.min(e[0],e[2]),i=Math.max(e[0],e[2]),a=Math.min(e[1],e[3]),r=Math.max(e[1],e[3]),n=this.getLatLon([t,a]),s=this.getLatLon([i,r]);return[n[0],n[1],s[0],s[1]]}getZoomLevelFromResolution(A,e){return Math.round(Math.log2(Ze/(e*A)))}getBoundsAsLatLon(){return this.bounds}getLatLon(A){const e=Xe+A[0],t=-(Xe+(A[1]-Ze)),i=function(A){const[e,t]=A,i=e/512*(2*Te)-Te,a=2*(Math.atan(Math.exp(t/512*(2*Te)-Te))-qe);return[i*Je,a*Je]}([e*(512/Ze),t*(512/Ze)]);return[i[0],-i[1]]}async buildCogZoomResolutionLookup(A){const e=await A.getImageCount(),t=await A.getImage(0),i=t.getResolution()[0],a=t.getWidth(),r=[],n=[];for(let t=0;t<e;t++){const e=i*(a/(await A.getImage(t)).getWidth()),s=Math.round(Math.log2(156543.03125/e));r[t]=s,n[t]=e}return[r,n]}getImageIndexForZoomLevel(A){const e=this.cogZoomLookup[this.cogZoomLookup.length-1];if(A>this.cogZoomLookup[0])return 0;if(A<e)return this.cogZoomLookup.length-1;const t=this.cogZoomLookup.indexOf(A);return-1===t&&console.log("getImageIndexForZoomLevel: error in retrieving image by zoom index"),t}async getTileFromImage(A,e,t){const i=this.getImageIndexForZoomLevel(t),a=await this.cog.getImage(i),r=a.getTileWidth(),n=a.getTileHeight();if(!r||!n)throw new Error('GeoTIFF Error: The provided image is not tiled. Please use "rio cogeo create --web-optimized" to fix this.');const s=this.cogResolutionLookup[i],o=a.getHeight(),g=a.getWidth(),[l,I]=this.cogOrigin,h=this.tileSize,B=Ze/h/2**t,c=(We[0]+A*h*B-l)/s,C=(I-(We[1]-e*h*B))/s,E=Math.round(c),f=Math.round(C),Q=E+h,d=f+h,u=Math.max(0,E),w=Math.max(0,f),p=Math.min(g,Q),m=Math.min(o,d),y=p-u,D=m-w;if(y<=0||D<=0)return[this.createEmptyTile()];const k=u-E,_=w-f,b=[u,w,p,m];if(k>0||_>0||y<r||D<n){const A=this.createTileBuffer(this.options.format,r);A.fill(this.options.noDataValue);const e=await a.readRasters({window:b}),t=Array(e.length*e[0].length);t.fill(this.options.noDataValue);for(let i=0;i<e.length;i+=1){for(let t=0;t<D;t+=1){const a=_+t,s=a*h,o=t*e.width;for(let t=0;t<y;t+=1){const g=k+t;a<r&&g<n?A[s+g]=e[i][o+t]:console.log("error in assigning data to tile buffer")}}for(let e=0;e<A.length;e+=1)t[e*this.options.numOfChannels+i]=A[e]}return[t]}return[await a.readRasters({window:b,interleave:!0})]}createEmptyTile(){const A=this.options.numOfChannels||1,e=this.tileSize*this.tileSize*A,t=new Float32Array(e);return void 0!==this.options.noDataValue&&t.fill(this.options.noDataValue),t}async getTile(A,e,t,i,a){const r=await this.getTileFromImage(A,e,t);return this.geo.getMap({rasters:[r[0]],width:this.tileSize,height:this.tileSize,bounds:i},this.options,a)}getDataTypeFromTags(A){const e=A.getFileDirectory(),t=e.SampleFormat,i=e.BitsPerSample,a=t&&"number"==typeof t.length&&t.length>0?t[0]:t;let r;return r=1===a?"UInt":2===a?"Int":3===a?"Float":"Unknown",`${r}${i&&"number"==typeof i.length&&i.length>0?i[0]:i}`}getNoDataValue(A){const e=A.getGDALNoData();if(null==e)return void console.warn("No noData value defined — raster might be rendered incorrectly.");const t=String(e).replace(/\0/g,"").trim();if(""===t)return void console.warn("noData value is an empty string after cleanup.");const i=Number(t);return"nan"===t.toLowerCase()?NaN:Number.isNaN(i)?void console.warn(`Failed to parse numeric noData value: '${t}'`):i}getNumberOfChannels(A){return A.getSamplesPerPixel()}getPlanarConfiguration(A){const e=A.fileDirectory.PlanarConfiguration;if(1!==e&&2!==e)throw new Error("Invalid planar configuration.");return e}createTileBuffer(A,e){const t=e*e;switch(A){case"UInt8":return new Uint8Array(t);case"Int8":return new Int8Array(t);case"UInt16":return new Uint16Array(t);case"Int16":return new Int16Array(t);case"UInt32":return new Uint32Array(t);case"Int32":return new Int32Array(t);case"Float32":return new Float32Array(t);case"Float64":return new Float64Array(t);default:throw new Error(`Unsupported data type: ${A}`)}}}const At={type:"object",value:null,validate:(A,e)=>e.optional&&null===A||"string"==typeof A||Array.isArray(A)&&A.every((A=>"string"==typeof A)),equal:(A,e)=>{if(A===e)return!0;if(!Array.isArray(A)||!Array.isArray(e))return!1;const t=A.length;if(t!==e.length)return!1;for(let i=0;i<t;i++)if(A[i]!==e[i])return!1;return!0}},et={...e.TileLayer.defaultProps,bounds:{type:"array",value:null,optional:!0,compare:!0},rasterData:At,clampToTerrain:!1,workerUrl:""};class tt extends A.CompositeLayer{static defaultProps=et;static layerName="CogBitmapLayer";async initializeState(A){super.initializeState(A),this.setState({bitmapCogTiles:new $e(this.props.cogBitmapOptions),initialized:!1}),await this.init()}async init(){await this.state.bitmapCogTiles.initializeCog(this.props.rasterData);const A=this.state.bitmapCogTiles.getZoomRange(),[e,t]=A;this.setState({initialized:!0,minZoom:e,maxZoom:t})}updateState({props:e,oldProps:t}){const i=e.rasterData!==t.rasterData;if(i){const{rasterData:A}=e,t=A&&(Array.isArray(A)||A.includes("{x}")&&A.includes("{y}")||this.props.isTiled);this.setState({isTiled:t})}i||(e.bounds,t.bounds);this.state.isTiled,e?.cogBitmapOptions?.useChannel&&e.cogBitmapOptions?.useChannel!==t.cogBitmapOptions?.useChannel&&(this.state.bitmapCogTiles.options.useChannel=e.cogBitmapOptions.useChannel),e.workerUrl&&A.log.removed("workerUrl","loadOptions.terrain.workerUrl")()}async getTiledBitmapData(A){return await this.state.bitmapCogTiles.getTile(A.index.x,A.index.y,A.index.z)}renderSubLayers(A){const e=this.getSubLayerClass("image",t.BitmapLayer),{blurredTexture:a}=this.state.bitmapCogTiles.options,{clampToTerrain:r}=this.props,n="object"==typeof r&&null!==r&&"terrainDrawMode"in r,{data:s}=A;if(!s)return null;const{bbox:{west:o,south:g,east:l,north:I}}=A.tile;return new e({...A,tileSize:this.state.bitmapCogTiles.tileSize},{data:null,image:s,_instanced:!1,bounds:[o,g,l,I],textureParameters:{minFilter:a?"linear":"nearest",magFilter:a?"linear":"nearest"},extensions:r?[new i._TerrainExtension]:[],...n?{terrainDrawMode:r.terrainDrawMode}:{}})}renderLayers(){const{clampToTerrain:A,maxRequests:t,onTileLoad:i,onTileUnload:a,onTileError:r,maxCacheSize:n,maxCacheByteSize:s,refinementStrategy:o,cogBitmapOptions:g}=this.props;if(this.state.isTiled&&this.state.initialized){const{tileSize:l}=this.state.bitmapCogTiles;return new e.TileLayer(this.getSubLayerProps({id:"tiles"}),{getTileData:this.getTiledBitmapData.bind(this),renderSubLayers:this.renderSubLayers.bind(this),updateTriggers:{getTileData:[A,g.useChannel]},extent:this.state.bitmapCogTiles.getBoundsAsLatLon(),tileSize:l,minZoom:this.state.minZoom,maxZoom:this.state.maxZoom,maxRequests:t,onTileLoad:i,onTileUnload:a,onTileError:r,maxCacheSize:n,maxCacheByteSize:s,refinementStrategy:o})}return null}}const it={type:"object",value:null,validate:(A,e)=>e.optional&&null===A||"string"==typeof A||Array.isArray(A)&&A.every((A=>"string"==typeof A)),equal:(A,e)=>{if(A===e)return!0;if(!Array.isArray(A)||!Array.isArray(e))return!1;const t=A.length;if(t!==e.length)return!1;for(let i=0;i<t;i++)if(A[i]!==e[i])return!1;return!0}},at=[1],rt={...e.TileLayer.defaultProps,elevationData:it,texture:{...it,optional:!0},meshMaxError:{type:"number",value:4},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 nt extends A.CompositeLayer{static defaultProps=rt;static layerName="CogTerrainLayer";terrainUrl;async initializeState(A){super.initializeState(A),this.setState({terrainCogTiles:new $e(this.props.terrainOptions),initialized:!1}),await this.init(this.terrainUrl)}async init(){await this.state.terrainCogTiles.initializeCog(this.props.elevationData);const A=this.state.terrainCogTiles.getZoomRange(),[e,t]=A;this.setState({initialized:!0,minZoom:e,maxZoom:t})}updateState({props:e,oldProps:t}){const i=e.elevationData!==t.elevationData;if(i){const{elevationData:A}=e,t=A&&(Array.isArray(A)||A.includes("{x}")&&A.includes("{y}"))||this.props.isTiled;this.setState({isTiled:t})}i||e.meshMaxError!==t.meshMaxError||e.elevationDecoder!==t.elevationDecoder||(e.bounds,t.bounds);this.state.isTiled,e.workerUrl&&A.log.removed("workerUrl","loadOptions.terrain.workerUrl")()}loadTerrain({elevationData:A,bounds:e,elevationDecoder:t,meshMaxError:i,signal:a}){if(!A)return null;let r=this.getLoadOptions();r={...r,_workerType:"test",terrain:{skirtHeight:this.state.isTiled?2*i:0,...r?.terrain,bounds:e,meshMaxError:i,elevationDecoder:t}};const{fetch:n}=this.props;return n(A,{propName:"elevationData",layer:this,loadOptions:r,signal:a,loaders:[]})}async getTiledTerrainData(A){const{viewport:e}=this.context;let t=[0,0],i=[0,0];if(e.isGeospatial){const a=A.bbox;t=e.projectFlat([a.west,a.south]),i=e.projectFlat([a.east,a.north])}else{const e=A.bbox;t=[e.left,e.bottom],i=[e.right,e.top]}const a=[t[0],t[1],i[0],i[1]],r=await this.state.terrainCogTiles.getTile(A.index.x,A.index.y,A.index.z,a,this.props.meshMaxError);return Promise.all([r,null])}renderSubLayers(e){const t=this.getSubLayerClass("mesh",s.SimpleMeshLayer),{color:i,wireframe:a,material:r}=this.props,{data:n}=e;if(!n)return null;const[o]=n;return new t({...e,tileSize:256},{data:at,mesh:o,_instanced:!1,coordinateSystem:A.COORDINATE_SYSTEM.CARTESIAN,getColor:i,wireframe:a,material:r})}onViewportLoad(A){if(!A)return;const{zRange:e}=this.state,t=A.map((A=>A.content)).filter((A=>A&&A[0])).map((A=>{const e=A[0]?.header?.boundingBox;return e?.map((A=>A[2]))}));if(0===t.length)return;const i=Math.min(...t.map((A=>A[0]))),a=Math.max(...t.map((A=>A[1])));(!e||i<e[0]||a>e[1])&&this.setState({zRange:[Number.isFinite(i)?i:0,Number.isFinite(a)?a:0]})}renderLayers(){const{elevationData:A,meshMaxError:t,elevationDecoder:i,tileSize:a,extent:r,maxRequests:n,onTileLoad:s,onTileUnload:o,onTileError:g,maxCacheSize:l,maxCacheByteSize:I,refinementStrategy:h}=this.props;if(this.state.isTiled&&this.state.initialized)return new e.TileLayer(this.getSubLayerProps({id:"tiles"}),{getTileData:this.getTiledTerrainData.bind(this),renderSubLayers:this.renderSubLayers.bind(this),updateTriggers:{getTileData:{elevationData:(B=A,Array.isArray(B)?B.join(";"):B||""),meshMaxError:t,elevationDecoder:i}},onViewportLoad:this.onViewportLoad.bind(this),zRange:this.state.zRange||null,tileSize:a,minZoom:this.state.minZoom,maxZoom:this.state.maxZoom,extent:r,maxRequests:n,onTileLoad:s,onTileUnload:o,onTileError:g,maxCacheSize:l,maxCacheByteSize:I,refinementStrategy:h});var B}}var st=Object.freeze({__proto__:null,default:class extends Fe{decodeBlock(A){return A}}});function ot(A,e){for(let t=e.length-1;t>=0;t--)A.push(e[t]);return A}function gt(A){const e=new Uint16Array(4093),t=new Uint8Array(4093);for(let A=0;A<=257;A++)e[A]=4096,t[A]=A;let i=258,a=9,r=0;function n(){i=258,a=9}function s(A){const e=function(A,e,t){const i=e%8,a=Math.floor(e/8),r=8-i,n=e+t-8*(a+1);let s=8*(a+2)-(e+t);const o=8*(a+2)-e;if(s=Math.max(0,s),a>=A.length)return console.warn("ran off the end of the buffer before finding EOI_CODE (end on input code)"),257;let g=A[a]&2**(8-i)-1;g<<=t-r;let l=g;if(a+1<A.length){let e=A[a+1]>>>s;e<<=Math.max(0,t-o),l+=e}if(n>8&&a+2<A.length){const i=8*(a+3)-(e+t);l+=A[a+2]>>>i}return l}(A,r,a);return r+=a,e}function o(A,a){return t[i]=a,e[i]=A,i++,i-1}function g(A){const i=[];for(let a=A;4096!==a;a=e[a])i.push(t[a]);return i}const l=[];n();const I=new Uint8Array(A);let h,B=s(I);for(;257!==B;){if(256===B){for(n(),B=s(I);256===B;)B=s(I);if(257===B)break;if(B>256)throw new Error(`corrupted code at scanline ${B}`);ot(l,g(B)),h=B}else if(B<i){const A=g(B);ot(l,A),o(h,A[A.length-1]),h=B}else{const A=g(h);if(!A)throw new Error(`Bogus entry. Not in dictionary, ${h} / ${i}, position: ${r}`);ot(l,A),l.push(A[A.length-1]),o(h,A[A.length-1]),h=B}i+1>=2**a&&(12===a?h=void 0:a++),B=s(I)}return new Uint8Array(l)}var lt=Object.freeze({__proto__:null,default:class extends Fe{decodeBlock(A){return gt(A).buffer}}});const It=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]),ht=4017,Bt=799,ct=3406,Ct=2276,Et=1567,ft=3784,Qt=5793,dt=2896;function ut(A,e){let t=0;const i=[];let a=16;for(;a>0&&!A[a-1];)--a;i.push({children:[],index:0});let r,n=i[0];for(let s=0;s<a;s++){for(let a=0;a<A[s];a++){for(n=i.pop(),n.children[n.index]=e[t];n.index>0;)n=i.pop();for(n.index++,i.push(n);i.length<=s;)i.push(r={children:[],index:0}),n.children[n.index]=r.children,n=r;t++}s+1<a&&(i.push(r={children:[],index:0}),n.children[n.index]=r.children,n=r)}return i[0].children}function wt(A,e,t,i,a,r,n,s,o){const{mcusPerLine:g,progressive:l}=t,I=e;let h=e,B=0,c=0;function C(){if(c>0)return c--,B>>c&1;if(B=A[h++],255===B){const e=A[h++];if(e)throw new Error(`unexpected marker: ${(B<<8|e).toString(16)}`)}return c=7,B>>>7}function E(A){let e,t=A;for(;null!==(e=C());){if(t=t[e],"number"==typeof t)return t;if("object"!=typeof t)throw new Error("invalid huffman sequence")}return null}function f(A){let e=A,t=0;for(;e>0;){const A=C();if(null===A)return;t=t<<1|A,--e}return t}function Q(A){const e=f(A);return e>=1<<A-1?e:e+(-1<<A)+1}let d=0;let u,w=0;function p(A,e,t,i,a){const r=t%g,n=(t/g|0)*A.v+i,s=r*A.h+a;e(A,A.blocks[n][s])}function m(A,e,t){const i=t/A.blocksPerLine|0,a=t%A.blocksPerLine;e(A,A.blocks[i][a])}const y=i.length;let D,k,_,b,S,x;x=l?0===r?0===s?function(A,e){const t=E(A.huffmanTableDC),i=0===t?0:Q(t)<<o;A.pred+=i,e[0]=A.pred}:function(A,e){e[0]|=C()<<o}:0===s?function(A,e){if(d>0)return void d--;let t=r;const i=n;for(;t<=i;){const i=E(A.huffmanTableAC),a=15&i,r=i>>4;if(0===a){if(r<15){d=f(r)+(1<<r)-1;break}t+=16}else t+=r,e[It[t]]=Q(a)*(1<<o),t++}}:function(A,e){let t=r;const i=n;let a=0;for(;t<=i;){const i=It[t],r=e[i]<0?-1:1;switch(w){case 0:{const e=E(A.huffmanTableAC),t=15&e;if(a=e>>4,0===t)a<15?(d=f(a)+(1<<a),w=4):(a=16,w=1);else{if(1!==t)throw new Error("invalid ACn encoding");u=Q(t),w=a?2:3}continue}case 1:case 2:e[i]?e[i]+=(C()<<o)*r:(a--,0===a&&(w=2===w?3:0));break;case 3:e[i]?e[i]+=(C()<<o)*r:(e[i]=u<<o,w=0);break;case 4:e[i]&&(e[i]+=(C()<<o)*r)}t++}4===w&&(d--,0===d&&(w=0))}:function(A,e){const t=E(A.huffmanTableDC),i=0===t?0:Q(t);A.pred+=i,e[0]=A.pred;let a=1;for(;a<64;){const t=E(A.huffmanTableAC),i=15&t,r=t>>4;if(0===i){if(r<15)break;a+=16}else a+=r,e[It[a]]=Q(i),a++}};let F,G,U=0;G=1===y?i[0].blocksPerLine*i[0].blocksPerColumn:g*t.mcusPerColumn;const R=a||G;for(;U<G;){for(k=0;k<y;k++)i[k].pred=0;if(d=0,1===y)for(D=i[0],S=0;S<R;S++)m(D,x,U),U++;else for(S=0;S<R;S++){for(k=0;k<y;k++){D=i[k];const{h:A,v:e}=D;for(_=0;_<e;_++)for(b=0;b<A;b++)p(D,x,U,_,b)}if(U++,U===G)break}if(c=0,F=A[h]<<8|A[h+1],F<65280)throw new Error("marker was not found");if(!(F>=65488&&F<=65495))break;h+=2}return h-I}function pt(A,e){const t=[],{blocksPerLine:i,blocksPerColumn:a}=e,r=i<<3,n=new Int32Array(64),s=new Uint8Array(64);function o(A,t,i){const a=e.quantizationTable;let r,n,s,o,g,l,I,h,B;const c=i;let C;for(C=0;C<64;C++)c[C]=A[C]*a[C];for(C=0;C<8;++C){const A=8*C;0!==c[1+A]||0!==c[2+A]||0!==c[3+A]||0!==c[4+A]||0!==c[5+A]||0!==c[6+A]||0!==c[7+A]?(r=Qt*c[0+A]+128>>8,n=Qt*c[4+A]+128>>8,s=c[2+A],o=c[6+A],g=dt*(c[1+A]-c[7+A])+128>>8,h=dt*(c[1+A]+c[7+A])+128>>8,l=c[3+A]<<4,I=c[5+A]<<4,B=r-n+1>>1,r=r+n+1>>1,n=B,B=s*ft+o*Et+128>>8,s=s*Et-o*ft+128>>8,o=B,B=g-I+1>>1,g=g+I+1>>1,I=B,B=h+l+1>>1,l=h-l+1>>1,h=B,B=r-o+1>>1,r=r+o+1>>1,o=B,B=n-s+1>>1,n=n+s+1>>1,s=B,B=g*Ct+h*ct+2048>>12,g=g*ct-h*Ct+2048>>12,h=B,B=l*Bt+I*ht+2048>>12,l=l*ht-I*Bt+2048>>12,I=B,c[0+A]=r+h,c[7+A]=r-h,c[1+A]=n+I,c[6+A]=n-I,c[2+A]=s+l,c[5+A]=s-l,c[3+A]=o+g,c[4+A]=o-g):(B=Qt*c[0+A]+512>>10,c[0+A]=B,c[1+A]=B,c[2+A]=B,c[3+A]=B,c[4+A]=B,c[5+A]=B,c[6+A]=B,c[7+A]=B)}for(C=0;C<8;++C){const A=C;0!==c[8+A]||0!==c[16+A]||0!==c[24+A]||0!==c[32+A]||0!==c[40+A]||0!==c[48+A]||0!==c[56+A]?(r=Qt*c[0+A]+2048>>12,n=Qt*c[32+A]+2048>>12,s=c[16+A],o=c[48+A],g=dt*(c[8+A]-c[56+A])+2048>>12,h=dt*(c[8+A]+c[56+A])+2048>>12,l=c[24+A],I=c[40+A],B=r-n+1>>1,r=r+n+1>>1,n=B,B=s*ft+o*Et+2048>>12,s=s*Et-o*ft+2048>>12,o=B,B=g-I+1>>1,g=g+I+1>>1,I=B,B=h+l+1>>1,l=h-l+1>>1,h=B,B=r-o+1>>1,r=r+o+1>>1,o=B,B=n-s+1>>1,n=n+s+1>>1,s=B,B=g*Ct+h*ct+2048>>12,g=g*ct-h*Ct+2048>>12,h=B,B=l*Bt+I*ht+2048>>12,l=l*ht-I*Bt+2048>>12,I=B,c[0+A]=r+h,c[56+A]=r-h,c[8+A]=n+I,c[48+A]=n-I,c[16+A]=s+l,c[40+A]=s-l,c[24+A]=o+g,c[32+A]=o-g):(B=Qt*i[C+0]+8192>>14,c[0+A]=B,c[8+A]=B,c[16+A]=B,c[24+A]=B,c[32+A]=B,c[40+A]=B,c[48+A]=B,c[56+A]=B)}for(C=0;C<64;++C){const A=128+(c[C]+8>>4);t[C]=A<0?0:A>255?255:A}}for(let A=0;A<a;A++){const a=A<<3;for(let A=0;A<8;A++)t.push(new Uint8Array(r));for(let r=0;r<i;r++){o(e.blocks[A][r],s,n);let i=0;const g=r<<3;for(let A=0;A<8;A++){const e=t[a+A];for(let A=0;A<8;A++)e[g+A]=s[i++]}}}return t}class mt{constructor(){this.jfif=null,this.adobe=null,this.quantizationTables=[],this.huffmanTablesAC=[],this.huffmanTablesDC=[],this.resetFrames()}resetFrames(){this.frames=[]}parse(A){let e=0;function t(){const t=A[e]<<8|A[e+1];return e+=2,t}function i(){const i=t(),a=A.subarray(e,e+i-2);return e+=a.length,a}function a(A){let e,t,i=0,a=0;for(t in A.components)A.components.hasOwnProperty(t)&&(e=A.components[t],i<e.h&&(i=e.h),a<e.v&&(a=e.v));const r=Math.ceil(A.samplesPerLine/8/i),n=Math.ceil(A.scanLines/8/a);for(t in A.components)if(A.components.hasOwnProperty(t)){e=A.components[t];const s=Math.ceil(Math.ceil(A.samplesPerLine/8)*e.h/i),o=Math.ceil(Math.ceil(A.scanLines/8)*e.v/a),g=r*e.h,l=n*e.v,I=[];for(let A=0;A<l;A++){const A=[];for(let e=0;e<g;e++)A.push(new Int32Array(64));I.push(A)}e.blocksPerLine=s,e.blocksPerColumn=o,e.blocks=I}A.maxH=i,A.maxV=a,A.mcusPerLine=r,A.mcusPerColumn=n}let r=t();if(65496!==r)throw new Error("SOI not found");for(r=t();65497!==r;){switch(r){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=i();65504===r&&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===r&&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 i=t()+e-2;for(;e<i;){const i=A[e++],a=new Int32Array(64);if(i>>4){if(i>>4!=1)throw new Error("DQT: invalid table spec");for(let A=0;A<64;A++){a[It[A]]=t()}}else for(let t=0;t<64;t++){a[It[t]]=A[e++]}this.quantizationTables[15&i]=a}break}case 65472:case 65473:case 65474:{t();const i={extended:65473===r,progressive:65474===r,precision:A[e++],scanLines:t(),samplesPerLine:t(),components:{},componentsOrder:[]},n=A[e++];let s;for(let t=0;t<n;t++){s=A[e];const t=A[e+1]>>4,a=15&A[e+1],r=A[e+2];i.componentsOrder.push(s),i.components[s]={h:t,v:a,quantizationIdx:r},e+=3}a(i),this.frames.push(i);break}case 65476:{const i=t();for(let t=2;t<i;){const i=A[e++],a=new Uint8Array(16);let r=0;for(let t=0;t<16;t++,e++)a[t]=A[e],r+=a[t];const n=new Uint8Array(r);for(let t=0;t<r;t++,e++)n[t]=A[e];t+=17+r,i>>4?this.huffmanTablesAC[15&i]=ut(a,n):this.huffmanTablesDC[15&i]=ut(a,n)}break}case 65501:t(),this.resetInterval=t();break;case 65498:{t();const i=A[e++],a=[],r=this.frames[0];for(let t=0;t<i;t++){const t=r.components[A[e++]],i=A[e++];t.huffmanTableDC=this.huffmanTablesDC[i>>4],t.huffmanTableAC=this.huffmanTablesAC[15&i],a.push(t)}const n=A[e++],s=A[e++],o=A[e++],g=wt(A,e,r,a,this.resetInterval,n,s,o>>4,15&o);e+=g;break}case 65535:255!==A[e]&&e--;break;default:if(255===A[e-3]&&A[e-2]>=192&&A[e-2]<=254){e-=3;break}throw new Error(`unknown JPEG marker ${r.toString(16)}`)}r=t()}}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 e=this.frames[A].components;for(const A of Object.keys(e))e[A].quantizationTable=this.quantizationTables[e[A].quantizationIdx],delete e[A].quantizationIdx}const e=A[0],{components:t,componentsOrder:i}=e,a=[],r=e.samplesPerLine,n=e.scanLines;for(let A=0;A<i.length;A++){const r=t[i[A]];a.push({lines:pt(0,r),scaleX:r.h/e.maxH,scaleY:r.v/e.maxV})}const s=new Uint8Array(r*n*a.length);let o=0;for(let A=0;A<n;++A)for(let e=0;e<r;++e)for(let t=0;t<a.length;++t){const i=a[t];s[o]=i.lines[0|A*i.scaleY][0|e*i.scaleX],++o}return s}}var yt=Object.freeze({__proto__:null,default:class extends Fe{constructor(A){super(),this.reader=new mt,A.JPEGTables&&this.reader.parse(A.JPEGTables)}decodeBlock(A){return this.reader.resetFrames(),this.reader.parse(new Uint8Array(A)),this.reader.getResult().buffer}}});
|
|
2
|
-
/*! pako 2.1.0 https://github.com/nodeca/pako @license (MIT AND Zlib) */function Dt(A){let e=A.length;for(;--e>=0;)A[e]=0}const kt=256,_t=286,bt=30,St=15,xt=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),Ft=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),Gt=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),Ut=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Rt=new Array(576);Dt(Rt);const Mt=new Array(60);Dt(Mt);const Lt=new Array(512);Dt(Lt);const Nt=new Array(256);Dt(Nt);const vt=new Array(29);Dt(vt);const Tt=new Array(bt);function qt(A,e,t,i,a){this.static_tree=A,this.extra_bits=e,this.extra_base=t,this.elems=i,this.max_length=a,this.has_stree=A&&A.length}let Jt,Ot,Ht;function Yt(A,e){this.dyn_tree=A,this.max_code=0,this.stat_desc=e}Dt(Tt);const zt=A=>A<256?Lt[A]:Lt[256+(A>>>7)],Kt=(A,e)=>{A.pending_buf[A.pending++]=255&e,A.pending_buf[A.pending++]=e>>>8&255},Pt=(A,e,t)=>{A.bi_valid>16-t?(A.bi_buf|=e<<A.bi_valid&65535,Kt(A,A.bi_buf),A.bi_buf=e>>16-A.bi_valid,A.bi_valid+=t-16):(A.bi_buf|=e<<A.bi_valid&65535,A.bi_valid+=t)},Vt=(A,e,t)=>{Pt(A,t[2*e],t[2*e+1])},Zt=(A,e)=>{let t=0;do{t|=1&A,A>>>=1,t<<=1}while(--e>0);return t>>>1},Xt=(A,e,t)=>{const i=new Array(16);let a,r,n=0;for(a=1;a<=St;a++)n=n+t[a-1]<<1,i[a]=n;for(r=0;r<=e;r++){let e=A[2*r+1];0!==e&&(A[2*r]=Zt(i[e]++,e))}},Wt=A=>{let e;for(e=0;e<_t;e++)A.dyn_ltree[2*e]=0;for(e=0;e<bt;e++)A.dyn_dtree[2*e]=0;for(e=0;e<19;e++)A.bl_tree[2*e]=0;A.dyn_ltree[512]=1,A.opt_len=A.static_len=0,A.sym_next=A.matches=0},jt=A=>{A.bi_valid>8?Kt(A,A.bi_buf):A.bi_valid>0&&(A.pending_buf[A.pending++]=A.bi_buf),A.bi_buf=0,A.bi_valid=0},$t=(A,e,t,i)=>{const a=2*e,r=2*t;return A[a]<A[r]||A[a]===A[r]&&i[e]<=i[t]},Ai=(A,e,t)=>{const i=A.heap[t];let a=t<<1;for(;a<=A.heap_len&&(a<A.heap_len&&$t(e,A.heap[a+1],A.heap[a],A.depth)&&a++,!$t(e,i,A.heap[a],A.depth));)A.heap[t]=A.heap[a],t=a,a<<=1;A.heap[t]=i},ei=(A,e,t)=>{let i,a,r,n,s=0;if(0!==A.sym_next)do{i=255&A.pending_buf[A.sym_buf+s++],i+=(255&A.pending_buf[A.sym_buf+s++])<<8,a=A.pending_buf[A.sym_buf+s++],0===i?Vt(A,a,e):(r=Nt[a],Vt(A,r+kt+1,e),n=xt[r],0!==n&&(a-=vt[r],Pt(A,a,n)),i--,r=zt(i),Vt(A,r,t),n=Ft[r],0!==n&&(i-=Tt[r],Pt(A,i,n)))}while(s<A.sym_next);Vt(A,256,e)},ti=(A,e)=>{const t=e.dyn_tree,i=e.stat_desc.static_tree,a=e.stat_desc.has_stree,r=e.stat_desc.elems;let n,s,o,g=-1;for(A.heap_len=0,A.heap_max=573,n=0;n<r;n++)0!==t[2*n]?(A.heap[++A.heap_len]=g=n,A.depth[n]=0):t[2*n+1]=0;for(;A.heap_len<2;)o=A.heap[++A.heap_len]=g<2?++g:0,t[2*o]=1,A.depth[o]=0,A.opt_len--,a&&(A.static_len-=i[2*o+1]);for(e.max_code=g,n=A.heap_len>>1;n>=1;n--)Ai(A,t,n);o=r;do{n=A.heap[1],A.heap[1]=A.heap[A.heap_len--],Ai(A,t,1),s=A.heap[1],A.heap[--A.heap_max]=n,A.heap[--A.heap_max]=s,t[2*o]=t[2*n]+t[2*s],A.depth[o]=(A.depth[n]>=A.depth[s]?A.depth[n]:A.depth[s])+1,t[2*n+1]=t[2*s+1]=o,A.heap[1]=o++,Ai(A,t,1)}while(A.heap_len>=2);A.heap[--A.heap_max]=A.heap[1],((A,e)=>{const t=e.dyn_tree,i=e.max_code,a=e.stat_desc.static_tree,r=e.stat_desc.has_stree,n=e.stat_desc.extra_bits,s=e.stat_desc.extra_base,o=e.stat_desc.max_length;let g,l,I,h,B,c,C=0;for(h=0;h<=St;h++)A.bl_count[h]=0;for(t[2*A.heap[A.heap_max]+1]=0,g=A.heap_max+1;g<573;g++)l=A.heap[g],h=t[2*t[2*l+1]+1]+1,h>o&&(h=o,C++),t[2*l+1]=h,l>i||(A.bl_count[h]++,B=0,l>=s&&(B=n[l-s]),c=t[2*l],A.opt_len+=c*(h+B),r&&(A.static_len+=c*(a[2*l+1]+B)));if(0!==C){do{for(h=o-1;0===A.bl_count[h];)h--;A.bl_count[h]--,A.bl_count[h+1]+=2,A.bl_count[o]--,C-=2}while(C>0);for(h=o;0!==h;h--)for(l=A.bl_count[h];0!==l;)I=A.heap[--g],I>i||(t[2*I+1]!==h&&(A.opt_len+=(h-t[2*I+1])*t[2*I],t[2*I+1]=h),l--)}})(A,e),Xt(t,g,A.bl_count)},ii=(A,e,t)=>{let i,a,r=-1,n=e[1],s=0,o=7,g=4;for(0===n&&(o=138,g=3),e[2*(t+1)+1]=65535,i=0;i<=t;i++)a=n,n=e[2*(i+1)+1],++s<o&&a===n||(s<g?A.bl_tree[2*a]+=s:0!==a?(a!==r&&A.bl_tree[2*a]++,A.bl_tree[32]++):s<=10?A.bl_tree[34]++:A.bl_tree[36]++,s=0,r=a,0===n?(o=138,g=3):a===n?(o=6,g=3):(o=7,g=4))},ai=(A,e,t)=>{let i,a,r=-1,n=e[1],s=0,o=7,g=4;for(0===n&&(o=138,g=3),i=0;i<=t;i++)if(a=n,n=e[2*(i+1)+1],!(++s<o&&a===n)){if(s<g)do{Vt(A,a,A.bl_tree)}while(0!=--s);else 0!==a?(a!==r&&(Vt(A,a,A.bl_tree),s--),Vt(A,16,A.bl_tree),Pt(A,s-3,2)):s<=10?(Vt(A,17,A.bl_tree),Pt(A,s-3,3)):(Vt(A,18,A.bl_tree),Pt(A,s-11,7));s=0,r=a,0===n?(o=138,g=3):a===n?(o=6,g=3):(o=7,g=4)}};let ri=!1;const ni=(A,e,t,i)=>{Pt(A,0+(i?1:0),3),jt(A),Kt(A,t),Kt(A,~t),t&&A.pending_buf.set(A.window.subarray(e,e+t),A.pending),A.pending+=t};var si=(A,e,t,i)=>{let a,r,n=0;A.level>0?(2===A.strm.data_type&&(A.strm.data_type=(A=>{let e,t=4093624447;for(e=0;e<=31;e++,t>>>=1)if(1&t&&0!==A.dyn_ltree[2*e])return 0;if(0!==A.dyn_ltree[18]||0!==A.dyn_ltree[20]||0!==A.dyn_ltree[26])return 1;for(e=32;e<kt;e++)if(0!==A.dyn_ltree[2*e])return 1;return 0})(A)),ti(A,A.l_desc),ti(A,A.d_desc),n=(A=>{let e;for(ii(A,A.dyn_ltree,A.l_desc.max_code),ii(A,A.dyn_dtree,A.d_desc.max_code),ti(A,A.bl_desc),e=18;e>=3&&0===A.bl_tree[2*Ut[e]+1];e--);return A.opt_len+=3*(e+1)+5+5+4,e})(A),a=A.opt_len+3+7>>>3,r=A.static_len+3+7>>>3,r<=a&&(a=r)):a=r=t+5,t+4<=a&&-1!==e?ni(A,e,t,i):4===A.strategy||r===a?(Pt(A,2+(i?1:0),3),ei(A,Rt,Mt)):(Pt(A,4+(i?1:0),3),((A,e,t,i)=>{let a;for(Pt(A,e-257,5),Pt(A,t-1,5),Pt(A,i-4,4),a=0;a<i;a++)Pt(A,A.bl_tree[2*Ut[a]+1],3);ai(A,A.dyn_ltree,e-1),ai(A,A.dyn_dtree,t-1)})(A,A.l_desc.max_code+1,A.d_desc.max_code+1,n+1),ei(A,A.dyn_ltree,A.dyn_dtree)),Wt(A),i&&jt(A)},oi={_tr_init:A=>{ri||((()=>{let A,e,t,i,a;const r=new Array(16);for(t=0,i=0;i<28;i++)for(vt[i]=t,A=0;A<1<<xt[i];A++)Nt[t++]=i;for(Nt[t-1]=i,a=0,i=0;i<16;i++)for(Tt[i]=a,A=0;A<1<<Ft[i];A++)Lt[a++]=i;for(a>>=7;i<bt;i++)for(Tt[i]=a<<7,A=0;A<1<<Ft[i]-7;A++)Lt[256+a++]=i;for(e=0;e<=St;e++)r[e]=0;for(A=0;A<=143;)Rt[2*A+1]=8,A++,r[8]++;for(;A<=255;)Rt[2*A+1]=9,A++,r[9]++;for(;A<=279;)Rt[2*A+1]=7,A++,r[7]++;for(;A<=287;)Rt[2*A+1]=8,A++,r[8]++;for(Xt(Rt,287,r),A=0;A<bt;A++)Mt[2*A+1]=5,Mt[2*A]=Zt(A,5);Jt=new qt(Rt,xt,257,_t,St),Ot=new qt(Mt,Ft,0,bt,St),Ht=new qt(new Array(0),Gt,0,19,7)})(),ri=!0),A.l_desc=new Yt(A.dyn_ltree,Jt),A.d_desc=new Yt(A.dyn_dtree,Ot),A.bl_desc=new Yt(A.bl_tree,Ht),A.bi_buf=0,A.bi_valid=0,Wt(A)},_tr_stored_block:ni,_tr_flush_block:si,_tr_tally:(A,e,t)=>(A.pending_buf[A.sym_buf+A.sym_next++]=e,A.pending_buf[A.sym_buf+A.sym_next++]=e>>8,A.pending_buf[A.sym_buf+A.sym_next++]=t,0===e?A.dyn_ltree[2*t]++:(A.matches++,e--,A.dyn_ltree[2*(Nt[t]+kt+1)]++,A.dyn_dtree[2*zt(e)]++),A.sym_next===A.sym_end),_tr_align:A=>{Pt(A,2,3),Vt(A,256,Rt),(A=>{16===A.bi_valid?(Kt(A,A.bi_buf),A.bi_buf=0,A.bi_valid=0):A.bi_valid>=8&&(A.pending_buf[A.pending++]=255&A.bi_buf,A.bi_buf>>=8,A.bi_valid-=8)})(A)}};var gi=(A,e,t,i)=>{let a=65535&A,r=A>>>16&65535,n=0;for(;0!==t;){n=t>2e3?2e3:t,t-=n;do{a=a+e[i++]|0,r=r+a|0}while(--n);a%=65521,r%=65521}return a|r<<16};const li=new Uint32Array((()=>{let A,e=[];for(var t=0;t<256;t++){A=t;for(var i=0;i<8;i++)A=1&A?3988292384^A>>>1:A>>>1;e[t]=A}return e})());var Ii=(A,e,t,i)=>{const a=li,r=i+t;A^=-1;for(let t=i;t<r;t++)A=A>>>8^a[255&(A^e[t])];return~A},hi={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"},Bi={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:ci,_tr_stored_block:Ci,_tr_flush_block:Ei,_tr_tally:fi,_tr_align:Qi}=oi,{Z_NO_FLUSH:di,Z_PARTIAL_FLUSH:ui,Z_FULL_FLUSH:wi,Z_FINISH:pi,Z_BLOCK:mi,Z_OK:yi,Z_STREAM_END:Di,Z_STREAM_ERROR:ki,Z_DATA_ERROR:_i,Z_BUF_ERROR:bi,Z_DEFAULT_COMPRESSION:Si,Z_FILTERED:xi,Z_HUFFMAN_ONLY:Fi,Z_RLE:Gi,Z_FIXED:Ui,Z_DEFAULT_STRATEGY:Ri,Z_UNKNOWN:Mi,Z_DEFLATED:Li}=Bi,Ni=258,vi=262,Ti=42,qi=113,Ji=666,Oi=(A,e)=>(A.msg=hi[e],e),Hi=A=>2*A-(A>4?9:0),Yi=A=>{let e=A.length;for(;--e>=0;)A[e]=0},zi=A=>{let e,t,i,a=A.w_size;e=A.hash_size,i=e;do{t=A.head[--i],A.head[i]=t>=a?t-a:0}while(--e);e=a,i=e;do{t=A.prev[--i],A.prev[i]=t>=a?t-a:0}while(--e)};let Ki=(A,e,t)=>(e<<A.hash_shift^t)&A.hash_mask;const Pi=A=>{const e=A.state;let t=e.pending;t>A.avail_out&&(t=A.avail_out),0!==t&&(A.output.set(e.pending_buf.subarray(e.pending_out,e.pending_out+t),A.next_out),A.next_out+=t,e.pending_out+=t,A.total_out+=t,A.avail_out-=t,e.pending-=t,0===e.pending&&(e.pending_out=0))},Vi=(A,e)=>{Ei(A,A.block_start>=0?A.block_start:-1,A.strstart-A.block_start,e),A.block_start=A.strstart,Pi(A.strm)},Zi=(A,e)=>{A.pending_buf[A.pending++]=e},Xi=(A,e)=>{A.pending_buf[A.pending++]=e>>>8&255,A.pending_buf[A.pending++]=255&e},Wi=(A,e,t,i)=>{let a=A.avail_in;return a>i&&(a=i),0===a?0:(A.avail_in-=a,e.set(A.input.subarray(A.next_in,A.next_in+a),t),1===A.state.wrap?A.adler=gi(A.adler,e,a,t):2===A.state.wrap&&(A.adler=Ii(A.adler,e,a,t)),A.next_in+=a,A.total_in+=a,a)},ji=(A,e)=>{let t,i,a=A.max_chain_length,r=A.strstart,n=A.prev_length,s=A.nice_match;const o=A.strstart>A.w_size-vi?A.strstart-(A.w_size-vi):0,g=A.window,l=A.w_mask,I=A.prev,h=A.strstart+Ni;let B=g[r+n-1],c=g[r+n];A.prev_length>=A.good_match&&(a>>=2),s>A.lookahead&&(s=A.lookahead);do{if(t=e,g[t+n]===c&&g[t+n-1]===B&&g[t]===g[r]&&g[++t]===g[r+1]){r+=2,t++;do{}while(g[++r]===g[++t]&&g[++r]===g[++t]&&g[++r]===g[++t]&&g[++r]===g[++t]&&g[++r]===g[++t]&&g[++r]===g[++t]&&g[++r]===g[++t]&&g[++r]===g[++t]&&r<h);if(i=Ni-(h-r),r=h-Ni,i>n){if(A.match_start=e,n=i,i>=s)break;B=g[r+n-1],c=g[r+n]}}}while((e=I[e&l])>o&&0!=--a);return n<=A.lookahead?n:A.lookahead},$i=A=>{const e=A.w_size;let t,i,a;do{if(i=A.window_size-A.lookahead-A.strstart,A.strstart>=e+(e-vi)&&(A.window.set(A.window.subarray(e,e+e-i),0),A.match_start-=e,A.strstart-=e,A.block_start-=e,A.insert>A.strstart&&(A.insert=A.strstart),zi(A),i+=e),0===A.strm.avail_in)break;if(t=Wi(A.strm,A.window,A.strstart+A.lookahead,i),A.lookahead+=t,A.lookahead+A.insert>=3)for(a=A.strstart-A.insert,A.ins_h=A.window[a],A.ins_h=Ki(A,A.ins_h,A.window[a+1]);A.insert&&(A.ins_h=Ki(A,A.ins_h,A.window[a+3-1]),A.prev[a&A.w_mask]=A.head[A.ins_h],A.head[A.ins_h]=a,a++,A.insert--,!(A.lookahead+A.insert<3)););}while(A.lookahead<vi&&0!==A.strm.avail_in)},Aa=(A,e)=>{let t,i,a,r=A.pending_buf_size-5>A.w_size?A.w_size:A.pending_buf_size-5,n=0,s=A.strm.avail_in;do{if(t=65535,a=A.bi_valid+42>>3,A.strm.avail_out<a)break;if(a=A.strm.avail_out-a,i=A.strstart-A.block_start,t>i+A.strm.avail_in&&(t=i+A.strm.avail_in),t>a&&(t=a),t<r&&(0===t&&e!==pi||e===di||t!==i+A.strm.avail_in))break;n=e===pi&&t===i+A.strm.avail_in?1:0,Ci(A,0,0,n),A.pending_buf[A.pending-4]=t,A.pending_buf[A.pending-3]=t>>8,A.pending_buf[A.pending-2]=~t,A.pending_buf[A.pending-1]=~t>>8,Pi(A.strm),i&&(i>t&&(i=t),A.strm.output.set(A.window.subarray(A.block_start,A.block_start+i),A.strm.next_out),A.strm.next_out+=i,A.strm.avail_out-=i,A.strm.total_out+=i,A.block_start+=i,t-=i),t&&(Wi(A.strm,A.strm.output,A.strm.next_out,t),A.strm.next_out+=t,A.strm.avail_out-=t,A.strm.total_out+=t)}while(0===n);return s-=A.strm.avail_in,s&&(s>=A.w_size?(A.matches=2,A.window.set(A.strm.input.subarray(A.strm.next_in-A.w_size,A.strm.next_in),0),A.strstart=A.w_size,A.insert=A.strstart):(A.window_size-A.strstart<=s&&(A.strstart-=A.w_size,A.window.set(A.window.subarray(A.w_size,A.w_size+A.strstart),0),A.matches<2&&A.matches++,A.insert>A.strstart&&(A.insert=A.strstart)),A.window.set(A.strm.input.subarray(A.strm.next_in-s,A.strm.next_in),A.strstart),A.strstart+=s,A.insert+=s>A.w_size-A.insert?A.w_size-A.insert:s),A.block_start=A.strstart),A.high_water<A.strstart&&(A.high_water=A.strstart),n?4:e!==di&&e!==pi&&0===A.strm.avail_in&&A.strstart===A.block_start?2:(a=A.window_size-A.strstart,A.strm.avail_in>a&&A.block_start>=A.w_size&&(A.block_start-=A.w_size,A.strstart-=A.w_size,A.window.set(A.window.subarray(A.w_size,A.w_size+A.strstart),0),A.matches<2&&A.matches++,a+=A.w_size,A.insert>A.strstart&&(A.insert=A.strstart)),a>A.strm.avail_in&&(a=A.strm.avail_in),a&&(Wi(A.strm,A.window,A.strstart,a),A.strstart+=a,A.insert+=a>A.w_size-A.insert?A.w_size-A.insert:a),A.high_water<A.strstart&&(A.high_water=A.strstart),a=A.bi_valid+42>>3,a=A.pending_buf_size-a>65535?65535:A.pending_buf_size-a,r=a>A.w_size?A.w_size:a,i=A.strstart-A.block_start,(i>=r||(i||e===pi)&&e!==di&&0===A.strm.avail_in&&i<=a)&&(t=i>a?a:i,n=e===pi&&0===A.strm.avail_in&&t===i?1:0,Ci(A,A.block_start,t,n),A.block_start+=t,Pi(A.strm)),n?3:1)},ea=(A,e)=>{let t,i;for(;;){if(A.lookahead<vi){if($i(A),A.lookahead<vi&&e===di)return 1;if(0===A.lookahead)break}if(t=0,A.lookahead>=3&&(A.ins_h=Ki(A,A.ins_h,A.window[A.strstart+3-1]),t=A.prev[A.strstart&A.w_mask]=A.head[A.ins_h],A.head[A.ins_h]=A.strstart),0!==t&&A.strstart-t<=A.w_size-vi&&(A.match_length=ji(A,t)),A.match_length>=3)if(i=fi(A,A.strstart-A.match_start,A.match_length-3),A.lookahead-=A.match_length,A.match_length<=A.max_lazy_match&&A.lookahead>=3){A.match_length--;do{A.strstart++,A.ins_h=Ki(A,A.ins_h,A.window[A.strstart+3-1]),t=A.prev[A.strstart&A.w_mask]=A.head[A.ins_h],A.head[A.ins_h]=A.strstart}while(0!=--A.match_length);A.strstart++}else A.strstart+=A.match_length,A.match_length=0,A.ins_h=A.window[A.strstart],A.ins_h=Ki(A,A.ins_h,A.window[A.strstart+1]);else i=fi(A,0,A.window[A.strstart]),A.lookahead--,A.strstart++;if(i&&(Vi(A,!1),0===A.strm.avail_out))return 1}return A.insert=A.strstart<2?A.strstart:2,e===pi?(Vi(A,!0),0===A.strm.avail_out?3:4):A.sym_next&&(Vi(A,!1),0===A.strm.avail_out)?1:2},ta=(A,e)=>{let t,i,a;for(;;){if(A.lookahead<vi){if($i(A),A.lookahead<vi&&e===di)return 1;if(0===A.lookahead)break}if(t=0,A.lookahead>=3&&(A.ins_h=Ki(A,A.ins_h,A.window[A.strstart+3-1]),t=A.prev[A.strstart&A.w_mask]=A.head[A.ins_h],A.head[A.ins_h]=A.strstart),A.prev_length=A.match_length,A.prev_match=A.match_start,A.match_length=2,0!==t&&A.prev_length<A.max_lazy_match&&A.strstart-t<=A.w_size-vi&&(A.match_length=ji(A,t),A.match_length<=5&&(A.strategy===xi||3===A.match_length&&A.strstart-A.match_start>4096)&&(A.match_length=2)),A.prev_length>=3&&A.match_length<=A.prev_length){a=A.strstart+A.lookahead-3,i=fi(A,A.strstart-1-A.prev_match,A.prev_length-3),A.lookahead-=A.prev_length-1,A.prev_length-=2;do{++A.strstart<=a&&(A.ins_h=Ki(A,A.ins_h,A.window[A.strstart+3-1]),t=A.prev[A.strstart&A.w_mask]=A.head[A.ins_h],A.head[A.ins_h]=A.strstart)}while(0!=--A.prev_length);if(A.match_available=0,A.match_length=2,A.strstart++,i&&(Vi(A,!1),0===A.strm.avail_out))return 1}else if(A.match_available){if(i=fi(A,0,A.window[A.strstart-1]),i&&Vi(A,!1),A.strstart++,A.lookahead--,0===A.strm.avail_out)return 1}else A.match_available=1,A.strstart++,A.lookahead--}return A.match_available&&(i=fi(A,0,A.window[A.strstart-1]),A.match_available=0),A.insert=A.strstart<2?A.strstart:2,e===pi?(Vi(A,!0),0===A.strm.avail_out?3:4):A.sym_next&&(Vi(A,!1),0===A.strm.avail_out)?1:2};function ia(A,e,t,i,a){this.good_length=A,this.max_lazy=e,this.nice_length=t,this.max_chain=i,this.func=a}const aa=[new ia(0,0,0,0,Aa),new ia(4,4,8,4,ea),new ia(4,5,16,8,ea),new ia(4,6,32,32,ea),new ia(4,4,16,16,ta),new ia(8,16,32,32,ta),new ia(8,16,128,128,ta),new ia(8,32,128,256,ta),new ia(32,128,258,1024,ta),new ia(32,258,258,4096,ta)];function ra(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=Li,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),Yi(this.dyn_ltree),Yi(this.dyn_dtree),Yi(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),Yi(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),Yi(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const na=A=>{if(!A)return 1;const e=A.state;return!e||e.strm!==A||e.status!==Ti&&57!==e.status&&69!==e.status&&73!==e.status&&91!==e.status&&103!==e.status&&e.status!==qi&&e.status!==Ji?1:0},sa=A=>{if(na(A))return Oi(A,ki);A.total_in=A.total_out=0,A.data_type=Mi;const e=A.state;return e.pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=2===e.wrap?57:e.wrap?Ti:qi,A.adler=2===e.wrap?0:1,e.last_flush=-2,ci(e),yi},oa=A=>{const e=sa(A);var t;return e===yi&&((t=A.state).window_size=2*t.w_size,Yi(t.head),t.max_lazy_match=aa[t.level].max_lazy,t.good_match=aa[t.level].good_length,t.nice_match=aa[t.level].nice_length,t.max_chain_length=aa[t.level].max_chain,t.strstart=0,t.block_start=0,t.lookahead=0,t.insert=0,t.match_length=t.prev_length=2,t.match_available=0,t.ins_h=0),e},ga=(A,e,t,i,a,r)=>{if(!A)return ki;let n=1;if(e===Si&&(e=6),i<0?(n=0,i=-i):i>15&&(n=2,i-=16),a<1||a>9||t!==Li||i<8||i>15||e<0||e>9||r<0||r>Ui||8===i&&1!==n)return Oi(A,ki);8===i&&(i=9);const s=new ra;return A.state=s,s.strm=A,s.status=Ti,s.wrap=n,s.gzhead=null,s.w_bits=i,s.w_size=1<<s.w_bits,s.w_mask=s.w_size-1,s.hash_bits=a+7,s.hash_size=1<<s.hash_bits,s.hash_mask=s.hash_size-1,s.hash_shift=~~((s.hash_bits+3-1)/3),s.window=new Uint8Array(2*s.w_size),s.head=new Uint16Array(s.hash_size),s.prev=new Uint16Array(s.w_size),s.lit_bufsize=1<<a+6,s.pending_buf_size=4*s.lit_bufsize,s.pending_buf=new Uint8Array(s.pending_buf_size),s.sym_buf=s.lit_bufsize,s.sym_end=3*(s.lit_bufsize-1),s.level=e,s.strategy=r,s.method=t,oa(A)};var la={deflateInit:(A,e)=>ga(A,e,Li,15,8,Ri),deflateInit2:ga,deflateReset:oa,deflateResetKeep:sa,deflateSetHeader:(A,e)=>na(A)||2!==A.state.wrap?ki:(A.state.gzhead=e,yi),deflate:(A,e)=>{if(na(A)||e>mi||e<0)return A?Oi(A,ki):ki;const t=A.state;if(!A.output||0!==A.avail_in&&!A.input||t.status===Ji&&e!==pi)return Oi(A,0===A.avail_out?bi:ki);const i=t.last_flush;if(t.last_flush=e,0!==t.pending){if(Pi(A),0===A.avail_out)return t.last_flush=-1,yi}else if(0===A.avail_in&&Hi(e)<=Hi(i)&&e!==pi)return Oi(A,bi);if(t.status===Ji&&0!==A.avail_in)return Oi(A,bi);if(t.status===Ti&&0===t.wrap&&(t.status=qi),t.status===Ti){let e=Li+(t.w_bits-8<<4)<<8,i=-1;if(i=t.strategy>=Fi||t.level<2?0:t.level<6?1:6===t.level?2:3,e|=i<<6,0!==t.strstart&&(e|=32),e+=31-e%31,Xi(t,e),0!==t.strstart&&(Xi(t,A.adler>>>16),Xi(t,65535&A.adler)),A.adler=1,t.status=qi,Pi(A),0!==t.pending)return t.last_flush=-1,yi}if(57===t.status)if(A.adler=0,Zi(t,31),Zi(t,139),Zi(t,8),t.gzhead)Zi(t,(t.gzhead.text?1:0)+(t.gzhead.hcrc?2:0)+(t.gzhead.extra?4:0)+(t.gzhead.name?8:0)+(t.gzhead.comment?16:0)),Zi(t,255&t.gzhead.time),Zi(t,t.gzhead.time>>8&255),Zi(t,t.gzhead.time>>16&255),Zi(t,t.gzhead.time>>24&255),Zi(t,9===t.level?2:t.strategy>=Fi||t.level<2?4:0),Zi(t,255&t.gzhead.os),t.gzhead.extra&&t.gzhead.extra.length&&(Zi(t,255&t.gzhead.extra.length),Zi(t,t.gzhead.extra.length>>8&255)),t.gzhead.hcrc&&(A.adler=Ii(A.adler,t.pending_buf,t.pending,0)),t.gzindex=0,t.status=69;else if(Zi(t,0),Zi(t,0),Zi(t,0),Zi(t,0),Zi(t,0),Zi(t,9===t.level?2:t.strategy>=Fi||t.level<2?4:0),Zi(t,3),t.status=qi,Pi(A),0!==t.pending)return t.last_flush=-1,yi;if(69===t.status){if(t.gzhead.extra){let e=t.pending,i=(65535&t.gzhead.extra.length)-t.gzindex;for(;t.pending+i>t.pending_buf_size;){let a=t.pending_buf_size-t.pending;if(t.pending_buf.set(t.gzhead.extra.subarray(t.gzindex,t.gzindex+a),t.pending),t.pending=t.pending_buf_size,t.gzhead.hcrc&&t.pending>e&&(A.adler=Ii(A.adler,t.pending_buf,t.pending-e,e)),t.gzindex+=a,Pi(A),0!==t.pending)return t.last_flush=-1,yi;e=0,i-=a}let a=new Uint8Array(t.gzhead.extra);t.pending_buf.set(a.subarray(t.gzindex,t.gzindex+i),t.pending),t.pending+=i,t.gzhead.hcrc&&t.pending>e&&(A.adler=Ii(A.adler,t.pending_buf,t.pending-e,e)),t.gzindex=0}t.status=73}if(73===t.status){if(t.gzhead.name){let e,i=t.pending;do{if(t.pending===t.pending_buf_size){if(t.gzhead.hcrc&&t.pending>i&&(A.adler=Ii(A.adler,t.pending_buf,t.pending-i,i)),Pi(A),0!==t.pending)return t.last_flush=-1,yi;i=0}e=t.gzindex<t.gzhead.name.length?255&t.gzhead.name.charCodeAt(t.gzindex++):0,Zi(t,e)}while(0!==e);t.gzhead.hcrc&&t.pending>i&&(A.adler=Ii(A.adler,t.pending_buf,t.pending-i,i)),t.gzindex=0}t.status=91}if(91===t.status){if(t.gzhead.comment){let e,i=t.pending;do{if(t.pending===t.pending_buf_size){if(t.gzhead.hcrc&&t.pending>i&&(A.adler=Ii(A.adler,t.pending_buf,t.pending-i,i)),Pi(A),0!==t.pending)return t.last_flush=-1,yi;i=0}e=t.gzindex<t.gzhead.comment.length?255&t.gzhead.comment.charCodeAt(t.gzindex++):0,Zi(t,e)}while(0!==e);t.gzhead.hcrc&&t.pending>i&&(A.adler=Ii(A.adler,t.pending_buf,t.pending-i,i))}t.status=103}if(103===t.status){if(t.gzhead.hcrc){if(t.pending+2>t.pending_buf_size&&(Pi(A),0!==t.pending))return t.last_flush=-1,yi;Zi(t,255&A.adler),Zi(t,A.adler>>8&255),A.adler=0}if(t.status=qi,Pi(A),0!==t.pending)return t.last_flush=-1,yi}if(0!==A.avail_in||0!==t.lookahead||e!==di&&t.status!==Ji){let i=0===t.level?Aa(t,e):t.strategy===Fi?((A,e)=>{let t;for(;;){if(0===A.lookahead&&($i(A),0===A.lookahead)){if(e===di)return 1;break}if(A.match_length=0,t=fi(A,0,A.window[A.strstart]),A.lookahead--,A.strstart++,t&&(Vi(A,!1),0===A.strm.avail_out))return 1}return A.insert=0,e===pi?(Vi(A,!0),0===A.strm.avail_out?3:4):A.sym_next&&(Vi(A,!1),0===A.strm.avail_out)?1:2})(t,e):t.strategy===Gi?((A,e)=>{let t,i,a,r;const n=A.window;for(;;){if(A.lookahead<=Ni){if($i(A),A.lookahead<=Ni&&e===di)return 1;if(0===A.lookahead)break}if(A.match_length=0,A.lookahead>=3&&A.strstart>0&&(a=A.strstart-1,i=n[a],i===n[++a]&&i===n[++a]&&i===n[++a])){r=A.strstart+Ni;do{}while(i===n[++a]&&i===n[++a]&&i===n[++a]&&i===n[++a]&&i===n[++a]&&i===n[++a]&&i===n[++a]&&i===n[++a]&&a<r);A.match_length=Ni-(r-a),A.match_length>A.lookahead&&(A.match_length=A.lookahead)}if(A.match_length>=3?(t=fi(A,1,A.match_length-3),A.lookahead-=A.match_length,A.strstart+=A.match_length,A.match_length=0):(t=fi(A,0,A.window[A.strstart]),A.lookahead--,A.strstart++),t&&(Vi(A,!1),0===A.strm.avail_out))return 1}return A.insert=0,e===pi?(Vi(A,!0),0===A.strm.avail_out?3:4):A.sym_next&&(Vi(A,!1),0===A.strm.avail_out)?1:2})(t,e):aa[t.level].func(t,e);if(3!==i&&4!==i||(t.status=Ji),1===i||3===i)return 0===A.avail_out&&(t.last_flush=-1),yi;if(2===i&&(e===ui?Qi(t):e!==mi&&(Ci(t,0,0,!1),e===wi&&(Yi(t.head),0===t.lookahead&&(t.strstart=0,t.block_start=0,t.insert=0))),Pi(A),0===A.avail_out))return t.last_flush=-1,yi}return e!==pi?yi:t.wrap<=0?Di:(2===t.wrap?(Zi(t,255&A.adler),Zi(t,A.adler>>8&255),Zi(t,A.adler>>16&255),Zi(t,A.adler>>24&255),Zi(t,255&A.total_in),Zi(t,A.total_in>>8&255),Zi(t,A.total_in>>16&255),Zi(t,A.total_in>>24&255)):(Xi(t,A.adler>>>16),Xi(t,65535&A.adler)),Pi(A),t.wrap>0&&(t.wrap=-t.wrap),0!==t.pending?yi:Di)},deflateEnd:A=>{if(na(A))return ki;const e=A.state.status;return A.state=null,e===qi?Oi(A,_i):yi},deflateSetDictionary:(A,e)=>{let t=e.length;if(na(A))return ki;const i=A.state,a=i.wrap;if(2===a||1===a&&i.status!==Ti||i.lookahead)return ki;if(1===a&&(A.adler=gi(A.adler,e,t,0)),i.wrap=0,t>=i.w_size){0===a&&(Yi(i.head),i.strstart=0,i.block_start=0,i.insert=0);let A=new Uint8Array(i.w_size);A.set(e.subarray(t-i.w_size,t),0),e=A,t=i.w_size}const r=A.avail_in,n=A.next_in,s=A.input;for(A.avail_in=t,A.next_in=0,A.input=e,$i(i);i.lookahead>=3;){let A=i.strstart,e=i.lookahead-2;do{i.ins_h=Ki(i,i.ins_h,i.window[A+3-1]),i.prev[A&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=A,A++}while(--e);i.strstart=A,i.lookahead=2,$i(i)}return i.strstart+=i.lookahead,i.block_start=i.strstart,i.insert=i.lookahead,i.lookahead=0,i.match_length=i.prev_length=2,i.match_available=0,A.next_in=n,A.input=s,A.avail_in=r,i.wrap=a,yi},deflateInfo:"pako deflate (from Nodeca project)"};const Ia=(A,e)=>Object.prototype.hasOwnProperty.call(A,e);var ha=function(A){const e=Array.prototype.slice.call(arguments,1);for(;e.length;){const t=e.shift();if(t){if("object"!=typeof t)throw new TypeError(t+"must be non-object");for(const e in t)Ia(t,e)&&(A[e]=t[e])}}return A},Ba=A=>{let e=0;for(let t=0,i=A.length;t<i;t++)e+=A[t].length;const t=new Uint8Array(e);for(let e=0,i=0,a=A.length;e<a;e++){let a=A[e];t.set(a,i),i+=a.length}return t};let ca=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(A){ca=!1}const Ca=new Uint8Array(256);for(let A=0;A<256;A++)Ca[A]=A>=252?6:A>=248?5:A>=240?4:A>=224?3:A>=192?2:1;Ca[254]=Ca[254]=1;var Ea=A=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(A);let e,t,i,a,r,n=A.length,s=0;for(a=0;a<n;a++)t=A.charCodeAt(a),55296==(64512&t)&&a+1<n&&(i=A.charCodeAt(a+1),56320==(64512&i)&&(t=65536+(t-55296<<10)+(i-56320),a++)),s+=t<128?1:t<2048?2:t<65536?3:4;for(e=new Uint8Array(s),r=0,a=0;r<s;a++)t=A.charCodeAt(a),55296==(64512&t)&&a+1<n&&(i=A.charCodeAt(a+1),56320==(64512&i)&&(t=65536+(t-55296<<10)+(i-56320),a++)),t<128?e[r++]=t:t<2048?(e[r++]=192|t>>>6,e[r++]=128|63&t):t<65536?(e[r++]=224|t>>>12,e[r++]=128|t>>>6&63,e[r++]=128|63&t):(e[r++]=240|t>>>18,e[r++]=128|t>>>12&63,e[r++]=128|t>>>6&63,e[r++]=128|63&t);return e},fa=(A,e)=>{const t=e||A.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(A.subarray(0,e));let i,a;const r=new Array(2*t);for(a=0,i=0;i<t;){let e=A[i++];if(e<128){r[a++]=e;continue}let n=Ca[e];if(n>4)r[a++]=65533,i+=n-1;else{for(e&=2===n?31:3===n?15:7;n>1&&i<t;)e=e<<6|63&A[i++],n--;n>1?r[a++]=65533:e<65536?r[a++]=e:(e-=65536,r[a++]=55296|e>>10&1023,r[a++]=56320|1023&e)}}return((A,e)=>{if(e<65534&&A.subarray&&ca)return String.fromCharCode.apply(null,A.length===e?A:A.subarray(0,e));let t="";for(let i=0;i<e;i++)t+=String.fromCharCode(A[i]);return t})(r,a)},Qa=(A,e)=>{(e=e||A.length)>A.length&&(e=A.length);let t=e-1;for(;t>=0&&128==(192&A[t]);)t--;return t<0||0===t?e:t+Ca[A[t]]>e?t:e};var da=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 ua=Object.prototype.toString,{Z_NO_FLUSH:wa,Z_SYNC_FLUSH:pa,Z_FULL_FLUSH:ma,Z_FINISH:ya,Z_OK:Da,Z_STREAM_END:ka,Z_DEFAULT_COMPRESSION:_a,Z_DEFAULT_STRATEGY:ba,Z_DEFLATED:Sa}=Bi;function xa(A){this.options=ha({level:_a,method:Sa,chunkSize:16384,windowBits:15,memLevel:8,strategy:ba},A||{});let e=this.options;e.raw&&e.windowBits>0?e.windowBits=-e.windowBits:e.gzip&&e.windowBits>0&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new da,this.strm.avail_out=0;let t=la.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(t!==Da)throw new Error(hi[t]);if(e.header&&la.deflateSetHeader(this.strm,e.header),e.dictionary){let A;if(A="string"==typeof e.dictionary?Ea(e.dictionary):"[object ArrayBuffer]"===ua.call(e.dictionary)?new Uint8Array(e.dictionary):e.dictionary,t=la.deflateSetDictionary(this.strm,A),t!==Da)throw new Error(hi[t]);this._dict_set=!0}}xa.prototype.push=function(A,e){const t=this.strm,i=this.options.chunkSize;let a,r;if(this.ended)return!1;for(r=e===~~e?e:!0===e?ya:wa,"string"==typeof A?t.input=Ea(A):"[object ArrayBuffer]"===ua.call(A)?t.input=new Uint8Array(A):t.input=A,t.next_in=0,t.avail_in=t.input.length;;)if(0===t.avail_out&&(t.output=new Uint8Array(i),t.next_out=0,t.avail_out=i),(r===pa||r===ma)&&t.avail_out<=6)this.onData(t.output.subarray(0,t.next_out)),t.avail_out=0;else{if(a=la.deflate(t,r),a===ka)return t.next_out>0&&this.onData(t.output.subarray(0,t.next_out)),a=la.deflateEnd(this.strm),this.onEnd(a),this.ended=!0,a===Da;if(0!==t.avail_out){if(r>0&&t.next_out>0)this.onData(t.output.subarray(0,t.next_out)),t.avail_out=0;else if(0===t.avail_in)break}else this.onData(t.output)}return!0},xa.prototype.onData=function(A){this.chunks.push(A)},xa.prototype.onEnd=function(A){A===Da&&(this.result=Ba(this.chunks)),this.chunks=[],this.err=A,this.msg=this.strm.msg};const Fa=16209;var Ga=function(A,e){let t,i,a,r,n,s,o,g,l,I,h,B,c,C,E,f,Q,d,u,w,p,m,y,D;const k=A.state;t=A.next_in,y=A.input,i=t+(A.avail_in-5),a=A.next_out,D=A.output,r=a-(e-A.avail_out),n=a+(A.avail_out-257),s=k.dmax,o=k.wsize,g=k.whave,l=k.wnext,I=k.window,h=k.hold,B=k.bits,c=k.lencode,C=k.distcode,E=(1<<k.lenbits)-1,f=(1<<k.distbits)-1;A:do{B<15&&(h+=y[t++]<<B,B+=8,h+=y[t++]<<B,B+=8),Q=c[h&E];e:for(;;){if(d=Q>>>24,h>>>=d,B-=d,d=Q>>>16&255,0===d)D[a++]=65535&Q;else{if(!(16&d)){if(64&d){if(32&d){k.mode=16191;break A}A.msg="invalid literal/length code",k.mode=Fa;break A}Q=c[(65535&Q)+(h&(1<<d)-1)];continue e}for(u=65535&Q,d&=15,d&&(B<d&&(h+=y[t++]<<B,B+=8),u+=h&(1<<d)-1,h>>>=d,B-=d),B<15&&(h+=y[t++]<<B,B+=8,h+=y[t++]<<B,B+=8),Q=C[h&f];;){if(d=Q>>>24,h>>>=d,B-=d,d=Q>>>16&255,16&d){if(w=65535&Q,d&=15,B<d&&(h+=y[t++]<<B,B+=8,B<d&&(h+=y[t++]<<B,B+=8)),w+=h&(1<<d)-1,w>s){A.msg="invalid distance too far back",k.mode=Fa;break A}if(h>>>=d,B-=d,d=a-r,w>d){if(d=w-d,d>g&&k.sane){A.msg="invalid distance too far back",k.mode=Fa;break A}if(p=0,m=I,0===l){if(p+=o-d,d<u){u-=d;do{D[a++]=I[p++]}while(--d);p=a-w,m=D}}else if(l<d){if(p+=o+l-d,d-=l,d<u){u-=d;do{D[a++]=I[p++]}while(--d);if(p=0,l<u){d=l,u-=d;do{D[a++]=I[p++]}while(--d);p=a-w,m=D}}}else if(p+=l-d,d<u){u-=d;do{D[a++]=I[p++]}while(--d);p=a-w,m=D}for(;u>2;)D[a++]=m[p++],D[a++]=m[p++],D[a++]=m[p++],u-=3;u&&(D[a++]=m[p++],u>1&&(D[a++]=m[p++]))}else{p=a-w;do{D[a++]=D[p++],D[a++]=D[p++],D[a++]=D[p++],u-=3}while(u>2);u&&(D[a++]=D[p++],u>1&&(D[a++]=D[p++]))}break}if(64&d){A.msg="invalid distance code",k.mode=Fa;break A}Q=C[(65535&Q)+(h&(1<<d)-1)]}}break}}while(t<i&&a<n);u=B>>3,t-=u,B-=u<<3,h&=(1<<B)-1,A.next_in=t,A.next_out=a,A.avail_in=t<i?i-t+5:5-(t-i),A.avail_out=a<n?n-a+257:257-(a-n),k.hold=h,k.bits=B};const Ua=15,Ra=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]),Ma=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]),La=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]),Na=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 va=(A,e,t,i,a,r,n,s)=>{const o=s.bits;let g,l,I,h,B,c,C=0,E=0,f=0,Q=0,d=0,u=0,w=0,p=0,m=0,y=0,D=null;const k=new Uint16Array(16),_=new Uint16Array(16);let b,S,x,F=null;for(C=0;C<=Ua;C++)k[C]=0;for(E=0;E<i;E++)k[e[t+E]]++;for(d=o,Q=Ua;Q>=1&&0===k[Q];Q--);if(d>Q&&(d=Q),0===Q)return a[r++]=20971520,a[r++]=20971520,s.bits=1,0;for(f=1;f<Q&&0===k[f];f++);for(d<f&&(d=f),p=1,C=1;C<=Ua;C++)if(p<<=1,p-=k[C],p<0)return-1;if(p>0&&(0===A||1!==Q))return-1;for(_[1]=0,C=1;C<Ua;C++)_[C+1]=_[C]+k[C];for(E=0;E<i;E++)0!==e[t+E]&&(n[_[e[t+E]]++]=E);if(0===A?(D=F=n,c=20):1===A?(D=Ra,F=Ma,c=257):(D=La,F=Na,c=0),y=0,E=0,C=f,B=r,u=d,w=0,I=-1,m=1<<d,h=m-1,1===A&&m>852||2===A&&m>592)return 1;for(;;){b=C-w,n[E]+1<c?(S=0,x=n[E]):n[E]>=c?(S=F[n[E]-c],x=D[n[E]-c]):(S=96,x=0),g=1<<C-w,l=1<<u,f=l;do{l-=g,a[B+(y>>w)+l]=b<<24|S<<16|x}while(0!==l);for(g=1<<C-1;y&g;)g>>=1;if(0!==g?(y&=g-1,y+=g):y=0,E++,0==--k[C]){if(C===Q)break;C=e[t+n[E]]}if(C>d&&(y&h)!==I){for(0===w&&(w=d),B+=f,u=C-w,p=1<<u;u+w<Q&&(p-=k[u+w],!(p<=0));)u++,p<<=1;if(m+=1<<u,1===A&&m>852||2===A&&m>592)return 1;I=y&h,a[I]=d<<24|u<<16|B-r}}return 0!==y&&(a[B+y]=C-w<<24|64<<16),s.bits=d,0};const{Z_FINISH:Ta,Z_BLOCK:qa,Z_TREES:Ja,Z_OK:Oa,Z_STREAM_END:Ha,Z_NEED_DICT:Ya,Z_STREAM_ERROR:za,Z_DATA_ERROR:Ka,Z_MEM_ERROR:Pa,Z_BUF_ERROR:Va,Z_DEFLATED:Za}=Bi,Xa=16180,Wa=16190,ja=16191,$a=16192,Ar=16194,er=16199,tr=16200,ir=16206,ar=16209,rr=A=>(A>>>24&255)+(A>>>8&65280)+((65280&A)<<8)+((255&A)<<24);function nr(){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 sr=A=>{if(!A)return 1;const e=A.state;return!e||e.strm!==A||e.mode<Xa||e.mode>16211?1:0},or=A=>{if(sr(A))return za;const e=A.state;return A.total_in=A.total_out=e.total=0,A.msg="",e.wrap&&(A.adler=1&e.wrap),e.mode=Xa,e.last=0,e.havedict=0,e.flags=-1,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new Int32Array(852),e.distcode=e.distdyn=new Int32Array(592),e.sane=1,e.back=-1,Oa},gr=A=>{if(sr(A))return za;const e=A.state;return e.wsize=0,e.whave=0,e.wnext=0,or(A)},lr=(A,e)=>{let t;if(sr(A))return za;const i=A.state;return e<0?(t=0,e=-e):(t=5+(e>>4),e<48&&(e&=15)),e&&(e<8||e>15)?za:(null!==i.window&&i.wbits!==e&&(i.window=null),i.wrap=t,i.wbits=e,gr(A))},Ir=(A,e)=>{if(!A)return za;const t=new nr;A.state=t,t.strm=A,t.window=null,t.mode=Xa;const i=lr(A,e);return i!==Oa&&(A.state=null),i};let hr,Br,cr=!0;const Cr=A=>{if(cr){hr=new Int32Array(512),Br=new Int32Array(32);let e=0;for(;e<144;)A.lens[e++]=8;for(;e<256;)A.lens[e++]=9;for(;e<280;)A.lens[e++]=7;for(;e<288;)A.lens[e++]=8;for(va(1,A.lens,0,288,hr,0,A.work,{bits:9}),e=0;e<32;)A.lens[e++]=5;va(2,A.lens,0,32,Br,0,A.work,{bits:5}),cr=!1}A.lencode=hr,A.lenbits=9,A.distcode=Br,A.distbits=5},Er=(A,e,t,i)=>{let a;const r=A.state;return null===r.window&&(r.wsize=1<<r.wbits,r.wnext=0,r.whave=0,r.window=new Uint8Array(r.wsize)),i>=r.wsize?(r.window.set(e.subarray(t-r.wsize,t),0),r.wnext=0,r.whave=r.wsize):(a=r.wsize-r.wnext,a>i&&(a=i),r.window.set(e.subarray(t-i,t-i+a),r.wnext),(i-=a)?(r.window.set(e.subarray(t-i,t),0),r.wnext=i,r.whave=r.wsize):(r.wnext+=a,r.wnext===r.wsize&&(r.wnext=0),r.whave<r.wsize&&(r.whave+=a))),0};var fr={inflateReset:gr,inflateReset2:lr,inflateResetKeep:or,inflateInit:A=>Ir(A,15),inflateInit2:Ir,inflate:(A,e)=>{let t,i,a,r,n,s,o,g,l,I,h,B,c,C,E,f,Q,d,u,w,p,m,y=0;const D=new Uint8Array(4);let k,_;const b=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(sr(A)||!A.output||!A.input&&0!==A.avail_in)return za;t=A.state,t.mode===ja&&(t.mode=$a),n=A.next_out,a=A.output,o=A.avail_out,r=A.next_in,i=A.input,s=A.avail_in,g=t.hold,l=t.bits,I=s,h=o,m=Oa;A:for(;;)switch(t.mode){case Xa:if(0===t.wrap){t.mode=$a;break}for(;l<16;){if(0===s)break A;s--,g+=i[r++]<<l,l+=8}if(2&t.wrap&&35615===g){0===t.wbits&&(t.wbits=15),t.check=0,D[0]=255&g,D[1]=g>>>8&255,t.check=Ii(t.check,D,2,0),g=0,l=0,t.mode=16181;break}if(t.head&&(t.head.done=!1),!(1&t.wrap)||(((255&g)<<8)+(g>>8))%31){A.msg="incorrect header check",t.mode=ar;break}if((15&g)!==Za){A.msg="unknown compression method",t.mode=ar;break}if(g>>>=4,l-=4,p=8+(15&g),0===t.wbits&&(t.wbits=p),p>15||p>t.wbits){A.msg="invalid window size",t.mode=ar;break}t.dmax=1<<t.wbits,t.flags=0,A.adler=t.check=1,t.mode=512&g?16189:ja,g=0,l=0;break;case 16181:for(;l<16;){if(0===s)break A;s--,g+=i[r++]<<l,l+=8}if(t.flags=g,(255&t.flags)!==Za){A.msg="unknown compression method",t.mode=ar;break}if(57344&t.flags){A.msg="unknown header flags set",t.mode=ar;break}t.head&&(t.head.text=g>>8&1),512&t.flags&&4&t.wrap&&(D[0]=255&g,D[1]=g>>>8&255,t.check=Ii(t.check,D,2,0)),g=0,l=0,t.mode=16182;case 16182:for(;l<32;){if(0===s)break A;s--,g+=i[r++]<<l,l+=8}t.head&&(t.head.time=g),512&t.flags&&4&t.wrap&&(D[0]=255&g,D[1]=g>>>8&255,D[2]=g>>>16&255,D[3]=g>>>24&255,t.check=Ii(t.check,D,4,0)),g=0,l=0,t.mode=16183;case 16183:for(;l<16;){if(0===s)break A;s--,g+=i[r++]<<l,l+=8}t.head&&(t.head.xflags=255&g,t.head.os=g>>8),512&t.flags&&4&t.wrap&&(D[0]=255&g,D[1]=g>>>8&255,t.check=Ii(t.check,D,2,0)),g=0,l=0,t.mode=16184;case 16184:if(1024&t.flags){for(;l<16;){if(0===s)break A;s--,g+=i[r++]<<l,l+=8}t.length=g,t.head&&(t.head.extra_len=g),512&t.flags&&4&t.wrap&&(D[0]=255&g,D[1]=g>>>8&255,t.check=Ii(t.check,D,2,0)),g=0,l=0}else t.head&&(t.head.extra=null);t.mode=16185;case 16185:if(1024&t.flags&&(B=t.length,B>s&&(B=s),B&&(t.head&&(p=t.head.extra_len-t.length,t.head.extra||(t.head.extra=new Uint8Array(t.head.extra_len)),t.head.extra.set(i.subarray(r,r+B),p)),512&t.flags&&4&t.wrap&&(t.check=Ii(t.check,i,B,r)),s-=B,r+=B,t.length-=B),t.length))break A;t.length=0,t.mode=16186;case 16186:if(2048&t.flags){if(0===s)break A;B=0;do{p=i[r+B++],t.head&&p&&t.length<65536&&(t.head.name+=String.fromCharCode(p))}while(p&&B<s);if(512&t.flags&&4&t.wrap&&(t.check=Ii(t.check,i,B,r)),s-=B,r+=B,p)break A}else t.head&&(t.head.name=null);t.length=0,t.mode=16187;case 16187:if(4096&t.flags){if(0===s)break A;B=0;do{p=i[r+B++],t.head&&p&&t.length<65536&&(t.head.comment+=String.fromCharCode(p))}while(p&&B<s);if(512&t.flags&&4&t.wrap&&(t.check=Ii(t.check,i,B,r)),s-=B,r+=B,p)break A}else t.head&&(t.head.comment=null);t.mode=16188;case 16188:if(512&t.flags){for(;l<16;){if(0===s)break A;s--,g+=i[r++]<<l,l+=8}if(4&t.wrap&&g!==(65535&t.check)){A.msg="header crc mismatch",t.mode=ar;break}g=0,l=0}t.head&&(t.head.hcrc=t.flags>>9&1,t.head.done=!0),A.adler=t.check=0,t.mode=ja;break;case 16189:for(;l<32;){if(0===s)break A;s--,g+=i[r++]<<l,l+=8}A.adler=t.check=rr(g),g=0,l=0,t.mode=Wa;case Wa:if(0===t.havedict)return A.next_out=n,A.avail_out=o,A.next_in=r,A.avail_in=s,t.hold=g,t.bits=l,Ya;A.adler=t.check=1,t.mode=ja;case ja:if(e===qa||e===Ja)break A;case $a:if(t.last){g>>>=7&l,l-=7&l,t.mode=ir;break}for(;l<3;){if(0===s)break A;s--,g+=i[r++]<<l,l+=8}switch(t.last=1&g,g>>>=1,l-=1,3&g){case 0:t.mode=16193;break;case 1:if(Cr(t),t.mode=er,e===Ja){g>>>=2,l-=2;break A}break;case 2:t.mode=16196;break;case 3:A.msg="invalid block type",t.mode=ar}g>>>=2,l-=2;break;case 16193:for(g>>>=7&l,l-=7&l;l<32;){if(0===s)break A;s--,g+=i[r++]<<l,l+=8}if((65535&g)!=(g>>>16^65535)){A.msg="invalid stored block lengths",t.mode=ar;break}if(t.length=65535&g,g=0,l=0,t.mode=Ar,e===Ja)break A;case Ar:t.mode=16195;case 16195:if(B=t.length,B){if(B>s&&(B=s),B>o&&(B=o),0===B)break A;a.set(i.subarray(r,r+B),n),s-=B,r+=B,o-=B,n+=B,t.length-=B;break}t.mode=ja;break;case 16196:for(;l<14;){if(0===s)break A;s--,g+=i[r++]<<l,l+=8}if(t.nlen=257+(31&g),g>>>=5,l-=5,t.ndist=1+(31&g),g>>>=5,l-=5,t.ncode=4+(15&g),g>>>=4,l-=4,t.nlen>286||t.ndist>30){A.msg="too many length or distance symbols",t.mode=ar;break}t.have=0,t.mode=16197;case 16197:for(;t.have<t.ncode;){for(;l<3;){if(0===s)break A;s--,g+=i[r++]<<l,l+=8}t.lens[b[t.have++]]=7&g,g>>>=3,l-=3}for(;t.have<19;)t.lens[b[t.have++]]=0;if(t.lencode=t.lendyn,t.lenbits=7,k={bits:t.lenbits},m=va(0,t.lens,0,19,t.lencode,0,t.work,k),t.lenbits=k.bits,m){A.msg="invalid code lengths set",t.mode=ar;break}t.have=0,t.mode=16198;case 16198:for(;t.have<t.nlen+t.ndist;){for(;y=t.lencode[g&(1<<t.lenbits)-1],E=y>>>24,f=y>>>16&255,Q=65535&y,!(E<=l);){if(0===s)break A;s--,g+=i[r++]<<l,l+=8}if(Q<16)g>>>=E,l-=E,t.lens[t.have++]=Q;else{if(16===Q){for(_=E+2;l<_;){if(0===s)break A;s--,g+=i[r++]<<l,l+=8}if(g>>>=E,l-=E,0===t.have){A.msg="invalid bit length repeat",t.mode=ar;break}p=t.lens[t.have-1],B=3+(3&g),g>>>=2,l-=2}else if(17===Q){for(_=E+3;l<_;){if(0===s)break A;s--,g+=i[r++]<<l,l+=8}g>>>=E,l-=E,p=0,B=3+(7&g),g>>>=3,l-=3}else{for(_=E+7;l<_;){if(0===s)break A;s--,g+=i[r++]<<l,l+=8}g>>>=E,l-=E,p=0,B=11+(127&g),g>>>=7,l-=7}if(t.have+B>t.nlen+t.ndist){A.msg="invalid bit length repeat",t.mode=ar;break}for(;B--;)t.lens[t.have++]=p}}if(t.mode===ar)break;if(0===t.lens[256]){A.msg="invalid code -- missing end-of-block",t.mode=ar;break}if(t.lenbits=9,k={bits:t.lenbits},m=va(1,t.lens,0,t.nlen,t.lencode,0,t.work,k),t.lenbits=k.bits,m){A.msg="invalid literal/lengths set",t.mode=ar;break}if(t.distbits=6,t.distcode=t.distdyn,k={bits:t.distbits},m=va(2,t.lens,t.nlen,t.ndist,t.distcode,0,t.work,k),t.distbits=k.bits,m){A.msg="invalid distances set",t.mode=ar;break}if(t.mode=er,e===Ja)break A;case er:t.mode=tr;case tr:if(s>=6&&o>=258){A.next_out=n,A.avail_out=o,A.next_in=r,A.avail_in=s,t.hold=g,t.bits=l,Ga(A,h),n=A.next_out,a=A.output,o=A.avail_out,r=A.next_in,i=A.input,s=A.avail_in,g=t.hold,l=t.bits,t.mode===ja&&(t.back=-1);break}for(t.back=0;y=t.lencode[g&(1<<t.lenbits)-1],E=y>>>24,f=y>>>16&255,Q=65535&y,!(E<=l);){if(0===s)break A;s--,g+=i[r++]<<l,l+=8}if(f&&!(240&f)){for(d=E,u=f,w=Q;y=t.lencode[w+((g&(1<<d+u)-1)>>d)],E=y>>>24,f=y>>>16&255,Q=65535&y,!(d+E<=l);){if(0===s)break A;s--,g+=i[r++]<<l,l+=8}g>>>=d,l-=d,t.back+=d}if(g>>>=E,l-=E,t.back+=E,t.length=Q,0===f){t.mode=16205;break}if(32&f){t.back=-1,t.mode=ja;break}if(64&f){A.msg="invalid literal/length code",t.mode=ar;break}t.extra=15&f,t.mode=16201;case 16201:if(t.extra){for(_=t.extra;l<_;){if(0===s)break A;s--,g+=i[r++]<<l,l+=8}t.length+=g&(1<<t.extra)-1,g>>>=t.extra,l-=t.extra,t.back+=t.extra}t.was=t.length,t.mode=16202;case 16202:for(;y=t.distcode[g&(1<<t.distbits)-1],E=y>>>24,f=y>>>16&255,Q=65535&y,!(E<=l);){if(0===s)break A;s--,g+=i[r++]<<l,l+=8}if(!(240&f)){for(d=E,u=f,w=Q;y=t.distcode[w+((g&(1<<d+u)-1)>>d)],E=y>>>24,f=y>>>16&255,Q=65535&y,!(d+E<=l);){if(0===s)break A;s--,g+=i[r++]<<l,l+=8}g>>>=d,l-=d,t.back+=d}if(g>>>=E,l-=E,t.back+=E,64&f){A.msg="invalid distance code",t.mode=ar;break}t.offset=Q,t.extra=15&f,t.mode=16203;case 16203:if(t.extra){for(_=t.extra;l<_;){if(0===s)break A;s--,g+=i[r++]<<l,l+=8}t.offset+=g&(1<<t.extra)-1,g>>>=t.extra,l-=t.extra,t.back+=t.extra}if(t.offset>t.dmax){A.msg="invalid distance too far back",t.mode=ar;break}t.mode=16204;case 16204:if(0===o)break A;if(B=h-o,t.offset>B){if(B=t.offset-B,B>t.whave&&t.sane){A.msg="invalid distance too far back",t.mode=ar;break}B>t.wnext?(B-=t.wnext,c=t.wsize-B):c=t.wnext-B,B>t.length&&(B=t.length),C=t.window}else C=a,c=n-t.offset,B=t.length;B>o&&(B=o),o-=B,t.length-=B;do{a[n++]=C[c++]}while(--B);0===t.length&&(t.mode=tr);break;case 16205:if(0===o)break A;a[n++]=t.length,o--,t.mode=tr;break;case ir:if(t.wrap){for(;l<32;){if(0===s)break A;s--,g|=i[r++]<<l,l+=8}if(h-=o,A.total_out+=h,t.total+=h,4&t.wrap&&h&&(A.adler=t.check=t.flags?Ii(t.check,a,h,n-h):gi(t.check,a,h,n-h)),h=o,4&t.wrap&&(t.flags?g:rr(g))!==t.check){A.msg="incorrect data check",t.mode=ar;break}g=0,l=0}t.mode=16207;case 16207:if(t.wrap&&t.flags){for(;l<32;){if(0===s)break A;s--,g+=i[r++]<<l,l+=8}if(4&t.wrap&&g!==(4294967295&t.total)){A.msg="incorrect length check",t.mode=ar;break}g=0,l=0}t.mode=16208;case 16208:m=Ha;break A;case ar:m=Ka;break A;case 16210:return Pa;default:return za}return A.next_out=n,A.avail_out=o,A.next_in=r,A.avail_in=s,t.hold=g,t.bits=l,(t.wsize||h!==A.avail_out&&t.mode<ar&&(t.mode<ir||e!==Ta))&&Er(A,A.output,A.next_out,h-A.avail_out),I-=A.avail_in,h-=A.avail_out,A.total_in+=I,A.total_out+=h,t.total+=h,4&t.wrap&&h&&(A.adler=t.check=t.flags?Ii(t.check,a,h,A.next_out-h):gi(t.check,a,h,A.next_out-h)),A.data_type=t.bits+(t.last?64:0)+(t.mode===ja?128:0)+(t.mode===er||t.mode===Ar?256:0),(0===I&&0===h||e===Ta)&&m===Oa&&(m=Va),m},inflateEnd:A=>{if(sr(A))return za;let e=A.state;return e.window&&(e.window=null),A.state=null,Oa},inflateGetHeader:(A,e)=>{if(sr(A))return za;const t=A.state;return 2&t.wrap?(t.head=e,e.done=!1,Oa):za},inflateSetDictionary:(A,e)=>{const t=e.length;let i,a,r;return sr(A)?za:(i=A.state,0!==i.wrap&&i.mode!==Wa?za:i.mode===Wa&&(a=1,a=gi(a,e,t,0),a!==i.check)?Ka:(r=Er(A,e,t,t),r?(i.mode=16210,Pa):(i.havedict=1,Oa)))},inflateInfo:"pako inflate (from Nodeca project)"};var Qr=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 dr=Object.prototype.toString,{Z_NO_FLUSH:ur,Z_FINISH:wr,Z_OK:pr,Z_STREAM_END:mr,Z_NEED_DICT:yr,Z_STREAM_ERROR:Dr,Z_DATA_ERROR:kr,Z_MEM_ERROR:_r}=Bi;function br(A){this.options=ha({chunkSize:65536,windowBits:15,to:""},A||{});const e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,0===e.windowBits&&(e.windowBits=-15)),!(e.windowBits>=0&&e.windowBits<16)||A&&A.windowBits||(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&(15&e.windowBits||(e.windowBits|=15)),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new da,this.strm.avail_out=0;let t=fr.inflateInit2(this.strm,e.windowBits);if(t!==pr)throw new Error(hi[t]);if(this.header=new Qr,fr.inflateGetHeader(this.strm,this.header),e.dictionary&&("string"==typeof e.dictionary?e.dictionary=Ea(e.dictionary):"[object ArrayBuffer]"===dr.call(e.dictionary)&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(t=fr.inflateSetDictionary(this.strm,e.dictionary),t!==pr)))throw new Error(hi[t])}function Sr(A,e){const t=new br(e);if(t.push(A),t.err)throw t.msg||hi[t.err];return t.result}br.prototype.push=function(A,e){const t=this.strm,i=this.options.chunkSize,a=this.options.dictionary;let r,n,s;if(this.ended)return!1;for(n=e===~~e?e:!0===e?wr:ur,"[object ArrayBuffer]"===dr.call(A)?t.input=new Uint8Array(A):t.input=A,t.next_in=0,t.avail_in=t.input.length;;){for(0===t.avail_out&&(t.output=new Uint8Array(i),t.next_out=0,t.avail_out=i),r=fr.inflate(t,n),r===yr&&a&&(r=fr.inflateSetDictionary(t,a),r===pr?r=fr.inflate(t,n):r===kr&&(r=yr));t.avail_in>0&&r===mr&&t.state.wrap>0&&0!==A[t.next_in];)fr.inflateReset(t),r=fr.inflate(t,n);switch(r){case Dr:case kr:case yr:case _r:return this.onEnd(r),this.ended=!0,!1}if(s=t.avail_out,t.next_out&&(0===t.avail_out||r===mr))if("string"===this.options.to){let A=Qa(t.output,t.next_out),e=t.next_out-A,a=fa(t.output,A);t.next_out=e,t.avail_out=i-e,e&&t.output.set(t.output.subarray(A,A+e),0),this.onData(a)}else this.onData(t.output.length===t.next_out?t.output:t.output.subarray(0,t.next_out));if(r!==pr||0!==s){if(r===mr)return r=fr.inflateEnd(this.strm),this.onEnd(r),this.ended=!0,!0;if(0===t.avail_in)break}}return!0},br.prototype.onData=function(A){this.chunks.push(A)},br.prototype.onEnd=function(A){A===pr&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=Ba(this.chunks)),this.chunks=[],this.err=A,this.msg=this.strm.msg};var xr={Inflate:br,inflate:Sr,inflateRaw:function(A,e){return(e=e||{}).raw=!0,Sr(A,e)},ungzip:Sr,constants:Bi};const{Inflate:Fr,inflate:Gr,inflateRaw:Ur,ungzip:Rr}=xr;var Mr=Gr;var Lr=Object.freeze({__proto__:null,default:class extends Fe{decodeBlock(A){return Mr(new Uint8Array(A)).buffer}}});var Nr,vr=Object.freeze({__proto__:null,default:class extends Fe{decodeBlock(A){const e=new DataView(A),t=[];for(let i=0;i<A.byteLength;++i){let A=e.getInt8(i);if(A<0){const a=e.getUint8(i+1);A=-A;for(let e=0;e<=A;++e)t.push(a);i+=1}else{for(let a=0;a<=A;++a)t.push(e.getUint8(i+a+1));i+=A+1}}return new Uint8Array(t).buffer}}}),Tr={exports:{}};Nr=Tr,
|
|
1
|
+
"use strict";var A=require("@deck.gl/core"),g=require("@deck.gl/geo-layers"),I=require("@deck.gl/layers"),e=require("@deck.gl/extensions"),t=require("@math.gl/web-mercator"),B=require("chroma-js"),i=require("@loaders.gl/schema"),C=require("@loaders.gl/loader-utils"),Q=require("@deck.gl/mesh-layers");function E(A){return(g,...I)=>a(A,g,I)}function s(A,g){return E(h(A,g).get)}const{apply:a,construct:o,defineProperty:r,get:n,getOwnPropertyDescriptor:h,getPrototypeOf:l,has:c,ownKeys:w,set:D,setPrototypeOf:d}=Reflect,{iterator:y,species:f,toStringTag:u,for:S}=Symbol,G=Object,{create:N,defineProperty:F,freeze:k,is:R}=G,L=Array.prototype[y],U=E(L),m=ArrayBuffer;s(m.prototype,"byteLength");const p="undefined"!=typeof SharedArrayBuffer?SharedArrayBuffer:null;p&&s(p.prototype,"byteLength");const Y=l(Uint8Array);Y.from;const M=Y.prototype;M[y],E(M.keys),E(M.values),E(M.entries),E(M.set),E(M.reverse),E(M.fill),E(M.copyWithin),E(M.sort),E(M.slice),E(M.subarray),s(M,"buffer"),s(M,"byteOffset"),s(M,"length"),s(M,u);const K=Uint8Array,b=Uint16Array,J=Uint32Array,H=Float32Array,q=l([][y]()),x=E(q.next),_=E(function*(){}().next),T=l(q),O=E(DataView.prototype.getUint16),v=WeakMap,P=v.prototype,Z=E(P.get),V=E(P.set),z=new v,j=N(null,{next:{value:function(){const A=Z(z,this);return x(A)}},[y]:{value:function(){return this}}});const W=new v,X=N(T,{next:{value:function(){const A=Z(W,this);return _(A)},writable:!0,configurable:!0}});for(const A of w(q))"next"!==A&&F(X,A,h(q,A));const $=new m(4),AA=new H($),gA=new J($),IA=new b(512),eA=new K(512);for(let A=0;A<256;++A){const g=A-127;g<-24?(IA[A]=0,IA[256|A]=32768,eA[A]=24,eA[256|A]=24):g<-14?(IA[A]=1024>>-g-14,IA[256|A]=1024>>-g-14|32768,eA[A]=-g-1,eA[256|A]=-g-1):g<=15?(IA[A]=g+15<<10,IA[256|A]=g+15<<10|32768,eA[A]=13,eA[256|A]=13):g<128?(IA[A]=31744,IA[256|A]=64512,eA[A]=24,eA[256|A]=24):(IA[A]=31744,IA[256|A]=64512,eA[A]=13,eA[256|A]=13)}const tA=new J(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,tA[A]=g|I}for(let A=1024;A<2048;++A)tA[A]=939524096+(A-1024<<13);const BA=new J(64);for(let A=1;A<31;++A)BA[A]=A<<23;BA[31]=1199570944,BA[32]=2147483648;for(let A=33;A<63;++A)BA[A]=2147483648+(A-32<<23);BA[63]=3347054592;const iA=new b(64);for(let A=1;A<64;++A)32!==A&&(iA[A]=1024);function CA(A,g,...I){return function(A){const g=A>>10;return gA[0]=tA[iA[g]+(1023&A)]+BA[g],AA[0]}(O(A,g,...function(A){if(A[y]===L&&q.next===x)return A;const g=N(j);return V(z,g,U(A)),g}(I)))}function QA(A,g,I){const e=I&&I.debug||!1;e&&console.log("[xml-utils] getting "+g+" in "+A);const t="object"==typeof A?A.outer:A,B=t.slice(0,t.indexOf(">")+1),i=['"',"'"];for(let A=0;A<i.length;A++){const I=i[A],t=g+"\\="+I+"([^"+I+"]*)"+I;e&&console.log("[xml-utils] pattern:",t);const C=new RegExp(t).exec(B);if(e&&console.log("[xml-utils] match:",C),C)return C[1]}}function EA(A,g,I){const e=new RegExp(g).exec(A.slice(I));return e?I+e.index+e[0].length-1:-1}function sA(A,g){const I=new RegExp(g,"g"),e=A.match(I);return e?e.length:0}function aA(A,g,I){const e=I&&I.debug||!1,t=!(I&&!1===typeof I.nested),B=I&&I.startIndex||0;e&&console.log("[xml-utils] starting findTagByName with",g," and ",I);const i=function(A,g,I){const e=new RegExp(g).exec(A.slice(I));return e?I+e.index:-1}(A,`<${g}[ \n>/]`,B);if(e&&console.log("[xml-utils] start:",i),-1===i)return;const C=A.slice(i+g.length);let Q=EA(C,"^[^<]*[ /]>",0);const E=-1!==Q&&"/"===C[Q-1];if(e&&console.log("[xml-utils] selfClosing:",E),!1===E)if(t){let A=0,I=1,e=0;for(;-1!==(Q=EA(C,"[ /]"+g+">",A));){const t=C.substring(A,Q+1);if(I+=sA(t,"<"+g+"[ \n\t>]"),e+=sA(t,"</"+g+">"),e>=I)break;A=Q}}else Q=EA(C,"[ /]"+g+">",0);const s=i+g.length+Q+1;if(e&&console.log("[xml-utils] end:",s),-1===s)return;const a=A.slice(i,s);let o;return o=E?null:a.slice(a.indexOf(">")+1,a.lastIndexOf("<")),{inner:o,outer:a,start:i,end:s}}const oA=Object.freeze({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}),rA=Object.freeze({[oA.BYTE]:1,[oA.ASCII]:1,[oA.SBYTE]:1,[oA.UNDEFINED]:1,[oA.SHORT]:2,[oA.SSHORT]:2,[oA.LONG]:4,[oA.SLONG]:4,[oA.FLOAT]:4,[oA.IFD]:4,[oA.RATIONAL]:8,[oA.SRATIONAL]:8,[oA.DOUBLE]:8,[oA.LONG8]:8,[oA.SLONG8]:8,[oA.IFD8]:8});function nA(A){const g=rA[A];if(void 0===g)throw new RangeError(`Invalid field type: ${A}`);return g}const hA=[{tag:254,name:"NewSubfileType",fieldTypes:oA.LONG},{tag:255,name:"SubfileType",type:oA.SHORT},{tag:256,name:"ImageWidth",type:oA.SHORT},{tag:257,name:"ImageLength",type:oA.SHORT},{tag:258,name:"BitsPerSample",type:oA.SHORT,isArray:!0,eager:!0},{tag:259,name:"Compression",type:oA.SHORT},{tag:262,name:"PhotometricInterpretation",type:oA.SHORT},{tag:263,name:"Threshholding",type:oA.SHORT},{tag:264,name:"CellWidth",type:oA.SHORT},{tag:265,name:"CellLength",type:oA.SHORT},{tag:266,name:"FillOrder",type:oA.SHORT},{tag:269,name:"DocumentName",type:oA.ASCII},{tag:270,name:"ImageDescription",type:oA.ASCII},{tag:271,name:"Make",type:oA.ASCII},{tag:272,name:"Model",type:oA.ASCII},{tag:273,name:"StripOffsets",type:oA.SHORT,isArray:!0},{tag:274,name:"Orientation",type:oA.SHORT},{tag:277,name:"SamplesPerPixel",type:oA.SHORT},{tag:278,name:"RowsPerStrip",type:oA.SHORT},{tag:279,name:"StripByteCounts",type:oA.LONG,isArray:!0},{tag:280,name:"MinSampleValue",type:oA.SHORT,isArray:!0},{tag:281,name:"MaxSampleValue",type:oA.SHORT,isArray:!0},{tag:282,name:"XResolution",type:oA.RATIONAL},{tag:283,name:"YResolution",type:oA.RATIONAL},{tag:284,name:"PlanarConfiguration",fieldTypes:oA.SHORT},{tag:285,name:"PageName",type:oA.ASCII},{tag:286,name:"XPosition",type:oA.RATIONAL},{tag:287,name:"YPosition",type:oA.RATIONAL},{tag:288,name:"FreeOffsets",type:oA.LONG},{tag:289,name:"FreeByteCounts",type:oA.LONG},{tag:290,name:"GrayResponseUnit",type:oA.SHORT},{tag:291,name:"GrayResponseCurve",type:oA.SHORT,isArray:!0},{tag:292,name:"T4Options",type:oA.LONG},{tag:293,name:"T6Options",type:oA.LONG},{tag:296,name:"ResolutionUnit",type:oA.SHORT},{tag:297,name:"PageNumber",type:oA.SHORT,isArray:!0},{tag:301,name:"TransferFunction",type:oA.SHORT,isArray:!0},{tag:305,name:"Software",type:oA.ASCII},{tag:306,name:"DateTime",type:oA.ASCII},{tag:315,name:"Artist",type:oA.ASCII},{tag:316,name:"HostComputer",type:oA.ASCII},{tag:317,name:"Predictor",type:oA.SHORT},{tag:318,name:"WhitePoint",type:oA.RATIONAL,isArray:!0},{tag:319,name:"PrimaryChromaticities",type:oA.RATIONAL,isArray:!0},{tag:320,name:"ColorMap",type:oA.SHORT,isArray:!0},{tag:321,name:"HalftoneHints",type:oA.SHORT,isArray:!0},{tag:322,name:"TileWidth",type:oA.SHORT},{tag:323,name:"TileLength",type:oA.SHORT},{tag:324,name:"TileOffsets",type:oA.LONG,isArray:!0},{tag:325,name:"TileByteCounts",type:oA.SHORT,isArray:!0},{tag:332,name:"InkSet",type:oA.SHORT},{tag:333,name:"InkNames",type:oA.ASCII},{tag:334,name:"NumberOfInks",type:oA.SHORT},{tag:336,name:"DotRange",type:oA.BYTE,isArray:!0},{tag:337,name:"TargetPrinter",type:oA.ASCII},{tag:338,name:"ExtraSamples",type:oA.BYTE,isArray:!0},{tag:339,name:"SampleFormat",type:oA.SHORT,isArray:!0,eager:!0},{tag:340,name:"SMinSampleValue",isArray:!0},{tag:341,name:"SMaxSampleValue",isArray:!0},{tag:342,name:"TransferRange",type:oA.SHORT,isArray:!0},{tag:512,name:"JPEGProc",type:oA.SHORT},{tag:513,name:"JPEGInterchangeFormat",type:oA.LONG},{tag:514,name:"JPEGInterchangeFormatLngth",type:oA.LONG},{tag:515,name:"JPEGRestartInterval",type:oA.SHORT},{tag:517,name:"JPEGLosslessPredictors",type:oA.SHORT,isArray:!0},{tag:518,name:"JPEGPointTransforms",type:oA.SHORT,isArray:!0},{tag:519,name:"JPEGQTables",type:oA.LONG,isArray:!0},{tag:520,name:"JPEGDCTables",type:oA.LONG,isArray:!0},{tag:521,name:"JPEGACTables",type:oA.LONG,isArray:!0},{tag:529,name:"YCbCrCoefficients",type:oA.RATIONAL,isArray:!0},{tag:530,name:"YCbCrSubSampling",type:oA.SHORT,isArray:!0},{tag:531,name:"YCbCrPositioning",type:oA.SHORT},{tag:532,name:"ReferenceBlackWhite",type:oA.LONG,isArray:!0},{tag:33432,name:"Copyright",type:oA.ASCII},{tag:326,name:"BadFaxLines"},{tag:327,name:"CleanFaxData"},{tag:343,name:"ClipPath"},{tag:328,name:"ConsecutiveBadFaxLines"},{tag:433,name:"Decode"},{tag:434,name:"DefaultImageColor"},{tag:346,name:"Indexed"},{tag:347,name:"JPEGTables",isArray:!0,eager:!0},{tag:559,name:"StripRowCounts",isArray:!0},{tag:330,name:"SubIFDs",isArray:!0},{tag:344,name:"XClipPathUnits"},{tag:345,name:"YClipPathUnits"},{tag:37378,name:"ApertureValue"},{tag:40961,name:"ColorSpace"},{tag:36868,name:"DateTimeDigitized"},{tag:36867,name:"DateTimeOriginal"},{tag:34665,name:"Exif IFD",type:oA.LONG},{tag:36864,name:"ExifVersion"},{tag:33434,name:"ExposureTime"},{tag:41728,name:"FileSource"},{tag:37385,name:"Flash"},{tag:40960,name:"FlashpixVersion"},{tag:33437,name:"FNumber"},{tag:42016,name:"ImageUniqueID"},{tag:37384,name:"LightSource"},{tag:37500,name:"MakerNote"},{tag:37377,name:"ShutterSpeedValue"},{tag:37510,name:"UserComment"},{tag:33723,name:"IPTC"},{tag:34412,name:"CZ_LSMINFO"},{tag:34675,name:"ICC Profile"},{tag:700,name:"XMP"},{tag:42112,name:"GDAL_METADATA"},{tag:42113,name:"GDAL_NODATA",type:oA.ASCII},{tag:34377,name:"Photoshop"},{tag:33550,name:"ModelPixelScale",type:oA.DOUBLE,isArray:!0,eager:!0},{tag:33922,name:"ModelTiepoint",type:oA.DOUBLE,isArray:!0,eager:!0},{tag:34264,name:"ModelTransformation",type:oA.DOUBLE,isArray:!0,eager:!0},{tag:34735,name:"GeoKeyDirectory",type:oA.SHORT,isArray:!0,eager:!0},{tag:34736,name:"GeoDoubleParams",type:oA.DOUBLE,isArray:!0,eager:!0},{tag:34737,name:"GeoAsciiParams",type:oA.ASCII,eager:!0},{tag:50674,name:"LercParameters",eager:!0}],lA={},cA={};function wA(A,g,I,e=!1,t=!1){lA[g]=A,cA[A]={tag:A,name:g,type:"string"==typeof I?oA[I]:I,isArray:e,eager:t}}for(const A of hA)wA(A.tag,A.name,A.type,A.isArray,A.eager);function DA(A){return"number"==typeof A?A:lA[A]}const dA=0,yA=1,fA=2,uA=3,SA=5,GA=6,NA=8,FA=0,kA=1,RA=0,LA=1,UA=2,mA=Object.freeze({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"}),pA={};for(const A in mA)mA.hasOwnProperty(A)&&(pA[mA[A]]=parseInt(A,10));const YA=new Map;async function MA(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 KA(A,g,I=MA,e=!0){Array.isArray(A)||(A=[A]),A.forEach(A=>{YA.set(A,{importFn:g,decoderParameterFn:I,preferWorker:e})})}const bA=[{cases:[void 0,1],importFn:()=>Promise.resolve().then(function(){return AI}).then(A=>A.default),preferWorker:!1},{cases:5,importFn:()=>Promise.resolve().then(function(){return eI}).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 cI}).then(A=>A.default),decoderParameterFn:async A=>({...await MA(A),JPEGTables:await A.loadValue("JPEGTables")})},{cases:[8,32946],importFn:()=>Promise.resolve().then(function(){return RB}).then(A=>A.default)},{cases:32773,importFn:()=>Promise.resolve().then(function(){return LB}).then(A=>A.default)},{cases:34887,importFn:()=>Promise.resolve().then(function(){return xB}).then(async A=>(await A.zstd.init(),A)).then(A=>A.default),decoderParameterFn:async A=>({...await MA(A),LercParameters:await A.loadValue("LercParameters")})},{cases:5e4,importFn:()=>Promise.resolve().then(function(){return zB}).then(async A=>(await A.zstd.init(),A)).then(A=>A.default)},{cases:50001,importFn:()=>Promise.resolve().then(function(){return jB}).then(A=>A.default),decoderParameterFn:async A=>({...await MA(A),samplesPerPixel:await A.loadValue("SamplesPerPixel")||4}),preferWorker:!1}];for(const A of bA){const{cases:g,importFn:I,decoderParameterFn:e,preferWorker:t}=A;KA(g,I,e,t)}function JA(A,g,I,e=1){return new(Object.getPrototypeOf(A).constructor)(g*I*e)}function HA(A,g,I){return(1-I)*A+I*g}function qA(A,g,I,e,t,B="nearest"){switch(B.toLowerCase()){case"nearest":return function(A,g,I,e,t){const B=g/e,i=I/t;return A.map(A=>{const C=JA(A,e,t);for(let Q=0;Q<t;++Q){const t=Math.min(Math.round(i*Q),I-1);for(let I=0;I<e;++I){const i=Math.min(Math.round(B*I),g-1),E=A[t*g+i];C[Q*e+I]=E}}return C})}(A,g,I,e,t);case"bilinear":case"linear":return function(A,g,I,e,t){const B=g/e,i=I/t;return A.map(A=>{const C=JA(A,e,t);for(let Q=0;Q<t;++Q){const t=i*Q,E=Math.floor(t),s=Math.min(Math.ceil(t),I-1);for(let I=0;I<e;++I){const i=B*I,a=i%1,o=Math.floor(i),r=Math.min(Math.ceil(i),g-1),n=A[E*g+o],h=A[E*g+r],l=A[s*g+o],c=A[s*g+r],w=HA(HA(n,h,a),HA(l,c,a),t%1);C[Q*e+I]=w}}return C})}(A,g,I,e,t);default:throw new Error(`Unsupported resampling method: '${B}'`)}}function xA(A,g,I,e,t,B,i="nearest"){switch(i.toLowerCase()){case"nearest":return function(A,g,I,e,t,B){const i=g/e,C=I/t,Q=JA(A,e,t,B);for(let E=0;E<t;++E){const t=Math.min(Math.round(C*E),I-1);for(let I=0;I<e;++I){const C=Math.min(Math.round(i*I),g-1);for(let i=0;i<B;++i){const s=A[t*g*B+C*B+i];Q[E*e*B+I*B+i]=s}}}return Q}(A,g,I,e,t,B);case"bilinear":case"linear":return function(A,g,I,e,t,B){const i=g/e,C=I/t,Q=JA(A,e,t,B);for(let E=0;E<t;++E){const t=C*E,s=Math.floor(t),a=Math.min(Math.ceil(t),I-1);for(let I=0;I<e;++I){const C=i*I,o=C%1,r=Math.floor(C),n=Math.min(Math.ceil(C),g-1);for(let i=0;i<B;++i){const C=A[s*g*B+r*B+i],h=A[s*g*B+n*B+i],l=A[a*g*B+r*B+i],c=A[a*g*B+n*B+i],w=HA(HA(C,h,o),HA(l,c,o),t%1);Q[E*e*B+I*B+i]=w}}}return Q}(A,g,I,e,t,B);default:throw new Error(`Unsupported resampling method: '${i}'`)}}function _A(A,g,I){let e=0;for(let t=g;t<I;++t)e+=A[t];return e}function TA(A,g,I){switch(A){case 1:if(g<=8)return new Uint8Array(I);if(g<=16)return new Uint16Array(I);if(g<=32)return new Uint32Array(I);break;case 2:if(8===g)return new Int8Array(I);if(16===g)return new Int16Array(I);if(32===g)return new Int32Array(I);break;case 3:switch(g){case 16:case 32:return new Float32Array(I);case 64:return new Float64Array(I)}}throw Error("Unsupported data format/bitsPerSample")}var OA=class{constructor(A,g,I,e){this.fileDirectory=A,this.littleEndian=g,this.tiles=I?{}:null,this.isTiled=!A.hasTag("StripOffsets");const t=A.getValue("PlanarConfiguration")??1;if(1!==t&&2!==t)throw new Error("Invalid planar configuration.");this.planarConfiguration=t,this.source=e}getFileDirectory(){return this.fileDirectory}getGeoKeys(){return this.fileDirectory.parseGeoKeyDirectory()}getWidth(){return this.fileDirectory.getValue("ImageWidth")}getHeight(){return this.fileDirectory.getValue("ImageLength")}getSamplesPerPixel(){return this.fileDirectory.hasTag("SamplesPerPixel")?this.fileDirectory.getValue("SamplesPerPixel"):1}getTileWidth(){return this.isTiled?this.fileDirectory.getValue("TileWidth"):this.getWidth()}getTileHeight(){return this.isTiled?this.fileDirectory.getValue("TileLength"):this.fileDirectory.hasTag("RowsPerStrip")?Math.min(this.fileDirectory.getValue("RowsPerStrip"),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;for(let g=0;g<this.fileDirectory.getValue("BitsPerSample").length;++g)A+=this.getSampleByteSize(g);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.hasTag("SampleFormat")?this.fileDirectory.getValue("SampleFormat")[A]:1,I=this.fileDirectory.getValue("BitsPerSample")[A];switch(g){case 1:if(I<=8)return DataView.prototype.getUint8;if(I<=16)return DataView.prototype.getUint16;if(I<=32)return DataView.prototype.getUint32;break;case 2:if(I<=8)return DataView.prototype.getInt8;if(I<=16)return DataView.prototype.getInt16;if(I<=32)return DataView.prototype.getInt32;break;case 3:switch(I){case 16:return function(A,g){return CA(this,A,g)};case 32:return DataView.prototype.getFloat32;case 64:return DataView.prototype.getFloat64}}throw Error("Unsupported data format/bitsPerSample")}getSampleFormat(A=0){return this.fileDirectory.hasTag("SampleFormat")?this.fileDirectory.getValue("SampleFormat")[A]:1}getBitsPerSample(A=0){return this.fileDirectory.getValue("BitsPerSample")[A]}getArrayForSample(A,g){return TA(this.getSampleFormat(A),this.getBitsPerSample(A),g)}async getTileOrStrip(A,g,I,e,t){const B=Math.ceil(this.getWidth()/this.getTileWidth()),i=Math.ceil(this.getHeight()/this.getTileHeight());let C;const{tiles:Q}=this;if(1===this.planarConfiguration?C=g*B+A:2===this.planarConfiguration&&(C=I*B*i+g*B+A),void 0===C)throw new Error("Could not determine tile or strip index.");let E,s;if(this.isTiled?(E=await this.fileDirectory.loadValueIndexed("TileOffsets",C),s=await this.fileDirectory.loadValueIndexed("TileByteCounts",C)):(E=await this.fileDirectory.loadValueIndexed("StripOffsets",C),s=await this.fileDirectory.loadValueIndexed("StripByteCounts",C)),0===s){const e=this.getBlockHeight(g)*this.getTileWidth(),t=2===this.planarConfiguration?this.getSampleByteSize(I):this.getBytesPerPixel(),B=new ArrayBuffer(e*t);return this.getArrayForSample(I,B).fill(this.getGDALNoData()||0),{x:A,y:g,sample:I,data:B}}const a=(await this.source.fetch([{offset:E,length:s}],t))[0];let o;return null!==Q&&Q[C]?o=Q[C]:(o=(async()=>{let A=await e.decode(a);const I=this.getSampleFormat(),t=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,t)&&(A=function(A,g,I,e,t,B,i){const C=new DataView(A),Q=2===I?1:e,E=TA(g,t,2===I?i*B:i*B*e),s=parseInt("1".repeat(t),2);if(1===g){let A;A=1===I?e*t:t;let g=B*A;7&g&&(g=g+7&-8);for(let A=0;A<i;++A){const I=A*g;for(let g=0;g<B;++g){const e=I+g*Q*t;for(let I=0;I<Q;++I){const i=e+I*t,a=(A*B+g)*Q+I,o=Math.floor(i/8),r=i%8;if(r+t<=8)E[a]=C.getUint8(o)>>8-t-r&s;else if(r+t<=16)E[a]=C.getUint16(o)>>16-t-r&s;else if(r+t<=24){const A=C.getUint16(o)<<8|C.getUint8(o+2);E[a]=A>>24-t-r&s}else E[a]=C.getUint32(o)>>32-t-r&s}}}}return E.buffer}(A,I,this.planarConfiguration,this.getSamplesPerPixel(),t,this.getTileWidth(),this.getBlockHeight(g))),A})(),null!==Q&&(Q[C]=o)),{x:A,y:g,sample:I,data:await o}}async _readRaster(A,g,I,e,t,B,i,C,Q){const E=this.getTileWidth(),s=this.getTileHeight(),a=this.getWidth(),o=this.getHeight(),r=Math.max(Math.floor(A[0]/E),0),n=Math.min(Math.ceil(A[2]/E),Math.ceil(a/E)),h=Math.max(Math.floor(A[1]/s),0),l=Math.min(Math.ceil(A[3]/s),Math.ceil(o/s)),c=A[2]-A[0];let w=this.getBytesPerPixel();const D=[],d=[];for(let A=0;A<g.length;++A)1===this.planarConfiguration?D.push(_A(await this.fileDirectory.loadValue("BitsPerSample"),0,g[A])/8):D.push(0),d.push(this.getReaderForSample(g[A]));const y=[],{littleEndian:f}=this;for(let B=h;B<l;++B)for(let i=r;i<n;++i){let C;1===this.planarConfiguration&&(C=this.getTileOrStrip(i,B,0,t,Q));for(let r=0;r<g.length;++r){const n=r,h=g[r];if(2===this.planarConfiguration&&(w=this.getSampleByteSize(h),C=this.getTileOrStrip(i,B,h,t,Q)),!C)throw new Error("Could not get tile or strip data.");const l=C.then(t=>{const B=t.data,i=new DataView(B),C=this.getBlockHeight(t.y),Q=t.y*s,r=t.x*E,h=Q+C,l=(t.x+1)*E,y=d[n],u=Math.min(C,C-(h-A[3]),o-Q),S=Math.min(E,E-(l-A[2]),a-r);for(let t=Math.max(0,A[1]-Q);t<u;++t)for(let B=Math.max(0,A[0]-r);B<S;++B){const C=(t*E+B)*w,s=y.call(i,C+D[n],f);let a;e?(a=(t+Q-A[1])*c*g.length+(B+r-A[0])*g.length+n,I[a]=s):(a=(t+Q-A[1])*c+B+r-A[0],I[n][a]=s)}});y.push(l)}}if(await Promise.all(y),B&&A[2]-A[0]!==B||i&&A[3]-A[1]!==i){let t;t=e?xA(I,A[2]-A[0],A[3]-A[1],B,i,g.length,C):qA(I,A[2]-A[0],A[3]-A[1],B,i,C);const Q=t;return Q.width=B??A[2]-A[0],Q.height=i??A[3]-A[1],Q}const u=I;return u.width=B||A[2]-A[0],u.height=i||A[3]-A[1],u}async readRasters(A={}){const{window:g,samples:I=[],pool:e=null,width:t,height:B,resampleMethod:i,fillValue:C,signal:Q}=A,E="interleave"in A&&A.interleave,s=g||[0,0,this.getWidth(),this.getHeight()];if(s[0]>s[2]||s[1]>s[3])throw new Error("Invalid subsets");const a=(s[2]-s[0])*(s[3]-s[1]),o=this.getSamplesPerPixel();if(I&&I.length){for(let A=0;A<I.length;++A)if(I[A]>=o)return Promise.reject(new RangeError(`Invalid sample index '${I[A]}'.`))}else for(let A=0;A<o;++A)I.push(A);let r;if(E){if(r=TA(this.fileDirectory.hasTag("SampleFormat")?Math.max.apply(null,this.fileDirectory.getValue("SampleFormat")):1,Math.max.apply(null,this.fileDirectory.getValue("BitsPerSample")),a*I.length),C){if(Array.isArray(C))throw new Error("When reading interleaved data, fillValue must be a single number.");r.fill(C)}}else{r=[];for(let A=0;A<I.length;++A){const g=this.getArrayForSample(I[A],a);Array.isArray(C)&&A<C.length?g.fill(C[A]):C&&!Array.isArray(C)&&g.fill(C),r.push(g)}}const n=this.fileDirectory.getValue("Compression")||1,h=await async function(A,g){if(!YA.has(A))throw new Error(`Unknown compression method identifier: ${A}`);const{decoderParameterFn:I}=YA.get(A);return I(g)}(n,this.fileDirectory),l=e?e.bindParameters(n,h):await async function(A,g){if(!YA.has(A))throw new Error(`Unknown compression method identifier: ${A}`);const{importFn:I}=YA.get(A);return new(await I())(g)}(n,h);return await this._readRaster(s,I,r,E,l,t,B,i,Q)}async readRGB(A={}){const{window:g,pool:I=null,width:e,height:t,resampleMethod:B,enableAlpha:i=!1,signal:C}=A,Q=("interleave"in A&&A.interleave)??!1,E=g||[0,0,this.getWidth(),this.getHeight()];if(E[0]>E[2]||E[1]>E[3])throw new Error("Invalid subsets");const s=this.fileDirectory.getValue("PhotometricInterpretation");if(s===fA){let A=[0,1,2];if(this.fileDirectory.getValue("ExtraSamples")!==FA&&i){A=[];for(let g=0;g<this.fileDirectory.getValue("BitsPerSample").length;g+=1)A.push(g)}return this.readRasters({window:g,interleave:Q,samples:A,pool:I,width:e,height:t,resampleMethod:B,signal:C})}let a;switch(s){case dA:case yA:case uA:a=[0];break;case SA:a=[0,1,2,3];break;case GA:case NA:a=[0,1,2];break;default:throw new Error("Invalid or unsupported photometric interpretation.")}const o={window:E,interleave:!0,samples:a,pool:I,width:e,height:t,resampleMethod:B,signal:C},{fileDirectory:r}=this,n=await this.readRasters(o),h=2**this.getBitsPerSample(0);let l;switch(s){case dA:l=function(A,g){const{width:I,height:e}=A,t=new Uint8Array(I*e*3);let B;for(let I=0,e=0;I<A.length;++I,e+=3)B=256-A[I]/g*256,t[e]=B,t[e+1]=B,t[e+2]=B;return t}(n,h);break;case yA:l=function(A,g){const{width:I,height:e}=A,t=new Uint8Array(I*e*3);let B;for(let I=0,e=0;I<A.length;++I,e+=3)B=A[I]/g*256,t[e]=B,t[e+1]=B,t[e+2]=B;return t}(n,h);break;case uA:l=function(A,g){const{width:I,height:e}=A,t=new Uint8Array(I*e*3),B=g.length/3,i=g.length/3*2;for(let I=0,e=0;I<A.length;++I,e+=3){const C=A[I];t[e]=g[C]/65536*256,t[e+1]=g[C+B]/65536*256,t[e+2]=g[C+i]/65536*256}return t}(n,await r.loadValue("ColorMap"));break;case SA:l=function(A){const{width:g,height:I}=A,e=new Uint8Array(g*I*3);for(let g=0,I=0;g<A.length;g+=4,I+=3){const t=A[g],B=A[g+1],i=A[g+2],C=A[g+3];e[I]=(255-t)/256*255*((255-C)/256),e[I+1]=(255-B)/256*255*((255-C)/256),e[I+2]=(255-i)/256*255*((255-C)/256)}return e}(n);break;case GA:l=function(A){const{width:g,height:I}=A,e=new Uint8ClampedArray(g*I*3);for(let g=0,I=0;g<A.length;g+=3,I+=3){const t=A[g],B=A[g+1],i=A[g+2];e[I]=t+1.402*(i-128),e[I+1]=t-.34414*(B-128)-.71414*(i-128),e[I+2]=t+1.772*(B-128)}return e}(n);break;case NA:l=function(A){const{width:g,height:I}=A,e=new Uint8Array(g*I*3);for(let g=0,I=0;g<A.length;g+=3,I+=3){let t,B,i,C=(A[g+0]+16)/116,Q=(A[g+1]<<24>>24)/500+C,E=C-(A[g+2]<<24>>24)/200;Q=.95047*(Q*Q*Q>.008856?Q*Q*Q:(Q-16/116)/7.787),C=1*(C*C*C>.008856?C*C*C:(C-16/116)/7.787),E=1.08883*(E*E*E>.008856?E*E*E:(E-16/116)/7.787),t=3.2406*Q+-1.5372*C+-.4986*E,B=-.9689*Q+1.8758*C+.0415*E,i=.0557*Q+-.204*C+1.057*E,t=t>.0031308?1.055*t**(1/2.4)-.055:12.92*t,B=B>.0031308?1.055*B**(1/2.4)-.055:12.92*B,i=i>.0031308?1.055*i**(1/2.4)-.055:12.92*i,e[I]=255*Math.max(0,Math.min(1,t)),e[I+1]=255*Math.max(0,Math.min(1,B)),e[I+2]=255*Math.max(0,Math.min(1,i))}return e}(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 e=0,t=0;e<l.length;e+=3,++t)A[t]=l[e],g[t]=l[e+1],I[t]=l[e+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"),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,I){const e=[],t=I&&I.debug||!1,B=!I||"boolean"!=typeof I.nested||I.nested;let i,C=I&&I.startIndex||0;for(;i=aA(A,g,{debug:t,startIndex:C});)C=B?i.start+1+g.length:i.end,e.push(i);return t&&console.log("findTagsByName found",e.length,"tags"),e}(await this.fileDirectory.loadValue("GDAL_METADATA"),"Item");I=null===A?I.filter(A=>void 0===QA(A,"sample")):I.filter(g=>Number(QA(g,"sample"))===A);for(let A=0;A<I.length;++A){const e=I[A];g[QA(e,"name")]=e.inner}return g}getGDALNoData(){if(!this.fileDirectory.hasTag("GDAL_NODATA"))return null;const A=this.fileDirectory.getValue("GDAL_NODATA");return Number(A.substring(0,A.length-1))}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,e]=A.getResolution();return[g*A.getWidth()/this.getWidth(),I*A.getHeight()/this.getHeight(),e*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();if(this.fileDirectory.hasTag("ModelTransformation")&&!A){const[A,e,t,B,i,C,Q,E]=this.fileDirectory.getValue("ModelTransformation"),s=[[0,0],[0,g],[I,0],[I,g]].map(([g,I])=>[B+A*g+e*I,E+i*g+C*I]),a=s.map(A=>A[0]),o=s.map(A=>A[1]);return[Math.min(...a),Math.min(...o),Math.max(...a),Math.max(...o)]}{const A=this.getOrigin(),e=this.getResolution(),t=A[0],B=A[1],i=t+e[0]*I,C=B+e[1]*g;return[Math.min(t,i),Math.min(B,C),Math.max(t,i),Math.max(B,C)]}}};class vA{constructor(A){this._dataView=new DataView(A)}get buffer(){return this._dataView.buffer}getUint64(A,g){const I=this.getUint32(A,g),e=this.getUint32(A+4,g);let t;if(g){if(t=I+2**32*e,!Number.isSafeInteger(t))throw new Error(`${t} exceeds MAX_SAFE_INTEGER. Precision may be lost. Please report if you get this message to https://github.com/geotiffjs/geotiff.js/issues`);return t}if(t=2**32*I+e,!Number.isSafeInteger(t))throw new Error(`${t} exceeds MAX_SAFE_INTEGER. Precision may be lost. Please report if you get this message to https://github.com/geotiffjs/geotiff.js/issues`);return t}getInt64(A,g){let I=0;const e=(128&this._dataView.getUint8(A+(g?7:0)))>0;let t=!0;for(let B=0;B<8;B++){let i=this._dataView.getUint8(A+(g?B:7-B));e&&(t?0!==i&&(i=255&~(i-1),t=!1):i=255&~i),I+=i*256**B}return e&&(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 CA(this._dataView,A,g)}getFloat32(A,g){return this._dataView.getFloat32(A,g)}getFloat64(A,g){return this._dataView.getFloat64(A,g)}}class PA{constructor(A,g,I,e){this._dataView=new DataView(A),this._sliceOffset=g,this._littleEndian=I,this._bigTiff=e}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 e;if(this._littleEndian){if(e=g+2**32*I,!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*g+I,!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}readInt64(A){let g=0;const I=(128&this._dataView.getUint8(A+(this._littleEndian?7:0)))>0;let e=!0;for(let t=0;t<8;t++){let B=this._dataView.getUint8(A+(this._littleEndian?t:7-t));I&&(e?0!==B&&(B=255&~(B-1),e=!1):B=255&~B),g+=B*256**t}return I&&(g=-g),g}readOffset(A){return this._bigTiff?this.readUint64(A):this.readUint32(A)}}const ZA="\r\n\r\n";function VA(A){if(void 0!==Object.fromEntries)return Object.fromEntries(A);const g={};for(const[I,e]of A)g[I.toLowerCase()]=e;return g}function zA(A){return VA(A.split("\r\n").map(A=>{const g=A.split(":").map(A=>A.trim());return g[0]=g[0].toLowerCase(),g}))}function jA(A){let g=NaN,I=NaN,e=NaN;return A&&([,g,I,e]=(A.match(/bytes (\d+)-(\d+)\/(\d+)/)||[]).map(Number)),{start:g,end:I,total:e}}class WA{async fetch(A,g){return Promise.all(A.map(A=>this.fetchSlice(A,g)))}async fetchSlice(A,g){throw new Error(`fetching of slice ${A} not possible, not implemented`)}get fileSize(){return null}async close(){}}class XA 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 e="number"==typeof I&&I!==Number.POSITIVE_INFINITY?Date.now()+I:void 0;return this.cache.has(A)?this.cache.set(A,{value:g,expiry:e}):this._set(A,{value:g,expiry:e}),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],[e,t]=I;!1===this._deleteIfExpired(e,t)&&(yield[e,t.value])}A=[...this.oldCache];for(let g=A.length-1;g>=0;--g){const I=A[g],[e,t]=I;if(!this.cache.has(e)){!1===this._deleteIfExpired(e,t)&&(yield[e,t.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,e]of this.entriesAscending())A.call(g,e,I,this)}get[Symbol.toStringTag](){return JSON.stringify([...this.entriesAscending()])}}class $A extends Error{constructor(A){super(A),Error.captureStackTrace&&Error.captureStackTrace(this,$A),this.name="AbortError"}}class Ag extends Error{constructor(A,g){super(g),this.errors=A,this.message=g,this.name="AggregateError"}}const gg=Ag;class Ig{constructor(A,g,I){this.offset=A,this.length=g,this.data=I}get top(){return this.offset+this.length}}class eg{constructor(A,g,I){this.offset=A,this.length=g,this.blockIds=I}}class tg extends WA{constructor(A,{blockSize:g=65536,cacheSize:I=100}={}){super(),this.source=A,this.blockSize=g,this.blockCache=new XA({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=[],e=[],t=[];this.evictedBlocks.clear();for(const{offset:g,length:B}of A){let A=g+B;const{fileSize:i}=this;null!==i&&(A=Math.min(A,i));for(let B=Math.floor(g/this.blockSize)*this.blockSize;B<A;B+=this.blockSize){const A=Math.floor(B/this.blockSize);this.blockCache.has(A)||this.blockRequests.has(A)||(this.blockIdsToFetch.add(A),e.push(A)),this.blockRequests.has(A)&&I.push(this.blockRequests.get(A)),t.push(A)}}await async function(A){return new Promise(g=>setTimeout(g,A))}(),this.fetchBlocks(g);const B=[];for(const A of e)this.blockRequests.has(A)&&B.push(this.blockRequests.get(A));await Promise.allSettled(I),await Promise.allSettled(B);const i=[],C=t.filter(A=>this.abortedBlockIds.has(A)||!this.blockCache.has(A));if(C.forEach(A=>this.blockIdsToFetch.add(A)),C.length>0&&g&&!g.aborted){this.fetchBlocks();for(const A of C){const g=this.blockRequests.get(A);if(!g)throw new Error(`Block ${A} is not in the block requests`);i.push(g)}await Promise.allSettled(i)}if(g&&g.aborted)throw new $A("Request was aborted");const Q=t.map(A=>this.blockCache.get(A)||this.evictedBlocks.get(A)),E=Q.filter(A=>!A);if(E.length)throw new gg(E,"Request failed");const s=new Map(function(A,g){const I=Array.isArray(A)?A:Array.from(A),e=Array.isArray(g)?g:Array.from(g);return I.map((A,g)=>[A,e[g]])}(t,Q));return this.readSliceData(A,s)}fetchBlocks(A){if(this.blockIdsToFetch.size>0){const g=this.groupBlocks(this.blockIdsToFetch),I=this.source.fetch(g,A);for(let e=0;e<g.length;++e){const t=g[e];for(const g of t.blockIds)this.blockRequests.set(g,(async()=>{try{const A=(await I)[e],t=g*this.blockSize,B=t-A.offset,i=Math.min(B+this.blockSize,A.data.byteLength),C=A.data.slice(B,i),Q=new Ig(t,C.byteLength,C);this.blockCache.set(g,Q),this.abortedBlockIds.delete(g)}catch(I){if("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=[],e=null;const t=[];for(const A of g)null===e||e+1===A?(I.push(A),e=A):(t.push(new eg(I[0]*this.blockSize,I.length*this.blockSize,I)),I=[A],e=A);return t.push(new eg(I[0]*this.blockSize,I.length*this.blockSize,I)),t}readSliceData(A,g){return A.map(A=>{let I=A.offset+A.length;null!==this.fileSize&&(I=Math.min(this.fileSize,I));const e=Math.floor(A.offset/this.blockSize),t=Math.floor((I-1)/this.blockSize),B=new ArrayBuffer(A.length),i=new Uint8Array(B);for(let B=e;B<=t;++B){const e=g.get(B);if(!e)continue;const t=e.offset-A.offset;let C,Q=0,E=0;t<0?Q=-t:t>0&&(E=t),C=e.top-I<0?e.length-Q:I-e.offset-Q;const s=new Uint8Array(e.data,Q,C);i.set(s,E)}return B})}}class Bg{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 ig{constructor(A){this.url=A}async request({headers:A,signal:g}={}){throw new Error("request is not implemented")}}class Cg extends Bg{constructor(A){super(),this.response=A}get status(){return this.response.status}getHeader(A){return this.response.headers.get(A)}async getData(){return this.response.arrayBuffer?await this.response.arrayBuffer():(await this.response.buffer()).buffer}}class Qg extends ig{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 Cg(I)}}class Eg extends Bg{constructor(A,g){super(),this.xhr=A,this.data=g}get status(){return this.xhr.status}getHeader(A){return this.xhr.getResponseHeader(A)}async getData(){return this.data}}class sg extends ig{constructRequest(A,g){return new Promise((I,e)=>{const t=new XMLHttpRequest;t.open("GET",this.url),t.responseType="arraybuffer";for(const[g,I]of Object.entries(A))t.setRequestHeader(g,I);t.onload=()=>{const A=t.response;I(new Eg(t,A))},t.onerror=e,t.onabort=()=>e(new $A("Request aborted")),t.send(),g&&(g.aborted&&t.abort(),g.addEventListener("abort",()=>t.abort()))})}async request({headers:A,signal:g}={}){return await this.constructRequest(A,g)}}var ag={};class og extends Bg{constructor(A,g){super(),this.response=A,this.dataPromise=g}get status(){return this.response.statusCode}getHeader(A){return this.response.headers[A]}async getData(){return await this.dataPromise}}class rg extends ig{constructor(A){super(A),this.parsedUrl=ag.parse(this.url),this.httpApi=(this.parsedUrl.protocol,ag)}constructRequest(A,g){return new Promise((I,e)=>{const t=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",e)});I(new og(A,g))});t.on("error",e),g&&(g.aborted&&t.destroy(new $A("Request aborted")),g.addEventListener("abort",()=>t.destroy(new $A("Request aborted"))))})}async request({headers:A,signal:g}={}){return await this.constructRequest(A,g)}}class ng extends WA{constructor(A,{headers:g,maxRanges:I=0,allowFullFile:e}={}){super(),this.client=A,this.headers=g,this.maxRanges=I,this.allowFullFile=e,this._fileSize=null}async fetch(A,g){return this.maxRanges>=A.length?this.fetchSlices(A,g):(this.maxRanges>0&&A.length,Promise.all(A.map(A=>this.fetchSlice(A,g))))}async fetchSlices(A,g){const I=await this.client.request({headers:{...this.headers,Range:`bytes=${A.map(({offset:A,length:g})=>`${A}-${A+g}`).join(",")}`},signal:g});if(I.ok){if(206===I.status){const{type:e,params:t}=function(A){if(!A)return{type:null,params:{}};const[g,...I]=A.split(";").map(A=>A.trim());return{type:g,params:VA(I.map(A=>A.split("=")))}}(I.getHeader("content-type"));if("multipart/byteranges"===e){const A=function(A,g){let I=null;const e=new TextDecoder("ascii"),t=[],B=`--${g}`,i=`${B}--`;for(let g=0;g<10;++g)e.decode(new Uint8Array(A,g,B.length))===B&&(I=g);if(null===I)throw new Error("Could not find initial boundary");for(;I<A.byteLength;){const g=e.decode(new Uint8Array(A,I,Math.min(B.length+1024,A.byteLength-I)));if(0===g.length||g.startsWith(i))break;if(!g.startsWith(B))throw new Error("Part does not start with boundary");const C=g.substr(B.length+2);if(0===C.length)break;const Q=C.indexOf(ZA),E=zA(C.substr(0,Q)),{start:s,end:a,total:o}=jA(E["content-range"]),r=I+B.length+Q+4,n=a+1-s;t.push({headers:E,data:A.slice(r,r+n),offset:s,length:n,fileSize:o}),I=r+n+4}return t}(await I.getData(),t.boundary);return this._fileSize=A[0].fileSize||null,A}const B=await I.getData(),{start:i,end:C,total:Q}=jA(I.getHeader("content-range"));this._fileSize=Q||null;const E=[{data:B,offset:i,length:C-i}];if(A.length>1){const I=await Promise.all(A.slice(1).map(A=>this.fetchSlice(A,g)));return E.concat(I)}return E}{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:e}=A,t=await this.client.request({headers:{...this.headers,Range:`bytes=${I}-${I+e}`},signal:g});if(t.ok){if(206===t.status){const A=await t.getData(),{total:g}=jA(t.getHeader("content-range"));return this._fileSize=g||null,{data:A,offset:I,length:e}}{if(!this.allowFullFile)throw new Error("Server responded with full file");const A=await t.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 hg(A,{blockSize:g,cacheSize:I}){return null===g?A:new tg(A,{blockSize:g,cacheSize:I})}function lg(A,{forceXHR:g=!1,...I}={}){return"function"!=typeof fetch||g?"undefined"!=typeof XMLHttpRequest?function(A,{headers:g={},maxRanges:I=0,allowFullFile:e=!1,...t}={}){const B=new sg(A);return hg(new ng(B,{headers:g,maxRanges:I,allowFullFile:e}),t)}(A,I):function(A,{headers:g={},maxRanges:I=0,allowFullFile:e=!1,...t}={}){const B=new rg(A);return hg(new ng(B,{headers:g,maxRanges:I,allowFullFile:e}),t)}(A,I):function(A,{headers:g={},credentials:I,maxRanges:e=0,allowFullFile:t=!1,...B}={}){const i=new Qg(A,I);return hg(new ng(i,{headers:g,maxRanges:e,allowFullFile:t}),B)}(A,I)}class cg extends WA{constructor(A){super(),this.arrayBuffer=A}fetchSlice(A,g){if(g&&g.aborted)throw new $A("Request aborted");return this.arrayBuffer.slice(A.offset,A.offset+A.length)}}function wg(A,g){switch(A){case oA.BYTE:case oA.ASCII:case oA.UNDEFINED:return new Uint8Array(g);case oA.SBYTE:return new Int8Array(g);case oA.SHORT:return new Uint16Array(g);case oA.SSHORT:return new Int16Array(g);case oA.LONG:case oA.IFD:return new Uint32Array(g);case oA.SLONG:return new Int32Array(g);case oA.LONG8:case oA.IFD8:case oA.SLONG8:return new Array(g);case oA.RATIONAL:return new Uint32Array(2*g);case oA.SRATIONAL:return new Int32Array(2*g);case oA.FLOAT:return new Float32Array(g);case oA.DOUBLE:return new Float64Array(g);default:throw new RangeError(`Invalid field type: ${A}`)}}function Dg(A,g){switch(g){case oA.BYTE:case oA.ASCII:case oA.UNDEFINED:return A.readUint8;case oA.SBYTE:return A.readInt8;case oA.SHORT:return A.readUint16;case oA.SSHORT:return A.readInt16;case oA.LONG:case oA.IFD:return A.readUint32;case oA.SLONG:return A.readInt32;case oA.LONG8:case oA.IFD8:return A.readUint64;case oA.SLONG8:return A.readInt64;case oA.RATIONAL:return A.readUint32;case oA.SRATIONAL:return A.readInt32;case oA.FLOAT:return A.readFloat32;case oA.DOUBLE:return A.readFloat64;default:throw new RangeError(`Invalid field type: ${g}`)}}function dg(A=null,g,I,e,t,B,i=!1){const C=nA(e),Q=A||wg(e,t),E=e===oA.RATIONAL||e===oA.SRATIONAL;if(E)for(let A=0;A<t;A+=2)Q[A]=g.call(I,B+A*C),Q[A+1]=g.call(I,B+(A*C+4));else for(let A=0;A<t;++A)Q[A]=g.call(I,B+A*C);return e===oA.ASCII?new TextDecoder("utf-8").decode(Q):1!==t||i||E?Q:Q[0]}class yg{constructor(A,g,I,e,t){this.source=A,this.arrayOffset=g,this.littleEndian=I,this.fieldType=e,this.length=t,this.data=wg(e,t),this.itemSize=nA(e),this.maskBitmap=new Uint8Array(Math.ceil(t/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 PA(A[0],this.arrayOffset,!0,!1),I=dg(this.data,Dg(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,e=this.arrayOffset+A*this.itemSize;if(0===(this.maskBitmap[g]&I)){if(!this.fetchIndexPromises.has(A)){const t=this.source.fetch([{offset:e,length:this.itemSize}]).then(t=>{const B=new PA(t[0],this.arrayOffset+A*this.itemSize,!0,!1),i=Dg(B,this.fieldType).call(B,e);return this.data[A]=i,this.maskBitmap[g]|=I,this.fetchIndexPromises.delete(A),i});this.fetchIndexPromises.set(A,t)}return this.fetchIndexPromises.get(A)}return this.data[A]}}class fg{constructor(A,g,I,e){this.actualizedFields=A,this.deferredFields=g,this.deferredFieldsBeingResolved=new Map,this.deferredArrays=I,this.nextIFDByteOffset=e}hasTag(A){const g=DA(A);return this.actualizedFields.has(g)||this.deferredFields.has(g)||this.deferredArrays.has(g)}getValue(A){const g=DA(A);if(this.deferredFields.has(g)||this.deferredArrays.has(g)){const A=cA[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=DA(A);if(this.actualizedFields.has(g))return this.actualizedFields.get(g);if(this.deferredFieldsBeingResolved.has(g))return this.deferredFieldsBeingResolved.get(g);if(this.deferredFields.has(g)){const A=this.deferredFields.get(g);this.deferredFields.delete(g);const I=(async()=>{try{const I=await A();return this.actualizedFields.set(g,I),I}finally{this.deferredFieldsBeingResolved.delete(g)}})();return this.deferredFieldsBeingResolved.set(g,I),I}if(this.deferredArrays.has(g)){return this.deferredArrays.get(g).loadAll()}}async loadValueIndexed(A,g){const I=DA(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))return(await this.loadValue(I))[g]}parseGeoKeyDirectory(){const A=this.getValue("GeoKeyDirectory");if(!A)return null;const g={};for(let I=4;I<=4*A[3];I+=4){const e=mA[A[I]],t=A[I+1]||null,B=A[I+2],i=A[I+3];let C=null;if(t){if(C=this.getValue(t),null==C)throw new Error(`Could not get value of geoKey '${e}'.`);"string"==typeof C?C=C.substring(i,i+B-1):C.subarray&&(C=C.subarray(i,i+B),1===B&&(C=C[0]))}else C=i;g[e]=C}return g}toObject(){const A={};for(const[g,I]of this.actualizedFields.entries()){const e=cA[g];A[e?e.name:`Tag${g}`]=I}return A}}class ug{constructor(A,g,I,e=!1){this.source=A,this.littleEndian=g,this.bigTiff=I,this.eager=e}async getSlice(A,g){const I=this.bigTiff?4048:1024;return new PA((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 e=await this.getSlice(A);const t=this.bigTiff?e.readUint64(A):e.readUint16(A),B=t*(g+(this.bigTiff?16:6));e.covers(A,B)||(e=await this.getSlice(A,B));const i=new Map,C=new Map,Q=new Map;let E=A+(this.bigTiff?8:2);for(let A=0;A<t;E+=g,++A){const A=e.readUint16(E),g=e.readUint16(E+2),I=this.bigTiff?e.readUint64(E+4):e.readUint32(E+4);let t=null,B=null,s=null;const a=nA(g),o=E+(this.bigTiff?12:8),r=cA[A]?.isArray,n=cA[A]?.eager||this.eager;if(a*I<=(this.bigTiff?8:4))t=dg(wg(g,I),Dg(e,g),e,g,I,o,r);else{const A=e.readOffset(o),i=nA(g)*I;if(e.covers(A,i))t=dg(wg(g,I),Dg(e,g),e,g,I,A,r);else if(n){const e=await this.getSlice(A,i);t=dg(wg(g,I),Dg(e,g),e,g,I,A,r)}else r?s=new yg(this.source,A,this.littleEndian,g,I):B=async()=>{const e=await this.getSlice(A,i);return dg(wg(g,I),Dg(e,g),e,g,I,A,r)}}null!==t?i.set(A,t):null!==B?C.set(A,B):null!==s&&Q.set(A,s)}const s=e.readOffset(A+I+g*t);return new fg(i,C,Q,s)}}function Sg(A,g){let I=A.length-g,e=0;do{for(let I=g;I>0;I--)A[e+g]+=A[e],e++;I-=g}while(I>0)}function Gg(A,g,I){let e=0,t=A.length;const B=t/I;for(;t>g;){for(let I=g;I>0;--I)A[e+g]+=A[e],++e;t-=g}const i=A.slice();for(let g=0;g<B;++g)for(let e=0;e<I;++e)A[I*g+e]=i[(I-e-1)*B+g]}class Ng{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:e,predictor:t,bitsPerSample:B,planarConfiguration:i}=this.parameters;return 1!==t?function(A,g,I,e,t,B){if(!g||1===g)return A;for(let A=0;A<t.length;++A){if(t[A]%8!=0)throw new Error("When decoding with predictor, only multiple of 8 bits are supported.");if(t[A]!==t[0])throw new Error("When decoding with predictor, all samples must have the same size.")}const i=t[0]/8,C=2===B?1:t.length;for(let B=0;B<e&&!(B*C*I*i>=A.byteLength);++B){let e;if(2===g){switch(t[0]){case 8:e=new Uint8Array(A,B*C*I*i,C*I*i);break;case 16:e=new Uint16Array(A,B*C*I*i,C*I*i/2);break;case 32:e=new Uint32Array(A,B*C*I*i,C*I*i/4);break;default:throw new Error(`Predictor 2 not allowed with ${t[0]} bits per sample.`)}Sg(e,C)}else 3===g&&(e=new Uint8Array(A,B*C*I*i,C*I*i),Gg(e,C,i))}return A}(g,t,I,e,B,i):g}}function Fg(A,g,I,e){let t=null,B=null;const i=nA(g);switch(g){case oA.BYTE:case oA.ASCII:case oA.UNDEFINED:t=new Uint8Array(I),B=A.readUint8;break;case oA.SBYTE:t=new Int8Array(I),B=A.readInt8;break;case oA.SHORT:t=new Uint16Array(I),B=A.readUint16;break;case oA.SSHORT:t=new Int16Array(I),B=A.readInt16;break;case oA.LONG:case oA.IFD:t=new Uint32Array(I),B=A.readUint32;break;case oA.SLONG:t=new Int32Array(I),B=A.readInt32;break;case oA.LONG8:case oA.IFD8:t=new Array(I),B=A.readUint64;break;case oA.SLONG8:t=new Array(I),B=A.readInt64;break;case oA.RATIONAL:t=new Uint32Array(2*I),B=A.readUint32;break;case oA.SRATIONAL:t=new Int32Array(2*I),B=A.readInt32;break;case oA.FLOAT:t=new Float32Array(I),B=A.readFloat32;break;case oA.DOUBLE:t=new Float64Array(I),B=A.readFloat64}if(null===t||null===B)throw new RangeError(`Invalid field type: ${g}`);if(g!==oA.RATIONAL&&g!==oA.SRATIONAL)for(let g=0;g<I;++g)t[g]=B.call(A,e+g*i);else for(let g=0;g<I;g+=2)t[g]=B.call(A,e+g*i),t[g+1]=B.call(A,e+(g*i+4));return g===oA.ASCII?new TextDecoder("utf-8").decode(t):t}class kg extends Error{constructor(A){super(`No image at index ${A}`),this.index=A}}class Rg{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:e}=A;let{resX:t,resY:B,bbox:i}=A;const C=await this.getImage();let Q=C;const E=await this.getImageCount(),s=C.getBoundingBox();if(g&&i)throw new Error('Both "bbox" and "window" passed.');if(I||e){if(g){const[A,I]=C.getOrigin(),[e,t]=C.getResolution();i=[A+g[0]*e,I+g[1]*t,A+g[2]*e,I+g[3]*t]}const A=i||s;if(I){if(t)throw new Error("Both width and resX passed");t=(A[2]-A[0])/I}if(e){if(B)throw new Error("Both width and resY passed");B=(A[3]-A[1])/e}}if(t||B){const A=[];for(let g=0;g<E;++g){const I=await this.getImage(g),e=I.fileDirectory.getValue("SubfileType"),t=I.fileDirectory.getValue("NewSubfileType");(0===g||2===e||1&t)&&A.push(I)}A.sort((A,g)=>A.getWidth()-g.getWidth());for(let g=0;g<A.length;++g){const I=A[g],e=(s[2]-s[0])/I.getWidth(),i=(s[3]-s[1])/I.getHeight();if(Q=I,t&&t>e||B&&B>i)break}}let a=g;if(i){const[A,g]=C.getOrigin(),[I,e]=Q.getResolution(C);a=[Math.round((i[0]-A)/I),Math.round((i[1]-g)/e),Math.round((i[2]-A)/I),Math.round((i[3]-g)/e)],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 Lg extends Rg{constructor(A,g,I,e,t={}){super(),this.source=A,this.parser=new ug(A,g,I,!1),this.littleEndian=g,this.bigTiff=I,this.firstIFDOffset=e,this.cache=t.cache||!1,this.ifdRequests=[],this.ghostValues=null}async getSlice(A,g){const I=this.bigTiff?4048:1024;return new PA((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 kg)throw new kg(A);throw g}return this.ifdRequests[A]=(async()=>{const g=await this.ifdRequests[A-1];if(0===g.nextIFDByteOffset)throw new kg(A);return this.parser.parseFileDirectoryAt(g.nextIFDByteOffset)})(),this.ifdRequests[A]}async getImage(A=0){return new OA(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 kg))throw A;g=!1}return A}async getGhostValues(){const A=this.bigTiff?16:8;if(this.ghostValues)return this.ghostValues;const g="GDAL_STRUCTURAL_METADATA_SIZE=";let I=await this.getSlice(A,130);if(g===Fg(I,oA.ASCII,30,A)){const g=Fg(I,oA.ASCII,130,A).split("\n")[0],e=Number(g.split("=")[1].split(" ")[0])+g.length;e>130&&(I=await this.getSlice(A,e));const t=Fg(I,oA.ASCII,e,A);this.ghostValues={},t.split("\n").filter(A=>A.length>0).map(A=>A.split("=")).forEach(([A,g])=>{this.ghostValues[A]=g})}return this.ghostValues}static async fromSource(A,g,I){const e=(await A.fetch([{offset:0,length:1024}],I))[0],t=new vA(e),B=t.getUint16(0,0);let i;if(18761===B)i=!0;else{if(19789!==B)throw new TypeError("Invalid byte order value.");i=!1}const C=t.getUint16(2,i);let Q;if(42===C)Q=!1;else{if(43!==C)throw new TypeError("Invalid magic number.");Q=!0;if(8!==t.getUint16(4,i))throw new Error("Unsupported offset byte-size.")}const E=Q?t.getUint64(8,i):t.getUint32(4,i);return new Lg(A,i,Q,E,g)}close(){return"function"==typeof this.source.close&&this.source.close()}}async function Ug(A,g){return Lg.fromSource(function(A){return new cg(A)}(A),void 0,g)}class mg{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,e=0,t=0,B=0,i=0,C=0,Q=0;for(1&I?B=i=C=g:e=t=Q=g;(I>>=1)>1;){const A=e+B>>1,g=t+i>>1;1&I?(B=e,i=t,e=C,t=Q):(e=B,t=i,B=C,i=Q),C=A,Q=g}const E=4*A;this.coords[E+0]=e,this.coords[E+1]=t,this.coords[E+2]=B,this.coords[E+3]=i}}createTile(A){return new pg(A,this)}}class pg{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:e}=this.martini,{terrain:t,errors:B}=this;for(let i=A-1;i>=0;i--){const A=4*i,C=I[A+0],Q=I[A+1],E=I[A+2],s=I[A+3],a=C+E>>1,o=Q+s>>1,r=a+o-Q,n=o+C-a,h=(t[Q*e+C]+t[s*e+E])/2,l=o*e+a,c=Math.abs(h-t[l]);if(B[l]=Math.max(B[l],c),i<g){const A=(Q+n>>1)*e+(C+r>>1),g=(s+n>>1)*e+(E+r>>1);B[l]=Math.max(B[l],B[A],B[g])}}}getMesh(A=0){const{gridSize:g,indices:I}=this.martini,{errors:e}=this;let t=0,B=0;const i=g-1;function C(i,Q,E,s,a,o){const r=i+E>>1,n=Q+s>>1;Math.abs(i-a)+Math.abs(Q-o)>1&&e[n*g+r]>A?(C(a,o,i,Q,r,n),C(E,s,a,o,r,n)):(I[Q*g+i]=I[Q*g+i]||++t,I[s*g+E]=I[s*g+E]||++t,I[o*g+a]=I[o*g+a]||++t,B++)}I.fill(0),C(0,0,i,i,i,0),C(i,i,0,0,0,i);const Q=new Uint16Array(2*t),E=new Uint32Array(3*B);let s=0;function a(t,B,i,C,o,r){const n=t+i>>1,h=B+C>>1;if(Math.abs(t-o)+Math.abs(B-r)>1&&e[h*g+n]>A)a(o,r,t,B,n,h),a(i,C,o,r,n,h);else{const A=I[B*g+t]-1,e=I[C*g+i]-1,a=I[r*g+o]-1;Q[2*A]=t,Q[2*A+1]=B,Q[2*e]=i,Q[2*e+1]=C,Q[2*a]=o,Q[2*a+1]=r,E[s++]=A,E[s++]=e,E[s++]=a}}return a(0,0,i,i,i,0),a(i,i,0,0,0,i),{vertices:Q,triangles:E}}}function Yg(A,g,I,e){const t=e?function(A,g){A.westIndices.sort((A,I)=>g[3*A+1]-g[3*I+1]),A.eastIndices.sort((A,I)=>g[3*I+1]-g[3*A+1]),A.southIndices.sort((A,I)=>g[3*I]-g[3*A]),A.northIndices.sort((A,I)=>g[3*A]-g[3*I]);const I=[];for(const g in A){const e=A[g];for(let A=0;A<e.length-1;A++)I.push([e[A],e[A+1]])}return I}(e,A.POSITION.value):function(A){const g=[];for(let I=0;I<A.length;I+=3)g.push([A[I],A[I+1]]),g.push([A[I+1],A[I+2]]),g.push([A[I+2],A[I]]);g.sort((A,g)=>Math.min(...A)-Math.min(...g)||Math.max(...A)-Math.max(...g));const I=[];let e=0;for(;e<g.length;)g[e][0]===g[e+1]?.[1]&&g[e][1]===g[e+1]?.[0]?e+=2:(I.push(g[e]),e++);return I}(g),B=new A.POSITION.value.constructor(6*t.length),i=new A.TEXCOORD_0.value.constructor(4*t.length),Q=new g.constructor(6*t.length);for(let g=0;g<t.length;g++){Mg({edge:t[g],edgeIndex:g,attributes:A,skirtHeight:I,newPosition:B,newTexcoord0:i,newTriangles:Q})}A.POSITION.value=C.concatenateTypedArrays(A.POSITION.value,B),A.TEXCOORD_0.value=C.concatenateTypedArrays(A.TEXCOORD_0.value,i);return{attributes:A,triangles:g instanceof Array?g.concat(Q):C.concatenateTypedArrays(g,Q)}}function Mg({edge:A,edgeIndex:g,attributes:I,skirtHeight:e,newPosition:t,newTexcoord0:B,newTriangles:i}){const C=I.POSITION.value.length,Q=2*g,E=2*g+1;t.set(I.POSITION.value.subarray(3*A[0],3*A[0]+3),3*Q),t[3*Q+2]=t[3*Q+2]-e,t.set(I.POSITION.value.subarray(3*A[1],3*A[1]+3),3*E),t[3*E+2]=t[3*E+2]-e,B.set(I.TEXCOORD_0.value.subarray(2*A[0],2*A[0]+2),2*Q),B.set(I.TEXCOORD_0.value.subarray(2*A[1],2*A[1]+2),2*E);const s=2*g*3;i[s]=A[0],i[s+1]=C/3+E,i[s+2]=A[1],i[s+3]=C/3+E,i[s+4]=A[0],i[s+5]=C/3+Q}function Kg(A,g,I,e,t,B){return(I-t)*(g-B)-(e-B)*(A-t)}class bg{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 e=g-1,t=I-1,B=this._addPoint(0,0),i=this._addPoint(e,0),C=this._addPoint(0,t),Q=this._addPoint(e,t),E=this._addTriangle(Q,B,C,-1,-1,-1);this._addTriangle(B,Q,i,E,-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],e=2*this.triangles[3*I+0],t=2*this.triangles[3*I+1],B=2*this.triangles[3*I+2];this._findCandidate(A[e],A[e+1],A[t],A[t+1],A[B],A[B+1],I)}this._pendingLen=0}_findCandidate(A,g,I,e,t,B,i){const C=Math.min(A,I,t),Q=Math.min(g,e,B),E=Math.max(A,I,t),s=Math.max(g,e,B);let a=Kg(I,e,t,B,C,Q),o=Kg(t,B,A,g,C,Q),r=Kg(A,g,I,e,C,Q);const n=e-g,h=A-I,l=B-e,c=I-t,w=g-B,D=t-A,d=Kg(A,g,I,e,t,B),y=this.heightAt(A,g)/d,f=this.heightAt(I,e)/d,u=this.heightAt(t,B)/d;let S=0,G=0,N=0,F=0;for(let A=Q;A<=s;A++){let g=0;a<0&&0!==l&&(g=Math.max(g,Math.floor(-a/l))),o<0&&0!==w&&(g=Math.max(g,Math.floor(-o/w))),r<0&&0!==n&&(g=Math.max(g,Math.floor(-r/n)));let I=a+l*g,e=o+w*g,t=r+n*g,B=!1;for(let i=C+g;i<=E;i++){if(I>=0&&e>=0&&t>=0){B=!0;const g=y*I+f*e+u*t,C=Math.abs(g-this.heightAt(i,A));F+=C*C,C>S&&(S=C,G=i,N=A)}else if(B)break;I+=l,e+=w,t+=n}a+=c,o+=D,r+=h}(G===A&&N===g||G===I&&N===e||G===t&&N===B)&&(S=0),this._candidates[2*i]=G,this._candidates[2*i+1]=N,this._rms[i]=F,this._queuePush(i,S,F)}_step(){const A=this._queuePop(),g=3*A+0,I=3*A+1,e=3*A+2,t=this.triangles[g],B=this.triangles[I],i=this.triangles[e],C=this.coords[2*t],Q=this.coords[2*t+1],E=this.coords[2*B],s=this.coords[2*B+1],a=this.coords[2*i],o=this.coords[2*i+1],r=this._candidates[2*A],n=this._candidates[2*A+1],h=this._addPoint(r,n);if(0===Kg(C,Q,E,s,r,n))this._handleCollinear(h,g);else if(0===Kg(E,s,a,o,r,n))this._handleCollinear(h,I);else if(0===Kg(a,o,C,Q,r,n))this._handleCollinear(h,e);else{const A=this._halfedges[g],C=this._halfedges[I],Q=this._halfedges[e],E=this._addTriangle(t,B,h,A,-1,-1,g),s=this._addTriangle(B,i,h,C,-1,E+1),a=this._addTriangle(i,t,h,Q,E+2,s+1);this._legalize(E),this._legalize(s),this._legalize(a)}}_addPoint(A,g){const I=this.coords.length>>1;return this.coords.push(A,g),I}_addTriangle(A,g,I,e,t,B,i=this.triangles.length){const C=i/3;return this.triangles[i+0]=A,this.triangles[i+1]=g,this.triangles[i+2]=I,this._halfedges[i+0]=e,this._halfedges[i+1]=t,this._halfedges[i+2]=B,e>=0&&(this._halfedges[e]=i+0),t>=0&&(this._halfedges[t]=i+1),B>=0&&(this._halfedges[B]=i+2),this._candidates[2*C+0]=0,this._candidates[2*C+1]=0,this._queueIndices[C]=-1,this._rms[C]=0,this._pending[this._pendingLen++]=C,i}_legalize(A){const g=this._halfedges[A];if(g<0)return;const I=A-A%3,e=g-g%3,t=I+(A+1)%3,B=I+(A+2)%3,i=e+(g+2)%3,C=e+(g+1)%3,Q=this.triangles[B],E=this.triangles[A],s=this.triangles[t],a=this.triangles[i],{coords:o}=this;if(!function(A,g,I,e,t,B,i,C){const Q=A-i,E=g-C,s=I-i,a=e-C,o=t-i,r=B-C,n=s*s+a*a,h=o*o+r*r;return Q*(a*h-n*r)-E*(s*h-n*o)+(Q*Q+E*E)*(s*r-a*o)<0}(o[2*Q],o[2*Q+1],o[2*E],o[2*E+1],o[2*s],o[2*s+1],o[2*a],o[2*a+1]))return;const r=this._halfedges[t],n=this._halfedges[B],h=this._halfedges[i],l=this._halfedges[C];this._queueRemove(I/3),this._queueRemove(e/3);const c=this._addTriangle(Q,a,s,-1,h,r,I),w=this._addTriangle(a,Q,E,c,n,l,e);this._legalize(c+1),this._legalize(w+2)}_handleCollinear(A,g){const I=g-g%3,e=I+(g+1)%3,t=I+(g+2)%3,B=this.triangles[t],i=this.triangles[g],C=this.triangles[e],Q=this._halfedges[e],E=this._halfedges[t],s=this._halfedges[g];if(s<0){const g=this._addTriangle(A,B,i,-1,E,-1,I),e=this._addTriangle(B,A,C,g,-1,Q);return this._legalize(g+1),void this._legalize(e+2)}const a=s-s%3,o=a+(s+2)%3,r=a+(s+1)%3,n=this.triangles[o],h=this._halfedges[o],l=this._halfedges[r];this._queueRemove(a/3);const c=this._addTriangle(B,i,A,E,-1,-1,I),w=this._addTriangle(i,n,A,l,-1,c+1,a),D=this._addTriangle(n,C,A,h,-1,w+1),d=this._addTriangle(C,B,A,Q,c+2,D+1);this._legalize(c),this._legalize(w),this._legalize(D),this._legalize(d)}_queuePush(A,g,I){const e=this._queue.length;this._queueIndices[A]=e,this._queue.push(A),this._errors.push(g),this._rmsSum+=I,this._queueUp(e)}_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],e=this._queue[g];this._queue[A]=e,this._queue[g]=I,this._queueIndices[I]=g,this._queueIndices[e]=A;const t=this._errors[A];this._errors[A]=this._errors[g],this._errors[g]=t}_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 e=A+1;let t=A;if(e<g&&this._queueLess(e,A)&&(t=e),!this._queueLess(t,I))break;this._queueSwap(I,t),I=t}return I>A}}const Jg={type:"image",tesselator:"martini",format:"uint8",useHeatMap:!0,useColorsBasedOnValues:!1,useAutoRange:!1,useDataForOpacity:!1,useSingleColor:!1,useColorClasses:!1,blurredTexture:!0,clipLow:null,clipHigh:null,multiplier:1,color:[255,0,255,255],colorScale:B.brewer.YlOrRd,colorScaleValueRange:[0,255],colorsBasedOnValues:null,colorClasses:null,alpha:100,useChannel:null,useChannelIndex:null,noDataValue:void 0,numOfChannels:void 0,nullColor:[0,0,0,0],unidentifiedColor:[0,0,0,0],clippedColor:[0,0,0,0],terrainColor:[133,133,133,255],terrainSkirtHeight:100,terrainMinValue:0,planarConfig:void 0};class Hg{data;scale=(A,g,I,e,t)=>(A-g)*(t-e)/(I-g)+e;async setUrl(A){const g=await fetch(A),I=await g.arrayBuffer(),e=await Ug(I),t=await e.getImage(0);this.data=t}async getMap(A,g,I){const e={...Jg,...g};switch(e.type){case"image":return this.getBitmap(A,e);case"terrain":return this.getHeightmap(A,e,I);default:return null}}async getHeightmap(A,g,I){let e,t,B=[];"string"==typeof A?(await this.setUrl(A),B=await this.data.readRasters(),e=this.data.getWidth(),t=this.data.getHeight()):(B=A.rasters,e=A.width,t=A.height);const C={...g};let Q=B[0];C.useChannelIndex??=null==C.useChannel?null:C.useChannel-1,null!=g.useChannelIndex&&B[C.useChannelIndex]&&(Q=B[C.useChannelIndex]);const E=new Float32Array((e+1)*(t+1)),s=Q.length/(e*t);let a=null===g.useChannelIndex?0:g.useChannelIndex;for(let A=0,I=0;I<t;I++)for(let t=0;t<e;t++,A++){const e=g.noDataValue&&Q[a]===g.noDataValue?g.terrainMinValue:Q[a]*g.multiplier;E[A+I]=e,a+=s}if("martini"===g.tesselator){for(let A=(e+1)*e,g=0;g<e;g++,A++)E[A]=E[A-e-1];for(let A=t,g=0;g<t+1;g++,A+=t+1)E[A]=E[A-1]}const{terrainSkirtHeight:o}=g;let r;switch(g.tesselator){case"martini":r=qg(I,e,E);break;case"delatin":r=xg(I,e,t,E);break;default:r=e!==t||t&&e-1?xg(I,e,t,E):qg(I,e,E)}const{vertices:n}=r;let{triangles:h}=r,l=function(A,g,I,e,t){const B=I+1,i=A.length/2,C=new Float32Array(3*i),Q=new Float32Array(2*i),[E,s,a,o]=t||[0,0,I,e],r=(a-E)/I,n=(o-s)/e;for(let t=0;t<i;t++){const i=A[2*t],s=A[2*t+1],a=s*B+i;C[3*t+0]=i*r+E,C[3*t+1]=-s*n+o,C[3*t+2]=g[a],Q[2*t+0]=i/I,Q[2*t+1]=s/e}return{POSITION:{value:C,size:3},TEXCOORD_0:{value:Q,size:2}}}(n,E,e,t,A.bounds);const c=i.getMeshBoundingBox(l);if(o){const{attributes:A,triangles:g}=Yg(l,h,o);l=A,h=g}return{loaderData:{header:{}},header:{vertexCount:h.length,boundingBox:c},mode:4,indices:{value:Uint32Array.from(h),size:1},attributes:l}}async getBitmap(A,g){const I={...g};let e,t,B,i=[];"string"==typeof A?(await this.setUrl(A),i=await this.data.readRasters(),e=i.length,t=this.data.getWidth(),B=this.data.getHeight()):(i=A.rasters,e=i.length,t=A.width,B=A.height);const C=document.createElement("canvas");C.width=t,C.height=B;const Q=C.getContext("2d"),E=Q.createImageData(t,B);let s,a,o,r;const n=t*B*4;if(I.unidentifiedColor=this.getColorFromChromaType(I.unidentifiedColor),I.nullColor=this.getColorFromChromaType(I.nullColor),I.clippedColor=this.getColorFromChromaType(I.clippedColor),I.color=this.getColorFromChromaType(I.color),I.useChannelIndex??=null===g.useChannel?null:g.useChannel-1,null==I.useChannelIndex){if(1===e){if(i[0].length/(t*B)===1){const A=i[0];I.useAutoRange&&(I.colorScaleValueRange=this.getMinMax(A,I));this.getColorValue(A,I,n).forEach((A,g)=>{E.data[g]=A})}if(i[0].length/(t*B)===3){let A=0;for(let g=0;g<n;g+=4){const e=[i[0][A],i[0][A+1],i[0][A+2]],t=this.hasPixelsNoData(e,I.noDataValue)?I.nullColor:[...e,Math.floor(2.55*I.alpha)];[E.data[g],E.data[g+1],E.data[g+2],E.data[g+3]]=t,A+=3}}i[0].length/(t*B)===4&&i[0].forEach((A,g)=>{E.data[g]=A})}if(3===e){let A=0;for(let g=0;g<n;g+=4)s=i[0][A],a=i[1][A],o=i[2][A],r=Math.floor(2.55*I.alpha),E.data[g]=s,E.data[g+1]=a,E.data[g+2]=o,E.data[g+3]=r,A+=1}if(4===e){let A=0;for(let g=0;g<n;g+=4)s=i[0][A],a=i[1][A],o=i[2][A],r=Math.floor(2.55*I.alpha),E.data[g]=s,E.data[g+1]=a,E.data[g+2]=o,E.data[g+3]=r,A+=1}}else if(I.useChannelIndex<I.numOfChannels&&I.useChannelIndex>=0){let A=i[0];i[I.useChannelIndex]&&(A=i[I.useChannelIndex]),I.useAutoRange&&(I.colorScaleValueRange=this.getMinMax(A,I));this.getColorValue(A,I,n,I.numOfChannels).forEach((A,g)=>{E.data[g]=A})}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(n,I.nullColor).forEach((A,g)=>{E.data[g]=A})}Q.putImageData(E,0,0);return C.toDataURL("image/png")}getMinMax(A,g){let I=g.maxValue?g.maxValue:Number.MIN_VALUE,e=g.minValue?g.minValue:Number.MAX_VALUE;for(let t=0;t<A.length;t+=1)void 0!==g.noDataValue&&A[t]===g.noDataValue||(A[t]>I&&(I=A[t]),A[t]<e&&(e=A[t]));return[e,I]}getColorValue(A,g,I,e=1){const t=B.scale(g.colorScale).domain(g.colorScaleValueRange);let i=null===g.useChannelIndex?0:g.useChannelIndex;const C=new Array(I),Q=g.colorsBasedOnValues?g.colorsBasedOnValues.map(([A])=>A):void 0,E=g.colorsBasedOnValues?g.colorsBasedOnValues.map(([,A])=>[...B(A).rgb(),Math.floor(2.55*g.alpha)]):void 0,s=g.useColorClasses?g.colorClasses.map(([A])=>[...B(A).rgb(),Math.floor(2.55*g.alpha)]):void 0,a=g.useColorClasses?g.colorClasses.map(([,A])=>A):void 0,o=g.useColorClasses?g.colorClasses.map(([,,A],I)=>void 0!==A?A:I===g.colorClasses.length-1?[!0,!0]:[!0,!1]):void 0;for(let B=0;B<I;B+=4){let I=g.nullColor;if(!Number.isNaN(A[i])&&(void 0===g.noDataValue||A[i]!==g.noDataValue))if(null!=g.clipLow&&A[i]<=g.clipLow||null!=g.clipHigh&&A[i]>=g.clipHigh)I=g.clippedColor;else{if(g.useHeatMap&&(I=[...t(A[i]).rgb(),Math.floor(2.55*g.alpha)]),g.useColorsBasedOnValues){const e=Q.indexOf(A[i]);I=e>-1?E[e]:g.unidentifiedColor}if(g.useColorClasses){const e=this.findClassIndex(A[i],a,o);I=e>-1?s[e]:g.unidentifiedColor}g.useSingleColor&&(I=g.color),g.useDataForOpacity&&(I[3]=this.scale(A[i],g.colorScaleValueRange[0],g.colorScaleValueRange.slice(-1)[0],0,255))}[C[B],C[B+1],C[B+2],C[B+3]]=I,i+=e}return C}findClassIndex(A,g,I){for(let e=0;e<g.length;e+=1){const[t,B]=g[e],[i,C]=I[e];if((i?A>=t:A>t)&&(C?A<=B:A<B))return e}return-1}getDefaultColor(A,g){const I=new Array(A);for(let e=0;e<A;e+=4)[I[e],I[e+1],I[e+2],I[e+3]]=g;return I}getColorFromChromaType(A){return Array.isArray(A)&&4===A.length?A:[...B(A).rgb(),255]}hasPixelsNoData(A,g){return void 0!==g&&A.every(A=>A===g)}}function qg(A,g,I){const e=new mg(g+1).createTile(I),{vertices:t,triangles:B}=e.getMesh(A);return{vertices:t,triangles:B}}function xg(A,g,I,e){const t=new bg(e,g+1,I+1);t.run(A);const{coords:B,triangles:i}=t;return{vertices:B,triangles:i}}const _g=2*Math.PI*6378137,Tg=_g/2,Og=[-20037508.342789244,20037508.342789244],vg={blurredTexture:!0};class Pg{cog;cogZoomLookup=[];cogResolutionLookup=[];cogOrigin=[0,0];zoomRange=[0,0];tileSize;bounds;geo=new Hg;options;constructor(A){this.options={...vg,...A}}async initializeCog(A){if(this.cog)return;this.cog=await async function(A,g={},I){return Lg.fromSource(lg(A,g),void 0,I)}(A);const g=await this.cog.getImage(),I=g.fileDirectory;this.cogOrigin=g.getOrigin(),this.options.noDataValue??=await this.getNoDataValue(g),this.options.format??=await this.getDataTypeFromTags(I),this.options.numOfChannels=I.getValue("SamplesPerPixel"),this.options.planarConfig=I.getValue("PlanarConfiguration"),[this.cogZoomLookup,this.cogResolutionLookup]=await this.buildCogZoomResolutionLookup(this.cog),this.tileSize=g.getTileWidth(),this.zoomRange=this.calculateZoomRange(this.tileSize,g.getResolution()[0],await this.cog.getImageCount()),this.bounds=this.calculateBoundsAsLatLon(g.getBoundingBox())}getZoomRange(){return this.zoomRange}calculateZoomRange(A,g,I){const e=this.getZoomLevelFromResolution(A,g);return[e-(I-1),e]}calculateBoundsAsLatLon(A){const g=Math.min(A[0],A[2]),I=Math.max(A[0],A[2]),e=Math.min(A[1],A[3]),t=Math.max(A[1],A[3]),B=this.getLatLon([g,e]),i=this.getLatLon([I,t]);return[B[0],B[1],i[0],i[1]]}getZoomLevelFromResolution(A,g){return Math.round(Math.log2(_g/(g*A)))}getBoundsAsLatLon(){return this.bounds}getLatLon(A){const g=Tg+A[0],I=-(Tg+(A[1]-_g)),e=[g*(512/_g),I*(512/_g)],B=t.worldToLngLat(e);return[B[0],-B[1]]}async buildCogZoomResolutionLookup(A){const g=await A.getImageCount(),I=await A.getImage(0),e=I.getResolution()[0],t=I.getWidth(),B=[],i=[];for(let I=0;I<g;I++){const g=e*(t/(await A.getImage(I)).getWidth()),C=Math.round(Math.log2(156543.03125/g));B[I]=C,i[I]=g}return[B,i]}getImageIndexForZoomLevel(A){const g=this.cogZoomLookup[this.cogZoomLookup.length-1];if(A>this.cogZoomLookup[0])return 0;if(A<g)return this.cogZoomLookup.length-1;const I=this.cogZoomLookup.indexOf(A);return-1===I&&console.log("getImageIndexForZoomLevel: error in retrieving image by zoom index"),I}async getTileFromImage(A,g,I){const e=this.getImageIndexForZoomLevel(I),t=await this.cog.getImage(e),B=t.getTileWidth(),i=t.getTileHeight();if(!B||!i)throw new Error('GeoTIFF Error: The provided image is not tiled. Please use "rio cogeo create --web-optimized" to fix this.');const C=this.cogResolutionLookup[e],Q=t.getHeight(),E=t.getWidth(),[s,a]=this.cogOrigin,o=this.tileSize,r=_g/o/2**I,n=(Og[0]+A*o*r-s)/C,h=(a-(Og[1]-g*o*r))/C,l=Math.round(n),c=Math.round(h),w=l+o,D=c+o,d=Math.max(0,l),y=Math.max(0,c),f=Math.min(E,w),u=Math.min(Q,D),S=f-d,G=u-y;if(S<=0||G<=0)return[this.createEmptyTile()];const N=d-l,F=y-c,k=[d,y,f,u];if(N>0||F>0||S<B||G<i){const A=this.createTileBuffer(this.options.format,B);A.fill(this.options.noDataValue);const g=await t.readRasters({window:k}),I=Array(g.length*g[0].length);I.fill(this.options.noDataValue);for(let e=0;e<g.length;e+=1){for(let I=0;I<G;I+=1){const t=F+I,C=t*o,Q=I*g.width;for(let I=0;I<S;I+=1){const E=N+I;t<B&&E<i?A[C+E]=g[e][Q+I]:console.log("error in assigning data to tile buffer")}}for(let g=0;g<A.length;g+=1)I[g*this.options.numOfChannels+e]=A[g]}return[I]}return[await t.readRasters({window:k,interleave:!0})]}createEmptyTile(){const A=this.options.numOfChannels||1,g=this.tileSize*this.tileSize*A,I=new Float32Array(g);return void 0!==this.options.noDataValue&&I.fill(this.options.noDataValue),I}async getTile(A,g,I,e,t){const B=await this.getTileFromImage(A,g,I);return this.geo.getMap({rasters:[B[0]],width:this.tileSize,height:this.tileSize,bounds:e},this.options,t)}async getDataTypeFromTags(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 e=A.getValue("SampleFormat"),t=A.getValue("BitsPerSample"),B=e&&"number"==typeof e.length&&e.length>0?e[0]:e;let i;return i=1===B?"UInt":2===B?"Int":3===B?"Float":"Unknown",`${i}${t&&"number"==typeof t.length&&t.length>0?t[0]:t}`}getNoDataValue(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 e=Number(I);return"nan"===I.toLowerCase()?NaN:Number.isNaN(e)?void console.warn(`Failed to parse numeric noData value: '${I}'`):e}createTileBuffer(A,g){const I=g*g;switch(A){case"UInt8":return new Uint8Array(I);case"Int8":return new Int8Array(I);case"UInt16":return new Uint16Array(I);case"Int16":return new Int16Array(I);case"UInt32":return new Uint32Array(I);case"Int32":return new Int32Array(I);case"Float32":return new Float32Array(I);case"Float64":return new Float64Array(I);default:throw new Error(`Unsupported data type: ${A}`)}}}const Zg={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 e=0;e<I;e++)if(A[e]!==g[e])return!1;return!0}},Vg={...g.TileLayer.defaultProps,bounds:{type:"array",value:null,optional:!0,compare:!0},rasterData:Zg,clampToTerrain:!1,workerUrl:""};class zg extends A.CompositeLayer{static defaultProps=Vg;static layerName="CogBitmapLayer";async initializeState(A){super.initializeState(A),this.setState({bitmapCogTiles:this.props.cogTiles||new Pg(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 e=g.rasterData!==I.rasterData;if(e){const{rasterData:A}=g,I=A&&(Array.isArray(A)||A.includes("{x}")&&A.includes("{y}")||this.props.isTiled);this.setState({isTiled:I})}e||(g.bounds,I.bounds);this.state.isTiled,g?.cogBitmapOptions?.useChannel&&g.cogBitmapOptions?.useChannel!==I.cogBitmapOptions?.useChannel&&(this.state.bitmapCogTiles.options.useChannel=g.cogBitmapOptions.useChannel),g.workerUrl&&A.log.removed("workerUrl","loadOptions.terrain.workerUrl")()}async getTiledBitmapData(A){return await this.state.bitmapCogTiles.getTile(A.index.x,A.index.y,A.index.z)}renderSubLayers(A){const g=this.getSubLayerClass("image",I.BitmapLayer),{blurredTexture:t}=this.state.bitmapCogTiles.options,{clampToTerrain:B}=this.props,i="object"==typeof B&&null!==B&&"terrainDrawMode"in B,{data:C}=A;if(!C)return null;const{bbox:{west:Q,south:E,east:s,north:a}}=A.tile;return new g({...A,tileSize:this.state.bitmapCogTiles.tileSize},{data:null,image:C,_instanced:!1,bounds:[Q,E,s,a],textureParameters:{minFilter:t?"linear":"nearest",magFilter:t?"linear":"nearest"},extensions:B?[new e._TerrainExtension]:[],...i?{terrainDrawMode:B.terrainDrawMode}:{}})}renderLayers(){const{clampToTerrain:A,maxRequests:I,onTileLoad:e,onTileUnload:t,onTileError:B,maxCacheSize:i,maxCacheByteSize:C,refinementStrategy:Q,cogBitmapOptions:E}=this.props;if(this.state.isTiled&&this.state.initialized){const{tileSize:s}=this.state.bitmapCogTiles;return new g.TileLayer(this.getSubLayerProps({id:"tiles"}),{getTileData:this.getTiledBitmapData.bind(this),renderSubLayers:this.renderSubLayers.bind(this),updateTriggers:{getTileData:[A,E.useChannel]},extent:this.state.bitmapCogTiles.getBoundsAsLatLon(),tileSize:s,minZoom:this.state.minZoom,maxZoom:this.state.maxZoom,maxRequests:I,onTileLoad:e,onTileUnload:t,onTileError:B,maxCacheSize:i,maxCacheByteSize:C,refinementStrategy:Q})}return null}}const jg={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 e=0;e<I;e++)if(A[e]!==g[e])return!1;return!0}},Wg=[1],Xg={...g.TileLayer.defaultProps,elevationData:jg,texture:{...jg,optional:!0},meshMaxError:{type:"number",value:4},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 $g extends A.CompositeLayer{static defaultProps=Xg;static layerName="CogTerrainLayer";terrainUrl;async initializeState(A){super.initializeState(A),this.setState({terrainCogTiles:this.props.cogTiles||new Pg(this.props.terrainOptions),initialized:!1}),await this.init(this.terrainUrl)}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 e=g.elevationData!==I.elevationData;if(e){const{elevationData:A}=g,I=A&&(Array.isArray(A)||A.includes("{x}")&&A.includes("{y}"))||this.props.isTiled;this.setState({isTiled:I})}e||g.meshMaxError!==I.meshMaxError||g.elevationDecoder!==I.elevationDecoder||(g.bounds,I.bounds);this.state.isTiled,g.workerUrl&&A.log.removed("workerUrl","loadOptions.terrain.workerUrl")()}loadTerrain({elevationData:A,bounds:g,elevationDecoder:I,meshMaxError:e,signal:t}){if(!A)return null;let B=this.getLoadOptions();B={...B,_workerType:"test",terrain:{skirtHeight:this.state.isTiled?2*e:0,...B?.terrain,bounds:g,meshMaxError:e,elevationDecoder:I}};const{fetch:i}=this.props;return i(A,{propName:"elevationData",layer:this,loadOptions:B,signal:t,loaders:[]})}async getTiledTerrainData(A){const{viewport:g}=this.context;let I=[0,0],e=[0,0];if(g.isGeospatial){const t=A.bbox;I=g.projectFlat([t.west,t.south]),e=g.projectFlat([t.east,t.north])}else{const g=A.bbox;I=[g.left,g.bottom],e=[g.right,g.top]}const t=[I[0],I[1],e[0],e[1]],B=await this.state.terrainCogTiles.getTile(A.index.x,A.index.y,A.index.z,t,this.props.meshMaxError);return Promise.all([B,null])}renderSubLayers(g){const I=this.getSubLayerClass("mesh",Q.SimpleMeshLayer),{color:e,wireframe:t,material:B}=this.props,{data:i}=g;if(!i)return null;const[C]=i;return new I({...g,tileSize:256},{data:Wg,mesh:C,_instanced:!1,coordinateSystem:A.COORDINATE_SYSTEM.CARTESIAN,getColor:e,wireframe:t,material:B})}onViewportLoad(A){if(!A)return;const{zRange:g}=this.state,I=A.map(A=>A.content).filter(A=>A&&A[0]).map(A=>{const g=A[0]?.header?.boundingBox;return g?.map(A=>A[2])});if(0===I.length)return;const e=Math.min(...I.map(A=>A[0])),t=Math.max(...I.map(A=>A[1]));(!g||e<g[0]||t>g[1])&&this.setState({zRange:[Number.isFinite(e)?e:0,Number.isFinite(t)?t:0]})}renderLayers(){const{elevationData:A,meshMaxError:I,elevationDecoder:e,tileSize:t,extent:B,maxRequests:i,onTileLoad:C,onTileUnload:Q,onTileError:E,maxCacheSize:s,maxCacheByteSize:a,refinementStrategy:o}=this.props;if(this.state.isTiled&&this.state.initialized)return new g.TileLayer(this.getSubLayerProps({id:"tiles"}),{getTileData:this.getTiledTerrainData.bind(this),renderSubLayers:this.renderSubLayers.bind(this),updateTriggers:{getTileData:{elevationData:(r=A,Array.isArray(r)?r.join(";"):r||""),meshMaxError:I,elevationDecoder:e}},onViewportLoad:this.onViewportLoad.bind(this),zRange:this.state.zRange||null,tileSize:t,minZoom:this.state.minZoom,maxZoom:this.state.maxZoom,extent:B,maxRequests:i,onTileLoad:C,onTileUnload:Q,onTileError:E,maxCacheSize:s,maxCacheByteSize:a,refinementStrategy:o});var r}}var AI=Object.freeze({__proto__:null,default:class extends Ng{decodeBlock(A){return A}}});function gI(A,g){for(let I=g.length-1;I>=0;I--)A.push(g[I]);return A}function II(A){const g=new Uint16Array(4093),I=new Uint8Array(4093);for(let A=0;A<=257;A++)g[A]=4096,I[A]=A;let e=258,t=9,B=0;function i(){e=258,t=9}function C(A){const g=function(A,g,I){const e=g%8,t=Math.floor(g/8),B=8-e,i=g+I-8*(t+1);let C=8*(t+2)-(g+I);const Q=8*(t+2)-g;if(C=Math.max(0,C),t>=A.length)return console.warn("ran off the end of the buffer before finding EOI_CODE (end on input code)"),257;let E=A[t]&2**(8-e)-1;E<<=I-B;let s=E;if(t+1<A.length){let g=A[t+1]>>>C;g<<=Math.max(0,I-Q),s+=g}if(i>8&&t+2<A.length){const e=8*(t+3)-(g+I);s+=A[t+2]>>>e}return s}(A,B,t);return B+=t,g}function Q(A,t){return I[e]=t,g[e]=A,e++,e-1}function E(A){const e=[];for(let t=A;4096!==t;t=g[t])e.push(I[t]);return e}const s=[];i();const a=new Uint8Array(A);let o,r=C(a);for(;257!==r;){if(256===r){for(i(),r=C(a);256===r;)r=C(a);if(257===r)break;if(r>256)throw new Error(`corrupted code at scanline ${r}`);gI(s,E(r)),o=r}else if(r<e){const A=E(r);gI(s,A),Q(o,A[A.length-1]),o=r}else{const A=E(o);if(!A)throw new Error(`Bogus entry. Not in dictionary, ${o} / ${e}, position: ${B}`);gI(s,A),s.push(A[A.length-1]),Q(o,A[A.length-1]),o=r}e+1>=2**t&&(12===t?o=void 0:t++),r=C(a)}return new Uint8Array(s)}var eI=Object.freeze({__proto__:null,default:class extends Ng{decodeBlock(A){return II(A).buffer}}});const tI=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]),BI=4017,iI=799,CI=3406,QI=2276,EI=1567,sI=3784,aI=5793,oI=2896;function rI(A,g){let I=0;const e=[];let t=16;for(;t>0&&!A[t-1];)--t;e.push({children:[],index:0});let B,i=e[0];for(let C=0;C<t;C++){for(let t=0;t<A[C];t++){if(i=e.pop(),!i)throw new Error("buildHuffmanTable: codeLength mismatch");for(i.children[i.index]=g[I];i.index>0;)if(i=e.pop(),!i)throw new Error("buildHuffmanTable: codeLength mismatch");for(i.index++,e.push(i);e.length<=C;)e.push(B={children:[],index:0}),i.children[i.index]=B.children,i=B;I++}C+1<t&&(e.push(B={children:[],index:0}),i.children[i.index]=B.children,i=B)}return e[0].children}function nI(A,g,I,e,t,B,i,C,Q){const{mcusPerLine:E,progressive:s}=I,a=g;let o=g,r=0,n=0;function h(){if(n>0)return n--,r>>n&1;if(r=A[o++],255===r){const g=A[o++];if(g)throw new Error(`unexpected marker: ${(r<<8|g).toString(16)}`)}return n=7,r>>>7}function l(A){let g,I=A;for(;null!==(g=h());){if(I=I[g],"number"==typeof I)return I;if("object"!=typeof I)throw new Error("invalid huffman sequence")}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 f(A,g,I,e,t){const B=I%E,i=(I/E|0)*A.v+e,C=B*A.h+t;g(A,A.blocks[i][C])}function u(A,g,I){const e=I/A.blocksPerLine|0,t=I%A.blocksPerLine;g(A,A.blocks[e][t])}const S=e.length;let G,N,F,k,R,L;L=s?0===B?0===C?function(A,g){const I=l(A.huffmanTableDC),e=w(I);if(void 0===e)throw new Error("Unexpected end of data in DC coefficient decoding");const t=0===I?0:e<<Q;A.pred+=t,g[0]=A.pred}:function(A,g){g[0]|=h()<<Q}:0===C?function(A,g){if(D>0)return void D--;let I=B;const e=i;for(;I<=e;){const e=l(A.huffmanTableAC);if(null===e)throw new Error("Unexpected end of data in AC coefficient decoding");const t=15&e,B=e>>4;if(0===t){if(B<15){const A=c(B);if(void 0===A)throw new Error("Unexpected end of data in AC coefficient decoding");D=A+(1<<B)-1;break}I+=16}else{I+=B;const A=tI[I],e=w(t);if(void 0===e)throw new Error("Unexpected end of data in AC coefficient decoding");g[A]=e*(1<<Q),I++}}}:function(A,g){let I=B;const e=i;let t=0;for(;I<=e;){const e=tI[I],B=g[e]<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(t=g>>4,0===I)if(t<15){const A=c(t);if(void 0===A)throw new Error("Unexpected end of data in AC coefficient decoding");D=A+(1<<t),y=4}else t=16,y=1;else{if(1!==I)throw new Error("invalid ACn encoding");d=w(I),y=t?2:3}continue}case 1:case 2:g[e]?g[e]+=(h()<<Q)*B:(t--,0===t&&(y=2===y?3:0));break;case 3:g[e]?g[e]+=(h()<<Q)*B:(g[e]=d<<Q,y=0);break;case 4:g[e]&&(g[e]+=(h()<<Q)*B)}I++}4===y&&(D--,0===D&&(y=0))}:function(A,g){const I=l(A.huffmanTableDC),e=0===I?0:w(I);A.pred+=e,g[0]=A.pred;let t=1;for(;t<64;){const I=l(A.huffmanTableAC);if(null===I)throw new Error("Unexpected end of data in AC coefficient decoding");const e=15&I,B=I>>4;if(0===e){if(B<15)break;t+=16}else t+=B,g[tI[t]]=w(e),t++}};let U,m,p=0;m=1===S?e[0].blocksPerLine*e[0].blocksPerColumn:E*I.mcusPerColumn;const Y=t||m;for(;p<m;){for(N=0;N<S;N++)e[N].pred=0;if(D=0,1===S)for(G=e[0],R=0;R<Y;R++)u(G,L,p),p++;else for(R=0;R<Y;R++){for(N=0;N<S;N++){G=e[N];const{h:A,v:g}=G;for(F=0;F<g;F++)for(k=0;k<A;k++)f(G,L,p,F,k)}if(p++,p===m)break}if(n=0,U=A[o]<<8|A[o+1],U<65280)throw new Error("marker was not found");if(!(U>=65488&&U<=65495))break;o+=2}return o-a}function hI(A,g){const I=[],{blocksPerLine:e,blocksPerColumn:t}=g,B=e<<3,i=new Int32Array(64),C=new Uint8Array(64);function Q(A,I,e){const t=g.quantizationTable;let B,i,C,Q,E,s,a,o,r;const n=e;let h;for(h=0;h<64;h++)n[h]=A[h]*t[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]?(B=aI*n[0+A]+128>>8,i=aI*n[4+A]+128>>8,C=n[2+A],Q=n[6+A],E=oI*(n[1+A]-n[7+A])+128>>8,o=oI*(n[1+A]+n[7+A])+128>>8,s=n[3+A]<<4,a=n[5+A]<<4,r=B-i+1>>1,B=B+i+1>>1,i=r,r=C*sI+Q*EI+128>>8,C=C*EI-Q*sI+128>>8,Q=r,r=E-a+1>>1,E=E+a+1>>1,a=r,r=o+s+1>>1,s=o-s+1>>1,o=r,r=B-Q+1>>1,B=B+Q+1>>1,Q=r,r=i-C+1>>1,i=i+C+1>>1,C=r,r=E*QI+o*CI+2048>>12,E=E*CI-o*QI+2048>>12,o=r,r=s*iI+a*BI+2048>>12,s=s*BI-a*iI+2048>>12,a=r,n[0+A]=B+o,n[7+A]=B-o,n[1+A]=i+a,n[6+A]=i-a,n[2+A]=C+s,n[5+A]=C-s,n[3+A]=Q+E,n[4+A]=Q-E):(r=aI*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]?(B=aI*n[0+A]+2048>>12,i=aI*n[32+A]+2048>>12,C=n[16+A],Q=n[48+A],E=oI*(n[8+A]-n[56+A])+2048>>12,o=oI*(n[8+A]+n[56+A])+2048>>12,s=n[24+A],a=n[40+A],r=B-i+1>>1,B=B+i+1>>1,i=r,r=C*sI+Q*EI+2048>>12,C=C*EI-Q*sI+2048>>12,Q=r,r=E-a+1>>1,E=E+a+1>>1,a=r,r=o+s+1>>1,s=o-s+1>>1,o=r,r=B-Q+1>>1,B=B+Q+1>>1,Q=r,r=i-C+1>>1,i=i+C+1>>1,C=r,r=E*QI+o*CI+2048>>12,E=E*CI-o*QI+2048>>12,o=r,r=s*iI+a*BI+2048>>12,s=s*BI-a*iI+2048>>12,a=r,n[0+A]=B+o,n[56+A]=B-o,n[8+A]=i+a,n[48+A]=i-a,n[16+A]=C+s,n[40+A]=C-s,n[24+A]=Q+E,n[32+A]=Q-E):(r=aI*e[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 A=0;A<t;A++){const t=A<<3;for(let A=0;A<8;A++)I.push(new Uint8Array(B));for(let B=0;B<e;B++){Q(g.blocks[A][B],C,i);let e=0;const E=B<<3;for(let A=0;A<8;A++){const g=I[t+A];for(let A=0;A<8;A++)g[E+A]=C[e++]}}}return I}class lI{constructor(){this.jfif=null,this.adobe=null,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 e(){const e=I(),t=A.subarray(g,g+e-2);return g+=t.length,t}function t(A){let g,I,e=0,t=0;for(I in A.components)A.components.hasOwnProperty(I)&&(g=A.components[I],e<g.h&&(e=g.h),t<g.v&&(t=g.v));const B=Math.ceil(A.samplesPerLine/8/e),i=Math.ceil(A.scanLines/8/t);for(I in A.components)if(A.components.hasOwnProperty(I)){g=A.components[I];const C=Math.ceil(Math.ceil(A.samplesPerLine/8)*g.h/e),Q=Math.ceil(Math.ceil(A.scanLines/8)*g.v/t),E=B*g.h,s=i*g.v,a=[];for(let A=0;A<s;A++){const A=[];for(let g=0;g<E;g++)A.push(new Int32Array(64));a.push(A)}g.blocksPerLine=C,g.blocksPerColumn=Q,g.blocks=a}A.maxH=e,A.maxV=t,A.mcusPerLine=B,A.mcusPerColumn=i}let B=I();if(65496!==B)throw new Error("SOI not found");for(B=I();65497!==B;){switch(B){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=e();65504===B&&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===B&&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 e=I()+g-2;for(;g<e;){const e=A[g++],t=new Int32Array(64);if(e>>4){if(e>>4!=1)throw new Error("DQT: invalid table spec");for(let A=0;A<64;A++){t[tI[A]]=I()}}else for(let I=0;I<64;I++){t[tI[I]]=A[g++]}this.quantizationTables[15&e]=t}break}case 65472:case 65473:case 65474:{I();const e={extended:65473===B,progressive:65474===B,precision:A[g++],scanLines:I(),samplesPerLine:I(),components:{},componentsOrder:[]},i=A[g++];let C;for(let I=0;I<i;I++){C=A[g];const I=A[g+1]>>4,t=15&A[g+1],B=A[g+2];e.componentsOrder.push(C),e.components[C]={h:I,v:t,quantizationIdx:B},g+=3}t(e),this.frames.push(e);break}case 65476:{const e=I();for(let I=2;I<e;){const e=A[g++],t=new Uint8Array(16);let B=0;for(let I=0;I<16;I++,g++)t[I]=A[g],B+=t[I];const i=new Uint8Array(B);for(let I=0;I<B;I++,g++)i[I]=A[g];I+=17+B,e>>4?this.huffmanTablesAC[15&e]=rI(t,i):this.huffmanTablesDC[15&e]=rI(t,i)}break}case 65501:I(),this.resetInterval=I();break;case 65498:{I();const e=A[g++],t=[],B=this.frames[0];for(let I=0;I<e;I++){const I=B.components[A[g++]],e=A[g++];I.huffmanTableDC=this.huffmanTablesDC[e>>4],I.huffmanTableAC=this.huffmanTablesAC[15&e],t.push(I)}const i=A[g++],C=A[g++],Q=A[g++],E=nI(A,g,B,t,this.resetInterval,i,C,Q>>4,15&Q);g+=E;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 ${B.toString(16)}`)}B=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))g[A].quantizationTable=this.quantizationTables[g[A].quantizationIdx],delete g[A].quantizationIdx}const g=A[0],{components:I,componentsOrder:e}=g,t=[],B=g.samplesPerLine,i=g.scanLines;for(let A=0;A<e.length;A++){const B=I[e[A]];t.push({lines:hI(0,B),scaleX:B.h/g.maxH,scaleY:B.v/g.maxV})}const C=new Uint8Array(B*i*t.length);let Q=0;for(let A=0;A<i;++A)for(let g=0;g<B;++g)for(let I=0;I<t.length;++I){const e=t[I];C[Q]=e.lines[0|A*e.scaleY][0|g*e.scaleX],++Q}return C}}var cI=Object.freeze({__proto__:null,default:class extends Ng{constructor(A){super(A),this.reader=new lI,A.JPEGTables&&this.reader.parse(A.JPEGTables)}decodeBlock(A){return this.reader.resetFrames(),this.reader.parse(new Uint8Array(A)),this.reader.getResult().buffer}}});
|
|
2
|
+
/*! pako 2.1.0 https://github.com/nodeca/pako @license (MIT AND Zlib) */function wI(A){let g=A.length;for(;--g>=0;)A[g]=0}const DI=256,dI=286,yI=30,fI=15,uI=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),SI=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),GI=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),NI=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),FI=new Array(576);wI(FI);const kI=new Array(60);wI(kI);const RI=new Array(512);wI(RI);const LI=new Array(256);wI(LI);const UI=new Array(29);wI(UI);const mI=new Array(yI);function pI(A,g,I,e,t){this.static_tree=A,this.extra_bits=g,this.extra_base=I,this.elems=e,this.max_length=t,this.has_stree=A&&A.length}let YI,MI,KI;function bI(A,g){this.dyn_tree=A,this.max_code=0,this.stat_desc=g}wI(mI);const JI=A=>A<256?RI[A]:RI[256+(A>>>7)],HI=(A,g)=>{A.pending_buf[A.pending++]=255&g,A.pending_buf[A.pending++]=g>>>8&255},qI=(A,g,I)=>{A.bi_valid>16-I?(A.bi_buf|=g<<A.bi_valid&65535,HI(A,A.bi_buf),A.bi_buf=g>>16-A.bi_valid,A.bi_valid+=I-16):(A.bi_buf|=g<<A.bi_valid&65535,A.bi_valid+=I)},xI=(A,g,I)=>{qI(A,I[2*g],I[2*g+1])},_I=(A,g)=>{let I=0;do{I|=1&A,A>>>=1,I<<=1}while(--g>0);return I>>>1},TI=(A,g,I)=>{const e=new Array(16);let t,B,i=0;for(t=1;t<=fI;t++)i=i+I[t-1]<<1,e[t]=i;for(B=0;B<=g;B++){let g=A[2*B+1];0!==g&&(A[2*B]=_I(e[g]++,g))}},OI=A=>{let g;for(g=0;g<dI;g++)A.dyn_ltree[2*g]=0;for(g=0;g<yI;g++)A.dyn_dtree[2*g]=0;for(g=0;g<19;g++)A.bl_tree[2*g]=0;A.dyn_ltree[512]=1,A.opt_len=A.static_len=0,A.sym_next=A.matches=0},vI=A=>{A.bi_valid>8?HI(A,A.bi_buf):A.bi_valid>0&&(A.pending_buf[A.pending++]=A.bi_buf),A.bi_buf=0,A.bi_valid=0},PI=(A,g,I,e)=>{const t=2*g,B=2*I;return A[t]<A[B]||A[t]===A[B]&&e[g]<=e[I]},ZI=(A,g,I)=>{const e=A.heap[I];let t=I<<1;for(;t<=A.heap_len&&(t<A.heap_len&&PI(g,A.heap[t+1],A.heap[t],A.depth)&&t++,!PI(g,e,A.heap[t],A.depth));)A.heap[I]=A.heap[t],I=t,t<<=1;A.heap[I]=e},VI=(A,g,I)=>{let e,t,B,i,C=0;if(0!==A.sym_next)do{e=255&A.pending_buf[A.sym_buf+C++],e+=(255&A.pending_buf[A.sym_buf+C++])<<8,t=A.pending_buf[A.sym_buf+C++],0===e?xI(A,t,g):(B=LI[t],xI(A,B+DI+1,g),i=uI[B],0!==i&&(t-=UI[B],qI(A,t,i)),e--,B=JI(e),xI(A,B,I),i=SI[B],0!==i&&(e-=mI[B],qI(A,e,i)))}while(C<A.sym_next);xI(A,256,g)},zI=(A,g)=>{const I=g.dyn_tree,e=g.stat_desc.static_tree,t=g.stat_desc.has_stree,B=g.stat_desc.elems;let i,C,Q,E=-1;for(A.heap_len=0,A.heap_max=573,i=0;i<B;i++)0!==I[2*i]?(A.heap[++A.heap_len]=E=i,A.depth[i]=0):I[2*i+1]=0;for(;A.heap_len<2;)Q=A.heap[++A.heap_len]=E<2?++E:0,I[2*Q]=1,A.depth[Q]=0,A.opt_len--,t&&(A.static_len-=e[2*Q+1]);for(g.max_code=E,i=A.heap_len>>1;i>=1;i--)ZI(A,I,i);Q=B;do{i=A.heap[1],A.heap[1]=A.heap[A.heap_len--],ZI(A,I,1),C=A.heap[1],A.heap[--A.heap_max]=i,A.heap[--A.heap_max]=C,I[2*Q]=I[2*i]+I[2*C],A.depth[Q]=(A.depth[i]>=A.depth[C]?A.depth[i]:A.depth[C])+1,I[2*i+1]=I[2*C+1]=Q,A.heap[1]=Q++,ZI(A,I,1)}while(A.heap_len>=2);A.heap[--A.heap_max]=A.heap[1],((A,g)=>{const I=g.dyn_tree,e=g.max_code,t=g.stat_desc.static_tree,B=g.stat_desc.has_stree,i=g.stat_desc.extra_bits,C=g.stat_desc.extra_base,Q=g.stat_desc.max_length;let E,s,a,o,r,n,h=0;for(o=0;o<=fI;o++)A.bl_count[o]=0;for(I[2*A.heap[A.heap_max]+1]=0,E=A.heap_max+1;E<573;E++)s=A.heap[E],o=I[2*I[2*s+1]+1]+1,o>Q&&(o=Q,h++),I[2*s+1]=o,s>e||(A.bl_count[o]++,r=0,s>=C&&(r=i[s-C]),n=I[2*s],A.opt_len+=n*(o+r),B&&(A.static_len+=n*(t[2*s+1]+r)));if(0!==h){do{for(o=Q-1;0===A.bl_count[o];)o--;A.bl_count[o]--,A.bl_count[o+1]+=2,A.bl_count[Q]--,h-=2}while(h>0);for(o=Q;0!==o;o--)for(s=A.bl_count[o];0!==s;)a=A.heap[--E],a>e||(I[2*a+1]!==o&&(A.opt_len+=(o-I[2*a+1])*I[2*a],I[2*a+1]=o),s--)}})(A,g),TI(I,E,A.bl_count)},jI=(A,g,I)=>{let e,t,B=-1,i=g[1],C=0,Q=7,E=4;for(0===i&&(Q=138,E=3),g[2*(I+1)+1]=65535,e=0;e<=I;e++)t=i,i=g[2*(e+1)+1],++C<Q&&t===i||(C<E?A.bl_tree[2*t]+=C:0!==t?(t!==B&&A.bl_tree[2*t]++,A.bl_tree[32]++):C<=10?A.bl_tree[34]++:A.bl_tree[36]++,C=0,B=t,0===i?(Q=138,E=3):t===i?(Q=6,E=3):(Q=7,E=4))},WI=(A,g,I)=>{let e,t,B=-1,i=g[1],C=0,Q=7,E=4;for(0===i&&(Q=138,E=3),e=0;e<=I;e++)if(t=i,i=g[2*(e+1)+1],!(++C<Q&&t===i)){if(C<E)do{xI(A,t,A.bl_tree)}while(0!==--C);else 0!==t?(t!==B&&(xI(A,t,A.bl_tree),C--),xI(A,16,A.bl_tree),qI(A,C-3,2)):C<=10?(xI(A,17,A.bl_tree),qI(A,C-3,3)):(xI(A,18,A.bl_tree),qI(A,C-11,7));C=0,B=t,0===i?(Q=138,E=3):t===i?(Q=6,E=3):(Q=7,E=4)}};let XI=!1;const $I=(A,g,I,e)=>{qI(A,0+(e?1:0),3),vI(A),HI(A,I),HI(A,~I),I&&A.pending_buf.set(A.window.subarray(g,g+I),A.pending),A.pending+=I};var Ae=(A,g,I,e)=>{let t,B,i=0;A.level>0?(2===A.strm.data_type&&(A.strm.data_type=(A=>{let g,I=4093624447;for(g=0;g<=31;g++,I>>>=1)if(1&I&&0!==A.dyn_ltree[2*g])return 0;if(0!==A.dyn_ltree[18]||0!==A.dyn_ltree[20]||0!==A.dyn_ltree[26])return 1;for(g=32;g<DI;g++)if(0!==A.dyn_ltree[2*g])return 1;return 0})(A)),zI(A,A.l_desc),zI(A,A.d_desc),i=(A=>{let g;for(jI(A,A.dyn_ltree,A.l_desc.max_code),jI(A,A.dyn_dtree,A.d_desc.max_code),zI(A,A.bl_desc),g=18;g>=3&&0===A.bl_tree[2*NI[g]+1];g--);return A.opt_len+=3*(g+1)+5+5+4,g})(A),t=A.opt_len+3+7>>>3,B=A.static_len+3+7>>>3,B<=t&&(t=B)):t=B=I+5,I+4<=t&&-1!==g?$I(A,g,I,e):4===A.strategy||B===t?(qI(A,2+(e?1:0),3),VI(A,FI,kI)):(qI(A,4+(e?1:0),3),((A,g,I,e)=>{let t;for(qI(A,g-257,5),qI(A,I-1,5),qI(A,e-4,4),t=0;t<e;t++)qI(A,A.bl_tree[2*NI[t]+1],3);WI(A,A.dyn_ltree,g-1),WI(A,A.dyn_dtree,I-1)})(A,A.l_desc.max_code+1,A.d_desc.max_code+1,i+1),VI(A,A.dyn_ltree,A.dyn_dtree)),OI(A),e&&vI(A)},ge={_tr_init:A=>{XI||((()=>{let A,g,I,e,t;const B=new Array(16);for(I=0,e=0;e<28;e++)for(UI[e]=I,A=0;A<1<<uI[e];A++)LI[I++]=e;for(LI[I-1]=e,t=0,e=0;e<16;e++)for(mI[e]=t,A=0;A<1<<SI[e];A++)RI[t++]=e;for(t>>=7;e<yI;e++)for(mI[e]=t<<7,A=0;A<1<<SI[e]-7;A++)RI[256+t++]=e;for(g=0;g<=fI;g++)B[g]=0;for(A=0;A<=143;)FI[2*A+1]=8,A++,B[8]++;for(;A<=255;)FI[2*A+1]=9,A++,B[9]++;for(;A<=279;)FI[2*A+1]=7,A++,B[7]++;for(;A<=287;)FI[2*A+1]=8,A++,B[8]++;for(TI(FI,287,B),A=0;A<yI;A++)kI[2*A+1]=5,kI[2*A]=_I(A,5);YI=new pI(FI,uI,257,dI,fI),MI=new pI(kI,SI,0,yI,fI),KI=new pI(new Array(0),GI,0,19,7)})(),XI=!0),A.l_desc=new bI(A.dyn_ltree,YI),A.d_desc=new bI(A.dyn_dtree,MI),A.bl_desc=new bI(A.bl_tree,KI),A.bi_buf=0,A.bi_valid=0,OI(A)},_tr_stored_block:$I,_tr_flush_block:Ae,_tr_tally:(A,g,I)=>(A.pending_buf[A.sym_buf+A.sym_next++]=g,A.pending_buf[A.sym_buf+A.sym_next++]=g>>8,A.pending_buf[A.sym_buf+A.sym_next++]=I,0===g?A.dyn_ltree[2*I]++:(A.matches++,g--,A.dyn_ltree[2*(LI[I]+DI+1)]++,A.dyn_dtree[2*JI(g)]++),A.sym_next===A.sym_end),_tr_align:A=>{qI(A,2,3),xI(A,256,FI),(A=>{16===A.bi_valid?(HI(A,A.bi_buf),A.bi_buf=0,A.bi_valid=0):A.bi_valid>=8&&(A.pending_buf[A.pending++]=255&A.bi_buf,A.bi_buf>>=8,A.bi_valid-=8)})(A)}};var Ie=(A,g,I,e)=>{let t=65535&A,B=A>>>16&65535,i=0;for(;0!==I;){i=I>2e3?2e3:I,I-=i;do{t=t+g[e++]|0,B=B+t|0}while(--i);t%=65521,B%=65521}return t|B<<16};const ee=new Uint32Array((()=>{let A,g=[];for(var I=0;I<256;I++){A=I;for(var e=0;e<8;e++)A=1&A?3988292384^A>>>1:A>>>1;g[I]=A}return g})());var te=(A,g,I,e)=>{const t=ee,B=e+I;A^=-1;for(let I=e;I<B;I++)A=A>>>8^t[255&(A^g[I])];return-1^A},Be={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"},ie={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:Ce,_tr_stored_block:Qe,_tr_flush_block:Ee,_tr_tally:se,_tr_align:ae}=ge,{Z_NO_FLUSH:oe,Z_PARTIAL_FLUSH:re,Z_FULL_FLUSH:ne,Z_FINISH:he,Z_BLOCK:le,Z_OK:ce,Z_STREAM_END:we,Z_STREAM_ERROR:De,Z_DATA_ERROR:de,Z_BUF_ERROR:ye,Z_DEFAULT_COMPRESSION:fe,Z_FILTERED:ue,Z_HUFFMAN_ONLY:Se,Z_RLE:Ge,Z_FIXED:Ne,Z_DEFAULT_STRATEGY:Fe,Z_UNKNOWN:ke,Z_DEFLATED:Re}=ie,Le=258,Ue=262,me=42,pe=113,Ye=666,Me=(A,g)=>(A.msg=Be[g],g),Ke=A=>2*A-(A>4?9:0),be=A=>{let g=A.length;for(;--g>=0;)A[g]=0},Je=A=>{let g,I,e,t=A.w_size;g=A.hash_size,e=g;do{I=A.head[--e],A.head[e]=I>=t?I-t:0}while(--g);g=t,e=g;do{I=A.prev[--e],A.prev[e]=I>=t?I-t:0}while(--g)};let He=(A,g,I)=>(g<<A.hash_shift^I)&A.hash_mask;const qe=A=>{const g=A.state;let I=g.pending;I>A.avail_out&&(I=A.avail_out),0!==I&&(A.output.set(g.pending_buf.subarray(g.pending_out,g.pending_out+I),A.next_out),A.next_out+=I,g.pending_out+=I,A.total_out+=I,A.avail_out-=I,g.pending-=I,0===g.pending&&(g.pending_out=0))},xe=(A,g)=>{Ee(A,A.block_start>=0?A.block_start:-1,A.strstart-A.block_start,g),A.block_start=A.strstart,qe(A.strm)},_e=(A,g)=>{A.pending_buf[A.pending++]=g},Te=(A,g)=>{A.pending_buf[A.pending++]=g>>>8&255,A.pending_buf[A.pending++]=255&g},Oe=(A,g,I,e)=>{let t=A.avail_in;return t>e&&(t=e),0===t?0:(A.avail_in-=t,g.set(A.input.subarray(A.next_in,A.next_in+t),I),1===A.state.wrap?A.adler=Ie(A.adler,g,t,I):2===A.state.wrap&&(A.adler=te(A.adler,g,t,I)),A.next_in+=t,A.total_in+=t,t)},ve=(A,g)=>{let I,e,t=A.max_chain_length,B=A.strstart,i=A.prev_length,C=A.nice_match;const Q=A.strstart>A.w_size-Ue?A.strstart-(A.w_size-Ue):0,E=A.window,s=A.w_mask,a=A.prev,o=A.strstart+Le;let r=E[B+i-1],n=E[B+i];A.prev_length>=A.good_match&&(t>>=2),C>A.lookahead&&(C=A.lookahead);do{if(I=g,E[I+i]===n&&E[I+i-1]===r&&E[I]===E[B]&&E[++I]===E[B+1]){B+=2,I++;do{}while(E[++B]===E[++I]&&E[++B]===E[++I]&&E[++B]===E[++I]&&E[++B]===E[++I]&&E[++B]===E[++I]&&E[++B]===E[++I]&&E[++B]===E[++I]&&E[++B]===E[++I]&&B<o);if(e=Le-(o-B),B=o-Le,e>i){if(A.match_start=g,i=e,e>=C)break;r=E[B+i-1],n=E[B+i]}}}while((g=a[g&s])>Q&&0!==--t);return i<=A.lookahead?i:A.lookahead},Pe=A=>{const g=A.w_size;let I,e,t;do{if(e=A.window_size-A.lookahead-A.strstart,A.strstart>=g+(g-Ue)&&(A.window.set(A.window.subarray(g,g+g-e),0),A.match_start-=g,A.strstart-=g,A.block_start-=g,A.insert>A.strstart&&(A.insert=A.strstart),Je(A),e+=g),0===A.strm.avail_in)break;if(I=Oe(A.strm,A.window,A.strstart+A.lookahead,e),A.lookahead+=I,A.lookahead+A.insert>=3)for(t=A.strstart-A.insert,A.ins_h=A.window[t],A.ins_h=He(A,A.ins_h,A.window[t+1]);A.insert&&(A.ins_h=He(A,A.ins_h,A.window[t+3-1]),A.prev[t&A.w_mask]=A.head[A.ins_h],A.head[A.ins_h]=t,t++,A.insert--,!(A.lookahead+A.insert<3)););}while(A.lookahead<Ue&&0!==A.strm.avail_in)},Ze=(A,g)=>{let I,e,t,B=A.pending_buf_size-5>A.w_size?A.w_size:A.pending_buf_size-5,i=0,C=A.strm.avail_in;do{if(I=65535,t=A.bi_valid+42>>3,A.strm.avail_out<t)break;if(t=A.strm.avail_out-t,e=A.strstart-A.block_start,I>e+A.strm.avail_in&&(I=e+A.strm.avail_in),I>t&&(I=t),I<B&&(0===I&&g!==he||g===oe||I!==e+A.strm.avail_in))break;i=g===he&&I===e+A.strm.avail_in?1:0,Qe(A,0,0,i),A.pending_buf[A.pending-4]=I,A.pending_buf[A.pending-3]=I>>8,A.pending_buf[A.pending-2]=~I,A.pending_buf[A.pending-1]=~I>>8,qe(A.strm),e&&(e>I&&(e=I),A.strm.output.set(A.window.subarray(A.block_start,A.block_start+e),A.strm.next_out),A.strm.next_out+=e,A.strm.avail_out-=e,A.strm.total_out+=e,A.block_start+=e,I-=e),I&&(Oe(A.strm,A.strm.output,A.strm.next_out,I),A.strm.next_out+=I,A.strm.avail_out-=I,A.strm.total_out+=I)}while(0===i);return C-=A.strm.avail_in,C&&(C>=A.w_size?(A.matches=2,A.window.set(A.strm.input.subarray(A.strm.next_in-A.w_size,A.strm.next_in),0),A.strstart=A.w_size,A.insert=A.strstart):(A.window_size-A.strstart<=C&&(A.strstart-=A.w_size,A.window.set(A.window.subarray(A.w_size,A.w_size+A.strstart),0),A.matches<2&&A.matches++,A.insert>A.strstart&&(A.insert=A.strstart)),A.window.set(A.strm.input.subarray(A.strm.next_in-C,A.strm.next_in),A.strstart),A.strstart+=C,A.insert+=C>A.w_size-A.insert?A.w_size-A.insert:C),A.block_start=A.strstart),A.high_water<A.strstart&&(A.high_water=A.strstart),i?4:g!==oe&&g!==he&&0===A.strm.avail_in&&A.strstart===A.block_start?2:(t=A.window_size-A.strstart,A.strm.avail_in>t&&A.block_start>=A.w_size&&(A.block_start-=A.w_size,A.strstart-=A.w_size,A.window.set(A.window.subarray(A.w_size,A.w_size+A.strstart),0),A.matches<2&&A.matches++,t+=A.w_size,A.insert>A.strstart&&(A.insert=A.strstart)),t>A.strm.avail_in&&(t=A.strm.avail_in),t&&(Oe(A.strm,A.window,A.strstart,t),A.strstart+=t,A.insert+=t>A.w_size-A.insert?A.w_size-A.insert:t),A.high_water<A.strstart&&(A.high_water=A.strstart),t=A.bi_valid+42>>3,t=A.pending_buf_size-t>65535?65535:A.pending_buf_size-t,B=t>A.w_size?A.w_size:t,e=A.strstart-A.block_start,(e>=B||(e||g===he)&&g!==oe&&0===A.strm.avail_in&&e<=t)&&(I=e>t?t:e,i=g===he&&0===A.strm.avail_in&&I===e?1:0,Qe(A,A.block_start,I,i),A.block_start+=I,qe(A.strm)),i?3:1)},Ve=(A,g)=>{let I,e;for(;;){if(A.lookahead<Ue){if(Pe(A),A.lookahead<Ue&&g===oe)return 1;if(0===A.lookahead)break}if(I=0,A.lookahead>=3&&(A.ins_h=He(A,A.ins_h,A.window[A.strstart+3-1]),I=A.prev[A.strstart&A.w_mask]=A.head[A.ins_h],A.head[A.ins_h]=A.strstart),0!==I&&A.strstart-I<=A.w_size-Ue&&(A.match_length=ve(A,I)),A.match_length>=3)if(e=se(A,A.strstart-A.match_start,A.match_length-3),A.lookahead-=A.match_length,A.match_length<=A.max_lazy_match&&A.lookahead>=3){A.match_length--;do{A.strstart++,A.ins_h=He(A,A.ins_h,A.window[A.strstart+3-1]),I=A.prev[A.strstart&A.w_mask]=A.head[A.ins_h],A.head[A.ins_h]=A.strstart}while(0!==--A.match_length);A.strstart++}else A.strstart+=A.match_length,A.match_length=0,A.ins_h=A.window[A.strstart],A.ins_h=He(A,A.ins_h,A.window[A.strstart+1]);else e=se(A,0,A.window[A.strstart]),A.lookahead--,A.strstart++;if(e&&(xe(A,!1),0===A.strm.avail_out))return 1}return A.insert=A.strstart<2?A.strstart:2,g===he?(xe(A,!0),0===A.strm.avail_out?3:4):A.sym_next&&(xe(A,!1),0===A.strm.avail_out)?1:2},ze=(A,g)=>{let I,e,t;for(;;){if(A.lookahead<Ue){if(Pe(A),A.lookahead<Ue&&g===oe)return 1;if(0===A.lookahead)break}if(I=0,A.lookahead>=3&&(A.ins_h=He(A,A.ins_h,A.window[A.strstart+3-1]),I=A.prev[A.strstart&A.w_mask]=A.head[A.ins_h],A.head[A.ins_h]=A.strstart),A.prev_length=A.match_length,A.prev_match=A.match_start,A.match_length=2,0!==I&&A.prev_length<A.max_lazy_match&&A.strstart-I<=A.w_size-Ue&&(A.match_length=ve(A,I),A.match_length<=5&&(A.strategy===ue||3===A.match_length&&A.strstart-A.match_start>4096)&&(A.match_length=2)),A.prev_length>=3&&A.match_length<=A.prev_length){t=A.strstart+A.lookahead-3,e=se(A,A.strstart-1-A.prev_match,A.prev_length-3),A.lookahead-=A.prev_length-1,A.prev_length-=2;do{++A.strstart<=t&&(A.ins_h=He(A,A.ins_h,A.window[A.strstart+3-1]),I=A.prev[A.strstart&A.w_mask]=A.head[A.ins_h],A.head[A.ins_h]=A.strstart)}while(0!==--A.prev_length);if(A.match_available=0,A.match_length=2,A.strstart++,e&&(xe(A,!1),0===A.strm.avail_out))return 1}else if(A.match_available){if(e=se(A,0,A.window[A.strstart-1]),e&&xe(A,!1),A.strstart++,A.lookahead--,0===A.strm.avail_out)return 1}else A.match_available=1,A.strstart++,A.lookahead--}return A.match_available&&(e=se(A,0,A.window[A.strstart-1]),A.match_available=0),A.insert=A.strstart<2?A.strstart:2,g===he?(xe(A,!0),0===A.strm.avail_out?3:4):A.sym_next&&(xe(A,!1),0===A.strm.avail_out)?1:2};function je(A,g,I,e,t){this.good_length=A,this.max_lazy=g,this.nice_length=I,this.max_chain=e,this.func=t}const We=[new je(0,0,0,0,Ze),new je(4,4,8,4,Ve),new je(4,5,16,8,Ve),new je(4,6,32,32,Ve),new je(4,4,16,16,ze),new je(8,16,32,32,ze),new je(8,16,128,128,ze),new je(8,32,128,256,ze),new je(32,128,258,1024,ze),new je(32,258,258,4096,ze)];function Xe(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=Re,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),be(this.dyn_ltree),be(this.dyn_dtree),be(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),be(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),be(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const $e=A=>{if(!A)return 1;const g=A.state;return!g||g.strm!==A||g.status!==me&&57!==g.status&&69!==g.status&&73!==g.status&&91!==g.status&&103!==g.status&&g.status!==pe&&g.status!==Ye?1:0},At=A=>{if($e(A))return Me(A,De);A.total_in=A.total_out=0,A.data_type=ke;const g=A.state;return g.pending=0,g.pending_out=0,g.wrap<0&&(g.wrap=-g.wrap),g.status=2===g.wrap?57:g.wrap?me:pe,A.adler=2===g.wrap?0:1,g.last_flush=-2,Ce(g),ce},gt=A=>{const g=At(A);var I;return g===ce&&((I=A.state).window_size=2*I.w_size,be(I.head),I.max_lazy_match=We[I.level].max_lazy,I.good_match=We[I.level].good_length,I.nice_match=We[I.level].nice_length,I.max_chain_length=We[I.level].max_chain,I.strstart=0,I.block_start=0,I.lookahead=0,I.insert=0,I.match_length=I.prev_length=2,I.match_available=0,I.ins_h=0),g},It=(A,g,I,e,t,B)=>{if(!A)return De;let i=1;if(g===fe&&(g=6),e<0?(i=0,e=-e):e>15&&(i=2,e-=16),t<1||t>9||I!==Re||e<8||e>15||g<0||g>9||B<0||B>Ne||8===e&&1!==i)return Me(A,De);8===e&&(e=9);const C=new Xe;return A.state=C,C.strm=A,C.status=me,C.wrap=i,C.gzhead=null,C.w_bits=e,C.w_size=1<<C.w_bits,C.w_mask=C.w_size-1,C.hash_bits=t+7,C.hash_size=1<<C.hash_bits,C.hash_mask=C.hash_size-1,C.hash_shift=~~((C.hash_bits+3-1)/3),C.window=new Uint8Array(2*C.w_size),C.head=new Uint16Array(C.hash_size),C.prev=new Uint16Array(C.w_size),C.lit_bufsize=1<<t+6,C.pending_buf_size=4*C.lit_bufsize,C.pending_buf=new Uint8Array(C.pending_buf_size),C.sym_buf=C.lit_bufsize,C.sym_end=3*(C.lit_bufsize-1),C.level=g,C.strategy=B,C.method=I,gt(A)};var et={deflateInit:(A,g)=>It(A,g,Re,15,8,Fe),deflateInit2:It,deflateReset:gt,deflateResetKeep:At,deflateSetHeader:(A,g)=>$e(A)||2!==A.state.wrap?De:(A.state.gzhead=g,ce),deflate:(A,g)=>{if($e(A)||g>le||g<0)return A?Me(A,De):De;const I=A.state;if(!A.output||0!==A.avail_in&&!A.input||I.status===Ye&&g!==he)return Me(A,0===A.avail_out?ye:De);const e=I.last_flush;if(I.last_flush=g,0!==I.pending){if(qe(A),0===A.avail_out)return I.last_flush=-1,ce}else if(0===A.avail_in&&Ke(g)<=Ke(e)&&g!==he)return Me(A,ye);if(I.status===Ye&&0!==A.avail_in)return Me(A,ye);if(I.status===me&&0===I.wrap&&(I.status=pe),I.status===me){let g=Re+(I.w_bits-8<<4)<<8,e=-1;if(e=I.strategy>=Se||I.level<2?0:I.level<6?1:6===I.level?2:3,g|=e<<6,0!==I.strstart&&(g|=32),g+=31-g%31,Te(I,g),0!==I.strstart&&(Te(I,A.adler>>>16),Te(I,65535&A.adler)),A.adler=1,I.status=pe,qe(A),0!==I.pending)return I.last_flush=-1,ce}if(57===I.status)if(A.adler=0,_e(I,31),_e(I,139),_e(I,8),I.gzhead)_e(I,(I.gzhead.text?1:0)+(I.gzhead.hcrc?2:0)+(I.gzhead.extra?4:0)+(I.gzhead.name?8:0)+(I.gzhead.comment?16:0)),_e(I,255&I.gzhead.time),_e(I,I.gzhead.time>>8&255),_e(I,I.gzhead.time>>16&255),_e(I,I.gzhead.time>>24&255),_e(I,9===I.level?2:I.strategy>=Se||I.level<2?4:0),_e(I,255&I.gzhead.os),I.gzhead.extra&&I.gzhead.extra.length&&(_e(I,255&I.gzhead.extra.length),_e(I,I.gzhead.extra.length>>8&255)),I.gzhead.hcrc&&(A.adler=te(A.adler,I.pending_buf,I.pending,0)),I.gzindex=0,I.status=69;else if(_e(I,0),_e(I,0),_e(I,0),_e(I,0),_e(I,0),_e(I,9===I.level?2:I.strategy>=Se||I.level<2?4:0),_e(I,3),I.status=pe,qe(A),0!==I.pending)return I.last_flush=-1,ce;if(69===I.status){if(I.gzhead.extra){let g=I.pending,e=(65535&I.gzhead.extra.length)-I.gzindex;for(;I.pending+e>I.pending_buf_size;){let t=I.pending_buf_size-I.pending;if(I.pending_buf.set(I.gzhead.extra.subarray(I.gzindex,I.gzindex+t),I.pending),I.pending=I.pending_buf_size,I.gzhead.hcrc&&I.pending>g&&(A.adler=te(A.adler,I.pending_buf,I.pending-g,g)),I.gzindex+=t,qe(A),0!==I.pending)return I.last_flush=-1,ce;g=0,e-=t}let t=new Uint8Array(I.gzhead.extra);I.pending_buf.set(t.subarray(I.gzindex,I.gzindex+e),I.pending),I.pending+=e,I.gzhead.hcrc&&I.pending>g&&(A.adler=te(A.adler,I.pending_buf,I.pending-g,g)),I.gzindex=0}I.status=73}if(73===I.status){if(I.gzhead.name){let g,e=I.pending;do{if(I.pending===I.pending_buf_size){if(I.gzhead.hcrc&&I.pending>e&&(A.adler=te(A.adler,I.pending_buf,I.pending-e,e)),qe(A),0!==I.pending)return I.last_flush=-1,ce;e=0}g=I.gzindex<I.gzhead.name.length?255&I.gzhead.name.charCodeAt(I.gzindex++):0,_e(I,g)}while(0!==g);I.gzhead.hcrc&&I.pending>e&&(A.adler=te(A.adler,I.pending_buf,I.pending-e,e)),I.gzindex=0}I.status=91}if(91===I.status){if(I.gzhead.comment){let g,e=I.pending;do{if(I.pending===I.pending_buf_size){if(I.gzhead.hcrc&&I.pending>e&&(A.adler=te(A.adler,I.pending_buf,I.pending-e,e)),qe(A),0!==I.pending)return I.last_flush=-1,ce;e=0}g=I.gzindex<I.gzhead.comment.length?255&I.gzhead.comment.charCodeAt(I.gzindex++):0,_e(I,g)}while(0!==g);I.gzhead.hcrc&&I.pending>e&&(A.adler=te(A.adler,I.pending_buf,I.pending-e,e))}I.status=103}if(103===I.status){if(I.gzhead.hcrc){if(I.pending+2>I.pending_buf_size&&(qe(A),0!==I.pending))return I.last_flush=-1,ce;_e(I,255&A.adler),_e(I,A.adler>>8&255),A.adler=0}if(I.status=pe,qe(A),0!==I.pending)return I.last_flush=-1,ce}if(0!==A.avail_in||0!==I.lookahead||g!==oe&&I.status!==Ye){let e=0===I.level?Ze(I,g):I.strategy===Se?((A,g)=>{let I;for(;;){if(0===A.lookahead&&(Pe(A),0===A.lookahead)){if(g===oe)return 1;break}if(A.match_length=0,I=se(A,0,A.window[A.strstart]),A.lookahead--,A.strstart++,I&&(xe(A,!1),0===A.strm.avail_out))return 1}return A.insert=0,g===he?(xe(A,!0),0===A.strm.avail_out?3:4):A.sym_next&&(xe(A,!1),0===A.strm.avail_out)?1:2})(I,g):I.strategy===Ge?((A,g)=>{let I,e,t,B;const i=A.window;for(;;){if(A.lookahead<=Le){if(Pe(A),A.lookahead<=Le&&g===oe)return 1;if(0===A.lookahead)break}if(A.match_length=0,A.lookahead>=3&&A.strstart>0&&(t=A.strstart-1,e=i[t],e===i[++t]&&e===i[++t]&&e===i[++t])){B=A.strstart+Le;do{}while(e===i[++t]&&e===i[++t]&&e===i[++t]&&e===i[++t]&&e===i[++t]&&e===i[++t]&&e===i[++t]&&e===i[++t]&&t<B);A.match_length=Le-(B-t),A.match_length>A.lookahead&&(A.match_length=A.lookahead)}if(A.match_length>=3?(I=se(A,1,A.match_length-3),A.lookahead-=A.match_length,A.strstart+=A.match_length,A.match_length=0):(I=se(A,0,A.window[A.strstart]),A.lookahead--,A.strstart++),I&&(xe(A,!1),0===A.strm.avail_out))return 1}return A.insert=0,g===he?(xe(A,!0),0===A.strm.avail_out?3:4):A.sym_next&&(xe(A,!1),0===A.strm.avail_out)?1:2})(I,g):We[I.level].func(I,g);if(3!==e&&4!==e||(I.status=Ye),1===e||3===e)return 0===A.avail_out&&(I.last_flush=-1),ce;if(2===e&&(g===re?ae(I):g!==le&&(Qe(I,0,0,!1),g===ne&&(be(I.head),0===I.lookahead&&(I.strstart=0,I.block_start=0,I.insert=0))),qe(A),0===A.avail_out))return I.last_flush=-1,ce}return g!==he?ce:I.wrap<=0?we:(2===I.wrap?(_e(I,255&A.adler),_e(I,A.adler>>8&255),_e(I,A.adler>>16&255),_e(I,A.adler>>24&255),_e(I,255&A.total_in),_e(I,A.total_in>>8&255),_e(I,A.total_in>>16&255),_e(I,A.total_in>>24&255)):(Te(I,A.adler>>>16),Te(I,65535&A.adler)),qe(A),I.wrap>0&&(I.wrap=-I.wrap),0!==I.pending?ce:we)},deflateEnd:A=>{if($e(A))return De;const g=A.state.status;return A.state=null,g===pe?Me(A,de):ce},deflateSetDictionary:(A,g)=>{let I=g.length;if($e(A))return De;const e=A.state,t=e.wrap;if(2===t||1===t&&e.status!==me||e.lookahead)return De;if(1===t&&(A.adler=Ie(A.adler,g,I,0)),e.wrap=0,I>=e.w_size){0===t&&(be(e.head),e.strstart=0,e.block_start=0,e.insert=0);let A=new Uint8Array(e.w_size);A.set(g.subarray(I-e.w_size,I),0),g=A,I=e.w_size}const B=A.avail_in,i=A.next_in,C=A.input;for(A.avail_in=I,A.next_in=0,A.input=g,Pe(e);e.lookahead>=3;){let A=e.strstart,g=e.lookahead-2;do{e.ins_h=He(e,e.ins_h,e.window[A+3-1]),e.prev[A&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=A,A++}while(--g);e.strstart=A,e.lookahead=2,Pe(e)}return e.strstart+=e.lookahead,e.block_start=e.strstart,e.insert=e.lookahead,e.lookahead=0,e.match_length=e.prev_length=2,e.match_available=0,A.next_in=i,A.input=C,A.avail_in=B,e.wrap=t,ce},deflateInfo:"pako deflate (from Nodeca project)"};const tt=(A,g)=>Object.prototype.hasOwnProperty.call(A,g);var Bt=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)tt(I,g)&&(A[g]=I[g])}}return A},it=A=>{let g=0;for(let I=0,e=A.length;I<e;I++)g+=A[I].length;const I=new Uint8Array(g);for(let g=0,e=0,t=A.length;g<t;g++){let t=A[g];I.set(t,e),e+=t.length}return I};let Ct=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(A){Ct=!1}const Qt=new Uint8Array(256);for(let A=0;A<256;A++)Qt[A]=A>=252?6:A>=248?5:A>=240?4:A>=224?3:A>=192?2:1;Qt[254]=Qt[254]=1;var Et=A=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(A);let g,I,e,t,B,i=A.length,C=0;for(t=0;t<i;t++)I=A.charCodeAt(t),55296==(64512&I)&&t+1<i&&(e=A.charCodeAt(t+1),56320==(64512&e)&&(I=65536+(I-55296<<10)+(e-56320),t++)),C+=I<128?1:I<2048?2:I<65536?3:4;for(g=new Uint8Array(C),B=0,t=0;B<C;t++)I=A.charCodeAt(t),55296==(64512&I)&&t+1<i&&(e=A.charCodeAt(t+1),56320==(64512&e)&&(I=65536+(I-55296<<10)+(e-56320),t++)),I<128?g[B++]=I:I<2048?(g[B++]=192|I>>>6,g[B++]=128|63&I):I<65536?(g[B++]=224|I>>>12,g[B++]=128|I>>>6&63,g[B++]=128|63&I):(g[B++]=240|I>>>18,g[B++]=128|I>>>12&63,g[B++]=128|I>>>6&63,g[B++]=128|63&I);return g},st=(A,g)=>{const I=g||A.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(A.subarray(0,g));let e,t;const B=new Array(2*I);for(t=0,e=0;e<I;){let g=A[e++];if(g<128){B[t++]=g;continue}let i=Qt[g];if(i>4)B[t++]=65533,e+=i-1;else{for(g&=2===i?31:3===i?15:7;i>1&&e<I;)g=g<<6|63&A[e++],i--;i>1?B[t++]=65533:g<65536?B[t++]=g:(g-=65536,B[t++]=55296|g>>10&1023,B[t++]=56320|1023&g)}}return((A,g)=>{if(g<65534&&A.subarray&&Ct)return String.fromCharCode.apply(null,A.length===g?A:A.subarray(0,g));let I="";for(let e=0;e<g;e++)I+=String.fromCharCode(A[e]);return I})(B,t)},at=(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+Qt[A[I]]>g?I:g};var ot=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 rt=Object.prototype.toString,{Z_NO_FLUSH:nt,Z_SYNC_FLUSH:ht,Z_FULL_FLUSH:lt,Z_FINISH:ct,Z_OK:wt,Z_STREAM_END:Dt,Z_DEFAULT_COMPRESSION:dt,Z_DEFAULT_STRATEGY:yt,Z_DEFLATED:ft}=ie;function ut(A){this.options=Bt({level:dt,method:ft,chunkSize:16384,windowBits:15,memLevel:8,strategy:yt},A||{});let g=this.options;g.raw&&g.windowBits>0?g.windowBits=-g.windowBits:g.gzip&&g.windowBits>0&&g.windowBits<16&&(g.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new ot,this.strm.avail_out=0;let I=et.deflateInit2(this.strm,g.level,g.method,g.windowBits,g.memLevel,g.strategy);if(I!==wt)throw new Error(Be[I]);if(g.header&&et.deflateSetHeader(this.strm,g.header),g.dictionary){let A;if(A="string"==typeof g.dictionary?Et(g.dictionary):"[object ArrayBuffer]"===rt.call(g.dictionary)?new Uint8Array(g.dictionary):g.dictionary,I=et.deflateSetDictionary(this.strm,A),I!==wt)throw new Error(Be[I]);this._dict_set=!0}}ut.prototype.push=function(A,g){const I=this.strm,e=this.options.chunkSize;let t,B;if(this.ended)return!1;for(B=g===~~g?g:!0===g?ct:nt,"string"==typeof A?I.input=Et(A):"[object ArrayBuffer]"===rt.call(A)?I.input=new Uint8Array(A):I.input=A,I.next_in=0,I.avail_in=I.input.length;;)if(0===I.avail_out&&(I.output=new Uint8Array(e),I.next_out=0,I.avail_out=e),(B===ht||B===lt)&&I.avail_out<=6)this.onData(I.output.subarray(0,I.next_out)),I.avail_out=0;else{if(t=et.deflate(I,B),t===Dt)return I.next_out>0&&this.onData(I.output.subarray(0,I.next_out)),t=et.deflateEnd(this.strm),this.onEnd(t),this.ended=!0,t===wt;if(0!==I.avail_out){if(B>0&&I.next_out>0)this.onData(I.output.subarray(0,I.next_out)),I.avail_out=0;else if(0===I.avail_in)break}else this.onData(I.output)}return!0},ut.prototype.onData=function(A){this.chunks.push(A)},ut.prototype.onEnd=function(A){A===wt&&(this.result=it(this.chunks)),this.chunks=[],this.err=A,this.msg=this.strm.msg};const St=16209;var Gt=function(A,g){let I,e,t,B,i,C,Q,E,s,a,o,r,n,h,l,c,w,D,d,y,f,u,S,G;const N=A.state;I=A.next_in,S=A.input,e=I+(A.avail_in-5),t=A.next_out,G=A.output,B=t-(g-A.avail_out),i=t+(A.avail_out-257),C=N.dmax,Q=N.wsize,E=N.whave,s=N.wnext,a=N.window,o=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&&(o+=S[I++]<<r,r+=8,o+=S[I++]<<r,r+=8),w=n[o&l];g:for(;;){if(D=w>>>24,o>>>=D,r-=D,D=w>>>16&255,0===D)G[t++]=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=St;break A}w=n[(65535&w)+(o&(1<<D)-1)];continue g}for(d=65535&w,D&=15,D&&(r<D&&(o+=S[I++]<<r,r+=8),d+=o&(1<<D)-1,o>>>=D,r-=D),r<15&&(o+=S[I++]<<r,r+=8,o+=S[I++]<<r,r+=8),w=h[o&c];;){if(D=w>>>24,o>>>=D,r-=D,D=w>>>16&255,16&D){if(y=65535&w,D&=15,r<D&&(o+=S[I++]<<r,r+=8,r<D&&(o+=S[I++]<<r,r+=8)),y+=o&(1<<D)-1,y>C){A.msg="invalid distance too far back",N.mode=St;break A}if(o>>>=D,r-=D,D=t-B,y>D){if(D=y-D,D>E&&N.sane){A.msg="invalid distance too far back",N.mode=St;break A}if(f=0,u=a,0===s){if(f+=Q-D,D<d){d-=D;do{G[t++]=a[f++]}while(--D);f=t-y,u=G}}else if(s<D){if(f+=Q+s-D,D-=s,D<d){d-=D;do{G[t++]=a[f++]}while(--D);if(f=0,s<d){D=s,d-=D;do{G[t++]=a[f++]}while(--D);f=t-y,u=G}}}else if(f+=s-D,D<d){d-=D;do{G[t++]=a[f++]}while(--D);f=t-y,u=G}for(;d>2;)G[t++]=u[f++],G[t++]=u[f++],G[t++]=u[f++],d-=3;d&&(G[t++]=u[f++],d>1&&(G[t++]=u[f++]))}else{f=t-y;do{G[t++]=G[f++],G[t++]=G[f++],G[t++]=G[f++],d-=3}while(d>2);d&&(G[t++]=G[f++],d>1&&(G[t++]=G[f++]))}break}if(64&D){A.msg="invalid distance code",N.mode=St;break A}w=h[(65535&w)+(o&(1<<D)-1)]}}break}}while(I<e&&t<i);d=r>>3,I-=d,r-=d<<3,o&=(1<<r)-1,A.next_in=I,A.next_out=t,A.avail_in=I<e?e-I+5:5-(I-e),A.avail_out=t<i?i-t+257:257-(t-i),N.hold=o,N.bits=r};const Nt=15,Ft=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]),kt=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]),Rt=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]),Lt=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 Ut=(A,g,I,e,t,B,i,C)=>{const Q=C.bits;let E,s,a,o,r,n,h=0,l=0,c=0,w=0,D=0,d=0,y=0,f=0,u=0,S=0,G=null;const N=new Uint16Array(16),F=new Uint16Array(16);let k,R,L,U=null;for(h=0;h<=Nt;h++)N[h]=0;for(l=0;l<e;l++)N[g[I+l]]++;for(D=Q,w=Nt;w>=1&&0===N[w];w--);if(D>w&&(D=w),0===w)return t[B++]=20971520,t[B++]=20971520,C.bits=1,0;for(c=1;c<w&&0===N[c];c++);for(D<c&&(D=c),f=1,h=1;h<=Nt;h++)if(f<<=1,f-=N[h],f<0)return-1;if(f>0&&(0===A||1!==w))return-1;for(F[1]=0,h=1;h<Nt;h++)F[h+1]=F[h]+N[h];for(l=0;l<e;l++)0!==g[I+l]&&(i[F[g[I+l]]++]=l);if(0===A?(G=U=i,n=20):1===A?(G=Ft,U=kt,n=257):(G=Rt,U=Lt,n=0),S=0,l=0,h=c,r=B,d=D,y=0,a=-1,u=1<<D,o=u-1,1===A&&u>852||2===A&&u>592)return 1;for(;;){k=h-y,i[l]+1<n?(R=0,L=i[l]):i[l]>=n?(R=U[i[l]-n],L=G[i[l]-n]):(R=96,L=0),E=1<<h-y,s=1<<d,c=s;do{s-=E,t[r+(S>>y)+s]=k<<24|R<<16|L}while(0!==s);for(E=1<<h-1;S&E;)E>>=1;if(0!==E?(S&=E-1,S+=E):S=0,l++,0===--N[h]){if(h===w)break;h=g[I+i[l]]}if(h>D&&(S&o)!==a){for(0===y&&(y=D),r+=c,d=h-y,f=1<<d;d+y<w&&(f-=N[d+y],!(f<=0));)d++,f<<=1;if(u+=1<<d,1===A&&u>852||2===A&&u>592)return 1;a=S&o,t[a]=D<<24|d<<16|r-B}}return 0!==S&&(t[r+S]=h-y<<24|64<<16),C.bits=D,0};const{Z_FINISH:mt,Z_BLOCK:pt,Z_TREES:Yt,Z_OK:Mt,Z_STREAM_END:Kt,Z_NEED_DICT:bt,Z_STREAM_ERROR:Jt,Z_DATA_ERROR:Ht,Z_MEM_ERROR:qt,Z_BUF_ERROR:xt,Z_DEFLATED:_t}=ie,Tt=16180,Ot=16190,vt=16191,Pt=16192,Zt=16194,Vt=16199,zt=16200,jt=16206,Wt=16209,Xt=A=>(A>>>24&255)+(A>>>8&65280)+((65280&A)<<8)+((255&A)<<24);function $t(){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 AB=A=>{if(!A)return 1;const g=A.state;return!g||g.strm!==A||g.mode<Tt||g.mode>16211?1:0},gB=A=>{if(AB(A))return Jt;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=Tt,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,Mt},IB=A=>{if(AB(A))return Jt;const g=A.state;return g.wsize=0,g.whave=0,g.wnext=0,gB(A)},eB=(A,g)=>{let I;if(AB(A))return Jt;const e=A.state;return g<0?(I=0,g=-g):(I=5+(g>>4),g<48&&(g&=15)),g&&(g<8||g>15)?Jt:(null!==e.window&&e.wbits!==g&&(e.window=null),e.wrap=I,e.wbits=g,IB(A))},tB=(A,g)=>{if(!A)return Jt;const I=new $t;A.state=I,I.strm=A,I.window=null,I.mode=Tt;const e=eB(A,g);return e!==Mt&&(A.state=null),e};let BB,iB,CB=!0;const QB=A=>{if(CB){BB=new Int32Array(512),iB=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(Ut(1,A.lens,0,288,BB,0,A.work,{bits:9}),g=0;g<32;)A.lens[g++]=5;Ut(2,A.lens,0,32,iB,0,A.work,{bits:5}),CB=!1}A.lencode=BB,A.lenbits=9,A.distcode=iB,A.distbits=5},EB=(A,g,I,e)=>{let t;const B=A.state;return null===B.window&&(B.wsize=1<<B.wbits,B.wnext=0,B.whave=0,B.window=new Uint8Array(B.wsize)),e>=B.wsize?(B.window.set(g.subarray(I-B.wsize,I),0),B.wnext=0,B.whave=B.wsize):(t=B.wsize-B.wnext,t>e&&(t=e),B.window.set(g.subarray(I-e,I-e+t),B.wnext),(e-=t)?(B.window.set(g.subarray(I-e,I),0),B.wnext=e,B.whave=B.wsize):(B.wnext+=t,B.wnext===B.wsize&&(B.wnext=0),B.whave<B.wsize&&(B.whave+=t))),0};var sB={inflateReset:IB,inflateReset2:eB,inflateResetKeep:gB,inflateInit:A=>tB(A,15),inflateInit2:tB,inflate:(A,g)=>{let I,e,t,B,i,C,Q,E,s,a,o,r,n,h,l,c,w,D,d,y,f,u,S=0;const G=new Uint8Array(4);let N,F;const k=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(AB(A)||!A.output||!A.input&&0!==A.avail_in)return Jt;I=A.state,I.mode===vt&&(I.mode=Pt),i=A.next_out,t=A.output,Q=A.avail_out,B=A.next_in,e=A.input,C=A.avail_in,E=I.hold,s=I.bits,a=C,o=Q,u=Mt;A:for(;;)switch(I.mode){case Tt:if(0===I.wrap){I.mode=Pt;break}for(;s<16;){if(0===C)break A;C--,E+=e[B++]<<s,s+=8}if(2&I.wrap&&35615===E){0===I.wbits&&(I.wbits=15),I.check=0,G[0]=255&E,G[1]=E>>>8&255,I.check=te(I.check,G,2,0),E=0,s=0,I.mode=16181;break}if(I.head&&(I.head.done=!1),!(1&I.wrap)||(((255&E)<<8)+(E>>8))%31){A.msg="incorrect header check",I.mode=Wt;break}if((15&E)!==_t){A.msg="unknown compression method",I.mode=Wt;break}if(E>>>=4,s-=4,f=8+(15&E),0===I.wbits&&(I.wbits=f),f>15||f>I.wbits){A.msg="invalid window size",I.mode=Wt;break}I.dmax=1<<I.wbits,I.flags=0,A.adler=I.check=1,I.mode=512&E?16189:vt,E=0,s=0;break;case 16181:for(;s<16;){if(0===C)break A;C--,E+=e[B++]<<s,s+=8}if(I.flags=E,(255&I.flags)!==_t){A.msg="unknown compression method",I.mode=Wt;break}if(57344&I.flags){A.msg="unknown header flags set",I.mode=Wt;break}I.head&&(I.head.text=E>>8&1),512&I.flags&&4&I.wrap&&(G[0]=255&E,G[1]=E>>>8&255,I.check=te(I.check,G,2,0)),E=0,s=0,I.mode=16182;case 16182:for(;s<32;){if(0===C)break A;C--,E+=e[B++]<<s,s+=8}I.head&&(I.head.time=E),512&I.flags&&4&I.wrap&&(G[0]=255&E,G[1]=E>>>8&255,G[2]=E>>>16&255,G[3]=E>>>24&255,I.check=te(I.check,G,4,0)),E=0,s=0,I.mode=16183;case 16183:for(;s<16;){if(0===C)break A;C--,E+=e[B++]<<s,s+=8}I.head&&(I.head.xflags=255&E,I.head.os=E>>8),512&I.flags&&4&I.wrap&&(G[0]=255&E,G[1]=E>>>8&255,I.check=te(I.check,G,2,0)),E=0,s=0,I.mode=16184;case 16184:if(1024&I.flags){for(;s<16;){if(0===C)break A;C--,E+=e[B++]<<s,s+=8}I.length=E,I.head&&(I.head.extra_len=E),512&I.flags&&4&I.wrap&&(G[0]=255&E,G[1]=E>>>8&255,I.check=te(I.check,G,2,0)),E=0,s=0}else I.head&&(I.head.extra=null);I.mode=16185;case 16185:if(1024&I.flags&&(r=I.length,r>C&&(r=C),r&&(I.head&&(f=I.head.extra_len-I.length,I.head.extra||(I.head.extra=new Uint8Array(I.head.extra_len)),I.head.extra.set(e.subarray(B,B+r),f)),512&I.flags&&4&I.wrap&&(I.check=te(I.check,e,r,B)),C-=r,B+=r,I.length-=r),I.length))break A;I.length=0,I.mode=16186;case 16186:if(2048&I.flags){if(0===C)break A;r=0;do{f=e[B+r++],I.head&&f&&I.length<65536&&(I.head.name+=String.fromCharCode(f))}while(f&&r<C);if(512&I.flags&&4&I.wrap&&(I.check=te(I.check,e,r,B)),C-=r,B+=r,f)break A}else I.head&&(I.head.name=null);I.length=0,I.mode=16187;case 16187:if(4096&I.flags){if(0===C)break A;r=0;do{f=e[B+r++],I.head&&f&&I.length<65536&&(I.head.comment+=String.fromCharCode(f))}while(f&&r<C);if(512&I.flags&&4&I.wrap&&(I.check=te(I.check,e,r,B)),C-=r,B+=r,f)break A}else I.head&&(I.head.comment=null);I.mode=16188;case 16188:if(512&I.flags){for(;s<16;){if(0===C)break A;C--,E+=e[B++]<<s,s+=8}if(4&I.wrap&&E!==(65535&I.check)){A.msg="header crc mismatch",I.mode=Wt;break}E=0,s=0}I.head&&(I.head.hcrc=I.flags>>9&1,I.head.done=!0),A.adler=I.check=0,I.mode=vt;break;case 16189:for(;s<32;){if(0===C)break A;C--,E+=e[B++]<<s,s+=8}A.adler=I.check=Xt(E),E=0,s=0,I.mode=Ot;case Ot:if(0===I.havedict)return A.next_out=i,A.avail_out=Q,A.next_in=B,A.avail_in=C,I.hold=E,I.bits=s,bt;A.adler=I.check=1,I.mode=vt;case vt:if(g===pt||g===Yt)break A;case Pt:if(I.last){E>>>=7&s,s-=7&s,I.mode=jt;break}for(;s<3;){if(0===C)break A;C--,E+=e[B++]<<s,s+=8}switch(I.last=1&E,E>>>=1,s-=1,3&E){case 0:I.mode=16193;break;case 1:if(QB(I),I.mode=Vt,g===Yt){E>>>=2,s-=2;break A}break;case 2:I.mode=16196;break;case 3:A.msg="invalid block type",I.mode=Wt}E>>>=2,s-=2;break;case 16193:for(E>>>=7&s,s-=7&s;s<32;){if(0===C)break A;C--,E+=e[B++]<<s,s+=8}if((65535&E)!=(E>>>16^65535)){A.msg="invalid stored block lengths",I.mode=Wt;break}if(I.length=65535&E,E=0,s=0,I.mode=Zt,g===Yt)break A;case Zt:I.mode=16195;case 16195:if(r=I.length,r){if(r>C&&(r=C),r>Q&&(r=Q),0===r)break A;t.set(e.subarray(B,B+r),i),C-=r,B+=r,Q-=r,i+=r,I.length-=r;break}I.mode=vt;break;case 16196:for(;s<14;){if(0===C)break A;C--,E+=e[B++]<<s,s+=8}if(I.nlen=257+(31&E),E>>>=5,s-=5,I.ndist=1+(31&E),E>>>=5,s-=5,I.ncode=4+(15&E),E>>>=4,s-=4,I.nlen>286||I.ndist>30){A.msg="too many length or distance symbols",I.mode=Wt;break}I.have=0,I.mode=16197;case 16197:for(;I.have<I.ncode;){for(;s<3;){if(0===C)break A;C--,E+=e[B++]<<s,s+=8}I.lens[k[I.have++]]=7&E,E>>>=3,s-=3}for(;I.have<19;)I.lens[k[I.have++]]=0;if(I.lencode=I.lendyn,I.lenbits=7,N={bits:I.lenbits},u=Ut(0,I.lens,0,19,I.lencode,0,I.work,N),I.lenbits=N.bits,u){A.msg="invalid code lengths set",I.mode=Wt;break}I.have=0,I.mode=16198;case 16198:for(;I.have<I.nlen+I.ndist;){for(;S=I.lencode[E&(1<<I.lenbits)-1],l=S>>>24,c=S>>>16&255,w=65535&S,!(l<=s);){if(0===C)break A;C--,E+=e[B++]<<s,s+=8}if(w<16)E>>>=l,s-=l,I.lens[I.have++]=w;else{if(16===w){for(F=l+2;s<F;){if(0===C)break A;C--,E+=e[B++]<<s,s+=8}if(E>>>=l,s-=l,0===I.have){A.msg="invalid bit length repeat",I.mode=Wt;break}f=I.lens[I.have-1],r=3+(3&E),E>>>=2,s-=2}else if(17===w){for(F=l+3;s<F;){if(0===C)break A;C--,E+=e[B++]<<s,s+=8}E>>>=l,s-=l,f=0,r=3+(7&E),E>>>=3,s-=3}else{for(F=l+7;s<F;){if(0===C)break A;C--,E+=e[B++]<<s,s+=8}E>>>=l,s-=l,f=0,r=11+(127&E),E>>>=7,s-=7}if(I.have+r>I.nlen+I.ndist){A.msg="invalid bit length repeat",I.mode=Wt;break}for(;r--;)I.lens[I.have++]=f}}if(I.mode===Wt)break;if(0===I.lens[256]){A.msg="invalid code -- missing end-of-block",I.mode=Wt;break}if(I.lenbits=9,N={bits:I.lenbits},u=Ut(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=Wt;break}if(I.distbits=6,I.distcode=I.distdyn,N={bits:I.distbits},u=Ut(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=Wt;break}if(I.mode=Vt,g===Yt)break A;case Vt:I.mode=zt;case zt:if(C>=6&&Q>=258){A.next_out=i,A.avail_out=Q,A.next_in=B,A.avail_in=C,I.hold=E,I.bits=s,Gt(A,o),i=A.next_out,t=A.output,Q=A.avail_out,B=A.next_in,e=A.input,C=A.avail_in,E=I.hold,s=I.bits,I.mode===vt&&(I.back=-1);break}for(I.back=0;S=I.lencode[E&(1<<I.lenbits)-1],l=S>>>24,c=S>>>16&255,w=65535&S,!(l<=s);){if(0===C)break A;C--,E+=e[B++]<<s,s+=8}if(c&&!(240&c)){for(D=l,d=c,y=w;S=I.lencode[y+((E&(1<<D+d)-1)>>D)],l=S>>>24,c=S>>>16&255,w=65535&S,!(D+l<=s);){if(0===C)break A;C--,E+=e[B++]<<s,s+=8}E>>>=D,s-=D,I.back+=D}if(E>>>=l,s-=l,I.back+=l,I.length=w,0===c){I.mode=16205;break}if(32&c){I.back=-1,I.mode=vt;break}if(64&c){A.msg="invalid literal/length code",I.mode=Wt;break}I.extra=15&c,I.mode=16201;case 16201:if(I.extra){for(F=I.extra;s<F;){if(0===C)break A;C--,E+=e[B++]<<s,s+=8}I.length+=E&(1<<I.extra)-1,E>>>=I.extra,s-=I.extra,I.back+=I.extra}I.was=I.length,I.mode=16202;case 16202:for(;S=I.distcode[E&(1<<I.distbits)-1],l=S>>>24,c=S>>>16&255,w=65535&S,!(l<=s);){if(0===C)break A;C--,E+=e[B++]<<s,s+=8}if(!(240&c)){for(D=l,d=c,y=w;S=I.distcode[y+((E&(1<<D+d)-1)>>D)],l=S>>>24,c=S>>>16&255,w=65535&S,!(D+l<=s);){if(0===C)break A;C--,E+=e[B++]<<s,s+=8}E>>>=D,s-=D,I.back+=D}if(E>>>=l,s-=l,I.back+=l,64&c){A.msg="invalid distance code",I.mode=Wt;break}I.offset=w,I.extra=15&c,I.mode=16203;case 16203:if(I.extra){for(F=I.extra;s<F;){if(0===C)break A;C--,E+=e[B++]<<s,s+=8}I.offset+=E&(1<<I.extra)-1,E>>>=I.extra,s-=I.extra,I.back+=I.extra}if(I.offset>I.dmax){A.msg="invalid distance too far back",I.mode=Wt;break}I.mode=16204;case 16204:if(0===Q)break A;if(r=o-Q,I.offset>r){if(r=I.offset-r,r>I.whave&&I.sane){A.msg="invalid distance too far back",I.mode=Wt;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=t,n=i-I.offset,r=I.length;r>Q&&(r=Q),Q-=r,I.length-=r;do{t[i++]=h[n++]}while(--r);0===I.length&&(I.mode=zt);break;case 16205:if(0===Q)break A;t[i++]=I.length,Q--,I.mode=zt;break;case jt:if(I.wrap){for(;s<32;){if(0===C)break A;C--,E|=e[B++]<<s,s+=8}if(o-=Q,A.total_out+=o,I.total+=o,4&I.wrap&&o&&(A.adler=I.check=I.flags?te(I.check,t,o,i-o):Ie(I.check,t,o,i-o)),o=Q,4&I.wrap&&(I.flags?E:Xt(E))!==I.check){A.msg="incorrect data check",I.mode=Wt;break}E=0,s=0}I.mode=16207;case 16207:if(I.wrap&&I.flags){for(;s<32;){if(0===C)break A;C--,E+=e[B++]<<s,s+=8}if(4&I.wrap&&E!==(4294967295&I.total)){A.msg="incorrect length check",I.mode=Wt;break}E=0,s=0}I.mode=16208;case 16208:u=Kt;break A;case Wt:u=Ht;break A;case 16210:return qt;default:return Jt}return A.next_out=i,A.avail_out=Q,A.next_in=B,A.avail_in=C,I.hold=E,I.bits=s,(I.wsize||o!==A.avail_out&&I.mode<Wt&&(I.mode<jt||g!==mt))&&EB(A,A.output,A.next_out,o-A.avail_out),a-=A.avail_in,o-=A.avail_out,A.total_in+=a,A.total_out+=o,I.total+=o,4&I.wrap&&o&&(A.adler=I.check=I.flags?te(I.check,t,o,A.next_out-o):Ie(I.check,t,o,A.next_out-o)),A.data_type=I.bits+(I.last?64:0)+(I.mode===vt?128:0)+(I.mode===Vt||I.mode===Zt?256:0),(0===a&&0===o||g===mt)&&u===Mt&&(u=xt),u},inflateEnd:A=>{if(AB(A))return Jt;let g=A.state;return g.window&&(g.window=null),A.state=null,Mt},inflateGetHeader:(A,g)=>{if(AB(A))return Jt;const I=A.state;return 2&I.wrap?(I.head=g,g.done=!1,Mt):Jt},inflateSetDictionary:(A,g)=>{const I=g.length;let e,t,B;return AB(A)?Jt:(e=A.state,0!==e.wrap&&e.mode!==Ot?Jt:e.mode===Ot&&(t=1,t=Ie(t,g,I,0),t!==e.check)?Ht:(B=EB(A,g,I,I),B?(e.mode=16210,qt):(e.havedict=1,Mt)))},inflateInfo:"pako inflate (from Nodeca project)"};var aB=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 oB=Object.prototype.toString,{Z_NO_FLUSH:rB,Z_FINISH:nB,Z_OK:hB,Z_STREAM_END:lB,Z_NEED_DICT:cB,Z_STREAM_ERROR:wB,Z_DATA_ERROR:DB,Z_MEM_ERROR:dB}=ie;function yB(A){this.options=Bt({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 ot,this.strm.avail_out=0;let I=sB.inflateInit2(this.strm,g.windowBits);if(I!==hB)throw new Error(Be[I]);if(this.header=new aB,sB.inflateGetHeader(this.strm,this.header),g.dictionary&&("string"==typeof g.dictionary?g.dictionary=Et(g.dictionary):"[object ArrayBuffer]"===oB.call(g.dictionary)&&(g.dictionary=new Uint8Array(g.dictionary)),g.raw&&(I=sB.inflateSetDictionary(this.strm,g.dictionary),I!==hB)))throw new Error(Be[I])}function fB(A,g){const I=new yB(g);if(I.push(A),I.err)throw I.msg||Be[I.err];return I.result}yB.prototype.push=function(A,g){const I=this.strm,e=this.options.chunkSize,t=this.options.dictionary;let B,i,C;if(this.ended)return!1;for(i=g===~~g?g:!0===g?nB:rB,"[object ArrayBuffer]"===oB.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(e),I.next_out=0,I.avail_out=e),B=sB.inflate(I,i),B===cB&&t&&(B=sB.inflateSetDictionary(I,t),B===hB?B=sB.inflate(I,i):B===DB&&(B=cB));I.avail_in>0&&B===lB&&I.state.wrap>0&&0!==A[I.next_in];)sB.inflateReset(I),B=sB.inflate(I,i);switch(B){case wB:case DB:case cB:case dB:return this.onEnd(B),this.ended=!0,!1}if(C=I.avail_out,I.next_out&&(0===I.avail_out||B===lB))if("string"===this.options.to){let A=at(I.output,I.next_out),g=I.next_out-A,t=st(I.output,A);I.next_out=g,I.avail_out=e-g,g&&I.output.set(I.output.subarray(A,A+g),0),this.onData(t)}else this.onData(I.output.length===I.next_out?I.output:I.output.subarray(0,I.next_out));if(B!==hB||0!==C){if(B===lB)return B=sB.inflateEnd(this.strm),this.onEnd(B),this.ended=!0,!0;if(0===I.avail_in)break}}return!0},yB.prototype.onData=function(A){this.chunks.push(A)},yB.prototype.onEnd=function(A){A===hB&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=it(this.chunks)),this.chunks=[],this.err=A,this.msg=this.strm.msg};var uB={Inflate:yB,inflate:fB,inflateRaw:function(A,g){return(g=g||{}).raw=!0,fB(A,g)},ungzip:fB,constants:ie};const{Inflate:SB,inflate:GB,inflateRaw:NB,ungzip:FB}=uB;var kB=GB;var RB=Object.freeze({__proto__:null,default:class extends Ng{decodeBlock(A){return kB(new Uint8Array(A)).buffer}}});var LB=Object.freeze({__proto__:null,default:class extends Ng{decodeBlock(A){const g=new DataView(A),I=[];for(let e=0;e<A.byteLength;++e){let A=g.getInt8(e);if(A<0){const t=g.getUint8(e+1);A=-A;for(let g=0;g<=A;++g)I.push(t);e+=1}else{for(let t=0;t<=A;++t)I.push(g.getUint8(e+t+1));e+=A+1}}return new Uint8Array(I).buffer}}});function UB(A){return A&&A.__esModule&&Object.prototype.hasOwnProperty.call(A,"default")?A.default:A}var mB,pB={exports:{}};mB=pB,
|
|
3
3
|
/* 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 */
|
|
4
|
-
function(){var A,e,t,i,a,r,n,s,o,g,l,I,h,B,c,C,E=(A={defaultNoDataValue:-34027999387901484e22,decode:function(r,n){var s=(n=n||{}).encodedMaskData||null===n.encodedMaskData,o=a(r,n.inputOffset||0,s),g=null!==n.noDataValue?n.noDataValue:A.defaultNoDataValue,l=e(o,n.pixelType||Float32Array,n.encodedMaskData,g,n.returnMask),I={width:o.width,height:o.height,pixelData:l.resultPixels,minValue:l.minValue,maxValue:o.pixels.maxValue,noDataValue:g};return l.resultMask&&(I.maskData=l.resultMask),n.returnEncodedMask&&o.mask&&(I.encodedMaskData=o.mask.bitset?o.mask.bitset:null),n.returnFileInfo&&(I.fileInfo=t(o),n.computeUsedBitDepths&&(I.fileInfo.bitDepths=i(o))),I}},e=function(A,e,t,i,a){var n,s,o,g=0,l=A.pixels.numBlocksX,I=A.pixels.numBlocksY,h=Math.floor(A.width/l),B=Math.floor(A.height/I),c=2*A.maxZError,C=Number.MAX_VALUE;t=t||(A.mask?A.mask.bitset:null),s=new e(A.width*A.height),a&&t&&(o=new Uint8Array(A.width*A.height));for(var E,f,Q=new Float32Array(h*B),d=0;d<=I;d++){var u=d!==I?B:A.height%I;if(0!==u)for(var w=0;w<=l;w++){var p=w!==l?h:A.width%l;if(0!==p){var m,y,D,k,_=d*A.width*B+w*h,b=A.width-p,S=A.pixels.blocks[g];if(S.encoding<2?(0===S.encoding?m=S.rawData:(r(S.stuffedData,S.bitsPerPixel,S.numValidPixels,S.offset,c,Q,A.pixels.maxValue),m=Q),y=0):D=2===S.encoding?0:S.offset,t)for(f=0;f<u;f++){for(7&_&&(k=t[_>>3],k<<=7&_),E=0;E<p;E++)7&_||(k=t[_>>3]),128&k?(o&&(o[_]=1),C=C>(n=S.encoding<2?m[y++]:D)?n:C,s[_++]=n):(o&&(o[_]=0),s[_++]=i),k<<=1;_+=b}else if(S.encoding<2)for(f=0;f<u;f++){for(E=0;E<p;E++)C=C>(n=m[y++])?n:C,s[_++]=n;_+=b}else for(C=C>D?D:C,f=0;f<u;f++){for(E=0;E<p;E++)s[_++]=D;_+=b}if(1===S.encoding&&y!==S.numValidPixels)throw"Block and Mask do not match";g++}}}return{resultPixels:s,resultMask:o,minValue:C}},t=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}}},i=function(A){for(var e=A.pixels.numBlocksX*A.pixels.numBlocksY,t={},i=0;i<e;i++){var a=A.pixels.blocks[i];0===a.encoding?t.float32=!0:1===a.encoding?t[a.bitsPerPixel]=!0:t[0]=!0}return Object.keys(t)},a=function(A,e,t){var i={},a=new Uint8Array(A,e,10);if(i.fileIdentifierString=String.fromCharCode.apply(null,a),"CntZImage"!==i.fileIdentifierString.trim())throw"Unexpected file identifier string: "+i.fileIdentifierString;e+=10;var r=new DataView(A,e,24);if(i.fileVersion=r.getInt32(0,!0),i.imageType=r.getInt32(4,!0),i.height=r.getUint32(8,!0),i.width=r.getUint32(12,!0),i.maxZError=r.getFloat64(16,!0),e+=24,!t)if(r=new DataView(A,e,16),i.mask={},i.mask.numBlocksY=r.getUint32(0,!0),i.mask.numBlocksX=r.getUint32(4,!0),i.mask.numBytes=r.getUint32(8,!0),i.mask.maxValue=r.getFloat32(12,!0),e+=16,i.mask.numBytes>0){var n=new Uint8Array(Math.ceil(i.width*i.height/8)),s=(r=new DataView(A,e,i.mask.numBytes)).getInt16(0,!0),o=2,g=0;do{if(s>0)for(;s--;)n[g++]=r.getUint8(o++);else{var l=r.getUint8(o++);for(s=-s;s--;)n[g++]=l}s=r.getInt16(o,!0),o+=2}while(o<i.mask.numBytes);if(-32768!==s||g<n.length)throw"Unexpected end of mask RLE encoding";i.mask.bitset=n,e+=i.mask.numBytes}else i.mask.numBytes|i.mask.numBlocksY|i.mask.maxValue||(i.mask.bitset=new Uint8Array(Math.ceil(i.width*i.height/8)));r=new DataView(A,e,16),i.pixels={},i.pixels.numBlocksY=r.getUint32(0,!0),i.pixels.numBlocksX=r.getUint32(4,!0),i.pixels.numBytes=r.getUint32(8,!0),i.pixels.maxValue=r.getFloat32(12,!0),e+=16;var I=i.pixels.numBlocksX,h=i.pixels.numBlocksY,B=I+(i.width%I>0?1:0),c=h+(i.height%h>0?1:0);i.pixels.blocks=new Array(B*c);for(var C=0,E=0;E<c;E++)for(var f=0;f<B;f++){var Q=0,d=A.byteLength-e;r=new DataView(A,e,Math.min(10,d));var u={};i.pixels.blocks[C++]=u;var w=r.getUint8(0);if(Q++,u.encoding=63&w,u.encoding>3)throw"Invalid block encoding ("+u.encoding+")";if(2!==u.encoding){if(0!==w&&2!==w){if(w>>=6,u.offsetType=w,2===w)u.offset=r.getInt8(1),Q++;else if(1===w)u.offset=r.getInt16(1,!0),Q+=2;else{if(0!==w)throw"Invalid block offset type";u.offset=r.getFloat32(1,!0),Q+=4}if(1===u.encoding)if(w=r.getUint8(Q),Q++,u.bitsPerPixel=63&w,w>>=6,u.numValidPixelsType=w,2===w)u.numValidPixels=r.getUint8(Q),Q++;else if(1===w)u.numValidPixels=r.getUint16(Q,!0),Q+=2;else{if(0!==w)throw"Invalid valid pixel count type";u.numValidPixels=r.getUint32(Q,!0),Q+=4}}var p;if(e+=Q,3!==u.encoding)if(0===u.encoding){var m=(i.pixels.numBytes-1)/4;if(m!==Math.floor(m))throw"uncompressed block has invalid length";p=new ArrayBuffer(4*m),new Uint8Array(p).set(new Uint8Array(A,e,4*m));var y=new Float32Array(p);u.rawData=y,e+=4*m}else if(1===u.encoding){var D=Math.ceil(u.numValidPixels*u.bitsPerPixel/8),k=Math.ceil(D/4);p=new ArrayBuffer(4*k),new Uint8Array(p).set(new Uint8Array(A,e,D)),u.stuffedData=new Uint32Array(p),e+=D}}else e++}return i.eofOffset=e,i},r=function(A,e,t,i,a,r,n){var s,o,g,l=(1<<e)-1,I=0,h=0,B=Math.ceil((n-i)/a),c=4*A.length-Math.ceil(e*t/8);for(A[A.length-1]<<=8*c,s=0;s<t;s++){if(0===h&&(g=A[I++],h=32),h>=e)o=g>>>h-e&l,h-=e;else{var C=e-h;o=(g&l)<<C&l,o+=(g=A[I++])>>>(h=32-C)}r[s]=o<B?i+o*a:n}return r},A),f=(n=function(A,e,t,i,a,r,n,s){var o,g,l,I,h,B=(1<<t)-1,c=0,C=0,E=4*A.length-Math.ceil(t*i/8);if(A[A.length-1]<<=8*E,a)for(o=0;o<i;o++)0===C&&(l=A[c++],C=32),C>=t?(g=l>>>C-t&B,C-=t):(g=(l&B)<<(I=t-C)&B,g+=(l=A[c++])>>>(C=32-I)),e[o]=a[g];else for(h=Math.ceil((s-r)/n),o=0;o<i;o++)0===C&&(l=A[c++],C=32),C>=t?(g=l>>>C-t&B,C-=t):(g=(l&B)<<(I=t-C)&B,g+=(l=A[c++])>>>(C=32-I)),e[o]=g<h?r+g*n:s},s=function(A,e,t,i,a,r){var n,s=(1<<e)-1,o=0,g=0,l=0,I=0,h=0,B=[],c=4*A.length-Math.ceil(e*t/8);A[A.length-1]<<=8*c;var C=Math.ceil((r-i)/a);for(g=0;g<t;g++)0===I&&(n=A[o++],I=32),I>=e?(h=n>>>I-e&s,I-=e):(h=(n&s)<<(l=e-I)&s,h+=(n=A[o++])>>>(I=32-l)),B[g]=h<C?i+h*a:r;return B.unshift(i),B},o=function(A,e,t,i,a,r,n,s){var o,g,l,I,h=(1<<t)-1,B=0,c=0,C=0;if(a)for(o=0;o<i;o++)0===c&&(l=A[B++],c=32,C=0),c>=t?(g=l>>>C&h,c-=t,C+=t):(g=l>>>C&h,c=32-(I=t-c),g|=((l=A[B++])&(1<<I)-1)<<t-I,C=I),e[o]=a[g];else{var E=Math.ceil((s-r)/n);for(o=0;o<i;o++)0===c&&(l=A[B++],c=32,C=0),c>=t?(g=l>>>C&h,c-=t,C+=t):(g=l>>>C&h,c=32-(I=t-c),g|=((l=A[B++])&(1<<I)-1)<<t-I,C=I),e[o]=g<E?r+g*n:s}return e},g=function(A,e,t,i,a,r){var n,s=(1<<e)-1,o=0,g=0,l=0,I=0,h=0,B=0,c=[],C=Math.ceil((r-i)/a);for(g=0;g<t;g++)0===I&&(n=A[o++],I=32,B=0),I>=e?(h=n>>>B&s,I-=e,B+=e):(h=n>>>B&s,I=32-(l=e-I),h|=((n=A[o++])&(1<<l)-1)<<e-l,B=l),c[g]=h<C?i+h*a:r;return c.unshift(i),c},l=function(A,e,t,i){var a,r,n,s,o=(1<<t)-1,g=0,l=0,I=4*A.length-Math.ceil(t*i/8);for(A[A.length-1]<<=8*I,a=0;a<i;a++)0===l&&(n=A[g++],l=32),l>=t?(r=n>>>l-t&o,l-=t):(r=(n&o)<<(s=t-l)&o,r+=(n=A[g++])>>>(l=32-s)),e[a]=r;return e},I=function(A,e,t,i){var a,r,n,s,o=(1<<t)-1,g=0,l=0,I=0;for(a=0;a<i;a++)0===l&&(n=A[g++],l=32,I=0),l>=t?(r=n>>>I&o,l-=t,I+=t):(r=n>>>I&o,l=32-(s=t-l),r|=((n=A[g++])&(1<<s)-1)<<t-s,I=s),e[a]=r;return e},h={HUFFMAN_LUT_BITS_MAX:12,computeChecksumFletcher32:function(A){for(var e=65535,t=65535,i=A.length,a=Math.floor(i/2),r=0;a;){var n=a>=359?359:a;a-=n;do{e+=A[r++]<<8,t+=e+=A[r++]}while(--n);e=(65535&e)+(e>>>16),t=(65535&t)+(t>>>16)}return 1&i&&(t+=e+=A[r]<<8),((t=(65535&t)+(t>>>16))<<16|(e=(65535&e)+(e>>>16)))>>>0},readHeaderInfo:function(A,e){var t=e.ptr,i=new Uint8Array(A,t,6),a={};if(a.fileIdentifierString=String.fromCharCode.apply(null,i),0!==a.fileIdentifierString.lastIndexOf("Lerc2",0))throw"Unexpected file identifier string (expect Lerc2 ): "+a.fileIdentifierString;t+=6;var r,n=new DataView(A,t,8),s=n.getInt32(0,!0);if(a.fileVersion=s,t+=4,s>=3&&(a.checksum=n.getUint32(4,!0),t+=4),n=new DataView(A,t,12),a.height=n.getUint32(0,!0),a.width=n.getUint32(4,!0),t+=8,s>=4?(a.numDims=n.getUint32(8,!0),t+=4):a.numDims=1,n=new DataView(A,t,40),a.numValidPixel=n.getUint32(0,!0),a.microBlockSize=n.getInt32(4,!0),a.blobSize=n.getInt32(8,!0),a.imageType=n.getInt32(12,!0),a.maxZError=n.getFloat64(16,!0),a.zMin=n.getFloat64(24,!0),a.zMax=n.getFloat64(32,!0),t+=40,e.headerInfo=a,e.ptr=t,s>=3&&(r=s>=4?52:48,this.computeChecksumFletcher32(new Uint8Array(A,t-r,a.blobSize-14))!==a.checksum))throw"Checksum failed.";return!0},checkMinMaxRanges:function(A,e){var t=e.headerInfo,i=this.getDataTypeArray(t.imageType),a=t.numDims*this.getDataTypeSize(t.imageType),r=this.readSubArray(A,e.ptr,i,a),n=this.readSubArray(A,e.ptr+a,i,a);e.ptr+=2*a;var s,o=!0;for(s=0;s<t.numDims;s++)if(r[s]!==n[s]){o=!1;break}return t.minValues=r,t.maxValues=n,o},readSubArray:function(A,e,t,i){var a;if(t===Uint8Array)a=new Uint8Array(A,e,i);else{var r=new ArrayBuffer(i);new Uint8Array(r).set(new Uint8Array(A,e,i)),a=new t(r)}return a},readMask:function(A,e){var t,i,a=e.ptr,r=e.headerInfo,n=r.width*r.height,s=r.numValidPixel,o=new DataView(A,a,4),g={};if(g.numBytes=o.getUint32(0,!0),a+=4,(0===s||n===s)&&0!==g.numBytes)throw"invalid mask";if(0===s)t=new Uint8Array(Math.ceil(n/8)),g.bitset=t,i=new Uint8Array(n),e.pixels.resultMask=i,a+=g.numBytes;else if(g.numBytes>0){t=new Uint8Array(Math.ceil(n/8));var l=(o=new DataView(A,a,g.numBytes)).getInt16(0,!0),I=2,h=0,B=0;do{if(l>0)for(;l--;)t[h++]=o.getUint8(I++);else for(B=o.getUint8(I++),l=-l;l--;)t[h++]=B;l=o.getInt16(I,!0),I+=2}while(I<g.numBytes);if(-32768!==l||h<t.length)throw"Unexpected end of mask RLE encoding";i=new Uint8Array(n);var c=0,C=0;for(C=0;C<n;C++)7&C?(c=t[C>>3],c<<=7&C):c=t[C>>3],128&c&&(i[C]=1);e.pixels.resultMask=i,g.bitset=t,a+=g.numBytes}return e.ptr=a,e.mask=g,!0},readDataOneSweep:function(A,e,t,i){var a,r=e.ptr,n=e.headerInfo,s=n.numDims,o=n.width*n.height,g=n.imageType,l=n.numValidPixel*h.getDataTypeSize(g)*s,I=e.pixels.resultMask;if(t===Uint8Array)a=new Uint8Array(A,r,l);else{var B=new ArrayBuffer(l);new Uint8Array(B).set(new Uint8Array(A,r,l)),a=new t(B)}if(a.length===o*s)e.pixels.resultPixels=i?h.swapDimensionOrder(a,o,s,t,!0):a;else{e.pixels.resultPixels=new t(o*s);var c=0,C=0,E=0,f=0;if(s>1){if(i){for(C=0;C<o;C++)if(I[C])for(f=C,E=0;E<s;E++,f+=o)e.pixels.resultPixels[f]=a[c++]}else for(C=0;C<o;C++)if(I[C])for(f=C*s,E=0;E<s;E++)e.pixels.resultPixels[f+E]=a[c++]}else for(C=0;C<o;C++)I[C]&&(e.pixels.resultPixels[C]=a[c++])}return r+=l,e.ptr=r,!0},readHuffmanTree:function(A,e){var t=this.HUFFMAN_LUT_BITS_MAX,i=new DataView(A,e.ptr,16);if(e.ptr+=16,i.getInt32(0,!0)<2)throw"unsupported Huffman version";var a=i.getInt32(4,!0),r=i.getInt32(8,!0),n=i.getInt32(12,!0);if(r>=n)return!1;var s=new Uint32Array(n-r);h.decodeBits(A,e,s);var o,g,l,I,c=[];for(o=r;o<n;o++)c[g=o-(o<a?0:a)]={first:s[o-r],second:null};var C=A.byteLength-e.ptr,E=Math.ceil(C/4),f=new ArrayBuffer(4*E);new Uint8Array(f).set(new Uint8Array(A,e.ptr,C));var Q,d=new Uint32Array(f),u=0,w=0;for(Q=d[0],o=r;o<n;o++)(I=c[g=o-(o<a?0:a)].first)>0&&(c[g].second=Q<<u>>>32-I,32-u>=I?32===(u+=I)&&(u=0,Q=d[++w]):(u+=I-32,Q=d[++w],c[g].second|=Q>>>32-u));var p=0,m=0,y=new B;for(o=0;o<c.length;o++)void 0!==c[o]&&(p=Math.max(p,c[o].first));m=p>=t?t:p;var D,k,_,b,S,x=[];for(o=r;o<n;o++)if((I=c[g=o-(o<a?0:a)].first)>0)if(D=[I,g],I<=m)for(k=c[g].second<<m-I,_=1<<m-I,l=0;l<_;l++)x[k|l]=D;else for(k=c[g].second,S=y,b=I-1;b>=0;b--)k>>>b&1?(S.right||(S.right=new B),S=S.right):(S.left||(S.left=new B),S=S.left),0!==b||S.val||(S.val=D[1]);return{decodeLut:x,numBitsLUTQick:m,numBitsLUT:p,tree:y,stuffedData:d,srcPtr:w,bitPos:u}},readHuffman:function(A,e,t,i){var a,r,n,s,o,g,l,I,B,c=e.headerInfo.numDims,C=e.headerInfo.height,E=e.headerInfo.width,f=E*C,Q=this.readHuffmanTree(A,e),d=Q.decodeLut,u=Q.tree,w=Q.stuffedData,p=Q.srcPtr,m=Q.bitPos,y=Q.numBitsLUTQick,D=Q.numBitsLUT,k=0===e.headerInfo.imageType?128:0,_=e.pixels.resultMask,b=0;m>0&&(p++,m=0);var S,x=w[p],F=1===e.encodeMode,G=new t(f*c),U=G;if(c<2||F){for(S=0;S<c;S++)if(c>1&&(U=new t(G.buffer,f*S,f),b=0),e.headerInfo.numValidPixel===E*C)for(I=0,g=0;g<C;g++)for(l=0;l<E;l++,I++){if(r=0,o=s=x<<m>>>32-y,32-m<y&&(o=s|=w[p+1]>>>64-m-y),d[o])r=d[o][1],m+=d[o][0];else for(o=s=x<<m>>>32-D,32-m<D&&(o=s|=w[p+1]>>>64-m-D),a=u,B=0;B<D;B++)if(!(a=s>>>D-B-1&1?a.right:a.left).left&&!a.right){r=a.val,m=m+B+1;break}m>=32&&(m-=32,x=w[++p]),n=r-k,F?(n+=l>0?b:g>0?U[I-E]:b,n&=255,U[I]=n,b=n):U[I]=n}else for(I=0,g=0;g<C;g++)for(l=0;l<E;l++,I++)if(_[I]){if(r=0,o=s=x<<m>>>32-y,32-m<y&&(o=s|=w[p+1]>>>64-m-y),d[o])r=d[o][1],m+=d[o][0];else for(o=s=x<<m>>>32-D,32-m<D&&(o=s|=w[p+1]>>>64-m-D),a=u,B=0;B<D;B++)if(!(a=s>>>D-B-1&1?a.right:a.left).left&&!a.right){r=a.val,m=m+B+1;break}m>=32&&(m-=32,x=w[++p]),n=r-k,F?(l>0&&_[I-1]?n+=b:g>0&&_[I-E]?n+=U[I-E]:n+=b,n&=255,U[I]=n,b=n):U[I]=n}}else for(I=0,g=0;g<C;g++)for(l=0;l<E;l++)if(I=g*E+l,!_||_[I])for(S=0;S<c;S++,I+=f){if(r=0,o=s=x<<m>>>32-y,32-m<y&&(o=s|=w[p+1]>>>64-m-y),d[o])r=d[o][1],m+=d[o][0];else for(o=s=x<<m>>>32-D,32-m<D&&(o=s|=w[p+1]>>>64-m-D),a=u,B=0;B<D;B++)if(!(a=s>>>D-B-1&1?a.right:a.left).left&&!a.right){r=a.val,m=m+B+1;break}m>=32&&(m-=32,x=w[++p]),n=r-k,U[I]=n}e.ptr=e.ptr+4*(p+1)+(m>0?4:0),e.pixels.resultPixels=G,c>1&&!i&&(e.pixels.resultPixels=h.swapDimensionOrder(G,f,c,t))},decodeBits:function(A,e,t,i,a){var r=e.headerInfo,h=r.fileVersion,B=0,c=A.byteLength-e.ptr>=5?5:A.byteLength-e.ptr,C=new DataView(A,e.ptr,c),E=C.getUint8(0);B++;var f=E>>6,Q=0===f?4:3-f,d=(32&E)>0,u=31&E,w=0;if(1===Q)w=C.getUint8(B),B++;else if(2===Q)w=C.getUint16(B,!0),B+=2;else{if(4!==Q)throw"Invalid valid pixel count type";w=C.getUint32(B,!0),B+=4}var p,m,y,D,k,_,b,S,x,F=2*r.maxZError,G=r.numDims>1?r.maxValues[a]:r.zMax;if(d){for(e.counter.lut++,S=C.getUint8(B),B++,D=Math.ceil((S-1)*u/8),k=Math.ceil(D/4),m=new ArrayBuffer(4*k),y=new Uint8Array(m),e.ptr+=B,y.set(new Uint8Array(A,e.ptr,D)),b=new Uint32Array(m),e.ptr+=D,x=0;S-1>>>x;)x++;D=Math.ceil(w*x/8),k=Math.ceil(D/4),m=new ArrayBuffer(4*k),(y=new Uint8Array(m)).set(new Uint8Array(A,e.ptr,D)),p=new Uint32Array(m),e.ptr+=D,_=h>=3?g(b,u,S-1,i,F,G):s(b,u,S-1,i,F,G),h>=3?o(p,t,x,w,_):n(p,t,x,w,_)}else e.counter.bitstuffer++,x=u,e.ptr+=B,x>0&&(D=Math.ceil(w*x/8),k=Math.ceil(D/4),m=new ArrayBuffer(4*k),(y=new Uint8Array(m)).set(new Uint8Array(A,e.ptr,D)),p=new Uint32Array(m),e.ptr+=D,h>=3?null==i?I(p,t,x,w):o(p,t,x,w,!1,i,F,G):null==i?l(p,t,x,w):n(p,t,x,w,!1,i,F,G))},readTiles:function(A,e,t,i){var a=e.headerInfo,r=a.width,n=a.height,s=r*n,o=a.microBlockSize,g=a.imageType,l=h.getDataTypeSize(g),I=Math.ceil(r/o),B=Math.ceil(n/o);e.pixels.numBlocksY=B,e.pixels.numBlocksX=I,e.pixels.ptr=0;var c,C,E,f,Q,d,u,w,p,m,y=0,D=0,k=0,_=0,b=0,S=0,x=0,F=0,G=0,U=0,R=0,M=0,L=0,N=0,v=0,T=new t(o*o),q=n%o||o,J=r%o||o,O=a.numDims,H=e.pixels.resultMask,Y=e.pixels.resultPixels,z=a.fileVersion>=5?14:15,K=a.zMax;for(k=0;k<B;k++)for(b=k!==B-1?o:q,_=0;_<I;_++)for(U=k*r*o+_*o,R=r-(S=_!==I-1?o:J),w=0;w<O;w++){if(O>1?(m=Y,U=k*r*o+_*o,Y=new t(e.pixels.resultPixels.buffer,s*w*l,s),K=a.maxValues[w]):m=null,x=A.byteLength-e.ptr,C={},v=0,F=(c=new DataView(A,e.ptr,Math.min(10,x))).getUint8(0),v++,p=a.fileVersion>=5?4&F:0,G=F>>6&255,(F>>2&z)!=(_*o>>3&z))throw"integrity issue";if(p&&0===w)throw"integrity issue";if((Q=3&F)>3)throw e.ptr+=v,"Invalid block encoding ("+Q+")";if(2!==Q)if(0===Q){if(p)throw"integrity issue";if(e.counter.uncompressed++,e.ptr+=v,M=(M=b*S*l)<(L=A.byteLength-e.ptr)?M:L,E=new ArrayBuffer(M%l==0?M:M+l-M%l),new Uint8Array(E).set(new Uint8Array(A,e.ptr,M)),f=new t(E),N=0,H)for(y=0;y<b;y++){for(D=0;D<S;D++)H[U]&&(Y[U]=f[N++]),U++;U+=R}else for(y=0;y<b;y++){for(D=0;D<S;D++)Y[U++]=f[N++];U+=R}e.ptr+=N*l}else if(d=h.getDataTypeUsed(p&&g<6?4:g,G),u=h.getOnePixel(C,v,d,c),v+=h.getDataTypeSize(d),3===Q)if(e.ptr+=v,e.counter.constantoffset++,H)for(y=0;y<b;y++){for(D=0;D<S;D++)H[U]&&(Y[U]=p?Math.min(K,m[U]+u):u),U++;U+=R}else for(y=0;y<b;y++){for(D=0;D<S;D++)Y[U]=p?Math.min(K,m[U]+u):u,U++;U+=R}else if(e.ptr+=v,h.decodeBits(A,e,T,u,w),v=0,p)if(H)for(y=0;y<b;y++){for(D=0;D<S;D++)H[U]&&(Y[U]=T[v++]+m[U]),U++;U+=R}else for(y=0;y<b;y++){for(D=0;D<S;D++)Y[U]=T[v++]+m[U],U++;U+=R}else if(H)for(y=0;y<b;y++){for(D=0;D<S;D++)H[U]&&(Y[U]=T[v++]),U++;U+=R}else for(y=0;y<b;y++){for(D=0;D<S;D++)Y[U++]=T[v++];U+=R}else{if(p)if(H)for(y=0;y<b;y++)for(D=0;D<S;D++)H[U]&&(Y[U]=m[U]),U++;else for(y=0;y<b;y++)for(D=0;D<S;D++)Y[U]=m[U],U++;e.counter.constant++,e.ptr+=v}}O>1&&!i&&(e.pixels.resultPixels=h.swapDimensionOrder(e.pixels.resultPixels,s,O,t))},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:h.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,e){var t=A.headerInfo.zMax,i=A.headerInfo.zMin,a=A.headerInfo.maxValues,r=A.headerInfo.numDims,n=A.headerInfo.height*A.headerInfo.width,s=0,o=0,g=0,l=A.pixels.resultMask,I=A.pixels.resultPixels;if(l)if(r>1){if(e)for(s=0;s<r;s++)for(g=s*n,t=a[s],o=0;o<n;o++)l[o]&&(I[g+o]=t);else for(o=0;o<n;o++)if(l[o])for(g=o*r,s=0;s<r;s++)I[g+r]=a[s]}else for(o=0;o<n;o++)l[o]&&(I[o]=t);else if(r>1&&i!==t)if(e)for(s=0;s<r;s++)for(g=s*n,t=a[s],o=0;o<n;o++)I[g+o]=t;else for(o=0;o<n;o++)for(g=o*r,s=0;s<r;s++)I[g+s]=a[s];else for(o=0;o<n*r;o++)I[o]=t},getDataTypeArray:function(A){var e;switch(A){case 0:e=Int8Array;break;case 1:e=Uint8Array;break;case 2:e=Int16Array;break;case 3:e=Uint16Array;break;case 4:e=Int32Array;break;case 5:e=Uint32Array;break;case 6:default:e=Float32Array;break;case 7:e=Float64Array}return e},getPixelType:function(A){var e;switch(A){case 0:e="S8";break;case 1:e="U8";break;case 2:e="S16";break;case 3:e="U16";break;case 4:e="S32";break;case 5:e="U32";break;case 6:default:e="F32";break;case 7:e="F64"}return e},isValidPixelValue:function(A,e){if(null==e)return!1;var t;switch(A){case 0:t=e>=-128&&e<=127;break;case 1:t=e>=0&&e<=255;break;case 2:t=e>=-32768&&e<=32767;break;case 3:t=e>=0&&e<=65536;break;case 4:t=e>=-2147483648&&e<=2147483647;break;case 5:t=e>=0&&e<=4294967296;break;case 6:t=e>=-34027999387901484e22&&e<=34027999387901484e22;break;case 7:t=e>=-17976931348623157e292&&e<=17976931348623157e292;break;default:t=!1}return t},getDataTypeSize:function(A){var e=0;switch(A){case 0:case 1:e=1;break;case 2:case 3:e=2;break;case 4:case 5:case 6:e=4;break;case 7:e=8;break;default:e=A}return e},getDataTypeUsed:function(A,e){var t=A;switch(A){case 2:case 4:t=A-e;break;case 3:case 5:t=A-2*e;break;case 6:t=0===e?A:1===e?2:1;break;case 7:t=0===e?A:A-2*e+1;break;default:t=A}return t},getOnePixel:function(A,e,t,i){var a=0;switch(t){case 0:a=i.getInt8(e);break;case 1:a=i.getUint8(e);break;case 2:a=i.getInt16(e,!0);break;case 3:a=i.getUint16(e,!0);break;case 4:a=i.getInt32(e,!0);break;case 5:a=i.getUInt32(e,!0);break;case 6:a=i.getFloat32(e,!0);break;case 7:a=i.getFloat64(e,!0);break;default:throw"the decoder does not understand this pixel type"}return a},swapDimensionOrder:function(A,e,t,i,a){var r=0,n=0,s=0,o=0,g=A;if(t>1)if(g=new i(e*t),a)for(r=0;r<e;r++)for(o=r,s=0;s<t;s++,o+=e)g[o]=A[n++];else for(r=0;r<e;r++)for(o=r,s=0;s<t;s++,o+=e)g[n++]=A[o];return g}},B=function(A,e,t){this.val=A,this.left=e,this.right=t},{decode:function(A,e){var t=(e=e||{}).noDataValue,i=0,a={};if(a.ptr=e.inputOffset||0,a.pixels={},h.readHeaderInfo(A,a)){var r=a.headerInfo,n=r.fileVersion,s=h.getDataTypeArray(r.imageType);if(n>5)throw"unsupported lerc version 2."+n;h.readMask(A,a),r.numValidPixel===r.width*r.height||a.pixels.resultMask||(a.pixels.resultMask=e.maskData);var o=r.width*r.height;a.pixels.resultPixels=new s(o*r.numDims),a.counter={onesweep:0,uncompressed:0,lut:0,bitstuffer:0,constant:0,constantoffset:0};var g,l=!e.returnPixelInterleavedDims;if(0!==r.numValidPixel)if(r.zMax===r.zMin)h.constructConstantSurface(a,l);else if(n>=4&&h.checkMinMaxRanges(A,a))h.constructConstantSurface(a,l);else{var I=new DataView(A,a.ptr,2),B=I.getUint8(0);if(a.ptr++,B)h.readDataOneSweep(A,a,s,l);else if(n>1&&r.imageType<=1&&Math.abs(r.maxZError-.5)<1e-5){var c=I.getUint8(1);if(a.ptr++,a.encodeMode=c,c>2||n<4&&c>1)throw"Invalid Huffman flag "+c;c?h.readHuffman(A,a,s,l):h.readTiles(A,a,s,l)}else h.readTiles(A,a,s,l)}a.eofOffset=a.ptr,e.inputOffset?(g=a.headerInfo.blobSize+e.inputOffset-a.ptr,Math.abs(g)>=1&&(a.eofOffset=e.inputOffset+a.headerInfo.blobSize)):(g=a.headerInfo.blobSize-a.ptr,Math.abs(g)>=1&&(a.eofOffset=a.headerInfo.blobSize));var C={width:r.width,height:r.height,pixelData:a.pixels.resultPixels,minValue:r.zMin,maxValue:r.zMax,validPixelCount:r.numValidPixel,dimCount:r.numDims,dimStats:{minValues:r.minValues,maxValues:r.maxValues},maskData:a.pixels.resultMask};if(a.pixels.resultMask&&h.isValidPixelValue(r.imageType,t)){var E=a.pixels.resultMask;for(i=0;i<o;i++)E[i]||(C.pixelData[i]=t);C.noDataValue=t}return a.noDataValue=t,e.returnFileInfo&&(C.fileInfo=h.formatFileInfo(a)),C}},getBandCount:function(A){for(var e=0,t=0,i={ptr:0,pixels:{}};t<A.byteLength-58;)h.readHeaderInfo(A,i),t+=i.headerInfo.blobSize,e++,i.ptr=t;return e}}),Q=(c=new ArrayBuffer(4),C=new Uint8Array(c),new Uint32Array(c)[0]=1,1===C[0]),d={decode:function(A,e){if(!Q)throw"Big endian system is not supported.";var t,i,a=(e=e||{}).inputOffset||0,r=new Uint8Array(A,a,10),n=String.fromCharCode.apply(null,r);if("CntZImage"===n.trim())t=E,i=1;else{if("Lerc2"!==n.substring(0,5))throw"Unexpected file identifier string: "+n;t=f,i=2}for(var s,o,g,l,I,h,B=0,c=A.byteLength-10,C=[],d={width:0,height:0,pixels:[],pixelType:e.pixelType,mask:null,statistics:[]},u=0;a<c;){var w=t.decode(A,{inputOffset:a,encodedMaskData:s,maskData:g,returnMask:0===B,returnEncodedMask:0===B,returnFileInfo:!0,returnPixelInterleavedDims:e.returnPixelInterleavedDims,pixelType:e.pixelType||null,noDataValue:e.noDataValue||null});a=w.fileInfo.eofOffset,g=w.maskData,0===B&&(s=w.encodedMaskData,d.width=w.width,d.height=w.height,d.dimCount=w.dimCount||1,d.pixelType=w.pixelType||w.fileInfo.pixelType,d.mask=g),i>1&&(g&&C.push(g),w.fileInfo.mask&&w.fileInfo.mask.numBytes>0&&u++),B++,d.pixels.push(w.pixelData),d.statistics.push({minValue:w.minValue,maxValue:w.maxValue,noDataValue:w.noDataValue,dimStats:w.dimStats})}if(i>1&&u>1){for(h=d.width*d.height,d.bandMasks=C,(g=new Uint8Array(h)).set(C[0]),l=1;l<C.length;l++)for(o=C[l],I=0;I<h;I++)g[I]=g[I]&o[I];d.maskData=g}return d}};Nr.exports?Nr.exports=d:this.Lerc=d}();var qr=sA(Tr.exports);let Jr,Or,Hr;const Yr={env:{emscripten_notify_memory_growth:function(A){Hr=new Uint8Array(Or.exports.memory.buffer)}}};const zr="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IAMNACAEQQNxBEADQCACRQ0FIAAgAkF/aiICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQXxqIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkF/aiICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AIAIhBANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIARBfGoiBEEDSw0ACyACQQNxIQILIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQX9qIgINAAsLIAAL8wICAn8BfgJAIAJFDQAgACACaiIDQX9qIAE6AAAgACABOgAAIAJBA0kNACADQX5qIAE6AAAgACABOgABIANBfWogAToAACAAIAE6AAIgAkEHSQ0AIANBfGogAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa0iBUIghiAFhCEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkFgaiICQR9LDQALCyAACy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAIajYCACADCy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAFajYCACADCx8AIAAgASACKAIEEAg2AgAgARAEGiAAIAJBCGo2AgQLCAAgAGdBH3MLugUBDX8jAEEQayIKJAACfyAEQQNNBEAgCkEANgIMIApBDGogAyAEEAsaIAAgASACIApBDGpBBBAVIgBBbCAAEAMbIAAgACAESxsMAQsgAEEAIAEoAgBBAXRBAmoQECENQVQgAygAACIGQQ9xIgBBCksNABogAiAAQQVqNgIAIAMgBGoiAkF8aiEMIAJBeWohDiACQXtqIRAgAEEGaiELQQQh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ASIDNgLE4AEgACgCvOABIQQgACABNgK84AEgACABIAJqNgK44AEgACABIAQgA2tqNgLA4AELpgEBAX8gACAAKALs4QEQFjYCyOABIABCADcD+OABIABCADcDuOABIABBwOABakIANwMAIABBqNAAaiIBQYyAgOAANgIAIABBADYCmOIBIABCADcDiOEBIABCAzcDgOEBIABBrNABakHgEikCADcCACAAQbTQAWpB6BIoAgA2AgAgACABNgIMIAAgAEGYIGo2AgggACAAQaAwajYCBCAAIABBEGo2AgALYQEBf0G4fyEDAkAgAUEDSQ0AIAIgABAhIgFBA3YiADYCCCACIAFBAXE2AgQgAiABQQF2QQNxIgM2AgACQCADQX9qIgFBAksNAAJAIAFBAWsOAgEAAgtBbA8LIAAhAwsgAwsMACAAIAEgAkEAEC4LiAQCA38CfiADEBYhBCAAQQBBKBAQIQAgBCACSwRAIAQPCyABRQRAQX8PCwJAAkAgA0EBRg0AIAEoAAAiBkGo6r5pRg0AQXYhAyAGQXBxQdDUtMIBRw0BQQghAyACQQhJDQEgAEEAQSgQECEAIAEoAAQhASAAQQE2AhQgACABrTcDAEEADwsgASACIAMQLyIDIAJLDQAgACADNgIYQXIhAyABIARqIgVBf2otAAAiAkEIcQ0AIAJBIHEiBkUEQEFwIQMgBS0AACIFQacBSw0BIAVBB3GtQgEgBUEDdkEKaq2GIgdCA4h+IAd8IQggBEEBaiEECyACQQZ2IQMgAkECdiEFAkAgAkEDcUF/aiICQQJLBEBBACECDAELAkACQAJAIAJBAWsOAgECAAsgASAEai0AACECIARBAWohBAwCCyABIARqLwAAIQIgBEECaiEEDAELIAEgBGooAAAhAiAEQQRqIQQLIAVBAXEhBQJ+AkACQAJAIANBf2oiA0ECTQRAIANBAWsOAgIDAQtCfyAGRQ0DGiABIARqMQAADAMLIAEgBGovAACtQoACfAwCCyABIARqKAAArQwBCyABIARqKQAACyEHIAAgBTYCICAAIAI2AhwgACAHNwMAQQAhAyAAQQA2AhQgACAHIAggBhsiBzcDCCAAIAdCgIAIIAdCgIAIVBs+AhALIAMLWwEBf0G4fyEDIAIQFiICIAFNBH8gACACakF/ai0AACIAQQNxQQJ0QaAeaigC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C0Egak8NAQsgByAHKQNoNwMQIAcgBykDYDcDCCAEIA0gB0EIaiAHQdwAaiAPIA4gESAQEB4hCwwBCyACIARqIQggBCAKEAcgAkERTwRAIARBEGohAgNAIAIgCkEQaiIKEAcgAkEQaiICIAhJDQALCyAIIAlrIQIgByATNgJcIAkgCCAOa0sEQCAJIAggEWtLBEBBbCELDAILIBAgAiAOayICaiIKIANqIBBNBEAgCCAKIAMQDxoMAgsgCCAKQQAgAmsQDyEIIAcgAiADaiIDNgJkIAggAmshCCAOIQILIAlBEE8EQCADIAhqIQMDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALDAELAkAgCUEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgCUECdCIDQcAeaigCAGoiAhAXIAIgA0HgHmooAgBrIQIgBygCZCEDDAELIAggAhAMCyADQQlJDQAgAyAIaiEDIAhBCGoiCCACQQhqIgJrQQ9MBEADQCAIIAIQDCACQQhqIQIgCEEIaiIIIANJDQAMAgALAAsDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALCyAHQRhqEAQaIAsgDCALEAMiAhshDCAEIAQgC2ogAhshBCAFQX9qIgUNAAsgDBADDQFBbCEMIAdBGGoQBEECSQ0BQQAhCANAIAhBA0cEQCAAIAhBAnQiAmpBrNABaiACIAdqKAJENgIAIAhBAWohCAwBCwsgBygCXCEIC0G6fyEMIA8gCGsiACANIARrSw0AIAQEfyAEIAggABALIABqBUEACyABayEMCyAHQfAAaiQAIAwLkRcCFn8FfiMAQdABayIHJAAgByAAKALw4QEiCDYCvAEgASACaiESIAggACgCgOIBaiETAkACQCAFRQRAIAEhAwwBCyAAKALE4AEhESAAKALA4AEhFSAAKAK84AEhDyAAQQE2AozhAUEAIQgDQCAIQQNHBEAgByAIQQJ0IgJqIAAgAmpBrNABaigCADYCVCAIQQFqIQgMAQsLIAcgETYCZCAHIA82AmAgByABIA9rNgJoQWwhECAHQShqIAMgBBAGEAMNASAFQQQgBUEESBshFyAHQTxqIAdBKGogACgCABATIAdBxABqIAdBKGogACgCCBATIAdBzABqIAdB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IAdB0AFqJAAgEAslACAAQgA3AgAgAEEAOwEIIABBADoACyAAIAE2AgwgACACOgAKC7QFAQN/IwBBMGsiBCQAIABB/wFqIgVBfWohBgJAIAMvAQIEQCAEQRhqIAEgAhAGIgIQAw0BIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahASOgAAIAMgBEEIaiAEQRhqEBI6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0FIAEgBEEQaiAEQRhqEBI6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBSABIARBCGogBEEYahASOgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEjoAACABIAJqIABrIQIMAwsgAyAEQRBqIARBGGoQEjoAAiADIARBCGogBEEYahASOgADIANBBGohAwwAAAsACyAEQRhqIAEgAhAGIgIQAw0AIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahAROgAAIAMgBEEIaiAEQRhqEBE6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0EIAEgBEEQaiAEQRhqEBE6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBCABIARBCGogBEEYahAROgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEToAACABIAJqIABrIQIMAgsgAyAEQRBqIARBGGoQEToAAiADIARBCGogBEEYahAROgADIANBBGohAwwAAAsACyAEQTBqJAAgAgtpAQF/An8CQAJAIAJBB00NACABKAAAQbfIwuF+Rw0AIAAgASgABDYCmOIBQWIgAEEQaiABIAIQPiIDEAMNAhogAEKBgICAEDcDiOEBIAAgASADaiACIANrECoMAQsgACABIAIQKgtBAAsLrQMBBn8jAEGAAWsiAyQAQWIhCAJAIAJBCUkNACAAQZjQAGogAUEIaiIEIAJBeGogAEGY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wOABCwutAgIEfwF+IwBBQGoiBCQAAkACQCACQQhJDQAgASgAAEFwcUHQ1LTCAUcNACABIAIQIiEBIABCADcDCCAAQQA2AgQgACABNgIADAELIARBGGogASACEC0iAxADBEAgACADEBoMAQsgAwRAIABBuH8QGgwBCyACIAQoAjAiA2shAiABIANqIQMDQAJAIAAgAyACIARBCGoQLCIFEAMEfyAFBSACIAVBA2oiBU8NAUG4fwsQGgwCCyAGQQFqIQYgAiAFayECIAMgBWohAyAEKAIMRQ0ACyAEKAI4BEAgAkEDTQRAIABBuH8QGgwCCyADQQRqIQMLIAQoAighAiAEKQMYIQcgAEEANgIEIAAgAyABazYCACAAIAIgBmytIAcgB0J/URs3AwgLIARBQGskAAslAQF/IwBBEGsiAiQAIAIgACABEFEgAigCACEAIAJBEGokACAAC30BBH8jAEGQBGsiBCQAIARB/wE2AggCQCAEQRBqIARBCGogBEEMaiABIAIQFSIGEAMEQCAGIQUMAQtBVCEFIAQoAgwiB0EGSw0AIAMgBEEQaiAEKAIIIAcQQSIFEAMNACAAIAEgBmogAiAGayADEDwhBQsgBEGQBGokACAFC4cBAgJ/An5BABAWIQMCQANAIAEgA08EQAJAIAAoAABBcHFB0NS0wgFGBEAgACABECIiAhADRQ0BQn4PCyAAIAEQVSIEQn1WDQMgBCAFfCIFIARUIQJCfiEEIAINAyAAIAEQUiICEAMNAwsgASACayEBIAAgAmohAAwBCwtCfiAFIAEbIQQLIAQLPwIBfwF+IwBBMGsiAiQAAn5CfiACQQhqIAAgARAtDQAaQgAgAigCHEEBRg0AGiACKQMICyEDIAJBMGokACADC40BAQJ/IwBBMGsiASQAAkAgAEUNACAAKAKI4gENACABIABB/OEBaigCADYCKCABIAApAvThATcDICAAEDAgACgCqOIBIQIgASABKAIoNgIYIAEgASkDIDcDECACIAFBEGoQGyAAQQA2AqjiASABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALKgECfyMAQRBrIgAkACAAQQA2AgggAEIANwMAIAAQWCEBIABBEGokACABC4cBAQN/IwBBEGsiAiQAAkAgACgCAEUgACgCBEVzDQAgAiAAKAIINgIIIAIgACkCADcDAAJ/IAIoAgAiAQRAIAIoAghBqOMJIAERBQAMAQtBqOMJECgLIgFFDQAgASAAKQIANwL04QEgAUH84QFqIAAoAgg2AgAgARBZIAEhAwsgAkEQaiQAIAMLywEBAn8jAEEgayIBJAAgAEGBgIDAADYCtOIBIABBADYCiOIBIABBADYC7OEBIABCADcDkOIBIABBADYCpOMJIABBADYC3OIBIABCADcCzOIBIABBADYCvOIBIABBADYCxOABIABCADcCnOIBIABBpOIBakIANwIAIABBrOIBakEANgIAIAFCADcCECABQgA3AhggASABKQMYNwMIIAEgASkDEDcDACABKAIIQQh2QQFxIQIgAEEANgLg4gEgACACNgKM4gEgAUEgaiQAC3YBA38jAEEwayIBJAAgAARAIAEgAEHE0AFqIgIoAgA2AiggASAAKQK80AE3AyAgACgCACEDIAEgAigCADYCGCABIAApArzQATcDECADIAFBEGoQGyABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALzAEBAX8gACABKAK00AE2ApjiASAAIAEoAgQiAjYCwOABIAAgAjYCvOABIAAgAiABKAIIaiICNgK44AEgACACNgLE4AEgASgCuNABBEAgAEKBgICAEDcDiOEBIAAgAUGk0ABqNgIMIAAgAUGUIGo2AgggACABQZwwajYCBCAAIAFBDGo2AgAgAEGs0AFqIAFBqNABaigCADYCACAAQbDQAWogAUGs0AFqKAIANgIAIABBtNABaiABQbDQAWooAgA2AgAPCyAAQgA3A4jhAQs7ACACRQRAQbp/DwsgBEUEQEFsDwsgAiAEEGAEQCAAIAEgAiADIAQgBRBhDwsgACABIAIgAyAEIAUQZQtGAQF/IwBBEGsiBSQAIAVBCGogBBAOAn8gBS0ACQRAIAAgASACIAMgBBAyDAELIAAgASACIAMgBBA0CyEAIAVBEGokACAACzQAIAAgAyAEIAUQNiIFEAMEQCAFDwsgBSAESQR/IAEgAiADIAVqIAQgBWsgABA1BUG4fwsLRgEBfyMAQRBrIgUkACAFQQhqIAQQDgJ/IAUtAAkEQCAAIAEgAiADIAQQYgwBCyAAIAEgAiADIAQQNQshACAFQRBqJAAgAAtZAQF/QQ8hAiABIABJBEAgAUEE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",Kr=new class{init(){return Jr||(Jr="undefined"!=typeof fetch?fetch("data:application/wasm;base64,"+zr).then((A=>A.arrayBuffer())).then((A=>WebAssembly.instantiate(A,Yr))).then(this._init):WebAssembly.instantiate(Buffer.from(zr,"base64"),Yr).then(this._init),Jr)}_init(A){Or=A.instance,Yr.env.emscripten_notify_memory_growth(0)}decode(A,e=0){if(!Or)throw new Error("ZSTDDecoder: Await .init() before decoding.");const t=A.byteLength,i=Or.exports.malloc(t);Hr.set(A,i),e=e||Number(Or.exports.ZSTD_findDecompressedSize(i,t));const a=Or.exports.malloc(e),r=Or.exports.ZSTD_decompress(a,e,i,t),n=Hr.slice(a,a+r);return Or.exports.free(i),Or.exports.free(a),n}};var Pr=Object.freeze({__proto__:null,default:class extends Fe{constructor(A){super(),this.planarConfiguration=void 0!==A.PlanarConfiguration?A.PlanarConfiguration:1,this.samplesPerPixel=void 0!==A.SamplesPerPixel?A.SamplesPerPixel:1,this.addCompression=A.LercParameters[OA]}decodeBlock(A){switch(this.addCompression){case HA:break;case YA:A=Mr(new Uint8Array(A)).buffer;break;case zA:A=Kr.decode(new Uint8Array(A)).buffer;break;default:throw new Error(`Unsupported LERC additional compression method identifier: ${this.addCompression}`)}return qr.decode(A,{returnPixelInterleavedDims:1===this.planarConfiguration}).pixels[0].buffer}},zstd:Kr});var Vr=Object.freeze({__proto__:null,default:class extends Fe{constructor(){if(super(),"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 decode(A,e){const t=new Blob([e]),i=await createImageBitmap(t);let a;"undefined"!=typeof document?(a=document.createElement("canvas"),a.width=i.width,a.height=i.height):a=new OffscreenCanvas(i.width,i.height);const r=a.getContext("2d");return r.drawImage(i,0,0),r.getImageData(0,0,i.width,i.height).data.buffer}}});exports.CogBitmapLayer=tt,exports.CogTerrainLayer=nt,exports.CogTiles=$e,exports.GeoImage=Pe;
|
|
4
|
+
function(){var A,g,I,e,t,B,i,C,Q,E,s,a,o,r,n,h,l=(A={defaultNoDataValue:-34027999387901484e22,decode:function(B,i){var C=(i=i||{}).encodedMaskData||null===i.encodedMaskData,Q=t(B,i.inputOffset||0,C),E=null!==i.noDataValue?i.noDataValue:A.defaultNoDataValue,s=g(Q,i.pixelType||Float32Array,i.encodedMaskData,E,i.returnMask),a={width:Q.width,height:Q.height,pixelData:s.resultPixels,minValue:s.minValue,maxValue:Q.pixels.maxValue,noDataValue:E};return s.resultMask&&(a.maskData=s.resultMask),i.returnEncodedMask&&Q.mask&&(a.encodedMaskData=Q.mask.bitset?Q.mask.bitset:null),i.returnFileInfo&&(a.fileInfo=I(Q),i.computeUsedBitDepths&&(a.fileInfo.bitDepths=e(Q))),a}},g=function(A,g,I,e,t){var i,C,Q,E=0,s=A.pixels.numBlocksX,a=A.pixels.numBlocksY,o=Math.floor(A.width/s),r=Math.floor(A.height/a),n=2*A.maxZError,h=Number.MAX_VALUE;I=I||(A.mask?A.mask.bitset:null),C=new g(A.width*A.height),t&&I&&(Q=new Uint8Array(A.width*A.height));for(var l,c,w=new Float32Array(o*r),D=0;D<=a;D++){var d=D!==a?r:A.height%a;if(0!==d)for(var y=0;y<=s;y++){var f=y!==s?o:A.width%s;if(0!==f){var u,S,G,N,F=D*A.width*r+y*o,k=A.width-f,R=A.pixels.blocks[E];if(R.encoding<2?(0===R.encoding?u=R.rawData:(B(R.stuffedData,R.bitsPerPixel,R.numValidPixels,R.offset,n,w,A.pixels.maxValue),u=w),S=0):G=2===R.encoding?0:R.offset,I)for(c=0;c<d;c++){for(7&F&&(N=I[F>>3],N<<=7&F),l=0;l<f;l++)7&F||(N=I[F>>3]),128&N?(Q&&(Q[F]=1),h=h>(i=R.encoding<2?u[S++]:G)?i:h,C[F++]=i):(Q&&(Q[F]=0),C[F++]=e),N<<=1;F+=k}else if(R.encoding<2)for(c=0;c<d;c++){for(l=0;l<f;l++)h=h>(i=u[S++])?i:h,C[F++]=i;F+=k}else for(h=h>G?G:h,c=0;c<d;c++){for(l=0;l<f;l++)C[F++]=G;F+=k}if(1===R.encoding&&S!==R.numValidPixels)throw"Block and Mask do not match";E++}}}return{resultPixels:C,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}}},e=function(A){for(var g=A.pixels.numBlocksX*A.pixels.numBlocksY,I={},e=0;e<g;e++){var t=A.pixels.blocks[e];0===t.encoding?I.float32=!0:1===t.encoding?I[t.bitsPerPixel]=!0:I[0]=!0}return Object.keys(I)},t=function(A,g,I){var e={},t=new Uint8Array(A,g,10);if(e.fileIdentifierString=String.fromCharCode.apply(null,t),"CntZImage"!==e.fileIdentifierString.trim())throw"Unexpected file identifier string: "+e.fileIdentifierString;g+=10;var B=new DataView(A,g,24);if(e.fileVersion=B.getInt32(0,!0),e.imageType=B.getInt32(4,!0),e.height=B.getUint32(8,!0),e.width=B.getUint32(12,!0),e.maxZError=B.getFloat64(16,!0),g+=24,!I)if(B=new DataView(A,g,16),e.mask={},e.mask.numBlocksY=B.getUint32(0,!0),e.mask.numBlocksX=B.getUint32(4,!0),e.mask.numBytes=B.getUint32(8,!0),e.mask.maxValue=B.getFloat32(12,!0),g+=16,e.mask.numBytes>0){var i=new Uint8Array(Math.ceil(e.width*e.height/8)),C=(B=new DataView(A,g,e.mask.numBytes)).getInt16(0,!0),Q=2,E=0;do{if(C>0)for(;C--;)i[E++]=B.getUint8(Q++);else{var s=B.getUint8(Q++);for(C=-C;C--;)i[E++]=s}C=B.getInt16(Q,!0),Q+=2}while(Q<e.mask.numBytes);if(-32768!==C||E<i.length)throw"Unexpected end of mask RLE encoding";e.mask.bitset=i,g+=e.mask.numBytes}else 0===(e.mask.numBytes|e.mask.numBlocksY|e.mask.maxValue)&&(e.mask.bitset=new Uint8Array(Math.ceil(e.width*e.height/8)));B=new DataView(A,g,16),e.pixels={},e.pixels.numBlocksY=B.getUint32(0,!0),e.pixels.numBlocksX=B.getUint32(4,!0),e.pixels.numBytes=B.getUint32(8,!0),e.pixels.maxValue=B.getFloat32(12,!0),g+=16;var a=e.pixels.numBlocksX,o=e.pixels.numBlocksY,r=a+(e.width%a>0?1:0),n=o+(e.height%o>0?1:0);e.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;B=new DataView(A,g,Math.min(10,D));var d={};e.pixels.blocks[h++]=d;var y=B.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=B.getInt8(1),w++;else if(1===y)d.offset=B.getInt16(1,!0),w+=2;else{if(0!==y)throw"Invalid block offset type";d.offset=B.getFloat32(1,!0),w+=4}if(1===d.encoding)if(y=B.getUint8(w),w++,d.bitsPerPixel=63&y,y>>=6,d.numValidPixelsType=y,2===y)d.numValidPixels=B.getUint8(w),w++;else if(1===y)d.numValidPixels=B.getUint16(w,!0),w+=2;else{if(0!==y)throw"Invalid valid pixel count type";d.numValidPixels=B.getUint32(w,!0),w+=4}}var f;if(g+=w,3!==d.encoding)if(0===d.encoding){var u=(e.pixels.numBytes-1)/4;if(u!==Math.floor(u))throw"uncompressed block has invalid length";f=new ArrayBuffer(4*u),new Uint8Array(f).set(new Uint8Array(A,g,4*u));var S=new Float32Array(f);d.rawData=S,g+=4*u}else if(1===d.encoding){var G=Math.ceil(d.numValidPixels*d.bitsPerPixel/8),N=Math.ceil(G/4);f=new ArrayBuffer(4*N),new Uint8Array(f).set(new Uint8Array(A,g,G)),d.stuffedData=new Uint32Array(f),g+=G}}else g++}return e.eofOffset=g,e},B=function(A,g,I,e,t,B,i){var C,Q,E,s=(1<<g)-1,a=0,o=0,r=Math.ceil((i-e)/t),n=4*A.length-Math.ceil(g*I/8);for(A[A.length-1]<<=8*n,C=0;C<I;C++){if(0===o&&(E=A[a++],o=32),o>=g)Q=E>>>o-g&s,o-=g;else{var h=g-o;Q=(E&s)<<h&s,Q+=(E=A[a++])>>>(o=32-h)}B[C]=Q<r?e+Q*t:i}return B},A),c=(i=function(A,g,I,e,t,B,i,C){var Q,E,s,a,o,r=(1<<I)-1,n=0,h=0,l=4*A.length-Math.ceil(I*e/8);if(A[A.length-1]<<=8*l,t)for(Q=0;Q<e;Q++)0===h&&(s=A[n++],h=32),h>=I?(E=s>>>h-I&r,h-=I):(E=(s&r)<<(a=I-h)&r,E+=(s=A[n++])>>>(h=32-a)),g[Q]=t[E];else for(o=Math.ceil((C-B)/i),Q=0;Q<e;Q++)0===h&&(s=A[n++],h=32),h>=I?(E=s>>>h-I&r,h-=I):(E=(s&r)<<(a=I-h)&r,E+=(s=A[n++])>>>(h=32-a)),g[Q]=E<o?B+E*i:C},C=function(A,g,I,e,t,B){var i,C=(1<<g)-1,Q=0,E=0,s=0,a=0,o=0,r=[],n=4*A.length-Math.ceil(g*I/8);A[A.length-1]<<=8*n;var h=Math.ceil((B-e)/t);for(E=0;E<I;E++)0===a&&(i=A[Q++],a=32),a>=g?(o=i>>>a-g&C,a-=g):(o=(i&C)<<(s=g-a)&C,o+=(i=A[Q++])>>>(a=32-s)),r[E]=o<h?e+o*t:B;return r.unshift(e),r},Q=function(A,g,I,e,t,B,i,C){var Q,E,s,a,o=(1<<I)-1,r=0,n=0,h=0;if(t)for(Q=0;Q<e;Q++)0===n&&(s=A[r++],n=32,h=0),n>=I?(E=s>>>h&o,n-=I,h+=I):(E=s>>>h&o,n=32-(a=I-n),E|=((s=A[r++])&(1<<a)-1)<<I-a,h=a),g[Q]=t[E];else{var l=Math.ceil((C-B)/i);for(Q=0;Q<e;Q++)0===n&&(s=A[r++],n=32,h=0),n>=I?(E=s>>>h&o,n-=I,h+=I):(E=s>>>h&o,n=32-(a=I-n),E|=((s=A[r++])&(1<<a)-1)<<I-a,h=a),g[Q]=E<l?B+E*i:C}return g},E=function(A,g,I,e,t,B){var i,C=(1<<g)-1,Q=0,E=0,s=0,a=0,o=0,r=0,n=[],h=Math.ceil((B-e)/t);for(E=0;E<I;E++)0===a&&(i=A[Q++],a=32,r=0),a>=g?(o=i>>>r&C,a-=g,r+=g):(o=i>>>r&C,a=32-(s=g-a),o|=((i=A[Q++])&(1<<s)-1)<<g-s,r=s),n[E]=o<h?e+o*t:B;return n.unshift(e),n},s=function(A,g,I,e){var t,B,i,C,Q=(1<<I)-1,E=0,s=0,a=4*A.length-Math.ceil(I*e/8);for(A[A.length-1]<<=8*a,t=0;t<e;t++)0===s&&(i=A[E++],s=32),s>=I?(B=i>>>s-I&Q,s-=I):(B=(i&Q)<<(C=I-s)&Q,B+=(i=A[E++])>>>(s=32-C)),g[t]=B;return g},a=function(A,g,I,e){var t,B,i,C,Q=(1<<I)-1,E=0,s=0,a=0;for(t=0;t<e;t++)0===s&&(i=A[E++],s=32,a=0),s>=I?(B=i>>>a&Q,s-=I,a+=I):(B=i>>>a&Q,s=32-(C=I-s),B|=((i=A[E++])&(1<<C)-1)<<I-C,a=C),g[t]=B;return g},o={HUFFMAN_LUT_BITS_MAX:12,computeChecksumFletcher32:function(A){for(var g=65535,I=65535,e=A.length,t=Math.floor(e/2),B=0;t;){var i=t>=359?359:t;t-=i;do{g+=A[B++]<<8,I+=g+=A[B++]}while(--i);g=(65535&g)+(g>>>16),I=(65535&I)+(I>>>16)}return 1&e&&(I+=g+=A[B]<<8),((I=(65535&I)+(I>>>16))<<16|(g=(65535&g)+(g>>>16)))>>>0},readHeaderInfo:function(A,g){var I=g.ptr,e=new Uint8Array(A,I,6),t={};if(t.fileIdentifierString=String.fromCharCode.apply(null,e),0!==t.fileIdentifierString.lastIndexOf("Lerc2",0))throw"Unexpected file identifier string (expect Lerc2 ): "+t.fileIdentifierString;I+=6;var B,i=new DataView(A,I,8),C=i.getInt32(0,!0);if(t.fileVersion=C,I+=4,C>=3&&(t.checksum=i.getUint32(4,!0),I+=4),i=new DataView(A,I,12),t.height=i.getUint32(0,!0),t.width=i.getUint32(4,!0),I+=8,C>=4?(t.numDims=i.getUint32(8,!0),I+=4):t.numDims=1,i=new DataView(A,I,40),t.numValidPixel=i.getUint32(0,!0),t.microBlockSize=i.getInt32(4,!0),t.blobSize=i.getInt32(8,!0),t.imageType=i.getInt32(12,!0),t.maxZError=i.getFloat64(16,!0),t.zMin=i.getFloat64(24,!0),t.zMax=i.getFloat64(32,!0),I+=40,g.headerInfo=t,g.ptr=I,C>=3&&(B=C>=4?52:48,this.computeChecksumFletcher32(new Uint8Array(A,I-B,t.blobSize-14))!==t.checksum))throw"Checksum failed.";return!0},checkMinMaxRanges:function(A,g){var I=g.headerInfo,e=this.getDataTypeArray(I.imageType),t=I.numDims*this.getDataTypeSize(I.imageType),B=this.readSubArray(A,g.ptr,e,t),i=this.readSubArray(A,g.ptr+t,e,t);g.ptr+=2*t;var C,Q=!0;for(C=0;C<I.numDims;C++)if(B[C]!==i[C]){Q=!1;break}return I.minValues=B,I.maxValues=i,Q},readSubArray:function(A,g,I,e){var t;if(I===Uint8Array)t=new Uint8Array(A,g,e);else{var B=new ArrayBuffer(e);new Uint8Array(B).set(new Uint8Array(A,g,e)),t=new I(B)}return t},readMask:function(A,g){var I,e,t=g.ptr,B=g.headerInfo,i=B.width*B.height,C=B.numValidPixel,Q=new DataView(A,t,4),E={};if(E.numBytes=Q.getUint32(0,!0),t+=4,(0===C||i===C)&&0!==E.numBytes)throw"invalid mask";if(0===C)I=new Uint8Array(Math.ceil(i/8)),E.bitset=I,e=new Uint8Array(i),g.pixels.resultMask=e,t+=E.numBytes;else if(E.numBytes>0){I=new Uint8Array(Math.ceil(i/8));var s=(Q=new DataView(A,t,E.numBytes)).getInt16(0,!0),a=2,o=0,r=0;do{if(s>0)for(;s--;)I[o++]=Q.getUint8(a++);else for(r=Q.getUint8(a++),s=-s;s--;)I[o++]=r;s=Q.getInt16(a,!0),a+=2}while(a<E.numBytes);if(-32768!==s||o<I.length)throw"Unexpected end of mask RLE encoding";e=new Uint8Array(i);var n=0,h=0;for(h=0;h<i;h++)7&h?(n=I[h>>3],n<<=7&h):n=I[h>>3],128&n&&(e[h]=1);g.pixels.resultMask=e,E.bitset=I,t+=E.numBytes}return g.ptr=t,g.mask=E,!0},readDataOneSweep:function(A,g,I,e){var t,B=g.ptr,i=g.headerInfo,C=i.numDims,Q=i.width*i.height,E=i.imageType,s=i.numValidPixel*o.getDataTypeSize(E)*C,a=g.pixels.resultMask;if(I===Uint8Array)t=new Uint8Array(A,B,s);else{var r=new ArrayBuffer(s);new Uint8Array(r).set(new Uint8Array(A,B,s)),t=new I(r)}if(t.length===Q*C)g.pixels.resultPixels=e?o.swapDimensionOrder(t,Q,C,I,!0):t;else{g.pixels.resultPixels=new I(Q*C);var n=0,h=0,l=0,c=0;if(C>1){if(e){for(h=0;h<Q;h++)if(a[h])for(c=h,l=0;l<C;l++,c+=Q)g.pixels.resultPixels[c]=t[n++]}else for(h=0;h<Q;h++)if(a[h])for(c=h*C,l=0;l<C;l++)g.pixels.resultPixels[c+l]=t[n++]}else for(h=0;h<Q;h++)a[h]&&(g.pixels.resultPixels[h]=t[n++])}return B+=s,g.ptr=B,!0},readHuffmanTree:function(A,g){var I=this.HUFFMAN_LUT_BITS_MAX,e=new DataView(A,g.ptr,16);if(g.ptr+=16,e.getInt32(0,!0)<2)throw"unsupported Huffman version";var t=e.getInt32(4,!0),B=e.getInt32(8,!0),i=e.getInt32(12,!0);if(B>=i)return!1;var C=new Uint32Array(i-B);o.decodeBits(A,g,C);var Q,E,s,a,n=[];for(Q=B;Q<i;Q++)n[E=Q-(Q<t?0:t)]={first:C[Q-B],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=B;Q<i;Q++)(a=n[E=Q-(Q<t?0:t)].first)>0&&(n[E].second=w<<d>>>32-a,32-d>=a?32===(d+=a)&&(d=0,w=D[++y]):(d+=a-32,w=D[++y],n[E].second|=w>>>32-d));var f=0,u=0,S=new r;for(Q=0;Q<n.length;Q++)void 0!==n[Q]&&(f=Math.max(f,n[Q].first));u=f>=I?I:f;var G,N,F,k,R,L=[];for(Q=B;Q<i;Q++)if((a=n[E=Q-(Q<t?0:t)].first)>0)if(G=[a,E],a<=u)for(N=n[E].second<<u-a,F=1<<u-a,s=0;s<F;s++)L[N|s]=G;else for(N=n[E].second,R=S,k=a-1;k>=0;k--)N>>>k&1?(R.right||(R.right=new r),R=R.right):(R.left||(R.left=new r),R=R.left),0!==k||R.val||(R.val=G[1]);return{decodeLut:L,numBitsLUTQick:u,numBitsLUT:f,tree:S,stuffedData:D,srcPtr:y,bitPos:d}},readHuffman:function(A,g,I,e){var t,B,i,C,Q,E,s,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,f=w.srcPtr,u=w.bitPos,S=w.numBitsLUTQick,G=w.numBitsLUT,N=0===g.headerInfo.imageType?128:0,F=g.pixels.resultMask,k=0;u>0&&(f++,u=0);var R,L=y[f],U=1===g.encodeMode,m=new I(c*n),p=m;if(n<2||U){for(R=0;R<n;R++)if(n>1&&(p=new I(m.buffer,c*R,c),k=0),g.headerInfo.numValidPixel===l*h)for(a=0,E=0;E<h;E++)for(s=0;s<l;s++,a++){if(B=0,Q=C=L<<u>>>32-S,32-u<S&&(Q=C|=y[f+1]>>>64-u-S),D[Q])B=D[Q][1],u+=D[Q][0];else for(Q=C=L<<u>>>32-G,32-u<G&&(Q=C|=y[f+1]>>>64-u-G),t=d,r=0;r<G;r++)if(!(t=C>>>G-r-1&1?t.right:t.left).left&&!t.right){B=t.val,u=u+r+1;break}u>=32&&(u-=32,L=y[++f]),i=B-N,U?(i+=s>0?k:E>0?p[a-l]:k,i&=255,p[a]=i,k=i):p[a]=i}else for(a=0,E=0;E<h;E++)for(s=0;s<l;s++,a++)if(F[a]){if(B=0,Q=C=L<<u>>>32-S,32-u<S&&(Q=C|=y[f+1]>>>64-u-S),D[Q])B=D[Q][1],u+=D[Q][0];else for(Q=C=L<<u>>>32-G,32-u<G&&(Q=C|=y[f+1]>>>64-u-G),t=d,r=0;r<G;r++)if(!(t=C>>>G-r-1&1?t.right:t.left).left&&!t.right){B=t.val,u=u+r+1;break}u>=32&&(u-=32,L=y[++f]),i=B-N,U?(s>0&&F[a-1]?i+=k:E>0&&F[a-l]?i+=p[a-l]:i+=k,i&=255,p[a]=i,k=i):p[a]=i}}else for(a=0,E=0;E<h;E++)for(s=0;s<l;s++)if(a=E*l+s,!F||F[a])for(R=0;R<n;R++,a+=c){if(B=0,Q=C=L<<u>>>32-S,32-u<S&&(Q=C|=y[f+1]>>>64-u-S),D[Q])B=D[Q][1],u+=D[Q][0];else for(Q=C=L<<u>>>32-G,32-u<G&&(Q=C|=y[f+1]>>>64-u-G),t=d,r=0;r<G;r++)if(!(t=C>>>G-r-1&1?t.right:t.left).left&&!t.right){B=t.val,u=u+r+1;break}u>=32&&(u-=32,L=y[++f]),i=B-N,p[a]=i}g.ptr=g.ptr+4*(f+1)+(u>0?4:0),g.pixels.resultPixels=m,n>1&&!e&&(g.pixels.resultPixels=o.swapDimensionOrder(m,c,n,I))},decodeBits:function(A,g,I,e,t){var B=g.headerInfo,o=B.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 f,u,S,G,N,F,k,R,L,U=2*B.maxZError,m=B.numDims>1?B.maxValues[t]:B.zMax;if(D){for(g.counter.lut++,R=h.getUint8(r),r++,G=Math.ceil((R-1)*d/8),N=Math.ceil(G/4),u=new ArrayBuffer(4*N),S=new Uint8Array(u),g.ptr+=r,S.set(new Uint8Array(A,g.ptr,G)),k=new Uint32Array(u),g.ptr+=G,L=0;R-1>>>L;)L++;G=Math.ceil(y*L/8),N=Math.ceil(G/4),u=new ArrayBuffer(4*N),(S=new Uint8Array(u)).set(new Uint8Array(A,g.ptr,G)),f=new Uint32Array(u),g.ptr+=G,F=o>=3?E(k,d,R-1,e,U,m):C(k,d,R-1,e,U,m),o>=3?Q(f,I,L,y,F):i(f,I,L,y,F)}else g.counter.bitstuffer++,L=d,g.ptr+=r,L>0&&(G=Math.ceil(y*L/8),N=Math.ceil(G/4),u=new ArrayBuffer(4*N),(S=new Uint8Array(u)).set(new Uint8Array(A,g.ptr,G)),f=new Uint32Array(u),g.ptr+=G,o>=3?null==e?a(f,I,L,y):Q(f,I,L,y,!1,e,U,m):null==e?s(f,I,L,y):i(f,I,L,y,!1,e,U,m))},readTiles:function(A,g,I,e){var t=g.headerInfo,B=t.width,i=t.height,C=B*i,Q=t.microBlockSize,E=t.imageType,s=o.getDataTypeSize(E),a=Math.ceil(B/Q),r=Math.ceil(i/Q);g.pixels.numBlocksY=r,g.pixels.numBlocksX=a,g.pixels.ptr=0;var n,h,l,c,w,D,d,y,f,u,S=0,G=0,N=0,F=0,k=0,R=0,L=0,U=0,m=0,p=0,Y=0,M=0,K=0,b=0,J=0,H=new I(Q*Q),q=i%Q||Q,x=B%Q||Q,_=t.numDims,T=g.pixels.resultMask,O=g.pixels.resultPixels,v=t.fileVersion>=5?14:15,P=t.zMax;for(N=0;N<r;N++)for(k=N!==r-1?Q:q,F=0;F<a;F++)for(p=N*B*Q+F*Q,Y=B-(R=F!==a-1?Q:x),y=0;y<_;y++){if(_>1?(u=O,p=N*B*Q+F*Q,O=new I(g.pixels.resultPixels.buffer,C*y*s,C),P=t.maxValues[y]):u=null,L=A.byteLength-g.ptr,h={},J=0,U=(n=new DataView(A,g.ptr,Math.min(10,L))).getUint8(0),J++,f=t.fileVersion>=5?4&U:0,m=U>>6&255,(U>>2&v)!=(F*Q>>3&v))throw"integrity issue";if(f&&0===y)throw"integrity issue";if((w=3&U)>3)throw g.ptr+=J,"Invalid block encoding ("+w+")";if(2!==w)if(0===w){if(f)throw"integrity issue";if(g.counter.uncompressed++,g.ptr+=J,M=(M=k*R*s)<(K=A.byteLength-g.ptr)?M:K,l=new ArrayBuffer(M%s===0?M:M+s-M%s),new Uint8Array(l).set(new Uint8Array(A,g.ptr,M)),c=new I(l),b=0,T)for(S=0;S<k;S++){for(G=0;G<R;G++)T[p]&&(O[p]=c[b++]),p++;p+=Y}else for(S=0;S<k;S++){for(G=0;G<R;G++)O[p++]=c[b++];p+=Y}g.ptr+=b*s}else if(D=o.getDataTypeUsed(f&&E<6?4:E,m),d=o.getOnePixel(h,J,D,n),J+=o.getDataTypeSize(D),3===w)if(g.ptr+=J,g.counter.constantoffset++,T)for(S=0;S<k;S++){for(G=0;G<R;G++)T[p]&&(O[p]=f?Math.min(P,u[p]+d):d),p++;p+=Y}else for(S=0;S<k;S++){for(G=0;G<R;G++)O[p]=f?Math.min(P,u[p]+d):d,p++;p+=Y}else if(g.ptr+=J,o.decodeBits(A,g,H,d,y),J=0,f)if(T)for(S=0;S<k;S++){for(G=0;G<R;G++)T[p]&&(O[p]=H[J++]+u[p]),p++;p+=Y}else for(S=0;S<k;S++){for(G=0;G<R;G++)O[p]=H[J++]+u[p],p++;p+=Y}else if(T)for(S=0;S<k;S++){for(G=0;G<R;G++)T[p]&&(O[p]=H[J++]),p++;p+=Y}else for(S=0;S<k;S++){for(G=0;G<R;G++)O[p++]=H[J++];p+=Y}else{if(f)if(T)for(S=0;S<k;S++)for(G=0;G<R;G++)T[p]&&(O[p]=u[p]),p++;else for(S=0;S<k;S++)for(G=0;G<R;G++)O[p]=u[p],p++;g.counter.constant++,g.ptr+=J}}_>1&&!e&&(g.pixels.resultPixels=o.swapDimensionOrder(g.pixels.resultPixels,C,_,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:o.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,e=A.headerInfo.zMin,t=A.headerInfo.maxValues,B=A.headerInfo.numDims,i=A.headerInfo.height*A.headerInfo.width,C=0,Q=0,E=0,s=A.pixels.resultMask,a=A.pixels.resultPixels;if(s)if(B>1){if(g)for(C=0;C<B;C++)for(E=C*i,I=t[C],Q=0;Q<i;Q++)s[Q]&&(a[E+Q]=I);else for(Q=0;Q<i;Q++)if(s[Q])for(E=Q*B,C=0;C<B;C++)a[E+B]=t[C]}else for(Q=0;Q<i;Q++)s[Q]&&(a[Q]=I);else if(B>1&&e!==I)if(g)for(C=0;C<B;C++)for(E=C*i,I=t[C],Q=0;Q<i;Q++)a[E+Q]=I;else for(Q=0;Q<i;Q++)for(E=Q*B,C=0;C<B;C++)a[E+C]=t[C];else for(Q=0;Q<i*B;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,e){var t=0;switch(I){case 0:t=e.getInt8(g);break;case 1:t=e.getUint8(g);break;case 2:t=e.getInt16(g,!0);break;case 3:t=e.getUint16(g,!0);break;case 4:t=e.getInt32(g,!0);break;case 5:t=e.getUInt32(g,!0);break;case 6:t=e.getFloat32(g,!0);break;case 7:t=e.getFloat64(g,!0);break;default:throw"the decoder does not understand this pixel type"}return t},swapDimensionOrder:function(A,g,I,e,t){var B=0,i=0,C=0,Q=0,E=A;if(I>1)if(E=new e(g*I),t)for(B=0;B<g;B++)for(Q=B,C=0;C<I;C++,Q+=g)E[Q]=A[i++];else for(B=0;B<g;B++)for(Q=B,C=0;C<I;C++,Q+=g)E[i++]=A[Q];return E}},r=function(A,g,I){this.val=A,this.left=g,this.right=I},{decode:function(A,g){var I=(g=g||{}).noDataValue,e=0,t={};if(t.ptr=g.inputOffset||0,t.pixels={},o.readHeaderInfo(A,t)){var B=t.headerInfo,i=B.fileVersion,C=o.getDataTypeArray(B.imageType);if(i>5)throw"unsupported lerc version 2."+i;o.readMask(A,t),B.numValidPixel===B.width*B.height||t.pixels.resultMask||(t.pixels.resultMask=g.maskData);var Q=B.width*B.height;t.pixels.resultPixels=new C(Q*B.numDims),t.counter={onesweep:0,uncompressed:0,lut:0,bitstuffer:0,constant:0,constantoffset:0};var E,s=!g.returnPixelInterleavedDims;if(0!==B.numValidPixel)if(B.zMax===B.zMin)o.constructConstantSurface(t,s);else if(i>=4&&o.checkMinMaxRanges(A,t))o.constructConstantSurface(t,s);else{var a=new DataView(A,t.ptr,2),r=a.getUint8(0);if(t.ptr++,r)o.readDataOneSweep(A,t,C,s);else if(i>1&&B.imageType<=1&&Math.abs(B.maxZError-.5)<1e-5){var n=a.getUint8(1);if(t.ptr++,t.encodeMode=n,n>2||i<4&&n>1)throw"Invalid Huffman flag "+n;n?o.readHuffman(A,t,C,s):o.readTiles(A,t,C,s)}else o.readTiles(A,t,C,s)}t.eofOffset=t.ptr,g.inputOffset?(E=t.headerInfo.blobSize+g.inputOffset-t.ptr,Math.abs(E)>=1&&(t.eofOffset=g.inputOffset+t.headerInfo.blobSize)):(E=t.headerInfo.blobSize-t.ptr,Math.abs(E)>=1&&(t.eofOffset=t.headerInfo.blobSize));var h={width:B.width,height:B.height,pixelData:t.pixels.resultPixels,minValue:B.zMin,maxValue:B.zMax,validPixelCount:B.numValidPixel,dimCount:B.numDims,dimStats:{minValues:B.minValues,maxValues:B.maxValues},maskData:t.pixels.resultMask};if(t.pixels.resultMask&&o.isValidPixelValue(B.imageType,I)){var l=t.pixels.resultMask;for(e=0;e<Q;e++)l[e]||(h.pixelData[e]=I);h.noDataValue=I}return t.noDataValue=I,g.returnFileInfo&&(h.fileInfo=o.formatFileInfo(t)),h}},getBandCount:function(A){for(var g=0,I=0,e={ptr:0,pixels:{}};I<A.byteLength-58;)o.readHeaderInfo(A,e),I+=e.headerInfo.blobSize,g++,e.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,e,t=(g=g||{}).inputOffset||0,B=new Uint8Array(A,t,10),i=String.fromCharCode.apply(null,B);if("CntZImage"===i.trim())I=l,e=1;else{if("Lerc2"!==i.substring(0,5))throw"Unexpected file identifier string: "+i;I=c,e=2}for(var C,Q,E,s,a,o,r=0,n=A.byteLength-10,h=[],D={width:0,height:0,pixels:[],pixelType:g.pixelType,mask:null,statistics:[]},d=0;t<n;){var y=I.decode(A,{inputOffset:t,encodedMaskData:C,maskData:E,returnMask:0===r,returnEncodedMask:0===r,returnFileInfo:!0,returnPixelInterleavedDims:g.returnPixelInterleavedDims,pixelType:g.pixelType||null,noDataValue:g.noDataValue||null});t=y.fileInfo.eofOffset,E=y.maskData,0===r&&(C=y.encodedMaskData,D.width=y.width,D.height=y.height,D.dimCount=y.dimCount||1,D.pixelType=y.pixelType||y.fileInfo.pixelType,D.mask=E),e>1&&(E&&h.push(E),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(e>1&&d>1){for(o=D.width*D.height,D.bandMasks=h,(E=new Uint8Array(o)).set(h[0]),s=1;s<h.length;s++)for(Q=h[s],a=0;a<o;a++)E[a]=E[a]&Q[a];D.maskData=E}return D}};mB.exports?mB.exports=D:this.Lerc=D}();var YB=UB(pB.exports);let MB,KB,bB;const JB={env:{emscripten_notify_memory_growth:A=>{bB=new Uint8Array(KB.exports.memory.buffer)}}};const HB="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AikACDcACCAHIDo3AAAgEUEZSA0BIARBGGohBANAIAIpABAhOiAEIAIpABg3AAggBCA6NwAAIAIpACAhOiAEIAIpACg3ABggBCA6NwAQIAJBIGohAiAEQSBqIgQgCkkNAAsMAQsCQAJAIAUoAswCIhEgBUHgAWogJUEHcUEMbGoiDygCACICaiIHIBxLDQAgCSAPKAIEIgogAmoiBmogG0sNACAGQSBqIBQgCWtNDQELIAUgDygCCDYCoAEgBSAPKQIANwOYASAJIBQgBUGYAWogBUHMAmogHCALIBcgIhAgIQYMAQsgAiAJaiEEIA8oAgghFSARKQAAITogCSARKQAINwAIIAkgOjcAAAJAIAJBEUkNACARKQAQITogCSARKQAYNwAYIAkgOjcAECACQRBrQRFIDQAgEUEQaiECIAlBIGohEgNAIAIpABAhOiASIAIpABg3AAggEiA6NwAAIAIpACAhOiASIAIpACg3ABggEiA6NwAQIAJBIGohAiASQSBqIhIgBEkNAAsLIAQgFWshAiAFIAc2AswCIAQgC2sgFUkEQCAVIAQgF2tLDQwgIiAiIAIgC2siD2oiByAKak8EQCAKRQ0CIAQgByAK/AoAAAwCC0EAIA9rIgIEQCAEIAcgAvwKAAALIAogD2ohCiAEIA9rIQQgCyECCyAVQRBPBEAgAikAACE6IAQgAikACDcACCAEIDo3AAAgCkERSA0BIAQgCmohByAEQRBqIQQDQCACKQAQITogBCACKQAYNwAIIAQgOjcAACACKQAgITogBCACKQAoNwAYIAQgOjcAECACQSBqIQIgBEEgaiIEIAdJDQALDAELAkAgFUEHTQRAIAQgAi0AADoAACAEIAItAAE6AAEgBCACLQACOgACIAQgAi0AAzoAAyAEIAIgFUECdCIHQeAaaigCAGoiAigAADYABCACIAdBgBtqKAIAayECDAELIAQgAikAADcAAAsgCkEJSQ0AIAQgCmohDyAEQQhqIgcgAkEIaiICa0EPTARAA0AgByACKQAANwAAIAJBCGohAiAHQQhqIgcgD0kNAAwCCwALIAIpAAAhOiAHIAIpAAg3AAggByA6NwAAIApBGUgNACAEQRhqIQQDQCACKQAQITogBCACKQAYNwAIIAQgOjcAACACKQAgITogBCACKQAoNwAYIAQgOjcAECACQSBqIQIgBEEgaiIEIA9JDQALCyAGQYh/SwRAIAYhAwwLCyAFQeABaiAlQQdxQQxsaiICIA02AgggAiAMNgIEIAIgEDYCAAsgBiAJaiEJICVBAWohJSAQIC1qIAxqIS0MAQsLIAUoArABIAUoArQBRw0HIAUoAqwBQSBHDQcgDiAoayEQA0ACQCAOIBBMBEBBACECA0AgAkEDRg0CIDIgAkECdCIDaiADICZqKAIANgIAIAJBAWohAgwACwALIAVB4AFqIBBBB3FBDGxqIQoCfwJAIAgoAoTsAUECRgRAIAUoAswCIg8gCigCACIEaiIHIAgoAoDsASICSwRAIAIgD0cEQCACIA9rIgIgFCAJa0sNCyAJIA8gAhAfIAogBCACayIENgIAIAIgCWohCQsgBSAWNgLMAiAIQQA2AoTsAQJAAkACQCAEQYCABEoNACAJIAooAgQiDSAEaiIGaiAbSw0AIAZBIGogFCAJa00NAQsgBSAKKAIINgJQIAUgCikCADcDSCAJIBQgBUHIAGogBUHMAmogGSALIBcgIhAgIQYMAQsgBCAWaiEHIAQgCWohDCAKKAIIIQogFikAACE6IAkgFikACDcACCAJIDo3AAACQCAEQRFJDQAgHikAACE6IAkgHikACDcAGCAJIDo3ABAgBEEQa0ERSA0AIAlBIGohAiAeIQQDQCAEKQAQITogAiAEKQAYNwAIIAIgOjcAACAEKQAgITogAiAEKQAoNwAYIAIgOjcAECAEQSBqIQQgAkEgaiICIAxJDQALCyAMIAprIQIgBSAHNgLMAiAMIAtrIApJBEAgCiAMIBdrSw0PICIgIiACIAtrIgdqIgQgDWpPBEAgDUUNAiAMIAQgDfwKAAAMAgtBACAHayICBEAgDCAEIAL8CgAACyAHIA1qIQ0gDCAHayEMIAshAgsgCkEQTwRAIAIpAAAhOiAMIAIpAAg3AAggDCA6NwAAIA1BEUgNASAMIA1qIQcgDEEQaiEEA0AgAikAECE6IAQgAikAGDcACCAEIDo3AAAgAikAICE6IAQgAikAKDcAGCAEIDo3ABAgAkEgaiECIARBIGoiBCAHSQ0ACwwBCwJAIApBB00EQCAMIAItAAA6AAAgDCACLQABOgABIAwgAi0AAjoAAiAMIAItAAM6AAMgDCACIApBAnQiBEHgGmooAgBqIgIoAAA2AAQgAiAEQYAbaigCAGshAgwBCyAMIAIpAAA3AAALIA1BCUkNACAMIA1qIQcgDEEIaiIEIAJBCGoiAmtBD0wEQANAIAQgAikAADcAACACQQhqIQIgBEEIaiIEIAdJDQAMAgsACyACKQAAITogBCACKQAINwAIIAQgOjcAACANQRlIDQAgDEEYaiEEA0AgAikAECE6IAQgAikAGDcACCAEIDo3AAAgAikAICE6IAQgAikAKDcAGCAEIDo3ABAgAkEgaiECIARBIGoiBCAHSQ0ACwsgBkGJf08EQCAGIQMMDgsgGSEcIAYgCWoMAwsgB0EgayECAkACQCAHIBxLDQAgCSAKKAIEIhIgBGoiDGogAksNACAMQSBqIBQgCWtNDQELIAUgCigCCDYCYCAFIAopAgA3A1ggCSAUIAIgBUHYAGogBUHMAmogHCALIBcgIhAhIQwMAgsgBCAJaiEGIAooAgghCiAPKQAAITogCSAPKQAINwAIIAkgOjcAAAJAIARBEUkNACAPKQAQITogCSAPKQAYNwAYIAkgOjcAECAEQRBrQRFIDQAgD0EQaiECIAlBIGohBANAIAIpABAhOiAEIAIpABg3AAggBCA6NwAAIAIpACAhOiAEIAIpACg3ABggBCA6NwAQIAJBIGohAiAEQSBqIgQgBkkNAAsLIAYgCmshAiAFIAc2AswCIAYgC2sgCkkEQCAKIAYgF2tLDQ0gIiAiIAIgC2siB2oiBCASak8EQCASRQ0DIAYgBCAS/AoAAAwDC0EAIAdrIgIEQCAGIAQgAvwKAAALIAcgEmohEiAGIAdrIQYgCyECCyAKQRBPBEAgAikAACE6IAYgAikACDcACCAGIDo3AAAgEkERSA0CIAYgEmohByAGQRBqIQQDQCACKQAQITogBCACKQAYNwAIIAQgOjcAACACKQAgITogBCACKQAoNwAYIAQgOjcAECACQSBqIQIgBEEgaiIEIAdJDQALDAILAkAgCkEHTQRAIAYgAi0AADoAACAGIAItAAE6AAEgBiACLQACOgACIAYgAi0AAzoAAyAGIAIgCkECdCIEQeAaaigCAGoiAigAADYABCACIARBgBtqKAIAayECDAELIAYgAikAADcAAAsgEkEJSQ0BIAYgEmohByAGQQhqIgQgAkEIaiICa0EPTARAA0AgBCACKQAANwAAIAJBCGohAiAE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",qB=new class{init(){return MB||(MB="undefined"!=typeof fetch?fetch(`data:application/wasm;base64,${HB}`).then(A=>A.arrayBuffer()).then(A=>WebAssembly.instantiate(A,JB)).then(this._init):WebAssembly.instantiate(Buffer.from(HB,"base64"),JB).then(this._init),MB)}_init(A){KB=A.instance,JB.env.emscripten_notify_memory_growth(0)}decode(A,g=0){if(!KB)throw new Error("ZSTDDecoder: Await .init() before decoding.");const I=A.byteLength,e=KB.exports.malloc(I);bB.set(A,e),g=g||Number(KB.exports.ZSTD_findDecompressedSize(e,I));const t=KB.exports.malloc(g),B=KB.exports.ZSTD_decompress(t,g,e,I),i=bB.slice(t,t+B);return KB.exports.free(e),KB.exports.free(t),i}};var xB=Object.freeze({__proto__:null,default:class extends Ng{decodeBlock(A){const g=this.parameters.LercParameters[kA];switch(g){case RA:break;case LA:A=kB(new Uint8Array(A)).buffer;break;case UA:A=qB.decode(new Uint8Array(A)).buffer;break;default:throw new Error(`Unsupported LERC additional compression method identifier: ${g}`)}return YB.decode(A,{returnPixelInterleavedDims:1===this.parameters.planarConfiguration}).pixels[0].buffer}},zstd:qB});let _B,TB,OB,vB;const PB={env:{emscripten_notify_memory_growth:A=>{OB=new Uint8Array(TB.exports.memory.buffer),vB=new DataView(OB.buffer)}}};const ZB="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QQhyIQBBACEDA0AgACADTQ0DIANBQGshAwwACwALQWwhCiAOIA5B/ABqIA5B+ABqIAUgBhAGIgJBiH9LDQEgDigCeCIDIARLDQEgACAOIA4oAnwgByAIIAMgDRAlIAEgADYCACACIQoMAQtBbCEKCyAOQYABaiQAIAoLcAEEfyAAQgA3AgAgAgRAIAFBCmohBiABKAIEIQRBACECQQAhAQNAIAEgBHZFBEAgAiAGIAFBA3RqLQAAIgUgAiAFSxshAiABQQFqIQEgAyAFQRZLaiEDDAELCyAAIAI2AgQgACADQQggBGt0NgIACwuuAQEEfyABIAIoAgQiAyABKAIEaiIENgIEIAAgA0ECdEGwGWooAgAgASgCAEEAIARrdnE2AgACQCAEQSFPBEAgAUGwGjYCCAwBCyABKAIIIgMgASgCEE8EQCABEAwMAQsgAyABKAIMIgVGDQAgASADIAMgBWsgBEEDdiIGIAMgBmsgBUkbIgNrIgU2AgggASAEIANBA3RrNgIEIAEgBSgAADYCAAsgACACQQhqNgIEC40CAgN/AX4gACACaiEEAkACQCACQQhOBEAgACABayICQXlIDQELA0AgACAETw0CIAAgAS0AADoAACAAQQFqIQAgAUEBaiEBDAALAAsCQAJAIAJBb0sNACAAIARBIGsiAksNACABKQAAIQYgACABKQAINwAIIAAgBjcAACACIABrIgVBEU4EQCAAQRBqIQAgASEDA0AgAykAECEGIAAgAykAGDcACCAAIAY3AAAgAykAICEGIAAgAykAKDcAGCAAIAY3ABAgA0EgaiEDIABBIGoiACACSQ0ACwsgASAFaiEBDAELIAAhAgsDQCACIARPDQEgAiABLQAAOgAAIAJBAWohAiABQQFqIQEMAAsACwvfAQEGf0G6fyEKAkAgAigCBCIIIAIoAgAiCWoiDSABIABrSw0AQWwhCiAJIAQgAygCACILa0sNACAAIAlqIgQgAigCCCIMayECIAAgAUEgayIBIAsgCUEAEDMgAyAJIAtqNgIAAkACQCAEIAVrIAxPBEAgAiEFDAELIAwgBCAGa0sNAiAHIAcgAiAFayIDaiICIAhqTwRAIAhFDQIgBCACIAj8CgAADAILQQAgA2siAARAIAQgAiAA/AoAAAsgAyAIaiEIIAQgA2shBAsgBCABIAUgCEEBEDML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",VB=new class{init(){return _B||(_B="undefined"!=typeof fetch?fetch(`data:application/wasm;base64,${ZB}`).then(A=>A.arrayBuffer()).then(A=>WebAssembly.instantiate(A,PB)).then(this._init):WebAssembly.instantiate(Buffer.from(ZB,"base64"),PB).then(this._init),_B)}_init(A){TB=A.instance,PB.env.emscripten_notify_memory_growth(0)}decode(A,g=0){if(!TB)throw new Error("ZSTDDecoder: Await .init() before decoding.");const I=A.byteLength,e=TB.exports.malloc(I);if(OB.set(A,e),0===g&&(g=Number(TB.exports.ZSTD_findDecompressedSize(e,I))),-1===g){TB.exports.free(e);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),t=new Uint8Array(I);let B=0;for(const A of g)t.set(A,B),B+=A.byteLength;return t}const t=TB.exports.malloc(g),B=TB.exports.ZSTD_decompress(t,g,e,I),i=OB.slice(t,t+B);return TB.exports.free(e),TB.exports.free(t),i}*decodeStreaming(A){if(!TB)throw new Error("ZSTDDecoder: Await .init() before decoding.");const g=TB.exports.ZSTD_DStreamInSize(),I=TB.exports.malloc(g),e=TB.exports.ZSTD_DStreamOutSize(),t=TB.exports.malloc(e),B=TB.exports.ZSTD_createDCtx(),i=TB.exports.malloc(12),C=TB.exports.malloc(12);let Q=0;for(const g of A){const A=TB.exports.malloc(g.byteLength);for(OB.set(g,A),vB.setInt32(i,A,!0),vB.setInt32(i+4,g.byteLength,!0),vB.setInt32(i+4+4,0,!0);vB.getUint32(i+4+4,!0)<vB.getUint32(i+4,!0);){vB.setInt32(C,t,!0),vB.setInt32(C+4,e,!0),vB.setInt32(C+4+4,0,!0),Q=TB.exports.ZSTD_decompressStream(B,C,i);const A=vB.getUint32(C+4+4,!0);yield OB.slice(t,t+A)}TB.exports.free(A)}if(TB.exports.ZSTD_freeDCtx(B),TB.exports.free(I),TB.exports.free(t),TB.exports.free(i),TB.exports.free(C),0!==Q)throw new Error("Incomplete stream, more data expected.")}};var zB=Object.freeze({__proto__:null,default:class extends Ng{decodeBlock(A){return VB.decode(new Uint8Array(A)).buffer}},zstd:VB});var jB=Object.freeze({__proto__:null,default:class extends Ng{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 e;"undefined"!=typeof document?(e=document.createElement("canvas"),e.width=I.width,e.height=I.height):e=new OffscreenCanvas(I.width,I.height);const t=e.getContext("2d");t.drawImage(I,0,0);const B=t.getImageData(0,0,I.width,I.height).data,i=this.parameters.samplesPerPixel||4;if(4===i)return B.buffer;if(3===i){const A=new Uint8ClampedArray(I.width*I.height*3);for(let g=0,I=0;g<A.length;g+=3,I+=4)A[g]=B[I],A[g+1]=B[I+1],A[g+2]=B[I+2];return A.buffer}throw new Error(`Unsupported SamplesPerPixel value: ${i}`)}}});exports.CogBitmapLayer=zg,exports.CogTerrainLayer=$g,exports.CogTiles=Pg,exports.GeoImage=Hg;
|
|
5
5
|
//# sourceMappingURL=index.min.js.map
|