@biongff/vizarr 1.1.1 → 1.2.0

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.
Files changed (114) hide show
  1. package/dist/biongff-vizarr.cjs.js +1 -0
  2. package/dist/biongff-vizarr.es.js +7 -0
  3. package/dist/blosc-CeItQ6qj.cjs +17 -0
  4. package/dist/blosc-DaK8KnI4.js +719 -0
  5. package/dist/chunk-INHXZS53-DiyuLb3Z.js +14 -0
  6. package/dist/chunk-INHXZS53-z3BpFH8p.cjs +1 -0
  7. package/dist/deflate-BeJu5ryY.js +10 -0
  8. package/dist/deflate-Ctyqttht.cjs +1 -0
  9. package/dist/index-BR2zkK5Y.cjs +3811 -0
  10. package/dist/index-CU_d8468.js +49053 -0
  11. package/dist/index.d.ts +67 -0
  12. package/dist/jpeg-BWDIgcDK.js +533 -0
  13. package/dist/jpeg-Mp_UXZAJ.cjs +1 -0
  14. package/dist/jpeg2k-1tnzEScI.js +24 -0
  15. package/dist/jpeg2k-CcF6vCxI.cjs +1 -0
  16. package/dist/lerc-BJaDi7aO.js +1039 -0
  17. package/dist/lerc-D-6RihsZ.cjs +1 -0
  18. package/dist/lz4-CssV0LoA.js +643 -0
  19. package/dist/lz4-PFaIsPAh.cjs +15 -0
  20. package/dist/lzw-DBp1lk8U.js +84 -0
  21. package/dist/lzw-De76dcEC.cjs +1 -0
  22. package/dist/packbits-B6vt-6GN.cjs +1 -0
  23. package/dist/packbits-MT4dFhEA.js +24 -0
  24. package/dist/pako.esm-Bx5X36Wo.js +1074 -0
  25. package/dist/pako.esm-DZC2QrbJ.cjs +1 -0
  26. package/dist/raw-BF-NUDI1.js +9 -0
  27. package/dist/raw-vwCA5qWn.cjs +1 -0
  28. package/dist/ref-DAXKePD4.cjs +1 -0
  29. package/dist/ref-HqVJFnCG.js +196 -0
  30. package/dist/webimage-BQlxeHEQ.cjs +1 -0
  31. package/dist/webimage-DTyyK3Ev.js +19 -0
  32. package/dist/zstd-Cqadn9HA.js +610 -0
  33. package/dist/zstd-_xUhkGOV.cjs +15 -0
  34. package/package.json +24 -19
  35. package/.gitattributes +0 -1
  36. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -32
  37. package/.github/ISSUE_TEMPLATE/documentation_update.md +0 -16
  38. package/.github/ISSUE_TEMPLATE/feature_request.md +0 -19
  39. package/.github/ISSUE_TEMPLATE/maintenance.md +0 -19
  40. package/.github/ISSUE_TEMPLATE/optimisation_request.md +0 -23
  41. package/.github/ISSUE_TEMPLATE/support_request.md +0 -25
  42. package/.github/PULL_REQUEST_TEMPLATE.md +0 -21
  43. package/.github/dependabot.yml +0 -13
  44. package/.github/workflows/deploy.yml +0 -56
  45. package/.github/workflows/npm-publish-dev.yml +0 -49
  46. package/.github/workflows/npm-publish.yml +0 -42
  47. package/.github/workflows/release.yml +0 -37
  48. package/.github/workflows/test.yml +0 -21
  49. package/.releaserc.json +0 -29
  50. package/CHANGELOG.md +0 -70
  51. package/CITATION.cff +0 -56
  52. package/CONTRIBUTING.md +0 -82
  53. package/README.md +0 -85
  54. package/assets/favicon.ico +0 -0
  55. package/assets/favicon.png +0 -0
  56. package/assets/logo-wide.png +0 -0
  57. package/assets/logo-wide.svg +0 -60
  58. package/assets/logo.png +0 -0
  59. package/assets/logo.svg +0 -36
  60. package/assets/robots.txt +0 -3
  61. package/assets/screenshot.png +0 -0
  62. package/biome.json +0 -34
  63. package/index.html +0 -24
  64. package/main.ts +0 -52
  65. package/patches/@vivjs__loaders@0.17.2.patch +0 -13
  66. package/python/.python-version +0 -1
  67. package/python/README.md +0 -14
  68. package/python/Untitled.ipynb +0 -40
  69. package/python/deno.json +0 -22
  70. package/python/notebooks/IDR_example.ipynb +0 -86
  71. package/python/notebooks/README.md +0 -35
  72. package/python/notebooks/create_fixture.py +0 -72
  73. package/python/notebooks/getting_started.ipynb +0 -217
  74. package/python/notebooks/mandelbrot.ipynb +0 -211
  75. package/python/notebooks/spatial_transformations.ipynb +0 -139
  76. package/python/pyproject.toml +0 -18
  77. package/python/src/vizarr/__init__.py +0 -10
  78. package/python/src/vizarr/_widget.js +0 -113
  79. package/python/src/vizarr/_widget.py +0 -67
  80. package/python/uv.lock +0 -2495
  81. package/src/ZarrPixelSource.ts +0 -182
  82. package/src/codecs/jpeg2k.ts +0 -22
  83. package/src/codecs/register.ts +0 -2
  84. package/src/components/LayerController/AcquisitionController.tsx +0 -46
  85. package/src/components/LayerController/AddChannelButton.tsx +0 -122
  86. package/src/components/LayerController/AxisOptions.tsx +0 -93
  87. package/src/components/LayerController/AxisSlider.tsx +0 -86
  88. package/src/components/LayerController/AxisSliders.tsx +0 -29
  89. package/src/components/LayerController/ChannelController.tsx +0 -84
  90. package/src/components/LayerController/ChannelOptions.tsx +0 -183
  91. package/src/components/LayerController/ColorPalette.tsx +0 -40
  92. package/src/components/LayerController/Content.tsx +0 -71
  93. package/src/components/LayerController/Header.tsx +0 -48
  94. package/src/components/LayerController/Labels.tsx +0 -73
  95. package/src/components/LayerController/LayerFitToViewportButton.tsx +0 -43
  96. package/src/components/LayerController/LayerVisibilityButton.tsx +0 -32
  97. package/src/components/LayerController/OpacitySlider.tsx +0 -25
  98. package/src/components/LayerController/index.tsx +0 -42
  99. package/src/components/Menu.tsx +0 -54
  100. package/src/components/Viewer.tsx +0 -136
  101. package/src/hooks.ts +0 -29
  102. package/src/index.tsx +0 -138
  103. package/src/io.ts +0 -276
  104. package/src/layers/grid-layer.ts +0 -214
  105. package/src/layers/label-layer.ts +0 -446
  106. package/src/layers/viv-layers.ts +0 -55
  107. package/src/lru-store.ts +0 -57
  108. package/src/ome.ts +0 -388
  109. package/src/state.ts +0 -202
  110. package/src/theme.ts +0 -80
  111. package/src/types.ts +0 -112
  112. package/src/utils.ts +0 -663
  113. package/tsconfig.json +0 -14
  114. package/vite.config.js +0 -47
