tangram-weather 0.2.0__py2.py3-none-any.whl

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../node_modules/.pnpm/cpt2js@1.6.2/node_modules/cpt2js/dist/cpt2js.js","../../../node_modules/.pnpm/geodesy-fn@1.2.2/node_modules/geodesy-fn/dist/geodesy-fn.js","../../../node_modules/.pnpm/comlink@4.4.2/node_modules/comlink/dist/esm/comlink.mjs","../../../node_modules/.pnpm/rollup-plugin-worker-factory@0.5.7/node_modules/rollup-plugin-worker-factory/src/browser.js","../../../node_modules/.pnpm/@mapbox+sphericalmercator@2.0.2/node_modules/@mapbox/sphericalmercator/dist/esm/constants.js","../../../node_modules/.pnpm/@mapbox+sphericalmercator@2.0.2/node_modules/@mapbox/sphericalmercator/dist/esm/index.js","../../../node_modules/.pnpm/icomesh@1.1.0/node_modules/icomesh/index.js","../../../node_modules/.pnpm/kdbush@4.0.2/node_modules/kdbush/index.js","../../../node_modules/.pnpm/tinyqueue@2.0.3/node_modules/tinyqueue/index.js","../../../node_modules/.pnpm/geokdbush@2.0.1/node_modules/geokdbush/index.js","../../../node_modules/.pnpm/@probe.gl+env@4.1.0/node_modules/@probe.gl/env/dist/lib/globals.js","../../../node_modules/.pnpm/@probe.gl+env@4.1.0/node_modules/@probe.gl/env/dist/lib/is-electron.js","../../../node_modules/.pnpm/@probe.gl+env@4.1.0/node_modules/@probe.gl/env/dist/lib/is-browser.js","../../../node_modules/.pnpm/@probe.gl+env@4.1.0/node_modules/@probe.gl/env/dist/index.js","../../../node_modules/.pnpm/@probe.gl+log@4.1.0/node_modules/@probe.gl/log/dist/utils/local-storage.js","../../../node_modules/.pnpm/@probe.gl+log@4.1.0/node_modules/@probe.gl/log/dist/utils/formatters.js","../../../node_modules/.pnpm/@probe.gl+log@4.1.0/node_modules/@probe.gl/log/dist/utils/color.js","../../../node_modules/.pnpm/@probe.gl+log@4.1.0/node_modules/@probe.gl/log/dist/utils/autobind.js","../../../node_modules/.pnpm/@probe.gl+log@4.1.0/node_modules/@probe.gl/log/dist/utils/assert.js","../../../node_modules/.pnpm/@probe.gl+log@4.1.0/node_modules/@probe.gl/log/dist/utils/hi-res-timestamp.js","../../../node_modules/.pnpm/@probe.gl+log@4.1.0/node_modules/@probe.gl/log/dist/log.js","../../../node_modules/.pnpm/@luma.gl+core@9.2.4/node_modules/@luma.gl/core/dist/utils/log.js","../../../node_modules/.pnpm/@luma.gl+core@9.2.4/node_modules/@luma.gl/core/dist/utils/uid.js","../../../node_modules/.pnpm/@luma.gl+core@9.2.4/node_modules/@luma.gl/core/dist/adapter/resources/resource.js","../../../node_modules/.pnpm/@luma.gl+core@9.2.4/node_modules/@luma.gl/core/dist/adapter/resources/buffer.js","../../../node_modules/.pnpm/@luma.gl+core@9.2.4/node_modules/@luma.gl/core/dist/shadertypes/data-types/decode-data-types.js","../../../node_modules/.pnpm/@luma.gl+core@9.2.4/node_modules/@luma.gl/core/dist/shadertypes/vertex-arrays/decode-vertex-format.js","../../../node_modules/.pnpm/@luma.gl+core@9.2.4/node_modules/@luma.gl/core/dist/adapter/resources/sampler.js","../../../node_modules/.pnpm/@luma.gl+core@9.2.4/node_modules/@luma.gl/core/dist/adapter/resources/texture.js","../../../node_modules/.pnpm/@luma.gl+core@9.2.4/node_modules/@luma.gl/core/dist/adapter/resources/texture-view.js","../../../node_modules/.pnpm/@luma.gl+core@9.2.4/node_modules/@luma.gl/core/dist/adapter-utils/format-compiler-log.js","../../../node_modules/.pnpm/@luma.gl+core@9.2.4/node_modules/@luma.gl/core/dist/adapter/resources/shader.js","../../../node_modules/.pnpm/@luma.gl+core@9.2.4/node_modules/@luma.gl/core/dist/adapter/resources/render-pipeline.js","../../../node_modules/.pnpm/@luma.gl+core@9.2.4/node_modules/@luma.gl/core/dist/adapter/resources/compute-pipeline.js","../../../node_modules/.pnpm/@luma.gl+core@9.2.4/node_modules/@luma.gl/core/dist/shadertypes/data-types/decode-shader-types.js","../../../node_modules/.pnpm/@luma.gl+core@9.2.4/node_modules/@luma.gl/core/dist/adapter-utils/get-attribute-from-layouts.js","../../../node_modules/.pnpm/@luma.gl+core@9.2.4/node_modules/@luma.gl/core/dist/utils/array-utils-flat.js","../../../node_modules/.pnpm/@luma.gl+core@9.2.4/node_modules/@luma.gl/core/dist/utils/is-array.js","../../../node_modules/.pnpm/@luma.gl+core@9.2.4/node_modules/@luma.gl/core/dist/portable/uniform-buffer-layout.js","../../../node_modules/.pnpm/@luma.gl+core@9.2.4/node_modules/@luma.gl/core/dist/utils/array-equal.js","../../../node_modules/.pnpm/@luma.gl+core@9.2.4/node_modules/@luma.gl/core/dist/portable/uniform-block.js","../../../node_modules/.pnpm/@luma.gl+core@9.2.4/node_modules/@luma.gl/core/dist/portable/uniform-store.js","../../../node_modules/.pnpm/@luma.gl+shadertools@9.2.4_@luma.gl+core@9.2.4/node_modules/@luma.gl/shadertools/dist/lib/utils/assert.js","../../../node_modules/.pnpm/@luma.gl+shadertools@9.2.4_@luma.gl+core@9.2.4/node_modules/@luma.gl/shadertools/dist/lib/filters/prop-types.js","../../../node_modules/.pnpm/@luma.gl+shadertools@9.2.4_@luma.gl+core@9.2.4/node_modules/@luma.gl/shadertools/dist/module-injectors.js","../../../node_modules/.pnpm/@luma.gl+shadertools@9.2.4_@luma.gl+core@9.2.4/node_modules/@luma.gl/shadertools/dist/lib/shader-assembly/shader-injections.js","../../../node_modules/.pnpm/@luma.gl+shadertools@9.2.4_@luma.gl+core@9.2.4/node_modules/@luma.gl/shadertools/dist/lib/shader-module/shader-module.js","../../../node_modules/.pnpm/@luma.gl+shadertools@9.2.4_@luma.gl+core@9.2.4/node_modules/@luma.gl/shadertools/dist/lib/shader-module/shader-module-dependencies.js","../../../node_modules/.pnpm/@luma.gl+shadertools@9.2.4_@luma.gl+core@9.2.4/node_modules/@luma.gl/shadertools/dist/lib/shader-assembly/platform-defines.js","../../../node_modules/.pnpm/@luma.gl+shadertools@9.2.4_@luma.gl+core@9.2.4/node_modules/@luma.gl/shadertools/dist/lib/shader-transpiler/transpile-glsl-shader.js","../../../node_modules/.pnpm/@luma.gl+shadertools@9.2.4_@luma.gl+core@9.2.4/node_modules/@luma.gl/shadertools/dist/lib/shader-assembly/shader-hooks.js","../../../node_modules/.pnpm/@luma.gl+shadertools@9.2.4_@luma.gl+core@9.2.4/node_modules/@luma.gl/shadertools/dist/lib/glsl-utils/get-shader-info.js","../../../node_modules/.pnpm/@luma.gl+shadertools@9.2.4_@luma.gl+core@9.2.4/node_modules/@luma.gl/shadertools/dist/lib/shader-assembly/assemble-shaders.js","../../../node_modules/.pnpm/@luma.gl+shadertools@9.2.4_@luma.gl+core@9.2.4/node_modules/@luma.gl/shadertools/dist/lib/preprocessor/preprocessor.js","../../../node_modules/.pnpm/@luma.gl+shadertools@9.2.4_@luma.gl+core@9.2.4/node_modules/@luma.gl/shadertools/dist/lib/shader-assembler.js","../../../node_modules/.pnpm/@luma.gl+shadertools@9.2.4_@luma.gl+core@9.2.4/node_modules/@luma.gl/shadertools/dist/lib/glsl-utils/shader-utils.js","../../../node_modules/.pnpm/wgsl_reflect@1.2.3/node_modules/wgsl_reflect/wgsl_reflect.module.js","../../../node_modules/.pnpm/@luma.gl+shadertools@9.2.4_@luma.gl+core@9.2.4/node_modules/@luma.gl/shadertools/dist/lib/wgsl/get-shader-layout-wgsl.js","../../../node_modules/.pnpm/@luma.gl+engine@9.2.4_@luma.gl+core@9.2.4_@luma.gl+shadertools@9.2.4_@luma.gl+core@9.2.4_/node_modules/@luma.gl/engine/dist/utils/uid.js","../../../node_modules/.pnpm/@luma.gl+engine@9.2.4_@luma.gl+core@9.2.4_@luma.gl+shadertools@9.2.4_@luma.gl+core@9.2.4_/node_modules/@luma.gl/engine/dist/geometry/gpu-geometry.js","../../../node_modules/.pnpm/@luma.gl+engine@9.2.4_@luma.gl+core@9.2.4_@luma.gl+shadertools@9.2.4_@luma.gl+core@9.2.4_/node_modules/@luma.gl/engine/dist/factories/pipeline-factory.js","../../../node_modules/.pnpm/@luma.gl+engine@9.2.4_@luma.gl+core@9.2.4_@luma.gl+shadertools@9.2.4_@luma.gl+core@9.2.4_/node_modules/@luma.gl/engine/dist/factories/shader-factory.js","../../../node_modules/.pnpm/@luma.gl+engine@9.2.4_@luma.gl+core@9.2.4_@luma.gl+shadertools@9.2.4_@luma.gl+core@9.2.4_/node_modules/@luma.gl/engine/dist/debug/debug-shader-layout.js","../../../node_modules/.pnpm/@luma.gl+engine@9.2.4_@luma.gl+core@9.2.4_@luma.gl+shadertools@9.2.4_@luma.gl+core@9.2.4_/node_modules/@luma.gl/engine/dist/debug/debug-framebuffer.js","../../../node_modules/.pnpm/@luma.gl+engine@9.2.4_@luma.gl+core@9.2.4_@luma.gl+shadertools@9.2.4_@luma.gl+core@9.2.4_/node_modules/@luma.gl/engine/dist/utils/deep-equal.js","../../../node_modules/.pnpm/@luma.gl+engine@9.2.4_@luma.gl+core@9.2.4_@luma.gl+shadertools@9.2.4_@luma.gl+core@9.2.4_/node_modules/@luma.gl/engine/dist/utils/buffer-layout-helper.js","../../../node_modules/.pnpm/@luma.gl+engine@9.2.4_@luma.gl+core@9.2.4_@luma.gl+shadertools@9.2.4_@luma.gl+core@9.2.4_/node_modules/@luma.gl/engine/dist/utils/buffer-layout-order.js","../../../node_modules/.pnpm/@math.gl+types@4.1.0/node_modules/@math.gl/types/dist/is-array.js","../../../node_modules/.pnpm/@luma.gl+engine@9.2.4_@luma.gl+core@9.2.4_@luma.gl+shadertools@9.2.4_@luma.gl+core@9.2.4_/node_modules/@luma.gl/engine/dist/model/split-uniforms-and-bindings.js","../../../node_modules/.pnpm/@luma.gl+engine@9.2.4_@luma.gl+core@9.2.4_@luma.gl+shadertools@9.2.4_@luma.gl+core@9.2.4_/node_modules/@luma.gl/engine/dist/shader-inputs.js","../../../node_modules/.pnpm/@luma.gl+engine@9.2.4_@luma.gl+core@9.2.4_@luma.gl+shadertools@9.2.4_@luma.gl+core@9.2.4_/node_modules/@luma.gl/engine/dist/application-utils/load-file.js","../../../node_modules/.pnpm/@luma.gl+engine@9.2.4_@luma.gl+core@9.2.4_@luma.gl+shadertools@9.2.4_@luma.gl+core@9.2.4_/node_modules/@luma.gl/engine/dist/async-texture/async-texture.js","../../../node_modules/.pnpm/@luma.gl+engine@9.2.4_@luma.gl+core@9.2.4_@luma.gl+shadertools@9.2.4_@luma.gl+core@9.2.4_/node_modules/@luma.gl/engine/dist/model/model.js","../../../node_modules/.pnpm/@luma.gl+engine@9.2.4_@luma.gl+core@9.2.4_@luma.gl+shadertools@9.2.4_@luma.gl+core@9.2.4_/node_modules/@luma.gl/engine/dist/compute/buffer-transform.js","../../../node_modules/.pnpm/weatherlayers-gl@2025.11.0_@deck.gl+core@9.2.2_@deck.gl+extensions@9.2.2_@deck.gl+core@_b597d1e83956c5fbc05e1a922d728813/node_modules/weatherlayers-gl/dist/weatherlayers-deck.min.js","../src/tangram_weather/WindFieldLayer.vue","../src/tangram_weather/index.ts"],"sourcesContent":["/*!\n* Copyright (c) 2022 WeatherLayers.com\n*\n* This Source Code Form is subject to the terms of the Mozilla Public\n* License, v. 2.0. If a copy of the MPL was not distributed with this\n* file, You can obtain one at http://mozilla.org/MPL/2.0/.\n*/\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nvar limit;\nvar hasRequiredLimit;\n\nfunction requireLimit () {\n\tif (hasRequiredLimit) return limit;\n\thasRequiredLimit = 1;\n\tlimit = (x, min=0, max=1) => {\n\t return x < min ? min : x > max ? max : x;\n\t};\n\treturn limit;\n}\n\nvar clip_rgb;\nvar hasRequiredClip_rgb;\n\nfunction requireClip_rgb () {\n\tif (hasRequiredClip_rgb) return clip_rgb;\n\thasRequiredClip_rgb = 1;\n\tconst limit = requireLimit();\n\n\tclip_rgb = (rgb) => {\n\t rgb._clipped = false;\n\t rgb._unclipped = rgb.slice(0);\n\t for (let i=0; i<=3; i++) {\n\t if (i < 3) {\n\t if (rgb[i] < 0 || rgb[i] > 255) rgb._clipped = true;\n\t rgb[i] = limit(rgb[i], 0, 255);\n\t } else if (i === 3) {\n\t rgb[i] = limit(rgb[i], 0, 1);\n\t }\n\t }\n\t return rgb;\n\t};\n\treturn clip_rgb;\n}\n\nvar type;\nvar hasRequiredType;\n\nfunction requireType () {\n\tif (hasRequiredType) return type;\n\thasRequiredType = 1;\n\t// ported from jQuery's $.type\n\tconst classToType = {};\n\tfor (let name of ['Boolean', 'Number', 'String', 'Function', 'Array', 'Date', 'RegExp', 'Undefined', 'Null']) {\n\t classToType[`[object ${name}]`] = name.toLowerCase();\n\t}\n\ttype = function(obj) {\n\t return classToType[Object.prototype.toString.call(obj)] || \"object\";\n\t};\n\treturn type;\n}\n\nvar unpack;\nvar hasRequiredUnpack;\n\nfunction requireUnpack () {\n\tif (hasRequiredUnpack) return unpack;\n\thasRequiredUnpack = 1;\n\tconst type = requireType();\n\n\tunpack = (args, keyOrder=null) => {\n\t\t// if called with more than 3 arguments, we return the arguments\n\t if (args.length >= 3) return Array.prototype.slice.call(args);\n\t // with less than 3 args we check if first arg is object\n\t // and use the keyOrder string to extract and sort properties\n\t\tif (type(args[0]) == 'object' && keyOrder) {\n\t\t\treturn keyOrder.split('')\n\t\t\t\t.filter(k => args[0][k] !== undefined)\n\t\t\t\t.map(k => args[0][k]);\n\t\t}\n\t\t// otherwise we just return the first argument\n\t\t// (which we suppose is an array of args)\n\t return args[0];\n\t};\n\treturn unpack;\n}\n\nvar last;\nvar hasRequiredLast;\n\nfunction requireLast () {\n\tif (hasRequiredLast) return last;\n\thasRequiredLast = 1;\n\tconst type = requireType();\n\n\tlast = (args) => {\n\t if (args.length < 2) return null;\n\t const l = args.length-1;\n\t if (type(args[l]) == 'string') return args[l].toLowerCase();\n\t return null;\n\t};\n\treturn last;\n}\n\nvar utils;\nvar hasRequiredUtils;\n\nfunction requireUtils () {\n\tif (hasRequiredUtils) return utils;\n\thasRequiredUtils = 1;\n\tconst PI = Math.PI;\n\n\tutils = {\n\t\tclip_rgb: requireClip_rgb(),\n\t\tlimit: requireLimit(),\n\t\ttype: requireType(),\n\t\tunpack: requireUnpack(),\n\t\tlast: requireLast(),\n\t\tPI: PI,\n\t\tTWOPI: PI*2,\n\t\tPITHIRD: PI/3,\n\t\tDEG2RAD: PI / 180,\n\t\tRAD2DEG: 180 / PI\n\t};\n\treturn utils;\n}\n\nvar input;\nvar hasRequiredInput;\n\nfunction requireInput () {\n\tif (hasRequiredInput) return input;\n\thasRequiredInput = 1;\n\tinput = {\n\t\tformat: {},\n\t\tautodetect: []\n\t};\n\treturn input;\n}\n\nvar Color_1;\nvar hasRequiredColor;\n\nfunction requireColor () {\n\tif (hasRequiredColor) return Color_1;\n\thasRequiredColor = 1;\n\tconst {last, clip_rgb, type} = requireUtils();\n\tconst _input = requireInput();\n\n\tclass Color {\n\n\t constructor(...args) {\n\t const me = this;\n\t if (type(args[0]) === 'object' &&\n\t args[0].constructor &&\n\t args[0].constructor === this.constructor) {\n\t // the argument is already a Color instance\n\t return args[0];\n\t }\n\n\t // last argument could be the mode\n\t let mode = last(args);\n\t let autodetect = false;\n\n\t if (!mode) {\n\t autodetect = true;\n\t if (!_input.sorted) {\n\t _input.autodetect = _input.autodetect.sort((a,b) => b.p - a.p);\n\t _input.sorted = true;\n\t }\n\t // auto-detect format\n\t for (let chk of _input.autodetect) {\n\t mode = chk.test(...args);\n\t if (mode) break;\n\t }\n\t }\n\n\t if (_input.format[mode]) {\n\t const rgb = _input.format[mode].apply(null, autodetect ? args : args.slice(0,-1));\n\t me._rgb = clip_rgb(rgb);\n\t } else {\n\t throw new Error('unknown format: '+args);\n\t }\n\n\t // add alpha channel\n\t if (me._rgb.length === 3) me._rgb.push(1);\n\t }\n\n\t toString() {\n\t if (type(this.hex) == 'function') return this.hex();\n\t return `[${this._rgb.join(',')}]`;\n\t }\n\n\t}\n\n\tColor_1 = Color;\n\treturn Color_1;\n}\n\nvar chroma_1;\nvar hasRequiredChroma;\n\nfunction requireChroma () {\n\tif (hasRequiredChroma) return chroma_1;\n\thasRequiredChroma = 1;\n\tconst chroma = (...args) => {\n\t\treturn new chroma.Color(...args);\n\t};\n\n\tchroma.Color = requireColor();\n\tchroma.version = '@@version';\n\n\tchroma_1 = chroma;\n\treturn chroma_1;\n}\n\nvar chromaExports = requireChroma();\nvar chroma = /*@__PURE__*/getDefaultExportFromCjs(chromaExports);\n\nvar css = {};\n\nvar hsl2css_1;\nvar hasRequiredHsl2css;\n\nfunction requireHsl2css () {\n\tif (hasRequiredHsl2css) return hsl2css_1;\n\thasRequiredHsl2css = 1;\n\tconst {unpack, last} = requireUtils();\n\tconst rnd = (a) => Math.round(a*100)/100;\n\n\t/*\n\t * supported arguments:\n\t * - hsl2css(h,s,l)\n\t * - hsl2css(h,s,l,a)\n\t * - hsl2css([h,s,l], mode)\n\t * - hsl2css([h,s,l,a], mode)\n\t * - hsl2css({h,s,l,a}, mode)\n\t */\n\tconst hsl2css = (...args) => {\n\t const hsla = unpack(args, 'hsla');\n\t let mode = last(args) || 'lsa';\n\t hsla[0] = rnd(hsla[0] || 0);\n\t hsla[1] = rnd(hsla[1]*100) + '%';\n\t hsla[2] = rnd(hsla[2]*100) + '%';\n\t if (mode === 'hsla' || (hsla.length > 3 && hsla[3]<1)) {\n\t hsla[3] = hsla.length > 3 ? hsla[3] : 1;\n\t mode = 'hsla';\n\t } else {\n\t hsla.length = 3;\n\t }\n\t return `${mode}(${hsla.join(',')})`;\n\t};\n\n\thsl2css_1 = hsl2css;\n\treturn hsl2css_1;\n}\n\nvar rgb2hsl_1;\nvar hasRequiredRgb2hsl;\n\nfunction requireRgb2hsl () {\n\tif (hasRequiredRgb2hsl) return rgb2hsl_1;\n\thasRequiredRgb2hsl = 1;\n\tconst {unpack} = requireUtils();\n\n\t/*\n\t * supported arguments:\n\t * - rgb2hsl(r,g,b)\n\t * - rgb2hsl(r,g,b,a)\n\t * - rgb2hsl([r,g,b])\n\t * - rgb2hsl([r,g,b,a])\n\t * - rgb2hsl({r,g,b,a})\n\t */\n\tconst rgb2hsl = (...args) => {\n\t args = unpack(args, 'rgba');\n\t let [r,g,b] = args;\n\n\t r /= 255;\n\t g /= 255;\n\t b /= 255;\n\n\t const min = Math.min(r, g, b);\n\t const max = Math.max(r, g, b);\n\n\t const l = (max + min) / 2;\n\t let s, h;\n\n\t if (max === min){\n\t s = 0;\n\t h = Number.NaN;\n\t } else {\n\t s = l < 0.5 ? (max - min) / (max + min) : (max - min) / (2 - max - min);\n\t }\n\n\t if (r == max) h = (g - b) / (max - min);\n\t else if (g == max) h = 2 + (b - r) / (max - min);\n\t else if (b == max) h = 4 + (r - g) / (max - min);\n\n\t h *= 60;\n\t if (h < 0) h += 360;\n\t if (args.length>3 && args[3]!==undefined) return [h,s,l,args[3]];\n\t return [h,s,l];\n\t};\n\n\trgb2hsl_1 = rgb2hsl;\n\treturn rgb2hsl_1;\n}\n\nvar rgb2css_1;\nvar hasRequiredRgb2css;\n\nfunction requireRgb2css () {\n\tif (hasRequiredRgb2css) return rgb2css_1;\n\thasRequiredRgb2css = 1;\n\tconst {unpack, last} = requireUtils();\n\tconst hsl2css = requireHsl2css();\n\tconst rgb2hsl = requireRgb2hsl();\n\tconst {round} = Math;\n\n\t/*\n\t * supported arguments:\n\t * - rgb2css(r,g,b)\n\t * - rgb2css(r,g,b,a)\n\t * - rgb2css([r,g,b], mode)\n\t * - rgb2css([r,g,b,a], mode)\n\t * - rgb2css({r,g,b,a}, mode)\n\t */\n\tconst rgb2css = (...args) => {\n\t const rgba = unpack(args, 'rgba');\n\t let mode = last(args) || 'rgb';\n\t if (mode.substr(0,3) == 'hsl') {\n\t return hsl2css(rgb2hsl(rgba), mode);\n\t }\n\t rgba[0] = round(rgba[0]);\n\t rgba[1] = round(rgba[1]);\n\t rgba[2] = round(rgba[2]);\n\t if (mode === 'rgba' || (rgba.length > 3 && rgba[3]<1)) {\n\t rgba[3] = rgba.length > 3 ? rgba[3] : 1;\n\t mode = 'rgba';\n\t }\n\t return `${mode}(${rgba.slice(0,mode==='rgb'?3:4).join(',')})`;\n\t};\n\n\trgb2css_1 = rgb2css;\n\treturn rgb2css_1;\n}\n\nvar hsl2rgb_1;\nvar hasRequiredHsl2rgb;\n\nfunction requireHsl2rgb () {\n\tif (hasRequiredHsl2rgb) return hsl2rgb_1;\n\thasRequiredHsl2rgb = 1;\n\tconst {unpack} = requireUtils();\n\tconst {round} = Math;\n\n\tconst hsl2rgb = (...args) => {\n\t args = unpack(args, 'hsl');\n\t const [h,s,l] = args;\n\t let r,g,b;\n\t if (s === 0) {\n\t r = g = b = l*255;\n\t } else {\n\t const t3 = [0,0,0];\n\t const c = [0,0,0];\n\t const t2 = l < 0.5 ? l * (1+s) : l+s-l*s;\n\t const t1 = 2 * l - t2;\n\t const h_ = h / 360;\n\t t3[0] = h_ + 1/3;\n\t t3[1] = h_;\n\t t3[2] = h_ - 1/3;\n\t for (let i=0; i<3; i++) {\n\t if (t3[i] < 0) t3[i] += 1;\n\t if (t3[i] > 1) t3[i] -= 1;\n\t if (6 * t3[i] < 1)\n\t c[i] = t1 + (t2 - t1) * 6 * t3[i];\n\t else if (2 * t3[i] < 1)\n\t c[i] = t2;\n\t else if (3 * t3[i] < 2)\n\t c[i] = t1 + (t2 - t1) * ((2 / 3) - t3[i]) * 6;\n\t else\n\t c[i] = t1;\n\t }\n\t [r,g,b] = [round(c[0]*255),round(c[1]*255),round(c[2]*255)];\n\t }\n\t if (args.length > 3) {\n\t // keep alpha channel\n\t return [r,g,b,args[3]];\n\t }\n\t return [r,g,b,1];\n\t};\n\n\thsl2rgb_1 = hsl2rgb;\n\treturn hsl2rgb_1;\n}\n\nvar css2rgb_1;\nvar hasRequiredCss2rgb;\n\nfunction requireCss2rgb () {\n\tif (hasRequiredCss2rgb) return css2rgb_1;\n\thasRequiredCss2rgb = 1;\n\tconst hsl2rgb = requireHsl2rgb();\n\tconst input = requireInput();\n\n\tconst RE_RGB = /^rgb\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*\\)$/;\n\tconst RE_RGBA = /^rgba\\(\\s*(-?\\d+),\\s*(-?\\d+)\\s*,\\s*(-?\\d+)\\s*,\\s*([01]|[01]?\\.\\d+)\\)$/;\n\tconst RE_RGB_PCT = /^rgb\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)$/;\n\tconst RE_RGBA_PCT = /^rgba\\(\\s*(-?\\d+(?:\\.\\d+)?)%,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)$/;\n\tconst RE_HSL = /^hsl\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*\\)$/;\n\tconst RE_HSLA = /^hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)$/;\n\n\tconst {round} = Math;\n\n\tconst css2rgb = (css) => {\n\t css = css.toLowerCase().trim();\n\t let m;\n\n\t if (input.format.named) {\n\t try {\n\t return input.format.named(css);\n\t } catch (e) {\n\t // eslint-disable-next-line\n\t }\n\t }\n\n\t // rgb(250,20,0)\n\t if ((m = css.match(RE_RGB))) {\n\t const rgb = m.slice(1,4);\n\t for (let i=0; i<3; i++) {\n\t rgb[i] = +rgb[i];\n\t }\n\t rgb[3] = 1; // default alpha\n\t return rgb;\n\t }\n\n\t // rgba(250,20,0,0.4)\n\t if ((m = css.match(RE_RGBA))) {\n\t const rgb = m.slice(1,5);\n\t for (let i=0; i<4; i++) {\n\t rgb[i] = +rgb[i];\n\t }\n\t return rgb;\n\t }\n\n\t // rgb(100%,0%,0%)\n\t if ((m = css.match(RE_RGB_PCT))) {\n\t const rgb = m.slice(1,4);\n\t for (let i=0; i<3; i++) {\n\t rgb[i] = round(rgb[i] * 2.55);\n\t }\n\t rgb[3] = 1; // default alpha\n\t return rgb;\n\t }\n\n\t // rgba(100%,0%,0%,0.4)\n\t if ((m = css.match(RE_RGBA_PCT))) {\n\t const rgb = m.slice(1,5);\n\t for (let i=0; i<3; i++) {\n\t rgb[i] = round(rgb[i] * 2.55);\n\t }\n\t rgb[3] = +rgb[3];\n\t return rgb;\n\t }\n\n\t // hsl(0,100%,50%)\n\t if ((m = css.match(RE_HSL))) {\n\t const hsl = m.slice(1,4);\n\t hsl[1] *= 0.01;\n\t hsl[2] *= 0.01;\n\t const rgb = hsl2rgb(hsl);\n\t rgb[3] = 1;\n\t return rgb;\n\t }\n\n\t // hsla(0,100%,50%,0.5)\n\t if ((m = css.match(RE_HSLA))) {\n\t const hsl = m.slice(1,4);\n\t hsl[1] *= 0.01;\n\t hsl[2] *= 0.01;\n\t const rgb = hsl2rgb(hsl);\n\t rgb[3] = +m[4]; // default alpha = 1\n\t return rgb;\n\t }\n\t};\n\n\tcss2rgb.test = (s) => {\n\t return RE_RGB.test(s) ||\n\t RE_RGBA.test(s) ||\n\t RE_RGB_PCT.test(s) ||\n\t RE_RGBA_PCT.test(s) ||\n\t RE_HSL.test(s) ||\n\t RE_HSLA.test(s);\n\t};\n\n\tcss2rgb_1 = css2rgb;\n\treturn css2rgb_1;\n}\n\nvar hasRequiredCss;\n\nfunction requireCss () {\n\tif (hasRequiredCss) return css;\n\thasRequiredCss = 1;\n\tconst chroma = requireChroma();\n\tconst Color = requireColor();\n\tconst input = requireInput();\n\tconst {type} = requireUtils();\n\n\tconst rgb2css = requireRgb2css();\n\tconst css2rgb = requireCss2rgb();\n\n\tColor.prototype.css = function(mode) {\n\t return rgb2css(this._rgb, mode);\n\t};\n\n\tchroma.css = (...args) => new Color(...args, 'css');\n\n\tinput.format.css = css2rgb;\n\n\tinput.autodetect.push({\n\t p: 5,\n\t test: (h, ...rest) => {\n\t if (!rest.length && type(h) === 'string' && css2rgb.test(h)) {\n\t return 'css';\n\t }\n\t }\n\t});\n\treturn css;\n}\n\nrequireCss();\n\nvar hex = {};\n\nvar rgb2hex_1;\nvar hasRequiredRgb2hex;\n\nfunction requireRgb2hex () {\n\tif (hasRequiredRgb2hex) return rgb2hex_1;\n\thasRequiredRgb2hex = 1;\n\tconst {unpack, last} = requireUtils();\n\tconst {round} = Math;\n\n\tconst rgb2hex = (...args) => {\n\t let [r,g,b,a] = unpack(args, 'rgba');\n\t let mode = last(args) || 'auto';\n\t if (a === undefined) a = 1;\n\t if (mode === 'auto') {\n\t mode = a < 1 ? 'rgba' : 'rgb';\n\t }\n\t r = round(r);\n\t g = round(g);\n\t b = round(b);\n\t const u = r << 16 | g << 8 | b;\n\t let str = \"000000\" + u.toString(16); //#.toUpperCase();\n\t str = str.substr(str.length - 6);\n\t let hxa = '0' + round(a * 255).toString(16);\n\t hxa = hxa.substr(hxa.length - 2);\n\t switch (mode.toLowerCase()) {\n\t case 'rgba': return `#${str}${hxa}`;\n\t case 'argb': return `#${hxa}${str}`;\n\t default: return `#${str}`;\n\t }\n\t};\n\n\trgb2hex_1 = rgb2hex;\n\treturn rgb2hex_1;\n}\n\nvar hex2rgb_1;\nvar hasRequiredHex2rgb;\n\nfunction requireHex2rgb () {\n\tif (hasRequiredHex2rgb) return hex2rgb_1;\n\thasRequiredHex2rgb = 1;\n\tconst RE_HEX = /^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/;\n\tconst RE_HEXA = /^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/;\n\n\tconst hex2rgb = (hex) => {\n\t if (hex.match(RE_HEX)) {\n\t // remove optional leading #\n\t if (hex.length === 4 || hex.length === 7) {\n\t hex = hex.substr(1);\n\t }\n\t // expand short-notation to full six-digit\n\t if (hex.length === 3) {\n\t hex = hex.split('');\n\t hex = hex[0]+hex[0]+hex[1]+hex[1]+hex[2]+hex[2];\n\t }\n\t const u = parseInt(hex, 16);\n\t const r = u >> 16;\n\t const g = u >> 8 & 0xFF;\n\t const b = u & 0xFF;\n\t return [r,g,b,1];\n\t }\n\n\t // match rgba hex format, eg #FF000077\n\t if (hex.match(RE_HEXA)) {\n\t if (hex.length === 5 || hex.length === 9) {\n\t // remove optional leading #\n\t hex = hex.substr(1);\n\t }\n\t // expand short-notation to full eight-digit\n\t if (hex.length === 4) {\n\t hex = hex.split('');\n\t hex = hex[0]+hex[0]+hex[1]+hex[1]+hex[2]+hex[2]+hex[3]+hex[3];\n\t }\n\t const u = parseInt(hex, 16);\n\t const r = u >> 24 & 0xFF;\n\t const g = u >> 16 & 0xFF;\n\t const b = u >> 8 & 0xFF;\n\t const a = Math.round((u & 0xFF) / 0xFF * 100) / 100;\n\t return [r,g,b,a];\n\t }\n\n\t // we used to check for css colors here\n\t // if _input.css? and rgb = _input.css hex\n\t // return rgb\n\n\t throw new Error(`unknown hex color: ${hex}`);\n\t};\n\n\thex2rgb_1 = hex2rgb;\n\treturn hex2rgb_1;\n}\n\nvar hasRequiredHex;\n\nfunction requireHex () {\n\tif (hasRequiredHex) return hex;\n\thasRequiredHex = 1;\n\tconst chroma = requireChroma();\n\tconst Color = requireColor();\n\tconst {type} = requireUtils();\n\tconst input = requireInput();\n\n\tconst rgb2hex = requireRgb2hex();\n\n\tColor.prototype.hex = function(mode) {\n\t return rgb2hex(this._rgb, mode);\n\t};\n\n\tchroma.hex = (...args) => new Color(...args, 'hex');\n\n\tinput.format.hex = requireHex2rgb();\n\tinput.autodetect.push({\n\t p: 4,\n\t test: (h, ...rest) => {\n\t if (!rest.length && type(h) === 'string' && [3,4,5,6,7,8,9].indexOf(h.length) >= 0) {\n\t return 'hex';\n\t }\n\t }\n\t});\n\treturn hex;\n}\n\nrequireHex();\n\nvar hsl = {};\n\nvar hasRequiredHsl$1;\n\nfunction requireHsl$1 () {\n\tif (hasRequiredHsl$1) return hsl;\n\thasRequiredHsl$1 = 1;\n\tconst {unpack, type} = requireUtils();\n\tconst chroma = requireChroma();\n\tconst Color = requireColor();\n\tconst input = requireInput();\n\n\tconst rgb2hsl = requireRgb2hsl();\n\n\tColor.prototype.hsl = function() {\n\t return rgb2hsl(this._rgb);\n\t};\n\n\tchroma.hsl = (...args) => new Color(...args, 'hsl');\n\n\tinput.format.hsl = requireHsl2rgb();\n\n\tinput.autodetect.push({\n\t p: 2,\n\t test: (...args) => {\n\t args = unpack(args, 'hsl');\n\t if (type(args) === 'array' && args.length === 3) {\n\t return 'hsl';\n\t }\n\t }\n\t});\n\treturn hsl;\n}\n\nrequireHsl$1();\n\nvar hsv = {};\n\nvar rgb2hsv;\nvar hasRequiredRgb2hsv;\n\nfunction requireRgb2hsv () {\n\tif (hasRequiredRgb2hsv) return rgb2hsv;\n\thasRequiredRgb2hsv = 1;\n\tconst {unpack} = requireUtils();\n\tconst {min,max} = Math;\n\n\t/*\n\t * supported arguments:\n\t * - rgb2hsv(r,g,b)\n\t * - rgb2hsv([r,g,b])\n\t * - rgb2hsv({r,g,b})\n\t */\n\tconst rgb2hsl = (...args) => {\n\t args = unpack(args, 'rgb');\n\t let [r,g,b] = args;\n\t const min_ = min(r, g, b);\n\t const max_ = max(r, g, b);\n\t const delta = max_ - min_;\n\t let h,s,v;\n\t v = max_ / 255.0;\n\t if (max_ === 0) {\n\t h = Number.NaN;\n\t s = 0;\n\t } else {\n\t s = delta / max_;\n\t if (r === max_) h = (g - b) / delta;\n\t if (g === max_) h = 2+(b - r) / delta;\n\t if (b === max_) h = 4+(r - g) / delta;\n\t h *= 60;\n\t if (h < 0) h += 360;\n\t }\n\t return [h, s, v]\n\t};\n\n\trgb2hsv = rgb2hsl;\n\treturn rgb2hsv;\n}\n\nvar hsv2rgb_1;\nvar hasRequiredHsv2rgb;\n\nfunction requireHsv2rgb () {\n\tif (hasRequiredHsv2rgb) return hsv2rgb_1;\n\thasRequiredHsv2rgb = 1;\n\tconst {unpack} = requireUtils();\n\tconst {floor} = Math;\n\n\tconst hsv2rgb = (...args) => {\n\t args = unpack(args, 'hsv');\n\t let [h,s,v] = args;\n\t let r,g,b;\n\t v *= 255;\n\t if (s === 0) {\n\t r = g = b = v;\n\t } else {\n\t if (h === 360) h = 0;\n\t if (h > 360) h -= 360;\n\t if (h < 0) h += 360;\n\t h /= 60;\n\n\t const i = floor(h);\n\t const f = h - i;\n\t const p = v * (1 - s);\n\t const q = v * (1 - s * f);\n\t const t = v * (1 - s * (1 - f));\n\n\t switch (i) {\n\t case 0: [r,g,b] = [v, t, p]; break\n\t case 1: [r,g,b] = [q, v, p]; break\n\t case 2: [r,g,b] = [p, v, t]; break\n\t case 3: [r,g,b] = [p, q, v]; break\n\t case 4: [r,g,b] = [t, p, v]; break\n\t case 5: [r,g,b] = [v, p, q]; break\n\t }\n\t }\n\t return [r,g,b,args.length > 3?args[3]:1];\n\t};\n\n\thsv2rgb_1 = hsv2rgb;\n\treturn hsv2rgb_1;\n}\n\nvar hasRequiredHsv$1;\n\nfunction requireHsv$1 () {\n\tif (hasRequiredHsv$1) return hsv;\n\thasRequiredHsv$1 = 1;\n\tconst {unpack, type} = requireUtils();\n\tconst chroma = requireChroma();\n\tconst Color = requireColor();\n\tconst input = requireInput();\n\n\tconst rgb2hsv = requireRgb2hsv();\n\n\tColor.prototype.hsv = function() {\n\t return rgb2hsv(this._rgb);\n\t};\n\n\tchroma.hsv = (...args) => new Color(...args, 'hsv');\n\n\tinput.format.hsv = requireHsv2rgb();\n\n\tinput.autodetect.push({\n\t p: 2,\n\t test: (...args) => {\n\t args = unpack(args, 'hsv');\n\t if (type(args) === 'array' && args.length === 3) {\n\t return 'hsv';\n\t }\n\t }\n\t});\n\treturn hsv;\n}\n\nrequireHsv$1();\n\nvar named = {};\n\n/**\n\tX11 color names\n\n\thttp://www.w3.org/TR/css3-color/#svg-color\n*/\n\nvar w3cx11_1;\nvar hasRequiredW3cx11;\n\nfunction requireW3cx11 () {\n\tif (hasRequiredW3cx11) return w3cx11_1;\n\thasRequiredW3cx11 = 1;\n\tconst w3cx11 = {\n\t aliceblue: '#f0f8ff',\n\t antiquewhite: '#faebd7',\n\t aqua: '#00ffff',\n\t aquamarine: '#7fffd4',\n\t azure: '#f0ffff',\n\t beige: '#f5f5dc',\n\t bisque: '#ffe4c4',\n\t black: '#000000',\n\t blanchedalmond: '#ffebcd',\n\t blue: '#0000ff',\n\t blueviolet: '#8a2be2',\n\t brown: '#a52a2a',\n\t burlywood: '#deb887',\n\t cadetblue: '#5f9ea0',\n\t chartreuse: '#7fff00',\n\t chocolate: '#d2691e',\n\t coral: '#ff7f50',\n\t cornflower: '#6495ed',\n\t cornflowerblue: '#6495ed',\n\t cornsilk: '#fff8dc',\n\t crimson: '#dc143c',\n\t cyan: '#00ffff',\n\t darkblue: '#00008b',\n\t darkcyan: '#008b8b',\n\t darkgoldenrod: '#b8860b',\n\t darkgray: '#a9a9a9',\n\t darkgreen: '#006400',\n\t darkgrey: '#a9a9a9',\n\t darkkhaki: '#bdb76b',\n\t darkmagenta: '#8b008b',\n\t darkolivegreen: '#556b2f',\n\t darkorange: '#ff8c00',\n\t darkorchid: '#9932cc',\n\t darkred: '#8b0000',\n\t darksalmon: '#e9967a',\n\t darkseagreen: '#8fbc8f',\n\t darkslateblue: '#483d8b',\n\t darkslategray: '#2f4f4f',\n\t darkslategrey: '#2f4f4f',\n\t darkturquoise: '#00ced1',\n\t darkviolet: '#9400d3',\n\t deeppink: '#ff1493',\n\t deepskyblue: '#00bfff',\n\t dimgray: '#696969',\n\t dimgrey: '#696969',\n\t dodgerblue: '#1e90ff',\n\t firebrick: '#b22222',\n\t floralwhite: '#fffaf0',\n\t forestgreen: '#228b22',\n\t fuchsia: '#ff00ff',\n\t gainsboro: '#dcdcdc',\n\t ghostwhite: '#f8f8ff',\n\t gold: '#ffd700',\n\t goldenrod: '#daa520',\n\t gray: '#808080',\n\t green: '#008000',\n\t greenyellow: '#adff2f',\n\t grey: '#808080',\n\t honeydew: '#f0fff0',\n\t hotpink: '#ff69b4',\n\t indianred: '#cd5c5c',\n\t indigo: '#4b0082',\n\t ivory: '#fffff0',\n\t khaki: '#f0e68c',\n\t laserlemon: '#ffff54',\n\t lavender: '#e6e6fa',\n\t lavenderblush: '#fff0f5',\n\t lawngreen: '#7cfc00',\n\t lemonchiffon: '#fffacd',\n\t lightblue: '#add8e6',\n\t lightcoral: '#f08080',\n\t lightcyan: '#e0ffff',\n\t lightgoldenrod: '#fafad2',\n\t lightgoldenrodyellow: '#fafad2',\n\t lightgray: '#d3d3d3',\n\t lightgreen: '#90ee90',\n\t lightgrey: '#d3d3d3',\n\t lightpink: '#ffb6c1',\n\t lightsalmon: '#ffa07a',\n\t lightseagreen: '#20b2aa',\n\t lightskyblue: '#87cefa',\n\t lightslategray: '#778899',\n\t lightslategrey: '#778899',\n\t lightsteelblue: '#b0c4de',\n\t lightyellow: '#ffffe0',\n\t lime: '#00ff00',\n\t limegreen: '#32cd32',\n\t linen: '#faf0e6',\n\t magenta: '#ff00ff',\n\t maroon: '#800000',\n\t maroon2: '#7f0000',\n\t maroon3: '#b03060',\n\t mediumaquamarine: '#66cdaa',\n\t mediumblue: '#0000cd',\n\t mediumorchid: '#ba55d3',\n\t mediumpurple: '#9370db',\n\t mediumseagreen: '#3cb371',\n\t mediumslateblue: '#7b68ee',\n\t mediumspringgreen: '#00fa9a',\n\t mediumturquoise: '#48d1cc',\n\t mediumvioletred: '#c71585',\n\t midnightblue: '#191970',\n\t mintcream: '#f5fffa',\n\t mistyrose: '#ffe4e1',\n\t moccasin: '#ffe4b5',\n\t navajowhite: '#ffdead',\n\t navy: '#000080',\n\t oldlace: '#fdf5e6',\n\t olive: '#808000',\n\t olivedrab: '#6b8e23',\n\t orange: '#ffa500',\n\t orangered: '#ff4500',\n\t orchid: '#da70d6',\n\t palegoldenrod: '#eee8aa',\n\t palegreen: '#98fb98',\n\t paleturquoise: '#afeeee',\n\t palevioletred: '#db7093',\n\t papayawhip: '#ffefd5',\n\t peachpuff: '#ffdab9',\n\t peru: '#cd853f',\n\t pink: '#ffc0cb',\n\t plum: '#dda0dd',\n\t powderblue: '#b0e0e6',\n\t purple: '#800080',\n\t purple2: '#7f007f',\n\t purple3: '#a020f0',\n\t rebeccapurple: '#663399',\n\t red: '#ff0000',\n\t rosybrown: '#bc8f8f',\n\t royalblue: '#4169e1',\n\t saddlebrown: '#8b4513',\n\t salmon: '#fa8072',\n\t sandybrown: '#f4a460',\n\t seagreen: '#2e8b57',\n\t seashell: '#fff5ee',\n\t sienna: '#a0522d',\n\t silver: '#c0c0c0',\n\t skyblue: '#87ceeb',\n\t slateblue: '#6a5acd',\n\t slategray: '#708090',\n\t slategrey: '#708090',\n\t snow: '#fffafa',\n\t springgreen: '#00ff7f',\n\t steelblue: '#4682b4',\n\t tan: '#d2b48c',\n\t teal: '#008080',\n\t thistle: '#d8bfd8',\n\t tomato: '#ff6347',\n\t turquoise: '#40e0d0',\n\t violet: '#ee82ee',\n\t wheat: '#f5deb3',\n\t white: '#ffffff',\n\t whitesmoke: '#f5f5f5',\n\t yellow: '#ffff00',\n\t yellowgreen: '#9acd32'\n\t};\n\n\tw3cx11_1 = w3cx11;\n\treturn w3cx11_1;\n}\n\nvar hasRequiredNamed;\n\nfunction requireNamed () {\n\tif (hasRequiredNamed) return named;\n\thasRequiredNamed = 1;\n\tconst Color = requireColor();\n\tconst input = requireInput();\n\tconst {type} = requireUtils();\n\n\tconst w3cx11 = requireW3cx11();\n\tconst hex2rgb = requireHex2rgb();\n\tconst rgb2hex = requireRgb2hex();\n\n\tColor.prototype.name = function() {\n\t const hex = rgb2hex(this._rgb, 'rgb');\n\t for (let n of Object.keys(w3cx11)) {\n\t if (w3cx11[n] === hex) return n.toLowerCase();\n\t }\n\t return hex;\n\t};\n\n\tinput.format.named = (name) => {\n\t name = name.toLowerCase();\n\t if (w3cx11[name]) return hex2rgb(w3cx11[name]);\n\t throw new Error('unknown color name: '+name);\n\t};\n\n\tinput.autodetect.push({\n\t p: 5,\n\t test: (h, ...rest) => {\n\t if (!rest.length && type(h) === 'string' && w3cx11[h.toLowerCase()]) {\n\t return 'named';\n\t }\n\t }\n\t});\n\treturn named;\n}\n\nrequireNamed();\n\nvar rgb = {};\n\nvar hasRequiredRgb$1;\n\nfunction requireRgb$1 () {\n\tif (hasRequiredRgb$1) return rgb;\n\thasRequiredRgb$1 = 1;\n\tconst chroma = requireChroma();\n\tconst Color = requireColor();\n\tconst input = requireInput();\n\tconst {unpack, type} = requireUtils();\n\tconst {round} = Math;\n\n\tColor.prototype.rgb = function(rnd=true) {\n\t if (rnd === false) return this._rgb.slice(0,3);\n\t return this._rgb.slice(0,3).map(round);\n\t};\n\n\tColor.prototype.rgba = function(rnd=true) {\n\t return this._rgb.slice(0,4).map((v,i) => {\n\t return i<3 ? (rnd === false ? v : round(v)) : v;\n\t });\n\t};\n\n\tchroma.rgb = (...args) => new Color(...args, 'rgb');\n\n\tinput.format.rgb = (...args) => {\n\t const rgba = unpack(args, 'rgba');\n\t if (rgba[3] === undefined) rgba[3] = 1;\n\t return rgba;\n\t};\n\n\tinput.autodetect.push({\n\t p: 3,\n\t test: (...args) => {\n\t args = unpack(args, 'rgba');\n\t if (type(args) === 'array' && (args.length === 3 ||\n\t args.length === 4 && type(args[3]) == 'number' && args[3] >= 0 && args[3] <= 1)) {\n\t return 'rgb';\n\t }\n\t }\n\t});\n\treturn rgb;\n}\n\nrequireRgb$1();\n\nvar alpha = {};\n\nvar hasRequiredAlpha;\n\nfunction requireAlpha () {\n\tif (hasRequiredAlpha) return alpha;\n\thasRequiredAlpha = 1;\n\tconst Color = requireColor();\n\tconst {type} = requireUtils();\n\n\tColor.prototype.alpha = function(a, mutate=false) {\n\t if (a !== undefined && type(a) === 'number') {\n\t if (mutate) {\n\t this._rgb[3] = a;\n\t return this;\n\t }\n\t return new Color([this._rgb[0], this._rgb[1], this._rgb[2], a], 'rgb');\n\t }\n\t return this._rgb[3];\n\t};\n\treturn alpha;\n}\n\nrequireAlpha();\n\nvar _hsx;\nvar hasRequired_hsx;\n\nfunction require_hsx () {\n\tif (hasRequired_hsx) return _hsx;\n\thasRequired_hsx = 1;\n\tconst Color = requireColor();\n\n\t_hsx = (col1, col2, f, m) => {\n\t let xyz0, xyz1;\n\t if (m === 'hsl') {\n\t xyz0 = col1.hsl();\n\t xyz1 = col2.hsl();\n\t } else if (m === 'hsv') {\n\t xyz0 = col1.hsv();\n\t xyz1 = col2.hsv();\n\t } else if (m === 'hcg') {\n\t xyz0 = col1.hcg();\n\t xyz1 = col2.hcg();\n\t } else if (m === 'hsi') {\n\t xyz0 = col1.hsi();\n\t xyz1 = col2.hsi();\n\t } else if (m === 'lch' || m === 'hcl') {\n\t m = 'hcl';\n\t xyz0 = col1.hcl();\n\t xyz1 = col2.hcl();\n\t } else if (m === 'oklch') {\n\t xyz0 = col1.oklch().reverse();\n\t xyz1 = col2.oklch().reverse();\n\t }\n\n\t let hue0, hue1, sat0, sat1, lbv0, lbv1;\n\t if (m.substr(0, 1) === 'h' || m === 'oklch') {\n\t [hue0, sat0, lbv0] = xyz0;\n\t [hue1, sat1, lbv1] = xyz1;\n\t }\n\n\t let sat, hue, lbv, dh;\n\n\t if (!isNaN(hue0) && !isNaN(hue1)) {\n\t // both colors have hue\n\t if (hue1 > hue0 && hue1 - hue0 > 180) {\n\t dh = hue1 - (hue0 + 360);\n\t } else if (hue1 < hue0 && hue0 - hue1 > 180) {\n\t dh = hue1 + 360 - hue0;\n\t } else {\n\t dh = hue1 - hue0;\n\t }\n\t hue = hue0 + f * dh;\n\t } else if (!isNaN(hue0)) {\n\t hue = hue0;\n\t if ((lbv1 == 1 || lbv1 == 0) && m != 'hsv') sat = sat0;\n\t } else if (!isNaN(hue1)) {\n\t hue = hue1;\n\t if ((lbv0 == 1 || lbv0 == 0) && m != 'hsv') sat = sat1;\n\t } else {\n\t hue = Number.NaN;\n\t }\n\n\t if (sat === undefined) sat = sat0 + f * (sat1 - sat0);\n\t lbv = lbv0 + f * (lbv1 - lbv0);\n\t return m === 'oklch' ? new Color([lbv, sat, hue], m) : new Color([hue, sat, lbv], m);\n\t};\n\treturn _hsx;\n}\n\nvar interpolator;\nvar hasRequiredInterpolator;\n\nfunction requireInterpolator () {\n\tif (hasRequiredInterpolator) return interpolator;\n\thasRequiredInterpolator = 1;\n\tinterpolator = {};\n\treturn interpolator;\n}\n\nvar hsl_1;\nvar hasRequiredHsl;\n\nfunction requireHsl () {\n\tif (hasRequiredHsl) return hsl_1;\n\thasRequiredHsl = 1;\n\trequireHsl$1();\n\tconst interpolate_hsx = require_hsx();\n\n\tconst hsl = (col1, col2, f) => {\n\t\treturn interpolate_hsx(col1, col2, f, 'hsl');\n\t};\n\n\t// register interpolator\n\trequireInterpolator().hsl = hsl;\n\n\thsl_1 = hsl;\n\treturn hsl_1;\n}\n\nrequireHsl();\n\nvar hsv_1;\nvar hasRequiredHsv;\n\nfunction requireHsv () {\n\tif (hasRequiredHsv) return hsv_1;\n\thasRequiredHsv = 1;\n\trequireHsv$1();\n\tconst interpolate_hsx = require_hsx();\n\n\tconst hsv = (col1, col2, f) => {\n\t\treturn interpolate_hsx(col1, col2, f, 'hsv');\n\t};\n\n\t// register interpolator\n\trequireInterpolator().hsv = hsv;\n\n\thsv_1 = hsv;\n\treturn hsv_1;\n}\n\nrequireHsv();\n\nvar rgb_1;\nvar hasRequiredRgb;\n\nfunction requireRgb () {\n\tif (hasRequiredRgb) return rgb_1;\n\thasRequiredRgb = 1;\n\tconst Color = requireColor();\n\n\tconst rgb = (col1, col2, f) => {\n\t const xyz0 = col1._rgb;\n\t const xyz1 = col2._rgb;\n\t return new Color(\n\t xyz0[0] + f * (xyz1[0]-xyz0[0]),\n\t xyz0[1] + f * (xyz1[1]-xyz0[1]),\n\t xyz0[2] + f * (xyz1[2]-xyz0[2]),\n\t 'rgb'\n\t )\n\t};\n\n\t// register interpolator\n\trequireInterpolator().rgb = rgb;\n\n\trgb_1 = rgb;\n\treturn rgb_1;\n}\n\nrequireRgb();\n\nvar mix$1;\nvar hasRequiredMix;\n\nfunction requireMix () {\n\tif (hasRequiredMix) return mix$1;\n\thasRequiredMix = 1;\n\tconst Color = requireColor();\n\tconst {type} = requireUtils();\n\tconst interpolator = requireInterpolator();\n\n\tmix$1 = (col1, col2, f=0.5, ...rest) => {\n\t let mode = rest[0] || 'lrgb';\n\t if (!interpolator[mode] && !rest.length) {\n\t // fall back to the first supported mode\n\t mode = Object.keys(interpolator)[0];\n\t }\n\t if (!interpolator[mode]) {\n\t throw new Error(`interpolation mode ${mode} is not defined`);\n\t }\n\t if (type(col1) !== 'object') col1 = new Color(col1);\n\t if (type(col2) !== 'object') col2 = new Color(col2);\n\t return interpolator[mode](col1, col2, f)\n\t .alpha(col1.alpha() + f * (col2.alpha() - col1.alpha()));\n\t};\n\treturn mix$1;\n}\n\nvar mixExports = requireMix();\nvar mix = /*@__PURE__*/getDefaultExportFromCjs(mixExports);\n\nvar scale$1;\nvar hasRequiredScale;\n\nfunction requireScale () {\n\tif (hasRequiredScale) return scale$1;\n\thasRequiredScale = 1;\n\t// minimal multi-purpose interface\n\n\t// @requires utils color analyze\n\n\tconst chroma = requireChroma();\n\tconst {type} = requireUtils();\n\n\tconst {pow} = Math;\n\n\tscale$1 = function(colors) {\n\n\t // constructor\n\t let _mode = 'rgb';\n\t let _nacol = chroma('#ccc');\n\t let _spread = 0;\n\t // const _fixed = false;\n\t let _domain = [0, 1];\n\t let _pos = [];\n\t let _padding = [0,0];\n\t let _classes = false;\n\t let _colors = [];\n\t let _out = false;\n\t let _min = 0;\n\t let _max = 1;\n\t let _correctLightness = false;\n\t let _colorCache = {};\n\t let _useCache = true;\n\t let _gamma = 1;\n\n\t // private methods\n\n\t const setColors = function(colors) {\n\t colors = colors || ['#fff', '#000'];\n\t if (colors && type(colors) === 'string' && chroma.brewer &&\n\t chroma.brewer[colors.toLowerCase()]) {\n\t colors = chroma.brewer[colors.toLowerCase()];\n\t }\n\t if (type(colors) === 'array') {\n\t // handle single color\n\t if (colors.length === 1) {\n\t colors = [colors[0], colors[0]];\n\t }\n\t // make a copy of the colors\n\t colors = colors.slice(0);\n\t // convert to chroma classes\n\t for (let c=0; c<colors.length; c++) {\n\t colors[c] = chroma(colors[c]);\n\t }\n\t // auto-fill color position\n\t _pos.length = 0;\n\t for (let c=0; c<colors.length; c++) {\n\t _pos.push(c/(colors.length-1));\n\t }\n\t }\n\t resetCache();\n\t return _colors = colors;\n\t };\n\n\t const getClass = function(value) {\n\t if (_classes != null) {\n\t const n = _classes.length-1;\n\t let i = 0;\n\t while (i < n && value >= _classes[i]) {\n\t i++;\n\t }\n\t return i-1;\n\t }\n\t return 0;\n\t };\n\n\t let tMapLightness = t => t;\n\t let tMapDomain = t => t;\n\n\t // const classifyValue = function(value) {\n\t // let val = value;\n\t // if (_classes.length > 2) {\n\t // const n = _classes.length-1;\n\t // const i = getClass(value);\n\t // const minc = _classes[0] + ((_classes[1]-_classes[0]) * (0 + (_spread * 0.5))); // center of 1st class\n\t // const maxc = _classes[n-1] + ((_classes[n]-_classes[n-1]) * (1 - (_spread * 0.5))); // center of last class\n\t // val = _min + ((((_classes[i] + ((_classes[i+1] - _classes[i]) * 0.5)) - minc) / (maxc-minc)) * (_max - _min));\n\t // }\n\t // return val;\n\t // };\n\n\t const getColor = function(val, bypassMap) {\n\t let col, t;\n\t if (bypassMap == null) { bypassMap = false; }\n\t if (isNaN(val) || (val === null)) { return _nacol; }\n\t if (!bypassMap) {\n\t if (_classes && (_classes.length > 2)) {\n\t // find the class\n\t const c = getClass(val);\n\t t = c / (_classes.length-2);\n\t } else if (_max !== _min) {\n\t // just interpolate between min/max\n\t t = (val - _min) / (_max - _min);\n\t } else {\n\t t = 1;\n\t }\n\t } else {\n\t t = val;\n\t }\n\n\t // domain map\n\t t = tMapDomain(t);\n\n\t if (!bypassMap) {\n\t t = tMapLightness(t); // lightness correction\n\t }\n\n\t if (_gamma !== 1) { t = pow(t, _gamma); }\n\n\t t = _padding[0] + (t * (1 - _padding[0] - _padding[1]));\n\n\t t = Math.min(1, Math.max(0, t));\n\n\t const k = Math.floor(t * 10000);\n\n\t if (_useCache && _colorCache[k]) {\n\t col = _colorCache[k];\n\t } else {\n\t if (type(_colors) === 'array') {\n\t //for i in [0.._pos.length-1]\n\t for (let i=0; i<_pos.length; i++) {\n\t const p = _pos[i];\n\t if (t <= p) {\n\t col = _colors[i];\n\t break;\n\t }\n\t if ((t >= p) && (i === (_pos.length-1))) {\n\t col = _colors[i];\n\t break;\n\t }\n\t if (t > p && t < _pos[i+1]) {\n\t t = (t-p)/(_pos[i+1]-p);\n\t col = chroma.interpolate(_colors[i], _colors[i+1], t, _mode);\n\t break;\n\t }\n\t }\n\t } else if (type(_colors) === 'function') {\n\t col = _colors(t);\n\t }\n\t if (_useCache) { _colorCache[k] = col; }\n\t }\n\t return col;\n\t };\n\n\t var resetCache = () => _colorCache = {};\n\n\t setColors(colors);\n\n\t // public interface\n\n\t const f = function(v) {\n\t const c = chroma(getColor(v));\n\t if (_out && c[_out]) { return c[_out](); } else { return c; }\n\t };\n\n\t f.classes = function(classes) {\n\t if (classes != null) {\n\t if (type(classes) === 'array') {\n\t _classes = classes;\n\t _domain = [classes[0], classes[classes.length-1]];\n\t } else {\n\t const d = chroma.analyze(_domain);\n\t if (classes === 0) {\n\t _classes = [d.min, d.max];\n\t } else {\n\t _classes = chroma.limits(d, 'e', classes);\n\t }\n\t }\n\t return f;\n\t }\n\t return _classes;\n\t };\n\n\n\t f.domain = function(domain) {\n\t if (!arguments.length) {\n\t return _domain;\n\t }\n\t _min = domain[0];\n\t _max = domain[domain.length-1];\n\t _pos = [];\n\t const k = _colors.length;\n\t if ((domain.length === k) && (_min !== _max)) {\n\t // update positions\n\t for (let d of Array.from(domain)) {\n\t _pos.push((d-_min) / (_max-_min));\n\t }\n\t } else {\n\t for (let c=0; c<k; c++) {\n\t _pos.push(c/(k-1));\n\t }\n\t if (domain.length > 2) {\n\t // set domain map\n\t const tOut = domain.map((d,i) => i/(domain.length-1));\n\t const tBreaks = domain.map(d => (d - _min) / (_max - _min));\n\t if (!tBreaks.every((val, i) => tOut[i] === val)) {\n\t tMapDomain = (t) => {\n\t if (t <= 0 || t >= 1) return t;\n\t let i = 0;\n\t while (t >= tBreaks[i+1]) i++;\n\t const f = (t - tBreaks[i]) / (tBreaks[i+1] - tBreaks[i]);\n\t const out = tOut[i] + f * (tOut[i+1] - tOut[i]);\n\t return out;\n\t };\n\t }\n\n\t }\n\t }\n\t _domain = [_min, _max];\n\t return f;\n\t };\n\n\t f.mode = function(_m) {\n\t if (!arguments.length) {\n\t return _mode;\n\t }\n\t _mode = _m;\n\t resetCache();\n\t return f;\n\t };\n\n\t f.range = function(colors, _pos) {\n\t setColors(colors);\n\t return f;\n\t };\n\n\t f.out = function(_o) {\n\t _out = _o;\n\t return f;\n\t };\n\n\t f.spread = function(val) {\n\t if (!arguments.length) {\n\t return _spread;\n\t }\n\t _spread = val;\n\t return f;\n\t };\n\n\t f.correctLightness = function(v) {\n\t if (v == null) { v = true; }\n\t _correctLightness = v;\n\t resetCache();\n\t if (_correctLightness) {\n\t tMapLightness = function(t) {\n\t const L0 = getColor(0, true).lab()[0];\n\t const L1 = getColor(1, true).lab()[0];\n\t const pol = L0 > L1;\n\t let L_actual = getColor(t, true).lab()[0];\n\t const L_ideal = L0 + ((L1 - L0) * t);\n\t let L_diff = L_actual - L_ideal;\n\t let t0 = 0;\n\t let t1 = 1;\n\t let max_iter = 20;\n\t while ((Math.abs(L_diff) > 1e-2) && (max_iter-- > 0)) {\n\t (function() {\n\t if (pol) { L_diff *= -1; }\n\t if (L_diff < 0) {\n\t t0 = t;\n\t t += (t1 - t) * 0.5;\n\t } else {\n\t t1 = t;\n\t t += (t0 - t) * 0.5;\n\t }\n\t L_actual = getColor(t, true).lab()[0];\n\t return L_diff = L_actual - L_ideal;\n\t })();\n\t }\n\t return t;\n\t };\n\t } else {\n\t tMapLightness = t => t;\n\t }\n\t return f;\n\t };\n\n\t f.padding = function(p) {\n\t if (p != null) {\n\t if (type(p) === 'number') {\n\t p = [p,p];\n\t }\n\t _padding = p;\n\t return f;\n\t } else {\n\t return _padding;\n\t }\n\t };\n\n\t f.colors = function(numColors, out) {\n\t // If no arguments are given, return the original colors that were provided\n\t if (arguments.length < 2) { out = 'hex'; }\n\t let result = [];\n\n\t if (arguments.length === 0) {\n\t result = _colors.slice(0);\n\n\t } else if (numColors === 1) {\n\t result = [f(0.5)];\n\n\t } else if (numColors > 1) {\n\t const dm = _domain[0];\n\t const dd = _domain[1] - dm;\n\t result = __range__(0, numColors).map(i => f( dm + ((i/(numColors-1)) * dd) ));\n\n\t } else { // returns all colors based on the defined classes\n\t colors = [];\n\t let samples = [];\n\t if (_classes && (_classes.length > 2)) {\n\t for (let i = 1, end = _classes.length, asc = 1 <= end; asc ? i < end : i > end; asc ? i++ : i--) {\n\t samples.push((_classes[i-1]+_classes[i])*0.5);\n\t }\n\t } else {\n\t samples = _domain;\n\t }\n\t result = samples.map(v => f(v));\n\t }\n\n\t if (chroma[out]) {\n\t result = result.map(c => c[out]());\n\t }\n\t return result;\n\t };\n\n\t f.cache = function(c) {\n\t if (c != null) {\n\t _useCache = c;\n\t return f;\n\t } else {\n\t return _useCache;\n\t }\n\t };\n\n\t f.gamma = function(g) {\n\t if (g != null) {\n\t _gamma = g;\n\t return f;\n\t } else {\n\t return _gamma;\n\t }\n\t };\n\n\t f.nodata = function(d) {\n\t if (d != null) {\n\t _nacol = chroma(d);\n\t return f;\n\t } else {\n\t return _nacol;\n\t }\n\t };\n\n\t return f;\n\t};\n\n\tfunction __range__(left, right, inclusive) {\n\t let range = [];\n\t let ascending = left < right;\n\t let end = right ;\n\t for (let i = left; ascending ? i < end : i > end; ascending ? i++ : i--) {\n\t range.push(i);\n\t }\n\t return range;\n\t}\n\treturn scale$1;\n}\n\nvar scaleExports = requireScale();\nvar scale = /*@__PURE__*/getDefaultExportFromCjs(scaleExports);\n\n/*\n * Copyright (c) 2022 WeatherLayers.com\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n */\n// custom lightweight Chroma.js bundle\n// see https://github.com/gka/chroma.js/blob/main/index.js\nchroma.mix = chroma.interpolate = mix;\nchroma.scale = scale;\n\nconst LINE_SEPARATOR_REGEX = /[ ,\\t:]+/g;\nconst COLOR_SEPARATOR_REGEX = /[\\-\\/]/g;\nfunction isLineComment(line) {\n return line.startsWith('#');\n}\nfunction isGmt4Text(lines) {\n return lines.some(line => {\n if (!isLineComment(line)) {\n if (line.split(LINE_SEPARATOR_REGEX).length >= 8) {\n return true;\n }\n }\n return false;\n });\n}\nfunction isGmt5Text(lines) {\n return lines.some(line => {\n if (!isLineComment(line)) {\n if (line.match(/\\d+\\-\\d+\\-\\d+/) || line.match(/\\d+\\/\\d+\\/\\d+/)) {\n return true;\n }\n }\n return false;\n });\n}\nfunction getMode(lines) {\n const modeLine = lines.find(line => isLineComment(line) && line.includes('COLOR_MODEL = '));\n if (modeLine) {\n const match = modeLine.match(/COLOR_MODEL = ([a-zA-Z]+)/);\n if (match) {\n return match[1].toLowerCase();\n }\n }\n return undefined;\n}\nfunction splitColor(color) {\n const colorArray = color.split(COLOR_SEPARATOR_REGEX);\n return colorArray.length === 1 ? colorArray[0] : colorArray;\n}\nfunction parsePaletteTextInternal(paletteText) {\n const lines = paletteText.trim().split('\\n');\n const isGmt4 = isGmt4Text(lines);\n const isGmt5 = isGmt5Text(lines);\n const mode = getMode(lines);\n const paletteLines = lines.filter(x => !!x && !x.startsWith('#'));\n const paletteArray = [];\n for (let paletteLine of paletteLines) {\n const fields = paletteLine.split(LINE_SEPARATOR_REGEX);\n if (isGmt4) {\n if (fields.length === 8 || fields.length === 9) {\n paletteArray.push([fields[0], [fields[1], fields[2], fields[3]]]);\n paletteArray.push([fields[4], [fields[5], fields[6], fields[7]]]);\n }\n else if (fields.length === 4 || fields.length === 5) {\n paletteArray.push([fields[0], [fields[1], fields[2], fields[3]]]);\n }\n else ;\n }\n else if (isGmt5) {\n if (fields.length === 4 || fields.length === 5) {\n paletteArray.push([fields[0], splitColor(fields[1])]);\n paletteArray.push([fields[2], splitColor(fields[3])]);\n }\n else if (fields.length === 2 || fields.length === 3) {\n paletteArray.push([fields[0], splitColor(fields[1])]);\n }\n else ;\n }\n else {\n if (fields.length === 5) {\n paletteArray.push([fields[0], [fields[1], fields[2], fields[3], fields[4]]]);\n }\n else if (fields.length === 4) {\n paletteArray.push([fields[0], [fields[1], fields[2], fields[3]]]);\n }\n else if (fields.length === 2) {\n paletteArray.push([fields[0], fields[1]]);\n }\n else ;\n }\n }\n return { paletteArray, mode };\n}\n\n/*\n * Copyright (c) 2022 WeatherLayers.com\n *\n * This Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n */\nconst DEFAULT_MODE = 'rgb';\nfunction parseValue(value, bounds) {\n if (typeof value === 'string') {\n if (value[value.length - 1] === '%') {\n const percentage = parseFloat(value) / 100;\n if (percentage < 0 || percentage > 1) {\n throw new Error(`Invalid value for a percentage ${value}`);\n }\n return bounds[0] + (bounds[1] - bounds[0]) * percentage;\n }\n else if (value === 'N') {\n return null; // GMT nodata\n }\n else if (value === 'B') {\n return undefined; // GMT background (value < min), not supported yet, ignore\n }\n else if (value === 'F') {\n return undefined; // GMT foreground (value > max), not supported yet, ignore\n }\n else if (value === 'nv') {\n return null; // GDAL nodata\n }\n else if (value === 'default') {\n return undefined; // GRASS default (value < min || value > max), not supported yet, ignore\n }\n else if (value === 'null') {\n return null; // PostGIS nodata\n }\n else if (value === 'nodata') {\n return null; // PostGIS nodata\n }\n else {\n return parseFloat(value);\n }\n }\n else if (typeof value === 'number') {\n return value;\n }\n else {\n throw new Error('Invalid state');\n }\n}\nfunction parseColor(color, mode) {\n if (Array.isArray(color)) {\n if (color.length === 4) {\n // color with alpha\n return {\n [mode[0]]: parseFloat(color[0].toString()),\n [mode[1]]: parseFloat(color[1].toString()),\n [mode[2]]: parseFloat(color[2].toString()),\n a: parseFloat(color[3].toString()) / 255,\n };\n }\n else if (color.length === 3) {\n // color\n return {\n [mode[0]]: parseFloat(color[0].toString()),\n [mode[1]]: parseFloat(color[1].toString()),\n [mode[2]]: parseFloat(color[2].toString()),\n };\n }\n else {\n throw new Error(`Invalid color ${color}`);\n }\n }\n else if (typeof color === 'string' || typeof color === 'number') {\n if (color.toString().match(/^\\d+$/) || typeof color === 'number') {\n // grayscale color\n return {\n [mode[0]]: parseFloat(color.toString()),\n [mode[1]]: parseFloat(color.toString()),\n [mode[2]]: parseFloat(color.toString()),\n };\n }\n else {\n // color name\n return color;\n }\n }\n else {\n throw new Error(`Invalid color ${color}`);\n }\n}\nfunction parsePaletteArray(paletteArray, { bounds = [0, 1], mode = DEFAULT_MODE } = {}) {\n const colors = [];\n const domain = [];\n let nodata;\n for (let [value, color] of paletteArray) {\n const parsedValue = parseValue(value, bounds);\n const parsedColor = parseColor(color, mode);\n if (parsedValue != null) {\n colors.push(parsedColor);\n domain.push(parsedValue);\n }\n else if (parsedValue === null) {\n nodata = parsedColor;\n }\n else ;\n }\n let palette = chroma.scale(colors).domain(domain).mode(mode);\n if (typeof nodata !== 'undefined') {\n palette = palette.nodata(nodata);\n }\n return palette;\n}\nfunction parsePaletteText(paletteText, { bounds = [0, 1] } = {}) {\n const { paletteArray, mode } = parsePaletteTextInternal(paletteText);\n return parsePaletteArray(paletteArray, { bounds, mode });\n}\nfunction parsePalette(palette, { bounds = [0, 1] } = {}) {\n if (typeof palette === 'string') {\n return parsePaletteText(palette, { bounds });\n }\n else if (Array.isArray(palette)) {\n return parsePaletteArray(palette, { bounds });\n }\n else {\n throw new Error('Invalid format');\n }\n}\n\nfunction colorRampCanvas(scale, { width = 256, height = 1 } = {}) {\n const colors = scale.colors(width, 'css');\n const canvas = document.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n canvas.style.imageRendering = '-moz-crisp-edges';\n canvas.style.imageRendering = 'pixelated';\n const ctx = canvas.getContext('2d');\n for (let i = 0; i < width; i++) {\n ctx.fillStyle = colors[i];\n ctx.fillRect(i, 0, 1, height);\n }\n return canvas;\n}\n\nexport { colorRampCanvas, parsePalette };\n//# sourceMappingURL=cpt2js.js.map\n","const DEFAULT_RADIUS = 6371e3;\nfunction equals(position1, position2) {\n if (Math.abs(position1[0] - position2[0]) > Number.EPSILON)\n return false;\n if (Math.abs(position1[1] - position2[1]) > Number.EPSILON)\n return false;\n return true;\n}\nfunction toRadians(value) {\n return value / 180 * Math.PI;\n}\nfunction toDegrees(value) {\n return value / Math.PI * 180;\n}\n\nfunction wrap360(value) {\n return (value + 360) % 360;\n}\n\n/**\n * Returns the distance along the surface of the earth from start point to destination point.\n *\n * Uses haversine formula: a = sin²(Δφ/2) + cosφ1·cosφ2 · sin²(Δλ/2); d = 2 · atan2(√a, √(a-1)).\n *\n * @param {GeoJSON.Position} start - Longitude/latitude of start point.\n * @param {GeoJSON.Position} destination - Longitude/latitude of destination point.\n * @param {number} [radius] - Radius of earth (defaults to mean radius in metres).\n * @returns {number} Distance between start point and destination point, in same units as radius.\n *\n * @example\n * const p1 = [0.119, 52.205];\n * const p2 = [2.351, 48.857];\n * const d = distance(p1, p2); // 404.3×10³ m\n * const m = distanceTo(p1, p2, 3959); // 251.2 miles\n */\nfunction distance(start, destination, radius = DEFAULT_RADIUS) {\n // a = sin²(Δφ/2) + cos(φ1)⋅cos(φ2)⋅sin²(Δλ/2)\n // δ = 2·atan2(√(a), √(1−a))\n // see mathforum.org/library/drmath/view/51879.html for derivation\n const R = radius;\n const φ1 = toRadians(start[1]), λ1 = toRadians(start[0]);\n const φ2 = toRadians(destination[1]), λ2 = toRadians(destination[0]);\n const Δφ = φ2 - φ1;\n const Δλ = λ2 - λ1;\n const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n const d = R * c;\n return d;\n}\n/**\n * Returns the initial bearing from start point to destination point.\n *\n * @param {GeoJSON.Position} start - Longitude/latitude of start point.\n * @param {GeoJSON.Position} destination - Longitude/latitude of destination point.\n * @returns {number} Initial bearing in degrees from north (0°..360°).\n *\n * @example\n * const p1 = [0.119, 52.205];\n * const p2 = [2.351, 48.857];\n * const b1 = initialBearing(p1, p2); // 156.2°\n */\nfunction initialBearing(start, destination) {\n if (equals(start, destination))\n return NaN; // coincident points\n // tanθ = sinΔλ⋅cosφ2 / cosφ1⋅sinφ2 − sinφ1⋅cosφ2⋅cosΔλ\n // see mathforum.org/library/drmath/view/55417.html for derivation\n const φ1 = toRadians(start[1]);\n const φ2 = toRadians(destination[1]);\n const Δλ = toRadians(destination[0] - start[0]);\n const x = Math.cos(φ1) * Math.sin(φ2) - Math.sin(φ1) * Math.cos(φ2) * Math.cos(Δλ);\n const y = Math.sin(Δλ) * Math.cos(φ2);\n const θ = Math.atan2(y, x);\n const bearing = toDegrees(θ);\n return wrap360(bearing);\n}\n/**\n * Returns final bearing arriving at destination point from ‘this’ point; the final bearing will\n * differ from the initial bearing by varying degrees according to distance and latitude.\n *\n * @param {GeoJSON.Position} start - Longitude/latitude of start point.\n * @param {GeoJSON.Position} destination - Longitude/latitude of destination point.\n * @returns {number} Final bearing in degrees from north (0°..360°).\n *\n * @example\n * const p1 = [0.119, 52.205];\n * const p2 = [2.351, 48.857];\n * const b2 = finalBearing(p1, p2); // 157.9°\n */\nfunction finalBearing(start, destination) {\n // get initial bearing from destination point to this point & reverse it by adding 180°\n const bearing = initialBearing(destination, start) + 180;\n return wrap360(bearing);\n}\n/**\n * Returns the midpoint between start point and destination point.\n *\n * @param {GeoJSON.Position} start - Longitude/latitude of start point.\n * @param {GeoJSON.Position} destination - Longitude/latitude of destination point.\n * @returns {GeoJSON.Position} Midpoint between this point and destination point.\n *\n * @example\n * const p1 = [0.119, 52.205];\n * const p2 = [2.351, 48.857];\n * const pMid = midpoint(p1, p2); // [1.2746, 50.5363]\n */\nfunction midpoint(start, destination) {\n // φm = atan2( sinφ1 + sinφ2, √( (cosφ1 + cosφ2⋅cosΔλ)² + cos²φ2⋅sin²Δλ ) )\n // λm = λ1 + atan2(cosφ2⋅sinΔλ, cosφ1 + cosφ2⋅cosΔλ)\n // midpoint is sum of vectors to two points: mathforum.org/library/drmath/view/51822.html\n const φ1 = toRadians(start[1]);\n const λ1 = toRadians(start[0]);\n const φ2 = toRadians(destination[1]);\n const Δλ = toRadians(destination[0] - start[0]);\n // get cartesian coordinates for the two points\n const A = { x: Math.cos(φ1), y: 0, z: Math.sin(φ1) }; // place point A on prime meridian y=0\n const B = { x: Math.cos(φ2) * Math.cos(Δλ), y: Math.cos(φ2) * Math.sin(Δλ), z: Math.sin(φ2) };\n // vector to midpoint is sum of vectors to two points (no need to normalise)\n const C = { x: A.x + B.x, y: A.y + B.y, z: A.z + B.z };\n const φm = Math.atan2(C.z, Math.sqrt(C.x * C.x + C.y * C.y));\n const λm = λ1 + Math.atan2(C.y, C.x);\n const lat = toDegrees(φm);\n const lon = toDegrees(λm);\n return [lon, lat];\n}\n/**\n * Returns the destination point from start point having travelled the given distance on the\n * given initial bearing (bearing normally varies around path followed).\n *\n * @param {GeoJSON.Position} start - Longitude/latitude of start point.\n * @param {number} distance - Distance travelled, in same units as earth radius (default: metres).\n * @param {number} bearing - Initial bearing in degrees from north.\n * @param {number} [radius] - Radius of earth (defaults to mean radius in metres).\n * @returns {GeoJSON.Position} Destination point.\n *\n * @example\n * const p1 = [-0.00147, 51.47788];\n * const p2 = destinationPoint(p1, 7794, 300.7); // [0.0983, 51.5136]\n */\nfunction destinationPoint(start, distance, bearing, radius = DEFAULT_RADIUS) {\n // sinφ2 = sinφ1⋅cosδ + cosφ1⋅sinδ⋅cosθ\n // tanΔλ = sinθ⋅sinδ⋅cosφ1 / cosδ−sinφ1⋅sinφ2\n // see mathforum.org/library/drmath/view/52049.html for derivation\n const δ = distance / radius; // angular distance in radians\n const θ = toRadians(bearing);\n const φ1 = toRadians(start[1]), λ1 = toRadians(start[0]);\n const sinφ2 = Math.sin(φ1) * Math.cos(δ) + Math.cos(φ1) * Math.sin(δ) * Math.cos(θ);\n const φ2 = Math.asin(sinφ2);\n const y = Math.sin(θ) * Math.sin(δ) * Math.cos(φ1);\n const x = Math.cos(δ) - Math.sin(φ1) * sinφ2;\n const λ2 = λ1 + Math.atan2(y, x);\n const lat = toDegrees(φ2);\n const lon = toDegrees(λ2);\n return [lon, lat];\n}\n\nexport { destinationPoint, distance, finalBearing, initialBearing, midpoint };\n//# sourceMappingURL=geodesy-fn.js.map\n","/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\nconst proxyMarker = Symbol(\"Comlink.proxy\");\nconst createEndpoint = Symbol(\"Comlink.endpoint\");\nconst releaseProxy = Symbol(\"Comlink.releaseProxy\");\nconst finalizer = Symbol(\"Comlink.finalizer\");\nconst throwMarker = Symbol(\"Comlink.thrown\");\nconst isObject = (val) => (typeof val === \"object\" && val !== null) || typeof val === \"function\";\n/**\n * Internal transfer handle to handle objects marked to proxy.\n */\nconst proxyTransferHandler = {\n canHandle: (val) => isObject(val) && val[proxyMarker],\n serialize(obj) {\n const { port1, port2 } = new MessageChannel();\n expose(obj, port1);\n return [port2, [port2]];\n },\n deserialize(port) {\n port.start();\n return wrap(port);\n },\n};\n/**\n * Internal transfer handler to handle thrown exceptions.\n */\nconst throwTransferHandler = {\n canHandle: (value) => isObject(value) && throwMarker in value,\n serialize({ value }) {\n let serialized;\n if (value instanceof Error) {\n serialized = {\n isError: true,\n value: {\n message: value.message,\n name: value.name,\n stack: value.stack,\n },\n };\n }\n else {\n serialized = { isError: false, value };\n }\n return [serialized, []];\n },\n deserialize(serialized) {\n if (serialized.isError) {\n throw Object.assign(new Error(serialized.value.message), serialized.value);\n }\n throw serialized.value;\n },\n};\n/**\n * Allows customizing the serialization of certain values.\n */\nconst transferHandlers = new Map([\n [\"proxy\", proxyTransferHandler],\n [\"throw\", throwTransferHandler],\n]);\nfunction isAllowedOrigin(allowedOrigins, origin) {\n for (const allowedOrigin of allowedOrigins) {\n if (origin === allowedOrigin || allowedOrigin === \"*\") {\n return true;\n }\n if (allowedOrigin instanceof RegExp && allowedOrigin.test(origin)) {\n return true;\n }\n }\n return false;\n}\nfunction expose(obj, ep = globalThis, allowedOrigins = [\"*\"]) {\n ep.addEventListener(\"message\", function callback(ev) {\n if (!ev || !ev.data) {\n return;\n }\n if (!isAllowedOrigin(allowedOrigins, ev.origin)) {\n console.warn(`Invalid origin '${ev.origin}' for comlink proxy`);\n return;\n }\n const { id, type, path } = Object.assign({ path: [] }, ev.data);\n const argumentList = (ev.data.argumentList || []).map(fromWireValue);\n let returnValue;\n try {\n const parent = path.slice(0, -1).reduce((obj, prop) => obj[prop], obj);\n const rawValue = path.reduce((obj, prop) => obj[prop], obj);\n switch (type) {\n case \"GET\" /* MessageType.GET */:\n {\n returnValue = rawValue;\n }\n break;\n case \"SET\" /* MessageType.SET */:\n {\n parent[path.slice(-1)[0]] = fromWireValue(ev.data.value);\n returnValue = true;\n }\n break;\n case \"APPLY\" /* MessageType.APPLY */:\n {\n returnValue = rawValue.apply(parent, argumentList);\n }\n break;\n case \"CONSTRUCT\" /* MessageType.CONSTRUCT */:\n {\n const value = new rawValue(...argumentList);\n returnValue = proxy(value);\n }\n break;\n case \"ENDPOINT\" /* MessageType.ENDPOINT */:\n {\n const { port1, port2 } = new MessageChannel();\n expose(obj, port2);\n returnValue = transfer(port1, [port1]);\n }\n break;\n case \"RELEASE\" /* MessageType.RELEASE */:\n {\n returnValue = undefined;\n }\n break;\n default:\n return;\n }\n }\n catch (value) {\n returnValue = { value, [throwMarker]: 0 };\n }\n Promise.resolve(returnValue)\n .catch((value) => {\n return { value, [throwMarker]: 0 };\n })\n .then((returnValue) => {\n const [wireValue, transferables] = toWireValue(returnValue);\n ep.postMessage(Object.assign(Object.assign({}, wireValue), { id }), transferables);\n if (type === \"RELEASE\" /* MessageType.RELEASE */) {\n // detach and deactive after sending release response above.\n ep.removeEventListener(\"message\", callback);\n closeEndPoint(ep);\n if (finalizer in obj && typeof obj[finalizer] === \"function\") {\n obj[finalizer]();\n }\n }\n })\n .catch((error) => {\n // Send Serialization Error To Caller\n const [wireValue, transferables] = toWireValue({\n value: new TypeError(\"Unserializable return value\"),\n [throwMarker]: 0,\n });\n ep.postMessage(Object.assign(Object.assign({}, wireValue), { id }), transferables);\n });\n });\n if (ep.start) {\n ep.start();\n }\n}\nfunction isMessagePort(endpoint) {\n return endpoint.constructor.name === \"MessagePort\";\n}\nfunction closeEndPoint(endpoint) {\n if (isMessagePort(endpoint))\n endpoint.close();\n}\nfunction wrap(ep, target) {\n const pendingListeners = new Map();\n ep.addEventListener(\"message\", function handleMessage(ev) {\n const { data } = ev;\n if (!data || !data.id) {\n return;\n }\n const resolver = pendingListeners.get(data.id);\n if (!resolver) {\n return;\n }\n try {\n resolver(data);\n }\n finally {\n pendingListeners.delete(data.id);\n }\n });\n return createProxy(ep, pendingListeners, [], target);\n}\nfunction throwIfProxyReleased(isReleased) {\n if (isReleased) {\n throw new Error(\"Proxy has been released and is not useable\");\n }\n}\nfunction releaseEndpoint(ep) {\n return requestResponseMessage(ep, new Map(), {\n type: \"RELEASE\" /* MessageType.RELEASE */,\n }).then(() => {\n closeEndPoint(ep);\n });\n}\nconst proxyCounter = new WeakMap();\nconst proxyFinalizers = \"FinalizationRegistry\" in globalThis &&\n new FinalizationRegistry((ep) => {\n const newCount = (proxyCounter.get(ep) || 0) - 1;\n proxyCounter.set(ep, newCount);\n if (newCount === 0) {\n releaseEndpoint(ep);\n }\n });\nfunction registerProxy(proxy, ep) {\n const newCount = (proxyCounter.get(ep) || 0) + 1;\n proxyCounter.set(ep, newCount);\n if (proxyFinalizers) {\n proxyFinalizers.register(proxy, ep, proxy);\n }\n}\nfunction unregisterProxy(proxy) {\n if (proxyFinalizers) {\n proxyFinalizers.unregister(proxy);\n }\n}\nfunction createProxy(ep, pendingListeners, path = [], target = function () { }) {\n let isProxyReleased = false;\n const proxy = new Proxy(target, {\n get(_target, prop) {\n throwIfProxyReleased(isProxyReleased);\n if (prop === releaseProxy) {\n return () => {\n unregisterProxy(proxy);\n releaseEndpoint(ep);\n pendingListeners.clear();\n isProxyReleased = true;\n };\n }\n if (prop === \"then\") {\n if (path.length === 0) {\n return { then: () => proxy };\n }\n const r = requestResponseMessage(ep, pendingListeners, {\n type: \"GET\" /* MessageType.GET */,\n path: path.map((p) => p.toString()),\n }).then(fromWireValue);\n return r.then.bind(r);\n }\n return createProxy(ep, pendingListeners, [...path, prop]);\n },\n set(_target, prop, rawValue) {\n throwIfProxyReleased(isProxyReleased);\n // FIXME: ES6 Proxy Handler `set` methods are supposed to return a\n // boolean. To show good will, we return true asynchronously ¯\\_(ツ)_/¯\n const [value, transferables] = toWireValue(rawValue);\n return requestResponseMessage(ep, pendingListeners, {\n type: \"SET\" /* MessageType.SET */,\n path: [...path, prop].map((p) => p.toString()),\n value,\n }, transferables).then(fromWireValue);\n },\n apply(_target, _thisArg, rawArgumentList) {\n throwIfProxyReleased(isProxyReleased);\n const last = path[path.length - 1];\n if (last === createEndpoint) {\n return requestResponseMessage(ep, pendingListeners, {\n type: \"ENDPOINT\" /* MessageType.ENDPOINT */,\n }).then(fromWireValue);\n }\n // We just pretend that `bind()` didn’t happen.\n if (last === \"bind\") {\n return createProxy(ep, pendingListeners, path.slice(0, -1));\n }\n const [argumentList, transferables] = processArguments(rawArgumentList);\n return requestResponseMessage(ep, pendingListeners, {\n type: \"APPLY\" /* MessageType.APPLY */,\n path: path.map((p) => p.toString()),\n argumentList,\n }, transferables).then(fromWireValue);\n },\n construct(_target, rawArgumentList) {\n throwIfProxyReleased(isProxyReleased);\n const [argumentList, transferables] = processArguments(rawArgumentList);\n return requestResponseMessage(ep, pendingListeners, {\n type: \"CONSTRUCT\" /* MessageType.CONSTRUCT */,\n path: path.map((p) => p.toString()),\n argumentList,\n }, transferables).then(fromWireValue);\n },\n });\n registerProxy(proxy, ep);\n return proxy;\n}\nfunction myFlat(arr) {\n return Array.prototype.concat.apply([], arr);\n}\nfunction processArguments(argumentList) {\n const processed = argumentList.map(toWireValue);\n return [processed.map((v) => v[0]), myFlat(processed.map((v) => v[1]))];\n}\nconst transferCache = new WeakMap();\nfunction transfer(obj, transfers) {\n transferCache.set(obj, transfers);\n return obj;\n}\nfunction proxy(obj) {\n return Object.assign(obj, { [proxyMarker]: true });\n}\nfunction windowEndpoint(w, context = globalThis, targetOrigin = \"*\") {\n return {\n postMessage: (msg, transferables) => w.postMessage(msg, targetOrigin, transferables),\n addEventListener: context.addEventListener.bind(context),\n removeEventListener: context.removeEventListener.bind(context),\n };\n}\nfunction toWireValue(value) {\n for (const [name, handler] of transferHandlers) {\n if (handler.canHandle(value)) {\n const [serializedValue, transferables] = handler.serialize(value);\n return [\n {\n type: \"HANDLER\" /* WireValueType.HANDLER */,\n name,\n value: serializedValue,\n },\n transferables,\n ];\n }\n }\n return [\n {\n type: \"RAW\" /* WireValueType.RAW */,\n value,\n },\n transferCache.get(value) || [],\n ];\n}\nfunction fromWireValue(value) {\n switch (value.type) {\n case \"HANDLER\" /* WireValueType.HANDLER */:\n return transferHandlers.get(value.name).deserialize(value.value);\n case \"RAW\" /* WireValueType.RAW */:\n return value.value;\n }\n}\nfunction requestResponseMessage(ep, pendingListeners, msg, transfers) {\n return new Promise((resolve) => {\n const id = generateUUID();\n pendingListeners.set(id, resolve);\n if (ep.start) {\n ep.start();\n }\n ep.postMessage(Object.assign({ id }, msg), transfers);\n });\n}\nfunction generateUUID() {\n return new Array(4)\n .fill(0)\n .map(() => Math.floor(Math.random() * Number.MAX_SAFE_INTEGER).toString(16))\n .join(\"-\");\n}\n\nexport { createEndpoint, expose, finalizer, proxy, proxyMarker, releaseProxy, transfer, transferHandlers, windowEndpoint, wrap };\n//# sourceMappingURL=comlink.mjs.map\n","/* global Blob, BlobBuilder, Worker */\n\n// unify worker interface\nconst browserWorkerPolyFill = function(workerObj) {\n // node only supports on/off\n workerObj.on = workerObj.addEventListener;\n workerObj.off = workerObj.removeEventListener;\n\n return workerObj;\n};\n\nconst createObjectURL = function(str) {\n try {\n return URL.createObjectURL(new Blob([str], {type: 'application/javascript'}));\n } catch (e) {\n const blob = new BlobBuilder();\n\n blob.append(str);\n\n return URL.createObjectURL(blob.getBlob());\n }\n};\n\nexport const factory = function(code) {\n return function() {\n const objectUrl = createObjectURL(code);\n const worker = browserWorkerPolyFill(new Worker(objectUrl));\n\n worker.objURL = objectUrl;\n const terminate = worker.terminate;\n\n worker.on = worker.addEventListener;\n worker.off = worker.removeEventListener;\n\n worker.terminate = function() {\n URL.revokeObjectURL(objectUrl);\n return terminate.call(this);\n };\n\n return worker;\n };\n};\n\nexport const transform = function(code) {\n return `var browserWorkerPolyFill = ${browserWorkerPolyFill.toString()};\\n` +\n 'browserWorkerPolyFill(self);\\n' +\n code;\n};\n\n","export const EPSLN = 1.0e-10;\nexport const D2R = Math.PI / 180;\nexport const R2D = 180 / Math.PI;\n// 900913 properties;\nexport const A = 6378137.0;\nexport const MAXEXTENT = 20037508.342789244;\nexport const SPHERICAL_MERCATOR_SRS = '900913'; // https://epsg.io/900913, https://epsg.io/3857\nexport const WGS84 = 'WGS84'; // https://epsg.io/4326\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDO0FBQzdCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQztBQUNqQyxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7QUFDakMscUJBQXFCO0FBQ3JCLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxTQUFTLENBQUM7QUFDM0IsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLGtCQUFrQixDQUFDO0FBQzVDLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLFFBQVEsQ0FBQyxDQUFDLCtDQUErQztBQUMvRixNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLENBQUMsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IEVQU0xOID0gMS4wZS0xMDtcbmV4cG9ydCBjb25zdCBEMlIgPSBNYXRoLlBJIC8gMTgwO1xuZXhwb3J0IGNvbnN0IFIyRCA9IDE4MCAvIE1hdGguUEk7XG4vLyA5MDA5MTMgcHJvcGVydGllcztcbmV4cG9ydCBjb25zdCBBID0gNjM3ODEzNy4wO1xuZXhwb3J0IGNvbnN0IE1BWEVYVEVOVCA9IDIwMDM3NTA4LjM0Mjc4OTI0NDtcbmV4cG9ydCBjb25zdCBTUEhFUklDQUxfTUVSQ0FUT1JfU1JTID0gJzkwMDkxMyc7IC8vIGh0dHBzOi8vZXBzZy5pby85MDA5MTMsIGh0dHBzOi8vZXBzZy5pby8zODU3XG5leHBvcnQgY29uc3QgV0dTODQgPSAnV0dTODQnOyAvLyBodHRwczovL2Vwc2cuaW8vNDMyNlxuIl19","import { D2R, R2D, A, MAXEXTENT, SPHERICAL_MERCATOR_SRS, WGS84, } from './constants.js';\nconst cache = {};\nfunction isFloat(n) {\n return Number(n) === n && n % 1 !== 0;\n}\nexport class SphericalMercator {\n #size;\n #expansion;\n #Bc;\n #Cc;\n #zc;\n #Ac;\n constructor(options = {}) {\n this.#size = options.size || 256;\n this.#expansion = options.antimeridian ? 2 : 1;\n if (!cache[this.#size]) {\n let size = this.#size;\n const c = (cache[this.#size] = {});\n c.Bc = [];\n c.Cc = [];\n c.zc = [];\n c.Ac = [];\n for (let d = 0; d < 30; d++) {\n c.Bc.push(size / 360);\n c.Cc.push(size / (2 * Math.PI));\n c.zc.push(size / 2);\n c.Ac.push(size);\n size *= 2;\n }\n }\n this.#Bc = cache[this.#size].Bc;\n this.#Cc = cache[this.#size].Cc;\n this.#zc = cache[this.#size].zc;\n this.#Ac = cache[this.#size].Ac;\n }\n px(ll, zoom) {\n if (isFloat(zoom)) {\n const size = this.#size * Math.pow(2, zoom);\n const d = size / 2;\n const bc = size / 360;\n const cc = size / (2 * Math.PI);\n const ac = size;\n const f = Math.min(Math.max(Math.sin(D2R * ll[1]), -0.9999), 0.9999);\n let x = d + ll[0] * bc;\n let y = d + 0.5 * Math.log((1 + f) / (1 - f)) * -cc;\n x > ac * this.#expansion && (x = ac * this.#expansion);\n y > ac && (y = ac);\n //(x < 0) && (x = 0);\n //(y < 0) && (y = 0);\n return [x, y];\n }\n else {\n const d = this.#zc[zoom];\n const f = Math.min(Math.max(Math.sin(D2R * ll[1]), -0.9999), 0.9999);\n let x = Math.round(d + ll[0] * this.#Bc[zoom]);\n let y = Math.round(d + 0.5 * Math.log((1 + f) / (1 - f)) * -this.#Cc[zoom]);\n x > this.#Ac[zoom] * this.#expansion &&\n (x = this.#Ac[zoom] * this.#expansion);\n y > this.#Ac[zoom] && (y = this.#Ac[zoom]);\n //(x < 0) && (x = 0);\n //(y < 0) && (y = 0);\n return [x, y];\n }\n }\n ll(px, zoom) {\n if (isFloat(zoom)) {\n const size = this.#size * Math.pow(2, zoom);\n const bc = size / 360;\n const cc = size / (2 * Math.PI);\n const zc = size / 2;\n const g = (px[1] - zc) / -cc;\n const lon = (px[0] - zc) / bc;\n const lat = R2D * (2 * Math.atan(Math.exp(g)) - 0.5 * Math.PI);\n return [lon, lat];\n }\n else {\n const g = (px[1] - this.#zc[zoom]) / -this.#Cc[zoom];\n const lon = (px[0] - this.#zc[zoom]) / this.#Bc[zoom];\n const lat = R2D * (2 * Math.atan(Math.exp(g)) - 0.5 * Math.PI);\n return [lon, lat];\n }\n }\n convert(bbox, to) {\n if (to === SPHERICAL_MERCATOR_SRS) {\n return [\n ...this.forward(bbox.slice(0, 2)),\n ...this.forward(bbox.slice(2, 4)),\n ];\n }\n else {\n return [\n ...this.inverse(bbox.slice(0, 2)),\n ...this.inverse(bbox.slice(2, 4)),\n ];\n }\n }\n inverse(xy) {\n return [\n (xy[0] * R2D) / A,\n (Math.PI * 0.5 - 2.0 * Math.atan(Math.exp(-xy[1] / A))) * R2D,\n ];\n }\n forward(ll) {\n const xy = [\n A * ll[0] * D2R,\n A * Math.log(Math.tan(Math.PI * 0.25 + 0.5 * ll[1] * D2R)),\n ];\n // if xy value is beyond maxextent (e.g. poles), return maxextent.\n xy[0] > MAXEXTENT && (xy[0] = MAXEXTENT);\n xy[0] < -MAXEXTENT && (xy[0] = -MAXEXTENT);\n xy[1] > MAXEXTENT && (xy[1] = MAXEXTENT);\n xy[1] < -MAXEXTENT && (xy[1] = -MAXEXTENT);\n return xy;\n }\n bbox(x, y, zoom, tmsStyle, srs) {\n // Convert xyz into bbox with srs WGS84\n if (tmsStyle) {\n y = Math.pow(2, zoom) - 1 - y;\n }\n // Use +y to make sure it's a number to avoid inadvertent concatenation.\n const ll = [x * this.#size, (+y + 1) * this.#size]; // lower left\n // Use +x to make sure it's a number to avoid inadvertent concatenation.\n const ur = [(+x + 1) * this.#size, y * this.#size]; // upper right\n const bbox = [...this.ll(ll, zoom), ...this.ll(ur, zoom)];\n // If web mercator requested reproject to 900913.\n if (srs === SPHERICAL_MERCATOR_SRS)\n return this.convert(bbox, SPHERICAL_MERCATOR_SRS);\n return bbox;\n }\n xyz(bbox, zoom, tmsStyle, srs) {\n // If web mercator provided reproject to WGS84.\n const box = srs === SPHERICAL_MERCATOR_SRS ? this.convert(bbox, WGS84) : bbox;\n const ll = [box[0], box[1]]; // lower left\n const ur = [box[2], box[3]]; // upper right\n const px_ll = this.px(ll, zoom);\n const px_ur = this.px(ur, zoom);\n // Y = 0 for XYZ is the top hence minY uses px_ur[1].\n const x = [\n Math.floor(px_ll[0] / this.#size),\n Math.floor((px_ur[0] - 1) / this.#size),\n ];\n const y = [\n Math.floor(px_ur[1] / this.#size),\n Math.floor((px_ll[1] - 1) / this.#size),\n ];\n const bounds = {\n minX: Math.min.apply(Math, x) < 0 ? 0 : Math.min.apply(Math, x),\n minY: Math.min.apply(Math, y) < 0 ? 0 : Math.min.apply(Math, y),\n maxX: Math.max.apply(Math, x),\n maxY: Math.max.apply(Math, y),\n };\n if (tmsStyle) {\n const tms = {\n minY: Math.pow(2, zoom) - 1 - bounds.maxY,\n maxY: Math.pow(2, zoom) - 1 - bounds.minY,\n };\n bounds.minY = tms.minY;\n bounds.maxY = tms.maxY;\n }\n return bounds;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLEdBQUcsRUFDSCxHQUFHLEVBQ0gsQ0FBQyxFQUNELFNBQVMsRUFDVCxzQkFBc0IsRUFDdEIsS0FBSyxHQUNOLE1BQU0sZ0JBQWdCLENBQUM7QUF3QnhCLE1BQU0sS0FBSyxHQUFxQixFQUFFLENBQUM7QUFDbkMsU0FBUyxPQUFPLENBQUMsQ0FBUztJQUN4QixPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDeEMsQ0FBQztBQUVELE1BQU0sT0FBTyxpQkFBaUI7SUFDNUIsS0FBSyxDQUFTO0lBQ2QsVUFBVSxDQUFRO0lBQ2xCLEdBQUcsQ0FBVztJQUNkLEdBQUcsQ0FBVztJQUNkLEdBQUcsQ0FBVztJQUNkLEdBQUcsQ0FBVztJQUVkLFlBQVksVUFBbUIsRUFBRTtRQUMvQixJQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxJQUFJLElBQUksR0FBRyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFL0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN2QixJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQ3RCLE1BQU0sQ0FBQyxHQUFxQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDckQsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7WUFDVixDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztZQUNWLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFD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QUcsSUFBSSxHQUFHLEdBQUcsQ0FBQztZQUN0QixNQUFNLEVBQUUsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2hDLE1BQU0sRUFBRSxHQUFHLElBQUksR0FBRyxDQUFDLENBQUM7WUFDcEIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDN0IsTUFBTSxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQzlCLE1BQU0sR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQy9ELE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDcEIsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3JELE1BQU0sR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3RELE1BQU0sR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQy9ELE9B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QUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDakMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQ3hDLENBQUM7UUFDRixNQUFNLENBQUMsR0FBRztZQUNSLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDakMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQ3hDLENBQUM7UUFDRixNQUFNLE1BQU0sR0FBRztZQUNiLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7WUFDL0QsSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUMvRCxJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUM3QixJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztTQUM5QixDQUFDO1FBQ0YsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLE1BQU0sR0FBRyxHQUFHO2dCQUNWLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUk7Z0JBQ3pDLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUk7YUFDMUMsQ0FBQztZQUNGLE1BQU0sQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQztZQUN2QixNQUFNLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUM7UUFDekIsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEQyUixcbiAgUjJELFxuICBBLFxuICBNQVhFWFRFTlQsXG4gIFNQSEVSSUNBTF9NRVJDQVRPUl9TUlMsXG4gIFdHUzg0LFxufSBmcm9tICcuL2NvbnN0YW50cy5qcyc7XG5cbmludGVyZmFjZSBPcHRpb25zIHtcbiAgc2l6ZT86IG51bWJlcjtcbiAgYW50aW1lcmlkaWFuPzogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIFhZWiB7XG4gIG1pblg6IG51bWJlcjtcbiAgbWF4WDogbnVtYmVyO1xuICBtaW5ZOiBudW1iZXI7XG4gIG1heFk6IG51bWJlcjtcbn1cblxudHlwZSBYWSA9IFtudW1iZXIsIG51bWJlcl07XG50eXBlIExvbkxhdCA9IFtudW1iZXIsIG51bWJlcl07XG50eXBlIFpvb20gPSBudW1iZXI7XG50eXBlIFdlc3QgPSBudW1iZXI7XG50eXBlIFNvdXRoID0gbnVtYmVyO1xudHlwZSBFYXN0ID0gbnVtYmVyO1xudHlwZSBOb3J0aCA9IG51bWJlcjtcbnR5cGUgQkJveCA9IFtXZXN0LCBTb3V0aCwgRWFzdCwgTm9ydGhdO1xudHlwZSBTUlMgPSB0eXBlb2YgU1BIRVJJQ0FMX01FUkNBVE9SX1NSUyB8IHR5cGVvZiBXR1M4NDtcblxuY29uc3QgY2FjaGU6IFJlY29yZDxhbnksIGFueT4gPSB7fTtcbmZ1bmN0aW9uIGlzRmxvYXQobjogbnVtYmVyKTogYm9vbGVhbiB7XG4gIHJldHVybiBOdW1iZXIobikgPT09IG4gJiYgbiAlIDEgIT09IDA7XG59XG5cbmV4cG9ydCBjbGFzcyBTcGhlcmljYWxNZXJjYXRvciB7XG4gICNzaXplOiBudW1iZXI7XG4gICNleHBhbnNpb246IDEgfCAyO1xuICAjQmM6IG51bWJlcltdO1xuICAjQ2M6IG51bWJlcltdO1xuICAjemM6IG51bWJlcltdO1xuICAjQWM6IG51bWJlcltdO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IE9wdGlvbnMgPSB7fSkge1xuICAgIHRoaXMuI3NpemUgPSBvcHRpb25zLnNpemUgfHwgMjU2O1xuICAgIHRoaXMuI2V4cGFuc2lvbiA9IG9wdGlvbnMuYW50aW1lcmlkaWFuID8gMiA6IDE7XG5cbiAgICBpZiAoIWNhY2hlW3RoaXMuI3NpemVdKSB7XG4gICAgICBsZXQgc2l6ZSA9IHRoaXMuI3NpemU7XG4gICAgICBjb25zdCBjOiBSZWNvcmQ8YW55LCBhbnk+ID0gKGNhY2hlW3RoaXMuI3NpemVdID0ge30pO1xuICAgICAgYy5CYyA9IFtdO1xuICAgICAgYy5DYyA9IFtdO1xuICAgICAgYy56YyA9IFtdO1xuICAgICAgYy5BYyA9IFtdO1xuICAgICAgZm9yIChsZXQgZCA9IDA7IGQgPCAzMDsgZCsrKSB7XG4gICAgICAgIGMuQmMucHVzaChzaXplIC8gMzYwKTtcbiAgICAgICAgYy5DYy5wdXNoKHNpemUgLyAoMiAqIE1hdGguUEkpKTtcbiAgICAgICAgYy56Yy5wdXNoKHNpemUgLyAyKTtcbiAgICAgICAgYy5BYy5wdXNoKHNpemUpO1xuICAgICAgICBzaXplICo9IDI7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuI0JjID0gY2FjaGVbdGhpcy4jc2l6ZV0uQmM7XG4gICAgdGhpcy4jQ2MgPSBjYWNoZVt0aGlzLiNzaXplXS5DYztcbiAgICB0aGlzLiN6YyA9IGNhY2hlW3RoaXMuI3NpemVdLnpjO1xuICAgIHRoaXMuI0FjID0gY2FjaGVbdGhpcy4jc2l6ZV0uQWM7XG4gIH1cblxuICBwdWJsaWMgcHgobGw6IExvbkxhdCwgem9vbTogWm9vbSk6IFhZIHtcbiAgICBpZiAoaXNGbG9hdCh6b29tKSkge1xuICAgICAgY29uc3Qgc2l6ZSA9IHRoaXMuI3NpemUgKiBNYXRoLnBvdygyLCB6b29tKTtcbiAgICAgIGNvbnN0IGQgPSBzaXplIC8gMjtcbiAgICAgIGNvbnN0IGJjID0gc2l6ZSAvIDM2MDtcbiAgICAgIGNvbnN0IGNjID0gc2l6ZSAvICgyICogTWF0aC5QSSk7XG4gICAgICBjb25zdCBhYyA9IHNpemU7XG4gICAgICBjb25zdCBmID0gTWF0aC5taW4oTWF0aC5tYXgoTWF0aC5zaW4oRDJSICogbGxbMV0pLCAtMC45OTk5KSwgMC45OTk5KTtcbiAgICAgIGxldCB4ID0gZCArIGxsWzBdICogYmM7XG4gICAgICBsZXQgeSA9IGQgKyAwLjUgKiBNYXRoLmxvZygoMSArIGYpIC8gKDEgLSBmKSkgKiAtY2M7XG4gICAgICB4ID4gYWMgKiB0aGlzLiNleHBhbnNpb24gJiYgKHggPSBhYyAqIHRoaXMuI2V4cGFuc2lvbik7XG4gICAgICB5ID4gYWMgJiYgKHkgPSBhYyk7XG4gICAgICAvLyh4IDwgMCkgJiYgKHggPSAwKTtcbiAgICAgIC8vKHkgPCAwKSAmJiAoeSA9IDApO1xuICAgICAgcmV0dXJuIFt4LCB5XTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZCA9IHRoaXMuI3pjW3pvb21dO1xuICAgICAgY29uc3QgZiA9IE1hdGgubWluKE1hdGgubWF4KE1hdGguc2luKEQyUiAqIGxsWzFdKSwgLTAuOTk5OSksIDAuOTk5OSk7XG4gICAgICBsZXQgeCA9IE1hdGgucm91bmQoZCArIGxsWzBdICogdGhpcy4jQmNbem9vbV0pO1xuICAgICAgbGV0IHkgPSBNYXRoLnJvdW5kKFxuICAgICAgICBkICsgMC41ICogTWF0aC5sb2coKDEgKyBmKSAvICgxIC0gZikpICogLXRoaXMuI0NjW3pvb21dLFxuICAgICAgKTtcbiAgICAgIHggPiB0aGlzLiNBY1t6b29tXSAqIHRoaXMuI2V4cGFuc2lvbiAmJlxuICAgICAgICAoeCA9IHRoaXMuI0FjW3pvb21dICogdGhpcy4jZXhwYW5zaW9uKTtcbiAgICAgIHkgPiB0aGlzLiNBY1t6b29tXSAmJiAoeSA9IHRoaXMuI0FjW3pvb21dKTtcbiAgICAgIC8vKHggPCAwKSAmJiAoeCA9IDApO1xuICAgICAgLy8oeSA8IDApICYmICh5ID0gMCk7XG4gICAgICByZXR1cm4gW3gsIHldO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBsbChweDogWFksIHpvb206IFpvb20pOiBMb25MYXQge1xuICAgIGlmIChpc0Zsb2F0KHpvb20pKSB7XG4gICAgICBjb25zdCBzaXplID0gdGhpcy4jc2l6ZSAqIE1hdGgucG93KDIsIHpvb20pO1xuICAgICAgY29uc3QgYmMgPSBzaXplIC8gMzYwO1xuICAgICAgY29uc3QgY2MgPSBzaXplIC8gKDIgKiBNYXRoLlBJKTtcbiAgICAgIGNvbnN0IHpjID0gc2l6ZSAvIDI7XG4gICAgICBjb25zdCBnID0gKHB4WzFdIC0gemMpIC8gLWNjO1xuICAgICAgY29uc3QgbG9uID0gKHB4WzBdIC0gemMpIC8gYmM7XG4gICAgICBjb25zdCBsYXQgPSBSMkQgKiAoMiAqIE1hdGguYXRhbihNYXRoLmV4cChnKSkgLSAwLjUgKiBNYXRoLlBJKTtcbiAgICAgIHJldHVybiBbbG9uLCBsYXRdO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBnID0gKHB4WzFdIC0gdGhpcy4jemNbem9vbV0pIC8gLXRoaXMuI0NjW3pvb21dO1xuICAgICAgY29uc3QgbG9uID0gKHB4WzBdIC0gdGhpcy4jemNbem9vbV0pIC8gdGhpcy4jQmNbem9vbV07XG4gICAgICBjb25zdCBsYXQgPSBSMkQgKiAoMiAqIE1hdGguYXRhbihNYXRoLmV4cChnKSkgLSAwLjUgKiBNYXRoLlBJKTtcbiAgICAgIHJldHVybiBbbG9uLCBsYXRdO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjb252ZXJ0KGJib3g6IEJCb3gsIHRvOiBTUlMpOiBCQm94IHtcbiAgICBpZiAodG8gPT09IFNQSEVSSUNBTF9NRVJDQVRPUl9TUlMpIHtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIC4uLnRoaXMuZm9yd2FyZChiYm94LnNsaWNlKDAsIDIpIGFzIExvbkxhdCksXG4gICAgICAgIC4uLnRoaXMuZm9yd2FyZChiYm94LnNsaWNlKDIsIDQpIGFzIExvbkxhdCksXG4gICAgICBdO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICAuLi50aGlzLmludmVyc2UoYmJveC5zbGljZSgwLCAyKSBhcyBYWSksXG4gICAgICAgIC4uLnRoaXMuaW52ZXJzZShiYm94LnNsaWNlKDIsIDQpIGFzIFhZKSxcbiAgICAgIF07XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGludmVyc2UoeHk6IFhZKTogTG9uTGF0IHtcbiAgICByZXR1cm4gW1xuICAgICAgKHh5WzBdICogUjJEKSAvIEEsXG4gICAgICAoTWF0aC5QSSAqIDAuNSAtIDIuMCAqIE1hdGguYXRhbihNYXRoLmV4cCgteHlbMV0gLyBBKSkpICogUjJELFxuICAgIF07XG4gIH1cblxuICBwdWJsaWMgZm9yd2FyZChsbDogTG9uTGF0KTogWFkge1xuICAgIGNvbnN0IHh5OiBMb25MYXQgPSBbXG4gICAgICBBICogbGxbMF0gKiBEMlIsXG4gICAgICBBICogTWF0aC5sb2coTWF0aC50YW4oTWF0aC5QSSAqIDAuMjUgKyAwLjUgKiBsbFsxXSAqIEQyUikpLFxuICAgIF07XG4gICAgLy8gaWYgeHkgdmFsdWUgaXMgYmV5b25kIG1heGV4dGVudCAoZS5nLiBwb2xlcyksIHJldHVybiBtYXhleHRlbnQuXG4gICAgeHlbMF0gPiBNQVhFWFRFTlQgJiYgKHh5WzBdID0gTUFYRVhURU5UKTtcbiAgICB4eVswXSA8IC1NQVhFWFRFTlQgJiYgKHh5WzBdID0gLU1BWEVYVEVOVCk7XG4gICAgeHlbMV0gPiBNQVhFWFRFTlQgJiYgKHh5WzFdID0gTUFYRVhURU5UKTtcbiAgICB4eVsxXSA8IC1NQVhFWFRFTlQgJiYgKHh5WzFdID0gLU1BWEVYVEVOVCk7XG4gICAgcmV0dXJuIHh5O1xuICB9XG5cbiAgcHVibGljIGJib3goXG4gICAgeDogbnVtYmVyLFxuICAgIHk6IG51bWJlcixcbiAgICB6b29tOiBab29tLFxuICAgIHRtc1N0eWxlPzogYm9vbGVhbixcbiAgICBzcnM/OiBzdHJpbmcsXG4gICk6IEJCb3gge1xuICAgIC8vIENvbnZlcnQgeHl6IGludG8gYmJveCB3aXRoIHNycyBXR1M4NFxuICAgIGlmICh0bXNTdHlsZSkge1xuICAgICAgeSA9IE1hdGgucG93KDIsIHpvb20pIC0gMSAtIHk7XG4gICAgfVxuICAgIC8vIFVzZSAreSB0byBtYWtlIHN1cmUgaXQncyBhIG51bWJlciB0byBhdm9pZCBpbmFkdmVydGVudCBjb25jYXRlbmF0aW9uLlxuICAgIGNvbnN0IGxsOiBMb25MYXQgPSBbeCAqIHRoaXMuI3NpemUsICgreSArIDEpICogdGhpcy4jc2l6ZV07IC8vIGxvd2VyIGxlZnRcbiAgICAvLyBVc2UgK3ggdG8gbWFrZSBzdXJlIGl0J3MgYSBudW1iZXIgdG8gYXZvaWQgaW5hZHZlcnRlbnQgY29uY2F0ZW5hdGlvbi5cbiAgICBjb25zdCB1cjogTG9uTGF0ID0gWygreCArIDEpICogdGhpcy4jc2l6ZSwgeSAqIHRoaXMuI3NpemVdOyAvLyB1cHBlciByaWdodFxuICAgIGNvbnN0IGJib3g6IEJCb3ggPSBbLi4udGhpcy5sbChsbCwgem9vbSksIC4uLnRoaXMubGwodXIsIHpvb20pXTtcblxuICAgIC8vIElmIHdlYiBtZXJjYXRvciByZXF1ZXN0ZWQgcmVwcm9qZWN0IHRvIDkwMDkxMy5cbiAgICBpZiAoc3JzID09PSBTUEhFUklDQUxfTUVSQ0FUT1JfU1JTKVxuICAgICAgcmV0dXJuIHRoaXMuY29udmVydChiYm94LCBTUEhFUklDQUxfTUVSQ0FUT1JfU1JTKTtcblxuICAgIHJldHVybiBiYm94IGFzIEJCb3g7XG4gIH1cblxuICBwdWJsaWMgeHl6KGJib3g6IEJCb3gsIHpvb206IFpvb20sIHRtc1N0eWxlPzogYm9vbGVhbiwgc3JzPzogU1JTKTogWFlaIHtcbiAgICAvLyBJZiB3ZWIgbWVyY2F0b3IgcHJvdmlkZWQgcmVwcm9qZWN0IHRvIFdHUzg0LlxuICAgIGNvbnN0IGJveCA9XG4gICAgICBzcnMgPT09IFNQSEVSSUNBTF9NRVJDQVRPUl9TUlMgPyB0aGlzLmNvbnZlcnQoYmJveCwgV0dTODQpIDogYmJveDtcblxuICAgIGNvbnN0IGxsOiBMb25MYXQgPSBbYm94WzBdLCBib3hbMV1dOyAvLyBsb3dlciBsZWZ0XG4gICAgY29uc3QgdXI6IExvbkxhdCA9IFtib3hbMl0sIGJveFszXV07IC8vIHVwcGVyIHJpZ2h0XG4gICAgY29uc3QgcHhfbGwgPSB0aGlzLnB4KGxsLCB6b29tKTtcbiAgICBjb25zdCBweF91ciA9IHRoaXMucHgodXIsIHpvb20pO1xuICAgIC8vIFkgPSAwIGZvciBYWVogaXMgdGhlIHRvcCBoZW5jZSBtaW5ZIHVzZXMgcHhfdXJbMV0uXG4gICAgY29uc3QgeCA9IFtcbiAgICAgIE1hdGguZmxvb3IocHhfbGxbMF0gLyB0aGlzLiNzaXplKSxcbiAgICAgIE1hdGguZmxvb3IoKHB4X3VyWzBdIC0gMSkgLyB0aGlzLiNzaXplKSxcbiAgICBdO1xuICAgIGNvbnN0IHkgPSBbXG4gICAgICBNYXRoLmZsb29yKHB4X3VyWzFdIC8gdGhpcy4jc2l6ZSksXG4gICAgICBNYXRoLmZsb29yKChweF9sbFsxXSAtIDEpIC8gdGhpcy4jc2l6ZSksXG4gICAgXTtcbiAgICBjb25zdCBib3VuZHMgPSB7XG4gICAgICBtaW5YOiBNYXRoLm1pbi5hcHBseShNYXRoLCB4KSA8IDAgPyAwIDogTWF0aC5taW4uYXBwbHkoTWF0aCwgeCksXG4gICAgICBtaW5ZOiBNYXRoLm1pbi5hcHBseShNYXRoLCB5KSA8IDAgPyAwIDogTWF0aC5taW4uYXBwbHkoTWF0aCwgeSksXG4gICAgICBtYXhYOiBNYXRoLm1heC5hcHBseShNYXRoLCB4KSxcbiAgICAgIG1heFk6IE1hdGgubWF4LmFwcGx5KE1hdGgsIHkpLFxuICAgIH07XG4gICAgaWYgKHRtc1N0eWxlKSB7XG4gICAgICBjb25zdCB0bXMgPSB7XG4gICAgICAgIG1pblk6IE1hdGgucG93KDIsIHpvb20pIC0gMSAtIGJvdW5kcy5tYXhZLFxuICAgICAgICBtYXhZOiBNYXRoLnBvdygyLCB6b29tKSAtIDEgLSBib3VuZHMubWluWSxcbiAgICAgIH07XG4gICAgICBib3VuZHMubWluWSA9IHRtcy5taW5ZO1xuICAgICAgYm91bmRzLm1heFkgPSB0bXMubWF4WTtcbiAgICB9XG5cbiAgICByZXR1cm4gYm91bmRzO1xuICB9XG59XG4iXX0=","export default function icomesh(order = 4, uvMap = false) {\n if (order > 10) throw new Error(`Max order is 10, but given ${order}.`);\n\n // set up an icosahedron (12 vertices / 20 triangles)\n const f = (1 + Math.sqrt(5)) / 2;\n const T = Math.pow(4, order);\n\n const numVertices = 10 * T + 2;\n const numDuplicates = !uvMap ? 0 : order === 0 ? 3 : Math.pow(2, order) * 3 + 9;\n\n const vertices = new Float32Array((numVertices + numDuplicates) * 3);\n vertices.set(Float32Array.of(\n -1, f, 0, 1, f, 0, -1, -f, 0, 1, -f, 0,\n 0, -1, f, 0, 1, f, 0, -1, -f, 0, 1, -f,\n f, 0, -1, f, 0, 1, -f, 0, -1, -f, 0, 1\n ));\n\n let triangles = Uint16Array.of(\n 0, 11, 5, 0, 5, 1, 0, 1, 7, 0, 7, 10, 0, 10, 11,\n 11, 10, 2, 5, 11, 4, 1, 5, 9, 7, 1, 8, 10, 7, 6,\n 3, 9, 4, 3, 4, 2, 3, 2, 6, 3, 6, 8, 3, 8, 9,\n 9, 8, 1, 4, 9, 5, 2, 4, 11, 6, 2, 10, 8, 6, 7\n );\n\n let v = 12;\n const midCache = order ? new Map() : null; // midpoint vertices cache to avoid duplicating shared vertices\n\n function addMidPoint(a, b) {\n const key = Math.floor(((a + b) * (a + b + 1) / 2) + Math.min(a, b)); // Cantor's pairing function\n const i = midCache.get(key);\n if (i !== undefined) {\n midCache.delete(key); // midpoint is only reused once, so we delete it for performance\n return i;\n }\n midCache.set(key, v);\n vertices[3 * v + 0] = (vertices[3 * a + 0] + vertices[3 * b + 0]) * 0.5;\n vertices[3 * v + 1] = (vertices[3 * a + 1] + vertices[3 * b + 1]) * 0.5;\n vertices[3 * v + 2] = (vertices[3 * a + 2] + vertices[3 * b + 2]) * 0.5;\n return v++;\n }\n\n let trianglesPrev = triangles;\n const IndexArray = order > 5 ? Uint32Array : Uint16Array;\n\n for (let i = 0; i < order; i++) { // repeatedly subdivide each triangle into 4 triangles\n const prevLen = trianglesPrev.length;\n triangles = new IndexArray(prevLen * 4);\n\n for (let k = 0; k < prevLen; k += 3) {\n const v1 = trianglesPrev[k + 0];\n const v2 = trianglesPrev[k + 1];\n const v3 = trianglesPrev[k + 2];\n const a = addMidPoint(v1, v2);\n const b = addMidPoint(v2, v3);\n const c = addMidPoint(v3, v1);\n let t = k * 4;\n triangles[t++] = v1; triangles[t++] = a; triangles[t++] = c;\n triangles[t++] = v2; triangles[t++] = b; triangles[t++] = a;\n triangles[t++] = v3; triangles[t++] = c; triangles[t++] = b;\n triangles[t++] = a; triangles[t++] = b; triangles[t++] = c;\n }\n trianglesPrev = triangles;\n }\n\n // normalize vertices\n for (let i = 0; i < numVertices * 3; i += 3) {\n const v1 = vertices[i + 0];\n const v2 = vertices[i + 1];\n const v3 = vertices[i + 2];\n const m = 1 / Math.sqrt(v1 * v1 + v2 * v2 + v3 * v3);\n vertices[i + 0] *= m;\n vertices[i + 1] *= m;\n vertices[i + 2] *= m;\n }\n\n if (!uvMap) return {vertices, triangles};\n\n // uv mapping\n const uv = new Float32Array((numVertices + numDuplicates) * 2);\n for (let i = 0; i < numVertices; i++) {\n uv[2 * i + 0] = Math.atan2(vertices[3 * i + 2], vertices[3 * i]) / (2 * Math.PI) + 0.5;\n uv[2 * i + 1] = Math.asin(vertices[3 * i + 1]) / Math.PI + 0.5;\n }\n\n const duplicates = new Map();\n\n function addDuplicate(i, uvx, uvy, cached) {\n if (cached) {\n const dupe = duplicates.get(i);\n if (dupe !== undefined) return dupe;\n }\n vertices[3 * v + 0] = vertices[3 * i + 0];\n vertices[3 * v + 1] = vertices[3 * i + 1];\n vertices[3 * v + 2] = vertices[3 * i + 2];\n uv[2 * v + 0] = uvx;\n uv[2 * v + 1] = uvy;\n if (cached) duplicates.set(i, v);\n return v++;\n }\n\n for (let i = 0; i < triangles.length; i += 3) {\n const a = triangles[i + 0];\n const b = triangles[i + 1];\n const c = triangles[i + 2];\n let ax = uv[2 * a];\n let bx = uv[2 * b];\n let cx = uv[2 * c];\n const ay = uv[2 * a + 1];\n const by = uv[2 * b + 1];\n const cy = uv[2 * c + 1];\n\n // uv fixing code; don't ask me how I got here\n if (bx - ax >= 0.5 && ay !== 1) bx -= 1;\n if (cx - bx > 0.5) cx -= 1;\n if (ax > 0.5 && ax - cx > 0.5 || ax === 1 && cy === 0) ax -= 1;\n if (bx > 0.5 && bx - ax > 0.5) bx -= 1;\n\n if (ay === 0 || ay === 1) {\n ax = (bx + cx) / 2;\n if (ay === bx) uv[2 * a] = ax;\n else triangles[i + 0] = addDuplicate(a, ax, ay, false);\n\n } else if (by === 0 || by === 1) {\n bx = (ax + cx) / 2;\n if (by === ax) uv[2 * b] = bx;\n else triangles[i + 1] = addDuplicate(b, bx, by, false);\n\n } else if (cy === 0 || cy === 1) {\n cx = (ax + bx) / 2;\n if (cy === ax) uv[2 * c] = cx;\n else triangles[i + 2] = addDuplicate(c, cx, cy, false);\n }\n if (ax !== uv[2 * a] && ay !== 0 && ay !== 1) triangles[i + 0] = addDuplicate(a, ax, ay, true);\n if (bx !== uv[2 * b] && by !== 0 && by !== 1) triangles[i + 1] = addDuplicate(b, bx, by, true);\n if (cx !== uv[2 * c] && cy !== 0 && cy !== 1) triangles[i + 2] = addDuplicate(c, cx, cy, true);\n }\n\n return {vertices, triangles, uv};\n}\n","\nconst ARRAY_TYPES = [\n Int8Array, Uint8Array, Uint8ClampedArray, Int16Array, Uint16Array,\n Int32Array, Uint32Array, Float32Array, Float64Array\n];\n\n/** @typedef {Int8ArrayConstructor | Uint8ArrayConstructor | Uint8ClampedArrayConstructor | Int16ArrayConstructor | Uint16ArrayConstructor | Int32ArrayConstructor | Uint32ArrayConstructor | Float32ArrayConstructor | Float64ArrayConstructor} TypedArrayConstructor */\n\nconst VERSION = 1; // serialized format version\nconst HEADER_SIZE = 8;\n\nexport default class KDBush {\n\n /**\n * Creates an index from raw `ArrayBuffer` data.\n * @param {ArrayBuffer} data\n */\n static from(data) {\n if (!(data instanceof ArrayBuffer)) {\n throw new Error('Data must be an instance of ArrayBuffer.');\n }\n const [magic, versionAndType] = new Uint8Array(data, 0, 2);\n if (magic !== 0xdb) {\n throw new Error('Data does not appear to be in a KDBush format.');\n }\n const version = versionAndType >> 4;\n if (version !== VERSION) {\n throw new Error(`Got v${version} data when expected v${VERSION}.`);\n }\n const ArrayType = ARRAY_TYPES[versionAndType & 0x0f];\n if (!ArrayType) {\n throw new Error('Unrecognized array type.');\n }\n const [nodeSize] = new Uint16Array(data, 2, 1);\n const [numItems] = new Uint32Array(data, 4, 1);\n\n return new KDBush(numItems, nodeSize, ArrayType, data);\n }\n\n /**\n * Creates an index that will hold a given number of items.\n * @param {number} numItems\n * @param {number} [nodeSize=64] Size of the KD-tree node (64 by default).\n * @param {TypedArrayConstructor} [ArrayType=Float64Array] The array type used for coordinates storage (`Float64Array` by default).\n * @param {ArrayBuffer} [data] (For internal use only)\n */\n constructor(numItems, nodeSize = 64, ArrayType = Float64Array, data) {\n if (isNaN(numItems) || numItems < 0) throw new Error(`Unpexpected numItems value: ${numItems}.`);\n\n this.numItems = +numItems;\n this.nodeSize = Math.min(Math.max(+nodeSize, 2), 65535);\n this.ArrayType = ArrayType;\n this.IndexArrayType = numItems < 65536 ? Uint16Array : Uint32Array;\n\n const arrayTypeIndex = ARRAY_TYPES.indexOf(this.ArrayType);\n const coordsByteSize = numItems * 2 * this.ArrayType.BYTES_PER_ELEMENT;\n const idsByteSize = numItems * this.IndexArrayType.BYTES_PER_ELEMENT;\n const padCoords = (8 - idsByteSize % 8) % 8;\n\n if (arrayTypeIndex < 0) {\n throw new Error(`Unexpected typed array class: ${ArrayType}.`);\n }\n\n if (data && (data instanceof ArrayBuffer)) { // reconstruct an index from a buffer\n this.data = data;\n this.ids = new this.IndexArrayType(this.data, HEADER_SIZE, numItems);\n this.coords = new this.ArrayType(this.data, HEADER_SIZE + idsByteSize + padCoords, numItems * 2);\n this._pos = numItems * 2;\n this._finished = true;\n } else { // initialize a new index\n this.data = new ArrayBuffer(HEADER_SIZE + coordsByteSize + idsByteSize + padCoords);\n this.ids = new this.IndexArrayType(this.data, HEADER_SIZE, numItems);\n this.coords = new this.ArrayType(this.data, HEADER_SIZE + idsByteSize + padCoords, numItems * 2);\n this._pos = 0;\n this._finished = false;\n\n // set header\n new Uint8Array(this.data, 0, 2).set([0xdb, (VERSION << 4) + arrayTypeIndex]);\n new Uint16Array(this.data, 2, 1)[0] = nodeSize;\n new Uint32Array(this.data, 4, 1)[0] = numItems;\n }\n }\n\n /**\n * Add a point to the index.\n * @param {number} x\n * @param {number} y\n * @returns {number} An incremental index associated with the added item (starting from `0`).\n */\n add(x, y) {\n const index = this._pos >> 1;\n this.ids[index] = index;\n this.coords[this._pos++] = x;\n this.coords[this._pos++] = y;\n return index;\n }\n\n /**\n * Perform indexing of the added points.\n */\n finish() {\n const numAdded = this._pos >> 1;\n if (numAdded !== this.numItems) {\n throw new Error(`Added ${numAdded} items when expected ${this.numItems}.`);\n }\n // kd-sort both arrays for efficient search\n sort(this.ids, this.coords, this.nodeSize, 0, this.numItems - 1, 0);\n\n this._finished = true;\n return this;\n }\n\n /**\n * Search the index for items within a given bounding box.\n * @param {number} minX\n * @param {number} minY\n * @param {number} maxX\n * @param {number} maxY\n * @returns {number[]} An array of indices correponding to the found items.\n */\n range(minX, minY, maxX, maxY) {\n if (!this._finished) throw new Error('Data not yet indexed - call index.finish().');\n\n const {ids, coords, nodeSize} = this;\n const stack = [0, ids.length - 1, 0];\n const result = [];\n\n // recursively search for items in range in the kd-sorted arrays\n while (stack.length) {\n const axis = stack.pop() || 0;\n const right = stack.pop() || 0;\n const left = stack.pop() || 0;\n\n // if we reached \"tree node\", search linearly\n if (right - left <= nodeSize) {\n for (let i = left; i <= right; i++) {\n const x = coords[2 * i];\n const y = coords[2 * i + 1];\n if (x >= minX && x <= maxX && y >= minY && y <= maxY) result.push(ids[i]);\n }\n continue;\n }\n\n // otherwise find the middle index\n const m = (left + right) >> 1;\n\n // include the middle item if it's in range\n const x = coords[2 * m];\n const y = coords[2 * m + 1];\n if (x >= minX && x <= maxX && y >= minY && y <= maxY) result.push(ids[m]);\n\n // queue search in halves that intersect the query\n if (axis === 0 ? minX <= x : minY <= y) {\n stack.push(left);\n stack.push(m - 1);\n stack.push(1 - axis);\n }\n if (axis === 0 ? maxX >= x : maxY >= y) {\n stack.push(m + 1);\n stack.push(right);\n stack.push(1 - axis);\n }\n }\n\n return result;\n }\n\n /**\n * Search the index for items within a given radius.\n * @param {number} qx\n * @param {number} qy\n * @param {number} r Query radius.\n * @returns {number[]} An array of indices correponding to the found items.\n */\n within(qx, qy, r) {\n if (!this._finished) throw new Error('Data not yet indexed - call index.finish().');\n\n const {ids, coords, nodeSize} = this;\n const stack = [0, ids.length - 1, 0];\n const result = [];\n const r2 = r * r;\n\n // recursively search for items within radius in the kd-sorted arrays\n while (stack.length) {\n const axis = stack.pop() || 0;\n const right = stack.pop() || 0;\n const left = stack.pop() || 0;\n\n // if we reached \"tree node\", search linearly\n if (right - left <= nodeSize) {\n for (let i = left; i <= right; i++) {\n if (sqDist(coords[2 * i], coords[2 * i + 1], qx, qy) <= r2) result.push(ids[i]);\n }\n continue;\n }\n\n // otherwise find the middle index\n const m = (left + right) >> 1;\n\n // include the middle item if it's in range\n const x = coords[2 * m];\n const y = coords[2 * m + 1];\n if (sqDist(x, y, qx, qy) <= r2) result.push(ids[m]);\n\n // queue search in halves that intersect the query\n if (axis === 0 ? qx - r <= x : qy - r <= y) {\n stack.push(left);\n stack.push(m - 1);\n stack.push(1 - axis);\n }\n if (axis === 0 ? qx + r >= x : qy + r >= y) {\n stack.push(m + 1);\n stack.push(right);\n stack.push(1 - axis);\n }\n }\n\n return result;\n }\n}\n\n/**\n * @param {Uint16Array | Uint32Array} ids\n * @param {InstanceType<TypedArrayConstructor>} coords\n * @param {number} nodeSize\n * @param {number} left\n * @param {number} right\n * @param {number} axis\n */\nfunction sort(ids, coords, nodeSize, left, right, axis) {\n if (right - left <= nodeSize) return;\n\n const m = (left + right) >> 1; // middle index\n\n // sort ids and coords around the middle index so that the halves lie\n // either left/right or top/bottom correspondingly (taking turns)\n select(ids, coords, m, left, right, axis);\n\n // recursively kd-sort first half and second half on the opposite axis\n sort(ids, coords, nodeSize, left, m - 1, 1 - axis);\n sort(ids, coords, nodeSize, m + 1, right, 1 - axis);\n}\n\n/**\n * Custom Floyd-Rivest selection algorithm: sort ids and coords so that\n * [left..k-1] items are smaller than k-th item (on either x or y axis)\n * @param {Uint16Array | Uint32Array} ids\n * @param {InstanceType<TypedArrayConstructor>} coords\n * @param {number} k\n * @param {number} left\n * @param {number} right\n * @param {number} axis\n */\nfunction select(ids, coords, k, left, right, axis) {\n\n while (right > left) {\n if (right - left > 600) {\n const n = right - left + 1;\n const m = k - left + 1;\n const z = Math.log(n);\n const s = 0.5 * Math.exp(2 * z / 3);\n const sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n const newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n const newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n select(ids, coords, k, newLeft, newRight, axis);\n }\n\n const t = coords[2 * k + axis];\n let i = left;\n let j = right;\n\n swapItem(ids, coords, left, k);\n if (coords[2 * right + axis] > t) swapItem(ids, coords, left, right);\n\n while (i < j) {\n swapItem(ids, coords, i, j);\n i++;\n j--;\n while (coords[2 * i + axis] < t) i++;\n while (coords[2 * j + axis] > t) j--;\n }\n\n if (coords[2 * left + axis] === t) swapItem(ids, coords, left, j);\n else {\n j++;\n swapItem(ids, coords, j, right);\n }\n\n if (j <= k) left = j + 1;\n if (k <= j) right = j - 1;\n }\n}\n\n/**\n * @param {Uint16Array | Uint32Array} ids\n * @param {InstanceType<TypedArrayConstructor>} coords\n * @param {number} i\n * @param {number} j\n */\nfunction swapItem(ids, coords, i, j) {\n swap(ids, i, j);\n swap(coords, 2 * i, 2 * j);\n swap(coords, 2 * i + 1, 2 * j + 1);\n}\n\n/**\n * @param {InstanceType<TypedArrayConstructor>} arr\n * @param {number} i\n * @param {number} j\n */\nfunction swap(arr, i, j) {\n const tmp = arr[i];\n arr[i] = arr[j];\n arr[j] = tmp;\n}\n\n/**\n * @param {number} ax\n * @param {number} ay\n * @param {number} bx\n * @param {number} by\n */\nfunction sqDist(ax, ay, bx, by) {\n const dx = ax - bx;\n const dy = ay - by;\n return dx * dx + dy * dy;\n}\n","\nexport default class TinyQueue {\n constructor(data = [], compare = defaultCompare) {\n this.data = data;\n this.length = this.data.length;\n this.compare = compare;\n\n if (this.length > 0) {\n for (let i = (this.length >> 1) - 1; i >= 0; i--) this._down(i);\n }\n }\n\n push(item) {\n this.data.push(item);\n this.length++;\n this._up(this.length - 1);\n }\n\n pop() {\n if (this.length === 0) return undefined;\n\n const top = this.data[0];\n const bottom = this.data.pop();\n this.length--;\n\n if (this.length > 0) {\n this.data[0] = bottom;\n this._down(0);\n }\n\n return top;\n }\n\n peek() {\n return this.data[0];\n }\n\n _up(pos) {\n const {data, compare} = this;\n const item = data[pos];\n\n while (pos > 0) {\n const parent = (pos - 1) >> 1;\n const current = data[parent];\n if (compare(item, current) >= 0) break;\n data[pos] = current;\n pos = parent;\n }\n\n data[pos] = item;\n }\n\n _down(pos) {\n const {data, compare} = this;\n const halfLength = this.length >> 1;\n const item = data[pos];\n\n while (pos < halfLength) {\n let left = (pos << 1) + 1;\n let best = data[left];\n const right = left + 1;\n\n if (right < this.length && compare(data[right], best) < 0) {\n left = right;\n best = data[right];\n }\n if (compare(best, item) >= 0) break;\n\n data[pos] = best;\n pos = left;\n }\n\n data[pos] = item;\n }\n}\n\nfunction defaultCompare(a, b) {\n return a < b ? -1 : a > b ? 1 : 0;\n}\n","\nimport TinyQueue from 'tinyqueue';\n\nconst earthRadius = 6371;\nconst rad = Math.PI / 180;\n\nexport function around(index, lng, lat, maxResults = Infinity, maxDistance = Infinity, predicate) {\n let maxHaverSinDist = 1;\n const result = [];\n\n if (maxResults === undefined) maxResults = Infinity;\n if (maxDistance !== undefined) maxHaverSinDist = haverSin(maxDistance / earthRadius);\n\n // a distance-sorted priority queue that will contain both points and kd-tree nodes\n const q = new TinyQueue([], compareDist);\n\n // an object that represents the top kd-tree node (the whole Earth)\n let node = {\n left: 0, // left index in the kd-tree array\n right: index.ids.length - 1, // right index\n axis: 0, // 0 for longitude axis and 1 for latitude axis\n dist: 0, // will hold the lower bound of children's distances to the query point\n minLng: -180, // bounding box of the node\n minLat: -90,\n maxLng: 180,\n maxLat: 90\n };\n\n const cosLat = Math.cos(lat * rad);\n\n while (node) {\n const right = node.right;\n const left = node.left;\n\n if (right - left <= index.nodeSize) { // leaf node\n\n // add all points of the leaf node to the queue\n for (let i = left; i <= right; i++) {\n const id = index.ids[i];\n if (!predicate || predicate(id)) {\n const dist = haverSinDist(lng, lat, index.coords[2 * i], index.coords[2 * i + 1], cosLat);\n q.push({id, dist});\n }\n }\n\n } else { // not a leaf node (has child nodes)\n\n const m = (left + right) >> 1; // middle index\n const midLng = index.coords[2 * m];\n const midLat = index.coords[2 * m + 1];\n\n // add middle point to the queue\n const id = index.ids[m];\n if (!predicate || predicate(id)) {\n const dist = haverSinDist(lng, lat, midLng, midLat, cosLat);\n q.push({id, dist});\n }\n\n const nextAxis = (node.axis + 1) % 2;\n\n // first half of the node\n const leftNode = {\n left,\n right: m - 1,\n axis: nextAxis,\n minLng: node.minLng,\n minLat: node.minLat,\n maxLng: node.axis === 0 ? midLng : node.maxLng,\n maxLat: node.axis === 1 ? midLat : node.maxLat,\n dist: 0\n };\n // second half of the node\n const rightNode = {\n left: m + 1,\n right,\n axis: nextAxis,\n minLng: node.axis === 0 ? midLng : node.minLng,\n minLat: node.axis === 1 ? midLat : node.minLat,\n maxLng: node.maxLng,\n maxLat: node.maxLat,\n dist: 0\n };\n\n leftNode.dist = boxDist(lng, lat, cosLat, leftNode);\n rightNode.dist = boxDist(lng, lat, cosLat, rightNode);\n\n // add child nodes to the queue\n q.push(leftNode);\n q.push(rightNode);\n }\n\n // fetch closest points from the queue; they're guaranteed to be closer\n // than all remaining points (both individual and those in kd-tree nodes),\n // since each node's distance is a lower bound of distances to its children\n while (q.length && q.peek().id != null) {\n const candidate = q.pop();\n if (candidate.dist > maxHaverSinDist) return result;\n result.push(candidate.id);\n if (result.length === maxResults) return result;\n }\n\n // the next closest kd-tree node\n node = q.pop();\n }\n\n return result;\n}\n\n// lower bound for distance from a location to points inside a bounding box\nfunction boxDist(lng, lat, cosLat, node) {\n const minLng = node.minLng;\n const maxLng = node.maxLng;\n const minLat = node.minLat;\n const maxLat = node.maxLat;\n\n // query point is between minimum and maximum longitudes\n if (lng >= minLng && lng <= maxLng) {\n if (lat < minLat) return haverSin((lat - minLat) * rad);\n if (lat > maxLat) return haverSin((lat - maxLat) * rad);\n return 0;\n }\n\n // query point is west or east of the bounding box;\n // calculate the extremum for great circle distance from query point to the closest longitude;\n const haverSinDLng = Math.min(haverSin((lng - minLng) * rad), haverSin((lng - maxLng) * rad));\n const extremumLat = vertexLat(lat, haverSinDLng);\n\n // if extremum is inside the box, return the distance to it\n if (extremumLat > minLat && extremumLat < maxLat) {\n return haverSinDistPartial(haverSinDLng, cosLat, lat, extremumLat);\n }\n // otherwise return the distan e to one of the bbox corners (whichever is closest)\n return Math.min(\n haverSinDistPartial(haverSinDLng, cosLat, lat, minLat),\n haverSinDistPartial(haverSinDLng, cosLat, lat, maxLat)\n );\n}\n\nfunction compareDist(a, b) {\n return a.dist - b.dist;\n}\n\nfunction haverSin(theta) {\n const s = Math.sin(theta / 2);\n return s * s;\n}\n\nfunction haverSinDistPartial(haverSinDLng, cosLat1, lat1, lat2) {\n return cosLat1 * Math.cos(lat2 * rad) * haverSinDLng + haverSin((lat1 - lat2) * rad);\n}\n\nfunction haverSinDist(lng1, lat1, lng2, lat2, cosLat1) {\n const haverSinDLng = haverSin((lng1 - lng2) * rad);\n return haverSinDistPartial(haverSinDLng, cosLat1, lat1, lat2);\n}\n\nexport function distance(lng1, lat1, lng2, lat2) {\n const h = haverSinDist(lng1, lat1, lng2, lat2, Math.cos(lat1 * rad));\n return 2 * earthRadius * Math.asin(Math.sqrt(h));\n}\n\nfunction vertexLat(lat, haverSinDLng) {\n const cosDLng = 1 - 2 * haverSinDLng;\n if (cosDLng <= 0) return lat > 0 ? 90 : -90;\n return Math.atan(Math.tan(lat * rad) / cosDLng) / rad;\n}\n","// Do not name these variables the same as the global objects - will break bundling\nconst global_ = globalThis;\nconst window_ = globalThis;\nconst document_ = globalThis.document || {};\nconst process_ = globalThis.process || {};\nconst console_ = globalThis.console;\nconst navigator_ = globalThis.navigator || {};\nexport { global_ as global, global_ as self, window_ as window, document_ as document, process_ as process, console_ as console, navigator_ as navigator };\n//# sourceMappingURL=globals.js.map","// based on https://github.com/cheton/is-electron\n// https://github.com/electron/electron/issues/2288\n/* eslint-disable complexity */\nexport function isElectron(mockUserAgent) {\n // Renderer process\n // @ts-expect-error\n if (typeof window !== 'undefined' && window.process?.type === 'renderer') {\n return true;\n }\n // Main process\n // eslint-disable-next-line\n if (typeof process !== 'undefined' && Boolean(process.versions?.['electron'])) {\n return true;\n }\n // Detect the user agent when the `nodeIntegration` option is set to true\n const realUserAgent = typeof navigator !== 'undefined' && navigator.userAgent;\n const userAgent = mockUserAgent || realUserAgent;\n return Boolean(userAgent && userAgent.indexOf('Electron') >= 0);\n}\n//# sourceMappingURL=is-electron.js.map","// This function is needed in initialization stages,\n// make sure it can be imported in isolation\nimport { isElectron } from \"./is-electron.js\";\n/** Check if in browser by duck-typing Node context */\nexport function isBrowser() {\n const isNode = \n // @ts-expect-error\n typeof process === 'object' && String(process) === '[object process]' && !process?.browser;\n return !isNode || isElectron();\n}\n//# sourceMappingURL=is-browser.js.map","// Extract injected version from package.json (injected by babel plugin)\n// @ts-expect-error\nexport const VERSION = typeof \"4.1.0\" !== 'undefined' ? \"4.1.0\" : 'untranspiled source';\n// ENVIRONMENT\nexport { self, window, global, document, process, console } from \"./lib/globals.js\";\nexport { isBrowser } from \"./lib/is-browser.js\";\nexport { getBrowser, isMobile } from \"./lib/get-browser.js\";\nexport { isElectron } from \"./lib/is-electron.js\";\n// ENVIRONMENT'S ASSERT IS 5-15KB, SO WE PROVIDE OUR OWN\nexport { assert } from \"./utils/assert.js\";\n// TODO - wish we could just export a constant\n// export const isBrowser = checkIfBrowser();\n//# sourceMappingURL=index.js.map","// probe.gl, MIT license\nfunction getStorage(type) {\n try {\n const storage = window[type];\n const x = '__storage_test__';\n storage.setItem(x, x);\n storage.removeItem(x);\n return storage;\n }\n catch (e) {\n return null;\n }\n}\n// Store keys in local storage via simple interface\nexport class LocalStorage {\n constructor(id, defaultConfig, type = 'sessionStorage') {\n this.storage = getStorage(type);\n this.id = id;\n this.config = defaultConfig;\n this._loadConfiguration();\n }\n getConfiguration() {\n return this.config;\n }\n setConfiguration(configuration) {\n Object.assign(this.config, configuration);\n if (this.storage) {\n const serialized = JSON.stringify(this.config);\n this.storage.setItem(this.id, serialized);\n }\n }\n // Get config from persistent store, if available\n _loadConfiguration() {\n let configuration = {};\n if (this.storage) {\n const serializedConfiguration = this.storage.getItem(this.id);\n configuration = serializedConfiguration ? JSON.parse(serializedConfiguration) : {};\n }\n Object.assign(this.config, configuration);\n return this;\n }\n}\n//# sourceMappingURL=local-storage.js.map","// probe.gl, MIT license\n/**\n * Format time\n */\nexport function formatTime(ms) {\n let formatted;\n if (ms < 10) {\n formatted = `${ms.toFixed(2)}ms`;\n }\n else if (ms < 100) {\n formatted = `${ms.toFixed(1)}ms`;\n }\n else if (ms < 1000) {\n formatted = `${ms.toFixed(0)}ms`;\n }\n else {\n formatted = `${(ms / 1000).toFixed(2)}s`;\n }\n return formatted;\n}\nexport function leftPad(string, length = 8) {\n const padLength = Math.max(length - string.length, 0);\n return `${' '.repeat(padLength)}${string}`;\n}\nexport function rightPad(string, length = 8) {\n const padLength = Math.max(length - string.length, 0);\n return `${string}${' '.repeat(padLength)}`;\n}\nexport function formatValue(v, options = {}) {\n const EPSILON = 1e-16;\n const { isInteger = false } = options;\n if (Array.isArray(v) || ArrayBuffer.isView(v)) {\n return formatArrayValue(v, options);\n }\n if (!Number.isFinite(v)) {\n return String(v);\n }\n // @ts-expect-error\n if (Math.abs(v) < EPSILON) {\n return isInteger ? '0' : '0.';\n }\n if (isInteger) {\n // @ts-expect-error\n return v.toFixed(0);\n }\n // @ts-expect-error\n if (Math.abs(v) > 100 && Math.abs(v) < 10000) {\n // @ts-expect-error\n return v.toFixed(0);\n }\n // @ts-expect-error\n const string = v.toPrecision(2);\n const decimal = string.indexOf('.0');\n return decimal === string.length - 2 ? string.slice(0, -1) : string;\n}\n/** Helper to formatValue */\nfunction formatArrayValue(v, options) {\n const { maxElts = 16, size = 1 } = options;\n let string = '[';\n for (let i = 0; i < v.length && i < maxElts; ++i) {\n if (i > 0) {\n string += `,${i % size === 0 ? ' ' : ''}`;\n }\n string += formatValue(v[i], options);\n }\n const terminator = v.length > maxElts ? '...' : ']';\n return `${string}${terminator}`;\n}\n//# sourceMappingURL=formatters.js.map","import { isBrowser } from '@probe.gl/env';\nexport var COLOR;\n(function (COLOR) {\n COLOR[COLOR[\"BLACK\"] = 30] = \"BLACK\";\n COLOR[COLOR[\"RED\"] = 31] = \"RED\";\n COLOR[COLOR[\"GREEN\"] = 32] = \"GREEN\";\n COLOR[COLOR[\"YELLOW\"] = 33] = \"YELLOW\";\n COLOR[COLOR[\"BLUE\"] = 34] = \"BLUE\";\n COLOR[COLOR[\"MAGENTA\"] = 35] = \"MAGENTA\";\n COLOR[COLOR[\"CYAN\"] = 36] = \"CYAN\";\n COLOR[COLOR[\"WHITE\"] = 37] = \"WHITE\";\n COLOR[COLOR[\"BRIGHT_BLACK\"] = 90] = \"BRIGHT_BLACK\";\n COLOR[COLOR[\"BRIGHT_RED\"] = 91] = \"BRIGHT_RED\";\n COLOR[COLOR[\"BRIGHT_GREEN\"] = 92] = \"BRIGHT_GREEN\";\n COLOR[COLOR[\"BRIGHT_YELLOW\"] = 93] = \"BRIGHT_YELLOW\";\n COLOR[COLOR[\"BRIGHT_BLUE\"] = 94] = \"BRIGHT_BLUE\";\n COLOR[COLOR[\"BRIGHT_MAGENTA\"] = 95] = \"BRIGHT_MAGENTA\";\n COLOR[COLOR[\"BRIGHT_CYAN\"] = 96] = \"BRIGHT_CYAN\";\n COLOR[COLOR[\"BRIGHT_WHITE\"] = 97] = \"BRIGHT_WHITE\";\n})(COLOR || (COLOR = {}));\nconst BACKGROUND_INCREMENT = 10;\nfunction getColor(color) {\n if (typeof color !== 'string') {\n return color;\n }\n color = color.toUpperCase();\n return COLOR[color] || COLOR.WHITE;\n}\nexport function addColor(string, color, background) {\n if (!isBrowser && typeof string === 'string') {\n if (color) {\n const colorCode = getColor(color);\n string = `\\u001b[${colorCode}m${string}\\u001b[39m`;\n }\n if (background) {\n // background colors values are +10\n const colorCode = getColor(background);\n string = `\\u001b[${colorCode + BACKGROUND_INCREMENT}m${string}\\u001b[49m`;\n }\n }\n return string;\n}\n//# sourceMappingURL=color.js.map","// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n/**\n * Binds the \"this\" argument of all functions on a class instance to the instance\n * @param obj - class instance (typically a react component)\n */\nexport function autobind(obj, predefined = ['constructor']) {\n const proto = Object.getPrototypeOf(obj);\n const propNames = Object.getOwnPropertyNames(proto);\n const object = obj;\n for (const key of propNames) {\n const value = object[key];\n if (typeof value === 'function') {\n if (!predefined.find((name) => key === name)) {\n object[key] = value.bind(obj);\n }\n }\n }\n}\n//# sourceMappingURL=autobind.js.map","export default function assert(condition, message) {\n if (!condition) {\n throw new Error(message || 'Assertion failed');\n }\n}\n//# sourceMappingURL=assert.js.map","// probe.gl, MIT license\nimport { window, process, isBrowser } from '@probe.gl/env';\n/** Get best timer available. */\nexport function getHiResTimestamp() {\n let timestamp;\n if (isBrowser() && window.performance) {\n timestamp = window?.performance?.now?.();\n }\n else if ('hrtime' in process) {\n // @ts-ignore\n const timeParts = process?.hrtime?.();\n timestamp = timeParts[0] * 1000 + timeParts[1] / 1e6;\n }\n else {\n timestamp = Date.now();\n }\n return timestamp;\n}\n//# sourceMappingURL=hi-res-timestamp.js.map","// probe.gl, MIT license\n/* eslint-disable no-console,prefer-rest-params */\nimport { VERSION, isBrowser } from '@probe.gl/env';\nimport { LocalStorage } from \"./utils/local-storage.js\";\nimport { formatTime, leftPad } from \"./utils/formatters.js\";\nimport { addColor } from \"./utils/color.js\";\nimport { autobind } from \"./utils/autobind.js\";\nimport assert from \"./utils/assert.js\";\nimport { getHiResTimestamp } from \"./utils/hi-res-timestamp.js\";\n// Instrumentation in other packages may override console methods, so preserve them here\nconst originalConsole = {\n debug: isBrowser() ? console.debug || console.log : console.log,\n log: console.log,\n info: console.info,\n warn: console.warn,\n error: console.error\n};\nconst DEFAULT_LOG_CONFIGURATION = {\n enabled: true,\n level: 0\n};\nfunction noop() { } // eslint-disable-line @typescript-eslint/no-empty-function\nconst cache = {};\nconst ONCE = { once: true };\n/** A console wrapper */\nexport class Log {\n constructor({ id } = { id: '' }) {\n this.VERSION = VERSION;\n this._startTs = getHiResTimestamp();\n this._deltaTs = getHiResTimestamp();\n this.userData = {};\n // TODO - fix support from throttling groups\n this.LOG_THROTTLE_TIMEOUT = 0; // Time before throttled messages are logged again\n this.id = id;\n this.userData = {};\n this._storage = new LocalStorage(`__probe-${this.id}__`, DEFAULT_LOG_CONFIGURATION);\n this.timeStamp(`${this.id} started`);\n autobind(this);\n Object.seal(this);\n }\n set level(newLevel) {\n this.setLevel(newLevel);\n }\n get level() {\n return this.getLevel();\n }\n isEnabled() {\n return this._storage.config.enabled;\n }\n getLevel() {\n return this._storage.config.level;\n }\n /** @return milliseconds, with fractions */\n getTotal() {\n return Number((getHiResTimestamp() - this._startTs).toPrecision(10));\n }\n /** @return milliseconds, with fractions */\n getDelta() {\n return Number((getHiResTimestamp() - this._deltaTs).toPrecision(10));\n }\n /** @deprecated use logLevel */\n set priority(newPriority) {\n this.level = newPriority;\n }\n /** @deprecated use logLevel */\n get priority() {\n return this.level;\n }\n /** @deprecated use logLevel */\n getPriority() {\n return this.level;\n }\n // Configure\n enable(enabled = true) {\n this._storage.setConfiguration({ enabled });\n return this;\n }\n setLevel(level) {\n this._storage.setConfiguration({ level });\n return this;\n }\n /** return the current status of the setting */\n get(setting) {\n return this._storage.config[setting];\n }\n // update the status of the setting\n set(setting, value) {\n this._storage.setConfiguration({ [setting]: value });\n }\n /** Logs the current settings as a table */\n settings() {\n if (console.table) {\n console.table(this._storage.config);\n }\n else {\n console.log(this._storage.config);\n }\n }\n // Unconditional logging\n assert(condition, message) {\n if (!condition) {\n throw new Error(message || 'Assertion failed');\n }\n }\n warn(message) {\n return this._getLogFunction(0, message, originalConsole.warn, arguments, ONCE);\n }\n error(message) {\n return this._getLogFunction(0, message, originalConsole.error, arguments);\n }\n /** Print a deprecation warning */\n deprecated(oldUsage, newUsage) {\n return this.warn(`\\`${oldUsage}\\` is deprecated and will be removed \\\nin a later version. Use \\`${newUsage}\\` instead`);\n }\n /** Print a removal warning */\n removed(oldUsage, newUsage) {\n return this.error(`\\`${oldUsage}\\` has been removed. Use \\`${newUsage}\\` instead`);\n }\n probe(logLevel, message) {\n return this._getLogFunction(logLevel, message, originalConsole.log, arguments, {\n time: true,\n once: true\n });\n }\n log(logLevel, message) {\n return this._getLogFunction(logLevel, message, originalConsole.debug, arguments);\n }\n info(logLevel, message) {\n return this._getLogFunction(logLevel, message, console.info, arguments);\n }\n once(logLevel, message) {\n return this._getLogFunction(logLevel, message, originalConsole.debug || originalConsole.info, arguments, ONCE);\n }\n /** Logs an object as a table */\n table(logLevel, table, columns) {\n if (table) {\n return this._getLogFunction(logLevel, table, console.table || noop, (columns && [columns]), {\n tag: getTableHeader(table)\n });\n }\n return noop;\n }\n time(logLevel, message) {\n return this._getLogFunction(logLevel, message, console.time ? console.time : console.info);\n }\n timeEnd(logLevel, message) {\n return this._getLogFunction(logLevel, message, console.timeEnd ? console.timeEnd : console.info);\n }\n timeStamp(logLevel, message) {\n return this._getLogFunction(logLevel, message, console.timeStamp || noop);\n }\n group(logLevel, message, opts = { collapsed: false }) {\n const options = normalizeArguments({ logLevel, message, opts });\n const { collapsed } = opts;\n // @ts-expect-error\n options.method = (collapsed ? console.groupCollapsed : console.group) || console.info;\n return this._getLogFunction(options);\n }\n groupCollapsed(logLevel, message, opts = {}) {\n return this.group(logLevel, message, Object.assign({}, opts, { collapsed: true }));\n }\n groupEnd(logLevel) {\n return this._getLogFunction(logLevel, '', console.groupEnd || noop);\n }\n // EXPERIMENTAL\n withGroup(logLevel, message, func) {\n this.group(logLevel, message)();\n try {\n func();\n }\n finally {\n this.groupEnd(logLevel)();\n }\n }\n trace() {\n if (console.trace) {\n console.trace();\n }\n }\n // PRIVATE METHODS\n /** Deduces log level from a variety of arguments */\n _shouldLog(logLevel) {\n return this.isEnabled() && this.getLevel() >= normalizeLogLevel(logLevel);\n }\n _getLogFunction(logLevel, message, method, args, opts) {\n if (this._shouldLog(logLevel)) {\n // normalized opts + timings\n opts = normalizeArguments({ logLevel, message, args, opts });\n method = method || opts.method;\n assert(method);\n opts.total = this.getTotal();\n opts.delta = this.getDelta();\n // reset delta timer\n this._deltaTs = getHiResTimestamp();\n const tag = opts.tag || opts.message;\n if (opts.once && tag) {\n if (!cache[tag]) {\n cache[tag] = getHiResTimestamp();\n }\n else {\n return noop;\n }\n }\n // TODO - Make throttling work with groups\n // if (opts.nothrottle || !throttle(tag, this.LOG_THROTTLE_TIMEOUT)) {\n // return noop;\n // }\n message = decorateMessage(this.id, opts.message, opts);\n // Bind console function so that it can be called after being returned\n return method.bind(console, message, ...opts.args);\n }\n return noop;\n }\n}\nLog.VERSION = VERSION;\n/**\n * Get logLevel from first argument:\n * - log(logLevel, message, args) => logLevel\n * - log(message, args) => 0\n * - log({logLevel, ...}, message, args) => logLevel\n * - log({logLevel, message, args}) => logLevel\n */\nfunction normalizeLogLevel(logLevel) {\n if (!logLevel) {\n return 0;\n }\n let resolvedLevel;\n switch (typeof logLevel) {\n case 'number':\n resolvedLevel = logLevel;\n break;\n case 'object':\n // Backward compatibility\n // TODO - deprecate `priority`\n // @ts-expect-error\n resolvedLevel = logLevel.logLevel || logLevel.priority || 0;\n break;\n default:\n return 0;\n }\n // 'log level must be a number'\n assert(Number.isFinite(resolvedLevel) && resolvedLevel >= 0);\n return resolvedLevel;\n}\n/**\n * \"Normalizes\" the various argument patterns into an object with known types\n * - log(logLevel, message, args) => {logLevel, message, args}\n * - log(message, args) => {logLevel: 0, message, args}\n * - log({logLevel, ...}, message, args) => {logLevel, message, args}\n * - log({logLevel, message, args}) => {logLevel, message, args}\n */\nexport function normalizeArguments(opts) {\n const { logLevel, message } = opts;\n opts.logLevel = normalizeLogLevel(logLevel);\n // We use `arguments` instead of rest parameters (...args) because IE\n // does not support the syntax. Rest parameters is transpiled to code with\n // perf impact. Doing it here instead avoids constructing args when logging is\n // disabled.\n // TODO - remove when/if IE support is dropped\n const args = opts.args ? Array.from(opts.args) : [];\n // args should only contain arguments that appear after `message`\n // eslint-disable-next-line no-empty\n while (args.length && args.shift() !== message) { }\n switch (typeof logLevel) {\n case 'string':\n case 'function':\n if (message !== undefined) {\n args.unshift(message);\n }\n opts.message = logLevel;\n break;\n case 'object':\n Object.assign(opts, logLevel);\n break;\n default:\n }\n // Resolve functions into strings by calling them\n if (typeof opts.message === 'function') {\n opts.message = opts.message();\n }\n const messageType = typeof opts.message;\n // 'log message must be a string' or object\n assert(messageType === 'string' || messageType === 'object');\n // original opts + normalized opts + opts arg + fixed up message\n return Object.assign(opts, { args }, opts.opts);\n}\nfunction decorateMessage(id, message, opts) {\n if (typeof message === 'string') {\n const time = opts.time ? leftPad(formatTime(opts.total)) : '';\n message = opts.time ? `${id}: ${time} ${message}` : `${id}: ${message}`;\n message = addColor(message, opts.color, opts.background);\n }\n return message;\n}\nfunction getTableHeader(table) {\n for (const key in table) {\n for (const title in table[key]) {\n return title || 'untitled';\n }\n }\n return 'empty';\n}\n//# sourceMappingURL=log.js.map","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { Log } from '@probe.gl/log';\n/** Global log instance */\nexport const log = new Log({ id: 'luma.gl' });\n//# sourceMappingURL=log.js.map","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nconst uidCounters = {};\n/**\n * Returns a UID.\n * @param id= - Identifier base name\n * @return uid\n **/\nexport function uid(id = 'id') {\n uidCounters[id] = uidCounters[id] || 1;\n const count = uidCounters[id]++;\n return `${id}-${count}`;\n}\n//# sourceMappingURL=uid.js.map","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { uid } from \"../../utils/uid.js\";\n/**\n * Base class for GPU (WebGPU/WebGL) Resources\n */\nexport class Resource {\n /** Default properties for resource */\n static defaultProps = {\n id: 'undefined',\n handle: undefined,\n userData: undefined\n };\n toString() {\n return `${this[Symbol.toStringTag] || this.constructor.name}:\"${this.id}\"`;\n }\n /** props.id, for debugging. */\n id;\n props;\n userData = {};\n _device;\n /** Whether this resource has been destroyed */\n destroyed = false;\n /** For resources that allocate GPU memory */\n allocatedBytes = 0;\n /** Attached resources will be destroyed when this resource is destroyed. Tracks auto-created \"sub\" resources. */\n _attachedResources = new Set();\n /**\n * Create a new Resource. Called from Subclass\n */\n constructor(device, props, defaultProps) {\n if (!device) {\n throw new Error('no device');\n }\n this._device = device;\n this.props = selectivelyMerge(props, defaultProps);\n const id = this.props.id !== 'undefined' ? this.props.id : uid(this[Symbol.toStringTag]);\n this.props.id = id;\n this.id = id;\n this.userData = this.props.userData || {};\n this.addStats();\n }\n /**\n * destroy can be called on any resource to release it before it is garbage collected.\n */\n destroy() {\n this.destroyResource();\n }\n /** @deprecated Use destroy() */\n delete() {\n this.destroy();\n return this;\n }\n /**\n * Combines a map of user props and default props, only including props from defaultProps\n * @returns returns a map of overridden default props\n */\n getProps() {\n return this.props;\n }\n // ATTACHED RESOURCES\n /**\n * Attaches a resource. Attached resources are auto destroyed when this resource is destroyed\n * Called automatically when sub resources are auto created but can be called by application\n */\n attachResource(resource) {\n this._attachedResources.add(resource);\n }\n /**\n * Detach an attached resource. The resource will no longer be auto-destroyed when this resource is destroyed.\n */\n detachResource(resource) {\n this._attachedResources.delete(resource);\n }\n /**\n * Destroys a resource (only if owned), and removes from the owned (auto-destroy) list for this resource.\n */\n destroyAttachedResource(resource) {\n if (this._attachedResources.delete(resource)) {\n resource.destroy();\n }\n }\n /** Destroy all owned resources. Make sure the resources are no longer needed before calling. */\n destroyAttachedResources() {\n for (const resource of Object.values(this._attachedResources)) {\n resource.destroy();\n }\n // don't remove while we are iterating\n this._attachedResources = new Set();\n }\n // PROTECTED METHODS\n /** Perform all destroy steps. Can be called by derived resources when overriding destroy() */\n destroyResource() {\n this.destroyAttachedResources();\n this.removeStats();\n this.destroyed = true;\n }\n /** Called by .destroy() to track object destruction. Subclass must call if overriding destroy() */\n removeStats() {\n const stats = this._device.statsManager.getStats('Resource Counts');\n const name = this[Symbol.toStringTag];\n stats.get(`${name}s Active`).decrementCount();\n }\n /** Called by subclass to track memory allocations */\n trackAllocatedMemory(bytes, name = this[Symbol.toStringTag]) {\n const stats = this._device.statsManager.getStats('Resource Counts');\n stats.get('GPU Memory').addCount(bytes);\n stats.get(`${name} Memory`).addCount(bytes);\n this.allocatedBytes = bytes;\n }\n /** Called by subclass to track memory deallocations */\n trackDeallocatedMemory(name = this[Symbol.toStringTag]) {\n const stats = this._device.statsManager.getStats('Resource Counts');\n stats.get('GPU Memory').subtractCount(this.allocatedBytes);\n stats.get(`${name} Memory`).subtractCount(this.allocatedBytes);\n this.allocatedBytes = 0;\n }\n /** Called by resource constructor to track object creation */\n addStats() {\n const stats = this._device.statsManager.getStats('Resource Counts');\n const name = this[Symbol.toStringTag];\n stats.get('Resources Created').incrementCount();\n stats.get(`${name}s Created`).incrementCount();\n stats.get(`${name}s Active`).incrementCount();\n }\n}\n/**\n * Combines a map of user props and default props, only including props from defaultProps\n * @param props\n * @param defaultProps\n * @returns returns a map of overridden default props\n */\nfunction selectivelyMerge(props, defaultProps) {\n const mergedProps = { ...defaultProps };\n for (const key in props) {\n if (props[key] !== undefined) {\n mergedProps[key] = props[key];\n }\n }\n return mergedProps;\n}\n//# sourceMappingURL=resource.js.map","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { Resource } from \"./resource.js\";\n/** Abstract GPU buffer */\nexport class Buffer extends Resource {\n /** Index buffer */\n static INDEX = 0x0010;\n /** Vertex buffer */\n static VERTEX = 0x0020;\n /** Uniform buffer */\n static UNIFORM = 0x0040;\n /** Storage buffer */\n static STORAGE = 0x0080;\n static INDIRECT = 0x0100;\n static QUERY_RESOLVE = 0x0200;\n // Usage Flags\n static MAP_READ = 0x01;\n static MAP_WRITE = 0x02;\n static COPY_SRC = 0x0004;\n static COPY_DST = 0x0008;\n get [Symbol.toStringTag]() {\n return 'Buffer';\n }\n /** The usage with which this buffer was created */\n usage;\n /** For index buffers, whether indices are 16 or 32 bit */\n indexType;\n /** \"Time\" of last update, can be used to check if redraw is needed */\n updateTimestamp;\n constructor(device, props) {\n const deducedProps = { ...props };\n // Deduce indexType\n if ((props.usage || 0) & Buffer.INDEX && !props.indexType) {\n if (props.data instanceof Uint32Array) {\n deducedProps.indexType = 'uint32';\n }\n else if (props.data instanceof Uint16Array) {\n deducedProps.indexType = 'uint16';\n }\n }\n // Remove data from props before storing, we don't want to hold on to a big chunk of memory\n delete deducedProps.data;\n super(device, deducedProps, Buffer.defaultProps);\n this.usage = deducedProps.usage || 0;\n this.indexType = deducedProps.indexType;\n // TODO - perhaps this should be set on async write completion?\n this.updateTimestamp = device.incrementTimestamp();\n }\n /**\n * Create a copy of this Buffer with new byteLength, with same props but of the specified size.\n * @note Does not copy contents of the cloned Buffer.\n */\n clone(props) {\n return this.device.createBuffer({ ...this.props, ...props });\n }\n // PROTECTED METHODS (INTENDED FOR USE BY OTHER FRAMEWORK CODE ONLY)\n /** Max amount of debug data saved. Two vec4's */\n static DEBUG_DATA_MAX_LENGTH = 32;\n /** A partial CPU-side copy of the data in this buffer, for debugging purposes */\n debugData = new ArrayBuffer(0);\n /** This doesn't handle partial non-zero offset updates correctly */\n _setDebugData(data, byteOffset, byteLength) {\n const arrayBuffer = ArrayBuffer.isView(data) ? data.buffer : data;\n const debugDataLength = Math.min(data ? data.byteLength : byteLength, Buffer.DEBUG_DATA_MAX_LENGTH);\n if (arrayBuffer === null) {\n this.debugData = new ArrayBuffer(debugDataLength);\n }\n else if (byteOffset === 0 && byteLength === arrayBuffer.byteLength) {\n this.debugData = arrayBuffer.slice(0, debugDataLength);\n }\n else {\n this.debugData = arrayBuffer.slice(byteOffset, byteOffset + debugDataLength);\n }\n }\n static defaultProps = {\n ...Resource.defaultProps,\n usage: 0, // Buffer.COPY_DST | Buffer.COPY_SRC\n byteLength: 0,\n byteOffset: 0,\n data: null,\n indexType: 'uint16',\n onMapped: undefined\n };\n}\n//# sourceMappingURL=buffer.js.map","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n/**\n * Gets info about a data type constant (signed or normalized)\n * @returns underlying primitive / signed types, byte length, normalization, integer, signed flags\n */\nexport function getDataTypeInfo(type) {\n const [signedType, primitiveType, byteLength] = NORMALIZED_TYPE_MAP[type];\n const normalized = type.includes('norm');\n const integer = !normalized && !type.startsWith('float');\n const signed = type.startsWith('s');\n return {\n signedType,\n primitiveType,\n byteLength,\n normalized,\n integer,\n signed\n };\n}\n/** Build a vertex format from a signed data type and a component */\nexport function getNormalizedDataType(signedDataType) {\n const dataType = signedDataType;\n // prettier-ignore\n switch (dataType) {\n case 'uint8': return 'unorm8';\n case 'sint8': return 'snorm8';\n case 'uint16': return 'unorm16';\n case 'sint16': return 'snorm16';\n default: return dataType;\n }\n}\n/** Align offset to 1, 2 or 4 elements (4, 8 or 16 bytes) */\nexport function alignTo(size, count) {\n // prettier-ignore\n switch (count) {\n case 1: return size; // Pad upwards to even multiple of 2\n case 2: return size + (size % 2); // Pad upwards to even multiple of 2\n default: return size + ((4 - (size % 4)) % 4); // Pad upwards to even multiple of 4\n }\n}\n/** Returns the VariableShaderType that corresponds to a typed array */\nexport function getDataType(arrayOrType) {\n const Constructor = ArrayBuffer.isView(arrayOrType) ? arrayOrType.constructor : arrayOrType;\n if (Constructor === Uint8ClampedArray) {\n return 'uint8';\n }\n const info = Object.values(NORMALIZED_TYPE_MAP).find(entry => Constructor === entry[4]);\n if (!info) {\n throw new Error(Constructor.name);\n }\n return info[0];\n}\n/** Returns the TypedArray that corresponds to a shader data type */\nexport function getTypedArrayConstructor(type) {\n const [, , , , Constructor] = NORMALIZED_TYPE_MAP[type];\n return Constructor;\n}\nconst NORMALIZED_TYPE_MAP = {\n uint8: ['uint8', 'u32', 1, false, Uint8Array],\n sint8: ['sint8', 'i32', 1, false, Int8Array],\n unorm8: ['uint8', 'f32', 1, true, Uint8Array],\n snorm8: ['sint8', 'f32', 1, true, Int8Array],\n uint16: ['uint16', 'u32', 2, false, Uint16Array],\n sint16: ['sint16', 'i32', 2, false, Int16Array],\n unorm16: ['uint16', 'u32', 2, true, Uint16Array],\n snorm16: ['sint16', 'i32', 2, true, Int16Array],\n float16: ['float16', 'f16', 2, false, Uint16Array],\n float32: ['float32', 'f32', 4, false, Float32Array],\n uint32: ['uint32', 'u32', 4, false, Uint32Array],\n sint32: ['sint32', 'i32', 4, false, Int32Array]\n};\n//# sourceMappingURL=decode-data-types.js.map","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { getDataTypeInfo, getDataType, getNormalizedDataType } from \"../data-types/decode-data-types.js\";\n/**\n * Decodes a vertex format, returning type, components, byte length and flags (integer, signed, normalized)\n */\nexport function getVertexFormatInfo(format) {\n // Strip the -webgl ending if present\n let webglOnly;\n if (format.endsWith('-webgl')) {\n format.replace('-webgl', '');\n webglOnly = true;\n }\n // split components from type\n const [type_, count] = format.split('x');\n const type = type_;\n const components = (count ? parseInt(count) : 1);\n // decode the type\n const decodedType = getDataTypeInfo(type);\n const result = {\n type,\n components,\n byteLength: decodedType.byteLength * components,\n integer: decodedType.integer,\n signed: decodedType.signed,\n normalized: decodedType.normalized\n };\n if (webglOnly) {\n result.webglOnly = true;\n }\n return result;\n}\n/** Build a vertex format from a signed data type and a component */\nexport function makeVertexFormat(signedDataType, components, normalized) {\n const dataType = normalized\n ? getNormalizedDataType(signedDataType)\n : signedDataType;\n switch (dataType) {\n // TODO - Special cases for WebGL (not supported on WebGPU), overrides the check below\n case 'unorm8':\n if (components === 1) {\n return 'unorm8';\n }\n if (components === 3) {\n return 'unorm8x3-webgl';\n }\n return `${dataType}x${components}`;\n case 'snorm8':\n case 'uint8':\n case 'sint8':\n // WebGPU 8 bit formats must be aligned to 16 bit boundaries');\n // fall through\n case 'uint16':\n case 'sint16':\n case 'unorm16':\n case 'snorm16':\n case 'float16':\n // WebGPU 16 bit formats must be aligned to 32 bit boundaries\n if (components === 1 || components === 3) {\n throw new Error(`size: ${components}`);\n }\n return `${dataType}x${components}`;\n default:\n return components === 1 ? dataType : `${dataType}x${components}`;\n }\n}\n/** Get the vertex format for an attribute with TypedArray and size */\nexport function getVertexFormatFromAttribute(typedArray, size, normalized) {\n if (!size || size > 4) {\n throw new Error(`size ${size}`);\n }\n const components = size;\n const signedDataType = getDataType(typedArray);\n return makeVertexFormat(signedDataType, components, normalized);\n}\n/** Return a \"default\" vertex format for a certain shader data type\n The simplest vertex format that matches the shader attribute's data type */\nexport function getCompatibleVertexFormat(opts) {\n let vertexType;\n switch (opts.primitiveType) {\n case 'f32':\n vertexType = 'float32';\n break;\n case 'i32':\n vertexType = 'sint32';\n break;\n case 'u32':\n vertexType = 'uint32';\n break;\n case 'f16':\n return opts.components <= 2 ? 'float16x2' : 'float16x4';\n }\n // TODO logic does not work for float16\n if (opts.components === 1) {\n return vertexType;\n }\n return `${vertexType}x${opts.components}`;\n}\n//# sourceMappingURL=decode-vertex-format.js.map","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { Resource } from \"./resource.js\";\n/** Immutable Sampler object */\nexport class Sampler extends Resource {\n static defaultProps = {\n ...Resource.defaultProps,\n type: 'color-sampler',\n addressModeU: 'clamp-to-edge',\n addressModeV: 'clamp-to-edge',\n addressModeW: 'clamp-to-edge',\n magFilter: 'nearest',\n minFilter: 'nearest',\n mipmapFilter: 'none',\n lodMinClamp: 0,\n lodMaxClamp: 32, // Per WebGPU spec\n compare: 'less-equal',\n maxAnisotropy: 1\n };\n get [Symbol.toStringTag]() {\n return 'Sampler';\n }\n constructor(device, props) {\n props = Sampler.normalizeProps(device, props);\n super(device, props, Sampler.defaultProps);\n }\n static normalizeProps(device, props) {\n return props;\n }\n}\n//# sourceMappingURL=sampler.js.map","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { Resource } from \"./resource.js\";\nimport { Sampler } from \"./sampler.js\";\nimport { log } from \"../../utils/log.js\";\nconst BASE_DIMENSIONS = {\n '1d': '1d',\n '2d': '2d',\n '2d-array': '2d',\n cube: '2d',\n 'cube-array': '2d',\n '3d': '3d'\n};\n/**\n * Abstract Texture interface\n * Texture Object\n * https://gpuweb.github.io/gpuweb/#gputexture\n */\nexport class Texture extends Resource {\n /** The texture can be bound for use as a sampled texture in a shader */\n static SAMPLE = 0x04;\n /** The texture can be bound for use as a storage texture in a shader */\n static STORAGE = 0x08;\n /** The texture can be used as a color or depth/stencil attachment in a render pass */\n static RENDER = 0x10;\n /** The texture can be used as the source of a copy operation */\n static COPY_SRC = 0x01;\n /** he texture can be used as the destination of a copy or write operation */\n static COPY_DST = 0x02;\n /** @deprecated Use Texture.SAMPLE */\n static TEXTURE = 0x04;\n /** @deprecated Use Texture.RENDER */\n static RENDER_ATTACHMENT = 0x10;\n /** dimension of this texture */\n dimension;\n /** base dimension of this texture */\n baseDimension;\n /** format of this texture */\n format;\n /** width in pixels of this texture */\n width;\n /** height in pixels of this texture */\n height;\n /** depth of this texture */\n depth;\n /** mip levels in this texture */\n mipLevels;\n /** \"Time\" of last update. Monotonically increasing timestamp. TODO move to AsyncTexture? */\n updateTimestamp;\n get [Symbol.toStringTag]() {\n return 'Texture';\n }\n toString() {\n return `Texture(${this.id},${this.format},${this.width}x${this.height})`;\n }\n /** Do not use directly. Create with device.createTexture() */\n constructor(device, props) {\n props = Texture.normalizeProps(device, props);\n super(device, props, Texture.defaultProps);\n this.dimension = this.props.dimension;\n this.baseDimension = BASE_DIMENSIONS[this.dimension];\n this.format = this.props.format;\n // Size\n this.width = this.props.width;\n this.height = this.props.height;\n this.depth = this.props.depth;\n this.mipLevels = this.props.mipLevels;\n // Calculate size, if not provided\n if (this.props.width === undefined || this.props.height === undefined) {\n if (device.isExternalImage(props.data)) {\n const size = device.getExternalImageSize(props.data);\n this.width = size?.width || 1;\n this.height = size?.height || 1;\n }\n else {\n this.width = 1;\n this.height = 1;\n if (this.props.width === undefined || this.props.height === undefined) {\n log.warn(`${this} created with undefined width or height. This is deprecated. Use AsyncTexture instead.`)();\n }\n }\n }\n // TODO - perhaps this should be set on async write completion?\n this.updateTimestamp = device.incrementTimestamp();\n }\n /** Set sampler props associated with this texture */\n setSampler(sampler) {\n this.sampler = sampler instanceof Sampler ? sampler : this.device.createSampler(sampler);\n }\n /**\n * Create a new texture with the same parameters and optionally a different size\n * @note Textures are immutable and cannot be resized after creation, but we can create a similar texture with the same parameters but a new size.\n * @note Does not copy contents of the texture\n */\n clone(size) {\n return this.device.createTexture({ ...this.props, ...size });\n }\n /** Ensure we have integer coordinates */\n static normalizeProps(device, props) {\n const newProps = { ...props };\n // Ensure we have integer coordinates\n const { width, height } = newProps;\n if (typeof width === 'number') {\n newProps.width = Math.max(1, Math.ceil(width));\n }\n if (typeof height === 'number') {\n newProps.height = Math.max(1, Math.ceil(height));\n }\n return newProps;\n }\n // HELPERS\n /** Initialize texture with supplied props */\n // eslint-disable-next-line max-statements\n _initializeData(data) {\n // Store opts for accessors\n if (this.device.isExternalImage(data)) {\n this.copyExternalImage({\n image: data,\n width: this.width,\n height: this.height,\n depth: this.depth,\n mipLevel: 0,\n x: 0,\n y: 0,\n z: 0,\n aspect: 'all',\n colorSpace: 'srgb',\n premultipliedAlpha: false,\n flipY: false\n });\n }\n else if (data) {\n this.copyImageData({\n data,\n // width: this.width,\n // height: this.height,\n // depth: this.depth,\n mipLevel: 0,\n x: 0,\n y: 0,\n z: 0,\n aspect: 'all'\n });\n }\n }\n _normalizeCopyImageDataOptions(options_) {\n const { width, height, depth } = this;\n const options = { ...Texture.defaultCopyDataOptions, width, height, depth, ...options_ };\n const info = this.device.getTextureFormatInfo(this.format);\n if (!options_.bytesPerRow && !info.bytesPerPixel) {\n throw new Error(`bytesPerRow must be provided for texture format ${this.format}`);\n }\n options.bytesPerRow = options_.bytesPerRow || width * (info.bytesPerPixel || 4);\n options.rowsPerImage = options_.rowsPerImage || height;\n // WebGL will error if we try to copy outside the bounds of the texture\n // options.width = Math.min(options.width, this.width - options.x);\n // options.height = Math.min(options.height, this.height - options.y);\n return options;\n }\n _normalizeCopyExternalImageOptions(options_) {\n const size = this.device.getExternalImageSize(options_.image);\n const options = { ...Texture.defaultCopyExternalImageOptions, ...size, ...options_ };\n // WebGL will error if we try to copy outside the bounds of the texture\n options.width = Math.min(options.width, this.width - options.x);\n options.height = Math.min(options.height, this.height - options.y);\n return options;\n }\n /** Default options */\n static defaultProps = {\n ...Resource.defaultProps,\n data: null,\n dimension: '2d',\n format: 'rgba8unorm',\n usage: Texture.TEXTURE | Texture.RENDER_ATTACHMENT | Texture.COPY_DST,\n width: undefined,\n height: undefined,\n depth: 1,\n mipLevels: 1,\n samples: undefined,\n sampler: {},\n view: undefined\n };\n static defaultCopyDataOptions = {\n data: undefined,\n byteOffset: 0,\n bytesPerRow: undefined,\n rowsPerImage: undefined,\n mipLevel: 0,\n x: 0,\n y: 0,\n z: 0,\n aspect: 'all'\n };\n /** Default options */\n static defaultCopyExternalImageOptions = {\n image: undefined,\n sourceX: 0,\n sourceY: 0,\n width: undefined,\n height: undefined,\n depth: 1,\n mipLevel: 0,\n x: 0,\n y: 0,\n z: 0,\n aspect: 'all',\n colorSpace: 'srgb',\n premultipliedAlpha: false,\n flipY: false\n };\n}\n//# sourceMappingURL=texture.js.map","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { Resource } from \"./resource.js\";\n/** Immutable TextureView object */\nexport class TextureView extends Resource {\n get [Symbol.toStringTag]() {\n return 'TextureView';\n }\n /** Should not be constructed directly. Use `texture.createView(props)` */\n constructor(device, props) {\n super(device, props, TextureView.defaultProps);\n }\n static defaultProps = {\n ...Resource.defaultProps,\n format: undefined,\n dimension: undefined,\n aspect: 'all',\n baseMipLevel: 0,\n mipLevelCount: undefined,\n baseArrayLayer: 0,\n arrayLayerCount: undefined\n };\n}\n//# sourceMappingURL=texture-view.js.map","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n/** @returns annotated errors or warnings */\nexport function formatCompilerLog(shaderLog, source, options) {\n let formattedLog = '';\n const lines = source.split(/\\r?\\n/);\n const log = shaderLog.slice().sort((a, b) => a.lineNum - b.lineNum);\n switch (options?.showSourceCode || 'no') {\n case 'all':\n // Parse the error - note: browser and driver dependent\n let currentMessage = 0;\n for (let lineNum = 1; lineNum <= lines.length; lineNum++) {\n formattedLog += getNumberedLine(lines[lineNum - 1], lineNum, options);\n while (log.length > currentMessage && log[currentMessage].lineNum === lineNum) {\n const message = log[currentMessage++];\n formattedLog += formatCompilerMessage(message, lines, message.lineNum, {\n ...options,\n inlineSource: false\n });\n }\n }\n // Print any remaining messages\n while (log.length > currentMessage) {\n const message = log[currentMessage++];\n formattedLog += formatCompilerMessage(message, [], 0, {\n ...options,\n inlineSource: false\n });\n }\n return formattedLog;\n case 'issues':\n case 'no':\n // Parse the error - note: browser and driver dependent\n for (const message of shaderLog) {\n formattedLog += formatCompilerMessage(message, lines, message.lineNum, {\n inlineSource: options?.showSourceCode !== 'no'\n });\n }\n return formattedLog;\n }\n}\n// Helpers\n/** Format one message */\nfunction formatCompilerMessage(message, lines, lineNum, options) {\n if (options?.inlineSource) {\n const numberedLines = getNumberedLines(lines, lineNum);\n // If we got error position on line add a `^^^` indicator on next line\n const positionIndicator = message.linePos > 0 ? `${' '.repeat(message.linePos + 5)}^^^\\n` : '';\n return `\n${numberedLines}${positionIndicator}${message.type.toUpperCase()}: ${message.message}\n\n`;\n }\n const color = message.type === 'error' ? 'red' : '#8B4000'; // dark orange\n return options?.html\n ? `<div class='luma-compiler-log-error' style=\"color:${color};\"><b> ${message.type.toUpperCase()}: ${message.message}</b></div>`\n : `${message.type.toUpperCase()}: ${message.message}`;\n}\nfunction getNumberedLines(lines, lineNum, options) {\n let numberedLines = '';\n for (let lineIndex = lineNum - 2; lineIndex <= lineNum; lineIndex++) {\n const sourceLine = lines[lineIndex - 1];\n if (sourceLine !== undefined) {\n numberedLines += getNumberedLine(sourceLine, lineNum, options);\n }\n }\n return numberedLines;\n}\nfunction getNumberedLine(line, lineNum, options) {\n const escapedLine = options?.html ? escapeHTML(line) : line;\n return `${padLeft(String(lineNum), 4)}: ${escapedLine}${options?.html ? '<br/>' : '\\n'}`;\n}\n/**\n * Pads a string with a number of spaces (space characters) to the left\n * @param {String} string - string to pad\n * @param {Number} digits - number of spaces to add\n * @return {String} string - The padded string\n */\nfunction padLeft(string, paddedLength) {\n let result = '';\n for (let i = string.length; i < paddedLength; ++i) {\n result += ' ';\n }\n return result + string;\n}\nfunction escapeHTML(unsafe) {\n return unsafe\n .replaceAll('&', '&amp;')\n .replaceAll('<', '&lt;')\n .replaceAll('>', '&gt;')\n .replaceAll('\"', '&quot;')\n .replaceAll(\"'\", '&#039;');\n}\n//# sourceMappingURL=format-compiler-log.js.map","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { Resource } from \"./resource.js\";\n// import { log } from '../../utils/log';\nimport { uid } from \"../../utils/uid.js\";\nimport { formatCompilerLog } from \"../../adapter-utils/format-compiler-log.js\";\n/**\n * Immutable Shader object\n * In WebGPU the handle can be copied between threads\n */\nexport class Shader extends Resource {\n get [Symbol.toStringTag]() {\n return 'Shader';\n }\n /** The stage of this shader */\n stage;\n /** The source code of this shader */\n source;\n /** The compilation status of the shader. 'pending' if compilation is asynchronous, and on production */\n compilationStatus = 'pending';\n /** Create a new Shader instance */\n constructor(device, props) {\n props = { ...props, debugShaders: props.debugShaders || device.props.debugShaders || 'errors' };\n super(device, { id: getShaderIdFromProps(props), ...props }, Shader.defaultProps);\n this.stage = this.props.stage;\n this.source = this.props.source;\n }\n /** Get compiler log synchronously (WebGL only) */\n getCompilationInfoSync() {\n return null;\n }\n /** Get translated shader source in host platform's native language (HLSL, GLSL, and even GLSL ES), if available */\n getTranslatedSource() {\n return null;\n }\n // PORTABLE HELPERS\n /** In browser logging of errors */\n async debugShader() {\n const trigger = this.props.debugShaders;\n switch (trigger) {\n case 'never':\n return;\n case 'errors':\n // On WebGL - Don't extract the log unless errors\n if (this.compilationStatus === 'success') {\n return;\n }\n break;\n case 'warnings':\n case 'always':\n break;\n }\n const messages = await this.getCompilationInfo();\n if (trigger === 'warnings' && messages?.length === 0) {\n return;\n }\n this._displayShaderLog(messages, this.id);\n }\n // PRIVATE\n /**\n * In-browser UI logging of errors\n * TODO - this HTML formatting code should not be in Device, should be pluggable\n */\n _displayShaderLog(messages, shaderId) {\n // Return if under Node.js / incomplete `document` polyfills\n if (typeof document === 'undefined' || !document?.createElement) {\n return;\n }\n const shaderName = shaderId; // getShaderName(this.source) || ;\n const shaderTitle = `${this.stage} shader \"${shaderName}\"`;\n let htmlLog = formatCompilerLog(messages, this.source, { showSourceCode: 'all', html: true });\n // Show translated source if available\n const translatedSource = this.getTranslatedSource();\n if (translatedSource) {\n htmlLog += `<br /><br /><h1>Translated Source</h1><br /><br /><code style=\"user-select:text;\"><pre>${translatedSource}</pre></code>`;\n }\n // Make it clickable so we can copy to clipboard\n const button = document.createElement('Button');\n button.innerHTML = `\n<h1>Compilation error in ${shaderTitle}</h1><br /><br />\n<code style=\"user-select:text;\"><pre>\n${htmlLog}\n</pre></code>`;\n button.style.top = '10px';\n button.style.left = '10px';\n button.style.position = 'absolute';\n button.style.zIndex = '9999';\n button.style.width = '100%';\n button.style.textAlign = 'left';\n document.body.appendChild(button);\n const errors = document.getElementsByClassName('luma-compiler-log-error');\n errors[0]?.scrollIntoView();\n // TODO - add a small embedded copy button (instead of main button)\n button.onclick = () => {\n // const source = this.source.replaceAll('\\n', '<br />');\n const dataURI = `data:text/plain,${encodeURIComponent(this.source)}`;\n navigator.clipboard.writeText(dataURI);\n };\n // TODO - add a small embedded close button\n }\n static defaultProps = {\n ...Resource.defaultProps,\n language: 'auto',\n stage: undefined,\n source: '',\n sourceMap: null,\n entryPoint: 'main',\n debugShaders: undefined\n };\n}\n// HELPERS\n/** Deduce an id, from shader source, or supplied id, or shader type */\nfunction getShaderIdFromProps(props) {\n return getShaderName(props.source) || props.id || uid(`unnamed ${props.stage}-shader`);\n}\n/** Extracts GLSLIFY style naming of shaders: `#define SHADER_NAME ...` */\nfunction getShaderName(shader, defaultName = 'unnamed') {\n const SHADER_NAME_REGEXP = /#define[\\s*]SHADER_NAME[\\s*]([A-Za-z0-9_-]+)[\\s*]/;\n const match = SHADER_NAME_REGEXP.exec(shader);\n return match ? match[1] : defaultName;\n}\n//# sourceMappingURL=shader.js.map","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { Resource } from \"./resource.js\";\n/**\n * A compiled and linked shader program\n */\nexport class RenderPipeline extends Resource {\n get [Symbol.toStringTag]() {\n return 'RenderPipeline';\n }\n /** The merged layout */\n shaderLayout;\n /** Buffer map describing buffer interleaving etc */\n bufferLayout;\n /** The linking status of the pipeline. 'pending' if linking is asynchronous, and on production */\n linkStatus = 'pending';\n /** The hash of the pipeline */\n hash = '';\n constructor(device, props) {\n super(device, props, RenderPipeline.defaultProps);\n this.shaderLayout = this.props.shaderLayout;\n this.bufferLayout = this.props.bufferLayout || [];\n }\n static defaultProps = {\n ...Resource.defaultProps,\n vs: null,\n vertexEntryPoint: 'vertexMain',\n vsConstants: {},\n fs: null,\n fragmentEntryPoint: 'fragmentMain',\n fsConstants: {},\n shaderLayout: null,\n bufferLayout: [],\n topology: 'triangle-list',\n colorAttachmentFormats: undefined,\n depthStencilAttachmentFormat: undefined,\n parameters: {},\n bindings: {},\n uniforms: {}\n };\n}\n//# sourceMappingURL=render-pipeline.js.map","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { Resource } from \"./resource.js\";\n/**\n * A compiled and linked shader program for compute\n */\nexport class ComputePipeline extends Resource {\n get [Symbol.toStringTag]() {\n return 'ComputePipeline';\n }\n hash = '';\n /** The merged shader layout */\n shaderLayout;\n constructor(device, props) {\n super(device, props, ComputePipeline.defaultProps);\n this.shaderLayout = props.shaderLayout;\n }\n static defaultProps = {\n ...Resource.defaultProps,\n shader: undefined,\n entryPoint: undefined,\n constants: {},\n shaderLayout: undefined\n };\n}\n//# sourceMappingURL=compute-pipeline.js.map","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n/** Split a uniform type string into type and components */\nexport function getVariableShaderTypeInfo(format) {\n const decoded = UNIFORM_FORMATS[format];\n return decoded;\n}\n/** Decodes a vertex type, returning byte length and flags (integer, signed, normalized) */\nexport function getAttributeShaderTypeInfo(attributeType) {\n const [primitiveType, components] = TYPE_INFO[attributeType];\n const integer = primitiveType === 'i32' || primitiveType === 'u32';\n const signed = primitiveType !== 'u32';\n const byteLength = PRIMITIVE_TYPE_SIZES[primitiveType] * components;\n return {\n primitiveType,\n components,\n byteLength,\n integer,\n signed\n };\n}\nexport function makeShaderAttributeType(primitiveType, components) {\n return components === 1 ? primitiveType : `vec${components}<${primitiveType}>`;\n}\nexport function resolveAttributeShaderTypeAlias(alias) {\n return WGSL_ATTRIBUTE_TYPE_ALIAS_MAP[alias] || alias;\n}\nexport function resolveVariableShaderTypeAlias(alias) {\n return WGSL_VARIABLE_TYPE_ALIAS_MAP[alias] || alias;\n}\n// TABLES\nconst PRIMITIVE_TYPE_SIZES = {\n f32: 4,\n f16: 2,\n i32: 4,\n u32: 4\n // 'bool-webgl': 4,\n};\n/** All valid shader attribute types. A table guarantees exhaustive list and fast execution */\nconst TYPE_INFO = {\n f32: ['f32', 1],\n 'vec2<f32>': ['f32', 2],\n 'vec3<f32>': ['f32', 3],\n 'vec4<f32>': ['f32', 4],\n f16: ['f16', 1],\n 'vec2<f16>': ['f16', 2],\n 'vec3<f16>': ['f16', 3],\n 'vec4<f16>': ['f16', 4],\n i32: ['i32', 1],\n 'vec2<i32>': ['i32', 2],\n 'vec3<i32>': ['i32', 3],\n 'vec4<i32>': ['i32', 4],\n u32: ['u32', 1],\n 'vec2<u32>': ['u32', 2],\n 'vec3<u32>': ['u32', 3],\n 'vec4<u32>': ['u32', 4]\n};\n/** @todo These tables are quite big, consider parsing type strings instead */\nconst UNIFORM_FORMATS = {\n f32: { type: 'f32', components: 1 },\n f16: { type: 'f16', components: 1 },\n i32: { type: 'i32', components: 1 },\n u32: { type: 'u32', components: 1 },\n // 'bool-webgl': {type: 'bool-webgl', components: 1},\n 'vec2<f32>': { type: 'f32', components: 2 },\n 'vec3<f32>': { type: 'f32', components: 3 },\n 'vec4<f32>': { type: 'f32', components: 4 },\n 'vec2<f16>': { type: 'f16', components: 2 },\n 'vec3<f16>': { type: 'f16', components: 3 },\n 'vec4<f16>': { type: 'f16', components: 4 },\n 'vec2<i32>': { type: 'i32', components: 2 },\n 'vec3<i32>': { type: 'i32', components: 3 },\n 'vec4<i32>': { type: 'i32', components: 4 },\n 'vec2<u32>': { type: 'u32', components: 2 },\n 'vec3<u32>': { type: 'u32', components: 3 },\n 'vec4<u32>': { type: 'u32', components: 4 },\n 'mat2x2<f32>': { type: 'f32', components: 4 },\n 'mat2x3<f32>': { type: 'f32', components: 6 },\n 'mat2x4<f32>': { type: 'f32', components: 8 },\n 'mat3x2<f32>': { type: 'f32', components: 6 },\n 'mat3x3<f32>': { type: 'f32', components: 9 },\n 'mat3x4<f32>': { type: 'f32', components: 12 },\n 'mat4x2<f32>': { type: 'f32', components: 8 },\n 'mat4x3<f32>': { type: 'f32', components: 12 },\n 'mat4x4<f32>': { type: 'f32', components: 16 },\n 'mat2x2<f16>': { type: 'f16', components: 4 },\n 'mat2x3<f16>': { type: 'f16', components: 6 },\n 'mat2x4<f16>': { type: 'f16', components: 8 },\n 'mat3x2<f16>': { type: 'f16', components: 6 },\n 'mat3x3<f16>': { type: 'f16', components: 9 },\n 'mat3x4<f16>': { type: 'f16', components: 12 },\n 'mat4x2<f16>': { type: 'f16', components: 8 },\n 'mat4x3<f16>': { type: 'f16', components: 12 },\n 'mat4x4<f16>': { type: 'f16', components: 16 },\n 'mat2x2<i32>': { type: 'i32', components: 4 },\n 'mat2x3<i32>': { type: 'i32', components: 6 },\n 'mat2x4<i32>': { type: 'i32', components: 8 },\n 'mat3x2<i32>': { type: 'i32', components: 6 },\n 'mat3x3<i32>': { type: 'i32', components: 9 },\n 'mat3x4<i32>': { type: 'i32', components: 12 },\n 'mat4x2<i32>': { type: 'i32', components: 8 },\n 'mat4x3<i32>': { type: 'i32', components: 12 },\n 'mat4x4<i32>': { type: 'i32', components: 16 },\n 'mat2x2<u32>': { type: 'u32', components: 4 },\n 'mat2x3<u32>': { type: 'u32', components: 6 },\n 'mat2x4<u32>': { type: 'u32', components: 8 },\n 'mat3x2<u32>': { type: 'u32', components: 6 },\n 'mat3x3<u32>': { type: 'u32', components: 9 },\n 'mat3x4<u32>': { type: 'u32', components: 12 },\n 'mat4x2<u32>': { type: 'u32', components: 8 },\n 'mat4x3<u32>': { type: 'u32', components: 12 },\n 'mat4x4<u32>': { type: 'u32', components: 16 }\n};\n/** Predeclared aliases @see https://www.w3.org/TR/WGSL/#vector-types */\nexport const WGSL_ATTRIBUTE_TYPE_ALIAS_MAP = {\n vec2i: 'vec2<i32>',\n vec3i: 'vec3<i32>',\n vec4i: 'vec4<i32>',\n vec2u: 'vec2<u32>',\n vec3u: 'vec3<u32>',\n vec4u: 'vec4<u32>',\n vec2f: 'vec2<f32>',\n vec3f: 'vec3<f32>',\n vec4f: 'vec4<f32>',\n // Requires the f16 extension.\n vec2h: 'vec2<f16>',\n vec3h: 'vec3<f16>',\n vec4h: 'vec4<f16>'\n};\n/** @todo These tables are quite big, consider parsing alias strings instead */\nexport const WGSL_VARIABLE_TYPE_ALIAS_MAP = {\n ...WGSL_ATTRIBUTE_TYPE_ALIAS_MAP,\n mat2x2f: 'mat2x2<f32>',\n mat2x3f: 'mat2x3<f32>',\n mat2x4f: 'mat2x4<f32>',\n mat3x2f: 'mat3x2<f32>',\n mat3x3f: 'mat3x3<f32>',\n mat3x4f: 'mat3x4<f32>',\n mat4x2f: 'mat4x2<f32>',\n mat4x3f: 'mat4x3<f32>',\n mat4x4f: 'mat4x4<f32>',\n mat2x2i: 'mat2x2<i32>',\n mat2x3i: 'mat2x3<i32>',\n mat2x4i: 'mat2x4<i32>',\n mat3x2i: 'mat3x2<i32>',\n mat3x3i: 'mat3x3<i32>',\n mat3x4i: 'mat3x4<i32>',\n mat4x2i: 'mat4x2<i32>',\n mat4x3i: 'mat4x3<i32>',\n mat4x4i: 'mat4x4<i32>',\n mat2x2u: 'mat2x2<u32>',\n mat2x3u: 'mat2x3<u32>',\n mat2x4u: 'mat2x4<u32>',\n mat3x2u: 'mat3x2<u32>',\n mat3x3u: 'mat3x3<u32>',\n mat3x4u: 'mat3x4<u32>',\n mat4x2u: 'mat4x2<u32>',\n mat4x3u: 'mat4x3<u32>',\n mat4x4u: 'mat4x4<u32>',\n mat2x2h: 'mat2x2<f16>',\n mat2x3h: 'mat2x3<f16>',\n mat2x4h: 'mat2x4<f16>',\n mat3x2h: 'mat3x2<f16>',\n mat3x3h: 'mat3x3<f16>',\n mat3x4h: 'mat3x4<f16>',\n mat4x2h: 'mat4x2<f16>',\n mat4x3h: 'mat4x3<f16>',\n mat4x4h: 'mat4x4<f16>'\n};\n//# sourceMappingURL=decode-shader-types.js.map","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { log } from \"../utils/log.js\";\nimport { getAttributeShaderTypeInfo } from \"../shadertypes/data-types/decode-shader-types.js\";\nimport { getVertexFormatInfo, getCompatibleVertexFormat } from \"../shadertypes/vertex-arrays/decode-vertex-format.js\";\n/**\n * Map from \"attribute names\" to \"resolved attribute infos\"\n * containing information about both buffer layouts and shader attribute declarations\n */\nexport function getAttributeInfosFromLayouts(shaderLayout, bufferLayout) {\n const attributeInfos = {};\n for (const attribute of shaderLayout.attributes) {\n const attributeInfo = getAttributeInfoFromLayouts(shaderLayout, bufferLayout, attribute.name);\n if (attributeInfo) {\n attributeInfos[attribute.name] = attributeInfo;\n }\n }\n return attributeInfos;\n}\n/**\n * Array indexed by \"location\" holding \"resolved attribute infos\"\n */\nexport function getAttributeInfosByLocation(shaderLayout, bufferLayout, maxVertexAttributes = 16) {\n const attributeInfos = getAttributeInfosFromLayouts(shaderLayout, bufferLayout);\n const locationInfos = new Array(maxVertexAttributes).fill(null);\n for (const attributeInfo of Object.values(attributeInfos)) {\n locationInfos[attributeInfo.location] = attributeInfo;\n }\n return locationInfos;\n}\n/**\n * Get the combined information from a shader layout and a buffer layout for a specific attribute\n */\nfunction getAttributeInfoFromLayouts(shaderLayout, bufferLayout, name) {\n const shaderDeclaration = getAttributeFromShaderLayout(shaderLayout, name);\n const bufferMapping = getAttributeFromBufferLayout(bufferLayout, name);\n // TODO should no longer happen\n if (!shaderDeclaration) {\n // || !bufferMapping\n return null;\n }\n const attributeTypeInfo = getAttributeShaderTypeInfo(shaderDeclaration.type);\n const defaultVertexFormat = getCompatibleVertexFormat(attributeTypeInfo);\n const vertexFormat = bufferMapping?.vertexFormat || defaultVertexFormat;\n const vertexFormatInfo = getVertexFormatInfo(vertexFormat);\n return {\n attributeName: bufferMapping?.attributeName || shaderDeclaration.name,\n bufferName: bufferMapping?.bufferName || shaderDeclaration.name,\n location: shaderDeclaration.location,\n shaderType: shaderDeclaration.type,\n primitiveType: attributeTypeInfo.primitiveType,\n shaderComponents: attributeTypeInfo.components,\n vertexFormat,\n bufferDataType: vertexFormatInfo.type,\n bufferComponents: vertexFormatInfo.components,\n // normalized is a property of the buffer's vertex format\n normalized: vertexFormatInfo.normalized,\n // integer is a property of the shader declaration\n integer: attributeTypeInfo.integer,\n stepMode: bufferMapping?.stepMode || shaderDeclaration.stepMode || 'vertex',\n byteOffset: bufferMapping?.byteOffset || 0,\n byteStride: bufferMapping?.byteStride || 0\n };\n}\nfunction getAttributeFromShaderLayout(shaderLayout, name) {\n const attribute = shaderLayout.attributes.find(attr => attr.name === name);\n if (!attribute) {\n log.warn(`shader layout attribute \"${name}\" not present in shader`);\n }\n return attribute || null;\n}\nfunction getAttributeFromBufferLayout(bufferLayouts, name) {\n // Check that bufferLayouts are valid (each either has format or attribute)\n checkBufferLayouts(bufferLayouts);\n let bufferLayoutInfo = getAttributeFromShortHand(bufferLayouts, name);\n if (bufferLayoutInfo) {\n return bufferLayoutInfo;\n }\n bufferLayoutInfo = getAttributeFromAttributesList(bufferLayouts, name);\n if (bufferLayoutInfo) {\n return bufferLayoutInfo;\n }\n // Didn't find...\n log.warn(`layout for attribute \"${name}\" not present in buffer layout`);\n return null;\n}\n/** Check that bufferLayouts are valid (each either has format or attribute) */\nfunction checkBufferLayouts(bufferLayouts) {\n for (const bufferLayout of bufferLayouts) {\n if ((bufferLayout.attributes && bufferLayout.format) ||\n (!bufferLayout.attributes && !bufferLayout.format)) {\n log.warn(`BufferLayout ${name} must have either 'attributes' or 'format' field`);\n }\n }\n}\n/** Get attribute from format shorthand if specified */\nfunction getAttributeFromShortHand(bufferLayouts, name) {\n for (const bufferLayout of bufferLayouts) {\n if (bufferLayout.format && bufferLayout.name === name) {\n return {\n attributeName: bufferLayout.name,\n bufferName: name,\n stepMode: bufferLayout.stepMode,\n vertexFormat: bufferLayout.format,\n // If offset is needed, use `attributes` field.\n byteOffset: 0,\n byteStride: bufferLayout.byteStride || 0\n };\n }\n }\n return null;\n}\n/**\n * Search attribute mappings (e.g. interleaved attributes) for buffer mapping.\n * Not the name of the buffer might be the same as one of the interleaved attributes.\n */\nfunction getAttributeFromAttributesList(bufferLayouts, name) {\n for (const bufferLayout of bufferLayouts) {\n let byteStride = bufferLayout.byteStride;\n // Calculate a default byte stride if not provided\n if (typeof bufferLayout.byteStride !== 'number') {\n for (const attributeMapping of bufferLayout.attributes || []) {\n const info = getVertexFormatInfo(attributeMapping.format);\n // @ts-ignore\n byteStride += info.byteLength;\n }\n }\n const attributeMapping = bufferLayout.attributes?.find(mapping => mapping.attribute === name);\n if (attributeMapping) {\n return {\n attributeName: attributeMapping.attribute,\n bufferName: bufferLayout.name,\n stepMode: bufferLayout.stepMode,\n vertexFormat: attributeMapping.format,\n byteOffset: attributeMapping.byteOffset,\n // @ts-ignore\n byteStride\n };\n }\n }\n return null;\n}\n//# sourceMappingURL=get-attribute-from-layouts.js.map","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nlet arrayBuffer;\nexport function getScratchArrayBuffer(byteLength) {\n if (!arrayBuffer || arrayBuffer.byteLength < byteLength) {\n arrayBuffer = new ArrayBuffer(byteLength);\n }\n return arrayBuffer;\n}\nexport function getScratchArray(Type, length) {\n const scratchArrayBuffer = getScratchArrayBuffer(Type.BYTES_PER_ELEMENT * length);\n return new Type(scratchArrayBuffer, 0, length); // arrayBuffer, byteOffset, length (in elements)\n}\n//# sourceMappingURL=array-utils-flat.js.map","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n/**\n * Check is an array is a typed array\n * @param value value to be tested\n * @returns input as TypedArray, or null\n * @todo this should be provided by @math.gl/types\n */\nexport function isTypedArray(value) {\n return ArrayBuffer.isView(value) && !(value instanceof DataView);\n}\n/**\n * Check is an array is a numeric array (typed array or array of numbers)\n * @param value value to be tested\n * @returns input as NumberArray, or null\n * @todo this should be provided by @math.gl/types\n */\nexport function isNumberArray(value) {\n if (Array.isArray(value)) {\n return value.length === 0 || typeof value[0] === 'number';\n }\n return isTypedArray(value);\n}\n//# sourceMappingURL=is-array.js.map","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { alignTo } from \"../shadertypes/data-types/decode-data-types.js\";\nimport { getVariableShaderTypeInfo } from \"../shadertypes/data-types/decode-shader-types.js\";\nimport { getScratchArrayBuffer } from \"../utils/array-utils-flat.js\";\nimport { isNumberArray } from \"../utils/is-array.js\";\nimport { log } from \"../utils/log.js\";\n/**\n * Smallest buffer size that can be used for uniform buffers.\n * TODO - does this depend on device?\n */\nconst minBufferSize = 1024;\n/**\n * Std140 layout for uniform buffers\n * Supports manual listing of uniforms\n */\nexport class UniformBufferLayout {\n layout = {};\n /** number of bytes needed for buffer allocation */\n byteLength;\n /** Create a new UniformBufferLayout given a map of attributes. */\n constructor(uniformTypes, uniformSizes = {}) {\n /** number of 4 byte slots taken */\n let size = 0;\n // Add layout (type, size and offset) definitions for each uniform in the layout\n for (const [key, uniformType] of Object.entries(uniformTypes)) {\n const typeAndComponents = getVariableShaderTypeInfo(uniformType);\n const { type, components } = typeAndComponents;\n // Calculate total count for uniform arrays.\n const count = components * (uniformSizes?.[key] ?? 1);\n // First, align (bump) current offset to an even multiple of current object (1, 2, 4)\n size = alignTo(size, count);\n // Use the aligned size as the offset of the current uniform.\n const offset = size;\n // Then, add our object's padded size ((1, 2, multiple of 4) to the current offset\n size += count;\n this.layout[key] = { type, size: count, offset };\n }\n size += (4 - (size % 4)) % 4;\n const actualByteLength = size * 4;\n this.byteLength = Math.max(actualByteLength, minBufferSize);\n }\n /** Get the data for the complete buffer */\n getData(uniformValues) {\n // Allocate three typed arrays pointing at same memory\n const arrayBuffer = getScratchArrayBuffer(this.byteLength);\n const typedArrays = {\n i32: new Int32Array(arrayBuffer),\n u32: new Uint32Array(arrayBuffer),\n f32: new Float32Array(arrayBuffer),\n // TODO not implemented\n f16: new Uint16Array(arrayBuffer)\n };\n for (const [name, value] of Object.entries(uniformValues)) {\n const uniformLayout = this.layout[name];\n if (!uniformLayout) {\n log.warn(`Supplied uniform value ${name} not present in uniform block layout`)();\n // eslint-disable-next-line no-continue\n continue;\n }\n const { type, size, offset } = uniformLayout;\n const typedArray = typedArrays[type];\n if (size === 1) {\n if (typeof value !== 'number' && typeof value !== 'boolean') {\n log.warn(`Supplied value for single component uniform ${name} is not a number: ${value}`)();\n // eslint-disable-next-line no-continue\n continue;\n }\n // single value -> just set it\n typedArray[offset] = Number(value);\n }\n else {\n if (!isNumberArray(value)) {\n log.warn(`Supplied value for multi component / array uniform ${name} is not a numeric array: ${value}`)();\n // eslint-disable-next-line no-continue\n continue;\n }\n // vector/matrix -> copy the supplied (typed) array, starting from offset\n // TODO: we should limit or check size in case the supplied data overflows\n typedArray.set(value, offset);\n }\n }\n return new Uint8Array(arrayBuffer, 0, this.byteLength);\n }\n /** Does this layout have a field with specified name */\n has(name) {\n return Boolean(this.layout[name]);\n }\n /** Get offset and size for a field with specified name */\n get(name) {\n const layout = this.layout[name];\n return layout;\n }\n}\n//# sourceMappingURL=uniform-buffer-layout.js.map","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { isNumberArray } from \"./is-array.js\";\n/** Test if two arrays are deep equal, with a length limit that defaults to 16 */\nexport function arrayEqual(a, b, limit = 16) {\n if (a !== b) {\n return false;\n }\n const arrayA = a;\n const arrayB = b;\n if (!isNumberArray(arrayA)) {\n return false;\n }\n if (isNumberArray(arrayB) && arrayA.length === arrayB.length) {\n for (let i = 0; i < arrayA.length; ++i) {\n if (arrayB[i] !== arrayA[i]) {\n return false;\n }\n }\n }\n return true;\n}\n/** Copy a value */\nexport function arrayCopy(a) {\n if (isNumberArray(a)) {\n return a.slice();\n }\n return a;\n}\n//# sourceMappingURL=array-equal.js.map","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { arrayEqual, arrayCopy } from \"../utils/array-equal.js\";\n/**\n * A uniform block holds values of the of uniform values for one uniform block / buffer.\n * It also does some book keeping on what has changed, to minimize unnecessary writes to uniform buffers.\n */\nexport class UniformBlock {\n name;\n uniforms = {};\n modifiedUniforms = {};\n modified = true;\n bindingLayout = {};\n needsRedraw = 'initialized';\n constructor(props) {\n this.name = props?.name || 'unnamed';\n // TODO - Extract uniform layout from the shaderLayout object\n if (props?.name && props?.shaderLayout) {\n const binding = props?.shaderLayout.bindings?.find(binding_ => binding_.type === 'uniform' && binding_.name === props?.name);\n if (!binding) {\n throw new Error(props?.name);\n }\n const uniformBlock = binding;\n for (const uniform of uniformBlock.uniforms || []) {\n this.bindingLayout[uniform.name] = uniform;\n }\n }\n }\n /** Set a map of uniforms */\n setUniforms(uniforms) {\n for (const [key, value] of Object.entries(uniforms)) {\n this._setUniform(key, value);\n if (!this.needsRedraw) {\n this.setNeedsRedraw(`${this.name}.${key}=${value}`);\n }\n }\n }\n setNeedsRedraw(reason) {\n this.needsRedraw = this.needsRedraw || reason;\n }\n /** Returns all uniforms */\n getAllUniforms() {\n // @ts-expect-error\n this.modifiedUniforms = {};\n this.needsRedraw = false;\n return (this.uniforms || {});\n }\n /** Set a single uniform */\n _setUniform(key, value) {\n if (arrayEqual(this.uniforms[key], value)) {\n return;\n }\n this.uniforms[key] = arrayCopy(value);\n this.modifiedUniforms[key] = true;\n this.modified = true;\n }\n}\n//# sourceMappingURL=uniform-block.js.map","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { Buffer } from \"../adapter/resources/buffer.js\";\nimport { log } from \"../utils/log.js\";\nimport { UniformBlock } from \"./uniform-block.js\";\nimport { UniformBufferLayout } from \"./uniform-buffer-layout.js\";\n/**\n * A uniform store holds a uniform values for one or more uniform blocks,\n * - It can generate binary data for any uniform buffer\n * - It can manage a uniform buffer for each block\n * - It can update managed uniform buffers with a single call\n * - It performs some book keeping on what has changed to minimize unnecessary writes to uniform buffers.\n */\nexport class UniformStore {\n /** Stores the uniform values for each uniform block */\n uniformBlocks = new Map();\n /** Can generate data for a uniform buffer for each block from data */\n uniformBufferLayouts = new Map();\n /** Actual buffer for the blocks */\n uniformBuffers = new Map();\n /**\n * Create a new UniformStore instance\n * @param blocks\n */\n constructor(blocks) {\n for (const [bufferName, block] of Object.entries(blocks)) {\n const uniformBufferName = bufferName;\n // Create a layout object to help us generate correctly formatted binary uniform buffers\n const uniformBufferLayout = new UniformBufferLayout(block.uniformTypes ?? {}, block.uniformSizes ?? {});\n this.uniformBufferLayouts.set(uniformBufferName, uniformBufferLayout);\n // Create a Uniform block to store the uniforms for each buffer.\n const uniformBlock = new UniformBlock({ name: bufferName });\n uniformBlock.setUniforms(block.defaultUniforms || {});\n this.uniformBlocks.set(uniformBufferName, uniformBlock);\n }\n }\n /** Destroy any managed uniform buffers */\n destroy() {\n for (const uniformBuffer of this.uniformBuffers.values()) {\n uniformBuffer.destroy();\n }\n }\n /**\n * Set uniforms\n * Makes all properties partial\n */\n setUniforms(uniforms) {\n for (const [blockName, uniformValues] of Object.entries(uniforms)) {\n this.uniformBlocks.get(blockName)?.setUniforms(uniformValues);\n // We leverage logging in updateUniformBuffers(), even though slightly less efficient\n // this.updateUniformBuffer(blockName);\n }\n this.updateUniformBuffers();\n }\n /** Get the required minimum length of the uniform buffer */\n getUniformBufferByteLength(uniformBufferName) {\n return this.uniformBufferLayouts.get(uniformBufferName)?.byteLength || 0;\n }\n /** Get formatted binary memory that can be uploaded to a buffer */\n getUniformBufferData(uniformBufferName) {\n const uniformValues = this.uniformBlocks.get(uniformBufferName)?.getAllUniforms() || {};\n // @ts-ignore\n return this.uniformBufferLayouts.get(uniformBufferName)?.getData(uniformValues);\n }\n /**\n * Creates an unmanaged uniform buffer (umnanaged means that application is responsible for destroying it)\n * The new buffer is initialized with current / supplied values\n */\n createUniformBuffer(device, uniformBufferName, uniforms) {\n if (uniforms) {\n this.setUniforms(uniforms);\n }\n const byteLength = this.getUniformBufferByteLength(uniformBufferName);\n const uniformBuffer = device.createBuffer({\n usage: Buffer.UNIFORM | Buffer.COPY_DST,\n byteLength\n });\n // Note that this clears the needs redraw flag\n const uniformBufferData = this.getUniformBufferData(uniformBufferName);\n uniformBuffer.write(uniformBufferData);\n return uniformBuffer;\n }\n /** Get the managed uniform buffer. \"managed\" resources are destroyed when the uniformStore is destroyed. */\n getManagedUniformBuffer(device, uniformBufferName) {\n if (!this.uniformBuffers.get(uniformBufferName)) {\n const byteLength = this.getUniformBufferByteLength(uniformBufferName);\n const uniformBuffer = device.createBuffer({\n usage: Buffer.UNIFORM | Buffer.COPY_DST,\n byteLength\n });\n this.uniformBuffers.set(uniformBufferName, uniformBuffer);\n }\n // this.updateUniformBuffers();\n // @ts-ignore\n return this.uniformBuffers.get(uniformBufferName);\n }\n /** Updates all uniform buffers where values have changed */\n updateUniformBuffers() {\n let reason = false;\n for (const uniformBufferName of this.uniformBlocks.keys()) {\n const bufferReason = this.updateUniformBuffer(uniformBufferName);\n reason ||= bufferReason;\n }\n if (reason) {\n log.log(3, `UniformStore.updateUniformBuffers(): ${reason}`)();\n }\n return reason;\n }\n /** Update one uniform buffer. Only updates if values have changed */\n updateUniformBuffer(uniformBufferName) {\n const uniformBlock = this.uniformBlocks.get(uniformBufferName);\n let uniformBuffer = this.uniformBuffers.get(uniformBufferName);\n let reason = false;\n if (uniformBuffer && uniformBlock?.needsRedraw) {\n reason ||= uniformBlock.needsRedraw;\n // This clears the needs redraw flag\n const uniformBufferData = this.getUniformBufferData(uniformBufferName);\n uniformBuffer = this.uniformBuffers.get(uniformBufferName);\n uniformBuffer?.write(uniformBufferData);\n // logging - TODO - don't query the values unnecessarily\n const uniformValues = this.uniformBlocks.get(uniformBufferName)?.getAllUniforms();\n log.log(4, `Writing to uniform buffer ${String(uniformBufferName)}`, uniformBufferData, uniformValues)();\n }\n return reason;\n }\n}\n//# sourceMappingURL=uniform-store.js.map","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n// Recommendation is to ignore message but current test suite checks agains the\n// message so keep it for now.\nexport function assert(condition, message) {\n if (!condition) {\n throw new Error(message || 'shadertools: assertion failed.');\n }\n}\n//# sourceMappingURL=assert.js.map","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { assert } from \"../utils/assert.js\";\n/** Minimal validators for number and array types */\nconst DEFAULT_PROP_VALIDATORS = {\n number: {\n type: 'number',\n validate(value, propType) {\n return (Number.isFinite(value) &&\n typeof propType === 'object' &&\n (propType.max === undefined || value <= propType.max) &&\n (propType.min === undefined || value >= propType.min));\n }\n },\n array: {\n type: 'array',\n validate(value, propType) {\n return Array.isArray(value) || ArrayBuffer.isView(value);\n }\n }\n};\n/**\n * Parse a list of property types into property definitions that can be used to validate\n * values passed in by applications.\n * @param propTypes\n * @returns\n */\nexport function makePropValidators(propTypes) {\n const propValidators = {};\n for (const [name, propType] of Object.entries(propTypes)) {\n propValidators[name] = makePropValidator(propType);\n }\n return propValidators;\n}\n/**\n * Validate a map of user supplied properties against a map of validators\n * Inject default values when user doesn't supply a property\n * @param properties\n * @param propValidators\n * @returns\n */\nexport function getValidatedProperties(properties, propValidators, errorMessage) {\n const validated = {};\n for (const [key, propsValidator] of Object.entries(propValidators)) {\n if (properties && key in properties && !propsValidator.private) {\n if (propsValidator.validate) {\n assert(propsValidator.validate(properties[key], propsValidator), `${errorMessage}: invalid ${key}`);\n }\n validated[key] = properties[key];\n }\n else {\n // property not supplied - use default value\n validated[key] = propsValidator.value;\n }\n }\n // TODO - warn for unused properties that don't match a validator?\n return validated;\n}\n/**\n * Creates a property validator for a prop type. Either contains:\n * - a valid prop type object ({type, ...})\n * - or just a default value, in which case type and name inference is used\n */\nfunction makePropValidator(propType) {\n let type = getTypeOf(propType);\n if (type !== 'object') {\n return { value: propType, ...DEFAULT_PROP_VALIDATORS[type], type };\n }\n // Special handling for objects\n if (typeof propType === 'object') {\n if (!propType) {\n return { type: 'object', value: null };\n }\n if (propType.type !== undefined) {\n return { ...propType, ...DEFAULT_PROP_VALIDATORS[propType.type], type: propType.type };\n }\n // If no type and value this object is likely the value\n if (propType.value === undefined) {\n return { type: 'object', value: propType };\n }\n type = getTypeOf(propType.value);\n return { ...propType, ...DEFAULT_PROP_VALIDATORS[type], type };\n }\n throw new Error('props');\n}\n/**\n * \"improved\" version of javascript typeof that can distinguish arrays and null values\n */\nfunction getTypeOf(value) {\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n return 'array';\n }\n return typeof value;\n}\n//# sourceMappingURL=prop-types.js.map","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nexport const MODULE_INJECTORS_VS = /* glsl */ `\\\n#ifdef MODULE_LOGDEPTH\n logdepth_adjustPosition(gl_Position);\n#endif\n`;\nexport const MODULE_INJECTORS_FS = /* glsl */ `\\\n#ifdef MODULE_MATERIAL\n fragColor = material_filterColor(fragColor);\n#endif\n\n#ifdef MODULE_LIGHTING\n fragColor = lighting_filterColor(fragColor);\n#endif\n\n#ifdef MODULE_FOG\n fragColor = fog_filterColor(fragColor);\n#endif\n\n#ifdef MODULE_PICKING\n fragColor = picking_filterHighlightColor(fragColor);\n fragColor = picking_filterPickingColor(fragColor);\n#endif\n\n#ifdef MODULE_LOGDEPTH\n logdepth_setFragDepth();\n#endif\n`;\n//# sourceMappingURL=module-injectors.js.map","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { MODULE_INJECTORS_VS, MODULE_INJECTORS_FS } from \"../../module-injectors.js\";\nimport { assert } from \"../utils/assert.js\";\n// TODO - experimental\nconst MODULE_INJECTORS = {\n vertex: MODULE_INJECTORS_VS,\n fragment: MODULE_INJECTORS_FS\n};\nconst REGEX_START_OF_MAIN = /void\\s+main\\s*\\([^)]*\\)\\s*\\{\\n?/; // Beginning of main\nconst REGEX_END_OF_MAIN = /}\\n?[^{}]*$/; // End of main, assumes main is last function\nconst fragments = [];\nexport const DECLARATION_INJECT_MARKER = '__LUMA_INJECT_DECLARATIONS__';\n/**\n *\n */\nexport function normalizeInjections(injections) {\n const result = { vertex: {}, fragment: {} };\n for (const hook in injections) {\n let injection = injections[hook];\n const stage = getHookStage(hook);\n if (typeof injection === 'string') {\n injection = {\n order: 0,\n injection\n };\n }\n result[stage][hook] = injection;\n }\n return result;\n}\nfunction getHookStage(hook) {\n const type = hook.slice(0, 2);\n switch (type) {\n case 'vs':\n return 'vertex';\n case 'fs':\n return 'fragment';\n default:\n throw new Error(type);\n }\n}\n/**\n// A minimal shader injection/templating system.\n// RFC: https://github.com/visgl/luma.gl/blob/7.0-release/dev-docs/RFCs/v6.0/shader-injection-rfc.md\n * @param source\n * @param type\n * @param inject\n * @param injectStandardStubs\n * @returns\n */\n// eslint-disable-next-line complexity\nexport function injectShader(source, stage, inject, injectStandardStubs = false) {\n const isVertex = stage === 'vertex';\n for (const key in inject) {\n const fragmentData = inject[key];\n fragmentData.sort((a, b) => a.order - b.order);\n fragments.length = fragmentData.length;\n for (let i = 0, len = fragmentData.length; i < len; ++i) {\n fragments[i] = fragmentData[i].injection;\n }\n const fragmentString = `${fragments.join('\\n')}\\n`;\n switch (key) {\n // declarations are injected before the main function\n case 'vs:#decl':\n if (isVertex) {\n source = source.replace(DECLARATION_INJECT_MARKER, fragmentString);\n }\n break;\n // inject code at the beginning of the main function\n case 'vs:#main-start':\n if (isVertex) {\n source = source.replace(REGEX_START_OF_MAIN, (match) => match + fragmentString);\n }\n break;\n // inject code at the end of main function\n case 'vs:#main-end':\n if (isVertex) {\n source = source.replace(REGEX_END_OF_MAIN, (match) => fragmentString + match);\n }\n break;\n // declarations are injected before the main function\n case 'fs:#decl':\n if (!isVertex) {\n source = source.replace(DECLARATION_INJECT_MARKER, fragmentString);\n }\n break;\n // inject code at the beginning of the main function\n case 'fs:#main-start':\n if (!isVertex) {\n source = source.replace(REGEX_START_OF_MAIN, (match) => match + fragmentString);\n }\n break;\n // inject code at the end of main function\n case 'fs:#main-end':\n if (!isVertex) {\n source = source.replace(REGEX_END_OF_MAIN, (match) => fragmentString + match);\n }\n break;\n default:\n // TODO(Tarek): I think this usage should be deprecated.\n // inject code after key, leaving key in place\n source = source.replace(key, (match) => match + fragmentString);\n }\n }\n // Remove if it hasn't already been replaced\n source = source.replace(DECLARATION_INJECT_MARKER, '');\n // Finally, if requested, insert an automatic module injector chunk\n if (injectStandardStubs) {\n source = source.replace(/\\}\\s*$/, (match) => match + MODULE_INJECTORS[stage]);\n }\n return source;\n}\n// Takes an array of inject objects and combines them into one\nexport function combineInjects(injects) {\n const result = {};\n assert(Array.isArray(injects) && injects.length > 1);\n injects.forEach(inject => {\n for (const key in inject) {\n result[key] = result[key] ? `${result[key]}\\n${inject[key]}` : inject[key];\n }\n });\n return result;\n}\n//# sourceMappingURL=shader-injections.js.map","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { makePropValidators, getValidatedProperties } from \"../filters/prop-types.js\";\nimport { normalizeInjections } from \"../shader-assembly/shader-injections.js\";\n// SHNDER MODULE API\nexport function initializeShaderModules(modules) {\n modules.map((module) => initializeShaderModule(module));\n}\nexport function initializeShaderModule(module) {\n if (module.instance) {\n return;\n }\n initializeShaderModules(module.dependencies || []);\n const { propTypes = {}, deprecations = [], \n // defines = {},\n inject = {} } = module;\n const instance = {\n normalizedInjections: normalizeInjections(inject),\n parsedDeprecations: parseDeprecationDefinitions(deprecations)\n };\n if (propTypes) {\n instance.propValidators = makePropValidators(propTypes);\n }\n module.instance = instance;\n // TODO(ib) - we need to apply the original prop types to the default uniforms\n let defaultProps = {};\n if (propTypes) {\n defaultProps = Object.entries(propTypes).reduce((obj, [key, propType]) => {\n // @ts-expect-error\n const value = propType?.value;\n if (value) {\n // @ts-expect-error\n obj[key] = value;\n }\n return obj;\n }, {});\n }\n module.defaultUniforms = { ...module.defaultUniforms, ...defaultProps };\n}\n/** Convert module props to uniforms */\nexport function getShaderModuleUniforms(module, props, oldUniforms) {\n initializeShaderModule(module);\n const uniforms = oldUniforms || { ...module.defaultUniforms };\n // If module has a getUniforms function, use it\n if (props && module.getUniforms) {\n return module.getUniforms(props, uniforms);\n }\n // Build uniforms from the uniforms array\n // @ts-expect-error\n return getValidatedProperties(props, module.instance?.propValidators, module.name);\n}\n/* TODO this looks like it was unused code\n _defaultGetUniforms(opts: Record<string, any> = {}): Record<string, any> {\n const uniforms: Record<string, any> = {};\n const propTypes = this.uniforms;\n\n for (const key in propTypes) {\n const propDef = propTypes[key];\n if (key in opts && !propDef.private) {\n if (propDef.validate) {\n assert(propDef.validate(opts[key], propDef), `${this.name}: invalid ${key}`);\n }\n uniforms[key] = opts[key];\n } else {\n uniforms[key] = propDef.value;\n }\n }\n\n return uniforms;\n }\n}\n*/\n// Warn about deprecated uniforms or functions\nexport function checkShaderModuleDeprecations(shaderModule, shaderSource, log) {\n shaderModule.deprecations?.forEach(def => {\n if (def.regex?.test(shaderSource)) {\n if (def.deprecated) {\n log.deprecated(def.old, def.new)();\n }\n else {\n log.removed(def.old, def.new)();\n }\n }\n });\n}\n// HELPERS\nfunction parseDeprecationDefinitions(deprecations) {\n deprecations.forEach(def => {\n switch (def.type) {\n case 'function':\n def.regex = new RegExp(`\\\\b${def.old}\\\\(`);\n break;\n default:\n def.regex = new RegExp(`${def.type} ${def.old};`);\n }\n });\n return deprecations;\n}\n//# sourceMappingURL=shader-module.js.map","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { initializeShaderModules } from \"./shader-module.js\";\n/**\n * Takes a list of shader module names and returns a new list of\n * shader module names that includes all dependencies, sorted so\n * that modules that are dependencies of other modules come first.\n *\n * If the shader glsl code from the returned modules is concatenated\n * in the reverse order, it is guaranteed that all functions be resolved and\n * that all function and variable definitions come before use.\n *\n * @param modules - Array of modules (inline modules or module names)\n * @return - Array of modules\n */\nexport function getShaderModuleDependencies(modules) {\n initializeShaderModules(modules);\n const moduleMap = {};\n const moduleDepth = {};\n getDependencyGraph({ modules, level: 0, moduleMap, moduleDepth });\n // Return a reverse sort so that dependencies come before the modules that use them\n const dependencies = Object.keys(moduleDepth)\n .sort((a, b) => moduleDepth[b] - moduleDepth[a])\n .map(name => moduleMap[name]);\n initializeShaderModules(dependencies);\n return dependencies;\n}\n/**\n * Recursively checks module dependencies to calculate dependency level of each module.\n *\n * @param options.modules - Array of modules\n * @param options.level - Current level\n * @param options.moduleMap -\n * @param options.moduleDepth - Current level\n * @return - Map of module name to its level\n */\n// Adds another level of dependencies to the result map\nexport function getDependencyGraph(options) {\n const { modules, level, moduleMap, moduleDepth } = options;\n if (level >= 5) {\n throw new Error('Possible loop in shader dependency graph');\n }\n // Update level on all current modules\n for (const module of modules) {\n moduleMap[module.name] = module;\n if (moduleDepth[module.name] === undefined || moduleDepth[module.name] < level) {\n moduleDepth[module.name] = level;\n }\n }\n // Recurse\n for (const module of modules) {\n if (module.dependencies) {\n getDependencyGraph({ modules: module.dependencies, level: level + 1, moduleMap, moduleDepth });\n }\n }\n}\n/**\n * Takes a list of shader module names and returns a new list of\n * shader module names that includes all dependencies, sorted so\n * that modules that are dependencies of other modules come first.\n *\n * If the shader glsl code from the returned modules is concatenated\n * in the reverse order, it is guaranteed that all functions be resolved and\n * that all function and variable definitions come before use.\n *\n * @param modules - Array of modules (inline modules or module names)\n * @return - Array of modules\n */\nexport function getShaderDependencies(modules) {\n initializeShaderModules(modules);\n const moduleMap = {};\n const moduleDepth = {};\n getDependencyGraph({ modules, level: 0, moduleMap, moduleDepth });\n // Return a reverse sort so that dependencies come before the modules that use them\n modules = Object.keys(moduleDepth)\n .sort((a, b) => moduleDepth[b] - moduleDepth[a])\n .map(name => moduleMap[name]);\n initializeShaderModules(modules);\n return modules;\n}\n// DEPRECATED\n/**\n * Instantiate shader modules and resolve any dependencies\n * @deprecated Use getShaderDpendencies\n */\nexport function resolveModules(modules) {\n return getShaderDependencies(modules);\n}\n//# sourceMappingURL=shader-module-dependencies.js.map","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n/** Adds defines to help identify GPU architecture / platform */\nexport function getPlatformShaderDefines(platformInfo) {\n switch (platformInfo?.gpu.toLowerCase()) {\n case 'apple':\n return /* glsl */ `\\\n#define APPLE_GPU\n// Apple optimizes away the calculation necessary for emulated fp64\n#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1\n#define LUMA_FP32_TAN_PRECISION_WORKAROUND 1\n// Intel GPU doesn't have full 32 bits precision in same cases, causes overflow\n#define LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND 1\n`;\n case 'nvidia':\n return /* glsl */ `\\\n#define NVIDIA_GPU\n// Nvidia optimizes away the calculation necessary for emulated fp64\n#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1\n`;\n case 'intel':\n return /* glsl */ `\\\n#define INTEL_GPU\n// Intel optimizes away the calculation necessary for emulated fp64\n#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1\n// Intel's built-in 'tan' function doesn't have acceptable precision\n#define LUMA_FP32_TAN_PRECISION_WORKAROUND 1\n// Intel GPU doesn't have full 32 bits precision in same cases, causes overflow\n#define LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND 1\n`;\n case 'amd':\n // AMD Does not eliminate fp64 code\n return /* glsl */ `\\\n#define AMD_GPU\n`;\n default:\n // We don't know what GPU it is, could be that the GPU driver or\n // browser is not implementing UNMASKED_RENDERER constant and not\n // reporting a correct name\n return /* glsl */ `\\\n#define DEFAULT_GPU\n// Prevent driver from optimizing away the calculation necessary for emulated fp64\n#define LUMA_FP64_CODE_ELIMINATION_WORKAROUND 1\n// Headless Chrome's software shader 'tan' function doesn't have acceptable precision\n#define LUMA_FP32_TAN_PRECISION_WORKAROUND 1\n// If the GPU doesn't have full 32 bits precision, will causes overflow\n#define LUMA_FP64_HIGH_BITS_OVERFLOW_WORKAROUND 1\n`;\n }\n}\n//# sourceMappingURL=platform-defines.js.map","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n// TRANSPILATION TABLES\n/**\n * Transpiles GLSL 3.00 shader source code to target GLSL version (3.00 or 1.00)\n *\n * @note We always run transpiler even if same version e.g. 3.00 => 3.00\n * @note For texture sampling transpilation, apps need to use non-standard texture* calls in GLSL 3.00 source\n * RFC: https://github.com/visgl/luma.gl/blob/7.0-release/dev-docs/RFCs/v6.0/portable-glsl-300-rfc.md\n */\nexport function transpileGLSLShader(source, stage) {\n const sourceGLSLVersion = Number(source.match(/^#version[ \\t]+(\\d+)/m)?.[1] || 100);\n if (sourceGLSLVersion !== 300) {\n // TODO - we splurge on a longer error message to help deck.gl custom layer developers\n throw new Error('luma.gl v9 only supports GLSL 3.00 shader sources');\n }\n switch (stage) {\n case 'vertex':\n source = convertShader(source, ES300_VERTEX_REPLACEMENTS);\n return source;\n case 'fragment':\n source = convertShader(source, ES300_FRAGMENT_REPLACEMENTS);\n return source;\n default:\n // Unknown shader stage\n throw new Error(stage);\n }\n}\n/** Simple regex replacements for GLSL ES 1.00 syntax that has changed in GLSL ES 3.00 */\nconst ES300_REPLACEMENTS = [\n // Fix poorly formatted version directive\n [/^(#version[ \\t]+(100|300[ \\t]+es))?[ \\t]*\\n/, '#version 300 es\\n'],\n // The individual `texture...()` functions were replaced with `texture()` overloads\n [/\\btexture(2D|2DProj|Cube)Lod(EXT)?\\(/g, 'textureLod('],\n [/\\btexture(2D|2DProj|Cube)(EXT)?\\(/g, 'texture(']\n];\nconst ES300_VERTEX_REPLACEMENTS = [\n ...ES300_REPLACEMENTS,\n // `attribute` keyword replaced with `in`\n [makeVariableTextRegExp('attribute'), 'in $1'],\n // `varying` keyword replaced with `out`\n [makeVariableTextRegExp('varying'), 'out $1']\n];\n/** Simple regex replacements for GLSL ES 1.00 syntax that has changed in GLSL ES 3.00 */\nconst ES300_FRAGMENT_REPLACEMENTS = [\n ...ES300_REPLACEMENTS,\n // `varying` keyword replaced with `in`\n [makeVariableTextRegExp('varying'), 'in $1']\n];\nfunction convertShader(source, replacements) {\n for (const [pattern, replacement] of replacements) {\n source = source.replace(pattern, replacement);\n }\n return source;\n}\n/**\n * Creates a regexp that tests for a specific variable type\n * @example\n * should match:\n * in float weight;\n * out vec4 positions[2];\n * should not match:\n * void f(out float a, in float b) {}\n */\nfunction makeVariableTextRegExp(qualifier) {\n return new RegExp(`\\\\b${qualifier}[ \\\\t]+(\\\\w+[ \\\\t]+\\\\w+(\\\\[\\\\w+\\\\])?;)`, 'g');\n}\n//# sourceMappingURL=transpile-glsl-shader.js.map","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n/** Generate hook source code */\nexport function getShaderHooks(hookFunctions, hookInjections) {\n let result = '';\n for (const hookName in hookFunctions) {\n const hookFunction = hookFunctions[hookName];\n result += `void ${hookFunction.signature} {\\n`;\n if (hookFunction.header) {\n result += ` ${hookFunction.header}`;\n }\n if (hookInjections[hookName]) {\n const injections = hookInjections[hookName];\n injections.sort((a, b) => a.order - b.order);\n for (const injection of injections) {\n result += ` ${injection.injection}\\n`;\n }\n }\n if (hookFunction.footer) {\n result += ` ${hookFunction.footer}`;\n }\n result += '}\\n';\n }\n return result;\n}\n/**\n * Parse string based hook functions\n * And split per shader\n */\nexport function normalizeShaderHooks(hookFunctions) {\n const result = { vertex: {}, fragment: {} };\n for (const hookFunction of hookFunctions) {\n let opts;\n let hook;\n if (typeof hookFunction !== 'string') {\n opts = hookFunction;\n hook = opts.hook;\n }\n else {\n opts = {};\n hook = hookFunction;\n }\n hook = hook.trim();\n const [shaderStage, signature] = hook.split(':');\n const name = hook.replace(/\\(.+/, '');\n const normalizedHook = Object.assign(opts, { signature });\n switch (shaderStage) {\n case 'vs':\n result.vertex[name] = normalizedHook;\n break;\n case 'fs':\n result.fragment[name] = normalizedHook;\n break;\n default:\n throw new Error(shaderStage);\n }\n }\n return result;\n}\n//# sourceMappingURL=shader-hooks.js.map","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n/** Extracts information from shader source code */\nexport function getShaderInfo(source, defaultName) {\n return {\n name: getShaderName(source, defaultName),\n language: 'glsl',\n version: getShaderVersion(source)\n };\n}\n/** Extracts GLSLIFY style naming of shaders: `#define SHADER_NAME ...` */\nfunction getShaderName(shader, defaultName = 'unnamed') {\n const SHADER_NAME_REGEXP = /#define[^\\S\\r\\n]*SHADER_NAME[^\\S\\r\\n]*([A-Za-z0-9_-]+)\\s*/;\n const match = SHADER_NAME_REGEXP.exec(shader);\n return match ? match[1] : defaultName;\n}\n/** returns GLSL shader version of given shader string */\nfunction getShaderVersion(source) {\n let version = 100;\n const words = source.match(/[^\\s]+/g);\n if (words && words.length >= 2 && words[0] === '#version') {\n const parsedVersion = parseInt(words[1], 10);\n if (Number.isFinite(parsedVersion)) {\n version = parsedVersion;\n }\n }\n if (version !== 100 && version !== 300) {\n throw new Error(`Invalid GLSL version ${version}`);\n }\n return version;\n}\n//# sourceMappingURL=get-shader-info.js.map","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { getShaderModuleDependencies } from \"../shader-module/shader-module-dependencies.js\";\nimport { getPlatformShaderDefines } from \"./platform-defines.js\";\nimport { injectShader, DECLARATION_INJECT_MARKER } from \"./shader-injections.js\";\nimport { transpileGLSLShader } from \"../shader-transpiler/transpile-glsl-shader.js\";\nimport { checkShaderModuleDeprecations } from \"../shader-module/shader-module.js\";\nimport { normalizeShaderHooks, getShaderHooks } from \"./shader-hooks.js\";\nimport { assert } from \"../utils/assert.js\";\nimport { getShaderInfo } from \"../glsl-utils/get-shader-info.js\";\nconst INJECT_SHADER_DECLARATIONS = `\\n\\n${DECLARATION_INJECT_MARKER}\\n`;\n/**\n * Precision prologue to inject before functions are injected in shader\n * TODO - extract any existing prologue in the fragment source and move it up...\n */\nconst FRAGMENT_SHADER_PROLOGUE = /* glsl */ `\\\nprecision highp float;\n`;\n/**\n * Inject a list of shader modules into a single shader source for WGSL\n */\nexport function assembleWGSLShader(options) {\n const modules = getShaderModuleDependencies(options.modules || []);\n return {\n source: assembleShaderWGSL(options.platformInfo, {\n ...options,\n source: options.source,\n stage: 'vertex',\n modules\n }),\n getUniforms: assembleGetUniforms(modules)\n };\n}\n/**\n * Injects dependent shader module sources into pair of main vertex/fragment shader sources for GLSL\n */\nexport function assembleGLSLShaderPair(options) {\n const { vs, fs } = options;\n const modules = getShaderModuleDependencies(options.modules || []);\n return {\n vs: assembleShaderGLSL(options.platformInfo, {\n ...options,\n source: vs,\n stage: 'vertex',\n modules\n }),\n fs: assembleShaderGLSL(options.platformInfo, {\n ...options,\n // @ts-expect-error\n source: fs,\n stage: 'fragment',\n modules\n }),\n getUniforms: assembleGetUniforms(modules)\n };\n}\n/**\n * Pulls together complete source code for either a vertex or a fragment shader\n * adding prologues, requested module chunks, and any final injections.\n * @param gl\n * @param options\n * @returns\n */\nexport function assembleShaderWGSL(platformInfo, options) {\n const { \n // id,\n source, stage, modules, \n // defines = {},\n hookFunctions = [], inject = {}, log } = options;\n assert(typeof source === 'string', 'shader source must be a string');\n // const isVertex = type === 'vs';\n // const sourceLines = source.split('\\n');\n const coreSource = source;\n // Combine Module and Application Defines\n // const allDefines = {};\n // modules.forEach(module => {\n // Object.assign(allDefines, module.getDefines());\n // });\n // Object.assign(allDefines, defines);\n // Add platform defines (use these to work around platform-specific bugs and limitations)\n // Add common defines (GLSL version compatibility, feature detection)\n // Add precision declaration for fragment shaders\n let assembledSource = '';\n // prologue\n // ? `\\\n // ${getShaderNameDefine({id, source, type})}\n // ${getShaderType(type)}\n // ${getPlatformShaderDefines(platformInfo)}\n // ${getApplicationDefines(allDefines)}\n // ${isVertex ? '' : FRAGMENT_SHADER_PROLOGUE}\n // `\n // `;\n const hookFunctionMap = normalizeShaderHooks(hookFunctions);\n // Add source of dependent modules in resolved order\n const hookInjections = {};\n const declInjections = {};\n const mainInjections = {};\n for (const key in inject) {\n const injection = typeof inject[key] === 'string' ? { injection: inject[key], order: 0 } : inject[key];\n const match = /^(v|f)s:(#)?([\\w-]+)$/.exec(key);\n if (match) {\n const hash = match[2];\n const name = match[3];\n if (hash) {\n if (name === 'decl') {\n declInjections[key] = [injection];\n }\n else {\n mainInjections[key] = [injection];\n }\n }\n else {\n hookInjections[key] = [injection];\n }\n }\n else {\n // Regex injection\n mainInjections[key] = [injection];\n }\n }\n // TODO - hack until shadertool modules support WebGPU\n const modulesToInject = modules;\n for (const module of modulesToInject) {\n if (log) {\n checkShaderModuleDeprecations(module, coreSource, log);\n }\n const moduleSource = getShaderModuleSource(module, 'wgsl');\n // Add the module source, and a #define that declares it presence\n assembledSource += moduleSource;\n const injections = module.injections?.[stage] || {};\n for (const key in injections) {\n const match = /^(v|f)s:#([\\w-]+)$/.exec(key);\n if (match) {\n const name = match[2];\n const injectionType = name === 'decl' ? declInjections : mainInjections;\n injectionType[key] = injectionType[key] || [];\n injectionType[key].push(injections[key]);\n }\n else {\n hookInjections[key] = hookInjections[key] || [];\n hookInjections[key].push(injections[key]);\n }\n }\n }\n // For injectShader\n assembledSource += INJECT_SHADER_DECLARATIONS;\n assembledSource = injectShader(assembledSource, stage, declInjections);\n assembledSource += getShaderHooks(hookFunctionMap[stage], hookInjections);\n // Add the version directive and actual source of this shader\n assembledSource += coreSource;\n // Apply any requested shader injections\n assembledSource = injectShader(assembledSource, stage, mainInjections);\n return assembledSource;\n}\n/**\n * Pulls together complete source code for either a vertex or a fragment shader\n * adding prologues, requested module chunks, and any final injections.\n * @param gl\n * @param options\n * @returns\n */\nfunction assembleShaderGLSL(platformInfo, options) {\n const { source, stage, language = 'glsl', modules, defines = {}, hookFunctions = [], inject = {}, prologue = true, log } = options;\n assert(typeof source === 'string', 'shader source must be a string');\n const sourceVersion = language === 'glsl' ? getShaderInfo(source).version : -1;\n const targetVersion = platformInfo.shaderLanguageVersion;\n const sourceVersionDirective = sourceVersion === 100 ? '#version 100' : '#version 300 es';\n const sourceLines = source.split('\\n');\n // TODO : keep all pre-processor statements at the beginning of the shader.\n const coreSource = sourceLines.slice(1).join('\\n');\n // Combine Module and Application Defines\n const allDefines = {};\n modules.forEach(module => {\n Object.assign(allDefines, module.defines);\n });\n Object.assign(allDefines, defines);\n // Add platform defines (use these to work around platform-specific bugs and limitations)\n // Add common defines (GLSL version compatibility, feature detection)\n // Add precision declaration for fragment shaders\n let assembledSource = '';\n switch (language) {\n case 'wgsl':\n break;\n case 'glsl':\n assembledSource = prologue\n ? `\\\n${sourceVersionDirective}\n\n// ----- PROLOGUE -------------------------\n${`#define SHADER_TYPE_${stage.toUpperCase()}`}\n\n${getPlatformShaderDefines(platformInfo)}\n${stage === 'fragment' ? FRAGMENT_SHADER_PROLOGUE : ''}\n\n// ----- APPLICATION DEFINES -------------------------\n\n${getApplicationDefines(allDefines)}\n\n`\n : `${sourceVersionDirective}\n`;\n break;\n }\n const hookFunctionMap = normalizeShaderHooks(hookFunctions);\n // Add source of dependent modules in resolved order\n const hookInjections = {};\n const declInjections = {};\n const mainInjections = {};\n for (const key in inject) {\n const injection = typeof inject[key] === 'string' ? { injection: inject[key], order: 0 } : inject[key];\n const match = /^(v|f)s:(#)?([\\w-]+)$/.exec(key);\n if (match) {\n const hash = match[2];\n const name = match[3];\n if (hash) {\n if (name === 'decl') {\n declInjections[key] = [injection];\n }\n else {\n mainInjections[key] = [injection];\n }\n }\n else {\n hookInjections[key] = [injection];\n }\n }\n else {\n // Regex injection\n mainInjections[key] = [injection];\n }\n }\n for (const module of modules) {\n if (log) {\n checkShaderModuleDeprecations(module, coreSource, log);\n }\n const moduleSource = getShaderModuleSource(module, stage);\n // Add the module source, and a #define that declares it presence\n assembledSource += moduleSource;\n const injections = module.instance?.normalizedInjections[stage] || {};\n for (const key in injections) {\n const match = /^(v|f)s:#([\\w-]+)$/.exec(key);\n if (match) {\n const name = match[2];\n const injectionType = name === 'decl' ? declInjections : mainInjections;\n injectionType[key] = injectionType[key] || [];\n injectionType[key].push(injections[key]);\n }\n else {\n hookInjections[key] = hookInjections[key] || [];\n hookInjections[key].push(injections[key]);\n }\n }\n }\n assembledSource += '// ----- MAIN SHADER SOURCE -------------------------';\n // For injectShader\n assembledSource += INJECT_SHADER_DECLARATIONS;\n assembledSource = injectShader(assembledSource, stage, declInjections);\n assembledSource += getShaderHooks(hookFunctionMap[stage], hookInjections);\n // Add the version directive and actual source of this shader\n assembledSource += coreSource;\n // Apply any requested shader injections\n assembledSource = injectShader(assembledSource, stage, mainInjections);\n if (language === 'glsl' && sourceVersion !== targetVersion) {\n assembledSource = transpileGLSLShader(assembledSource, stage);\n }\n return assembledSource.trim();\n}\n/**\n * Returns a combined `getUniforms` covering the options for all the modules,\n * the created function will pass on options to the inidividual `getUniforms`\n * function of each shader module and combine the results into one object that\n * can be passed to setUniforms.\n * @param modules\n * @returns\n */\nexport function assembleGetUniforms(modules) {\n return function getUniforms(opts) {\n const uniforms = {};\n for (const module of modules) {\n // `modules` is already sorted by dependency level. This guarantees that\n // modules have access to the uniforms that are generated by their dependencies.\n const moduleUniforms = module.getUniforms?.(opts, uniforms);\n Object.assign(uniforms, moduleUniforms);\n }\n return uniforms;\n };\n}\n/**\n * NOTE: Removed as id injection defeated caching of shaders\n *\n * Generate \"glslify-compatible\" SHADER_NAME defines\n * These are understood by the GLSL error parsing function\n * If id is provided and no SHADER_NAME constant is present in source, create one\n unction getShaderNameDefine(options: {\n id?: string;\n source: string;\n stage: 'vertex' | 'fragment';\n}): string {\n const {id, source, stage} = options;\n const injectShaderName = id && source.indexOf('SHADER_NAME') === -1;\n return injectShaderName\n ? `\n#define SHADER_NAME ${id}_${stage}`\n : '';\n}\n*/\n/** Generates application defines from an object of key value pairs */\nfunction getApplicationDefines(defines = {}) {\n let sourceText = '';\n for (const define in defines) {\n const value = defines[define];\n if (value || Number.isFinite(value)) {\n sourceText += `#define ${define.toUpperCase()} ${defines[define]}\\n`;\n }\n }\n return sourceText;\n}\n/** Extracts the source code chunk for the specified shader type from the named shader module */\nexport function getShaderModuleSource(module, stage) {\n let moduleSource;\n switch (stage) {\n case 'vertex':\n moduleSource = module.vs || '';\n break;\n case 'fragment':\n moduleSource = module.fs || '';\n break;\n case 'wgsl':\n moduleSource = module.source || '';\n break;\n default:\n assert(false);\n }\n if (!module.name) {\n throw new Error('Shader module must have a name');\n }\n const moduleName = module.name.toUpperCase().replace(/[^0-9a-z]/gi, '_');\n let source = `\\\n// ----- MODULE ${module.name} ---------------\n\n`;\n if (stage !== 'wgsl') {\n source += `#define MODULE_${moduleName}\\n`;\n }\n source += `${moduleSource}\\n`;\n return source;\n}\n/*\nfunction getHookFunctions(\n hookFunctions: Record<string, HookFunction>,\n hookInjections: Record<string, Injection[]>\n): string {\n let result = '';\n for (const hookName in hookFunctions) {\n const hookFunction = hookFunctions[hookName];\n result += `void ${hookFunction.signature} {\\n`;\n if (hookFunction.header) {\n result += ` ${hookFunction.header}`;\n }\n if (hookInjections[hookName]) {\n const injections = hookInjections[hookName];\n injections.sort((a: {order: number}, b: {order: number}): number => a.order - b.order);\n for (const injection of injections) {\n result += ` ${injection.injection}\\n`;\n }\n }\n if (hookFunction.footer) {\n result += ` ${hookFunction.footer}`;\n }\n result += '}\\n';\n }\n\n return result;\n}\n\nfunction normalizeHookFunctions(hookFunctions: (string | HookFunction)[]): {\n vs: Record<string, HookFunction>;\n fs: Record<string, HookFunction>;\n} {\n const result: {vs: Record<string, any>; fs: Record<string, any>} = {\n vs: {},\n fs: {}\n };\n\n hookFunctions.forEach((hookFunction: string | HookFunction) => {\n let opts: HookFunction;\n let hook: string;\n if (typeof hookFunction !== 'string') {\n opts = hookFunction;\n hook = opts.hook;\n } else {\n opts = {} as HookFunction;\n hook = hookFunction;\n }\n hook = hook.trim();\n const [stage, signature] = hook.split(':');\n const name = hook.replace(/\\(.+/, '');\n if (stage !== 'vs' && stage !== 'fs') {\n throw new Error(stage);\n }\n result[stage][name] = Object.assign(opts, {signature});\n });\n\n return result;\n}\n*/\n//# sourceMappingURL=assemble-shaders.js.map","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nconst IFDEF_REGEXP = /^\\s*\\#\\s*ifdef\\s*([a-zA-Z_]+)\\s*$/;\nconst ENDIF_REGEXP = /^\\s*\\#\\s*endif\\s*$/;\nexport function preprocess(source, options) {\n const lines = source.split('\\n');\n const output = [];\n let conditional = true;\n let currentDefine = null;\n for (const line of lines) {\n const matchIf = line.match(IFDEF_REGEXP);\n const matchEnd = line.match(ENDIF_REGEXP);\n if (matchIf) {\n currentDefine = matchIf[1];\n conditional = Boolean(options?.defines?.[currentDefine]);\n }\n else if (matchEnd) {\n conditional = true;\n }\n else if (conditional) {\n output.push(line);\n }\n }\n return output.join('\\n');\n}\n//# sourceMappingURL=preprocessor.js.map","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { initializeShaderModules } from \"./shader-module/shader-module.js\";\nimport { assembleWGSLShader, assembleGLSLShaderPair } from \"./shader-assembly/assemble-shaders.js\";\nimport { preprocess } from \"./preprocessor/preprocessor.js\";\n/**\n * A stateful version of `assembleShaders` that can be used to assemble shaders.\n * Supports setting of default modules and hooks.\n */\nexport class ShaderAssembler {\n /** Default ShaderAssembler instance */\n static defaultShaderAssembler;\n /** Hook functions */\n _hookFunctions = [];\n /** Shader modules */\n _defaultModules = [];\n /**\n * A default shader assembler instance - the natural place to register default modules and hooks\n * @returns\n */\n static getDefaultShaderAssembler() {\n ShaderAssembler.defaultShaderAssembler =\n ShaderAssembler.defaultShaderAssembler || new ShaderAssembler();\n return ShaderAssembler.defaultShaderAssembler;\n }\n /**\n * Add a default module that does not have to be provided with every call to assembleShaders()\n */\n addDefaultModule(module) {\n if (!this._defaultModules.find(m => m.name === (typeof module === 'string' ? module : module.name))) {\n this._defaultModules.push(module);\n }\n }\n /**\n * Remove a default module\n */\n removeDefaultModule(module) {\n const moduleName = typeof module === 'string' ? module : module.name;\n this._defaultModules = this._defaultModules.filter(m => m.name !== moduleName);\n }\n /**\n * Register a shader hook\n * @param hook\n * @param opts\n */\n addShaderHook(hook, opts) {\n if (opts) {\n hook = Object.assign(opts, { hook });\n }\n this._hookFunctions.push(hook);\n }\n /**\n * Assemble a WGSL unified shader\n * @param platformInfo\n * @param props\n * @returns\n */\n assembleWGSLShader(props) {\n const modules = this._getModuleList(props.modules); // Combine with default modules\n const hookFunctions = this._hookFunctions; // TODO - combine with default hook functions\n const { source, getUniforms } = assembleWGSLShader({\n ...props,\n // @ts-expect-error\n source: props.source,\n modules,\n hookFunctions\n });\n // WGSL does not have built-in preprocessing support (just compile time constants)\n const preprocessedSource = props.platformInfo.shaderLanguage === 'wgsl' ? preprocess(source) : source;\n return { source: preprocessedSource, getUniforms, modules };\n }\n /**\n * Assemble a pair of shaders into a single shader program\n * @param platformInfo\n * @param props\n * @returns\n */\n assembleGLSLShaderPair(props) {\n const modules = this._getModuleList(props.modules); // Combine with default modules\n const hookFunctions = this._hookFunctions; // TODO - combine with default hook functions\n const assembled = assembleGLSLShaderPair({\n ...props,\n // @ts-expect-error\n vs: props.vs,\n // @ts-expect-error\n fs: props.fs,\n modules,\n hookFunctions\n });\n return { ...assembled, modules };\n }\n /**\n * Dedupe and combine with default modules\n */\n _getModuleList(appModules = []) {\n const modules = new Array(this._defaultModules.length + appModules.length);\n const seen = {};\n let count = 0;\n for (let i = 0, len = this._defaultModules.length; i < len; ++i) {\n const module = this._defaultModules[i];\n const name = module.name;\n modules[count++] = module;\n seen[name] = true;\n }\n for (let i = 0, len = appModules.length; i < len; ++i) {\n const module = appModules[i];\n const name = module.name;\n if (!seen[name]) {\n modules[count++] = module;\n seen[name] = true;\n }\n }\n modules.length = count;\n initializeShaderModules(modules);\n return modules;\n }\n}\n//# sourceMappingURL=shader-assembler.js.map","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nconst FS_GLES = /* glsl */ `\\\nout vec4 transform_output;\nvoid main() {\n transform_output = vec4(0);\n}`;\nconst FS300 = `#version 300 es\\n${FS_GLES}`;\n// Prase given glsl line and return qualifier details or null\nexport function getQualifierDetails(line, qualifiers) {\n qualifiers = Array.isArray(qualifiers) ? qualifiers : [qualifiers];\n const words = line.replace(/^\\s+/, '').split(/\\s+/);\n // TODO add support for precession qualifiers (highp, mediump and lowp)\n const [qualifier, type, definition] = words;\n if (!qualifiers.includes(qualifier) || !type || !definition) {\n return null;\n }\n const name = definition.split(';')[0];\n return { qualifier, type, name };\n}\n/**\n * Given the shader input and output variable names,\n * builds and return a pass through fragment shader.\n */\nexport function getPassthroughFS(options) {\n const { input, inputChannels, output } = options || {};\n if (!input) {\n // Default shader\n return FS300;\n }\n if (!inputChannels) {\n throw new Error('inputChannels');\n }\n const inputType = channelCountToType(inputChannels);\n const outputValue = convertToVec4(input, inputChannels);\n return `\\\n#version 300 es\nin ${inputType} ${input};\nout vec4 ${output};\nvoid main() {\n ${output} = ${outputValue};\n}`;\n}\n/** convert glsl type to suffix */\nexport function typeToChannelSuffix(type) {\n // prettier-ignore\n switch (type) {\n case 'float': return 'x';\n case 'vec2': return 'xy';\n case 'vec3': return 'xyz';\n case 'vec4': return 'xyzw';\n default:\n throw new Error(type);\n }\n}\n/** convert glsl type to channel count */\nexport function typeToChannelCount(type) {\n // prettier-ignore\n switch (type) {\n case 'float': return 1;\n case 'vec2': return 2;\n case 'vec3': return 3;\n case 'vec4': return 4;\n default:\n throw new Error(type);\n }\n}\nfunction channelCountToType(channels) {\n // prettier-ignore\n switch (channels) {\n case 1: return 'float';\n case 2: return 'vec2';\n case 3: return 'vec3';\n case 4: return 'vec4';\n default:\n throw new Error(`invalid channels: ${channels}`);\n }\n}\n/** Returns glsl instruction for converting to vec4 */\nexport function convertToVec4(variable, channels) {\n // prettier-ignore\n switch (channels) {\n case 1: return `vec4(${variable}, 0.0, 0.0, 1.0)`;\n case 2: return `vec4(${variable}, 0.0, 1.0)`;\n case 3: return `vec4(${variable}, 1.0)`;\n case 4: return variable;\n default:\n throw new Error(`invalid channels: ${channels}`);\n }\n}\n//# sourceMappingURL=shader-utils.js.map","class e{constructor(e,t){this.name=e,this.attributes=t,this.size=0}get isArray(){return!1}get isStruct(){return!1}get isTemplate(){return!1}get isPointer(){return!1}getTypeName(){return this.name}}class t{constructor(e,t,n){this.name=e,this.type=t,this.attributes=n,this.offset=0,this.size=0}get isArray(){return this.type.isArray}get isStruct(){return this.type.isStruct}get isTemplate(){return this.type.isTemplate}get align(){return this.type.isStruct?this.type.align:0}get members(){return this.type.isStruct?this.type.members:null}get format(){return this.type.isArray||this.type.isTemplate?this.type.format:null}get count(){return this.type.isArray?this.type.count:0}get stride(){return this.type.isArray?this.type.stride:this.size}}class n extends e{constructor(e,t){super(e,t),this.members=[],this.align=0,this.startLine=-1,this.endLine=-1,this.inUse=!1}get isStruct(){return!0}}class s extends e{constructor(e,t){super(e,t),this.count=0,this.stride=0}get isArray(){return!0}getTypeName(){return`array<${this.format.getTypeName()}, ${this.count}>`}}class r extends e{constructor(e,t,n){super(e,n),this.format=t}get isPointer(){return!0}getTypeName(){return`&${this.format.getTypeName()}`}}class a extends e{constructor(e,t,n,s){super(e,n),this.format=t,this.access=s}get isTemplate(){return!0}getTypeName(){let e=this.name;if(null!==this.format){if('vec2'===e||'vec3'===e||'vec4'===e||'mat2x2'===e||'mat2x3'===e||'mat2x4'===e||'mat3x2'===e||'mat3x3'===e||'mat3x4'===e||'mat4x2'===e||'mat4x3'===e||'mat4x4'===e){if('f32'===this.format.name)return e+='f',e;if('i32'===this.format.name)return e+='i',e;if('u32'===this.format.name)return e+='u',e;if('bool'===this.format.name)return e+='b',e;if('f16'===this.format.name)return e+='h',e}e+=`<${this.format.name}>`}else if('vec2'===e||'vec3'===e||'vec4'===e)return e;return e}}var i;(e=>{e[e.Uniform=0]='Uniform',e[e.Storage=1]='Storage',e[e.Texture=2]='Texture',e[e.Sampler=3]='Sampler',e[e.StorageTexture=4]='StorageTexture'})(i||(i={}));class o{constructor(e,t,n,s,r,a,i){this.name=e,this.type=t,this.group=n,this.binding=s,this.attributes=r,this.resourceType=a,this.access=i}get isArray(){return this.type.isArray}get isStruct(){return this.type.isStruct}get isTemplate(){return this.type.isTemplate}get size(){return this.type.size}get align(){return this.type.isStruct?this.type.align:0}get members(){return this.type.isStruct?this.type.members:null}get format(){return this.type.isArray||this.type.isTemplate?this.type.format:null}get count(){return this.type.isArray?this.type.count:0}get stride(){return this.type.isArray?this.type.stride:this.size}}class c{constructor(e,t){this.name=e,this.type=t}}class l{constructor(e,t,n,s){this.name=e,this.type=t,this.locationType=n,this.location=s,this.interpolation=null}}class u{constructor(e,t,n,s){this.name=e,this.type=t,this.locationType=n,this.location=s}}class h{constructor(e,t,n,s){this.name=e,this.type=t,this.attributes=n,this.id=s}}class f{constructor(e,t,n){this.name=e,this.type=t,this.attributes=n}}class p{constructor(e,t=null,n){this.stage=null,this.inputs=[],this.outputs=[],this.arguments=[],this.returnType=null,this.resources=[],this.overrides=[],this.startLine=-1,this.endLine=-1,this.inUse=!1,this.calls=new Set,this.name=e,this.stage=t,this.attributes=n}}class d{constructor(){this.vertex=[],this.fragment=[],this.compute=[]}}function m(e){var t=(32768&e)>>15,n=(31744&e)>>10,s=1023&e;return 0==n?(t?-1:1)*Math.pow(2,-14)*(s/Math.pow(2,10)):31==n?s?NaN:1/0*(t?-1:1):(t?-1:1)*Math.pow(2,n-15)*(1+s/Math.pow(2,10))}const g=new Float32Array(1),_=new Int32Array(g.buffer),x=new Uint16Array(1);function y(e){g[0]=e;const t=_[0],n=t>>31&1;let s=t>>23&255,r=8388607&t;if(255===s)return x[0]=n<<15|31744|(0!==r?512:0),x[0];if(0===s){if(0===r)return x[0]=n<<15,x[0];r|=8388608;let e=113;for(;!(8388608&r);)r<<=1,e--;return s=127-e,r&=8388607,s>0?(r=(r>>126-s)+(r>>127-s&1),x[0]=n<<15|s<<10|r>>13,x[0]):(x[0]=n<<15,x[0])}return s=s-127+15,s>=31?(x[0]=n<<15|31744,x[0]):s<=0?s<-10?(x[0]=n<<15,x[0]):(r=(8388608|r)>>1-s,x[0]=n<<15|r>>13,x[0]):(r>>=13,x[0]=n<<15|s<<10|r,x[0])}const b=new Uint32Array(1),v=new Float32Array(b.buffer,0,1);function w(e){const t=112+(e>>6&31)<<23|(63&e)<<17;return b[0]=t,v[0]}function k(e,t,n,s,r,a,i,o,c){const l=s*(i>>=r)*(a>>=r)+n*i+t*o;switch(c){case'r8unorm':return[I(e,l,'8unorm',1)[0]];case'r8snorm':return[I(e,l,'8snorm',1)[0]];case'r8uint':return[I(e,l,'8uint',1)[0]];case'r8sint':return[I(e,l,'8sint',1)[0]];case'rg8unorm':{const t=I(e,l,'8unorm',2);return[t[0],t[1]]}case'rg8snorm':{const t=I(e,l,'8snorm',2);return[t[0],t[1]]}case'rg8uint':{const t=I(e,l,'8uint',2);return[t[0],t[1]]}case'rg8sint':{const t=I(e,l,'8sint',2);return[t[0],t[1]]}case'rgba8unorm-srgb':case'rgba8unorm':{const t=I(e,l,'8unorm',4);return[t[0],t[1],t[2],t[3]]}case'rgba8snorm':{const t=I(e,l,'8snorm',4);return[t[0],t[1],t[2],t[3]]}case'rgba8uint':{const t=I(e,l,'8uint',4);return[t[0],t[1],t[2],t[3]]}case'rgba8sint':{const t=I(e,l,'8sint',4);return[t[0],t[1],t[2],t[3]]}case'bgra8unorm-srgb':case'bgra8unorm':{const t=I(e,l,'8unorm',4);return[t[2],t[1],t[0],t[3]]}case'r16uint':return[I(e,l,'16uint',1)[0]];case'r16sint':return[I(e,l,'16sint',1)[0]];case'r16float':return[I(e,l,'16float',1)[0]];case'rg16uint':{const t=I(e,l,'16uint',2);return[t[0],t[1]]}case'rg16sint':{const t=I(e,l,'16sint',2);return[t[0],t[1]]}case'rg16float':{const t=I(e,l,'16float',2);return[t[0],t[1]]}case'rgba16uint':{const t=I(e,l,'16uint',4);return[t[0],t[1],t[2],t[3]]}case'rgba16sint':{const t=I(e,l,'16sint',4);return[t[0],t[1],t[2],t[3]]}case'rgba16float':{const t=I(e,l,'16float',4);return[t[0],t[1],t[2],t[3]]}case'r32uint':return[I(e,l,'32uint',1)[0]];case'r32sint':return[I(e,l,'32sint',1)[0]];case'depth16unorm':case'depth24plus':case'depth24plus-stencil8':case'depth32float':case'depth32float-stencil8':case'r32float':return[I(e,l,'32float',1)[0]];case'rg32uint':{const t=I(e,l,'32uint',2);return[t[0],t[1]]}case'rg32sint':{const t=I(e,l,'32sint',2);return[t[0],t[1]]}case'rg32float':{const t=I(e,l,'32float',2);return[t[0],t[1]]}case'rgba32uint':{const t=I(e,l,'32uint',4);return[t[0],t[1],t[2],t[3]]}case'rgba32sint':{const t=I(e,l,'32sint',4);return[t[0],t[1],t[2],t[3]]}case'rgba32float':{const t=I(e,l,'32float',4);return[t[0],t[1],t[2],t[3]]}case'rg11b10ufloat':{const t=new Uint32Array(e.buffer,l,1)[0],n=(4192256&t)>>11,s=(4290772992&t)>>22;return[w(2047&t),w(n),function(e){const t=112+(e>>5&31)<<23|(31&e)<<18;return b[0]=t,v[0]}(s),1]}}return null}function I(e,t,n,s){const r=[0,0,0,0];for(let a=0;a<s;++a)switch(n){case'8unorm':r[a]=e[t]/255,t++;break;case'8snorm':r[a]=e[t]/255*2-1,t++;break;case'8uint':r[a]=e[t],t++;break;case'8sint':r[a]=e[t]-127,t++;break;case'16uint':r[a]=e[t]|e[t+1]<<8,t+=2;break;case'16sint':r[a]=(e[t]|e[t+1]<<8)-32768,t+=2;break;case'16float':r[a]=m(e[t]|e[t+1]<<8),t+=2;break;case'32uint':case'32sint':r[a]=e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24,t+=4;break;case'32float':r[a]=new Float32Array(e.buffer,t,1)[0],t+=4}return r}function T(e,t,n,s,r){for(let a=0;a<s;++a)switch(n){case'8unorm':e[t]=255*r[a],t++;break;case'8snorm':e[t]=.5*(r[a]+1)*255,t++;break;case'8uint':e[t]=r[a],t++;break;case'8sint':e[t]=r[a]+127,t++;break;case'16uint':new Uint16Array(e.buffer,t,1)[0]=r[a],t+=2;break;case'16sint':new Int16Array(e.buffer,t,1)[0]=r[a],t+=2;break;case'16float':{const n=y(r[a]);new Uint16Array(e.buffer,t,1)[0]=n,t+=2;break}case'32uint':new Uint32Array(e.buffer,t,1)[0]=r[a],t+=4;break;case'32sint':new Int32Array(e.buffer,t,1)[0]=r[a],t+=4;break;case'32float':new Float32Array(e.buffer,t,1)[0]=r[a],t+=4}return r}const S={r8unorm:{bytesPerBlock:1,blockWidth:1,blockHeight:1,isCompressed:!1,channels:1},r8snorm:{bytesPerBlock:1,blockWidth:1,blockHeight:1,isCompressed:!1,channels:1},r8uint:{bytesPerBlock:1,blockWidth:1,blockHeight:1,isCompressed:!1,channels:1},r8sint:{bytesPerBlock:1,blockWidth:1,blockHeight:1,isCompressed:!1,channels:1},rg8unorm:{bytesPerBlock:2,blockWidth:1,blockHeight:1,isCompressed:!1,channels:2},rg8snorm:{bytesPerBlock:2,blockWidth:1,blockHeight:1,isCompressed:!1,channels:2},rg8uint:{bytesPerBlock:2,blockWidth:1,blockHeight:1,isCompressed:!1,channels:2},rg8sint:{bytesPerBlock:2,blockWidth:1,blockHeight:1,isCompressed:!1,channels:2},rgba8unorm:{bytesPerBlock:4,blockWidth:1,blockHeight:1,isCompressed:!1,channels:4},'rgba8unorm-srgb':{bytesPerBlock:4,blockWidth:1,blockHeight:1,isCompressed:!1,channels:4},rgba8snorm:{bytesPerBlock:4,blockWidth:1,blockHeight:1,isCompressed:!1,channels:4},rgba8uint:{bytesPerBlock:4,blockWidth:1,blockHeight:1,isCompressed:!1,channels:4},rgba8sint:{bytesPerBlock:4,blockWidth:1,blockHeight:1,isCompressed:!1,channels:4},bgra8unorm:{bytesPerBlock:4,blockWidth:1,blockHeight:1,isCompressed:!1,channels:4},'bgra8unorm-srgb':{bytesPerBlock:4,blockWidth:1,blockHeight:1,isCompressed:!1,channels:4},r16uint:{bytesPerBlock:2,blockWidth:1,blockHeight:1,isCompressed:!1,channels:1},r16sint:{bytesPerBlock:2,blockWidth:1,blockHeight:1,isCompressed:!1,channels:1},r16float:{bytesPerBlock:2,blockWidth:1,blockHeight:1,isCompressed:!1,channels:1},rg16uint:{bytesPerBlock:4,blockWidth:1,blockHeight:1,isCompressed:!1,channels:2},rg16sint:{bytesPerBlock:4,blockWidth:1,blockHeight:1,isCompressed:!1,channels:2},rg16float:{bytesPerBlock:4,blockWidth:1,blockHeight:1,isCompressed:!1,channels:2},rgba16uint:{bytesPerBlock:8,blockWidth:1,blockHeight:1,isCompressed:!1,channels:4},rgba16sint:{bytesPerBlock:8,blockWidth:1,blockHeight:1,isCompressed:!1,channels:4},rgba16float:{bytesPerBlock:8,blockWidth:1,blockHeight:1,isCompressed:!1,channels:4},r32uint:{bytesPerBlock:4,blockWidth:1,blockHeight:1,isCompressed:!1,channels:1},r32sint:{bytesPerBlock:4,blockWidth:1,blockHeight:1,isCompressed:!1,channels:1},r32float:{bytesPerBlock:4,blockWidth:1,blockHeight:1,isCompressed:!1,channels:1},rg32uint:{bytesPerBlock:8,blockWidth:1,blockHeight:1,isCompressed:!1,channels:2},rg32sint:{bytesPerBlock:8,blockWidth:1,blockHeight:1,isCompressed:!1,channels:2},rg32float:{bytesPerBlock:8,blockWidth:1,blockHeight:1,isCompressed:!1,channels:2},rgba32uint:{bytesPerBlock:16,blockWidth:1,blockHeight:1,isCompressed:!1,channels:4},rgba32sint:{bytesPerBlock:16,blockWidth:1,blockHeight:1,isCompressed:!1,channels:4},rgba32float:{bytesPerBlock:16,blockWidth:1,blockHeight:1,isCompressed:!1,channels:4},rgb10a2uint:{bytesPerBlock:4,blockWidth:1,blockHeight:1,isCompressed:!1,channels:4},rgb10a2unorm:{bytesPerBlock:4,blockWidth:1,blockHeight:1,isCompressed:!1,channels:4},rg11b10ufloat:{bytesPerBlock:4,blockWidth:1,blockHeight:1,isCompressed:!1,channels:4},stencil8:{bytesPerBlock:1,blockWidth:1,blockHeight:1,isCompressed:!1,isDepthStencil:!0,hasDepth:!1,hasStencil:!0,channels:1},depth16unorm:{bytesPerBlock:2,blockWidth:1,blockHeight:1,isCompressed:!1,isDepthStencil:!0,hasDepth:!0,hasStencil:!1,channels:1},depth24plus:{bytesPerBlock:4,blockWidth:1,blockHeight:1,isCompressed:!1,isDepthStencil:!0,hasDepth:!0,hasStencil:!1,depthOnlyFormat:'depth32float',channels:1},'depth24plus-stencil8':{bytesPerBlock:8,blockWidth:1,blockHeight:1,isCompressed:!1,isDepthStencil:!0,hasDepth:!0,hasStencil:!0,depthOnlyFormat:'depth32float',channels:1},depth32float:{bytesPerBlock:4,blockWidth:1,blockHeight:1,isCompressed:!1,isDepthStencil:!0,hasDepth:!0,hasStencil:!1,channels:1},'depth32float-stencil8':{bytesPerBlock:8,blockWidth:1,blockHeight:1,isCompressed:!1,isDepthStencil:!0,hasDepth:!0,hasStencil:!0,stencilOnlyFormat:'depth32float',channels:1},rgb9e5ufloat:{bytesPerBlock:4,blockWidth:1,blockHeight:1,isCompressed:!1,channels:4},'bc1-rgba-unorm':{bytesPerBlock:8,blockWidth:4,blockHeight:4,isCompressed:!0,channels:4},'bc1-rgba-unorm-srgb':{bytesPerBlock:8,blockWidth:4,blockHeight:4,isCompressed:!0,channels:4},'bc2-rgba-unorm':{bytesPerBlock:16,blockWidth:4,blockHeight:4,isCompressed:!0,channels:4},'bc2-rgba-unorm-srgb':{bytesPerBlock:16,blockWidth:4,blockHeight:4,isCompressed:!0,channels:4},'bc3-rgba-unorm':{bytesPerBlock:16,blockWidth:4,blockHeight:4,isCompressed:!0,channels:4},'bc3-rgba-unorm-srgb':{bytesPerBlock:16,blockWidth:4,blockHeight:4,isCompressed:!0,channels:4},'bc4-r-unorm':{bytesPerBlock:8,blockWidth:4,blockHeight:4,isCompressed:!0,channels:1},'bc4-r-snorm':{bytesPerBlock:8,blockWidth:4,blockHeight:4,isCompressed:!0,channels:1},'bc5-rg-unorm':{bytesPerBlock:16,blockWidth:4,blockHeight:4,isCompressed:!0,channels:2},'bc5-rg-snorm':{bytesPerBlock:16,blockWidth:4,blockHeight:4,isCompressed:!0,channels:2},'bc6h-rgb-ufloat':{bytesPerBlock:16,blockWidth:4,blockHeight:4,isCompressed:!0,channels:4},'bc6h-rgb-float':{bytesPerBlock:16,blockWidth:4,blockHeight:4,isCompressed:!0,channels:4},'bc7-rgba-unorm':{bytesPerBlock:16,blockWidth:4,blockHeight:4,isCompressed:!0,channels:4},'bc7-rgba-unorm-srgb':{bytesPerBlock:16,blockWidth:4,blockHeight:4,isCompressed:!0,channels:4},'etc2-rgb8unorm':{bytesPerBlock:8,blockWidth:4,blockHeight:4,isCompressed:!0,channels:4},'etc2-rgb8unorm-srgb':{bytesPerBlock:8,blockWidth:4,blockHeight:4,isCompressed:!0,channels:4},'etc2-rgb8a1unorm':{bytesPerBlock:8,blockWidth:4,blockHeight:4,isCompressed:!0,channels:4},'etc2-rgb8a1unorm-srgb':{bytesPerBlock:8,blockWidth:4,blockHeight:4,isCompressed:!0,channels:4},'etc2-rgba8unorm':{bytesPerBlock:16,blockWidth:4,blockHeight:4,isCompressed:!0,channels:4},'etc2-rgba8unorm-srgb':{bytesPerBlock:16,blockWidth:4,blockHeight:4,isCompressed:!0,channels:4},'eac-r11unorm':{bytesPerBlock:8,blockWidth:1,blockHeight:1,isCompressed:!0,channels:1},'eac-r11snorm':{bytesPerBlock:8,blockWidth:1,blockHeight:1,isCompressed:!0,channels:1},'eac-rg11unorm':{bytesPerBlock:16,blockWidth:1,blockHeight:1,isCompressed:!0,channels:2},'eac-rg11snorm':{bytesPerBlock:16,blockWidth:1,blockHeight:1,isCompressed:!0,channels:2},'astc-4x4-unorm':{bytesPerBlock:16,blockWidth:4,blockHeight:4,isCompressed:!0,channels:4},'astc-4x4-unorm-srgb':{bytesPerBlock:16,blockWidth:4,blockHeight:4,isCompressed:!0,channels:4},'astc-5x4-unorm':{bytesPerBlock:16,blockWidth:5,blockHeight:4,isCompressed:!0,channels:4},'astc-5x4-unorm-srgb':{bytesPerBlock:16,blockWidth:5,blockHeight:4,isCompressed:!0,channels:4},'astc-5x5-unorm':{bytesPerBlock:16,blockWidth:5,blockHeight:5,isCompressed:!0,channels:4},'astc-5x5-unorm-srgb':{bytesPerBlock:16,blockWidth:5,blockHeight:5,isCompressed:!0,channels:4},'astc-6x5-unorm':{bytesPerBlock:16,blockWidth:6,blockHeight:5,isCompressed:!0,channels:4},'astc-6x5-unorm-srgb':{bytesPerBlock:16,blockWidth:6,blockHeight:5,isCompressed:!0,channels:4},'astc-6x6-unorm':{bytesPerBlock:16,blockWidth:6,blockHeight:6,isCompressed:!0,channels:4},'astc-6x6-unorm-srgb':{bytesPerBlock:16,blockWidth:6,blockHeight:6,isCompressed:!0,channels:4},'astc-8x5-unorm':{bytesPerBlock:16,blockWidth:8,blockHeight:5,isCompressed:!0,channels:4},'astc-8x5-unorm-srgb':{bytesPerBlock:16,blockWidth:8,blockHeight:5,isCompressed:!0,channels:4},'astc-8x6-unorm':{bytesPerBlock:16,blockWidth:8,blockHeight:6,isCompressed:!0,channels:4},'astc-8x6-unorm-srgb':{bytesPerBlock:16,blockWidth:8,blockHeight:6,isCompressed:!0,channels:4},'astc-8x8-unorm':{bytesPerBlock:16,blockWidth:8,blockHeight:8,isCompressed:!0,channels:4},'astc-8x8-unorm-srgb':{bytesPerBlock:16,blockWidth:8,blockHeight:8,isCompressed:!0,channels:4},'astc-10x5-unorm':{bytesPerBlock:16,blockWidth:10,blockHeight:5,isCompressed:!0,channels:4},'astc-10x5-unorm-srgb':{bytesPerBlock:16,blockWidth:10,blockHeight:5,isCompressed:!0,channels:4},'astc-10x6-unorm':{bytesPerBlock:16,blockWidth:10,blockHeight:6,isCompressed:!0,channels:4},'astc-10x6-unorm-srgb':{bytesPerBlock:16,blockWidth:10,blockHeight:6,isCompressed:!0,channels:4},'astc-10x8-unorm':{bytesPerBlock:16,blockWidth:10,blockHeight:8,isCompressed:!0,channels:4},'astc-10x8-unorm-srgb':{bytesPerBlock:16,blockWidth:10,blockHeight:8,isCompressed:!0,channels:4},'astc-10x10-unorm':{bytesPerBlock:16,blockWidth:10,blockHeight:10,isCompressed:!0,channels:4},'astc-10x10-unorm-srgb':{bytesPerBlock:16,blockWidth:10,blockHeight:10,isCompressed:!0,channels:4},'astc-12x10-unorm':{bytesPerBlock:16,blockWidth:12,blockHeight:10,isCompressed:!0,channels:4},'astc-12x10-unorm-srgb':{bytesPerBlock:16,blockWidth:12,blockHeight:10,isCompressed:!0,channels:4},'astc-12x12-unorm':{bytesPerBlock:16,blockWidth:12,blockHeight:12,isCompressed:!0,channels:4},'astc-12x12-unorm-srgb':{bytesPerBlock:16,blockWidth:12,blockHeight:12,isCompressed:!0,channels:4}};class A{constructor(){this.id=A._id++,this.line=0}get isAstNode(){return!0}get astNodeType(){return''}search(e){e(this)}searchBlock(e,t){if(e){t(E.instance);for(const n of e)n instanceof Array?this.searchBlock(n,t):n.search(t);t($.instance)}}constEvaluate(e,t){throw new Error('Cannot evaluate node')}constEvaluateString(e){return this.constEvaluate(e).toString()}}A._id=0;class E extends A{}E.instance=new E;class $ extends A{}$.instance=new $;const L=new Set(['all','all','any','select','arrayLength','abs','acos','acosh','asin','asinh','atan','atanh','atan2','ceil','clamp','cos','cosh','countLeadingZeros','countOneBits','countTrailingZeros','cross','degrees','determinant','distance','dot','dot4U8Packed','dot4I8Packed','exp','exp2','extractBits','faceForward','firstLeadingBit','firstTrailingBit','floor','fma','fract','frexp','insertBits','inverseSqrt','ldexp','length','log','log2','max','min','mix','modf','normalize','pow','quantizeToF16','radians','reflect','refract','reverseBits','round','saturate','sign','sin','sinh','smoothStep','sqrt','step','tan','tanh','transpose','trunc','dpdx','dpdxCoarse','dpdxFine','dpdy','dpdyCoarse','dpdyFine','fwidth','fwidthCoarse','fwidthFine','textureDimensions','textureGather','textureGatherCompare','textureLoad','textureNumLayers','textureNumLevels','textureNumSamples','textureSample','textureSampleBias','textureSampleCompare','textureSampleCompareLevel','textureSampleGrad','textureSampleLevel','textureSampleBaseClampToEdge','textureStore','atomicLoad','atomicStore','atomicAdd','atomicSub','atomicMax','atomicMin','atomicAnd','atomicOr','atomicXor','atomicExchange','atomicCompareExchangeWeak','pack4x8snorm','pack4x8unorm','pack4xI8','pack4xU8','pack4x8Clamp','pack4xU8Clamp','pack2x16snorm','pack2x16unorm','pack2x16float','unpack4x8snorm','unpack4x8unorm','unpack4xI8','unpack4xU8','unpack2x16snorm','unpack2x16unorm','unpack2x16float','storageBarrier','textureBarrier','workgroupBarrier','workgroupUniformLoad','subgroupAdd','subgroupExclusiveAdd','subgroupInclusiveAdd','subgroupAll','subgroupAnd','subgroupAny','subgroupBallot','subgroupBroadcast','subgroupBroadcastFirst','subgroupElect','subgroupMax','subgroupMin','subgroupMul','subgroupExclusiveMul','subgroupInclusiveMul','subgroupOr','subgroupShuffle','subgroupShuffleDown','subgroupShuffleUp','subgroupShuffleXor','subgroupXor','quadBroadcast','quadSwapDiagonal','quadSwapX','quadSwapY']);class C extends A{constructor(){super()}}class D extends C{constructor(e,t,n,s,r,a){super(),this.calls=new Set,this.name=e,this.args=t,this.returnType=n,this.body=s,this.startLine=r,this.endLine=a}get astNodeType(){return'function'}search(e){if(this.attributes)for(const t of this.attributes)e(t);e(this);for(const t of this.args)e(t);this.searchBlock(this.body,e)}}class N extends C{constructor(e){super(),this.expression=e}get astNodeType(){return'staticAssert'}search(e){this.expression.search(e)}}class V extends C{constructor(e,t){super(),this.condition=e,this.body=t}get astNodeType(){return'while'}search(e){this.condition.search(e),this.searchBlock(this.body,e)}}class O extends C{constructor(e,t){super(),this.body=e,this.loopId=t}get astNodeType(){return'continuing'}search(e){this.searchBlock(this.body,e)}}class B extends C{constructor(e,t,n,s){super(),this.init=e,this.condition=t,this.increment=n,this.body=s}get astNodeType(){return'for'}search(e){var t,n,s;null===(t=this.init)||void 0===t||t.search(e),null===(n=this.condition)||void 0===n||n.search(e),null===(s=this.increment)||void 0===s||s.search(e),this.searchBlock(this.body,e)}}class F extends C{constructor(e,t,n,s,r){super(),this.attributes=null,this.name=e,this.type=t,this.storage=n,this.access=s,this.value=r}get astNodeType(){return'var'}search(e){var t;e(this),null===(t=this.value)||void 0===t||t.search(e)}}class M extends C{constructor(e,t,n){super(),this.attributes=null,this.name=e,this.type=t,this.value=n}get astNodeType(){return'override'}search(e){var t;null===(t=this.value)||void 0===t||t.search(e)}}class U extends C{constructor(e,t,n,s,r){super(),this.attributes=null,this.name=e,this.type=t,this.storage=n,this.access=s,this.value=r}get astNodeType(){return'let'}search(e){var t;e(this),null===(t=this.value)||void 0===t||t.search(e)}}class P extends C{constructor(e,t,n,s,r){super(),this.attributes=null,this.name=e,this.type=t,this.storage=n,this.access=s,this.value=r}get astNodeType(){return'const'}constEvaluate(e,t){return this.value.constEvaluate(e,t)}search(e){var t;e(this),null===(t=this.value)||void 0===t||t.search(e)}}var W,q,H,z;(e=>{e.increment='++',e.decrement='--'})(W||(W={})),(e=>{e.parse=function(t){const n=t;if('parse'==n)throw new Error('Invalid value for IncrementOperator');return e[n]}})(W||(W={}));class R extends C{constructor(e,t){super(),this.operator=e,this.variable=t}get astNodeType(){return'increment'}search(e){this.variable.search(e)}}(e=>{e.assign='=',e.addAssign='+=',e.subtractAssin='-=',e.multiplyAssign='*=',e.divideAssign='/=',e.moduloAssign='%=',e.andAssign='&=',e.orAssign='|=',e.xorAssign='^=',e.shiftLeftAssign='<<=',e.shiftRightAssign='>>='})(q||(q={})),(e=>{e.parse=function(e){const t=e;if('parse'==t)throw new Error('Invalid value for AssignOperator');return t}})(q||(q={}));class G extends C{constructor(e,t,n){super(),this.operator=e,this.variable=t,this.value=n}get astNodeType(){return'assign'}search(e){this.variable.search(e),this.value.search(e)}}class X extends C{constructor(e,t){super(),this.name=e,this.args=t}get astNodeType(){return'call'}isBuiltin(){return L.has(this.name)}search(e){for(const t of this.args)t.search(e);e(this)}}class j extends C{constructor(e,t){super(),this.body=e,this.continuing=t}get astNodeType(){return'loop'}search(e){var t;this.searchBlock(this.body,e),null===(t=this.continuing)||void 0===t||t.search(e)}}class Z extends C{constructor(e,t){super(),this.condition=e,this.cases=t}get astNodeType(){return'switch'}search(e){e(this);for(const t of this.cases)t.search(e)}}class Q extends C{constructor(e,t,n,s){super(),this.condition=e,this.body=t,this.elseif=n,this.else=s}get astNodeType(){return'if'}search(e){this.condition.search(e),this.searchBlock(this.body,e),this.searchBlock(this.elseif,e),this.searchBlock(this.else,e)}}class Y extends C{constructor(e){super(),this.value=e}get astNodeType(){return'return'}search(e){var t;null===(t=this.value)||void 0===t||t.search(e)}}class K extends C{constructor(e){super(),this.name=e}get astNodeType(){return'enable'}}class J extends C{constructor(e){super(),this.extensions=e}get astNodeType(){return'requires'}}class ee extends C{constructor(e,t){super(),this.severity=e,this.rule=t}get astNodeType(){return'diagnostic'}}class te extends C{constructor(e,t){super(),this.name=e,this.type=t}get astNodeType(){return'alias'}}class ne extends C{constructor(){super()}get astNodeType(){return'discard'}}class se extends C{constructor(){super(),this.condition=null,this.loopId=-1}get astNodeType(){return'break'}}class re extends C{constructor(){super(),this.loopId=-1}get astNodeType(){return'continue'}}class ae extends C{constructor(e){super(),this.attributes=null,this.name=e}get astNodeType(){return'type'}get isStruct(){return!1}get isArray(){return!1}static maxFormatType(e){let t=e[0];if('f32'===t.name)return t;for(let n=1;n<e.length;++n){const s=ae._priority.get(t.name);ae._priority.get(e[n].name)<s&&(t=e[n])}return'x32'===t.name?ae.i32:t}getTypeName(){return this.name}}ae.x32=new ae('x32'),ae.f32=new ae('f32'),ae.i32=new ae('i32'),ae.u32=new ae('u32'),ae.f16=new ae('f16'),ae.bool=new ae('bool'),ae.void=new ae('void'),ae._priority=new Map([['f32',0],['f16',1],['u32',2],['i32',3],['x32',3]]);class ie extends ae{constructor(e){super(e)}}class oe extends ae{constructor(e,t,n,s){super(e),this.members=t,this.startLine=n,this.endLine=s}get astNodeType(){return'struct'}get isStruct(){return!0}getMemberIndex(e){for(let t=0;t<this.members.length;t++)if(this.members[t].name==e)return t;return-1}search(e){for(const t of this.members)e(t)}}class ce extends ae{constructor(e,t,n){super(e),this.format=t,this.access=n}get astNodeType(){return'template'}getTypeName(){let e=this.name;if(null!==this.format){if('vec2'===e||'vec3'===e||'vec4'===e||'mat2x2'===e||'mat2x3'===e||'mat2x4'===e||'mat3x2'===e||'mat3x3'===e||'mat3x4'===e||'mat4x2'===e||'mat4x3'===e||'mat4x4'===e){if('f32'===this.format.name)return e+='f',e;if('i32'===this.format.name)return e+='i',e;if('u32'===this.format.name)return e+='u',e;if('bool'===this.format.name)return e+='b',e;if('f16'===this.format.name)return e+='h',e}e+=`<${this.format.name}>`}else if('vec2'===e||'vec3'===e||'vec4'===e)return e;return e}}ce.vec2f=new ce('vec2',ae.f32,null),ce.vec3f=new ce('vec3',ae.f32,null),ce.vec4f=new ce('vec4',ae.f32,null),ce.vec2i=new ce('vec2',ae.i32,null),ce.vec3i=new ce('vec3',ae.i32,null),ce.vec4i=new ce('vec4',ae.i32,null),ce.vec2u=new ce('vec2',ae.u32,null),ce.vec3u=new ce('vec3',ae.u32,null),ce.vec4u=new ce('vec4',ae.u32,null),ce.vec2h=new ce('vec2',ae.f16,null),ce.vec3h=new ce('vec3',ae.f16,null),ce.vec4h=new ce('vec4',ae.f16,null),ce.vec2b=new ce('vec2',ae.bool,null),ce.vec3b=new ce('vec3',ae.bool,null),ce.vec4b=new ce('vec4',ae.bool,null),ce.mat2x2f=new ce('mat2x2',ae.f32,null),ce.mat2x3f=new ce('mat2x3',ae.f32,null),ce.mat2x4f=new ce('mat2x4',ae.f32,null),ce.mat3x2f=new ce('mat3x2',ae.f32,null),ce.mat3x3f=new ce('mat3x3',ae.f32,null),ce.mat3x4f=new ce('mat3x4',ae.f32,null),ce.mat4x2f=new ce('mat4x2',ae.f32,null),ce.mat4x3f=new ce('mat4x3',ae.f32,null),ce.mat4x4f=new ce('mat4x4',ae.f32,null),ce.mat2x2h=new ce('mat2x2',ae.f16,null),ce.mat2x3h=new ce('mat2x3',ae.f16,null),ce.mat2x4h=new ce('mat2x4',ae.f16,null),ce.mat3x2h=new ce('mat3x2',ae.f16,null),ce.mat3x3h=new ce('mat3x3',ae.f16,null),ce.mat3x4h=new ce('mat3x4',ae.f16,null),ce.mat4x2h=new ce('mat4x2',ae.f16,null),ce.mat4x3h=new ce('mat4x3',ae.f16,null),ce.mat4x4h=new ce('mat4x4',ae.f16,null),ce.mat2x2i=new ce('mat2x2',ae.i32,null),ce.mat2x3i=new ce('mat2x3',ae.i32,null),ce.mat2x4i=new ce('mat2x4',ae.i32,null),ce.mat3x2i=new ce('mat3x2',ae.i32,null),ce.mat3x3i=new ce('mat3x3',ae.i32,null),ce.mat3x4i=new ce('mat3x4',ae.i32,null),ce.mat4x2i=new ce('mat4x2',ae.i32,null),ce.mat4x3i=new ce('mat4x3',ae.i32,null),ce.mat4x4i=new ce('mat4x4',ae.i32,null),ce.mat2x2u=new ce('mat2x2',ae.u32,null),ce.mat2x3u=new ce('mat2x3',ae.u32,null),ce.mat2x4u=new ce('mat2x4',ae.u32,null),ce.mat3x2u=new ce('mat3x2',ae.u32,null),ce.mat3x3u=new ce('mat3x3',ae.u32,null),ce.mat3x4u=new ce('mat3x4',ae.u32,null),ce.mat4x2u=new ce('mat4x2',ae.u32,null),ce.mat4x3u=new ce('mat4x3',ae.u32,null),ce.mat4x4u=new ce('mat4x4',ae.u32,null);class le extends ae{constructor(e,t,n,s){super(e),this.storage=t,this.type=n,this.access=s}get astNodeType(){return'pointer'}}class ue extends ae{constructor(e,t,n,s){super(e),this.attributes=t,this.format=n,this.count=s}get astNodeType(){return'array'}get isArray(){return!0}}class he extends ae{constructor(e,t,n){super(e),this.format=t,this.access=n}get astNodeType(){return'sampler'}}class fe extends A{constructor(){super(),this.postfix=null}}class pe extends fe{constructor(e){super(),this.value=e}get astNodeType(){return'stringExpr'}toString(){return this.value}constEvaluateString(){return this.value}}class de extends fe{constructor(e,t){super(),this.type=e,this.args=t}get astNodeType(){return'createExpr'}search(e){if(e(this),this.args)for(const t of this.args)t.search(e)}constEvaluate(e,t){return t&&(t[0]=this.type),e.evalExpression(this,e.context)}}class me extends fe{constructor(e,t){super(),this.cachedReturnValue=null,this.name=e,this.args=t}get astNodeType(){return'callExpr'}setCachedReturnValue(e){this.cachedReturnValue=e}get isBuiltin(){return L.has(this.name)}constEvaluate(e,t){return e.evalExpression(this,e.context)}search(e){for(const t of this.args)t.search(e);e(this)}}class ge extends fe{constructor(e){super(),this.name=e}get astNodeType(){return'varExpr'}search(e){e(this),this.postfix&&this.postfix.search(e)}constEvaluate(e,t){return e.evalExpression(this,e.context)}}class _e extends fe{constructor(e,t){super(),this.name=e,this.initializer=t}get astNodeType(){return'constExpr'}constEvaluate(e,t){if(this.initializer){const t=e.evalExpression(this.initializer,e.context);return null!==t&&this.postfix?t.getSubData(e,this.postfix,e.context):t}return null}search(e){this.initializer.search(e)}}class xe extends fe{constructor(e,t){super(),this.value=e,this.type=t}get astNodeType(){return'literalExpr'}constEvaluate(e,t){return void 0!==t&&(t[0]=this.type),this.value}get isScalar(){return this.value instanceof Be}get isVector(){return this.value instanceof Me||this.value instanceof Ue}get scalarValue(){return this.value instanceof Be?this.value.value:(console.error('Value is not scalar.'),0)}get vectorValue(){return this.value instanceof Me||this.value instanceof Ue?this.value.data:(console.error('Value is not a vector or matrix.'),new Float32Array(0))}}class ye extends fe{constructor(e,t){super(),this.type=e,this.value=t}get astNodeType(){return'bitcastExpr'}search(e){this.value.search(e)}}class be extends fe{constructor(e,t){super(),this.type=e,this.args=t}get astNodeType(){return'typecastExpr'}constEvaluate(e,t){return e.evalExpression(this,e.context)}search(e){this.searchBlock(this.args,e)}}class ve extends fe{constructor(e){super(),this.index=e}search(e){this.index.search(e)}}class we extends fe{constructor(){super()}}class ke extends we{constructor(e,t){super(),this.operator=e,this.right=t}get astNodeType(){return'unaryOp'}constEvaluate(e,t){return e.evalExpression(this,e.context)}search(e){this.right.search(e)}}class Ie extends we{constructor(e,t,n){super(),this.operator=e,this.left=t,this.right=n}get astNodeType(){return'binaryOp'}_getPromotedType(e,t){return e.name===t.name?e:'f32'===e.name||'f32'===t.name?ae.f32:'u32'===e.name||'u32'===t.name?ae.u32:ae.i32}constEvaluate(e,t){return e.evalExpression(this,e.context)}search(e){this.left.search(e),this.right.search(e)}}class Te extends A{constructor(e){super(),this.body=e}search(e){e(this),this.searchBlock(this.body,e)}}class Se extends fe{constructor(){super()}get astNodeType(){return'default'}}class Ae extends Te{constructor(e,t){super(t),this.selectors=e}get astNodeType(){return'case'}search(e){this.searchBlock(this.body,e)}}class Ee extends Te{constructor(e){super(e)}get astNodeType(){return'default'}search(e){this.searchBlock(this.body,e)}}class $e extends A{constructor(e,t,n){super(),this.name=e,this.type=t,this.attributes=n}get astNodeType(){return'argument'}}class Le extends A{constructor(e,t){super(),this.condition=e,this.body=t}get astNodeType(){return'elseif'}search(e){this.condition.search(e),this.searchBlock(this.body,e)}}class Ce extends A{constructor(e,t,n){super(),this.name=e,this.type=t,this.attributes=n}get astNodeType(){return'member'}}class De extends A{constructor(e,t){super(),this.name=e,this.value=t}get astNodeType(){return'attribute'}}class Ne{constructor(e,t){this.parent=null,this.typeInfo=e,this.parent=t,this.id=Ne._id++}clone(){throw`Clone: Not implemented for ${this.constructor.name}`}setDataValue(e,t,n,s){console.error(`SetDataValue: Not implemented for ${this.constructor.name}`)}getSubData(e,t,n){return console.error(`GetDataValue: Not implemented for ${this.constructor.name}`),null}toString(){return`<${this.typeInfo.getTypeName()}>`}}Ne._id=0;class Ve extends Ne{constructor(){super(new e('void',null),null)}toString(){return'void'}}Ve.void=new Ve;class Oe extends Ne{constructor(e){super(new r('pointer',e.typeInfo,null),null),this.reference=e}clone(){return this}setDataValue(e,t,n,s){this.reference.setDataValue(e,t,n,s)}getSubData(e,t,n){return t?this.reference.getSubData(e,t,n):this}toString(){return`&${this.reference.toString()}`}}class Be extends Ne{constructor(e,t,n=null){super(t,n),e instanceof Int32Array||e instanceof Uint32Array||e instanceof Float32Array?this.data=e:'x32'===this.typeInfo.name?e-Math.floor(e)!==0?this.data=new Float32Array([e]):this.data=e>=0?new Uint32Array([e]):new Int32Array([e]):'i32'===this.typeInfo.name||'bool'===this.typeInfo.name?this.data=new Int32Array([e]):'u32'===this.typeInfo.name?this.data=new Uint32Array([e]):'f32'===this.typeInfo.name||'f16'===this.typeInfo.name?this.data=new Float32Array([e]):console.error('ScalarData2: Invalid type',t)}clone(){if(this.data instanceof Float32Array)return new Be(new Float32Array(this.data),this.typeInfo,null);if(this.data instanceof Int32Array)return new Be(new Int32Array(this.data),this.typeInfo,null);if(this.data instanceof Uint32Array)return new Be(new Uint32Array(this.data),this.typeInfo,null);throw'ScalarData: Invalid data type'}get value(){return this.data[0]}set value(e){this.data[0]=e}setDataValue(e,t,n,s){if(n)return void console.error('SetDataValue: Scalar data does not support postfix',n);if(!(t instanceof Be))return void console.error('SetDataValue: Invalid value',t);let r=t.data[0];'i32'===this.typeInfo.name||'u32'===this.typeInfo.name?r=Math.floor(r):'bool'===this.typeInfo.name&&(r=r?1:0),this.data[0]=r}getSubData(e,t,n){return t?(console.error('getSubData: Scalar data does not support postfix',t),null):this}toString(){return`${this.value}`}}function Fe(e,t,n){const s=t.length;return 2===s?'f32'===n?new Me(new Float32Array(t),e.getTypeInfo('vec2f')):'i32'===n||'bool'===n?new Me(new Int32Array(t),e.getTypeInfo('vec2i')):'u32'===n?new Me(new Uint32Array(t),e.getTypeInfo('vec2u')):'f16'===n?new Me(new Float32Array(t),e.getTypeInfo('vec2h')):(console.error(`getSubData: Unknown format ${n}`),null):3===s?'f32'===n?new Me(new Float32Array(t),e.getTypeInfo('vec3f')):'i32'===n||'bool'===n?new Me(new Int32Array(t),e.getTypeInfo('vec3i')):'u32'===n?new Me(new Uint32Array(t),e.getTypeInfo('vec3u')):'f16'===n?new Me(new Float32Array(t),e.getTypeInfo('vec3h')):(console.error(`getSubData: Unknown format ${n}`),null):4===s?'f32'===n?new Me(new Float32Array(t),e.getTypeInfo('vec4f')):'i32'===n||'bool'===n?new Me(new Int32Array(t),e.getTypeInfo('vec4i')):'u32'===n?new Me(new Uint32Array(t),e.getTypeInfo('vec4u')):'f16'===n?new Me(new Float32Array(t),e.getTypeInfo('vec4h')):(console.error(`getSubData: Unknown format ${n}`),null):(console.error(`getSubData: Invalid vector size ${t.length}`),null)}class Me extends Ne{constructor(e,t,n=null){if(super(t,n),e instanceof Float32Array||e instanceof Uint32Array||e instanceof Int32Array)this.data=e;else{const t=this.typeInfo.name;'vec2f'===t||'vec3f'===t||'vec4f'===t?this.data=new Float32Array(e):'vec2i'===t||'vec3i'===t||'vec4i'===t?this.data=new Int32Array(e):'vec2u'===t||'vec3u'===t||'vec4u'===t?this.data=new Uint32Array(e):'vec2h'===t||'vec3h'===t||'vec4h'===t?this.data=new Float32Array(e):'vec2b'===t||'vec3b'===t||'vec4b'===t?this.data=new Int32Array(e):'vec2'===t||'vec3'===t||'vec4'===t?this.data=new Float32Array(e):console.error(`VectorData: Invalid type ${t}`)}}clone(){if(this.data instanceof Float32Array)return new Me(new Float32Array(this.data),this.typeInfo,null);if(this.data instanceof Int32Array)return new Me(new Int32Array(this.data),this.typeInfo,null);if(this.data instanceof Uint32Array)return new Me(new Uint32Array(this.data),this.typeInfo,null);throw'VectorData: Invalid data type'}setDataValue(e,t,n,s){n instanceof pe?console.error('TODO: Set vector postfix'):t instanceof Me?this.data=t.data:console.error('SetDataValue: Invalid value',t)}getSubData(e,t,n){if(null===t)return this;let s=e.getTypeInfo('f32');if(this.typeInfo instanceof a)s=this.typeInfo.format||s;else{const t=this.typeInfo.name;'vec2f'===t||'vec3f'===t||'vec4f'===t?s=e.getTypeInfo('f32'):'vec2i'===t||'vec3i'===t||'vec4i'===t?s=e.getTypeInfo('i32'):'vec2b'===t||'vec3b'===t||'vec4b'===t?s=e.getTypeInfo('bool'):'vec2u'===t||'vec3u'===t||'vec4u'===t?s=e.getTypeInfo('u32'):'vec2h'===t||'vec3h'===t||'vec4h'===t?s=e.getTypeInfo('f16'):console.error(`GetSubData: Unknown type ${t}`)}let r=this;for(;null!==t&&null!==r;){if(t instanceof ve){const a=t.index;let i=-1;if(a instanceof xe){if(!(a.value instanceof Be))return console.error(`GetSubData: Invalid array index ${a.value}`),null;i=a.value.value}else{const t=e.evalExpression(a,n);if(!(t instanceof Be))return console.error('GetSubData: Unknown index type',a),null;i=t.value}if(i<0||i>=r.data.length)return console.error('GetSubData: Index out of range',i),null;if(r.data instanceof Float32Array){const e=new Float32Array(r.data.buffer,r.data.byteOffset+4*i,1);return new Be(e,s)}if(r.data instanceof Int32Array){const e=new Int32Array(r.data.buffer,r.data.byteOffset+4*i,1);return new Be(e,s)}if(r.data instanceof Uint32Array){const e=new Uint32Array(r.data.buffer,r.data.byteOffset+4*i,1);return new Be(e,s)}throw'GetSubData: Invalid data type'}if(!(t instanceof pe))return console.error('GetSubData: Unknown postfix',t),null;{const n=t.value.toLowerCase();if(1===n.length){let e=0;if('x'===n||'r'===n)e=0;else if('y'===n||'g'===n)e=1;else if('z'===n||'b'===n)e=2;else{if('w'!==n&&'a'!==n)return console.error(`GetSubData: Unknown member ${n}`),null;e=3}if(this.data instanceof Float32Array){let t=new Float32Array(this.data.buffer,this.data.byteOffset+4*e,1);return new Be(t,s,this)}if(this.data instanceof Int32Array){let t=new Int32Array(this.data.buffer,this.data.byteOffset+4*e,1);return new Be(t,s,this)}if(this.data instanceof Uint32Array){let t=new Uint32Array(this.data.buffer,this.data.byteOffset+4*e,1);return new Be(t,s,this)}}const a=[];for(const e of n)'x'===e||'r'===e?a.push(this.data[0]):'y'===e||'g'===e?a.push(this.data[1]):'z'===e||'b'===e?a.push(this.data[2]):'w'===e||'a'===e?a.push(this.data[3]):console.error(`GetDataValue: Unknown member ${e}`);r=Fe(e,a,s.name)}t=t.postfix}return r}toString(){let e=`${this.data[0]}`;for(let t=1;t<this.data.length;++t)e+=`, ${this.data[t]}`;return e}}class Ue extends Ne{constructor(e,t,n=null){super(t,n),e instanceof Float32Array?this.data=e:this.data=new Float32Array(e)}clone(){return new Ue(new Float32Array(this.data),this.typeInfo,null)}setDataValue(e,t,n,s){n instanceof pe?console.error('TODO: Set matrix postfix'):t instanceof Ue?this.data=t.data:console.error('SetDataValue: Invalid value',t)}getSubData(e,t,n){if(null===t)return this;const s=this.typeInfo.name;if(e.getTypeInfo('f32'),this.typeInfo instanceof a)this.typeInfo.format;else if(s.endsWith('f'))e.getTypeInfo('f32');else if(s.endsWith('i'))e.getTypeInfo('i32');else if(s.endsWith('u'))e.getTypeInfo('u32');else{if(!s.endsWith('h'))return console.error(`GetDataValue: Unknown type ${s}`),null;e.getTypeInfo('f16')}if(t instanceof ve){const r=t.index;let a=-1;if(r instanceof xe){if(!(r.value instanceof Be))return console.error(`GetDataValue: Invalid array index ${r.value}`),null;a=r.value.value}else{const t=e.evalExpression(r,n);if(!(t instanceof Be))return console.error('GetDataValue: Unknown index type',r),null;a=t.value}if(a<0||a>=this.data.length)return console.error('GetDataValue: Index out of range',a),null;const i=s.endsWith('h')?'h':'f';let o;if('mat2x2'===s||'mat2x2f'===s||'mat2x2h'===s||'mat3x2'===s||'mat3x2f'===s||'mat3x2h'===s||'mat4x2'===s||'mat4x2f'===s||'mat4x2h'===s)o=new Me(new Float32Array(this.data.buffer,this.data.byteOffset+2*a*4,2),e.getTypeInfo(`vec2${i}`));else if('mat2x3'===s||'mat2x3f'===s||'mat2x3h'===s||'mat3x3'===s||'mat3x3f'===s||'mat3x3h'===s||'mat4x3'===s||'mat4x3f'===s||'mat4x3h'===s)o=new Me(new Float32Array(this.data.buffer,this.data.byteOffset+3*a*4,3),e.getTypeInfo(`vec3${i}`));else{if('mat2x4'!==s&&'mat2x4f'!==s&&'mat2x4h'!==s&&'mat3x4'!==s&&'mat3x4f'!==s&&'mat3x4h'!==s&&'mat4x4'!==s&&'mat4x4f'!==s&&'mat4x4h'!==s)return console.error(`GetDataValue: Unknown type ${s}`),null;o=new Me(new Float32Array(this.data.buffer,this.data.byteOffset+4*a*4,4),e.getTypeInfo(`vec4${i}`))}return t.postfix?o.getSubData(e,t.postfix,n):o}return console.error('GetDataValue: Invalid postfix',t),null}toString(){let e=`${this.data[0]}`;for(let t=1;t<this.data.length;++t)e+=`, ${this.data[t]}`;return e}}class Pe extends Ne{constructor(e,t,n=0,s=null){super(t,s),this.buffer=e instanceof ArrayBuffer?e:e.buffer,this.offset=n}clone(){const e=new Uint8Array(new Uint8Array(this.buffer,this.offset,this.typeInfo.size));return new Pe(e.buffer,this.typeInfo,0,null)}setDataValue(t,r,a,i){if(null===r)return void console.log('setDataValue: NULL data.');let o=this.offset,c=this.typeInfo;for(;a;){if(a instanceof ve)if(c instanceof s){const e=a.index;if(e instanceof xe){if(!(e.value instanceof Be))return void console.error(`SetDataValue: Invalid index type ${e.value}`);o+=e.value.value*c.stride}else{const n=t.evalExpression(e,i);if(!(n instanceof Be))return void console.error('SetDataValue: Unknown index type',e);o+=n.value*c.stride}c=c.format}else console.error(`SetDataValue: Type ${c.getTypeName()} is not an array`);else{if(!(a instanceof pe))return void console.error('SetDataValue: Unknown postfix type',a);{const t=a.value;if(c instanceof n){let e=!1;for(const n of c.members)if(n.name===t){o+=n.offset,c=n.type,e=!0;break}if(!e)return void console.error(`SetDataValue: Member ${t} not found`)}else if(c instanceof e){const e=c.getTypeName();let n=0;if('x'===t||'r'===t)n=0;else if('y'===t||'g'===t)n=1;else if('z'===t||'b'===t)n=2;else{if('w'!==t&&'a'!==t)return void console.error(`SetDataValue: Unknown member ${t}`);n=3}if(!(r instanceof Be))return void console.error('SetDataValue: Invalid value',r);const s=r.value;return'vec2f'===e?void(new Float32Array(this.buffer,o,2)[n]=s):'vec3f'===e?void(new Float32Array(this.buffer,o,3)[n]=s):'vec4f'===e?void(new Float32Array(this.buffer,o,4)[n]=s):'vec2i'===e?void(new Int32Array(this.buffer,o,2)[n]=s):'vec3i'===e?void(new Int32Array(this.buffer,o,3)[n]=s):'vec4i'===e?void(new Int32Array(this.buffer,o,4)[n]=s):'vec2u'===e?void(new Uint32Array(this.buffer,o,2)[n]=s):'vec3u'===e?void(new Uint32Array(this.buffer,o,3)[n]=s):'vec4u'===e?void(new Uint32Array(this.buffer,o,4)[n]=s):void console.error(`SetDataValue: Type ${e} is not a struct`)}}}a=a.postfix}this.setData(t,r,c,o,i)}setData(e,t,n,s,r){const a=n.getTypeName();if('f32'!==a&&'f16'!==a)if('i32'!==a&&'atomic<i32>'!==a&&'x32'!==a)if('u32'!==a&&'atomic<u32>'!==a)if('bool'!==a){if('vec2f'===a||'vec2h'===a){const e=new Float32Array(this.buffer,s,2);return void(t instanceof Me?(e[0]=t.data[0],e[1]=t.data[1]):(e[0]=t[0],e[1]=t[1]))}if('vec3f'===a||'vec3h'===a){const e=new Float32Array(this.buffer,s,3);return void(t instanceof Me?(e[0]=t.data[0],e[1]=t.data[1],e[2]=t.data[2]):(e[0]=t[0],e[1]=t[1],e[2]=t[2]))}if('vec4f'===a||'vec4h'===a){const e=new Float32Array(this.buffer,s,4);return void(t instanceof Me?(e[0]=t.data[0],e[1]=t.data[1],e[2]=t.data[2],e[3]=t.data[3]):(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3]))}if('vec2i'===a){const e=new Int32Array(this.buffer,s,2);return void(t instanceof Me?(e[0]=t.data[0],e[1]=t.data[1]):(e[0]=t[0],e[1]=t[1]))}if('vec3i'===a){const e=new Int32Array(this.buffer,s,3);return void(t instanceof Me?(e[0]=t.data[0],e[1]=t.data[1],e[2]=t.data[2]):(e[0]=t[0],e[1]=t[1],e[2]=t[2]))}if('vec4i'===a){const e=new Int32Array(this.buffer,s,4);return void(t instanceof Me?(e[0]=t.data[0],e[1]=t.data[1],e[2]=t.data[2],e[3]=t.data[3]):(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3]))}if('vec2u'===a){const e=new Uint32Array(this.buffer,s,2);return void(t instanceof Me?(e[0]=t.data[0],e[1]=t.data[1]):(e[0]=t[0],e[1]=t[1]))}if('vec3u'===a){const e=new Uint32Array(this.buffer,s,3);return void(t instanceof Me?(e[0]=t.data[0],e[1]=t.data[1],e[2]=t.data[2]):(e[0]=t[0],e[1]=t[1],e[2]=t[2]))}if('vec4u'===a){const e=new Uint32Array(this.buffer,s,4);return void(t instanceof Me?(e[0]=t.data[0],e[1]=t.data[1],e[2]=t.data[2],e[3]=t.data[3]):(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3]))}if('vec2b'===a){const e=new Uint32Array(this.buffer,s,2);return void(t instanceof Me?(e[0]=t.data[0],e[1]=t.data[1]):(e[0]=t[0],e[1]=t[1]))}if('vec3b'===a){const e=new Uint32Array(this.buffer,s,3);return void(t instanceof Me?(e[0]=t.data[0],e[1]=t.data[1],e[2]=t.data[2]):(e[0]=t[0],e[1]=t[1],e[2]=t[2]))}if('vec4b'===a){const e=new Uint32Array(this.buffer,s,4);return void(t instanceof Me?(e[0]=t.data[0],e[1]=t.data[1],e[2]=t.data[2],e[3]=t.data[3]):(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3]))}if('mat2x2f'===a||'mat2x2h'===a){const e=new Float32Array(this.buffer,s,4);return void(t instanceof Ue?(e[0]=t.data[0],e[1]=t.data[1],e[2]=t.data[2],e[3]=t.data[3]):(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3]))}if('mat2x3f'===a||'mat2x3h'===a){const e=new Float32Array(this.buffer,s,6);return void(t instanceof Ue?(e[0]=t.data[0],e[1]=t.data[1],e[2]=t.data[2],e[3]=t.data[3],e[4]=t.data[4],e[5]=t.data[5]):(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5]))}if('mat2x4f'===a||'mat2x4h'===a){const e=new Float32Array(this.buffer,s,8);return void(t instanceof Ue?(e[0]=t.data[0],e[1]=t.data[1],e[2]=t.data[2],e[3]=t.data[3],e[4]=t.data[4],e[5]=t.data[5],e[6]=t.data[6],e[7]=t.data[7]):(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7]))}if('mat3x2f'===a||'mat3x2h'===a){const e=new Float32Array(this.buffer,s,6);return void(t instanceof Ue?(e[0]=t.data[0],e[1]=t.data[1],e[2]=t.data[2],e[3]=t.data[3],e[4]=t.data[4],e[5]=t.data[5]):(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5]))}if('mat3x3f'===a||'mat3x3h'===a){const e=new Float32Array(this.buffer,s,9);return void(t instanceof Ue?(e[0]=t.data[0],e[1]=t.data[1],e[2]=t.data[2],e[3]=t.data[3],e[4]=t.data[4],e[5]=t.data[5],e[6]=t.data[6],e[7]=t.data[7],e[8]=t.data[8]):(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8]))}if('mat3x4f'===a||'mat3x4h'===a){const e=new Float32Array(this.buffer,s,12);return void(t instanceof Ue?(e[0]=t.data[0],e[1]=t.data[1],e[2]=t.data[2],e[3]=t.data[3],e[4]=t.data[4],e[5]=t.data[5],e[6]=t.data[6],e[7]=t.data[7],e[8]=t.data[8],e[9]=t.data[9],e[10]=t.data[10],e[11]=t.data[11]):(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11]))}if('mat4x2f'===a||'mat4x2h'===a){const e=new Float32Array(this.buffer,s,8);return void(t instanceof Ue?(e[0]=t.data[0],e[1]=t.data[1],e[2]=t.data[2],e[3]=t.data[3],e[4]=t.data[4],e[5]=t.data[5],e[6]=t.data[6],e[7]=t.data[7]):(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7]))}if('mat4x3f'===a||'mat4x3h'===a){const e=new Float32Array(this.buffer,s,12);return void(t instanceof Ue?(e[0]=t.data[0],e[1]=t.data[1],e[2]=t.data[2],e[3]=t.data[3],e[4]=t.data[4],e[5]=t.data[5],e[6]=t.data[6],e[7]=t.data[7],e[8]=t.data[8],e[9]=t.data[9],e[10]=t.data[10],e[11]=t.data[11]):(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11]))}if('mat4x4f'===a||'mat4x4h'===a){const e=new Float32Array(this.buffer,s,16);return void(t instanceof Ue?(e[0]=t.data[0],e[1]=t.data[1],e[2]=t.data[2],e[3]=t.data[3],e[4]=t.data[4],e[5]=t.data[5],e[6]=t.data[6],e[7]=t.data[7],e[8]=t.data[8],e[9]=t.data[9],e[10]=t.data[10],e[11]=t.data[11],e[12]=t.data[12],e[13]=t.data[13],e[14]=t.data[14],e[15]=t.data[15]):(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]))}if(t instanceof Pe){if(n===t.typeInfo){return void new Uint8Array(this.buffer,s,t.buffer.byteLength).set(new Uint8Array(t.buffer))}console.error('SetDataValue: Type mismatch',a,t.typeInfo.getTypeName())}else console.error(`SetData: Unknown type ${a}`)}else t instanceof Be&&(new Int32Array(this.buffer,s,1)[0]=t.value);else t instanceof Be&&(new Uint32Array(this.buffer,s,1)[0]=t.value);else t instanceof Be&&(new Int32Array(this.buffer,s,1)[0]=t.value);else t instanceof Be&&(new Float32Array(this.buffer,s,1)[0]=t.value)}getSubData(t,r,i){var o,c,l;if(null===r)return this;let u=this.offset,h=this.typeInfo;for(;r;){if(r instanceof ve){const e=r.index,n=e instanceof fe?t.evalExpression(e,i):e;let a=0;if(n instanceof Be?a=n.value:'number'==typeof n?a=n:console.error('GetDataValue: Invalid index type',e),h instanceof s)u+=a*h.stride,h=h.format;else{const e=h.getTypeName();'mat4x4'===e||'mat4x4f'===e||'mat4x4h'===e?(u+=16*a,h=t.getTypeInfo('vec4f')):console.error(`getDataValue: Type ${h.getTypeName()} is not an array`)}}else{if(!(r instanceof pe))return console.error('GetDataValue: Unknown postfix type',r),null;{const s=r.value;if(h instanceof n){let e=!1;for(const t of h.members)if(t.name===s){u+=t.offset,h=t.type,e=!0;break}if(!e)return console.error(`GetDataValue: Member ${s} not found`),null}else if(h instanceof e){const e=h.getTypeName();if('vec2f'===e||'vec3f'===e||'vec4f'===e||'vec2i'===e||'vec3i'===e||'vec4i'===e||'vec2u'===e||'vec3u'===e||'vec4u'===e||'vec2b'===e||'vec3b'===e||'vec4b'===e||'vec2h'===e||'vec3h'===e||'vec4h'===e||'vec2'===e||'vec3'===e||'vec4'===e){if(s.length>0&&s.length<5){let n='f';const r=[];for(let a=0;a<s.length;++a){const i=s[a].toLowerCase();let o=0;if('x'===i||'r'===i)o=0;else if('y'===i||'g'===i)o=1;else if('z'===i||'b'===i)o=2;else{if('w'!==i&&'a'!==i)return console.error(`Unknown member ${s}`),null;o=3}if(1===s.length){if(e.endsWith('f'))return this.buffer.byteLength<u+4*o+4?(console.log('Insufficient buffer data'),null):new Be(new Float32Array(this.buffer,u+4*o,1),t.getTypeInfo('f32'),this);if(e.endsWith('h'))return new Be(new Float32Array(this.buffer,u+4*o,1),t.getTypeInfo('f16'),this);if(e.endsWith('i'))return new Be(new Int32Array(this.buffer,u+4*o,1),t.getTypeInfo('i32'),this);if(e.endsWith('b'))return new Be(new Int32Array(this.buffer,u+4*o,1),t.getTypeInfo('bool'),this);if(e.endsWith('u'))return new Be(new Uint32Array(this.buffer,u+4*o,1),t.getTypeInfo('i32'),this)}if('vec2f'===e)r.push(new Float32Array(this.buffer,u,2)[o]);else if('vec3f'===e){if(u+12>=this.buffer.byteLength)return console.log('Insufficient buffer data'),null;const e=new Float32Array(this.buffer,u,3);r.push(e[o])}else if('vec4f'===e)r.push(new Float32Array(this.buffer,u,4)[o]);else if('vec2i'===e)n='i',r.push(new Int32Array(this.buffer,u,2)[o]);else if('vec3i'===e)n='i',r.push(new Int32Array(this.buffer,u,3)[o]);else if('vec4i'===e)n='i',r.push(new Int32Array(this.buffer,u,4)[o]);else if('vec2u'===e){n='u';const e=new Uint32Array(this.buffer,u,2);r.push(e[o])}else'vec3u'===e?(n='u',r.push(new Uint32Array(this.buffer,u,3)[o])):'vec4u'===e&&(n='u',r.push(new Uint32Array(this.buffer,u,4)[o]))}return 2===r.length?h=t.getTypeInfo(`vec2${n}`):3===r.length?h=t.getTypeInfo(`vec3${n}`):4===r.length?h=t.getTypeInfo(`vec4${n}`):console.error(`GetDataValue: Invalid vector length ${r.length}`),new Me(r,h,null)}return console.error(`GetDataValue: Unknown member ${s}`),null}return console.error(`GetDataValue: Type ${e} is not a struct`),null}}}r=r.postfix}const f=h.getTypeName();return'f32'===f?new Be(new Float32Array(this.buffer,u,1),h,this):'i32'===f?new Be(new Int32Array(this.buffer,u,1),h,this):'u32'===f?new Be(new Uint32Array(this.buffer,u,1),h,this):'vec2f'===f?new Me(new Float32Array(this.buffer,u,2),h,this):'vec3f'===f?new Me(new Float32Array(this.buffer,u,3),h,this):'vec4f'===f?new Me(new Float32Array(this.buffer,u,4),h,this):'vec2i'===f?new Me(new Int32Array(this.buffer,u,2),h,this):'vec3i'===f?new Me(new Int32Array(this.buffer,u,3),h,this):'vec4i'===f?new Me(new Int32Array(this.buffer,u,4),h,this):'vec2u'===f?new Me(new Uint32Array(this.buffer,u,2),h,this):'vec3u'===f?new Me(new Uint32Array(this.buffer,u,3),h,this):'vec4u'===f?new Me(new Uint32Array(this.buffer,u,4),h,this):h instanceof a&&'atomic'===h.name?'u32'===(null===(o=h.format)||void 0===o?void 0:o.name)?new Be(new Uint32Array(this.buffer,u,1)[0],h.format,this):'i32'===(null===(c=h.format)||void 0===c?void 0:c.name)?new Be(new Int32Array(this.buffer,u,1)[0],h.format,this):(console.error(`GetDataValue: Invalid atomic format ${null===(l=h.format)||void 0===l?void 0:l.name}`),null):new Pe(this.buffer,h,u,this)}toString(){let e='';if(this.typeInfo instanceof s)if('f32'===this.typeInfo.format.name){const t=new Float32Array(this.buffer,this.offset);e=`[${t[0]}`;for(let n=1;n<t.length;++n)e+=`, ${t[n]}`}else if('i32'===this.typeInfo.format.name){const t=new Int32Array(this.buffer,this.offset);e=`[${t[0]}`;for(let n=1;n<t.length;++n)e+=`, ${t[n]}`}else if('u32'===this.typeInfo.format.name){const t=new Uint32Array(this.buffer,this.offset);e=`[${t[0]}`;for(let n=1;n<t.length;++n)e+=`, ${t[n]}`}else if('vec2f'===this.typeInfo.format.name){const t=new Float32Array(this.buffer,this.offset);e=`[${t[0]}, ${t[1]}]`;for(let n=1;n<t.length/2;++n)e+=`, [${t[2*n]}, ${t[2*n+1]}]`}else if('vec3f'===this.typeInfo.format.name){const t=new Float32Array(this.buffer,this.offset);e=`[${t[0]}, ${t[1]}, ${t[2]}]`;for(let n=4;n<t.length;n+=4)e+=`, [${t[n]}, ${t[n+1]}, ${t[n+2]}]`}else if('vec4f'===this.typeInfo.format.name){const t=new Float32Array(this.buffer,this.offset);e=`[${t[0]}, ${t[1]}, ${t[2]}, ${t[3]}]`;for(let n=4;n<t.length;n+=4)e+=`, [${t[n]}, ${t[n+1]}, ${t[n+2]}, ${t[n+3]}]`}else e='[...]';else this.typeInfo instanceof n?e+='{...}':e='[...]';return e}}class We extends Ne{constructor(e,t,n,s){super(t,null),this.data=e,this.descriptor=n,this.view=s}clone(){return new We(this.data,this.typeInfo,this.descriptor,this.view)}get width(){var e,t;const n=this.descriptor.size;return n instanceof Array&&n.length>0?null!==(e=n[0])&&void 0!==e?e:0:n instanceof Object&&null!==(t=n.width)&&void 0!==t?t:0}get height(){var e,t;const n=this.descriptor.size;return n instanceof Array&&n.length>1?null!==(e=n[1])&&void 0!==e?e:0:n instanceof Object&&null!==(t=n.height)&&void 0!==t?t:0}get depthOrArrayLayers(){var e,t;const n=this.descriptor.size;return n instanceof Array&&n.length>2?null!==(e=n[2])&&void 0!==e?e:0:n instanceof Object&&null!==(t=n.depthOrArrayLayers)&&void 0!==t?t:0}get format(){var e;return this.descriptor&&null!==(e=this.descriptor.format)&&void 0!==e?e:'rgba8unorm'}get sampleCount(){var e;return this.descriptor&&null!==(e=this.descriptor.sampleCount)&&void 0!==e?e:1}get mipLevelCount(){var e;return this.descriptor&&null!==(e=this.descriptor.mipLevelCount)&&void 0!==e?e:1}get dimension(){var e;return this.descriptor&&null!==(e=this.descriptor.dimension)&&void 0!==e?e:'2d'}getMipLevelSize(e){if(e>=this.mipLevelCount)return[0,0,0];const t=[this.width,this.height,this.depthOrArrayLayers];for(let n=0;n<t.length;++n)t[n]=Math.max(1,t[n]>>e);return t}get texelByteSize(){const e=this.format,t=S[e];return t?t.isDepthStencil?4:t.bytesPerBlock:0}get bytesPerRow(){return this.width*this.texelByteSize}get isDepthStencil(){const e=this.format,t=S[e];return!!t&&t.isDepthStencil}getGpuSize(){const e=this.format,t=S[e],n=this.width;if(!e||n<=0||!t)return-1;const s=this.height,r=this.depthOrArrayLayers,a=this.dimension;return n/t.blockWidth*('1d'===a?1:s/t.blockHeight)*t.bytesPerBlock*r}getPixel(e,t,n=0,s=0){const r=this.texelByteSize,a=this.bytesPerRow,i=this.height,o=this.data[s];return k(new Uint8Array(o),e,t,n,s,i,a,r,this.format)}setPixel(e,t,n,s,r){const a=this.texelByteSize,i=this.bytesPerRow,o=this.height,c=this.data[s];!function(e,t,n,s,r,a,i,o,c,l){const u=s*(i>>=r)*(a>>=r)+n*i+t*o;switch(c){case'r8unorm':return void T(e,u,'8unorm',1,l);case'r8snorm':return void T(e,u,'8snorm',1,l);case'r8uint':return void T(e,u,'8uint',1,l);case'r8sint':return void T(e,u,'8sint',1,l);case'rg8unorm':return void T(e,u,'8unorm',2,l);case'rg8snorm':return void T(e,u,'8snorm',2,l);case'rg8uint':return void T(e,u,'8uint',2,l);case'rg8sint':return void T(e,u,'8sint',2,l);case'rgba8unorm-srgb':case'rgba8unorm':case'bgra8unorm-srgb':case'bgra8unorm':return void T(e,u,'8unorm',4,l);case'rgba8snorm':return void T(e,u,'8snorm',4,l);case'rgba8uint':return void T(e,u,'8uint',4,l);case'rgba8sint':return void T(e,u,'8sint',4,l);case'r16uint':return void T(e,u,'16uint',1,l);case'r16sint':return void T(e,u,'16sint',1,l);case'r16float':return void T(e,u,'16float',1,l);case'rg16uint':return void T(e,u,'16uint',2,l);case'rg16sint':return void T(e,u,'16sint',2,l);case'rg16float':return void T(e,u,'16float',2,l);case'rgba16uint':return void T(e,u,'16uint',4,l);case'rgba16sint':return void T(e,u,'16sint',4,l);case'rgba16float':return void T(e,u,'16float',4,l);case'r32uint':return void T(e,u,'32uint',1,l);case'r32sint':return void T(e,u,'32sint',1,l);case'depth16unorm':case'depth24plus':case'depth24plus-stencil8':case'depth32float':case'depth32float-stencil8':case'r32float':return void T(e,u,'32float',1,l);case'rg32uint':return void T(e,u,'32uint',2,l);case'rg32sint':return void T(e,u,'32sint',2,l);case'rg32float':return void T(e,u,'32float',2,l);case'rgba32uint':return void T(e,u,'32uint',4,l);case'rgba32sint':return void T(e,u,'32sint',4,l);case'rgba32float':return void T(e,u,'32float',4,l);case'rg11b10ufloat':console.error('TODO: rg11b10ufloat not supported for writing')}}(new Uint8Array(c),e,t,n,s,o,i,a,this.format,r)}}(e=>{e[e.token=0]='token',e[e.keyword=1]='keyword',e[e.reserved=2]='reserved'})(z||(z={}));class qe{constructor(e,t,n){this.name=e,this.type=t,this.rule=n}toString(){return this.name}}class He{}H=He,He.none=new qe('',z.reserved,''),He.eof=new qe('EOF',z.token,''),He.reserved={asm:new qe('asm',z.reserved,'asm'),bf16:new qe('bf16',z.reserved,'bf16'),do:new qe('do',z.reserved,'do'),enum:new qe('enum',z.reserved,'enum'),f16:new qe('f16',z.reserved,'f16'),f64:new qe('f64',z.reserved,'f64'),handle:new qe('handle',z.reserved,'handle'),i8:new qe('i8',z.reserved,'i8'),i16:new qe('i16',z.reserved,'i16'),i64:new qe('i64',z.reserved,'i64'),mat:new qe('mat',z.reserved,'mat'),premerge:new qe('premerge',z.reserved,'premerge'),regardless:new qe('regardless',z.reserved,'regardless'),typedef:new qe('typedef',z.reserved,'typedef'),u8:new qe('u8',z.reserved,'u8'),u16:new qe('u16',z.reserved,'u16'),u64:new qe('u64',z.reserved,'u64'),unless:new qe('unless',z.reserved,'unless'),using:new qe('using',z.reserved,'using'),vec:new qe('vec',z.reserved,'vec'),void:new qe('void',z.reserved,'void')},He.keywords={array:new qe('array',z.keyword,'array'),atomic:new qe('atomic',z.keyword,'atomic'),bool:new qe('bool',z.keyword,'bool'),f32:new qe('f32',z.keyword,'f32'),i32:new qe('i32',z.keyword,'i32'),mat2x2:new qe('mat2x2',z.keyword,'mat2x2'),mat2x3:new qe('mat2x3',z.keyword,'mat2x3'),mat2x4:new qe('mat2x4',z.keyword,'mat2x4'),mat3x2:new qe('mat3x2',z.keyword,'mat3x2'),mat3x3:new qe('mat3x3',z.keyword,'mat3x3'),mat3x4:new qe('mat3x4',z.keyword,'mat3x4'),mat4x2:new qe('mat4x2',z.keyword,'mat4x2'),mat4x3:new qe('mat4x3',z.keyword,'mat4x3'),mat4x4:new qe('mat4x4',z.keyword,'mat4x4'),ptr:new qe('ptr',z.keyword,'ptr'),sampler:new qe('sampler',z.keyword,'sampler'),sampler_comparison:new qe('sampler_comparison',z.keyword,'sampler_comparison'),struct:new qe('struct',z.keyword,'struct'),texture_1d:new qe('texture_1d',z.keyword,'texture_1d'),texture_2d:new qe('texture_2d',z.keyword,'texture_2d'),texture_2d_array:new qe('texture_2d_array',z.keyword,'texture_2d_array'),texture_3d:new qe('texture_3d',z.keyword,'texture_3d'),texture_cube:new qe('texture_cube',z.keyword,'texture_cube'),texture_cube_array:new qe('texture_cube_array',z.keyword,'texture_cube_array'),texture_multisampled_2d:new qe('texture_multisampled_2d',z.keyword,'texture_multisampled_2d'),texture_storage_1d:new qe('texture_storage_1d',z.keyword,'texture_storage_1d'),texture_storage_2d:new qe('texture_storage_2d',z.keyword,'texture_storage_2d'),texture_storage_2d_array:new qe('texture_storage_2d_array',z.keyword,'texture_storage_2d_array'),texture_storage_3d:new qe('texture_storage_3d',z.keyword,'texture_storage_3d'),texture_depth_2d:new qe('texture_depth_2d',z.keyword,'texture_depth_2d'),texture_depth_2d_array:new qe('texture_depth_2d_array',z.keyword,'texture_depth_2d_array'),texture_depth_cube:new qe('texture_depth_cube',z.keyword,'texture_depth_cube'),texture_depth_cube_array:new qe('texture_depth_cube_array',z.keyword,'texture_depth_cube_array'),texture_depth_multisampled_2d:new qe('texture_depth_multisampled_2d',z.keyword,'texture_depth_multisampled_2d'),texture_external:new qe('texture_external',z.keyword,'texture_external'),u32:new qe('u32',z.keyword,'u32'),vec2:new qe('vec2',z.keyword,'vec2'),vec3:new qe('vec3',z.keyword,'vec3'),vec4:new qe('vec4',z.keyword,'vec4'),bitcast:new qe('bitcast',z.keyword,'bitcast'),block:new qe('block',z.keyword,'block'),break:new qe('break',z.keyword,'break'),case:new qe('case',z.keyword,'case'),continue:new qe('continue',z.keyword,'continue'),continuing:new qe('continuing',z.keyword,'continuing'),default:new qe('default',z.keyword,'default'),diagnostic:new qe('diagnostic',z.keyword,'diagnostic'),discard:new qe('discard',z.keyword,'discard'),else:new qe('else',z.keyword,'else'),enable:new qe('enable',z.keyword,'enable'),fallthrough:new qe('fallthrough',z.keyword,'fallthrough'),false:new qe('false',z.keyword,'false'),fn:new qe('fn',z.keyword,'fn'),for:new qe('for',z.keyword,'for'),function:new qe('function',z.keyword,'function'),if:new qe('if',z.keyword,'if'),let:new qe('let',z.keyword,'let'),const:new qe('const',z.keyword,'const'),loop:new qe('loop',z.keyword,'loop'),while:new qe('while',z.keyword,'while'),private:new qe('private',z.keyword,'private'),read:new qe('read',z.keyword,'read'),read_write:new qe('read_write',z.keyword,'read_write'),return:new qe('return',z.keyword,'return'),requires:new qe('requires',z.keyword,'requires'),storage:new qe('storage',z.keyword,'storage'),switch:new qe('switch',z.keyword,'switch'),true:new qe('true',z.keyword,'true'),alias:new qe('alias',z.keyword,'alias'),type:new qe('type',z.keyword,'type'),uniform:new qe('uniform',z.keyword,'uniform'),var:new qe('var',z.keyword,'var'),override:new qe('override',z.keyword,'override'),workgroup:new qe('workgroup',z.keyword,'workgroup'),write:new qe('write',z.keyword,'write'),r8unorm:new qe('r8unorm',z.keyword,'r8unorm'),r8snorm:new qe('r8snorm',z.keyword,'r8snorm'),r8uint:new qe('r8uint',z.keyword,'r8uint'),r8sint:new qe('r8sint',z.keyword,'r8sint'),r16uint:new qe('r16uint',z.keyword,'r16uint'),r16sint:new qe('r16sint',z.keyword,'r16sint'),r16float:new qe('r16float',z.keyword,'r16float'),rg8unorm:new qe('rg8unorm',z.keyword,'rg8unorm'),rg8snorm:new qe('rg8snorm',z.keyword,'rg8snorm'),rg8uint:new qe('rg8uint',z.keyword,'rg8uint'),rg8sint:new qe('rg8sint',z.keyword,'rg8sint'),r32uint:new qe('r32uint',z.keyword,'r32uint'),r32sint:new qe('r32sint',z.keyword,'r32sint'),r32float:new qe('r32float',z.keyword,'r32float'),rg16uint:new qe('rg16uint',z.keyword,'rg16uint'),rg16sint:new qe('rg16sint',z.keyword,'rg16sint'),rg16float:new qe('rg16float',z.keyword,'rg16float'),rgba8unorm:new qe('rgba8unorm',z.keyword,'rgba8unorm'),rgba8unorm_srgb:new qe('rgba8unorm_srgb',z.keyword,'rgba8unorm_srgb'),rgba8snorm:new qe('rgba8snorm',z.keyword,'rgba8snorm'),rgba8uint:new qe('rgba8uint',z.keyword,'rgba8uint'),rgba8sint:new qe('rgba8sint',z.keyword,'rgba8sint'),bgra8unorm:new qe('bgra8unorm',z.keyword,'bgra8unorm'),bgra8unorm_srgb:new qe('bgra8unorm_srgb',z.keyword,'bgra8unorm_srgb'),rgb10a2unorm:new qe('rgb10a2unorm',z.keyword,'rgb10a2unorm'),rg11b10float:new qe('rg11b10float',z.keyword,'rg11b10float'),rg32uint:new qe('rg32uint',z.keyword,'rg32uint'),rg32sint:new qe('rg32sint',z.keyword,'rg32sint'),rg32float:new qe('rg32float',z.keyword,'rg32float'),rgba16uint:new qe('rgba16uint',z.keyword,'rgba16uint'),rgba16sint:new qe('rgba16sint',z.keyword,'rgba16sint'),rgba16float:new qe('rgba16float',z.keyword,'rgba16float'),rgba32uint:new qe('rgba32uint',z.keyword,'rgba32uint'),rgba32sint:new qe('rgba32sint',z.keyword,'rgba32sint'),rgba32float:new qe('rgba32float',z.keyword,'rgba32float'),static_assert:new qe('static_assert',z.keyword,'static_assert')},He.tokens={decimal_float_literal:new qe('decimal_float_literal',z.token,/((-?[0-9]*\\.[0-9]+|-?[0-9]+\\.[0-9]*)((e|E)(\\+|-)?[0-9]+)?[fh]?)|(-?[0-9]+(e|E)(\\+|-)?[0-9]+[fh]?)|(-?[0-9]+[fh])/),hex_float_literal:new qe('hex_float_literal',z.token,/-?0x((([0-9a-fA-F]*\\.[0-9a-fA-F]+|[0-9a-fA-F]+\\.[0-9a-fA-F]*)((p|P)(\\+|-)?[0-9]+[fh]?)?)|([0-9a-fA-F]+(p|P)(\\+|-)?[0-9]+[fh]?))/),int_literal:new qe('int_literal',z.token,/-?0x[0-9a-fA-F]+|0i?|-?[1-9][0-9]*i?/),uint_literal:new qe('uint_literal',z.token,/0x[0-9a-fA-F]+u|0u|[1-9][0-9]*u/),name:new qe('name',z.token,/([_\\p{XID_Start}][\\p{XID_Continue}]+)|([\\p{XID_Start}])/u),ident:new qe('ident',z.token,/[_a-zA-Z][0-9a-zA-Z_]*/),and:new qe('and',z.token,'&'),and_and:new qe('and_and',z.token,'&&'),arrow:new qe('arrow ',z.token,'->'),attr:new qe('attr',z.token,'@'),forward_slash:new qe('forward_slash',z.token,'/'),bang:new qe('bang',z.token,'!'),bracket_left:new qe('bracket_left',z.token,'['),bracket_right:new qe('bracket_right',z.token,']'),brace_left:new qe('brace_left',z.token,'{'),brace_right:new qe('brace_right',z.token,'}'),colon:new qe('colon',z.token,':'),comma:new qe('comma',z.token,','),equal:new qe('equal',z.token,'='),equal_equal:new qe('equal_equal',z.token,'=='),not_equal:new qe('not_equal',z.token,'!='),greater_than:new qe('greater_than',z.token,'>'),greater_than_equal:new qe('greater_than_equal',z.token,'>='),shift_right:new qe('shift_right',z.token,'>>'),less_than:new qe('less_than',z.token,'<'),less_than_equal:new qe('less_than_equal',z.token,'<='),shift_left:new qe('shift_left',z.token,'<<'),modulo:new qe('modulo',z.token,'%'),minus:new qe('minus',z.token,'-'),minus_minus:new qe('minus_minus',z.token,'--'),period:new qe('period',z.token,'.'),plus:new qe('plus',z.token,'+'),plus_plus:new qe('plus_plus',z.token,'++'),or:new qe('or',z.token,'|'),or_or:new qe('or_or',z.token,'||'),paren_left:new qe('paren_left',z.token,'('),paren_right:new qe('paren_right',z.token,')'),semicolon:new qe('semicolon',z.token,';'),star:new qe('star',z.token,'*'),tilde:new qe('tilde',z.token,'~'),underscore:new qe('underscore',z.token,'_'),xor:new qe('xor',z.token,'^'),plus_equal:new qe('plus_equal',z.token,'+='),minus_equal:new qe('minus_equal',z.token,'-='),times_equal:new qe('times_equal',z.token,'*='),division_equal:new qe('division_equal',z.token,'/='),modulo_equal:new qe('modulo_equal',z.token,'%='),and_equal:new qe('and_equal',z.token,'&='),or_equal:new qe('or_equal',z.token,'|='),xor_equal:new qe('xor_equal',z.token,'^='),shift_right_equal:new qe('shift_right_equal',z.token,'>>='),shift_left_equal:new qe('shift_left_equal',z.token,'<<=')},He.simpleTokens={'@':H.tokens.attr,'{':H.tokens.brace_left,'}':H.tokens.brace_right,':':H.tokens.colon,',':H.tokens.comma,'(':H.tokens.paren_left,')':H.tokens.paren_right,';':H.tokens.semicolon},He.literalTokens={'&':H.tokens.and,'&&':H.tokens.and_and,'->':H.tokens.arrow,'/':H.tokens.forward_slash,'!':H.tokens.bang,'[':H.tokens.bracket_left,']':H.tokens.bracket_right,'=':H.tokens.equal,'==':H.tokens.equal_equal,'!=':H.tokens.not_equal,'>':H.tokens.greater_than,'>=':H.tokens.greater_than_equal,'>>':H.tokens.shift_right,'<':H.tokens.less_than,'<=':H.tokens.less_than_equal,'<<':H.tokens.shift_left,'%':H.tokens.modulo,'-':H.tokens.minus,'--':H.tokens.minus_minus,'.':H.tokens.period,'+':H.tokens.plus,'++':H.tokens.plus_plus,'|':H.tokens.or,'||':H.tokens.or_or,'*':H.tokens.star,'~':H.tokens.tilde,_:H.tokens.underscore,'^':H.tokens.xor,'+=':H.tokens.plus_equal,'-=':H.tokens.minus_equal,'*=':H.tokens.times_equal,'/=':H.tokens.division_equal,'%=':H.tokens.modulo_equal,'&=':H.tokens.and_equal,'|=':H.tokens.or_equal,'^=':H.tokens.xor_equal,'>>=':H.tokens.shift_right_equal,'<<=':H.tokens.shift_left_equal},He.regexTokens={decimal_float_literal:H.tokens.decimal_float_literal,hex_float_literal:H.tokens.hex_float_literal,int_literal:H.tokens.int_literal,uint_literal:H.tokens.uint_literal,ident:H.tokens.ident},He.storage_class=[H.keywords.function,H.keywords.private,H.keywords.workgroup,H.keywords.uniform,H.keywords.storage],He.access_mode=[H.keywords.read,H.keywords.write,H.keywords.read_write],He.sampler_type=[H.keywords.sampler,H.keywords.sampler_comparison],He.sampled_texture_type=[H.keywords.texture_1d,H.keywords.texture_2d,H.keywords.texture_2d_array,H.keywords.texture_3d,H.keywords.texture_cube,H.keywords.texture_cube_array],He.multisampled_texture_type=[H.keywords.texture_multisampled_2d],He.storage_texture_type=[H.keywords.texture_storage_1d,H.keywords.texture_storage_2d,H.keywords.texture_storage_2d_array,H.keywords.texture_storage_3d],He.depth_texture_type=[H.keywords.texture_depth_2d,H.keywords.texture_depth_2d_array,H.keywords.texture_depth_cube,H.keywords.texture_depth_cube_array,H.keywords.texture_depth_multisampled_2d],He.texture_external_type=[H.keywords.texture_external],He.any_texture_type=[...H.sampled_texture_type,...H.multisampled_texture_type,...H.storage_texture_type,...H.depth_texture_type,...H.texture_external_type],He.texel_format=[H.keywords.r8unorm,H.keywords.r8snorm,H.keywords.r8uint,H.keywords.r8sint,H.keywords.r16uint,H.keywords.r16sint,H.keywords.r16float,H.keywords.rg8unorm,H.keywords.rg8snorm,H.keywords.rg8uint,H.keywords.rg8sint,H.keywords.r32uint,H.keywords.r32sint,H.keywords.r32float,H.keywords.rg16uint,H.keywords.rg16sint,H.keywords.rg16float,H.keywords.rgba8unorm,H.keywords.rgba8unorm_srgb,H.keywords.rgba8snorm,H.keywords.rgba8uint,H.keywords.rgba8sint,H.keywords.bgra8unorm,H.keywords.bgra8unorm_srgb,H.keywords.rgb10a2unorm,H.keywords.rg11b10float,H.keywords.rg32uint,H.keywords.rg32sint,H.keywords.rg32float,H.keywords.rgba16uint,H.keywords.rgba16sint,H.keywords.rgba16float,H.keywords.rgba32uint,H.keywords.rgba32sint,H.keywords.rgba32float],He.const_literal=[H.tokens.int_literal,H.tokens.uint_literal,H.tokens.decimal_float_literal,H.tokens.hex_float_literal,H.keywords.true,H.keywords.false],He.literal_or_ident=[H.tokens.ident,H.tokens.int_literal,H.tokens.uint_literal,H.tokens.decimal_float_literal,H.tokens.hex_float_literal,H.tokens.name],He.element_count_expression=[H.tokens.int_literal,H.tokens.uint_literal,H.tokens.ident],He.template_types=[H.keywords.vec2,H.keywords.vec3,H.keywords.vec4,H.keywords.mat2x2,H.keywords.mat2x3,H.keywords.mat2x4,H.keywords.mat3x2,H.keywords.mat3x3,H.keywords.mat3x4,H.keywords.mat4x2,H.keywords.mat4x3,H.keywords.mat4x4,H.keywords.atomic,H.keywords.bitcast,...H.any_texture_type],He.attribute_name=[H.tokens.ident,H.keywords.block,H.keywords.diagnostic],He.assignment_operators=[H.tokens.equal,H.tokens.plus_equal,H.tokens.minus_equal,H.tokens.times_equal,H.tokens.division_equal,H.tokens.modulo_equal,H.tokens.and_equal,H.tokens.or_equal,H.tokens.xor_equal,H.tokens.shift_right_equal,H.tokens.shift_left_equal],He.increment_operators=[H.tokens.plus_plus,H.tokens.minus_minus];class ze{constructor(e,t,n,s,r){this.type=e,this.lexeme=t,this.line=n,this.start=s,this.end=r}toString(){return this.lexeme}isTemplateType(){return-1!=He.template_types.indexOf(this.type)}isArrayType(){return this.type==He.keywords.array}isArrayOrTemplateType(){return this.isArrayType()||this.isTemplateType()}}class Re{constructor(e){this._tokens=[],this._start=0,this._current=0,this._line=1,this._source=null!=e?e:''}scanTokens(){for(;!this._isAtEnd();)if(this._start=this._current,!this.scanToken())throw`Invalid syntax at line ${this._line}`;return this._tokens.push(new ze(He.eof,'',this._line,this._current,this._current)),this._tokens}scanToken(){let e=this._advance();if('\\n'==e)return this._line++,!0;if(this._isWhitespace(e))return!0;if('/'==e){if('/'==this._peekAhead()){for(;'\\n'!=e;){if(this._isAtEnd())return!0;e=this._advance()}return this._line++,!0}if('*'==this._peekAhead()){this._advance();let t=1;for(;t>0;){if(this._isAtEnd())return!0;if(e=this._advance(),'\\n'==e)this._line++;else if('*'==e){if('/'==this._peekAhead()&&(this._advance(),t--,0==t))return!0}else'/'==e&&'*'==this._peekAhead()&&(this._advance(),t++)}return!0}}const t=He.simpleTokens[e];if(t)return this._addToken(t),!0;let n=He.none;const s=this._isAlpha(e),r='_'===e;if(this._isAlphaNumeric(e)){let t=this._peekAhead();for(;this._isAlphaNumeric(t);)e+=this._advance(),t=this._peekAhead()}if(s){const t=He.keywords[e];if(t)return this._addToken(t),!0}if(s||r)return this._addToken(He.tokens.ident),!0;for(;;){let t=this._findType(e);const s=this._peekAhead();if('-'==e&&this._tokens.length>0){if('='==s)return this._current++,e+=s,this._addToken(He.tokens.minus_equal),!0;if('-'==s)return this._current++,e+=s,this._addToken(He.tokens.minus_minus),!0;const n=this._tokens.length-1;if((-1!=He.literal_or_ident.indexOf(this._tokens[n].type)||this._tokens[n].type==He.tokens.paren_right)&&'>'!=s)return this._addToken(t),!0}if('>'==e&&('>'==s||'='==s)){let e=!1,n=this._tokens.length-1;for(let t=0;t<5&&n>=0&&-1===He.assignment_operators.indexOf(this._tokens[n].type);++t,--n)if(this._tokens[n].type===He.tokens.less_than){n>0&&this._tokens[n-1].isArrayOrTemplateType()&&(e=!0);break}if(e)return this._addToken(t),!0}if(t===He.none){let s=e,r=0;const a=2;for(let e=0;e<a;++e)if(s+=this._peekAhead(e),t=this._findType(s),t!==He.none){r=e;break}if(t===He.none)return n!==He.none&&(this._current--,this._addToken(n),!0);e=s,this._current+=r+1}if(n=t,this._isAtEnd())break;e+=this._advance()}return n!==He.none&&(this._addToken(n),!0)}_findType(e){for(const t in He.regexTokens){const n=He.regexTokens[t];if(this._match(e,n.rule))return n}const t=He.literalTokens[e];return t||He.none}_match(e,t){const n=t.exec(e);return n&&0==n.index&&n[0]==e}_isAtEnd(){return this._current>=this._source.length}_isAlpha(e){return!this._isNumeric(e)&&!this._isWhitespace(e)&&'_'!==e&&'.'!==e&&'('!==e&&')'!==e&&'['!==e&&']'!==e&&'{'!==e&&'}'!==e&&','!==e&&';'!==e&&':'!==e&&'='!==e&&'!'!==e&&'<'!==e&&'>'!==e&&'+'!==e&&'-'!==e&&'*'!==e&&'/'!==e&&'%'!==e&&'&'!==e&&'|'!==e&&'^'!==e&&'~'!==e&&'@'!==e&&'#'!==e&&'?'!==e&&'\\''!==e&&'`'!==e&&'\"'!==e&&'\\\\'!==e&&'\\n'!==e&&'\\r'!==e&&'\\t'!==e&&'\\0'!==e}_isNumeric(e){return e>='0'&&e<='9'}_isAlphaNumeric(e){return this._isAlpha(e)||this._isNumeric(e)||'_'===e}_isWhitespace(e){return' '==e||'\\t'==e||'\\r'==e}_advance(e=0){let t=this._source[this._current];return e=e||0,e++,this._current+=e,t}_peekAhead(e=0){return e=e||0,this._current+e>=this._source.length?'\\0':this._source[this._current+e]}_addToken(e){const t=this._source.substring(this._start,this._current);this._tokens.push(new ze(e,t,this._line,this._start,this._current))}}function Ge(e){return Array.isArray(e)||(null==e?void 0:e.buffer)instanceof ArrayBuffer}const Xe=new Float32Array(1),je=new Uint32Array(Xe.buffer),Ze=new Uint32Array(Xe.buffer),Qe=new Int32Array(1),Ye=new Float32Array(Qe.buffer),Ke=new Uint32Array(Qe.buffer),Je=new Uint32Array(1),et=new Float32Array(Je.buffer),tt=new Int32Array(Je.buffer);function nt(e,t,n){if(t===n)return e;if('f32'===t){if('i32'===n||'x32'===n)return Xe[0]=e,je[0];if('u32'===n)return Xe[0]=e,Ze[0]}else if('i32'===t||'x32'===t){if('f32'===n)return Qe[0]=e,Ye[0];if('u32'===n)return Qe[0]=e,Ke[0]}else if('u32'===t){if('f32'===n)return Je[0]=e,et[0];if('i32'===n||'x32'===n)return Je[0]=e,tt[0]}return console.error(`Unsupported cast from ${t} to ${n}`),e}class st{constructor(e){this.resources=null,this.inUse=!1,this.info=null,this.node=e}}class rt{constructor(e,t){this.align=e,this.size=t}}class at{constructor(){this.uniforms=[],this.storage=[],this.textures=[],this.samplers=[],this.aliases=[],this.overrides=[],this.structs=[],this.entry=new d,this.functions=[],this._types=new Map,this._functions=new Map}_isStorageTexture(e){return'texture_storage_1d'==e.name||'texture_storage_2d'==e.name||'texture_storage_2d_array'==e.name||'texture_storage_3d'==e.name}updateAST(e){for(const t of e)t instanceof D&&this._functions.set(t.name,new st(t));for(const t of e)if(t instanceof oe){const e=this.getTypeInfo(t,null);e instanceof n&&this.structs.push(e)}for(const t of e)if(t instanceof te)this.aliases.push(this._getAliasInfo(t));else{if(t instanceof M){const e=t,n=this._getAttributeNum(e.attributes,'id',0),s=null!=e.type?this.getTypeInfo(e.type,e.attributes):null;this.overrides.push(new h(e.name,s,e.attributes,n));continue}if(this._isUniformVar(t)){const e=t,n=this._getAttributeNum(e.attributes,'group',0),s=this._getAttributeNum(e.attributes,'binding',0),r=this.getTypeInfo(e.type,e.attributes),a=new o(e.name,r,n,s,e.attributes,i.Uniform,e.access);a.access||(a.access='read'),this.uniforms.push(a);continue}if(this._isStorageVar(t)){const e=t,n=this._getAttributeNum(e.attributes,'group',0),s=this._getAttributeNum(e.attributes,'binding',0),r=this.getTypeInfo(e.type,e.attributes),a=this._isStorageTexture(r),c=new o(e.name,r,n,s,e.attributes,a?i.StorageTexture:i.Storage,e.access);c.access||(c.access='read'),this.storage.push(c);continue}if(this._isTextureVar(t)){const e=t,n=this._getAttributeNum(e.attributes,'group',0),s=this._getAttributeNum(e.attributes,'binding',0),r=this.getTypeInfo(e.type,e.attributes),a=this._isStorageTexture(r),c=new o(e.name,r,n,s,e.attributes,a?i.StorageTexture:i.Texture,e.access);c.access||(c.access='read'),a?this.storage.push(c):this.textures.push(c);continue}if(this._isSamplerVar(t)){const e=t,n=this._getAttributeNum(e.attributes,'group',0),s=this._getAttributeNum(e.attributes,'binding',0),r=this.getTypeInfo(e.type,e.attributes),a=new o(e.name,r,n,s,e.attributes,i.Sampler,e.access);this.samplers.push(a);continue}}for(const t of e)if(t instanceof D){const e=this._getAttribute(t,'vertex'),n=this._getAttribute(t,'fragment'),s=this._getAttribute(t,'compute'),r=e||n||s,a=new p(t.name,null==r?void 0:r.name,t.attributes);a.attributes=t.attributes,a.startLine=t.startLine,a.endLine=t.endLine,this.functions.push(a),this._functions.get(t.name).info=a,r&&(this._functions.get(t.name).inUse=!0,a.inUse=!0,a.resources=this._findResources(t,!!r),a.inputs=this._getInputs(t.args),a.outputs=this._getOutputs(t.returnType),this.entry[r.name].push(a)),a.arguments=t.args.map(e=>new f(e.name,this.getTypeInfo(e.type,e.attributes),e.attributes)),a.returnType=t.returnType?this.getTypeInfo(t.returnType,t.attributes):null;continue}for(const e of this._functions.values())e.info&&(e.info.inUse=e.inUse,this._addCalls(e.node,e.info.calls));for(const e of this._functions.values())e.node.search(t=>{var n,s,r;if(t instanceof De){if(t.value)if(Ge(t.value))for(const s of t.value)for(const t of this.overrides)s===t.name&&(null===(n=e.info)||void 0===n||n.overrides.push(t));else for(const n of this.overrides)t.value===n.name&&(null===(s=e.info)||void 0===s||s.overrides.push(n))}else if(t instanceof ge)for(const n of this.overrides)t.name===n.name&&(null===(r=e.info)||void 0===r||r.overrides.push(n))});for(const e of this.uniforms)this._markStructsInUse(e.type);for(const e of this.storage)this._markStructsInUse(e.type)}getFunctionInfo(e){for(const t of this.functions)if(t.name==e)return t;return null}getStructInfo(e){for(const t of this.structs)if(t.name==e)return t;return null}getOverrideInfo(e){for(const t of this.overrides)if(t.name==e)return t;return null}_markStructsInUse(e){if(e)if(e.isStruct){if(e.inUse=!0,e.members)for(const t of e.members)this._markStructsInUse(t.type)}else if(e.isArray)this._markStructsInUse(e.format);else if(e.isTemplate)e.format&&this._markStructsInUse(e.format);else{const t=this._getAlias(e.name);t&&this._markStructsInUse(t)}}_addCalls(e,t){var n;for(const s of e.calls){const e=null===(n=this._functions.get(s.name))||void 0===n?void 0:n.info;e&&t.add(e)}}findResource(e,t,n){if(n){for(const s of this.entry.compute)if(s.name===n)for(const n of s.resources)if(n.group==e&&n.binding==t)return n;for(const s of this.entry.vertex)if(s.name===n)for(const n of s.resources)if(n.group==e&&n.binding==t)return n;for(const s of this.entry.fragment)if(s.name===n)for(const n of s.resources)if(n.group==e&&n.binding==t)return n}for(const n of this.uniforms)if(n.group==e&&n.binding==t)return n;for(const n of this.storage)if(n.group==e&&n.binding==t)return n;for(const n of this.textures)if(n.group==e&&n.binding==t)return n;for(const n of this.samplers)if(n.group==e&&n.binding==t)return n;return null}_findResource(e){for(const t of this.uniforms)if(t.name==e)return t;for(const t of this.storage)if(t.name==e)return t;for(const t of this.textures)if(t.name==e)return t;for(const t of this.samplers)if(t.name==e)return t;return null}_markStructsFromAST(e){const t=this.getTypeInfo(e,null);this._markStructsInUse(t)}_findResources(e,t){const n=[],s=this,r=[];return e.search(a=>{if(a instanceof E)r.push({});else if(a instanceof $)r.pop();else if(a instanceof F){const e=a;t&&null!==e.type&&this._markStructsFromAST(e.type),r.length>0&&(r[r.length-1][e.name]=e)}else if(a instanceof de){const e=a;t&&null!==e.type&&this._markStructsFromAST(e.type)}else if(a instanceof U){const e=a;t&&null!==e.type&&this._markStructsFromAST(e.type),r.length>0&&(r[r.length-1][e.name]=e)}else if(a instanceof ge){const e=a;if(r.length>0){if(r[r.length-1][e.name])return}const t=s._findResource(e.name);t&&n.push(t)}else if(a instanceof me){const r=a,i=s._functions.get(r.name);i&&(t&&(i.inUse=!0),e.calls.add(i.node),null===i.resources&&(i.resources=s._findResources(i.node,t)),n.push(...i.resources))}else if(a instanceof X){const r=a,i=s._functions.get(r.name);i&&(t&&(i.inUse=!0),e.calls.add(i.node),null===i.resources&&(i.resources=s._findResources(i.node,t)),n.push(...i.resources))}}),[...new Map(n.map(e=>[e.name,e])).values()]}getBindGroups(){const e=[];function t(t,n){t>=e.length&&(e.length=t+1),void 0===e[t]&&(e[t]=[]),n>=e[t].length&&(e[t].length=n+1)}for(const n of this.uniforms){t(n.group,n.binding);e[n.group][n.binding]=n}for(const n of this.storage){t(n.group,n.binding);e[n.group][n.binding]=n}for(const n of this.textures){t(n.group,n.binding);e[n.group][n.binding]=n}for(const n of this.samplers){t(n.group,n.binding);e[n.group][n.binding]=n}return e}_getOutputs(e,t=void 0){if(void 0===t&&(t=[]),e instanceof oe)this._getStructOutputs(e,t);else{const n=this._getOutputInfo(e);null!==n&&t.push(n)}return t}_getStructOutputs(e,t){for(const n of e.members)if(n.type instanceof oe)this._getStructOutputs(n.type,t);else{const e=this._getAttribute(n,'location')||this._getAttribute(n,'builtin');if(null!==e){const s=this.getTypeInfo(n.type,n.type.attributes),r=this._parseInt(e.value),a=new u(n.name,s,e.name,r);t.push(a)}}}_getOutputInfo(e){const t=this._getAttribute(e,'location')||this._getAttribute(e,'builtin');if(null!==t){const n=this.getTypeInfo(e,e.attributes),s=this._parseInt(t.value);return new u('',n,t.name,s)}return null}_getInputs(e,t=void 0){void 0===t&&(t=[]);for(const n of e)if(n.type instanceof oe)this._getStructInputs(n.type,t);else{const e=this._getInputInfo(n);null!==e&&t.push(e)}return t}_getStructInputs(e,t){for(const n of e.members)if(n.type instanceof oe)this._getStructInputs(n.type,t);else{const e=this._getInputInfo(n);null!==e&&t.push(e)}}_getInputInfo(e){const t=this._getAttribute(e,'location')||this._getAttribute(e,'builtin');if(null!==t){const n=this._getAttribute(e,'interpolation'),s=this.getTypeInfo(e.type,e.attributes),r=this._parseInt(t.value),a=new l(e.name,s,t.name,r);return null!==n&&(a.interpolation=this._parseString(n.value)),a}return null}_parseString(e){return e instanceof Array&&(e=e[0]),e}_parseInt(e){e instanceof Array&&(e=e[0]);const t=parseInt(e);return isNaN(t)?e:t}_getAlias(e){for(const t of this.aliases)if(t.name==e)return t.type;return null}_getAliasInfo(e){return new c(e.name,this.getTypeInfo(e.type,null))}getTypeInfoByName(e){for(const t of this.structs)if(t.name==e)return t;for(const t of this.aliases)if(t.name==e)return t.type;return null}getTypeInfo(i,o=null){if(this._types.has(i))return this._types.get(i);if(i instanceof le){const e=i.type?this.getTypeInfo(i.type,i.attributes):null,t=new r(i.name,e,o);return this._types.set(i,t),this._updateTypeInfo(t),t}if(i instanceof ue){const e=i,t=e.format?this.getTypeInfo(e.format,e.attributes):null,n=new s(e.name,o);return n.format=t,n.count=e.count,this._types.set(i,n),this._updateTypeInfo(n),n}if(i instanceof oe){const e=i,s=new n(e.name,o);s.startLine=e.startLine,s.endLine=e.endLine;for(const n of e.members){const e=this.getTypeInfo(n.type,n.attributes);s.members.push(new t(n.name,e,n.attributes))}return this._types.set(i,s),this._updateTypeInfo(s),s}if(i instanceof he){const t=i,n=t.format instanceof ae,s=t.format?n?this.getTypeInfo(t.format,null):new e(t.format,null):null,r=new a(t.name,s,o,t.access);return this._types.set(i,r),this._updateTypeInfo(r),r}if(i instanceof ce){const e=i,t=e.format?this.getTypeInfo(e.format,null):null,n=new a(e.name,t,o,e.access);return this._types.set(i,n),this._updateTypeInfo(n),n}const c=new e(i.name,o);return this._types.set(i,c),this._updateTypeInfo(c),c}_updateTypeInfo(e){var t,a,i;const o=this._getTypeSize(e);if(e.size=null!==(t=null==o?void 0:o.size)&&void 0!==t?t:0,e instanceof s&&e.format){const t=this._getTypeSize(e.format);e.stride=Math.max(null!==(a=null==t?void 0:t.size)&&void 0!==a?a:0,null!==(i=null==t?void 0:t.align)&&void 0!==i?i:0),this._updateTypeInfo(e.format)}e instanceof r&&this._updateTypeInfo(e.format),e instanceof n&&this._updateStructInfo(e)}_updateStructInfo(e){var t;let n=0,s=0,r=0,a=0;for(let i=0,o=e.members.length;i<o;++i){const o=e.members[i],c=this._getTypeSize(o);if(!c)continue;null!==(t=this._getAlias(o.type.name))&&void 0!==t||o.type;const l=c.align,u=c.size;n=this._roundUp(l,n+s),s=u,r=n,a=Math.max(a,l),o.offset=n,o.size=u,this._updateTypeInfo(o.type)}e.size=this._roundUp(a,r+s),e.align=a}_getTypeSize(r){var a,i;if(null==r)return null;const o=this._getAttributeNum(r.attributes,'size',0),c=this._getAttributeNum(r.attributes,'align',0);if(r instanceof t&&(r=r.type),r instanceof e){const e=this._getAlias(r.name);null!==e&&(r=e)}{const e=at._typeInfo[r.name];if(void 0!==e){const t='f16'===(null===(a=r.format)||void 0===a?void 0:a.name)?2:1;return new rt(Math.max(c,e.align/t),Math.max(o,e.size/t))}}{const e=at._typeInfo[r.name.substring(0,r.name.length-1)];if(e){const t='h'===r.name[r.name.length-1]?2:1;return new rt(Math.max(c,e.align/t),Math.max(o,e.size/t))}}if(r instanceof s){let e=r,t=8,n=8;const s=this._getTypeSize(e.format);null!==s&&(n=s.size,t=s.align);return n=e.count*this._getAttributeNum(null!==(i=null==r?void 0:r.attributes)&&void 0!==i?i:null,'stride',this._roundUp(t,n)),o&&(n=o),new rt(Math.max(c,t),Math.max(o,n))}if(r instanceof n){let e=0,t=0,n=0,s=0,a=0;for(const t of r.members){const r=this._getTypeSize(t.type);null!==r&&(e=Math.max(r.align,e),n=this._roundUp(r.align,n+s),s=r.size,a=n)}return t=this._roundUp(e,a+s),new rt(Math.max(c,e),Math.max(o,t))}return null}_isUniformVar(e){return e instanceof F&&'uniform'==e.storage}_isStorageVar(e){return e instanceof F&&'storage'==e.storage}_isTextureVar(e){return e instanceof F&&null!==e.type&&-1!=at._textureTypes.indexOf(e.type.name)}_isSamplerVar(e){return e instanceof F&&null!==e.type&&-1!=at._samplerTypes.indexOf(e.type.name)}_getAttribute(e,t){const n=e;if(!n||!n.attributes)return null;const s=n.attributes;for(let e of s)if(e.name==t)return e;return null}_getAttributeNum(e,t,n){if(null===e)return n;for(let s of e)if(s.name==t){let e=null!==s&&null!==s.value?s.value:n;return e instanceof Array&&(e=e[0]),'number'==typeof e?e:'string'==typeof e?parseInt(e):n}return n}_roundUp(e,t){return Math.ceil(t/e)*e}}at._typeInfo={f16:{align:2,size:2},i32:{align:4,size:4},u32:{align:4,size:4},f32:{align:4,size:4},atomic:{align:4,size:4},vec2:{align:8,size:8},vec3:{align:16,size:12},vec4:{align:16,size:16},mat2x2:{align:8,size:16},mat3x2:{align:8,size:24},mat4x2:{align:8,size:32},mat2x3:{align:16,size:32},mat3x3:{align:16,size:48},mat4x3:{align:16,size:64},mat2x4:{align:16,size:32},mat3x4:{align:16,size:48},mat4x4:{align:16,size:64}},at._textureTypes=He.any_texture_type.map(e=>e.name),at._samplerTypes=He.sampler_type.map(e=>e.name);let it=0;class ot{constructor(e,t,n){this.id=it++,this.name=e,this.value=t,this.node=n}clone(){return new ot(this.name,this.value,this.node)}}class ct{constructor(e){this.id=it++,this.name=e.name,this.node=e}clone(){return new ct(this.node)}}class lt{constructor(e){this.parent=null,this.variables=new Map,this.functions=new Map,this.currentFunctionName='',this.id=it++,e&&(this.parent=e,this.currentFunctionName=e.currentFunctionName)}getVariable(e){var t;return this.variables.has(e)?null!==(t=this.variables.get(e))&&void 0!==t?t:null:this.parent?this.parent.getVariable(e):null}getFunction(e){var t;return this.functions.has(e)?null!==(t=this.functions.get(e))&&void 0!==t?t:null:this.parent?this.parent.getFunction(e):null}createVariable(e,t,n){this.variables.set(e,new ot(e,t,null!=n?n:null))}setVariable(e,t,n){const s=this.getVariable(e);null!==s?s.value=t:this.createVariable(e,t,n)}getVariableValue(e){var t;const n=this.getVariable(e);return null!==(t=null==n?void 0:n.value)&&void 0!==t?t:null}clone(){return new lt(this)}}class ut{evalExpression(e,t){return null}getTypeInfo(e){return null}getVariableName(e,t){return''}}class ht{constructor(e){this.exec=e}getTypeInfo(e){return this.exec.getTypeInfo(e)}All(e,t){const n=this.exec.evalExpression(e.args[0],t);let s=!0;if(n instanceof Me)return n.data.forEach(e=>{e||(s=!1)}),new Be(s?1:0,this.getTypeInfo('bool'));throw new Error(`All() expects a vector argument. Line ${e.line}`)}Any(e,t){const n=this.exec.evalExpression(e.args[0],t);if(n instanceof Me){const e=n.data.some(e=>e);return new Be(e?1:0,this.getTypeInfo('bool'))}throw new Error(`Any() expects a vector argument. Line ${e.line}`)}Select(e,t){const n=this.exec.evalExpression(e.args[2],t);if(!(n instanceof Be))throw new Error(`Select() expects a bool condition. Line ${e.line}`);return n.value?this.exec.evalExpression(e.args[1],t):this.exec.evalExpression(e.args[0],t)}ArrayLength(e,t){let n=e.args[0];n instanceof ke&&(n=n.right);const s=this.exec.evalExpression(n,t);if(s instanceof Pe&&0===s.typeInfo.size){const e=s.typeInfo,t=s.buffer.byteLength/e.stride;return new Be(t,this.getTypeInfo('u32'))}return new Be(s.typeInfo.size,this.getTypeInfo('u32'))}Abs(e,t){const n=this.exec.evalExpression(e.args[0],t);if(n instanceof Me)return new Me(n.data.map(e=>Math.abs(e)),n.typeInfo);const s=n;return new Be(Math.abs(s.value),s.typeInfo)}Acos(e,t){const n=this.exec.evalExpression(e.args[0],t);if(n instanceof Me)return new Me(n.data.map(e=>Math.acos(e)),n.typeInfo);const s=n;return new Be(Math.acos(s.value),n.typeInfo)}Acosh(e,t){const n=this.exec.evalExpression(e.args[0],t);if(n instanceof Me)return new Me(n.data.map(e=>Math.acosh(e)),n.typeInfo);const s=n;return new Be(Math.acosh(s.value),n.typeInfo)}Asin(e,t){const n=this.exec.evalExpression(e.args[0],t);if(n instanceof Me)return new Me(n.data.map(e=>Math.asin(e)),n.typeInfo);const s=n;return new Be(Math.asin(s.value),n.typeInfo)}Asinh(e,t){const n=this.exec.evalExpression(e.args[0],t);if(n instanceof Me)return new Me(n.data.map(e=>Math.asinh(e)),n.typeInfo);const s=n;return new Be(Math.asinh(s.value),n.typeInfo)}Atan(e,t){const n=this.exec.evalExpression(e.args[0],t);if(n instanceof Me)return new Me(n.data.map(e=>Math.atan(e)),n.typeInfo);const s=n;return new Be(Math.atan(s.value),n.typeInfo)}Atanh(e,t){const n=this.exec.evalExpression(e.args[0],t);if(n instanceof Me)return new Me(n.data.map(e=>Math.atanh(e)),n.typeInfo);const s=n;return new Be(Math.atanh(s.value),n.typeInfo)}Atan2(e,t){const n=this.exec.evalExpression(e.args[0],t),s=this.exec.evalExpression(e.args[1],t);if(n instanceof Me&&s instanceof Me)return new Me(n.data.map((e,t)=>Math.atan2(e,s.data[t])),n.typeInfo);const r=n,a=s;return new Be(Math.atan2(r.value,a.value),n.typeInfo)}Ceil(e,t){const n=this.exec.evalExpression(e.args[0],t);if(n instanceof Me)return new Me(n.data.map(e=>Math.ceil(e)),n.typeInfo);const s=n;return new Be(Math.ceil(s.value),n.typeInfo)}_clamp(e,t,n){return Math.min(Math.max(e,t),n)}Clamp(e,t){const n=this.exec.evalExpression(e.args[0],t),s=this.exec.evalExpression(e.args[1],t),r=this.exec.evalExpression(e.args[2],t);if(n instanceof Me&&s instanceof Me&&r instanceof Me)return new Me(n.data.map((e,t)=>this._clamp(e,s.data[t],r.data[t])),n.typeInfo);const a=n,i=s,o=r;return new Be(this._clamp(a.value,i.value,o.value),n.typeInfo)}Cos(e,t){const n=this.exec.evalExpression(e.args[0],t);if(n instanceof Me)return new Me(n.data.map(e=>Math.cos(e)),n.typeInfo);const s=n;return new Be(Math.cos(s.value),n.typeInfo)}Cosh(e,t){const n=this.exec.evalExpression(e.args[0],t);if(n instanceof Me)return new Me(n.data.map(e=>Math.cosh(e)),n.typeInfo);const s=n;return new Be(Math.cos(s.value),n.typeInfo)}CountLeadingZeros(e,t){const n=this.exec.evalExpression(e.args[0],t);if(n instanceof Me)return new Me(n.data.map(e=>Math.clz32(e)),n.typeInfo);const s=n;return new Be(Math.clz32(s.value),n.typeInfo)}_countOneBits(e){let t=0;for(;0!==e;)1&e&&t++,e>>=1;return t}CountOneBits(e,t){const n=this.exec.evalExpression(e.args[0],t);if(n instanceof Me)return new Me(n.data.map(e=>this._countOneBits(e)),n.typeInfo);const s=n;return new Be(this._countOneBits(s.value),n.typeInfo)}_countTrailingZeros(e){if(0===e)return 32;let t=0;for(;!(1&e);)e>>=1,t++;return t}CountTrailingZeros(e,t){const n=this.exec.evalExpression(e.args[0],t);if(n instanceof Me)return new Me(n.data.map(e=>this._countTrailingZeros(e)),n.typeInfo);const s=n;return new Be(this._countTrailingZeros(s.value),n.typeInfo)}Cross(e,t){const n=this.exec.evalExpression(e.args[0],t),s=this.exec.evalExpression(e.args[1],t);if(n instanceof Me&&s instanceof Me){if(3!==n.data.length||3!==s.data.length)return console.error(`Cross() expects 3D vectors. Line ${e.line}`),null;const t=n.data,r=s.data;return new Me([t[1]*r[2]-r[1]*t[2],t[2]*r[0]-r[2]*t[0],t[0]*r[1]-r[0]*t[1]],n.typeInfo)}return console.error(`Cross() expects vector arguments. Line ${e.line}`),null}Degrees(e,t){const n=this.exec.evalExpression(e.args[0],t),s=180/Math.PI;if(n instanceof Me)return new Me(n.data.map(e=>e*s),n.typeInfo);return new Be(n.value*s,this.getTypeInfo('f32'))}Determinant(e,t){const n=this.exec.evalExpression(e.args[0],t);if(n instanceof Ue){const e=n.data,t=n.typeInfo.getTypeName(),s=t.endsWith('h')?this.getTypeInfo('f16'):this.getTypeInfo('f32');if('mat2x2'===t||'mat2x2f'===t||'mat2x2h'===t)return new Be(e[0]*e[3]-e[1]*e[2],s);if('mat2x3'===t||'mat2x3f'===t||'mat2x3h'===t)return new Be(e[0]*(e[4]*e[8]-e[5]*e[7])-e[1]*(e[3]*e[8]-e[5]*e[6])+e[2]*(e[3]*e[7]-e[4]*e[6]),s);if('mat2x4'===t||'mat2x4f'===t||'mat2x4h'===t)console.error(`TODO: Determinant for ${t}`);else if('mat3x2'===t||'mat3x2f'===t||'mat3x2h'===t)console.error(`TODO: Determinant for ${t}`);else{if('mat3x3'===t||'mat3x3f'===t||'mat3x3h'===t)return new Be(e[0]*(e[4]*e[8]-e[5]*e[7])-e[1]*(e[3]*e[8]-e[5]*e[6])+e[2]*(e[3]*e[7]-e[4]*e[6]),s);'mat3x4'===t||'mat3x4f'===t||'mat3x4h'===t||'mat4x2'===t||'mat4x2f'===t||'mat4x2h'===t||'mat4x3'===t||'mat4x3f'===t||'mat4x3h'===t?console.error(`TODO: Determinant for ${t}`):'mat4x4'!==t&&'mat4x4f'!==t&&'mat4x4h'!==t||console.error(`TODO: Determinant for ${t}`)}}return console.error(`Determinant expects a matrix argument. Line ${e.line}`),null}Distance(e,t){const n=this.exec.evalExpression(e.args[0],t),s=this.exec.evalExpression(e.args[1],t);if(n instanceof Me&&s instanceof Me){let e=0;for(let t=0;t<n.data.length;++t)e+=(n.data[t]-s.data[t])*(n.data[t]-s.data[t]);return new Be(Math.sqrt(e),this.getTypeInfo('f32'))}const r=n,a=s;return new Be(Math.abs(r.value-a.value),n.typeInfo)}_dot(e,t){let n=0;for(let s=0;s<e.length;++s)n+=t[s]*e[s];return n}Dot(e,t){const n=this.exec.evalExpression(e.args[0],t),s=this.exec.evalExpression(e.args[1],t);return n instanceof Me&&s instanceof Me?new Be(this._dot(n.data,s.data),this.getTypeInfo('f32')):(console.error(`Dot() expects vector arguments. Line ${e.line}`),null)}Dot4U8Packed(e,t){return console.error(`TODO: dot4U8Packed. Line ${e.line}`),null}Dot4I8Packed(e,t){return console.error(`TODO: dot4I8Packed. Line ${e.line}`),null}Exp(e,t){const n=this.exec.evalExpression(e.args[0],t);if(n instanceof Me)return new Me(n.data.map(e=>Math.exp(e)),n.typeInfo);const s=n;return new Be(Math.exp(s.value),n.typeInfo)}Exp2(e,t){const n=this.exec.evalExpression(e.args[0],t);if(n instanceof Me)return new Me(n.data.map(e=>Math.pow(2,e)),n.typeInfo);const s=n;return new Be(Math.pow(2,s.value),n.typeInfo)}ExtractBits(e,t){const n=this.exec.evalExpression(e.args[0],t),s=this.exec.evalExpression(e.args[1],t),r=this.exec.evalExpression(e.args[2],t);if('u32'!==s.typeInfo.name&&'x32'!==s.typeInfo.name)return console.error(`ExtractBits() expects an i32 offset argument. Line ${e.line}`),null;if('u32'!==r.typeInfo.name&&'x32'!==r.typeInfo.name)return console.error(`ExtractBits() expects an i32 count argument. Line ${e.line}`),null;const a=s.value,i=r.value;if(n instanceof Me)return new Me(n.data.map(e=>e>>a&(1<<i)-1),n.typeInfo);if('i32'!==n.typeInfo.name&&'x32'!==n.typeInfo.name)return console.error(`ExtractBits() expects an i32 argument. Line ${e.line}`),null;const o=n.value;return new Be(o>>a&(1<<i)-1,this.getTypeInfo('i32'))}FaceForward(e,t){const n=this.exec.evalExpression(e.args[0],t),s=this.exec.evalExpression(e.args[1],t),r=this.exec.evalExpression(e.args[2],t);if(n instanceof Me&&s instanceof Me&&r instanceof Me){const e=this._dot(s.data,r.data);return new Me(e<0?Array.from(n.data):n.data.map(e=>-e),n.typeInfo)}return console.error(`FaceForward() expects vector arguments. Line ${e.line}`),null}_firstLeadingBit(e){return 0===e?-1:31-Math.clz32(e)}FirstLeadingBit(e,t){const n=this.exec.evalExpression(e.args[0],t);if(n instanceof Me)return new Me(n.data.map(e=>this._firstLeadingBit(e)),n.typeInfo);const s=n;return new Be(this._firstLeadingBit(s.value),n.typeInfo)}_firstTrailingBit(e){return 0===e?-1:Math.log2(e&-e)}FirstTrailingBit(e,t){const n=this.exec.evalExpression(e.args[0],t);if(n instanceof Me)return new Me(n.data.map(e=>this._firstTrailingBit(e)),n.typeInfo);const s=n;return new Be(this._firstTrailingBit(s.value),n.typeInfo)}Floor(e,t){const n=this.exec.evalExpression(e.args[0],t);if(n instanceof Me)return new Me(n.data.map(e=>Math.floor(e)),n.typeInfo);const s=n;return new Be(Math.floor(s.value),n.typeInfo)}Fma(e,t){const n=this.exec.evalExpression(e.args[0],t),s=this.exec.evalExpression(e.args[1],t),r=this.exec.evalExpression(e.args[2],t);if(n instanceof Me&&s instanceof Me&&r instanceof Me)return n.data.length!==s.data.length||n.data.length!==r.data.length?(console.error(`Fma() expects vectors of the same length. Line ${e.line}`),null):new Me(n.data.map((e,t)=>e*s.data[t]+r.data[t]),n.typeInfo);const a=n,i=s,o=r;return new Be(a.value*i.value+o.value,a.typeInfo)}Fract(e,t){const n=this.exec.evalExpression(e.args[0],t);if(n instanceof Me)return new Me(n.data.map(e=>e-Math.floor(e)),n.typeInfo);const s=n;return new Be(s.value-Math.floor(s.value),n.typeInfo)}Frexp(e,t){return console.error(`TODO: frexp. Line ${e.line}`),null}InsertBits(e,t){const n=this.exec.evalExpression(e.args[0],t),s=this.exec.evalExpression(e.args[1],t),r=this.exec.evalExpression(e.args[2],t),a=this.exec.evalExpression(e.args[3],t);if('u32'!==r.typeInfo.name&&'x32'!==r.typeInfo.name)return console.error(`InsertBits() expects an i32 offset argument. Line ${e.line}`),null;const i=r.value,o=(1<<a.value)-1<<i,c=~o;if(n instanceof Me&&s instanceof Me)return new Me(n.data.map((e,t)=>e&c|s.data[t]<<i&o),n.typeInfo);const l=n.value,u=s.value;return new Be(l&c|u<<i&o,n.typeInfo)}InverseSqrt(e,t){const n=this.exec.evalExpression(e.args[0],t);if(n instanceof Me)return new Me(n.data.map(e=>1/Math.sqrt(e)),n.typeInfo);const s=n;return new Be(1/Math.sqrt(s.value),n.typeInfo)}Ldexp(e,t){return console.error(`TODO: ldexp. Line ${e.line}`),null}Length(e,t){const n=this.exec.evalExpression(e.args[0],t);if(n instanceof Me){let e=0;return n.data.forEach(t=>{e+=t*t}),new Be(Math.sqrt(e),this.getTypeInfo('f32'))}const s=n;return new Be(Math.abs(s.value),n.typeInfo)}Log(e,t){const n=this.exec.evalExpression(e.args[0],t);if(n instanceof Me)return new Me(n.data.map(e=>Math.log(e)),n.typeInfo);const s=n;return new Be(Math.log(s.value),n.typeInfo)}Log2(e,t){const n=this.exec.evalExpression(e.args[0],t);if(n instanceof Me)return new Me(n.data.map(e=>Math.log2(e)),n.typeInfo);const s=n;return new Be(Math.log2(s.value),n.typeInfo)}Max(e,t){const n=this.exec.evalExpression(e.args[0],t),s=this.exec.evalExpression(e.args[1],t);if(n instanceof Me&&s instanceof Me)return new Me(n.data.map((e,t)=>Math.max(e,s.data[t])),n.typeInfo);const r=n,a=s;return new Be(Math.max(r.value,a.value),n.typeInfo)}Min(e,t){const n=this.exec.evalExpression(e.args[0],t),s=this.exec.evalExpression(e.args[1],t);if(n instanceof Me&&s instanceof Me)return new Me(n.data.map((e,t)=>Math.min(e,s.data[t])),n.typeInfo);const r=n,a=s;return new Be(Math.min(r.value,a.value),n.typeInfo)}Mix(e,t){const n=this.exec.evalExpression(e.args[0],t),s=this.exec.evalExpression(e.args[1],t),r=this.exec.evalExpression(e.args[2],t);if(n instanceof Me&&s instanceof Me&&r instanceof Me)return new Me(n.data.map((e,t)=>n.data[t]*(1-r.data[t])+s.data[t]*r.data[t]),n.typeInfo);const a=s,i=r;return new Be(n.value*(1-i.value)+a.value*i.value,n.typeInfo)}Modf(e,t){const n=this.exec.evalExpression(e.args[0],t),s=this.exec.evalExpression(e.args[1],t);if(n instanceof Me&&s instanceof Me)return new Me(n.data.map((e,t)=>e%s.data[t]),n.typeInfo);const r=s;return new Be(n.value%r.value,n.typeInfo)}Normalize(e,t){const n=this.exec.evalExpression(e.args[0],t);if(n instanceof Me){const s=this.Length(e,t).value;return new Me(n.data.map(e=>e/s),n.typeInfo)}return console.error(`Normalize() expects a vector argument. Line ${e.line}`),null}Pow(e,t){const n=this.exec.evalExpression(e.args[0],t),s=this.exec.evalExpression(e.args[1],t);if(n instanceof Me&&s instanceof Me)return new Me(n.data.map((e,t)=>Math.pow(e,s.data[t])),n.typeInfo);const r=n,a=s;return new Be(Math.pow(r.value,a.value),n.typeInfo)}QuantizeToF16(e,t){const n=this.exec.evalExpression(e.args[0],t);if(n instanceof Me)return new Me(n.data.map(e=>e),n.typeInfo);return new Be(n.value,n.typeInfo)}Radians(e,t){const n=this.exec.evalExpression(e.args[0],t);if(n instanceof Me)return new Me(n.data.map(e=>e*Math.PI/180),n.typeInfo);return new Be(n.value*Math.PI/180,this.getTypeInfo('f32'))}Reflect(e,t){let n=this.exec.evalExpression(e.args[0],t),s=this.exec.evalExpression(e.args[1],t);if(n instanceof Me&&s instanceof Me){const e=this._dot(n.data,s.data);return new Me(n.data.map((t,n)=>t-2*e*s.data[n]),n.typeInfo)}return console.error(`Reflect() expects vector arguments. Line ${e.line}`),null}Refract(e,t){let n=this.exec.evalExpression(e.args[0],t),s=this.exec.evalExpression(e.args[1],t),r=this.exec.evalExpression(e.args[2],t);if(n instanceof Me&&s instanceof Me&&r instanceof Be){const e=this._dot(s.data,n.data);return new Me(n.data.map((t,n)=>{const a=1-r.value*r.value*(1-e*e);if(a<0)return 0;const i=Math.sqrt(a);return r.value*t-(r.value*e+i)*s.data[n]}),n.typeInfo)}return console.error(`Refract() expects vector arguments and a scalar argument. Line ${e.line}`),null}ReverseBits(e,t){return console.error(`TODO: reverseBits. Line ${e.line}`),null}Round(e,t){const n=this.exec.evalExpression(e.args[0],t);if(n instanceof Me)return new Me(n.data.map(e=>Math.round(e)),n.typeInfo);const s=n;return new Be(Math.round(s.value),n.typeInfo)}Saturate(e,t){const n=this.exec.evalExpression(e.args[0],t);if(n instanceof Me)return new Me(n.data.map(e=>Math.min(Math.max(e,0),1)),n.typeInfo);const s=n;return new Be(Math.min(Math.max(s.value,0),1),n.typeInfo)}Sign(e,t){const n=this.exec.evalExpression(e.args[0],t);if(n instanceof Me)return new Me(n.data.map(e=>Math.sign(e)),n.typeInfo);const s=n;return new Be(Math.sign(s.value),n.typeInfo)}Sin(e,t){const n=this.exec.evalExpression(e.args[0],t);if(n instanceof Me)return new Me(n.data.map(e=>Math.sin(e)),n.typeInfo);const s=n;return new Be(Math.sin(s.value),n.typeInfo)}Sinh(e,t){const n=this.exec.evalExpression(e.args[0],t);if(n instanceof Me)return new Me(n.data.map(e=>Math.sinh(e)),n.typeInfo);const s=n;return new Be(Math.sinh(s.value),n.typeInfo)}_smoothstep(e,t,n){const s=Math.min(Math.max((n-e)/(t-e),0),1);return s*s*(3-2*s)}SmoothStep(e,t){const n=this.exec.evalExpression(e.args[0],t),s=this.exec.evalExpression(e.args[1],t),r=this.exec.evalExpression(e.args[2],t);if(r instanceof Me&&n instanceof Me&&s instanceof Me)return new Me(r.data.map((e,t)=>this._smoothstep(n.data[t],s.data[t],e)),r.typeInfo);const a=n,i=s,o=r;return new Be(this._smoothstep(a.value,i.value,o.value),r.typeInfo)}Sqrt(e,t){const n=this.exec.evalExpression(e.args[0],t);if(n instanceof Me)return new Me(n.data.map(e=>Math.sqrt(e)),n.typeInfo);const s=n;return new Be(Math.sqrt(s.value),n.typeInfo)}Step(e,t){const n=this.exec.evalExpression(e.args[0],t),s=this.exec.evalExpression(e.args[1],t);if(s instanceof Me&&n instanceof Me)return new Me(s.data.map((e,t)=>e<n.data[t]?0:1),s.typeInfo);const r=n;return new Be(s.value<r.value?0:1,r.typeInfo)}Tan(e,t){const n=this.exec.evalExpression(e.args[0],t);if(n instanceof Me)return new Me(n.data.map(e=>Math.tan(e)),n.typeInfo);const s=n;return new Be(Math.tan(s.value),n.typeInfo)}Tanh(e,t){const n=this.exec.evalExpression(e.args[0],t);if(n instanceof Me)return new Me(n.data.map(e=>Math.tanh(e)),n.typeInfo);const s=n;return new Be(Math.tanh(s.value),n.typeInfo)}_getTransposeType(e){const t=e.getTypeName();return'mat2x2f'===t||'mat2x2h'===t?e:'mat2x3f'===t?this.getTypeInfo('mat3x2f'):'mat2x3h'===t?this.getTypeInfo('mat3x2h'):'mat2x4f'===t?this.getTypeInfo('mat4x2f'):'mat2x4h'===t?this.getTypeInfo('mat4x2h'):'mat3x2f'===t?this.getTypeInfo('mat2x3f'):'mat3x2h'===t?this.getTypeInfo('mat2x3h'):'mat3x3f'===t||'mat3x3h'===t?e:'mat3x4f'===t?this.getTypeInfo('mat4x3f'):'mat3x4h'===t?this.getTypeInfo('mat4x3h'):'mat4x2f'===t?this.getTypeInfo('mat2x4f'):'mat4x2h'===t?this.getTypeInfo('mat2x4h'):'mat4x3f'===t?this.getTypeInfo('mat3x4f'):'mat4x3h'===t?this.getTypeInfo('mat3x4h'):('mat4x4f'===t||'mat4x4h'===t||console.error(`Invalid matrix type ${t}`),e)}Transpose(e,t){const n=this.exec.evalExpression(e.args[0],t);if(!(n instanceof Ue))return console.error(`Transpose() expects a matrix argument. Line ${e.line}`),null;const s=this._getTransposeType(n.typeInfo);if('mat2x2'===n.typeInfo.name||'mat2x2f'===n.typeInfo.name||'mat2x2h'===n.typeInfo.name){const e=n.data;return new Ue([e[0],e[2],e[1],e[3]],s)}if('mat2x3'===n.typeInfo.name||'mat2x3f'===n.typeInfo.name||'mat2x3h'===n.typeInfo.name){const e=n.data;return new Ue([e[0],e[3],e[6],e[1],e[4],e[7]],s)}if('mat2x4'===n.typeInfo.name||'mat2x4f'===n.typeInfo.name||'mat2x4h'===n.typeInfo.name){const e=n.data;return new Ue([e[0],e[4],e[8],e[12],e[1],e[5],e[9],e[13]],s)}if('mat3x2'===n.typeInfo.name||'mat3x2f'===n.typeInfo.name||'mat3x2h'===n.typeInfo.name){const e=n.data;return new Ue([e[0],e[3],e[1],e[4],e[2],e[5]],s)}if('mat3x3'===n.typeInfo.name||'mat3x3f'===n.typeInfo.name||'mat3x3h'===n.typeInfo.name){const e=n.data;return new Ue([e[0],e[3],e[6],e[1],e[4],e[7],e[2],e[5],e[8]],s)}if('mat3x4'===n.typeInfo.name||'mat3x4f'===n.typeInfo.name||'mat3x4h'===n.typeInfo.name){const e=n.data;return new Ue([e[0],e[4],e[8],e[12],e[1],e[5],e[9],e[13],e[2],e[6],e[10],e[14]],s)}if('mat4x2'===n.typeInfo.name||'mat4x2f'===n.typeInfo.name||'mat4x2h'===n.typeInfo.name){const e=n.data;return new Ue([e[0],e[4],e[1],e[5],e[2],e[6]],s)}if('mat4x3'===n.typeInfo.name||'mat4x3f'===n.typeInfo.name||'mat4x3h'===n.typeInfo.name){const e=n.data;return new Ue([e[0],e[4],e[8],e[1],e[5],e[9],e[2],e[6],e[10]],s)}if('mat4x4'===n.typeInfo.name||'mat4x4f'===n.typeInfo.name||'mat4x4h'===n.typeInfo.name){const e=n.data;return new Ue([e[0],e[4],e[8],e[12],e[1],e[5],e[9],e[13],e[2],e[6],e[10],e[14],e[3],e[7],e[11],e[15]],s)}return console.error(`Invalid matrix type ${n.typeInfo.name}`),null}Trunc(e,t){const n=this.exec.evalExpression(e.args[0],t);if(n instanceof Me)return new Me(n.data.map(e=>Math.trunc(e)),n.typeInfo);const s=n;return new Be(Math.trunc(s.value),n.typeInfo)}Dpdx(e,t){return console.error(`TODO: dpdx. Line ${e.line}`),null}DpdxCoarse(e,t){return console.error(`TODO: dpdxCoarse. Line ${e.line}`),null}DpdxFine(e,t){return console.error('TODO: dpdxFine'),null}Dpdy(e,t){return console.error('TODO: dpdy'),null}DpdyCoarse(e,t){return console.error('TODO: dpdyCoarse'),null}DpdyFine(e,t){return console.error('TODO: dpdyFine'),null}Fwidth(e,t){return console.error('TODO: fwidth'),null}FwidthCoarse(e,t){return console.error('TODO: fwidthCoarse'),null}FwidthFine(e,t){return console.error('TODO: fwidthFine'),null}TextureDimensions(e,t){const n=e.args[0],s=e.args.length>1?this.exec.evalExpression(e.args[1],t).value:0;if(n instanceof ge){const r=n.name,a=t.getVariableValue(r);if(a instanceof We){if(s<0||s>=a.mipLevelCount)return console.error(`Invalid mip level for textureDimensions. Line ${e.line}`),null;const t=a.getMipLevelSize(s),n=a.dimension;return'1d'===n?new Be(t[0],this.getTypeInfo('u32')):'3d'===n?new Me(t,this.getTypeInfo('vec3u')):'2d'===n?new Me(t.slice(0,2),this.getTypeInfo('vec2u')):(console.error(`Invalid texture dimension ${n} not found. Line ${e.line}`),null)}return console.error(`Texture ${r} not found. Line ${e.line}`),null}return console.error(`Invalid texture argument for textureDimensions. Line ${e.line}`),null}TextureGather(e,t){return console.error('TODO: textureGather'),null}TextureGatherCompare(e,t){return console.error('TODO: textureGatherCompare'),null}TextureLoad(e,t){const n=e.args[0],s=this.exec.evalExpression(e.args[1],t),r=e.args.length>2?this.exec.evalExpression(e.args[2],t).value:0;if(!(s instanceof Me)||2!==s.data.length)return console.error(`Invalid UV argument for textureLoad. Line ${e.line}`),null;if(n instanceof ge){const a=n.name,i=t.getVariableValue(a);if(i instanceof We){const t=Math.floor(s.data[0]),n=Math.floor(s.data[1]);if(t<0||t>=i.width||n<0||n>=i.height)return console.error(`Texture ${a} out of bounds. Line ${e.line}`),null;const o=i.getPixel(t,n,0,r);return null===o?(console.error(`Invalid texture format for textureLoad. Line ${e.line}`),null):new Me(o,this.getTypeInfo('vec4f'))}return console.error(`Texture ${a} not found. Line ${e.line}`),null}return console.error(`Invalid texture argument for textureLoad. Line ${e.line}`),null}TextureNumLayers(e,t){const n=e.args[0];if(n instanceof ge){const s=n.name,r=t.getVariableValue(s);return r instanceof We?new Be(r.depthOrArrayLayers,this.getTypeInfo('u32')):(console.error(`Texture ${s} not found. Line ${e.line}`),null)}return console.error(`Invalid texture argument for textureNumLayers. Line ${e.line}`),null}TextureNumLevels(e,t){const n=e.args[0];if(n instanceof ge){const s=n.name,r=t.getVariableValue(s);return r instanceof We?new Be(r.mipLevelCount,this.getTypeInfo('u32')):(console.error(`Texture ${s} not found. Line ${e.line}`),null)}return console.error(`Invalid texture argument for textureNumLevels. Line ${e.line}`),null}TextureNumSamples(e,t){const n=e.args[0];if(n instanceof ge){const s=n.name,r=t.getVariableValue(s);return r instanceof We?new Be(r.sampleCount,this.getTypeInfo('u32')):(console.error(`Texture ${s} not found. Line ${e.line}`),null)}return console.error(`Invalid texture argument for textureNumSamples. Line ${e.line}`),null}TextureSample(e,t){return console.error('TODO: textureSample'),null}TextureSampleBias(e,t){return console.error('TODO: textureSampleBias'),null}TextureSampleCompare(e,t){return console.error('TODO: textureSampleCompare'),null}TextureSampleCompareLevel(e,t){return console.error('TODO: textureSampleCompareLevel'),null}TextureSampleGrad(e,t){return console.error('TODO: textureSampleGrad'),null}TextureSampleLevel(e,t){return console.error('TODO: textureSampleLevel'),null}TextureSampleBaseClampToEdge(e,t){return console.error('TODO: textureSampleBaseClampToEdge'),null}TextureStore(e,t){const n=e.args[0],s=this.exec.evalExpression(e.args[1],t),r=4===e.args.length?this.exec.evalExpression(e.args[2],t).value:0,a=4===e.args.length?this.exec.evalExpression(e.args[3],t).data:this.exec.evalExpression(e.args[2],t).data;if(4!==a.length)return console.error(`Invalid value argument for textureStore. Line ${e.line}`),null;if(!(s instanceof Me)||2!==s.data.length)return console.error(`Invalid UV argument for textureStore. Line ${e.line}`),null;if(n instanceof ge){const i=n.name,o=t.getVariableValue(i);if(o instanceof We){const t=o.getMipLevelSize(0),n=Math.floor(s.data[0]),c=Math.floor(s.data[1]);return n<0||n>=t[0]||c<0||c>=t[1]?(console.error(`Texture ${i} out of bounds. Line ${e.line}`),null):(o.setPixel(n,c,0,r,Array.from(a)),null)}return console.error(`Texture ${i} not found. Line ${e.line}`),null}return console.error(`Invalid texture argument for textureStore. Line ${e.line}`),null}AtomicLoad(e,t){let n=e.args[0];n instanceof ke&&(n=n.right);const s=this.exec.getVariableName(n,t);return t.getVariable(s).value.getSubData(this.exec,n.postfix,t)}AtomicStore(e,t){let n=e.args[0];n instanceof ke&&(n=n.right);const s=this.exec.getVariableName(n,t),r=t.getVariable(s);let a=e.args[1];const i=this.exec.evalExpression(a,t),o=r.value.getSubData(this.exec,n.postfix,t);return o instanceof Be&&i instanceof Be&&(o.value=i.value),r.value instanceof Pe&&r.value.setDataValue(this.exec,o,n.postfix,t),null}AtomicAdd(e,t){let n=e.args[0];n instanceof ke&&(n=n.right);const s=this.exec.getVariableName(n,t),r=t.getVariable(s);let a=e.args[1];const i=this.exec.evalExpression(a,t),o=r.value.getSubData(this.exec,n.postfix,t),c=new Be(o.value,o.typeInfo);return o instanceof Be&&i instanceof Be&&(o.value+=i.value),r.value instanceof Pe&&r.value.setDataValue(this.exec,o,n.postfix,t),c}AtomicSub(e,t){let n=e.args[0];n instanceof ke&&(n=n.right);const s=this.exec.getVariableName(n,t),r=t.getVariable(s);let a=e.args[1];const i=this.exec.evalExpression(a,t),o=r.value.getSubData(this.exec,n.postfix,t),c=new Be(o.value,o.typeInfo);return o instanceof Be&&i instanceof Be&&(o.value-=i.value),r.value instanceof Pe&&r.value.setDataValue(this.exec,o,n.postfix,t),c}AtomicMax(e,t){let n=e.args[0];n instanceof ke&&(n=n.right);const s=this.exec.getVariableName(n,t),r=t.getVariable(s);let a=e.args[1];const i=this.exec.evalExpression(a,t),o=r.value.getSubData(this.exec,n.postfix,t),c=new Be(o.value,o.typeInfo);return o instanceof Be&&i instanceof Be&&(o.value=Math.max(o.value,i.value)),r.value instanceof Pe&&r.value.setDataValue(this.exec,o,n.postfix,t),c}AtomicMin(e,t){let n=e.args[0];n instanceof ke&&(n=n.right);const s=this.exec.getVariableName(n,t),r=t.getVariable(s);let a=e.args[1];const i=this.exec.evalExpression(a,t),o=r.value.getSubData(this.exec,n.postfix,t),c=new Be(o.value,o.typeInfo);return o instanceof Be&&i instanceof Be&&(o.value=Math.min(o.value,i.value)),r.value instanceof Pe&&r.value.setDataValue(this.exec,o,n.postfix,t),c}AtomicAnd(e,t){let n=e.args[0];n instanceof ke&&(n=n.right);const s=this.exec.getVariableName(n,t),r=t.getVariable(s);let a=e.args[1];const i=this.exec.evalExpression(a,t),o=r.value.getSubData(this.exec,n.postfix,t),c=new Be(o.value,o.typeInfo);return o instanceof Be&&i instanceof Be&&(o.value=o.value&i.value),r.value instanceof Pe&&r.value.setDataValue(this.exec,o,n.postfix,t),c}AtomicOr(e,t){let n=e.args[0];n instanceof ke&&(n=n.right);const s=this.exec.getVariableName(n,t),r=t.getVariable(s);let a=e.args[1];const i=this.exec.evalExpression(a,t),o=r.value.getSubData(this.exec,n.postfix,t),c=new Be(o.value,o.typeInfo);return o instanceof Be&&i instanceof Be&&(o.value=o.value|i.value),r.value instanceof Pe&&r.value.setDataValue(this.exec,o,n.postfix,t),c}AtomicXor(e,t){let n=e.args[0];n instanceof ke&&(n=n.right);const s=this.exec.getVariableName(n,t),r=t.getVariable(s);let a=e.args[1];const i=this.exec.evalExpression(a,t),o=r.value.getSubData(this.exec,n.postfix,t),c=new Be(o.value,o.typeInfo);return o instanceof Be&&i instanceof Be&&(o.value=o.value^i.value),r.value instanceof Pe&&r.value.setDataValue(this.exec,o,n.postfix,t),c}AtomicExchange(e,t){let n=e.args[0];n instanceof ke&&(n=n.right);const s=this.exec.getVariableName(n,t),r=t.getVariable(s);let a=e.args[1];const i=this.exec.evalExpression(a,t),o=r.value.getSubData(this.exec,n.postfix,t),c=new Be(o.value,o.typeInfo);return o instanceof Be&&i instanceof Be&&(o.value=i.value),r.value instanceof Pe&&r.value.setDataValue(this.exec,o,n.postfix,t),c}AtomicCompareExchangeWeak(e,t){return console.error('TODO: atomicCompareExchangeWeak'),null}Pack4x8snorm(e,t){return console.error('TODO: pack4x8snorm'),null}Pack4x8unorm(e,t){return console.error('TODO: pack4x8unorm'),null}Pack4xI8(e,t){return console.error('TODO: pack4xI8'),null}Pack4xU8(e,t){return console.error('TODO: pack4xU8'),null}Pack4x8Clamp(e,t){return console.error('TODO: pack4x8Clamp'),null}Pack4xU8Clamp(e,t){return console.error('TODO: pack4xU8Clamp'),null}Pack2x16snorm(e,t){return console.error('TODO: pack2x16snorm'),null}Pack2x16unorm(e,t){return console.error('TODO: pack2x16unorm'),null}Pack2x16float(e,t){return console.error('TODO: pack2x16float'),null}Unpack4x8snorm(e,t){return console.error('TODO: unpack4x8snorm'),null}Unpack4x8unorm(e,t){return console.error('TODO: unpack4x8unorm'),null}Unpack4xI8(e,t){return console.error('TODO: unpack4xI8'),null}Unpack4xU8(e,t){return console.error('TODO: unpack4xU8'),null}Unpack2x16snorm(e,t){return console.error('TODO: unpack2x16snorm'),null}Unpack2x16unorm(e,t){return console.error('TODO: unpack2x16unorm'),null}Unpack2x16float(e,t){return console.error('TODO: unpack2x16float'),null}StorageBarrier(e,t){return null}TextureBarrier(e,t){return null}WorkgroupBarrier(e,t){return null}WorkgroupUniformLoad(e,t){return null}SubgroupAdd(e,t){return console.error('TODO: subgroupAdd'),null}SubgroupExclusiveAdd(e,t){return console.error('TODO: subgroupExclusiveAdd'),null}SubgroupInclusiveAdd(e,t){return console.error('TODO: subgroupInclusiveAdd'),null}SubgroupAll(e,t){return console.error('TODO: subgroupAll'),null}SubgroupAnd(e,t){return console.error('TODO: subgroupAnd'),null}SubgroupAny(e,t){return console.error('TODO: subgroupAny'),null}SubgroupBallot(e,t){return console.error('TODO: subgroupBallot'),null}SubgroupBroadcast(e,t){return console.error('TODO: subgroupBroadcast'),null}SubgroupBroadcastFirst(e,t){return console.error('TODO: subgroupBroadcastFirst'),null}SubgroupElect(e,t){return console.error('TODO: subgroupElect'),null}SubgroupMax(e,t){return console.error('TODO: subgroupMax'),null}SubgroupMin(e,t){return console.error('TODO: subgroupMin'),null}SubgroupMul(e,t){return console.error('TODO: subgroupMul'),null}SubgroupExclusiveMul(e,t){return console.error('TODO: subgroupExclusiveMul'),null}SubgroupInclusiveMul(e,t){return console.error('TODO: subgroupInclusiveMul'),null}SubgroupOr(e,t){return console.error('TODO: subgroupOr'),null}SubgroupShuffle(e,t){return console.error('TODO: subgroupShuffle'),null}SubgroupShuffleDown(e,t){return console.error('TODO: subgroupShuffleDown'),null}SubgroupShuffleUp(e,t){return console.error('TODO: subgroupShuffleUp'),null}SubgroupShuffleXor(e,t){return console.error('TODO: subgroupShuffleXor'),null}SubgroupXor(e,t){return console.error('TODO: subgroupXor'),null}QuadBroadcast(e,t){return console.error('TODO: quadBroadcast'),null}QuadSwapDiagonal(e,t){return console.error('TODO: quadSwapDiagonal'),null}QuadSwapX(e,t){return console.error('TODO: quadSwapX'),null}QuadSwapY(e,t){return console.error('TODO: quadSwapY'),null}}const ft={vec2:2,vec2f:2,vec2i:2,vec2u:2,vec2b:2,vec2h:2,vec3:3,vec3f:3,vec3i:3,vec3u:3,vec3b:3,vec3h:3,vec4:4,vec4f:4,vec4i:4,vec4u:4,vec4b:4,vec4h:4},pt={mat2x2:[2,2,4],mat2x2f:[2,2,4],mat2x2h:[2,2,4],mat2x3:[2,3,6],mat2x3f:[2,3,6],mat2x3h:[2,3,6],mat2x4:[2,4,8],mat2x4f:[2,4,8],mat2x4h:[2,4,8],mat3x2:[3,2,6],mat3x2f:[3,2,6],mat3x2h:[3,2,6],mat3x3:[3,3,9],mat3x3f:[3,3,9],mat3x3h:[3,3,9],mat3x4:[3,4,12],mat3x4f:[3,4,12],mat3x4h:[3,4,12],mat4x2:[4,2,8],mat4x2f:[4,2,8],mat4x2h:[4,2,8],mat4x3:[4,3,12],mat4x3f:[4,3,12],mat4x3h:[4,3,12],mat4x4:[4,4,16],mat4x4f:[4,4,16],mat4x4h:[4,4,16]};class dt extends ut{constructor(e,t){var n;super(),this.ast=null!=e?e:[],this.reflection=new at,this.reflection.updateAST(this.ast),this.context=null!==(n=null==t?void 0:t.clone())&&void 0!==n?n:new lt,this.builtins=new ht(this),this.typeInfo={bool:this.getTypeInfo(ae.bool),i32:this.getTypeInfo(ae.i32),u32:this.getTypeInfo(ae.u32),f32:this.getTypeInfo(ae.f32),f16:this.getTypeInfo(ae.f16),vec2f:this.getTypeInfo(ce.vec2f),vec2u:this.getTypeInfo(ce.vec2u),vec2i:this.getTypeInfo(ce.vec2i),vec2h:this.getTypeInfo(ce.vec2h),vec3f:this.getTypeInfo(ce.vec3f),vec3u:this.getTypeInfo(ce.vec3u),vec3i:this.getTypeInfo(ce.vec3i),vec3h:this.getTypeInfo(ce.vec3h),vec4f:this.getTypeInfo(ce.vec4f),vec4u:this.getTypeInfo(ce.vec4u),vec4i:this.getTypeInfo(ce.vec4i),vec4h:this.getTypeInfo(ce.vec4h),mat2x2f:this.getTypeInfo(ce.mat2x2f),mat2x3f:this.getTypeInfo(ce.mat2x3f),mat2x4f:this.getTypeInfo(ce.mat2x4f),mat3x2f:this.getTypeInfo(ce.mat3x2f),mat3x3f:this.getTypeInfo(ce.mat3x3f),mat3x4f:this.getTypeInfo(ce.mat3x4f),mat4x2f:this.getTypeInfo(ce.mat4x2f),mat4x3f:this.getTypeInfo(ce.mat4x3f),mat4x4f:this.getTypeInfo(ce.mat4x4f)}}getVariableValue(e){var t,n;const r=null!==(n=null===(t=this.context.getVariable(e))||void 0===t?void 0:t.value)&&void 0!==n?n:null;if(null===r)return null;if(r instanceof Be)return r.value;if(r instanceof Me)return Array.from(r.data);if(r instanceof Ue)return Array.from(r.data);if(r instanceof Pe&&r.typeInfo instanceof s){if('u32'===r.typeInfo.format.name)return Array.from(new Uint32Array(r.buffer,r.offset,r.typeInfo.count));if('i32'===r.typeInfo.format.name)return Array.from(new Int32Array(r.buffer,r.offset,r.typeInfo.count));if('f32'===r.typeInfo.format.name)return Array.from(new Float32Array(r.buffer,r.offset,r.typeInfo.count))}return console.error(`Unsupported return variable type ${r.typeInfo.name}`),null}execute(e){(e=null!=e?e:{}).constants&&this._setOverrides(e.constants,this.context),this._execStatements(this.ast,this.context)}dispatchWorkgroups(e,t,n,s){const r=this.context.clone();(s=null!=s?s:{}).constants&&this._setOverrides(s.constants,r),this._execStatements(this.ast,r);const a=r.getFunction(e);if(!a)return void console.error(`Function ${e} not found`);if('number'==typeof t)t=[t,1,1];else{if(0===t.length)return void console.error('Invalid dispatch count');1===t.length?t=[t[0],1,1]:2===t.length?t=[t[0],t[1],1]:t.length>3&&(t=[t[0],t[1],t[2]])}const i=t[0],o=t[1],c=t[2],l=this.getTypeInfo('vec3u');r.setVariable('@num_workgroups',new Me(t,l));const u=this.reflection.getFunctionInfo(e);null===u&&console.error(`Function ${e} not found in reflection data`);for(const e in n)for(const t in n[e]){const s=n[e][t];r.variables.forEach(n=>{var r;const a=n.node;if(null==a?void 0:a.attributes){let i=null,o=null;for(const e of a.attributes)'binding'===e.name?i=e.value:'group'===e.name&&(o=e.value);if(t==i&&e==o){let i=!1;for(const s of u.resources)if(s.name===n.name&&s.group===parseInt(e)&&s.binding===parseInt(t)){i=!0;break}if(i)if(void 0!==s.texture&&void 0!==s.descriptor){const e=new We(s.texture,this.getTypeInfo(a.type),s.descriptor,null!==(r=s.texture.view)&&void 0!==r?r:null);n.value=e}else void 0!==s.uniform?n.value=new Pe(s.uniform,this.getTypeInfo(a.type)):n.value=new Pe(s,this.getTypeInfo(a.type))}}})}for(let e=0;e<c;++e)for(let t=0;t<o;++t)for(let n=0;n<i;++n)r.setVariable('@workgroup_id',new Me([n,t,e],this.getTypeInfo('vec3u'))),this._dispatchWorkgroup(a,[n,t,e],r)}execStatement(e,t){if(e instanceof Y)return this.evalExpression(e.value,t);if(e instanceof se){if(e.condition){const n=this.evalExpression(e.condition,t);if(!(n instanceof Be))throw new Error('Invalid break-if condition');if(!n.value)return null}return dt._breakObj}if(e instanceof re)return dt._continueObj;if(e instanceof U)this._let(e,t);else if(e instanceof F)this._var(e,t);else if(e instanceof P)this._const(e,t);else if(e instanceof D)this._function(e,t);else{if(e instanceof Q)return this._if(e,t);if(e instanceof Z)return this._switch(e,t);if(e instanceof B)return this._for(e,t);if(e instanceof V)return this._while(e,t);if(e instanceof j)return this._loop(e,t);if(e instanceof O){const n=t.clone();return n.currentFunctionName=t.currentFunctionName,this._execStatements(e.body,n)}if(e instanceof G)this._assign(e,t);else if(e instanceof R)this._increment(e,t);else{if(e instanceof oe)return null;if(e instanceof M){const n=e.name;null===t.getVariable(n)&&t.setVariable(n,new Be(0,this.getTypeInfo('u32')))}else if(e instanceof X)this._call(e,t);else{if(e instanceof ee)return null;if(e instanceof te)return null;console.error('Invalid statement type.',e,`Line ${e.line}`)}}}return null}evalExpression(e,t){return e instanceof Ie?this._evalBinaryOp(e,t):e instanceof xe?this._evalLiteral(e,t):e instanceof ge?this._evalVariable(e,t):e instanceof me?this._evalCall(e,t):e instanceof de?this._evalCreate(e,t):e instanceof _e?this._evalConst(e,t):e instanceof ye?this._evalBitcast(e,t):e instanceof ke?this._evalUnaryOp(e,t):(console.error('Invalid expression type',e,`Line ${e.line}`),null)}getTypeInfo(e){var t;if(e instanceof ae){const t=this.reflection.getTypeInfo(e);if(null!==t)return t}let n=null!==(t=this.typeInfo[e])&&void 0!==t?t:null;return null!==n||(n=this.reflection.getTypeInfoByName(e)),n}_setOverrides(e,t){for(const n in e){const s=e[n],r=this.reflection.getOverrideInfo(n);null!==r?(null===r.type&&(r.type=this.getTypeInfo('u32')),'u32'===r.type.name||'i32'===r.type.name||'f32'===r.type.name||'f16'===r.type.name?t.setVariable(n,new Be(s,r.type)):'bool'===r.type.name?t.setVariable(n,new Be(s?1:0,r.type)):'vec2'===r.type.name||'vec3'===r.type.name||'vec4'===r.type.name||'vec2f'===r.type.name||'vec3f'===r.type.name||'vec4f'===r.type.name||'vec2i'===r.type.name||'vec3i'===r.type.name||'vec4i'===r.type.name||'vec2u'===r.type.name||'vec3u'===r.type.name||'vec4u'===r.type.name||'vec2h'===r.type.name||'vec3h'===r.type.name||'vec4h'===r.type.name?t.setVariable(n,new Me(s,r.type)):console.error(`Invalid constant type for ${n}`)):console.error(`Override ${n} does not exist in the shader.`)}}_dispatchWorkgroup(e,t,n){const s=[1,1,1];for(const t of e.node.attributes)if('workgroup_size'===t.name){if(t.value.length>0){const e=n.getVariableValue(t.value[0]);s[0]=e instanceof Be?e.value:parseInt(t.value[0])}if(t.value.length>1){const e=n.getVariableValue(t.value[1]);s[1]=e instanceof Be?e.value:parseInt(t.value[1])}if(t.value.length>2){const e=n.getVariableValue(t.value[2]);s[2]=e instanceof Be?e.value:parseInt(t.value[2])}}const r=this.getTypeInfo('vec3u'),a=this.getTypeInfo('u32');n.setVariable('@workgroup_size',new Me(s,r));const i=s[0],o=s[1],c=s[2];for(let l=0,u=0;l<c;++l)for(let c=0;c<o;++c)for(let o=0;o<i;++o,++u){const i=[o,c,l],h=[o+t[0]*s[0],c+t[1]*s[1],l+t[2]*s[2]];n.setVariable('@local_invocation_id',new Me(i,r)),n.setVariable('@global_invocation_id',new Me(h,r)),n.setVariable('@local_invocation_index',new Be(u,a)),this._dispatchExec(e,n)}}_dispatchExec(e,t){for(const n of e.node.args)for(const e of n.attributes)if('builtin'===e.name){const s=`@${e.value}`,r=t.getVariable(s);void 0!==r&&t.variables.set(n.name,r)}this._execStatements(e.node.body,t)}getVariableName(e,t){for(;e instanceof ke;)e=e.right;return e instanceof ge?e.name:(console.error('Unknown variable type',e,'Line',e.line),null)}_execStatements(e,t){for(const n of e){if(n instanceof Array){const e=t.clone(),s=this._execStatements(n,e);if(s)return s;continue}const e=this.execStatement(n,t);if(e)return e}return null}_call(e,t){const n=t.clone();n.currentFunctionName=e.name;const s=t.getFunction(e.name);if(s){for(let t=0;t<s.node.args.length;++t){const r=s.node.args[t],a=this.evalExpression(e.args[t],n);n.setVariable(r.name,a,r)}this._execStatements(s.node.body,n)}else if(e.isBuiltin)this._callBuiltinFunction(e,n);else{this.getTypeInfo(e.name)&&this._evalCreate(e,t)}}_increment(e,t){const n=this.getVariableName(e.variable,t),s=t.getVariable(n);s?'++'===e.operator?s.value instanceof Be?s.value.value++:console.error(`Variable ${n} is not a scalar. Line ${e.line}`):'--'===e.operator?s.value instanceof Be?s.value.value--:console.error(`Variable ${n} is not a scalar. Line ${e.line}`):console.error(`Unknown increment operator ${e.operator}. Line ${e.line}`):console.error(`Variable ${n} not found. Line ${e.line}`)}_getVariableData(e,t){if(e instanceof ge){const n=this.getVariableName(e,t),s=t.getVariable(n);return null===s?(console.error(`Variable ${n} not found. Line ${e.line}`),null):s.value.getSubData(this,e.postfix,t)}if(e instanceof ke){if('*'===e.operator){const n=this._getVariableData(e.right,t);return n instanceof Oe?n.reference.getSubData(this,e.postfix,t):(console.error(`Variable ${e.right} is not a pointer. Line ${e.line}`),null)}if('&'===e.operator){const n=this._getVariableData(e.right,t);return new Oe(n)}}return null}_assign(e,t){let n=null,s='<var>',r=null;if(e.variable instanceof ke){const n=this._getVariableData(e.variable,t),s=this.evalExpression(e.value,t),r=e.operator;if('='===r){if(n instanceof Be||n instanceof Me||n instanceof Ue){if(s instanceof Be||s instanceof Me||s instanceof Ue&&n.data.length===s.data.length)return void n.data.set(s.data);console.error(`Invalid assignment. Line ${e.line}`)}else if(n instanceof Pe&&s instanceof Pe&&n.buffer.byteLength-n.offset>=s.buffer.byteLength-s.offset)return void(n.buffer.byteLength%4==0?new Uint32Array(n.buffer,n.offset,n.typeInfo.size/4).set(new Uint32Array(s.buffer,s.offset,s.typeInfo.size/4)):new Uint8Array(n.buffer,n.offset,n.typeInfo.size).set(new Uint8Array(s.buffer,s.offset,s.typeInfo.size)));return console.error(`Invalid assignment. Line ${e.line}`),null}if('+='===r)return n instanceof Be||n instanceof Me||n instanceof Ue?s instanceof Be||s instanceof Me||s instanceof Ue?void n.data.set(s.data.map((e,t)=>n.data[t]+e)):void console.error(`Invalid assignment . Line ${e.line}`):void console.error(`Invalid assignment. Line ${e.line}`);if('-='===r)return(n instanceof Be||n instanceof Me||n instanceof Ue)&&(s instanceof Be||s instanceof Me||s instanceof Ue)?void n.data.set(s.data.map((e,t)=>n.data[t]-e)):void console.error(`Invalid assignment. Line ${e.line}`)}if(e.variable instanceof ke){if('*'===e.variable.operator){s=this.getVariableName(e.variable.right,t);const r=t.getVariable(s);if(!(r&&r.value instanceof Oe))return void console.error(`Variable ${s} is not a pointer. Line ${e.line}`);n=r.value.reference;let a=e.variable.postfix;if(!a){let t=e.variable.right;for(;t instanceof ke;){if(t.postfix){a=t.postfix;break}t=t.right}}a&&(n=n.getSubData(this,a,t))}}else{r=e.variable.postfix,s=this.getVariableName(e.variable,t);const a=t.getVariable(s);if(null===a)return void console.error(`Variable ${s} not found. Line ${e.line}`);n=a.value}if(n instanceof Oe&&(n=n.reference),null===n)return void console.error(`Variable ${s} not found. Line ${e.line}`);const a=this.evalExpression(e.value,t),i=e.operator;if('='!==i){const s=n.getSubData(this,r,t);if(s instanceof Me&&a instanceof Be){const t=s.data,n=a.value;if('+='===i)for(let e=0;e<t.length;++e)t[e]+=n;else if('-='===i)for(let e=0;e<t.length;++e)t[e]-=n;else if('*='===i)for(let e=0;e<t.length;++e)t[e]*=n;else if('/='===i)for(let e=0;e<t.length;++e)t[e]/=n;else if('%='===i)for(let e=0;e<t.length;++e)t[e]%=n;else if('&='===i)for(let e=0;e<t.length;++e)t[e]&=n;else if('|='===i)for(let e=0;e<t.length;++e)t[e]|=n;else if('^='===i)for(let e=0;e<t.length;++e)t[e]^=n;else if('<<='===i)for(let e=0;e<t.length;++e)t[e]<<=n;else if('>>='===i)for(let e=0;e<t.length;++e)t[e]>>=n;else console.error(`Invalid operator ${i}. Line ${e.line}`)}else if(s instanceof Me&&a instanceof Me){const t=s.data,n=a.data;if(t.length!==n.length)return void console.error(`Vector length mismatch. Line ${e.line}`);if('+='===i)for(let e=0;e<t.length;++e)t[e]+=n[e];else if('-='===i)for(let e=0;e<t.length;++e)t[e]-=n[e];else if('*='===i)for(let e=0;e<t.length;++e)t[e]*=n[e];else if('/='===i)for(let e=0;e<t.length;++e)t[e]/=n[e];else if('%='===i)for(let e=0;e<t.length;++e)t[e]%=n[e];else if('&='===i)for(let e=0;e<t.length;++e)t[e]&=n[e];else if('|='===i)for(let e=0;e<t.length;++e)t[e]|=n[e];else if('^='===i)for(let e=0;e<t.length;++e)t[e]^=n[e];else if('<<='===i)for(let e=0;e<t.length;++e)t[e]<<=n[e];else if('>>='===i)for(let e=0;e<t.length;++e)t[e]>>=n[e];else console.error(`Invalid operator ${i}. Line ${e.line}`)}else{if(!(s instanceof Be&&a instanceof Be))return void console.error(`Invalid type for ${e.operator} operator. Line ${e.line}`);'+='===i?s.value+=a.value:'-='===i?s.value-=a.value:'*='===i?s.value*=a.value:'/='===i?s.value/=a.value:'%='===i?s.value%=a.value:'&='===i?s.value&=a.value:'|='===i?s.value|=a.value:'^='===i?s.value^=a.value:'<<='===i?s.value<<=a.value:'>>='===i?s.value>>=a.value:console.error(`Invalid operator ${i}. Line ${e.line}`)}return void(n instanceof Pe&&n.setDataValue(this,s,r,t))}if(n instanceof Pe)n.setDataValue(this,a,r,t);else if(r){if(!(n instanceof Me||n instanceof Ue))return void console.error(`Variable ${s} is not a vector or matrix. Line ${e.line}`);if(r instanceof ve){const i=this.evalExpression(r.index,t).value;if(n instanceof Me){if(!(a instanceof Be))return void console.error(`Invalid assignment to ${s}. Line ${e.line}`);n.data[i]=a.value}else{if(!(n instanceof Ue))return void console.error(`Invalid assignment to ${s}. Line ${e.line}`);{const i=this.evalExpression(r.index,t).value;if(i<0)return void console.error(`Invalid assignment to ${s}. Line ${e.line}`);if(!(a instanceof Me))return void console.error(`Invalid assignment to ${s}. Line ${e.line}`);{const t=n.typeInfo.getTypeName();if('mat2x2'===t||'mat2x2f'===t||'mat2x2h'===t){if(!(i<2&&2===a.data.length))return void console.error(`Invalid assignment to ${s}. Line ${e.line}`);n.data[2*i]=a.data[0],n.data[2*i+1]=a.data[1]}else if('mat2x3'===t||'mat2x3f'===t||'mat2x3h'===t){if(!(i<2&&3===a.data.length))return void console.error(`Invalid assignment to ${s}. Line ${e.line}`);n.data[3*i]=a.data[0],n.data[3*i+1]=a.data[1],n.data[3*i+2]=a.data[2]}else if('mat2x4'===t||'mat2x4f'===t||'mat2x4h'===t){if(!(i<2&&4===a.data.length))return void console.error(`Invalid assignment to ${s}. Line ${e.line}`);n.data[4*i]=a.data[0],n.data[4*i+1]=a.data[1],n.data[4*i+2]=a.data[2],n.data[4*i+3]=a.data[3]}else if('mat3x2'===t||'mat3x2f'===t||'mat3x2h'===t){if(!(i<3&&2===a.data.length))return void console.error(`Invalid assignment to ${s}. Line ${e.line}`);n.data[2*i]=a.data[0],n.data[2*i+1]=a.data[1]}else if('mat3x3'===t||'mat3x3f'===t||'mat3x3h'===t){if(!(i<3&&3===a.data.length))return void console.error(`Invalid assignment to ${s}. Line ${e.line}`);n.data[3*i]=a.data[0],n.data[3*i+1]=a.data[1],n.data[3*i+2]=a.data[2]}else if('mat3x4'===t||'mat3x4f'===t||'mat3x4h'===t){if(!(i<3&&4===a.data.length))return void console.error(`Invalid assignment to ${s}. Line ${e.line}`);n.data[4*i]=a.data[0],n.data[4*i+1]=a.data[1],n.data[4*i+2]=a.data[2],n.data[4*i+3]=a.data[3]}else if('mat4x2'===t||'mat4x2f'===t||'mat4x2h'===t){if(!(i<4&&2===a.data.length))return void console.error(`Invalid assignment to ${s}. Line ${e.line}`);n.data[2*i]=a.data[0],n.data[2*i+1]=a.data[1]}else if('mat4x3'===t||'mat4x3f'===t||'mat4x3h'===t){if(!(i<4&&3===a.data.length))return void console.error(`Invalid assignment to ${s}. Line ${e.line}`);n.data[3*i]=a.data[0],n.data[3*i+1]=a.data[1],n.data[3*i+2]=a.data[2]}else{if('mat4x4'!==t&&'mat4x4f'!==t&&'mat4x4h'!==t)return void console.error(`Invalid assignment to ${s}. Line ${e.line}`);if(!(i<4&&4===a.data.length))return void console.error(`Invalid assignment to ${s}. Line ${e.line}`);n.data[4*i]=a.data[0],n.data[4*i+1]=a.data[1],n.data[4*i+2]=a.data[2],n.data[4*i+3]=a.data[3]}}}}}else if(r instanceof pe){const t=r.value;if(!(n instanceof Me))return void console.error(`Invalid assignment to ${t}. Variable ${s} is not a vector. Line ${e.line}`);if(a instanceof Be){if(t.length>1)return void console.error(`Invalid assignment to ${t} for variable ${s}. Line ${e.line}`);if('x'===t)n.data[0]=a.value;else if('y'===t){if(n.data.length<2)return void console.error(`Invalid assignment to ${t} for variable ${s}. Line ${e.line}`);n.data[1]=a.value}else if('z'===t){if(n.data.length<3)return void console.error(`Invalid assignment to ${t} for variable ${s}. Line ${e.line}`);n.data[2]=a.value}else if('w'===t){if(n.data.length<4)return void console.error(`Invalid assignment to ${t} for variable ${s}. Line ${e.line}`);n.data[3]=a.value}}else{if(!(a instanceof Me))return void console.error(`Invalid assignment to ${s}. Line ${e.line}`);if(t.length!==a.data.length)return void console.error(`Invalid assignment to ${t} for variable ${s}. Line ${e.line}`);for(let r=0;r<t.length;++r){const i=t[r];if('x'===i||'r'===i)n.data[0]=a.data[r];else if('y'===i||'g'===i){if(a.data.length<2)return void console.error(`Invalid assignment to ${i} for variable ${s}. Line ${e.line}`);n.data[1]=a.data[r]}else if('z'===i||'b'===i){if(a.data.length<3)return void console.error(`Invalid assignment to ${i} for variable ${s}. Line ${e.line}`);n.data[2]=a.data[r]}else{if('w'!==i&&'a'!==i)return void console.error(`Invalid assignment to ${i} for variable ${s}. Line ${e.line}`);if(a.data.length<4)return void console.error(`Invalid assignment to ${i} for variable ${s}. Line ${e.line}`);n.data[3]=a.data[r]}}}}}else n instanceof Be&&a instanceof Be?n.value=a.value:n instanceof Me&&a instanceof Me||n instanceof Ue&&a instanceof Ue?n.data.set(a.data):console.error(`Invalid assignment to ${s}. Line ${e.line}`)}_function(e,t){const n=new ct(e);t.functions.set(e.name,n)}_const(e,t){let n=null;null!==e.value&&(n=this.evalExpression(e.value,t)),t.createVariable(e.name,n,e)}_let(e,t){let n=null;if(null!==e.value){if(n=this.evalExpression(e.value,t),null===n)return void console.error(`Invalid value for variable ${e.name}. Line ${e.line}`);e.value instanceof ke||(n=n.clone())}else{const s=e.type.name;if('f32'===s||'i32'===s||'u32'===s||'bool'===s||'f16'===s||'vec2'===s||'vec3'===s||'vec4'===s||'vec2f'===s||'vec3f'===s||'vec4f'===s||'vec2i'===s||'vec3i'===s||'vec4i'===s||'vec2u'===s||'vec3u'===s||'vec4u'===s||'vec2h'===s||'vec3h'===s||'vec4h'===s||'vec2b'===s||'vec3b'===s||'vec4b'===s||'mat2x2'===s||'mat2x3'===s||'mat2x4'===s||'mat3x2'===s||'mat3x3'===s||'mat3x4'===s||'mat4x2'===s||'mat4x3'===s||'mat4x4'===s||'mat2x2f'===s||'mat2x3f'===s||'mat2x4f'===s||'mat3x2f'===s||'mat3x3f'===s||'mat3x4f'===s||'mat4x2f'===s||'mat4x3f'===s||'mat4x4f'===s||'mat2x2h'===s||'mat2x3h'===s||'mat2x4h'===s||'mat3x2h'===s||'mat3x3h'===s||'mat3x4h'===s||'mat4x2h'===s||'mat4x3h'===s||'mat4x4h'===s||'array'===s){const s=new de(e.type,[]);n=this._evalCreate(s,t)}}t.createVariable(e.name,n,e)}_var(e,t){let n=null;if(null!==e.value){if(n=this.evalExpression(e.value,t),null===n)return void console.error(`Invalid value for variable ${e.name}. Line ${e.line}`);e.value instanceof ke||(n=n.clone())}else{if(null===e.type)return void console.error(`Variable ${e.name} has no type. Line ${e.line}`);const s=e.type.name;if('f32'===s||'i32'===s||'u32'===s||'bool'===s||'f16'===s||'vec2'===s||'vec3'===s||'vec4'===s||'vec2f'===s||'vec3f'===s||'vec4f'===s||'vec2i'===s||'vec3i'===s||'vec4i'===s||'vec2u'===s||'vec3u'===s||'vec4u'===s||'vec2h'===s||'vec3h'===s||'vec4h'===s||'vec2b'===s||'vec3b'===s||'vec4b'===s||'mat2x2'===s||'mat2x3'===s||'mat2x4'===s||'mat3x2'===s||'mat3x3'===s||'mat3x4'===s||'mat4x2'===s||'mat4x3'===s||'mat4x4'===s||'mat2x2f'===s||'mat2x3f'===s||'mat2x4f'===s||'mat3x2f'===s||'mat3x3f'===s||'mat3x4f'===s||'mat4x2f'===s||'mat4x3f'===s||'mat4x4f'===s||'mat2x2h'===s||'mat2x3h'===s||'mat2x4h'===s||'mat3x2h'===s||'mat3x3h'===s||'mat3x4h'===s||'mat4x2h'===s||'mat4x3h'===s||'mat4x4h'===s||e.type instanceof ue||e.type instanceof oe||e.type instanceof ce){const s=new de(e.type,[]);n=this._evalCreate(s,t)}}t.createVariable(e.name,n,e)}_switch(e,t){t=t.clone();const n=this.evalExpression(e.condition,t);if(!(n instanceof Be))return console.error(`Invalid if condition. Line ${e.line}`),null;let s=null;for(const r of e.cases)if(r instanceof Ae)for(const a of r.selectors){if(a instanceof Se){s=r;continue}const i=this.evalExpression(a,t);if(!(i instanceof Be))return console.error(`Invalid case selector. Line ${e.line}`),null;if(i.value===n.value)return this._execStatements(r.body,t)}else r instanceof Ee&&(s=r);return s?this._execStatements(s.body,t):null}_if(e,t){t=t.clone();const n=this.evalExpression(e.condition,t);if(!(n instanceof Be))return console.error(`Invalid if condition. Line ${e.line}`),null;if(n.value)return this._execStatements(e.body,t);for(const n of e.elseif){const s=this.evalExpression(n.condition,t);if(!(s instanceof Be))return console.error(`Invalid if condition. Line ${e.line}`),null;if(s.value)return this._execStatements(n.body,t)}return e.else?this._execStatements(e.else,t):null}_getScalarValue(e){return e instanceof Be?e.value:(console.error('Expected scalar value.',e),0)}_for(e,t){for(t=t.clone(),this.execStatement(e.init,t);this._getScalarValue(this.evalExpression(e.condition,t));){const n=this._execStatements(e.body,t);if(n===dt._breakObj)break;if(null!==n&&n!==dt._continueObj)return n;this.execStatement(e.increment,t)}return null}_loop(e,t){for(t=t.clone();;){const n=this._execStatements(e.body,t);if(n===dt._breakObj)break;if(n===dt._continueObj){if(e.continuing){if(this._execStatements(e.continuing.body,t)===dt._breakObj)break}}else if(null!==n)return n}return null}_while(e,t){for(t=t.clone();this._getScalarValue(this.evalExpression(e.condition,t));){const n=this._execStatements(e.body,t);if(n===dt._breakObj)break;if(n!==dt._continueObj&&null!==n)return n}return null}_evalBitcast(e,t){const n=this.evalExpression(e.value,t),s=e.type;if(n instanceof Be){const e=nt(n.value,n.typeInfo.name,s.name);return new Be(e,this.getTypeInfo(s))}if(n instanceof Me){const t=n.typeInfo.getTypeName();let r='';if(t.endsWith('f'))r='f32';else if(t.endsWith('i'))r='i32';else if(t.endsWith('u'))r='u32';else if(t.endsWith('b'))r='bool';else{if(!t.endsWith('h'))return console.error(`Unknown vector type ${t}. Line ${e.line}`),null;r='f16'}const a=s.getTypeName();let i='';if(a.endsWith('f'))i='f32';else if(a.endsWith('i'))i='i32';else if(a.endsWith('u'))i='u32';else if(a.endsWith('b'))i='bool';else{if(!a.endsWith('h'))return console.error(`Unknown vector type ${i}. Line ${e.line}`),null;i='f16'}const o=function(e,t,n){if(t===n)return e;const s=new Array(e.length);for(let r=0;r<e.length;r++)s[r]=nt(e[r],t,n);return s}(Array.from(n.data),r,i);return new Me(o,this.getTypeInfo(s))}return console.error(`TODO: bitcast for ${n.typeInfo.name}. Line ${e.line}`),null}_evalConst(e,t){return t.getVariableValue(e.name).clone().getSubData(this,e.postfix,t)}_evalCreate(e,t){var r;if(e instanceof de){if(null===e.type)return Ve.void;switch(e.type.getTypeName()){case'bool':case'i32':case'u32':case'f32':case'f16':return this._callConstructorValue(e,t);case'vec2':case'vec3':case'vec4':case'vec2f':case'vec3f':case'vec4f':case'vec2h':case'vec3h':case'vec4h':case'vec2i':case'vec3i':case'vec4i':case'vec2u':case'vec3u':case'vec4u':case'vec2b':case'vec3b':case'vec4b':return this._callConstructorVec(e,t);case'mat2x2':case'mat2x2f':case'mat2x2h':case'mat2x3':case'mat2x3f':case'mat2x3h':case'mat2x4':case'mat2x4f':case'mat2x4h':case'mat3x2':case'mat3x2f':case'mat3x2h':case'mat3x3':case'mat3x3f':case'mat3x3h':case'mat3x4':case'mat3x4f':case'mat3x4h':case'mat4x2':case'mat4x2f':case'mat4x2h':case'mat4x3':case'mat4x3f':case'mat4x3h':case'mat4x4':case'mat4x4f':case'mat4x4h':return this._callConstructorMatrix(e,t)}}const a=e instanceof de?e.type.name:e.name,i=e instanceof de?this.getTypeInfo(e.type):this.getTypeInfo(e.name);if(null===i)return console.error(`Unknown type ${a}. Line ${e.line}`),null;if(0===i.size)return null;const o=new Pe(new ArrayBuffer(i.size),i,0);if(i instanceof n){if(e.args)for(let n=0;n<e.args.length;++n){const s=i.members[n],r=e.args[n],a=this.evalExpression(r,t);o.setData(this,a,s.type,s.offset,t)}}else if(i instanceof s){let n=0;if(e.args)for(let s=0;s<e.args.length;++s){const a=e.args[s],c=this.evalExpression(a,t);null===i.format&&('x32'===(null===(r=c.typeInfo)||void 0===r?void 0:r.name)?i.format=this.getTypeInfo('i32'):i.format=c.typeInfo),o.setData(this,c,i.format,n,t),n+=i.stride}}else console.error(`Unknown type \"${a}\". Line ${e.line}`);return e instanceof de?o.getSubData(this,e.postfix,t):o}_evalLiteral(e,t){const n=this.getTypeInfo(e.type),s=n.name;if('x32'===s||'u32'===s||'f32'===s||'f16'===s||'i32'===s||'bool'===s){return new Be(e.scalarValue,n)}return'vec2'===s||'vec3'===s||'vec4'===s||'vec2f'===s||'vec3f'===s||'vec4f'===s||'vec2h'===s||'vec3h'===s||'vec4h'===s||'vec2i'===s||'vec3i'===s||'vec4i'===s||'vec2u'===s||'vec3u'===s||'vec4u'===s?this._callConstructorVec(e,t):'mat2x2'===s||'mat2x3'===s||'mat2x4'===s||'mat3x2'===s||'mat3x3'===s||'mat3x4'===s||'mat4x2'===s||'mat4x3'===s||'mat4x4'===s||'mat2x2f'===s||'mat2x3f'===s||'mat2x4f'===s||'mat3x2f'===s||'mat3x3f'===s||'mat3x4f'===s||'mat4x2f'===s||'mat4x3f'===s||'mat4x4f'===s||'mat2x2h'===s||'mat2x3h'===s||'mat2x4h'===s||'mat3x2h'===s||'mat3x3h'===s||'mat3x4h'===s||'mat4x2h'===s||'mat4x3h'===s||'mat4x4h'===s?this._callConstructorMatrix(e,t):e.value}_evalVariable(e,t){const n=t.getVariableValue(e.name);return null===n?n:n.getSubData(this,e.postfix,t)}_maxFormatTypeInfo(e){let t=e[0];if('f32'===t.name)return t;for(let n=1;n<e.length;++n){const s=dt._priority.get(t.name);dt._priority.get(e[n].name)<s&&(t=e[n])}return'x32'===t.name?this.getTypeInfo('i32'):t}_evalUnaryOp(e,t){const n=this.evalExpression(e.right,t);if('&'===e.operator)return new Oe(n);if('*'===e.operator)return n instanceof Oe?n.reference.getSubData(this,e.postfix,t):(console.error(`Invalid dereference. Line ${e.line}`),null);const s=n instanceof Be?n.value:n instanceof Me?Array.from(n.data):null;switch(e.operator){case'+':{if(Ge(s)){const e=s.map((e,t)=>+e);return new Me(e,n.typeInfo)}const e=s,t=this._maxFormatTypeInfo([n.typeInfo,n.typeInfo]);return new Be(+e,t)}case'-':{if(Ge(s)){const e=s.map((e,t)=>-e);return new Me(e,n.typeInfo)}const e=s,t=this._maxFormatTypeInfo([n.typeInfo,n.typeInfo]);return new Be(-e,t)}case'!':{if(Ge(s)){const e=s.map((e,t)=>e?0:1);return new Me(e,n.typeInfo)}const e=s,t=this._maxFormatTypeInfo([n.typeInfo,n.typeInfo]);return new Be(e?0:1,t)}case'~':{if(Ge(s)){const e=s.map((e,t)=>~e);return new Me(e,n.typeInfo)}const e=s,t=this._maxFormatTypeInfo([n.typeInfo,n.typeInfo]);return new Be(~e,t)}}return console.error(`Invalid unary operator ${e.operator}. Line ${e.line}`),null}_evalBinaryOp(e,t){const n=this.evalExpression(e.left,t),s=this.evalExpression(e.right,t),r=n instanceof Be?n.value:n instanceof Me||n instanceof Ue?Array.from(n.data):null,a=s instanceof Be?s.value:s instanceof Me||s instanceof Ue?Array.from(s.data):null;switch(e.operator){case'+':{if(Ge(r)&&Ge(a)){const t=r,s=a;if(t.length!==s.length)return console.error(`Vector length mismatch. Line ${e.line}.`),null;const i=t.map((e,t)=>e+s[t]);return new Me(i,n.typeInfo)}if(Ge(r)){const e=a,t=r.map((t,n)=>t+e);return new Me(t,n.typeInfo)}if(Ge(a)){const e=r,t=a.map((t,n)=>e+t);return new Me(t,s.typeInfo)}const t=r,i=a,o=this._maxFormatTypeInfo([n.typeInfo,s.typeInfo]);return new Be(t+i,o)}case'-':{if(Ge(r)&&Ge(a)){const t=r,s=a;if(t.length!==s.length)return console.error(`Vector length mismatch. Line ${e.line}.`),null;const i=t.map((e,t)=>e-s[t]);return new Me(i,n.typeInfo)}if(Ge(r)){const e=a,t=r.map((t,n)=>t-e);return new Me(t,n.typeInfo)}if(Ge(a)){const e=r,t=a.map((t,n)=>e-t);return new Me(t,s.typeInfo)}const t=r,i=a,o=this._maxFormatTypeInfo([n.typeInfo,s.typeInfo]);return new Be(t-i,o)}case'*':{if(Ge(r)&&Ge(a)){const t=r,i=a;if(n instanceof Ue&&s instanceof Ue){const r=function(e,t,n,s){if(void 0===pt[t.name]||void 0===pt[s.name])return null;const r=pt[t.name][0],a=pt[t.name][1],i=pt[s.name][0];if(r!==pt[s.name][1])return null;const o=new Array(i*a);for(let t=0;t<a;t++)for(let s=0;s<i;s++){let c=0;for(let i=0;i<r;i++)c+=e[i*a+t]*n[s*r+i];o[t*i+s]=c}return o}(t,n.typeInfo,i,s.typeInfo);if(null===r)return console.error(`Matrix multiplication failed. Line ${e.line}.`),null;const a=pt[s.typeInfo.name][0],o=pt[n.typeInfo.name][1],c=this.getTypeInfo(`mat${a}x${o}f`);return new Ue(r,c)}if(n instanceof Ue&&s instanceof Me){const r=function(e,t,n,s){if(void 0===pt[t.name]||void 0===ft[s.name])return null;const r=pt[t.name][0],a=pt[t.name][1];if(r!==n.length)return null;const i=new Array(a);for(let t=0;t<a;t++){let s=0;for(let i=0;i<r;i++)s+=e[i*a+t]*n[i];i[t]=s}return i}(t,n.typeInfo,i,s.typeInfo);return null===r?(console.error(`Matrix vector multiplication failed. Line ${e.line}.`),null):new Me(r,s.typeInfo)}if(n instanceof Me&&s instanceof Ue){const r=function(e,t,n,s){if(void 0===ft[t.name]||void 0===pt[s.name])return null;const r=pt[s.name][0],a=pt[s.name][1];if(a!==e.length)return null;const i=[];for(let t=0;t<r;t++){let s=0;for(let i=0;i<a;i++)s+=e[i]*n[i*r+t];i[t]=s}return i}(t,n.typeInfo,i,s.typeInfo);return null===r?(console.error(`Matrix vector multiplication failed. Line ${e.line}.`),null):new Me(r,n.typeInfo)}{if(t.length!==i.length)return console.error(`Vector length mismatch. Line ${e.line}.`),null;const s=t.map((e,t)=>e*i[t]);return new Me(s,n.typeInfo)}}if(Ge(r)){const e=a,t=r.map((t,n)=>t*e);return n instanceof Ue?new Ue(t,n.typeInfo):new Me(t,n.typeInfo)}if(Ge(a)){const e=r,t=a.map((t,n)=>e*t);return s instanceof Ue?new Ue(t,s.typeInfo):new Me(t,s.typeInfo)}const t=r,i=a,o=this._maxFormatTypeInfo([n.typeInfo,s.typeInfo]);return new Be(t*i,o)}case'%':{if(Ge(r)&&Ge(a)){const t=r,s=a;if(t.length!==s.length)return console.error(`Vector length mismatch. Line ${e.line}.`),null;const i=t.map((e,t)=>e%s[t]);return new Me(i,n.typeInfo)}if(Ge(r)){const e=a,t=r.map((t,n)=>t%e);return new Me(t,n.typeInfo)}if(Ge(a)){const e=r,t=a.map((t,n)=>e%t);return new Me(t,s.typeInfo)}const t=r,i=a,o=this._maxFormatTypeInfo([n.typeInfo,s.typeInfo]);return new Be(t%i,o)}case'/':{if(Ge(r)&&Ge(a)){const t=r,s=a;if(t.length!==s.length)return console.error(`Vector length mismatch. Line ${e.line}.`),null;const i=t.map((e,t)=>e/s[t]);return new Me(i,n.typeInfo)}if(Ge(r)){const e=a,t=r.map((t,n)=>t/e);return new Me(t,n.typeInfo)}if(Ge(a)){const e=r,t=a.map((t,n)=>e/t);return new Me(t,s.typeInfo)}const t=r,i=a,o=this._maxFormatTypeInfo([n.typeInfo,s.typeInfo]);return new Be(t/i,o)}case'&':{if(Ge(r)&&Ge(a)){const t=r,s=a;if(t.length!==s.length)return console.error(`Vector length mismatch. Line ${e.line}.`),null;const i=t.map((e,t)=>e&s[t]);return new Me(i,n.typeInfo)}if(Ge(r)){const e=a,t=r.map((t,n)=>t&e);return new Me(t,n.typeInfo)}if(Ge(a)){const e=r,t=a.map((t,n)=>e&t);return new Me(t,s.typeInfo)}const t=r,i=a,o=this._maxFormatTypeInfo([n.typeInfo,s.typeInfo]);return new Be(t&i,o)}case'|':{if(Ge(r)&&Ge(a)){const t=r,s=a;if(t.length!==s.length)return console.error(`Vector length mismatch. Line ${e.line}.`),null;const i=t.map((e,t)=>e|s[t]);return new Me(i,n.typeInfo)}if(Ge(r)){const e=a,t=r.map((t,n)=>t|e);return new Me(t,n.typeInfo)}if(Ge(a)){const e=r,t=a.map((t,n)=>e|t);return new Me(t,s.typeInfo)}const t=r,i=a,o=this._maxFormatTypeInfo([n.typeInfo,s.typeInfo]);return new Be(t|i,o)}case'^':{if(Ge(r)&&Ge(a)){const t=r,s=a;if(t.length!==s.length)return console.error(`Vector length mismatch. Line ${e.line}.`),null;const i=t.map((e,t)=>e^s[t]);return new Me(i,n.typeInfo)}if(Ge(r)){const e=a,t=r.map((t,n)=>t^e);return new Me(t,n.typeInfo)}if(Ge(a)){const e=r,t=a.map((t,n)=>e^t);return new Me(t,s.typeInfo)}const t=r,i=a,o=this._maxFormatTypeInfo([n.typeInfo,s.typeInfo]);return new Be(t^i,o)}case'<<':{if(Ge(r)&&Ge(a)){const t=r,s=a;if(t.length!==s.length)return console.error(`Vector length mismatch. Line ${e.line}.`),null;const i=t.map((e,t)=>e<<s[t]);return new Me(i,n.typeInfo)}if(Ge(r)){const e=a,t=r.map((t,n)=>t<<e);return new Me(t,n.typeInfo)}if(Ge(a)){const e=r,t=a.map((t,n)=>e<<t);return new Me(t,s.typeInfo)}const t=r,i=a,o=this._maxFormatTypeInfo([n.typeInfo,s.typeInfo]);return new Be(t<<i,o)}case'>>':{if(Ge(r)&&Ge(a)){const t=r,s=a;if(t.length!==s.length)return console.error(`Vector length mismatch. Line ${e.line}.`),null;const i=t.map((e,t)=>e>>s[t]);return new Me(i,n.typeInfo)}if(Ge(r)){const e=a,t=r.map((t,n)=>t>>e);return new Me(t,n.typeInfo)}if(Ge(a)){const e=r,t=a.map((t,n)=>e>>t);return new Me(t,s.typeInfo)}const t=r,i=a,o=this._maxFormatTypeInfo([n.typeInfo,s.typeInfo]);return new Be(t>>i,o)}case'>':if(Ge(r)&&Ge(a)){const t=r,s=a;if(t.length!==s.length)return console.error(`Vector length mismatch. Line ${e.line}.`),null;const i=t.map((e,t)=>e>s[t]?1:0);return new Me(i,n.typeInfo)}if(Ge(r)){const e=a,t=r.map((t,n)=>t>e?1:0);return new Me(t,n.typeInfo)}if(Ge(a)){const e=r,t=a.map((t,n)=>e>t?1:0);return new Me(t,s.typeInfo)}return new Be(r>a?1:0,this.getTypeInfo('bool'));case'<':if(Ge(r)&&Ge(a)){const t=r,s=a;if(t.length!==s.length)return console.error(`Vector length mismatch. Line ${e.line}.`),null;const i=t.map((e,t)=>e<s[t]?1:0);return new Me(i,n.typeInfo)}if(Ge(r)){const e=a,t=r.map((t,n)=>t<e?1:0);return new Me(t,n.typeInfo)}if(Ge(a)){const e=r,t=a.map((t,n)=>e<t?1:0);return new Me(t,s.typeInfo)}return new Be(r<a?1:0,this.getTypeInfo('bool'));case'==':if(Ge(r)&&Ge(a)){const t=r,s=a;if(t.length!==s.length)return console.error(`Vector length mismatch. Line ${e.line}.`),null;const i=t.map((e,t)=>e===s[t]?1:0);return new Me(i,n.typeInfo)}if(Ge(r)){const e=a,t=r.map((t,n)=>t==e?1:0);return new Me(t,n.typeInfo)}if(Ge(a)){const e=r,t=a.map((t,n)=>e==t?1:0);return new Me(t,s.typeInfo)}return new Be(r===a?1:0,this.getTypeInfo('bool'));case'!=':if(Ge(r)&&Ge(a)){const t=r,s=a;if(t.length!==s.length)return console.error(`Vector length mismatch. Line ${e.line}.`),null;const i=t.map((e,t)=>e!==s[t]?1:0);return new Me(i,n.typeInfo)}if(Ge(r)){const e=a,t=r.map((t,n)=>t!==e?1:0);return new Me(t,n.typeInfo)}if(Ge(a)){const e=r,t=a.map((t,n)=>e!==t?1:0);return new Me(t,s.typeInfo)}return new Be(r!==a?1:0,this.getTypeInfo('bool'));case'>=':if(Ge(r)&&Ge(a)){const t=r,s=a;if(t.length!==s.length)return console.error(`Vector length mismatch. Line ${e.line}.`),null;const i=t.map((e,t)=>e>=s[t]?1:0);return new Me(i,n.typeInfo)}if(Ge(r)){const e=a,t=r.map((t,n)=>t>=e?1:0);return new Me(t,n.typeInfo)}if(Ge(a)){const e=r,t=a.map((t,n)=>e>=t?1:0);return new Me(t,s.typeInfo)}return new Be(r>=a?1:0,this.getTypeInfo('bool'));case'<=':if(Ge(r)&&Ge(a)){const t=r,s=a;if(t.length!==s.length)return console.error(`Vector length mismatch. Line ${e.line}.`),null;const i=t.map((e,t)=>e<=s[t]?1:0);return new Me(i,n.typeInfo)}if(Ge(r)){const e=a,t=r.map((t,n)=>t<=e?1:0);return new Me(t,n.typeInfo)}if(Ge(a)){const e=r,t=a.map((t,n)=>e<=t?1:0);return new Me(t,s.typeInfo)}return new Be(r<=a?1:0,this.getTypeInfo('bool'));case'&&':if(Ge(r)&&Ge(a)){const t=r,s=a;if(t.length!==s.length)return console.error(`Vector length mismatch. Line ${e.line}.`),null;const i=t.map((e,t)=>e&&s[t]?1:0);return new Me(i,n.typeInfo)}if(Ge(r)){const e=a,t=r.map((t,n)=>t&&e?1:0);return new Me(t,n.typeInfo)}if(Ge(a)){const e=r,t=a.map((t,n)=>e&&t?1:0);return new Me(t,s.typeInfo)}return new Be(r&&a?1:0,this.getTypeInfo('bool'));case'||':if(Ge(r)&&Ge(a)){const t=r,s=a;if(t.length!==s.length)return console.error(`Vector length mismatch. Line ${e.line}.`),null;const i=t.map((e,t)=>e||s[t]?1:0);return new Me(i,n.typeInfo)}if(Ge(r)){const e=a,t=r.map((t,n)=>t||e?1:0);return new Me(t,n.typeInfo)}if(Ge(a)){const e=r,t=a.map((t,n)=>e||t?1:0);return new Me(t,s.typeInfo)}return new Be(r||a?1:0,this.getTypeInfo('bool'))}return console.error(`Unknown operator ${e.operator}. Line ${e.line}`),null}_evalCall(e,t){if(null!==e.cachedReturnValue)return e.cachedReturnValue;const n=t.clone();n.currentFunctionName=e.name;const s=t.getFunction(e.name);if(!s){if(e.isBuiltin)return this._callBuiltinFunction(e,n);return this.getTypeInfo(e.name)?this._evalCreate(e,t):(console.error(`Unknown function \"${e.name}\". Line ${e.line}`),null)}for(let t=0;t<s.node.args.length;++t){const r=s.node.args[t],a=this.evalExpression(e.args[t],n);n.createVariable(r.name,a,r)}return this._execStatements(s.node.body,n)}_callBuiltinFunction(e,t){switch(e.name){case'all':return this.builtins.All(e,t);case'any':return this.builtins.Any(e,t);case'select':return this.builtins.Select(e,t);case'arrayLength':return this.builtins.ArrayLength(e,t);case'abs':return this.builtins.Abs(e,t);case'acos':return this.builtins.Acos(e,t);case'acosh':return this.builtins.Acosh(e,t);case'asin':return this.builtins.Asin(e,t);case'asinh':return this.builtins.Asinh(e,t);case'atan':return this.builtins.Atan(e,t);case'atanh':return this.builtins.Atanh(e,t);case'atan2':return this.builtins.Atan2(e,t);case'ceil':return this.builtins.Ceil(e,t);case'clamp':return this.builtins.Clamp(e,t);case'cos':return this.builtins.Cos(e,t);case'cosh':return this.builtins.Cosh(e,t);case'countLeadingZeros':return this.builtins.CountLeadingZeros(e,t);case'countOneBits':return this.builtins.CountOneBits(e,t);case'countTrailingZeros':return this.builtins.CountTrailingZeros(e,t);case'cross':return this.builtins.Cross(e,t);case'degrees':return this.builtins.Degrees(e,t);case'determinant':return this.builtins.Determinant(e,t);case'distance':return this.builtins.Distance(e,t);case'dot':return this.builtins.Dot(e,t);case'dot4U8Packed':return this.builtins.Dot4U8Packed(e,t);case'dot4I8Packed':return this.builtins.Dot4I8Packed(e,t);case'exp':return this.builtins.Exp(e,t);case'exp2':return this.builtins.Exp2(e,t);case'extractBits':return this.builtins.ExtractBits(e,t);case'faceForward':return this.builtins.FaceForward(e,t);case'firstLeadingBit':return this.builtins.FirstLeadingBit(e,t);case'firstTrailingBit':return this.builtins.FirstTrailingBit(e,t);case'floor':return this.builtins.Floor(e,t);case'fma':return this.builtins.Fma(e,t);case'fract':return this.builtins.Fract(e,t);case'frexp':return this.builtins.Frexp(e,t);case'insertBits':return this.builtins.InsertBits(e,t);case'inverseSqrt':return this.builtins.InverseSqrt(e,t);case'ldexp':return this.builtins.Ldexp(e,t);case'length':return this.builtins.Length(e,t);case'log':return this.builtins.Log(e,t);case'log2':return this.builtins.Log2(e,t);case'max':return this.builtins.Max(e,t);case'min':return this.builtins.Min(e,t);case'mix':return this.builtins.Mix(e,t);case'modf':return this.builtins.Modf(e,t);case'normalize':return this.builtins.Normalize(e,t);case'pow':return this.builtins.Pow(e,t);case'quantizeToF16':return this.builtins.QuantizeToF16(e,t);case'radians':return this.builtins.Radians(e,t);case'reflect':return this.builtins.Reflect(e,t);case'refract':return this.builtins.Refract(e,t);case'reverseBits':return this.builtins.ReverseBits(e,t);case'round':return this.builtins.Round(e,t);case'saturate':return this.builtins.Saturate(e,t);case'sign':return this.builtins.Sign(e,t);case'sin':return this.builtins.Sin(e,t);case'sinh':return this.builtins.Sinh(e,t);case'smoothstep':return this.builtins.SmoothStep(e,t);case'sqrt':return this.builtins.Sqrt(e,t);case'step':return this.builtins.Step(e,t);case'tan':return this.builtins.Tan(e,t);case'tanh':return this.builtins.Tanh(e,t);case'transpose':return this.builtins.Transpose(e,t);case'trunc':return this.builtins.Trunc(e,t);case'dpdx':return this.builtins.Dpdx(e,t);case'dpdxCoarse':return this.builtins.DpdxCoarse(e,t);case'dpdxFine':return this.builtins.DpdxFine(e,t);case'dpdy':return this.builtins.Dpdy(e,t);case'dpdyCoarse':return this.builtins.DpdyCoarse(e,t);case'dpdyFine':return this.builtins.DpdyFine(e,t);case'fwidth':return this.builtins.Fwidth(e,t);case'fwidthCoarse':return this.builtins.FwidthCoarse(e,t);case'fwidthFine':return this.builtins.FwidthFine(e,t);case'textureDimensions':return this.builtins.TextureDimensions(e,t);case'textureGather':return this.builtins.TextureGather(e,t);case'textureGatherCompare':return this.builtins.TextureGatherCompare(e,t);case'textureLoad':return this.builtins.TextureLoad(e,t);case'textureNumLayers':return this.builtins.TextureNumLayers(e,t);case'textureNumLevels':return this.builtins.TextureNumLevels(e,t);case'textureNumSamples':return this.builtins.TextureNumSamples(e,t);case'textureSample':return this.builtins.TextureSample(e,t);case'textureSampleBias':return this.builtins.TextureSampleBias(e,t);case'textureSampleCompare':return this.builtins.TextureSampleCompare(e,t);case'textureSampleCompareLevel':return this.builtins.TextureSampleCompareLevel(e,t);case'textureSampleGrad':return this.builtins.TextureSampleGrad(e,t);case'textureSampleLevel':return this.builtins.TextureSampleLevel(e,t);case'textureSampleBaseClampToEdge':return this.builtins.TextureSampleBaseClampToEdge(e,t);case'textureStore':return this.builtins.TextureStore(e,t);case'atomicLoad':return this.builtins.AtomicLoad(e,t);case'atomicStore':return this.builtins.AtomicStore(e,t);case'atomicAdd':return this.builtins.AtomicAdd(e,t);case'atomicSub':return this.builtins.AtomicSub(e,t);case'atomicMax':return this.builtins.AtomicMax(e,t);case'atomicMin':return this.builtins.AtomicMin(e,t);case'atomicAnd':return this.builtins.AtomicAnd(e,t);case'atomicOr':return this.builtins.AtomicOr(e,t);case'atomicXor':return this.builtins.AtomicXor(e,t);case'atomicExchange':return this.builtins.AtomicExchange(e,t);case'atomicCompareExchangeWeak':return this.builtins.AtomicCompareExchangeWeak(e,t);case'pack4x8snorm':return this.builtins.Pack4x8snorm(e,t);case'pack4x8unorm':return this.builtins.Pack4x8unorm(e,t);case'pack4xI8':return this.builtins.Pack4xI8(e,t);case'pack4xU8':return this.builtins.Pack4xU8(e,t);case'pack4x8Clamp':return this.builtins.Pack4x8Clamp(e,t);case'pack4xU8Clamp':return this.builtins.Pack4xU8Clamp(e,t);case'pack2x16snorm':return this.builtins.Pack2x16snorm(e,t);case'pack2x16unorm':return this.builtins.Pack2x16unorm(e,t);case'pack2x16float':return this.builtins.Pack2x16float(e,t);case'unpack4x8snorm':return this.builtins.Unpack4x8snorm(e,t);case'unpack4x8unorm':return this.builtins.Unpack4x8unorm(e,t);case'unpack4xI8':return this.builtins.Unpack4xI8(e,t);case'unpack4xU8':return this.builtins.Unpack4xU8(e,t);case'unpack2x16snorm':return this.builtins.Unpack2x16snorm(e,t);case'unpack2x16unorm':return this.builtins.Unpack2x16unorm(e,t);case'unpack2x16float':return this.builtins.Unpack2x16float(e,t);case'storageBarrier':return this.builtins.StorageBarrier(e,t);case'textureBarrier':return this.builtins.TextureBarrier(e,t);case'workgroupBarrier':return this.builtins.WorkgroupBarrier(e,t);case'workgroupUniformLoad':return this.builtins.WorkgroupUniformLoad(e,t);case'subgroupAdd':return this.builtins.SubgroupAdd(e,t);case'subgroupExclusiveAdd':return this.builtins.SubgroupExclusiveAdd(e,t);case'subgroupInclusiveAdd':return this.builtins.SubgroupInclusiveAdd(e,t);case'subgroupAll':return this.builtins.SubgroupAll(e,t);case'subgroupAnd':return this.builtins.SubgroupAnd(e,t);case'subgroupAny':return this.builtins.SubgroupAny(e,t);case'subgroupBallot':return this.builtins.SubgroupBallot(e,t);case'subgroupBroadcast':return this.builtins.SubgroupBroadcast(e,t);case'subgroupBroadcastFirst':return this.builtins.SubgroupBroadcastFirst(e,t);case'subgroupElect':return this.builtins.SubgroupElect(e,t);case'subgroupMax':return this.builtins.SubgroupMax(e,t);case'subgroupMin':return this.builtins.SubgroupMin(e,t);case'subgroupMul':return this.builtins.SubgroupMul(e,t);case'subgroupExclusiveMul':return this.builtins.SubgroupExclusiveMul(e,t);case'subgroupInclusiveMul':return this.builtins.SubgroupInclusiveMul(e,t);case'subgroupOr':return this.builtins.SubgroupOr(e,t);case'subgroupShuffle':return this.builtins.SubgroupShuffle(e,t);case'subgroupShuffleDown':return this.builtins.SubgroupShuffleDown(e,t);case'subgroupShuffleUp':return this.builtins.SubgroupShuffleUp(e,t);case'subgroupShuffleXor':return this.builtins.SubgroupShuffleXor(e,t);case'subgroupXor':return this.builtins.SubgroupXor(e,t);case'quadBroadcast':return this.builtins.QuadBroadcast(e,t);case'quadSwapDiagonal':return this.builtins.QuadSwapDiagonal(e,t);case'quadSwapX':return this.builtins.QuadSwapX(e,t);case'quadSwapY':return this.builtins.QuadSwapY(e,t)}const n=t.getFunction(e.name);if(n){const s=t.clone();for(let t=0;t<n.node.args.length;++t){const r=n.node.args[t],a=this.evalExpression(e.args[t],s);s.setVariable(r.name,a,r)}return this._execStatements(n.node.body,s)}return null}_callConstructorValue(e,t){if(!e.args||0===e.args.length)return new Be(0,this.getTypeInfo(e.type));const n=this.evalExpression(e.args[0],t);return n.typeInfo=this.getTypeInfo(e.type),n.getSubData(this,e.postfix,t).clone()}_callConstructorVec(e,t){const n=this.getTypeInfo(e.type),s=e.type.getTypeName(),r=ft[s];if(void 0===r)return console.error(`Invalid vec constructor ${s}. Line ${e.line}`),null;const a=[];if(e instanceof xe)if(e.isVector){const t=e.vectorValue;for(const e of t)a.push(e)}else a.push(e.scalarValue);else if(e.args)for(const n of e.args){const e=this.evalExpression(n,t);if(e instanceof Me){const t=e.data;for(let e=0;e<t.length;++e){let n=t[e];a.push(n)}}else if(e instanceof Be){let t=e.value;a.push(t)}}if(e.type instanceof ce&&null===e.type.format&&(e.type.format=ce.f32),0===a.length){const s=new Array(r).fill(0);return new Me(s,n).getSubData(this,e.postfix,t)}if(1===a.length)for(;a.length<r;)a.push(a[0]);if(a.length<r)return console.error(`Invalid vec constructor. Line ${e.line}`),null;return new Me(a.length>r?a.slice(0,r):a,n).getSubData(this,e.postfix,t)}_callConstructorMatrix(e,t){const n=this.getTypeInfo(e.type),s=e.type.getTypeName(),r=pt[s];if(void 0===r)return console.error(`Invalid matrix constructor ${s}. Line ${e.line}`),null;const i=[];if(e instanceof xe)if(e.isVector){const t=e.vectorValue;for(const e of t)i.push(e)}else i.push(e.scalarValue);else if(e.args)for(const n of e.args){const e=this.evalExpression(n,t);e instanceof Me?i.push(...e.data):e instanceof Be?i.push(e.value):e instanceof Ue&&i.push(...e.data)}if(n instanceof a&&null===n.format&&(n.format=this.getTypeInfo('f32')),0===i.length){const s=new Array(r[2]).fill(0);return new Ue(s,n).getSubData(this,e.postfix,t)}return i.length!==r[2]?(console.error(`Invalid matrix constructor. Line ${e.line}`),null):new Ue(i,n).getSubData(this,e.postfix,t)}}dt._breakObj=new Ne(new e('BREAK',null),null),dt._continueObj=new Ne(new e('CONTINUE',null),null),dt._priority=new Map([['f32',0],['f16',1],['u32',2],['i32',3],['x32',3]]);class mt{constructor(){this.constants=new Map,this.aliases=new Map,this.structs=new Map}}class gt{constructor(){this._tokens=[],this._current=0,this._currentLine=1,this._deferArrayCountEval=[],this._currentLoop=[],this._context=new mt,this._exec=new dt,this._forwardTypeCount=0}parse(e){this._initialize(e),this._deferArrayCountEval.length=0;const t=[];for(;!this._isAtEnd();){const e=this._global_decl_or_directive();if(!e)break;t.push(e)}if(this._deferArrayCountEval.length>0){for(const e of this._deferArrayCountEval){const t=e.arrayType,n=e.countNode;if(n instanceof ge){const e=n.name,s=this._context.constants.get(e);if(s)try{const e=s.constEvaluate(this._exec);t.count=e}catch(e){}}}this._deferArrayCountEval.length=0}if(this._forwardTypeCount>0)for(const e of t)e.search(e=>{e instanceof Ce||e instanceof le?e.type=this._forwardType(e.type):e instanceof ue?e.format=this._forwardType(e.format):e instanceof F||e instanceof U||e instanceof P?e.type=this._forwardType(e.type):e instanceof D?e.returnType=this._forwardType(e.returnType):e instanceof $e&&(e.type=this._forwardType(e.type))});return t}_forwardType(e){if(e instanceof ie){const t=this._getType(e.name);if(t)return t}else e instanceof le?e.type=this._forwardType(e.type):e instanceof ue&&(e.format=this._forwardType(e.format));return e}_initialize(e){if(e)if('string'==typeof e){const t=new Re(e);this._tokens=t.scanTokens()}else this._tokens=e;else this._tokens=[];this._current=0}_updateNode(e,t){return e.line=null!=t?t:this._currentLine,e}_error(e,t){return{token:e,message:t,toString:()=>`${t}`}}_isAtEnd(){return this._current>=this._tokens.length||this._peek().type==He.eof}_match(e){if(e instanceof qe)return!!this._check(e)&&(this._advance(),!0);for(let t=0,n=e.length;t<n;++t){const n=e[t];if(this._check(n))return this._advance(),!0}return!1}_consume(e,t){if(this._check(e))return this._advance();throw this._error(this._peek(),`${t}. Line:${this._currentLine}`)}_check(e){if(this._isAtEnd())return!1;const t=this._peek();if(e instanceof Array){const n=t.type;let s=!1;for(const t of e){if(n===t)return!0;t===He.tokens.name&&(s=!0)}if(s){const e=He.tokens.name.rule.exec(t.lexeme);if(e&&0==e.index&&e[0]==t.lexeme)return!0}return!1}if(t.type===e)return!0;if(e===He.tokens.name){const e=He.tokens.name.rule.exec(t.lexeme);return e&&0==e.index&&e[0]==t.lexeme}return!1}_advance(){var e,t;return this._currentLine=null!==(t=null===(e=this._peek())||void 0===e?void 0:e.line)&&void 0!==t?t:-1,this._isAtEnd()||this._current++,this._previous()}_peek(){return this._tokens[this._current]}_previous(){return this._tokens[this._current-1]}_global_decl_or_directive(){for(;this._match(He.tokens.semicolon)&&!this._isAtEnd(););if(this._match(He.keywords.alias)){const e=this._type_alias();return this._consume(He.tokens.semicolon,'Expected \\';\\''),this._exec.reflection.updateAST([e]),e}if(this._match(He.keywords.diagnostic)){const e=this._diagnostic();return this._consume(He.tokens.semicolon,'Expected \\';\\''),this._exec.reflection.updateAST([e]),e}if(this._match(He.keywords.requires)){const e=this._requires_directive();return this._consume(He.tokens.semicolon,'Expected \\';\\''),this._exec.reflection.updateAST([e]),e}if(this._match(He.keywords.enable)){const e=this._enable_directive();return this._consume(He.tokens.semicolon,'Expected \\';\\''),this._exec.reflection.updateAST([e]),e}const e=this._attribute();if(this._check(He.keywords.var)){const t=this._global_variable_decl();return null!=t&&(t.attributes=e),this._consume(He.tokens.semicolon,'Expected \\';\\'.'),this._exec.reflection.updateAST([t]),t}if(this._check(He.keywords.override)){const t=this._override_variable_decl();return null!=t&&(t.attributes=e),this._consume(He.tokens.semicolon,'Expected \\';\\'.'),this._exec.reflection.updateAST([t]),t}if(this._check(He.keywords.let)){const t=this._global_let_decl();return null!=t&&(t.attributes=e),this._consume(He.tokens.semicolon,'Expected \\';\\'.'),this._exec.reflection.updateAST([t]),t}if(this._check(He.keywords.const)){const t=this._global_const_decl();return null!=t&&(t.attributes=e),this._consume(He.tokens.semicolon,'Expected \\';\\'.'),this._exec.reflection.updateAST([t]),t}if(this._check(He.keywords.struct)){const t=this._struct_decl();return null!=t&&(t.attributes=e),this._exec.reflection.updateAST([t]),t}if(this._check(He.keywords.fn)){const t=this._function_decl();return null!=t&&(t.attributes=e),this._exec.reflection.updateAST([t]),t}return null}_function_decl(){if(!this._match(He.keywords.fn))return null;const e=this._currentLine,t=this._consume(He.tokens.ident,'Expected function name.').toString();this._consume(He.tokens.paren_left,'Expected \\'(\\' for function arguments.');const n=[];if(!this._check(He.tokens.paren_right))do{if(this._check(He.tokens.paren_right))break;const e=this._attribute(),t=this._consume(He.tokens.name,'Expected argument name.').toString();this._consume(He.tokens.colon,'Expected \\':\\' for argument type.');const s=this._attribute(),r=this._type_decl();null!=r&&(r.attributes=s,n.push(this._updateNode(new $e(t,r,e))))}while(this._match(He.tokens.comma));this._consume(He.tokens.paren_right,'Expected \\')\\' after function arguments.');let s=null;if(this._match(He.tokens.arrow)){const e=this._attribute();s=this._type_decl(),null!=s&&(s.attributes=e)}const r=this._compound_statement(),a=this._currentLine;return this._updateNode(new D(t,n,s,r,e,a),e)}_compound_statement(){const e=[];for(this._consume(He.tokens.brace_left,'Expected \\'{\\' for block.');!this._check(He.tokens.brace_right);){const t=this._statement();null!==t&&e.push(t)}return this._consume(He.tokens.brace_right,'Expected \\'}\\' for block.'),e}_statement(){for(;this._match(He.tokens.semicolon)&&!this._isAtEnd(););if(this._check(He.tokens.attr)&&this._attribute(),this._check(He.keywords.if))return this._if_statement();if(this._check(He.keywords.switch))return this._switch_statement();if(this._check(He.keywords.loop))return this._loop_statement();if(this._check(He.keywords.for))return this._for_statement();if(this._check(He.keywords.while))return this._while_statement();if(this._check(He.keywords.continuing))return this._continuing_statement();if(this._check(He.keywords.static_assert))return this._static_assert_statement();if(this._check(He.tokens.brace_left))return this._compound_statement();let e=null;if(this._check(He.keywords.return))e=this._return_statement();else if(this._check([He.keywords.var,He.keywords.let,He.keywords.const]))e=this._variable_statement();else if(this._match(He.keywords.discard))e=this._updateNode(new ne);else if(this._match(He.keywords.break)){const t=this._updateNode(new se);if(this._currentLoop.length>0){const e=this._currentLoop[this._currentLoop.length-1];t.loopId=e.id}e=t,this._check(He.keywords.if)&&(this._advance(),t.condition=this._optional_paren_expression())}else if(this._match(He.keywords.continue)){const t=this._updateNode(new re);if(!(this._currentLoop.length>0))throw this._error(this._peek(),`Continue statement must be inside a loop. Line: ${t.line}`);{const e=this._currentLoop[this._currentLoop.length-1];t.loopId=e.id}e=t}else e=this._increment_decrement_statement()||this._func_call_statement()||this._assignment_statement();return null!=e&&this._consume(He.tokens.semicolon,'Expected \\';\\' after statement.'),e}_static_assert_statement(){if(!this._match(He.keywords.static_assert))return null;const e=this._currentLine,t=this._optional_paren_expression();return this._updateNode(new N(t),e)}_while_statement(){if(!this._match(He.keywords.while))return null;const e=this._updateNode(new V(null,null));return this._currentLoop.push(e),e.condition=this._optional_paren_expression(),this._check(He.tokens.attr)&&this._attribute(),e.body=this._compound_statement(),this._currentLoop.pop(),e}_continuing_statement(){const e=this._currentLoop.length>0?this._currentLoop[this._currentLoop.length-1].id:-1;if(!this._match(He.keywords.continuing))return null;const t=this._currentLine,n=this._compound_statement();return this._updateNode(new O(n,e),t)}_for_statement(){if(!this._match(He.keywords.for))return null;this._consume(He.tokens.paren_left,'Expected \\'(\\'.');const e=this._updateNode(new B(null,null,null,null));return this._currentLoop.push(e),e.init=this._check(He.tokens.semicolon)?null:this._for_init(),this._consume(He.tokens.semicolon,'Expected \\';\\'.'),e.condition=this._check(He.tokens.semicolon)?null:this._short_circuit_or_expression(),this._consume(He.tokens.semicolon,'Expected \\';\\'.'),e.increment=this._check(He.tokens.paren_right)?null:this._for_increment(),this._consume(He.tokens.paren_right,'Expected \\')\\'.'),this._check(He.tokens.attr)&&this._attribute(),e.body=this._compound_statement(),this._currentLoop.pop(),e}_for_init(){return this._variable_statement()||this._func_call_statement()||this._assignment_statement()}_for_increment(){return this._func_call_statement()||this._increment_decrement_statement()||this._assignment_statement()}_variable_statement(){if(this._check(He.keywords.var)){const e=this._variable_decl();if(null===e)throw this._error(this._peek(),'Variable declaration expected.');let t=null;return this._match(He.tokens.equal)&&(t=this._short_circuit_or_expression()),this._updateNode(new F(e.name,e.type,e.storage,e.access,t),e.line)}if(this._match(He.keywords.let)){const e=this._currentLine,t=this._consume(He.tokens.name,'Expected name for let.').toString();let n=null;if(this._match(He.tokens.colon)){const e=this._attribute();n=this._type_decl(),null!=n&&(n.attributes=e)}this._consume(He.tokens.equal,'Expected \\'=\\' for let.');const s=this._short_circuit_or_expression();return this._updateNode(new U(t,n,null,null,s),e)}if(this._match(He.keywords.const)){const e=this._currentLine,t=this._consume(He.tokens.name,'Expected name for const.').toString();let n=null;if(this._match(He.tokens.colon)){const e=this._attribute();n=this._type_decl(),null!=n&&(n.attributes=e)}this._consume(He.tokens.equal,'Expected \\'=\\' for const.');const s=this._short_circuit_or_expression();return null===n&&s instanceof xe&&(n=s.type),this._updateNode(new P(t,n,null,null,s),e)}return null}_increment_decrement_statement(){const e=this._current,t=this._unary_expression();if(null==t)return null;if(!this._check(He.increment_operators))return this._current=e,null;const n=this._consume(He.increment_operators,'Expected increment operator');return this._updateNode(new R(n.type===He.tokens.plus_plus?W.increment:W.decrement,t))}_assignment_statement(){let e=null;const t=this._currentLine;if(this._check(He.tokens.brace_right))return null;let n=this._match(He.tokens.underscore);if(n||(e=this._unary_expression()),!n&&null==e)return null;const s=this._consume(He.assignment_operators,'Expected assignment operator.'),r=this._short_circuit_or_expression();return this._updateNode(new G(q.parse(s.lexeme),e,r),t)}_func_call_statement(){if(!this._check(He.tokens.ident))return null;const e=this._currentLine,t=this._current,n=this._consume(He.tokens.ident,'Expected function name.'),s=this._argument_expression_list();return null===s?(this._current=t,null):this._updateNode(new X(n.lexeme,s),e)}_loop_statement(){if(!this._match(He.keywords.loop))return null;this._check(He.tokens.attr)&&this._attribute(),this._consume(He.tokens.brace_left,'Expected \\'{\\' for loop.');const e=this._updateNode(new j([],null));this._currentLoop.push(e);let t=this._statement();for(;null!==t;){if(Array.isArray(t))for(let n of t)e.body.push(n);else e.body.push(t);if(t instanceof O){e.continuing=t;break}t=this._statement()}return this._currentLoop.pop(),this._consume(He.tokens.brace_right,'Expected \\'}\\' for loop.'),e}_switch_statement(){if(!this._match(He.keywords.switch))return null;const e=this._updateNode(new Z(null,[]));if(this._currentLoop.push(e),e.condition=this._optional_paren_expression(),this._check(He.tokens.attr)&&this._attribute(),this._consume(He.tokens.brace_left,'Expected \\'{\\' for switch.'),e.cases=this._switch_body(),null==e.cases||0==e.cases.length)throw this._error(this._previous(),'Expected \\'case\\' or \\'default\\'.');return this._consume(He.tokens.brace_right,'Expected \\'}\\' for switch.'),this._currentLoop.pop(),e}_switch_body(){const e=[];let t=!1;for(;this._check([He.keywords.default,He.keywords.case]);){if(this._match(He.keywords.case)){const n=this._case_selectors();for(const e of n)if(e instanceof Se){if(t)throw this._error(this._previous(),'Multiple default cases in switch statement.');t=!0;break}this._match(He.tokens.colon),this._check(He.tokens.attr)&&this._attribute(),this._consume(He.tokens.brace_left,'Exected \\'{\\' for switch case.');const s=this._case_body();this._consume(He.tokens.brace_right,'Exected \\'}\\' for switch case.'),e.push(this._updateNode(new Ae(n,s)))}if(this._match(He.keywords.default)){if(t)throw this._error(this._previous(),'Multiple default cases in switch statement.');this._match(He.tokens.colon),this._check(He.tokens.attr)&&this._attribute(),this._consume(He.tokens.brace_left,'Exected \\'{\\' for switch default.');const n=this._case_body();this._consume(He.tokens.brace_right,'Exected \\'}\\' for switch default.'),e.push(this._updateNode(new Ee(n)))}}return e}_case_selectors(){const e=[];for(this._match(He.keywords.default)?e.push(this._updateNode(new Se)):e.push(this._shift_expression());this._match(He.tokens.comma);)this._match(He.keywords.default)?e.push(this._updateNode(new Se)):e.push(this._shift_expression());return e}_case_body(){if(this._match(He.keywords.fallthrough))return this._consume(He.tokens.semicolon,'Expected \\';\\''),[];let e=this._statement();if(null==e)return[];e instanceof Array||(e=[e]);const t=this._case_body();return 0==t.length?e:[...e,t[0]]}_if_statement(){if(!this._match(He.keywords.if))return null;const e=this._currentLine,t=this._optional_paren_expression();this._check(He.tokens.attr)&&this._attribute();const n=this._compound_statement();let s=[];this._match_elseif()&&(this._check(He.tokens.attr)&&this._attribute(),s=this._elseif_statement(s));let r=null;return this._match(He.keywords.else)&&(this._check(He.tokens.attr)&&this._attribute(),r=this._compound_statement()),this._updateNode(new Q(t,n,s,r),e)}_match_elseif(){return this._tokens[this._current].type===He.keywords.else&&this._tokens[this._current+1].type===He.keywords.if&&(this._advance(),this._advance(),!0)}_elseif_statement(e=[]){const t=this._optional_paren_expression(),n=this._compound_statement();return e.push(this._updateNode(new Le(t,n))),this._match_elseif()&&(this._check(He.tokens.attr)&&this._attribute(),this._elseif_statement(e)),e}_return_statement(){if(!this._match(He.keywords.return))return null;const e=this._short_circuit_or_expression();return this._updateNode(new Y(e))}_short_circuit_or_expression(){let e=this._short_circuit_and_expr();for(;this._match(He.tokens.or_or);)e=this._updateNode(new Ie(this._previous().toString(),e,this._short_circuit_and_expr()));return e}_short_circuit_and_expr(){let e=this._inclusive_or_expression();for(;this._match(He.tokens.and_and);)e=this._updateNode(new Ie(this._previous().toString(),e,this._inclusive_or_expression()));return e}_inclusive_or_expression(){let e=this._exclusive_or_expression();for(;this._match(He.tokens.or);)e=this._updateNode(new Ie(this._previous().toString(),e,this._exclusive_or_expression()));return e}_exclusive_or_expression(){let e=this._and_expression();for(;this._match(He.tokens.xor);)e=this._updateNode(new Ie(this._previous().toString(),e,this._and_expression()));return e}_and_expression(){let e=this._equality_expression();for(;this._match(He.tokens.and);)e=this._updateNode(new Ie(this._previous().toString(),e,this._equality_expression()));return e}_equality_expression(){const e=this._relational_expression();return this._match([He.tokens.equal_equal,He.tokens.not_equal])?this._updateNode(new Ie(this._previous().toString(),e,this._relational_expression())):e}_relational_expression(){let e=this._shift_expression();for(;this._match([He.tokens.less_than,He.tokens.greater_than,He.tokens.less_than_equal,He.tokens.greater_than_equal]);)e=this._updateNode(new Ie(this._previous().toString(),e,this._shift_expression()));return e}_shift_expression(){let e=this._additive_expression();for(;this._match([He.tokens.shift_left,He.tokens.shift_right]);)e=this._updateNode(new Ie(this._previous().toString(),e,this._additive_expression()));return e}_additive_expression(){let e=this._multiplicative_expression();for(;this._match([He.tokens.plus,He.tokens.minus]);)e=this._updateNode(new Ie(this._previous().toString(),e,this._multiplicative_expression()));return e}_multiplicative_expression(){let e=this._unary_expression();for(;this._match([He.tokens.star,He.tokens.forward_slash,He.tokens.modulo]);)e=this._updateNode(new Ie(this._previous().toString(),e,this._unary_expression()));return e}_unary_expression(){return this._match([He.tokens.minus,He.tokens.bang,He.tokens.tilde,He.tokens.star,He.tokens.and])?this._updateNode(new ke(this._previous().toString(),this._unary_expression())):this._singular_expression()}_singular_expression(){const e=this._primary_expression(),t=this._postfix_expression();return t&&(e.postfix=t),e}_postfix_expression(){if(this._match(He.tokens.bracket_left)){const e=this._short_circuit_or_expression();this._consume(He.tokens.bracket_right,'Expected \\']\\'.');const t=this._updateNode(new ve(e)),n=this._postfix_expression();return n&&(t.postfix=n),t}if(this._match(He.tokens.period)){const e=this._consume(He.tokens.name,'Expected member name.'),t=this._postfix_expression(),n=this._updateNode(new pe(e.lexeme));return t&&(n.postfix=t),n}return null}_getStruct(e){if(this._context.aliases.has(e)){return this._context.aliases.get(e).type}if(this._context.structs.has(e)){return this._context.structs.get(e)}return null}_getType(e){const t=this._getStruct(e);if(null!==t)return t;switch(e){case'void':return ae.void;case'bool':return ae.bool;case'i32':return ae.i32;case'u32':return ae.u32;case'f32':return ae.f32;case'f16':return ae.f16;case'vec2f':return ce.vec2f;case'vec3f':return ce.vec3f;case'vec4f':return ce.vec4f;case'vec2i':return ce.vec2i;case'vec3i':return ce.vec3i;case'vec4i':return ce.vec4i;case'vec2u':return ce.vec2u;case'vec3u':return ce.vec3u;case'vec4u':return ce.vec4u;case'vec2h':return ce.vec2h;case'vec3h':return ce.vec3h;case'vec4h':return ce.vec4h;case'mat2x2f':return ce.mat2x2f;case'mat2x3f':return ce.mat2x3f;case'mat2x4f':return ce.mat2x4f;case'mat3x2f':return ce.mat3x2f;case'mat3x3f':return ce.mat3x3f;case'mat3x4f':return ce.mat3x4f;case'mat4x2f':return ce.mat4x2f;case'mat4x3f':return ce.mat4x3f;case'mat4x4f':return ce.mat4x4f;case'mat2x2h':return ce.mat2x2h;case'mat2x3h':return ce.mat2x3h;case'mat2x4h':return ce.mat2x4h;case'mat3x2h':return ce.mat3x2h;case'mat3x3h':return ce.mat3x3h;case'mat3x4h':return ce.mat3x4h;case'mat4x2h':return ce.mat4x2h;case'mat4x3h':return ce.mat4x3h;case'mat4x4h':return ce.mat4x4h;case'mat2x2i':return ce.mat2x2i;case'mat2x3i':return ce.mat2x3i;case'mat2x4i':return ce.mat2x4i;case'mat3x2i':return ce.mat3x2i;case'mat3x3i':return ce.mat3x3i;case'mat3x4i':return ce.mat3x4i;case'mat4x2i':return ce.mat4x2i;case'mat4x3i':return ce.mat4x3i;case'mat4x4i':return ce.mat4x4i;case'mat2x2u':return ce.mat2x2u;case'mat2x3u':return ce.mat2x3u;case'mat2x4u':return ce.mat2x4u;case'mat3x2u':return ce.mat3x2u;case'mat3x3u':return ce.mat3x3u;case'mat3x4u':return ce.mat3x4u;case'mat4x2u':return ce.mat4x2u;case'mat4x3u':return ce.mat4x3u;case'mat4x4u':return ce.mat4x4u}return null}_validateTypeRange(e,t){if('i32'===t.name){if(e<-2147483648||e>2147483647)throw this._error(this._previous(),`Value out of range for i32: ${e}. Line: ${this._currentLine}.`)}else if('u32'===t.name&&(e<0||e>4294967295))throw this._error(this._previous(),`Value out of range for u32: ${e}. Line: ${this._currentLine}.`)}_primary_expression(){if(this._match(He.tokens.ident)){const e=this._previous().toString();if(this._check(He.tokens.paren_left)){const t=this._argument_expression_list(),n=this._getType(e);return null!==n?this._updateNode(new de(n,t)):this._updateNode(new me(e,t))}if(this._context.constants.has(e)){const t=this._context.constants.get(e);return this._updateNode(new _e(e,t.value))}return this._updateNode(new ge(e))}if(this._match(He.tokens.int_literal)){const e=this._previous().toString();let t=e.endsWith('i')||e.endsWith('i')?ae.i32:e.endsWith('u')||e.endsWith('U')?ae.u32:ae.x32;const n=parseInt(e);return this._validateTypeRange(n,t),this._updateNode(new xe(new Be(n,this._exec.getTypeInfo(t)),t))}if(this._match(He.tokens.uint_literal)){const e=parseInt(this._previous().toString());return this._validateTypeRange(e,ae.u32),this._updateNode(new xe(new Be(e,this._exec.getTypeInfo(ae.u32)),ae.u32))}if(this._match([He.tokens.decimal_float_literal,He.tokens.hex_float_literal])){let e=this._previous().toString(),t=e.endsWith('h');t&&(e=e.substring(0,e.length-1));const n=parseFloat(e);this._validateTypeRange(n,t?ae.f16:ae.f32);const s=t?ae.f16:ae.f32;return this._updateNode(new xe(new Be(n,this._exec.getTypeInfo(s)),s))}if(this._match([He.keywords.true,He.keywords.false])){let e=this._previous().toString()===He.keywords.true.rule;return this._updateNode(new xe(new Be(e?1:0,this._exec.getTypeInfo(ae.bool)),ae.bool))}if(this._check(He.tokens.paren_left))return this._paren_expression();if(this._match(He.keywords.bitcast)){this._consume(He.tokens.less_than,'Expected \\'<\\'.');const e=this._type_decl();this._consume(He.tokens.greater_than,'Expected \\'>\\'.');const t=this._paren_expression();return this._updateNode(new ye(e,t))}const e=this._type_decl(),t=this._argument_expression_list();return this._updateNode(new de(e,t))}_argument_expression_list(){if(!this._match(He.tokens.paren_left))return null;const e=[];do{if(this._check(He.tokens.paren_right))break;const t=this._short_circuit_or_expression();e.push(t)}while(this._match(He.tokens.comma));return this._consume(He.tokens.paren_right,'Expected \\')\\' for agument list'),e}_optional_paren_expression(){this._match(He.tokens.paren_left);const e=this._short_circuit_or_expression();return this._match(He.tokens.paren_right),e}_paren_expression(){this._consume(He.tokens.paren_left,'Expected \\'(\\'.');const e=this._short_circuit_or_expression();return this._consume(He.tokens.paren_right,'Expected \\')\\'.'),e}_struct_decl(){if(!this._match(He.keywords.struct))return null;const e=this._currentLine,t=this._consume(He.tokens.ident,'Expected name for struct.').toString();this._consume(He.tokens.brace_left,'Expected \\'{\\' for struct body.');const n=[];for(;!this._check(He.tokens.brace_right);){const e=this._attribute(),t=this._consume(He.tokens.name,'Expected variable name.').toString();this._consume(He.tokens.colon,'Expected \\':\\' for struct member type.');const s=this._attribute(),r=this._type_decl();null!=r&&(r.attributes=s),this._check(He.tokens.brace_right)?this._match(He.tokens.comma):this._consume(He.tokens.comma,'Expected \\',\\' for struct member.'),n.push(this._updateNode(new Ce(t,r,e)))}this._consume(He.tokens.brace_right,'Expected \\'}\\' after struct body.');const s=this._currentLine,r=this._updateNode(new oe(t,n,e,s),e);return this._context.structs.set(t,r),r}_global_variable_decl(){const e=this._variable_decl();if(!e)return null;if(this._match(He.tokens.equal)){const t=this._const_expression();e.value=t}if(null!==e.type&&e.value instanceof xe){if('x32'!==e.value.type.name){if(e.type.getTypeName()!==e.value.type.getTypeName())throw this._error(this._peek(),`Invalid cast from ${e.value.type.name} to ${e.type.name}. Line:${this._currentLine}`)}e.value.isScalar&&this._validateTypeRange(e.value.scalarValue,e.type),e.value.type=e.type}else null===e.type&&e.value instanceof xe&&(e.type='x32'===e.value.type.name?ae.i32:e.value.type,e.value.isScalar&&this._validateTypeRange(e.value.scalarValue,e.type));return e}_override_variable_decl(){const e=this._override_decl();return e&&this._match(He.tokens.equal)&&(e.value=this._const_expression()),e}_global_const_decl(){var e;if(!this._match(He.keywords.const))return null;const t=this._consume(He.tokens.name,'Expected variable name'),n=this._currentLine;let s=null;if(this._match(He.tokens.colon)){const e=this._attribute();s=this._type_decl(),null!=s&&(s.attributes=e)}let r=null;this._consume(He.tokens.equal,'const declarations require an assignment');const i=this._short_circuit_or_expression();try{let e=[ae.f32],n=i.constEvaluate(this._exec,e);n instanceof Be&&this._validateTypeRange(n.value,e[0]),e[0]instanceof ce&&null===e[0].format&&n.typeInfo instanceof a&&null!==n.typeInfo.format&&('f16'===n.typeInfo.format.name?e[0].format=ae.f16:'f32'===n.typeInfo.format.name?e[0].format=ae.f32:'i32'===n.typeInfo.format.name?e[0].format=ae.i32:'u32'===n.typeInfo.format.name?e[0].format=ae.u32:'bool'===n.typeInfo.format.name?e[0].format=ae.bool:console.error(`TODO: impelement template format type ${n.typeInfo.format.name}`)),r=this._updateNode(new xe(n,e[0])),this._exec.context.setVariable(t.toString(),n)}catch(e){r=i}if(null!==s&&r instanceof xe){if('x32'!==r.type.name){if(s.getTypeName()!==r.type.getTypeName())throw this._error(this._peek(),`Invalid cast from ${r.type.name} to ${s.name}. Line:${this._currentLine}`)}r.type=s,r.isScalar&&this._validateTypeRange(r.scalarValue,r.type)}else null===s&&r instanceof xe&&(s=null!==(e=null==r?void 0:r.type)&&void 0!==e?e:ae.f32,s===ae.x32&&(s=ae.i32));const o=this._updateNode(new P(t.toString(),s,'','',r),n);return this._context.constants.set(o.name,o),o}_global_let_decl(){if(!this._match(He.keywords.let))return null;const e=this._currentLine,t=this._consume(He.tokens.name,'Expected variable name');let n=null;if(this._match(He.tokens.colon)){const e=this._attribute();n=this._type_decl(),null!=n&&(n.attributes=e)}let s=null;if(this._match(He.tokens.equal)&&(s=this._const_expression()),null!==n&&s instanceof xe){if('x32'!==s.type.name){if(n.getTypeName()!==s.type.getTypeName())throw this._error(this._peek(),`Invalid cast from ${s.type.name} to ${n.name}. Line:${this._currentLine}`)}s.type=n}else null===n&&s instanceof xe&&(n='x32'===s.type.name?ae.i32:s.type);return s instanceof xe&&s.isScalar&&this._validateTypeRange(s.scalarValue,n),this._updateNode(new U(t.toString(),n,'','',s),e)}_const_expression(){return this._short_circuit_or_expression()}_variable_decl(){if(!this._match(He.keywords.var))return null;const e=this._currentLine;let t='',n='';this._match(He.tokens.less_than)&&(t=this._consume(He.storage_class,'Expected storage_class.').toString(),this._match(He.tokens.comma)&&(n=this._consume(He.access_mode,'Expected access_mode.').toString()),this._consume(He.tokens.greater_than,'Expected \\'>\\'.'));const s=this._consume(He.tokens.name,'Expected variable name');let r=null;if(this._match(He.tokens.colon)){const e=this._attribute();r=this._type_decl(),null!=r&&(r.attributes=e)}return this._updateNode(new F(s.toString(),r,t,n,null),e)}_override_decl(){if(!this._match(He.keywords.override))return null;const e=this._consume(He.tokens.name,'Expected variable name');let t=null;if(this._match(He.tokens.colon)){const e=this._attribute();t=this._type_decl(),null!=t&&(t.attributes=e)}return this._updateNode(new M(e.toString(),t,null))}_diagnostic(){this._consume(He.tokens.paren_left,'Expected \\'(\\'');const e=this._consume(He.tokens.ident,'Expected severity control name.');this._consume(He.tokens.comma,'Expected \\',\\'');let t=this._consume(He.tokens.ident,'Expected diagnostic rule name.').toString();if(this._match(He.tokens.period)){t+=`.${this._consume(He.tokens.ident,'Expected diagnostic message.').toString()}`}return this._consume(He.tokens.paren_right,'Expected \\')\\''),this._updateNode(new ee(e.toString(),t))}_enable_directive(){const e=this._consume(He.tokens.ident,'identity expected.');return this._updateNode(new K(e.toString()))}_requires_directive(){const e=[this._consume(He.tokens.ident,'identity expected.').toString()];for(;this._match(He.tokens.comma);){const t=this._consume(He.tokens.ident,'identity expected.');e.push(t.toString())}return this._updateNode(new J(e))}_type_alias(){const e=this._consume(He.tokens.ident,'identity expected.');this._consume(He.tokens.equal,'Expected \\'=\\' for type alias.');let t=this._type_decl();if(null===t)throw this._error(this._peek(),'Expected Type for Alias.');this._context.aliases.has(t.name)&&(t=this._context.aliases.get(t.name).type);const n=this._updateNode(new te(e.toString(),t));return this._context.aliases.set(n.name,n),n}_type_decl(){if(this._check([He.tokens.ident,...He.texel_format,He.keywords.bool,He.keywords.f32,He.keywords.i32,He.keywords.u32])){const e=this._advance().toString();if(this._context.structs.has(e))return this._context.structs.get(e);if(this._context.aliases.has(e))return this._context.aliases.get(e).type;if(!this._getType(e)){const t=this._updateNode(new ie(e));return this._forwardTypeCount++,t}return this._updateNode(new ae(e))}let e=this._texture_sampler_types();if(e)return e;if(this._check(He.template_types)){let e=this._advance().toString(),t=null,n=null;this._match(He.tokens.less_than)&&(t=this._type_decl(),n=null,this._match(He.tokens.comma)&&(n=this._consume(He.access_mode,'Expected access_mode for pointer').toString()),this._consume(He.tokens.greater_than,'Expected \\'>\\' for type.'));return this._updateNode(new ce(e,t,n))}if(this._match(He.keywords.ptr)){let e=this._previous().toString();this._consume(He.tokens.less_than,'Expected \\'<\\' for pointer.');const t=this._consume(He.storage_class,'Expected storage_class for pointer');this._consume(He.tokens.comma,'Expected \\',\\' for pointer.');const n=this._type_decl();let s=null;this._match(He.tokens.comma)&&(s=this._consume(He.access_mode,'Expected access_mode for pointer').toString()),this._consume(He.tokens.greater_than,'Expected \\'>\\' for pointer.');return this._updateNode(new le(e,t.toString(),n,s))}const t=this._attribute();if(this._match(He.keywords.array)){let e=null,n=-1;const s=this._previous();let r=null;if(this._match(He.tokens.less_than)){e=this._type_decl(),this._context.aliases.has(e.name)&&(e=this._context.aliases.get(e.name).type);let t='';if(this._match(He.tokens.comma)){r=this._shift_expression();try{t=r.constEvaluate(this._exec).toString(),r=null}catch(e){t='1'}}this._consume(He.tokens.greater_than,'Expected \\'>\\' for array.'),n=t?parseInt(t):0}const a=this._updateNode(new ue(s.toString(),t,e,n));return r&&this._deferArrayCountEval.push({arrayType:a,countNode:r}),a}return null}_texture_sampler_types(){if(this._match(He.sampler_type))return this._updateNode(new he(this._previous().toString(),null,null));if(this._match(He.depth_texture_type))return this._updateNode(new he(this._previous().toString(),null,null));if(this._match(He.sampled_texture_type)||this._match(He.multisampled_texture_type)){const e=this._previous();this._consume(He.tokens.less_than,'Expected \\'<\\' for sampler type.');const t=this._type_decl();return this._consume(He.tokens.greater_than,'Expected \\'>\\' for sampler type.'),this._updateNode(new he(e.toString(),t,null))}if(this._match(He.storage_texture_type)){const e=this._previous();this._consume(He.tokens.less_than,'Expected \\'<\\' for sampler type.');const t=this._consume(He.texel_format,'Invalid texel format.').toString();this._consume(He.tokens.comma,'Expected \\',\\' after texel format.');const n=this._consume(He.access_mode,'Expected access mode for storage texture type.').toString();return this._consume(He.tokens.greater_than,'Expected \\'>\\' for sampler type.'),this._updateNode(new he(e.toString(),t,n))}return null}_attribute(){let e=[];for(;this._match(He.tokens.attr);){const t=this._consume(He.attribute_name,'Expected attribute name'),n=this._updateNode(new De(t.toString(),null));if(this._match(He.tokens.paren_left)){if(n.value=this._consume(He.literal_or_ident,'Expected attribute value').toString(),this._check(He.tokens.comma)){this._advance();do{const e=this._consume(He.literal_or_ident,'Expected attribute value').toString();n.value instanceof Array||(n.value=[n.value]),n.value.push(e)}while(this._match(He.tokens.comma))}this._consume(He.tokens.paren_right,'Expected \\')\\'')}e.push(n)}return 0==e.length?null:e}}class _t extends at{constructor(e){super(),e&&this.update(e)}update(e){const t=(new gt).parse(e);this.updateAST(t)}}class xt{get line(){return-1}}class yt extends xt{constructor(e){super(),this.node=e}get line(){return this.node.line}}class bt extends xt{constructor(e,t){super(),this.node=e,this.statement=t}get line(){return this.statement.line}}class vt extends xt{constructor(e){super(),this.id=e}}class wt extends xt{constructor(e){super(),this.id=e}}class kt extends xt{constructor(e,t){super(),this.id=e,this.node=t}get line(){return this.node.line}}class It extends xt{constructor(e,t,n){super(),this.id=e,this.condition=t,this.node=n}get line(){return this.node.line}}class Tt extends xt{constructor(e,t,n){super(),this.lineNo=-1,this.condition=e,this.position=t,this.lineNo=n}get line(){var e,t;return null!==(t=null===(e=this.condition)||void 0===e?void 0:e.line)&&void 0!==t?t:this.lineNo}}class St extends xt{constructor(e){super(),this.statements=[],this.statements=e}get line(){return this.statements.length>0?this.statements[0].line:-1}}class At{constructor(e,t){this.parent=null,this.commands=[],this.current=0,this.parentCallExpr=null,this.context=e,this.parent=null!=t?t:null}get isAtEnd(){return this.current>=this.commands.length}getNextCommand(){if(this.current>=this.commands.length)return null;const e=this.commands[this.current];return this.current++,e}getCurrentCommand(){return this.current>=this.commands.length?null:this.commands[this.current]}}class Et{constructor(){this.states=[]}get isEmpty(){return 0==this.states.length}get last(){var e;return null!==(e=this.states[this.states.length-1])&&void 0!==e?e:null}pop(){this.states.pop()}}class $t{constructor(e,t){this._runTimer=null,this.breakpoints=new Set,this.runStateCallback=null,this._code=e;const n=(new gt).parse(e);this._exec=new dt(n),this.runStateCallback=null!=t?t:null}getVariableValue(e){var t,n;const s=null!==(n=null===(t=this.context.getVariable(e))||void 0===t?void 0:t.value)&&void 0!==n?n:null;return null===s?null:s instanceof Be?s.value:s instanceof Me||s instanceof Ue?Array.from(s.data):(console.error(`Unsupported return variable type ${s.typeInfo.name}`),null)}reset(){this._exec=new dt(this._exec.ast),this.startDebug()}startDebug(){this._execStack=new Et;const e=this._createState(this._exec.ast,this._exec.context);this._execStack.states.push(e)}get context(){const e=this.currentState;return null===e?this._exec.context:e.context}get currentState(){for(;;){if(this._execStack.isEmpty)return null;let e=this._execStack.last;if(null===e)return null;if(e.isAtEnd){if(this._execStack.pop(),this._execStack.isEmpty)return null;e=this._execStack.last}return e}}get currentCommand(){for(;;){if(this._execStack.isEmpty)return null;let e=this._execStack.last;if(null===e)return null;if(e.isAtEnd){if(this._execStack.pop(),this._execStack.isEmpty)return null;e=this._execStack.last}const t=e.getCurrentCommand();if(null!==t)return t}}toggleBreakpoint(e){this.breakpoints.has(e)?this.breakpoints.delete(e):this.breakpoints.add(e)}clearBreakpoints(){this.breakpoints.clear()}get isRunning(){return null!==this._runTimer}run(){this.isRunning||(this._runTimer=setInterval(()=>{const e=this.currentCommand;if(e&&this.breakpoints.has(e.line))return clearInterval(this._runTimer),this._runTimer=null,void(null!==this.runStateCallback&&this.runStateCallback());this.stepNext(!0)||(clearInterval(this._runTimer),this._runTimer=null,null!==this.runStateCallback&&this.runStateCallback())},0),null!==this.runStateCallback&&this.runStateCallback())}pause(){null!==this._runTimer&&(clearInterval(this._runTimer),this._runTimer=null,null!==this.runStateCallback&&this.runStateCallback())}_setOverrides(e,t){for(const n in e){const s=e[n],r=this._exec.reflection.getOverrideInfo(n);null!==r?(null===r.type&&(r.type=this._exec.getTypeInfo('u32')),'u32'===r.type.name||'i32'===r.type.name||'f32'===r.type.name||'f16'===r.type.name?t.setVariable(n,new Be(s,r.type)):'bool'===r.type.name?t.setVariable(n,new Be(s?1:0,r.type)):'vec2'===r.type.name||'vec3'===r.type.name||'vec4'===r.type.name||'vec2f'===r.type.name||'vec3f'===r.type.name||'vec4f'===r.type.name||'vec2i'===r.type.name||'vec3i'===r.type.name||'vec4i'===r.type.name||'vec2u'===r.type.name||'vec3u'===r.type.name||'vec4u'===r.type.name||'vec2h'===r.type.name||'vec3h'===r.type.name||'vec4h'===r.type.name?t.setVariable(n,new Me(s,r.type)):console.error(`Invalid constant type for ${n}`)):console.error(`Override ${n} does not exist in the shader.`)}}debugWorkgroup(e,t,n,s,r){this._execStack=new Et;const a=this._exec.context;a.currentFunctionName=e,this._dispatchId=t,(r=null!=r?r:{}).constants&&this._setOverrides(r.constants,a),this._exec._execStatements(this._exec.ast,a);const i=a.getFunction(e);if(!i)return console.error(`Function ${e} not found`),!1;const o=this._exec.reflection.getFunctionInfo(e);if('number'==typeof n)n=[n,1,1];else{if(0===n.length)return console.error('Invalid dispatch count'),!1;1===n.length?n=[n[0],1,1]:2===n.length?n=[n[0],n[1],1]:n.length>3&&(n=[n[0],n[1],n[2]])}const c=n[2],l=n[1],u=n[0],h=this._exec.typeInfo.vec3u;a.setVariable('@num_workgroups',new Me(n,h));for(const e in s)for(const t in s[e]){const n=s[e][t];a.variables.forEach(s=>{var r;const a=s.node;if(null==a?void 0:a.attributes){let i=null,c=null;for(const e of a.attributes)'binding'===e.name?i=e.value:'group'===e.name&&(c=e.value);if(t==i&&e==c){let i=!1;for(const n of o.resources)if(n.name===s.name&&n.group===parseInt(e)&&n.binding===parseInt(t)){i=!0;break}if(i)if(void 0!==n.texture&&void 0!==n.descriptor){const e=new We(n.texture,this._exec.getTypeInfo(a.type),n.descriptor,null!==(r=n.texture.view)&&void 0!==r?r:null);s.value=e}else void 0!==n.uniform?s.value=new Pe(n.uniform,this._exec.getTypeInfo(a.type)):s.value=new Pe(n,this._exec.getTypeInfo(a.type))}}})}let f=!1;for(let e=0;e<c&&!f;++e)for(let t=0;t<l&&!f;++t)for(let n=0;n<u&&!f;++n)if(a.setVariable('@workgroup_id',new Me([n,t,e],h)),this._dispatchWorkgroup(i,[n,t,e],a)){f=!0;break}return f}_shouldExecuteNextCommand(){const e=this.currentCommand;if(null===e)return!1;if(e instanceof Tt){if(null===e.condition)return!0}else if(e instanceof vt||e instanceof wt)return!0;return!1}stepInto(){this.isRunning||this.stepNext(!0)}stepOver(){this.isRunning||this.stepNext(!1)}stepOut(){const e=this.currentState;if(null===e)return;const t=e.parent;this.isRunning&&(clearInterval(this._runTimer),this._runTimer=null),this._runTimer=setInterval(()=>{const e=this.currentCommand;if(e&&this.breakpoints.has(e.line))return clearInterval(this._runTimer),this._runTimer=null,void(null!==this.runStateCallback&&this.runStateCallback());this.stepNext(!0)||(clearInterval(this._runTimer),this._runTimer=null,null!==this.runStateCallback&&this.runStateCallback());this.currentState===t&&(clearInterval(this._runTimer),this._runTimer=null,null!==this.runStateCallback&&this.runStateCallback())},0),null!==this.runStateCallback&&this.runStateCallback()}stepNext(e=!0){if(!this._execStack){this._execStack=new Et;const e=this._createState(this._exec.ast,this._exec.context);this._execStack.states.push(e)}for(;;){if(this._execStack.isEmpty)return!1;let t=this._execStack.last;if(null===t)return!1;if(t.isAtEnd){if(this._execStack.pop(),this._execStack.isEmpty)return!1;t=this._execStack.last}const n=t.getNextCommand();if(null!==n){if(e&&n instanceof bt){const e=n.node,s=t.context.getFunction(e.name);if(!s)continue;const r=this._createState(s.node.body,t.context.clone(),t);for(let t=0;t<s.node.args.length;++t){const n=s.node.args[t],a=this._exec.evalExpression(e.args[t],r.context);r.context.createVariable(n.name,a,n)}if(r.parentCallExpr=e,this._execStack.states.push(r),r.context.currentFunctionName=s.name,this._shouldExecuteNextCommand())continue;return!0}if(n instanceof yt){const s=n.node;if(e&&s instanceof X){const e=t.context.getFunction(s.name);if(e){const n=this._createState(e.node.body,t.context.clone(),t);for(let t=0;t<e.node.args.length;++t){const r=e.node.args[t],a=this._exec.evalExpression(s.args[t],n.context);n.context.createVariable(r.name,a,r)}if(this._execStack.states.push(n),n.context.currentFunctionName=e.name,this._shouldExecuteNextCommand())continue;return!0}}const r=this._exec.execStatement(s,t.context);if(null!=r&&!(r instanceof Ve)){let e=t;for(;e;){if(e.parentCallExpr){e.parentCallExpr.setCachedReturnValue(r);break}e=e.parent}if(null===e&&console.error('Could not find CallExpr to store return value in'),this._shouldExecuteNextCommand())continue;return!0}}else{if(n instanceof vt)continue;if(n instanceof wt)continue;if(n instanceof kt){const e=n.id;for(;!this._execStack.isEmpty;){t=this._execStack.last;for(let n=t.commands.length-1;n>=0;--n){const s=t.commands[n];if(s instanceof vt&&s.id===e)return t.current=n+1,!0}this._execStack.pop()}return console.error('Continue statement used outside of a loop'),!1}if(n instanceof It){const e=n.id;if(n.condition){const e=this._exec.evalExpression(n.condition,t.context);if(!(e instanceof Be))return console.error('Condition must be a scalar'),!1;if(!e.value){if(this._shouldExecuteNextCommand())continue;return!0}}for(;!this._execStack.isEmpty;){t=this._execStack.last;for(let n=t.commands.length-1;n>=0;--n){const s=t.commands[n];if(s instanceof wt&&s.id===e)return t.current=n+1,!0}this._execStack.pop()}return console.error('Break statement used outside of a loop'),!1}if(n instanceof Tt){if(n.condition){const e=this._exec.evalExpression(n.condition,t.context);if(!(e instanceof Be))return console.error('Condition must be a scalar'),!1;if(e.value){if(this._shouldExecuteNextCommand())continue;return!0}}if(t.current=n.position,this._shouldExecuteNextCommand())continue;return!0}if(n instanceof St){const e=this._createState(n.statements,t.context.clone(),t);this._execStack.states.push(e);continue}}if(t.isAtEnd&&(this._execStack.pop(),this._execStack.isEmpty))return!1;if(!this._shouldExecuteNextCommand())return!0}}}_dispatchWorkgroup(e,t,n){const s=[1,1,1];for(const t of e.node.attributes)if('workgroup_size'===t.name)if(Array.isArray(t.value)){if(t.value.length>0){const e=n.getVariableValue(t.value[0]);s[0]=e instanceof Be?e.value:parseInt(t.value[0])}if(t.value.length>1){const e=n.getVariableValue(t.value[1]);s[1]=e instanceof Be?e.value:parseInt(t.value[1])}if(t.value.length>2){const e=n.getVariableValue(t.value[2]);s[2]=e instanceof Be?e.value:parseInt(t.value[2])}}else{const e=n.getVariableValue(t.value);e instanceof Be?s[0]=e.value:e instanceof Me?(s[0]=e.data[0],s[1]=e.data.length>1?e.data[1]:1,s[2]=e.data.length>2?e.data[2]:1):s[0]=parseInt(t.value)}const r=this._exec.typeInfo.vec3u,a=this._exec.typeInfo.u32;n.setVariable('@workgroup_size',new Me(s,r));const i=s[0],o=s[1],c=s[2];let l=!1;for(let e=0,u=0;e<c&&!l;++e)for(let c=0;c<o&&!l;++c)for(let o=0;o<i&&!l;++o,++u){const i=[o,c,e],h=[o+t[0]*s[0],c+t[1]*s[1],e+t[2]*s[2]];if(n.setVariable('@local_invocation_id',new Me(i,r)),n.setVariable('@global_invocation_id',new Me(h,r)),n.setVariable('@local_invocation_index',new Be(u,a)),h[0]===this._dispatchId[0]&&h[1]===this._dispatchId[1]&&h[2]===this._dispatchId[2]){l=!0;break}}return l&&this._dispatchExec(e,n),l}_dispatchExec(e,t){for(const n of e.node.args)for(const e of n.attributes)if('builtin'===e.name){const s=`@${e.value}`,r=t.getVariable(s);null!==r&&t.variables.set(n.name,r)}const n=this._createState(e.node.body,t);this._execStack.states.push(n)}_createState(e,t,n){const s=new At(t,null!=n?n:null);for(const t of e)if(t instanceof U||t instanceof F||t instanceof P||t instanceof G){const e=[];this._collectFunctionCalls(t.value,e);for(const n of e)s.commands.push(new bt(n,t));s.commands.push(new yt(t))}else if(t instanceof X){const e=[];for(const n of t.args)this._collectFunctionCalls(n,e);for(const n of e)s.commands.push(new bt(n,t));s.commands.push(new yt(t))}else if(t instanceof Y){const e=[];this._collectFunctionCalls(t.value,e);for(const n of e)s.commands.push(new bt(n,t));s.commands.push(new yt(t))}else if(t instanceof R)s.commands.push(new yt(t));else{if(t instanceof D){const e=new ct(t);s.context.functions.set(t.name,e);continue}if(t instanceof Q){const e=[];this._collectFunctionCalls(t.condition,e);for(const n of e)s.commands.push(new bt(n,t));let n=new Tt(t.condition,0,t.line);s.commands.push(n),t.body.length>0&&s.commands.push(new St(t.body));const r=new Tt(null,0,t.line);s.commands.push(r);for(const e of t.elseif){n.position=s.commands.length;const a=[];this._collectFunctionCalls(e.condition,a);for(const e of a)s.commands.push(new bt(e,t));n=new Tt(e.condition,0,e.line),s.commands.push(n),e.body.length>0&&s.commands.push(new St(e.body)),s.commands.push(r)}n.position=s.commands.length,t.else&&s.commands.push(new St(t.else)),r.position=s.commands.length}else if(t instanceof Z){const e=[];this._collectFunctionCalls(t.condition,e);for(const n of e)s.commands.push(new bt(n,t));let n=null;for(const e of t.cases){if(e instanceof Ee){n=e;break}if(e instanceof Ae)for(const t of e.selectors)if(t instanceof Se){n=e;break}}const r=[];for(const e of t.cases){if(e===n)continue;if(!(e instanceof Ae))continue;let a=null;for(const n of e.selectors){let e=new Ie('==',t.condition,n);a&&(e=new Ie('||',a,e)),a=e}const i=new Tt(a,0,e.line);s.commands.push(i),e.body.length>0&&s.commands.push(new St(e.body));const o=new Tt(null,0,e.line);r.push(o),s.commands.push(o),i.position=s.commands.length}n&&s.commands.push(new St(n.body)),s.commands.push(new wt(t.id));const a=s.commands.length;for(let e=0;e<r.length;++e)r[e].position=a}else if(t instanceof V){const e=[];s.commands.push(new vt(t.id)),this._collectFunctionCalls(t.condition,e);for(const n of e)s.commands.push(new bt(n,t));const n=new Tt(t.condition,0,t.line);s.commands.push(n);let r=t.line;t.body.length>0&&(s.commands.push(new St(t.body)),r=t.body[t.body.length-1].line),s.commands.push(new Tt(t.condition,0,r)),s.commands.push(new wt(t.id)),n.position=s.commands.length}else if(t instanceof B){t.init&&s.commands.push(new yt(t.init));let e=s.commands.length;null===t.increment&&s.commands.push(new vt(t.id));let n=null;if(t.condition){const e=[];this._collectFunctionCalls(t.condition,e);for(const n of e)s.commands.push(new bt(n,t));n=new Tt(t.condition,0,t.line),s.commands.push(n)}let r=t.line;t.body.length>0&&(s.commands.push(new St(t.body)),r=t.body[t.body.length-1].line),t.increment&&(s.commands.push(new vt(t.id)),s.commands.push(new yt(t.increment))),s.commands.push(new Tt(null,e,r)),s.commands.push(new wt(t.id)),n.position=s.commands.length}else if(t instanceof j){let e=s.commands.length;t.continuing||s.commands.push(new vt(t.id));let n=t.line;t.body.length>0&&(s.commands.push(new St(t.body)),n=t.body[t.body.length-1].line),s.commands.push(new Tt(null,e,n)),s.commands.push(new wt(t.id))}else t instanceof O?(s.commands.push(new vt(t.loopId)),s.commands.push(new St(t.body))):t instanceof re?s.commands.push(new kt(t.loopId,t)):t instanceof se?s.commands.push(new It(t.loopId,t.condition,t)):t instanceof N?s.commands.push(new yt(t)):t instanceof oe||console.error(`TODO: statement type ${t.constructor.name}`)}return s}_collectFunctionCalls(e,t){if(e instanceof me){if(e.args)for(const n of e.args)this._collectFunctionCalls(n,t);e.isBuiltin||t.push(e)}else if(e instanceof Ie)this._collectFunctionCalls(e.left,t),this._collectFunctionCalls(e.right,t);else if(e instanceof ke)this._collectFunctionCalls(e.right,t);else if(e instanceof de){if(e.args)for(const n of e.args)this._collectFunctionCalls(n,t)}else e instanceof ye?this._collectFunctionCalls(e.value,t):e instanceof ve?this._collectFunctionCalls(e.index,t):xe||console.error(`TODO: expression type ${e.constructor.name}`)}}export{te as Alias,c as AliasInfo,$e as Argument,f as ArgumentInfo,ve as ArrayIndex,s as ArrayInfo,ue as ArrayType,G as Assign,q as AssignOperator,De as Attribute,Ie as BinaryOperator,ye as BitcastExpr,se as Break,X as Call,me as CallExpr,Ae as Case,P as Const,_e as ConstExpr,re as Continue,O as Continuing,de as CreateExpr,Ne as Data,Ee as Default,Se as DefaultSelector,ee as Diagnostic,ne as Discard,Le as ElseIf,K as Enable,d as EntryFunctions,fe as Expression,B as For,ie as ForwardType,D as Function,p as FunctionInfo,Q as If,R as Increment,W as IncrementOperator,l as InputInfo,U as Let,xe as LiteralExpr,j as Loop,Ue as MatrixData,Ce as Member,t as MemberInfo,A as Node,we as Operator,u as OutputInfo,M as Override,h as OverrideInfo,Oe as PointerData,r as PointerInfo,le as PointerType,J as Requires,i as ResourceType,Y as Return,he as SamplerType,Be as ScalarData,C as Statement,N as StaticAssert,pe as StringExpr,oe as Struct,n as StructInfo,Z as Switch,Te as SwitchCase,a as TemplateInfo,ce as TemplateType,We as TextureData,ze as Token,z as TokenClass,qe as TokenType,He as TokenTypes,ae as Type,e as TypeInfo,be as TypecastExpr,Pe as TypedData,ke as UnaryOperator,F as Var,ge as VariableExpr,o as VariableInfo,Me as VectorData,Ve as VoidData,$t as WgslDebug,dt as WgslExec,gt as WgslParser,_t as WgslReflect,Re as WgslScanner,V as While,$ as _BlockEnd,E as _BlockStart};\n//# sourceMappingURL=wgsl_reflect.module.js.map\n","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { log } from '@luma.gl/core';\nimport { WgslReflect } from 'wgsl_reflect';\n/**\n * Parse a ShaderLayout from WGSL shader source code.\n * @param source WGSL source code (can contain both @vertex and @fragment entry points)\n * @returns\n */\nexport function getShaderLayoutFromWGSL(source) {\n const shaderLayout = { attributes: [], bindings: [] };\n let parsedWGSL;\n try {\n parsedWGSL = parseWGSL(source);\n }\n catch (error) {\n log.error(error.message)();\n return shaderLayout;\n }\n for (const uniform of parsedWGSL.uniforms) {\n const members = [];\n // @ts-expect-error\n for (const attribute of uniform.type?.members || []) {\n members.push({\n name: attribute.name,\n type: getType(attribute.type)\n });\n }\n shaderLayout.bindings.push({\n type: 'uniform',\n name: uniform.name,\n group: uniform.group,\n location: uniform.binding,\n // @ts-expect-error TODO - unused for now but needs fixing\n members\n });\n }\n for (const texture of parsedWGSL.textures) {\n shaderLayout.bindings.push({\n type: 'texture',\n name: texture.name,\n group: texture.group,\n location: texture.binding\n });\n }\n for (const sampler of parsedWGSL.samplers) {\n shaderLayout.bindings.push({\n type: 'sampler',\n name: sampler.name,\n group: sampler.group,\n location: sampler.binding\n });\n }\n const vertex = parsedWGSL.entry.vertex[0]; // \"main\"\n // Vertex shader inputs\n const attributeCount = vertex?.inputs.length || 0; // inputs to \"main\"\n for (let i = 0; i < attributeCount; i++) {\n const wgslAttribute = vertex.inputs[i];\n // locationType can be \"builtin\"\n if (wgslAttribute.locationType === 'location') {\n const type = getType(wgslAttribute.type);\n shaderLayout.attributes.push({\n name: wgslAttribute.name,\n location: Number(wgslAttribute.location),\n type\n });\n }\n }\n return shaderLayout;\n}\n/** Get a valid shader attribute type string from a wgsl-reflect type */\nfunction getType(type) {\n // @ts-expect-error WgslReflect type checks needed\n return type?.format ? `${type.name}<${type.format.name}>` : type.name;\n}\nfunction parseWGSL(source) {\n try {\n return new WgslReflect(source);\n }\n catch (error) {\n if (error instanceof Error) {\n throw error;\n }\n let message = 'WGSL parse error';\n if (typeof error === 'object' && error?.message) {\n message += `: ${error.message} `;\n }\n if (typeof error === 'object' && error?.token) {\n message += error.token.line || '';\n }\n throw new Error(message, { cause: error });\n }\n}\n//# sourceMappingURL=get-shader-layout-wgsl.js.map","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nconst uidCounters = {};\n/**\n * Returns a UID.\n * @param id= - Identifier base name\n * @return uid\n **/\nexport function uid(id = 'id') {\n uidCounters[id] = uidCounters[id] || 1;\n const count = uidCounters[id]++;\n return `${id}-${count}`;\n}\n//# sourceMappingURL=uid.js.map","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { Buffer, getVertexFormatFromAttribute } from '@luma.gl/core';\nimport { uid } from \"../utils/uid.js\";\nexport class GPUGeometry {\n id;\n userData = {};\n /** Determines how vertices are read from the 'vertex' attributes */\n topology;\n bufferLayout = [];\n vertexCount;\n indices;\n attributes;\n constructor(props) {\n this.id = props.id || uid('geometry');\n this.topology = props.topology;\n this.indices = props.indices || null;\n this.attributes = props.attributes;\n this.vertexCount = props.vertexCount;\n this.bufferLayout = props.bufferLayout || [];\n if (this.indices) {\n if (!(this.indices.usage & Buffer.INDEX)) {\n throw new Error('Index buffer must have INDEX usage');\n }\n }\n }\n destroy() {\n this.indices?.destroy();\n for (const attribute of Object.values(this.attributes)) {\n attribute.destroy();\n }\n }\n getVertexCount() {\n return this.vertexCount;\n }\n getAttributes() {\n return this.attributes;\n }\n getIndexes() {\n return this.indices || null;\n }\n _calculateVertexCount(positions) {\n // Assume that positions is a fully packed float32x3 buffer\n const vertexCount = positions.byteLength / 12;\n return vertexCount;\n }\n}\nexport function makeGPUGeometry(device, geometry) {\n if (geometry instanceof GPUGeometry) {\n return geometry;\n }\n const indices = getIndexBufferFromGeometry(device, geometry);\n const { attributes, bufferLayout } = getAttributeBuffersFromGeometry(device, geometry);\n return new GPUGeometry({\n topology: geometry.topology || 'triangle-list',\n bufferLayout,\n vertexCount: geometry.vertexCount,\n indices,\n attributes\n });\n}\nexport function getIndexBufferFromGeometry(device, geometry) {\n if (!geometry.indices) {\n return undefined;\n }\n const data = geometry.indices.value;\n return device.createBuffer({ usage: Buffer.INDEX, data });\n}\nexport function getAttributeBuffersFromGeometry(device, geometry) {\n const bufferLayout = [];\n const attributes = {};\n for (const [attributeName, attribute] of Object.entries(geometry.attributes)) {\n let name = attributeName;\n // TODO Map some GLTF attribute names (is this still needed?)\n switch (attributeName) {\n case 'POSITION':\n name = 'positions';\n break;\n case 'NORMAL':\n name = 'normals';\n break;\n case 'TEXCOORD_0':\n name = 'texCoords';\n break;\n case 'COLOR_0':\n name = 'colors';\n break;\n }\n if (attribute) {\n attributes[name] = device.createBuffer({\n data: attribute.value,\n id: `${attributeName}-buffer`\n });\n const { value, size, normalized } = attribute;\n // @ts-expect-error\n bufferLayout.push({ name, format: getVertexFormatFromAttribute(value, size, normalized) });\n }\n }\n const vertexCount = geometry._calculateVertexCount(geometry.attributes, geometry.indices);\n return { attributes, bufferLayout, vertexCount };\n}\n//# sourceMappingURL=gpu-geometry.js.map","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { RenderPipeline, ComputePipeline, log } from '@luma.gl/core';\nimport { uid } from \"../utils/uid.js\";\n/**\n * Efficiently creates / caches pipelines\n */\nexport class PipelineFactory {\n static defaultProps = { ...RenderPipeline.defaultProps };\n /** Get the singleton default pipeline factory for the specified device */\n static getDefaultPipelineFactory(device) {\n device._lumaData['defaultPipelineFactory'] =\n device._lumaData['defaultPipelineFactory'] || new PipelineFactory(device);\n return device._lumaData['defaultPipelineFactory'];\n }\n device;\n cachingEnabled;\n destroyPolicy;\n debug;\n _hashCounter = 0;\n _hashes = {};\n _renderPipelineCache = {};\n _computePipelineCache = {};\n get [Symbol.toStringTag]() {\n return 'PipelineFactory';\n }\n toString() {\n return `PipelineFactory(${this.device.id})`;\n }\n constructor(device) {\n this.device = device;\n this.cachingEnabled = device.props._cachePipelines;\n this.destroyPolicy = device.props._cacheDestroyPolicy;\n this.debug = device.props.debugFactories;\n }\n /** Return a RenderPipeline matching supplied props. Reuses an equivalent pipeline if already created. */\n createRenderPipeline(props) {\n if (!this.cachingEnabled) {\n return this.device.createRenderPipeline(props);\n }\n const allProps = { ...RenderPipeline.defaultProps, ...props };\n const cache = this._renderPipelineCache;\n const hash = this._hashRenderPipeline(allProps);\n let pipeline = cache[hash]?.pipeline;\n if (!pipeline) {\n pipeline = this.device.createRenderPipeline({\n ...allProps,\n id: allProps.id ? `${allProps.id}-cached` : uid('unnamed-cached')\n });\n pipeline.hash = hash;\n cache[hash] = { pipeline, useCount: 1 };\n if (this.debug) {\n log.warn(`${this}: ${pipeline} created, count=${cache[hash].useCount}`)();\n }\n }\n else {\n cache[hash].useCount++;\n if (this.debug) {\n log.warn(`${this}: ${cache[hash].pipeline} reused, count=${cache[hash].useCount}, (id=${props.id})`)();\n }\n }\n return pipeline;\n }\n /** Return a ComputePipeline matching supplied props. Reuses an equivalent pipeline if already created. */\n createComputePipeline(props) {\n if (!this.cachingEnabled) {\n return this.device.createComputePipeline(props);\n }\n const allProps = { ...ComputePipeline.defaultProps, ...props };\n const cache = this._computePipelineCache;\n const hash = this._hashComputePipeline(allProps);\n let pipeline = cache[hash]?.pipeline;\n if (!pipeline) {\n pipeline = this.device.createComputePipeline({\n ...allProps,\n id: allProps.id ? `${allProps.id}-cached` : undefined\n });\n pipeline.hash = hash;\n cache[hash] = { pipeline, useCount: 1 };\n if (this.debug) {\n log.warn(`${this}: ${pipeline} created, count=${cache[hash].useCount}`)();\n }\n }\n else {\n cache[hash].useCount++;\n if (this.debug) {\n log.warn(`${this}: ${cache[hash].pipeline} reused, count=${cache[hash].useCount}, (id=${props.id})`)();\n }\n }\n return pipeline;\n }\n release(pipeline) {\n if (!this.cachingEnabled) {\n pipeline.destroy();\n return;\n }\n const cache = this._getCache(pipeline);\n const hash = pipeline.hash;\n cache[hash].useCount--;\n if (cache[hash].useCount === 0) {\n this._destroyPipeline(pipeline);\n if (this.debug) {\n log.warn(`${this}: ${pipeline} released and destroyed`)();\n }\n }\n else if (cache[hash].useCount < 0) {\n log.error(`${this}: ${pipeline} released, useCount < 0, resetting`)();\n cache[hash].useCount = 0;\n }\n else if (this.debug) {\n log.warn(`${this}: ${pipeline} released, count=${cache[hash].useCount}`)();\n }\n }\n // PRIVATE\n /** Destroy a cached pipeline, removing it from the cache (depending on destroy policy) */\n _destroyPipeline(pipeline) {\n const cache = this._getCache(pipeline);\n switch (this.destroyPolicy) {\n case 'never':\n return false;\n case 'unused':\n delete cache[pipeline.hash];\n pipeline.destroy();\n return true;\n }\n }\n /** Get the appropriate cache for the type of pipeline */\n _getCache(pipeline) {\n let cache;\n if (pipeline instanceof ComputePipeline) {\n cache = this._computePipelineCache;\n }\n if (pipeline instanceof RenderPipeline) {\n cache = this._renderPipelineCache;\n }\n if (!cache) {\n throw new Error(`${this}`);\n }\n if (!cache[pipeline.hash]) {\n throw new Error(`${this}: ${pipeline} matched incorrect entry`);\n }\n return cache;\n }\n /** Calculate a hash based on all the inputs for a compute pipeline */\n _hashComputePipeline(props) {\n const { type } = this.device;\n const shaderHash = this._getHash(props.shader.source);\n return `${type}/C/${shaderHash}`;\n }\n /** Calculate a hash based on all the inputs for a render pipeline */\n _hashRenderPipeline(props) {\n const vsHash = props.vs ? this._getHash(props.vs.source) : 0;\n const fsHash = props.fs ? this._getHash(props.fs.source) : 0;\n // WebGL specific\n // const {varyings = [], bufferMode = {}} = props;\n // const varyingHashes = varyings.map((v) => this._getHash(v));\n const varyingHash = '-'; // `${varyingHashes.join('/')}B${bufferMode}`\n const bufferLayoutHash = this._getHash(JSON.stringify(props.bufferLayout));\n const { type } = this.device;\n switch (type) {\n case 'webgl':\n // WebGL is more dynamic\n return `${type}/R/${vsHash}/${fsHash}V${varyingHash}BL${bufferLayoutHash}`;\n case 'webgpu':\n default:\n // On WebGPU we need to rebuild the pipeline if topology, parameters or bufferLayout change\n const parameterHash = this._getHash(JSON.stringify(props.parameters));\n // TODO - Can json.stringify() generate different strings for equivalent objects if order of params is different?\n // create a deepHash() to deduplicate?\n return `${type}/R/${vsHash}/${fsHash}V${varyingHash}T${props.topology}P${parameterHash}BL${bufferLayoutHash}`;\n }\n }\n _getHash(key) {\n if (this._hashes[key] === undefined) {\n this._hashes[key] = this._hashCounter++;\n }\n return this._hashes[key];\n }\n}\n//# sourceMappingURL=pipeline-factory.js.map","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { Shader, log } from '@luma.gl/core';\n/** Manages a cached pool of Shaders for reuse. */\nexport class ShaderFactory {\n static defaultProps = { ...Shader.defaultProps };\n /** Returns the default ShaderFactory for the given {@link Device}, creating one if necessary. */\n static getDefaultShaderFactory(device) {\n device._lumaData['defaultShaderFactory'] ||= new ShaderFactory(device);\n return device._lumaData['defaultShaderFactory'];\n }\n device;\n cachingEnabled;\n destroyPolicy;\n debug;\n _cache = {};\n get [Symbol.toStringTag]() {\n return 'ShaderFactory';\n }\n toString() {\n return `${this[Symbol.toStringTag]}(${this.device.id})`;\n }\n /** @internal */\n constructor(device) {\n this.device = device;\n this.cachingEnabled = device.props._cacheShaders;\n this.destroyPolicy = device.props._cacheDestroyPolicy;\n this.debug = true; // device.props.debugFactories;\n }\n /** Requests a {@link Shader} from the cache, creating a new Shader only if necessary. */\n createShader(props) {\n if (!this.cachingEnabled) {\n return this.device.createShader(props);\n }\n const key = this._hashShader(props);\n let cacheEntry = this._cache[key];\n if (!cacheEntry) {\n const shader = this.device.createShader({\n ...props,\n id: props.id ? `${props.id}-cached` : undefined\n });\n this._cache[key] = cacheEntry = { shader, useCount: 1 };\n if (this.debug) {\n log.warn(`${this}: Created new shader ${shader.id}`)();\n }\n }\n else {\n cacheEntry.useCount++;\n if (this.debug) {\n log.warn(`${this}: Reusing shader ${cacheEntry.shader.id} count=${cacheEntry.useCount}`)();\n }\n }\n return cacheEntry.shader;\n }\n /** Releases a previously-requested {@link Shader}, destroying it if no users remain. */\n release(shader) {\n if (!this.cachingEnabled) {\n shader.destroy();\n return;\n }\n const key = this._hashShader(shader);\n const cacheEntry = this._cache[key];\n if (cacheEntry) {\n cacheEntry.useCount--;\n if (cacheEntry.useCount === 0) {\n if (this.destroyPolicy === 'unused') {\n delete this._cache[key];\n cacheEntry.shader.destroy();\n if (this.debug) {\n log.warn(`${this}: Releasing shader ${shader.id}, destroyed`)();\n }\n }\n }\n else if (cacheEntry.useCount < 0) {\n throw new Error(`ShaderFactory: Shader ${shader.id} released too many times`);\n }\n else if (this.debug) {\n log.warn(`${this}: Releasing shader ${shader.id} count=${cacheEntry.useCount}`)();\n }\n }\n }\n // PRIVATE\n _hashShader(value) {\n return `${value.stage}:${value.source}`;\n }\n}\n//# sourceMappingURL=shader-factory.js.map","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n/**\n * Extracts a table suitable for `console.table()` from a shader layout to assist in debugging.\n * @param layout shader layout\n * @param name app should provide the most meaningful name, usually the model or pipeline name / id.\n * @returns\n */\nexport function getDebugTableForShaderLayout(layout, name) {\n const table = {};\n const header = 'Values'; // '`Shader Layout for ${name}`;\n if (layout.attributes.length === 0 && !layout.varyings?.length) {\n return { 'No attributes or varyings': { [header]: 'N/A' } };\n }\n for (const attributeDeclaration of layout.attributes) {\n if (attributeDeclaration) {\n const glslDeclaration = `${attributeDeclaration.location} ${attributeDeclaration.name}: ${attributeDeclaration.type}`;\n table[`in ${glslDeclaration}`] = { [header]: attributeDeclaration.stepMode || 'vertex' };\n }\n }\n for (const varyingDeclaration of layout.varyings || []) {\n const glslDeclaration = `${varyingDeclaration.location} ${varyingDeclaration.name}`;\n table[`out ${glslDeclaration}`] = { [header]: JSON.stringify(varyingDeclaration) };\n }\n return table;\n}\n//# sourceMappingURL=debug-shader-layout.js.map","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n// import {copyTextureToImage} from '../debug/copy-texture-to-image';\n/** Only works with 1st device? */\nlet canvas = null;\nlet ctx = null;\n// let targetImage: HTMLImageElement | null = null;\n/** Debug utility to draw FBO contents onto screen */\n// eslint-disable-next-line\nexport function debugFramebuffer(fbo, { id, minimap, opaque, top = '0', left = '0', rgbaScale = 1 }) {\n if (!canvas) {\n canvas = document.createElement('canvas');\n canvas.id = id;\n canvas.title = id;\n canvas.style.zIndex = '100';\n canvas.style.position = 'absolute';\n canvas.style.top = top; // ⚠️\n canvas.style.left = left; // ⚠️\n canvas.style.border = 'blue 5px solid';\n canvas.style.transform = 'scaleY(-1)';\n document.body.appendChild(canvas);\n ctx = canvas.getContext('2d');\n // targetImage = new Image();\n }\n // const canvasHeight = (minimap ? 2 : 1) * fbo.height;\n if (canvas.width !== fbo.width || canvas.height !== fbo.height) {\n canvas.width = fbo.width / 2;\n canvas.height = fbo.height / 2;\n canvas.style.width = '400px';\n canvas.style.height = '400px';\n }\n // const image = copyTextureToImage(fbo, {targetMaxHeight: 100, targetImage});\n // ctx.drawImage(image, 0, 0);\n const color = fbo.device.readPixelsToArrayWebGL(fbo);\n const imageData = ctx?.createImageData(fbo.width, fbo.height);\n if (imageData) {\n // Full map\n const offset = 0;\n // if (color.some((v) => v > 0)) {\n // console.error('THERE IS NON-ZERO DATA IN THE FBO!');\n // }\n for (let i = 0; i < color.length; i += 4) {\n imageData.data[offset + i + 0] = color[i + 0] * rgbaScale;\n imageData.data[offset + i + 1] = color[i + 1] * rgbaScale;\n imageData.data[offset + i + 2] = color[i + 2] * rgbaScale;\n imageData.data[offset + i + 3] = opaque ? 255 : color[i + 3] * rgbaScale;\n }\n ctx?.putImageData(imageData, 0, 0);\n }\n}\n//# sourceMappingURL=debug-framebuffer.js.map","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n/**\n * Fast partial deep equal for prop.\n *\n * @param a Prop\n * @param b Prop to compare against `a`\n * @param depth Depth to which to recurse in nested Objects/Arrays. Use 0 (default) for shallow comparison, -1 for infinite depth\n */\n/* eslint-disable complexity */\nexport function deepEqual(a, b, depth) {\n if (a === b) {\n return true;\n }\n if (!depth || !a || !b) {\n return false;\n }\n if (Array.isArray(a)) {\n if (!Array.isArray(b) || a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; i++) {\n if (!deepEqual(a[i], b[i], depth - 1)) {\n return false;\n }\n }\n return true;\n }\n if (Array.isArray(b)) {\n return false;\n }\n if (typeof a === 'object' && typeof b === 'object') {\n const aKeys = Object.keys(a);\n const bKeys = Object.keys(b);\n if (aKeys.length !== bKeys.length) {\n return false;\n }\n for (const key of aKeys) {\n if (!b.hasOwnProperty(key)) {\n return false;\n }\n if (!deepEqual(a[key], b[key], depth - 1)) {\n return false;\n }\n }\n return true;\n }\n return false;\n}\n//# sourceMappingURL=deep-equal.js.map","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { log } from '@luma.gl/core';\n/** BufferLayoutHelper is a helper class that should not be used directly by applications */\nexport class BufferLayoutHelper {\n bufferLayouts;\n constructor(bufferLayouts) {\n this.bufferLayouts = bufferLayouts;\n }\n getBufferLayout(name) {\n return this.bufferLayouts.find(layout => layout.name === name) || null;\n }\n /** Get attribute names from a BufferLayout */\n getAttributeNamesForBuffer(bufferLayout) {\n return bufferLayout.attributes\n ? bufferLayout.attributes?.map(layout => layout.attribute)\n : [bufferLayout.name];\n }\n mergeBufferLayouts(bufferLayouts1, bufferLayouts2) {\n const mergedLayouts = [...bufferLayouts1];\n for (const attribute of bufferLayouts2) {\n const index = mergedLayouts.findIndex(attribute2 => attribute2.name === attribute.name);\n if (index < 0) {\n mergedLayouts.push(attribute);\n }\n else {\n mergedLayouts[index] = attribute;\n }\n }\n return mergedLayouts;\n }\n getBufferIndex(bufferName) {\n const bufferIndex = this.bufferLayouts.findIndex(layout => layout.name === bufferName);\n if (bufferIndex === -1) {\n log.warn(`BufferLayout: Missing buffer for \"${bufferName}\".`)();\n }\n return bufferIndex;\n }\n}\n//# sourceMappingURL=buffer-layout-helper.js.map","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nexport function sortedBufferLayoutByShaderSourceLocations(shaderLayout, bufferLayout) {\n const shaderLayoutMap = Object.fromEntries(shaderLayout.attributes.map(attr => [attr.name, attr.location]));\n const sortedLayout = bufferLayout.slice();\n sortedLayout.sort((a, b) => {\n const attributeNamesA = a.attributes ? a.attributes.map(attr => attr.attribute) : [a.name];\n const attributeNamesB = b.attributes ? b.attributes.map(attr => attr.attribute) : [b.name];\n const minLocationA = Math.min(...attributeNamesA.map(name => shaderLayoutMap[name]));\n const minLocationB = Math.min(...attributeNamesB.map(name => shaderLayoutMap[name]));\n return minLocationA - minLocationB;\n });\n return sortedLayout;\n}\n//# sourceMappingURL=buffer-layout-order.js.map","// math.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n/**\n * Check is an array is a typed array\n * @param value value to be tested\n * @returns input with type narrowed to TypedArray, or null\n */\nexport function isTypedArray(value) {\n return ArrayBuffer.isView(value) && !(value instanceof DataView);\n}\n/**\n * Check is an array is an array of numbers)\n * @param value value to be tested\n * @returns input with type narrowed to NumberArray, or null\n */\nexport function isNumberArray(value) {\n if (Array.isArray(value)) {\n return value.length === 0 || typeof value[0] === 'number';\n }\n return false;\n}\n/**\n * Check is an array is a numeric array (typed array or array of numbers)\n * @param value value to be tested\n * @returns input with type narrowed to NumericArray, or null\n */\nexport function isNumericArray(value) {\n return isTypedArray(value) || isNumberArray(value);\n}\n//# sourceMappingURL=is-array.js.map","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { isNumericArray } from '@math.gl/types';\nexport function isUniformValue(value) {\n return isNumericArray(value) || typeof value === 'number' || typeof value === 'boolean';\n}\nexport function splitUniformsAndBindings(uniforms) {\n const result = { bindings: {}, uniforms: {} };\n Object.keys(uniforms).forEach(name => {\n const uniform = uniforms[name];\n if (isUniformValue(uniform)) {\n result.uniforms[name] = uniform;\n }\n else {\n result.bindings[name] = uniform;\n }\n });\n return result;\n}\n//# sourceMappingURL=split-uniforms-and-bindings.js.map","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { log } from '@luma.gl/core';\n// import type {VariableShaderType, UniformValue, UniformFormat, UniformInfoDevice, Texture, Sampler} from '@luma.gl/core';\nimport { getShaderModuleDependencies } from '@luma.gl/shadertools';\nimport { splitUniformsAndBindings } from \"./model/split-uniforms-and-bindings.js\";\n/**\n * ShaderInputs holds uniform and binding values for one or more shader modules,\n * - It can generate binary data for any uniform buffer\n * - It can manage a uniform buffer for each block\n * - It can update managed uniform buffers with a single call\n * - It performs some book keeping on what has changed to minimize unnecessary writes to uniform buffers.\n */\nexport class ShaderInputs {\n options = {\n disableWarnings: false\n };\n /**\n * The map of modules\n * @todo should should this include the resolved dependencies?\n */\n // @ts-ignore Fix typings\n modules;\n /** Stores the uniform values for each module */\n moduleUniforms;\n /** Stores the uniform bindings for each module */\n moduleBindings;\n /** Tracks if uniforms have changed */\n // moduleUniformsChanged: Record<keyof ShaderPropsT, false | string>;\n /**\n * Create a new UniformStore instance\n * @param modules\n */\n constructor(\n // @ts-ignore Fix typings\n modules, options) {\n Object.assign(this.options, options);\n // Extract modules with dependencies\n const resolvedModules = getShaderModuleDependencies(Object.values(modules).filter(module => module.dependencies));\n for (const resolvedModule of resolvedModules) {\n // @ts-ignore\n modules[resolvedModule.name] = resolvedModule;\n }\n log.log(1, 'Creating ShaderInputs with modules', Object.keys(modules))();\n // Store the module definitions and create storage for uniform values and binding values, per module\n // @ts-ignore Fix typings\n this.modules = modules;\n this.moduleUniforms = {};\n this.moduleBindings = {};\n // Initialize the modules\n for (const [name, module] of Object.entries(modules)) {\n this._addModule(module);\n if (module.name && name !== module.name && !this.options.disableWarnings) {\n log.warn(`Module name: ${name} vs ${module.name}`)();\n }\n }\n }\n /** Destroy */\n destroy() { }\n /**\n * Set module props\n */\n setProps(props) {\n for (const name of Object.keys(props)) {\n const moduleName = name;\n const moduleProps = props[moduleName] || {};\n const module = this.modules[moduleName];\n if (!module) {\n // Ignore props for unregistered modules\n if (!this.options.disableWarnings) {\n log.warn(`Module ${name} not found`)();\n }\n continue; // eslint-disable-line no-continue\n }\n const oldUniforms = this.moduleUniforms[moduleName];\n const oldBindings = this.moduleBindings[moduleName];\n const uniformsAndBindings = module.getUniforms?.(moduleProps, oldUniforms) || moduleProps;\n const { uniforms, bindings } = splitUniformsAndBindings(uniformsAndBindings);\n this.moduleUniforms[moduleName] = { ...oldUniforms, ...uniforms };\n this.moduleBindings[moduleName] = { ...oldBindings, ...bindings };\n // this.moduleUniformsChanged ||= moduleName;\n // console.log(`setProps(${String(moduleName)}`, moduleName, this.moduleUniforms[moduleName])\n }\n }\n /**\n * Return the map of modules\n * @todo should should this include the resolved dependencies?\n */\n getModules() {\n return Object.values(this.modules);\n }\n /** Get all uniform values for all modules */\n getUniformValues() {\n return this.moduleUniforms;\n }\n /** Merges all bindings for the shader (from the various modules) */\n getBindingValues() {\n const bindings = {};\n for (const moduleBindings of Object.values(this.moduleBindings)) {\n Object.assign(bindings, moduleBindings);\n }\n return bindings;\n }\n // INTERNAL\n /** Return a debug table that can be used for console.table() or log.table() */\n getDebugTable() {\n const table = {};\n for (const [moduleName, module] of Object.entries(this.moduleUniforms)) {\n for (const [key, value] of Object.entries(module)) {\n table[`${moduleName}.${key}`] = {\n type: this.modules[moduleName].uniformTypes?.[key],\n value: String(value)\n };\n }\n }\n return table;\n }\n _addModule(module) {\n const moduleName = module.name;\n // Get default uniforms from module\n this.moduleUniforms[moduleName] = module.defaultUniforms || {};\n this.moduleBindings[moduleName] = {};\n }\n}\n//# sourceMappingURL=shader-inputs.js.map","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nlet pathPrefix = '';\n/**\n * Set a relative path prefix\n */\nexport function setPathPrefix(prefix) {\n pathPrefix = prefix;\n}\n/**\n * Loads ImageBitmap asynchronously. Respects setPathPrefix.\n * image.crossOrigin can be set via opts.crossOrigin, default to 'anonymous'\n * @returns a promise tracking the load\n */\nexport async function loadImageBitmap(url, opts) {\n const image = new Image();\n image.crossOrigin = opts?.crossOrigin || 'anonymous';\n image.src = url.startsWith('http') ? url : pathPrefix + url;\n await image.decode();\n return opts ? await createImageBitmap(image, opts) : await createImageBitmap(image);\n}\n/**\n * Loads image asynchronously. Respects setPathPrefix.\n * image.crossOrigin can be set via opts.crossOrigin, default to 'anonymous'\n * @returns a promise tracking the load\n * @deprecated Use `loadImageBitmap()` unless you are supporting old versions of Safari.\n */\nexport async function loadImage(url, opts) {\n return await new Promise((resolve, reject) => {\n try {\n const image = new Image();\n image.onload = () => resolve(image);\n image.onerror = () => reject(new Error(`Could not load image ${url}.`));\n image.crossOrigin = opts?.crossOrigin || 'anonymous';\n image.src = url.startsWith('http') ? url : pathPrefix + url;\n }\n catch (error) {\n reject(error);\n }\n });\n}\n//# sourceMappingURL=load-file.js.map","// luma.gl, MIT license\n// Copyright (c) vis.gl contributors\nimport { Texture, Sampler, log } from '@luma.gl/core';\nimport { loadImageBitmap } from \"../application-utils/load-file.js\";\nimport { uid } from \"../utils/uid.js\";\nexport const TextureCubeFaces = ['+X', '-X', '+Y', '-Y', '+Z', '-Z'];\n// prettier-ignore\nexport const TextureCubeFaceMap = { '+X': 0, '-X': 1, '+Y': 2, '-Y': 3, '+Z': 4, '-Z': 5 };\nexport const CubeFaces = ['+X', '-X', '+Y', '-Y', '+Z', '-Z'];\n/**\n * It is very convenient to be able to initialize textures with promises\n * This can add considerable complexity to the Texture class, and doesn't\n * fit with the immutable nature of WebGPU resources.\n * Instead, luma.gl offers async textures as a separate class.\n */\nexport class AsyncTexture {\n device;\n id;\n props;\n // TODO - should we type these as possibly `null`? It will make usage harder?\n // @ts-expect-error\n texture;\n // @ts-expect-error\n sampler;\n // @ts-expect-error\n view;\n ready;\n isReady = false;\n destroyed = false;\n resolveReady = () => { };\n rejectReady = () => { };\n get [Symbol.toStringTag]() {\n return 'AsyncTexture';\n }\n toString() {\n return `AsyncTexture:\"${this.id}\"(${this.isReady ? 'ready' : 'loading'})`;\n }\n constructor(device, props) {\n this.device = device;\n // TODO - if we support URL strings as data...\n const id = uid('async-texture'); // typeof props?.data === 'string' ? props.data.slice(-20) : uid('async-texture');\n this.props = { ...AsyncTexture.defaultProps, id, ...props };\n this.id = this.props.id;\n props = { ...props };\n // Signature: new AsyncTexture(device, {data: url})\n if (typeof props?.data === 'string' && props.dimension === '2d') {\n props.data = loadImageBitmap(props.data);\n }\n // If mipmaps are requested, we need to allocate space for them\n if (props.mipmaps) {\n props.mipLevels = 'auto';\n }\n this.ready = new Promise((resolve, reject) => {\n this.resolveReady = () => {\n this.isReady = true;\n resolve();\n };\n this.rejectReady = reject;\n });\n this.initAsync(props);\n }\n async initAsync(props) {\n const asyncData = props.data;\n // @ts-expect-error not clear how to convince TS that null will be returned\n const data = await awaitAllPromises(asyncData).then(undefined, this.rejectReady);\n // Check that we haven't been destroyed while waiting for texture data to load\n if (this.destroyed) {\n return;\n }\n // Now we can actually create the texture\n // Auto-deduce width and height if not supplied\n const size = this.props.width && this.props.height\n ? { width: this.props.width, height: this.props.height }\n : this.getTextureDataSize(data);\n if (!size) {\n throw new Error('Texture size could not be determined');\n }\n const syncProps = { ...size, ...props, data: undefined, mipLevels: 1 };\n // Auto-calculate the number of mip levels as a convenience\n // TODO - Should we clamp to 1-getMipLevelCount?\n const maxMips = this.device.getMipLevelCount(syncProps.width, syncProps.height);\n syncProps.mipLevels =\n this.props.mipLevels === 'auto' ? maxMips : Math.min(maxMips, this.props.mipLevels);\n this.texture = this.device.createTexture(syncProps);\n this.sampler = this.texture.sampler;\n this.view = this.texture.view;\n if (props.data) {\n switch (this.props.dimension) {\n case '1d':\n this._setTexture1DData(this.texture, data);\n break;\n case '2d':\n this._setTexture2DData(data);\n break;\n case '3d':\n this._setTexture3DData(this.texture, data);\n break;\n case '2d-array':\n this._setTextureArrayData(this.texture, data);\n break;\n case 'cube':\n this._setTextureCubeData(this.texture, data);\n break;\n case 'cube-array':\n this._setTextureCubeArrayData(this.texture, data);\n break;\n }\n }\n // Do we need to generate mipmaps?\n if (this.props.mipmaps) {\n this.generateMipmaps();\n }\n log.info(1, `${this} loaded`);\n this.resolveReady();\n }\n destroy() {\n if (this.texture) {\n this.texture.destroy();\n // @ts-expect-error\n this.texture = null;\n }\n this.destroyed = true;\n }\n generateMipmaps() {\n // if (this.device.type === 'webgl') {\n this.texture.generateMipmapsWebGL();\n // }\n }\n /** Set sampler or create and set new Sampler from SamplerProps */\n setSampler(sampler = {}) {\n this.texture.setSampler(sampler instanceof Sampler ? sampler : this.device.createSampler(sampler));\n }\n /**\n * Textures are immutable and cannot be resized after creation,\n * but we can create a similar texture with the same parameters but a new size.\n * @note Does not copy contents of the texture\n * @note Mipmaps may need to be regenerated after resizing / setting new data\n * @todo Abort pending promise and create a texture with the new size?\n */\n resize(size) {\n if (!this.isReady) {\n throw new Error('Cannot resize texture before it is ready');\n }\n if (size.width === this.texture.width && size.height === this.texture.height) {\n return false;\n }\n if (this.texture) {\n const texture = this.texture;\n this.texture = texture.clone(size);\n texture.destroy();\n }\n return true;\n }\n /** Check if texture data is a typed array */\n isTextureLevelData(data) {\n const typedArray = data?.data;\n return ArrayBuffer.isView(typedArray);\n }\n /** Get the size of the texture described by the provided TextureData */\n getTextureDataSize(data) {\n if (!data) {\n return null;\n }\n if (ArrayBuffer.isView(data)) {\n return null;\n }\n // Recurse into arrays (array of miplevels)\n if (Array.isArray(data)) {\n return this.getTextureDataSize(data[0]);\n }\n if (this.device.isExternalImage(data)) {\n return this.device.getExternalImageSize(data);\n }\n if (data && typeof data === 'object' && data.constructor === Object) {\n const textureDataArray = Object.values(data);\n const untypedData = textureDataArray[0];\n return { width: untypedData.width, height: untypedData.height };\n }\n throw new Error('texture size deduction failed');\n }\n /** Convert luma.gl cubemap face constants to depth index */\n getCubeFaceDepth(face) {\n // prettier-ignore\n switch (face) {\n case '+X': return 0;\n case '-X': return 1;\n case '+Y': return 2;\n case '-Y': return 3;\n case '+Z': return 4;\n case '-Z': return 5;\n default: throw new Error(face);\n }\n }\n // EXPERIMENTAL\n setTextureData(data) { }\n /** Experimental: Set multiple mip levels */\n _setTexture1DData(texture, data) {\n throw new Error('setTexture1DData not supported in WebGL.');\n }\n /** Experimental: Set multiple mip levels */\n _setTexture2DData(lodData, depth = 0) {\n if (!this.texture) {\n throw new Error('Texture not initialized');\n }\n const lodArray = this._normalizeTextureData(lodData);\n // If the user provides multiple LODs, then automatic mipmap\n // generation generateMipmap() should be disabled to avoid overwriting them.\n if (lodArray.length > 1 && this.props.mipmaps !== false) {\n log.warn(`Texture ${this.id} mipmap and multiple LODs.`)();\n }\n for (let mipLevel = 0; mipLevel < lodArray.length; mipLevel++) {\n const imageData = lodArray[mipLevel];\n if (this.device.isExternalImage(imageData)) {\n this.texture.copyExternalImage({ image: imageData, depth, mipLevel, flipY: true });\n }\n else {\n this.texture.copyImageData({ data: imageData.data /* , depth */, mipLevel });\n }\n }\n }\n /**\n * Experimental: Sets 3D texture data: multiple depth slices, multiple mip levels\n * @param data\n */\n _setTexture3DData(texture, data) {\n if (this.texture?.props.dimension !== '3d') {\n throw new Error(this.id);\n }\n for (let depth = 0; depth < data.length; depth++) {\n this._setTexture2DData(data[depth], depth);\n }\n }\n /**\n * Experimental: Set Cube texture data, multiple faces, multiple mip levels\n * @todo - could support TextureCubeArray with depth\n * @param data\n * @param index\n */\n _setTextureCubeData(texture, data) {\n if (this.texture?.props.dimension !== 'cube') {\n throw new Error(this.id);\n }\n for (const [face, faceData] of Object.entries(data)) {\n const faceDepth = CubeFaces.indexOf(face);\n this._setTexture2DData(faceData, faceDepth);\n }\n }\n /**\n * Experimental: Sets texture array data, multiple levels, multiple depth slices\n * @param data\n */\n _setTextureArrayData(texture, data) {\n if (this.texture?.props.dimension !== '2d-array') {\n throw new Error(this.id);\n }\n for (let depth = 0; depth < data.length; depth++) {\n this._setTexture2DData(data[depth], depth);\n }\n }\n /**\n * Experimental: Sets texture cube array, multiple faces, multiple levels, multiple mip levels\n * @param data\n */\n _setTextureCubeArrayData(texture, data) {\n throw new Error('setTextureCubeArrayData not supported in WebGL2.');\n }\n /** Experimental */\n _setTextureCubeFaceData(texture, lodData, face, depth = 0) {\n // assert(this.props.dimension === 'cube');\n // If the user provides multiple LODs, then automatic mipmap\n // generation generateMipmap() should be disabled to avoid overwriting them.\n if (Array.isArray(lodData) && lodData.length > 1 && this.props.mipmaps !== false) {\n log.warn(`${this.id} has mipmap and multiple LODs.`)();\n }\n const faceDepth = TextureCubeFaces.indexOf(face);\n this._setTexture2DData(lodData, faceDepth);\n }\n /**\n * Normalize TextureData to an array of TextureImageData / ExternalImages\n * @param data\n * @param options\n * @returns array of TextureImageData / ExternalImages\n */\n _normalizeTextureData(data) {\n const options = this.texture;\n let mipLevelArray;\n if (ArrayBuffer.isView(data)) {\n mipLevelArray = [\n {\n // ts-expect-error does data really need to be Uint8ClampedArray?\n data,\n width: options.width,\n height: options.height\n // depth: options.depth\n }\n ];\n }\n else if (!Array.isArray(data)) {\n mipLevelArray = [data];\n }\n else {\n mipLevelArray = data;\n }\n return mipLevelArray;\n }\n static defaultProps = {\n ...Texture.defaultProps,\n data: null,\n mipmaps: false\n };\n}\n// TODO - Remove when texture refactor is complete\n/*\nsetCubeMapData(options: {\n width: number;\n height: number;\n data: Record<GL, Texture2DData> | Record<TextureCubeFace, Texture2DData>;\n format?: any;\n type?: any;\n /** @deprecated Use .data *\n pixels: any;\n}): void {\n const {gl} = this;\n\n const {width, height, pixels, data, format = GL.RGBA, type = GL.UNSIGNED_BYTE} = options;\n\n // pixel data (imageDataMap) is an Object from Face to Image or Promise.\n // For example:\n // {\n // GL.TEXTURE_CUBE_MAP_POSITIVE_X : Image-or-Promise,\n // GL.TEXTURE_CUBE_MAP_NEGATIVE_X : Image-or-Promise,\n // ... }\n // To provide multiple level-of-details (LODs) this can be Face to Array\n // of Image or Promise, like this\n // {\n // GL.TEXTURE_CUBE_MAP_POSITIVE_X : [Image-or-Promise-LOD-0, Image-or-Promise-LOD-1],\n // GL.TEXTURE_CUBE_MAP_NEGATIVE_X : [Image-or-Promise-LOD-0, Image-or-Promise-LOD-1],\n // ... }\n\n const imageDataMap = this._getImageDataMap(pixels || data);\n\n const resolvedFaces = WEBGLTexture.FACES.map(face => {\n const facePixels = imageDataMap[face];\n return Array.isArray(facePixels) ? facePixels : [facePixels];\n });\n this.bind();\n\n WEBGLTexture.FACES.forEach((face, index) => {\n if (resolvedFaces[index].length > 1 && this.props.mipmaps !== false) {\n // If the user provides multiple LODs, then automatic mipmap\n // generation generateMipmaps() should be disabled to avoid overwritting them.\n log.warn(`${this.id} has mipmap and multiple LODs.`)();\n }\n resolvedFaces[index].forEach((image, lodLevel) => {\n // TODO: adjust width & height for LOD!\n if (width && height) {\n gl.texImage2D(face, lodLevel, format, width, height, 0 /* border*, format, type, image);\n } else {\n gl.texImage2D(face, lodLevel, format, format, type, image);\n }\n });\n });\n\n this.unbind();\n}\n*/\n// HELPERS\n/** Resolve all promises in a nested data structure */\nasync function awaitAllPromises(x) {\n x = await x;\n if (Array.isArray(x)) {\n return await Promise.all(x.map(awaitAllPromises));\n }\n if (x && typeof x === 'object' && x.constructor === Object) {\n const object = x;\n const values = await Promise.all(Object.values(object));\n const keys = Object.keys(object);\n const resolvedObject = {};\n for (let i = 0; i < keys.length; i++) {\n resolvedObject[keys[i]] = values[i];\n }\n return resolvedObject;\n }\n return x;\n}\n//# sourceMappingURL=async-texture.js.map","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { Buffer, Texture, TextureView, Sampler, RenderPipeline, UniformStore, log, getTypedArrayConstructor, getAttributeInfosFromLayouts } from '@luma.gl/core';\nimport { ShaderAssembler, getShaderLayoutFromWGSL } from '@luma.gl/shadertools';\nimport { makeGPUGeometry } from \"../geometry/gpu-geometry.js\";\nimport { PipelineFactory } from \"../factories/pipeline-factory.js\";\nimport { ShaderFactory } from \"../factories/shader-factory.js\";\nimport { getDebugTableForShaderLayout } from \"../debug/debug-shader-layout.js\";\nimport { debugFramebuffer } from \"../debug/debug-framebuffer.js\";\nimport { deepEqual } from \"../utils/deep-equal.js\";\nimport { BufferLayoutHelper } from \"../utils/buffer-layout-helper.js\";\nimport { sortedBufferLayoutByShaderSourceLocations } from \"../utils/buffer-layout-order.js\";\nimport { uid } from \"../utils/uid.js\";\nimport { ShaderInputs } from \"../shader-inputs.js\";\nimport { AsyncTexture } from \"../async-texture/async-texture.js\";\nconst LOG_DRAW_PRIORITY = 2;\nconst LOG_DRAW_TIMEOUT = 10000;\n/**\n * v9 Model API\n * A model\n * - automatically reuses pipelines (programs) when possible\n * - automatically rebuilds pipelines if necessary to accommodate changed settings\n * shadertools integration\n * - accepts modules and performs shader transpilation\n */\nexport class Model {\n static defaultProps = {\n ...RenderPipeline.defaultProps,\n source: undefined,\n vs: null,\n fs: null,\n id: 'unnamed',\n handle: undefined,\n userData: {},\n defines: {},\n modules: [],\n geometry: null,\n indexBuffer: null,\n attributes: {},\n constantAttributes: {},\n varyings: [],\n isInstanced: undefined,\n instanceCount: 0,\n vertexCount: 0,\n shaderInputs: undefined,\n pipelineFactory: undefined,\n shaderFactory: undefined,\n transformFeedback: undefined,\n shaderAssembler: ShaderAssembler.getDefaultShaderAssembler(),\n debugShaders: undefined,\n disableWarnings: undefined\n };\n device;\n id;\n // @ts-expect-error assigned in function called from constructor\n source;\n // @ts-expect-error assigned in function called from constructor\n vs;\n // @ts-expect-error assigned in function called from constructor\n fs;\n pipelineFactory;\n shaderFactory;\n userData = {};\n // Fixed properties (change can trigger pipeline rebuild)\n /** The render pipeline GPU parameters, depth testing etc */\n parameters;\n /** The primitive topology */\n topology;\n /** Buffer layout */\n bufferLayout;\n // Dynamic properties\n /** Use instanced rendering */\n isInstanced = undefined;\n /** instance count. `undefined` means not instanced */\n instanceCount = 0;\n /** Vertex count */\n vertexCount;\n /** Index buffer */\n indexBuffer = null;\n /** Buffer-valued attributes */\n bufferAttributes = {};\n /** Constant-valued attributes */\n constantAttributes = {};\n /** Bindings (textures, samplers, uniform buffers) */\n bindings = {};\n /**\n * VertexArray\n * @note not implemented: if bufferLayout is updated, vertex array has to be rebuilt!\n * @todo - allow application to define multiple vertex arrays?\n * */\n vertexArray;\n /** TransformFeedback, WebGL 2 only. */\n transformFeedback = null;\n /** The underlying GPU \"program\". @note May be recreated if parameters change */\n pipeline;\n /** ShaderInputs instance */\n // @ts-expect-error Assigned in function called by constructor\n shaderInputs;\n // @ts-expect-error Assigned in function called by constructor\n _uniformStore;\n _attributeInfos = {};\n _gpuGeometry = null;\n props;\n _pipelineNeedsUpdate = 'newly created';\n _needsRedraw = 'initializing';\n _destroyed = false;\n /** \"Time\" of last draw. Monotonically increasing timestamp */\n _lastDrawTimestamp = -1;\n get [Symbol.toStringTag]() {\n return 'Model';\n }\n toString() {\n return `Model(${this.id})`;\n }\n constructor(device, props) {\n this.props = { ...Model.defaultProps, ...props };\n props = this.props;\n this.id = props.id || uid('model');\n this.device = device;\n Object.assign(this.userData, props.userData);\n // Setup shader module inputs\n const moduleMap = Object.fromEntries(this.props.modules?.map(module => [module.name, module]) || []);\n const shaderInputs = props.shaderInputs ||\n new ShaderInputs(moduleMap, { disableWarnings: this.props.disableWarnings });\n // @ts-ignore\n this.setShaderInputs(shaderInputs);\n // Setup shader assembler\n const platformInfo = getPlatformInfo(device);\n // Extract modules from shader inputs if not supplied\n const modules = \n // @ts-ignore shaderInputs is assigned in setShaderInputs above.\n (this.props.modules?.length > 0 ? this.props.modules : this.shaderInputs?.getModules()) || [];\n const isWebGPU = this.device.type === 'webgpu';\n // WebGPU\n // TODO - hack to support unified WGSL shader\n // TODO - this is wrong, compile a single shader\n if (isWebGPU && this.props.source) {\n // WGSL\n const { source, getUniforms } = this.props.shaderAssembler.assembleWGSLShader({\n platformInfo,\n ...this.props,\n modules\n });\n this.source = source;\n // @ts-expect-error\n this._getModuleUniforms = getUniforms;\n // Extract shader layout after modules have been added to WGSL source, to include any bindings added by modules\n this.props.shaderLayout ||= getShaderLayoutFromWGSL(this.source);\n }\n else {\n // GLSL\n const { vs, fs, getUniforms } = this.props.shaderAssembler.assembleGLSLShaderPair({\n platformInfo,\n ...this.props,\n modules\n });\n this.vs = vs;\n this.fs = fs;\n // @ts-expect-error\n this._getModuleUniforms = getUniforms;\n }\n this.vertexCount = this.props.vertexCount;\n this.instanceCount = this.props.instanceCount;\n this.topology = this.props.topology;\n this.bufferLayout = this.props.bufferLayout;\n this.parameters = this.props.parameters;\n // Geometry, if provided, sets topology and vertex cound\n if (props.geometry) {\n this.setGeometry(props.geometry);\n }\n this.pipelineFactory =\n props.pipelineFactory || PipelineFactory.getDefaultPipelineFactory(this.device);\n this.shaderFactory = props.shaderFactory || ShaderFactory.getDefaultShaderFactory(this.device);\n // Create the pipeline\n // @note order is important\n this.pipeline = this._updatePipeline();\n this.vertexArray = device.createVertexArray({\n shaderLayout: this.pipeline.shaderLayout,\n bufferLayout: this.pipeline.bufferLayout\n });\n // Now we can apply geometry attributes\n if (this._gpuGeometry) {\n this._setGeometryAttributes(this._gpuGeometry);\n }\n // Apply any dynamic settings that will not trigger pipeline change\n if ('isInstanced' in props) {\n this.isInstanced = props.isInstanced;\n }\n if (props.instanceCount) {\n this.setInstanceCount(props.instanceCount);\n }\n if (props.vertexCount) {\n this.setVertexCount(props.vertexCount);\n }\n if (props.indexBuffer) {\n this.setIndexBuffer(props.indexBuffer);\n }\n if (props.attributes) {\n this.setAttributes(props.attributes);\n }\n if (props.constantAttributes) {\n this.setConstantAttributes(props.constantAttributes);\n }\n if (props.bindings) {\n this.setBindings(props.bindings);\n }\n if (props.transformFeedback) {\n this.transformFeedback = props.transformFeedback;\n }\n // Catch any access to non-standard props\n Object.seal(this);\n }\n destroy() {\n if (!this._destroyed) {\n // Release pipeline before we destroy the shaders used by the pipeline\n this.pipelineFactory.release(this.pipeline);\n // Release the shaders\n this.shaderFactory.release(this.pipeline.vs);\n if (this.pipeline.fs) {\n this.shaderFactory.release(this.pipeline.fs);\n }\n this._uniformStore.destroy();\n // TODO - mark resource as managed and destroyIfManaged() ?\n this._gpuGeometry?.destroy();\n this._destroyed = true;\n }\n }\n // Draw call\n /** Query redraw status. Clears the status. */\n needsRedraw() {\n // Catch any writes to already bound resources\n if (this._getBindingsUpdateTimestamp() > this._lastDrawTimestamp) {\n this.setNeedsRedraw('contents of bound textures or buffers updated');\n }\n const needsRedraw = this._needsRedraw;\n this._needsRedraw = false;\n return needsRedraw;\n }\n /** Mark the model as needing a redraw */\n setNeedsRedraw(reason) {\n this._needsRedraw ||= reason;\n }\n predraw() {\n // Update uniform buffers if needed\n this.updateShaderInputs();\n // Check if the pipeline is invalidated\n this.pipeline = this._updatePipeline();\n }\n draw(renderPass) {\n const loadingBinding = this._areBindingsLoading();\n if (loadingBinding) {\n log.info(LOG_DRAW_PRIORITY, `>>> DRAWING ABORTED ${this.id}: ${loadingBinding} not loaded`)();\n return false;\n }\n try {\n renderPass.pushDebugGroup(`${this}.predraw(${renderPass})`);\n this.predraw();\n }\n finally {\n renderPass.popDebugGroup();\n }\n let drawSuccess;\n try {\n renderPass.pushDebugGroup(`${this}.draw(${renderPass})`);\n this._logDrawCallStart();\n // Update the pipeline if invalidated\n // TODO - inside RenderPass is likely the worst place to do this from performance perspective.\n // Application can call Model.predraw() to avoid this.\n this.pipeline = this._updatePipeline();\n // Set pipeline state, we may be sharing a pipeline so we need to set all state on every draw\n // Any caching needs to be done inside the pipeline functions\n // TODO this is a busy initialized check for all bindings every frame\n const syncBindings = this._getBindings();\n this.pipeline.setBindings(syncBindings, {\n disableWarnings: this.props.disableWarnings\n });\n const { indexBuffer } = this.vertexArray;\n const indexCount = indexBuffer\n ? indexBuffer.byteLength / (indexBuffer.indexType === 'uint32' ? 4 : 2)\n : undefined;\n drawSuccess = this.pipeline.draw({\n renderPass,\n vertexArray: this.vertexArray,\n isInstanced: this.isInstanced,\n vertexCount: this.vertexCount,\n instanceCount: this.instanceCount,\n indexCount,\n transformFeedback: this.transformFeedback || undefined,\n // WebGL shares underlying cached pipelines even for models that have different parameters and topology,\n // so we must provide our unique parameters to each draw\n // (In WebGPU most parameters are encoded in the pipeline and cannot be changed per draw call)\n parameters: this.parameters,\n topology: this.topology\n });\n }\n finally {\n renderPass.popDebugGroup();\n this._logDrawCallEnd();\n }\n this._logFramebuffer(renderPass);\n // Update needsRedraw flag\n if (drawSuccess) {\n this._lastDrawTimestamp = this.device.timestamp;\n this._needsRedraw = false;\n }\n else {\n this._needsRedraw = 'waiting for resource initialization';\n }\n return drawSuccess;\n }\n // Update fixed fields (can trigger pipeline rebuild)\n /**\n * Updates the optional geometry\n * Geometry, set topology and bufferLayout\n * @note Can trigger a pipeline rebuild / pipeline cache fetch on WebGPU\n */\n setGeometry(geometry) {\n this._gpuGeometry?.destroy();\n const gpuGeometry = geometry && makeGPUGeometry(this.device, geometry);\n if (gpuGeometry) {\n this.setTopology(gpuGeometry.topology || 'triangle-list');\n const bufferLayoutHelper = new BufferLayoutHelper(this.bufferLayout);\n this.bufferLayout = bufferLayoutHelper.mergeBufferLayouts(gpuGeometry.bufferLayout, this.bufferLayout);\n if (this.vertexArray) {\n this._setGeometryAttributes(gpuGeometry);\n }\n }\n this._gpuGeometry = gpuGeometry;\n }\n /**\n * Updates the primitive topology ('triangle-list', 'triangle-strip' etc).\n * @note Triggers a pipeline rebuild / pipeline cache fetch on WebGPU\n */\n setTopology(topology) {\n if (topology !== this.topology) {\n this.topology = topology;\n this._setPipelineNeedsUpdate('topology');\n }\n }\n /**\n * Updates the buffer layout.\n * @note Triggers a pipeline rebuild / pipeline cache fetch\n */\n setBufferLayout(bufferLayout) {\n const bufferLayoutHelper = new BufferLayoutHelper(this.bufferLayout);\n this.bufferLayout = this._gpuGeometry\n ? bufferLayoutHelper.mergeBufferLayouts(bufferLayout, this._gpuGeometry.bufferLayout)\n : bufferLayout;\n this._setPipelineNeedsUpdate('bufferLayout');\n // Recreate the pipeline\n this.pipeline = this._updatePipeline();\n // vertex array needs to be updated if we update buffer layout,\n // but not if we update parameters\n this.vertexArray = this.device.createVertexArray({\n shaderLayout: this.pipeline.shaderLayout,\n bufferLayout: this.pipeline.bufferLayout\n });\n // Reapply geometry attributes to the new vertex array\n if (this._gpuGeometry) {\n this._setGeometryAttributes(this._gpuGeometry);\n }\n }\n /**\n * Set GPU parameters.\n * @note Can trigger a pipeline rebuild / pipeline cache fetch.\n * @param parameters\n */\n setParameters(parameters) {\n if (!deepEqual(parameters, this.parameters, 2)) {\n this.parameters = parameters;\n this._setPipelineNeedsUpdate('parameters');\n }\n }\n // Update dynamic fields\n /**\n * Updates the instance count (used in draw calls)\n * @note Any attributes with stepMode=instance need to be at least this big\n */\n setInstanceCount(instanceCount) {\n this.instanceCount = instanceCount;\n // luma.gl examples don't set props.isInstanced and rely on auto-detection\n // but deck.gl sets instanceCount even for models that are not instanced.\n if (this.isInstanced === undefined && instanceCount > 0) {\n this.isInstanced = true;\n }\n this.setNeedsRedraw('instanceCount');\n }\n /**\n * Updates the vertex count (used in draw calls)\n * @note Any attributes with stepMode=vertex need to be at least this big\n */\n setVertexCount(vertexCount) {\n this.vertexCount = vertexCount;\n this.setNeedsRedraw('vertexCount');\n }\n /** Set the shader inputs */\n setShaderInputs(shaderInputs) {\n this.shaderInputs = shaderInputs;\n this._uniformStore = new UniformStore(this.shaderInputs.modules);\n // Create uniform buffer bindings for all modules that actually have uniforms\n for (const [moduleName, module] of Object.entries(this.shaderInputs.modules)) {\n if (shaderModuleHasUniforms(module)) {\n const uniformBuffer = this._uniformStore.getManagedUniformBuffer(this.device, moduleName);\n this.bindings[`${moduleName}Uniforms`] = uniformBuffer;\n }\n }\n this.setNeedsRedraw('shaderInputs');\n }\n /** Update uniform buffers from the model's shader inputs */\n updateShaderInputs() {\n this._uniformStore.setUniforms(this.shaderInputs.getUniformValues());\n this.setBindings(this.shaderInputs.getBindingValues());\n // TODO - this is already tracked through buffer/texture update times?\n this.setNeedsRedraw('shaderInputs');\n }\n /**\n * Sets bindings (textures, samplers, uniform buffers)\n */\n setBindings(bindings) {\n Object.assign(this.bindings, bindings);\n this.setNeedsRedraw('bindings');\n }\n /**\n * Updates optional transform feedback. WebGL only.\n */\n setTransformFeedback(transformFeedback) {\n this.transformFeedback = transformFeedback;\n this.setNeedsRedraw('transformFeedback');\n }\n /**\n * Sets the index buffer\n * @todo - how to unset it if we change geometry?\n */\n setIndexBuffer(indexBuffer) {\n this.vertexArray.setIndexBuffer(indexBuffer);\n this.setNeedsRedraw('indexBuffer');\n }\n /**\n * Sets attributes (buffers)\n * @note Overrides any attributes previously set with the same name\n */\n setAttributes(buffers, options) {\n const disableWarnings = options?.disableWarnings ?? this.props.disableWarnings;\n if (buffers['indices']) {\n log.warn(`Model:${this.id} setAttributes() - indexBuffer should be set using setIndexBuffer()`)();\n }\n // ensure bufferLayout order matches source layout so we bind\n // the correct buffers to the correct indices in webgpu.\n this.bufferLayout = sortedBufferLayoutByShaderSourceLocations(this.pipeline.shaderLayout, this.bufferLayout);\n const bufferLayoutHelper = new BufferLayoutHelper(this.bufferLayout);\n // Check if all buffers have a layout\n for (const [bufferName, buffer] of Object.entries(buffers)) {\n const bufferLayout = bufferLayoutHelper.getBufferLayout(bufferName);\n if (!bufferLayout) {\n if (!disableWarnings) {\n log.warn(`Model(${this.id}): Missing layout for buffer \"${bufferName}\".`)();\n }\n continue; // eslint-disable-line no-continue\n }\n // In WebGL, for an interleaved attribute we may need to set multiple attributes\n // but in WebGPU, we set it according to the buffer's position in the vertexArray\n const attributeNames = bufferLayoutHelper.getAttributeNamesForBuffer(bufferLayout);\n let set = false;\n for (const attributeName of attributeNames) {\n const attributeInfo = this._attributeInfos[attributeName];\n if (attributeInfo) {\n const location = this.device.type === 'webgpu'\n ? bufferLayoutHelper.getBufferIndex(attributeInfo.bufferName)\n : attributeInfo.location;\n this.vertexArray.setBuffer(location, buffer);\n set = true;\n }\n }\n if (!set && !disableWarnings) {\n log.warn(`Model(${this.id}): Ignoring buffer \"${buffer.id}\" for unknown attribute \"${bufferName}\"`)();\n }\n }\n this.setNeedsRedraw('attributes');\n }\n /**\n * Sets constant attributes\n * @note Overrides any attributes previously set with the same name\n * Constant attributes are only supported in WebGL, not in WebGPU\n * Any attribute that is disabled in the current vertex array object\n * is read from the context's global constant value for that attribute location.\n * @param constantAttributes\n */\n setConstantAttributes(attributes, options) {\n for (const [attributeName, value] of Object.entries(attributes)) {\n const attributeInfo = this._attributeInfos[attributeName];\n if (attributeInfo) {\n this.vertexArray.setConstantWebGL(attributeInfo.location, value);\n }\n else if (!(options?.disableWarnings ?? this.props.disableWarnings)) {\n log.warn(`Model \"${this.id}: Ignoring constant supplied for unknown attribute \"${attributeName}\"`)();\n }\n }\n this.setNeedsRedraw('constants');\n }\n // INTERNAL METHODS\n /** Check that bindings are loaded. Returns id of first binding that is still loading. */\n _areBindingsLoading() {\n for (const binding of Object.values(this.bindings)) {\n if (binding instanceof AsyncTexture && !binding.isReady) {\n return binding.id;\n }\n }\n return false;\n }\n /** Extracts texture view from loaded async textures. Returns null if any textures have not yet been loaded. */\n _getBindings() {\n const validBindings = {};\n for (const [name, binding] of Object.entries(this.bindings)) {\n if (binding instanceof AsyncTexture) {\n // Check that async textures are loaded\n if (binding.isReady) {\n validBindings[name] = binding.texture;\n }\n }\n else {\n validBindings[name] = binding;\n }\n }\n return validBindings;\n }\n /** Get the timestamp of the latest updated bound GPU memory resource (buffer/texture). */\n _getBindingsUpdateTimestamp() {\n let timestamp = 0;\n for (const binding of Object.values(this.bindings)) {\n if (binding instanceof TextureView) {\n timestamp = Math.max(timestamp, binding.texture.updateTimestamp);\n }\n else if (binding instanceof Buffer || binding instanceof Texture) {\n timestamp = Math.max(timestamp, binding.updateTimestamp);\n }\n else if (binding instanceof AsyncTexture) {\n timestamp = binding.texture\n ? Math.max(timestamp, binding.texture.updateTimestamp)\n : // The texture will become available in the future\n Infinity;\n }\n else if (!(binding instanceof Sampler)) {\n timestamp = Math.max(timestamp, binding.buffer.updateTimestamp);\n }\n }\n return timestamp;\n }\n /**\n * Updates the optional geometry attributes\n * Geometry, sets several attributes, indexBuffer, and also vertex count\n * @note Can trigger a pipeline rebuild / pipeline cache fetch on WebGPU\n */\n _setGeometryAttributes(gpuGeometry) {\n // Filter geometry attribute so that we don't issue warnings for unused attributes\n const attributes = { ...gpuGeometry.attributes };\n for (const [attributeName] of Object.entries(attributes)) {\n if (!this.pipeline.shaderLayout.attributes.find(layout => layout.name === attributeName) &&\n attributeName !== 'positions') {\n delete attributes[attributeName];\n }\n }\n // TODO - delete previous geometry?\n this.vertexCount = gpuGeometry.vertexCount;\n this.setIndexBuffer(gpuGeometry.indices || null);\n this.setAttributes(gpuGeometry.attributes, { disableWarnings: true });\n this.setAttributes(attributes, { disableWarnings: this.props.disableWarnings });\n this.setNeedsRedraw('geometry attributes');\n }\n /** Mark pipeline as needing update */\n _setPipelineNeedsUpdate(reason) {\n this._pipelineNeedsUpdate ||= reason;\n this.setNeedsRedraw(reason);\n }\n /** Update pipeline if needed */\n _updatePipeline() {\n if (this._pipelineNeedsUpdate) {\n let prevShaderVs = null;\n let prevShaderFs = null;\n if (this.pipeline) {\n log.log(1, `Model ${this.id}: Recreating pipeline because \"${this._pipelineNeedsUpdate}\".`)();\n prevShaderVs = this.pipeline.vs;\n prevShaderFs = this.pipeline.fs;\n }\n this._pipelineNeedsUpdate = false;\n const vs = this.shaderFactory.createShader({\n id: `${this.id}-vertex`,\n stage: 'vertex',\n source: this.source || this.vs,\n debugShaders: this.props.debugShaders\n });\n let fs = null;\n if (this.source) {\n fs = vs;\n }\n else if (this.fs) {\n fs = this.shaderFactory.createShader({\n id: `${this.id}-fragment`,\n stage: 'fragment',\n source: this.source || this.fs,\n debugShaders: this.props.debugShaders\n });\n }\n this.pipeline = this.pipelineFactory.createRenderPipeline({\n ...this.props,\n bufferLayout: this.bufferLayout,\n topology: this.topology,\n parameters: this.parameters,\n // TODO - why set bindings here when we reset them every frame?\n // Should we expose a BindGroup abstraction?\n bindings: this._getBindings(),\n vs,\n fs\n });\n this._attributeInfos = getAttributeInfosFromLayouts(this.pipeline.shaderLayout, this.bufferLayout);\n if (prevShaderVs)\n this.shaderFactory.release(prevShaderVs);\n if (prevShaderFs)\n this.shaderFactory.release(prevShaderFs);\n }\n return this.pipeline;\n }\n /** Throttle draw call logging */\n _lastLogTime = 0;\n _logOpen = false;\n _logDrawCallStart() {\n // IF level is 4 or higher, log every frame.\n const logDrawTimeout = log.level > 3 ? 0 : LOG_DRAW_TIMEOUT;\n if (log.level < 2 || Date.now() - this._lastLogTime < logDrawTimeout) {\n return;\n }\n this._lastLogTime = Date.now();\n this._logOpen = true;\n log.group(LOG_DRAW_PRIORITY, `>>> DRAWING MODEL ${this.id}`, { collapsed: log.level <= 2 })();\n }\n _logDrawCallEnd() {\n if (this._logOpen) {\n const shaderLayoutTable = getDebugTableForShaderLayout(this.pipeline.shaderLayout, this.id);\n // log.table(logLevel, attributeTable)();\n // log.table(logLevel, uniformTable)();\n log.table(LOG_DRAW_PRIORITY, shaderLayoutTable)();\n const uniformTable = this.shaderInputs.getDebugTable();\n log.table(LOG_DRAW_PRIORITY, uniformTable)();\n const attributeTable = this._getAttributeDebugTable();\n log.table(LOG_DRAW_PRIORITY, this._attributeInfos)();\n log.table(LOG_DRAW_PRIORITY, attributeTable)();\n log.groupEnd(LOG_DRAW_PRIORITY)();\n this._logOpen = false;\n }\n }\n _drawCount = 0;\n _logFramebuffer(renderPass) {\n const debugFramebuffers = this.device.props.debugFramebuffers;\n this._drawCount++;\n // Update first 3 frames and then every 60 frames\n if (!debugFramebuffers) {\n // } || (this._drawCount++ > 3 && this._drawCount % 60)) {\n return;\n }\n // TODO - display framebuffer output in debug window\n const framebuffer = renderPass.props.framebuffer;\n if (framebuffer) {\n debugFramebuffer(framebuffer, { id: framebuffer.id, minimap: true });\n // log.image({logLevel: LOG_DRAW_PRIORITY, message: `${framebuffer.id} %c sup?`, image})();\n }\n }\n _getAttributeDebugTable() {\n const table = {};\n for (const [name, attributeInfo] of Object.entries(this._attributeInfos)) {\n const values = this.vertexArray.attributes[attributeInfo.location];\n table[attributeInfo.location] = {\n name,\n type: attributeInfo.shaderType,\n values: values\n ? this._getBufferOrConstantValues(values, attributeInfo.bufferDataType)\n : 'null'\n };\n }\n if (this.vertexArray.indexBuffer) {\n const { indexBuffer } = this.vertexArray;\n const values = indexBuffer.indexType === 'uint32'\n ? new Uint32Array(indexBuffer.debugData)\n : new Uint16Array(indexBuffer.debugData);\n table['indices'] = {\n name: 'indices',\n type: indexBuffer.indexType,\n values: values.toString()\n };\n }\n return table;\n }\n // TODO - fix typing of luma data types\n _getBufferOrConstantValues(attribute, dataType) {\n const TypedArrayConstructor = getTypedArrayConstructor(dataType);\n const typedArray = attribute instanceof Buffer ? new TypedArrayConstructor(attribute.debugData) : attribute;\n return typedArray.toString();\n }\n}\nfunction shaderModuleHasUniforms(module) {\n return Boolean(module.uniformTypes && !isObjectEmpty(module.uniformTypes));\n}\n// HELPERS\n/** Create a shadertools platform info from the Device */\nexport function getPlatformInfo(device) {\n return {\n type: device.type,\n shaderLanguage: device.info.shadingLanguage,\n shaderLanguageVersion: device.info.shadingLanguageVersion,\n gpu: device.info.gpu,\n // HACK - we pretend that the DeviceFeatures is a Set, it has a similar API\n features: device.features\n };\n}\n/** Returns true if given object is empty, false otherwise. */\nfunction isObjectEmpty(obj) {\n // @ts-ignore key is unused\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n for (const key in obj) {\n return false;\n }\n return true;\n}\n//# sourceMappingURL=model.js.map","// luma.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nimport { Buffer } from '@luma.gl/core';\nimport { getPassthroughFS } from '@luma.gl/shadertools';\nimport { Model } from \"../model/model.js\";\n/**\n * Manages a WebGL program (pipeline) for buffer→buffer transforms.\n * @note Only works under WebGL2.\n */\nexport class BufferTransform {\n device;\n model;\n transformFeedback;\n static defaultProps = {\n ...Model.defaultProps,\n outputs: undefined,\n feedbackBuffers: undefined\n };\n static isSupported(device) {\n return device?.info?.type === 'webgl';\n }\n constructor(device, props = BufferTransform.defaultProps) {\n if (!BufferTransform.isSupported(device)) {\n throw new Error('BufferTransform not yet implemented on WebGPU');\n }\n this.device = device;\n this.model = new Model(this.device, {\n id: props.id || 'buffer-transform-model',\n fs: props.fs || getPassthroughFS(),\n topology: props.topology || 'point-list',\n varyings: props.outputs || props.varyings,\n ...props\n });\n this.transformFeedback = this.device.createTransformFeedback({\n layout: this.model.pipeline.shaderLayout,\n // @ts-expect-error TODO\n buffers: props.feedbackBuffers\n });\n this.model.setTransformFeedback(this.transformFeedback);\n Object.seal(this);\n }\n /** Destroy owned resources. */\n destroy() {\n if (this.model) {\n this.model.destroy();\n }\n }\n /** @deprecated Use {@link destroy}. */\n delete() {\n this.destroy();\n }\n /** Run one transform loop. */\n run(options) {\n if (options?.inputBuffers) {\n this.model.setAttributes(options.inputBuffers);\n }\n if (options?.outputBuffers) {\n this.transformFeedback.setBuffers(options.outputBuffers);\n }\n const renderPass = this.device.beginRenderPass(options);\n this.model.draw(renderPass);\n renderPass.end();\n }\n // DEPRECATED METHODS\n /** @deprecated App knows what buffers it is passing in - Returns the {@link Buffer} or {@link BufferRange} for given varying name. */\n getBuffer(varyingName) {\n return this.transformFeedback.getBuffer(varyingName);\n }\n /** @deprecated App knows what buffers it is passing in - Reads the {@link Buffer} or {@link BufferRange} for given varying name. */\n readAsync(varyingName) {\n const result = this.getBuffer(varyingName);\n if (!result) {\n throw new Error('BufferTransform#getBuffer');\n }\n if (result instanceof Buffer) {\n return result.readAsync();\n }\n const { buffer, byteOffset = 0, byteLength = buffer.byteLength } = result;\n return buffer.readAsync(byteOffset, byteLength);\n }\n}\n//# sourceMappingURL=buffer-transform.js.map","/*!\n * Copyright (c) 2021-2025 WeatherLayers.com\n *\n * WeatherLayers GL 2025.11.0\n *\n * Package and source code is dual-licensed, the choice of license is MPL-2.0 or our License Terms of Use. Contact support@weatherlayers.com for details.\n *\n * Homepage - https://weatherlayers.com/\n * Demo - https://demo.weatherlayers.com/\n * Docs - https://docs.weatherlayers.com/\n * WeatherLayers GL License Terms of Use - https://weatherlayers.com/license-terms-of-use.html\n */\n\nimport{colorRampCanvas as e,parsePalette as t}from\"cpt2js\";export{colorRampCanvas,parsePalette}from\"cpt2js\";import{COORDINATE_SYSTEM as n,CompositeLayer as a}from\"@deck.gl/core\";import{BitmapLayer as i,TextLayer as o,PathLayer as r,IconLayer as A,LineLayer as s}from\"@deck.gl/layers\";import{CollisionFilterExtension as l,PathStyleExtension as c}from\"@deck.gl/extensions\";import{distance as g,destinationPoint as u,initialBearing as p}from\"geodesy-fn\";import{wrap as d,transfer as h}from\"comlink\";import{transform as m,factory as C}from\"rollup-plugin-worker-factory/src/browser.js\";import{SphericalMercator as I}from\"@mapbox/sphericalmercator\";import v from\"icomesh\";import f from\"kdbush\";import*as E from\"geokdbush\";import{BufferTransform as B}from\"@luma.gl/engine\";const Q=\"2025.11.0\",y=\"2025-11-16T21:46:37.022Z\",b=new Map;function w(e,t){b.set(e,t)}const x={INWARD:\"INWARD\",OUTWARD:\"OUTWARD\"},T={VALUE:\"VALUE\",CARDINAL:\"CARDINAL\",CARDINAL2:\"CARDINAL2\",CARDINAL3:\"CARDINAL3\"},M={[T.CARDINAL]:[\"N\",\"E\",\"S\",\"W\"],[T.CARDINAL2]:[\"N\",\"NE\",\"E\",\"SE\",\"S\",\"SW\",\"W\",\"NW\"],[T.CARDINAL3]:[\"N\",\"NNE\",\"NE\",\"ENE\",\"E\",\"ESE\",\"SE\",\"SSE\",\"S\",\"SSW\",\"SW\",\"WSW\",\"W\",\"WNW\",\"NW\",\"NNW\"]};function O(e,t){if(!t)return`${Math.round(e)}`;const{scale:n=1,offset:a=0,decimals:i=0}=t,o=n*e+a;return`${i?Math.round(o*10**i)/10**i:Math.round(o)}`}function P(e){return e.unit.replace(\"^2\",\"²\").replace(\"^3\",\"³\")}function S(e,t){return`${O(e,t)} ${P(t)}`}function V(e,t,n){if(t===x.OUTWARD&&(e+=180),n===T.VALUE)return`${Math.round(e%360)}°`;if(n===T.CARDINAL||n===T.CARDINAL2||n===T.CARDINAL3){const t=M[n],a=360/t.length;return t[Math.floor((e%360+a/2)/a)%t.length]}throw new Error(\"Invalid state\")}const U=1,D=[255,255,255],N='\"Helvetica Neue\", Arial, Helvetica, sans-serif',J=12,L=[255,255,255],F=1,Z=[13,13,13],W=O,q=40,k=[255,255,255];function R(e,t){const n={};for(const a in e)if(void 0===e[a]&&a in t){const e=t[a];e&&(\"value\"in e?e.value&&(n[a]=e.value):n[a]=e)}return Object.freeze({...e,...n})}class G{constructor(e){this._running=!1,this._raf=void 0,this._lastFrameTime=0,this._config=e}getConfig(){return{...this._config}}setConfig(e){this._config=e}updateConfig(e){this.setConfig({...this._config,...e})}get running(){return this._running}toggle(e=!this._running){e?this.start():this.stop()}start(){this._running||(this._running=!0,this._raf=window.requestAnimationFrame((()=>this.step())))}stop(){this._running&&(this._running=!1,this._raf&&(window.cancelAnimationFrame(this._raf),this._raf=void 0))}step(){const e=1e3/(this._config.fps??30),t=Date.now(),n=t-this._lastFrameTime;n>e&&(this._lastFrameTime=t-n%e,this._config.onUpdate()),this._running&&(this._raf=window.requestAnimationFrame((()=>this.step())))}}const K=new Map;const z=new class{constructor(){this.queue=Promise.resolve()}async run(e){const t=this.queue;let n;this.queue=new Promise((e=>{n=e}));try{return await t,await e()}finally{n()}}};async function X(e,t){const n=await async function(e){if(b.has(e))return b.get(e);try{if(\"geotiff\"===e)return await import(\"geotiff\")}catch(t){throw new Error(`Optional dependency '${e}' is missing, install it with a package manager or provide with \\`setLibrary('${e}', library)\\``,{cause:t})}}(\"geotiff\");let a;try{a=await n.fromUrl(e,{allowFullFile:!0,blockSize:Number.MAX_SAFE_INTEGER,fetch:(e,n)=>fetch(e,{...n,headers:{...n?.headers,...t?.headers}})},t?.signal)}catch(t){throw new Error(`Image ${e} can't be decoded.`,{cause:t})}const i=await a.getImage(0),o=await i.readRasters({interleave:!0,signal:t?.signal});if(!(o instanceof Uint8Array||o instanceof Uint8ClampedArray||o instanceof Float32Array))throw new Error(\"Unsupported data format\");const r=function(e,t){if(null==t)return e;const n=e.slice(0);for(let e=0;e<n.length;e++)Math.abs(n[e]-t)<2*Number.EPSILON&&(n[e]=NaN);return n}(o,i.getGDALNoData());return{data:r,width:i.getWidth(),height:i.getHeight()}}function j(e){return async(t,n)=>{if(!1===n?.cache)return e(t);const a=n?.cache??K,i=t+(n?.headers?\":\"+JSON.stringify(n?.headers):\"\"),o=a.get(i);if(o)return o;const r={...n,cache:void 0},A=e(t,r);return a.set(i,A),A.then((e=>{a.set(i,e)})),A}}const H=j((async(e,t)=>{if(e.includes(\".png\")||e.includes(\".webp\")||e.includes(\"image/png\")||e.includes(\"image/webp\"))return async function(e,t){let n;if(t?.headers||t?.signal){const a=await fetch(e,{headers:t.headers,signal:t.signal});if(!a.ok)throw new Error(`URL ${e} can't be loaded. Status: ${a.status}`);const i=await a.blob();n=URL.createObjectURL(i)}const a=new Image;try{await new Promise(((t,i)=>{a.addEventListener(\"load\",t),a.addEventListener(\"error\",i),a.crossOrigin=\"anonymous\",a.src=n??e}))}catch(t){throw new Error(`URL ${e} can't be loaded.`,{cause:t})}finally{n&&URL.revokeObjectURL(n)}try{await z.run((()=>a.decode()))}catch(t){throw new Error(`Image ${e} can't be decoded.`,{cause:t})}const i=document.createElement(\"canvas\");i.width=a.width,i.height=a.height;const o=i.getContext(\"2d\");o.drawImage(a,0,0);const r=o.getImageData(0,0,i.width,i.height),{data:A,width:s,height:l}=r;return{data:A,width:s,height:l}}(e,t);if(e.includes(\".tif\")||e.includes(\"image/tif\"))return X(e,t);throw new Error(\"Unsupported data format\")})),Y=j((async(e,t)=>{const n=await fetch(e,{headers:t?.headers});if(!n.ok)throw new Error(`URL ${e} can't be loaded. Status: ${n.status}`);return n.json()}));function _(e,t,n){if(!t){if(0===n)return e;throw new Error(\"Invalid state\")}if(n<=0)return e;if(n>=1)return t;{const a=new Date(e),i=new Date(t);return new Date(a.getTime()+(i.getTime()-a.getTime())*n).toISOString()}}function $(e,t,n){if(!t){if(e===n)return 0;throw new Error(\"Invalid state\")}if(n<=e)return 0;if(n>=t)return 1;{const a=new Date(e),i=new Date(t);return(new Date(n).getTime()-a.getTime())/(i.getTime()-a.getTime())}}function ee(e,t){return[...e].reverse().find((e=>e<=t))}function te(e,t){return e.find((e=>e>=t))}function ne(e,t){const n=new Date(e);return new Date(n.getTime()+1e3*t*60*60).toISOString()}function ae(e,t,n){return[ne(e,t),ne(e,n)]}function ie(e){if(!e)return e;const t=new Date(e);if(!t.getDate())return e;return`${t.getUTCFullYear()}/${`${t.getUTCMonth()+1}`.padStart(2,\"0\")}/${`${t.getUTCDate()}`.padStart(2,\"0\")} ${`${t.getUTCHours()}`.padStart(2,\"0\")}:${`${t.getUTCMinutes()}`.padStart(2,\"0\")} UTC`}const oe={NEAREST:\"NEAREST\",LINEAR:\"LINEAR\",CUBIC:\"CUBIC\"},re={SCALAR:\"SCALAR\",VECTOR:\"VECTOR\"},Ae={METRIC:\"METRIC\",METRIC_KILOMETERS:\"METRIC_KILOMETERS\",IMPERIAL:\"IMPERIAL\",NAUTICAL:\"NAUTICAL\"},se={BOTTOM:\"BOTTOM\",TOP:\"TOP\",RIGHT:\"RIGHT\",LEFT:\"LEFT\"};function le(e){return e%1}function ce(e,t){return e.map(((n,a)=>e[a]+t[a]))}function ge(e,t){return e.map(((n,a)=>e[a]*t))}function ue(e,t){return e.map(((n,a)=>e[a]*t[a])).reduce(((e,t)=>e+t))}function pe(e,t,n){return e===t?e:e*(1-n)+t*n}function de(e,t,n){return e.map(((a,i)=>pe(e[i],t[i],n)))}function he(e,t){return t?e[3]>=255:!isNaN(e[0])}function me(e,t,n){return t===re.VECTOR?n?[pe(n[0],n[1],e[0]/255),pe(n[0],n[1],e[1]/255)]:[e[0],e[1]]:[NaN,NaN]}function Ce(e,t,n){if(t===re.VECTOR){const a=me(e,t,n);return Math.hypot(a[0],a[1])}return function(e,t,n){return t===re.VECTOR?0:n?pe(n[0],n[1],e[0]/255):e[0]}(e,t,n)}function Ie(e,t,n,a,i,o){const{data:r,width:A,height:s}=e,l=r.length/(A*s),c=(n+i+.5)/t[0],g=(a+o+.5)/t[1],u=Math.max(0,Math.min(A-1,Math.floor(c*A))),p=Math.max(0,Math.min(s-1,Math.floor(g*s)));return new Array(l).fill(void 0).map(((e,t)=>r[(u+p*A)*l+t]))}const ve=[3,-6,0,4].map((e=>e/6)),fe=[-1,6,-12,8].map((e=>e/6));function Ee(e){return[e*e*e,e*e,e,1]}function Be(e,t,n,a,i){const o=ce(ce(ce(ge(e,ue(fe,Ee(i+1))),ge(t,ue(ve,Ee(i)))),ge(n,ue(ve,Ee(1-i)))),ge(a,ue(fe,Ee(2-i))));return o[3]=e[3]>0&&t[3]>0&&n[3]>0&&a[3]>0?Math.max(Math.max(Math.max(e[3],t[3]),n[3]),a[3]):0,o}function Qe(e,t,n,a,i){return n===oe.CUBIC?function(e,t,n,a){const i=n*t[0]-.5,o=a*t[1]-.5,r=Math.floor(i),A=Math.floor(o),s=le(i),l=le(o);return Be(Be(Ie(e,t,r,A,-1,-1),Ie(e,t,r,A,0,-1),Ie(e,t,r,A,1,-1),Ie(e,t,r,A,2,-1),s),Be(Ie(e,t,r,A,-1,0),Ie(e,t,r,A,0,0),Ie(e,t,r,A,1,0),Ie(e,t,r,A,2,0),s),Be(Ie(e,t,r,A,-1,1),Ie(e,t,r,A,0,1),Ie(e,t,r,A,1,1),Ie(e,t,r,A,2,1),s),Be(Ie(e,t,r,A,-1,2),Ie(e,t,r,A,0,2),Ie(e,t,r,A,1,2),Ie(e,t,r,A,2,2),s),l)}(e,t,a,i):n===oe.LINEAR?function(e,t,n,a){const i=n*t[0]-.5,o=a*t[1]-.5,r=Math.floor(i),A=Math.floor(o),s=le(i),l=le(o);return de(de(Ie(e,t,r,A,0,0),Ie(e,t,r,A,1,0),s),de(Ie(e,t,r,A,0,1),Ie(e,t,r,A,1,1),s),l)}(e,t,a,i):function(e,t,n,a){const i=n*t[0]-.5,o=a*t[1]-.5;return Ie(e,t,Math.round(i),Math.round(o),0,0)}(e,t,a,i)}function ye(e,t,n,a,i,o,r,A){const s=o?r+.5/n[0]:pe(0+.5/n[0],1-.5/n[0],r),l=pe(0+.5/n[1],1-.5/n[1],A);if(t&&i>0){return de(Qe(e,n,a,s,l),Qe(t,n,a,s,l),i)}return Qe(e,n,a,s,l)}function be(e,t,n){const a=1+Math.max(0,n);return[e/a,t/a]}const we=-180,xe=180,Te=-85.051129,Me=85.051129;function Oe(e,t){let n=((e+180)%(a=360)+a)%a-180;var a;return\"number\"==typeof t&&n<t&&(n+=360),n}function Pe(e){return e[2]-e[0]==360}function Se(e,t){return{type:\"Feature\",geometry:{type:\"Point\",coordinates:e},properties:t}}function Ve(e,t,n){const{image:a,image2:i,imageSmoothing:o,imageInterpolation:r,imageWeight:A,imageType:s,imageUnscale:l,imageMinValue:c,imageMaxValue:g}=e,{width:u,height:p}=a,d=function(e,t,n){const a=[n[0],n[3]],i=(n[2]-n[0])/e,o=(n[3]-n[1])/t;return e=>{const[t,n]=e;return[(t-a[0])/i,(a[1]-n)/o]}}(u,p,t),h=be(u,p,o),m=Pe(t),C=n.map((e=>{if(!function(e,t){return e[0]>=t[0]&&e[0]<=t[2]&&e[1]>=t[1]&&e[1]<=t[3]}(e,t))return Se(e,{value:NaN});const n=d(e),o=n[0]/u,C=n[1]/p,I=ye(a,i,h,r,A,m,o,C);if(!he(I,l))return Se(e,{value:NaN});const v=Ce(I,s,l);if(\"number\"==typeof c&&!isNaN(c)&&v<c||\"number\"==typeof g&&!isNaN(g)&&v>g)return Se(e,{value:NaN});if(s===re.VECTOR){const t=function(e,t,n){if(t===re.VECTOR){const a=me(e,t,n);return(360-(Math.atan2(a[1],a[0])/Math.PI*180+180)-270)%360}return NaN}(I,s,l);return Se(e,{value:v,direction:t})}return Se(e,{value:v})}));return{type:\"FeatureCollection\",features:C}}function Ue(e,t){const{image:n,image2:a,imageSmoothing:i,imageInterpolation:o,imageWeight:r,imageType:A,imageUnscale:s,imageMinValue:l,imageMaxValue:c}=e,{width:g,height:u}=n,p=o!==oe.NEAREST?oe.NEAREST:o,d=be(g,u,i),h=Pe(t),m=new Float32Array(g*u);for(let e=0;e<u;e++)for(let t=0;t<g;t++){const i=t+e*g,o=ye(n,a,d,p,r,h,t/g,e/u);if(!he(o,s)){m[i]=NaN;continue}const C=Ce(o,A,s);\"number\"==typeof l&&!isNaN(l)&&C<l||\"number\"==typeof c&&!isNaN(c)&&C>c?m[i]=NaN:m[i]=C}return{data:m,width:g,height:u}}const De=new WeakMap,Ne=new WeakMap;function Je(e,t){const{data:n,width:a,height:i}=t,o=n.length/(a*i);if(n instanceof Uint8Array||n instanceof Uint8ClampedArray){if(4===o)return\"rgba8unorm\";if(2===o)return\"rg8unorm\";if(1===o)return\"r8unorm\";throw new Error(\"Unsupported data format\")}if(n instanceof Float32Array){if(!e.features.has(\"float32-renderable-webgl\"))throw new Error(\"Float textures are required\");if(2===o)return\"rg32float\";if(1===o)return\"r32float\";throw new Error(\"Unsupported data format\")}throw new Error(\"Unsupported data format\")}function Le(e,t,n=!1){const a=n?De:Ne,i=a.get(e)??(()=>{const t=new WeakMap;return a.set(e,t),t})();return i.get(t)??(()=>{const a=e.createTexture({format:Je(e,t),width:t.width,height:t.height,mipLevels:1,sampler:{magFilter:\"nearest\",minFilter:\"nearest\",addressModeU:n?\"repeat\":\"clamp-to-edge\",addressModeV:\"clamp-to-edge\",lodMaxClamp:0}});return a.copyImageData({data:t.data,bytesPerRow:t.width}),i.set(t,a),a})()}let Fe=null;function Ze(e){return Fe||(Fe=e.createTexture({width:1,height:1,mipLevels:1}),Fe.copyImageData({data:new Uint8Array([0,0,0,0])})),Fe}const We=6370972;function qe(e,t){return g(e,t,We)}function ke(e,t,n){return u(e,t,n,We)}function Re(e){return!!e.resolution}function Ge(e){return!Re(e)}function Ke(e,t,n){return!(null!=t&&e.zoom<t)&&!(null!=n&&e.zoom>n)}function ze(e){return[e.longitude,e.latitude]}function Xe(e){const t=ze(e);return Math.max(qe(t,e.unproject([e.width/2,0])),qe(t,e.unproject([0,e.height/2])),...e.width>e.height?[qe(t,e.unproject([e.width/2-e.height/4*1,e.height/2])),qe(t,e.unproject([e.width/2-e.height/2*1,e.height/2])),qe(t,e.unproject([e.width/2-e.height/4*3,e.height/2])),qe(t,e.unproject([e.width/2-e.height,e.height/2]))]:[qe(t,e.unproject([e.width/2,e.height/2-e.width/4*1])),qe(t,e.unproject([e.width/2,e.height/2-e.width/2*1])),qe(t,e.unproject([e.width/2,e.height/2-e.width/4*3])),qe(t,e.unproject([e.width/2,e.height/2-e.width]))])}function je(e){return function(e){const t=e[2]-e[0]<360?Oe(e[0]):we,n=e[2]-e[0]<360?Oe(e[2],t):xe;return[t,Math.max(e[1],Te),n,Math.min(e[3],Me)]}(e.getBounds())}function He(e){return Re(e)?Math.log2(e.scale):e.zoom}function Ye(e,t){return t*(Re(e)?-1:1)}function _e(e,t){return t+(Re(e)?180:0)}function $e(t,n){const a=n.domain(),i=[a[0],a[a.length-1]],o=e(n),r=t.createTexture({width:o.width,height:o.height,mipLevels:1,sampler:{magFilter:\"linear\",minFilter:\"linear\",addressModeU:\"clamp-to-edge\",addressModeV:\"clamp-to-edge\"}});return r.copyExternalImage({image:o}),{paletteBounds:i,paletteTexture:r}}function et(e){return[e[0]/255,e[1]/255,e[2]/255,(e[3]??255)/255]}function tt(e){return[e[0],e[1],e[2],255*e[3]]}const nt=\"uniform bitmap2Uniforms{vec4 A;bool B;float C;vec4 D;}bitmap2;const float E=512.;const float F=3.1415926536;const float G=E/F/2.;vec2 H(vec2 I){float J=I.x;float K=clamp(I.y,-89.9,89.9);return vec2(radians(J)+F,F+log(tan(F*0.25+radians(K)*0.5)))*G;}vec2 L(vec2 M){M/=G;return degrees(vec2(M.x-F,atan(exp(M.y-F))*2.-F*0.5));}vec4 N(vec3 O,float P){return mix(bitmap2.D,vec4(O,1.),P);}vec2 Q(vec2 R){return vec2((R.x-bitmap2.A[0])/(bitmap2.A[2]-bitmap2.A[0]),(R.y-bitmap2.A[3])/(bitmap2.A[1]-bitmap2.A[3]));}vec2 S(vec2 T,vec2 U){vec2 uv=T;if(bitmap2.C<-0.5){vec2 I=L(U);uv=Q(I);}else if(bitmap2.C>0.5){vec2 V=H(U);uv=Q(V);}return uv;}\",at=\"A\",it=\"B\",ot=\"C\",rt=\"D\";const At=Math.PI,st=At/4,lt=At/180,ct=512;function gt(e){const[t,n]=e,a=n*lt;return[ct*(t*lt+At)/(2*At),ct*(At+Math.log(Math.tan(st+.5*a)))/(2*At)]}function ut(e={}){const{LNGLAT:t,CARTESIAN:a,DEFAULT:i}=n;let{viewportGlobe:o,bounds:r,_imageCoordinateSystem:A}=e;if(!function(e){return Number.isFinite(e[0])}(r))throw new Error(\"_imageCoordinateSystem only supports rectangular bounds\");if(A!==i){const e=o?t:a;if(A=A===t?t:a,A===t&&e===a)return{coordinateConversion:-1,bounds:r};if(A===a&&e===t){const e=gt([r[0],r[1]]),t=gt([r[2],r[3]]);return{coordinateConversion:1,bounds:[e[0],e[1],t[0],t[1]]}}}return{coordinateConversion:0,bounds:r}}const pt={name:\"bitmap2\",vs:nt,fs:nt,uniformTypes:{[at]:\"vec4<f32>\",[it]:\"f32\",[ot]:\"f32\",[rt]:\"vec4<f32>\"},getUniforms:function(e={}){const{bounds:t,coordinateConversion:n}=ut(e);return{[at]:t,[it]:Pe(t)?1:0,[ot]:n,[rt]:e.transparentColor?et(e.transparentColor):[0,0,0,0]}}},dt=\"uniform sampler2D W;uniform sampler2D X;uniform rasterUniforms{vec2 Y;float Z;float a;float b;float c;vec2 d;float e;float f;float g;float h;vec4 i;float j;float k;vec4 l;}raster;\",ht=\"W\",mt=\"X\",Ct=\"Y\",It=\"Z\",vt=\"a\",ft=\"b\",Et=\"c\",Bt=\"d\",Qt=\"e\",yt=\"f\",bt=\"g\",wt=\"h\",xt=\"i\",Tt=\"j\",Mt=\"k\",Ot=\"l\";const Pt={name:\"raster\",vs:dt,fs:dt,uniformTypes:{[Ct]:\"vec2<f32>\",[It]:\"f32\",[vt]:\"f32\",[ft]:\"f32\",[Et]:\"f32\",[Bt]:\"vec2<f32>\",[Qt]:\"f32\",[yt]:\"f32\",[bt]:\"f32\",[wt]:\"f32\",[xt]:\"vec4<f32>\",[Tt]:\"f32\",[Mt]:\"f32\",[Ot]:\"vec4<f32>\"},getUniforms:function(e={}){return{[ht]:e.imageTexture,[mt]:e.imageTexture2,[Ct]:e.imageTexture?[e.imageTexture.width,e.imageTexture.height]:[0,0],[It]:e.imageSmoothing??0,[vt]:Object.values(oe).indexOf(e.imageInterpolation??oe.NEAREST),[ft]:e.imageTexture2!==e.imageTexture&&e.imageWeight?e.imageWeight:0,[Et]:Object.values(re).indexOf(e.imageType??re.SCALAR),[Bt]:e.imageUnscale??[0,0],[Qt]:e.imageMinValue??Number.MIN_SAFE_INTEGER,[yt]:e.imageMaxValue??Number.MAX_SAFE_INTEGER,[bt]:e.borderEnabled?1:0,[wt]:e.borderWidth??0,[xt]:e.borderColor?et(e.borderColor):[0,0,0,0],[Tt]:e.gridEnabled?1:0,[Mt]:e.gridSize??0,[Ot]:e.gridColor?et(e.gridColor):[0,0,0,0]}}},St=\"uniform sampler2D m;uniform paletteUniforms{vec2 n;vec4 o;}palette;float p(float min,float max,float q){return(q-min)/(max-min);}vec4 r(sampler2D m,vec2 n,vec4 o,float q){if(n[0]<n[1]){float s=p(n[0],n[1],q);return texture(m,vec2(s,0.));}else{return o;}}\",Vt=\"m\",Ut=\"n\",Dt=\"o\";const Nt={name:\"palette\",vs:St,fs:St,uniformTypes:{[Ut]:\"vec2<f32>\",[Dt]:\"vec4<f32>\"},getUniforms:function(e={}){return{[Vt]:e.paletteTexture,[Ut]:e.paletteBounds??[0,0],[Dt]:e.paletteColor?et(e.paletteColor):[0,0,0,0]}}},Jt={imageTexture:{type:\"object\",value:null},imageTexture2:{type:\"object\",value:null},imageSmoothing:{type:\"number\",value:0},imageInterpolation:{type:\"object\",value:oe.CUBIC},imageWeight:{type:\"number\",value:0},imageType:{type:\"object\",value:re.SCALAR},imageUnscale:{type:\"array\",value:null},imageMinValue:{type:\"object\",value:null},imageMaxValue:{type:\"object\",value:null},bounds:{type:\"array\",value:[-180,-90,180,90],compare:!0},minZoom:{type:\"object\",value:null},maxZoom:{type:\"object\",value:null},palette:{type:\"object\",value:null},borderEnabled:{type:\"boolean\",value:!1},borderWidth:{type:\"number\",value:1},borderColor:{type:\"color\",value:D},gridEnabled:{type:\"boolean\",value:!1},gridSize:{type:\"number\",value:1},gridColor:{type:\"color\",value:D}};class Lt extends i{getShaders(){const e=super.getShaders();return{...e,fs:\"#version 300 es\\n#define SHADER_NAME raster-bitmap-layer-fragment-shader\\n#ifdef GL_ES\\nprecision highp float;\\n#endif\\nvec4 AG(sampler2D AH,vec2 AI,vec2 AJ,vec2 AK){vec2 uv=(AJ+AK+0.5)/AI;return texture(AH,uv);}const vec4 AL=vec4(3.,-6.,0.,4.)/6.;const vec4 AM=vec4(-1.,6.,-12.,8.)/6.;vec4 AN(float J){return vec4(J*J*J,J*J,J,1.);}vec4 AO(vec4 AP,vec4 AQ,vec4 AR,vec4 AS,float AT){vec4 O=AP*dot(AM,AN(AT+1.))+AQ*dot(AL,AN(AT))+AR*dot(AL,AN(1.-AT))+AS*dot(AM,AN(2.-AT));O.a=(AP.a>0.&&AQ.a>0.&&AR.a>0.&&AS.a>0.)?max(max(max(AP.a,AQ.a),AR.a),AS.a):0.;return O;}vec4 AU(sampler2D AH,vec2 AI,vec2 uv){vec2 AV=uv*AI-0.5;vec2 AJ=floor(AV);vec2 AW=fract(AV);return AO(AO(AG(AH,AI,AJ,vec2(-1,-1)),AG(AH,AI,AJ,vec2(0,-1)),AG(AH,AI,AJ,vec2(1,-1)),AG(AH,AI,AJ,vec2(2,-1)),AW.x),AO(AG(AH,AI,AJ,vec2(-1,0)),AG(AH,AI,AJ,vec2(0,0)),AG(AH,AI,AJ,vec2(1,0)),AG(AH,AI,AJ,vec2(2,0)),AW.x),AO(AG(AH,AI,AJ,vec2(-1,1)),AG(AH,AI,AJ,vec2(0,1)),AG(AH,AI,AJ,vec2(1,1)),AG(AH,AI,AJ,vec2(2,1)),AW.x),AO(AG(AH,AI,AJ,vec2(-1,2)),AG(AH,AI,AJ,vec2(0,2)),AG(AH,AI,AJ,vec2(1,2)),AG(AH,AI,AJ,vec2(2,2)),AW.x),AW.y);}vec4 AX(sampler2D AH,vec2 AI,vec2 uv){vec2 AV=uv*AI-0.5;vec2 AJ=floor(AV);vec2 AW=fract(AV);return mix(mix(AG(AH,AI,AJ,vec2(0,0)),AG(AH,AI,AJ,vec2(1,0)),AW.x),mix(AG(AH,AI,AJ,vec2(0,1)),AG(AH,AI,AJ,vec2(1,1)),AW.x),AW.y);}vec4 AY(sampler2D AH,vec2 AI,vec2 uv){vec2 AV=uv*AI-0.5;vec2 AJ=floor(AV+0.5);return AG(AH,AI,AJ,vec2(0,0));}vec4 AZ(sampler2D AH,vec2 AI,float a,vec2 uv){if(a==2.){return AU(AH,AI,uv);}if(a==1.){return AX(AH,AI,uv);}else{return AY(AH,AI,uv);}}vec4 Aa(sampler2D AH,sampler2D Ab,vec2 AI,float a,float b,bool B,vec2 uv){vec2 Ac;Ac.x=B?uv.x+0.5/AI.x:mix(0.+0.5/AI.x,1.-0.5/AI.x,uv.x);Ac.y=mix(0.+0.5/AI.y,1.-0.5/AI.y,uv.y);if(b>0.){vec4 Ad=AZ(AH,AI,a,Ac);vec4 Ae=AZ(Ab,AI,a,Ac);return mix(Ad,Ae,b);}else{return AZ(AH,AI,a,Ac);}}vec4 Af(sampler2D AH,sampler2D Ab,vec2 Y,float Z,float a,float b,bool B,vec2 uv){float Ag=1.+max(0.,Z);vec2 AI=Y/Ag;return Aa(AH,Ab,AI,a,b,B,uv);}float Ah(float K,float J){return J==0.?sign(K)*F/2.:atan(K,J);}bool Ai(float q){uint Aj=floatBitsToUint(q);return(Aj&0x7fffffffu)>0x7f800000u;}bool Ak(vec4 Ad,vec2 d){if(d[0]<d[1]){return Ad.a>=1.;}else{return!Ai(Ad.x);}}float Al(vec4 Ad,float c,vec2 d){if(c==1.){return 0.;}else{if(d[0]<d[1]){return mix(d[0],d[1],Ad.x);}else{return Ad.x;}}}vec2 Am(vec4 Ad,float c,vec2 d){if(c==1.){if(d[0]<d[1]){return mix(vec2(d[0]),vec2(d[1]),Ad.xy);}else{return Ad.xy;}}else{return vec2(0.);}}float An(vec4 Ad,float c,vec2 d){if(c==1.){vec2 q=Am(Ad,c,d);return length(q);}else{return Al(Ad,c,d);}}float Ao(vec4 Ad,float c,vec2 d){if(c==1.){vec2 q=Am(Ad,c,d);return mod((360.-(Ah(q.y,q.x)/F*180.+180.))-270.,360.)/360.;}else{return 0.;}}in vec2 vTexCoord;in vec2 vTexPos;out vec4 fragColor;void main(void){vec2 uv=S(vTexCoord,vTexPos);vec4 Ad=Af(W,X,raster.Y,raster.Z,raster.a,raster.b,bitmap2.B,uv);if(!Ak(Ad,raster.d)){discard;}float q=An(Ad,raster.c,raster.d);if((!Ai(raster.e)&&q<raster.e)||(!Ai(raster.f)&&q>raster.f)){discard;}vec4 Ap=r(m,palette.n,palette.o,q);fragColor=N(Ap.rgb,Ap.a*layer.opacity);if(bool(raster.g)){vec2 Aq=vec2(length(dFdx(uv)),length(dFdy(uv)));vec2 h=raster.h/2.*Aq;if((uv.x<h.x||uv.x>1.-h.x)||(uv.y<h.y||uv.y>1.-h.y)){fragColor=N(raster.i.rgb,raster.i.a*layer.opacity*2.);}}if(bool(raster.j)){float Ag=1.+max(0.,raster.Z);vec2 AI=raster.Y/Ag;vec2 Ac;Ac.x=bitmap2.B?uv.x+0.5/AI.x:mix(0.+0.5/AI.x,1.-0.5/AI.x,uv.x);Ac.y=mix(0.+0.5/AI.y,1.-0.5/AI.y,uv.y);vec2 AV=Ac*AI-0.5;vec2 AW=fract(AV);vec2 Aq=vec2(length(dFdx(uv)),length(dFdy(uv)));vec2 k=raster.k/2.*Aq*raster.Y;if((AW.x<k.x||AW.x>1.-k.x)&&(AW.y<k.y||AW.y>1.-k.y)){fragColor=N(raster.l.rgb,raster.l.a*layer.opacity*2.);}}geometry.uv=uv;DECKGL_FILTER_COLOR(fragColor,geometry);if(bool(picking.isActive)&&!bool(picking.isAttribute)){float s=p(palette.n[0],palette.n[1],q);float Ar=Ao(Ad,raster.c,raster.d);fragColor=vec4(s,Ar,0,1);}}\",modules:[...e.modules,pt,Pt,Nt]}}updateState(e){const{palette:t}=e.props;super.updateState(e),t!==e.oldProps.palette&&this._updatePalette()}draw(e){const{device:t,viewport:n}=this.context,{model:a}=this.state,{imageTexture:i,imageTexture2:o,imageSmoothing:r,imageInterpolation:A,imageWeight:s,imageType:l,imageUnscale:c,imageMinValue:g,imageMaxValue:u,bounds:p,_imageCoordinateSystem:d,transparentColor:h,minZoom:m,maxZoom:C,borderEnabled:I,borderWidth:v,borderColor:f,gridEnabled:E,gridSize:B,gridColor:Q}=R(this.props,Jt),{paletteTexture:y,paletteBounds:b}=this.state;if(!i)return;const w=Re(n);a&&Ke(n,m,C)&&(a.shaderInputs.setProps({[pt.name]:{viewportGlobe:w,bounds:p,_imageCoordinateSystem:d,transparentColor:h},[Pt.name]:{imageTexture:i??Ze(t),imageTexture2:o??Ze(t),imageSmoothing:r,imageInterpolation:A,imageWeight:s,imageType:l,imageUnscale:c,imageMinValue:g,imageMaxValue:u,borderEnabled:I,borderWidth:v,borderColor:f,gridEnabled:E,gridSize:B,gridColor:Q},[Nt.name]:{paletteTexture:y??Ze(t),paletteBounds:b}}),this.props.image=i,super.draw(e),this.props.image=null)}_updatePalette(){const{device:e}=this.context,{palette:n}=R(this.props,Jt);if(!n)return void this.setState({paletteTexture:void 0,paletteBounds:void 0});const a=t(n),{paletteBounds:i,paletteTexture:o}=$e(e,a);this.setState({paletteTexture:o,paletteBounds:i})}_getRasterMagnitudeValue(e,t){return t[0]+e[0]/255*(t[1]-t[0])}_getRasterDirectionValue(e){const{imageType:t}=R(this.props,Jt);return t===re.VECTOR?e[1]/255*360:NaN}getPickingInfo(e){const t=super.getPickingInfo(e),{imageType:n}=R(this.props,Jt),{paletteBounds:a}=this.state;if(!t.color)return t;let i;const o=this._getRasterMagnitudeValue(t.color,a??[0,0]);if(n===re.VECTOR){i={value:o,direction:this._getRasterDirectionValue(t.color)}}else i={value:o};return t.raster=i,t}}Lt.layerName=\"RasterBitmapLayer\",Lt.defaultProps=Jt;const Ft={...Lt.defaultProps,imageTexture:void 0,imageTexture2:void 0,image:{type:\"object\",value:null},image2:{type:\"object\",value:null},bounds:{type:\"array\",value:[-180,-90,180,90],compare:!0}};class Zt extends a{renderLayers(){const{device:e}=this.context,{props:t,imageTexture:a,imageTexture2:i}=this.state;return t&&a?[new Lt(this.props,this.getSubLayerProps({id:\"bitmap\",imageTexture:a,imageTexture2:i,_imageCoordinateSystem:n.LNGLAT,parameters:{cullMode:\"back\",depthCompare:\"always\",...this.props.parameters},image:Ze(e),image2:Ze(e)}))]:[]}updateState(e){const{image:t,image2:n,imageUnscale:a,bounds:i}=e.props;if(super.updateState(e),t&&a&&!(t.data instanceof Uint8Array||t.data instanceof Uint8ClampedArray))throw new Error(\"imageUnscale can be applied to Uint8 data only\");if(t!==e.oldProps.image||n!==e.oldProps.image2){const{device:e}=this.context,{image:t,image2:n}=this.props,a=t?Le(e,t,Pe(i)):null,o=n?Le(e,n,Pe(i)):null;this.setState({imageTexture:a,imageTexture2:o})}this.setState({props:e.props})}}Zt.layerName=\"RasterLayer\",Zt.defaultProps=Ft;const Wt=\"uniform contourUniforms{float t;float u;float v;}contour;\",qt=\"t\",kt=\"u\",Rt=\"v\";const Gt={name:\"contour\",vs:Wt,fs:Wt,uniformTypes:{[qt]:\"f32\",[kt]:\"f32\",[Rt]:\"f32\"},getUniforms:function(e={}){return{[qt]:e.interval,[kt]:e.majorInterval,[Rt]:e.width}}},Kt={imageTexture:{type:\"object\",value:null},imageTexture2:{type:\"object\",value:null},imageSmoothing:{type:\"number\",value:0},imageInterpolation:{type:\"object\",value:oe.CUBIC},imageWeight:{type:\"number\",value:0},imageType:{type:\"object\",value:re.SCALAR},imageUnscale:{type:\"object\",value:null},imageMinValue:{type:\"object\",value:null},imageMaxValue:{type:\"object\",value:null},bounds:{type:\"array\",value:[-180,-90,180,90],compare:!0},minZoom:{type:\"object\",value:null},maxZoom:{type:\"object\",value:10},palette:{type:\"object\",value:null},color:{type:\"color\",value:D},interval:{type:\"number\",value:0},majorInterval:{type:\"number\",value:0},width:{type:\"number\",value:1}};class zt extends i{getShaders(){const e=super.getShaders();return{...e,fs:\"#version 300 es\\n#define SHADER_NAME contour-bitmap-layer-fragment-shader\\n#ifdef GL_ES\\nprecision highp float;\\n#endif\\nvec4 AG(sampler2D AH,vec2 AI,vec2 AJ,vec2 AK){vec2 uv=(AJ+AK+0.5)/AI;return texture(AH,uv);}const vec4 AL=vec4(3.,-6.,0.,4.)/6.;const vec4 AM=vec4(-1.,6.,-12.,8.)/6.;vec4 AN(float J){return vec4(J*J*J,J*J,J,1.);}vec4 AO(vec4 AP,vec4 AQ,vec4 AR,vec4 AS,float AT){vec4 O=AP*dot(AM,AN(AT+1.))+AQ*dot(AL,AN(AT))+AR*dot(AL,AN(1.-AT))+AS*dot(AM,AN(2.-AT));O.a=(AP.a>0.&&AQ.a>0.&&AR.a>0.&&AS.a>0.)?max(max(max(AP.a,AQ.a),AR.a),AS.a):0.;return O;}vec4 AU(sampler2D AH,vec2 AI,vec2 uv){vec2 AV=uv*AI-0.5;vec2 AJ=floor(AV);vec2 AW=fract(AV);return AO(AO(AG(AH,AI,AJ,vec2(-1,-1)),AG(AH,AI,AJ,vec2(0,-1)),AG(AH,AI,AJ,vec2(1,-1)),AG(AH,AI,AJ,vec2(2,-1)),AW.x),AO(AG(AH,AI,AJ,vec2(-1,0)),AG(AH,AI,AJ,vec2(0,0)),AG(AH,AI,AJ,vec2(1,0)),AG(AH,AI,AJ,vec2(2,0)),AW.x),AO(AG(AH,AI,AJ,vec2(-1,1)),AG(AH,AI,AJ,vec2(0,1)),AG(AH,AI,AJ,vec2(1,1)),AG(AH,AI,AJ,vec2(2,1)),AW.x),AO(AG(AH,AI,AJ,vec2(-1,2)),AG(AH,AI,AJ,vec2(0,2)),AG(AH,AI,AJ,vec2(1,2)),AG(AH,AI,AJ,vec2(2,2)),AW.x),AW.y);}vec4 AX(sampler2D AH,vec2 AI,vec2 uv){vec2 AV=uv*AI-0.5;vec2 AJ=floor(AV);vec2 AW=fract(AV);return mix(mix(AG(AH,AI,AJ,vec2(0,0)),AG(AH,AI,AJ,vec2(1,0)),AW.x),mix(AG(AH,AI,AJ,vec2(0,1)),AG(AH,AI,AJ,vec2(1,1)),AW.x),AW.y);}vec4 AY(sampler2D AH,vec2 AI,vec2 uv){vec2 AV=uv*AI-0.5;vec2 AJ=floor(AV+0.5);return AG(AH,AI,AJ,vec2(0,0));}vec4 AZ(sampler2D AH,vec2 AI,float a,vec2 uv){if(a==2.){return AU(AH,AI,uv);}if(a==1.){return AX(AH,AI,uv);}else{return AY(AH,AI,uv);}}vec4 Aa(sampler2D AH,sampler2D Ab,vec2 AI,float a,float b,bool B,vec2 uv){vec2 Ac;Ac.x=B?uv.x+0.5/AI.x:mix(0.+0.5/AI.x,1.-0.5/AI.x,uv.x);Ac.y=mix(0.+0.5/AI.y,1.-0.5/AI.y,uv.y);if(b>0.){vec4 Ad=AZ(AH,AI,a,Ac);vec4 Ae=AZ(Ab,AI,a,Ac);return mix(Ad,Ae,b);}else{return AZ(AH,AI,a,Ac);}}vec4 Af(sampler2D AH,sampler2D Ab,vec2 Y,float Z,float a,float b,bool B,vec2 uv){float Ag=1.+max(0.,Z);vec2 AI=Y/Ag;return Aa(AH,Ab,AI,a,b,B,uv);}float Ah(float K,float J){return J==0.?sign(K)*F/2.:atan(K,J);}bool Ai(float q){uint Aj=floatBitsToUint(q);return(Aj&0x7fffffffu)>0x7f800000u;}bool Ak(vec4 Ad,vec2 d){if(d[0]<d[1]){return Ad.a>=1.;}else{return!Ai(Ad.x);}}float Al(vec4 Ad,float c,vec2 d){if(c==1.){return 0.;}else{if(d[0]<d[1]){return mix(d[0],d[1],Ad.x);}else{return Ad.x;}}}vec2 Am(vec4 Ad,float c,vec2 d){if(c==1.){if(d[0]<d[1]){return mix(vec2(d[0]),vec2(d[1]),Ad.xy);}else{return Ad.xy;}}else{return vec2(0.);}}float An(vec4 Ad,float c,vec2 d){if(c==1.){vec2 q=Am(Ad,c,d);return length(q);}else{return Al(Ad,c,d);}}float Ao(vec4 Ad,float c,vec2 d){if(c==1.){vec2 q=Am(Ad,c,d);return mod((360.-(Ah(q.y,q.x)/F*180.+180.))-270.,360.)/360.;}else{return 0.;}}in vec2 vTexCoord;in vec2 vTexPos;out vec4 fragColor;void main(void){vec2 uv=S(vTexCoord,vTexPos);vec4 Ad=Af(W,X,raster.Y,raster.Z,raster.a,raster.b,bitmap2.B,uv);if(!Ak(Ad,raster.d)){discard;}float q=An(Ad,raster.c,raster.d);if((!Ai(raster.e)&&q<raster.e)||(!Ai(raster.f)&&q>raster.f)){discard;}float Ap=contour.u>contour.t?floor(contour.u/contour.t):1.;float Aq=q/contour.t;float Ar=(step(fract(Aq/Ap),0.1)+1.)/2.;float As=contour.v*Ar;float At=abs(fract(Aq+0.5)-0.5);float Au=length(vec2(dFdx(Aq),dFdy(Aq)));float Av=1.-clamp((At/Au)+0.5-As,0.,1.);if(Au==0.){Av=0.;}float Aw=Av*Ar;vec4 Ax=r(m,palette.n,palette.o,q);fragColor=vec4(Ax.rgb,Ax.a*Aw*layer.opacity);geometry.uv=uv;DECKGL_FILTER_COLOR(fragColor,geometry);}\",modules:[...e.modules,pt,Pt,Nt,Gt]}}updateState(e){const{palette:t}=e.props;super.updateState(e),t!==e.oldProps.palette&&this._updatePalette()}draw(e){const{device:t,viewport:n}=this.context,{model:a}=this.state,{imageTexture:i,imageTexture2:o,imageSmoothing:r,imageInterpolation:A,imageWeight:s,imageType:l,imageUnscale:c,imageMinValue:g,imageMaxValue:u,bounds:p,_imageCoordinateSystem:d,transparentColor:h,minZoom:m,maxZoom:C,color:I,interval:v,majorInterval:f,width:E}=R(this.props,Kt),{paletteTexture:B,paletteBounds:Q}=this.state;if(!i)return;const y=Re(n);a&&Ke(n,m,C)&&(a.shaderInputs.setProps({[pt.name]:{viewportGlobe:y,bounds:p,_imageCoordinateSystem:d,transparentColor:h},[Pt.name]:{imageTexture:i??Ze(t),imageTexture2:o??Ze(t),imageSmoothing:r,imageInterpolation:A,imageWeight:s,imageType:l,imageUnscale:c,imageMinValue:g,imageMaxValue:u},[Nt.name]:{paletteTexture:B??Ze(t),paletteBounds:Q,paletteColor:I},[Gt.name]:{interval:v,majorInterval:f,width:E}}),this.props.image=i,super.draw(e),this.props.image=null)}_updatePalette(){const{device:e}=this.context,{palette:n}=R(this.props,Kt);if(!n)return void this.setState({paletteTexture:void 0,paletteBounds:void 0});const a=t(n),{paletteBounds:i,paletteTexture:o}=$e(e,a);this.setState({paletteTexture:o,paletteBounds:i})}}zt.layerName=\"ContourBitmapLayer\",zt.defaultProps=Kt;const Xt={...zt.defaultProps,imageTexture:void 0,imageTexture2:void 0,image:{type:\"object\",value:null},image2:{type:\"object\",value:null}};class jt extends a{renderLayers(){const{device:e}=this.context,{props:t,imageTexture:a,imageTexture2:i}=this.state;return t&&a?[new zt(this.props,this.getSubLayerProps({id:\"bitmap\",imageTexture:a,imageTexture2:i,_imageCoordinateSystem:n.LNGLAT,parameters:{cullMode:\"back\",depthCompare:\"always\",...this.props.parameters},image:Ze(e),image2:Ze(e)}))]:[]}updateState(e){const{image:t,image2:n,imageUnscale:a,bounds:i}=e.props;if(super.updateState(e),t&&a&&!(t.data instanceof Uint8Array||t.data instanceof Uint8ClampedArray))throw new Error(\"imageUnscale can be applied to Uint8 data only\");if(t!==e.oldProps.image||n!==e.oldProps.image2){const{device:e}=this.context,{image:t,image2:n}=this.props,a=t?Le(e,t,Pe(i)):null,o=n?Le(e,n,Pe(i)):null;this.setState({imageTexture:a,imageTexture2:o})}this.setState({props:e.props})}}jt.layerName=\"ContourLayer\",jt.defaultProps=Xt;const Ht=\"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\";function Yt(e=20){return new Array(e).fill(void 0).map((()=>Ht.charAt(Math.floor(62*Math.random())))).join(\"\")}const _t=m(($t=function(){const e=Symbol(\"Comlink.proxy\"),t=Symbol(\"Comlink.endpoint\"),n=Symbol(\"Comlink.releaseProxy\"),a=Symbol(\"Comlink.finalizer\"),i=Symbol(\"Comlink.thrown\"),o=e=>\"object\"==typeof e&&null!==e||\"function\"==typeof e,r={canHandle:t=>o(t)&&t[e],serialize(e){const{port1:t,port2:n}=new MessageChannel;return s(e,t),[n,[n]]},deserialize:e=>(e.start(),function(e,t){const n=new Map;return e.addEventListener(\"message\",(function(e){const{data:t}=e;if(!t||!t.id)return;const a=n.get(t.id);if(a)try{a(t)}finally{n.delete(t.id)}})),d(e,n,[],t)}(e))},A=new Map([[\"proxy\",r],[\"throw\",{canHandle:e=>o(e)&&i in e,serialize({value:e}){let t;return t=e instanceof Error?{isError:!0,value:{message:e.message,name:e.name,stack:e.stack}}:{isError:!1,value:e},[t,[]]},deserialize(e){if(e.isError)throw Object.assign(new Error(e.value.message),e.value);throw e.value}}]]);function s(t,n=globalThis,o=[\"*\"]){n.addEventListener(\"message\",(function r(A){if(!A||!A.data)return;if(!function(e,t){for(const n of e){if(t===n||\"*\"===n)return!0;if(n instanceof RegExp&&n.test(t))return!0}return!1}(o,A.origin))return void console.warn(`Invalid origin '${A.origin}' for comlink proxy`);const{id:c,type:g,path:u}=Object.assign({path:[]},A.data),p=(A.data.argumentList||[]).map(v);let d;try{const n=u.slice(0,-1).reduce(((e,t)=>e[t]),t),a=u.reduce(((e,t)=>e[t]),t);switch(g){case\"GET\":d=a;break;case\"SET\":n[u.slice(-1)[0]]=v(A.data.value),d=!0;break;case\"APPLY\":d=a.apply(n,p);break;case\"CONSTRUCT\":d=function(t){return Object.assign(t,{[e]:!0})}(new a(...p));break;case\"ENDPOINT\":{const{port1:e,port2:n}=new MessageChannel;s(t,n),d=C(e,[e])}break;case\"RELEASE\":d=void 0;break;default:return}}catch(e){d={value:e,[i]:0}}Promise.resolve(d).catch((e=>({value:e,[i]:0}))).then((e=>{const[i,o]=I(e);n.postMessage(Object.assign(Object.assign({},i),{id:c}),o),\"RELEASE\"===g&&(n.removeEventListener(\"message\",r),l(n),a in t&&\"function\"==typeof t[a]&&t[a]())})).catch((e=>{const[t,a]=I({value:new TypeError(\"Unserializable return value\"),[i]:0});n.postMessage(Object.assign(Object.assign({},t),{id:c}),a)}))})),n.start&&n.start()}function l(e){(function(e){return\"MessagePort\"===e.constructor.name})(e)&&e.close()}function c(e){if(e)throw new Error(\"Proxy has been released and is not useable\")}function g(e){return f(e,new Map,{type:\"RELEASE\"}).then((()=>{l(e)}))}const u=new WeakMap,p=\"FinalizationRegistry\"in globalThis&&new FinalizationRegistry((e=>{const t=(u.get(e)||0)-1;u.set(e,t),0===t&&g(e)}));function d(e,a,i=[],o=function(){}){let r=!1;const A=new Proxy(o,{get(t,o){if(c(r),o===n)return()=>{!function(e){p&&p.unregister(e)}(A),g(e),a.clear(),r=!0};if(\"then\"===o){if(0===i.length)return{then:()=>A};const t=f(e,a,{type:\"GET\",path:i.map((e=>e.toString()))}).then(v);return t.then.bind(t)}return d(e,a,[...i,o])},set(t,n,o){c(r);const[A,s]=I(o);return f(e,a,{type:\"SET\",path:[...i,n].map((e=>e.toString())),value:A},s).then(v)},apply(n,o,A){c(r);const s=i[i.length-1];if(s===t)return f(e,a,{type:\"ENDPOINT\"}).then(v);if(\"bind\"===s)return d(e,a,i.slice(0,-1));const[l,g]=h(A);return f(e,a,{type:\"APPLY\",path:i.map((e=>e.toString())),argumentList:l},g).then(v)},construct(t,n){c(r);const[o,A]=h(n);return f(e,a,{type:\"CONSTRUCT\",path:i.map((e=>e.toString())),argumentList:o},A).then(v)}});return function(e,t){const n=(u.get(t)||0)+1;u.set(t,n),p&&p.register(e,t,e)}(A,e),A}function h(e){const t=e.map(I);return[t.map((e=>e[0])),(n=t.map((e=>e[1])),Array.prototype.concat.apply([],n))];var n}const m=new WeakMap;function C(e,t){return m.set(e,t),e}function I(e){for(const[t,n]of A)if(n.canHandle(e)){const[a,i]=n.serialize(e);return[{type:\"HANDLER\",name:t,value:a},i]}return[{type:\"RAW\",value:e},m.get(e)||[]]}function v(e){switch(e.type){case\"HANDLER\":return A.get(e.name).deserialize(e.value);case\"RAW\":return e.value}}function f(e,t,n,a){return new Promise((i=>{const o=new Array(4).fill(0).map((()=>Math.floor(Math.random()*Number.MAX_SAFE_INTEGER).toString(16))).join(\"-\");t.set(o,i),e.start&&e.start(),e.postMessage(Object.assign({id:o},n),a)}))}const E=6371e3;function B(e){return e/180*Math.PI}const Q=6370972;function y(e,t){return function(e,t,n=E){const a=n,i=B(e[1]),o=B(e[0]),r=B(t[1]),A=r-i,s=B(t[0])-o,l=Math.sin(A/2)*Math.sin(A/2)+Math.cos(i)*Math.cos(r)*Math.sin(s/2)*Math.sin(s/2);return a*(2*Math.atan2(Math.sqrt(l),Math.sqrt(1-l)))}(e,t,Q)}const b={NEAREST:\"NEAREST\",LINEAR:\"LINEAR\",CUBIC:\"CUBIC\"},w={VECTOR:\"VECTOR\"};function x(e){return e%1}function T(e,t){return e.map(((n,a)=>e[a]+t[a]))}function M(e,t){return e.map(((n,a)=>e[a]*t))}function O(e,t){return e.map(((n,a)=>e[a]*t[a])).reduce(((e,t)=>e+t))}function P(e,t,n){return e===t?e:e*(1-n)+t*n}function S(e,t,n){return e.map(((a,i)=>P(e[i],t[i],n)))}function V(e,t){return t?e[3]>=255:!isNaN(e[0])}function U(e,t,n){if(t===w.VECTOR){const a=function(e,t,n){return t===w.VECTOR?n?[P(n[0],n[1],e[0]/255),P(n[0],n[1],e[1]/255)]:[e[0],e[1]]:[NaN,NaN]}(e,t,n);return Math.hypot(a[0],a[1])}return function(e,t,n){return t===w.VECTOR?0:n?P(n[0],n[1],e[0]/255):e[0]}(e,t,n)}function D(e,t,n,a,i,o){const{data:r,width:A,height:s}=e,l=r.length/(A*s),c=(n+i+.5)/t[0],g=(a+o+.5)/t[1],u=Math.max(0,Math.min(A-1,Math.floor(c*A))),p=Math.max(0,Math.min(s-1,Math.floor(g*s)));return new Array(l).fill(void 0).map(((e,t)=>r[(u+p*A)*l+t]))}const N=[3,-6,0,4].map((e=>e/6)),J=[-1,6,-12,8].map((e=>e/6));function L(e){return[e*e*e,e*e,e,1]}function F(e,t,n,a,i){const o=T(T(T(M(e,O(J,L(i+1))),M(t,O(N,L(i)))),M(n,O(N,L(1-i)))),M(a,O(J,L(2-i))));return o[3]=e[3]>0&&t[3]>0&&n[3]>0&&a[3]>0?Math.max(Math.max(Math.max(e[3],t[3]),n[3]),a[3]):0,o}function Z(e,t,n,a,i){return n===b.CUBIC?function(e,t,n,a){const i=n*t[0]-.5,o=a*t[1]-.5,r=Math.floor(i),A=Math.floor(o),s=x(i),l=x(o);return F(F(D(e,t,r,A,-1,-1),D(e,t,r,A,0,-1),D(e,t,r,A,1,-1),D(e,t,r,A,2,-1),s),F(D(e,t,r,A,-1,0),D(e,t,r,A,0,0),D(e,t,r,A,1,0),D(e,t,r,A,2,0),s),F(D(e,t,r,A,-1,1),D(e,t,r,A,0,1),D(e,t,r,A,1,1),D(e,t,r,A,2,1),s),F(D(e,t,r,A,-1,2),D(e,t,r,A,0,2),D(e,t,r,A,1,2),D(e,t,r,A,2,2),s),l)}(e,t,a,i):n===b.LINEAR?function(e,t,n,a){const i=n*t[0]-.5,o=a*t[1]-.5,r=Math.floor(i),A=Math.floor(o),s=x(i),l=x(o);return S(S(D(e,t,r,A,0,0),D(e,t,r,A,1,0),s),S(D(e,t,r,A,0,1),D(e,t,r,A,1,1),s),l)}(e,t,a,i):function(e,t,n,a){const i=n*t[0]-.5,o=a*t[1]-.5;return D(e,t,Math.round(i),Math.round(o),0,0)}(e,t,a,i)}function W(e,t,n,a,i,o,r,A){const s=o?r+.5/n[0]:P(0+.5/n[0],1-.5/n[0],r),l=P(0+.5/n[1],1-.5/n[1],A);return t&&i>0?S(Z(e,n,a,s,l),Z(t,n,a,s,l),i):Z(e,n,a,s,l)}function q(e,t){const{image:n,image2:a,imageSmoothing:i,imageInterpolation:o,imageWeight:r,imageType:A,imageUnscale:s,imageMinValue:l,imageMaxValue:c}=e,{width:g,height:u}=n,p=o!==b.NEAREST?b.NEAREST:o,d=function(e,t,n){const a=1+Math.max(0,n);return[e/a,t/a]}(g,u,i),h=function(e){return e[2]-e[0]==360}(t),m=new Float32Array(g*u);for(let e=0;e<u;e++)for(let t=0;t<g;t++){const i=t+e*g,o=W(n,a,d,p,r,h,t/g,e/u);if(!V(o,s)){m[i]=NaN;continue}const C=U(o,A,s);\"number\"==typeof l&&!isNaN(l)&&C<l||\"number\"==typeof c&&!isNaN(c)&&C>c?m[i]=NaN:m[i]=C}return{data:m,width:g,height:u}}function k(e,t,n){let{data:a,width:i,height:o}=e;const r=1e3*n,A=function(e,t,n){const a=[n[0],n[3]],i=(n[2]-n[0])/e,o=(n[3]-n[1])/t;return e=>{const[t,n]=e;return[a[0]+t*i,a[1]-n*o]}}(i,o,t);a=function(e,t,n){const a=new Float32Array(e.length);for(let i=0;i<n;i++)for(let o=0;o<t;o++){const r=o+i*t;if(o>=1&&o<=t-2&&i>=1&&i<=n-2){const n=[e[o-1+(i-1)*t],e[o+(i-1)*t],e[o+1+(i-1)*t],e[o-1+i*t],e[o+i*t],e[o+1+i*t],e[o-1+(i+1)*t],e[o+(i+1)*t],e[o+1+(i-1)*t]];a[r]=n.reduce(((e,t)=>e+t),0)/n.length}else a[r]=e[r]}return a}(a,i,o);let s=[],l=[];for(let e=1;e<o-1;e++)for(let t=1;t<i-1;t++){const n=a[t+e*i];if(!isNaN(n)&&n>=a[t+1+e*i]&&n>=a[t+1+(e+1)*i]&&n>=a[t+(e+1)*i]&&n>=a[t-1+(e+1)*i]&&n>a[t-1+e*i]&&n>a[t-1+(e-1)*i]&&n>a[t+(e-1)*i]&&n>a[t+1+(e-1)*i]){const a=A([t,e]);s.push({position:a,value:n})}if(!isNaN(n)&&n<=a[t+1+e*i]&&n<=a[t+1+(e+1)*i]&&n<=a[t+(e+1)*i]&&n<=a[t-1+(e+1)*i]&&n<a[t-1+e*i]&&n<a[t-1+(e-1)*i]&&n<a[t+(e-1)*i]&&n<a[t+1+(e-1)*i]){const a=A([t,e]);l.push({position:a,value:n})}}s=s.sort(((e,t)=>t.value-e.value)),l=l.sort(((e,t)=>e.value-t.value));const c=[...s];for(let e=0;e<c.length;e++){const t=c[e];if(t)for(let n=e+1;n<c.length;n++){const e=c[n];e&&y(t.position,e.position)<r&&(c[n]=void 0)}}s=c.filter((e=>!!e));const g=[...l];for(let e=0;e<g.length;e++){const t=g[e];if(t)for(let n=e+1;n<g.length;n++){const e=g[n];e&&y(t.position,e.position)<r&&(g[n]=void 0)}}return l=g.filter((e=>!!e)),new Float32Array([s.length,...s.map((e=>[...e.position,e.value])).flat(),l.length,...l.map((e=>[...e.position,e.value])).flat()])}s({getHighLowPointData(e,t,n,a,i,o,r,A,s,l,c,g,u,p,d){const h=function(e,t,n){return k(q(e,t),t,n)}({image:{data:e,width:t,height:n},image2:a?{data:a,width:i,height:o}:null,imageSmoothing:r,imageInterpolation:A,imageWeight:s,imageType:l,imageUnscale:c,imageMinValue:g,imageMaxValue:u},p,d);return C(h,[h.buffer])}})},$t.toString().replace(/^function.+?{/,\"\").slice(0,-1)));var $t,en=C(_t);const tn={LOW:\"L\",HIGH:\"H\"},nn=d(en());function an(e,t){return{type:\"Feature\",geometry:{type:\"Point\",coordinates:e},properties:t}}async function on(e,t,n){const{image:a,image2:i,imageSmoothing:o,imageInterpolation:r,imageWeight:A,imageType:s,imageUnscale:l,imageMinValue:c,imageMaxValue:g}=e,{data:u,width:p,height:d}=a,{data:m=null,width:C=null,height:I=null}=i||{},v=u.slice(0),f=m?m.slice(0):null,E=function(e){let t=0;const n=[],a=e[t++];for(let i=0;i<a;i++){const a=[e[t++],e[t++]],i=e[t++];n.push(an(a,{type:tn.HIGH,value:i}))}const i=e[t++];for(let a=0;a<i;a++){const a=[e[t++],e[t++]],i=e[t++];n.push(an(a,{type:tn.LOW,value:i}))}return n}(await nn.getHighLowPointData(h(v,[v.buffer]),p,d,f?h(f,[f.buffer]):null,C,I,o,r,A,s,l,c,g,t,n));return{type:\"FeatureCollection\",features:E}}const rn=\"high-low-label\";function An(e,t,n){return e.properties.type===tn.HIGH?Math.round((e.properties.value-n)/n*100):Math.round((t-e.properties.value)/t*100)}const sn={image:{type:\"object\",value:null},image2:{type:\"object\",value:null},imageSmoothing:{type:\"number\",value:0},imageInterpolation:{type:\"object\",value:oe.CUBIC},imageWeight:{type:\"number\",value:0},imageType:{type:\"object\",value:re.SCALAR},imageUnscale:{type:\"array\",value:null},imageMinValue:{type:\"object\",value:null},imageMaxValue:{type:\"object\",value:null},bounds:{type:\"array\",value:[-180,-90,180,90],compare:!0},minZoom:{type:\"object\",value:null},maxZoom:{type:\"object\",value:null},radius:{type:\"number\",value:0},unitFormat:{type:\"object\",value:null},textFormatFunction:{type:\"function\",value:W},textFontFamily:{type:\"object\",value:N},textSize:{type:\"number\",value:12},textColor:{type:\"color\",value:L},textOutlineWidth:{type:\"number\",value:1},textOutlineColor:{type:\"color\",value:Z},palette:{type:\"object\",value:null}};class ln extends a{renderLayers(){const{viewport:e}=this.context,{props:t,visiblePoints:n,minValue:a,maxValue:i}=this.state;if(!t||!n||\"number\"!=typeof a||\"number\"!=typeof i)return[];const{unitFormat:r,textFormatFunction:A,textFontFamily:s,textSize:c,textColor:g,textOutlineWidth:u,textOutlineColor:p}=R(t,sn),{paletteScale:d}=this.state;return[new o(this.getSubLayerProps({id:\"type\",data:n,getPixelOffset:[0,-Ye(e,1.2*c/2)],getPosition:e=>e.geometry.coordinates,getText:e=>e.properties.type,getSize:1.2*c,getColor:e=>d?tt(d(e.properties.value).rgba()):g,getAngle:_e(e,0),outlineWidth:u,outlineColor:p,fontFamily:s,fontSettings:{sdf:!0},billboard:!1,extensions:[new l],collisionEnabled:!0,collisionGroup:rn,collisionTestProps:{sizeScale:5},getCollisionPriority:e=>An(e,a,i),parameters:{cullMode:\"front\",depthCompare:\"always\",...this.props.parameters}})),new o(this.getSubLayerProps({id:\"value\",data:n,getPixelOffset:[0,Ye(e,1.2*c/2)],getPosition:e=>e.geometry.coordinates,getText:e=>A(e.properties.value,r),getSize:c,getColor:e=>d?tt(d(e.properties.value).rgba()):g,getAngle:_e(e,0),outlineWidth:u,outlineColor:p,fontFamily:s,fontSettings:{sdf:!0},billboard:!1,extensions:[new l],collisionEnabled:!0,collisionGroup:rn,collisionTestProps:{sizeScale:5},getCollisionPriority:e=>An(e,a,i),parameters:{cullMode:\"front\",depthCompare:\"always\",...this.props.parameters}}))]}shouldUpdateState(e){return super.shouldUpdateState(e)||e.changeFlags.viewportChanged}updateState(e){const{image:t,image2:n,imageSmoothing:a,imageInterpolation:i,imageWeight:o,imageType:r,imageUnscale:A,imageMinValue:s,imageMaxValue:l,minZoom:c,maxZoom:g,radius:u,unitFormat:p,textFormatFunction:d,textFontFamily:h,textSize:m,textColor:C,textOutlineWidth:I,textOutlineColor:v,palette:f,visible:E}=e.props;super.updateState(e),u&&E?(t===e.oldProps.image&&n===e.oldProps.image2&&a===e.oldProps.imageSmoothing&&i===e.oldProps.imageInterpolation&&o===e.oldProps.imageWeight&&r===e.oldProps.imageType&&A===e.oldProps.imageUnscale&&s===e.oldProps.imageMinValue&&l===e.oldProps.imageMaxValue&&u===e.oldProps.radius&&E===e.oldProps.visible||this._updateFeatures(),(c!==e.oldProps.minZoom||g!==e.oldProps.maxZoom||e.changeFlags.viewportChanged)&&this._updateVisibleFeatures(),f!==e.oldProps.palette&&this._updatePalette(),p===e.oldProps.unitFormat&&d===e.oldProps.textFormatFunction&&h===e.oldProps.textFontFamily&&m===e.oldProps.textSize&&C===e.oldProps.textColor&&I===e.oldProps.textOutlineWidth&&v===e.oldProps.textOutlineColor||this._redrawVisibleFeatures(),this.setState({props:e.props})):this.setState({points:void 0,visiblePoints:void 0,minValue:void 0,maxValue:void 0})}async _updateFeatures(){const{image:e,image2:t,imageSmoothing:n,imageInterpolation:a,imageType:i,imageUnscale:o,imageMinValue:r,imageMaxValue:A,imageWeight:s,bounds:l,radius:c}=R(this.props,sn);if(!e)return;const g=Yt();this.state.requestId=g;const u={image:e,image2:t,imageSmoothing:n,imageInterpolation:a,imageWeight:s,imageType:i,imageUnscale:o,imageMinValue:r,imageMaxValue:A},p=(await on(u,l,c)).features;if(this.state.requestId!==g)return;const d=p.map((e=>e.properties.value)),h=Math.min(...d),m=Math.max(...d);this.setState({points:p,minValue:h,maxValue:m}),this._updateVisibleFeatures()}_updateVisibleFeatures(){const{viewport:e}=this.context,{minZoom:t,maxZoom:n}=R(this.props,sn),{points:a}=this.state;if(!a)return;let i;i=Ke(e,t,n)?a:[],this.setState({visiblePoints:i})}_updatePalette(){const{palette:e}=R(this.props,sn);if(!e)return this.setState({paletteScale:void 0}),void this._redrawVisibleFeatures();const n=t(e);this.setState({paletteScale:n}),this._redrawVisibleFeatures()}_redrawVisibleFeatures(){this.setState({visiblePoints:Array.isArray(this.state.visiblePoints)?Array.from(this.state.visiblePoints):this.state.visiblePoints})}}ln.layerName=\"HighLowCompositeLayer\",ln.defaultProps=sn;const cn={...ln.defaultProps};class gn extends a{renderLayers(){const{props:e}=this.state;return e?[new ln(this.props,this.getSubLayerProps({id:\"composite\"}))]:[]}updateState(e){const{image:t,imageUnscale:n}=e.props;if(super.updateState(e),t&&n&&!(t.data instanceof Uint8Array||t.data instanceof Uint8ClampedArray))throw new Error(\"imageUnscale can be applied to Uint8 data only\");this.setState({props:e.props})}}gn.layerName=\"HighLowLayer\",gn.defaultProps=cn;const un={COLD:\"COLD\",WARM:\"WARM\",OCCLUDED:\"OCCLUDED\",STATIONARY:\"STATIONARY\"},pn={iconAtlas:\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGoAAAAqCAYAAABbec77AAAFsmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS41LjAiPgogPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIgogICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iCiAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgeG1wOkNyZWF0ZURhdGU9IjIwMjMtMDMtMTBUMTQ6NDI6NTYrMDEwMCIKICAgeG1wOk1vZGlmeURhdGU9IjIwMjMtMDMtMjVUMDk6MDY6NTgrMDE6MDAiCiAgIHhtcDpNZXRhZGF0YURhdGU9IjIwMjMtMDMtMjVUMDk6MDY6NTgrMDE6MDAiCiAgIHBob3Rvc2hvcDpEYXRlQ3JlYXRlZD0iMjAyMy0wMy0xMFQxNDo0Mjo1NiswMTAwIgogICBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIgogICBwaG90b3Nob3A6SUNDUHJvZmlsZT0ic1JHQiBJRUM2MTk2Ni0yLjEi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\",iconMapping:{COLD:{x:2,y:2,width:50,height:38,anchorY:35,mask:!0},WARM:{x:54,y:2,width:50,height:38,anchorY:35,mask:!0}}};function dn(e,t){for(let n=e.length-1;n>=0;n--)if(t.call(e,e[n],n,e))return n;return-1}const hn={data:{type:\"array\",value:[]},minZoom:{type:\"object\",value:null},maxZoom:{type:\"object\",value:null},getType:{type:\"function\",value:null},getPath:{type:\"function\",value:null},width:{type:\"number\",value:2},coldColor:{type:\"color\",value:[0,0,255]},warmColor:{type:\"color\",value:[255,0,0]},occludedColor:{type:\"color\",value:[148,0,211]},iconSize:{type:\"number\",value:15},_debug:{type:\"boolean\",value:!1}};class mn extends a{renderLayers(){const{viewport:e}=this.context,{props:t,visibleFrontLines:n,visibleDebugFrontPoints:a}=this.state;if(!t||!n||!a)return[];const{getType:i,getPath:s,width:g,coldColor:u,warmColor:p,occludedColor:d,iconSize:h,_debug:m}=R(t,hn);if(!i||!s)return[];const{iconStyle:C,iconAtlasTexture:I}=this.state;if(!C||!I)return[];const v={[un.COLD]:u,[un.WARM]:p,[un.OCCLUDED]:d,[un.STATIONARY]:u};return[new r(this.getSubLayerProps({id:\"path\",data:n,getPath:e=>[e.startPosition,...e.icons.map((e=>e.position)),e.endPosition],getColor:e=>v[i(e.d)],getWidth:g,widthUnits:\"pixels\"})),new r(this.getSubLayerProps({id:\"path-stationary-warm\",data:n.filter((e=>i(e.d)===un.STATIONARY)),getPath:e=>[e.startPosition,...e.icons.map((e=>e.position)),e.endPosition],getColor:p,getWidth:g,widthUnits:\"pixels\",extensions:[new c({dash:!0,highPrecisionDash:!0})],getDashArray:[45,45]})),new A(this.getSubLayerProps({id:\"icon\",data:n.flatMap((e=>e.icons)),getPosition:e=>e.position,getIcon:e=>i(e.d)===un.OCCLUDED||i(e.d)===un.STATIONARY?e.alternate?un.COLD:un.WARM:i(e.d),getSize:h,getColor:e=>i(e.d)===un.STATIONARY?e.alternate?v[un.COLD]:v[un.WARM]:v[i(e.d)],getAngle:t=>i(t.d)===un.STATIONARY?t.alternate?_e(e,t.direction):_e(e,t.direction+180):_e(e,t.direction),iconAtlas:I,iconMapping:C.iconMapping,sizeBasis:\"height\",billboard:!1,extensions:[new l],collisionEnabled:!0,collisionGroup:\"front-icon\",collisionTestProps:{sizeScale:5},getCollisionPriority:e=>e.priority})),...m?[new o(this.getSubLayerProps({id:\"text\",data:a,getPosition:e=>e.position,getText:e=>`${e.index}`,getSize:12,getColor:L,getAngle:_e(e,0),outlineWidth:1,outlineColor:Z,fontFamily:N,fontSettings:{sdf:!0},billboard:!1}))]:[]]}shouldUpdateState(e){return super.shouldUpdateState(e)||e.changeFlags.viewportChanged}updateState(e){const{data:t,getType:n,getPath:a,minZoom:i,maxZoom:o}=e.props;super.updateState(e),t&&n&&a?(this.state.iconStyle||this._updateIconStyle(),t===e.oldProps.data&&a===e.oldProps.getPath||this._updateFeatures(),(i!==e.oldProps.minZoom||o!==e.oldProps.maxZoom||e.changeFlags.viewportChanged)&&this._updateVisibleFeatures(),this.setState({props:e.props})):this.setState({features:void 0,debugFeatures:void 0,visibleFeatures:void 0,visibleDebugFeatures:void 0})}async _updateIconStyle(){const{device:e}=this.context;this.setState({iconStyle:pn});const t=Le(e,await H(pn.iconAtlas));this.setState({iconAtlasTexture:t})}_updateFeatures(){const{data:e,getPath:t}=R(this.props,hn);if(!t)return;const n=e.map((e=>function(e,t){const n=t,a=n.slice(0,-1).map(((e,t)=>qe(n[t],n[t+1]))).reduce(((e,t)=>[...e,e[e.length-1]+t]),[0]);let i=[];for(let e=1,t=a[a.length-1]/3;t>5e3;e++,t/=3){const o=3**e;for(let r=1;r<o;r++){if(e>1&&r%3==0)continue;const o=r*t,A=dn(a,(e=>e<=o));if(-1===A||A===n.length-1)throw new Error(\"Invalid state\");const s=A+1,l=n[A],c=n[s],g=a[A],u=p(l,c),d=ke(l,o-g,u),h=90-u,m=100-e;i.push({distance:o,position:d,direction:h,priority:m})}}i=i.sort(((e,t)=>e.distance-t.distance));const o=i.map(((t,n)=>({d:e,...t,alternate:n%2==0})));return{d:e,startPosition:t[0],endPosition:t[t.length-1],icons:o}}(e,t(e)))),a=e.flatMap((e=>t(e).map(((t,n)=>({d:e,position:t,index:n})))));this.setState({frontLines:n,debugFrontPoints:a}),this._updateVisibleFeatures()}_updateVisibleFeatures(){const{viewport:e}=this.context,{minZoom:t,maxZoom:n}=R(this.props,hn),{frontLines:a,debugFrontPoints:i}=this.state;if(!a||!i)return;let o,r;Ke(e,t,n)?(o=a,r=i):(o=[],r=[]),this.setState({visibleFrontLines:o,visibleDebugFrontPoints:r})}}mn.layerName=\"FrontCompositeLayer\",mn.defaultProps=hn;const Cn={...mn.defaultProps};class In extends a{renderLayers(){return[new mn(this.props,this.getSubLayerProps({id:\"composite\"}))]}}In.layerName=\"FrontLayer\",In.defaultProps=Cn;const vn=new Map,fn=new Map;function En(e,t=0){let n;if(Re(e)){n=function(e,t,n){const a=7;n=Math.min(Math.max(n-2,0),a);const i=vn.get(n)??(()=>{const{uv:e}=v(n,!0),t=[];for(let n=0;n<e.length;n+=2){const a=e[n],i=e[n+1];if(0===a)continue;if(i<=0||i>=1)continue;const o=360*a-180,r=180*i-90;t.push([o,r])}return t.push([0,-90]),t.push([0,90]),t})(),o=fn.get(n)??(()=>{const e=new f(i.length,void 0,Float32Array);for(let t=0;t<i.length;t++){const n=i[t];e.add(n[0],n[1])}return e.finish(),e})(),r=E.around(o,e[0],e[1],void 0,t/1e3).map((e=>i[e]));return r}(ze(e),Xe(e),Math.floor(He(e)+t+1))}else{if(!Ge(e))throw new Error(\"Invalid state\");n=function(e,t){const n=new I({size:1,antimeridian:!0}),a=[...n.px([e[0],e[1]],t),...n.px([e[2],e[3]],t)];[a[1],a[3]]=[a[3],a[1]];const i=2**t,o=a[2]-a[0]+1,r=a[3]-a[1]+1,A=[];for(let e=0;e<r;e++)for(let r=0;r<o;r++){const o=a[0]+r,s=[o,a[1]+e+(o%2==1?.5:0)];if(0===s[0])continue;if(s[1]<=0||s[1]>=i)continue;const l=n.ll([s[0],s[1]],t);l[0]=Oe(l[0]),A.push(l)}return A}(je(e),Math.floor(He(e)+t))}return n}const Bn={VALUE:\"VALUE\",ARROW:\"ARROW\",WIND_BARB:\"WIND_BARB\"},Qn=new Map([[Bn.ARROW,{iconAtlas:\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYAAABw4pVUAAAFtGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS41LjAiPgogPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIgogICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iCiAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgeG1wOkNyZWF0ZURhdGU9IjIwMjMtMDMtMTBUMTQ6NDE6MjYrMDEwMCIKICAgeG1wOk1vZGlmeURhdGU9IjIwMjQtMDItMTFUMjM6Mzc6NTErMDE6MDAiCiAgIHhtcDpNZXRhZGF0YURhdGU9IjIwMjQtMDItMTFUMjM6Mzc6NTErMDE6MDAiCiAgIHBob3Rvc2hvcDpEYXRlQ3JlYXRlZD0iMjAyMy0wMy0xMFQxNDo0MToyNiswMTAwIgogICBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIgogICBwaG90b3Nob3A6SUNDUHJvZmlsZT0ic1JHQiBJRUM2MTk2Ni0yLjEiCiAgIGV4aWY6UGl4ZWxYRGltZW5zaW9uPSIxMDAiCiAgIGV4aWY6UGl4ZWxZRGltZW5zaW9uPSIxMDAiCiAgIGV4aWY6Q29sb3JTcGFjZT0iMSIKICAgdGlmZjpJbWFnZVdpZHRoPSIxMDAiCiAgIHRpZmY6SW1hZ2VMZW5ndGg9IjEwMCIKICAgdGlmZjpSZXNvbHV0aW9uVW5pdD0iMiIKICAgdGlmZjpYUmVzb2x1dGlvbj0iNzIvMSIKICAgdGlmZjpZUmVzb2x1dGlvbj0iNzIvMSI+CiAgIDxkYzp0aXRsZT4KICAgIDxyZGY6QWx0PgogICAgIDxyZGY6bGkgeG1sOmxhbmc9IngtZGVmYXVsdCI+YXJyb3c8L3JkZjpsaT4KICAgIDwvcmRmOkFsdD4KICAgPC9kYzp0aXRsZT4KICAgPHhtcE1NOkhpc3Rvcnk+CiAgICA8cmRmOlNlcT4KICAgICA8cmRmOmxpCiAgICAgIHN0RXZ0OmFjdGlvbj0icHJvZHVjZWQiCiAgICAgIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFmZmluaXR5IERlc2lnbmVyIDIgMi4zLjEiCiAgICAgIHN0RXZ0OndoZW49IjIwMjQtMDItMTFUMjM6Mzc6NTErMDE6MDAiLz4KICAgIDwvcmRmOlNlcT4KICAgPC94bXBNTTpIaXN0b3J5PgogIDwvcmRmOkRlc2NyaXB0aW9uPgogPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KPD94cGFja2V0IGVuZD0iciI/PkD+OBEAAAGAaUNDUHNSR0IgSUVDNjE5NjYtMi4xAAAokXWRz0tCQRDHP1phpGFQRIcOEtbJwgykLkFGWCAhZpDVRZ+/ArXHe0ZE16BrUBB16deh/oK6Bp2DoCiC6Oy5qEvFa54KSuQss/PZ7+4Mu7NgjeaUvN7shXyhqEWCAddCbNFlK2HFTjduLHFFVyfC4RAN7fMRixnvB81ajc/9a/ZkSlfA0io8rqhaUXhaOLReVE3eE+5SsvGk8IWwR5MLCj+YeqLCJZMzFf42WYtGJsHaIezK1HGijpWslheWl+PO59aU6n3MlzhShfk5iX3ivehECBLAxQxTTOJnmDGZ/QziY0hWNMj3lvNnWZVcRWaVDTRWyJCliEfUNamekpgWPSUjx4bZ/7991dMjvkp1RwBaXg3jvR9su/CzYxhfJ4bxcwpNL3BdqOWvHsPoh+g7Nc19BM4tuLypaYl9uNqGnmc1rsXLUpO4NZ2Gt3Noj0HnHbQtVXpW3efsCaKb8lW3cHAIA3LeufwLGtZnw2AleGQAAAAJcEhZcwAACxMAAAsTAQCanBgAAAOKSURBVHic7Zy9j01BGIcfSyHZRKmyye21iOpq9CJ6NfEPqMU/oKZeEVHZFQUqraBHoyBUhFwF9yjO3rh7nTtnZs58vO+575NMssXOmY8nM3ve/e1dMAxjfMyApqfNqs1uAFu1J2AcxoQIw4QIw4QIw4QIw4QIw4QIw4QIw4QIw4QIw4QIw4QIw4QIw4QIw4QIw4QIw4QIw4QIw4QIw4QIw4QIw4QIw4QIw4QIw4QIw4QIw4QIw4QIo4aQYxXGjKX4XGsIuQBMK4wbyhQ4U3sSJdgGvjJMSu6PI0yBd8DRAc9QxT7wg3gpOYVMD+Z2J7K/Sq7RblqslFxCFjIa4HxEf7Wc4t/GxUjJIWRZxgfgSGB/9bwmXkpqIcsyGuB2QN/RcIvDGxgiJaWQVRkNcNqz76g4y/+b6CsllZAuGW9DFjEmtoBPxElJIaRLRgPcDF/KeLhL92b2SRkqZJ2MBpjELmYMXGL9hrqkDBHikvFy6IK0sw38IlxKrBCXjAa4kWZZutnHvbFdUmKE9Mn4DZxMujKlLKr2ECmhQvpkNMDTHIvTyA79m7sqJUSIj4wGuJpvifpYrtp9pPgK8ZUxA05kX6UiVqv2Pilzj++b4yejAR7mX6Iuuqr2ku1y/iXqYl3VXqJ9A47nX6IfUv7IYU77+luDR7S1kAikCAF4XGnc3Urjiqevas/RPiMsN5d0Qn4CzwuP+QD4U3hMJ5KEQPlr637h8dThW7WnaCJzc2kn5CPwptBYu7RiRCFNCJS7tuy68qRE1S42N5d4Ql7Rvo7mxE5HIPfIe0ImxVYyElxZ+9C28bl5DDmrdsvNI+nL2mOa+Nxc4g/1BXsZnvkM+JLhuRtBjqrdcvOB+GbtPk1Fbi75yoK0Vfse8D3h8zaSlFW75eYJSJW1i8rNXUi/slJl7aJyc+2kqNovFp/1iBlatYvLzV1Iv7JgeNYuLjd3oUEIDKva7VftGYit2kXm5i60nJDYrF1kbu5CixCIq9rtuspIaNUuNjcfC6FV+0Z/3rwUIVn7pM4UNwvfqt1y80L4Vu2WmxfkCW4Z4nNzF5peexf0vf5abl6YvqrdcvMKrMvaVeTmLjReWbD+2rLcvBLn6D4hlptXoqtqV5Obu9B6ZXVl7ZabV2a1arfcvDLLVbuq3NyF1isL2qz9xcHXqnLzMXOd9oRs1P9pl8wO8B5lufnYuVJ7AoZhlOIvaGdhp4AP+qMAAAAASUVORK5CYII=\",iconMapping:{0:{x:0,y:0,width:100,height:100,mask:!0}}}],[Bn.WIND_BARB,{iconAtlas:\"data:image/png;base64,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YOCvs1WZAAECBAgQIECAAAECBAhsJmDg34zehQkQIECAAAECBAgQIECAQJ2Agb/OVmUCBAgQIECAAAECBAgQILCZgIF/M3oXJkCAAAECBAgQIECAAAECdQIG/jpblQkQIECAAAECBAgQIECAwGYCBv7N6F2YAAECBAgQIECAAAECBAjUCRj462xVJkCAAAECBAgQIECAAAECmwkY+Dejd2ECBAgQIECAAAECBAgQIFAnYOCvs1WZAAECBAgQIECAAAECBAhsJmDg34zehQkQIECAAAECBAgQIECAQJ2Agb/OVmUCBAgQIECAAAECBAgQILCZgIF/M3oXJkCAAAECBAgQIECAAAECdQIG/jpblQkQIECAAAECBAgQIECAwGYCBv7N6F2YAAECBAgQIECAAAECBAjUCRj462xVJkCAAAECBAgQIECAAAECmwkY+Dejd2ECBAgQIECAAAECBAgQIFAnYOCvs1WZAAECBAgQIECAAAECBAhsJmDg34zehQkQIECAAAECBAgQIECAQJ2Agb/OVmUCBAgQIECAAAECBAgQILCZgIF/M3oXJkCAAAECBAgQIECAAAECdQIG/jpblQkQIECAAAECBAgQIECAwGYCBv7N6F2YAAECBAgQIECAAAECBAjUCRj462xVJkCAAAECBAgQIECAAAECmwkY+Dejd2ECBAgQIECAAAECBAgQIFAnYOCvs1WZAAECBAgQIECAAAECBAhsJmDg34zehQkQIECAAAECBAgQIECAQJ2Agb/OVmUCBAgQIECAAAECBAgQILCZgIF/M3oXJkCAAAECBAgQIECAAAECdQIG/jpblQkQIECAAAECBAgQIECAwGYCBv7N6F2YAAECBAgQIECAAAECBAjUCRj462xVJkCAAAECBAgQIECAAAECmwkY+Dejd2ECBAgQIECAAAECBAgQIFAnYOCvs1WZAAECBAgQIECAAAECBAhsJmDg34zehQkQIECAAAECBAgQIECAQJ2Agb/OVmUCBAgQIECAAAECBAgQILCZgIF/M3oXJkCAAAECBAgQIECAAAECdQIG/jpblQkQIECAAAECBAgQIECAwGYCBv7N6F2YAAECBAgQIECAAAECBAjUCRj462xVJkCAAAECBAgQIECAAAECmwkY+Dejd2ECBAgQIECAAAECBAgQIFAnYOCvs1WZAAECBAgQIECAAAECBAhsJmDg34zehQkQIECAAAECBAgQIECAQJ2Agb/OVmUCBAgQIECAAAECBAgQILCZgIF/M3oXJkCAAAECBAgQIECAAAECdQIG/jpblQkQIECAAAECBAgQIECAwGYCBv7N6F2YAAECBAgQIECAAAECBAjUCRj462xVJkCAAAECBAgQIECAAAECmwkY+Dejd2ECBAgQIECAAAECBAgQIFAnYOCvs1WZAAECBAgQIECAAAECBAhsJmDg34zehQkQIECAAAECBAgQIECAQJ2Agb/OVmUCBAgQIECAAAECBAgQILCZgIF/M3oXJkCAAAECBAgQIECAAAECdQIG/jpblQkQIECAAAECBAgQIECAwGYCBv7N6F2YAAECBAgQIECAAAECBAjUCRj462xVJkCAAAECBAgQIECAAAECmwkY+Dejd2ECBAgQIECAAAECBAgQIFAnYOCvs1WZAAECBAgQIECAAAECBAhsJmDg34zehQkQIECAAAECBAgQIECAQJ2Agb/OVmUCBAgQIECAAAECBAgQILCZgIF/M3oXJkCAAAECBAgQIECAAAECdQIG/jpblQkQIECAAAECBAgQIECAwGYCBv7N6F2YAAECBAgQIECAAAECBAjUCRj462xVJkCAAAECBAgQIECAAAECmwkY+Dejd2ECBAgQIECAAAECBAgQIFAnYOCvs1WZAAECBAgQIECAAAECBAhsJmDg34zehQkQIECAAAECBAgQIECAQJ2Agb/OVmUCBAgQIECAAAECBAgQILCZgIF/M3oXJkCAAAECBAgQIECAAAECdQIG/jpblQkQIECAAAECBAgQIECAwGYCBv7N6F2YAAECBAgQIECAAAECBAjUCRj462xVJkCAAAECBAgQIECAAAECmwkY+Dejd2ECBAgQIECAAAECBAgQIFAnYODPs/2hiHgur9ziSk9GxMuLX+UFownI6Wgdb3O/ctpm30ZbtZyO1vE29yunbfZttFXLaWHHDfx5uFsFdRryn46It/O2olLHAnLacXM72pqcdtTMjrcipx03t6OtyWlHzex4K3Ja2FwDfx7u2kGdBvxp0Heqn9fDESrJ6Qhdbn+Pctp+D0fYgZyO0OX29yin7fdwhB3IaWGXDfx5uGsG1al+Xt9GqySno3W8zf3KaZt9G23Vcjpax9vcr5y22bfRVi2nhR038OfhrhFUp/p5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AQIECBBIEDDwJyAa+PMQVSoXODRInbqoU/3ylrjAAQEDv1gQIECAAAECBBIEDPwJiAb+PESVygXmDvxO9ctb4QInBAz84kGAAAECBAgQSBAw8CcgGvjzEFUqF5gz8DvVL2+DC5wRMPCLCAECBAgQIEAgQcDAn4Bo4M9DVKlc4NTA71S/nN8FZgoY+GdCeRoBAgQIECBA4JSAgT8vH96g5lmqVCdwbOB3ql9nrvJyAffT5WZeQYAAAQIECBD4gICBPy8U3qDmWapUJ3Aop69GxGN1l1SZwGIB99PFZF5AgAABAgQIEPiggIE/LxXeoOZZqlQnIKd1tirnCchpnqVKBAgQIECAwMACBv685nuDmmepUp2AnNbZqpwnIKd5lioRIECAAAECAwsY+POa7w1qnqVKdQJyWmercp6AnOZZqkSAAAECBAgMLGDgz2u+N6h5lirVCchpna3KeQJymmepEgECBAgQIDCwgIE/r/neoOZZqlQnIKd1tirnCchpnqVKBAgQIECAwMACBv685nuDmmepUp2AnNbZqpwnIKd5lioRIECAAAECAwsY+POa7w1qnqVKdQJyWmercp6AnOZZqkSAAAECBAgMLGDgz2u+N6h5lirVCchpna3KeQJymmepEgECBAgQIDCwgIE/r/neoOZZqlQnIKd1tirnCchpnqVKBAgQIECAwMACBv685nuDmmepUp2AnNbZqpwnIKd5lioRIECAAAECAwsY+POa7w1qnqVKdQJyWmercp6AnOZZqkSAAAECBAgMLGDgz2u+N6h5lirVCchpna3KeQJymmepEgECBAgQIDCwgIE/r/neoOZZqlQnIKd1tirnCchpnqVKBAgQIECAwMACBv685nuDmmepUp2AnNbZqpwnIKd5lioRIECAAAECAwsY+Aduvq0TIECAAAECBAgQIECAQL8CBv5+e2tnBAgQIECAAAECBAgQIDCwgIF/4ObbOgECBAgQIECAAAECBAj0K2Dg77e3dkaAAAECBAgQIECAAAECAwsY+Aduvq0TIECAAAECBAgQIECAQL8CBv5+e2tnBAgQIECAAAECBAgQIDCwgIF/4ObbOgECBAgQIECAAAECBAj0K2Dg77e3dkaAAAECBAgQIECAAAECAwsY+Aduvq0TIECAAAECBAgQIECAQL8CBv5+e2tnBAgQIECAAAECBAgQIDCwgIF/4ObbOgECBAgQIECAAAECBAj0K2Dg77e3dkaAAAECBAgQIECAAAECAwsY+Aduvq0TIECAAAECBAgQIECAQL8CBv5+e2tnBAgQIECAAAECBAgQIDCwgIF/4ObbOgECBAgQIECAAAECBAj0K2Dg77e3dkaAAAECBAgQIECAAAECAwsY+Aduvq0TIECAAAECBAgQIECAQL8CBv5+e2tnBAgQIECAAAECBAgQIDCwgIF/4ObbOgECBAgQIECAAAECBAj0K2Dg77e3dkaAAAECBAgQIECAAAECAwsY+Aduvq0TIECAAAECBAgQIECAQL8CBv5+e2tnBAgQIECAAAECBAgQIDCwgIF/4ObbOgECBAgQIECAAAECBAj0K2Dg77e3dkaAAAECBAgQIECAAAECAwsY+Aduvq0TIECAAAECBAgQIECAQL8CBv5+e2tnBAgQIECAAAECBAgQIPD/t1/HBAAAAAjC+re2hyyC8yIsIPjD55tOgAABAgQIECBAgAABAr8Cgv/3W8sIECBAgAABAgQIECBAICwg+MPnm06AAAECBAgQIECAAAECvwKC//dbywgQIECAAAECBAgQIEAgLCD4w+ebToAAAQIECBAgQIAAAQK/AoL/91vLCBAgQIAAAQIECBAgQCAsIPjD55tOgAABAgQIECBAgAABAr8Cgv/3W8sIECBAgAABAgQIECBAICwg+MPnm06AAAECBAgQIECAAAECvwKC//dbywgQIECAAAECBAgQIEAgLCD4w+ebToAAAQIECBAgQIAAAQK/AgOYR34g/YMI8gAAAABJRU5ErkJggg==\",iconMapping:{0:{x:0,y:0,width:170,height:170,anchorX:85,anchorY:133,mask:!0},1:{x:170,y:0,width:170,height:170,anchorX:85,anchorY:133,mask:!0},2:{x:340,y:0,width:170,height:170,anchorX:85,anchorY:133,mask:!0},3:{x:510,y:0,width:170,height:170,anchorX:85,anchorY:133,mask:!0},4:{x:680,y:0,width:170,height:170,anchorX:85,anchorY:133,mask:!0},5:{x:850,y:0,width:170,height:170,anchorX:85,anchorY:133,mask:!0},6:{x:0,y:170,width:170,height:170,anchorX:85,anchorY:133,mask:!0},7:{x:170,y:170,width:170,height:170,anchorX:85,anchorY:133,mask:!0},8:{x:340,y:170,width:170,height:170,anchorX:85,anchorY:133,mask:!0},9:{x:510,y:170,width:170,height:170,anchorX:85,anchorY:133,mask:!0},10:{x:680,y:170,width:170,height:170,anchorX:85,anchorY:133,mask:!0},11:{x:850,y:170,width:170,height:170,anchorX:85,anchorY:133,mask:!0},12:{x:0,y:340,width:170,height:170,anchorX:85,anchorY:133,mask:!0},13:{x:170,y:340,width:170,height:170,anchorX:85,anchorY:133,mask:!0},14:{x:340,y:340,width:170,height:170,anchorX:85,anchorY:133,mask:!0},15:{x:510,y:340,width:170,height:170,anchorX:85,anchorY:133,mask:!0},16:{x:680,y:340,width:170,height:170,anchorX:85,anchorY:133,mask:!0},17:{x:850,y:340,width:170,height:170,anchorX:85,anchorY:133,mask:!0},18:{x:0,y:510,width:170,height:170,anchorX:85,anchorY:133,mask:!0},19:{x:170,y:510,width:170,height:170,anchorX:85,anchorY:133,mask:!0},20:{x:340,y:510,width:170,height:170,anchorX:85,anchorY:133,mask:!0}},iconBounds:[0,51.444]}]]),yn={image:{type:\"object\",value:null},image2:{type:\"object\",value:null},imageSmoothing:{type:\"number\",value:0},imageInterpolation:{type:\"object\",value:oe.CUBIC},imageWeight:{type:\"number\",value:0},imageType:{type:\"object\",value:re.SCALAR},imageUnscale:{type:\"array\",value:null},imageMinValue:{type:\"object\",value:null},imageMaxValue:{type:\"object\",value:null},bounds:{type:\"array\",value:[-180,-90,180,90],compare:!0},minZoom:{type:\"object\",value:null},maxZoom:{type:\"object\",value:null},style:{type:\"object\",value:Bn.VALUE},density:{type:\"number\",value:0},unitFormat:{type:\"object\",value:null},textFormatFunction:{type:\"function\",value:W},textFontFamily:{type:\"object\",value:N},textSize:{type:\"number\",value:12},textColor:{type:\"color\",value:L},textOutlineWidth:{type:\"number\",value:1},textOutlineColor:{type:\"color\",value:Z},iconBounds:{type:\"array\",value:null},iconSize:{type:\"object\",value:40},iconColor:{type:\"color\",value:k},palette:{type:\"object\",value:null}};class bn extends a{renderLayers(){const{viewport:e}=this.context,{props:t,visiblePoints:n}=this.state;if(!t||!n)return[];const{style:a,unitFormat:i,textFormatFunction:r,textFontFamily:s,textSize:l,textColor:c,textOutlineWidth:g,textOutlineColor:u,iconSize:p,iconColor:d}=R(t,yn),{paletteScale:h}=this.state;if(Qn.has(a)){const{iconStyle:a,iconAtlasTexture:i}=this.state;if(!a||!i)return[];const o=Object.keys(a.iconMapping).length,r=t.iconBounds??a.iconBounds??[0,0],s=r[1]-r[0],l=e=>(e-r[0])/s,c=Array.isArray(p)?p[1]-p[0]:0;return[new A(this.getSubLayerProps({id:\"icon\",data:n,getPosition:e=>e.geometry.coordinates,getIcon:e=>`${Math.min(Math.max(Math.floor(l(e.properties.value)*o),0),o-1)}`,getSize:e=>Array.isArray(p)?p[0]+l(e.properties.value)*c:p,getColor:e=>h?tt(h(e.properties.value).rgba()):d,getAngle:t=>_e(e,t.properties.direction?360-t.properties.direction:0),iconAtlas:i,iconMapping:a.iconMapping,sizeBasis:\"height\",billboard:!1,parameters:{cullMode:\"front\",depthCompare:\"always\",...this.props.parameters}}))]}return[new o(this.getSubLayerProps({id:\"text\",data:n,getPosition:e=>e.geometry.coordinates,getText:e=>r(e.properties.value,i),getSize:l,getColor:e=>h?tt(h(e.properties.value).rgba()):c,getAngle:_e(e,0),outlineWidth:g,outlineColor:u,fontFamily:s,fontSettings:{sdf:!0},billboard:!1,parameters:{cullMode:\"front\",depthCompare:\"always\",...this.props.parameters}}))]}shouldUpdateState(e){return super.shouldUpdateState(e)||e.changeFlags.viewportChanged}updateState(e){const{image:t,image2:n,imageSmoothing:a,imageInterpolation:i,imageWeight:o,imageType:r,imageUnscale:A,imageMinValue:s,imageMaxValue:l,minZoom:c,maxZoom:g,style:u,density:p,unitFormat:d,textFormatFunction:h,textFontFamily:m,textSize:C,textColor:I,textOutlineWidth:v,textOutlineColor:f,iconSize:E,iconColor:B,palette:Q,visible:y}=e.props;super.updateState(e),y?(this.state.iconStyle&&u===e.oldProps.style||this._updateIconStyle(),(p!==e.oldProps.density||e.changeFlags.viewportChanged)&&this._updatePositions(),t===e.oldProps.image&&n===e.oldProps.image2&&a===e.oldProps.imageSmoothing&&i===e.oldProps.imageInterpolation&&o===e.oldProps.imageWeight&&r===e.oldProps.imageType&&A===e.oldProps.imageUnscale&&s===e.oldProps.imageMinValue&&l===e.oldProps.imageMaxValue&&y===e.oldProps.visible||this._updateFeatures(),(c!==e.oldProps.minZoom||g!==e.oldProps.maxZoom||e.changeFlags.viewportChanged)&&this._updateVisibleFeatures(),Q!==e.oldProps.palette&&this._updatePalette(),d===e.oldProps.unitFormat&&h===e.oldProps.textFormatFunction&&m===e.oldProps.textFontFamily&&C===e.oldProps.textSize&&I===e.oldProps.textColor&&v===e.oldProps.textOutlineWidth&&f===e.oldProps.textOutlineColor&&E===e.oldProps.iconSize&&B===e.oldProps.iconColor||this._redrawVisibleFeatures(),this.setState({props:e.props})):this.setState({points:void 0,visiblePoints:void 0})}async _updateIconStyle(){const{device:e}=this.context,{style:t}=R(this.props,yn),n=Qn.get(t);if(!n)return void this.setState({iconStyle:void 0,iconAtlasTexture:void 0});this.setState({iconStyle:n});const a=Le(e,await H(n.iconAtlas));this.setState({iconAtlasTexture:a})}_updatePositions(){const{viewport:e}=this.context,{density:t}=R(this.props,yn),n=En(e,t+3);this.setState({positions:n}),this._updateFeatures()}_updateFeatures(){const{image:e,image2:t,imageSmoothing:n,imageInterpolation:a,imageWeight:i,imageType:o,imageUnscale:r,imageMinValue:A,imageMaxValue:s,bounds:l}=R(this.props,yn),{positions:c}=this.state;if(!e||!c)return;const g=Ve({image:e,image2:t,imageSmoothing:n,imageInterpolation:a,imageWeight:i,imageType:o,imageUnscale:r,imageMinValue:A,imageMaxValue:s},l,c).features.filter((e=>!isNaN(e.properties.value)));this.setState({points:g}),this._updateVisibleFeatures()}_updateVisibleFeatures(){const{viewport:e}=this.context,{minZoom:t,maxZoom:n}=R(this.props,yn),{points:a}=this.state;if(!a)return;let i;i=Ke(e,t,n)?a:[],this.setState({visiblePoints:i})}_updatePalette(){const{palette:e}=R(this.props,yn);if(!e)return this.setState({paletteScale:void 0}),void this._redrawVisibleFeatures();const n=t(e);this.setState({paletteScale:n}),this._redrawVisibleFeatures()}_redrawVisibleFeatures(){this.setState({visiblePoints:Array.isArray(this.state.visiblePoints)?Array.from(this.state.visiblePoints):this.state.visiblePoints})}}bn.layerName=\"GridCompositeLayer\",bn.defaultProps=yn;const wn={...bn.defaultProps};class xn extends a{renderLayers(){const{props:e}=this.state;return e?[new bn(this.props,this.getSubLayerProps({id:\"composite\"}))]:[]}updateState(e){const{image:t,imageUnscale:n}=e.props;if(super.updateState(e),t&&n&&!(t.data instanceof Uint8Array||t.data instanceof Uint8ClampedArray))throw new Error(\"imageUnscale can be applied to Uint8 data only\");this.setState({props:e.props})}}xn.layerName=\"GridLayer\",xn.defaultProps=wn;const Tn=\"uniform particleUniforms{float w;vec2 x;float y;vec4 z;float AA;float AB;float AC;float AD;float AE;float AF;}particle;\",Mn=\"w\",On=\"x\",Pn=\"y\",Sn=\"z\",Vn=\"AA\",Un=\"AB\",Dn=\"AC\",Nn=\"AD\",Jn=\"AE\",Ln=\"AF\";const Fn={name:\"particle\",vs:Tn,fs:Tn,uniformTypes:{[Mn]:\"f32\",[On]:\"vec2<f32>\",[Pn]:\"f32\",[Sn]:\"vec4<f32>\",[Vn]:\"f32\",[Un]:\"f32\",[Dn]:\"f32\",[Nn]:\"f32\",[Jn]:\"f32\",[Ln]:\"f32\"},getUniforms:function(e={}){return{[Mn]:e.viewportGlobe?1:0,[On]:e.viewportGlobeCenter??[0,0],[Pn]:e.viewportGlobeRadius??0,[Sn]:e.viewportBounds??[0,0,0,0],[Vn]:e.viewportZoomChangeFactor??0,[Un]:e.numParticles,[Dn]:e.maxAge,[Nn]:e.speedFactor,[Jn]:e.time,[Ln]:e.seed}}},Zn=\"sourcePosition\",Wn=\"targetPosition\",qn=\"sourceColor\",kn=\"targetColor\",Rn={imageTexture:{type:\"object\",value:null},imageTexture2:{type:\"object\",value:null},imageSmoothing:{type:\"number\",value:0},imageInterpolation:{type:\"object\",value:oe.CUBIC},imageWeight:{type:\"number\",value:0},imageType:{type:\"object\",value:re.VECTOR},imageUnscale:{type:\"array\",value:null},imageMinValue:{type:\"object\",value:null},imageMaxValue:{type:\"object\",value:null},bounds:{type:\"array\",value:[-180,-90,180,90],compare:!0},minZoom:{type:\"object\",value:null},maxZoom:{type:\"object\",value:15},palette:{type:\"object\",value:null},color:{type:\"color\",value:D},numParticles:{type:\"number\",min:1,max:1e6,value:5e3},maxAge:{type:\"number\",min:1,max:255,value:10},speedFactor:{type:\"number\",min:0,max:50,value:1},width:{type:\"number\",value:1},animate:!0,wrapLongitude:!0};class Gn extends s{getShaders(){const e=super.getShaders();return{...e,inject:{...e.inject,\"vs:#decl\":(e.inject?.[\"vs:#decl\"]||\"\")+\"\\n in float instanceOpacities;\\n out float drop;\\n const float DROP_POSITION_Z = -1.;\\n \",\"vs:#main-start\":(e.inject?.[\"vs:#main-start\"]||\"\")+\"\\n drop = float(instanceSourcePositions.z == DROP_POSITION_Z || instanceTargetPositions.z == DROP_POSITION_Z);\\n \",\"vs:DECKGL_FILTER_COLOR\":(e.inject?.[\"vs:DECKGL_FILTER_COLOR\"]||\"\")+\"\\n color.a = color.a * instanceOpacities;\\n \",\"fs:#decl\":(e.inject?.[\"fs:#decl\"]||\"\")+\"\\n in float drop;\\n \",\"fs:#main-start\":(e.inject?.[\"fs:#main-start\"]||\"\")+\"\\n if (drop > 0.5) discard;\\n \"}}}initializeState(){super.initializeState();const e=this.getAttributeManager();e.remove([\"instanceSourcePositions\",\"instanceTargetPositions\",\"instanceColors\",\"instanceWidths\"]),e.addInstanced({instanceSourcePositions:{size:3,type:\"float32\",noAlloc:!0},instanceTargetPositions:{size:3,type:\"float32\",noAlloc:!0},instanceColors:{size:4,type:\"float32\",noAlloc:!0},instanceOpacities:{size:1,type:\"float32\",noAlloc:!0}})}updateState(e){const{imageType:t,numParticles:n,maxAge:a,width:i,palette:o,visible:r}=e.props;super.updateState(e),r&&t===re.VECTOR&&n&&a&&i?(t===e.oldProps.imageType&&n===e.oldProps.numParticles&&a===e.oldProps.maxAge&&i===e.oldProps.width&&r===e.oldProps.visible||this._setupTransformFeedback(),o!==e.oldProps.palette&&this._updatePalette()):this._deleteTransformFeedback()}finalizeState(e){this._deleteTransformFeedback(),super.finalizeState(e)}draw(e){const{initialized:t}=this.state;if(!t)return;const{viewport:n}=this.context,{model:a}=this.state,{minZoom:i,maxZoom:o,width:r,animate:A}=R(this.props,Rn),{sourcePositions:s,targetPositions:l,sourceColors:c,opacities:g,transform:u}=this.state;s&&l&&c&&g&&u&&a&&Ke(n,i,o)&&(a.setAttributes({instanceSourcePositions:s,instanceTargetPositions:l,instanceColors:c,instanceOpacities:g}),a.setConstantAttributes({instanceSourcePositions64Low:new Float32Array([0,0,0]),instanceTargetPositions64Low:new Float32Array([0,0,0]),instanceWidths:new Float32Array([r])}),super.draw(e),A&&this.step())}_setupTransformFeedback(){const{device:e}=this.context,{initialized:t}=this.state;t&&this._deleteTransformFeedback();const{numParticles:n,maxAge:a}=R(this.props,Rn),i=n*a,o=n*(a-1),r=e.createBuffer(new Float32Array(3*i)),A=e.createBuffer(new Float32Array(3*i)),s=e.createBuffer(new Float32Array(4*i)),l=e.createBuffer(new Float32Array(4*i)),c=e.createBuffer(new Float32Array(new Array(i).fill(void 0).map(((e,t)=>1-Math.floor(t/n)/a)))),g=new B(e,{vs:\"#version 300 es\\n#define SHADER_NAME particle-line-layer-update-vertex-shader\\n#ifdef GL_ES\\nprecision highp float;\\n#endif\\nvec4 AG(sampler2D AH,vec2 AI,vec2 AJ,vec2 AK){vec2 uv=(AJ+AK+0.5)/AI;return texture(AH,uv);}const vec4 AL=vec4(3.,-6.,0.,4.)/6.;const vec4 AM=vec4(-1.,6.,-12.,8.)/6.;vec4 AN(float J){return vec4(J*J*J,J*J,J,1.);}vec4 AO(vec4 AP,vec4 AQ,vec4 AR,vec4 AS,float AT){vec4 O=AP*dot(AM,AN(AT+1.))+AQ*dot(AL,AN(AT))+AR*dot(AL,AN(1.-AT))+AS*dot(AM,AN(2.-AT));O.a=(AP.a>0.&&AQ.a>0.&&AR.a>0.&&AS.a>0.)?max(max(max(AP.a,AQ.a),AR.a),AS.a):0.;return O;}vec4 AU(sampler2D AH,vec2 AI,vec2 uv){vec2 AV=uv*AI-0.5;vec2 AJ=floor(AV);vec2 AW=fract(AV);return AO(AO(AG(AH,AI,AJ,vec2(-1,-1)),AG(AH,AI,AJ,vec2(0,-1)),AG(AH,AI,AJ,vec2(1,-1)),AG(AH,AI,AJ,vec2(2,-1)),AW.x),AO(AG(AH,AI,AJ,vec2(-1,0)),AG(AH,AI,AJ,vec2(0,0)),AG(AH,AI,AJ,vec2(1,0)),AG(AH,AI,AJ,vec2(2,0)),AW.x),AO(AG(AH,AI,AJ,vec2(-1,1)),AG(AH,AI,AJ,vec2(0,1)),AG(AH,AI,AJ,vec2(1,1)),AG(AH,AI,AJ,vec2(2,1)),AW.x),AO(AG(AH,AI,AJ,vec2(-1,2)),AG(AH,AI,AJ,vec2(0,2)),AG(AH,AI,AJ,vec2(1,2)),AG(AH,AI,AJ,vec2(2,2)),AW.x),AW.y);}vec4 AX(sampler2D AH,vec2 AI,vec2 uv){vec2 AV=uv*AI-0.5;vec2 AJ=floor(AV);vec2 AW=fract(AV);return mix(mix(AG(AH,AI,AJ,vec2(0,0)),AG(AH,AI,AJ,vec2(1,0)),AW.x),mix(AG(AH,AI,AJ,vec2(0,1)),AG(AH,AI,AJ,vec2(1,1)),AW.x),AW.y);}vec4 AY(sampler2D AH,vec2 AI,vec2 uv){vec2 AV=uv*AI-0.5;vec2 AJ=floor(AV+0.5);return AG(AH,AI,AJ,vec2(0,0));}vec4 AZ(sampler2D AH,vec2 AI,float a,vec2 uv){if(a==2.){return AU(AH,AI,uv);}if(a==1.){return AX(AH,AI,uv);}else{return AY(AH,AI,uv);}}vec4 Aa(sampler2D AH,sampler2D Ab,vec2 AI,float a,float b,bool B,vec2 uv){vec2 Ac;Ac.x=B?uv.x+0.5/AI.x:mix(0.+0.5/AI.x,1.-0.5/AI.x,uv.x);Ac.y=mix(0.+0.5/AI.y,1.-0.5/AI.y,uv.y);if(b>0.){vec4 Ad=AZ(AH,AI,a,Ac);vec4 Ae=AZ(Ab,AI,a,Ac);return mix(Ad,Ae,b);}else{return AZ(AH,AI,a,Ac);}}vec4 Af(sampler2D AH,sampler2D Ab,vec2 Y,float Z,float a,float b,bool B,vec2 uv){float Ag=1.+max(0.,Z);vec2 AI=Y/Ag;return Aa(AH,Ab,AI,a,b,B,uv);}float Ah(float K,float J){return J==0.?sign(K)*F/2.:atan(K,J);}bool Ai(float q){uint Aj=floatBitsToUint(q);return(Aj&0x7fffffffu)>0x7f800000u;}bool Ak(vec4 Ad,vec2 d){if(d[0]<d[1]){return Ad.a>=1.;}else{return!Ai(Ad.x);}}float Al(vec4 Ad,float c,vec2 d){if(c==1.){return 0.;}else{if(d[0]<d[1]){return mix(d[0],d[1],Ad.x);}else{return Ad.x;}}}vec2 Am(vec4 Ad,float c,vec2 d){if(c==1.){if(d[0]<d[1]){return mix(vec2(d[0]),vec2(d[1]),Ad.xy);}else{return Ad.xy;}}else{return vec2(0.);}}float An(vec4 Ad,float c,vec2 d){if(c==1.){vec2 q=Am(Ad,c,d);return length(q);}else{return Al(Ad,c,d);}}float Ao(vec4 Ad,float c,vec2 d){if(c==1.){vec2 q=Am(Ad,c,d);return mod((360.-(Ah(q.y,q.x)/F*180.+180.))-270.,360.)/360.;}else{return 0.;}}in vec3 sourcePosition;in vec4 sourceColor;out vec3 targetPosition;out vec4 targetColor;const float Ap=-1.;const vec4 Aq=vec4(0);const float Ar=6370972.;vec2 As(vec2 At,float Au,float Av){float Aw=Au/Ar;float Ax=radians(Av);float Ay=radians(At.y);float Az=radians(At.x);float BA=sin(Ay)*cos(Aw)+cos(Ay)*sin(Aw)*cos(Ax);float BB=asin(BA);float K=sin(Ax)*sin(Aw)*cos(Ay);float J=cos(Aw)-sin(Ay)*BA;float BC=Az+Ah(K,J);float BD=degrees(BB);float BE=degrees(BC);return vec2(BE,BD);}float BF(float BG){float BH=mod(BG+180.,360.)-180.;return BH;}float BF(float BG,float BI){float BH=BF(BG);if(BH<BI){BH+=360.;}return BH;}float BJ(vec2 AF){return fract(sin(dot(AF.xy,vec2(12.9898,78.233)))*43758.5453);}vec2 BK(vec2 AF){return vec2(BJ(AF+1.3),BJ(AF+2.1));}vec2 BL(vec2 BM){if(particle.w==1.){BM.x+=0.0001;BM.x=sqrt(BM.x);float Au=BM.x*particle.y;float Av=BM.y*360.;return As(particle.x,Au,Av);}else{BM.y=smoothstep(0.,1.,BM.y);vec2 BN=particle.z.xy;vec2 BO=particle.z.zw;return mix(BN,BO,BM);}}vec2 BP(vec2 BQ,vec2 BR){float BS=cos(radians(BQ.y));vec2 AK;if(particle.w==1.){AK=vec2(BR.x/BS,BR.y);}else{AK=vec2(BR.x,BR.y*BS);}return BQ+AK;}bool BT(vec2 BQ,vec4 A){vec2 BU=A.xy;vec2 BV=A.zw;float BG=BF(BQ.x,BU.x);float BD=BQ.y;return(BU.x<=BG&&BG<=BV.x&&BU.y<=BD&&BD<=BV.y);}void main(){float BW=mod(float(gl_VertexID),particle.AB);float BX=floor(float(gl_VertexID)/particle.AB);if(BX>0.){return;}if(sourcePosition.z==Ap){vec2 BY=vec2(BW*particle.AF/particle.AB);vec2 BM=BK(BY);vec2 BQ=BL(BM);targetPosition.xy=BQ;targetPosition.x=BF(targetPosition.x);targetColor=Aq;return;}if(particle.AA>1.&&mod(BW,particle.AA)>=1.){targetPosition.xy=sourcePosition.xy;targetPosition.z=Ap;targetColor=Aq;return;}if(abs(mod(BW,particle.AC+2.)-mod(particle.AE,particle.AC+2.))<1.){targetPosition.xy=sourcePosition.xy;targetPosition.z=Ap;targetColor=Aq;return;}if(!BT(sourcePosition.xy,bitmap2.A)){targetPosition.xy=sourcePosition.xy;targetColor=Aq;return;}vec2 uv=Q(sourcePosition.xy);vec4 Ad=Af(W,X,raster.Y,raster.Z,raster.a,raster.b,bitmap2.B,uv);if(!Ak(Ad,raster.d)){targetPosition.xy=sourcePosition.xy;targetColor=Aq;return;}float q=An(Ad,raster.c,raster.d);if((!Ai(raster.e)&&q<raster.e)||(!Ai(raster.f)&&q>raster.f)){targetPosition.xy=sourcePosition.xy;targetColor=Aq;return;}vec2 BR=Am(Ad,raster.c,raster.d)*particle.AD;targetPosition.xy=BP(sourcePosition.xy,BR);targetPosition.x=BF(targetPosition.x);targetColor=sourceColor;targetColor=r(m,palette.n,palette.o,q);}\",modules:[pt,Pt,Nt,Fn],vertexCount:n,attributes:{[Zn]:r,[qn]:s},bufferLayout:[{name:Zn,format:\"float32x3\"},{name:qn,format:\"float32x4\"}],feedbackBuffers:{[Wn]:A,[kn]:l},varyings:[Wn,kn]});this.setState({initialized:!0,numInstances:i,numAgedInstances:o,sourcePositions:r,targetPositions:A,sourceColors:s,targetColors:l,opacities:c,transform:g,previousViewportZoom:0,previousTime:0})}_runTransformFeedback(){const{initialized:e}=this.state;if(!e)return;const{device:t,viewport:a,timeline:i}=this.context,{imageTexture:o,imageTexture2:r,imageSmoothing:A,imageInterpolation:s,imageWeight:l,imageType:c,imageUnscale:g,imageMinValue:u,imageMaxValue:p,bounds:d,color:h,numParticles:m,maxAge:C,speedFactor:I}=R(this.props,Rn),{paletteTexture:v,paletteBounds:f,numAgedInstances:E,sourcePositions:B,targetPositions:Q,sourceColors:y,targetColors:b,transform:w,previousViewportZoom:x,previousTime:T}=this.state;if(!(o&&\"number\"==typeof E&&B&&Q&&y&&b&&w))return;const M=i.getTime();if(\"number\"==typeof T&&M<T+1e3/30)return;const O=Re(a),P=Re(a)?ze(a):void 0,S=Re(a)?Xe(a):void 0,V=Ge(a)?je(a):void 0,U=2**(4*(\"number\"==typeof x?x-He(a):0)),D=I/2**(He(a)+7);w.model.shaderInputs.setProps({[pt.name]:{viewportGlobe:O,bounds:d,_imageCoordinateSystem:n.LNGLAT},[Pt.name]:{imageTexture:o??Ze(t),imageTexture2:r??Ze(t),imageSmoothing:A,imageInterpolation:s,imageWeight:l,imageType:c,imageUnscale:g,imageMinValue:u,imageMaxValue:p},[Nt.name]:{paletteTexture:v??Ze(t),paletteBounds:f,paletteColor:h},[Fn.name]:{viewportGlobe:O,viewportGlobeCenter:P,viewportGlobeRadius:S,viewportBounds:V,viewportZoomChangeFactor:U,numParticles:m,maxAge:C,speedFactor:D,time:M,seed:Math.random()}}),w.run({clearColor:!1,clearDepth:!1,clearStencil:!1,depthReadOnly:!0,stencilReadOnly:!0});const N=t.createCommandEncoder();N.copyBufferToBuffer({sourceBuffer:B,sourceOffset:0,destinationBuffer:Q,destinationOffset:4*m*3,size:4*E*3}),N.copyBufferToBuffer({sourceBuffer:y,sourceOffset:0,destinationBuffer:b,destinationOffset:4*m*4,size:4*E*4});const J=N.finish();t.submit(J),N.destroy(),this._swapTransformFeedback(),this.state.previousViewportZoom=He(a),this.state.previousTime=M}_swapTransformFeedback(){const{sourcePositions:e,targetPositions:t,sourceColors:n,targetColors:a,transform:i}=this.state;e&&t&&n&&a&&i&&(this.state.sourcePositions=t,this.state.targetPositions=e,this.state.sourceColors=a,this.state.targetColors=n,i.model.setAttributes({[Zn]:t,[qn]:a}),i.transformFeedback.setBuffers({[Wn]:e,[kn]:n}))}_resetTransformFeedback(){const{initialized:e}=this.state;if(!e)return;const{numInstances:t,sourcePositions:n,targetPositions:a,sourceColors:i,targetColors:o}=this.state;\"number\"==typeof t&&n&&a&&i&&o&&(n.write(new Float32Array(3*t)),a.write(new Float32Array(3*t)),i.write(new Float32Array(4*t)),o.write(new Float32Array(4*t)))}_deleteTransformFeedback(){const{initialized:e}=this.state;if(!e)return;const{sourcePositions:t,targetPositions:n,sourceColors:a,targetColors:i,opacities:o,transform:r}=this.state;t&&n&&a&&i&&o&&r&&(t.destroy(),n.destroy(),a.destroy(),i.destroy(),o.destroy(),r.destroy(),this.setState({initialized:!1,sourcePositions:void 0,targetPositions:void 0,sourceColors:void 0,targetColors:void 0,opacities:void 0,transform:void 0}))}_updatePalette(){const{device:e}=this.context,{palette:n}=R(this.props,Rn);if(!n)return void this.setState({paletteTexture:void 0,paletteBounds:void 0});const a=t(n),{paletteBounds:i,paletteTexture:o}=$e(e,a);this.setState({paletteTexture:o,paletteBounds:i})}step(){this._runTransformFeedback(),this.setNeedsRedraw()}clear(){this._resetTransformFeedback(),this.setNeedsRedraw()}}Gn.layerName=\"ParticleLineLayer\",Gn.defaultProps=Rn;const Kn={...Gn.defaultProps,imageTexture:void 0,imageTexture2:void 0,image:{type:\"object\",value:null},image2:{type:\"object\",value:null}};class zn extends a{renderLayers(){const{device:e}=this.context,{props:t,imageTexture:n,imageTexture2:a}=this.state;return t&&n?[new Gn(this.props,this.getSubLayerProps({id:\"line\",data:[],imageTexture:n,imageTexture2:a,parameters:{cullMode:\"front\",depthCompare:\"always\",...this.props.parameters},image:Ze(e),image2:Ze(e)}))]:[]}updateState(e){const{image:t,image2:n,imageUnscale:a,bounds:i}=e.props;if(super.updateState(e),t&&a&&!(t.data instanceof Uint8Array||t.data instanceof Uint8ClampedArray))throw new Error(\"imageUnscale can be applied to Uint8 data only\");if(t!==e.oldProps.image||n!==e.oldProps.image2){const{device:e}=this.context,{image:t,image2:n}=this.props,a=t?Le(e,t,Pe(i)):null,o=n?Le(e,n,Pe(i)):null;this.setState({imageTexture:a,imageTexture2:o})}this.setState({props:e.props})}}zn.layerName=\"ParticleLayer\",zn.defaultProps=Kn;class Xn{addTo(e){e.appendChild(this.onAdd())}prependTo(e){e.prepend(this.onAdd())}remove(){this.onRemove()}updateConfig(e){this.setConfig({...this.getConfig(),...e})}}function jn(e,t){void 0===t&&(t={});var n=t.insertAt;if(e&&\"undefined\"!=typeof document){var a=document.head||document.getElementsByTagName(\"head\")[0],i=document.createElement(\"style\");i.type=\"text/css\",\"top\"===n&&a.firstChild?a.insertBefore(i,a.firstChild):a.appendChild(i),i.styleSheet?i.styleSheet.cssText=e:i.appendChild(document.createTextNode(e))}}jn(\".weatherlayers-legend-control{margin:10px;pointer-events:auto}.weatherlayers-legend-control>div{background:hsla(0,0%,100%,.5);color:rgba(0,0,0,.75);display:inline-block;font-family:Helvetica Neue,Arial,Helvetica,sans-serif;font-size:12px;line-height:14px;width:100%}.weatherlayers-legend-control header,.weatherlayers-legend-control main{margin:5px 10px}.weatherlayers-legend-control header{font-weight:700}.weatherlayers-legend-control__legend{margin-top:5px;vertical-align:middle;width:100%}\");const Hn=\"weatherlayers-legend-control\",Yn=`${Hn}__text`;class _n extends Xn{constructor(e={}){super(),this._container=void 0,this._config=e}onAdd(){return this._container=document.createElement(\"div\"),this._container.classList.add(Hn),this.setConfig(this._config),this._container}onRemove(){this._container&&this._container.parentNode&&(this._container.parentNode.removeChild(this._container),this._container=void 0)}getConfig(){return{...this._config}}setConfig(n){if(!this._container)return;if(!n.title||!n.unitFormat||!n.palette)return;if(this._container.children.length>0&&this._config.width===n.width&&this._config.ticksCount===n.ticksCount&&this._config.title===n.title&&this._config.unitFormat===n.unitFormat&&this._config.palette===n.palette)return;this._config=n;const a=this._config.width??300,i=this._config.ticksCount??6,o=this._config.title,r=this._config.unitFormat,A=this._config.palette,s=t(A),l=s.domain(),c=[l[0],l[l.length-1]],g=e(s).toDataURL();this._container.innerHTML=\"\",this._container.style.width=`${a}px`;const u=document.createElement(\"div\");this._container.appendChild(u);const p=document.createElement(\"header\");u.appendChild(p);const d=document.createElement(\"span\");d.classList.add(Yn),d.innerHTML=`${o} [${P(r)}]`,p.appendChild(d);const h=document.createElement(\"main\");u.appendChild(h);const m=\"http://www.w3.org/2000/svg\",C=document.createElementNS(m,\"svg\");C.setAttribute(\"height\",\"24px\"),C.setAttribute(\"class\",\"weatherlayers-legend-control__legend\"),h.appendChild(C);const I=document.createElementNS(m,\"image\");I.setAttribute(\"href\",g),I.setAttribute(\"width\",\"100%\"),I.setAttribute(\"height\",\"5\"),I.setAttribute(\"preserveAspectRatio\",\"none\"),C.appendChild(I);const v=(c[1]-c[0])/(i-1);for(let e=0;e<i;e++){const t=c[0]+e*v,n=O(t,r),a=document.createElementNS(m,\"g\");a.style.transform=`translate(${(t-c[0])/(c[1]-c[0])*100}%, 0)`,C.appendChild(a);const o=document.createElementNS(m,\"line\");o.setAttribute(\"y1\",\"0\"),o.setAttribute(\"y2\",\"10\"),o.style.stroke=\"currentColor\",0===e?o.style.transform=\"translate(0.5px, 0)\":e===i-1&&(o.style.transform=\"translate(-0.5px, 0)\"),a.appendChild(o);const A=document.createElementNS(m,\"text\");A.innerHTML=n,A.setAttribute(\"x\",\"0\"),A.setAttribute(\"y\",\"22\"),A.style.textAnchor=0===e?\"start\":e===i-1?\"end\":\"middle\",a.appendChild(A)}}}jn(\".weatherlayers-tooltip-control{margin:10px;pointer-events:auto}.weatherlayers-tooltip-control>div{align-items:center;background:hsla(0,0%,100%,.5);color:rgba(0,0,0,.75);display:inline-flex;font-family:Helvetica Neue,Arial,Helvetica,sans-serif;font-size:12px;line-height:20px;padding:0 5px;white-space:nowrap}.weatherlayers-tooltip-control.follow-cursor{margin:0;pointer-events:none;position:absolute;z-index:1}.weatherlayers-tooltip-control.follow-cursor>div{position:absolute}.leaflet-map-pane .weatherlayers-tooltip-control.follow-cursor{z-index:101}.weatherlayers-tooltip-control.follow-cursor:before{content:\\\"\\\";height:0;position:absolute;width:0}.weatherlayers-tooltip-control.follow-cursor[data-follow-cursor-placement=BOTTOM]:before{border-bottom:5px solid hsla(0,0%,100%,.5);border-left:5px solid transparent;border-right:5px solid transparent;left:calc(50% - 5px);top:-5px}.weatherlayers-tooltip-control.follow-cursor[data-follow-cursor-placement=TOP]:before{border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid hsla(0,0%,100%,.5);left:calc(50% - 5px);top:0}.weatherlayers-tooltip-control.follow-cursor[data-follow-cursor-placement=RIGHT]:before{border-bottom:5px solid transparent;border-right:5px solid hsla(0,0%,100%,.5);border-top:5px solid transparent;left:-5px;top:calc(50% - 5px)}.weatherlayers-tooltip-control.follow-cursor[data-follow-cursor-placement=LEFT]:before{border-bottom:5px solid transparent;border-left:5px solid hsla(0,0%,100%,.5);border-top:5px solid transparent;left:0;top:calc(50% - 5px)}.weatherlayers-tooltip-control .weatherlayers-tooltip-control__direction{align-items:center;display:inline-flex;margin-left:4px}.weatherlayers-tooltip-control .weatherlayers-tooltip-control__direction-icon{background:no-repeat 50%/contain;background-image:url(\\\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30' style='enable-background:new 0 0 30 30' xml:space='preserve'%3E%3Cpath d='M3.74 14.5c0-2.04.51-3.93 1.52-5.66s2.38-3.1 4.11-4.11 3.61-1.51 5.64-1.51c1.52 0 2.98.3 4.37.89s2.58 1.4 3.59 2.4 1.81 2.2 2.4 3.6.89 2.85.89 4.39c0 1.52-.3 2.98-.89 4.37s-1.4 2.59-2.4 3.59-2.2 1.8-3.59 2.39-2.84.89-4.37.89c-1.53 0-3-.3-4.39-.89s-2.59-1.4-3.6-2.4-1.8-2.2-2.4-3.58-.88-2.84-.88-4.37zm2.48 0c0 2.37.86 4.43 2.59 6.18 1.73 1.73 3.79 2.59 6.2 2.59 1.58 0 3.05-.39 4.39-1.18s2.42-1.85 3.21-3.2 1.19-2.81 1.19-4.39-.4-3.05-1.19-4.4-1.86-2.42-3.21-3.21-2.81-1.18-4.39-1.18-3.05.39-4.39 1.18S8.2 8.75 7.4 10.1s-1.18 2.82-1.18 4.4zm4.89 5.85 3.75-13.11c.01-.1.06-.15.15-.15s.14.05.15.15l3.74 13.11c.04.11.03.19-.02.25s-.13.06-.24 0l-3.47-1.3c-.1-.04-.2-.04-.29 0l-3.5 1.3c-.1.06-.17.06-.21 0s-.08-.15-.06-.25z'/%3E%3C/svg%3E\\\");display:inline-block;height:20px;opacity:.75;vertical-align:middle;width:20px}.weatherlayers-tooltip-control .weatherlayers-tooltip-control__direction-text{margin-left:2px}.weatherlayers-tooltip-control:not(.has-direction) .weatherlayers-tooltip-control__direction,.weatherlayers-tooltip-control:not(.has-value){display:none}\");const $n=\"weatherlayers-tooltip-control\",ea=`${$n}__value`,ta=`${$n}__direction`,na=`${$n}__direction-icon`,aa=`${$n}__direction-text`;class ia extends Xn{constructor(e={}){super(),this._container=void 0,this._value=void 0,this._direction=void 0,this._directionIcon=void 0,this._directionText=void 0,this._config=e}onAdd(){return this._container=document.createElement(\"div\"),this._container.classList.add($n),this.setConfig(this._config),this._container}onRemove(){this._container&&this._container.parentNode&&(this._container.parentNode.removeChild(this._container),this._container=void 0)}getConfig(){return{...this._config}}setConfig(e){if(!this._container)return;if(!e.unitFormat)return;if(this._container.children.length>0&&this._config.directionType===e.directionType&&this._config.directionFormat===e.directionFormat&&this._config.unitFormat===e.unitFormat&&this._config.followCursor===e.followCursor&&this._config.followCursorOffset===e.followCursorOffset&&this._config.followCursorPlacement===e.followCursorPlacement)return;this._config=e,this._container.innerHTML=\"\";const t=document.createElement(\"div\");this._container.appendChild(t),this._value=document.createElement(\"span\"),this._value.classList.add(ea),t.appendChild(this._value),this._direction=document.createElement(\"span\"),this._direction.classList.add(ta),t.appendChild(this._direction),this._directionIcon=document.createElement(\"span\"),this._directionIcon.classList.add(na),this._direction.appendChild(this._directionIcon),this._directionText=document.createElement(\"span\"),this._directionText.classList.add(aa),this._direction.appendChild(this._directionText)}update(e){if(!(this._container&&this._value&&this._directionIcon&&this._directionText))return;const{value:t,direction:n}=e??{};this._container.classList.toggle(\"follow-cursor\",this._config.followCursor??!1),this._container.setAttribute(\"data-follow-cursor-placement\",this._config.followCursorPlacement??se.BOTTOM),this._container.classList.toggle(\"has-value\",void 0!==t),this._container.classList.toggle(\"has-direction\",void 0!==n),this._value.innerHTML=void 0!==t?S(t,this._config.unitFormat):\"\",void 0!==n?(this._directionIcon.style.transform=`rotate(${(n+180)%360}deg)`,this._directionText.innerHTML=V(n,this._config.directionType??x.INWARD,this._config.directionFormat??T.VALUE)):(this._directionIcon.style.transform=\"\",this._directionText.innerHTML=\"\")}updatePickingInfo(e){if(!this._container||!this._value||!this._direction)return;if(!e)return void this.update(void 0);this.update(e.raster);const t=void 0!==e.raster?.direction,n=this._container.firstChild;if(this._config.followCursor){const a=n.getBoundingClientRect(),i=this._value.getBoundingClientRect(),o=this._config.followCursorOffset??16,r=this._config.followCursorPlacement??se.BOTTOM;let A=e.x,s=e.y;if(r===se.BOTTOM)s+=o;else if(r===se.TOP)s-=o;else if(r===se.RIGHT)A+=o;else{if(r!==se.LEFT)throw new Error(`Invalid placement ${r}`);A-=o}if(this._container.style.left=`${A}px`,this._container.style.top=`${s}px`,r===se.BOTTOM||r===se.TOP){const e=parseFloat(window.getComputedStyle(n).paddingLeft),a=parseFloat(window.getComputedStyle(this._direction).marginLeft),o=-(e+(t?i.width+a:i.width/2));n.style.left=`${o}px`}if(r===se.RIGHT||r===se.LEFT){const e=-a.height/2;n.style.top=`${e}px`}if(r===se.TOP){const e=-a.height;n.style.top=`${e}px`}if(r===se.LEFT){const e=-a.width;n.style.left=`${e}px`}document.addEventListener(\"mousedown\",(()=>this.update(void 0)),{once:!0})}else this._container.style.left=\"\",this._container.style.top=\"\",n.style.left=\"\",n.style.top=\"\"}}jn(\".weatherlayers-timeline-control{margin:10px;pointer-events:auto}.weatherlayers-timeline-control>div{background:hsla(0,0%,100%,.5);color:rgba(0,0,0,.75);display:inline-block;font-family:Helvetica Neue,Arial,Helvetica,sans-serif;font-size:12px;line-height:14px;width:100%}.weatherlayers-timeline-control footer,.weatherlayers-timeline-control header,.weatherlayers-timeline-control main{margin:5px 10px;text-align:center}.weatherlayers-timeline-control header{font-weight:700}.weatherlayers-timeline-control footer{display:flex;gap:10px}.weatherlayers-timeline-control__progress-input{margin:-2px 0 2px;vertical-align:middle;width:100%}.weatherlayers-timeline-control__end-datetime,.weatherlayers-timeline-control__start-datetime{flex:0 0}.weatherlayers-timeline-control__buttons{flex:1 0}.weatherlayers-timeline-control__start-datetime{text-align:left}.weatherlayers-timeline-control__end-datetime{text-align:right}.weatherlayers-timeline-control__button{background:no-repeat 50%/contain;display:inline-block;height:16px;vertical-align:middle;width:16px}.weatherlayers-timeline-control__button+.weatherlayers-timeline-control__button{margin-left:5px}.weatherlayers-timeline-control__play-button{background-image:url(\\\"data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1576 927 248 1665q-23 13-39.5 3t-16.5-36V160q0-26 16.5-36t39.5 3l1328 738q23 13 23 31t-23 31z'/%3E%3C/svg%3E\\\")}.weatherlayers-timeline-control__pause-button{background-image:url(\\\"data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1664 192v1408q0 26-19 45t-45 19h-512q-26 0-45-19t-19-45V192q0-26 19-45t45-19h512q26 0 45 19t19 45zm-896 0v1408q0 26-19 45t-45 19H192q-26 0-45-19t-19-45V192q0-26 19-45t45-19h512q26 0 45 19t19 45z'/%3E%3C/svg%3E\\\")}.weatherlayers-timeline-control__step-backward-button{background-image:url(\\\"data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1363 141q19-19 32-13t13 32v1472q0 26-13 32t-32-13L653 941q-9-9-13-19v678q0 26-19 45t-45 19H448q-26 0-45-19t-19-45V192q0-26 19-45t45-19h128q26 0 45 19t19 45v678q4-10 13-19z'/%3E%3C/svg%3E\\\")}.weatherlayers-timeline-control__step-forward-button{background-image:url(\\\"data:image/svg+xml;charset=utf-8,%3Csvg width='1792' height='1792' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M429 1651q-19 19-32 13t-13-32V160q0-26 13-32t32 13l710 710q9 9 13 19V192q0-26 19-45t45-19h128q26 0 45 19t19 45v1408q0 26-19 45t-45 19h-128q-26 0-45-19t-19-45V922q-4 10-13 19z'/%3E%3C/svg%3E\\\")}.weatherlayers-timeline-control__loader{display:block;margin-top:2px}.weatherlayers-timeline-control__loader-icon{background:no-repeat 50%/contain;background-image:url(\\\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' style='margin:auto;background:0 0;display:block;shape-rendering:auto' width='16' height='16' viewBox='0 0 100 100' preserveAspectRatio='xMidYMid'%3E%3Ccircle cx='50' cy='50' fill='none' stroke='rgba(0, 0, 0, 0.4)' stroke-width='10' r='25' stroke-dasharray='117.80972450961724 41.269908169872416'%3E%3CanimateTransform attributeName='transform' type='rotate' repeatCount='indefinite' dur='1s' values='0 50 50;360 50 50' keyTimes='0;1'/%3E%3C/circle%3E%3C/svg%3E\\\");display:inline-block;height:16px;vertical-align:middle;width:16px}.weatherlayers-timeline-control__loader-text{color:rgba(0,0,0,.4);margin-left:2px;vertical-align:middle}.weatherlayers-timeline-control.loading *{pointer-events:none}.weatherlayers-timeline-control.running .weatherlayers-timeline-control__play-button,.weatherlayers-timeline-control:not(.running) .weatherlayers-timeline-control__pause-button{display:none}.weatherlayers-timeline-control:not(.loading) .weatherlayers-timeline-control__loader{visibility:hidden}\");const oa=\"weatherlayers-timeline-control\",ra=`${oa}__current-datetime`,Aa=`${oa}__progress-input`,sa=`${oa}__start-datetime`,la=`${oa}__buttons`,ca=`${oa}__end-datetime`,ga=`${oa}__button`,ua=`${oa}__step-backward-button`,pa=`${oa}__play-button`,da=`${oa}__pause-button`,ha=`${oa}__step-forward-button`,ma=`${oa}__loader`,Ca=`${oa}__loader-icon`,Ia=`${oa}__loader-text`,va=\"loading\",fa=\"running\";class Ea extends Xn{constructor(e={}){super(),this._container=void 0,this._currentDatetime=void 0,this._progressInput=void 0,this._loaderText=void 0,this._loading=!1,this._config=e,this._animation=new G({onUpdate:()=>this._animationUpdated(),fps:this._config.fps??15})}onAdd(){return this._container=document.createElement(\"div\"),this._container.classList.add(oa),this.setConfig(this._config),this._container}onRemove(){this._container&&this._container.parentNode&&(this._container.parentNode.removeChild(this._container),this._container=void 0,this._currentDatetime=void 0,this._progressInput=void 0)}get loading(){return this._loading}get running(){return this._running}get _running(){return this._animation.running}async toggle(e=!this._running){return e?await this.start():this.pause()}async start(){!this._container||this._loading||this._running||(await this._preload(this._config.datetimes),this._animation.start(),this._container.classList.add(fa),this._updateProgress())}pause(){this._container&&!this._loading&&this._running&&(this._animation.stop(),this._container.classList.remove(fa),this._updateProgress())}stop(){this._container&&this._progressInput&&!this._loading&&this._running&&(this._animation.stop(),this._container.classList.remove(fa),this._progressInput.valueAsNumber=0,this._updateProgress())}reset(){!this._progressInput||this._loading||this._running||(this._progressInput.valueAsNumber=0,this._updateProgress())}async stepBackward(){!this._progressInput||this._loading||this._running||(this._progressInput.value!==this._progressInput.min?this._progressInput.stepDown():this._progressInput.value=this._progressInput.max,await this._preload(this._startEndDatetimes),this._updateProgress())}async stepForward(){!this._progressInput||this._loading||this._running||(this._progressInput.value!==this._progressInput.max?this._progressInput.stepUp():this._progressInput.value=this._progressInput.min,await this._preload(this._startEndDatetimes),this._updateProgress())}get _startEndDatetimes(){if(!this._progressInput)return[];const e=this._config.datetimes[Math.floor(this._progressInput.valueAsNumber)],t=this._config.datetimes[Math.ceil(this._progressInput.valueAsNumber)];return e===t?[e]:[e,t]}_updateProgress(){if(!this._progressInput||!this._currentDatetime)return;const e=_(this._config.datetimes[Math.floor(this._progressInput.valueAsNumber)],this._config.datetimes[Math.ceil(this._progressInput.valueAsNumber)],this._progressInput.valueAsNumber%1);this._config.datetime=e;const t=this._config.datetimeFormatFunction??ie;this._currentDatetime.innerHTML=t(e),this._config.onUpdate&&this._config.onUpdate(e)}async _progressInputClicked(){this._loading||this._running||(await this._preload(this._startEndDatetimes),this._updateProgress())}_animationUpdated(){this._progressInput&&!this._loading&&this._running&&(this._progressInput.value!==this._progressInput.max?this._progressInput.stepUp():this._progressInput.value=this._progressInput.min,this._updateProgress())}async _preload(e){if(!this._container||!this._loaderText||!this._config.onPreload)return;this._loading=!0,this._container.classList.add(va);const t=this._config.onPreload(e);if(Array.isArray(t)){let e=0;const n=()=>{this._loaderText.innerHTML=`Loading... ${e}/${t.length}`};n();for(let a of t)a.then((()=>{e++,n()}));await Promise.all(t),this._loaderText.innerHTML=\"\"}else this._loaderText.innerHTML=\"Loading...\",await t,this._loaderText.innerHTML=\"\";this._loading=!1,this._container.classList.remove(va)}getConfig(){return{...this._config}}setConfig(e){if(!this._container)return;if(!e.datetimes||e.datetimes.length<2||!e.datetime||e.datetime<e.datetimes[0]||e.datetime>e.datetimes[e.datetimes.length-1])return;if(this._container.children.length>0&&this._config.width===e.width&&this._config.datetimes.length===e.datetimes.length&&this._config.datetimes.every(((t,n)=>t===e.datetimes[n]))&&this._config.datetime===e.datetime&&this._config.datetimeInterpolate===e.datetimeInterpolate&&this._config.datetimeFormatFunction===e.datetimeFormatFunction&&this._config.onPreload===e.onPreload&&this._config.onUpdate===e.onUpdate)return;this._config=e;const t=this._config.width??300,n=this._config.datetimes,a=this._config.datetime,i=this._config.datetimeInterpolate??!1,o=this._config.datetimeFormatFunction??ie,r=dn(n,(e=>e<=a));if(r<0)throw new Error(\"Invalid state\");const A=r<n.length-1?r+1:null,s=$(n[r],\"number\"==typeof A?n[r+1]:null,a),l=i?.25:1,c=r+Math.floor(s/l)*l;this._container.innerHTML=\"\",this._container.style.width=`${t}px`;const g=document.createElement(\"div\");this._container.appendChild(g);const u=document.createElement(\"header\");g.appendChild(u),this._currentDatetime=document.createElement(\"span\"),this._currentDatetime.classList.add(ra),this._currentDatetime.innerHTML=o(a),u.appendChild(this._currentDatetime);const p=document.createElement(\"main\");g.appendChild(p);const d=`${Aa}-ticks-${Yt()}`;this._progressInput=document.createElement(\"input\"),this._progressInput.classList.add(Aa),this._progressInput.type=\"range\",this._progressInput.min=\"0\",this._progressInput.max=\"\"+(n.length-1),this._progressInput.step=`${l}`,this._progressInput.valueAsNumber=c,this._progressInput.setAttribute(\"list\",d),this._progressInput.addEventListener(\"input\",(()=>this._progressInputClicked())),p.appendChild(this._progressInput);const h=document.createElement(\"datalist\");h.id=d,p.appendChild(h);for(let e=0;e<n.length;e++){const t=document.createElement(\"option\");t.innerHTML=`${e}`,h.appendChild(t)}const m=document.createElement(\"footer\");g.appendChild(m);const C=document.createElement(\"span\");C.classList.add(sa),C.innerHTML=o(n[0]),m.appendChild(C);const I=document.createElement(\"span\");I.classList.add(la),m.appendChild(I);const v=document.createElement(\"span\");v.classList.add(ca),v.innerHTML=o(n[n.length-1]),m.appendChild(v);const f=document.createElement(\"a\");f.href=\"javascript:void(0)\",f.classList.add(ga),f.classList.add(ua),f.addEventListener(\"click\",(()=>this.stepBackward())),I.appendChild(f);const E=document.createElement(\"a\");E.href=\"javascript:void(0)\",E.classList.add(ga),E.classList.add(pa),E.addEventListener(\"click\",(()=>this.start())),I.appendChild(E);const B=document.createElement(\"a\");B.href=\"javascript:void(0)\",B.classList.add(ga),B.classList.add(da),B.addEventListener(\"click\",(()=>this.pause())),I.appendChild(B);const Q=document.createElement(\"a\");Q.href=\"javascript:void(0)\",Q.classList.add(ga),Q.classList.add(ha),Q.addEventListener(\"click\",(()=>this.stepForward())),I.appendChild(Q);const y=document.createElement(\"span\");y.classList.add(ma),I.appendChild(y);const b=document.createElement(\"span\");b.classList.add(Ca),y.appendChild(b),this._loaderText=document.createElement(\"span\"),this._loaderText.classList.add(Ia),y.appendChild(this._loaderText)}}jn(\".weatherlayers-attribution-control{margin-top:2px;pointer-events:auto}.weatherlayers-attribution-control>div{background:hsla(0,0%,100%,.5);color:rgba(0,0,0,.75);display:inline-block;font-family:Helvetica Neue,Arial,Helvetica,sans-serif;font-size:12px;line-height:20px;padding:0 5px}.weatherlayers-attribution-control a{color:rgba(0,0,0,.75);text-decoration:none}.weatherlayers-attribution-control a:hover{text-decoration:underline}\");class Ba extends Xn{constructor(e={}){super(),this._container=void 0,this._config=e}onAdd(){return this._container=document.createElement(\"div\"),this._container.classList.add(\"weatherlayers-attribution-control\"),this.setConfig(this._config),this._container}onRemove(){this._container&&this._container.parentNode&&(this._container.parentNode.removeChild(this._container),this._container=void 0)}getConfig(){return{...this._config}}setConfig(e){if(!this._container)return;if(!e.attribution)return;if(this._container.children.length>0&&this._config.attribution===e.attribution)return;this._config=e;const t=this._config.attribution;this._container.innerHTML=`<div>${t}</div>`}}jn(\".weatherlayers-logo-control{margin:10px;pointer-events:auto}.weatherlayers-logo-control a{background:no-repeat 50%/contain;background-image:url(\\\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' xml:space='preserve' style='fill-rule:evenodd;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:2' viewBox='0 0 131 23'%3E%3Cg opacity='.9'%3E%3Cpath d='M27.391 17.706h2.534l1.736-6.475h.132l1.765 6.475h2.52l2.761-10.569H36.07l-1.384 7.009h-.132l-1.75-7.009H30.65l-1.692 7.009h-.131L27.42 7.137h-2.79l2.761 10.569Zm15.092.19c2.615 0 3.611-1.53 3.846-2.504l.022-.088-2.373.007-.015.029c-.117.213-.564.711-1.428.711-.996 0-1.597-.674-1.619-1.839h5.486v-.747c0-2.49-1.56-4.101-4.014-4.101-2.461 0-4.021 1.633-4.021 4.262v.008c0 2.644 1.56 4.262 4.116 4.262Zm-.036-6.687c.805 0 1.377.52 1.501 1.495h-3.003c.125-.96.703-1.495 1.502-1.495Zm7.028 6.622c1.04 0 1.912-.44 2.271-1.136h.139v1.011h2.549v-5.559c0-1.758-1.282-2.783-3.531-2.783-2.204 0-3.611.989-3.757 2.49l-.007.088h2.351l.014-.037c.154-.41.572-.637 1.253-.637.718 0 1.128.33 1.128.879v.637l-1.78.103c-2.102.132-3.259.988-3.259 2.468v.015c0 1.486 1.069 2.461 2.629 2.461Zm-.132-2.644v-.015c0-.484.403-.791 1.172-.842l1.37-.088v.534c0 .703-.637 1.245-1.458 1.245-.652 0-1.084-.322-1.084-.834Zm9.944 2.534c.49 0 .966-.044 1.237-.103v-1.853a5.19 5.19 0 0 1-.651.029c-.674 0-.982-.293-.982-.908v-3.428h1.633V9.554h-1.633V7.687h-2.6v1.867h-1.245v1.904h1.245v4.014c0 1.597.85 2.249 2.996 2.249Zm2.267-.015h2.593v-4.658c0-.938.498-1.575 1.34-1.575.879 0 1.282.557 1.282 1.546v4.687h2.593V12.44c0-1.956-.945-3.076-2.754-3.076-1.15 0-1.97.571-2.322 1.465h-.139V6.5h-2.593v11.206Zm12.719.19c2.615 0 3.611-1.53 3.846-2.504l.022-.088-2.373.007-.015.029c-.117.213-.564.711-1.428.711-.996 0-1.597-.674-1.619-1.839h5.486v-.747c0-2.49-1.56-4.101-4.014-4.101-2.461 0-4.021 1.633-4.021 4.262v.008c0 2.644 1.56 4.262 4.116 4.262Zm-.036-6.687c.805 0 1.377.52 1.501 1.495h-3.003c.125-.96.703-1.495 1.502-1.495Zm4.816 6.497h2.593v-4.314c0-1.128.71-1.78 1.926-1.78.366 0 .74.052 1.084.139V9.562a2.733 2.733 0 0 0-.879-.132c-1.04 0-1.757.52-1.992 1.421h-.139V9.554h-2.593v8.152Zm6.443 0h7.177v-2.161h-4.489V7.137h-2.688v10.569Zm10.36.125c1.04 0 1.912-.44 2.271-1.136h.139v1.011h2.549v-5.559c0-1.758-1.282-2.783-3.53-2.783-2.205 0-3.611.989-3.758 2.49l-.007.088h2.351l.015-.037c.154-.41.571-.637 1.252-.637.718 0 1.128.33 1.128.879v.637l-1.78.103c-2.102.132-3.259.988-3.259 2.468v.015c0 1.486 1.069 2.461 2.629 2.461Zm-.131-2.644v-.015c0-.484.402-.791 1.171-.842l1.37-.088v.534c0 .703-.637 1.245-1.457 1.245-.652 0-1.084-.322-1.084-.834Zm7.233 5.397c2.3 0 3.589-.82 4.336-3.142l2.571-7.888h-2.74l-1.45 5.911h-.154l-1.45-5.911h-2.863l2.783 8.152-.037.227c-.08.476-.527.747-1.304.747-.212 0-.424 0-.571-.007v1.904c.293.007.586.007.879.007Zm10.896-2.688c2.614 0 3.61-1.53 3.845-2.504l.022-.088-2.373.007-.015.029c-.117.213-.564.711-1.428.711-.996 0-1.597-.674-1.619-1.839h5.486v-.747c0-2.49-1.56-4.101-4.014-4.101-2.461 0-4.021 1.633-4.021 4.262v.008c0 2.644 1.56 4.262 4.117 4.262Zm-.037-6.687c.806 0 1.377.52 1.501 1.495h-3.003c.125-.96.704-1.495 1.502-1.495Zm4.816 6.497h2.593v-4.314c0-1.128.711-1.78 1.926-1.78.367 0 .74.052 1.084.139V9.562a2.733 2.733 0 0 0-.879-.132c-1.04 0-1.757.52-1.992 1.421h-.139V9.554h-2.593v8.152Zm9.468.19c2.212 0 3.735-1.083 3.735-2.775v-.008c0-1.223-.769-1.911-2.454-2.248l-1.406-.279c-.776-.161-1.025-.373-1.025-.739v-.015c0-.454.432-.725 1.076-.725.718 0 1.121.381 1.202.718l.014.051h2.373v-.037c-.044-1.303-1.23-2.475-3.589-2.475-2.19 0-3.581 1.018-3.581 2.644v.007c0 1.245.805 2.066 2.38 2.381l1.406.278c.74.154 1.018.373 1.018.754v.008c0 .439-.446.71-1.142.71-.754 0-1.165-.315-1.318-.732l-.015-.044h-2.52v.051c.162 1.421 1.429 2.475 3.846 2.475Z' style='fill:none;fill-rule:nonzero;stroke:%23000;stroke-opacity:.3;stroke-width:3px' transform='translate(-2.33)'/%3E%3Cpath d='M27.391 17.706h2.534l1.736-6.475h.132l1.765 6.475h2.52l2.761-10.569H36.07l-1.384 7.009h-.132l-1.75-7.009H30.65l-1.692 7.009h-.131L27.42 7.137h-2.79l2.761 10.569Zm15.092.19c2.615 0 3.611-1.53 3.846-2.504l.022-.088-2.373.007-.015.029c-.117.213-.564.711-1.428.711-.996 0-1.597-.674-1.619-1.839h5.486v-.747c0-2.49-1.56-4.101-4.014-4.101-2.461 0-4.021 1.633-4.021 4.262v.008c0 2.644 1.56 4.262 4.116 4.262Zm-.036-6.687c.805 0 1.377.52 1.501 1.495h-3.003c.125-.96.703-1.495 1.502-1.495Zm7.028 6.622c1.04 0 1.912-.44 2.271-1.136h.139v1.011h2.549v-5.559c0-1.758-1.282-2.783-3.531-2.783-2.204 0-3.611.989-3.757 2.49l-.007.088h2.351l.014-.037c.154-.41.572-.637 1.253-.637.718 0 1.128.33 1.128.879v.637l-1.78.103c-2.102.132-3.259.988-3.259 2.468v.015c0 1.486 1.069 2.461 2.629 2.461Zm-.132-2.644v-.015c0-.484.403-.791 1.172-.842l1.37-.088v.534c0 .703-.637 1.245-1.458 1.245-.652 0-1.084-.322-1.084-.834Zm9.944 2.534c.49 0 .966-.044 1.237-.103v-1.853a5.19 5.19 0 0 1-.651.029c-.674 0-.982-.293-.982-.908v-3.428h1.633V9.554h-1.633V7.687h-2.6v1.867h-1.245v1.904h1.245v4.014c0 1.597.85 2.249 2.996 2.249Zm2.267-.015h2.593v-4.658c0-.938.498-1.575 1.34-1.575.879 0 1.282.557 1.282 1.546v4.687h2.593V12.44c0-1.956-.945-3.076-2.754-3.076-1.15 0-1.97.571-2.322 1.465h-.139V6.5h-2.593v11.206Zm12.719.19c2.615 0 3.611-1.53 3.846-2.504l.022-.088-2.373.007-.015.029c-.117.213-.564.711-1.428.711-.996 0-1.597-.674-1.619-1.839h5.486v-.747c0-2.49-1.56-4.101-4.014-4.101-2.461 0-4.021 1.633-4.021 4.262v.008c0 2.644 1.56 4.262 4.116 4.262Zm-.036-6.687c.805 0 1.377.52 1.501 1.495h-3.003c.125-.96.703-1.495 1.502-1.495Zm4.816 6.497h2.593v-4.314c0-1.128.71-1.78 1.926-1.78.366 0 .74.052 1.084.139V9.562a2.733 2.733 0 0 0-.879-.132c-1.04 0-1.757.52-1.992 1.421h-.139V9.554h-2.593v8.152Zm6.443 0h7.177v-2.161h-4.489V7.137h-2.688v10.569Zm10.36.125c1.04 0 1.912-.44 2.271-1.136h.139v1.011h2.549v-5.559c0-1.758-1.282-2.783-3.53-2.783-2.205 0-3.611.989-3.758 2.49l-.007.088h2.351l.015-.037c.154-.41.571-.637 1.252-.637.718 0 1.128.33 1.128.879v.637l-1.78.103c-2.102.132-3.259.988-3.259 2.468v.015c0 1.486 1.069 2.461 2.629 2.461Zm-.131-2.644v-.015c0-.484.402-.791 1.171-.842l1.37-.088v.534c0 .703-.637 1.245-1.457 1.245-.652 0-1.084-.322-1.084-.834Zm7.233 5.397c2.3 0 3.589-.82 4.336-3.142l2.571-7.888h-2.74l-1.45 5.911h-.154l-1.45-5.911h-2.863l2.783 8.152-.037.227c-.08.476-.527.747-1.304.747-.212 0-.424 0-.571-.007v1.904c.293.007.586.007.879.007Zm10.896-2.688c2.614 0 3.61-1.53 3.845-2.504l.022-.088-2.373.007-.015.029c-.117.213-.564.711-1.428.711-.996 0-1.597-.674-1.619-1.839h5.486v-.747c0-2.49-1.56-4.101-4.014-4.101-2.461 0-4.021 1.633-4.021 4.262v.008c0 2.644 1.56 4.262 4.117 4.262Zm-.037-6.687c.806 0 1.377.52 1.501 1.495h-3.003c.125-.96.704-1.495 1.502-1.495Zm4.816 6.497h2.593v-4.314c0-1.128.711-1.78 1.926-1.78.367 0 .74.052 1.084.139V9.562a2.733 2.733 0 0 0-.879-.132c-1.04 0-1.757.52-1.992 1.421h-.139V9.554h-2.593v8.152Zm9.468.19c2.212 0 3.735-1.083 3.735-2.775v-.008c0-1.223-.769-1.911-2.454-2.248l-1.406-.279c-.776-.161-1.025-.373-1.025-.739v-.015c0-.454.432-.725 1.076-.725.718 0 1.121.381 1.202.718l.014.051h2.373v-.037c-.044-1.303-1.23-2.475-3.589-2.475-2.19 0-3.581 1.018-3.581 2.644v.007c0 1.245.805 2.066 2.38 2.381l1.406.278c.74.154 1.018.373 1.018.754v.008c0 .439-.446.71-1.142.71-.754 0-1.165-.315-1.318-.732l-.015-.044h-2.52v.051c.162 1.421 1.429 2.475 3.846 2.475Z' style='fill:%23fff;fill-rule:nonzero' transform='translate(-2.33)'/%3E%3Cpath d='m6.107 9.12-2.749 1.193a.68.68 0 0 0-.408.628c0 .275.16.522.407.629l2.75 1.193-2.749 1.192a.684.684 0 0 0-.408.63c0 .275.16.521.407.628l6.213 2.696a1.103 1.103 0 0 0 .877 0l6.212-2.695a.683.683 0 0 0 .408-.629.682.682 0 0 0-.407-.629l-2.75-1.193 2.749-1.193a.683.683 0 0 0 .409-.629.68.68 0 0 0-.408-.628l-2.75-1.194-1.144.497 3.054 1.326-5.736 2.488a.181.181 0 0 1-.151 0l-5.736-2.489 3.054-1.325-1.144-.496Zm9.713 5.465-5.736 2.489a.189.189 0 0 1-.151 0l-5.736-2.49 3.054-1.325 2.319 1.006a1.09 1.09 0 0 0 .877 0l2.319-1.006 3.054 1.326Zm-2.289-7.966c-.011.04-.039.066-.083.079l-1.207.378v1.206a.122.122 0 0 1-.054.103.128.128 0 0 1-.12.016L10.86 8.03l-.744.978a.13.13 0 0 1-.107.051.134.134 0 0 1-.108-.051l-.744-.978-1.207.371c-.038.015-.078.01-.12-.016a.121.121 0 0 1-.053-.103V7.076l-1.208-.378c-.044-.013-.071-.039-.082-.079-.014-.045-.008-.083.016-.114l.744-.978-.744-.977a.121.121 0 0 1-.016-.114c.011-.04.038-.066.082-.079l1.208-.378V2.773c0-.042.017-.077.053-.103.042-.026.082-.032.12-.016l1.207.371.744-.978A.131.131 0 0 1 10.009 2c.047 0 .083.016.107.047l.744.978 1.207-.371c.039-.016.079-.01.12.016a.122.122 0 0 1 .054.103v1.206l1.207.378c.044.013.072.039.083.079a.119.119 0 0 1-.017.114l-.744.977.744.978c.025.031.031.069.017.114M12.39 5.527c0-.307-.063-.601-.188-.88a2.287 2.287 0 0 0-1.269-1.21 2.422 2.422 0 0 0-.924-.18c-.323 0-.631.06-.924.18a2.284 2.284 0 0 0-1.269 1.21 2.115 2.115 0 0 0-.188.88c0 .308.062.602.188.881a2.284 2.284 0 0 0 1.269 1.21c.293.12.601.18.924.18.322 0 .63-.06.924-.18a2.287 2.287 0 0 0 1.269-1.21c.125-.279.188-.573.188-.881' style='fill:none;fill-rule:nonzero;stroke:%23000;stroke-opacity:.3;stroke-width:2.4px' transform='matrix(1.25 0 0 1.25 -2.188 -1)'/%3E%3Cpath d='m6.107 9.12-2.749 1.193a.68.68 0 0 0-.408.628c0 .275.16.522.407.629l2.75 1.193-2.749 1.192a.684.684 0 0 0-.408.63c0 .275.16.521.407.628l6.213 2.696a1.103 1.103 0 0 0 .877 0l6.212-2.695a.683.683 0 0 0 .408-.629.682.682 0 0 0-.407-.629l-2.75-1.193 2.749-1.193a.683.683 0 0 0 .409-.629.68.68 0 0 0-.408-.628l-2.75-1.194-1.144.497 3.054 1.326-5.736 2.488a.181.181 0 0 1-.151 0l-5.736-2.489 3.054-1.325-1.144-.496Zm9.713 5.465-5.736 2.489a.189.189 0 0 1-.151 0l-5.736-2.49 3.054-1.325 2.319 1.006a1.09 1.09 0 0 0 .877 0l2.319-1.006 3.054 1.326Zm-2.289-7.966c-.011.04-.039.066-.083.079l-1.207.378v1.206a.122.122 0 0 1-.054.103.128.128 0 0 1-.12.016L10.86 8.03l-.744.978a.13.13 0 0 1-.107.051.134.134 0 0 1-.108-.051l-.744-.978-1.207.371c-.038.015-.078.01-.12-.016a.121.121 0 0 1-.053-.103V7.076l-1.208-.378c-.044-.013-.071-.039-.082-.079-.014-.045-.008-.083.016-.114l.744-.978-.744-.977a.121.121 0 0 1-.016-.114c.011-.04.038-.066.082-.079l1.208-.378V2.773c0-.042.017-.077.053-.103.042-.026.082-.032.12-.016l1.207.371.744-.978A.131.131 0 0 1 10.009 2c.047 0 .083.016.107.047l.744.978 1.207-.371c.039-.016.079-.01.12.016a.122.122 0 0 1 .054.103v1.206l1.207.378c.044.013.072.039.083.079a.119.119 0 0 1-.017.114l-.744.977.744.978c.025.031.031.069.017.114M12.39 5.527c0-.307-.063-.601-.188-.88a2.287 2.287 0 0 0-1.269-1.21 2.422 2.422 0 0 0-.924-.18c-.323 0-.631.06-.924.18a2.284 2.284 0 0 0-1.269 1.21 2.115 2.115 0 0 0-.188.88c0 .308.062.602.188.881a2.284 2.284 0 0 0 1.269 1.21c.293.12.601.18.924.18.322 0 .63-.06.924-.18a2.287 2.287 0 0 0 1.269-1.21c.125-.279.188-.573.188-.881' style='fill:%23fff;fill-rule:nonzero' transform='matrix(1.25 0 0 1.25 -2.188 -1)'/%3E%3C/g%3E%3C/svg%3E\\\");display:inline-block;height:23px;margin:-1.5px;vertical-align:middle;width:131px}\");class Qa extends Xn{constructor(e={}){super(),this._container=void 0,this._config=e}onAdd(){return this._container=document.createElement(\"div\"),this._container.classList.add(\"weatherlayers-logo-control\"),this.setConfig(this._config),this._container}onRemove(){this._container&&this._container.parentNode&&(this._container.parentNode.removeChild(this._container),this._container=void 0)}getConfig(){return{...this._config}}setConfig(e){if(!this._container)return;this._config=e,this._container.innerHTML=\"\";const t=document.createElement(\"a\");t.href=\"https://weatherlayers.com\",t.target=\"_blank\",t.ariaLabel=\"WeatherLayers\",this._container.appendChild(t)}}export{G as Animation,Ba as AttributionControl,jt as ContourLayer,y as DATETIME,k as DEFAULT_ICON_COLOR,q as DEFAULT_ICON_SIZE,D as DEFAULT_LINE_COLOR,U as DEFAULT_LINE_WIDTH,L as DEFAULT_TEXT_COLOR,N as DEFAULT_TEXT_FONT_FAMILY,W as DEFAULT_TEXT_FORMAT_FUNCTION,Z as DEFAULT_TEXT_OUTLINE_COLOR,F as DEFAULT_TEXT_OUTLINE_WIDTH,J as DEFAULT_TEXT_SIZE,T as DirectionFormat,x as DirectionType,In as FrontLayer,un as FrontType,xn as GridLayer,Bn as GridStyle,gn as HighLowLayer,oe as ImageInterpolation,re as ImageType,_n as LegendControl,Qa as LogoControl,zn as ParticleLayer,se as Placement,Zt as RasterLayer,Ea as TimelineControl,ia as TooltipControl,Ae as UnitSystem,Q as VERSION,R as ensureDefaultProps,ie as formatDatetime,V as formatDirection,P as formatUnit,O as formatValue,S as formatValueWithUnit,te as getClosestEndDatetime,ee as getClosestStartDatetime,$ as getDatetimeWeight,Ue as getRasterMagnitudeData,Ve as getRasterPoints,_ as interpolateDatetime,Y as loadJson,H as loadTextureData,ne as offsetDatetime,ae as offsetDatetimeRange,w as setLibrary};\n","<template>\n <div class=\"wind-altitude-control\" @mousedown.stop @touchstart.stop>\n <label for=\"hpa-slider\">{{ isobaric }}hPa | FL{{ FL }}</label>\n <input\n id=\"hpa-slider\"\n v-model=\"isobaric\"\n type=\"range\"\n min=\"100\"\n max=\"1000\"\n step=\"50\"\n @input=\"updateLabel\"\n @change=\"updateValue\"\n />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, watch, inject, onUnmounted, onMounted } from \"vue\";\nimport type { TangramApi, Disposable } from \"@open-aviation/tangram-core/api\";\nimport { ParticleLayer, ImageType } from \"weatherlayers-gl\";\n\nconst tangramApi = inject<TangramApi>(\"tangramApi\");\nif (!tangramApi) {\n throw new Error(\"assert: tangram api not provided\");\n}\n\nconst isobaric = ref(300);\nconst FL = ref(300);\nconst layerDisposable = ref<Disposable | null>(null);\n\nconst convertHpaToFlightLevel = (hpa: number) => {\n const P0 = 1013.25;\n const T0 = 288.15;\n const L = 0.0065;\n const g = 9.80665;\n const R = 287.05;\n const H_TROP = 11000;\n\n let altitude;\n if (hpa > 226.32) {\n altitude = (T0 / L) * (1 - Math.pow(hpa / P0, (L * R) / g));\n } else {\n const T_TROP = T0 - L * H_TROP;\n const P_TROP = P0 * Math.pow(T_TROP / T0, g / (L * R));\n altitude = H_TROP + ((T_TROP * R) / g) * Math.log(P_TROP / hpa);\n }\n return Math.round((altitude * 3.28084) / 1000) * 10;\n};\n\nconst updateLabel = () => {\n FL.value = convertHpaToFlightLevel(isobaric.value);\n};\n\nconst updateValue = () => {\n fetchAndDisplay();\n};\n\nasync function loadTextureDataFromUri(\n uri: string\n): Promise<{ data: Uint8ClampedArray; width: number; height: number }> {\n return new Promise((resolve, reject) => {\n const img = new Image();\n img.onload = () => {\n const canvas = document.createElement(\"canvas\");\n canvas.width = img.width;\n canvas.height = img.height;\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n return reject(new Error(\"Could not get 2d context from canvas\"));\n }\n ctx.drawImage(img, 0, 0);\n const imageData = ctx.getImageData(0, 0, img.width, img.height);\n resolve({\n data: imageData.data,\n width: imageData.width,\n height: imageData.height\n });\n };\n img.onerror = err => {\n reject(err);\n };\n img.src = uri;\n });\n}\n\nconst fetchAndDisplay = async () => {\n if (!tangramApi.map.isReady.value) return;\n\n if (layerDisposable.value) {\n layerDisposable.value.dispose();\n layerDisposable.value = null;\n }\n\n try {\n const response = await fetch(`/weather/wind?isobaric=${isobaric.value}`);\n if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`);\n const { imageDataUri, bounds, imageUnscale } = await response.json();\n\n const textureData = await loadTextureDataFromUri(imageDataUri);\n\n const windPalette: [number, [number, number, number]][] = [\n [0, [37, 99, 235]],\n [10, [65, 171, 93]],\n [20, [253, 174, 97]],\n [30, [244, 109, 67]],\n [40, [215, 25, 28]],\n [50, [128, 0, 38]]\n ];\n\n const windLayer = new ParticleLayer({\n id: \"wind-field-layer\",\n image: textureData,\n imageType: ImageType.VECTOR,\n imageUnscale: imageUnscale,\n bounds: bounds,\n\n numParticles: 1500,\n maxAge: 15,\n speedFactor: 20,\n width: 1,\n palette: windPalette,\n animate: true\n });\n\n layerDisposable.value = tangramApi.map.addLayer(windLayer);\n } catch (error) {\n console.error(\"Failed to fetch or display wind data:\", error);\n }\n};\n\nwatch(\n tangramApi.map.isReady,\n isReady => {\n if (isReady) {\n fetchAndDisplay();\n }\n },\n { immediate: true }\n);\n\nonMounted(() => {\n FL.value = convertHpaToFlightLevel(isobaric.value);\n});\n\nonUnmounted(() => {\n if (layerDisposable.value) {\n layerDisposable.value.dispose();\n layerDisposable.value = null;\n }\n});\n</script>\n\n<style scoped>\n.wind-altitude-control {\n position: absolute;\n bottom: 20px;\n right: 70px;\n background: rgba(255, 255, 255, 0.8);\n padding: 10px;\n border-radius: 5px;\n z-index: 1000;\n}\n\n.wind-altitude-control label {\n font-family: \"B612\", sans-serif;\n font-size: 12px;\n}\n\ninput[type=\"range\"] {\n cursor: pointer;\n width: 100%;\n margin-top: 5px;\n background: #bab0ac;\n height: 2px;\n border-radius: 5px;\n}\n</style>\n","import type { TangramApi } from \"@open-aviation/tangram-core/api\";\nimport WindFieldLayer from \"./WindFieldLayer.vue\";\n\nexport function install(api: TangramApi) {\n api.ui.registerWidget(\"wind-field-layer\", \"MapOverlay\", WindFieldLayer);\n}\n"],"names":["getDefaultExportFromCjs","x","limit","hasRequiredLimit","requireLimit","min","max","clip_rgb","hasRequiredClip_rgb","requireClip_rgb","rgb","i","type","hasRequiredType","requireType","classToType","name","obj","unpack","hasRequiredUnpack","requireUnpack","args","keyOrder","k","last","hasRequiredLast","requireLast","l","utils","hasRequiredUtils","requireUtils","PI","input","hasRequiredInput","requireInput","Color_1","hasRequiredColor","requireColor","_input","Color","me","mode","autodetect","a","b","chk","chroma_1","hasRequiredChroma","requireChroma","chroma","chromaExports","css","hsl2css_1","hasRequiredHsl2css","requireHsl2css","rnd","hsla","rgb2hsl_1","hasRequiredRgb2hsl","requireRgb2hsl","r","g","s","h","rgb2css_1","hasRequiredRgb2css","requireRgb2css","hsl2css","rgb2hsl","round","rgba","hsl2rgb_1","hasRequiredHsl2rgb","requireHsl2rgb","t3","c","t2","t1","h_","css2rgb_1","hasRequiredCss2rgb","requireCss2rgb","hsl2rgb","RE_RGB","RE_RGBA","RE_RGB_PCT","RE_RGBA_PCT","RE_HSL","RE_HSLA","css2rgb","m","hsl","hasRequiredCss","requireCss","rgb2css","rest","hex","rgb2hex_1","hasRequiredRgb2hex","requireRgb2hex","str","hxa","hex2rgb_1","hasRequiredHex2rgb","requireHex2rgb","RE_HEX","RE_HEXA","u","hasRequiredHex","requireHex","rgb2hex","hasRequiredHsl$1","requireHsl$1","hsv","rgb2hsv","hasRequiredRgb2hsv","requireRgb2hsv","min_","max_","delta","v","hsv2rgb_1","hasRequiredHsv2rgb","requireHsv2rgb","floor","p","q","t","hasRequiredHsv$1","requireHsv$1","named","w3cx11_1","hasRequiredW3cx11","requireW3cx11","hasRequiredNamed","requireNamed","w3cx11","hex2rgb","n","hasRequiredRgb$1","requireRgb$1","alpha","hasRequiredAlpha","requireAlpha","mutate","_hsx","hasRequired_hsx","require_hsx","col1","col2","f","xyz0","xyz1","hue0","hue1","sat0","sat1","lbv0","lbv1","sat","hue","lbv","dh","interpolator","hasRequiredInterpolator","requireInterpolator","hsl_1","hasRequiredHsl","requireHsl","interpolate_hsx","hsv_1","hasRequiredHsv","requireHsv","rgb_1","hasRequiredRgb","requireRgb","mix$1","hasRequiredMix","requireMix","mixExports","mix","scale$1","hasRequiredScale","requireScale","pow","colors","_mode","_nacol","_spread","_domain","_pos","_padding","_classes","_colors","_out","_min","_max","_correctLightness","_colorCache","_useCache","_gamma","setColors","resetCache","getClass","value","tMapLightness","tMapDomain","getColor","val","bypassMap","col","classes","d","domain","tOut","tBreaks","_m","_o","L0","L1","pol","L_actual","L_ideal","L_diff","t0","max_iter","numColors","out","result","dm","dd","__range__","samples","end","asc","left","right","inclusive","range","ascending","scaleExports","scale","LINE_SEPARATOR_REGEX","COLOR_SEPARATOR_REGEX","isLineComment","line","isGmt4Text","lines","isGmt5Text","getMode","modeLine","match","splitColor","color","colorArray","parsePaletteTextInternal","paletteText","isGmt4","isGmt5","paletteLines","paletteArray","paletteLine","fields","DEFAULT_MODE","parseValue","bounds","percentage","parseColor","parsePaletteArray","nodata","parsedValue","parsedColor","palette","parsePaletteText","parsePalette","colorRampCanvas","width","height","canvas","ctx","DEFAULT_RADIUS","equals","position1","position2","toRadians","toDegrees","wrap360","distance","start","destination","radius","R","φ1","λ1","φ2","λ2","Δφ","Δλ","initialBearing","y","θ","bearing","destinationPoint","δ","sinφ2","lat","proxyMarker","createEndpoint","releaseProxy","finalizer","throwMarker","isObject","proxyTransferHandler","port1","port2","expose","port","wrap","throwTransferHandler","serialized","transferHandlers","isAllowedOrigin","allowedOrigins","origin","allowedOrigin","ep","callback","ev","id","path","argumentList","fromWireValue","returnValue","parent","prop","rawValue","proxy","transfer","wireValue","transferables","toWireValue","closeEndPoint","error","isMessagePort","endpoint","target","pendingListeners","data","resolver","createProxy","throwIfProxyReleased","isReleased","releaseEndpoint","requestResponseMessage","proxyCounter","proxyFinalizers","newCount","registerProxy","unregisterProxy","isProxyReleased","_target","_thisArg","rawArgumentList","processArguments","myFlat","arr","processed","transferCache","transfers","handler","serializedValue","msg","resolve","generateUUID","browserWorkerPolyFill","workerObj","createObjectURL","blob","factory","code","objectUrl","worker","terminate","transform","D2R","R2D","A","MAXEXTENT","SPHERICAL_MERCATOR_SRS","WGS84","cache","isFloat","SphericalMercator","#size","#expansion","#Bc","#Cc","#zc","#Ac","options","size","ll","zoom","bc","cc","ac","px","zc","lon","bbox","to","xy","tmsStyle","srs","ur","box","px_ll","px_ur","tms","icomesh","order","uvMap","numVertices","numDuplicates","vertices","triangles","midCache","addMidPoint","key","trianglesPrev","IndexArray","prevLen","v1","v2","v3","uv","duplicates","addDuplicate","uvx","uvy","cached","dupe","ax","bx","cx","ay","by","cy","ARRAY_TYPES","VERSION","HEADER_SIZE","KDBush","magic","versionAndType","version","ArrayType","nodeSize","numItems","arrayTypeIndex","coordsByteSize","idsByteSize","padCoords","index","numAdded","sort","minX","minY","maxX","maxY","ids","coords","stack","axis","qx","qy","r2","sqDist","select","z","sd","newLeft","newRight","j","swapItem","swap","tmp","dx","dy","TinyQueue","compare","defaultCompare","item","top","bottom","pos","current","halfLength","best","earthRadius","rad","around","lng","maxResults","maxDistance","predicate","maxHaverSinDist","haverSin","compareDist","node","cosLat","dist","haverSinDist","midLng","midLat","nextAxis","leftNode","rightNode","boxDist","candidate","minLng","maxLng","minLat","maxLat","haverSinDLng","extremumLat","vertexLat","haverSinDistPartial","theta","cosLat1","lat1","lat2","lng1","lng2","cosDLng","window_","process_","isElectron","mockUserAgent","userAgent","isBrowser","getStorage","storage","LocalStorage","defaultConfig","configuration","serializedConfiguration","formatTime","ms","formatted","leftPad","string","length","padLength","COLOR","BACKGROUND_INCREMENT","addColor","background","autobind","predefined","proto","propNames","object","assert","condition","message","getHiResTimestamp","timestamp","window","process","timeParts","originalConsole","DEFAULT_LOG_CONFIGURATION","noop","ONCE","Log","newLevel","newPriority","enabled","level","setting","oldUsage","newUsage","logLevel","table","columns","getTableHeader","opts","normalizeArguments","collapsed","func","normalizeLogLevel","method","tag","decorateMessage","resolvedLevel","messageType","time","title","log","uidCounters","uid","count","Resource","device","props","defaultProps","selectivelyMerge","resource","stats","bytes","mergedProps","Buffer","deducedProps","byteOffset","byteLength","arrayBuffer","debugDataLength","getDataTypeInfo","signedType","primitiveType","NORMALIZED_TYPE_MAP","normalized","integer","signed","getNormalizedDataType","signedDataType","dataType","alignTo","getDataType","arrayOrType","Constructor","info","entry","getTypedArrayConstructor","getVertexFormatInfo","format","webglOnly","type_","components","decodedType","makeVertexFormat","getVertexFormatFromAttribute","typedArray","getCompatibleVertexFormat","vertexType","Sampler","BASE_DIMENSIONS","Texture","sampler","newProps","options_","depth","TextureView","formatCompilerLog","shaderLog","source","formattedLog","currentMessage","lineNum","getNumberedLine","formatCompilerMessage","numberedLines","getNumberedLines","positionIndicator","lineIndex","sourceLine","escapedLine","escapeHTML","padLeft","paddedLength","unsafe","Shader","getShaderIdFromProps","trigger","messages","shaderId","shaderName","shaderTitle","htmlLog","translatedSource","button","dataURI","getShaderName","shader","defaultName","RenderPipeline","ComputePipeline","getVariableShaderTypeInfo","UNIFORM_FORMATS","getAttributeShaderTypeInfo","attributeType","TYPE_INFO","PRIMITIVE_TYPE_SIZES","getAttributeInfosFromLayouts","shaderLayout","bufferLayout","attributeInfos","attribute","attributeInfo","getAttributeInfoFromLayouts","shaderDeclaration","getAttributeFromShaderLayout","bufferMapping","getAttributeFromBufferLayout","attributeTypeInfo","defaultVertexFormat","vertexFormat","vertexFormatInfo","attr","bufferLayouts","checkBufferLayouts","bufferLayoutInfo","getAttributeFromShortHand","getAttributeFromAttributesList","byteStride","attributeMapping","mapping","getScratchArrayBuffer","isTypedArray","isNumberArray","minBufferSize","UniformBufferLayout","uniformTypes","uniformSizes","uniformType","typeAndComponents","offset","actualByteLength","uniformValues","typedArrays","uniformLayout","arrayEqual","arrayA","arrayB","arrayCopy","UniformBlock","binding","binding_","uniformBlock","uniform","uniforms","reason","UniformStore","blocks","bufferName","block","uniformBufferName","uniformBufferLayout","uniformBuffer","blockName","uniformBufferData","bufferReason","DEFAULT_PROP_VALIDATORS","propType","makePropValidators","propTypes","propValidators","makePropValidator","getTypeOf","MODULE_INJECTORS_VS","MODULE_INJECTORS_FS","MODULE_INJECTORS","REGEX_START_OF_MAIN","REGEX_END_OF_MAIN","fragments","DECLARATION_INJECT_MARKER","normalizeInjections","injections","hook","injection","stage","getHookStage","injectShader","inject","injectStandardStubs","isVertex","fragmentData","len","fragmentString","initializeShaderModules","modules","module","initializeShaderModule","deprecations","instance","parseDeprecationDefinitions","checkShaderModuleDeprecations","shaderModule","shaderSource","def","getShaderModuleDependencies","moduleMap","moduleDepth","getDependencyGraph","dependencies","getPlatformShaderDefines","platformInfo","transpileGLSLShader","convertShader","ES300_VERTEX_REPLACEMENTS","ES300_FRAGMENT_REPLACEMENTS","ES300_REPLACEMENTS","makeVariableTextRegExp","replacements","pattern","replacement","qualifier","getShaderHooks","hookFunctions","hookInjections","hookName","hookFunction","normalizeShaderHooks","shaderStage","signature","normalizedHook","getShaderInfo","getShaderVersion","words","parsedVersion","INJECT_SHADER_DECLARATIONS","FRAGMENT_SHADER_PROLOGUE","assembleWGSLShader","assembleShaderWGSL","assembleGetUniforms","assembleGLSLShaderPair","vs","fs","assembleShaderGLSL","coreSource","assembledSource","hookFunctionMap","declInjections","mainInjections","hash","modulesToInject","moduleSource","getShaderModuleSource","injectionType","language","defines","prologue","sourceVersion","targetVersion","sourceVersionDirective","allDefines","getApplicationDefines","moduleUniforms","sourceText","define","moduleName","IFDEF_REGEXP","ENDIF_REGEXP","preprocess","output","conditional","currentDefine","matchIf","matchEnd","ShaderAssembler","getUniforms","appModules","seen","FS_GLES","FS300","getPassthroughFS","inputChannels","inputType","channelCountToType","outputValue","convertToVec4","channels","variable","e","o","_","w","I","T","S","E","$","L","C","D$1","N$1","V","O$1","B","F","M","U","P","W","H","R$1","G","X$1","Z$1","Q","Y","K$1","J","ee","te","ne","se","re$1","ae","ie","oe$1","ce$1","ce","le$1","ue$1","he$1","fe$1","pe$1","fe","de$1","me$1","ge$1","_e$1","xe$1","Be","Me","Ue","ve$1","we$1","ke$1","we","Ie$1","Te$1","Se$1","Ae","Te","Ee$1","$e$1","Le$1","Ce$1","De$1","Ne$1","Ne","Ve$1","Ve","Oe$1","Be$1","Fe","Me$1","pe","ve","xe","Pe$1","Pe","We$1","We","qe$1","He$1","He","qe","ze$1","Re$1","ze","Ge","Xe","je","Ze","Qe","Ye","Ke","Je","et","tt","nt","st$1","rt$1","at$1","at","D","st","oe","De","ge","de","X","le","ue","he","rt","it","ot$1","ot","ct$1","ct","lt$1","lt","ut$1","ht$1","ke","ft","pt","dt$1","dt","ut","ht","re","Z","O","Ie","_e","ye","Oe","Se","Ee","mt$1","gt$1","mt","Ce","$e","Re","N","Le","K","_t$1","gt","getShaderLayoutFromWGSL","parsedWGSL","parseWGSL","members","getType","texture","vertex","attributeCount","wgslAttribute","WgslReflect","GPUGeometry","positions","makeGPUGeometry","geometry","indices","getIndexBufferFromGeometry","attributes","getAttributeBuffersFromGeometry","attributeName","vertexCount","PipelineFactory","allProps","pipeline","shaderHash","vsHash","fsHash","varyingHash","bufferLayoutHash","parameterHash","ShaderFactory","cacheEntry","getDebugTableForShaderLayout","layout","header","attributeDeclaration","glslDeclaration","varyingDeclaration","debugFramebuffer","fbo","minimap","opaque","rgbaScale","imageData","deepEqual","aKeys","bKeys","BufferLayoutHelper","bufferLayouts1","bufferLayouts2","mergedLayouts","attribute2","bufferIndex","sortedBufferLayoutByShaderSourceLocations","shaderLayoutMap","sortedLayout","attributeNamesA","attributeNamesB","minLocationA","minLocationB","isNumericArray","isUniformValue","splitUniformsAndBindings","ShaderInputs","resolvedModules","resolvedModule","moduleProps","oldUniforms","oldBindings","uniformsAndBindings","bindings","moduleBindings","pathPrefix","loadImageBitmap","url","image","TextureCubeFaces","CubeFaces","AsyncTexture","reject","asyncData","awaitAllPromises","syncProps","maxMips","untypedData","face","lodData","lodArray","mipLevel","faceData","faceDepth","mipLevelArray","values","keys","resolvedObject","LOG_DRAW_PRIORITY","LOG_DRAW_TIMEOUT","Model","shaderInputs","getPlatformInfo","needsRedraw","renderPass","loadingBinding","drawSuccess","syncBindings","indexBuffer","indexCount","gpuGeometry","bufferLayoutHelper","topology","parameters","instanceCount","shaderModuleHasUniforms","transformFeedback","buffers","disableWarnings","buffer","attributeNames","set","location","validBindings","prevShaderVs","prevShaderFs","logDrawTimeout","shaderLayoutTable","uniformTable","attributeTable","debugFramebuffers","framebuffer","TypedArrayConstructor","isObjectEmpty","BufferTransform","varyingName","be","At","Ct","It","vt","Et","Bt","Qt","yt","bt","wt","xt","Tt","Mt","Ot","Pt","St","Vt","Ut","Dt","Nt","Jt","Lt","Ft","Zt","Wt","qt","kt","Rt","Gt","Kt","zt","Xt","jt","Ht","Yt","_t","$t","en","tn","nn","an","on","rn","An","sn","ln","cn","gn","un","pn","dn","hn","mn","Cn","In","vn","fn","En","E.around","Bn","Qn","yn","bn","wn","xn","Tn","Mn","On","Pn","Sn","Vn","Un","Dn","Nn","Jn","Ln","Fn","Zn","Wn","qn","kn","Rn","Gn","Kn","zn","jn","tangramApi","isobaric","ref","FL","layerDisposable","convertHpaToFlightLevel","hpa","altitude","T_TROP","P_TROP","updateLabel","updateValue","fetchAndDisplay","loadTextureDataFromUri","uri","img","err","response","imageDataUri","imageUnscale","textureData","windPalette","windLayer","ParticleLayer","ImageType","watch","isReady","onMounted","onUnmounted","_createElementBlock","_createElementVNode","_hoisted_1","_toDisplayString","$event","install","api","WindFieldLayer"],"mappings":"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AAG,KAAI,IAAI,GAAEI,EAAG,UAAQ,IAAIA,EAAG,UAASJ,EAAG,KAAI,IAAI,GAAEI,EAAG,UAAQ,IAAIA,EAAG,UAASJ,EAAG,KAAI,IAAI,GAAEI,EAAG,UAAQ,IAAIA,EAAG,UAASJ,EAAG,KAAI,IAAI,GAAEI,EAAG,UAAQ,IAAIA,EAAG,UAASJ,EAAG,KAAI,IAAI,GAAEI,EAAG,UAAQ,IAAIA,EAAG,UAASJ,EAAG,KAAI,IAAI,GAAEI,EAAG,UAAQ,IAAIA,EAAG,UAASJ,EAAG,KAAI,IAAI,GAAEI,EAAG,UAAQ,IAAIA,EAAG,UAASJ,EAAG,KAAI,IAAI,GAAEI,EAAG,UAAQ,IAAIA,EAAG,UAASJ,EAAG,KAAI,IAAI,GAAEI,EAAG,UAAQ,IAAIA,EAAG,UAASJ,EAAG,KAAI,IAAI,GAAEI,EAAG,UAAQ,IAAIA,EAAG,UAASJ,EAAG,KAAI,IAAI,GAAEI,EAAG,UAAQ,IAAIA,EAAG,UAASJ,EAAG,KAAI,IAAI,GAAEI,EAAG,UAAQ,IAAIA,EAAG,UAASJ,EAAG,KAAI,IAAI,GAAEI,EAAG,UAAQ,IAAIA,EAAG,UAASJ,EAAG,KAAI,IAAI,GAAEI,EAAG,UAAQ,IAAIA,EAAG,UAASJ,EAAG,KAAI,IAAI,GAAEI,EAAG,UAAQ,IAAIA,EAAG,UAASJ,EAAG,KAAI,IAAI,GAAEI,EAAG,UAAQ,IAAIA,EAAG,UAASJ,EAAG,KAAI,IAAI,GAAEI,EAAG,UAAQ,IAAIA,EAAG,UAASJ,EAAG,KAAI,IAAI,GAAEI,EAAG,UAAQ,IAAIA,EAAG,UAASJ,EAAG,KAAI,IAAI,GAAEI,EAAG,UAAQ,IAAIA,EAAG,UAASJ,EAAG,KAAI,IAAI,GAAEI,EAAG,UAAQ,IAAIA,EAAG,UAASJ,EAAG,KAAI,IAAI,GAAEI,EAAG,UAAQ,IAAIA,EAAG,UAASJ,EAAG,KAAI,IAAI,GAAEI,EAAG,UAAQ,IAAIA,EAAG,UAASJ,EAAG,KAAI,IAAI,GAAEI,EAAG,UAAQ,IAAIA,EAAG,UAASJ,EAAG,KAAI,IAAI,GAAEI,EAAG,UAAQ,IAAIA,EAAG,UAASJ,EAAG,KAAI,IAAI,GAAEI,EAAG,UAAQ,IAAIA,EAAG,UAASJ,E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AAAA,MAAM,KAAI;AAAQ,eAAOA,EAAG;AAAA,MAAM,KAAI;AAAQ,eAAOA,EAAG;AAAA,MAAM,KAAI;AAAQ,eAAOA,EAAG;AAAA,MAAM,KAAI;AAAQ,eAAOA,EAAG;AAAA,MAAM,KAAI;AAAQ,eAAOA,EAAG;AAAA,MAAM,KAAI;AAAQ,eAAOA,EAAG;AAAA,MAAM,KAAI;AAAQ,eAAOA,EAAG;AAAA,MAAM,KAAI;AAAQ,eAAOA,EAAG;AAAA,MAAM,KAAI;AAAQ,eAAOA,EAAG;AAAA,MAAM,KAAI;AAAU,eAAOA,EAAG;AAAA,MAAQ,KAAI;AAAU,eAAOA,EAAG;AAAA,MAAQ,KAAI;AAAU,eAAOA,EAAG;AAAA,MAAQ,KAAI;AAAU,eAAOA,EAAG;AAAA,MAAQ,KAAI;AAAU,eAAOA,EAAG;AAAA,MAAQ,KAAI;AAAU,eAAOA,EAAG;AAAA,MAAQ,KAAI;AAAU,eAAOA,EAAG;AAAA,MAAQ,KAAI;AAAU,eAAOA,EAAG;AAAA,MAAQ,KAAI;AAAU,eAAOA,EAAG;AAAA,MAAQ,KAAI;AAAU,eAAOA,EAAG;AAAA,MAAQ,KAAI;AAAU,eAAOA,EAAG;AAAA,MAAQ,KAAI;AAAU,eAAOA,EAAG;AAAA,MAAQ,KAAI;AAAU,eAAOA,EAAG;AAAA,MAAQ,KAAI;AAAU,eAAOA,EAAG;AAAA,MAAQ,KAAI;AAAU,eAAOA,EAAG;AAAA,MAAQ,KAAI;AAAU,eAAOA,EAAG;AAAA,MAAQ,KAAI;AAAU,eAAOA,EAAG;AAAA,MAAQ,KAAI;AAAU,eAAOA,EAAG;AAAA,MAAQ,KAAI;AAAU,eAAOA,EAAG;AAAA,MAAQ,KAAI;AAAU,eAAOA,EAAG;AAAA,MAAQ,KAAI;AAAU,eAAOA,EAAG;AAAA,MAAQ,KAAI;AAAU,eAAOA,EAAG;AAAA,MAAQ,KAAI;AAAU,eAAOA,EAAG;AAAA,MAAQ,KAAI;AAAU,eAAOA,EAAG;AAAA,MAAQ,KAAI;AAAU,eAAOA,EAAG;AAAA,MAAQ,KAAI;AAAU,eAAOA,EAAG;AAAA,MAAQ,KAAI;AAAU,eAAOA,EAAG;AAAA,MAAQ,KAAI;AAAU,eAAOA,EAAG;AAAA,MAAQ,KAAI;AAAU,eAAOA,EAAG;AAAA,MAAQ,KAAI;AAAU,eA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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74]}