@openglobus/og 1.0.0-rc8 → 1.0.0-rc9
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/lib/assets/LabelWorker.worker-C24YLEkW.js.map +1 -1
- package/lib/assets/PlainSegmentWorker.worker-DJHXd0bF.js.map +1 -0
- package/lib/assets/TerrainWorker.worker-B4Gp0jCy.js.map +1 -0
- package/lib/og.es.js +1 -1
- package/lib/og.es.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/lib/utils/gltf/types.d.ts +5 -4
- package/package.json +7 -5
- package/lib/assets/PlainSegmentWorker.worker-DRs6uU0i.js.map +0 -1
- package/lib/assets/TerrainWorker.worker-CFx13kZO.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LabelWorker.worker-C24YLEkW.js","names":[],"sources":["../../src/entity/label/LabelWorker.worker.js"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"LabelWorker.worker-C24YLEkW.js","names":[],"sources":["../../src/entity/label/LabelWorker.worker.js"],"sourcesContent":["\"use strict\";\n\nfunction concatTypedArrays(dest, index, source) {\n let len = source.length,\n offset = index * len;\n for (let i = 0; i < len; i++) {\n dest[offset + i] = source[i];\n }\n}\n\nfunction srgbToLinear(v) {\n return Math.pow(v, 2.2);\n}\n\nself.onmessage = function (e) {\n var labelData = e.data.labelData,\n id = labelData[0],\n maxLetters = labelData[1],\n isVisible = labelData[2],\n /*3, 4, 5*/ _positionHigh_x = labelData[3],\n _positionHigh_y = labelData[4],\n _positionHigh_z = labelData[5],\n /*6, 7, 8*/ _positionLow_x = labelData[6],\n _positionLow_y = labelData[7],\n _positionLow_z = labelData[8],\n /*9*/ _size = labelData[9],\n /*10, 11*/ _offset_x = labelData[10],\n _offset_y = labelData[11],\n /*12, 13, 14, 15*/ _color_x = labelData[12],\n _color_y = labelData[13],\n _color_z = labelData[14],\n _color_w = labelData[15],\n /*16*/ _rotation = labelData[16],\n /*17, 18, 19*/ _alignedAxis_x = labelData[17],\n _alignedAxis_y = labelData[18],\n _alignedAxis_z = labelData[19],\n /*20*/ _fontIndex = labelData[20],\n /*21*/ _outline = labelData[21],\n /*22, 23, 24, 25*/ _outlineColor_x = labelData[22],\n _outlineColor_y = labelData[23],\n _outlineColor_z = labelData[24],\n _outlineColor_w = labelData[25],\n /*26, 27, 28*/ _pickingColor_x = labelData[26],\n _pickingColor_y = labelData[27],\n _pickingColor_z = labelData[28];\n\n let _vertexArr = new Float32Array(maxLetters * 12),\n _texCoordArr = new Float32Array(maxLetters * 24),\n _gliphParamArr = new Float32Array(maxLetters * 24),\n _positionHighArr = new Float32Array(maxLetters * 18),\n _positionLowArr = new Float32Array(maxLetters * 18),\n _sizeArr = new Float32Array(maxLetters * 6),\n _offsetArr = new Float32Array(maxLetters * 12),\n _rgbaArr = new Float32Array(maxLetters * 24),\n _rotationArr = new Float32Array(maxLetters * 6),\n _alignedAxisArr = new Float32Array(maxLetters * 18),\n _fontIndexArr = new Float32Array(maxLetters * 6),\n _outlineArr = new Float32Array(maxLetters * 6),\n _outlineColorArr = new Float32Array(maxLetters * 24),\n _pickingColorArr = new Float32Array(maxLetters * 18);\n\n for (let i = 0; i < maxLetters; i++) {\n if (isVisible !== 0) {\n concatTypedArrays(_vertexArr, i, [0, 0, 0, -1, 1, -1, 1, -1, 1, 0, 0, 0]);\n } else {\n concatTypedArrays(_vertexArr, i, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);\n }\n\n concatTypedArrays(\n _texCoordArr,\n i,\n [0, 0, -1, 0, 0, 0, -1, 0, 0, 0, -1, 0, 0, 0, -1, 0, 0, 0, -1, 0, 0, 0, -1, 0]\n );\n concatTypedArrays(_gliphParamArr, i, [1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0]);\n\n var x = _positionHigh_x,\n y = _positionHigh_y,\n z = _positionHigh_z,\n w;\n concatTypedArrays(_positionHighArr, i, [x, y, z, x, y, z, x, y, z, x, y, z, x, y, z, x, y, z]);\n\n x = _positionLow_x;\n y = _positionLow_y;\n z = _positionLow_z;\n concatTypedArrays(_positionLowArr, i, [x, y, z, x, y, z, x, y, z, x, y, z, x, y, z, x, y, z]);\n\n x = _size;\n concatTypedArrays(_sizeArr, i, [x, x, x, x, x, x]);\n\n x = _offset_x;\n y = _offset_y;\n concatTypedArrays(_offsetArr, i, [x, y, x, y, x, y, x, y, x, y, x, y]);\n\n x = srgbToLinear(_color_x);\n y = srgbToLinear(_color_y);\n z = srgbToLinear(_color_z);\n w = _color_w;\n concatTypedArrays(_rgbaArr, i, [x, y, z, w, x, y, z, w, x, y, z, w, x, y, z, w, x, y, z, w, x, y, z, w]);\n\n x = _rotation;\n concatTypedArrays(_rotationArr, i, [x, x, x, x, x, x]);\n\n x = _alignedAxis_x;\n y = _alignedAxis_y;\n z = _alignedAxis_z;\n concatTypedArrays(_alignedAxisArr, i, [x, y, z, x, y, z, x, y, z, x, y, z, x, y, z, x, y, z]);\n\n x = _fontIndex;\n concatTypedArrays(_fontIndexArr, i, [x, x, x, x, x, x]);\n\n x = _outline;\n concatTypedArrays(_outlineArr, i, [x, x, x, x, x, x]);\n\n x = srgbToLinear(_outlineColor_x);\n y = srgbToLinear(_outlineColor_y);\n z = srgbToLinear(_outlineColor_z);\n w = _outlineColor_w;\n concatTypedArrays(_outlineColorArr, i, [\n x,\n y,\n z,\n w,\n x,\n y,\n z,\n w,\n x,\n y,\n z,\n w,\n x,\n y,\n z,\n w,\n x,\n y,\n z,\n w,\n x,\n y,\n z,\n w\n ]);\n\n x = _pickingColor_x / 255;\n y = _pickingColor_y / 255;\n z = _pickingColor_z / 255;\n concatTypedArrays(_pickingColorArr, i, [x, y, z, x, y, z, x, y, z, x, y, z, x, y, z, x, y, z]);\n }\n\n self.postMessage(\n {\n id: id,\n vertexArr: _vertexArr,\n texCoordArr: _texCoordArr,\n gliphParamArr: _gliphParamArr,\n positionHighArr: _positionHighArr,\n positionLowArr: _positionLowArr,\n sizeArr: _sizeArr,\n offsetArr: _offsetArr,\n rgbaArr: _rgbaArr,\n rotationArr: _rotationArr,\n alignedAxisArr: _alignedAxisArr,\n fontIndexArr: _fontIndexArr,\n outlineArr: _outlineArr,\n outlineColorArr: _outlineColorArr,\n pickingColorArr: _pickingColorArr\n },\n [\n _vertexArr.buffer,\n _texCoordArr.buffer,\n _gliphParamArr.buffer,\n _positionHighArr.buffer,\n _positionLowArr.buffer,\n _sizeArr.buffer,\n _offsetArr.buffer,\n _rgbaArr.buffer,\n _rotationArr.buffer,\n _alignedAxisArr.buffer,\n _fontIndexArr.buffer,\n _outlineArr.buffer,\n _outlineColorArr.buffer,\n _pickingColorArr.buffer\n ]\n );\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlainSegmentWorker.worker-DJHXd0bF.js","names":[],"sources":["../../src/utils/PlainSegmentWorker.worker.js"],"sourcesContent":["\"use strict\";\n\nlet model = null;\n\nlet cached_ix = null;\nlet cached_iy = null;\nlet v00 = null;\nlet v01 = null;\nlet v10 = null;\nlet v11 = null;\n//let t = null;\n\nfunction rawval(ix, iy) {\n if (iy < 0) {\n iy = -iy;\n ix += model.width / 2;\n } else if (iy >= model.height) {\n iy = 2 * (model.height - 1) - iy;\n ix += model.width / 2;\n }\n\n if (ix < 0) {\n ix += model.width;\n } else if (ix >= model.width) {\n ix -= model.width;\n }\n\n var k = (iy * model.width + ix) * 2 + model.i;\n\n return (model.rawfile[k] << 8) | model.rawfile[k + 1];\n}\n\nfunction getHeightMSL(lon, lat) {\n if (!model) return 0;\n\n if (lon < 0) lon += 360.0;\n\n var fy = (90 - lat) * model.rlatres;\n var fx = lon * model.rlonres;\n var iy = Math.floor(fy);\n var ix = Math.floor(fx);\n\n fx -= ix;\n fy -= iy;\n\n if (iy === model.height - 1) {\n iy--;\n }\n\n if (cached_ix !== ix || cached_iy !== iy) {\n cached_ix = ix;\n cached_iy = iy;\n\n v00 = rawval(ix, iy);\n v01 = rawval(ix + 1, iy);\n v10 = rawval(ix, iy + 1);\n v11 = rawval(ix + 1, iy + 1);\n }\n\n let h = null;\n\n var a = (1 - fx) * v00 + fx * v01;\n var b = (1 - fx) * v10 + fx * v11;\n\n h = (1 - fy) * a + fy * b;\n\n return model.offset + model.scale * h;\n}\n\nconst HALF_PI = Math.PI * 0.5;\nconst POLE = 20037508.34;\nconst PI_BY_POLE = Math.PI / POLE;\nconst INV_POLE_BY_180 = 180.0 / POLE;\nconst INV_PI_BY_180 = 180.0 / Math.PI;\nconst INV_PI_BY_180_HALF_PI = INV_PI_BY_180 * HALF_PI;\nconst RADIANS = Math.PI / 180.0;\nconst INV_PI_BY_360 = INV_PI_BY_180 * 2.0;\n\nlet E2 = 0.0,\n A = 0.0;\n\nlet _projFunc = null;\n\nconst Vec3 = function (x, y, z) {\n this.x = x;\n this.y = y;\n this.z = z;\n};\n\nvar geodeticToCartesian = function (lon, lat, heightFactor, res) {\n let h = getHeightMSL(lon, lat) * heightFactor;\n\n let latrad = RADIANS * lat,\n lonrad = RADIANS * lon;\n\n let slt = Math.sin(latrad);\n\n let N = A / Math.sqrt(1.0 - E2 * slt * slt);\n let nc = (N + h) * Math.cos(latrad);\n\n res.x = nc * Math.cos(lonrad);\n res.y = nc * Math.sin(lonrad);\n res.z = (N * (1 - E2) + h) * slt;\n};\n\nvar geodeticToCartesianInverse = function (lon, lat, heightFactor, res) {\n geodeticToCartesian(\n lon * INV_POLE_BY_180,\n INV_PI_BY_360 * Math.atan(Math.exp(lat * PI_BY_POLE)) - INV_PI_BY_180_HALF_PI,\n heightFactor,\n res\n );\n};\n\nvar worldPos = new Vec3(0.0, 0.0, 0.0);\nvar rtcPos = new Vec3(0.0, 0.0, 0.0);\nvar _tempHigh = new Vec3(0.0, 0.0, 0.0);\nvar _tempLow = new Vec3(0.0, 0.0, 0.0);\n\nvar doubleToTwoFloats = function (v, high, low) {\n let x = v.x,\n y = v.y,\n z = v.z;\n\n var doubleHigh;\n\n if (x >= 0.0) {\n doubleHigh = Math.floor(x / 65536.0) * 65536.0;\n high.x = Math.fround(doubleHigh);\n low.x = Math.fround(x - doubleHigh);\n } else {\n doubleHigh = Math.floor(-x / 65536.0) * 65536.0;\n high.x = Math.fround(-doubleHigh);\n low.x = Math.fround(x + doubleHigh);\n }\n\n if (y >= 0.0) {\n doubleHigh = Math.floor(y / 65536.0) * 65536.0;\n high.y = Math.fround(doubleHigh);\n low.y = Math.fround(y - doubleHigh);\n } else {\n doubleHigh = Math.floor(-y / 65536.0) * 65536.0;\n high.y = Math.fround(-doubleHigh);\n low.y = Math.fround(y + doubleHigh);\n }\n\n if (z >= 0.0) {\n doubleHigh = Math.floor(z / 65536.0) * 65536.0;\n high.z = Math.fround(doubleHigh);\n low.z = Math.fround(z - doubleHigh);\n } else {\n doubleHigh = Math.floor(-z / 65536.0) * 65536.0;\n high.z = Math.fround(-doubleHigh);\n low.z = Math.fround(z + doubleHigh);\n }\n};\n\nself.onmessage = function (msg) {\n if (msg.data.model) {\n model = msg.data.model;\n model.rawfile = msg.data.rawfile;\n } else if (msg.data.params) {\n let rtc_x = msg.data.params[14];\n let rtc_y = msg.data.params[15];\n let rtc_z = msg.data.params[16];\n\n let xmin = 549755748352.0,\n xmax = -549755748352.0,\n ymin = 549755748352.0,\n ymax = -549755748352.0,\n zmin = 549755748352.0,\n zmax = -549755748352.0;\n\n E2 = msg.data.params[8];\n A = msg.data.params[9];\n\n let gridSize = msg.data.params[2],\n fgs = msg.data.params[3],\n r2_x = msg.data.params[10],\n r2_y = msg.data.params[11],\n r2_z = msg.data.params[12];\n\n let heightFactor = msg.data.params[13];\n\n if (msg.data.params[1] === 0.0) {\n _projFunc = geodeticToCartesianInverse;\n } else {\n _projFunc = geodeticToCartesian;\n }\n\n let maxFgs = Math.max(fgs, gridSize);\n let llStep = (msg.data.params[6] - msg.data.params[4]) / maxFgs;\n let ltStep = (msg.data.params[7] - msg.data.params[5]) / maxFgs;\n\n let esw_lon = msg.data.params[4],\n ene_lat = msg.data.params[7];\n\n let dg = Math.max(fgs / gridSize, 1.0),\n gs = maxFgs + 1;\n\n const gsgs = gs * gs;\n\n const gridSize3 = (gridSize + 1) * (gridSize + 1) * 3;\n\n let plainNormals = new Float32Array(gridSize3);\n\n let plainVertices = new Float64Array(gridSize3);\n let plainVerticesHigh = new Float32Array(gridSize3);\n let plainVerticesLow = new Float32Array(gridSize3);\n let normalMapNormals = new Float32Array(gsgs * 3);\n let normalMapVertices = new Float64Array(gsgs * 3);\n\n let ind = 0,\n nmInd = 0;\n\n for (let k = 0; k < gsgs; k++) {\n let j = k % gs,\n i = ~~(k / gs);\n\n _projFunc(esw_lon + j * llStep, ene_lat - i * ltStep, heightFactor, worldPos);\n\n let nx = worldPos.x * r2_x,\n ny = worldPos.y * r2_y,\n nz = worldPos.z * r2_z;\n let l = 1.0 / Math.sqrt(nx * nx + ny * ny + nz * nz);\n let nxl = nx * l,\n nyl = ny * l,\n nzl = nz * l;\n\n rtcPos.x = worldPos.x - rtc_x;\n rtcPos.y = worldPos.y - rtc_y;\n rtcPos.z = worldPos.z - rtc_z;\n\n normalMapVertices[nmInd] = rtcPos.x;\n normalMapNormals[nmInd++] = nxl;\n\n normalMapVertices[nmInd] = rtcPos.y;\n normalMapNormals[nmInd++] = nyl;\n\n normalMapVertices[nmInd] = rtcPos.z;\n normalMapNormals[nmInd++] = nzl;\n\n if (i % dg === 0 && j % dg === 0) {\n doubleToTwoFloats(rtcPos, _tempHigh, _tempLow);\n\n plainVertices[ind] = rtcPos.x;\n plainVerticesHigh[ind] = _tempHigh.x;\n plainVerticesLow[ind] = _tempLow.x;\n plainNormals[ind++] = nxl;\n\n plainVertices[ind] = rtcPos.y;\n plainVerticesHigh[ind] = _tempHigh.y;\n plainVerticesLow[ind] = _tempLow.y;\n plainNormals[ind++] = nyl;\n\n plainVertices[ind] = rtcPos.z;\n plainVerticesHigh[ind] = _tempHigh.z;\n plainVerticesLow[ind] = _tempLow.z;\n plainNormals[ind++] = nzl;\n\n if (worldPos.x < xmin) xmin = worldPos.x;\n if (worldPos.x > xmax) xmax = worldPos.x;\n if (worldPos.y < ymin) ymin = worldPos.y;\n if (worldPos.y > ymax) ymax = worldPos.y;\n if (worldPos.z < zmin) zmin = worldPos.z;\n if (worldPos.z > zmax) zmax = worldPos.z;\n }\n }\n\n let x = (xmax - xmin) * 0.5,\n y = (ymax - ymin) * 0.5,\n z = (zmax - zmin) * 0.5;\n\n let plainRadius = Math.sqrt(x * x + y * y + z * z);\n\n self.postMessage(\n {\n id: msg.data.params[0],\n plainVertices: plainVertices,\n plainVerticesHigh: plainVerticesHigh,\n plainVerticesLow: plainVerticesLow,\n plainNormals: plainNormals,\n normalMapNormals: normalMapNormals,\n normalMapVertices: normalMapVertices,\n plainRadius: plainRadius,\n relativeCenter: [rtc_x, rtc_y, rtc_z]\n },\n [\n plainVertices.buffer,\n plainVerticesHigh.buffer,\n plainVerticesLow.buffer,\n plainNormals.buffer,\n normalMapNormals.buffer,\n normalMapVertices.buffer\n ]\n );\n }\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TerrainWorker.worker-B4Gp0jCy.js","names":[],"sources":["../../src/utils/TerrainWorker.worker.js"],"sourcesContent":["\"use strict\";\n//\n//Terrain worker\n//\n\nfunction binarySearchFast(arr, x) {\n let start = 0,\n end = arr.length - 1;\n while (start <= end) {\n let k = Math.floor((start + end) * 0.5);\n if (Math.abs(arr[k] - x) < 1e-3) return k;\n else if (arr[k] < x) start = k + 1;\n else end = k - 1;\n }\n return -1;\n}\n\nfunction checkNoDataValue(noDataValues, value) {\n return binarySearchFast(noDataValues, value) !== -1;\n}\n\nvar Vec3 = function (x, y, z) {\n this.x = x;\n this.y = y;\n this.z = z;\n};\n\nvar doubleToTwoFloats = function (v, high, low) {\n let x = v.x,\n y = v.y,\n z = v.z;\n\n var doubleHigh;\n\n if (x >= 0.0) {\n doubleHigh = Math.floor(x / 65536.0) * 65536.0;\n high.x = Math.fround(doubleHigh);\n low.x = Math.fround(x - doubleHigh);\n } else {\n doubleHigh = Math.floor(-x / 65536.0) * 65536.0;\n high.x = Math.fround(-doubleHigh);\n low.x = Math.fround(x + doubleHigh);\n }\n\n if (y >= 0.0) {\n doubleHigh = Math.floor(y / 65536.0) * 65536.0;\n high.y = Math.fround(doubleHigh);\n low.y = Math.fround(y - doubleHigh);\n } else {\n doubleHigh = Math.floor(-y / 65536.0) * 65536.0;\n high.y = Math.fround(-doubleHigh);\n low.y = Math.fround(y + doubleHigh);\n }\n\n if (z >= 0.0) {\n doubleHigh = Math.floor(z / 65536.0) * 65536.0;\n high.z = Math.fround(doubleHigh);\n low.z = Math.fround(z - doubleHigh);\n } else {\n doubleHigh = Math.floor(-z / 65536.0) * 65536.0;\n high.z = Math.fround(-doubleHigh);\n low.z = Math.fround(z + doubleHigh);\n }\n};\n\nVec3.prototype.sub = function (v) {\n return new Vec3(this.x - v.x, this.y - v.y, this.z - v.z);\n};\n\nVec3.prototype.add = function (v) {\n return new Vec3(this.x + v.x, this.y + v.y, this.z + v.z);\n};\n\nVec3.prototype.cross = function (v) {\n return new Vec3(this.y * v.z - this.z * v.y, this.z * v.x - this.x * v.z, this.x * v.y - this.y * v.x);\n};\n\nVec3.prototype.normalize = function () {\n var x = this.x,\n y = this.y,\n z = this.z;\n var length = 1.0 / Math.sqrt(x * x + y * y + z * z);\n this.x = x * length;\n this.y = y * length;\n this.z = z * length;\n return this;\n};\n\nVec3.prototype.distance = function (v) {\n return this.sub(v).length();\n};\n\nVec3.prototype.length = function () {\n return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);\n};\n\nvar blerp = function (x, y, fQ11, fQ21, fQ12, fQ22) {\n return fQ11 * (1.0 - x) * (1.0 - y) + fQ21 * x * (1.0 - y) + fQ12 * (1.0 - x) * y + fQ22 * x * y;\n};\n\nvar _tempVec = new Vec3(0.0, 0.0, 0.0);\nvar _rtcTempVec = new Vec3(0.0, 0.0, 0.0);\n\nvar _tempHigh = new Vec3(0.0, 0.0, 0.0),\n _tempLow = new Vec3(0.0, 0.0, 0.0);\n\nself.onmessage = function (e) {\n var elevations = e.data.elevations,\n this_plainVertices = e.data.this_plainVertices,\n this_plainNormals = e.data.this_plainNormals,\n this_normalMapVertices = e.data.this_normalMapVertices,\n this_normalMapNormals = e.data.this_normalMapNormals,\n heightFactor = e.data.heightFactor,\n gridSize = e.data.gridSize,\n noDataValues = e.data.noDataValues,\n id = e.data.id;\n\n let rtc_x = e.data.relativeCenter[0],\n rtc_y = e.data.relativeCenter[1],\n rtc_z = e.data.relativeCenter[2];\n\n var xmin = 549755748352.0,\n xmax = -549755748352.0,\n ymin = 549755748352.0,\n ymax = -549755748352.0,\n zmin = 549755748352.0,\n zmax = -549755748352.0;\n\n const fileGridSize = Math.sqrt(elevations.length) - 1;\n\n const fileGridSize_one = fileGridSize + 1;\n const fileGridSize_one_x2 = fileGridSize_one * fileGridSize_one;\n const tgs = gridSize;\n const dg = fileGridSize / tgs;\n const gs = tgs + 1;\n const hf = heightFactor;\n\n var vInd = 0,\n noDataInd = 0;\n\n var gsgs3 = gs * gs * 3;\n\n var terrainVertices = new Float64Array(gsgs3),\n terrainVerticesHigh = new Float32Array(gsgs3),\n terrainVerticesLow = new Float32Array(gsgs3),\n noDataVertices = new Uint8Array(gs * gs);\n\n var normalMapNormals, normalMapVertices;\n\n var nv = this_normalMapVertices,\n nn = this_normalMapNormals;\n\n if (fileGridSize >= tgs) {\n normalMapNormals = new Float32Array(fileGridSize_one_x2 * 3);\n normalMapVertices = new Float64Array(fileGridSize_one_x2 * 3);\n\n for (let k = 0; k < fileGridSize_one_x2; k++) {\n var j = k % fileGridSize_one,\n i = ~~(k / fileGridSize_one);\n\n //\n // V0\n //\n var hInd0 = k;\n var vInd0 = hInd0 * 3;\n var currElv = elevations[hInd0];\n if (checkNoDataValue(noDataValues, currElv)) {\n currElv = 0.0;\n }\n var h0 = hf * currElv;\n var v0 = new Vec3(\n rtc_x + nv[vInd0] + h0 * nn[vInd0],\n rtc_y + nv[vInd0 + 1] + h0 * nn[vInd0 + 1],\n rtc_z + nv[vInd0 + 2] + h0 * nn[vInd0 + 2]\n );\n\n normalMapVertices[vInd0] = v0.x - rtc_x;\n normalMapVertices[vInd0 + 1] = v0.y - rtc_y;\n normalMapVertices[vInd0 + 2] = v0.z - rtc_z;\n\n //\n // The vertex goes into screen buffer\n if (i % dg === 0 && j % dg === 0) {\n let currVert = new Vec3(rtc_x + nv[vInd0], rtc_y + nv[vInd0 + 1], rtc_z + nv[vInd0 + 2]);\n let nextVert = new Vec3(rtc_x + nv[vInd0 + 3], rtc_y + nv[vInd0 + 4], rtc_z + nv[vInd0 + 5]);\n\n let nextElv = elevations[hInd0 + 1];\n if (checkNoDataValue(noDataValues, nextElv)) {\n nextElv = 0.0;\n }\n\n let eps = false;\n if (noDataValues.length === 0) {\n let step = currVert.distance(nextVert);\n let deltaElv = Math.abs(currElv - nextElv);\n eps = deltaElv / step > 10.0 || currElv < -5000;\n }\n\n if (eps) {\n noDataVertices[noDataInd] = 1;\n } else {\n noDataVertices[noDataInd] = 0;\n if (v0.x < xmin) xmin = v0.x;\n if (v0.x > xmax) xmax = v0.x;\n if (v0.y < ymin) ymin = v0.y;\n if (v0.y > ymax) ymax = v0.y;\n if (v0.z < zmin) zmin = v0.z;\n if (v0.z > zmax) zmax = v0.z;\n }\n\n let rtc_v0 = new Vec3(v0.x - rtc_x, v0.y - rtc_y, v0.z - rtc_z);\n doubleToTwoFloats(rtc_v0, _tempHigh, _tempLow);\n\n terrainVerticesHigh[vInd] = _tempHigh.x;\n terrainVerticesLow[vInd] = _tempLow.x;\n terrainVertices[vInd++] = rtc_v0.x;\n\n terrainVerticesHigh[vInd] = _tempHigh.y;\n terrainVerticesLow[vInd] = _tempLow.y;\n terrainVertices[vInd++] = rtc_v0.y;\n\n terrainVerticesHigh[vInd] = _tempHigh.z;\n terrainVerticesLow[vInd] = _tempLow.z;\n terrainVertices[vInd++] = rtc_v0.z;\n\n noDataInd++;\n }\n\n if (i !== fileGridSize && j !== fileGridSize) {\n //\n // V1\n //\n var hInd1 = k + 1;\n var vInd1 = hInd1 * 3;\n var elv = elevations[hInd1];\n if (checkNoDataValue(noDataValues, elv)) {\n elv = 0.0;\n }\n var h1 = hf * elv;\n var v1 = new Vec3(\n rtc_x + nv[vInd1] + h1 * nn[vInd1],\n rtc_y + nv[vInd1 + 1] + h1 * nn[vInd1 + 1],\n rtc_z + nv[vInd1 + 2] + h1 * nn[vInd1 + 2]\n );\n\n normalMapVertices[vInd1] = v1.x - rtc_x;\n normalMapVertices[vInd1 + 1] = v1.y - rtc_y;\n normalMapVertices[vInd1 + 2] = v1.z - rtc_z;\n\n //\n // V2\n //\n var hInd2 = k + fileGridSize_one;\n var vInd2 = hInd2 * 3;\n elv = elevations[hInd2];\n if (checkNoDataValue(noDataValues, elv)) {\n elv = 0.0;\n }\n var h2 = hf * elv;\n var v2 = new Vec3(\n rtc_x + nv[vInd2] + h2 * nn[vInd2],\n rtc_y + nv[vInd2 + 1] + h2 * nn[vInd2 + 1],\n rtc_z + nv[vInd2 + 2] + h2 * nn[vInd2 + 2]\n );\n\n normalMapVertices[vInd2] = v2.x - rtc_x;\n normalMapVertices[vInd2 + 1] = v2.y - rtc_y;\n normalMapVertices[vInd2 + 2] = v2.z - rtc_z;\n\n //\n // V3\n //\n var hInd3 = k + fileGridSize_one + 1;\n var vInd3 = hInd3 * 3;\n elv = elevations[hInd3];\n if (checkNoDataValue(noDataValues, elv)) {\n elv = 0.0;\n }\n var h3 = hf * elv;\n var v3 = new Vec3(\n rtc_x + nv[vInd3] + h3 * nn[vInd3],\n rtc_y + nv[vInd3 + 1] + h3 * nn[vInd3 + 1],\n rtc_z + nv[vInd3 + 2] + h3 * nn[vInd3 + 2]\n );\n\n normalMapVertices[vInd3] = v3.x - rtc_x;\n normalMapVertices[vInd3 + 1] = v3.y - rtc_y;\n normalMapVertices[vInd3 + 2] = v3.z - rtc_z;\n\n //\n // Normal\n //\n var e10 = v1.sub(v0),\n e20 = v2.sub(v0),\n e30 = v3.sub(v0);\n\n var sw = e20.cross(e30).normalize();\n var ne = e30.cross(e10).normalize();\n var n0 = ne.add(sw).normalize();\n\n normalMapNormals[vInd0] += n0.x;\n normalMapNormals[vInd0 + 1] += n0.y;\n normalMapNormals[vInd0 + 2] += n0.z;\n\n normalMapNormals[vInd1] += ne.x;\n normalMapNormals[vInd1 + 1] += ne.y;\n normalMapNormals[vInd1 + 2] += ne.z;\n\n normalMapNormals[vInd2] += sw.x;\n normalMapNormals[vInd2 + 1] += sw.y;\n normalMapNormals[vInd2 + 2] += sw.z;\n\n normalMapNormals[vInd3] += n0.x;\n normalMapNormals[vInd3 + 1] += n0.y;\n normalMapNormals[vInd3 + 2] += n0.z;\n }\n }\n } else {\n normalMapNormals = new Float32Array(gsgs3);\n normalMapVertices = new Float64Array(gsgs3);\n\n var oneSize = tgs / fileGridSize;\n var gsgs = gsgs3 / 3;\n var fgsOne = fileGridSize + 1;\n\n for (let i = 0; i < gsgs; i++) {\n let ii = Math.floor(i / gs),\n ij = i % gs;\n\n let qii = ii % oneSize,\n qij = ij % oneSize;\n\n let hlt_ind = Math.floor(ii / oneSize) * fgsOne + Math.floor(ij / oneSize);\n\n if (ij === tgs) {\n hlt_ind -= 1;\n qij = oneSize;\n }\n\n if (ii === tgs) {\n hlt_ind -= fgsOne;\n qii = oneSize;\n }\n\n let hrt_ind = hlt_ind + 1,\n hlb_ind = hlt_ind + fgsOne,\n hrb_ind = hlb_ind + 1;\n\n let h_lt = elevations[hlt_ind],\n h_rt = elevations[hrt_ind],\n h_lb = elevations[hlb_ind],\n h_rb = elevations[hrb_ind];\n\n if (checkNoDataValue(noDataValues, h_lt)) {\n h_lt = 0.0;\n }\n\n if (checkNoDataValue(noDataValues, h_rt)) {\n h_rt = 0.0;\n }\n\n if (checkNoDataValue(noDataValues, h_lb)) {\n h_lb = 0.0;\n }\n\n if (checkNoDataValue(noDataValues, h_rb)) {\n h_rb = 0.0;\n }\n\n let hi = blerp(qij / oneSize, qii / oneSize, h_lt, h_rt, h_lb, h_rb);\n\n let i3 = i * 3;\n\n _rtcTempVec.x = this_plainVertices[i3] + hi * this_plainNormals[i3];\n _rtcTempVec.y = this_plainVertices[i3 + 1] + hi * this_plainNormals[i3 + 1];\n _rtcTempVec.z = this_plainVertices[i3 + 2] + hi * this_plainNormals[i3 + 2];\n\n doubleToTwoFloats(_rtcTempVec, _tempHigh, _tempLow);\n\n terrainVertices[i3] = _rtcTempVec.x;\n terrainVertices[i3 + 1] = _rtcTempVec.y;\n terrainVertices[i3 + 2] = _rtcTempVec.z;\n\n terrainVerticesHigh[i3] = _tempHigh.x;\n terrainVerticesHigh[i3 + 1] = _tempHigh.y;\n terrainVerticesHigh[i3 + 2] = _tempHigh.z;\n\n terrainVerticesLow[i3] = _tempLow.x;\n terrainVerticesLow[i3 + 1] = _tempLow.y;\n terrainVerticesLow[i3 + 2] = _tempLow.z;\n\n _tempVec.x = _rtcTempVec.x + rtc_x;\n _tempVec.y = _rtcTempVec.y + rtc_y;\n _tempVec.z = _rtcTempVec.z + rtc_z;\n\n if (_tempVec.x < xmin) xmin = _tempVec.x;\n if (_tempVec.x > xmax) xmax = _tempVec.x;\n if (_tempVec.y < ymin) ymin = _tempVec.y;\n if (_tempVec.y > ymax) ymax = _tempVec.y;\n if (_tempVec.z < zmin) zmin = _tempVec.z;\n if (_tempVec.z > zmax) zmax = _tempVec.z;\n }\n\n normalMapVertices.set(terrainVertices);\n\n for (let k = 0; k < gsgs; k++) {\n let j = k % gs,\n i = ~~(k / gs);\n\n if (i !== tgs && j !== tgs) {\n let v0ind = k * 3,\n v1ind = v0ind + 3,\n v2ind = v0ind + gs * 3,\n v3ind = v2ind + 3;\n\n let v0 = new Vec3(\n terrainVertices[v0ind] + rtc_x,\n terrainVertices[v0ind + 1] + rtc_y,\n terrainVertices[v0ind + 2] + rtc_z\n ),\n v1 = new Vec3(\n terrainVertices[v1ind] + rtc_x,\n terrainVertices[v1ind + 1] + rtc_y,\n terrainVertices[v1ind + 2] + rtc_z\n ),\n v2 = new Vec3(\n terrainVertices[v2ind] + rtc_x,\n terrainVertices[v2ind + 1] + rtc_y,\n terrainVertices[v2ind + 2] + rtc_z\n ),\n v3 = new Vec3(\n terrainVertices[v3ind] + rtc_x,\n terrainVertices[v3ind + 1] + rtc_y,\n terrainVertices[v3ind + 2] + rtc_z\n );\n\n let e10 = v1.sub(v0).normalize(),\n e20 = v2.sub(v0).normalize(),\n e30 = v3.sub(v0).normalize();\n\n let sw = e20.cross(e30).normalize();\n let ne = e30.cross(e10).normalize();\n let n0 = ne.add(sw).normalize();\n\n normalMapNormals[v0ind] += n0.x;\n normalMapNormals[v0ind + 1] += n0.y;\n normalMapNormals[v0ind + 2] += n0.z;\n\n normalMapNormals[v1ind] += ne.x;\n normalMapNormals[v1ind + 1] += ne.y;\n normalMapNormals[v1ind + 2] += ne.z;\n\n normalMapNormals[v2ind] += sw.x;\n normalMapNormals[v2ind + 1] += sw.y;\n normalMapNormals[v2ind + 2] += sw.z;\n\n normalMapNormals[v3ind] += n0.x;\n normalMapNormals[v3ind + 1] += n0.y;\n normalMapNormals[v3ind + 2] += n0.z;\n }\n }\n }\n\n self.postMessage(\n {\n id: id,\n normalMapNormals: normalMapNormals,\n normalMapVertices: normalMapVertices,\n terrainVertices: terrainVertices,\n terrainVerticesHigh: terrainVerticesHigh,\n terrainVerticesLow: terrainVerticesLow,\n noDataVertices: noDataVertices,\n bounds: [xmin, ymin, zmin, xmax, ymax, zmax],\n relativeCenter: e.data.relativeCenter\n },\n [\n normalMapNormals.buffer,\n normalMapVertices.buffer,\n terrainVertices.buffer,\n terrainVerticesHigh.buffer,\n terrainVerticesLow.buffer,\n noDataVertices.buffer\n ]\n );\n};\n"],"mappings":"yBAiBA,SAAS,EAAiB,EAAc,EAAA,CACpC,OAbJ,SAA0B,EAAK,EAAA,CAC3B,IAAI,EAAQ,EACR,EAAM,EAAI,OAAS,EACvB,KAAO,GAAS,GAAK,CACjB,IAAI,EAAI,KAAK,MAAsB,IAAf,EAAQ,EAAA,EAC5B,GAAI,KAAK,IAAI,EAAI,GAAK,CAAA,EAAK,KAAM,OAAO,EAC/B,EAAI,GAAK,EAAG,EAAQ,EAAI,EAC5B,EAAM,EAAI,CACnB,CACA,MAAA,EACJ,EAG4B,EAAc,CAAA,IAAtC,EACJ,CAEA,IAAI,EAAO,SAAU,EAAG,EAAG,EAAA,CACvB,KAAK,EAAI,EACT,KAAK,EAAI,EACT,KAAK,EAAI,CACb,EAEI,EAAoB,SAAU,EAAG,EAAM,EAAA,CACvC,IAAI,EAAI,EAAE,EACN,EAAI,EAAE,EACN,EAAI,EAAE,EAEV,IAAI,EAEA,GAAK,GACL,EAAuC,MAA1B,KAAK,MAAM,EAAI,KAAA,EAC5B,EAAK,EAAI,KAAK,OAAO,CAAA,EACrB,EAAI,EAAI,KAAK,OAAO,EAAI,CAAA,IAExB,EAAwC,MAA3B,KAAK,MAAA,CAAO,EAAI,KAAA,EAC7B,EAAK,EAAI,KAAK,OAAA,CAAQ,CAAA,EACtB,EAAI,EAAI,KAAK,OAAO,EAAI,CAAA,GAGxB,GAAK,GACL,EAAuC,MAA1B,KAAK,MAAM,EAAI,KAAA,EAC5B,EAAK,EAAI,KAAK,OAAO,CAAA,EACrB,EAAI,EAAI,KAAK,OAAO,EAAI,CAAA,IAExB,EAAwC,MAA3B,KAAK,MAAA,CAAO,EAAI,KAAA,EAC7B,EAAK,EAAI,KAAK,OAAA,CAAQ,CAAA,EACtB,EAAI,EAAI,KAAK,OAAO,EAAI,CAAA,GAGxB,GAAK,GACL,EAAuC,MAA1B,KAAK,MAAM,EAAI,KAAA,EAC5B,EAAK,EAAI,KAAK,OAAO,CAAA,EACrB,EAAI,EAAI,KAAK,OAAO,EAAI,CAAA,IAExB,EAAwC,MAA3B,KAAK,MAAA,CAAO,EAAI,KAAA,EAC7B,EAAK,EAAI,KAAK,OAAA,CAAQ,CAAA,EACtB,EAAI,EAAI,KAAK,OAAO,EAAI,CAAA,EAEhC,EAEA,EAAK,UAAU,IAAM,SAAU,EAAA,CAC3B,OAAO,IAAI,EAAK,KAAK,EAAI,EAAE,EAAG,KAAK,EAAI,EAAE,EAAG,KAAK,EAAI,EAAE,CAAA,CAC3D,EAEA,EAAK,UAAU,IAAM,SAAU,EAAA,CAC3B,OAAO,IAAI,EAAK,KAAK,EAAI,EAAE,EAAG,KAAK,EAAI,EAAE,EAAG,KAAK,EAAI,EAAE,CAAA,CAC3D,EAEA,EAAK,UAAU,MAAQ,SAAU,EAAA,CAC7B,OAAO,IAAI,EAAK,KAAK,EAAI,EAAE,EAAI,KAAK,EAAI,EAAE,EAAG,KAAK,EAAI,EAAE,EAAI,KAAK,EAAI,EAAE,EAAG,KAAK,EAAI,EAAE,EAAI,KAAK,EAAI,EAAE,CAAA,CACxG,EAEA,EAAK,UAAU,UAAY,UAAA,CACvB,IAAI,EAAI,KAAK,EACT,EAAI,KAAK,EACT,EAAI,KAAK,EACT,EAAS,EAAM,KAAK,KAAK,EAAI,EAAI,EAAI,EAAI,EAAI,CAAA,EAIjD,MAHA,MAAK,EAAI,EAAI,EACb,KAAK,EAAI,EAAI,EACb,KAAK,EAAI,EAAI,EACN,IACX,EAEA,EAAK,UAAU,SAAW,SAAU,EAAA,CAChC,OAAO,KAAK,IAAI,CAAA,CAAA,CAAG,OAAA,CACvB,EAEA,EAAK,UAAU,OAAS,UAAA,CACpB,OAAO,KAAK,KAAK,KAAK,EAAI,KAAK,EAAI,KAAK,EAAI,KAAK,EAAI,KAAK,EAAI,KAAK,CAAA,CACvE,EAEA,IAAI,EAAQ,SAAU,EAAG,EAAG,EAAM,EAAM,EAAM,EAAA,CAC1C,OAAO,GAAQ,EAAM,IAAM,EAAM,GAAK,EAAO,GAAK,EAAM,GAAK,GAAQ,EAAM,GAAK,EAAI,EAAO,EAAI,CACnG,EAEI,EAAW,IAAI,EAAK,EAAK,EAAK,CAAA,EAC9B,EAAc,IAAI,EAAK,EAAK,EAAK,CAAA,EAEjC,EAAY,IAAI,EAAK,EAAK,EAAK,CAAA,EAC/B,EAAW,IAAI,EAAK,EAAK,EAAK,CAAA,EAElC,KAAK,UAAY,SAAU,EAAA,CACvB,IAAI,EAAa,EAAE,KAAK,WACpB,EAAqB,EAAE,KAAK,mBAC5B,EAAoB,EAAE,KAAK,kBAC3B,EAAyB,EAAE,KAAK,uBAChC,EAAwB,EAAE,KAAK,sBAC/B,EAAe,EAAE,KAAK,aACtB,EAAW,EAAE,KAAK,SAClB,EAAe,EAAE,KAAK,aACtB,GAAK,EAAE,KAAK,GAEhB,IAAI,EAAQ,EAAE,KAAK,eAAe,GAC9B,EAAQ,EAAE,KAAK,eAAe,GAC9B,EAAQ,EAAE,KAAK,eAAe,GAElC,IAAI,EAAO,aACP,EAAA,cACA,EAAO,aACP,EAAA,cACA,EAAO,aACP,EAAA,cAEJ,IAAM,EAAe,KAAK,KAAK,EAAW,MAAA,EAAU,EAE9C,EAAmB,EAAe,EAClC,EAAsB,EAAmB,EACzC,EAAM,EACN,EAAK,EAAe,EACpB,EAAK,EAAM,EACX,EAAK,EAEX,IAUI,EAAkB,EAVlB,EAAO,EACP,GAAY,EAEZ,EAAQ,EAAK,EAAK,EAElB,EAAkB,IAAI,aAAa,CAAA,EACnC,EAAsB,IAAI,aAAa,CAAA,EACvC,EAAqB,IAAI,aAAa,CAAA,EACtC,EAAiB,IAAI,WAAW,EAAK,CAAA,EAIrC,EAAK,EACL,EAAK,EAET,GAAI,GAAgB,EAAK,CACrB,EAAmB,IAAI,aAAmC,EAAtB,CAAA,EACpC,EAAoB,IAAI,aAAmC,EAAtB,CAAA,EAErC,IAAK,IAAI,EAAI,EAAG,EAAI,EAAqB,IAAK,CAC1C,IAAI,GAAI,EAAI,EACR,GAAA,CAAA,EAAO,EAAI,GAKX,GAAQ,EACR,EAAgB,EAAR,GACR,EAAU,EAAW,IACrB,EAAiB,EAAc,CAAA,IAC/B,EAAU,GAEd,IAAI,GAAK,EAAK,EACV,EAAK,IAAI,EACT,EAAQ,EAAG,GAAS,GAAK,EAAG,GAC5B,EAAQ,EAAG,EAAQ,GAAK,GAAK,EAAG,EAAQ,GACxC,EAAQ,EAAG,EAAQ,GAAK,GAAK,EAAG,EAAQ,EAAA,EAS5C,GANA,EAAkB,GAAS,EAAG,EAAI,EAClC,EAAkB,EAAQ,GAAK,EAAG,EAAI,EACtC,EAAkB,EAAQ,GAAK,EAAG,EAAI,EAIlC,GAAI,IAAO,GAAK,GAAI,IAAO,EAAG,CAC9B,IAAI,EAAW,IAAI,EAAK,EAAQ,EAAG,GAAQ,EAAQ,EAAG,EAAQ,GAAI,EAAQ,EAAG,EAAQ,EAAA,EACjF,EAAW,IAAI,EAAK,EAAQ,EAAG,EAAQ,GAAI,EAAQ,EAAG,EAAQ,GAAI,EAAQ,EAAG,EAAQ,EAAA,EAErF,EAAU,EAAW,GAAQ,GAC7B,EAAiB,EAAc,CAAA,IAC/B,EAAU,GAGd,IAAI,EAAA,CAAM,EACV,GAAI,EAAa,SAAW,EAAG,CAC3B,IAAI,EAAO,EAAS,SAAS,CAAA,EAE7B,EADe,KAAK,IAAI,EAAU,CAAA,EACjB,EAAO,IAAQ,EAAA,IACpC,CAEI,EACA,EAAe,IAAa,GAE5B,EAAe,IAAa,EACxB,EAAG,EAAI,IAAM,EAAO,EAAG,GACvB,EAAG,EAAI,IAAM,EAAO,EAAG,GACvB,EAAG,EAAI,IAAM,EAAO,EAAG,GACvB,EAAG,EAAI,IAAM,EAAO,EAAG,GACvB,EAAG,EAAI,IAAM,EAAO,EAAG,GACvB,EAAG,EAAI,IAAM,EAAO,EAAG,IAG/B,IAAI,EAAS,IAAI,EAAK,EAAG,EAAI,EAAO,EAAG,EAAI,EAAO,EAAG,EAAI,CAAA,EACzD,EAAkB,EAAQ,EAAW,CAAA,EAErC,EAAoB,GAAQ,EAAU,EACtC,EAAmB,GAAQ,EAAS,EACpC,EAAgB,KAAU,EAAO,EAEjC,EAAoB,GAAQ,EAAU,EACtC,EAAmB,GAAQ,EAAS,EACpC,EAAgB,KAAU,EAAO,EAEjC,EAAoB,GAAQ,EAAU,EACtC,EAAmB,GAAQ,EAAS,EACpC,EAAgB,KAAU,EAAO,EAEjC,IACJ,CAEA,GAAI,KAAM,GAAgB,KAAM,EAAc,CAI1C,IAAI,GAAQ,EAAI,EACZ,EAAgB,EAAR,GACR,EAAM,EAAW,IACjB,EAAiB,EAAc,CAAA,IAC/B,EAAM,GAEV,IAAI,GAAK,EAAK,EACV,EAAK,IAAI,EACT,EAAQ,EAAG,GAAS,GAAK,EAAG,GAC5B,EAAQ,EAAG,EAAQ,GAAK,GAAK,EAAG,EAAQ,GACxC,EAAQ,EAAG,EAAQ,GAAK,GAAK,EAAG,EAAQ,EAAA,EAG5C,EAAkB,GAAS,EAAG,EAAI,EAClC,EAAkB,EAAQ,GAAK,EAAG,EAAI,EACtC,EAAkB,EAAQ,GAAK,EAAG,EAAI,EAKtC,IAAI,GAAQ,EAAI,EACZ,EAAgB,EAAR,GAER,EAAiB,EADrB,EAAM,EAAW,GAAA,IAEb,EAAM,GAEV,IAAI,GAAK,EAAK,EACV,EAAK,IAAI,EACT,EAAQ,EAAG,GAAS,GAAK,EAAG,GAC5B,EAAQ,EAAG,EAAQ,GAAK,GAAK,EAAG,EAAQ,GACxC,EAAQ,EAAG,EAAQ,GAAK,GAAK,EAAG,EAAQ,EAAA,EAG5C,EAAkB,GAAS,EAAG,EAAI,EAClC,EAAkB,EAAQ,GAAK,EAAG,EAAI,EACtC,EAAkB,EAAQ,GAAK,EAAG,EAAI,EAKtC,IAAI,GAAQ,EAAI,EAAmB,EAC/B,EAAgB,EAAR,GAER,EAAiB,EADrB,EAAM,EAAW,GAAA,IAEb,EAAM,GAEV,IAAI,GAAK,EAAK,EACV,GAAK,IAAI,EACT,EAAQ,EAAG,GAAS,GAAK,EAAG,GAC5B,EAAQ,EAAG,EAAQ,GAAK,GAAK,EAAG,EAAQ,GACxC,EAAQ,EAAG,EAAQ,GAAK,GAAK,EAAG,EAAQ,EAAA,EAG5C,EAAkB,GAAS,GAAG,EAAI,EAClC,EAAkB,EAAQ,GAAK,GAAG,EAAI,EACtC,EAAkB,EAAQ,GAAK,GAAG,EAAI,EAKtC,IAAI,GAAM,EAAG,IAAI,CAAA,EACb,GAAM,EAAG,IAAI,CAAA,EACb,GAAM,GAAG,IAAI,CAAA,EAEb,GAAK,GAAI,MAAM,EAAA,CAAA,CAAK,UAAA,EACpB,GAAK,GAAI,MAAM,EAAA,CAAA,CAAK,UAAA,EACpB,EAAK,GAAG,IAAI,EAAA,CAAA,CAAI,UAAA,EAEpB,EAAiB,IAAU,EAAG,EAC9B,EAAiB,EAAQ,IAAM,EAAG,EAClC,EAAiB,EAAQ,IAAM,EAAG,EAElC,EAAiB,IAAU,GAAG,EAC9B,EAAiB,EAAQ,IAAM,GAAG,EAClC,EAAiB,EAAQ,IAAM,GAAG,EAElC,EAAiB,IAAU,GAAG,EAC9B,EAAiB,EAAQ,IAAM,GAAG,EAClC,EAAiB,EAAQ,IAAM,GAAG,EAElC,EAAiB,IAAU,EAAG,EAC9B,EAAiB,EAAQ,IAAM,EAAG,EAClC,EAAiB,EAAQ,IAAM,EAAG,CACtC,CACJ,CACJ,KAAO,CACH,EAAmB,IAAI,aAAa,CAAA,EACpC,EAAoB,IAAI,aAAa,CAAA,EAErC,IAAI,EAAU,EAAM,EAChB,GAAO,EAAQ,EACf,GAAS,EAAe,EAE5B,IAAK,IAAI,EAAI,EAAG,EAAI,GAAM,IAAK,CAC3B,IAAI,EAAK,KAAK,MAAM,EAAI,CAAA,EACpB,EAAK,EAAI,EAET,EAAM,EAAK,EACX,EAAM,EAAK,EAEX,EAAU,KAAK,MAAM,EAAK,CAAA,EAAW,GAAS,KAAK,MAAM,EAAK,CAAA,EAE9D,IAAO,IACP,IACA,EAAM,GAGN,IAAO,IACP,GAAW,GACX,EAAM,GAGV,IAAI,GAAU,EAAU,EACpB,EAAU,EAAU,GACpB,EAAU,EAAU,EAEpB,EAAO,EAAW,GAClB,EAAO,EAAW,IAClB,EAAO,EAAW,GAClB,EAAO,EAAW,GAElB,EAAiB,EAAc,CAAA,IAC/B,EAAO,GAGP,EAAiB,EAAc,CAAA,IAC/B,EAAO,GAGP,EAAiB,EAAc,CAAA,IAC/B,EAAO,GAGP,EAAiB,EAAc,CAAA,IAC/B,EAAO,GAGX,IAAI,EAAK,EAAM,EAAM,EAAS,EAAM,EAAS,EAAM,EAAM,EAAM,CAAA,EAE3D,EAAS,EAAJ,EAET,EAAY,EAAI,EAAmB,GAAM,EAAK,EAAkB,GAChE,EAAY,EAAI,EAAmB,EAAK,GAAK,EAAK,EAAkB,EAAK,GACzE,EAAY,EAAI,EAAmB,EAAK,GAAK,EAAK,EAAkB,EAAK,GAEzE,EAAkB,EAAa,EAAW,CAAA,EAE1C,EAAgB,GAAM,EAAY,EAClC,EAAgB,EAAK,GAAK,EAAY,EACtC,EAAgB,EAAK,GAAK,EAAY,EAEtC,EAAoB,GAAM,EAAU,EACpC,EAAoB,EAAK,GAAK,EAAU,EACxC,EAAoB,EAAK,GAAK,EAAU,EAExC,EAAmB,GAAM,EAAS,EAClC,EAAmB,EAAK,GAAK,EAAS,EACtC,EAAmB,EAAK,GAAK,EAAS,EAEtC,EAAS,EAAI,EAAY,EAAI,EAC7B,EAAS,EAAI,EAAY,EAAI,EAC7B,EAAS,EAAI,EAAY,EAAI,EAEzB,EAAS,EAAI,IAAM,EAAO,EAAS,GACnC,EAAS,EAAI,IAAM,EAAO,EAAS,GACnC,EAAS,EAAI,IAAM,EAAO,EAAS,GACnC,EAAS,EAAI,IAAM,EAAO,EAAS,GACnC,EAAS,EAAI,IAAM,EAAO,EAAS,GACnC,EAAS,EAAI,IAAM,EAAO,EAAS,EAC3C,CAEA,EAAkB,IAAI,CAAA,EAEtB,IAAK,IAAI,EAAI,EAAG,EAAI,GAAM,IAItB,GAAA,CAAA,EAFW,EAAI,KAEL,GAHF,EAAI,IAGW,EAAK,CACxB,IAAI,EAAY,EAAJ,EACR,EAAQ,EAAQ,EAChB,EAAQ,EAAa,EAAL,EAChB,EAAQ,EAAQ,EAEhB,EAAK,IAAI,EACL,EAAgB,GAAS,EACzB,EAAgB,EAAQ,GAAK,EAC7B,EAAgB,EAAQ,GAAK,CAAA,EAEjC,EAAK,IAAI,EACL,EAAgB,GAAS,EACzB,EAAgB,EAAQ,GAAK,EAC7B,EAAgB,EAAQ,GAAK,CAAA,EAEjC,EAAK,IAAI,EACL,EAAgB,GAAS,EACzB,EAAgB,EAAQ,GAAK,EAC7B,EAAgB,EAAQ,GAAK,CAAA,EAEjC,EAAK,IAAI,EACL,EAAgB,GAAS,EACzB,EAAgB,EAAQ,GAAK,EAC7B,EAAgB,EAAQ,GAAK,CAAA,EAGjC,EAAM,EAAG,IAAI,CAAA,CAAA,CAAI,UAAA,EACjB,EAAM,EAAG,IAAI,CAAA,CAAA,CAAI,UAAA,EACjB,EAAM,EAAG,IAAI,CAAA,CAAA,CAAI,UAAA,EAEjB,EAAK,EAAI,MAAM,CAAA,CAAA,CAAK,UAAA,EACpB,EAAK,EAAI,MAAM,CAAA,CAAA,CAAK,UAAA,EACpB,EAAK,EAAG,IAAI,CAAA,CAAA,CAAI,UAAA,EAEpB,EAAiB,IAAU,EAAG,EAC9B,EAAiB,EAAQ,IAAM,EAAG,EAClC,EAAiB,EAAQ,IAAM,EAAG,EAElC,EAAiB,IAAU,EAAG,EAC9B,EAAiB,EAAQ,IAAM,EAAG,EAClC,EAAiB,EAAQ,IAAM,EAAG,EAElC,EAAiB,IAAU,EAAG,EAC9B,EAAiB,EAAQ,IAAM,EAAG,EAClC,EAAiB,EAAQ,IAAM,EAAG,EAElC,EAAiB,IAAU,EAAG,EAC9B,EAAiB,EAAQ,IAAM,EAAG,EAClC,EAAiB,EAAQ,IAAM,EAAG,CACtC,CAER,CAEA,KAAK,YACD,CACQ,GAAA,GACc,iBAAA,EACC,kBAAA,EACF,gBAAA,EACI,oBAAA,EACD,mBAAA,EACJ,eAAA,EAChB,OAAQ,CAAC,EAAM,EAAM,EAAM,EAAM,EAAM,CAAA,EACvC,eAAgB,EAAE,KAAK,cAAA,EAE3B,CACI,EAAiB,OACjB,EAAkB,OAClB,EAAgB,OAChB,EAAoB,OACpB,EAAmB,OACnB,EAAe,MAAA,CAAA,CAG3B,CAAA,EAAA,CAAA"}
|