@@ -0,0 +1,1039 @@
1
+ import { i as sA } from "./pako.esm-Bx5X36Wo.js";
2
+ import { g as DA, B as nA } from "./index-CU_d8468.js";
3
+ const fA = {
4
+ AddCompression: 1
5
+ }, gA = {
6
+ None: 0,
7
+ Deflate: 1,
8
+ Zstandard: 2
9
+ };
10
+ var BA = { exports: {} }, iA;
11
+ function tA() {
12
+ return iA || (iA = 1, function(j) {
13
+ /* 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 */
14
+ (function() {
15
+ var J = function() {
16
+ var u = {};
17
+ u.defaultNoDataValue = -34027999387901484e22, u.decode = function(I, a) {
18
+ a = a || {};
19
+ var Q = a.encodedMaskData || a.encodedMaskData === null, g = E(I, a.inputOffset || 0, Q), D = a.noDataValue !== null ? a.noDataValue : u.defaultNoDataValue, B = L(
20
+ g,
21
+ a.pixelType || Float32Array,
22
+ a.encodedMaskData,
23
+ D,
24
+ a.returnMask
25
+ ), C = {
26
+ width: g.width,
27
+ height: g.height,
28
+ pixelData: B.resultPixels,
29
+ minValue: B.minValue,
30
+ maxValue: g.pixels.maxValue,
31
+ noDataValue: D
32
+ };
33
+ return B.resultMask && (C.maskData = B.resultMask), a.returnEncodedMask && g.mask && (C.encodedMaskData = g.mask.bitset ? g.mask.bitset : null), a.returnFileInfo && (C.fileInfo = m(g), a.computeUsedBitDepths && (C.fileInfo.bitDepths = z(g))), C;
34
+ };
35
+ var L = function(I, a, Q, g, D) {
36
+ var B = 0, C = I.pixels.numBlocksX, o = I.pixels.numBlocksY, r = Math.floor(I.width / C), s = Math.floor(I.height / o), f = 2 * I.maxZError, e = Number.MAX_VALUE, i;
37
+ Q = Q || (I.mask ? I.mask.bitset : null);
38
+ var t, F;
39
+ t = new a(I.width * I.height), D && Q && (F = new Uint8Array(I.width * I.height));
40
+ for (var S = new Float32Array(r * s), h, U, G = 0; G <= o; G++) {
41
+ var R = G !== o ? s : I.height % o;
42
+ if (R !== 0)
43
+ for (var w = 0; w <= C; w++) {
44
+ var n = w !== C ? r : I.width % C;
45
+ if (n !== 0) {
46
+ var l = G * I.width * s + w * r, y = I.width - n, k = I.pixels.blocks[B], M, c, N;
47
+ k.encoding < 2 ? (k.encoding === 0 ? M = k.rawData : (A(k.stuffedData, k.bitsPerPixel, k.numValidPixels, k.offset, f, S, I.pixels.maxValue), M = S), c = 0) : k.encoding === 2 ? N = 0 : N = k.offset;
48
+ var q;
49
+ if (Q)
50
+ for (U = 0; U < R; U++) {
51
+ for (l & 7 && (q = Q[l >> 3], q <<= l & 7), h = 0; h < n; h++)
52
+ l & 7 || (q = Q[l >> 3]), q & 128 ? (F && (F[l] = 1), i = k.encoding < 2 ? M[c++] : N, e = e > i ? i : e, t[l++] = i) : (F && (F[l] = 0), t[l++] = g), q <<= 1;
53
+ l += y;
54
+ }
55
+ else if (k.encoding < 2)
56
+ for (U = 0; U < R; U++) {
57
+ for (h = 0; h < n; h++)
58
+ i = M[c++], e = e > i ? i : e, t[l++] = i;
59
+ l += y;
60
+ }
61
+ else
62
+ for (e = e > N ? N : e, U = 0; U < R; U++) {
63
+ for (h = 0; h < n; h++)
64
+ t[l++] = N;
65
+ l += y;
66
+ }
67
+ if (k.encoding === 1 && c !== k.numValidPixels)
68
+ throw "Block and Mask do not match";
69
+ B++;
70
+ }
71
+ }
72
+ }
73
+ return {
74
+ resultPixels: t,
75
+ resultMask: F,
76
+ minValue: e
77
+ };
78
+ }, m = function(I) {
79
+ return {
80
+ fileIdentifierString: I.fileIdentifierString,
81
+ fileVersion: I.fileVersion,
82
+ imageType: I.imageType,
83
+ height: I.height,
84
+ width: I.width,
85
+ maxZError: I.maxZError,
86
+ eofOffset: I.eofOffset,
87
+ mask: I.mask ? {
88
+ numBlocksX: I.mask.numBlocksX,
89
+ numBlocksY: I.mask.numBlocksY,
90
+ numBytes: I.mask.numBytes,
91
+ maxValue: I.mask.maxValue
92
+ } : null,
93
+ pixels: {
94
+ numBlocksX: I.pixels.numBlocksX,
95
+ numBlocksY: I.pixels.numBlocksY,
96
+ numBytes: I.pixels.numBytes,
97
+ maxValue: I.pixels.maxValue,
98
+ noDataValue: I.noDataValue
99
+ }
100
+ };
101
+ }, z = function(I) {
102
+ for (var a = I.pixels.numBlocksX * I.pixels.numBlocksY, Q = {}, g = 0; g < a; g++) {
103
+ var D = I.pixels.blocks[g];
104
+ D.encoding === 0 ? Q.float32 = !0 : D.encoding === 1 ? Q[D.bitsPerPixel] = !0 : Q[0] = !0;
105
+ }
106
+ return Object.keys(Q);
107
+ }, E = function(I, a, Q) {
108
+ var g = {}, D = new Uint8Array(I, a, 10);
109
+ if (g.fileIdentifierString = String.fromCharCode.apply(null, D), g.fileIdentifierString.trim() !== "CntZImage")
110
+ throw "Unexpected file identifier string: " + g.fileIdentifierString;
111
+ a += 10;
112
+ var B = new DataView(I, a, 24);
113
+ if (g.fileVersion = B.getInt32(0, !0), g.imageType = B.getInt32(4, !0), g.height = B.getUint32(8, !0), g.width = B.getUint32(12, !0), g.maxZError = B.getFloat64(16, !0), a += 24, !Q)
114
+ if (B = new DataView(I, a, 16), g.mask = {}, g.mask.numBlocksY = B.getUint32(0, !0), g.mask.numBlocksX = B.getUint32(4, !0), g.mask.numBytes = B.getUint32(8, !0), g.mask.maxValue = B.getFloat32(12, !0), a += 16, g.mask.numBytes > 0) {
115
+ var C = new Uint8Array(Math.ceil(g.width * g.height / 8));
116
+ B = new DataView(I, a, g.mask.numBytes);
117
+ var o = B.getInt16(0, !0), r = 2, s = 0;
118
+ do {
119
+ if (o > 0)
120
+ for (; o--; )
121
+ C[s++] = B.getUint8(r++);
122
+ else {
123
+ var f = B.getUint8(r++);
124
+ for (o = -o; o--; )
125
+ C[s++] = f;
126
+ }
127
+ o = B.getInt16(r, !0), r += 2;
128
+ } while (r < g.mask.numBytes);
129
+ if (o !== -32768 || s < C.length)
130
+ throw "Unexpected end of mask RLE encoding";
131
+ g.mask.bitset = C, a += g.mask.numBytes;
132
+ } else (g.mask.numBytes | g.mask.numBlocksY | g.mask.maxValue) === 0 && (g.mask.bitset = new Uint8Array(Math.ceil(g.width * g.height / 8)));
133
+ B = new DataView(I, a, 16), g.pixels = {}, g.pixels.numBlocksY = B.getUint32(0, !0), g.pixels.numBlocksX = B.getUint32(4, !0), g.pixels.numBytes = B.getUint32(8, !0), g.pixels.maxValue = B.getFloat32(12, !0), a += 16;
134
+ var e = g.pixels.numBlocksX, i = g.pixels.numBlocksY, t = e + (g.width % e > 0 ? 1 : 0), F = i + (g.height % i > 0 ? 1 : 0);
135
+ g.pixels.blocks = new Array(t * F);
136
+ for (var S = 0, h = 0; h < F; h++)
137
+ for (var U = 0; U < t; U++) {
138
+ var G = 0, R = I.byteLength - a;
139
+ B = new DataView(I, a, Math.min(10, R));
140
+ var w = {};
141
+ g.pixels.blocks[S++] = w;
142
+ var n = B.getUint8(0);
143
+ if (G++, w.encoding = n & 63, w.encoding > 3)
144
+ throw "Invalid block encoding (" + w.encoding + ")";
145
+ if (w.encoding === 2) {
146
+ a++;
147
+ continue;
148
+ }
149
+ if (n !== 0 && n !== 2) {
150
+ if (n >>= 6, w.offsetType = n, n === 2)
151
+ w.offset = B.getInt8(1), G++;
152
+ else if (n === 1)
153
+ w.offset = B.getInt16(1, !0), G += 2;
154
+ else if (n === 0)
155
+ w.offset = B.getFloat32(1, !0), G += 4;
156
+ else
157
+ throw "Invalid block offset type";
158
+ if (w.encoding === 1)
159
+ if (n = B.getUint8(G), G++, w.bitsPerPixel = n & 63, n >>= 6, w.numValidPixelsType = n, n === 2)
160
+ w.numValidPixels = B.getUint8(G), G++;
161
+ else if (n === 1)
162
+ w.numValidPixels = B.getUint16(G, !0), G += 2;
163
+ else if (n === 0)
164
+ w.numValidPixels = B.getUint32(G, !0), G += 4;
165
+ else
166
+ throw "Invalid valid pixel count type";
167
+ }
168
+ if (a += G, w.encoding !== 3) {
169
+ var l, y;
170
+ if (w.encoding === 0) {
171
+ var k = (g.pixels.numBytes - 1) / 4;
172
+ if (k !== Math.floor(k))
173
+ throw "uncompressed block has invalid length";
174
+ l = new ArrayBuffer(k * 4), y = new Uint8Array(l), y.set(new Uint8Array(I, a, k * 4));
175
+ var M = new Float32Array(l);
176
+ w.rawData = M, a += k * 4;
177
+ } else if (w.encoding === 1) {
178
+ var c = Math.ceil(w.numValidPixels * w.bitsPerPixel / 8), N = Math.ceil(c / 4);
179
+ l = new ArrayBuffer(N * 4), y = new Uint8Array(l), y.set(new Uint8Array(I, a, c)), w.stuffedData = new Uint32Array(l), a += c;
180
+ }
181
+ }
182
+ }
183
+ return g.eofOffset = a, g;
184
+ }, A = function(I, a, Q, g, D, B, C) {
185
+ var o = (1 << a) - 1, r = 0, s, f = 0, e, i, t = Math.ceil((C - g) / D), F = I.length * 4 - Math.ceil(a * Q / 8);
186
+ for (I[I.length - 1] <<= 8 * F, s = 0; s < Q; s++) {
187
+ if (f === 0 && (i = I[r++], f = 32), f >= a)
188
+ e = i >>> f - a & o, f -= a;
189
+ else {
190
+ var S = a - f;
191
+ e = (i & o) << S & o, i = I[r++], f = 32 - S, e += i >>> f;
192
+ }
193
+ B[s] = e < t ? g + e * D : C;
194
+ }
195
+ return B;
196
+ };
197
+ return u;
198
+ }(), T = /* @__PURE__ */ function() {
199
+ var u = {
200
+ //methods ending with 2 are for the new byte order used by Lerc2.3 and above.
201
+ //originalUnstuff is used to unpack Huffman code table. code is duplicated to unstuffx for performance reasons.
202
+ unstuff: function(E, A, I, a, Q, g, D, B) {
203
+ var C = (1 << I) - 1, o = 0, r, s = 0, f, e, i, t, F = E.length * 4 - Math.ceil(I * a / 8);
204
+ if (E[E.length - 1] <<= 8 * F, Q)
205
+ for (r = 0; r < a; r++)
206
+ s === 0 && (e = E[o++], s = 32), s >= I ? (f = e >>> s - I & C, s -= I) : (i = I - s, f = (e & C) << i & C, e = E[o++], s = 32 - i, f += e >>> s), A[r] = Q[f];
207
+ else
208
+ for (t = Math.ceil((B - g) / D), r = 0; r < a; r++)
209
+ s === 0 && (e = E[o++], s = 32), s >= I ? (f = e >>> s - I & C, s -= I) : (i = I - s, f = (e & C) << i & C, e = E[o++], s = 32 - i, f += e >>> s), A[r] = f < t ? g + f * D : B;
210
+ },
211
+ unstuffLUT: function(E, A, I, a, Q, g) {
212
+ var D = (1 << A) - 1, B = 0, C = 0, o = 0, r = 0, s = 0, f, e = [], i = E.length * 4 - Math.ceil(A * I / 8);
213
+ E[E.length - 1] <<= 8 * i;
214
+ var t = Math.ceil((g - a) / Q);
215
+ for (C = 0; C < I; C++)
216
+ r === 0 && (f = E[B++], r = 32), r >= A ? (s = f >>> r - A & D, r -= A) : (o = A - r, s = (f & D) << o & D, f = E[B++], r = 32 - o, s += f >>> r), e[C] = s < t ? a + s * Q : g;
217
+ return e.unshift(a), e;
218
+ },
219
+ unstuff2: function(E, A, I, a, Q, g, D, B) {
220
+ var C = (1 << I) - 1, o = 0, r, s = 0, f = 0, e, i, t;
221
+ if (Q)
222
+ for (r = 0; r < a; r++)
223
+ s === 0 && (i = E[o++], s = 32, f = 0), s >= I ? (e = i >>> f & C, s -= I, f += I) : (t = I - s, e = i >>> f & C, i = E[o++], s = 32 - t, e |= (i & (1 << t) - 1) << I - t, f = t), A[r] = Q[e];
224
+ else {
225
+ var F = Math.ceil((B - g) / D);
226
+ for (r = 0; r < a; r++)
227
+ s === 0 && (i = E[o++], s = 32, f = 0), s >= I ? (e = i >>> f & C, s -= I, f += I) : (t = I - s, e = i >>> f & C, i = E[o++], s = 32 - t, e |= (i & (1 << t) - 1) << I - t, f = t), A[r] = e < F ? g + e * D : B;
228
+ }
229
+ return A;
230
+ },
231
+ unstuffLUT2: function(E, A, I, a, Q, g) {
232
+ var D = (1 << A) - 1, B = 0, C = 0, o = 0, r = 0, s = 0, f = 0, e, i = [], t = Math.ceil((g - a) / Q);
233
+ for (C = 0; C < I; C++)
234
+ r === 0 && (e = E[B++], r = 32, f = 0), r >= A ? (s = e >>> f & D, r -= A, f += A) : (o = A - r, s = e >>> f & D, e = E[B++], r = 32 - o, s |= (e & (1 << o) - 1) << A - o, f = o), i[C] = s < t ? a + s * Q : g;
235
+ return i.unshift(a), i;
236
+ },
237
+ originalUnstuff: function(E, A, I, a) {
238
+ var Q = (1 << I) - 1, g = 0, D, B = 0, C, o, r, s = E.length * 4 - Math.ceil(I * a / 8);
239
+ for (E[E.length - 1] <<= 8 * s, D = 0; D < a; D++)
240
+ B === 0 && (o = E[g++], B = 32), B >= I ? (C = o >>> B - I & Q, B -= I) : (r = I - B, C = (o & Q) << r & Q, o = E[g++], B = 32 - r, C += o >>> B), A[D] = C;
241
+ return A;
242
+ },
243
+ originalUnstuff2: function(E, A, I, a) {
244
+ var Q = (1 << I) - 1, g = 0, D, B = 0, C = 0, o, r, s;
245
+ for (D = 0; D < a; D++)
246
+ B === 0 && (r = E[g++], B = 32, C = 0), B >= I ? (o = r >>> C & Q, B -= I, C += I) : (s = I - B, o = r >>> C & Q, r = E[g++], B = 32 - s, o |= (r & (1 << s) - 1) << I - s, C = s), A[D] = o;
247
+ return A;
248
+ }
249
+ }, L = {
250
+ HUFFMAN_LUT_BITS_MAX: 12,
251
+ //use 2^12 lut, treat it like constant
252
+ computeChecksumFletcher32: function(E) {
253
+ for (var A = 65535, I = 65535, a = E.length, Q = Math.floor(a / 2), g = 0; Q; ) {
254
+ var D = Q >= 359 ? 359 : Q;
255
+ Q -= D;
256
+ do
257
+ A += E[g++] << 8, I += A += E[g++];
258
+ while (--D);
259
+ A = (A & 65535) + (A >>> 16), I = (I & 65535) + (I >>> 16);
260
+ }
261
+ return a & 1 && (I += A += E[g] << 8), A = (A & 65535) + (A >>> 16), I = (I & 65535) + (I >>> 16), (I << 16 | A) >>> 0;
262
+ },
263
+ readHeaderInfo: function(E, A) {
264
+ var I = A.ptr, a = new Uint8Array(E, I, 6), Q = {};
265
+ if (Q.fileIdentifierString = String.fromCharCode.apply(null, a), Q.fileIdentifierString.lastIndexOf("Lerc2", 0) !== 0)
266
+ throw "Unexpected file identifier string (expect Lerc2 ): " + Q.fileIdentifierString;
267
+ I += 6;
268
+ var g = new DataView(E, I, 8), D = g.getInt32(0, !0);
269
+ Q.fileVersion = D, I += 4, D >= 3 && (Q.checksum = g.getUint32(4, !0), I += 4), g = new DataView(E, I, 12), Q.height = g.getUint32(0, !0), Q.width = g.getUint32(4, !0), I += 8, D >= 4 ? (Q.numDims = g.getUint32(8, !0), I += 4) : Q.numDims = 1, g = new DataView(E, I, 40), Q.numValidPixel = g.getUint32(0, !0), Q.microBlockSize = g.getInt32(4, !0), Q.blobSize = g.getInt32(8, !0), Q.imageType = g.getInt32(12, !0), Q.maxZError = g.getFloat64(16, !0), Q.zMin = g.getFloat64(24, !0), Q.zMax = g.getFloat64(32, !0), I += 40, A.headerInfo = Q, A.ptr = I;
270
+ var B, C;
271
+ if (D >= 3 && (C = D >= 4 ? 52 : 48, B = this.computeChecksumFletcher32(new Uint8Array(E, I - C, Q.blobSize - 14)), B !== Q.checksum))
272
+ throw "Checksum failed.";
273
+ return !0;
274
+ },
275
+ checkMinMaxRanges: function(E, A) {
276
+ var I = A.headerInfo, a = this.getDataTypeArray(I.imageType), Q = I.numDims * this.getDataTypeSize(I.imageType), g = this.readSubArray(E, A.ptr, a, Q), D = this.readSubArray(E, A.ptr + Q, a, Q);
277
+ A.ptr += 2 * Q;
278
+ var B, C = !0;
279
+ for (B = 0; B < I.numDims; B++)
280
+ if (g[B] !== D[B]) {
281
+ C = !1;
282
+ break;
283
+ }
284
+ return I.minValues = g, I.maxValues = D, C;
285
+ },
286
+ readSubArray: function(E, A, I, a) {
287
+ var Q;
288
+ if (I === Uint8Array)
289
+ Q = new Uint8Array(E, A, a);
290
+ else {
291
+ var g = new ArrayBuffer(a), D = new Uint8Array(g);
292
+ D.set(new Uint8Array(E, A, a)), Q = new I(g);
293
+ }
294
+ return Q;
295
+ },
296
+ readMask: function(E, A) {
297
+ var I = A.ptr, a = A.headerInfo, Q = a.width * a.height, g = a.numValidPixel, D = new DataView(E, I, 4), B = {};
298
+ if (B.numBytes = D.getUint32(0, !0), I += 4, (g === 0 || Q === g) && B.numBytes !== 0)
299
+ throw "invalid mask";
300
+ var C, o;
301
+ if (g === 0)
302
+ C = new Uint8Array(Math.ceil(Q / 8)), B.bitset = C, o = new Uint8Array(Q), A.pixels.resultMask = o, I += B.numBytes;
303
+ else if (B.numBytes > 0) {
304
+ C = new Uint8Array(Math.ceil(Q / 8)), D = new DataView(E, I, B.numBytes);
305
+ var r = D.getInt16(0, !0), s = 2, f = 0, e = 0;
306
+ do {
307
+ if (r > 0)
308
+ for (; r--; )
309
+ C[f++] = D.getUint8(s++);
310
+ else
311
+ for (e = D.getUint8(s++), r = -r; r--; )
312
+ C[f++] = e;
313
+ r = D.getInt16(s, !0), s += 2;
314
+ } while (s < B.numBytes);
315
+ if (r !== -32768 || f < C.length)
316
+ throw "Unexpected end of mask RLE encoding";
317
+ o = new Uint8Array(Q);
318
+ var i = 0, t = 0;
319
+ for (t = 0; t < Q; t++)
320
+ t & 7 ? (i = C[t >> 3], i <<= t & 7) : i = C[t >> 3], i & 128 && (o[t] = 1);
321
+ A.pixels.resultMask = o, B.bitset = C, I += B.numBytes;
322
+ }
323
+ return A.ptr = I, A.mask = B, !0;
324
+ },
325
+ readDataOneSweep: function(E, A, I, a) {
326
+ var Q = A.ptr, g = A.headerInfo, D = g.numDims, B = g.width * g.height, C = g.imageType, o = g.numValidPixel * L.getDataTypeSize(C) * D, r, s = A.pixels.resultMask;
327
+ if (I === Uint8Array)
328
+ r = new Uint8Array(E, Q, o);
329
+ else {
330
+ var f = new ArrayBuffer(o), e = new Uint8Array(f);
331
+ e.set(new Uint8Array(E, Q, o)), r = new I(f);
332
+ }
333
+ if (r.length === B * D)
334
+ a ? A.pixels.resultPixels = L.swapDimensionOrder(r, B, D, I, !0) : A.pixels.resultPixels = r;
335
+ else {
336
+ A.pixels.resultPixels = new I(B * D);
337
+ var i = 0, t = 0, F = 0, S = 0;
338
+ if (D > 1) {
339
+ if (a) {
340
+ for (t = 0; t < B; t++)
341
+ if (s[t])
342
+ for (S = t, F = 0; F < D; F++, S += B)
343
+ A.pixels.resultPixels[S] = r[i++];
344
+ } else
345
+ for (t = 0; t < B; t++)
346
+ if (s[t])
347
+ for (S = t * D, F = 0; F < D; F++)
348
+ A.pixels.resultPixels[S + F] = r[i++];
349
+ } else
350
+ for (t = 0; t < B; t++)
351
+ s[t] && (A.pixels.resultPixels[t] = r[i++]);
352
+ }
353
+ return Q += o, A.ptr = Q, !0;
354
+ },
355
+ readHuffmanTree: function(E, A) {
356
+ var I = this.HUFFMAN_LUT_BITS_MAX, a = new DataView(E, A.ptr, 16);
357
+ A.ptr += 16;
358
+ var Q = a.getInt32(0, !0);
359
+ if (Q < 2)
360
+ throw "unsupported Huffman version";
361
+ var g = a.getInt32(4, !0), D = a.getInt32(8, !0), B = a.getInt32(12, !0);
362
+ if (D >= B)
363
+ return !1;
364
+ var C = new Uint32Array(B - D);
365
+ L.decodeBits(E, A, C);
366
+ var o = [], r, s, f, e;
367
+ for (r = D; r < B; r++)
368
+ s = r - (r < g ? 0 : g), o[s] = { first: C[r - D], second: null };
369
+ var i = E.byteLength - A.ptr, t = Math.ceil(i / 4), F = new ArrayBuffer(t * 4), S = new Uint8Array(F);
370
+ S.set(new Uint8Array(E, A.ptr, i));
371
+ var h = new Uint32Array(F), U = 0, G, R = 0;
372
+ for (G = h[0], r = D; r < B; r++)
373
+ s = r - (r < g ? 0 : g), e = o[s].first, e > 0 && (o[s].second = G << U >>> 32 - e, 32 - U >= e ? (U += e, U === 32 && (U = 0, R++, G = h[R])) : (U += e - 32, R++, G = h[R], o[s].second |= G >>> 32 - U));
374
+ var w = 0, n = 0, l = new m();
375
+ for (r = 0; r < o.length; r++)
376
+ o[r] !== void 0 && (w = Math.max(w, o[r].first));
377
+ w >= I ? n = I : n = w;
378
+ var y = [], k, M, c, N, q, d;
379
+ for (r = D; r < B; r++)
380
+ if (s = r - (r < g ? 0 : g), e = o[s].first, e > 0)
381
+ if (k = [e, s], e <= n)
382
+ for (M = o[s].second << n - e, c = 1 << n - e, f = 0; f < c; f++)
383
+ y[M | f] = k;
384
+ else
385
+ for (M = o[s].second, d = l, N = e - 1; N >= 0; N--)
386
+ q = M >>> N & 1, q ? (d.right || (d.right = new m()), d = d.right) : (d.left || (d.left = new m()), d = d.left), N === 0 && !d.val && (d.val = k[1]);
387
+ return {
388
+ decodeLut: y,
389
+ numBitsLUTQick: n,
390
+ numBitsLUT: w,
391
+ tree: l,
392
+ stuffedData: h,
393
+ srcPtr: R,
394
+ bitPos: U
395
+ };
396
+ },
397
+ readHuffman: function(E, A, I, a) {
398
+ var Q = A.headerInfo, g = Q.numDims, D = A.headerInfo.height, B = A.headerInfo.width, C = B * D, o = this.readHuffmanTree(E, A), r = o.decodeLut, s = o.tree, f = o.stuffedData, e = o.srcPtr, i = o.bitPos, t = o.numBitsLUTQick, F = o.numBitsLUT, S = A.headerInfo.imageType === 0 ? 128 : 0, h, U, G, R = A.pixels.resultMask, w, n, l, y, k, M, c, N = 0;
399
+ i > 0 && (e++, i = 0);
400
+ var q = f[e], d = A.encodeMode === 1, O = new I(C * g), v = O, Y;
401
+ if (g < 2 || d) {
402
+ for (Y = 0; Y < g; Y++)
403
+ if (g > 1 && (v = new I(O.buffer, C * Y, C), N = 0), A.headerInfo.numValidPixel === B * D)
404
+ for (M = 0, y = 0; y < D; y++)
405
+ for (k = 0; k < B; k++, M++) {
406
+ if (U = 0, w = q << i >>> 32 - t, n = w, 32 - i < t && (w |= f[e + 1] >>> 64 - i - t, n = w), r[n])
407
+ U = r[n][1], i += r[n][0];
408
+ else
409
+ for (w = q << i >>> 32 - F, n = w, 32 - i < F && (w |= f[e + 1] >>> 64 - i - F, n = w), h = s, c = 0; c < F; c++)
410
+ if (l = w >>> F - c - 1 & 1, h = l ? h.right : h.left, !(h.left || h.right)) {
411
+ U = h.val, i = i + c + 1;
412
+ break;
413
+ }
414
+ i >= 32 && (i -= 32, e++, q = f[e]), G = U - S, d ? (k > 0 ? G += N : y > 0 ? G += v[M - B] : G += N, G &= 255, v[M] = G, N = G) : v[M] = G;
415
+ }
416
+ else
417
+ for (M = 0, y = 0; y < D; y++)
418
+ for (k = 0; k < B; k++, M++)
419
+ if (R[M]) {
420
+ if (U = 0, w = q << i >>> 32 - t, n = w, 32 - i < t && (w |= f[e + 1] >>> 64 - i - t, n = w), r[n])
421
+ U = r[n][1], i += r[n][0];
422
+ else
423
+ for (w = q << i >>> 32 - F, n = w, 32 - i < F && (w |= f[e + 1] >>> 64 - i - F, n = w), h = s, c = 0; c < F; c++)
424
+ if (l = w >>> F - c - 1 & 1, h = l ? h.right : h.left, !(h.left || h.right)) {
425
+ U = h.val, i = i + c + 1;
426
+ break;
427
+ }
428
+ i >= 32 && (i -= 32, e++, q = f[e]), G = U - S, d ? (k > 0 && R[M - 1] ? G += N : y > 0 && R[M - B] ? G += v[M - B] : G += N, G &= 255, v[M] = G, N = G) : v[M] = G;
429
+ }
430
+ } else
431
+ for (M = 0, y = 0; y < D; y++)
432
+ for (k = 0; k < B; k++)
433
+ if (M = y * B + k, !R || R[M])
434
+ for (Y = 0; Y < g; Y++, M += C) {
435
+ if (U = 0, w = q << i >>> 32 - t, n = w, 32 - i < t && (w |= f[e + 1] >>> 64 - i - t, n = w), r[n])
436
+ U = r[n][1], i += r[n][0];
437
+ else
438
+ for (w = q << i >>> 32 - F, n = w, 32 - i < F && (w |= f[e + 1] >>> 64 - i - F, n = w), h = s, c = 0; c < F; c++)
439
+ if (l = w >>> F - c - 1 & 1, h = l ? h.right : h.left, !(h.left || h.right)) {
440
+ U = h.val, i = i + c + 1;
441
+ break;
442
+ }
443
+ i >= 32 && (i -= 32, e++, q = f[e]), G = U - S, v[M] = G;
444
+ }
445
+ A.ptr = A.ptr + (e + 1) * 4 + (i > 0 ? 4 : 0), A.pixels.resultPixels = O, g > 1 && !a && (A.pixels.resultPixels = L.swapDimensionOrder(O, C, g, I));
446
+ },
447
+ decodeBits: function(E, A, I, a, Q) {
448
+ {
449
+ var g = A.headerInfo, D = g.fileVersion, B = 0, C = E.byteLength - A.ptr >= 5 ? 5 : E.byteLength - A.ptr, o = new DataView(E, A.ptr, C), r = o.getUint8(0);
450
+ B++;
451
+ var s = r >> 6, f = s === 0 ? 4 : 3 - s, e = (r & 32) > 0, i = r & 31, t = 0;
452
+ if (f === 1)
453
+ t = o.getUint8(B), B++;
454
+ else if (f === 2)
455
+ t = o.getUint16(B, !0), B += 2;
456
+ else if (f === 4)
457
+ t = o.getUint32(B, !0), B += 4;
458
+ else
459
+ throw "Invalid valid pixel count type";
460
+ var F = 2 * g.maxZError, S, h, U, G, R, w, n, l, y, k = g.numDims > 1 ? g.maxValues[Q] : g.zMax;
461
+ if (e) {
462
+ for (A.counter.lut++, l = o.getUint8(B), B++, G = Math.ceil((l - 1) * i / 8), R = Math.ceil(G / 4), h = new ArrayBuffer(R * 4), U = new Uint8Array(h), A.ptr += B, U.set(new Uint8Array(E, A.ptr, G)), n = new Uint32Array(h), A.ptr += G, y = 0; l - 1 >>> y; )
463
+ y++;
464
+ G = Math.ceil(t * y / 8), R = Math.ceil(G / 4), h = new ArrayBuffer(R * 4), U = new Uint8Array(h), U.set(new Uint8Array(E, A.ptr, G)), S = new Uint32Array(h), A.ptr += G, D >= 3 ? w = u.unstuffLUT2(n, i, l - 1, a, F, k) : w = u.unstuffLUT(n, i, l - 1, a, F, k), D >= 3 ? u.unstuff2(S, I, y, t, w) : u.unstuff(S, I, y, t, w);
465
+ } else
466
+ A.counter.bitstuffer++, y = i, A.ptr += B, y > 0 && (G = Math.ceil(t * y / 8), R = Math.ceil(G / 4), h = new ArrayBuffer(R * 4), U = new Uint8Array(h), U.set(new Uint8Array(E, A.ptr, G)), S = new Uint32Array(h), A.ptr += G, D >= 3 ? a == null ? u.originalUnstuff2(S, I, y, t) : u.unstuff2(S, I, y, t, !1, a, F, k) : a == null ? u.originalUnstuff(S, I, y, t) : u.unstuff(S, I, y, t, !1, a, F, k));
467
+ }
468
+ },
469
+ readTiles: function(E, A, I, a) {
470
+ var Q = A.headerInfo, g = Q.width, D = Q.height, B = g * D, C = Q.microBlockSize, o = Q.imageType, r = L.getDataTypeSize(o), s = Math.ceil(g / C), f = Math.ceil(D / C);
471
+ A.pixels.numBlocksY = f, A.pixels.numBlocksX = s, A.pixels.ptr = 0;
472
+ var e = 0, i = 0, t = 0, F = 0, S = 0, h = 0, U = 0, G = 0, R = 0, w = 0, n = 0, l = 0, y = 0, k = 0, M = 0, c = 0, N, q, d, O, v, Y, P = new I(C * C), aA = D % C || C, rA = g % C || C, AA, b, $ = Q.numDims, W, K = A.pixels.resultMask, H = A.pixels.resultPixels, oA = Q.fileVersion, EA = oA >= 5 ? 14 : 15, p, IA = Q.zMax, V;
473
+ for (t = 0; t < f; t++)
474
+ for (S = t !== f - 1 ? C : aA, F = 0; F < s; F++)
475
+ for (h = F !== s - 1 ? C : rA, n = t * g * C + F * C, l = g - h, W = 0; W < $; W++) {
476
+ if ($ > 1 ? (V = H, n = t * g * C + F * C, H = new I(A.pixels.resultPixels.buffer, B * W * r, B), IA = Q.maxValues[W]) : V = null, U = E.byteLength - A.ptr, N = new DataView(E, A.ptr, Math.min(10, U)), q = {}, c = 0, G = N.getUint8(0), c++, p = Q.fileVersion >= 5 ? G & 4 : 0, R = G >> 6 & 255, w = G >> 2 & EA, w !== (F * C >> 3 & EA) || p && W === 0)
477
+ throw "integrity issue";
478
+ if (Y = G & 3, Y > 3)
479
+ throw A.ptr += c, "Invalid block encoding (" + Y + ")";
480
+ if (Y === 2) {
481
+ if (p)
482
+ if (K)
483
+ for (e = 0; e < S; e++)
484
+ for (i = 0; i < h; i++)
485
+ K[n] && (H[n] = V[n]), n++;
486
+ else
487
+ for (e = 0; e < S; e++)
488
+ for (i = 0; i < h; i++)
489
+ H[n] = V[n], n++;
490
+ A.counter.constant++, A.ptr += c;
491
+ continue;
492
+ } else if (Y === 0) {
493
+ if (p)
494
+ throw "integrity issue";
495
+ if (A.counter.uncompressed++, A.ptr += c, y = S * h * r, k = E.byteLength - A.ptr, y = y < k ? y : k, d = new ArrayBuffer(y % r === 0 ? y : y + r - y % r), O = new Uint8Array(d), O.set(new Uint8Array(E, A.ptr, y)), v = new I(d), M = 0, K)
496
+ for (e = 0; e < S; e++) {
497
+ for (i = 0; i < h; i++)
498
+ K[n] && (H[n] = v[M++]), n++;
499
+ n += l;
500
+ }
501
+ else
502
+ for (e = 0; e < S; e++) {
503
+ for (i = 0; i < h; i++)
504
+ H[n++] = v[M++];
505
+ n += l;
506
+ }
507
+ A.ptr += M * r;
508
+ } else if (AA = L.getDataTypeUsed(p && o < 6 ? 4 : o, R), b = L.getOnePixel(q, c, AA, N), c += L.getDataTypeSize(AA), Y === 3)
509
+ if (A.ptr += c, A.counter.constantoffset++, K)
510
+ for (e = 0; e < S; e++) {
511
+ for (i = 0; i < h; i++)
512
+ K[n] && (H[n] = p ? Math.min(IA, V[n] + b) : b), n++;
513
+ n += l;
514
+ }
515
+ else
516
+ for (e = 0; e < S; e++) {
517
+ for (i = 0; i < h; i++)
518
+ H[n] = p ? Math.min(IA, V[n] + b) : b, n++;
519
+ n += l;
520
+ }
521
+ else if (A.ptr += c, L.decodeBits(E, A, P, b, W), c = 0, p)
522
+ if (K)
523
+ for (e = 0; e < S; e++) {
524
+ for (i = 0; i < h; i++)
525
+ K[n] && (H[n] = P[c++] + V[n]), n++;
526
+ n += l;
527
+ }
528
+ else
529
+ for (e = 0; e < S; e++) {
530
+ for (i = 0; i < h; i++)
531
+ H[n] = P[c++] + V[n], n++;
532
+ n += l;
533
+ }
534
+ else if (K)
535
+ for (e = 0; e < S; e++) {
536
+ for (i = 0; i < h; i++)
537
+ K[n] && (H[n] = P[c++]), n++;
538
+ n += l;
539
+ }
540
+ else
541
+ for (e = 0; e < S; e++) {
542
+ for (i = 0; i < h; i++)
543
+ H[n++] = P[c++];
544
+ n += l;
545
+ }
546
+ }
547
+ $ > 1 && !a && (A.pixels.resultPixels = L.swapDimensionOrder(A.pixels.resultPixels, B, $, I));
548
+ },
549
+ /*****************
550
+ * private methods (helper methods)
551
+ *****************/
552
+ formatFileInfo: function(E) {
553
+ return {
554
+ fileIdentifierString: E.headerInfo.fileIdentifierString,
555
+ fileVersion: E.headerInfo.fileVersion,
556
+ imageType: E.headerInfo.imageType,
557
+ height: E.headerInfo.height,
558
+ width: E.headerInfo.width,
559
+ numValidPixel: E.headerInfo.numValidPixel,
560
+ microBlockSize: E.headerInfo.microBlockSize,
561
+ blobSize: E.headerInfo.blobSize,
562
+ maxZError: E.headerInfo.maxZError,
563
+ pixelType: L.getPixelType(E.headerInfo.imageType),
564
+ eofOffset: E.eofOffset,
565
+ mask: E.mask ? {
566
+ numBytes: E.mask.numBytes
567
+ } : null,
568
+ pixels: {
569
+ numBlocksX: E.pixels.numBlocksX,
570
+ numBlocksY: E.pixels.numBlocksY,
571
+ //"numBytes": data.pixels.numBytes,
572
+ maxValue: E.headerInfo.zMax,
573
+ minValue: E.headerInfo.zMin,
574
+ noDataValue: E.noDataValue
575
+ }
576
+ };
577
+ },
578
+ constructConstantSurface: function(E, A) {
579
+ var I = E.headerInfo.zMax, a = E.headerInfo.zMin, Q = E.headerInfo.maxValues, g = E.headerInfo.numDims, D = E.headerInfo.height * E.headerInfo.width, B = 0, C = 0, o = 0, r = E.pixels.resultMask, s = E.pixels.resultPixels;
580
+ if (r)
581
+ if (g > 1) {
582
+ if (A)
583
+ for (B = 0; B < g; B++)
584
+ for (o = B * D, I = Q[B], C = 0; C < D; C++)
585
+ r[C] && (s[o + C] = I);
586
+ else
587
+ for (C = 0; C < D; C++)
588
+ if (r[C])
589
+ for (o = C * g, B = 0; B < g; B++)
590
+ s[o + g] = Q[B];
591
+ } else
592
+ for (C = 0; C < D; C++)
593
+ r[C] && (s[C] = I);
594
+ else if (g > 1 && a !== I)
595
+ if (A)
596
+ for (B = 0; B < g; B++)
597
+ for (o = B * D, I = Q[B], C = 0; C < D; C++)
598
+ s[o + C] = I;
599
+ else
600
+ for (C = 0; C < D; C++)
601
+ for (o = C * g, B = 0; B < g; B++)
602
+ s[o + B] = Q[B];
603
+ else
604
+ for (C = 0; C < D * g; C++)
605
+ s[C] = I;
606
+ },
607
+ getDataTypeArray: function(E) {
608
+ var A;
609
+ switch (E) {
610
+ case 0:
611
+ A = Int8Array;
612
+ break;
613
+ case 1:
614
+ A = Uint8Array;
615
+ break;
616
+ case 2:
617
+ A = Int16Array;
618
+ break;
619
+ case 3:
620
+ A = Uint16Array;
621
+ break;
622
+ case 4:
623
+ A = Int32Array;
624
+ break;
625
+ case 5:
626
+ A = Uint32Array;
627
+ break;
628
+ case 6:
629
+ A = Float32Array;
630
+ break;
631
+ case 7:
632
+ A = Float64Array;
633
+ break;
634
+ default:
635
+ A = Float32Array;
636
+ }
637
+ return A;
638
+ },
639
+ getPixelType: function(E) {
640
+ var A;
641
+ switch (E) {
642
+ case 0:
643
+ A = "S8";
644
+ break;
645
+ case 1:
646
+ A = "U8";
647
+ break;
648
+ case 2:
649
+ A = "S16";
650
+ break;
651
+ case 3:
652
+ A = "U16";
653
+ break;
654
+ case 4:
655
+ A = "S32";
656
+ break;
657
+ case 5:
658
+ A = "U32";
659
+ break;
660
+ case 6:
661
+ A = "F32";
662
+ break;
663
+ case 7:
664
+ A = "F64";
665
+ break;
666
+ default:
667
+ A = "F32";
668
+ }
669
+ return A;
670
+ },
671
+ isValidPixelValue: function(E, A) {
672
+ if (A == null)
673
+ return !1;
674
+ var I;
675
+ switch (E) {
676
+ case 0:
677
+ I = A >= -128 && A <= 127;
678
+ break;
679
+ case 1:
680
+ I = A >= 0 && A <= 255;
681
+ break;
682
+ case 2:
683
+ I = A >= -32768 && A <= 32767;
684
+ break;
685
+ case 3:
686
+ I = A >= 0 && A <= 65536;
687
+ break;
688
+ case 4:
689
+ I = A >= -2147483648 && A <= 2147483647;
690
+ break;
691
+ case 5:
692
+ I = A >= 0 && A <= 4294967296;
693
+ break;
694
+ case 6:
695
+ I = A >= -34027999387901484e22 && A <= 34027999387901484e22;
696
+ break;
697
+ case 7:
698
+ I = A >= -17976931348623157e292 && A <= 17976931348623157e292;
699
+ break;
700
+ default:
701
+ I = !1;
702
+ }
703
+ return I;
704
+ },
705
+ getDataTypeSize: function(E) {
706
+ var A = 0;
707
+ switch (E) {
708
+ case 0:
709
+ //ubyte
710
+ case 1:
711
+ A = 1;
712
+ break;
713
+ case 2:
714
+ //short
715
+ case 3:
716
+ A = 2;
717
+ break;
718
+ case 4:
719
+ case 5:
720
+ case 6:
721
+ A = 4;
722
+ break;
723
+ case 7:
724
+ A = 8;
725
+ break;
726
+ default:
727
+ A = E;
728
+ }
729
+ return A;
730
+ },
731
+ getDataTypeUsed: function(E, A) {
732
+ var I = E;
733
+ switch (E) {
734
+ case 2:
735
+ //short
736
+ case 4:
737
+ I = E - A;
738
+ break;
739
+ case 3:
740
+ //ushort
741
+ case 5:
742
+ I = E - 2 * A;
743
+ break;
744
+ case 6:
745
+ A === 0 ? I = E : A === 1 ? I = 2 : I = 1;
746
+ break;
747
+ case 7:
748
+ A === 0 ? I = E : I = E - 2 * A + 1;
749
+ break;
750
+ default:
751
+ I = E;
752
+ break;
753
+ }
754
+ return I;
755
+ },
756
+ getOnePixel: function(E, A, I, a) {
757
+ var Q = 0;
758
+ switch (I) {
759
+ case 0:
760
+ Q = a.getInt8(A);
761
+ break;
762
+ case 1:
763
+ Q = a.getUint8(A);
764
+ break;
765
+ case 2:
766
+ Q = a.getInt16(A, !0);
767
+ break;
768
+ case 3:
769
+ Q = a.getUint16(A, !0);
770
+ break;
771
+ case 4:
772
+ Q = a.getInt32(A, !0);
773
+ break;
774
+ case 5:
775
+ Q = a.getUInt32(A, !0);
776
+ break;
777
+ case 6:
778
+ Q = a.getFloat32(A, !0);
779
+ break;
780
+ case 7:
781
+ Q = a.getFloat64(A, !0);
782
+ break;
783
+ default:
784
+ throw "the decoder does not understand this pixel type";
785
+ }
786
+ return Q;
787
+ },
788
+ swapDimensionOrder: function(E, A, I, a, Q) {
789
+ var g = 0, D = 0, B = 0, C = 0, o = E;
790
+ if (I > 1)
791
+ if (o = new a(A * I), Q)
792
+ for (g = 0; g < A; g++)
793
+ for (C = g, B = 0; B < I; B++, C += A)
794
+ o[C] = E[D++];
795
+ else
796
+ for (g = 0; g < A; g++)
797
+ for (C = g, B = 0; B < I; B++, C += A)
798
+ o[D++] = E[C];
799
+ return o;
800
+ }
801
+ }, m = function(E, A, I) {
802
+ this.val = E, this.left = A, this.right = I;
803
+ }, z = {
804
+ /*
805
+ * ********removed options compared to LERC1. We can bring some of them back if needed.
806
+ * removed pixel type. LERC2 is typed and doesn't require user to give pixel type
807
+ * changed encodedMaskData to maskData. LERC2 's js version make it faster to use maskData directly.
808
+ * removed returnMask. mask is used by LERC2 internally and is cost free. In case of user input mask, it's returned as well and has neglible cost.
809
+ * removed nodatavalue. Because LERC2 pixels are typed, nodatavalue will sacrify a useful value for many types (8bit, 16bit) etc,
810
+ * user has to be knowledgable enough about raster and their data to avoid usability issues. so nodata value is simply removed now.
811
+ * We can add it back later if their's a clear requirement.
812
+ * removed encodedMask. This option was not implemented in LercDecode. It can be done after decoding (less efficient)
813
+ * removed computeUsedBitDepths.
814
+ *
815
+ *
816
+ * response changes compared to LERC1
817
+ * 1. encodedMaskData is not available
818
+ * 2. noDataValue is optional (returns only if user's noDataValue is with in the valid data type range)
819
+ * 3. maskData is always available
820
+ */
821
+ /*****************
822
+ * public properties
823
+ ******************/
824
+ //HUFFMAN_LUT_BITS_MAX: 12, //use 2^12 lut, not configurable
825
+ /*****************
826
+ * public methods
827
+ *****************/
828
+ /**
829
+ * Decode a LERC2 byte stream and return an object containing the pixel data and optional metadata.
830
+ *
831
+ * @param {ArrayBuffer} input The LERC input byte stream
832
+ * @param {object} [options] options Decoding options
833
+ * @param {number} [options.inputOffset] The number of bytes to skip in the input byte stream. A valid LERC file is expected at that position
834
+ * @param {boolean} [options.returnFileInfo] If true, the return value will have a fileInfo property that contains metadata obtained from the LERC headers and the decoding process
835
+ * @param {boolean} [options.returnPixelInterleavedDims] If true, returned dimensions are pixel-interleaved, a.k.a [p1_dim0, p1_dim1, p1_dimn, p2_dim0...], default is [p1_dim0, p2_dim0, ..., p1_dim1, p2_dim1...]
836
+ */
837
+ decode: function(E, A) {
838
+ A = A || {};
839
+ var I = A.noDataValue, a = 0, Q = {};
840
+ if (Q.ptr = A.inputOffset || 0, Q.pixels = {}, !!L.readHeaderInfo(E, Q)) {
841
+ var g = Q.headerInfo, D = g.fileVersion, B = L.getDataTypeArray(g.imageType);
842
+ if (D > 5)
843
+ throw "unsupported lerc version 2." + D;
844
+ L.readMask(E, Q), g.numValidPixel !== g.width * g.height && !Q.pixels.resultMask && (Q.pixels.resultMask = A.maskData);
845
+ var C = g.width * g.height;
846
+ Q.pixels.resultPixels = new B(C * g.numDims), Q.counter = {
847
+ onesweep: 0,
848
+ uncompressed: 0,
849
+ lut: 0,
850
+ bitstuffer: 0,
851
+ constant: 0,
852
+ constantoffset: 0
853
+ };
854
+ var o = !A.returnPixelInterleavedDims;
855
+ if (g.numValidPixel !== 0)
856
+ if (g.zMax === g.zMin)
857
+ L.constructConstantSurface(Q, o);
858
+ else if (D >= 4 && L.checkMinMaxRanges(E, Q))
859
+ L.constructConstantSurface(Q, o);
860
+ else {
861
+ var r = new DataView(E, Q.ptr, 2), s = r.getUint8(0);
862
+ if (Q.ptr++, s)
863
+ L.readDataOneSweep(E, Q, B, o);
864
+ else if (D > 1 && g.imageType <= 1 && Math.abs(g.maxZError - 0.5) < 1e-5) {
865
+ var f = r.getUint8(1);
866
+ if (Q.ptr++, Q.encodeMode = f, f > 2 || D < 4 && f > 1)
867
+ throw "Invalid Huffman flag " + f;
868
+ f ? L.readHuffman(E, Q, B, o) : L.readTiles(E, Q, B, o);
869
+ } else
870
+ L.readTiles(E, Q, B, o);
871
+ }
872
+ Q.eofOffset = Q.ptr;
873
+ var e;
874
+ A.inputOffset ? (e = Q.headerInfo.blobSize + A.inputOffset - Q.ptr, Math.abs(e) >= 1 && (Q.eofOffset = A.inputOffset + Q.headerInfo.blobSize)) : (e = Q.headerInfo.blobSize - Q.ptr, Math.abs(e) >= 1 && (Q.eofOffset = Q.headerInfo.blobSize));
875
+ var i = {
876
+ width: g.width,
877
+ height: g.height,
878
+ pixelData: Q.pixels.resultPixels,
879
+ minValue: g.zMin,
880
+ maxValue: g.zMax,
881
+ validPixelCount: g.numValidPixel,
882
+ dimCount: g.numDims,
883
+ dimStats: {
884
+ minValues: g.minValues,
885
+ maxValues: g.maxValues
886
+ },
887
+ maskData: Q.pixels.resultMask
888
+ //noDataValue: noDataValue
889
+ };
890
+ if (Q.pixels.resultMask && L.isValidPixelValue(g.imageType, I)) {
891
+ var t = Q.pixels.resultMask;
892
+ for (a = 0; a < C; a++)
893
+ t[a] || (i.pixelData[a] = I);
894
+ i.noDataValue = I;
895
+ }
896
+ return Q.noDataValue = I, A.returnFileInfo && (i.fileInfo = L.formatFileInfo(Q)), i;
897
+ }
898
+ },
899
+ getBandCount: function(E) {
900
+ var A = 0, I = 0, a = {};
901
+ for (a.ptr = 0, a.pixels = {}; I < E.byteLength - 58; )
902
+ L.readHeaderInfo(E, a), I += a.headerInfo.blobSize, A++, a.ptr = I;
903
+ return A;
904
+ }
905
+ };
906
+ return z;
907
+ }(), Z = function() {
908
+ var u = new ArrayBuffer(4), L = new Uint8Array(u), m = new Uint32Array(u);
909
+ return m[0] = 1, L[0] === 1;
910
+ }(), X = {
911
+ /************wrapper**********************************************/
912
+ /**
913
+ * A wrapper for decoding both LERC1 and LERC2 byte streams capable of handling multiband pixel blocks for various pixel types.
914
+ *
915
+ * @alias module:Lerc
916
+ * @param {ArrayBuffer} input The LERC input byte stream
917
+ * @param {object} [options] The decoding options below are optional.
918
+ * @param {number} [options.inputOffset] The number of bytes to skip in the input byte stream. A valid Lerc file is expected at that position.
919
+ * @param {string} [options.pixelType] (LERC1 only) Default value is F32. Valid pixel types for input are U8/S8/S16/U16/S32/U32/F32.
920
+ * @param {number} [options.noDataValue] (LERC1 only). It is recommended to use the returned mask instead of setting this value.
921
+ * @param {boolean} [options.returnPixelInterleavedDims] (nDim LERC2 only) If true, returned dimensions are pixel-interleaved, a.k.a [p1_dim0, p1_dim1, p1_dimn, p2_dim0...], default is [p1_dim0, p2_dim0, ..., p1_dim1, p2_dim1...]
922
+ * @returns {{width, height, pixels, pixelType, mask, statistics}}
923
+ * @property {number} width Width of decoded image.
924
+ * @property {number} height Height of decoded image.
925
+ * @property {array} pixels [band1, band2, …] Each band is a typed array of width*height.
926
+ * @property {string} pixelType The type of pixels represented in the output.
927
+ * @property {mask} mask Typed array with a size of width*height, or null if all pixels are valid.
928
+ * @property {array} statistics [statistics_band1, statistics_band2, …] Each element is a statistics object representing min and max values
929
+ **/
930
+ decode: function(u, L) {
931
+ if (!Z)
932
+ throw "Big endian system is not supported.";
933
+ L = L || {};
934
+ var m = L.inputOffset || 0, z = new Uint8Array(u, m, 10), E = String.fromCharCode.apply(null, z), A, I;
935
+ if (E.trim() === "CntZImage")
936
+ A = J, I = 1;
937
+ else if (E.substring(0, 5) === "Lerc2")
938
+ A = T, I = 2;
939
+ else
940
+ throw "Unexpected file identifier string: " + E;
941
+ for (var a = 0, Q = u.byteLength - 10, g, D = [], B, C, o = {
942
+ width: 0,
943
+ height: 0,
944
+ pixels: [],
945
+ pixelType: L.pixelType,
946
+ mask: null,
947
+ statistics: []
948
+ }, r = 0; m < Q; ) {
949
+ var s = A.decode(u, {
950
+ inputOffset: m,
951
+ //for both lerc1 and lerc2
952
+ encodedMaskData: g,
953
+ //lerc1 only
954
+ maskData: C,
955
+ //lerc2 only
956
+ returnMask: a === 0,
957
+ //lerc1 only
958
+ returnEncodedMask: a === 0,
959
+ //lerc1 only
960
+ returnFileInfo: !0,
961
+ //for both lerc1 and lerc2
962
+ returnPixelInterleavedDims: L.returnPixelInterleavedDims,
963
+ //for ndim lerc2 only
964
+ pixelType: L.pixelType || null,
965
+ //lerc1 only
966
+ noDataValue: L.noDataValue || null
967
+ //lerc1 only
968
+ });
969
+ m = s.fileInfo.eofOffset, C = s.maskData, a === 0 && (g = s.encodedMaskData, o.width = s.width, o.height = s.height, o.dimCount = s.dimCount || 1, o.pixelType = s.pixelType || s.fileInfo.pixelType, o.mask = C), I > 1 && (C && D.push(C), s.fileInfo.mask && s.fileInfo.mask.numBytes > 0 && r++), a++, o.pixels.push(s.pixelData), o.statistics.push({
970
+ minValue: s.minValue,
971
+ maxValue: s.maxValue,
972
+ noDataValue: s.noDataValue,
973
+ dimStats: s.dimStats
974
+ });
975
+ }
976
+ var f, e, i;
977
+ if (I > 1 && r > 1) {
978
+ for (i = o.width * o.height, o.bandMasks = D, C = new Uint8Array(i), C.set(D[0]), f = 1; f < D.length; f++)
979
+ for (B = D[f], e = 0; e < i; e++)
980
+ C[e] = C[e] & B[e];
981
+ o.maskData = C;
982
+ }
983
+ return o;
984
+ }
985
+ };
986
+ j.exports ? j.exports = X : this.Lerc = X;
987
+ })();
988
+ }(BA)), BA.exports;
989
+ }
990
+ var wA = tA();
991
+ const hA = /* @__PURE__ */ DA(wA);
992
+ let _, x, CA;
993
+ const QA = {
994
+ env: {
995
+ emscripten_notify_memory_growth: function(j) {
996
+ CA = new Uint8Array(x.exports.memory.buffer);
997
+ }
998
+ }
999
+ };
1000
+ class GA {
1001
+ init() {
1002
+ return _ || (typeof fetch < "u" ? _ = fetch("data:application/wasm;base64," + eA).then((J) => J.arrayBuffer()).then((J) => WebAssembly.instantiate(J, QA)).then(this._init) : _ = WebAssembly.instantiate(Buffer.from(eA, "base64"), QA).then(this._init), _);
1003
+ }
1004
+ _init(J) {
1005
+ x = J.instance, QA.env.emscripten_notify_memory_growth(0);
1006
+ }
1007
+ decode(J, T = 0) {
1008
+ if (!x) throw new Error("ZSTDDecoder: Await .init() before decoding.");
1009
+ const Z = J.byteLength, X = x.exports.malloc(Z);
1010
+ CA.set(J, X), T = T || Number(x.exports.ZSTD_findDecompressedSize(X, Z));
1011
+ const u = x.exports.malloc(T), L = x.exports.ZSTD_decompress(u, T, X, Z), m = CA.slice(u, u + L);
1012
+ return x.exports.free(X), x.exports.free(u), m;
1013
+ }
1014
+ }
1015
+ const eA = "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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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", FA = new GA();
1016
+ class kA extends nA {
1017
+ constructor(J) {
1018
+ super(), this.planarConfiguration = typeof J.PlanarConfiguration < "u" ? J.PlanarConfiguration : 1, this.samplesPerPixel = typeof J.SamplesPerPixel < "u" ? J.SamplesPerPixel : 1, this.addCompression = J.LercParameters[fA.AddCompression];
1019
+ }
1020
+ decodeBlock(J) {
1021
+ switch (this.addCompression) {
1022
+ case gA.None:
1023
+ break;
1024
+ case gA.Deflate:
1025
+ J = sA(new Uint8Array(J)).buffer;
1026
+ break;
1027
+ case gA.Zstandard:
1028
+ J = FA.decode(new Uint8Array(J)).buffer;
1029
+ break;
1030
+ default:
1031
+ throw new Error(`Unsupported LERC additional compression method identifier: ${this.addCompression}`);
1032
+ }
1033
+ return hA.decode(J, { returnPixelInterleavedDims: this.planarConfiguration === 1 }).pixels[0].buffer;
1034
+ }
1035
+ }
1036
+ export {
1037
+ kA as default,
1038
+ FA as zstd
1039
+ };