{ "pandav:/dist/transcoders.js": { "cubeCode": "Cube(\"pandav:/npm/@maptalks/gl/0.108.1/dist/transcoders\", [], function (module, exports, require, load, process, global) {\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true });\n\n exports.default = void 0;\n exports.getGLTFLoaderBundle = r;\n exports.getTranscoder = t;\n exports.registerGLTFLoaderBundle = l;\n exports.registerTranscoder = _;\n var n = function n() {\n if (\"undefined\" != typeof globalThis) return globalThis;\n if (\"undefined\" != typeof self) return self;\n if (\"undefined\" != typeof window) return window;\n if (\"undefined\" != typeof global) return global;\n throw new Error(\"unable to locate global object\");\n },\n o = n(),\n e = exports.default = o.gl_trans__coders = o.gl_trans__coders || {};\n function t(n) {\n return e[n];\n }\n function _(n, o) {\n e[n] = o;\n }\n function r() {\n return n().maptalks_gltf_loader;\n }\n function l(o) {\n n().maptalks_gltf_loader_bundle = o;\n }\n e.inject = function (e) {\n var t = e.toString(),\n _ = t.indexOf(\"{\") + 1,\n r = t.substring(0, _),\n l = o.gl_trans__coders = o.gl_trans__coders || {};\n var s = \"\".concat(r, \"\\n const _____getGlobal = \").concat(n.toString(), \";\\n const g___lobals = _____getGlobal()\\n const tran_____scoders = g___lobals['gl_trans__coders'] = g___lobals['gl_trans__coders'] || {};\");\n for (var _n in l) \"inject\" !== _n && \"getTranscoder\" !== _n && \"registerTranscoder\" !== _n && (s += 'tran_____scoders[\"' + _n + '\"] =' + l[_n].toString() + \"\\n;\");\n return s += \"\\n(\" + n().maptalks_gltf_loader_bundle.toString() + \")({});\\n\", s += \"\\n\" + t.substring(r.length), s;\n }, e.registerTranscoder = _, e.getTranscoder = t;return module.exports;});", "requires": [], "buildLevel": 0, "fileName": "/dist/transcoders.js" }, "pandav:/dist/maptalksgl.es.js": { "cubeCode": "Cube(\"pandav:/npm/@maptalks/gl/0.108.1/dist/maptalksgl.es\", [\"pandav:/npm/@maptalks/regl/3.4.0\", \"pandav:/npm/@maptalks/reshader.gl/0.107.1\", \"pandav:/npm/maptalks/1.2.1\", \"pandav:/npm/@maptalks/fusiongl/0.9.3\"], function (module, exports, require, load, process, global) {Object.defineProperty(exports, \"__esModule\", { value: true });exports.FlatOutsideMask = exports.FlatInsideMask = exports.ElevateMask = exports.Distance3DTool = exports.ContextUtil = exports.ColorMask = exports.ClipOutsideMask = exports.ClipInsideMask = exports.BoxOutsideClipMask = exports.BoxInsideClipMask = exports.Area3DTool = void 0;Object.defineProperty(exports, \"GLContext\", { enumerable: true, get: function get() {return _fusiongl.GLContext;} });exports.ImageMask = exports.HighlightUtil = exports.Height3DTool = exports.HeatmapProcess = exports.GroupGLLayer = exports.GroundPainter = void 0;exports.MaskLayerMixin = MaskLayerMixin;exports.MaskRendererMixin = MaskRendererMixin;exports.color = exports.VideoMask = exports.RayCaster = exports.Measure3DTool = void 0;Object.defineProperty(exports, \"createREGL\", { enumerable: true, get: function get() {return _regl3.default;} });Object.defineProperty(exports, \"earcut\", { enumerable: true, get: function get() {return _reshader.earcut;} });Object.defineProperty(exports, \"glMatrix\", { enumerable: true, get: function get() {return _reshader.glMatrix;} });Object.defineProperty(exports, \"mat2\", { enumerable: true, get: function get() {return _reshader.mat2;} });Object.defineProperty(exports, \"mat2d\", { enumerable: true, get: function get() {return _reshader.mat2d;} });Object.defineProperty(exports, \"mat3\", { enumerable: true, get: function get() {return _reshader.mat3;} });Object.defineProperty(exports, \"mat4\", { enumerable: true, get: function get() {return _reshader.mat4;} });Object.defineProperty(exports, \"quat\", { enumerable: true, get: function get() {return _reshader.quat;} });Object.defineProperty(exports, \"quat2\", { enumerable: true, get: function get() {return _reshader.quat2;} });exports.transcoders = exports.reshader = void 0;Object.defineProperty(exports, \"vec2\", { enumerable: true, get: function get() {return _reshader.vec2;} });Object.defineProperty(exports, \"vec3\", { enumerable: true, get: function get() {return _reshader.vec3;} });Object.defineProperty(exports, \"vec4\", { enumerable: true, get: function get() {return _reshader.vec4;} });var _regl3 = _interopRequireWildcard(require('pandav:/npm/@maptalks/regl/3.4.0'));var _reshader = _interopRequireWildcard(require('pandav:/npm/@maptalks/reshader.gl/0.107.1'));var reshader = _reshader;exports.reshader = _reshader;var _maptalks = _interopRequireWildcard(require('pandav:/npm/maptalks/1.2.1'));var maptalks = _maptalks;var _fusiongl = require('pandav:/npm/@maptalks/fusiongl/0.9.3');function _getRequireWildcardCache(e) {if (\"function\" != typeof WeakMap) return null;var r = new WeakMap(),t = new WeakMap();return (_getRequireWildcardCache = function _getRequireWildcardCache(e) {return e ? t : r;})(e);}function _interopRequireWildcard(e, r) {if (!r && e && e.__esModule) return e;if (null === e || \"object\" != _typeof(e) && \"function\" != typeof e) return { default: e };var t = _getRequireWildcardCache(r);if (t && t.has(e)) return t.get(e);var n = { __proto__: null },a = Object.defineProperty && Object.getOwnPropertyDescriptor;for (var u in e) if (\"default\" !== u && {}.hasOwnProperty.call(e, u)) {var i = a ? Object.getOwnPropertyDescriptor(e, u) : null;i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u];}return n.default = e, t && t.set(e, n), n;}function _readOnlyError(r) {throw new TypeError('\"' + r + '\" is read-only');}function _createForOfIteratorHelper(r, e) {var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];if (!t) {if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) {t && (r = t);var _n34 = 0,F = function F() {};return { s: F, n: function n() {return _n34 >= r.length ? { done: !0 } : { done: !1, value: r[_n34++] };}, e: function e(r) {throw r;}, f: F };}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");}var o,a = !0,u = !1;return { s: function s() {t = t.call(r);}, n: function n() {var r = t.next();return a = r.done, r;}, e: function e(r) {u = !0, o = r;}, f: function f() {try {a || null == t.return || t.return();} finally {if (u) throw o;}} };}function _superPropGet(t, o, e, r) {var p = _get(_getPrototypeOf(1 & r ? t.prototype : t), o, e);return 2 & r && \"function\" == typeof p ? function (t) {return p.apply(e, t);} : p;}function _get() {return _get = \"undefined\" != typeof Reflect && Reflect.get ? Reflect.get.bind() : function (e, t, r) {var p = _superPropBase(e, t);if (p) {var n = Object.getOwnPropertyDescriptor(p, t);return n.get ? n.get.call(arguments.length < 3 ? e : r) : n.value;}}, _get.apply(null, arguments);}function _superPropBase(t, o) {for (; !{}.hasOwnProperty.call(t, o) && null !== (t = _getPrototypeOf(t)););return t;}function _typeof(o) {\"@babel/helpers - typeof\";return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {return typeof o;} : function (o) {return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;}, _typeof(o);}function _slicedToArray(r, e) {return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest();}function _nonIterableRest() {throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");}function _iterableToArrayLimit(r, l) {var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];if (null != t) {var e,n,i,u,a = [],f = !0,o = !1;try {if (i = (t = t.call(r)).next, 0 === l) {if (Object(t) !== t) return;f = !1;} else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);} catch (r) {o = !0, n = r;} finally {try {if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return;} finally {if (o) throw n;}}return a;}}function _arrayWithHoles(r) {if (Array.isArray(r)) return r;}function _toConsumableArray(r) {return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread();}function _nonIterableSpread() {throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");}function _unsupportedIterableToArray(r, a) {if (r) {if (\"string\" == typeof r) return _arrayLikeToArray(r, a);var t = {}.toString.call(r).slice(8, -1);return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;}}function _iterableToArray(r) {if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r);}function _arrayWithoutHoles(r) {if (Array.isArray(r)) return _arrayLikeToArray(r);}function _arrayLikeToArray(r, a) {(null == a || a > r.length) && (a = r.length);for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];return n;}function _callSuper(t, o, e) {return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e));}function _possibleConstructorReturn(t, e) {if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e;if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\");return _assertThisInitialized(t);}function _assertThisInitialized(e) {if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return e;}function _isNativeReflectConstruct() {try {var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));} catch (t) {}return (_isNativeReflectConstruct = function _isNativeReflectConstruct() {return !!t;})();}function _getPrototypeOf(t) {return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {return t.__proto__ || Object.getPrototypeOf(t);}, _getPrototypeOf(t);}function _inherits(t, e) {if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\");t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, \"prototype\", { writable: !1 }), e && _setPrototypeOf(t, e);}function _setPrototypeOf(t, e) {return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {return t.__proto__ = e, t;}, _setPrototypeOf(t, e);}function _classCallCheck(a, n) {if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\");}function _defineProperties(e, r) {for (var t = 0; t < r.length; t++) {var o = r[t];o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o);}}function _createClass(e, r, t) {return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e;}function _toPropertyKey(t) {var i = _toPrimitive(t, \"string\");return \"symbol\" == _typeof(i) ? i : i + \"\";}function _toPrimitive(t, r) {if (\"object\" != _typeof(t) || !t) return t;var e = t[Symbol.toPrimitive];if (void 0 !== e) {var i = e.call(t, r || \"default\");if (\"object\" != _typeof(i)) return i;throw new TypeError(\"@@toPrimitive must return a primitive value.\");}return (\"string\" === r ? String : Number)(t);}var getGlobal = function getGlobal() {if (typeof globalThis !== 'undefined') {return globalThis;}if (typeof self !== 'undefined') {return self;}if (typeof window !== 'undefined') {return window;}if (typeof global !== 'undefined') {return global;}throw new Error('unable to locate global object');};var globals = getGlobal();var transcoders = exports.transcoders = globals['gl_trans__coders'] = globals['gl_trans__coders'] || {};function inject(chunk) {var fnString = chunk.toString();var prefixIndex = fnString.indexOf('{') + 1;var prefix = fnString.substring(0, prefixIndex);var transcoders = globals['gl_trans__coders'] = globals['gl_trans__coders'] || {};var injected = \"\".concat(prefix, \"\\n const _____getGlobal = \").concat(getGlobal.toString(), \";\\n const g___lobals = _____getGlobal()\\n const tran_____scoders = g___lobals['gl_trans__coders'] = g___lobals['gl_trans__coders'] || {};\");for (var _p in transcoders) {if (_p === 'inject' || _p === 'getTranscoder' || _p === 'registerTranscoder') {continue;}injected += 'tran_____scoders[\"' + _p + '\"] =' + transcoders[_p].toString() + '\\n;';}var gltfBundle = getGlobal()['maptalks_gltf_loader_bundle'];injected += '\\n(' + gltfBundle.toString() + ')({});\\n';injected += '\\n' + fnString.substring(prefix.length);return injected;}transcoders['inject'] = inject;function getTranscoder(name) {return transcoders[name];}function registerTranscoder(name, fn) {transcoders[name] = fn;}function registerGLTFLoaderBundle(fn) {getGlobal()['maptalks_gltf_loader_bundle'] = fn;}transcoders.registerTranscoder = registerTranscoder;transcoders.getTranscoder = getTranscoder;function gltfLoaderExport(t) {var e = function e() {return \"undefined\" != typeof globalThis ? globalThis : \"undefined\" != typeof self ? self : \"undefined\" != typeof window ? window : \"undefined\" != typeof global ? global : void 0;};if (e().maptalks_gltf_loader) return;var n = \"undefined\" != typeof Float32Array ? Float32Array : Array;function s(t, e, n) {var s = e[0],r = e[1],i = e[2],o = e[3],h = e[4],u = e[5],c = e[6],a = e[7],f = e[8],l = e[9],d = e[10],m = e[11],p = e[12],w = e[13],y = e[14],g = e[15],b = n[0],_ = n[1],A = n[2],x = n[3];return t[0] = b * s + _ * h + A * f + x * p, t[1] = b * r + _ * u + A * l + x * w, t[2] = b * i + _ * c + A * d + x * y, t[3] = b * o + _ * a + A * m + x * g, b = n[4], _ = n[5], A = n[6], x = n[7], t[4] = b * s + _ * h + A * f + x * p, t[5] = b * r + _ * u + A * l + x * w, t[6] = b * i + _ * c + A * d + x * y, t[7] = b * o + _ * a + A * m + x * g, b = n[8], _ = n[9], A = n[10], x = n[11], t[8] = b * s + _ * h + A * f + x * p, t[9] = b * r + _ * u + A * l + x * w, t[10] = b * i + _ * c + A * d + x * y, t[11] = b * o + _ * a + A * m + x * g, b = n[12], _ = n[13], A = n[14], x = n[15], t[12] = b * s + _ * h + A * f + x * p, t[13] = b * r + _ * u + A * l + x * w, t[14] = b * i + _ * c + A * d + x * y, t[15] = b * o + _ * a + A * m + x * g, t;}function r() {var t = new n(3);return n != Float32Array && (t[0] = 0, t[1] = 0, t[2] = 0), t;}function i(t, e, s) {var r = new n(3);return r[0] = t, r[1] = e, r[2] = s, r;}function o(t, e) {return t[0] = e[0], t[1] = e[1], t[2] = e[2], t;}function h(t, e, n, s) {return t[0] = e, t[1] = n, t[2] = s, t;}function u(t, e, n) {return t[0] = e[0] + n[0], t[1] = e[1] + n[1], t[2] = e[2] + n[2], t;}function c(t, e, n) {return t[0] = e[0] * n, t[1] = e[1] * n, t[2] = e[2] * n, t;}function a(t, e, n, s, r) {return t[0] = e, t[1] = n, t[2] = s, t[3] = r, t;}function f(t, e, n) {var s = e[0],r = e[1],i = e[2],o = e[3];return t[0] = n[0] * s + n[4] * r + n[8] * i + n[12] * o, t[1] = n[1] * s + n[5] * r + n[9] * i + n[13] * o, t[2] = n[2] * s + n[6] * r + n[10] * i + n[14] * o, t[3] = n[3] * s + n[7] * r + n[11] * i + n[15] * o, t;}function l() {var t = new n(4);return n != Float32Array && (t[0] = 0, t[1] = 0, t[2] = 0), t[3] = 1, t;}Math.hypot || (Math.hypot = function () {for (var t = 0, e = arguments.length; e--;) t += arguments[e] * arguments[e];return Math.sqrt(t);}), r(), function () {var t;t = new n(4), n != Float32Array && (t[0] = 0, t[1] = 0, t[2] = 0, t[3] = 0);}();var d,m = function m(t, e) {return t[0] = e[0], t[1] = e[1], t[2] = e[2], t[3] = e[3], t;};r(), i(1, 0, 0), i(0, 1, 0), l(), l(), d = new n(9), n != Float32Array && (d[1] = 0, d[2] = 0, d[3] = 0, d[5] = 0, d[6] = 0, d[7] = 0), d[0] = 1, d[4] = 1, d[8] = 1;var p = 0;function w(t) {return null == t;}function y(t) {return !w(t);}function g(t) {return !w(t) && (\"string\" == typeof t || null !== t.constructor && t.constructor === String);}function b(t) {for (var _e = 1; _e < arguments.length; _e++) {var _n = arguments[_e];for (var _e2 in _n) t[_e2] = _n[_e2];}return t;}function _(t) {switch (t) {case 5120:return Int8Array;case 5121:return Uint8Array;case 5122:return Int16Array;case 5123:return Uint16Array;case 5124:return Int32Array;case 5125:return Uint32Array;case 5126:return Float32Array;}throw new Error(\"unsupported bufferView's component type: \" + t);}function A(t) {return 0 === t.indexOf(\"data:\") && t.indexOf(\"base64,\") > 0;}function x(t) {var e = function (t) {return \"undefined\" != typeof self ? self.atob(t) : window.atob(t);}(t.substring(t.indexOf(\",\") + 1)),n = e.length,s = new Uint8Array(n);for (var _t = 0; _t < n; _t++) s[_t] = e.charCodeAt(_t);return s.buffer;}var T = [],M = [],I = [],E = [0, 0, 0],v = function (t) {return t[0] = 0, t[1] = 0, t[2] = 0, t[3] = 1, t;}([]),P = [1, 1, 1];function O(t, e, n, s, r, i, o) {var h = _(o),u = h.BYTES_PER_ELEMENT;if ((0 === r || r === s * u) && i % u == 0) {var _r = new h(e, i, n * s);return t.set(_r), t;}0 === r && (r = s * u);var c = new Uint8Array(s * u);for (var _o = 0; _o < n; _o++) {var _n2 = null;var _a = new Uint8Array(e, r * _o + i, s * u);c.set(_a), _n2 = new h(c.buffer, 0, s);for (var _e3 = 0; _e3 < s; _e3++) t[_o * s + _e3] = _n2[_e3];}return t;}var N = \"undefined\" != typeof TextDecoder ? new TextDecoder(\"utf-8\") : null;function S(t, e, n) {var s = new Uint8Array(t, e, n);return N.decode(s);}var B = { get: function get(t) {var _this = this;var e = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};var n = arguments.length > 2 ? arguments[2] : undefined;e || (e = {});var s = new AbortController(),r = s.signal,i = b({}, e);i.signal = r, i.method || (i.method = \"GET\"), i.referrerPolicy = i.referrerPolicy || \"origin\", \"undefined\" == typeof window || i.referrer || (i.referrer = window.location.href), n && (t = n(t));var o = fetch(t, i).then(function (t) {var n = _this.t(t, e.responseType);return n.message ? n : n.then(function (n) {return \"arraybuffer\" === e.responseType ? { data: n, cacheControl: t.headers.get(\"Cache-Control\"), expires: t.headers.get(\"Expires\"), contentType: t.headers.get(\"Content-Type\") } : n;}).catch(function (t) {if (!t.code || t.code !== DOMException.ABORT_ERR) throw t;});}).catch(function (t) {if (!t.code || t.code !== DOMException.ABORT_ERR) throw t;});return o.xhr = s, o;}, t: function t(_t2, e) {return 200 !== _t2.status ? { status: _t2.status, statusText: _t2.statusText, message: \"incorrect http request with status code(\".concat(_t2.status, \"): \").concat(_t2.statusText) } : \"arraybuffer\" === e ? _t2.arrayBuffer() : \"json\" === e ? _t2.json() : _t2.text();}, getArrayBuffer: function getArrayBuffer(t) {var e = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};var n = arguments.length > 2 ? arguments[2] : undefined;return e || (e = {}), e.responseType = \"arraybuffer\", B.get(t, e, n);}, getJSON: function getJSON(t) {var e = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};var n = arguments.length > 2 ? arguments[2] : undefined;return e && e.jsonp ? B.jsonp(t) : ((e = e || {}).responseType = \"json\", B.get(t, e, n));}, jsonp: function jsonp(t) {var e = \"_maptalks_jsonp_\" + p++;t.match(/\\?/) ? t += \"&callback=\" + e : t += \"?callback=\" + e;var n = document.createElement(\"script\");return n.type = \"text/javascript\", n.src = t, new Promise(function (t) {window[e] = function (s) {document.getElementsByTagName(\"head\")[0].removeChild(n), n = null, delete window[e], t(s);}, document.getElementsByTagName(\"head\")[0].appendChild(n);});} };var R = function () {function R(t, e, n, s, r) {_classCallCheck(this, R);this.i = t, this.decoders = e, this.o = n, this.images = {}, this.h = {}, this.u = s || {}, this.l = r;}return _createClass(R, [{ key: \"requestImageFromBufferURI\", value: function requestImageFromBufferURI(t, e, n) {var _this2 = this;if (this.buffers[t.id]) {var _s = this.buffers[t.id],_r2 = this.m(e, _s);return this.getImageByBuffer(_r2, n);}if (this.h[t.id]) return this.h[t.id].then(function () {var s = _this2.buffers[t.id],r = _this2.m(e, s);return _this2.getImageByBuffer(r, n);});if (A(t.uri)) {var _s2 = this.buffers[t.id] = x(t.uri),_r3 = this.m(e, _s2);return this.getImageByBuffer(_r3, n);}var s;var r = t.uri.indexOf(\"blob:\") >= 0;return s = t.uri.indexOf(\"://\") > 0 || r ? t.uri : this.rootPath + \"/\" + t.uri, this.h[t.id] = B.getArrayBuffer(s, this.u, this.l).then(function (s) {var r = _this2.buffers[t.id] = s.data,i = _this2.m(e, r);return _this2.getImageByBuffer(i, n);});} }, { key: \"getImageByBuffer\", value: function getImageByBuffer(t, e) {if (this.images[e.id]) return Promise.resolve(this.images[e.id]);var n = this.decoders;if (n[e.mimeType]) return n[e.mimeType](t, { supportedFormats: this.o });if (\"image/crn\" === e.mimeType || \"image/ktx2\" === e.mimeType || \"image/cttf\" === e.mimeType) throw new Error(\"missing transcoder for \" + e.mimeType, \"\");return this.p(e.id, t);} }, { key: \"requestExternalImage\", value: function requestExternalImage(t) {var _this3 = this;if (this.images[t.id]) return Promise.resolve(this.images[t.id]);var e = 0 === t.uri.indexOf(\"data:image/\") ? t.uri : this.rootPath + \"/\" + t.uri;return this.h[t.id] ? this.h[t.id].then(function () {return _this3.images[t.id];}) : this.h[t.id] = this.p(t.id, e);} }, { key: \"p\", value: function p(t, e) {var _this4 = this;return new Promise(function (n, s) {var r = e;_this4.l && (r = _this4.l(e)), _this4.i(r, _this4.u, function (r, i) {r ? s(r) : (URL.revokeObjectURL(e), _this4.images[t] = i, n(_this4.images[t]));});});} }]);}();var C = [\"SCALAR\", 1, \"VEC2\", 2, \"VEC3\", 3, \"VEC4\", 4, \"MAT2\", 4, \"MAT3\", 9, \"MAT4\", 16],U = [];var k = function () {function k(t, e, n, s, r) {_classCallCheck(this, k);this.rootPath = t, this.gltf = e, this._ = !1, this.glbBuffer = n, this.buffers = {}, this.requests = {}, this.accessors = {}, this.A(), this.u = s, this.l = r;}return _createClass(k, [{ key: \"T\", value: function T(t, e) {var _this5 = this;var n = this.gltf,s = n.accessors[e];if (void 0 === s.bufferView) return this.accessors[s.id] = this.M(t, e, null, 0), Promise.resolve(this.accessors[s.id]);if (s && this.accessors[s.id]) return Promise.resolve(this.accessors[s.id]);var r = n.bufferViews[s.bufferView];return this.I(r).then(function (n) {var r = n.buffer,i = n.byteOffset;return _this5.accessors[s.id] = _this5.M(t, e, r, i);});} }, { key: \"I\", value: function I(t) {var _this6 = this;var e = this.gltf.buffers[t.buffer];if (this.buffers[e.id]) {var _t3 = this.buffers[e.id];return Promise.resolve({ buffer: _t3, byteOffset: 0 });}if (this.requests[e.id]) return this.requests[e.id].then(function () {var t = _this6.buffers[e.id];return Promise.resolve({ buffer: t, byteOffset: 0 });});if (\"binary_glTF\" !== t.buffer && \"KHR_binary_glTF\" !== t.buffer && e.uri) {if (A(e.uri)) {var _t4 = this.buffers[e.id] = x(e.uri);return Promise.resolve({ buffer: _t4, byteOffset: 0 });}var _t5;var _n3 = e.uri.indexOf(\"blob:\") >= 0;return _t5 = e.uri.indexOf(\"://\") > 0 || _n3 ? e.uri : this.rootPath + \"/\" + e.uri, this.requests[e.id] = B.getArrayBuffer(_t5, this.u, !_n3 && this.l).then(function (s) {return _n3 && URL.revokeObjectURL(_t5), { buffer: _this6.buffers[e.id] = s.data, byteOffset: 0 };});}return Promise.resolve({ buffer: this.glbBuffer.buffer, byteOffset: this.glbBuffer.byteOffset });} }, { key: \"M\", value: function M(t, e, n) {var s = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;var r = this.gltf,i = r.accessors[e],o = void 0 !== i.bufferView ? r.bufferViews[i.bufferView] : {},h = (o.byteOffset || 0) + s,u = this.v(i.type),c = _(i.componentType),a = o.byteStride || 0,l = { array: void 0, name: t, accessorName: e, byteLength: i.count * u * c.BYTES_PER_ELEMENT, componentType: i.componentType, count: i.count, type: i.type, itemSize: u, max: i.max, min: i.min, extensions: i.extensions };if (i.min && (l.min = i.min), i.max && (l.max = i.max), n) {if (this._) l.byteStride = a, l.byteOffset = h + (i.byteOffset || 0), !a || a === u * c.BYTES_PER_ELEMENT || \"indices\" === t || \"input\" === t || \"output\" === t || t.indexOf(\"morph\") >= 0 ? (l.array = this.P(n, i.count, u, h + (i.byteOffset || 0), c), l.array.buffer.byteLength === l.byteLength && (l.byteOffset = 0)) : l.array = new Uint8Array(n, h, o.byteLength);else if (i.interleaved) {l.byteStride = 0, l.byteOffset = 0;var _t6 = new c(i.count * u);if (l.array = O(_t6, n, i.count, u, a, h + (i.byteOffset || 0), i.componentType), l.extensions && l.extensions.WEB3D_quantized_attributes && u > 2) {var _t7 = new Float32Array(l.array.length),_e4 = l.extensions.WEB3D_quantized_attributes.decodeMatrix;for (var _n4 = 0; _n4 < l.array.length; _n4 += u) {U[0] = l.array[_n4], U[1] = l.array[_n4 + 1], U[2] = l.array[_n4 + 2], U[3] = 1;var _s3 = f(U, U, _e4);_t7[_n4] = _s3[0], _t7[_n4 + 1] = _s3[1], _t7[_n4 + 2] = _s3[2];}l.componentType = 5126, l.array = _t7;}} else l.byteStride = 0, l.array = this.P(n, i.count, u, h + (i.byteOffset || 0), c), l.byteOffset = l.array.byteOffset;} else {l.array = new c(i.count);var _t8 = l.min || l.max;_t8 && (l.array[0] = _t8[0], l.array[1] = _t8[1], l.array[2] = _t8[2]);}return l;} }, { key: \"A\", value: function A() {var t = this.gltf.accessors;if (Array.isArray(t)) for (var _e5 = 0; _e5 < t.length; _e5++) for (var _n5 = 0; _n5 < t.length; _n5++) _e5 !== _n5 && t[_e5].bufferView === t[_n5].bufferView && (t[_e5].interleaved = t[_n5].interleaved = !0);else for (var _e6 in t) for (var _n6 in t) _e6 !== _n6 && t[_e6].bufferView === t[_n6].bufferView && (t[_e6].interleaved = t[_n6].interleaved = !0);} }, { key: \"P\", value: function P(t, e, n, s, r) {return s % r.BYTES_PER_ELEMENT != 0 && (t = t.slice(s, s + e * n * r.BYTES_PER_ELEMENT), s = 0), new r(t, s, n * e);} }, { key: \"v\", value: function v(t) {var e = C.indexOf(t);return C[e + 1];} }, { key: \"requestKHRTechniquesWebgl\", value: function requestKHRTechniquesWebgl(t) {var _this7 = this;var e = t.shaders,n = e.map(function (t) {if (void 0 !== t.bufferView) {var _e7 = _this7.gltf.bufferViews[t.bufferView],_n7 = _e7.byteLength;return _this7.I(_e7).then(function (s) {var r = s.buffer,i = s.byteOffset,o = S(r, i + (_e7.byteOffset || 0), _n7);return t.content = o, t;});}if (t.uri) {if (A(t.uri)) {var _e8 = x(t.uri),_n8 = S(_e8, 0, _e8.byteLength);return t.content = _n8, Promise.resolve(t);}{var _e9 = _this7.rootPath + \"/\" + t.uri;return B.get(_e9, _this7.u, _this7.l).then(function (e) {return t.content = e, t;});}}return Promise.resolve(t);});return Promise.all(n).then(function () {return t;});} }]);}();var L = function (_R) {function L(t, e, n, s, r, i, o, h) {var _this8;_classCallCheck(this, L);_this8 = _callSuper(this, L, [s, r, i, o, h]), _this8.rootPath = t, _this8.gltf = e, _this8.requests = {}, _this8.buffers = {}, _this8.glbBuffer = n, _this8.accessor = new k(t, e, n, o, h);return _this8;}_inherits(L, _R);return _createClass(L, [{ key: \"iterate\", value: function iterate(t, e) {var n = this.gltf[e];if (!n) return;var s = 0;for (var _e10 in n) t(_e10, n[_e10], s++);} }, { key: \"createNode\", value: function createNode(t) {var e = {};if (y(t.name) && (e.name = t.name), y(t.children) && (e.children = t.children), y(t.jointName) && (e.jointName = t.jointName), y(t.matrix) && (e.matrix = t.matrix), y(t.rotation) && (e.rotation = t.rotation), y(t.scale) && (e.scale = t.scale), y(t.translation) && (e.translation = t.translation), y(t.extras) && (e.extras = t.extras), y(t.meshes) && (e.mesh = t.meshes[0]), e.translation || e.rotation || e.scale) {var _t9 = function (t, e) {if (e.matrix) return e.matrix;if (e.translation || e.scale || e.rotation) {var _n9 = function (t, e) {return t[0] = 1, t[1] = 0, t[2] = 0, t[3] = 0, t[4] = 0, t[5] = 1, t[6] = 0, t[7] = 0, t[8] = 0, t[9] = 0, t[10] = 1, t[11] = 0, t[12] = e[0], t[13] = e[1], t[14] = e[2], t[15] = 1, t;}(T, e.translation || E),_r4 = function (t, e) {var n = e[0],s = e[1],r = e[2],i = e[3],o = n + n,h = s + s,u = r + r,c = n * o,a = s * o,f = s * h,l = r * o,d = r * h,m = r * u,p = i * o,w = i * h,y = i * u;return t[0] = 1 - f - m, t[1] = a + y, t[2] = l - w, t[3] = 0, t[4] = a - y, t[5] = 1 - c - m, t[6] = d + p, t[7] = 0, t[8] = l + w, t[9] = d - p, t[10] = 1 - c - f, t[11] = 0, t[12] = 0, t[13] = 0, t[14] = 0, t[15] = 1, t;}(M, e.rotation || v),_i = function (t, e) {return t[0] = e[0], t[1] = 0, t[2] = 0, t[3] = 0, t[4] = 0, t[5] = e[1], t[6] = 0, t[7] = 0, t[8] = 0, t[9] = 0, t[10] = e[2], t[11] = 0, t[12] = 0, t[13] = 0, t[14] = 0, t[15] = 1, t;}(I, e.scale || P);return s(_i, _r4, _i), s(t, _n9, _i);}return function (t) {return t[0] = 1, t[1] = 0, t[2] = 0, t[3] = 0, t[4] = 0, t[5] = 1, t[6] = 0, t[7] = 0, t[8] = 0, t[9] = 0, t[10] = 1, t[11] = 0, t[12] = 0, t[13] = 0, t[14] = 0, t[15] = 1, t;}(t);}([], e);delete e.translation, delete e.rotation, delete e.scale, e.matrix = _t9;}return e;} }, { key: \"O\", value: function O(t) {var e = {};for (var _n10 in t) {var _s4 = t[_n10];var _r5 = void 0,_i2 = void 0;_s4.instanceTechnique && _s4.instanceTechnique.values ? (_r5 = _s4.instanceTechnique, _i2 = _r5.values.diffuse) : (_r5 = _s4, _i2 = _r5.values.tex || _r5.values.diffuseTex || _r5.values.diffuse);var _o2 = { baseColorTexture: { index: _i2 } };_s4.name && (_o2.name = _s4.name), _s4.extensions && (_o2.extensions = _s4.extensions), _s4.extras && (_o2.extras = _s4.extras), e[_n10] = _o2;}return e;} }, { key: \"N\", value: function N(t) {if (t.bufferView || t.extensions && (t.extensions.KHR_binary_glTF || t.extensions.binary_glTF)) {var _e11 = t.bufferView ? t : t.extensions.KHR_binary_glTF || t.extensions.binary_glTF;t.extensions && (t.mimeType = _e11.mimeType, t.width = _e11.width, t.height = _e11.height);var _n11 = this.gltf.bufferViews[_e11.bufferView],_s5 = (_n11.byteOffset || 0) + this.glbBuffer.byteOffset,_r6 = _n11.byteLength,_i3 = this.buffers[_e11.bufferView] = new Uint8Array(this.glbBuffer.buffer, _s5, _r6);return this.getImageByBuffer(_i3, t);}return this.requestExternalImage(t);} }, { key: \"S\", value: function S(t) {var _this9 = this;var e = this.gltf.textures[t];if (!e) return null;var n = this.gltf.images[e.source];return this.N(n).then(function (t) {var s = _this9.gltf.samplers[e.sampler];return { image: { array: t.data, width: t.width, height: t.height, index: e.source, mimeType: n.mimeType, name: n.name, extras: n.extras }, sampler: s };});} }, { key: \"getBaseColorTexture\", value: function getBaseColorTexture(t) {var e = this.gltf.materials[t];var n, s;if (e.instanceTechnique && e.instanceTechnique.values ? (n = e.instanceTechnique, s = n.values.diffuse) : (n = e, s = n.values.tex || n.values.diffuseTex || n.values.diffuse), void 0 === s || void 0 === this.gltf.textures) return null;var r = this.gltf.textures[s];if (!r) return null;var i = this.gltf.samplers[r.sampler];return { format: r.format || 6408, internalFormat: r.internalFormat || 6408, type: r.type || 5121, sampler: i, source: this.gltf.images[r.source] };} }, { key: \"getMaterial\", value: function getMaterial() {return null;} }, { key: \"getAnimations\", value: function getAnimations() {return null;} }]);}(R);var q = 9729;var F = function (_R2) {function F(t, e, n, s, r, i, o, h) {var _this10;_classCallCheck(this, F);_this10 = _callSuper(this, F, [s, r, i, o, h]), _this10.rootPath = t, _this10.gltf = e, _this10.glbBuffer = n, _this10.buffers = {}, _this10.requests = {}, _this10.accessor = new k(t, e, n, o, h);return _this10;}_inherits(F, _R2);return _createClass(F, [{ key: \"iterate\", value: function iterate(t, e) {var n = this.gltf[e];if (n) for (var _e12 = 0; _e12 < n.length; _e12++) t(_e12, n[_e12], _e12);} }, { key: \"createNode\", value: function createNode(t) {var e = {};return b(e, t), !y(t.weights) && this.gltf.meshes && y(e.mesh) ? e.weights = this.gltf.meshes[e.mesh].weights : t.weights && (e.weights = t.weights), e;} }, { key: \"S\", value: function S(t) {var _this11 = this;var e = this.gltf.textures[t];if (!e) return null;var n = e.source;if (e.extensions && e.extensions.EXT_texture_webp ? n = e.extensions.EXT_texture_webp.source : e.extensions && e.extensions.KHR_texture_basisu && (n = e.extensions.KHR_texture_basisu.source), !y(n)) return null;var s = this.gltf.images[n];return this.N(s).then(function (t) {if (!t) return null;var n = { image: { array: t.data, mipmap: t.mipmap, width: t.width, height: t.height, index: e.source, mimeType: s.mimeType, name: s.name, extensions: s.extensions, extras: s.extras } };b(n, e);var r = y(e.sampler) ? _this11.gltf.samplers[e.sampler] : void 0;if (r && (n.sampler = r, n.sampler.magFilter = r.magFilter || q, n.sampler.minFilter = r.minFilter || 9987, n.sampler.wrapS = r.wrapS || 10497, n.sampler.wrapT = r.wrapT || 10497), \"image/ktx2\" === n.image.mimeType && !n.image.mipmap && n.sampler && n.sampler.minFilter !== q && 9728 !== n.sampler.minFilter) {var _t10 = n.sampler.minFilter;n.sampler.minFilter = 9984 === _t10 || 9986 === _t10 ? 9728 : q;}return t.format && (n.format = t.format), n;});} }, { key: \"N\", value: function N(t) {if (!y(t.bufferView)) return this.requestExternalImage(t);{var _e13 = this.gltf.bufferViews[t.bufferView],_n12 = this.gltf.buffers[_e13.buffer];if (_n12.uri) return this.requestImageFromBufferURI(_n12, _e13, t);if (this.glbBuffer) return this.B(_e13, t);}return null;} }, { key: \"B\", value: function B(t, e) {var n = this.m(t, this.glbBuffer.buffer, this.glbBuffer.byteOffset);return this.getImageByBuffer(n, e);} }, { key: \"m\", value: function m(t, e, n) {n = n || 0;var s = (t.byteOffset || 0) + n,r = t.byteLength;return new Uint8Array(e, s, r);} }, { key: \"R\", value: function R(t, e) {var n = new Array(t.byteLength);for (var _e14 = 0; _e14 < t.byteLength; _e14++) n[_e14] = String.fromCharCode(t[_e14]);n.join(\"\");var s = \"data:\" + (e = e || \"image/png\") + \";base64,\" + function (t) {return \"undefined\" != typeof self ? self.btoa(t) : window.btoa(t);}(unescape(encodeURIComponent(n)));return s;} }, { key: \"getAnimations\", value: function getAnimations(t) {var _this12 = this;var e = [];return t.forEach(function (t) {e.push(_this12.getSamplers(t.samplers));}), Promise.all(e).then(function (e) {for (var _n13 = 0; _n13 < e.length; _n13++) t[_n13].samplers = e[_n13];return t;});} }, { key: \"getSamplers\", value: function getSamplers(t) {var e = [];for (var _n14 = 0; _n14 < t.length; _n14++) (y(t[_n14].input) || y(t[_n14].output)) && (e.push(this.accessor.T(\"input\", t[_n14].input)), e.push(this.accessor.T(\"output\", t[_n14].output)));return Promise.all(e).then(function (e) {for (var _n15 = 0; _n15 < e.length / 2; _n15++) t[_n15].input = e[2 * _n15], t[_n15].output = e[2 * _n15 + 1], t[_n15].interpolation || (t[_n15].interpolation = \"LINEAR\");return t;});} }]);}(R);var D = \"undefined\" != typeof TextDecoder ? new TextDecoder(\"utf-8\") : null;var V = function () {function V() {_classCallCheck(this, V);}return _createClass(V, null, [{ key: \"read\", value: function read(t) {var e = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;var n = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;n || (n = t.byteLength);var s = new DataView(t, e, n),r = s.getUint32(4, !0);if (1 === r) return V.readV1(s, e);if (2 === r) return V.readV2(t, e);throw new Error(\"Unsupported glb version : \" + r);} }, { key: \"readV1\", value: function readV1(t, e) {var n = t.getUint32(8, !0),s = t.getUint32(12, !0);if (n !== t.byteLength) throw new Error(\"Length in GLB header is inconsistent with glb's byte length.\");var r = j(t.buffer, 20 + e, s);return { json: JSON.parse(r), glbBuffer: { byteOffset: 20 + e + s, buffer: t.buffer, byteLength: n } };} }, { key: \"readV2\", value: function readV2(t, e) {var n, s, r;var i = new DataView(t, e + 12);var o = 0;for (; o + 8 < i.byteLength;) {var _h = i.getUint32(o, !0);o += 4;var _u = i.getUint32(o, !0);if (o += 4, 1313821514 === _u) n = j(t, e + 12 + o, _h);else if (5130562 === _u) {r = e + 12 + o, s = _h;break;}o += _h;}return { json: JSON.parse(n), glbBuffer: { byteOffset: r, buffer: t, byteLength: s } };} }]);}();function j(t, e, n) {if (D) {var _s6 = new Uint8Array(t, e, n);return D.decode(_s6);}return function (t) {var e = t.length;var n = \"\";for (var _s7 = 0; _s7 < e;) {var _r7 = t[_s7++];if (128 & _r7) {var _n16 = K[_r7 >> 3 & 7];if (!(64 & _r7) || !_n16 || _s7 + _n16 > e) return null;for (_r7 &= 63 >> _n16; _n16 > 0; _n16 -= 1) {var _e15 = t[_s7++];if (128 != (192 & _e15)) return null;_r7 = _r7 << 6 | 63 & _e15;}}n += String.fromCharCode(_r7);}return n;}(new Uint8Array(t, e, n));}var K = [1, 1, 1, 1, 2, 2, 3, 0],H = [0, 0, 0],X = [0, 0, 0, 1],$ = [1, 1, 1],z = { TRANSLATION: [0, 0, 0], ROTATION: [0, 0, 0, 1], SCALE: [1, 1, 1] },G = { PREVIOUS: null, NEXT: null, PREINDEX: null, NEXTINDEX: null, INTERPOLATION: null },J = { C: function C(t, e, n, s, r, i, h, u) {var c = y(t) ? e.animations : [e.animations[0]],a = {};for (var _e16 = 0; _e16 < c.length; _e16++) {var _f = c[_e16],_l = _f.name || _e16;if (y(t) && _l !== t) continue;var _d = _f.channelsMap[n];if (_d) for (var _t11 = 0; _t11 < _d.length; _t11++) {var _e17 = _d[_t11];\"translation\" === _e17.target.path ? (this.U(r, _f.samplers[_e17.sampler], s, 1), a.translation = o(H, r)) : \"rotation\" === _e17.target.path ? (this.k(i, _f.samplers[_e17.sampler], s, 1), a.rotation = m(X, i)) : \"scale\" === _e17.target.path ? (this.U(h, _f.samplers[_e17.sampler], s, 1), a.scale = o($, h)) : \"weights\" === _e17.target.path && u && (this.U(u, _f.samplers[_e17.sampler], s, u.length), a.weights = u);}}return a;}, U: function U(t, e, n, s) {switch (e.interpolation) {case \"LINEAR\":{var _r8 = this.L(G, e, n, 1 * s);_r8 && (t = function (t, e, n, s) {for (var _r9 = 0; _r9 < t.length; _r9++) t[_r9] = e[_r9] + s * (n[_r9] - e[_r9]);return t;}(t, _r8.PREVIOUS, _r8.NEXT, _r8.INTERPOLATION));break;}case \"STEP\":{var _r10 = this.L(G, e, n, 1 * s);_r10 && (t = function (t, e) {for (var _n17 = 0; _n17 < t.length; _n17++) t[_n17] = e[_n17];return t;}.apply(undefined, [t].concat(_toConsumableArray(_r10.PREVIOUS))));break;}case \"CUBICSPLINE\":{var _r11 = this.L(G, e, n, 3 * s);_r11 && (t = this.q(t, _r11, e.input.array, 3 * s));break;}}return t;}, k: function k(t, e, n) {switch (e.interpolation) {case \"LINEAR\":{var _s8 = this.L(G, e, n, 1);_s8 && function (t, e, n, s) {var r,i,o,h,u,c = e[0],a = e[1],f = e[2],l = e[3],d = n[0],m = n[1],p = n[2],w = n[3];(i = c * d + a * m + f * p + l * w) < 0 && (i = -i, d = -d, m = -m, p = -p, w = -w), 1 - i > 1e-6 ? (r = Math.acos(i), o = Math.sin(r), h = Math.sin((1 - s) * r) / o, u = Math.sin(s * r) / o) : (h = 1 - s, u = s), t[0] = h * c + u * d, t[1] = h * a + u * m, t[2] = h * f + u * p, t[3] = h * l + u * w;}(t, _s8.PREVIOUS, _s8.NEXT, _s8.INTERPOLATION);break;}case \"STEP\":{var _s9 = this.L(G, e, n, 1);_s9 && (t = a.apply(undefined, [t].concat(_toConsumableArray(_s9.PREVIOUS))));break;}case \"CUBICSPLINE\":{var _s10 = this.L(G, e, n, 3);if (_s10) {for (var _t12 = 0; _t12 < _s10.PREVIOUS.length; _t12++) _s10.PREVIOUS[_t12] = Math.acos(_s10.PREVIOUS[_t12]), _s10.NEXT[_t12] = Math.acos(_s10.NEXT[_t12]);t = this.q(t, _s10, e.input.array, 3);for (var _e18 = 0; _e18 < t.length; _e18++) t[_e18] = Math.cos(t[_e18]);}break;}}return t;}, F: function F(t, e) {var n = t.length;var s,r,i,o = 0,h = n - 1,u = Math.floor((o + h) / 2);for (; o <= n - 1 && h >= 0;) {if (o === h) return null;if (t[u] <= e && e <= t[u + 1]) {var _n18 = t[u];return s = u, r = u + 1, i = (e - _n18) / (t[u + 1] - _n18), { preIndx: s, nextIndex: r, interpolation: i };}e < t[u] ? (h = u, u = Math.floor((o + h) / 2)) : t[u + 1] < e && (o = u, u = Math.floor((o + h) / 2));}return null;}, L: function L(t, e, n, s) {var r = e.input.array,i = e.output.array,o = e.output.itemSize;(n < r[0] || n > r[r.length - 1]) && (n = Math.max(r[0], Math.min(r[r.length - 1], n))), n === r[r.length - 1] && (n = r[0]);var h = this.F(r, n);if (!h || !h.nextIndex) return null;var u = h.preIndx,c = h.nextIndex,a = h.interpolation;t.PREINDEX = u, t.NEXTINDEX = c, t.INTERPOLATION = a;var f = o * s;return t.PREVIOUS = i.subarray(t.PREINDEX * f, (t.PREINDEX + 1) * f), t.NEXT = i.subarray(t.NEXTINDEX * f, (t.NEXTINDEX + 1) * f), t;}, q: function q(t, e, n, s) {var r = e.INTERPOLATION,i = n[e.PREINDEX],o = n[e.NEXTINDEX];for (var _n19 = 0; _n19 < 3; _n19++) {var _h2 = e.PREVIOUS[s + _n19],_u2 = (o - i) * e.PREVIOUS[2 * s + _n19],_c = e.NEXT[3 + _n19],_a2 = (o - i) * e.NEXT[_n19],_f2 = (2 * Math.pow(r, 3) - 3 * Math.pow(r, 2) + 1) * _h2 + (Math.pow(r, 3) - 2 * Math.pow(r, 2) + r) * _u2 + (2 * -Math.pow(r, 3) + 3 * Math.pow(r, 2)) * _c + (Math.pow(r, 3) - Math.pow(r, 2)) * _a2;t[_n19] = _f2;}return t;}, getAnimationClip: function getAnimationClip(t, e, n, s) {var r = t.nodes[e] && t.nodes[e].weights;return h.apply(undefined, [H].concat(_toConsumableArray(z.TRANSLATION))), a.apply(undefined, [X].concat(_toConsumableArray(z.ROTATION))), h.apply(undefined, [$].concat(_toConsumableArray(z.SCALE))), this.C(s, t, e, n, H, X, $, r);}, getTimeSpan: function getTimeSpan(t) {if (!t.animations) return null;if (t.timeSpan) return t.timeSpan;var e = t.animations;return t.timeSpan = {}, e.forEach(function (e, n) {var s = -1 / 0,r = 1 / 0;var i = e.channels;for (var _t13 = 0; _t13 < i.length; _t13++) {var _n20 = i[_t13],_o3 = e.samplers[_n20.sampler].input.array;_o3[_o3.length - 1] > s && (s = _o3[_o3.length - 1]), _o3[0] < r && (r = _o3[0]);}var o = e.name || n;t.timeSpan[o] = { max: s, min: r };}), t.timeSpan;}, getTimeSpanByName: function getTimeSpanByName(t, e) {var n = this.getTimeSpan(t);return n ? y(e) ? n[e] : n[Object.keys(n)[0]] : null;} };var W = !1;if (\"undefined\" != typeof OffscreenCanvas) {var _t14;try {_t14 = new OffscreenCanvas(2, 2).getContext(\"2d\");} catch (n) {}_t14 && \"undefined\" != typeof createImageBitmap && (W = !0);}var Q = \"undefined\" == typeof document ? null : document.createElement(\"canvas\");function Y(t, e, n) {var s = new Image();s.crossOrigin = \"\", s.onload = function () {if (!Q) return void n(new Error(\"There is no canvas to draw image!\"));Q.width = s.width, Q.height = s.height;var t = Q.getContext(\"2d\", { willReadFrequently: !0 });t.drawImage(s, 0, 0, s.width, s.height);var e = t.getImageData(0, 0, s.width, s.height),r = { width: s.width, height: s.height, data: new Uint8Array(e.data) };n(null, r);}, s.onerror = function (t) {n(t);}, s.src = t;}var Z = [],tt = [],et = 30;var nt, st;function rt(t, e, n) {nt || (nt = new OffscreenCanvas(2, 2), st = nt.getContext(\"2d\", { willReadFrequently: !0 }));var s = null;if (g(t)) this.options.urlModifier && (t = this.options.urlModifier(t)), Z.push([t, e, n, this]), it();else {var _e19 = new Blob([t]);s = createImageBitmap(_e19), s.then(ot.bind(this)).then(function (t) {n(null, t);}).catch(function (t) {console.warn(t), n(t);});}}function it() {if (!Z.length || tt.length > et) return;var t = Z.shift(),_t15 = _slicedToArray(t, 4),e = _t15[0],n = _t15[1],s = _t15[2],r = _t15[3];tt.push(t), fetch(e, n).then(function (t) {return t.arrayBuffer();}).then(function (t) {var e = new Blob([new Uint8Array(t)]);return createImageBitmap(e);}).then(ot.bind(r)).then(function (e) {s.call(r, null, e);var n = tt.indexOf(t);tt.splice(n, 1), it();}).catch(function (e) {console.warn(e), s.call(r, e);var n = tt.indexOf(t);tt.splice(n, 1), it();});}function ot(t) {var e = t.width,n = t.height;ht(e) || (e = ut(e)), ht(n) || (n = ut(n));var s = this.options.maxTextureSize;s && (e = Math.min(s, e), n = Math.min(s, n)), nt.width = e, nt.height = n, st.drawImage(t, 0, 0, e, n), t.close();var r = st.getImageData(0, 0, e, n);return { width: e, height: n, data: new Uint8Array(r.data) };}function ht(t) {return !(t & t - 1) && 0 !== t;}function ut(t) {return Math.pow(2, Math.floor(Math.log(t) / Math.LN2));}function ct(t, e) {for (var _n21 in t) if (t[_n21] === e) return _n21;return e;}t.Ajax = B, t.GLTFLoader = function () {function _class(t, e, n) {_classCallCheck(this, _class);if (this.options = n || {}, this.options.decoders || (this.options.decoders = {}), this.u = this.options.fetchOptions || {}, e.buffer instanceof ArrayBuffer) {var _V$read = V.read(e.buffer, e.byteOffset, e.byteLength),_n22 = _V$read.json,_s11 = _V$read.glbBuffer;this.D(t, _n22, _s11);} else this.D(t, e);this.V = new k(this.rootPath, this.gltf, this.glbBuffer, this.u, this.options.urlModifier), this.j();}return _createClass(_class, [{ key: \"j\", value: function j() {var t = this.gltf.extensionsRequired;if (t) {if (t.indexOf(\"KHR_draco_mesh_compression\") >= 0 && !this.options.decoders.draco) throw new Error(\"KHR_draco_mesh_compression is required but @maptalks/transcoders.draco is not loaded\");if (t.indexOf(\"KHR_texture_basisu\") >= 0 && !this.options.decoders[\"image/ktx2\"]) throw new Error(\"KHR_texture_basisu is required but @maptalks/transcoders.ktx2 is not loaded\");if (t.indexOf(\"EXT_meshopt_compression\") >= 0) throw new Error(\"EXT_meshopt_compression extension is not supported yet.\");}} }, { key: \"K\", value: function K() {var t = this.gltf.extensions;return t && t.KHR_techniques_webgl ? this.V.requestKHRTechniquesWebgl(t.KHR_techniques_webgl).then(function (e) {return t.KHR_techniques_webgl = e, t;}) : Promise.resolve(t);} }, { key: \"H\", value: function H() {if (!Array.isArray(this.gltf.programs)) return;var t = this.gltf.materials;for (var _e20 = 0; _e20 < t.length; _e20++) t[_e20] && t[_e20].extensions && t[_e20].extensions.KHR_technique_webgl && (t[_e20].extensions.KHR_techniques_webgl = t[_e20].extensions.KHR_technique_webgl, delete t[_e20].extensions.KHR_technique_webgl);var e = this.gltf.extensions || {},n = this.gltf.techniques;e.KHR_techniques_webgl = { programs: this.gltf.programs, shaders: this.gltf.shaders, techniques: n };for (var _e21 = 0; _e21 < t.length; _e21++) {var _r12 = (s = t[_e21]) && s.extensions && s.extensions.KHR_techniques_webgl;if (_r12) {var _t16 = _r12.values,_e22 = _r12.technique,_s12 = n[_e22];if (!_s12 || !_t16) continue;var _i4 = _s12.uniforms,_o4 = _s12.parameters,_h3 = {};for (var _e23 in _t16) {var _n23 = ct(_i4, _e23);_h3[_n23] = _t16[_e23], _o4[_e23] && 35678 === _o4[_e23].type && (_h3[_n23] = { index: _t16[_e23] });}_r12.values = _h3;}}var s;for (var _t17 = 0; _t17 < n.length; _t17++) {var _e24 = n[_t17];if (!_e24) continue;var _s13 = _e24.attributes,_r13 = _e24.uniforms,_i5 = _e24.parameters;if (_s13) for (var _t18 in _s13) {var _e25 = _s13[_t18];_s13[_t18] = _i5[_e25];}if (_r13) for (var _t19 in _r13) {var _e26 = _r13[_t19];_r13[_t19] = _i5[_e26];}delete _e24.parameters;}return delete this.gltf.programs, delete this.gltf.shaders, delete this.gltf.techniques, this.gltf.extensions = e, e;} }, { key: \"load\", value: function load(t) {var _this13 = this;t = t || {}, this.H();var e = this.X(t),n = this.$(),s = this.G(),r = this.K();return Promise.all([e, n, s, r]).then(function (t) {return t[0].animations = t[1], t[0].textures = t[2], t[0].extensions = t[3], t[0].transferables = _this13.transferables || [], _this13.createChannelsMap(t[0]), t[0];});} }, { key: \"createChannelsMap\", value: function createChannelsMap(t) {var e = t.animations;if (e) for (var _t20 = 0; _t20 < e.length; _t20++) {var _n24 = e[_t20];_n24.channelsMap = {};for (var _t21 = 0; _t21 < _n24.channels.length; _t21++) {var _e27 = _n24.channels[_t21];_n24.channelsMap[_e27.target.node] || (_n24.channelsMap[_e27.target.node] = []), _n24.channelsMap[_e27.target.node].push(_e27);}}} }, { key: \"getExternalResources\", value: function getExternalResources() {var t = [];if (this.gltf) {var _this$gltf = this.gltf,_e28 = _this$gltf.buffers,_n25 = _this$gltf.images;for (var _n26 = 0; _n26 < _e28.length; _n26++) _e28[_n26].uri && _e28[_n26].uri.indexOf(\"data:application/octet-stream;base64\") < 0 && t.push({ type: \"buffer\", uri: _e28[_n26].uri });for (var _e29 = 0; _e29 < _n25.length; _e29++) _n25[_e29].uri && _n25[_e29].uri.indexOf(\"data:image/\") < 0 && t.push({ type: \"image\", uri: _n25[_e29].uri });}return t;} }, { key: \"D\", value: function D(t, e, n) {this.gltf = e, this.glbBuffer = n, this.version = e.asset ? +e.asset.version : 1, this.rootPath = t, this.buffers = {}, this.requests = {}, this.options.requestImage = W ? rt.bind(this) : this.options.requestImage || Y, this.options.transferable && (this.transferables = []), 2 === this.version ? (this.adapter = new F(t, e, n, this.options.requestImage, this.options.decoders || {}, this.options.supportedFormats || {}, this.u, this.options.urlModifier), this.adapter.iterate(function (t, e, n) {e.id = \"buffer_\" + n;}, \"buffers\"), this.adapter.iterate(function (t, e, n) {e.id = \"image_\" + n;}, \"images\"), this.adapter.iterate(function (t, e, n) {e.id = \"accessor_\" + n;}, \"accessors\")) : (this.adapter = new L(t, e, n, this.options.requestImage, this.options.decoders || {}, this.options.supportedFormats || {}, this.u, this.options.urlModifier), this.adapter.iterate(function (t, e, n) {e.id = \"accessor_\" + n;}, \"accessors\"), this.adapter.iterate(function (t, e, n) {e.id = \"image_\" + n;}, \"images\"));} }, { key: \"J\", value: function J(t, e) {var _this14 = this;if (t.children && t.children.length > 0) {if (!(\"number\" == typeof (n = t.children[0]) && isFinite(n) || g(t.children[0]))) return t;var _s14 = t.children.map(function (t) {var n = e[t];return n.nodeIndex = t, _this14.J(n, e);});t.children = _s14;}var n;return t;} }, { key: \"X\", value: function X(t) {var _this15 = this;return this.W(t).then(function (t) {var e = _this15.scenes = [];var n;for (var _e30 in t) t[_e30] = _this15.J(t[_e30], t), t[_e30].nodeIndex = Number(_e30) ? Number(_e30) : _e30;_this15.adapter.iterate(function (s, r, i) {var o = {};r.name && (o.name = r.name), r.nodes && (o.nodes = r.nodes.map(function (e) {return t[e];})), _this15.gltf.scene === s && (n = i), e.push(o);}, \"scenes\");var s = { textures: _this15.gltf.textures, asset: _this15.gltf.asset, scene: n, scenes: e, nodes: t, meshes: _this15.meshes, materials: _this15.gltf.materials, skins: _this15.skins, extensionsRequired: _this15.gltf.extensionsRequired, extensionsUsed: _this15.gltf.extensionsUsed };if (_this15.gltf.extensions && (s.extensions = _this15.gltf.extensions), 1 === _this15.version) {var _t22 = _this15.adapter.O(_this15.gltf.materials);s.materials = _t22;}return delete _this15.gltf.buffers, s.json = _this15.gltf, s;});} }, { key: \"W\", value: function W(t) {var _this16 = this;return this.Y(t).then(function () {var t = _this16.nodes = {};return _this16.adapter.iterate(function (e, n) {var s = _this16.adapter.createNode(n, _this16.meshes, _this16.skins);t[e] = s;}, \"nodes\"), t;});} }, { key: \"Z\", value: function Z() {var _this17 = this;this.skins = [];var t = [];return this.adapter.iterate(function (e, n, s) {t.push(_this17.tt(n).then(function (t) {t.index = s, _this17.skins.push(t);}));}, \"skins\"), t;} }, { key: \"tt\", value: function tt(t) {var _this18 = this;var e = t.inverseBindMatrices;return this.adapter.accessor.T(\"inverseBindMatrices\", e).then(function (e) {return t.inverseBindMatrices = e, e && e.buffer && _this18.transferables && _this18.transferables.indexOf(e.buffer) < 0 && _this18.transferables.push(e.buffer), t;});} }, { key: \"$\", value: function $() {var t = this.gltf.animations;return y(t) ? this.adapter.getAnimations(t) : null;} }, { key: \"Y\", value: function Y(t) {var _this19 = this;this.meshes = {};var e = [];return this.adapter.iterate(function (n, s, r) {e.push(_this19.et(s, t).then(function (t) {t.index = r, _this19.meshes[n] = t;}));}, \"meshes\"), e = e.concat(this.Z()), Promise.all(e);} }, { key: \"et\", value: function et(t, e) {var _this20 = this;var n = t.primitives.map(function (t) {return _this20.nt(t, e);}).filter(function (t) {return !!t;});return Promise.all(n).then(function (e) {var n = {};return b(n, t), n.primitives = e, n;});} }, { key: \"G\", value: function G() {var _this21 = this;var t = this.gltf.textures;if (!t) return null;var e = [];for (var _n27 in t) e.push(this.adapter.S(_n27));return Promise.all(e).then(function (e) {if (_this21.transferables) for (var _t23 = 0; _t23 < e.length; _t23++) {var _n28 = e[_t23] && e[_t23].image.array;if (_n28) {var _t24 = void 0;_t24 = _n28 instanceof ImageBitmap ? _n28 : _n28.buffer, _t24 && _this21.transferables.indexOf(_t24) < 0 && _this21.transferables.push(_t24);}}if (!Array.isArray(t)) {var _n29 = {},_s15 = Object.keys(t);for (var _t25 = 0; _t25 < e.length; _t25++) e[_t25] && (_n29[_s15[_t25]] = e[_t25]);return _n29;}return e;});} }, { key: \"nt\", value: function nt(t, e) {var _this22 = this;var n;var s = [],r = t.extensions;if (y(t.targets)) for (var _e31 = 0; _e31 < t.targets.length; _e31++) {var _n30 = t.targets[_e31];for (var _t26 in _n30) {var _r14 = this.adapter.accessor.T(\"morphTargets_\".concat(_t26, \"_\").concat(_e31), _n30[_t26]);_r14 && s.push(_r14);}}if (r && r.KHR_draco_mesh_compression) {if (!this.options.decoders.draco && (!this.gltf.extensionsRequired || !this.gltf.extensionsRequired.indexOf(\"KHR_draco_mesh_compression\") < 0)) return null;var _t27 = this.options.decoders.draco,_r$KHR_draco_mesh_com = r.KHR_draco_mesh_compression,_i6 = _r$KHR_draco_mesh_com.bufferView,_o5 = _r$KHR_draco_mesh_com.attributes,_h4 = this.gltf.bufferViews[_i6],_u3 = this.V.I(_h4).then(function (n) {var s = n.buffer,r = n.byteOffset;var i = _h4.byteOffset;var u = _h4.byteLength;i || (i = 0);var c = new DataView(s, r + i, u),a = { attributes: _o5, useUniqueIDs: !1, skipAttributeTransform: e.skipAttributeTransform };return _t27(c, a).then(function (t) {var e = Object.values(t.attributes);return t.indices && e.push(t.indices), e;});});s.push(_u3), n = Promise.all(s);} else {var _e32 = t.attributes;for (var _t28 in _e32) {var _n31 = this.adapter.accessor.T(_t28, _e32[_t28]);_n31 && s.push(_n31);}if (y(t.indices)) {var _e33 = this.adapter.accessor.T(\"indices\", t.indices);_e33 && s.push(_e33);}n = Promise.all(s);}return n.then(function (e) {if (r && r.KHR_draco_mesh_compression) {var _n32 = t.targets ? t.targets.length : 0;e[_n32] = e[_n32].concat(e.slice(0, _n32)), e = e[_n32];}var n, s;var i = { attributes: e.reduce(function (t, e) {if (\"indices\" === e.name) n = e;else if (e.name.indexOf(\"morphTargets_\") > -1) s = s || {}, s[e.name.slice(13)] = e;else {if (!(\"POSITION\" !== e.name || e.min && e.max)) {var _t29 = [1 / 0, 1 / 0, 1 / 0],_n33 = [-1 / 0, -1 / 0, -1 / 0],_s16 = e.itemSize,_r15 = e.array,_i7 = _r15.length / _s16;for (var _e34 = 0; _e34 < _i7; _e34++) for (var _i8 = 0; _i8 < _s16; _i8++) {var _o6 = _e34 * _s16 + _i8;_r15[_o6] < _t29[_i8] && (_t29[_i8] = _r15[_o6]), _r15[_o6] > _n33[_i8] && (_n33[_i8] = _r15[_o6]);}if (e.quantization) {var _s17 = e.quantization,_r16 = _s17.range / (1 << _s17.quantizationBits),_i9 = _s17.minValues;c(_t29, _t29, _r16), u(_t29, _t29, _i9), c(_n33, _n33, _r16), u(_n33, _n33, _i9);}e.min = _t29, e.max = _n33;}t[e.name] = e;}return _this22.transferables && e.array.buffer && _this22.transferables.indexOf(e.array.buffer) < 0 && _this22.transferables.push(e.array.buffer), t;}, {}), material: t.material };return n && (i.indices = n), s && (i.morphTargets = s), i.mode = y(t.mode) ? t.mode : 4, y(t.extras) && (i.extras = t.extras), i;});} }], [{ key: \"getAnimationClip\", value: function getAnimationClip(t, e, n, s) {return J.getAnimationClip(t, e, n, s);} }, { key: \"getAnimationTimeSpan\", value: function getAnimationTimeSpan(t, e) {return J.getTimeSpanByName(t, e);} }, { key: \"getTypedArrayCtor\", value: function getTypedArrayCtor(t) {return _(t);} }, { key: \"readInterleavedArray\", value: function readInterleavedArray(t, e, n, s, r, i, o) {return O(t, e, n, s, r, i, o);} }]);}(), e().maptalks_gltf_loader = t;}gltfLoaderExport({});function getDefaultExportFromCjs(x) {return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;}var colorString$1 = { exports: {} };var colorName$1 = { \"aliceblue\": [240, 248, 255], \"antiquewhite\": [250, 235, 215], \"aqua\": [0, 255, 255], \"aquamarine\": [127, 255, 212], \"azure\": [240, 255, 255], \"beige\": [245, 245, 220], \"bisque\": [255, 228, 196], \"black\": [0, 0, 0], \"blanchedalmond\": [255, 235, 205], \"blue\": [0, 0, 255], \"blueviolet\": [138, 43, 226], \"brown\": [165, 42, 42], \"burlywood\": [222, 184, 135], \"cadetblue\": [95, 158, 160], \"chartreuse\": [127, 255, 0], \"chocolate\": [210, 105, 30], \"coral\": [255, 127, 80], \"cornflowerblue\": [100, 149, 237], \"cornsilk\": [255, 248, 220], \"crimson\": [220, 20, 60], \"cyan\": [0, 255, 255], \"darkblue\": [0, 0, 139], \"darkcyan\": [0, 139, 139], \"darkgoldenrod\": [184, 134, 11], \"darkgray\": [169, 169, 169], \"darkgreen\": [0, 100, 0], \"darkgrey\": [169, 169, 169], \"darkkhaki\": [189, 183, 107], \"darkmagenta\": [139, 0, 139], \"darkolivegreen\": [85, 107, 47], \"darkorange\": [255, 140, 0], \"darkorchid\": [153, 50, 204], \"darkred\": [139, 0, 0], \"darksalmon\": [233, 150, 122], \"darkseagreen\": [143, 188, 143], \"darkslateblue\": [72, 61, 139], \"darkslategray\": [47, 79, 79], \"darkslategrey\": [47, 79, 79], \"darkturquoise\": [0, 206, 209], \"darkviolet\": [148, 0, 211], \"deeppink\": [255, 20, 147], \"deepskyblue\": [0, 191, 255], \"dimgray\": [105, 105, 105], \"dimgrey\": [105, 105, 105], \"dodgerblue\": [30, 144, 255], \"firebrick\": [178, 34, 34], \"floralwhite\": [255, 250, 240], \"forestgreen\": [34, 139, 34], \"fuchsia\": [255, 0, 255], \"gainsboro\": [220, 220, 220], \"ghostwhite\": [248, 248, 255], \"gold\": [255, 215, 0], \"goldenrod\": [218, 165, 32], \"gray\": [128, 128, 128], \"green\": [0, 128, 0], \"greenyellow\": [173, 255, 47], \"grey\": [128, 128, 128], \"honeydew\": [240, 255, 240], \"hotpink\": [255, 105, 180], \"indianred\": [205, 92, 92], \"indigo\": [75, 0, 130], \"ivory\": [255, 255, 240], \"khaki\": [240, 230, 140], \"lavender\": [230, 230, 250], \"lavenderblush\": [255, 240, 245], \"lawngreen\": [124, 252, 0], \"lemonchiffon\": [255, 250, 205], \"lightblue\": [173, 216, 230], \"lightcoral\": [240, 128, 128], \"lightcyan\": [224, 255, 255], \"lightgoldenrodyellow\": [250, 250, 210], \"lightgray\": [211, 211, 211], \"lightgreen\": [144, 238, 144], \"lightgrey\": [211, 211, 211], \"lightpink\": [255, 182, 193], \"lightsalmon\": [255, 160, 122], \"lightseagreen\": [32, 178, 170], \"lightskyblue\": [135, 206, 250], \"lightslategray\": [119, 136, 153], \"lightslategrey\": [119, 136, 153], \"lightsteelblue\": [176, 196, 222], \"lightyellow\": [255, 255, 224], \"lime\": [0, 255, 0], \"limegreen\": [50, 205, 50], \"linen\": [250, 240, 230], \"magenta\": [255, 0, 255], \"maroon\": [128, 0, 0], \"mediumaquamarine\": [102, 205, 170], \"mediumblue\": [0, 0, 205], \"mediumorchid\": [186, 85, 211], \"mediumpurple\": [147, 112, 219], \"mediumseagreen\": [60, 179, 113], \"mediumslateblue\": [123, 104, 238], \"mediumspringgreen\": [0, 250, 154], \"mediumturquoise\": [72, 209, 204], \"mediumvioletred\": [199, 21, 133], \"midnightblue\": [25, 25, 112], \"mintcream\": [245, 255, 250], \"mistyrose\": [255, 228, 225], \"moccasin\": [255, 228, 181], \"navajowhite\": [255, 222, 173], \"navy\": [0, 0, 128], \"oldlace\": [253, 245, 230], \"olive\": [128, 128, 0], \"olivedrab\": [107, 142, 35], \"orange\": [255, 165, 0], \"orangered\": [255, 69, 0], \"orchid\": [218, 112, 214], \"palegoldenrod\": [238, 232, 170], \"palegreen\": [152, 251, 152], \"paleturquoise\": [175, 238, 238], \"palevioletred\": [219, 112, 147], \"papayawhip\": [255, 239, 213], \"peachpuff\": [255, 218, 185], \"peru\": [205, 133, 63], \"pink\": [255, 192, 203], \"plum\": [221, 160, 221], \"powderblue\": [176, 224, 230], \"purple\": [128, 0, 128], \"rebeccapurple\": [102, 51, 153], \"red\": [255, 0, 0], \"rosybrown\": [188, 143, 143], \"royalblue\": [65, 105, 225], \"saddlebrown\": [139, 69, 19], \"salmon\": [250, 128, 114], \"sandybrown\": [244, 164, 96], \"seagreen\": [46, 139, 87], \"seashell\": [255, 245, 238], \"sienna\": [160, 82, 45], \"silver\": [192, 192, 192], \"skyblue\": [135, 206, 235], \"slateblue\": [106, 90, 205], \"slategray\": [112, 128, 144], \"slategrey\": [112, 128, 144], \"snow\": [255, 250, 250], \"springgreen\": [0, 255, 127], \"steelblue\": [70, 130, 180], \"tan\": [210, 180, 140], \"teal\": [0, 128, 128], \"thistle\": [216, 191, 216], \"tomato\": [255, 99, 71], \"turquoise\": [64, 224, 208], \"violet\": [238, 130, 238], \"wheat\": [245, 222, 179], \"white\": [255, 255, 255], \"whitesmoke\": [245, 245, 245], \"yellow\": [255, 255, 0], \"yellowgreen\": [154, 205, 50] };var simpleSwizzle = { exports: {} };var isArrayish$1 = function isArrayish(obj) {if (!obj || typeof obj === 'string') {return false;}return obj instanceof Array || Array.isArray(obj) || obj.length >= 0 && (obj.splice instanceof Function || Object.getOwnPropertyDescriptor(obj, obj.length - 1) && obj.constructor.name !== 'String');};var isArrayish = isArrayish$1;var concat = Array.prototype.concat;var slice = Array.prototype.slice;var swizzle$1 = simpleSwizzle.exports = function swizzle(args) {var results = [];for (var i = 0, len = args.length; i < len; i++) {var arg = args[i];if (isArrayish(arg)) {results = concat.call(results, slice.call(arg));} else {results.push(arg);}}return results;};swizzle$1.wrap = function (fn) {return function () {return fn(swizzle$1(arguments));};};var simpleSwizzleExports = simpleSwizzle.exports;var colorNames = colorName$1;var swizzle = simpleSwizzleExports;var hasOwnProperty = Object.hasOwnProperty;var reverseNames = Object.create(null);for (var name in colorNames) {if (hasOwnProperty.call(colorNames, name)) {reverseNames[colorNames[name]] = name;}}var cs = colorString$1.exports = { to: {}, get: {} };cs.get = function (string) {var prefix = string.substring(0, 3).toLowerCase();var val;var model;switch (prefix) {case 'hsl':val = cs.get.hsl(string);model = 'hsl';break;case 'hwb':val = cs.get.hwb(string);model = 'hwb';break;default:val = cs.get.rgb(string);model = 'rgb';break;}if (!val) {return null;}return { model: model, value: val };};cs.get.rgb = function (string) {if (!string) {return null;}var abbr = /^#([a-f0-9]{3,4})$/i;var hex = /^#([a-f0-9]{6})([a-f0-9]{2})?$/i;var rgba = /^rgba?\\(\\s*([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)\\s*(?:[,|\\/]\\s*([+-]?[\\d\\.]+)(%?)\\s*)?\\)$/;var per = /^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,?\\s*([+-]?[\\d\\.]+)\\%\\s*,?\\s*([+-]?[\\d\\.]+)\\%\\s*(?:[,|\\/]\\s*([+-]?[\\d\\.]+)(%?)\\s*)?\\)$/;var keyword = /^(\\w+)$/;var rgb = [0, 0, 0, 1];var match;var i;var hexAlpha;if (match = string.match(hex)) {hexAlpha = match[2];match = match[1];for (i = 0; i < 3; i++) {var i2 = i * 2;rgb[i] = parseInt(match.slice(i2, i2 + 2), 16);}if (hexAlpha) {rgb[3] = parseInt(hexAlpha, 16) / 255;}} else if (match = string.match(abbr)) {match = match[1];hexAlpha = match[3];for (i = 0; i < 3; i++) {rgb[i] = parseInt(match[i] + match[i], 16);}if (hexAlpha) {rgb[3] = parseInt(hexAlpha + hexAlpha, 16) / 255;}} else if (match = string.match(rgba)) {for (i = 0; i < 3; i++) {rgb[i] = parseInt(match[i + 1], 0);}if (match[4]) {if (match[5]) {rgb[3] = parseFloat(match[4]) * 0.01;} else {rgb[3] = parseFloat(match[4]);}}} else if (match = string.match(per)) {for (i = 0; i < 3; i++) {rgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);}if (match[4]) {if (match[5]) {rgb[3] = parseFloat(match[4]) * 0.01;} else {rgb[3] = parseFloat(match[4]);}}} else if (match = string.match(keyword)) {if (match[1] === 'transparent') {return [0, 0, 0, 0];}if (!hasOwnProperty.call(colorNames, match[1])) {return null;}rgb = colorNames[match[1]];rgb[3] = 1;return rgb;} else {return null;}for (i = 0; i < 3; i++) {rgb[i] = clamp(rgb[i], 0, 255);}rgb[3] = clamp(rgb[3], 0, 1);return rgb;};cs.get.hsl = function (string) {if (!string) {return null;}var hsl = /^hsla?\\(\\s*([+-]?(?:\\d{0,3}\\.)?\\d+)(?:deg)?\\s*,?\\s*([+-]?[\\d\\.]+)%\\s*,?\\s*([+-]?[\\d\\.]+)%\\s*(?:[,|\\/]\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\s*)?\\)$/;var match = string.match(hsl);if (match) {var alpha = parseFloat(match[4]);var h = (parseFloat(match[1]) % 360 + 360) % 360;var s = clamp(parseFloat(match[2]), 0, 100);var l = clamp(parseFloat(match[3]), 0, 100);var a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);return [h, s, l, a];}return null;};cs.get.hwb = function (string) {if (!string) {return null;}var hwb = /^hwb\\(\\s*([+-]?\\d{0,3}(?:\\.\\d+)?)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\s*)?\\)$/;var match = string.match(hwb);if (match) {var alpha = parseFloat(match[4]);var h = (parseFloat(match[1]) % 360 + 360) % 360;var w = clamp(parseFloat(match[2]), 0, 100);var b = clamp(parseFloat(match[3]), 0, 100);var a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);return [h, w, b, a];}return null;};cs.to.hex = function () {var rgba = swizzle(arguments);return '#' + hexDouble(rgba[0]) + hexDouble(rgba[1]) + hexDouble(rgba[2]) + (rgba[3] < 1 ? hexDouble(Math.round(rgba[3] * 255)) : '');};cs.to.rgb = function () {var rgba = swizzle(arguments);return rgba.length < 4 || rgba[3] === 1 ? 'rgb(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ')' : 'rgba(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ', ' + rgba[3] + ')';};cs.to.rgb.percent = function () {var rgba = swizzle(arguments);var r = Math.round(rgba[0] / 255 * 100);var g = Math.round(rgba[1] / 255 * 100);var b = Math.round(rgba[2] / 255 * 100);return rgba.length < 4 || rgba[3] === 1 ? 'rgb(' + r + '%, ' + g + '%, ' + b + '%)' : 'rgba(' + r + '%, ' + g + '%, ' + b + '%, ' + rgba[3] + ')';};cs.to.hsl = function () {var hsla = swizzle(arguments);return hsla.length < 4 || hsla[3] === 1 ? 'hsl(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%)' : 'hsla(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%, ' + hsla[3] + ')';};cs.to.hwb = function () {var hwba = swizzle(arguments);var a = '';if (hwba.length >= 4 && hwba[3] !== 1) {a = ', ' + hwba[3];}return 'hwb(' + hwba[0] + ', ' + hwba[1] + '%, ' + hwba[2] + '%' + a + ')';};cs.to.keyword = function (rgb) {return reverseNames[rgb.slice(0, 3)];};function clamp(num, min, max) {return Math.min(Math.max(min, num), max);}function hexDouble(num) {var str = Math.round(num).toString(16).toUpperCase();return str.length < 2 ? '0' + str : str;}var colorStringExports = colorString$1.exports;var conversions$2 = { exports: {} };var colorName = { \"aliceblue\": [240, 248, 255], \"antiquewhite\": [250, 235, 215], \"aqua\": [0, 255, 255], \"aquamarine\": [127, 255, 212], \"azure\": [240, 255, 255], \"beige\": [245, 245, 220], \"bisque\": [255, 228, 196], \"black\": [0, 0, 0], \"blanchedalmond\": [255, 235, 205], \"blue\": [0, 0, 255], \"blueviolet\": [138, 43, 226], \"brown\": [165, 42, 42], \"burlywood\": [222, 184, 135], \"cadetblue\": [95, 158, 160], \"chartreuse\": [127, 255, 0], \"chocolate\": [210, 105, 30], \"coral\": [255, 127, 80], \"cornflowerblue\": [100, 149, 237], \"cornsilk\": [255, 248, 220], \"crimson\": [220, 20, 60], \"cyan\": [0, 255, 255], \"darkblue\": [0, 0, 139], \"darkcyan\": [0, 139, 139], \"darkgoldenrod\": [184, 134, 11], \"darkgray\": [169, 169, 169], \"darkgreen\": [0, 100, 0], \"darkgrey\": [169, 169, 169], \"darkkhaki\": [189, 183, 107], \"darkmagenta\": [139, 0, 139], \"darkolivegreen\": [85, 107, 47], \"darkorange\": [255, 140, 0], \"darkorchid\": [153, 50, 204], \"darkred\": [139, 0, 0], \"darksalmon\": [233, 150, 122], \"darkseagreen\": [143, 188, 143], \"darkslateblue\": [72, 61, 139], \"darkslategray\": [47, 79, 79], \"darkslategrey\": [47, 79, 79], \"darkturquoise\": [0, 206, 209], \"darkviolet\": [148, 0, 211], \"deeppink\": [255, 20, 147], \"deepskyblue\": [0, 191, 255], \"dimgray\": [105, 105, 105], \"dimgrey\": [105, 105, 105], \"dodgerblue\": [30, 144, 255], \"firebrick\": [178, 34, 34], \"floralwhite\": [255, 250, 240], \"forestgreen\": [34, 139, 34], \"fuchsia\": [255, 0, 255], \"gainsboro\": [220, 220, 220], \"ghostwhite\": [248, 248, 255], \"gold\": [255, 215, 0], \"goldenrod\": [218, 165, 32], \"gray\": [128, 128, 128], \"green\": [0, 128, 0], \"greenyellow\": [173, 255, 47], \"grey\": [128, 128, 128], \"honeydew\": [240, 255, 240], \"hotpink\": [255, 105, 180], \"indianred\": [205, 92, 92], \"indigo\": [75, 0, 130], \"ivory\": [255, 255, 240], \"khaki\": [240, 230, 140], \"lavender\": [230, 230, 250], \"lavenderblush\": [255, 240, 245], \"lawngreen\": [124, 252, 0], \"lemonchiffon\": [255, 250, 205], \"lightblue\": [173, 216, 230], \"lightcoral\": [240, 128, 128], \"lightcyan\": [224, 255, 255], \"lightgoldenrodyellow\": [250, 250, 210], \"lightgray\": [211, 211, 211], \"lightgreen\": [144, 238, 144], \"lightgrey\": [211, 211, 211], \"lightpink\": [255, 182, 193], \"lightsalmon\": [255, 160, 122], \"lightseagreen\": [32, 178, 170], \"lightskyblue\": [135, 206, 250], \"lightslategray\": [119, 136, 153], \"lightslategrey\": [119, 136, 153], \"lightsteelblue\": [176, 196, 222], \"lightyellow\": [255, 255, 224], \"lime\": [0, 255, 0], \"limegreen\": [50, 205, 50], \"linen\": [250, 240, 230], \"magenta\": [255, 0, 255], \"maroon\": [128, 0, 0], \"mediumaquamarine\": [102, 205, 170], \"mediumblue\": [0, 0, 205], \"mediumorchid\": [186, 85, 211], \"mediumpurple\": [147, 112, 219], \"mediumseagreen\": [60, 179, 113], \"mediumslateblue\": [123, 104, 238], \"mediumspringgreen\": [0, 250, 154], \"mediumturquoise\": [72, 209, 204], \"mediumvioletred\": [199, 21, 133], \"midnightblue\": [25, 25, 112], \"mintcream\": [245, 255, 250], \"mistyrose\": [255, 228, 225], \"moccasin\": [255, 228, 181], \"navajowhite\": [255, 222, 173], \"navy\": [0, 0, 128], \"oldlace\": [253, 245, 230], \"olive\": [128, 128, 0], \"olivedrab\": [107, 142, 35], \"orange\": [255, 165, 0], \"orangered\": [255, 69, 0], \"orchid\": [218, 112, 214], \"palegoldenrod\": [238, 232, 170], \"palegreen\": [152, 251, 152], \"paleturquoise\": [175, 238, 238], \"palevioletred\": [219, 112, 147], \"papayawhip\": [255, 239, 213], \"peachpuff\": [255, 218, 185], \"peru\": [205, 133, 63], \"pink\": [255, 192, 203], \"plum\": [221, 160, 221], \"powderblue\": [176, 224, 230], \"purple\": [128, 0, 128], \"rebeccapurple\": [102, 51, 153], \"red\": [255, 0, 0], \"rosybrown\": [188, 143, 143], \"royalblue\": [65, 105, 225], \"saddlebrown\": [139, 69, 19], \"salmon\": [250, 128, 114], \"sandybrown\": [244, 164, 96], \"seagreen\": [46, 139, 87], \"seashell\": [255, 245, 238], \"sienna\": [160, 82, 45], \"silver\": [192, 192, 192], \"skyblue\": [135, 206, 235], \"slateblue\": [106, 90, 205], \"slategray\": [112, 128, 144], \"slategrey\": [112, 128, 144], \"snow\": [255, 250, 250], \"springgreen\": [0, 255, 127], \"steelblue\": [70, 130, 180], \"tan\": [210, 180, 140], \"teal\": [0, 128, 128], \"thistle\": [216, 191, 216], \"tomato\": [255, 99, 71], \"turquoise\": [64, 224, 208], \"violet\": [238, 130, 238], \"wheat\": [245, 222, 179], \"white\": [255, 255, 255], \"whitesmoke\": [245, 245, 245], \"yellow\": [255, 255, 0], \"yellowgreen\": [154, 205, 50] };var cssKeywords = colorName;var reverseKeywords = {};for (var key in cssKeywords) {if (cssKeywords.hasOwnProperty(key)) {reverseKeywords[cssKeywords[key]] = key;}}var convert$2 = conversions$2.exports = { rgb: { channels: 3, labels: 'rgb' }, hsl: { channels: 3, labels: 'hsl' }, hsv: { channels: 3, labels: 'hsv' }, hwb: { channels: 3, labels: 'hwb' }, cmyk: { channels: 4, labels: 'cmyk' }, xyz: { channels: 3, labels: 'xyz' }, lab: { channels: 3, labels: 'lab' }, lch: { channels: 3, labels: 'lch' }, hex: { channels: 1, labels: ['hex'] }, keyword: { channels: 1, labels: ['keyword'] }, ansi16: { channels: 1, labels: ['ansi16'] }, ansi256: { channels: 1, labels: ['ansi256'] }, hcg: { channels: 3, labels: ['h', 'c', 'g'] }, apple: { channels: 3, labels: ['r16', 'g16', 'b16'] }, gray: { channels: 1, labels: ['gray'] } };for (var model in convert$2) {if (convert$2.hasOwnProperty(model)) {if (!('channels' in convert$2[model])) {throw new Error('missing channels property: ' + model);}if (!('labels' in convert$2[model])) {throw new Error('missing channel labels property: ' + model);}if (convert$2[model].labels.length !== convert$2[model].channels) {throw new Error('channel and label counts mismatch: ' + model);}var channels = convert$2[model].channels;var labels = convert$2[model].labels;delete convert$2[model].channels;delete convert$2[model].labels;Object.defineProperty(convert$2[model], 'channels', { value: channels });Object.defineProperty(convert$2[model], 'labels', { value: labels });}}convert$2.rgb.hsl = function (rgb) {var r = rgb[0] / 255;var g = rgb[1] / 255;var b = rgb[2] / 255;var min = Math.min(r, g, b);var max = Math.max(r, g, b);var delta = max - min;var h;var s;var l;if (max === min) {h = 0;} else if (r === max) {h = (g - b) / delta;} else if (g === max) {h = 2 + (b - r) / delta;} else if (b === max) {h = 4 + (r - g) / delta;}h = Math.min(h * 60, 360);if (h < 0) {h += 360;}l = (min + max) / 2;if (max === min) {s = 0;} else if (l <= 0.5) {s = delta / (max + min);} else {s = delta / (2 - max - min);}return [h, s * 100, l * 100];};convert$2.rgb.hsv = function (rgb) {var rdif;var gdif;var bdif;var h;var s;var r = rgb[0] / 255;var g = rgb[1] / 255;var b = rgb[2] / 255;var v = Math.max(r, g, b);var diff = v - Math.min(r, g, b);var diffc = function diffc(c) {return (v - c) / 6 / diff + 1 / 2;};if (diff === 0) {h = s = 0;} else {s = diff / v;rdif = diffc(r);gdif = diffc(g);bdif = diffc(b);if (r === v) {h = bdif - gdif;} else if (g === v) {h = 1 / 3 + rdif - bdif;} else if (b === v) {h = 2 / 3 + gdif - rdif;}if (h < 0) {h += 1;} else if (h > 1) {h -= 1;}}return [h * 360, s * 100, v * 100];};convert$2.rgb.hwb = function (rgb) {var r = rgb[0];var g = rgb[1];var b = rgb[2];var h = convert$2.rgb.hsl(rgb)[0];var w = 1 / 255 * Math.min(r, Math.min(g, b));b = 1 - 1 / 255 * Math.max(r, Math.max(g, b));return [h, w * 100, b * 100];};convert$2.rgb.cmyk = function (rgb) {var r = rgb[0] / 255;var g = rgb[1] / 255;var b = rgb[2] / 255;var c;var m;var y;var k;k = Math.min(1 - r, 1 - g, 1 - b);c = (1 - r - k) / (1 - k) || 0;m = (1 - g - k) / (1 - k) || 0;y = (1 - b - k) / (1 - k) || 0;return [c * 100, m * 100, y * 100, k * 100];};function comparativeDistance(x, y) {return Math.pow(x[0] - y[0], 2) + Math.pow(x[1] - y[1], 2) + Math.pow(x[2] - y[2], 2);}convert$2.rgb.keyword = function (rgb) {var reversed = reverseKeywords[rgb];if (reversed) {return reversed;}var currentClosestDistance = Infinity;var currentClosestKeyword;for (var keyword in cssKeywords) {if (cssKeywords.hasOwnProperty(keyword)) {var value = cssKeywords[keyword];var distance = comparativeDistance(rgb, value);if (distance < currentClosestDistance) {currentClosestDistance = distance;currentClosestKeyword = keyword;}}}return currentClosestKeyword;};convert$2.keyword.rgb = function (keyword) {return cssKeywords[keyword];};convert$2.rgb.xyz = function (rgb) {var r = rgb[0] / 255;var g = rgb[1] / 255;var b = rgb[2] / 255;r = r > 0.04045 ? Math.pow((r + 0.055) / 1.055, 2.4) : r / 12.92;g = g > 0.04045 ? Math.pow((g + 0.055) / 1.055, 2.4) : g / 12.92;b = b > 0.04045 ? Math.pow((b + 0.055) / 1.055, 2.4) : b / 12.92;var x = r * 0.4124 + g * 0.3576 + b * 0.1805;var y = r * 0.2126 + g * 0.7152 + b * 0.0722;var z = r * 0.0193 + g * 0.1192 + b * 0.9505;return [x * 100, y * 100, z * 100];};convert$2.rgb.lab = function (rgb) {var xyz = convert$2.rgb.xyz(rgb);var x = xyz[0];var y = xyz[1];var z = xyz[2];var l;var a;var b;x /= 95.047;y /= 100;z /= 108.883;x = x > 0.008856 ? Math.pow(x, 1 / 3) : 7.787 * x + 16 / 116;y = y > 0.008856 ? Math.pow(y, 1 / 3) : 7.787 * y + 16 / 116;z = z > 0.008856 ? Math.pow(z, 1 / 3) : 7.787 * z + 16 / 116;l = 116 * y - 16;a = 500 * (x - y);b = 200 * (y - z);return [l, a, b];};convert$2.hsl.rgb = function (hsl) {var h = hsl[0] / 360;var s = hsl[1] / 100;var l = hsl[2] / 100;var t1;var t2;var t3;var rgb;var val;if (s === 0) {val = l * 255;return [val, val, val];}if (l < 0.5) {t2 = l * (1 + s);} else {t2 = l + s - l * s;}t1 = 2 * l - t2;rgb = [0, 0, 0];for (var i = 0; i < 3; i++) {t3 = h + 1 / 3 * -(i - 1);if (t3 < 0) {t3++;}if (t3 > 1) {t3--;}if (6 * t3 < 1) {val = t1 + (t2 - t1) * 6 * t3;} else if (2 * t3 < 1) {val = t2;} else if (3 * t3 < 2) {val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;} else {val = t1;}rgb[i] = val * 255;}return rgb;};convert$2.hsl.hsv = function (hsl) {var h = hsl[0];var s = hsl[1] / 100;var l = hsl[2] / 100;var smin = s;var lmin = Math.max(l, 0.01);var sv;var v;l *= 2;s *= l <= 1 ? l : 2 - l;smin *= lmin <= 1 ? lmin : 2 - lmin;v = (l + s) / 2;sv = l === 0 ? 2 * smin / (lmin + smin) : 2 * s / (l + s);return [h, sv * 100, v * 100];};convert$2.hsv.rgb = function (hsv) {var h = hsv[0] / 60;var s = hsv[1] / 100;var v = hsv[2] / 100;var hi = Math.floor(h) % 6;var f = h - Math.floor(h);var p = 255 * v * (1 - s);var q = 255 * v * (1 - s * f);var t = 255 * v * (1 - s * (1 - f));v *= 255;switch (hi) {case 0:return [v, t, p];case 1:return [q, v, p];case 2:return [p, v, t];case 3:return [p, q, v];case 4:return [t, p, v];case 5:return [v, p, q];}};convert$2.hsv.hsl = function (hsv) {var h = hsv[0];var s = hsv[1] / 100;var v = hsv[2] / 100;var vmin = Math.max(v, 0.01);var lmin;var sl;var l;l = (2 - s) * v;lmin = (2 - s) * vmin;sl = s * vmin;sl /= lmin <= 1 ? lmin : 2 - lmin;sl = sl || 0;l /= 2;return [h, sl * 100, l * 100];};convert$2.hwb.rgb = function (hwb) {var h = hwb[0] / 360;var wh = hwb[1] / 100;var bl = hwb[2] / 100;var ratio = wh + bl;var i;var v;var f;var n;if (ratio > 1) {wh /= ratio;bl /= ratio;}i = Math.floor(6 * h);v = 1 - bl;f = 6 * h - i;if ((i & 0x01) !== 0) {f = 1 - f;}n = wh + f * (v - wh);var r;var g;var b;switch (i) {default:case 6:case 0:r = v;g = n;b = wh;break;case 1:r = n;g = v;b = wh;break;case 2:r = wh;g = v;b = n;break;case 3:r = wh;g = n;b = v;break;case 4:r = n;g = wh;b = v;break;case 5:r = v;g = wh;b = n;break;}return [r * 255, g * 255, b * 255];};convert$2.cmyk.rgb = function (cmyk) {var c = cmyk[0] / 100;var m = cmyk[1] / 100;var y = cmyk[2] / 100;var k = cmyk[3] / 100;var r;var g;var b;r = 1 - Math.min(1, c * (1 - k) + k);g = 1 - Math.min(1, m * (1 - k) + k);b = 1 - Math.min(1, y * (1 - k) + k);return [r * 255, g * 255, b * 255];};convert$2.xyz.rgb = function (xyz) {var x = xyz[0] / 100;var y = xyz[1] / 100;var z = xyz[2] / 100;var r;var g;var b;r = x * 3.2406 + y * -1.5372 + z * -0.4986;g = x * -0.9689 + y * 1.8758 + z * 0.0415;b = x * 0.0557 + y * -0.2040 + z * 1.0570;r = r > 0.0031308 ? 1.055 * Math.pow(r, 1.0 / 2.4) - 0.055 : r * 12.92;g = g > 0.0031308 ? 1.055 * Math.pow(g, 1.0 / 2.4) - 0.055 : g * 12.92;b = b > 0.0031308 ? 1.055 * Math.pow(b, 1.0 / 2.4) - 0.055 : b * 12.92;r = Math.min(Math.max(0, r), 1);g = Math.min(Math.max(0, g), 1);b = Math.min(Math.max(0, b), 1);return [r * 255, g * 255, b * 255];};convert$2.xyz.lab = function (xyz) {var x = xyz[0];var y = xyz[1];var z = xyz[2];var l;var a;var b;x /= 95.047;y /= 100;z /= 108.883;x = x > 0.008856 ? Math.pow(x, 1 / 3) : 7.787 * x + 16 / 116;y = y > 0.008856 ? Math.pow(y, 1 / 3) : 7.787 * y + 16 / 116;z = z > 0.008856 ? Math.pow(z, 1 / 3) : 7.787 * z + 16 / 116;l = 116 * y - 16;a = 500 * (x - y);b = 200 * (y - z);return [l, a, b];};convert$2.lab.xyz = function (lab) {var l = lab[0];var a = lab[1];var b = lab[2];var x;var y;var z;y = (l + 16) / 116;x = a / 500 + y;z = y - b / 200;var y2 = Math.pow(y, 3);var x2 = Math.pow(x, 3);var z2 = Math.pow(z, 3);y = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;x = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;z = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;x *= 95.047;y *= 100;z *= 108.883;return [x, y, z];};convert$2.lab.lch = function (lab) {var l = lab[0];var a = lab[1];var b = lab[2];var hr;var h;var c;hr = Math.atan2(b, a);h = hr * 360 / 2 / Math.PI;if (h < 0) {h += 360;}c = Math.sqrt(a * a + b * b);return [l, c, h];};convert$2.lch.lab = function (lch) {var l = lch[0];var c = lch[1];var h = lch[2];var a;var b;var hr;hr = h / 360 * 2 * Math.PI;a = c * Math.cos(hr);b = c * Math.sin(hr);return [l, a, b];};convert$2.rgb.ansi16 = function (args) {var r = args[0];var g = args[1];var b = args[2];var value = 1 in arguments ? arguments[1] : convert$2.rgb.hsv(args)[2];value = Math.round(value / 50);if (value === 0) {return 30;}var ansi = 30 + (Math.round(b / 255) << 2 | Math.round(g / 255) << 1 | Math.round(r / 255));if (value === 2) {ansi += 60;}return ansi;};convert$2.hsv.ansi16 = function (args) {return convert$2.rgb.ansi16(convert$2.hsv.rgb(args), args[2]);};convert$2.rgb.ansi256 = function (args) {var r = args[0];var g = args[1];var b = args[2];if (r === g && g === b) {if (r < 8) {return 16;}if (r > 248) {return 231;}return Math.round((r - 8) / 247 * 24) + 232;}var ansi = 16 + 36 * Math.round(r / 255 * 5) + 6 * Math.round(g / 255 * 5) + Math.round(b / 255 * 5);return ansi;};convert$2.ansi16.rgb = function (args) {var color = args % 10;if (color === 0 || color === 7) {if (args > 50) {color += 3.5;}color = color / 10.5 * 255;return [color, color, color];}var mult = (~~(args > 50) + 1) * 0.5;var r = (color & 1) * mult * 255;var g = (color >> 1 & 1) * mult * 255;var b = (color >> 2 & 1) * mult * 255;return [r, g, b];};convert$2.ansi256.rgb = function (args) {if (args >= 232) {var c = (args - 232) * 10 + 8;return [c, c, c];}args -= 16;var rem;var r = Math.floor(args / 36) / 5 * 255;var g = Math.floor((rem = args % 36) / 6) / 5 * 255;var b = rem % 6 / 5 * 255;return [r, g, b];};convert$2.rgb.hex = function (args) {var integer = ((Math.round(args[0]) & 0xFF) << 16) + ((Math.round(args[1]) & 0xFF) << 8) + (Math.round(args[2]) & 0xFF);var string = integer.toString(16).toUpperCase();return '000000'.substring(string.length) + string;};convert$2.hex.rgb = function (args) {var match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if (!match) {return [0, 0, 0];}var colorString = match[0];if (match[0].length === 3) {colorString = colorString.split('').map(function (char) {return char + char;}).join('');}var integer = parseInt(colorString, 16);var r = integer >> 16 & 0xFF;var g = integer >> 8 & 0xFF;var b = integer & 0xFF;return [r, g, b];};convert$2.rgb.hcg = function (rgb) {var r = rgb[0] / 255;var g = rgb[1] / 255;var b = rgb[2] / 255;var max = Math.max(Math.max(r, g), b);var min = Math.min(Math.min(r, g), b);var chroma = max - min;var grayscale;var hue;if (chroma < 1) {grayscale = min / (1 - chroma);} else {grayscale = 0;}if (chroma <= 0) {hue = 0;} else if (max === r) {hue = (g - b) / chroma % 6;} else if (max === g) {hue = 2 + (b - r) / chroma;} else {hue = 4 + (r - g) / chroma + 4;}hue /= 6;hue %= 1;return [hue * 360, chroma * 100, grayscale * 100];};convert$2.hsl.hcg = function (hsl) {var s = hsl[1] / 100;var l = hsl[2] / 100;var c = 1;var f = 0;if (l < 0.5) {c = 2.0 * s * l;} else {c = 2.0 * s * (1.0 - l);}if (c < 1.0) {f = (l - 0.5 * c) / (1.0 - c);}return [hsl[0], c * 100, f * 100];};convert$2.hsv.hcg = function (hsv) {var s = hsv[1] / 100;var v = hsv[2] / 100;var c = s * v;var f = 0;if (c < 1.0) {f = (v - c) / (1 - c);}return [hsv[0], c * 100, f * 100];};convert$2.hcg.rgb = function (hcg) {var h = hcg[0] / 360;var c = hcg[1] / 100;var g = hcg[2] / 100;if (c === 0.0) {return [g * 255, g * 255, g * 255];}var pure = [0, 0, 0];var hi = h % 1 * 6;var v = hi % 1;var w = 1 - v;var mg = 0;switch (Math.floor(hi)) {case 0:pure[0] = 1;pure[1] = v;pure[2] = 0;break;case 1:pure[0] = w;pure[1] = 1;pure[2] = 0;break;case 2:pure[0] = 0;pure[1] = 1;pure[2] = v;break;case 3:pure[0] = 0;pure[1] = w;pure[2] = 1;break;case 4:pure[0] = v;pure[1] = 0;pure[2] = 1;break;default:pure[0] = 1;pure[1] = 0;pure[2] = w;}mg = (1.0 - c) * g;return [(c * pure[0] + mg) * 255, (c * pure[1] + mg) * 255, (c * pure[2] + mg) * 255];};convert$2.hcg.hsv = function (hcg) {var c = hcg[1] / 100;var g = hcg[2] / 100;var v = c + g * (1.0 - c);var f = 0;if (v > 0.0) {f = c / v;}return [hcg[0], f * 100, v * 100];};convert$2.hcg.hsl = function (hcg) {var c = hcg[1] / 100;var g = hcg[2] / 100;var l = g * (1.0 - c) + 0.5 * c;var s = 0;if (l > 0.0 && l < 0.5) {s = c / (2 * l);} else if (l >= 0.5 && l < 1.0) {s = c / (2 * (1 - l));}return [hcg[0], s * 100, l * 100];};convert$2.hcg.hwb = function (hcg) {var c = hcg[1] / 100;var g = hcg[2] / 100;var v = c + g * (1.0 - c);return [hcg[0], (v - c) * 100, (1 - v) * 100];};convert$2.hwb.hcg = function (hwb) {var w = hwb[1] / 100;var b = hwb[2] / 100;var v = 1 - b;var c = v - w;var g = 0;if (c < 1) {g = (v - c) / (1 - c);}return [hwb[0], c * 100, g * 100];};convert$2.apple.rgb = function (apple) {return [apple[0] / 65535 * 255, apple[1] / 65535 * 255, apple[2] / 65535 * 255];};convert$2.rgb.apple = function (rgb) {return [rgb[0] / 255 * 65535, rgb[1] / 255 * 65535, rgb[2] / 255 * 65535];};convert$2.gray.rgb = function (args) {return [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];};convert$2.gray.hsl = convert$2.gray.hsv = function (args) {return [0, 0, args[0]];};convert$2.gray.hwb = function (gray) {return [0, 100, gray[0]];};convert$2.gray.cmyk = function (gray) {return [0, 0, 0, gray[0]];};convert$2.gray.lab = function (gray) {return [gray[0], 0, 0];};convert$2.gray.hex = function (gray) {var val = Math.round(gray[0] / 100 * 255) & 0xFF;var integer = (val << 16) + (val << 8) + val;var string = integer.toString(16).toUpperCase();return '000000'.substring(string.length) + string;};convert$2.rgb.gray = function (rgb) {var val = (rgb[0] + rgb[1] + rgb[2]) / 3;return [val / 255 * 100];};var conversionsExports = conversions$2.exports;var conversions$1 = conversionsExports;function buildGraph() {var graph = {};var models = Object.keys(conversions$1);for (var len = models.length, i = 0; i < len; i++) {graph[models[i]] = { distance: -1, parent: null };}return graph;}function deriveBFS(fromModel) {var graph = buildGraph();var queue = [fromModel];graph[fromModel].distance = 0;while (queue.length) {var current = queue.pop();var adjacents = Object.keys(conversions$1[current]);for (var len = adjacents.length, i = 0; i < len; i++) {var adjacent = adjacents[i];var node = graph[adjacent];if (node.distance === -1) {node.distance = graph[current].distance + 1;node.parent = current;queue.unshift(adjacent);}}}return graph;}function link(from, to) {return function (args) {return to(from(args));};}function wrapConversion(toModel, graph) {var path = [graph[toModel].parent, toModel];var fn = conversions$1[graph[toModel].parent][toModel];var cur = graph[toModel].parent;while (graph[cur].parent) {path.unshift(graph[cur].parent);fn = link(conversions$1[graph[cur].parent][cur], fn);cur = graph[cur].parent;}fn.conversion = path;return fn;}var route$1 = function route$1(fromModel) {var graph = deriveBFS(fromModel);var conversion = {};var models = Object.keys(graph);for (var len = models.length, i = 0; i < len; i++) {var toModel = models[i];var node = graph[toModel];if (node.parent === null) {continue;}conversion[toModel] = wrapConversion(toModel, graph);}return conversion;};var conversions = conversionsExports;var route = route$1;var convert$1 = {};var models = Object.keys(conversions);function wrapRaw(fn) {var wrappedFn = function wrappedFn(args) {if (args === undefined || args === null) {return args;}if (arguments.length > 1) {args = Array.prototype.slice.call(arguments);}return fn(args);};if ('conversion' in fn) {wrappedFn.conversion = fn.conversion;}return wrappedFn;}function wrapRounded(fn) {var wrappedFn = function wrappedFn(args) {if (args === undefined || args === null) {return args;}if (arguments.length > 1) {args = Array.prototype.slice.call(arguments);}var result = fn(args);if (_typeof(result) === 'object') {for (var len = result.length, i = 0; i < len; i++) {result[i] = Math.round(result[i]);}}return result;};if ('conversion' in fn) {wrappedFn.conversion = fn.conversion;}return wrappedFn;}models.forEach(function (fromModel) {convert$1[fromModel] = {};Object.defineProperty(convert$1[fromModel], 'channels', { value: conversions[fromModel].channels });Object.defineProperty(convert$1[fromModel], 'labels', { value: conversions[fromModel].labels });var routes = route(fromModel);var routeModels = Object.keys(routes);routeModels.forEach(function (toModel) {var fn = routes[toModel];convert$1[fromModel][toModel] = wrapRounded(fn);convert$1[fromModel][toModel].raw = wrapRaw(fn);});});var colorConvert = convert$1;var colorString = colorStringExports;var convert = colorConvert;var _slice = [].slice;var skippedModels = ['keyword', 'gray', 'hex'];var hashedModelKeys = {};Object.keys(convert).forEach(function (model) {hashedModelKeys[_slice.call(convert[model].labels).sort().join('')] = model;});var limiters = {};function Color(obj, model) {if (!(this instanceof Color)) {return new Color(obj, model);}if (model && model in skippedModels) {model = null;}if (model && !(model in convert)) {throw new Error('Unknown model: ' + model);}var i;var channels;if (obj == null) {this.model = 'rgb';this.color = [0, 0, 0];this.valpha = 1;} else if (obj instanceof Color) {this.model = obj.model;this.color = obj.color.slice();this.valpha = obj.valpha;} else if (typeof obj === 'string') {var result = colorString.get(obj);if (result === null) {throw new Error('Unable to parse color from string: ' + obj);}this.model = result.model;channels = convert[this.model].channels;this.color = result.value.slice(0, channels);this.valpha = typeof result.value[channels] === 'number' ? result.value[channels] : 1;} else if (obj.length) {this.model = model || 'rgb';channels = convert[this.model].channels;var newArr = _slice.call(obj, 0, channels);this.color = zeroArray(newArr, channels);this.valpha = typeof obj[channels] === 'number' ? obj[channels] : 1;} else if (typeof obj === 'number') {obj &= 0xFFFFFF;this.model = 'rgb';this.color = [obj >> 16 & 0xFF, obj >> 8 & 0xFF, obj & 0xFF];this.valpha = 1;} else {this.valpha = 1;var keys = Object.keys(obj);if ('alpha' in obj) {keys.splice(keys.indexOf('alpha'), 1);this.valpha = typeof obj.alpha === 'number' ? obj.alpha : 0;}var hashedKeys = keys.sort().join('');if (!(hashedKeys in hashedModelKeys)) {throw new Error('Unable to parse color from object: ' + JSON.stringify(obj));}this.model = hashedModelKeys[hashedKeys];var labels = convert[this.model].labels;var color = [];for (i = 0; i < labels.length; i++) {color.push(obj[labels[i]]);}this.color = zeroArray(color);}if (limiters[this.model]) {channels = convert[this.model].channels;for (i = 0; i < channels; i++) {var limit = limiters[this.model][i];if (limit) {this.color[i] = limit(this.color[i]);}}}this.valpha = Math.max(0, Math.min(1, this.valpha));if (Object.freeze) {Object.freeze(this);}}Color.prototype = { toString: function toString() {return this.string();}, toJSON: function toJSON() {return this[this.model]();}, string: function string(places) {var self = this.model in colorString.to ? this : this.rgb();self = self.round(typeof places === 'number' ? places : 1);var args = self.valpha === 1 ? self.color : self.color.concat(this.valpha);return colorString.to[self.model](args);}, percentString: function percentString(places) {var self = this.rgb().round(typeof places === 'number' ? places : 1);var args = self.valpha === 1 ? self.color : self.color.concat(this.valpha);return colorString.to.rgb.percent(args);}, array: function array() {return this.valpha === 1 ? this.color.slice() : this.color.concat(this.valpha);}, object: function object() {var result = {};var channels = convert[this.model].channels;var labels = convert[this.model].labels;for (var i = 0; i < channels; i++) {result[labels[i]] = this.color[i];}if (this.valpha !== 1) {result.alpha = this.valpha;}return result;}, unitArray: function unitArray() {var rgb = this.rgb().color;rgb[0] /= 255;rgb[1] /= 255;rgb[2] /= 255;if (this.valpha !== 1) {rgb.push(this.valpha);}return rgb;}, unitObject: function unitObject() {var rgb = this.rgb().object();rgb.r /= 255;rgb.g /= 255;rgb.b /= 255;if (this.valpha !== 1) {rgb.alpha = this.valpha;}return rgb;}, round: function round(places) {places = Math.max(places || 0, 0);return new Color(this.color.map(roundToPlace(places)).concat(this.valpha), this.model);}, alpha: function alpha(val) {if (arguments.length) {return new Color(this.color.concat(Math.max(0, Math.min(1, val))), this.model);}return this.valpha;}, red: getset('rgb', 0, maxfn(255)), green: getset('rgb', 1, maxfn(255)), blue: getset('rgb', 2, maxfn(255)), hue: getset(['hsl', 'hsv', 'hsl', 'hwb', 'hcg'], 0, function (val) {return (val % 360 + 360) % 360;}), saturationl: getset('hsl', 1, maxfn(100)), lightness: getset('hsl', 2, maxfn(100)), saturationv: getset('hsv', 1, maxfn(100)), value: getset('hsv', 2, maxfn(100)), chroma: getset('hcg', 1, maxfn(100)), gray: getset('hcg', 2, maxfn(100)), white: getset('hwb', 1, maxfn(100)), wblack: getset('hwb', 2, maxfn(100)), cyan: getset('cmyk', 0, maxfn(100)), magenta: getset('cmyk', 1, maxfn(100)), yellow: getset('cmyk', 2, maxfn(100)), black: getset('cmyk', 3, maxfn(100)), x: getset('xyz', 0, maxfn(100)), y: getset('xyz', 1, maxfn(100)), z: getset('xyz', 2, maxfn(100)), l: getset('lab', 0, maxfn(100)), a: getset('lab', 1), b: getset('lab', 2), keyword: function keyword(val) {if (arguments.length) {return new Color(val);}return convert[this.model].keyword(this.color);}, hex: function hex(val) {if (arguments.length) {return new Color(val);}return colorString.to.hex(this.rgb().round().color);}, rgbNumber: function rgbNumber() {var rgb = this.rgb().color;return (rgb[0] & 0xFF) << 16 | (rgb[1] & 0xFF) << 8 | rgb[2] & 0xFF;}, luminosity: function luminosity() {var rgb = this.rgb().color;var lum = [];for (var i = 0; i < rgb.length; i++) {var chan = rgb[i] / 255;lum[i] = chan <= 0.03928 ? chan / 12.92 : Math.pow((chan + 0.055) / 1.055, 2.4);}return 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];}, contrast: function contrast(color2) {var lum1 = this.luminosity();var lum2 = color2.luminosity();if (lum1 > lum2) {return (lum1 + 0.05) / (lum2 + 0.05);}return (lum2 + 0.05) / (lum1 + 0.05);}, level: function level(color2) {var contrastRatio = this.contrast(color2);if (contrastRatio >= 7.1) {return 'AAA';}return contrastRatio >= 4.5 ? 'AA' : '';}, isDark: function isDark() {var rgb = this.rgb().color;var yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;return yiq < 128;}, isLight: function isLight() {return !this.isDark();}, negate: function negate() {var rgb = this.rgb();for (var i = 0; i < 3; i++) {rgb.color[i] = 255 - rgb.color[i];}return rgb;}, lighten: function lighten(ratio) {var hsl = this.hsl();hsl.color[2] += hsl.color[2] * ratio;return hsl;}, darken: function darken(ratio) {var hsl = this.hsl();hsl.color[2] -= hsl.color[2] * ratio;return hsl;}, saturate: function saturate(ratio) {var hsl = this.hsl();hsl.color[1] += hsl.color[1] * ratio;return hsl;}, desaturate: function desaturate(ratio) {var hsl = this.hsl();hsl.color[1] -= hsl.color[1] * ratio;return hsl;}, whiten: function whiten(ratio) {var hwb = this.hwb();hwb.color[1] += hwb.color[1] * ratio;return hwb;}, blacken: function blacken(ratio) {var hwb = this.hwb();hwb.color[2] += hwb.color[2] * ratio;return hwb;}, grayscale: function grayscale() {var rgb = this.rgb().color;var val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;return Color.rgb(val, val, val);}, fade: function fade(ratio) {return this.alpha(this.valpha - this.valpha * ratio);}, opaquer: function opaquer(ratio) {return this.alpha(this.valpha + this.valpha * ratio);}, rotate: function rotate(degrees) {var hsl = this.hsl();var hue = hsl.color[0];hue = (hue + degrees) % 360;hue = hue < 0 ? 360 + hue : hue;hsl.color[0] = hue;return hsl;}, mix: function mix(mixinColor, weight) {if (!mixinColor || !mixinColor.rgb) {throw new Error('Argument to \"mix\" was not a Color instance, but rather an instance of ' + _typeof(mixinColor));}var color1 = mixinColor.rgb();var color2 = this.rgb();var p = weight === undefined ? 0.5 : weight;var w = 2 * p - 1;var a = color1.alpha() - color2.alpha();var w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;var w2 = 1 - w1;return Color.rgb(w1 * color1.red() + w2 * color2.red(), w1 * color1.green() + w2 * color2.green(), w1 * color1.blue() + w2 * color2.blue(), color1.alpha() * p + color2.alpha() * (1 - p));} };Object.keys(convert).forEach(function (model) {if (skippedModels.indexOf(model) !== -1) {return;}var channels = convert[model].channels;Color.prototype[model] = function () {if (this.model === model) {return new Color(this);}if (arguments.length) {return new Color(arguments, model);}var newAlpha = typeof arguments[channels] === 'number' ? channels : this.valpha;return new Color(assertArray(convert[this.model][model].raw(this.color)).concat(newAlpha), model);};Color[model] = function (color) {if (typeof color === 'number') {color = zeroArray(_slice.call(arguments), channels);}return new Color(color, model);};});function roundTo(num, places) {return Number(num.toFixed(places));}function roundToPlace(places) {return function (num) {return roundTo(num, places);};}function getset(model, channel, modifier) {model = Array.isArray(model) ? model : [model];model.forEach(function (m) {(limiters[m] || (limiters[m] = []))[channel] = modifier;});model = model[0];return function (val) {var result;if (arguments.length) {if (modifier) {val = modifier(val);}result = this[model]();result.color[channel] = val;return result;}result = this[model]().color[channel];if (modifier) {result = modifier(result);}return result;};}function maxfn(max) {return function (v) {return Math.max(0, Math.min(max, v));};}function assertArray(val) {return Array.isArray(val) ? val : [val];}function zeroArray(arr, length) {for (var i = 0; i < length; i++) {if (typeof arr[i] !== 'number') {arr[i] = 0;}}return arr;}var color = Color;var Color$1 = exports.color = getDefaultExportFromCjs(color);var supportAssign = typeof Object.assign === 'function';var TEMP_VEC = [];function extend(dest) {if (supportAssign) {Object.assign.apply(Object, arguments);} else {for (var _i10 = 1; _i10 < arguments.length; _i10++) {var src = arguments[_i10];for (var k in src) {dest[k] = src[k];}}}return dest;}function isNil$1(v) {return v === undefined || v === null;}function isNumber$1(val) {return typeof val === 'number' && !isNaN(val);}var SCALE$1 = [];function _getGroundTransform(out, map) {var extent = map['_get2DExtentAtRes'](map.getGLRes());var scaleX = extent.getWidth(),scaleY = extent.getHeight();var localTransform = out;_reshader.mat4.identity(localTransform);var trans = _reshader.vec3.copy(TEMP_VEC, map.cameraLookAt);trans[2] = 0;_reshader.mat4.translate(localTransform, localTransform, trans);_reshader.mat4.scale(localTransform, localTransform, _reshader.vec3.set(SCALE$1, scaleX, scaleY, 1));return localTransform;}function hasOwn(obj, prop) {return Object.prototype.hasOwnProperty.call(obj, prop);}function pushIn(dest) {for (var _i11 = 1; _i11 < arguments.length; _i11++) {var src = arguments[_i11];if (src) {for (var ii = 0, ll = src.length; ii < ll; ii++) {dest.push(src[ii]);}}}return dest.length;}var colorCache = {};function normalizeColor(out, color) {if (!Array.isArray(color)) {var _key = color;color = colorCache[_key] = colorCache[_key] || Color$1(color).array();}for (var _i12 = 0; _i12 < color.length; _i12++) {out[_i12] = color[_i12];}if (color.length === 3) {out[3] = 1;}return out;}function normalizeColor255(out, color) {if (!Array.isArray(color)) {var _key2 = color;color = colorCache[_key2] = colorCache[_key2] || Color$1(color).array();for (var _i13 = 0; _i13 < color.length; _i13++) {out[_i13] = color[_i13];}} else {for (var _i14 = 0; _i14 < color.length; _i14++) {out[_i14] = color[_i14] * 255;}}if (out.length === 3) {out.push(255);}return out;}function coordinateToWorld$2(map, coordinate) {var z = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;if (!map || !(coordinate instanceof _maptalks.Coordinate)) {return null;}var p = map.coordinateToPointAtRes(coordinate, map.getGLRes());return [p.x, p.y, z];}function createGLContext(canvas, options, onlyWebGL1) {var names = onlyWebGL1 ? ['webgl', 'experimental-webgl'] : ['webgl2', 'webgl', 'experimental-webgl'];var gl = null;for (var _i15 = 0; _i15 < names.length; ++_i15) {try {gl = canvas.getContext(names[_i15], options);} catch (e) {}if (gl) {break;}}if (!gl) {console.error('Browser doesn\\'t support WebGL.');}return gl;}var EMPTY_HALTON = [0, 0];var DEFAULT_SHADOW_COLOR = [0, 0, 0];var SHADOW_MAX_PITCH = 62;var VISUAL_EXTENT;var ShadowProcess = function () {function ShadowProcess(regl, layer) {_classCallCheck(this, ShadowProcess);this.renderer = new reshader.Renderer(regl);this._esmShadowThreshold = 0.3;this._layer = layer;this._init();}return _createClass(ShadowProcess, [{ key: \"resize\", value: function resize() {var canvas = this.canvas;canvas.width = this._layer.getRenderer().canvas.width;canvas.height = this._layer.getRenderer().canvas.height;} }, { key: \"_init\", value: function _init() {var sceneConfig = this._layer._getSceneConfig() || {};var shadowConfig = sceneConfig.shadow || {};var shadowRes = this._getShadowRes();var defines = this.getDefines();this._shadowPass = new reshader.ShadowPass(this.renderer, { width: shadowRes, height: shadowRes, blurOffset: shadowConfig.blurOffset, defines: defines });this._shadowDisplayShader = new reshader.ShadowDisplayShader(defines);this._createGround();} }, { key: \"_getShadowRes\", value: function _getShadowRes() {var sceneConfig = this._layer._getSceneConfig() || {};var shadowConfig = sceneConfig.shadow || {};var shadowRes = 2048;var quality = shadowConfig.quality;if (quality === 'medium') {shadowRes = 1024;} else if (quality === 'low') {shadowRes = 512;}return shadowRes;} }, { key: \"getDefines\", value: function getDefines() {var defines = { 'HAS_SHADOWING': 1, 'PACK_FLOAT': 1, 'USE_ESM': 1 };return defines;} }, { key: \"render\", value: function render(displayShadow, projMatrix, viewMatrix, color, opacity, lightDirection, scene, halton, framebuffer, forceRefresh) {this._transformGround();var map = this._layer.getMap();var shadowRes = this._getShadowRes();var changed = forceRefresh || shadowRes !== this._shadowPass.width || this._shadowChanged(map, scene, !!displayShadow);var matrix, smap;if (changed) {if (shadowRes !== this._shadowPass.width) {this._shadowPass.resize(shadowRes, shadowRes);}this._tempMat0 = this._tempMat0 || [];this._tempMat1 = this._tempMat1 || [];var cameraProjViewMatrix = _reshader.mat4.multiply(this._tempMat0, projMatrix, viewMatrix);var lightDir = _reshader.vec3.normalize(this._tempMat1, lightDirection);if (!VISUAL_EXTENT) {VISUAL_EXTENT = map.getContainerExtent();}var visualHeight = map.height;if (map.getPitch() > SHADOW_MAX_PITCH) {visualHeight = map['_getVisualHeight'](SHADOW_MAX_PITCH);}var containerExtent = VISUAL_EXTENT.set(0, map.height - visualHeight, map.width, map.height);var _extent = containerExtent.convertTo(function (c) {return map['_containerPointToPointAtRes'](c, map.getGLRes());});var arr = _extent.toArray();if (displayShadow) {scene.addMesh(this._ground);}var farPlane = arr.map(function (c) {return [c.x, c.y, 0, 1];});var _this$_shadowPass$ren = this._shadowPass.render(scene, { cameraProjViewMatrix: cameraProjViewMatrix, lightDir: lightDir, farPlane: farPlane, cameraLookAt: map.cameraLookAt }),lightProjViewMatrix = _this$_shadowPass$ren.lightProjViewMatrix,shadowMap = _this$_shadowPass$ren.shadowMap,blurFBO = _this$_shadowPass$ren.blurFBO;matrix = this._lightProjViewMatrix = lightProjViewMatrix;smap = this._shadowMap = shadowMap;this._blurFBO = blurFBO;this._renderedShadows = scene.getMeshes().reduce(function (ids, m) {if (m.castShadow && m.geometry) {ids[m.uuid] = { v0: m.version, v1: m.geometry.version };}return ids;}, {});this._renderedView = { count: scene.getMeshes().length - +!!displayShadow, displayShadow: !!displayShadow };this._updated = true;} else {matrix = this._lightProjViewMatrix;smap = this._shadowMap;this._updated = false;}this._projMatrix = projMatrix;this._viewMatrix = viewMatrix;if (isNil$1(opacity)) {opacity = 1;}if (displayShadow && scene.getMeshes().length) {this.displayShadow(color, opacity, halton, framebuffer);}var uniforms = { 'shadow_lightProjViewMatrix': matrix, 'shadow_shadowMap': smap, 'shadow_opacity': opacity, 'shadow_color': color || DEFAULT_SHADOW_COLOR, 'esm_shadow_threshold': this._esmShadowThreshold };return uniforms;} }, { key: \"displayShadow\", value: function displayShadow(color, opacity, halton, framebuffer) {var matrix = this._lightProjViewMatrix;var ground = this._ground;var groundLightProjViewModelMatrix = this._groundLightProjViewModelMatrix || [];var canvas = this._layer.getRenderer().canvas;var texSize = this._texSize = this._texSize || [];texSize[0] = canvas.width;texSize[1] = canvas.height;this.renderer.render(this._shadowDisplayShader, { 'halton': halton || EMPTY_HALTON, 'globalTexSize': texSize, 'projMatrix': this._projMatrix, 'viewMatrix': this._viewMatrix, 'shadow_lightProjViewModelMatrix': _reshader.mat4.multiply(groundLightProjViewModelMatrix, matrix, ground.localTransform), 'shadow_shadowMap': this._shadowMap, 'esm_shadow_threshold': this._esmShadowThreshold, 'shadow_opacity': opacity, 'color': color || DEFAULT_SHADOW_COLOR }, this._groundScene, framebuffer);} }, { key: \"dispose\", value: function dispose() {this._shadowPass.dispose();this._shadowDisplayShader.dispose();if (this._ground) {this._ground.geometry.dispose();this._ground.dispose();}delete this.renderer;} }, { key: \"isUpdated\", value: function isUpdated() {return this._updated !== false;} }, { key: \"_shadowChanged\", value: function _shadowChanged(map, scene, displayShadow) {if (!this._renderedShadows) {return true;}var renderedView = this._renderedView;if (scene.getMeshes().length !== renderedView.count || displayShadow !== renderedView.displayShadow) {return true;}var meshes = scene.getMeshes();var changed = false;for (var _i16 = 0; _i16 < meshes.length; _i16++) {var saved = this._renderedShadows[meshes[_i16].uuid];if (meshes[_i16].castShadow && (meshes[_i16].hasSkinAnimation() || !saved || saved.v0 !== meshes[_i16].version || saved.v1 !== meshes[_i16].geometry.version)) {return true;}}return changed;} }, { key: \"_createGround\", value: function _createGround() {var planeGeo = new reshader.Plane();planeGeo.generateBuffers(this.renderer.regl);this._ground = new reshader.Mesh(planeGeo);this._groundScene = new reshader.Scene([this._ground]);} }, { key: \"_transformGround\", value: function _transformGround() {var map = this._layer.getMap();var localTransform = _getGroundTransform(this._ground.localTransform, map);this._ground.setLocalTransform(localTransform);} }], [{ key: \"getUniformDeclares\", value: function getUniformDeclares() {var shadowLightProjViewModelMatrix = [];var uniforms = [];uniforms.push({ name: 'shadow_lightProjViewModelMatrix', type: 'function', fn: function fn(context, props) {var lightProjViews = props['shadow_lightProjViewMatrix'];var model = props['modelMatrix'];return _reshader.mat4.multiply(shadowLightProjViewModelMatrix, lightProjViews, model);} });return uniforms;} }]);}();var fillVert = \"attribute vec3 aPosition;\\nuniform mat4 projViewModelMatrix;\\nuniform mat4 modelMatrix;\\n#ifdef HAS_PATTERN\\n attribute vec2 aTexCoord;\\n uniform vec2 uvScale;\\n uniform vec2 uvOffset;\\n varying vec2 vTexCoord;\\n#endif\\n#if defined(HAS_SHADOWING) && !defined(HAS_BLOOM)\\n #include \\n#endif\\nvoid main () {\\n #ifdef HAS_PATTERN\\n vTexCoord = aTexCoord * uvScale + uvOffset;\\n #endif\\n vec3 position = vec3(aPosition);\\n gl_Position = projViewModelMatrix * vec4(position, 1.0);\\n #if defined(HAS_SHADOWING) && !defined(HAS_BLOOM)\\n shadow_computeShadowPars(vec4(position, 1.0));\\n #endif\\n}\";var fillFrag = \"precision mediump float;\\n#if defined(HAS_SHADOWING) && !defined(HAS_BLOOM)\\n #include \\n#endif\\n#ifdef HAS_PATTERN\\n uniform sampler2D polygonPatternFile;\\n varying vec2 vTexCoord;\\n#endif\\nuniform vec4 polygonFill;\\nuniform float polygonOpacity;\\nvoid main() {\\n #ifdef HAS_PATTERN\\n vec4 color = texture2D(polygonPatternFile, vTexCoord);\\n #else\\n vec4 color = polygonFill;\\n #endif\\n gl_FragColor = color * polygonOpacity;\\n #if defined(HAS_SHADOWING) && !defined(HAS_BLOOM)\\n float shadowCoeff = shadow_computeShadow();\\n gl_FragColor.rgb = shadow_blend(gl_FragColor.rgb, shadowCoeff);\\n #endif\\n}\";var DEFAULT_TEX_OFFSET$1 = [0, 0];var COORD0$1 = new maptalks.Coordinate(0, 0);var COORD1 = new maptalks.Coordinate(0, 0);var ARR2_0 = [];var ARR2_1$1 = [];var UNIFORMS = [];function computeUVUniforms(map, xmin, ymin, patternOrigin, patternWidth, patternHeight, texAspect, uvScale, isOffsetInMeter, offsetValue, uvOffsetAnim) {var glRes = map.getGLRes();if (patternOrigin) {COORD0$1.set(patternOrigin[0], patternOrigin[1]);map.coordToPointAtRes(COORD0$1, glRes, COORD1);xmin = xmin - COORD1.x;ymin = ymin - COORD1.y;}var pointOrigin = patternOrigin ? COORD0$1 : null;offsetValue = _reshader.vec2.copy(ARR2_1$1, offsetValue);var uvOffset = !isOffsetInMeter && offsetValue || DEFAULT_TEX_OFFSET$1;var meterOffset = isOffsetInMeter && offsetValue || DEFAULT_TEX_OFFSET$1;meterOffset = _reshader.vec2.copy(ARR2_0, meterOffset);if (meterOffset[0]) {meterOffset[0] = meterToPoint(map, meterOffset[0], pointOrigin);}if (meterOffset[1]) {meterOffset[1] = meterToPoint(map, meterOffset[1], pointOrigin, 1);}var texWidth = 0.5;if (patternWidth) {texWidth = meterToPoint(map, patternWidth, pointOrigin);}var texHeight = texWidth / texAspect;if (patternHeight) {texHeight = meterToPoint(map, patternHeight, pointOrigin, 1);}var hasUVAnim = uvOffsetAnim && (uvOffsetAnim[0] || uvOffsetAnim[1]);if (hasUVAnim) {var timeStamp = performance.now() / 1000;var animX = uvOffsetAnim[0];var animY = uvOffsetAnim[1];if (isOffsetInMeter) {animX = -meterToPoint(map, uvOffsetAnim[0], pointOrigin);animY = -meterToPoint(map, uvOffsetAnim[1], pointOrigin, 1);}if (uvOffsetAnim[0]) {if (isOffsetInMeter) {meterOffset[0] = timeStamp * animX;} else {uvOffset[0] = timeStamp * animX;}}if (uvOffsetAnim[1]) {if (isOffsetInMeter) {meterOffset[1] = timeStamp * animY;} else {uvOffset[1] = timeStamp * animY;}}}var uvStartX = (xmin + meterOffset[0]) / (texWidth / uvScale[0]);var uvStartY = (ymin - meterOffset[1]) / (texHeight / uvScale[1]);UNIFORMS[0] = texWidth / uvScale[0];UNIFORMS[1] = texHeight / uvScale[1];UNIFORMS[2] = uvStartX;UNIFORMS[3] = uvStartY;UNIFORMS[4] = uvOffset;return UNIFORMS;}function meterToPoint(map, meter, patternOrigin, isYAxis) {var glRes = map.getGLRes();var point = map.distanceToPointAtRes(meter, meter, glRes, patternOrigin ? COORD0$1 : null, COORD1);return isYAxis ? point.y : point.x;}var _reshader$pbr$PBRUtil = reshader.pbr.PBRUtils,getIBLResOnCanvas$1 = _reshader$pbr$PBRUtil.getIBLResOnCanvas,logoutIBLResOnCanvas$1 = _reshader$pbr$PBRUtil.logoutIBLResOnCanvas,getPBRUniforms$1 = _reshader$pbr$PBRUtil.getPBRUniforms,loginIBLResOnCanvas$1 = _reshader$pbr$PBRUtil.loginIBLResOnCanvas;var DEFAULT_TEX_OFFSET = [0, 0];var DEFAULT_TEX_SCALE = [1, 1];var ARR2_1 = [];var ARR2_2 = [];var ARR2_3 = [];var ARR2_4 = [];var ARR2_5 = [];var GroundPainter = exports.GroundPainter = function () {function GroundPainter(regl, layer) {var _this23 = this;_classCallCheck(this, GroundPainter);this._regl = regl;this.renderer = new reshader.Renderer(regl);this._layer = layer;this._loader = new reshader.ResourceLoader();this._bindOnMaterialComplete = function () {var _this23$_onMaterialCo;for (var _len = arguments.length, args = new Array(_len), _key3 = 0; _key3 < _len; _key3++) {args[_key3] = arguments[_key3];}return (_this23$_onMaterialCo = _this23._onMaterialComplete).call.apply(_this23$_onMaterialCo, [_this23].concat(args));};this._init();var canvas = this.getMap().getRenderer().canvas;loginIBLResOnCanvas$1(canvas, regl, this.getMap());}return _createClass(GroundPainter, [{ key: \"needToRedraw\", value: function needToRedraw() {var uvOffsetAnim = this._getUVOffsetAnim();return uvOffsetAnim && (uvOffsetAnim[0] || uvOffsetAnim[1]);} }, { key: \"getMap\", value: function getMap() {return this._layer && this._layer.getMap();} }, { key: \"getSymbol\", value: function getSymbol() {var ground = this._layer.getGroundConfig();return ground && ground.symbol;} }, { key: \"isEnable\", value: function isEnable() {var ground = this._layer.getGroundConfig();return ground && ground.enable;} }, { key: \"paint\", value: function paint(context) {if (!this.isEnable()) {return false;}var shader = this._getShader();if (this._isInSSRPhase(context) && shader === this._fillShader) {return false;}var defines = this._getGroundDefines(context);if (defines) {this._ground.setDefines(defines);}if (this._ground.material !== this.material) {this._ground.setMaterial(this.material);}var groundConfig = this._layer.getGroundConfig();var symbol = groundConfig && groundConfig.symbol;if (symbol.ssr) {this._ground.ssr = 1;} else {this._ground.ssr = 0;}this._transformGround();var uniforms = this._getUniformValues(context);uniforms['offsetFactor'] = context.offsetFactor;uniforms['offsetUnits'] = context.offsetUnits;var fbo = context && context.renderTarget && context.renderTarget.fbo;if (shader === this._fillShader) {this.renderer.render(shader, uniforms, this._groundScene, fbo);this._layer.getRenderer().setCanvasUpdated();return true;}shader.filter = context.sceneFilter;this.renderer.render(shader, uniforms, this._groundScene, fbo);this._layer.getRenderer().setCanvasUpdated();return true;} }, { key: \"_isInSSRPhase\", value: function _isInSSRPhase(context) {var enableSSR = this._layer.getRenderer().isEnableSSR && this._layer.getRenderer().isEnableSSR();if (!enableSSR) {return false;}return !!(context && context.ssr);} }, { key: \"update\", value: function update() {var _this24 = this;var groundConfig = this._layer.getGroundConfig();if (!groundConfig) {return;}var symbol = groundConfig && groundConfig.symbol;var urlModifier = groundConfig.urlModifier;if (!symbol) {this._polygonFill = [1, 1, 1, 1];this._polygonOpacity = 1;if (this._polygonPatternFile) {this._polygonPatternFile.destroy();delete this._polygonPatternFile;}} else {this._polygonFill = this._parseColor(symbol['polygonFill'] || [1, 1, 1, 1]);this._polygonOpacity = symbol['polygonOpacity'] === undefined ? 1 : symbol['polygonOpacity'];var polygonPatternFile = symbol.polygonPatternFile;if (polygonPatternFile) {if (!this._polygonPatternFile || this._polygonPatternFile['_pattern_src'] !== polygonPatternFile) {var image = new Image();image.onload = function () {if (_this24._polygonPatternFile) {_this24._polygonPatternFile.destroy();}_this24._polygonPatternFile = _this24._createPatternTexture(image);_this24._polygonPatternFile['_pattern_src'] = polygonPatternFile;_this24.setToRedraw();};image.src = urlModifier && urlModifier(polygonPatternFile) || polygonPatternFile;}} else if (this._polygonPatternFile) {this._polygonPatternFile.destroy();delete this._polygonPatternFile;}}this._updateMaterial();} }, { key: \"setToRedraw\", value: function setToRedraw() {var renderer = this._layer.getRenderer();if (!renderer) {return;}renderer.setToRedraw();} }, { key: \"dispose\", value: function dispose() {if (this.material) {this.material.dispose();delete this.material;}if (this._ground) {this._ground.geometry.dispose();if (this._ground.material) {this._ground.material.dispose();}this._ground.dispose();delete this._ground;}if (this._polygonPatternFile) {this._polygonPatternFile.destroy();delete this._polygonPatternFile;}if (this._fillShader) {this._fillShader.dispose();delete this._fillShader;}if (this._standardShader) {this._standardShader.dispose();delete this._standardShader;}this._disposeIblTextures();} }, { key: \"_getShader\", value: function _getShader() {var groundConfig = this._layer.getGroundConfig();if (!groundConfig || !groundConfig.renderPlugin) {return this._fillShader;}var type = groundConfig.renderPlugin.type;if (type === 'lit') {return this._standardShader;} else if (type === 'fill') {return this._fillShader;} else {throw new Error('unsupported render plugin of ' + type + ' for layer ground');}} }, { key: \"_getUniformValues\", value: function _getUniformValues(context) {var uniforms = this._getCommonUniforms(context);uniforms.polygonFill = this._polygonFill;uniforms.polygonOpacity = this._polygonOpacity;var shader = this._getShader();if (shader === this._fillShader && this._polygonPatternFile) {uniforms.polygonPatternFile = this._polygonPatternFile;}return uniforms;} }, { key: \"_getCommonUniforms\", value: function _getCommonUniforms(context) {var groundConfig = this._layer.getGroundConfig();var type = groundConfig.renderPlugin.type;var uniforms;if (type === 'lit') {var canvas = this.getMap().getRenderer().canvas;var _getIBLResOnCanvas$ = getIBLResOnCanvas$1(canvas),iblTexes = _getIBLResOnCanvas$.iblTexes,dfgLUT = _getIBLResOnCanvas$.dfgLUT;uniforms = getPBRUniforms$1(this.getMap(), iblTexes, dfgLUT, context && context.ssr, context && context.jitter);} else {var map = this.getMap();uniforms = { projViewMatrix: map.projViewMatrix };}this._setIncludeUniformValues(uniforms, context);return uniforms;} }, { key: \"_setIncludeUniformValues\", value: function _setIncludeUniformValues(uniforms, context) {var includes = context && context.includes;if (includes) {for (var _p2 in includes) {if (includes[_p2]) {if (context[_p2].renderUniforms) {extend(uniforms, context[_p2].renderUniforms);}}}}} }, { key: \"_disposeIblTextures\", value: function _disposeIblTextures() {var canvas = this.getMap().getRenderer().canvas;logoutIBLResOnCanvas$1(canvas, this.getMap());} }, { key: \"_init\", value: function _init() {var extraCommandProps = this._getExtraCommandProps();var fillUniforms = ShadowProcess.getUniformDeclares();var projViewModelMatrix = [];fillUniforms.push({ name: 'projViewModelMatrix', type: 'function', fn: function fn(context, props) {return _reshader.mat4.multiply(projViewModelMatrix, props['projViewMatrix'], props['modelMatrix']);} });this._fillShader = new reshader.MeshShader({ vert: fillVert, frag: fillFrag, uniforms: fillUniforms, extraCommandProps: extraCommandProps });var uniforms = ShadowProcess.getUniformDeclares();uniforms.push.apply(uniforms, _toConsumableArray(reshader.SsrPass.getUniformDeclares()));this._standardShader = new reshader.pbr.StandardShader({ uniforms: uniforms, extraCommandProps: extraCommandProps });this._createGround();this.update();} }, { key: \"_getExtraCommandProps\", value: function _getExtraCommandProps() {var _this25 = this;var defaultRange = [0, 1];var canvas = this._layer.getRenderer().canvas;return { viewport: { x: 0, y: 0, width: function width() {return canvas.width;}, height: function height() {return canvas.height;} }, cull: { enable: true }, depth: { enable: true, mask: function mask() {var ground = _this25._layer.getGroundConfig();return ground.depth || ground.depth === undefined;}, range: function range() {var groundConfig = _this25._layer.getGroundConfig();var groundSceneConfig = groundConfig && groundConfig.renderPlugin.sceneConfig;return groundSceneConfig && groundSceneConfig['depthRange'] || defaultRange;}, func: '<=' }, blend: { enable: true, func: { src: 'src alpha', dst: 'one minus src alpha' }, equation: 'add' }, polygonOffset: { enable: true, offset: { factor: function factor(context, props) {return props['offsetFactor'];}, units: function units(context, props) {return props['offsetUnits'];} } } };} }, { key: \"_hasIBL\", value: function _hasIBL() {var lightManager = this.getMap().getLightManager();var resource = lightManager && lightManager.getAmbientResource();return !!resource;} }, { key: \"_createGround\", value: function _createGround() {var planeGeo = new reshader.Plane();planeGeo.data.aTexCoord = new Uint8Array([0, 0, 1, 0, 0, 1, 1, 1]);planeGeo.createTangent();planeGeo.generateBuffers(this.renderer.regl);this._ground = new reshader.Mesh(planeGeo, null, { castShadow: false });var defines = this._standardShader.getGeometryDefines(planeGeo);this._ground.setDefines(defines);this._groundScene = new reshader.Scene([this._ground]);} }, { key: \"_transformGround\", value: function _transformGround() {var map = this.getMap();var localTransform = GroundPainter.getGroundTransform(this._ground.localTransform, map);this._ground.setLocalTransform(localTransform);var glRes = map.getGLRes();var extent = map['_get2DExtentAtRes'](glRes);var width = extent.getWidth();var height = extent.getHeight();var center = map.cameraLookAt;var xmin = center[0] - width;var ymin = center[1] - height;var texAspect = this._polygonPatternFile ? this._polygonPatternFile.width / this._polygonPatternFile.height : 1;var symbol = this.getSymbol();var patternOrigin = this.material ? this.material.get('textureOrigin') : symbol.polygonPatternFileOrigin;var isOffsetInMeter = !!(this.material ? this.material.get('uvOffsetInMeter') : symbol.uvOffsetInMeter);var offsetValue = (this.material ? this.material.get('uvOffset') : symbol.uvOffset) || DEFAULT_TEX_OFFSET;var uvScale = this.material && this.material.get('uvScale') || DEFAULT_TEX_SCALE;var patternWidth = this.material ? this.material.get('textureWidth') : symbol.polygonPatternFileWidth;var patternHeight = this.material ? patternWidth * (uvScale[1] / uvScale[0]) : symbol.polygonPatternFileHeight;var uvOffsetAnim = this._getUVOffsetAnim();var _computeUVUniforms = computeUVUniforms(map, xmin, ymin, patternOrigin, patternWidth, patternHeight, texAspect, uvScale, isOffsetInMeter, offsetValue, uvOffsetAnim),_computeUVUniforms2 = _slicedToArray(_computeUVUniforms, 5),textureWidth = _computeUVUniforms2[0],textureHeight = _computeUVUniforms2[1],uvStartX = _computeUVUniforms2[2],uvStartY = _computeUVUniforms2[3],uvOffset = _computeUVUniforms2[4];var scaleX = extent.getWidth() * 2 / textureWidth;var scaleY = extent.getHeight() * 2 / textureHeight;if (!this.material) {this._ground.setUniform('uvScale', _reshader.vec2.set(ARR2_1, scaleX, scaleY));this._ground.setUniform('uvOffset', _reshader.vec2.set(ARR2_2, uvStartX % 1 + uvOffset[0], uvStartY % 1 + uvOffset[1]));return;}this._ground.setUniform('uvScale', _reshader.vec2.set(ARR2_5, scaleX, scaleY));this._ground.setUniform('uvOffset', _reshader.vec2.set(ARR2_3, uvStartX % 1 + uvOffset[0], uvStartY % 1 + uvOffset[1]));this._ground.setUniform('uvOrigin', _reshader.vec2.set(ARR2_4, uvStartX - uvStartX % 1, uvStartY - uvStartY % 1));this._ground.setUniform('uvRotation', 0);} }, { key: \"_getGroundDefines\", value: function _getGroundDefines(context) {var updated = false;var defines = this._ground.defines;var sceneConfig = this._layer._getSceneConfig && this._layer._getSceneConfig();var groundConfig = this._layer.getGroundConfig();function update(has, name) {if (has) {if (!defines[name]) {defines[name] = 1;updated = true;}} else if (defines[name]) {delete defines[name];updated = true;}}update(this._hasIBL(), 'HAS_IBL_LIGHTING');var hasSSR = context && context.ssr && groundConfig && groundConfig.symbol && groundConfig.symbol.ssr;update(hasSSR, 'HAS_SSR');var hasShadow = context && sceneConfig && sceneConfig.shadow && sceneConfig.shadow.enable;update(hasShadow, 'HAS_SHADOWING');update(hasShadow, 'USE_ESM');var hasPattern = !!this._polygonPatternFile;update(hasPattern, 'HAS_PATTERN');if (!updated) {return null;}return defines;} }, { key: \"_updateMaterial\", value: function _updateMaterial() {var materialConfig = this.getSymbol() && this.getSymbol().material;if (!materialConfig) {return;}var material = {};var hasTexture = false;var ground = this._layer.getGroundConfig();this._loader.setURLModifier(ground.urlModifier);for (var _p3 in materialConfig) {if (hasOwn(materialConfig, _p3)) {if (_p3.indexOf('Texture') > 0) {var texConf = materialConfig[_p3];if (!texConf) {continue;}texConf = typeof texConf === 'string' ? { url: texConf, wrap: 'repeat' } : texConf;texConf.flipY = true;texConf.min = 'linear mipmap linear';texConf.mag = 'linear';texConf.flipY = true;material[_p3] = new reshader.Texture2D(texConf, this._loader);hasTexture = true;} else {material[_p3] = materialConfig[_p3];}}}if (!this.material) {this.material = new reshader.pbr.StandardMaterial(material);this.material.once('complete', this._bindOnMaterialComplete, this);} else {this._loadingMaterial = new reshader.pbr.StandardMaterial(material);if (this._loadingMaterial.isReady()) {this._onMaterialComplete();} else {this._loadingMaterial.once('complete', this._bindOnMaterialComplete);}}if (!hasTexture) {this._onMaterialComplete();}} }, { key: \"_onMaterialComplete\", value: function _onMaterialComplete() {if (this._loadingMaterial) {this.material.dispose();this.material = this._loadingMaterial;delete this._loadingMaterial;}this.setToRedraw(true);} }, { key: \"_createPatternTexture\", value: function _createPatternTexture(image) {image = reshader.Util.resizeToPowerOfTwo(image);var regl = this._regl;var config = { width: image.width, height: image.height, data: image, mag: 'linear', min: 'linear mipmap linear', flipY: true, wrap: 'repeat' };return regl.texture(config);} }, { key: \"_parseColor\", value: function _parseColor(c) {return normalizeColor([], c);} }, { key: \"_getUVOffsetAnim\", value: function _getUVOffsetAnim() {return this.material && this.material.get('uvOffsetAnim');} }, { key: \"getRenderMeshes\", value: function getRenderMeshes() {return this._groundScene.getMeshes();} }], [{ key: \"getGroundTransform\", value: function getGroundTransform(out, map) {return _getGroundTransform(out, map);} }]);}();var _reshader$pbr$PBRUtil2 = reshader.pbr.PBRUtils,createIBLTextures = _reshader$pbr$PBRUtil2.createIBLTextures,disposeIBLTextures = _reshader$pbr$PBRUtil2.disposeIBLTextures;var EMPTY_HSV = [0, 0, 0];var HSV = [];var OUTSIZE = [];var EnvironmentPainter = function () {function EnvironmentPainter(regl, layer) {_classCallCheck(this, EnvironmentPainter);this._maxLevel = 4;this._regl = regl;this.renderer = new reshader.Renderer(regl);this._layer = layer;this._init();this._updateMode();}return _createClass(EnvironmentPainter, [{ key: \"paint\", value: function paint(context) {if (!this.isEnable() || !this._resource) {return;}var uniforms = this._getUniformValues(context);var fbo = context && context.renderTarget && context.renderTarget.fbo;this.renderer.render(this._shader, uniforms, null, fbo);} }, { key: \"update\", value: function update() {var map = this.getMap();if (!map || !this.isEnable()) {return;}var lightManager = map.getLightManager();var resource = lightManager && lightManager.getAmbientResource();if (resource !== this._resource && this._iblTexes) {disposeIBLTextures(this._iblTexes);delete this._iblTexes;}this._resource = resource;this._updateMode();} }, { key: \"dispose\", value: function dispose() {this._shader.dispose();disposeIBLTextures(this._iblTexes);delete this._shader;delete this._iblTexes;delete this._resource;} }, { key: \"getMap\", value: function getMap() {return this._layer.getMap();} }, { key: \"_updateMode\", value: function _updateMode() {if (!this._resource) {return;}var sceneConfig = this._layer._getSceneConfig();var environment = sceneConfig.environment || {};this._shader.setMode(environment.toneMapping, environment.mode ? 1 : 0);} }, { key: \"isEnable\", value: function isEnable() {var sceneConfig = this._layer._getSceneConfig();return this._hasIBL() && sceneConfig && sceneConfig.environment && sceneConfig.environment.enable;} }, { key: \"_hasIBL\", value: function _hasIBL() {var lightManager = this.getMap().getLightManager();var resource = lightManager && lightManager.getAmbientResource();return !!resource;} }, { key: \"_getUniformValues\", value: function _getUniformValues() {var map = this.getMap();var lightManager = this.getMap().getLightManager();var ambient = lightManager && lightManager.getAmbientLight();var iblTexes = this._iblTexes;if (!iblTexes) {iblTexes = this._iblTexes = createIBLTextures(this._regl, map);}var canvas = this._layer.getRenderer().canvas;var envConfig = this._layer._getSceneConfig().environment || {};var level = envConfig.level || 0;var cubeSize = iblTexes.prefilterMap.width;var transform = this._transform = this._transform || [];var hsv = ambient && ambient.hsv || EMPTY_HSV;var brightness = envConfig.brightness || 0;var intensity = envConfig.intensity || 1;_reshader.vec3.copy(HSV, hsv);if (brightness) {HSV[2] += brightness;}OUTSIZE[0] = canvas.width;OUTSIZE[1] = canvas.height;return { 'cubeMap': iblTexes.prefilterMap, 'bias': level, 'size': cubeSize / Math.pow(2, Math.max(0, level - 1)), 'environmentExposure': isNumber$1(ambient && ambient.exposure) ? ambient.exposure : 1, 'backgroundIntensity': intensity, 'diffuseSPH': iblTexes.sh, 'viewMatrix': map.viewMatrix, 'projMatrix': map.projMatrix, 'resolution': OUTSIZE, 'hsv': HSV, 'transformMatrix': _reshader.mat3.fromRotation(transform, ambient && Math.PI / 180 * -ambient.orientation || 0) };} }, { key: \"_init\", value: function _init() {var map = this.getMap();map.on('updatelights', this.update, this);this._shader = new reshader.SkyboxShader();if (map.options.lights) {var lightManager = this.getMap().getLightManager();var resource = lightManager.getAmbientResource();this._resource = resource;}} }]);}();var rainVert = \"attribute vec3 aPosition;\\nattribute vec3 aNormal;\\nattribute vec2 aTexCoord;\\nuniform mat4 projMatrix;\\nuniform mat4 modelMatrix;\\nuniform mat4 modelViewMatrix;\\nuniform mat4 positionMatrix;\\nuniform vec3 cameraPosition;\\nuniform float top;\\nuniform float bottom;\\nuniform float time;\\nvarying vec2 vTexCoord;\\n#include \\nfloat angle(float x, float y){\\n return atan(y, x);\\n}\\nvec2 getFoot(vec2 camera, vec2 normal, vec2 pos) {\\n vec2 position = vec2(0.0, 0.0);\\n float distanceLen = distance(pos, normal);\\n float a = angle(camera.x - normal.x, camera.y - normal.y);\\n pos.x > normal.x ? a -= 0.785 : a += 0.785;\\n position.x = cos(a) * distanceLen;\\n position.y = sin(a) * distanceLen;\\n return position + normal;\\n return position;\\n}\\nvoid main()\\n{\\n vec4 localPosition = getPosition(aPosition);\\n mat4 localPositionMatrix = getPositionMatrix();\\n vec2 foot = getFoot(vec2(cameraPosition.x, cameraPosition.z), vec2(aNormal.x, aNormal.z), vec2(localPosition.x, localPosition.z));\\n float height = top - bottom;\\n float y = aNormal.y - bottom - height * time;\\n y = y + (y < 0.0 ? height : 0.0);\\n float ratio = (1.0 - y / height) * (1.0 - y / height);\\n y = height * (1.0 - ratio);\\n y += bottom;\\n y += aPosition.y - aNormal.y;\\n localPosition = vec4( foot.x, y, foot.y , 1.0);\\n gl_Position = projMatrix * modelViewMatrix * localPositionMatrix * localPosition;\\n vTexCoord = aTexCoord;\\n}\";var rainFrag = \"precision mediump float;\\nvarying vec2 vTexCoord;\\nuniform vec3 diffuse;\\nuniform float opacity;\\nuniform sampler2D rainMap;\\nvoid main() {\\n vec4 rainColor = texture2D(rainMap, vTexCoord);\\n vec4 diffuseColor = vec4(diffuse, opacity);\\n diffuseColor *= rainColor;\\n gl_FragColor = diffuseColor;\\n}\";var modelViewMatrix$1 = [];var DEFALUT_SCALE$1 = [0.03, 0.03, 0.03];var TEMP_ROTATE$1 = [],TEMP_SCALE$1 = [],TEMP_MAT$1 = [];var DEFAULT_COLOR = [1, 1, 1];var DEFAULT_EXTENT = { min: [-1200, -1200, 0], max: [1200, 1200, 1000] },DEFAULT_ZOOM$2 = 16.685648411389433,extent = { min: [], max: [] };var Y_UP_TO_Z_UP$1 = _reshader.mat4.fromRotationTranslation([], _reshader.quat.fromEuler([], 90, 0, 0), [0, 0, 0]);var RainPainer = function () {function RainPainer(regl, layer) {_classCallCheck(this, RainPainer);this._regl = regl;this.renderer = new reshader.Renderer(regl);this._layer = layer;this._timer = new Clock();this._init();}return _createClass(RainPainer, [{ key: \"getMap\", value: function getMap() {return this._layer && this._layer.getMap();} }, { key: \"_init\", value: function _init() {var canvas = this._layer.getRenderer().canvas;var viewport = { x: 0, y: 0, width: function width() {return canvas.width;}, height: function height() {return canvas.height;} };this._shader = new reshader.MeshShader({ vert: rainVert, frag: rainFrag, uniforms: [{ name: 'modelViewMatrix', type: 'function', fn: function fn(context, props) {return _reshader.mat4.multiply(modelViewMatrix$1, props['viewMatrix'], props['modelMatrix']);} }], extraCommandProps: { viewport: viewport, depth: { enable: true, mask: false, func: 'less', range: [0, 1] }, blend: { enable: true, func: { src: 'src alpha', dst: 'one minus src alpha' }, equation: 'add' } } });this._createScene();} }, { key: \"_createScene\", value: function _createScene() {var _this26 = this;var emptyTexture = this._regl.texture({ width: 2, height: 2 });this._mesh = this._createRain();if (!this._mesh) {return;}this._scene = new reshader.Scene(this._mesh);var rainConfig = this._getRainConfig();if (!rainConfig.rainTexture) {this._mesh.material.set('rainMap', emptyTexture);console.warn('should set rain texture.');} else {this._creatRainTexture(rainConfig.rainTexture).then(function (rainMap) {_this26._mesh.material.set('rainMap', rainMap);});}} }, { key: \"_createRain\", value: function _createRain() {var map = this.getMap();var rainConfig = this._getRainConfig();if (!rainConfig) {return null;}this._fixZoom = map.getZoom();var box = this._getFixExtent();var rainDensity = this._rainDensity = rainConfig.density;var rainWidth = this._rainWidth = rainConfig.rainWidth || 1;var rainHeight = this._rainHeight = rainConfig.rainHeight || 1;var vertices = [];var normals = [];var uvs = [];var indices = [];for (var _i17 = 0; _i17 < rainDensity; _i17++) {var pos = {};pos.x = Math.random() * (box.max[0] - box.min[0]) + box.min[0];pos.y = Math.random() * (box.max[2] - box.min[2]) + box.min[2];pos.z = Math.random() * (box.max[1] - box.min[1]) + box.min[1];var height = (box.max[2] - box.min[2]) / 37.5 * rainHeight;var width = height / 3 * rainWidth;vertices.push(pos.x + width, pos.y + height, pos.z, pos.x - width, pos.y + height, pos.z, pos.x - width, pos.y, pos.z, pos.x + width, pos.y, pos.z);normals.push(pos.x, pos.y - height / 2, pos.z, pos.x, pos.y - height / 2, pos.z, pos.x, pos.y - height / 2, pos.z, pos.x, pos.y - height / 2, pos.z);uvs.push(1, 1, 0, 1, 0, 0, 1, 0);indices.push(_i17 * 4 + 0, _i17 * 4 + 1, _i17 * 4 + 2, _i17 * 4 + 0, _i17 * 4 + 2, _i17 * 4 + 3);}var attributes = {};attributes['POSITION'] = vertices;attributes['NORMAL'] = normals;attributes['TEXCOORD_0'] = uvs;var geometry = new reshader.Geometry(attributes, indices, 0, { primitive: 'triangles', positionAttribute: 'POSITION', normalAttribute: 'NORMAL', uv0Attribute: 'TEXCOORD_0' });geometry.generateBuffers(this.renderer.regl);var material = new reshader.Material({ rainMap: this._regl.texture({ width: 2, height: 2 }), diffuse: rainConfig.color || [1, 1, 1], opacity: rainConfig.opacity || 1 });var modelMesh = new reshader.Mesh(geometry, material);modelMesh.setUniform('top', box.max[2]);modelMesh.setUniform('bottom', box.min[2]);this._transformRain(modelMesh);modelMesh.transparent = true;return modelMesh;} }, { key: \"_creatRainTexture\", value: function _creatRainTexture(rainTexture) {var _this27 = this;var rainImage = new Image();rainImage.src = this._rainTexture = rainTexture;return new Promise(function (resolve, reject) {rainImage.onload = function () {var rainMap = _this27._regl.texture({ mag: 'linear', min: 'linear mipmap nearest', wrapS: 'clamp', wrapT: 'clamp', data: rainImage });resolve(rainMap);};rainImage.onerror = function (err) {reject(err);};});} }, { key: \"paint\", value: function paint(context) {if (!this._scene) {return;}var rainConfig = this._getRainConfig();var uniforms = {};var map = this.getMap();uniforms['projMatrix'] = map.projMatrix;uniforms['viewMatrix'] = map.viewMatrix;uniforms['cameraPosition'] = map.cameraPosition;var speed = rainConfig.speed || 1.0;var time = this._timer.getElapsedTime() / (2 / speed) % 1;uniforms['time'] = time;this._mesh.material.set('diffuse', rainConfig.color || DEFAULT_COLOR);this._mesh.material.set('opacity', rainConfig.opacity || 1);this._transformRain(this._mesh);var fbo = context && context.renderTarget && context.renderTarget.fbo;this.renderer.render(this._shader, uniforms, this._scene, fbo);this._layer.getRenderer().setCanvasUpdated();} }, { key: \"_transformRain\", value: function _transformRain(mesh) {var map = this.getMap();var center = map.coordinateToPointAtRes(map.getCenter(), map.getGLRes());var ratio = map.getGLScale() / map.getGLScale(this._fixZoom);var v3 = _reshader.vec3.set(TEMP_SCALE$1, ratio, ratio, ratio);var scale = _reshader.vec3.multiply(v3, DEFALUT_SCALE$1, v3);var transformat = _reshader.mat4.identity(TEMP_MAT$1);var config = this._getRainConfig();var bearing = map.getBearing();_reshader.mat4.fromRotationTranslationScale(transformat, _reshader.quat.fromEuler(TEMP_ROTATE$1, config.windDirectionX || 0, config.windDirectionY || 0, -bearing + 90), [center.x, center.y, 0], scale);_reshader.mat4.multiply(transformat, transformat, Y_UP_TO_Z_UP$1);mesh.setLocalTransform(transformat);} }, { key: \"setToRedraw\", value: function setToRedraw() {var renderer = this._layer.getRenderer();if (!renderer) {return;}renderer.setToRedraw();} }, { key: \"update\", value: function update() {var _this28 = this;var rainConfig = this._getRainConfig();if (!rainConfig) {return;}if (!this._mesh) {this._createScene();}if (rainConfig.density !== this._rainDensity || rainConfig.rainWidth !== this._rainWidth || rainConfig.rainHeight !== this._rainHeight) {var rainMap = this._mesh.material.get('rainMap');this._mesh.geometry.dispose();this._mesh.dispose();this._scene.clear();this._mesh = this._createRain();this._mesh.material.set('rainMap', rainMap);this._scene.setMeshes(this._mesh);}if (rainConfig.rainTexture !== this._rainTexture) {this._creatRainTexture(rainConfig.rainTexture).then(function (rainMap) {_this28._mesh.material.set('rainMap', rainMap);});}} }, { key: \"dispose\", value: function dispose() {if (this._mesh) {this._mesh.geometry.dispose();if (this._mesh.material) {this._mesh.material.dispose();}this._mesh.dispose();delete this._mesh;}if (this._shader) {this._shader.dispose();delete this._shader;}} }, { key: \"isEnable\", value: function isEnable() {var config = this._getRainConfig();return config && config.enable;} }, { key: \"_getRainConfig\", value: function _getRainConfig() {var weatherConfig = this._layer.getWeatherConfig();return weatherConfig && weatherConfig.rain;} }, { key: \"_getFixExtent\", value: function _getFixExtent() {var map = this.getMap();var zoom = map.getZoom();var ratio = DEFAULT_ZOOM$2 - zoom;_reshader.vec3.scale(extent.min, DEFAULT_EXTENT.min, Math.pow(2, ratio));_reshader.vec3.scale(extent.max, DEFAULT_EXTENT.max, Math.pow(2, ratio));return extent;} }]);}();var Clock = function () {function Clock(autoStart) {_classCallCheck(this, Clock);this.autoStart = autoStart !== undefined ? autoStart : true;this.startTime = 0;this.oldTime = 0;this.elapsedTime = 0;this.running = false;}return _createClass(Clock, [{ key: \"start\", value: function start() {this.startTime = (typeof performance === 'undefined' ? Date : performance).now();this.oldTime = this.startTime;this.elapsedTime = 0;this.running = true;} }, { key: \"stop\", value: function stop() {this.getElapsedTime();this.running = false;this.autoStart = false;} }, { key: \"getElapsedTime\", value: function getElapsedTime() {this.getDelta();return this.elapsedTime;} }, { key: \"getDelta\", value: function getDelta() {var diff = 0;if (this.autoStart && !this.running) {this.start();return 0;}if (this.running) {var newTime = (typeof performance === 'undefined' ? Date : performance).now();diff = (newTime - this.oldTime) / 1000;this.oldTime = newTime;this.elapsedTime += diff;}return 0;} }]);}();var snowVert = \"#include \\nattribute vec3 aPosition;\\nattribute vec2 aTexCoord;\\nvarying vec2 vTexCoord;\\nuniform mat4 projMatrix;\\nuniform mat4 modelMatrix;\\nuniform mat4 modelViewMatrix;\\nuniform mat4 positionMatrix;\\n#include \\nvoid main()\\n{\\n mat4 localPositionMatrix = getPositionMatrix();\\n vec4 localPosition = getPosition(aPosition);\\n gl_Position = projMatrix * modelViewMatrix * localPositionMatrix * localPosition;\\n vTexCoord = aTexCoord;\\n}\";var snowFrag = \"#if __VERSION__ == 100\\n #ifdef GL_OES_standard_derivatives\\n #extension GL_OES_standard_derivatives : enable\\n #endif\\n#endif\\nprecision mediump float;\\n#include \\nprecision mediump float;\\nuniform sampler2D perlinTexture;\\nvarying vec2 vTexCoord;\\nfloat lerp(float a, float b, float w) {\\n return a + w * (b - a);\\n}\\nvoid main() {\\n float snowIntense = texture2D(perlinTexture, vTexCoord).r;\\n vec3 fixedC = vec3(1.0, 1.0, 1.0);\\n float r = lerp(0.5, fixedC.x, snowIntense);\\n float g = lerp(0.5, fixedC.y, snowIntense);\\n float b = lerp(0.5, fixedC.z, snowIntense);\\n glFragColor = vec4(r, g, b, 1.0);\\n #if __VERSION__ == 100\\n gl_FragColor = glFragColor;\\n #endif\\n}\";var modelViewMatrix = [];var DEFALUT_SCALE = [0.03, 0.03, 0.03];var TEMP_ROTATE = [],TEMP_SCALE = [],TEMP_MAT = [],DEFAULT_ZOOM$1 = 16.685648411389433;var Y_UP_TO_Z_UP = _reshader.mat4.fromRotationTranslation([], _reshader.quat.fromEuler([], 90, 0, 0), [0, 0, 0]);var SnowPainter = function () {function SnowPainter(regl, layer) {_classCallCheck(this, SnowPainter);this._regl = regl;this._layer = layer;this._init();}return _createClass(SnowPainter, [{ key: \"_init\", value: function _init() {var canvas = this._layer.getRenderer().canvas;var viewport = { x: 0, y: 0, width: function width() {return canvas.width;}, height: function height() {return canvas.height;} };this._shader = new reshader.MeshShader({ vert: snowVert, frag: snowFrag, uniforms: [{ name: 'modelViewMatrix', type: 'function', fn: function fn(context, props) {return _reshader.mat4.multiply(modelViewMatrix, props['viewMatrix'], props['modelMatrix']);} }], extraCommandProps: { viewport: viewport } });this._shader.version = 300;this._scene = new reshader.Scene();this._groundMask = this._createGroundMask();this._scene.setMeshes(this._groundMask);this.renderer = new reshader.Renderer(this._regl);var snowConfig = this._getSnowConfig();if (!snowConfig) {return;}if (!snowConfig.snowGroundTexture) {this._groundNormal = this._regl.texture({ width: 2, height: 2 });console.warn('should set snow ground texture.');} else {this._createSnowTexture(snowConfig.snowGroundTexture);}} }, { key: \"render\", value: function render(context) {if (this._groundNormal) {this._groundMask.material.set('perlinTexture', this._groundNormal);}var map = this._layer.getMap();this._transformMask(map);var uniforms = { projMatrix: map.projMatrix, viewMatrix: map.viewMatrix, cameraPosition: map.cameraPosition };var fbo = context && context.renderTarget && context.renderTarget.fbo;this.renderer.render(this._shader, uniforms, this._scene, fbo);this._layer.getRenderer().setCanvasUpdated();} }, { key: \"_transformMask\", value: function _transformMask(map) {var center = map.coordinateToPointAtRes(map.getCenter(), map.getGLRes());var ratio = map.getGLScale() / map.getGLScale(this._fixZoom);var v3 = _reshader.vec3.set(TEMP_SCALE, ratio, ratio, ratio);var scale = _reshader.vec3.multiply(v3, DEFALUT_SCALE, v3);var transformat = _reshader.mat4.identity(TEMP_MAT);_reshader.mat4.fromRotationTranslationScale(transformat, _reshader.quat.fromEuler(TEMP_ROTATE, 0, 0, 0), [center.x, center.y, 0.005], scale);_reshader.mat4.multiply(transformat, transformat, Y_UP_TO_Z_UP);this._groundMask.setLocalTransform(transformat);} }, { key: \"_createSnowTexture\", value: function _createSnowTexture(snowGroundTexture) {var _this29 = this;var image = new Image();image.onload = function () {_this29._groundNormal = _this29._regl.texture({ mag: 'linear', min: 'linear mipmap nearest', wrapS: 'repeat', wrapT: 'repeat', data: image });};image.onerror = function (err) {console.log(err);};image.src = this._snowGroundTexture = snowGroundTexture;} }, { key: \"_createGroundMask\", value: function _createGroundMask() {var map = this._layer.getMap();this._fixZoom = map.getZoom();var pos = Math.pow(2, DEFAULT_ZOOM$1 - this._fixZoom) * 16000;var vertices = [-pos, 0, -pos, pos, 0, -pos, -pos, 0, pos, pos, 0, pos];var normals = [0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0];var uvs = [0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0];var indices = [3, 1, 0, 0, 2, 3];var attributes = {};attributes['POSITION'] = vertices;attributes['NORMAL'] = normals;attributes['TEXCOORD_0'] = uvs;var geometry = new reshader.Geometry(attributes, indices, 0, { positionAttribute: 'POSITION', normalAttribute: 'NORMAL', uv0Attribute: 'TEXCOORD_0' });geometry.generateBuffers(this._regl);var material = new reshader.Material({ perlinTexture: this._regl.texture({ with: 2, height: 2 }) });var mesh = new reshader.Mesh(geometry, material);return mesh;} }, { key: \"getMeshes\", value: function getMeshes() {return this._groundMask;} }, { key: \"dispose\", value: function dispose() {if (this._groundMask) {this._groundMask.geometry.dispose();if (this._groundMask.material) {this._groundMask.material.dispose();}this._groundMask.dispose();delete this._groundMask;}if (this._shader) {this._shader.dispose();delete this._shader;}} }, { key: \"update\", value: function update() {var snowConfig = this._getSnowConfig();if (!snowConfig) {return;}if (snowConfig.snowGroundTexture === !this._snowGroundTexture) {this._createSnowTexture(snowConfig.snowGroundTexture);}} }, { key: \"isEnable\", value: function isEnable() {var config = this._getSnowConfig();return config && config.enable;} }, { key: \"_getSnowConfig\", value: function _getSnowConfig() {var weatherConfig = this._layer.getWeatherConfig();return weatherConfig && weatherConfig.snow;} }]);}();var RESOLUTION$2 = [],DEFAULT_ZOOM = 16.685648411389433;var WeatherPainter = function () {function WeatherPainter(regl, layer, config) {_classCallCheck(this, WeatherPainter);this._regl = regl;this._layer = layer;this._config = config;this._init();}return _createClass(WeatherPainter, [{ key: \"_init\", value: function _init() {this.renderer = new reshader.Renderer(this._regl);var layerRenderer = this._layer.getRenderer();var viewport = this._viewport = { x: 0, y: 0, width: function width() {return layerRenderer.canvas ? layerRenderer.canvas.width : 1;}, height: function height() {return layerRenderer.canvas ? layerRenderer.canvas.height : 1;} };this._width = viewport.width, this._height = viewport.height;this._fbo = this._regl.framebuffer({ color: this._regl.texture({ width: layerRenderer.canvas ? layerRenderer.canvas.width : 1, height: layerRenderer.canvas ? layerRenderer.canvas.height : 1, wrap: 'clamp', mag: 'linear', min: 'linear' }), depth: true });this.EMPTY_TEXTURE = this._regl.texture({ with: 2, height: 2 });this._rainPainter = new RainPainer(this._regl, this._layer);this._rainRipplesPass = new reshader.RainRipplesPass(this._regl, viewport);this._snowPainter = new SnowPainter(this._regl, this._layer);this._fogPass = new reshader.FogPass(this._regl, viewport, this._layer);this._weatherShader = new reshader.FogShader();this._weatherShader.version = 300;} }, { key: \"getMap\", value: function getMap() {return this._layer && this._layer.getMap();} }, { key: \"renderScene\", value: function renderScene(drawContext) {this.renderSnowMask(drawContext);this.renderRain(drawContext);} }, { key: \"renderRain\", value: function renderRain(drawContext) {if (!this.isEnableRain()) {return;}this._rainPainter.paint(drawContext);} }, { key: \"renderSnowMask\", value: function renderSnowMask(drawContext) {if (!this.isEnableSnow() || !this._showSnowGround()) {return;}var map = this.getMap();this._snowPainter.render(drawContext, map);} }, { key: \"paint\", value: function paint(tex, meshes) {if (!meshes || !meshes.length) {return tex;}this._resize();var config = this._layer.getWeatherConfig();var uniforms = {};if (this.isEnableRain()) {uniforms['ripplesMap'] = this._renderRainRipples();this._weatherShader.shaderDefines['HAS_RAIN'] = 1;} else {delete this._weatherShader.shaderDefines['HAS_RAIN'];}if (this.isEnableSnow()) {this._weatherShader.shaderDefines['HAS_SNOW'] = 1;uniforms['snowIntensity'] = reshader.Util.isNumber(config.snow.snowIntensity) ? config.snow.snowIntensity : 0.5;meshes.forEach(function (mesh) {mesh.defines['HAS_SNOW'] = 1;});} else {delete this._weatherShader.shaderDefines['HAS_SNOW'];meshes.forEach(function (mesh) {delete mesh.defines['HAS_SNOW'];});}if (this.isEnableFog()) {var fogConfig = config.fog;uniforms['fogColor'] = fogConfig.color || [0.9, 0.9, 0.9];this._weatherShader.shaderDefines['HAS_FOG'] = 1;} else {delete this._weatherShader.shaderDefines['HAS_FOG'];}this._weatherShader.setDefines(this._weatherShader.shaderDefines);uniforms['mixFactorMap'] = this._renderMixFactor(meshes) || this.EMPTY_TEXTURE;uniforms['sceneMap'] = tex;uniforms['time'] = this._getTimeSpan() / 1000;uniforms['resolution'] = _reshader.vec2.set(RESOLUTION$2, this._fbo.width, this._fbo.height);this.renderer.render(this._weatherShader, uniforms, null, this._fbo);this._renderMeshes = meshes;return this._fbo;} }, { key: \"_renderMixFactor\", value: function _renderMixFactor(meshes) {var options = {};var map = this.getMap();var zoom = map.getZoom();var ratio = Math.pow(2, DEFAULT_ZOOM - zoom);var config = this._layer.getWeatherConfig();var fogConfig = config.fog;if (!fogConfig || !fogConfig.enable) {return null;}var start = fogConfig.start || 0.1,end = fogConfig.end || 100;options['projMatrix'] = map.projMatrix;options['viewMatrix'] = map.viewMatrix;options['cameraPosition'] = map.cameraPosition;options['fogDist'] = [start * ratio, end * ratio];options['rainDepth'] = map.altitudeToPoint(config.rain && config.rain.rainDepth || 0.1, map.getGLRes());var mixFactorMap = this._fogPass.render(meshes, options);var layerRenderer = this._layer.getRenderer();return layerRenderer._getFBOColor(mixFactorMap);} }, { key: \"_renderRainRipples\", value: function _renderRainRipples() {var map = this.getMap();var weatherConfig = this._layer.getWeatherConfig();var rippleRadius = weatherConfig.rain.rippleRadius || 24;var options = {};options['projMatrix'] = map.projMatrix;options['viewMatrix'] = map.viewMatrix;options['time'] = this._getTimeSpan() / 1000;options['rippleRadius'] = rippleRadius;options['density'] = weatherConfig.rain.density || 2000;var ripplesMap = this._rainRipplesPass.render(map, options);return ripplesMap;} }, { key: \"_getTimeSpan\", value: function _getTimeSpan() {if (!this._layer) {return 0;}if (this._currentFrameTime === undefined) {this._currentFrameTime = 0;}if (this.isPlaying()) {var render = this._layer.getRenderer();this._currentFrameTime = render.getFrameTime();}return this._currentFrameTime;} }, { key: \"isEnable\", value: function isEnable() {var weatherConfig = this._layer.getWeatherConfig();return weatherConfig && weatherConfig.enable;} }, { key: \"isEnableRain\", value: function isEnableRain() {var weatherConfig = this._layer.getWeatherConfig();return weatherConfig && weatherConfig.enable && weatherConfig.rain && weatherConfig.rain.enable;} }, { key: \"isEnableFog\", value: function isEnableFog() {var weatherConfig = this._layer.getWeatherConfig();return weatherConfig && weatherConfig.enable && weatherConfig.fog && weatherConfig.fog.enable;} }, { key: \"isEnableSnow\", value: function isEnableSnow() {var weatherConfig = this._layer.getWeatherConfig();return weatherConfig && weatherConfig.enable && weatherConfig.snow && weatherConfig.snow.enable;} }, { key: \"_showSnowGround\", value: function _showSnowGround() {var weatherConfig = this._layer.getWeatherConfig();return this.isEnableSnow() && weatherConfig.snow.showGround === false;} }, { key: \"isPlaying\", value: function isPlaying() {var weatherConfig = this._layer.getWeatherConfig();if (weatherConfig) {if (weatherConfig.playing === false) {return false;}return true;}return false;} }, { key: \"_hasWeather\", value: function _hasWeather() {return this.isEnableRain() || this.isEnableFog() || this.isEnableSnow();} }, { key: \"update\", value: function update() {if (!this.isEnable() && this._renderMeshes) {this._renderMeshes.forEach(function (mesh) {delete mesh.defines['HAS_SNOW'];delete mesh.defines['HAS_RAIN'];delete mesh.defines['HAS_FOG'];});}if (this.isEnableRain()) {this._rainPainter = this._rainPainter || new RainPainer(this._regl, this._layer);this._rainPainter.update();}if (this.isEnableSnow()) {this._snowPainter = this._snowPainter || new SnowPainter(this._regl, this._layer);this._snowPainter.update();}} }, { key: \"getShadowMeshes\", value: function getShadowMeshes() {return this._snowPainter.getMeshes();} }, { key: \"_resize\", value: function _resize() {var width = this._width(),height = this._height();if (this._fbo && (this._fbo.width !== width || this._fbo.height !== height)) {this._fbo.resize(width, height);}} }, { key: \"dispose\", value: function dispose() {if (this._fbo) {this._fbo.destroy();}if (this._weatherShader) {this._weatherShader.dispose();delete this._weatherShader;}if (this._rainPainter) {this._rainPainter.dispose();delete this._rainPainter;}if (this._snowPainter) {this._snowPainter.dispose();delete this._snowPainter;}} }]);}();var RESOLUTION$1 = [];var bloomFilter = function bloomFilter(m) {return !!m.bloom;};var ssrFilter = function ssrFilter(m) {return !!m.ssr;};var PostProcess = function () {function PostProcess(regl, layer) {_classCallCheck(this, PostProcess);this._regl = regl;this._layer = layer;this._renderer = new reshader.Renderer(regl);this._fxaaShader = new reshader.FxaaShader();this._copyShader = new reshader.CopyShader();this._ssrPass = new reshader.SsrPass(this._regl);}return _createClass(PostProcess, [{ key: \"setContextIncludes\", value: function setContextIncludes() {} }, { key: \"bloom\", value: function bloom(curTex, noAaTex, pointTex, threshold, bloomFactor, bloomRadius, enableAA) {if (!this._bloomPass) {this._bloomPass = new reshader.BloomPass(this._regl);}var renderer = this._layer.getRenderer();var bloomTex = renderer._getFBOColor(this._bloomFBO);return this._bloomPass.render(curTex, bloomTex, threshold, bloomFactor, bloomRadius, noAaTex, pointTex, enableAA);} }, { key: \"drawBloom\", value: function drawBloom(depthTex) {var layerRenderer = this._layer.getRenderer();var regl = this._regl;var bloomFBO = this._bloomFBO;if (!bloomFBO) {var info = this._createFBOInfo(depthTex);this._bloomFBO = regl.framebuffer(info);} else {var width = depthTex.width,height = depthTex.height;if (bloomFBO.width !== width || bloomFBO.height !== height) {bloomFBO.resize(width, height);}regl.clear({ color: [0, 0, 0, 0], framebuffer: bloomFBO });}var timestamp = layerRenderer.getFrameTime();var event = layerRenderer.getFrameEvent();var context = layerRenderer.getFrameContext();var renderMode = context.renderMode;var sceneFilter = context.sceneFilter;var renderTarget = context.renderTarget;context.isPostProcess = true;context.renderMode = 'default';context['sceneFilter'] = bloomFilter;context.renderTarget = { fbo: this._bloomFBO, getFramebuffer: getFramebuffer$1, getDepthTexture: getDepthTexture$1 };var fGL = layerRenderer.glCtx;fGL.resetDrawCalls();if (event) {layerRenderer.forEachRenderer(function (renderer) {layerRenderer.clearStencil(renderer, bloomFBO);renderer.drawOnInteracting(event, timestamp, context);});} else {layerRenderer.forEachRenderer(function (renderer) {layerRenderer.clearStencil(renderer, bloomFBO);renderer.draw(timestamp, context);});}delete context.isPostProcess;context.renderMode = renderMode;context.sceneFilter = sceneFilter;context.renderTarget = renderTarget;return fGL.getDrawCalls();} }, { key: \"genSsrMipmap\", value: function genSsrMipmap(tex, depthTex) {var projViewMatrix = this._layer.getMap().projViewMatrix;this._ssrPass.genMipMap(tex, depthTex, projViewMatrix);} }, { key: \"getPrevSsrProjViewMatrix\", value: function getPrevSsrProjViewMatrix() {return this._ssrPass && this._ssrPass.getPrevProjViewMatrix();} }, { key: \"drawSSR\", value: function drawSSR(depthTex, fbo, isCopyDepth) {if (isCopyDepth) {this._ssrPass.copyDepthTex(depthTex);}var layerRenderer = this._layer.getRenderer();var timestamp = layerRenderer.getFrameTime();var event = layerRenderer.getFrameEvent();var context = layerRenderer.getFrameContext();context.isPostProcess = true;context.ssr = this.getSSRContext();var renderMode = context.renderMode;var filter = context['sceneFilter'];context.renderMode = 'default';context['sceneFilter'] = ssrFilter;context.renderTarget.fbo = fbo;var fGL = layerRenderer.glCtx;var cleared = false;if (event) {layerRenderer.forEachRenderer(function (renderer) {layerRenderer.clearStencil(renderer, fbo);if (!cleared) {fGL.resetDrawCalls();cleared = true;}renderer.drawOnInteracting(event, timestamp, context);});} else {layerRenderer.forEachRenderer(function (renderer) {layerRenderer.clearStencil(renderer, fbo);if (!cleared) {fGL.resetDrawCalls();cleared = true;}renderer.draw(timestamp, context);});}var groundPainted = layerRenderer.drawGround();delete context.ssr;delete context.isPostProcess;context.renderMode = renderMode;context['sceneFilter'] = filter;this._ssrPainted = fGL.getDrawCalls() > 0;return groundPainted;} }, { key: \"getSSRUniforms\", value: function getSSRUniforms() {var sceneConfig = this._layer._getSceneConfig();var config = sceneConfig && sceneConfig.postProcess;var map = this._layer.getMap();return this._ssrPass.getSSRUniforms(map, config.ssr.factor, config.ssr.quality);} }, { key: \"getSSRContext\", value: function getSSRContext() {var sceneConfig = this._layer._getSceneConfig();var config = sceneConfig && sceneConfig.postProcess;var map = this._layer.getMap();var uniforms = this._ssrPass.getSSRUniforms(map, config.ssr.factor, config.ssr.quality);if (!uniforms) {return null;}var context = { renderUniforms: uniforms, defines: { 'HAS_SSR': 1 } };return context;} }, { key: \"fxaa\", value: function fxaa(fbo, source, enableFXAA, enableToneMapping, enableSharpen, pixelRatio, sharpFactor, textureOutline, highlightFactor, outlineFactor, outlineWidth, outlineColor) {if (fbo && (fbo.width !== source.fbo || fbo.height !== source.height)) {fbo.resize(source.width, source.height);}var shaderDefines = {};if (textureOutline) {shaderDefines['HAS_OUTLINE_TEX'] = 1;} else {delete shaderDefines['HAS_OUTLINE_TEX'];}this._fxaaShader.setDefines(shaderDefines);this._renderer.render(this._fxaaShader, { textureSource: source, resolution: _reshader.vec2.set(RESOLUTION$1, source.width, source.height), enableFXAA: enableFXAA, enableToneMapping: enableToneMapping, enableSharpen: enableSharpen, pixelRatio: pixelRatio, sharpFactor: sharpFactor, textureOutline: textureOutline, highlightFactor: highlightFactor, outlineFactor: outlineFactor, outlineWidth: outlineWidth, outlineColor: outlineColor }, null, fbo);} }, { key: \"renderFBOToScreen\", value: function renderFBOToScreen(fbo, enableSharpen, sharpFactor, pixelRatio) {if (!this._copyFBOSize) {this._copyFBOSize = [];}this._copyFBOSize[0] = fbo.width;this._copyFBOSize[1] = fbo.height;var renderer = this._layer.getRenderer();this._renderer.render(this._copyShader, { texture: fbo.color && renderer._getFBOColor(fbo) || fbo, size: this._copyFBOSize, enableSharpen: +!!enableSharpen, sharpFactor: sharpFactor, pixelRatio: pixelRatio });} }, { key: \"postprocess\", value: function postprocess(fbo, uniforms, src) {if (!this._postProcessShader) {this._postProcessShader = new reshader.PostProcessShader();}var renderer = this._layer && this._layer.getRenderer();var source = src || renderer._getFBOColor(fbo);uniforms['resolution'] = _reshader.vec2.set(RESOLUTION$1, source.width, source.height);uniforms['textureSource'] = source;uniforms['timeGrain'] = performance.now();this._renderer.render(this._postProcessShader, uniforms);return this._target;} }, { key: \"dispose\", value: function dispose() {if (this._bloomFBO) {this._bloomFBO.destroy();delete this._bloomFBO;}if (this._bloomPass) {this._bloomPass.dispose();delete this._bloomPass;}if (this._postProcessShader) {this._postProcessShader.dispose();delete this._postProcessShader;}if (this._fxaaShader) {this._fxaaShader.dispose();delete this._fxaaShader;}if (this._copyShader) {this._copyShader.dispose();delete this._copyShader;}} }, { key: \"_createFBOInfo\", value: function _createFBOInfo(depthTex, colorFormat) {var _this$_layer$getRende = this._layer.getRenderer().canvas,width = _this$_layer$getRende.width,height = _this$_layer$getRende.height;var regl = this._regl;var renderer = this._layer.getRenderer();var color;if (renderer._isUseMultiSample()) {color = regl.renderbuffer({ width: width, height: height, samples: this._layer.options['multiSamples'], format: 'rgba8' });} else {color = regl.texture({ min: 'nearest', mag: 'nearest', format: colorFormat || 'rgba', width: width, height: height });}var fboInfo = { width: width, height: height, colors: [color] };if (depthTex) {fboInfo.depthStencil = depthTex;}return fboInfo;} }]);}();function getFramebuffer$1(fbo) {return fbo['_framebuffer'].framebuffer;}function getDepthTexture$1(fbo) {return fbo.depthStencil._texture.texture;}var vert$1 = \"#if __VERSION__ == 300\\n\\t#define attribute in\\n\\t#define varying out\\n#endif\\nattribute vec2 aPosition;\\nattribute vec2 aTexCoord;\\nvarying vec2 vTexCoord;\\nvoid main()\\n{\\n gl_Position = vec4(aPosition, 0., 1.);\\n vTexCoord = aTexCoord;\\n}\";var frag$1 = \"#if __VERSION__ == 100\\n #ifdef GL_OES_standard_derivatives\\n #extension GL_OES_standard_derivatives : enable\\n #endif\\n#endif\\nprecision mediump float;\\n#include \\nvarying vec2 vTexCoord;\\n#ifdef HAS_FLOODANALYSE\\n uniform vec3 flood_waterColor;\\n uniform float flood_waterOpacity;\\n uniform sampler2D floodMap;\\n#endif\\n#ifdef HAS_SKYLINE\\n uniform sampler2D skylineMap;\\n#endif\\n#ifdef HAS_VIEWSHED\\n uniform vec4 viewshed_visibleColor;\\n uniform vec4 viewshed_invisibleColor;\\n uniform sampler2D viewshedMap;\\n#endif\\n#ifdef HAS_INSIGHT\\n uniform vec4 insight_visibleColor;\\n uniform vec4 insight_invisibleColor;\\n uniform sampler2D insightMap;\\n#endif\\n#ifdef HAS_CUT\\n uniform sampler2D meshesMap;\\n uniform sampler2D invisibleMap;\\n#endif\\n#ifdef HAS_EXCAVATE\\n uniform sampler2D excavateMap;\\n#endif\\n#ifdef HAS_CROSSCUT\\n uniform sampler2D crosscutMap;\\n uniform vec4 cutLineColor;\\n#endif\\n#ifdef HAS_HEIGHTLIMIT\\n uniform vec3 limitColor;\\n uniform sampler2D heightLimitMap;\\n#endif\\nuniform sampler2D sceneMap;\\nvoid main() {\\n vec4 sceneColor = texture2D(sceneMap, vTexCoord);\\n glFragColor = sceneColor;\\n #ifdef HAS_VIEWSHED\\n vec4 viewshedColor = texture2D(viewshedMap, vTexCoord);\\n if (viewshedColor.r > 0.99) {\\n glFragColor = vec4(mix(viewshed_invisibleColor.rgb, sceneColor.rgb, viewshed_invisibleColor.a), sceneColor.a);\\n } else if (viewshedColor.g > 0.99) {\\n glFragColor = vec4(mix(viewshed_visibleColor.rgb, sceneColor.rgb, viewshed_visibleColor.a), sceneColor.a);\\n } else if (viewshedColor.a < 0.01) {\\n glFragColor = vec4(viewshedColor.rgb, 1.0);\\n }\\n #endif\\n #ifdef HAS_FLOODANALYSE\\n vec4 floodColor = texture2D(floodMap, vTexCoord);\\n if (floodColor.r > 0.0) {\\n glFragColor = vec4(mix(glFragColor.rgb, flood_waterColor, flood_waterOpacity), glFragColor.a);\\n }\\n #endif\\n #ifdef HAS_SKYLINE\\n vec4 skylineColor = texture2D(skylineMap, vTexCoord);\\n if (skylineColor.r > 0.0 || skylineColor.g > 0.0 || skylineColor.b > 0.0) {\\n glFragColor = skylineColor;\\n }\\n #endif\\n #ifdef HAS_INSIGHT\\n vec4 insightColor = texture2D(insightMap, vTexCoord);\\n if (insightColor.g > 0.0) {\\n glFragColor = insight_visibleColor;\\n } else if (insightColor.r > 0.0) {\\n glFragColor = insight_invisibleColor;\\n }\\n #endif\\n #ifdef HAS_CUT\\n vec4 cutColor = texture2D(invisibleMap, vTexCoord);\\n vec4 meshesMapColor = texture2D(meshesMap, vTexCoord);\\n if (cutColor.r == 1.0 && cutColor.g == 0.0 && cutColor.b == 0.0) {\\n glFragColor = meshesMapColor;\\n } else if (cutColor.r == 0.0 && cutColor.g == 1.0 && cutColor.b == 0.0) {\\n glFragColor = meshesMapColor;\\n } else if (cutColor.r == 0.0 && cutColor.g == 0.0 && cutColor.b == 1.0) {\\n glFragColor = sceneColor;\\n }\\n #endif\\n #ifdef HAS_EXCAVATE\\n vec4 excavateColor = texture2D(excavateMap, vTexCoord);\\n if (excavateColor.r == 1.0 && excavateColor.g == 0.0 && excavateColor.b == 0.0) {\\n glFragColor = sceneColor;\\n } else {\\n glFragColor = excavateColor;\\n }\\n #endif\\n #ifdef HAS_CROSSCUT\\n vec4 crosscutColor = texture2D(crosscutMap, vTexCoord);\\n if (crosscutColor.r > 0.0) {\\n glFragColor = vec4(mix(cutLineColor.rgb, glFragColor.rgb, 0.99), glFragColor.a);\\n }\\n #endif\\n #ifdef HAS_HEIGHTLIMIT\\n vec4 heightLimitColor = texture2D(heightLimitMap, vTexCoord);\\n if (heightLimitColor.r > 0.0) {\\n glFragColor = vec4(mix(limitColor, glFragColor.rgb, 0.6), glFragColor.a);\\n }\\n #endif\\n #if __VERSION__ == 100\\n gl_FragColor = glFragColor;\\n #endif\\n}\";var AnalysisShader = function (_reshader$QuadShader) {function AnalysisShader(viewport) {_classCallCheck(this, AnalysisShader);return _callSuper(this, AnalysisShader, [{ vert: vert$1, frag: frag$1, extraCommandProps: { viewport: viewport, cull: { enable: true }, blend: { enable: true, func: { srcRGB: 'src alpha', srcAlpha: 1, dstRGB: 'one minus src alpha', dstAlpha: 'one minus src alpha' }, equation: 'add' } } }]);}_inherits(AnalysisShader, _reshader$QuadShader);return _createClass(AnalysisShader);}(reshader.QuadShader);var AnalysisPainter = function () {function AnalysisPainter(regl, layer, config) {_classCallCheck(this, AnalysisPainter);this._regl = regl;this._layer = layer;this._config = config;this._init();}return _createClass(AnalysisPainter, [{ key: \"_init\", value: function _init() {this.renderer = new reshader.Renderer(this._regl);var layerRenderer = this._layer.getRenderer();var viewport = this._viewport = { x: 0, y: 0, width: function width() {return layerRenderer.canvas ? layerRenderer.canvas.width : 1;}, height: function height() {return layerRenderer.canvas ? layerRenderer.canvas.height : 1;} };this._fbo = this._regl.framebuffer({ color: this._regl.texture({ width: layerRenderer.canvas ? layerRenderer.canvas.width : 1, height: layerRenderer.canvas ? layerRenderer.canvas.height : 1, wrap: 'clamp', mag: 'linear', min: 'linear' }), depth: true });this._shader = new AnalysisShader(viewport);} }, { key: \"getMap\", value: function getMap() {return this._layer && this._layer.getMap();} }, { key: \"paint\", value: function paint(tex, layers) {if (!layers && layers.length) {return tex;}this._resize();var uniforms = {};var analysisTaskList = this._layer._analysisTaskList;if (!this._hasAnalysis()) {return tex;}this._regl.clear({ color: [0, 0, 0, 0], depth: 1, stencil: 0, framebuffer: this._fbo });delete this._shader.shaderDefines['HAS_FLOODANALYSE'];delete this._shader.shaderDefines['HAS_VIEWSHED'];delete this._shader.shaderDefines['HAS_SKYLINE'];delete this._shader.shaderDefines['HAS_INSIGHT'];delete this._shader.shaderDefines['HAS_CUT'];delete this._shader.shaderDefines['HAS_CROSSCUT'];delete this._shader.shaderDefines['HAS_HEIGHTLIMIT'];for (var _i18 = 0; _i18 < analysisTaskList.length; _i18++) {var task = analysisTaskList[_i18];if (!task.isEnable()) {continue;}var defines = task.getDefines();extend(this._shader.shaderDefines, defines);var map = this.getMap();var width = map.width,height = map.height;var toAanalysisMeshes = this._getToAnalysisMeshes(layers, task.getExcludeLayers());var analysisUniforms = task.renderAnalysis(toAanalysisMeshes, width, height);if (analysisUniforms) {extend(uniforms, analysisUniforms);}}uniforms['sceneMap'] = tex;this._shader.setDefines(this._shader.shaderDefines);this.renderer.render(this._shader, uniforms, null, this._fbo);return this._fbo;} }, { key: \"_getToAnalysisMeshes\", value: function _getToAnalysisMeshes(layers, excludeLayers) {var toAnalysisMeshes = [];for (var _i19 = 0; _i19 < layers.length; _i19++) {if (excludeLayers.indexOf(layers[_i19].getId()) > -1) {continue;}var renderder = layers[_i19].getRenderer();if (renderder && renderder.getAnalysisMeshes) {var meshes = renderder.getAnalysisMeshes();meshes.forEach(function (mesh) {mesh.setUniform('useAnalysis', 1);});toAnalysisMeshes = toAnalysisMeshes.concat(meshes);}}return toAnalysisMeshes;} }, { key: \"_resize\", value: function _resize() {var width = _maptalks.Util.isFunction(this._viewport.width.data) ? this._viewport.width.data() : this._viewport.width;var height = _maptalks.Util.isFunction(this._viewport.height.data) ? this._viewport.height.data() : this._viewport.height;if (this._fbo && (this._fbo.width !== width || this._fbo.height !== height)) {this._fbo.resize(width, height);}} }, { key: \"_hasAnalysis\", value: function _hasAnalysis() {var tasks = this._layer && this._layer._analysisTaskList;if (!tasks) {return false;}for (var _i20 = 0; _i20 < tasks.length; _i20++) {if (tasks[_i20].isEnable()) {return true;}}return false;} }]);}();var RESOLUTION = [];var TEMP_COORD$1 = new maptalks.Coordinate(0, 0);var EMPTY_MAT3_MAP = {};var ScanEffectPainter = function () {function ScanEffectPainter(regl, layer) {_classCallCheck(this, ScanEffectPainter);this._regl = regl;this._layer = layer;this._init();}return _createClass(ScanEffectPainter, [{ key: \"_init\", value: function _init() {this.renderer = new reshader.Renderer(this._regl);var layerRenderer = this._layer.getRenderer();var viewport = this._viewport = { x: 0, y: 0, width: function width() {return layerRenderer.canvas ? layerRenderer.canvas.width : 1;}, height: function height() {return layerRenderer.canvas ? layerRenderer.canvas.height : 1;} };this._width = viewport.width, this._height = viewport.height;this._fbo = this._regl.framebuffer({ color: this._regl.texture({ width: layerRenderer.canvas ? layerRenderer.canvas.width : 1, height: layerRenderer.canvas ? layerRenderer.canvas.height : 1, wrap: 'clamp', mag: 'linear', min: 'linear' }), depth: true });this.EMPTY_TEXTURE = this._regl.texture({ with: 2, height: 2 });this._shader = new reshader.ScanEffectShader();this._pass = new reshader.ScanEffectPass(this._regl, viewport, this._layer);this._shader.version = 300;} }, { key: \"getMap\", value: function getMap() {return this._layer && this._layer.getMap();} }, { key: \"paint\", value: function paint(tex, meshes) {if (!meshes || !meshes.length) {return tex;}var map = this._layer.getMap();this._resize();var config = this._layer.getScanEffectConfig();var uniforms = {};var effects = config.effects;var glRes = map.getGLRes();var effectInfos = [];if (this._effectLength !== effects.length) {EMPTY_MAT3_MAP = {};}for (var _i21 = 0; _i21 < effects.length; _i21++) {var _effects$_i = effects[_i21],center = _effects$_i.center,radius = _effects$_i.radius,speed = _effects$_i.speed,_color = _effects$_i.color,direction = _effects$_i.direction,height = _effects$_i.height;var coord = toCoordinate(center);var effectCenter = map.coordinateToPointAtRes(coord, glRes, TEMP_COORD$1).toArray();var effectRadius = map.distanceToPointAtRes(radius, 0, glRes).x;var dir = direction === 'vertical' ? 1 : 0;var h = map.altitudeToPoint(height || 0, glRes);EMPTY_MAT3_MAP[_i21] = EMPTY_MAT3_MAP[_i21] || [];var effectInfo = reshader.mat3.set(EMPTY_MAT3_MAP[_i21], effectCenter[0], effectCenter[1], effectRadius, speed, _color[0], _color[1], _color[2], dir, h);effectInfos.push(effectInfo);}var options = { projMatrix: map.projMatrix, viewMatrix: map.viewMatrix, effectInfos: effectInfos, effectTime: this._getTimeSpan() / 1000 };var layerRenderer = this._layer.getRenderer();var fbo = this._pass.render(meshes, options) || this.EMPTY_TEXTURE;uniforms['scanEffectMap'] = layerRenderer._getFBOColor(fbo);uniforms['sceneMap'] = tex;uniforms['resolution'] = reshader.vec2.set(RESOLUTION, this._fbo.width, this._fbo.height);this.renderer.render(this._shader, uniforms, null, this._fbo);return this._fbo;} }, { key: \"_getTimeSpan\", value: function _getTimeSpan() {if (!this._layer) {return 0;}if (this._currentFrameTime === undefined) {this._currentFrameTime = 0;}if (this.isPlaying()) {var render = this._layer.getRenderer();this._currentFrameTime = render.getFrameTime();}return this._currentFrameTime;} }, { key: \"isPlaying\", value: function isPlaying() {var config = this._layer.getScanEffectConfig();if (config) {if (config.playing === false) {return false;}return true;}return false;} }, { key: \"_resize\", value: function _resize() {var width = this._width(),height = this._height();if (this._fbo && (this._fbo.width !== width || this._fbo.height !== height)) {this._fbo.resize(width, height);}} }, { key: \"dispose\", value: function dispose() {if (this._fbo) {this._fbo.destroy();}if (this._shader) {this._shader.dispose();delete this._shader;}if (this._pass) {this._pass.dispose();}} }]);}();function toCoordinate(center) {if (Array.isArray(center)) {TEMP_COORD$1.x = center[0];TEMP_COORD$1.y = center[1];return TEMP_COORD$1;}return center;}var EMPTY_COLOR$1 = [0, 0, 0, 0];var DEFAULT_LIGHT_DIRECTION = [1, 1, -1];var MIN_SSR_PITCH = -0.001;var NO_JITTER = [0, 0];var noPostFilter = function noPostFilter(m) {return !m.bloom && !m.ssr;};var noBloomFilter = function noBloomFilter(m) {return !m.bloom;};var noSsrFilter = function noSsrFilter(m) {return !m.ssr;};var SSR_STATIC = 1;var SSR_IN_ONE_FRAME = 2;var GroupGLLayerRenderer = function (_maptalks$renderer$Ca) {function GroupGLLayerRenderer() {_classCallCheck(this, GroupGLLayerRenderer);return _callSuper(this, GroupGLLayerRenderer, arguments);}_inherits(GroupGLLayerRenderer, _maptalks$renderer$Ca);return _createClass(GroupGLLayerRenderer, [{ key: \"setToRedraw\", value: function setToRedraw() {this.setRetireFrames();_superPropGet(GroupGLLayerRenderer, \"setToRedraw\", this, 3)([]);} }, { key: \"onAdd\", value: function onAdd() {_superPropGet(GroupGLLayerRenderer, \"onAdd\", this, 3)([]);this.prepareCanvas();} }, { key: \"updateSceneConfig\", value: function updateSceneConfig() {if (this._groundPainter) {this._groundPainter.update();}if (this._envPainter) {this._envPainter.update();}if (this._weatherPainter) {this._weatherPainter.update();}this.setToRedraw();} }, { key: \"render\", value: function render() {var _this30 = this;if (!this.getMap() || !this.layer.isVisible()) {return;}this.forEachRenderer(function (renderer) {if (renderer['_replacedDrawFn']) {return;}renderer.draw = _this30._buildDrawFn(renderer.draw);renderer.drawOnInteracting = _this30._buildDrawOnInteractingFn(renderer.drawOnInteracting);renderer.setToRedraw = _this30._buildSetToRedrawFn(renderer.setToRedraw);renderer['_replacedDrawFn'] = true;});this.prepareRender();this.prepareCanvas();this.layer._updatePolygonOffset();this['_toRedraw'] = false;for (var _len2 = arguments.length, args = new Array(_len2), _key4 = 0; _key4 < _len2; _key4++) {args[_key4] = arguments[_key4];}this._renderChildLayers('render', args);this._renderOutlines();this._postProcess();} }, { key: \"prepareCanvas\", value: function prepareCanvas() {_superPropGet(GroupGLLayerRenderer, \"prepareCanvas\", this, 3)([]);this.forEachRenderer(function (renderer) {renderer.prepareCanvas();});} }, { key: \"drawOnInteracting\", value: function drawOnInteracting() {if (!this.getMap() || !this.layer.isVisible()) {return;}this.layer._updatePolygonOffset();this['_toRedraw'] = false;for (var _len3 = arguments.length, args = new Array(_len3), _key5 = 0; _key5 < _len3; _key5++) {args[_key5] = arguments[_key5];}this._renderChildLayers('drawOnInteracting', args);this._renderOutlines();this._postProcess();} }, { key: \"_renderChildLayers\", value: function _renderChildLayers(methodName, args) {this._renderMode = 'default';var hasRenderTarget = this.hasRenderTarget();var drawContext = this._getDrawContext(args);if (hasRenderTarget) {this._drawContext.renderTarget = this._getFramebufferTarget();}this._envPainter.paint(drawContext);this.drawGround(true);if (!hasRenderTarget) {this._renderInMode('default', null, methodName, args, true);return;}var fGL = this.glCtx;var sceneConfig = this.layer._getSceneConfig();var config = sceneConfig && sceneConfig.postProcess;var ssrMode = this.isSSROn();drawContext.jitter = NO_JITTER;var groundConfig = this.layer.getGroundConfig();drawContext.hasSSRGround = !!(ssrMode && groundConfig && groundConfig.enable && groundConfig.symbol && groundConfig.symbol.ssr);fGL.resetDrawCalls();this._renderInMode('default', this._targetFBO, methodName, args);if (ssrMode) {this._postProcessor.drawSSR(this._blitDepthTex(), this._targetFBO);}var enableBloom = config.bloom && config.bloom.enable;if (enableBloom) {this._bloomPainted = this._postProcessor.drawBloom(this._depthTex);}if (ssrMode === SSR_IN_ONE_FRAME) {this._postProcessor.drawSSR(this._blitDepthTex(), this._targetFBO, true);}fGL.resetDrawCalls();this._weatherPainter.renderScene(drawContext);this._pointDrawCount = fGL.getDrawCalls();} }, { key: \"_renderInMode\", value: function _renderInMode(mode, fbo, methodName, args, isFinalRender) {var _this31 = this;this._renderMode = mode;var drawContext = this._getDrawContext(args);drawContext.renderMode = this._renderMode;if (drawContext.renderTarget) {drawContext.renderTarget.fbo = fbo;}if (isFinalRender) {drawContext.isFinalRender = true;}this.forEachRenderer(function (renderer, layer) {if (!layer.isVisible()) {return;}_this31.clearStencil(renderer, fbo);renderer[methodName].apply(renderer, args);});} }, { key: \"_getDrawContext\", value: function _getDrawContext(args) {var _this32 = this;var timestamp = args[0];if (!isNumber(timestamp)) {timestamp = args[1];}if (timestamp !== this._contextFrameTime) {this.forEachRenderer(function (renderer, layer) {if (!layer.isVisible()) {return;}if (renderer.needRetireFrames && renderer.needRetireFrames()) {_this32.setRetireFrames();}});this._drawContext = this._prepareDrawContext(timestamp);this._contextFrameTime = timestamp;this._frameEvent = isNumber(args[0]) ? null : args[0];}return this._drawContext;} }, { key: \"_renderOutlines\", value: function _renderOutlines() {if (!this.isEnableOutline()) {return;}var fbo = this._getOutlineFBO();var fGl = this.glCtx;fGl.resetDrawCalls();this.forEachRenderer(function (renderer, layer) {if (!layer.isVisible()) {return;}if (renderer.drawOutline) {renderer.drawOutline(fbo);}});this._outlineCounts = fGl.getDrawCalls();} }, { key: \"_getOutlineFBO\", value: function _getOutlineFBO() {var _this$canvas = this.canvas,width = _this$canvas.width,height = _this$canvas.height;var fbo = this._outlineFBO;if (!fbo) {var outlineTex = this.regl.texture({ width: width, height: height, format: 'rgba4' });fbo = this._outlineFBO = this.regl.framebuffer({ width: width, height: height, colors: [outlineTex], depth: false, stencil: false });} else if (width !== fbo.width || height !== fbo.height) {fbo.resize(width, height);}return fbo;} }, { key: \"_getFBOColor\", value: function _getFBOColor(fbo) {if (this._isUseMultiSample()) {var blitFBO = this._getBlitFBO(fbo);if (blitFBO.width !== fbo.width || blitFBO.height !== fbo.height) {blitFBO.resize(fbo.width, fbo.height);} else {this.regl.clear({ color: [0, 0, 0, 0], fbo: blitFBO });}blitFBO.blit(fbo);return blitFBO.color[0];} else {return fbo.color[0];}} }, { key: \"_blitDepthTex\", value: function _blitDepthTex() {if (this._depthTex.subimage) {return this._depthTex;}var _this$_depthTex = this._depthTex,width = _this$_depthTex.width,height = _this$_depthTex.height;if (!this._blitDepthFBO) {var _regl = this.regl;var depthStencilTexture = _regl.texture({ min: 'nearest', mag: 'nearest', mipmap: false, type: 'depth stencil', width: width, height: height, format: 'depth stencil' });var rb = _regl.renderbuffer({ width: width, height: height, format: 'rgba4' });var info = { depthStencil: depthStencilTexture, colors: [rb], colorFormat: 'rgba4', width: width, height: height };this._blitDepthFBO = _regl.framebuffer(info);}if (this._blitDepthFBO.width !== width || this._blitDepthFBO.height !== height) {this._blitDepthFBO.resize(width, height);}this.regl.clear({ color: [0, 0, 0, 0], depth: 1, fbo: this._blitDepthFBO });this._blitDepthFBO.blit(this._targetFBO, 0x00000100, 'nearest');return this._blitDepthFBO.depthStencil;} }, { key: \"_getBlitFBO\", value: function _getBlitFBO(fbo) {if (!this._blitFBOs) {this._blitFBOs = [];}if (!fbo._blitFBO) {var info = this._createSimpleFBOInfo(true, fbo.width, fbo.height);var blitFbo = this.regl.framebuffer(info);this._blitFBOs.push(blitFbo);fbo._blitFBO = blitFbo;}return fbo._blitFBO;} }, { key: \"_isUseMultiSample\", value: function _isUseMultiSample() {var regl = this.regl;var isWebGL2 = regl.limits['version'].indexOf('WebGL 2.0') === 0;return isWebGL2 && this.layer.options.antialias;} }, { key: \"hasRenderTarget\", value: function hasRenderTarget() {var sceneConfig = this.layer._getSceneConfig();var config = sceneConfig && sceneConfig.postProcess;if (!config || !config.enable) {return false;}return true;} }, { key: \"testIfNeedRedraw\", value: function testIfNeedRedraw() {if (this.layer.options['forceRedrawPerFrame']) {return true;}if (this['_toRedraw']) {this['_toRedraw'] = false;return true;}var map = this.getMap();if (map.isInteracting() && (this._groundPainter && this._groundPainter.isEnable() || this._envPainter && this._envPainter.isEnable())) {return true;}if (this._weatherPainter && this._weatherPainter.isEnable()) {return true;}if (this.isEnableScanEffect()) {return true;}var terrainLayer = this.layer.getTerrainLayer();if (terrainLayer) {var _renderer = terrainLayer.getRenderer();if (_renderer && _renderer.testIfNeedRedraw()) {this._needUpdateSSR = true;return true;}}var layers = this._getLayers();var _iterator = _createForOfIteratorHelper(layers),_step;try {for (_iterator.s(); !(_step = _iterator.n()).done;) {var layer = _step.value;if (!layer) {continue;}var _renderer2 = layer.getRenderer();if (_renderer2 && _renderer2.testIfNeedRedraw()) {this._needUpdateSSR = true;return true;}}} catch (err) {_iterator.e(err);} finally {_iterator.f();}return false;} }, { key: \"isRenderComplete\", value: function isRenderComplete() {var layers = this._getLayers();var _iterator2 = _createForOfIteratorHelper(layers),_step2;try {for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {var layer = _step2.value;var _renderer3 = layer.getRenderer();if (_renderer3 && !_renderer3.isRenderComplete()) {return false;}}} catch (err) {_iterator2.e(err);} finally {_iterator2.f();}return true;} }, { key: \"mustRenderOnInteracting\", value: function mustRenderOnInteracting() {var layers = this._getLayers();var _iterator3 = _createForOfIteratorHelper(layers),_step3;try {for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {var layer = _step3.value;var _renderer4 = layer.getRenderer();if (_renderer4 && _renderer4.mustRenderOnInteracting()) {return true;}}} catch (err) {_iterator3.e(err);} finally {_iterator3.f();}return false;} }, { key: \"isCanvasUpdated\", value: function isCanvasUpdated() {if (_superPropGet(GroupGLLayerRenderer, \"isCanvasUpdated\", this, 3)([])) {return true;}var layers = this._getLayers();var _iterator4 = _createForOfIteratorHelper(layers),_step4;try {for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {var layer = _step4.value;var _renderer5 = layer.getRenderer();if (_renderer5 && _renderer5.isCanvasUpdated()) {return true;}}} catch (err) {_iterator4.e(err);} finally {_iterator4.f();}return false;} }, { key: \"isBlank\", value: function isBlank() {if (this._groundPainter && this._groundPainter.isEnable()) {return false;}if (this._envPainter && this._envPainter.isEnable()) {return false;}var terrainLayer = this.layer.getTerrainLayer();if (terrainLayer) {var _renderer6 = terrainLayer.getRenderer();if (_renderer6 && !_renderer6.isBlank()) {return false;}}var layers = this._getLayers();var _iterator5 = _createForOfIteratorHelper(layers),_step5;try {for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {var layer = _step5.value;var _renderer7 = layer.getRenderer();if (_renderer7 && !_renderer7.isBlank()) {return false;}}} catch (err) {_iterator5.e(err);} finally {_iterator5.f();}return true;} }, { key: \"createContext\", value: function createContext() {var _this33 = this;var layer = this.layer;var attributes = layer.options['glOptions'] || { alpha: true, depth: true, stencil: true };attributes.preserveDrawingBuffer = true;attributes.antialias = !!layer.options['antialias'];this.glOptions = attributes;var gl = this.gl = createGLContext(this.canvas, attributes, layer.options['onlyWebGL1']);this._initGL(gl);gl.wrap = function () {return new _fusiongl.GLContext(_this33.gl);};this.glCtx = gl.wrap();this.canvas.gl = this.gl;this.reglGL = gl.wrap();this.regl = (0, _regl3.default)({ gl: this.reglGL, attributes: attributes, extensions: layer.options['extensions'], optionalExtensions: layer.options['optionalExtensions'] });this.gl.regl = this.regl;this._jitter = [0, 0];this._groundPainter = new GroundPainter(this.regl, this.layer);this._envPainter = new EnvironmentPainter(this.regl, this.layer);var weatherConfig = this.layer.getWeatherConfig();this._weatherPainter = new WeatherPainter(this.regl, layer, weatherConfig);this._analysisPainter = new AnalysisPainter(this.regl, layer);this._scanEffectPainter = new ScanEffectPainter(this.regl, layer);var sceneConfig = this.layer._getSceneConfig() || {};var config = sceneConfig && sceneConfig.postProcess;var ratio = config && config.antialias && config.antialias.jitterRatio || 0.2;this._jitGetter = new reshader.Jitter(ratio);this._postProcessor = new PostProcess(this.regl, this.layer, this._jitGetter);this._shadowProcess = new ShadowProcess(this.regl, this.layer);} }, { key: \"_initGL\", value: function _initGL() {var layer = this.layer;var gl = this.gl;var extensions = layer.options['extensions'];if (extensions) {extensions.forEach(function (ext) {gl.getExtension(ext);});}var optionalExtensions = layer.options['optionalExtensions'];if (optionalExtensions) {optionalExtensions.forEach(function (ext) {gl.getExtension(ext);});}this.gl.clearColor(0.0, 0.0, 0.0, 0.0);} }, { key: \"clearCanvas\", value: function clearCanvas() {_superPropGet(GroupGLLayerRenderer, \"clearCanvas\", this, 3)([]);this._clearFramebuffers();} }, { key: \"_clearFramebuffers\", value: function _clearFramebuffers() {var regl = this.regl;if (this._targetFBO) {regl.clear({ color: EMPTY_COLOR$1, depth: 1, stencil: 0xFF, framebuffer: this._targetFBO });}if (this._outlineFBO) {regl.clear({ color: EMPTY_COLOR$1, framebuffer: this._outlineFBO });}regl.clear({ color: EMPTY_COLOR$1, depth: 1, stencil: 0xFF });} }, { key: \"resizeCanvas\", value: function resizeCanvas() {var width = this.canvas.width;var height = this.canvas.height;if (this._targetFBO && (this._targetFBO.width !== width || this._targetFBO.height !== height)) {_superPropGet(GroupGLLayerRenderer, \"resizeCanvas\", this, 3)([]);this._targetFBO.resize(width, height);this._clearFramebuffers();this.forEachRenderer(function (renderer) {if (renderer.canvas) {renderer.resizeCanvas();}});}} }, { key: \"getCanvasImage\", value: function getCanvasImage() {this.forEachRenderer(function (renderer) {renderer.getCanvasImage();});return _superPropGet(GroupGLLayerRenderer, \"getCanvasImage\", this, 3)([]);} }, { key: \"_getLayers\", value: function _getLayers() {return this.layer._getLayers();} }, { key: \"forEachRenderer\", value: function forEachRenderer(fn) {var layers = this._getLayers();var _iterator6 = _createForOfIteratorHelper(layers),_step6;try {for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {var layer = _step6.value;if (!layer.isVisible() || !layer.options['beneathTerrain']) {continue;}var _renderer9 = layer.getRenderer();if (_renderer9) {fn(_renderer9, layer);}}} catch (err) {_iterator6.e(err);} finally {_iterator6.f();}var terrainLayer = this.layer.getTerrainLayer();if (terrainLayer) {var _renderer8 = terrainLayer.getRenderer();if (_renderer8) {fn(_renderer8, terrainLayer);}}var _iterator7 = _createForOfIteratorHelper(layers),_step7;try {for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {var _layer = _step7.value;if (!_layer.isVisible() || _layer.options['beneathTerrain']) {continue;}var _renderer10 = _layer.getRenderer();if (_renderer10) {fn(_renderer10, _layer);}}} catch (err) {_iterator7.e(err);} finally {_iterator7.f();}} }, { key: \"clearStencil\", value: function clearStencil(renderer, fbo) {var stencilValue = renderer.getStencilValue ? renderer.getStencilValue() : 0xFF;var config = { stencil: stencilValue };if (fbo) {config['framebuffer'] = fbo;}this.regl.clear(config);} }, { key: \"onRemove\", value: function onRemove() {if (this.canvas.pickingFBO && this.canvas.pickingFBO.destroy) {this.canvas.pickingFBO.destroy();}this._destroyFramebuffers();if (this._groundPainter) {this._groundPainter.dispose();delete this._groundPainter;}if (this._envPainter) {this._envPainter.dispose();delete this._envPainter;}if (this._shadowProcess) {this._shadowProcess.dispose();delete this._shadowProcess;}if (this._postProcessor) {this._postProcessor.dispose();delete this._postProcessor;}if (this._outlineFBO) {this._outlineFBO.destroy();delete this._outlineFBO;}if (this._weatherPainter) {this._weatherPainter.dispose();delete this._weatherPainter;}_superPropGet(GroupGLLayerRenderer, \"onRemove\", this, 3)([]);} }, { key: \"_destroyFramebuffers\", value: function _destroyFramebuffers() {if (this._targetFBO) {this._targetFBO.destroy();delete this._targetFBO;if (this._postFBO) {this._postFBO.destroy();delete this._postFBO;}if (this._blitDepthFBO) {this._blitDepthFBO.destroy();delete this._blitDepthFBO;}if (this._blitFBOs) {for (var _i22 = 0; _i22 < this._blitFBOs.length; _i22++) {if (this._blitFBOs[_i22]) {this._blitFBOs[_i22].destroy();}}delete this._blitFBOs;}}} }, { key: \"setRetireFrames\", value: function setRetireFrames() {this._needRetireFrames = true;} }, { key: \"getFrameTime\", value: function getFrameTime() {return this._contextFrameTime;} }, { key: \"getFrameEvent\", value: function getFrameEvent() {return this._frameEvent;} }, { key: \"getFrameContext\", value: function getFrameContext() {return this._drawContext;} }, { key: \"drawGround\", value: function drawGround(forceRender) {var config = this.layer.getGroundConfig();if (!config || !config.enable) {return false;}if (!this._groundPainter) {return false;}var context = this.getFrameContext();var jitter = context.jitter;context.jitter = NO_JITTER;var polygonOffsetCount = this.layer.getPolygonOffsetCount();context.offsetFactor = polygonOffsetCount + 1;context.offsetUnits = polygonOffsetCount + 1;var sceneFilter;if (forceRender) {sceneFilter = context.sceneFilter;delete context.sceneFilter;}var drawn = this._groundPainter.paint(context);if (this._groundPainter.needToRedraw()) {this.setToRedraw();}if (sceneFilter) {context.sceneFilter = sceneFilter;}context.jitter = jitter;return drawn;} }, { key: \"_buildDrawFn\", value: function _buildDrawFn(drawMethod) {var me = this;return function (timestamp, context) {context = context || me._drawContext;var hasRenderTarget = context && context.renderTarget;if (hasRenderTarget) {context.renderTarget.getFramebuffer = getFramebuffer;context.renderTarget.getDepthTexture = getDepthTexture;}return drawMethod.call(this, timestamp, context);};} }, { key: \"_buildDrawOnInteractingFn\", value: function _buildDrawOnInteractingFn(drawMethod) {var me = this;return function (event, timestamp, context) {context = context || me._drawContext;var hasRenderTarget = context && context.renderTarget;if (hasRenderTarget) {context.renderTarget.getFramebuffer = getFramebuffer;context.renderTarget.getDepthTexture = getDepthTexture;}return drawMethod.call(this, event, timestamp, context);};} }, { key: \"_buildSetToRedrawFn\", value: function _buildSetToRedrawFn(fn) {return function () {for (var _len4 = arguments.length, args = new Array(_len4), _key6 = 0; _key6 < _len4; _key6++) {args[_key6] = arguments[_key6];}return fn.apply(this, args);};} }, { key: \"isEnableSSR\", value: function isEnableSSR() {var sceneConfig = this.layer._getSceneConfig();var config = sceneConfig && sceneConfig.postProcess;return config && config.enable && config.ssr && config.ssr.enable;} }, { key: \"isSSROn\", value: function isSSROn() {var enable = this.isEnableSSR();var map = this.getMap();if (!enable || map.getPitch() <= MIN_SSR_PITCH) {return 0;}var projViewMat = map.projViewMatrix;var prevSsrMat = this._postProcessor.getPrevSsrProjViewMatrix();return prevSsrMat && _reshader.mat4.exactEquals(prevSsrMat, projViewMat) ? SSR_STATIC : SSR_IN_ONE_FRAME;} }, { key: \"isEnableTAA\", value: function isEnableTAA() {return false;} }, { key: \"isEnableSSAO\", value: function isEnableSSAO() {return false;} }, { key: \"isEnableOutline\", value: function isEnableOutline() {var sceneConfig = this.layer._getSceneConfig();var config = sceneConfig && sceneConfig.postProcess;return config && config.enable && config.outline && config.outline.enable;} }, { key: \"isEnableWeather\", value: function isEnableWeather() {var sceneConfig = this.layer._getSceneConfig();var config = sceneConfig && sceneConfig.weather;return config && config.enable;} }, { key: \"_getViewStates\", value: function _getViewStates() {var map = this.layer.getMap();var renderedView = this._renderedView;if (!renderedView) {this._renderedView = { center: map.getCenter(), bearing: map.getBearing(), pitch: map.getPitch(), res: map.getResolution() };var _lightDirectionChanged = false;if (map.options.lights) {var lightManager = map.getLightManager();var lightDirection = lightManager.getDirectionalLight().direction || DEFAULT_LIGHT_DIRECTION;this._renderedView.lightDirection = _reshader.vec3.copy([], lightDirection);_lightDirectionChanged = true;}return { viewChanged: true, lightDirectionChanged: _lightDirectionChanged };}var res = map.getResolution();var scale = res / this._renderedView.res;var cp = map.coordToContainerPoint(this._renderedView.center);var viewMoveThreshold = this.layer.options['viewMoveThreshold'];var viewChanged = cp['_sub'](map.width / 2, map.height / 2).mag() > viewMoveThreshold || scale < 0.95 || scale > 1.05;var lightDirectionChanged = false;if (map.options.lights) {var _lightManager = map.getLightManager();var _lightDirection = _lightManager.getDirectionalLight().direction || DEFAULT_LIGHT_DIRECTION;lightDirectionChanged = !_reshader.vec3.equals(this._renderedView.lightDirection, _lightDirection);if (lightDirectionChanged) {this._renderedView.lightDirection = _reshader.vec3.copy([], _lightDirection);}}if (viewChanged) {this._renderedView.center = map.getCenter();this._renderedView.bearing = map.getBearing();this._renderedView.pitch = map.getPitch();this._renderedView.res = map.getResolution();}return { viewChanged: viewChanged, lightDirectionChanged: lightDirectionChanged };} }, { key: \"_prepareDrawContext\", value: function _prepareDrawContext(timestamp) {var sceneConfig = this.layer._getSceneConfig();var config = sceneConfig && sceneConfig.postProcess;var weatherConfig = sceneConfig && sceneConfig.weather;var context = { timestamp: timestamp, renderMode: this._renderMode || 'default', includes: {}, states: this._getViewStates(), testSceneFilter: function testSceneFilter(mesh) {return !context.sceneFilter || context.sceneFilter(mesh);}, isFinalRender: false, weather: { fog: weatherConfig && weatherConfig.fog } };var ratio = config && config.antialias && config.antialias.jitterRatio || 0.2;var jitGetter = this._jitGetter;if (jitGetter) {jitGetter.setRatio(ratio);}var ssrMode = this.isSSROn();var renderTarget;if (!config || !config.enable) {this._destroyFramebuffers();} else {var hasJitter = this.isEnableTAA();if (hasJitter) {var map = this.getMap();if (map.isInteracting() || this._needRetireFrames) {jitGetter.reset();}jitGetter.getJitter(this._jitter);jitGetter.frame();} else {_reshader.vec2.set(this._jitter, 0, 0);}context['jitter'] = this._jitter;var enableBloom = config.bloom && config.bloom.enable;if (enableBloom && ssrMode) {context['bloom'] = 1;context['sceneFilter'] = noPostFilter;} else if (enableBloom) {context['bloom'] = 1;context['sceneFilter'] = noBloomFilter;} else if (ssrMode) {context['sceneFilter'] = noSsrFilter;}renderTarget = this._getFramebufferTarget();if (renderTarget) {context.renderTarget = renderTarget;}}if (this._renderMode !== 'noAa') {this._shadowContext = this._prepareShadowContext(context);if (this._shadowContext) {context.includes.shadow = 1;}this._includesState = this._updateIncludesState(context);}if (this._shadowContext) {context.shadow = this._shadowContext;context.includes.shadow = 1;}context.states.includesChanged = this._includesState;if (config && config.enable && this._postProcessor) {this._postProcessor.setContextIncludes(context);}return context;} }, { key: \"_renderAnalysis\", value: function _renderAnalysis(tex) {var layers = this._getLayers().filter(function (layer) {return layer.isVisible();});if (this.layer.getTerrainLayer()) {layers.push(this.layer.getTerrainLayer());}return this._analysisPainter.paint(tex, layers);} }, { key: \"_updateIncludesState\", value: function _updateIncludesState(context) {var state = false;var includeKeys = Object.keys(context.includes);var prevKeys = this._prevIncludeKeys;if (prevKeys) {var difference = includeKeys.filter(function (x) {return prevKeys.indexOf(x) === -1;}).concat(prevKeys.filter(function (x) {return includeKeys.indexOf(x) === -1;}));if (difference.length) {state = difference.reduce(function (accumulator, currentValue) {accumulator[currentValue] = 1;return accumulator;}, {});}}this._prevIncludeKeys = includeKeys;return state;} }, { key: \"_prepareShadowContext\", value: function _prepareShadowContext(context) {var sceneConfig = this.layer._getSceneConfig();if (!sceneConfig || !sceneConfig.shadow || !sceneConfig.shadow.enable) {if (this._shadowProcess) {this._shadowProcess.dispose();delete this._shadowProcess;}return null;}if (!this._shadowProcess) {this._shadowProcess = new ShadowProcess(this.regl, this.layer);}var shadow = { config: sceneConfig.shadow, defines: this._shadowProcess.getDefines(), uniformDeclares: ShadowProcess.getUniformDeclares() };shadow.renderUniforms = this._renderShadow(context);return shadow;} }, { key: \"_renderShadow\", value: function _renderShadow(context) {var fbo = context.renderTarget && context.renderTarget.fbo;var sceneConfig = this.layer._getSceneConfig();var meshes = [];var forceUpdate = context.states.lightDirectionChanged || context.states.viewChanged;this.forEachRenderer(function (renderer, layer) {if (!renderer.getShadowMeshes || !layer.isVisible()) {return;}var shadowMeshes = renderer.getShadowMeshes();if (Array.isArray(shadowMeshes)) {for (var _i23 = 0; _i23 < shadowMeshes.length; _i23++) {if (!shadowMeshes[_i23]) {continue;}if (shadowMeshes[_i23].needUpdateShadow) {forceUpdate = true;shadowMeshes[_i23].needUpdateShadow = false;}if (shadowMeshes[_i23].hasFunctionUniform) {if (!shadowMeshes[_i23].hasFunctionUniform('minAltitude')) {shadowMeshes[_i23].setFunctionUniform('minAltitude', function () {return layer && layer.options.altitude || 0;});}meshes.push(shadowMeshes[_i23]);}}}});if (!this._shadowScene) {this._shadowScene = new reshader.Scene();}this._shadowScene.setMeshes(meshes);var map = this.getMap();var shadowConfig = sceneConfig.shadow;var lightManager = map.getLightManager();var lightDirection = lightManager && lightManager.getDirectionalLight().direction || DEFAULT_LIGHT_DIRECTION;var displayShadow = !sceneConfig.ground || !sceneConfig.ground.enable;var uniforms = this._shadowProcess.render(displayShadow, map.projMatrix, map.viewMatrix, shadowConfig.color, shadowConfig.opacity, lightDirection, this._shadowScene, this._jitter, fbo, forceUpdate);return uniforms;} }, { key: \"_renderWeather\", value: function _renderWeather(tex) {var meshes = [];this.forEachRenderer(function (renderer, layer) {if (!renderer.getAnalysisMeshes || !layer.isVisible()) {return;}var renderMeshes = renderer.getAnalysisMeshes();meshes = meshes.concat(renderMeshes);});if (this._groundPainter) {var groundMesh = this._groundPainter.getRenderMeshes();meshes = meshes.concat(groundMesh);}var weatherConfig = this.layer.getWeatherConfig();return this._weatherPainter.paint(tex, meshes, weatherConfig);} }, { key: \"_renderScanEffect\", value: function _renderScanEffect(tex) {var meshes = [];this.forEachRenderer(function (renderer, layer) {if (!renderer.getAnalysisMeshes || !layer.isVisible()) {return;}var renderMeshes = renderer.getAnalysisMeshes();meshes = meshes.concat(renderMeshes);});if (this._groundPainter) {var groundMesh = this._groundPainter.getRenderMeshes();meshes = meshes.concat(groundMesh);}return this._scanEffectPainter.paint(tex, meshes);} }, { key: \"getGroundMesh\", value: function getGroundMesh() {if (this._groundPainter) {var groundMesh = this._groundPainter.getRenderMeshes();return groundMesh;}return [];} }, { key: \"_getFramebufferTarget\", value: function _getFramebufferTarget() {var sceneConfig = this.layer._getSceneConfig();var config = sceneConfig && sceneConfig.postProcess;if (!this._targetFBO) {var _regl2 = this.regl;var depthTex = this._depthTex;if (!depthTex || !depthTex['_texture'] || depthTex['_texture'].refCount <= 0) {depthTex = null;}var fboInfo = this.createFBOInfo(config, depthTex);this._depthTex = fboInfo.depth || fboInfo.depthStencil;this._targetFBO = _regl2.framebuffer(fboInfo);this._clearFramebuffers();}return { fbo: this._targetFBO };} }, { key: \"_createSimpleFBOInfo\", value: function _createSimpleFBOInfo(forceTexture, width, height) {width = width || this.canvas.width, height = height || this.canvas.height;var regl = this.regl;var useMultiSamples = this._isUseMultiSample();var color;if (!forceTexture && useMultiSamples) {color = regl.renderbuffer({ width: width, height: height, samples: this.layer.options['multiSamples'], format: 'rgba8' });} else {var type = 'uint8';color = regl.texture({ min: 'nearest', mag: 'nearest', type: type, width: width, height: height });}var fboInfo = { width: width, height: height, colors: [color], colorFormat: useMultiSamples ? 'rgba8' : 'rgba' };return fboInfo;} }, { key: \"createFBOInfo\", value: function createFBOInfo(config, depthTex) {var _this$canvas2 = this.canvas,width = _this$canvas2.width,height = _this$canvas2.height;width = width || 1;height = height || 1;var regl = this.regl;var fboInfo = this._createSimpleFBOInfo();var useMultiSamples = this._isUseMultiSample();var enableDepthTex = regl.hasExtension('WEBGL_depth_texture');if (useMultiSamples) {var renderbuffer = depthTex || regl.renderbuffer({ width: width, height: height, format: 'depth24 stencil8', samples: this.layer.options['multiSamples'] });fboInfo.depthStencil = renderbuffer;} else {if (enableDepthTex) {var depthStencilTexture = depthTex || regl.texture({ min: 'nearest', mag: 'nearest', mipmap: false, type: 'depth stencil', width: width, height: height, format: 'depth stencil' });fboInfo.depthStencil = depthStencilTexture;} else {var _renderbuffer = depthTex || regl.renderbuffer({ width: width, height: height, format: 'depth stencil' });fboInfo.depthStencil = _renderbuffer;}}return fboInfo;} }, { key: \"_postProcess\", value: function _postProcess() {if (!this._targetFBO) {this._needRetireFrames = false;return;}var sceneConfig = this.layer._getSceneConfig();var config = sceneConfig && sceneConfig.postProcess;if (!config || !config.enable) {if (this.isEnableWeather()) {throw new Error('you must enable the post process to turn on weather');}return;}this.layer.fire('postprocessstart');var map = this.layer.getMap();var sharpFactor = config.sharpen && config.sharpen.factor;if (!sharpFactor && sharpFactor !== 0) {sharpFactor = 0.2;}var enableOutline = 0;var highlightFactor = 0.2;var outlineFactor = 0.3;var outlineWidth = 1;var outlineColor = [1, 1, 0];if (config.outline) {enableOutline = +!!config.outline.enable;highlightFactor = getValueOrDefault(config.outline, 'highlightFactor', highlightFactor);outlineFactor = getValueOrDefault(config.outline, 'outlineFactor', outlineFactor);outlineWidth = getValueOrDefault(config.outline, 'outlineWidth', outlineWidth);outlineColor = getValueOrDefault(config.outline, 'outlineColor', outlineColor);}var enableSSR = config.ssr && config.ssr.enable;var enableBloom = config.bloom && config.bloom.enable;var enableAnalysis = this._analysisPainter._hasAnalysis();var enableWeather = this._weatherPainter._hasWeather();var enableScanEffect = this.isEnableScanEffect();var hasPost = enableBloom || enableSSR || enableAnalysis || enableWeather || enableScanEffect;var postFBO = this._postFBO;if (hasPost) {if (!postFBO) {var info = this._createSimpleFBOInfo();if (this._isUseMultiSample()) {info.depthStencil = this.regl.renderbuffer({ width: this.canvas.width, height: this.canvas.height, samples: this.layer.options['multiSamples'], format: 'depth24 stencil8' });}postFBO = this._postFBO = this.regl.framebuffer(info);}var _this$canvas3 = this.canvas,width = _this$canvas3.width,height = _this$canvas3.height;if (postFBO.width !== width || postFBO.height !== height) {postFBO.resize(width, height);}} else {postFBO = null;if (this._postFBO) {this._postFBO.destroy();delete this._postFBO;}}var tex = this._getFBOColor(this._targetFBO);this._postProcessor.fxaa(postFBO, tex, 0, +!!(config.toneMapping && config.toneMapping.enable), +!!(!hasPost && config.sharpen && config.sharpen.enable), map.getDevicePixelRatio(), sharpFactor, enableOutline && this._outlineCounts > 0 && this._getOutlineFBO(), highlightFactor, outlineFactor, outlineWidth, outlineColor);if (postFBO) {tex = this._getFBOColor(postFBO);}if (enableBloom && this._bloomPainted) {var bloomConfig = config.bloom;var threshold = +bloomConfig.threshold || 0;var factor = getValueOrDefault(bloomConfig, 'factor', 1);var radius = getValueOrDefault(bloomConfig, 'radius', 1);tex = this._postProcessor.bloom(tex, null, null, threshold, factor, radius, 0);}if (enableSSR) {this._postProcessor.genSsrMipmap(tex, this._blitDepthTex());if (this._needUpdateSSR) {var needRetireFrames = this._needRetireFrames;this.setToRedraw();this._needRetireFrames = needRetireFrames;this._needUpdateSSR = false;}}if (this._scanEffectPainter && this.isEnableScanEffect()) {tex = this._renderScanEffect(tex);}if (this._analysisPainter) {tex = this._renderAnalysis(tex);}if (this.isEnableWeather()) {tex = this._renderWeather(tex);}if (hasPost) {this._postProcessor.renderFBOToScreen(tex, +!!(config.sharpen && config.sharpen.enable), sharpFactor, map.getDevicePixelRatio());}this.layer.fire('postprocessend');} }, { key: \"isEnableScanEffect\", value: function isEnableScanEffect() {var sceneConfig = this.layer._getSceneConfig();var config = sceneConfig && sceneConfig.postProcess && sceneConfig.postProcess.scanEffect;return config && config.enable && config.effects.length;} }]);}(maptalks.renderer.CanvasRenderer);function isNil(obj) {return obj == null;}function isNumber(val) {return typeof val === 'number' && !isNaN(val);}function getFramebuffer(fbo) {return fbo['_framebuffer'].framebuffer;}function getDepthTexture(fbo) {return fbo.depthStencil._texture.texture;}function getValueOrDefault(v, key, defaultValue) {if (isNil(v[key])) {return defaultValue;}return v[key];}var TerrainWorkerConnection = function (_maptalks$worker$Acto) {function TerrainWorkerConnection(mapId) {var _this34;_classCallCheck(this, TerrainWorkerConnection);_this34 = _callSuper(this, TerrainWorkerConnection, ['@maptalks/terrain']);_this34.mapId = mapId;return _this34;}_inherits(TerrainWorkerConnection, _maptalks$worker$Acto);return _createClass(TerrainWorkerConnection, [{ key: \"checkUrl\", value: function checkUrl(url) {if (!url || !maptalks.Util.isString(url)) {return url;}return maptalks.Util.getAbsoluteURL(url);} }, { key: \"fetchTerrain\", value: function fetchTerrain(url, options, cb) {url = this.checkUrl(url);var data = { actorId: this.actorId, mapId: this.mapId, command: 'fetchTerrain', params: { url: url, origin: location.origin, terrainWidth: options.terrainWidth, type: options.type, accessToken: options.accessToken, cesiumIonTokenURL: options.cesiumIonTokenURL, error: options.error, colors: options.colors, tileSize: options.tileSize } };this.send(data, null, function (err, data) {if (err) {cb(err);return;}cb(err, data);});} }, { key: \"abortTerrain\", value: function abortTerrain(url, cb) {var data = { actorId: this.actorId, mapId: this.mapId, command: 'abortTerrain', params: { url: url } };this.broadcast(data, null, cb);} }, { key: \"addLayer\", value: function addLayer(layerId, options, cb) {var data = { actorId: this.actorId, mapId: this.mapId, layerId: layerId, command: 'addLayer', params: {} };this.broadcast(data, null, cb);} }, { key: \"createTerrainMesh\", value: function createTerrainMesh(params, cb) {var data = { actorId: this.actorId, command: 'createTerrainMesh', params: params };this.send(data, [params.terrainHeights.data.buffer], function (err, data) {if (err) {cb(err);return;}cb(err, data);});} }, { key: \"removeLayer\", value: function removeLayer(layerId, options, cb) {var data = { mapId: this.mapId, layerId: layerId, command: 'removeLayer' };this.broadcast(data, null, cb);} }]);}(maptalks.worker.Actor);var skinVert = \"#define SHADER_NAME TERRAIN_SKIN\\nattribute vec2 aPosition;\\nvoid main() {\\n gl_Position = vec4(aPosition, 0.0, 1.0);\\n}\";var skinFrag = \"#define SHADER_NAME TERRAIN_SKIN\\nprecision mediump float;\\nuniform float tileSize;\\nuniform sampler2D skinTexture;\\nuniform vec3 skinDim;\\nuniform float opacity;\\nvoid main() {\\n vec2 fragCoord = gl_FragCoord.xy / 2.0;\\n vec2 resolution = vec2(tileSize);\\n vec2 uv = (fragCoord - skinDim.xy) / (resolution * skinDim.z);\\n if (uv.x >= 0.0 && uv.x <= 1.0 && uv.y >= 0.0 && uv.y <= 1.0) {\\n gl_FragColor = texture2D(skinTexture, uv) * opacity;\\n } else {\\n gl_FragColor = vec4(0.0);\\n }\\n}\";var Martini = function () {function Martini() {var gridSize = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 257;_classCallCheck(this, Martini);this.gridSize = gridSize;var tileSize = gridSize - 1;if (tileSize & tileSize - 1) throw new Error(\"Expected grid size to be 2^n+1, got \".concat(gridSize, \".\"));this.numTriangles = tileSize * tileSize * 2 - 2;this.numParentTriangles = this.numTriangles - tileSize * tileSize;this.indices = new Uint32Array(this.gridSize * this.gridSize);this.coords = new Uint16Array(this.numTriangles * 4);for (var _i24 = 0; _i24 < this.numTriangles; _i24++) {var id = _i24 + 2;var ax = 0,ay = 0,bx = 0,by = 0,cx = 0,cy = 0;if (id & 1) {bx = by = cx = tileSize;} else {ax = ay = cy = tileSize;}while ((id >>= 1) > 1) {var mx = ax + bx >> 1;var my = ay + by >> 1;if (id & 1) {bx = ax;by = ay;ax = cx;ay = cy;} else {ax = bx;ay = by;bx = cx;by = cy;}cx = mx;cy = my;}var k = _i24 * 4;this.coords[k + 0] = ax;this.coords[k + 1] = ay;this.coords[k + 2] = bx;this.coords[k + 3] = by;}}return _createClass(Martini, [{ key: \"createTile\", value: function createTile(terrain) {return new Tile(terrain, this);} }]);}();var Tile = function () {function Tile(terrain, martini) {_classCallCheck(this, Tile);var size = martini.gridSize;if (terrain.length !== size * size) throw new Error(\"Expected terrain data of length \".concat(size * size, \" (\").concat(size, \" x \").concat(size, \"), got \").concat(terrain.length, \".\"));this.terrain = terrain;this.martini = martini;this.errors = new Float32Array(terrain.length);this.update();}return _createClass(Tile, [{ key: \"update\", value: function update() {var _this$martini = this.martini,numTriangles = _this$martini.numTriangles,numParentTriangles = _this$martini.numParentTriangles,coords = _this$martini.coords,size = _this$martini.gridSize;var terrain = this.terrain,errors = this.errors;for (var _i25 = numTriangles - 1; _i25 >= 0; _i25--) {var k = _i25 * 4;var ax = coords[k + 0];var ay = coords[k + 1];var bx = coords[k + 2];var by = coords[k + 3];var mx = ax + bx >> 1;var my = ay + by >> 1;var cx = mx + my - ay;var cy = my + ax - mx;var interpolatedHeight = (terrain[ay * size + ax] + terrain[by * size + bx]) / 2;var middleIndex = my * size + mx;var middleError = Math.abs(interpolatedHeight - terrain[middleIndex]);errors[middleIndex] = Math.max(errors[middleIndex], middleError);if (_i25 < numParentTriangles) {var leftChildIndex = (ay + cy >> 1) * size + (ax + cx >> 1);var rightChildIndex = (by + cy >> 1) * size + (bx + cx >> 1);errors[middleIndex] = Math.max(errors[middleIndex], errors[leftChildIndex], errors[rightChildIndex]);}}} }, { key: \"getMesh\", value: function getMesh() {var maxError = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;var _this$martini2 = this.martini,size = _this$martini2.gridSize,indices = _this$martini2.indices;var errors = this.errors;var numVertices = 0;var numTriangles = 0;var max = size - 1;indices.fill(0);function countElements(ax, ay, bx, by, cx, cy) {var mx = ax + bx >> 1;var my = ay + by >> 1;if (Math.abs(ax - cx) + Math.abs(ay - cy) > 1 && errors[my * size + mx] > maxError) {countElements(cx, cy, ax, ay, mx, my);countElements(bx, by, cx, cy, mx, my);} else {indices[ay * size + ax] = indices[ay * size + ax] || ++numVertices;indices[by * size + bx] = indices[by * size + bx] || ++numVertices;indices[cy * size + cx] = indices[cy * size + cx] || ++numVertices;numTriangles++;}}countElements(0, 0, max, max, max, 0);countElements(max, max, 0, 0, 0, max);var vertices = new Uint16Array(numVertices * 2);var triangles = new Uint32Array(numTriangles * 3);var triIndex = 0;function processTriangle(ax, ay, bx, by, cx, cy) {var mx = ax + bx >> 1;var my = ay + by >> 1;if (Math.abs(ax - cx) + Math.abs(ay - cy) > 1 && errors[my * size + mx] > maxError) {processTriangle(cx, cy, ax, ay, mx, my);processTriangle(bx, by, cx, cy, mx, my);} else {var a = indices[ay * size + ax] - 1;var b = indices[by * size + bx] - 1;var c = indices[cy * size + cx] - 1;vertices[2 * a] = ax;vertices[2 * a + 1] = ay;vertices[2 * b] = bx;vertices[2 * b + 1] = by;vertices[2 * c] = cx;vertices[2 * c + 1] = cy;triangles[triIndex++] = a;triangles[triIndex++] = b;triangles[triIndex++] = c;}}processTriangle(0, 0, max, max, max, 0);processTriangle(max, max, 0, 0, 0, max);return { vertices: vertices, triangles: triangles };} }, { key: \"getMeshWithSkirts\", value: function getMeshWithSkirts() {var maxError = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;var isolateSkirtVertices = arguments.length > 1 ? arguments[1] : undefined;var _this$martini3 = this.martini,size = _this$martini3.gridSize,indices = _this$martini3.indices;var errors = this.errors;var numVertices = 0;var numTriangles = 0;var max = size - 1;var aIndex,bIndex,cIndex = 0;var leftSkirtIndices = [];var rightSkirtIndices = [];var bottomSkirtIndices = [];var topSkirtIndices = [];indices.fill(0);function countElements(ax, ay, bx, by, cx, cy) {var mx = ax + bx >> 1;var my = ay + by >> 1;if (Math.abs(ax - cx) + Math.abs(ay - cy) > 1 && errors[my * size + mx] > maxError) {countElements(cx, cy, ax, ay, mx, my);countElements(bx, by, cx, cy, mx, my);} else {aIndex = ay * size + ax;bIndex = by * size + bx;cIndex = cy * size + cx;if (indices[aIndex] === 0) {if (ax === 0) leftSkirtIndices.push(numVertices);else if (ax === max) rightSkirtIndices.push(numVertices);if (ay === 0) bottomSkirtIndices.push(numVertices);else if (ay === max) topSkirtIndices.push(numVertices);indices[aIndex] = ++numVertices;}if (indices[bIndex] === 0) {if (bx === 0) leftSkirtIndices.push(numVertices);else if (bx === max) rightSkirtIndices.push(numVertices);if (by === 0) bottomSkirtIndices.push(numVertices);else if (by === max) topSkirtIndices.push(numVertices);indices[bIndex] = ++numVertices;}if (indices[cIndex] === 0) {if (cx === 0) leftSkirtIndices.push(numVertices);else if (cx === max) rightSkirtIndices.push(numVertices);if (cy === 0) bottomSkirtIndices.push(numVertices);else if (cy === max) topSkirtIndices.push(numVertices);indices[cIndex] = ++numVertices;}numTriangles++;}}countElements(0, 0, max, max, max, 0);countElements(max, max, 0, 0, 0, max);var numTotalVertices;if (isolateSkirtVertices) {numTotalVertices = (numVertices + leftSkirtIndices.length * 3 - 2 + rightSkirtIndices.length * 3 - 2 + bottomSkirtIndices.length * 3 - 2 + topSkirtIndices.length * 3 - 2) * 2;} else {numTotalVertices = (numVertices + leftSkirtIndices.length + rightSkirtIndices.length + bottomSkirtIndices.length + topSkirtIndices.length) * 2;}var numTotalTriangles = (numTriangles + (leftSkirtIndices.length - 1) * 2 + (rightSkirtIndices.length - 1) * 2 + (bottomSkirtIndices.length - 1) * 2 + (topSkirtIndices.length - 1) * 2) * 3;var vertices = new Uint16Array(numTotalVertices);var triangles = new Uint32Array(numTotalTriangles);var triIndex = 0;function processTriangle(ax, ay, bx, by, cx, cy) {var mx = ax + bx >> 1;var my = ay + by >> 1;if (Math.abs(ax - cx) + Math.abs(ay - cy) > 1 && errors[my * size + mx] > maxError) {processTriangle(cx, cy, ax, ay, mx, my);processTriangle(bx, by, cx, cy, mx, my);} else {var a = indices[ay * size + ax] - 1;var b = indices[by * size + bx] - 1;var c = indices[cy * size + cx] - 1;vertices[2 * a] = ax;vertices[2 * a + 1] = ay;vertices[2 * b] = bx;vertices[2 * b + 1] = by;vertices[2 * c] = cx;vertices[2 * c + 1] = cy;triangles[triIndex++] = a;triangles[triIndex++] = b;triangles[triIndex++] = c;}}processTriangle(0, 0, max, max, max, 0);processTriangle(max, max, 0, 0, 0, max);leftSkirtIndices.sort(function (a, b) {return vertices[2 * a + 1] - vertices[2 * b + 1];});rightSkirtIndices.sort(function (a, b) {return vertices[2 * b + 1] - vertices[2 * a + 1];});bottomSkirtIndices.sort(function (a, b) {return vertices[2 * b] - vertices[2 * a];});topSkirtIndices.sort(function (a, b) {return vertices[2 * a] - vertices[2 * b];});var skirtIndex = numVertices * 2;var currIndex,nextIndex,currentSkirt,nextSkirt,skirtLength = 0;function constructSkirt(skirt) {skirtLength = skirt.length;for (var _i26 = 0; _i26 < skirtLength - 1; _i26++) {currIndex = skirt[_i26];nextIndex = skirt[_i26 + 1];currentSkirt = skirtIndex / 2;nextSkirt = (skirtIndex + (isolateSkirtVertices ? 6 : 2)) / 2;vertices[skirtIndex++] = 2 * currIndex;vertices[skirtIndex++] = 2 * currIndex + 1;if (isolateSkirtVertices) {vertices[skirtIndex++] = 2 * currIndex;vertices[skirtIndex++] = 2 * currIndex + 1;vertices[skirtIndex++] = 2 * nextIndex;vertices[skirtIndex++] = 2 * nextIndex + 1;}if (isolateSkirtVertices) {triangles[triIndex++] = currentSkirt + 1;triangles[triIndex++] = currentSkirt;triangles[triIndex++] = currentSkirt + 2;triangles[triIndex++] = currentSkirt;triangles[triIndex++] = nextSkirt;triangles[triIndex++] = currentSkirt + 2;} else {triangles[triIndex++] = currIndex;triangles[triIndex++] = currentSkirt;triangles[triIndex++] = nextIndex;triangles[triIndex++] = currentSkirt;triangles[triIndex++] = nextSkirt;triangles[triIndex++] = nextIndex;}}vertices[skirtIndex++] = 2 * skirt[skirtLength - 1];vertices[skirtIndex++] = 2 * skirt[skirtLength - 1] + 1;}constructSkirt(leftSkirtIndices);var leftSkirtIndex = skirtIndex;constructSkirt(rightSkirtIndices);var rightSkirtIndex = skirtIndex;constructSkirt(bottomSkirtIndices);var bottomSkirtIndex = skirtIndex;constructSkirt(topSkirtIndices);var topSkirtIndex = skirtIndex;return { vertices: vertices, triangles: triangles, numVerticesWithoutSkirts: numVertices, numTrianglesWithoutSkirts: numTriangles, leftSkirtIndex: leftSkirtIndex, rightSkirtIndex: rightSkirtIndex, bottomSkirtIndex: bottomSkirtIndex, topSkirtIndex: topSkirtIndex };} }]);}();var martinis = {};function createMartiniData(error, heights, width, hasSkirts) {var martini = martinis[width];if (!martini) {martini = martinis[width] = new Martini(width);}var terrainTile = martini.createTile(heights);var isolateSkirtVertices = true;var mesh = terrainTile.getMeshWithSkirts(error, isolateSkirtVertices);var triangles = mesh.triangles,vertices = mesh.vertices,leftSkirtIndex = mesh.leftSkirtIndex,rightSkirtIndex = mesh.rightSkirtIndex,bottomSkirtIndex = mesh.bottomSkirtIndex,topSkirtIndex = mesh.topSkirtIndex;var numVerticesWithoutSkirts = mesh.numVerticesWithoutSkirts,numTrianglesWithoutSkirts = mesh.numTrianglesWithoutSkirts;if (!numVerticesWithoutSkirts) {numVerticesWithoutSkirts = vertices.legnth / 3;numTrianglesWithoutSkirts = triangles.length / 3;}var count = vertices.length / 2;var positions = new Float32Array(count * 3),texcoords = new Float32Array(count * 2);var skirtOffset = 0;var minHeight = Infinity;var maxHeight = -Infinity;var maxWidth = width - 1;for (var _i27 = 0; _i27 < count; _i27++) {var x = vertices[_i27 * 2],y = vertices[_i27 * 2 + 1];if (_i27 >= numVerticesWithoutSkirts) {var index = x / 2 * 3;var _height = void 0;var texOffset = 0.001;{var start = _i27 < leftSkirtIndex / 2 ? numVerticesWithoutSkirts : _i27 < rightSkirtIndex / 2 ? leftSkirtIndex / 2 : _i27 < bottomSkirtIndex / 2 ? rightSkirtIndex / 2 : bottomSkirtIndex / 2;if ((_i27 - start) % 3 === 0) {_height = 0;texOffset = 0;} else {_height = positions[index + 2];}}positions[_i27 * 3] = positions[index];positions[_i27 * 3 + 1] = positions[index + 1];positions[_i27 * 3 + 2] = _height;texcoords[_i27 * 2] = positions[index] / maxWidth + texOffset;texcoords[_i27 * 2 + 1] = -positions[index + 1] / maxWidth + texOffset;} else {positions[_i27 * 3] = x * (1 + skirtOffset);positions[_i27 * 3 + 1] = -y * (1 + skirtOffset);positions[_i27 * 3 + 2] = heights[y * width + x];texcoords[_i27 * 2] = x / maxWidth;texcoords[_i27 * 2 + 1] = y / maxWidth;}var height = positions[positions.length - 1];if (height < minHeight) {minHeight = height;}if (height > maxHeight) {maxHeight = height;}}var terrain = { positions: positions, texcoords: texcoords, triangles: triangles, leftSkirtIndex: leftSkirtIndex, rightSkirtIndex: rightSkirtIndex, bottomSkirtIndex: bottomSkirtIndex, topSkirtIndex: topSkirtIndex, numTrianglesWithoutSkirts: numTrianglesWithoutSkirts, numVerticesWithoutSkirts: numVerticesWithoutSkirts, minHeight: minHeight, maxHeight: maxHeight, terrainWidth: width };return terrain;}function getCascadeTileIds(layer, x, y, z, center, offset, terrainTileScaleY, scale, levelLimit) {var result = {};for (var _i28 = 0; _i28 < levelLimit; _i28++) {result[_i28 + ''] = getTileIdsAtLevel(layer, x, y, z, center, offset, terrainTileScaleY, scale, _i28);}return result;}var EMPTY_ARRAY$1 = [];function getTileIdsAtLevel(layerB, ax, ay, bz, aNW, offset, aScaleY, scale, level) {bz -= level;if (bz <= 0) {return EMPTY_ARRAY$1;}var tileSize = layerB.getTileSize().width;var layerOffset = layerB['_getTileOffset'](bz, aNW);var tileOffsetX = offset[0] - layerOffset[0];var tileOffsetY = layerOffset[1] - offset[1];var tileConfig = layerB['_getTileConfig']();var sr = layerB.getSpatialReference();var tileRes = sr.getResolution(bz);var layerTileYScale = tileConfig.tileSystem.scale.y;var delta = 1E-7;scale = scale / Math.pow(2, level);var xStart = 0;var yStart = 0;var xEnd = scale;var yEnd = scale;if (tileOffsetX < 0) {xEnd += Math.ceil(-tileOffsetX / tileSize - delta);} else if (tileOffsetX > 0) {xStart -= Math.ceil(tileOffsetX / tileSize - delta);}if (tileOffsetY > 0) {yStart -= Math.ceil(tileOffsetY / tileSize - delta);} else if (tileOffsetY < 0) {yEnd += Math.ceil(-tileOffsetY / tileSize - delta);}if (xStart === 0 && yStart === 0 && xEnd <= 1 && yEnd <= 1) {var tx = Math.floor(ax * scale);var ty = Math.floor(ay * scale);var skinY = ty;if (layerTileYScale !== aScaleY) {ty = getReverseY(tileConfig, ty, tileRes);}return [{ x: tx, y: ty, skinY: skinY, z: bz, offset: layerOffset, tileSize: tileSize, id: layerB['_getTileId'](tx, ty, bz) }];}var result = [];for (var _i29 = xStart; _i29 < xEnd; _i29++) {for (var j = yStart; j < yEnd; j++) {var _tx = ax * scale + _i29;var _ty = ay * scale + j;var _skinY = _ty;if (layerTileYScale !== aScaleY) {_ty = getReverseY(tileConfig, _ty, tileRes);}result.push({ x: _tx, y: _ty, skinY: _skinY, z: bz, offset: layerOffset, tileSize: tileSize, id: layerB['_getTileId'](_tx, _ty, bz) });}}return result;}function getSkinTileScale(res, size, terrainRes, terrainSize) {var scale = res / terrainRes * terrainSize / size;if (scale < 1) {scale = 1 / scale;scale = 1 / Math.round(scale);} else {scale = Math.round(scale);}return scale;}function getSkinTileRes(sr, z, terrainRes) {var resAtZ = sr.getResolution(z);var zoom = z - Math.log(terrainRes / resAtZ) * Math.LOG2E;var myRes = sr.getResolution(zoom);return { zoom: zoom, res: myRes };}new maptalks.Point(0, 0);function getReverseY(tileConfig, y, res) {var fullExtent = tileConfig.fullExtent;var tileSize = tileConfig.tileSize.width;var max = Math.max(fullExtent.top, fullExtent.bottom);var min = Math.min(fullExtent.top, fullExtent.bottom);var top = Math.ceil(max / tileSize / res) - 1;var bottom = Math.floor(min / tileSize / res);return top - bottom - y;}function createEmtpyTerrainHeights(height, size) {var length = size * size;var data = height !== 0 ? new Float32Array(length) : new Uint8Array(length);data.fill(height);return { data: data, width: size, height: size, max: height, min: height };}var emptyHeights = createEmtpyTerrainHeights(0, 5);var EMPTY_TERRAIN_GEO = createMartiniData(1, emptyHeights.data, emptyHeights.width);EMPTY_TERRAIN_GEO.empty = true;function fillIncludes(defines, uniformDeclares, context) {var includes = context && context.includes;if (includes) {for (var _p4 in includes) {if (includes[_p4]) {if (context[_p4].uniformDeclares) {uniformDeclares.push.apply(uniformDeclares, _toConsumableArray(context[_p4].uniformDeclares));}if (context[_p4].defines) {extend(defines, context[_p4].defines);}}}}}function setIncludeUniformValues(uniforms, context) {var includes = context && context.includes;if (includes) {for (var _p5 in includes) {if (includes[_p5]) {if (context[_p5].renderUniforms) {extend(uniforms, context[_p5].renderUniforms);}}}}}var context = exports.ContextUtil = Object.freeze({ __proto__: null, fillIncludes: fillIncludes, setIncludeUniformValues: setIncludeUniformValues });var vert = \"#define SHADER_NAME TERRAIN_MESH\\nattribute vec3 aPosition;\\nattribute vec2 aTexCoord;\\nuniform float minAltitude;\\nuniform mat4 projViewModelMatrix;\\nuniform mat4 projMatrix;\\nuniform mat4 modelMatrix;\\nuniform mat4 modelViewMatrix;\\nuniform mat4 positionMatrix;\\nuniform float heightScale;\\nvarying vec2 vUv;\\n#include \\n#if defined(HAS_SHADOWING) && !defined(HAS_BLOOM)\\n #include \\n#endif\\nvoid main() {\\n vec4 position = vec4(aPosition.xy, (aPosition.z + minAltitude) * heightScale, 1.0);\\n position = positionMatrix * position;\\n #ifdef HAS_MASK_EXTENT\\n gl_Position = projMatrix * getMaskPosition(position, modelMatrix);\\n #else\\n gl_Position = projViewModelMatrix * position;\\n #endif\\n vUv = aTexCoord;\\n #if defined(HAS_SHADOWING) && !defined(HAS_BLOOM)\\n shadow_computeShadowPars(position);\\n #endif\\n}\";var frag = \"#define SHADER_NAME TERRAIN_MESH\\nprecision mediump float;\\nuniform sampler2D skin;\\nuniform float polygonOpacity;\\nvarying vec2 vUv;\\n#include \\n#if defined(HAS_SHADOWING) && !defined(HAS_BLOOM)\\n #include \\n#endif\\nvoid main() {\\n vec2 uv = vec2(vUv);\\n uv.y = 1.0 - uv.y;\\n vec4 color = texture2D(skin, uv);\\n #if defined(HAS_SHADOWING) && !defined(HAS_BLOOM)\\n float shadowCoeff = shadow_computeShadow();\\n color.rgb = shadow_blend(color.rgb, shadowCoeff).rgb;\\n #endif\\n gl_FragColor = color * polygonOpacity;\\n #ifdef HAS_MASK_EXTENT\\n gl_FragColor = setMask(gl_FragColor);\\n #endif\\n}\";var V3 = [];var SCALE3 = [];var TerrainPainter = function () {function TerrainPainter(layer) {_classCallCheck(this, TerrainPainter);this.layer = layer;this.regl = layer.getRenderer().regl;this.renderer = new reshader.Renderer(this.regl);this._leafScene = new reshader.Scene();var pixels = new Uint8Array(16);pixels.fill(255);this._emptyTileTexture = this.regl.texture({ width: 2, height: 2, data: pixels });this._resLoader = new reshader.ResourceLoader(this._emptyTileTexture);this._createEmptyTerrainGeo();}return _createClass(TerrainPainter, [{ key: \"setToRedraw\", value: function setToRedraw() {this.layer.getRenderer().setToRedraw();} }, { key: \"getMap\", value: function getMap() {return this.layer.getMap();} }, { key: \"startFrame\", value: function startFrame(context) {if (context && context.states && context.states.includesChanged) {this.shader.dispose();delete this.shader;}if (!this.shader) {this.initShader(context);}this._leafScene.clear();} }, { key: \"createTerrainMesh\", value: function createTerrainMesh(tileInfo, terrainImage) {var terrainGeo = terrainImage.mesh,heightTexture = terrainImage.image;var mesh = terrainImage.terrainMesh;var positions = terrainGeo.positions,texcoords = terrainGeo.texcoords,triangles = terrainGeo.triangles,empty = terrainGeo.empty;if (mesh && mesh.geometry !== this._emptyTerrainGeometry) {mesh.geometry.updateData('aPosition', positions);mesh.geometry.updateData('aTexCoord', texcoords);mesh.geometry.setElements(triangles);} else {var geo = empty ? this._emptyTerrainGeometry : new reshader.Geometry({ aPosition: positions, aTexCoord: texcoords }, triangles, 0);if (mesh) {mesh.geometry = geo;} else {mesh = new reshader.Mesh(geo, null, { disableVAO: true });geo.generateBuffers(this.regl);}}if (!mesh.uniforms.skin) {var emptyTexture = this.getEmptyTexture();mesh.setUniform('skin', emptyTexture);}mesh.setUniform('heightTexture', heightTexture);this.prepareMesh(mesh, tileInfo, terrainImage);return mesh;} }, { key: \"_updateMaskDefines\", value: function _updateMaskDefines(mesh) {var renderer = this.layer.getRenderer();if (renderer) {renderer.updateMaskDefines(mesh);}} }, { key: \"_getPositionMatrix\", value: function _getPositionMatrix(out) {var heightScale = this._getPointZ(100) / 100;var positionMatrix = _reshader.mat4.identity(out);_reshader.mat4.scale(positionMatrix, positionMatrix, [1, 1, heightScale]);return positionMatrix;} }, { key: \"_getLocalTransform\", value: function _getLocalTransform(out, tileInfo, terrainWidth) {var map = this.getMap();var tileSize = this.layer.getTileSize().width;var scale = tileInfo.res / map.getGLRes();var terrainScale = tileSize / (terrainWidth - 1);var extent2d = tileInfo.extent2d,offset = tileInfo.offset;_reshader.vec3.set(V3, (extent2d.xmin - offset[0]) * scale, (tileInfo.extent2d.ymax - offset[1]) * scale, 0);var localTransform = _reshader.mat4.identity(out);_reshader.mat4.translate(localTransform, localTransform, V3);_reshader.vec3.set(SCALE3, scale * terrainScale, scale * terrainScale, 1);_reshader.mat4.scale(localTransform, localTransform, SCALE3);return localTransform;} }, { key: \"prepareMesh\", value: function prepareMesh(mesh, tileInfo, terrainImage) {if (!mesh.isValid()) {return;}var terrainGeo = terrainImage.mesh;this._updateMaskDefines(mesh);var triangles = terrainGeo.triangles,numTrianglesWithoutSkirts = terrainGeo.numTrianglesWithoutSkirts,terrainWidth = terrainGeo.terrainWidth;mesh.localTransform = this._getLocalTransform(mesh.localTransform || [], tileInfo, terrainWidth);mesh.positionMatrix = this._getPositionMatrix(mesh.positionMatrix || []);mesh.properties.skirtOffset = numTrianglesWithoutSkirts * 3;mesh.properties.skirtCount = triangles.length - numTrianglesWithoutSkirts * 3;mesh.properties.z = tileInfo.z;mesh.properties.minHeight = terrainGeo.minHeight;mesh.properties.maxHeight = terrainGeo.maxHeight;mesh.properties.terrainWidth = terrainWidth;mesh.castShadow = false;if (!hasOwn(mesh.uniforms, 'minAltitude')) {Object.defineProperty(mesh.uniforms, 'minAltitude', { enumerable: true, get: function get() {return terrainImage.minAltitude || 0;} });}} }, { key: \"addTerrainImage\", value: function addTerrainImage(tileInfo, tileImage) {var mesh = tileImage.terrainMesh;if (mesh && mesh.geometry && tileImage.skin) {mesh.setUniform('skin', tileImage.skin.color[0]);mesh.setUniform('polygonOpacity', 1.0);this._leafScene.addMesh(mesh);}} }, { key: \"endFrame\", value: function endFrame(context$1) {var _this35 = this;this.updateIBLDefines(this.shader);var renderCount = 0;var uniforms = this.getUniformValues();var fbo = this._getRenderFBO(context$1);this.shader.filter = context$1 && context$1.sceneFilter;setIncludeUniformValues(uniforms, context$1);this._leafScene.getMeshes().forEach(function (mesh) {_this35._updateMaskDefines(mesh);});renderCount += this.renderer.render(this.shader, uniforms, this._leafScene, fbo);return renderCount;} }, { key: \"delete\", value: function _delete() {if (this.shader) {this.shader.dispose();delete this.shader;}if (this._emptyTileTexture) {this._emptyTileTexture.destroy();delete this._emptyTileTexture;}if (this._emptyTerrainGeometry) {this._emptyTerrainGeometry.dispose();delete this._emptyTerrainGeometry;}} }, { key: \"deleteMesh\", value: function deleteMesh(terrainMesh) {if (!terrainMesh) {return;}var geo = terrainMesh.geometry;terrainMesh.dispose();if (geo !== this._emptyTerrainGeometry) {geo.dispose();}} }, { key: \"initShader\", value: function initShader(context$1) {var projViewModelMatrix = [],modelViewMatrix = [];var defines = {};var uniformDeclares = [];fillIncludes(defines, uniformDeclares, context$1);this.shader = new reshader.MeshShader({ vert: vert, frag: frag, uniforms: uniformDeclares.concat([{ name: 'modelViewMatrix', type: 'function', fn: function fn(context, props) {return _reshader.mat4.multiply(modelViewMatrix, props['viewMatrix'], props['modelMatrix']);} }, { name: 'projViewModelMatrix', type: 'function', fn: function fn(context, props) {return _reshader.mat4.multiply(projViewModelMatrix, props['projViewMatrix'], props['modelMatrix']);} }]), defines: defines, extraCommandProps: this.getExtraCommandProps() });} }, { key: \"getExtraCommandProps\", value: function getExtraCommandProps() {var _this36 = this;var canvas = this.layer.getRenderer().canvas;var extraCommandProps = { viewport: { x: 0, y: 0, width: function width() {return canvas ? canvas.width : 1;}, height: function height() {return canvas ? canvas.height : 1;} }, stencil: { enable: false }, cull: { enable: true, face: 'back' }, depth: { enable: true, mask: function mask() {var depthMask = _this36.layer.options['depthMask'];return !!depthMask;}, func: this.layer.options['depthFunc'] || '<=' }, blend: { enable: true, func: { src: this.layer.options.blendSrc, dst: this.layer.options.blendDst }, equation: 'add' } };return extraCommandProps;} }, { key: \"_getRenderFBO\", value: function _getRenderFBO(context) {return context && context.renderTarget && context.renderTarget.fbo;} }, { key: \"getUniformValues\", value: function getUniformValues() {var map = this.getMap();var projViewMatrix = map.projViewMatrix;var renderer = this.layer.getRenderer();var maskUniforms = renderer.getMaskUniforms();var uniforms = { viewMatrix: map.viewMatrix, projMatrix: map.projMatrix, projViewMatrix: projViewMatrix, heightScale: 1 };extend(uniforms, maskUniforms);return uniforms;} }, { key: \"_getPointZ\", value: function _getPointZ(height) {var map = this.layer.getMap();if (!map) {return null;}var altitude = map.altitudeToPoint(height, map.getGLRes());return altitude;} }, { key: \"getEmptyTexture\", value: function getEmptyTexture() {return this._emptyTileTexture;} }, { key: \"hasIBL\", value: function hasIBL() {var lightManager = this.getMap().getLightManager();var resource = lightManager && lightManager.getAmbientResource();return !!resource;} }, { key: \"updateIBLDefines\", value: function updateIBLDefines(shader) {var shaderDefines = shader.shaderDefines;var updated = false;if (this.hasIBL()) {if (!shaderDefines[['HAS_IBL_LIGHTING']]) {shaderDefines['HAS_IBL_LIGHTING'] = 1;updated = true;}} else if (shaderDefines[['HAS_IBL_LIGHTING']]) {delete shaderDefines['HAS_IBL_LIGHTING'];updated = true;}if (updated) {shader.shaderDefines = shaderDefines;}} }, { key: \"_createEmptyTerrainGeo\", value: function _createEmptyTerrainGeo() {var emptyTerrainGeo = EMPTY_TERRAIN_GEO;var positions = emptyTerrainGeo.positions,texcoords = emptyTerrainGeo.texcoords,triangles = emptyTerrainGeo.triangles;this._emptyTerrainGeometry = new reshader.Geometry({ aPosition: positions, aTexCoord: texcoords }, triangles, 0);this._emptyTerrainGeometry.generateBuffers(this.regl);} }]);}();var _reshader$pbr$PBRUtil3 = reshader.pbr.PBRUtils,getIBLResOnCanvas = _reshader$pbr$PBRUtil3.getIBLResOnCanvas,getPBRUniforms = _reshader$pbr$PBRUtil3.getPBRUniforms,loginIBLResOnCanvas = _reshader$pbr$PBRUtil3.loginIBLResOnCanvas,logoutIBLResOnCanvas = _reshader$pbr$PBRUtil3.logoutIBLResOnCanvas;var DEFAULT_MATERIAL = { baseColorFactor: [1, 1, 1, 1], emissiveFactor: [0, 0, 0], baseColorIntensity: 1, emitColorFactor: 1, roughnessFactor: 1, metallicFactor: 0, emitMultiplicative: 1, outputSRGB: 1, hsv: [0, 0, 0], contrast: 1, alphaTest: 0 };var TerrainLitPainter = function (_TerrainPainter) {function TerrainLitPainter() {var _this37;_classCallCheck(this, TerrainLitPainter);for (var _len5 = arguments.length, args = new Array(_len5), _key7 = 0; _key7 < _len5; _key7++) {args[_key7] = arguments[_key7];}_this37 = _callSuper(this, TerrainLitPainter, [].concat(args));_this37.createIBLTextures();_this37._matVer = 0;return _this37;}_inherits(TerrainLitPainter, _TerrainPainter);return _createClass(TerrainLitPainter, [{ key: \"updateMaterial\", value: function updateMaterial(mat, matVer) {this._matVer = matVer;this._material = this._material || {};extend(this._material, mat);this.setToRedraw();} }, { key: \"setMaterial\", value: function setMaterial(mat, matVer) {this._matVer = matVer;this._material = extend({}, DEFAULT_MATERIAL, mat);this.setToRedraw();} }, { key: \"createIBLTextures\", value: function createIBLTextures() {var canvas = this.getMap().getRenderer().canvas;loginIBLResOnCanvas(canvas, this.regl, this.getMap());this.layer.fire('iblupdated');} }, { key: \"disposeIBLTextures\", value: function disposeIBLTextures() {var canvas = this.getMap().getRenderer().canvas;logoutIBLResOnCanvas(canvas, this.getMap());} }, { key: \"createTerrainMesh\", value: function createTerrainMesh(tileInfo, terrainImage) {var terrainGeo = terrainImage.mesh,heightTexture = terrainImage.image;var positions = terrainGeo.positions,texcoords = terrainGeo.texcoords,triangles = terrainGeo.triangles,leftSkirtIndex = terrainGeo.leftSkirtIndex,rightSkirtIndex = terrainGeo.rightSkirtIndex,bottomSkirtIndex = terrainGeo.bottomSkirtIndex,numVerticesWithoutSkirts = terrainGeo.numVerticesWithoutSkirts;var normals = new Int8Array(positions.length);for (var _i30 = 2; _i30 < normals.length; _i30 += 3) {if (_i30 < numVerticesWithoutSkirts * 3) {normals[_i30] = 1;} else if (_i30 < leftSkirtIndex / 2 * 3) {normals[_i30 - 2] = -1;} else if (_i30 < rightSkirtIndex / 2 * 3) {normals[_i30 - 2] = 1;} else if (_i30 < bottomSkirtIndex / 2 * 3) {normals[_i30 - 1] = -1;} else {normals[_i30 - 1] = 1;}}var geo = new reshader.Geometry({ aPosition: positions, aTexCoord: texcoords, aNormal: normals }, triangles, 0);geo.createTangent();delete geo.data.aNormal;geo.generateBuffers(this.regl);var terrainHeightTexture;if (heightTexture) {terrainHeightTexture = this.regl.texture({ width: heightTexture.width, height: heightTexture.height, data: heightTexture, min: 'linear', mag: 'linear' });} else {terrainHeightTexture = this.getEmptyTexture();}var emptyTexture = this.getEmptyTexture();var matInfo = extend({}, DEFAULT_MATERIAL, this.layer.options['material'] || {});matInfo.skinTexture = emptyTexture;matInfo.terrainHeightTexture = terrainHeightTexture;var material = new reshader.pbr.StandardMaterial(matInfo);var mesh = new reshader.Mesh(geo, material);mesh.properties.matVer = this._matVer;var defines = mesh.defines;defines['HAS_UV_FLIP'] = 1;defines['HAS_TERRAIN_NORMAL'] = 1;defines['HAS_MAP'] = 1;mesh.defines = defines;mesh.setUniform('terrainTileResolution', tileInfo.res);this.prepareMesh(mesh, tileInfo, terrainImage);return mesh;} }, { key: \"addTerrainImage\", value: function addTerrainImage(tileInfo, tileImage) {var mesh = tileImage.terrainMesh;if (mesh) {if (this._material && mesh.properties.matVer !== this._matVer) {for (var _p6 in this._material) {mesh.material.set(_p6, this._material[_p6]);}mesh.properties.matVer = this._matVer;}if (tileImage.skin) {mesh.material.set('skinTexture', tileImage.skin);}mesh.setUniform('polygonOpacity', 1.0);this._leafScene.addMesh(mesh);}} }, { key: \"getUniformValues\", value: function getUniformValues() {var map = this.getMap();var canvas = map.getRenderer().canvas;var _getIBLResOnCanvas = getIBLResOnCanvas(canvas),iblTexes = _getIBLResOnCanvas.iblTexes,dfgLUT = _getIBLResOnCanvas.dfgLUT;var uniforms = getPBRUniforms(map, iblTexes, dfgLUT);var tileSize = this.layer.getTileSize().width;var renderer = this.layer.getRenderer();var maskUniforms = renderer.getMaskUniforms();var terrainHeightScale = this._getPointZ(100) / 100;extend(uniforms, { viewMatrix: map.viewMatrix, projMatrix: map.projMatrix, projViewMatrix: map.projViewMatrix, outSize: [canvas.width, canvas.height], polygonFill: [1, 1, 1, 1], terrainHeightMapResolution: [tileSize, tileSize], terrainResolution: [canvas.width, canvas.height], terrainHeightScale: terrainHeightScale, terrainUnpackFactors: [6553.6, 25.6, 0.1, 10000.0] });extend(uniforms, maskUniforms);return uniforms;} }, { key: \"initShader\", value: function initShader(context$1) {var defines = {};var uniformDeclares = [];fillIncludes(defines, uniformDeclares, context$1);this.shader = new reshader.pbr.StandardShader({ uniforms: uniformDeclares, defines: defines, extraCommandProps: this.getExtraCommandProps() });} }, { key: \"delete\", value: function _delete() {this.disposeIBLTextures();return _superPropGet(TerrainLitPainter, \"delete\", this, 3)([]);} }]);}(TerrainPainter);function renderExtentMap(extent, projViewMatrix, ratio, minHeight) {var maskMeshes = getMaskMeshes.call(this, ratio, minHeight);this['_projViewMatrix'] = projViewMatrix;var _this$_extentPass$ren = this['_extentPass'].render(maskMeshes, projViewMatrix),colorExtent = _this$_extentPass$ren.colorExtent,modeExtent = _this$_extentPass$ren.modeExtent;this['_maskUniforms'] = this['_maskUniforms'] || {};this['_maskUniforms']['mask_colorExtent'] = colorExtent;this['_maskUniforms']['mask_extent'] = extent;this['_maskUniforms']['mask_modeExtent'] = modeExtent;this['_maskUniforms']['mask_hasFlatOut'] = hasOutMask.call(this, 'flat-outside');this['_maskUniforms']['mask_hasClipOut'] = hasOutMask.call(this, 'clip-outside');this['_maskUniforms']['mask_hasVideo'] = hasOutMask.call(this, 'video');this['_maskUniforms']['mask_heightRatio'] = ratio;this['_maskUniforms']['mask_heightOffset'] = minHeight;this.setToRedraw();}function getMaskMeshes(ratio, minHeight) {var meshes = [];var masks = this.layer.getMasks();for (var _i31 = 0; _i31 < masks.length; _i31++) {var mesh = masks[_i31].getMesh(this.regl, ratio, minHeight);if (mesh) {meshes.push(mesh);}}return meshes;}function updateVideoMask() {if (!this['_extentPass'] || !this['_maskUniforms']) {return;}var ratio = this['_maskUniforms']['mask_heightRatio'];var minHeight = this['_maskUniforms']['mask_heightOffset'];var maskMeshes = getMaskMeshes.call(this, ratio, minHeight);this['_extentPass'].render(maskMeshes, this['_projViewMatrix']);var masks = this.layer.getMasks();for (var _i32 = 0; _i32 < masks.length; _i32++) {if (masks[_i32]._update) {masks[_i32]._update();}}}function hasOutMask(outType) {var masks = this.layer.getMasks();for (var _i33 = 0; _i33 < masks.length; _i33++) {if (masks[_i33].getMode() === outType) {return 1;}}return 0;}function hasPlayingVideoMask() {var masks = this.layer.getMasks();if (!masks) {return false;}for (var _i34 = 0; _i34 < masks.length; _i34++) {if (masks[_i34]._needUpdate) {return masks[_i34]._needUpdate();}}return false;}function MaskRendererMixin(Base) {return function (_Base) {function _class2() {_classCallCheck(this, _class2);return _callSuper(this, _class2, arguments);}_inherits(_class2, _Base);return _createClass(_class2, [{ key: \"setMask\", value: function setMask(extent, projViewMatrix, ratio, minHeight) {var _this38 = this;if (!this.viewport) {this.viewport = { x: 0, y: 0, width: function width() {return _this38.canvas ? _this38.canvas.width : 1;}, height: function height() {return _this38.canvas ? _this38.canvas.height : 1;} };}if (!this['_extentPass']) {if (this.regl) {this['_extentPass'] = new reshader.ExtentPass(this.regl, this.viewport);renderExtentMap.call(this, extent, projViewMatrix, ratio, minHeight);} else {this.layer.once('contextcreate', function () {_this38['_extentPass'] = new reshader.ExtentPass(_this38.regl, _this38.viewport);renderExtentMap.call(_this38, extent, projViewMatrix, ratio, minHeight);}, this);}} else {renderExtentMap.call(this, extent, projViewMatrix, ratio, minHeight);}} }, { key: \"needToRedraw\", value: function needToRedraw() {if (_superPropGet(_class2, \"needToRedraw\", this, 3)([])) {return true;}if (hasPlayingVideoMask.call(this)) {return true;}return false;} }, { key: \"getMaskUniforms\", value: function getMaskUniforms() {if (hasPlayingVideoMask.call(this)) {updateVideoMask.call(this);}this.layer.updateMaskExtent();return this['_maskUniforms'];} }, { key: \"getMaskDefines\", value: function getMaskDefines() {if (!this['_maskDefines']) {this['_maskDefines'] = {};}if (this['_maskUniforms'] && this['_maskUniforms']['mask_colorExtent']) {this['_maskDefines']['HAS_MASK_EXTENT'] = 1;} else {delete this['_maskDefines']['HAS_MASK_EXTENT'];}return this._maskDefines;} }, { key: \"updateMaskDefines\", value: function updateMaskDefines(mesh) {var defines = mesh.getDefines();delete defines['HAS_MASK_EXTENT'];var maskDefines = this.getMaskDefines();extend(defines, maskDefines);mesh.setDefines(defines);} }, { key: \"_clearMask\", value: function _clearMask() {this._deleteMaskUniforms();if (this._extentPass) {this._extentPass.dispose();delete this._extentPass;}this.setToRedraw();} }, { key: \"_deleteMaskUniforms\", value: function _deleteMaskUniforms() {delete this._maskUniforms;} }]);}(Base);}var LRUPool = function () {function LRUPool(max, onRemove) {_classCallCheck(this, LRUPool);this.max = max;this.onRemove = onRemove;this.reset();}return _createClass(LRUPool, [{ key: \"reset\", value: function reset() {if (this.data) {var values = this.data.values();var _iterator8 = _createForOfIteratorHelper(values),_step8;try {for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {var _p7 = _step8.value;this.onRemove(_p7);}} catch (err) {_iterator8.e(err);} finally {_iterator8.f();}}this.data = new Map();return this;} }, { key: \"clear\", value: function clear() {this.reset();delete this.onRemove;} }, { key: \"add\", value: function add(key, data) {if (!data) {return this;}if (this.has(key)) {this.data.delete(key);this.data.set(key, data);} else {this.data.set(key, data);}return this;} }, { key: \"keys\", value: function keys() {var keys = new Array(this.data.size);var i = 0;var iterator = this.data.keys();var _iterator9 = _createForOfIteratorHelper(iterator),_step9;try {for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {var k = _step9.value;keys[i++] = k;}} catch (err) {_iterator9.e(err);} finally {_iterator9.f();}return keys;} }, { key: \"has\", value: function has(key) {return this.data.has(key);} }, { key: \"getAndRemove\", value: function getAndRemove(key) {if (!this.has(key)) {return null;}var data = this.data.get(key);this.data.delete(key);return data;} }, { key: \"get\", value: function get(key) {if (!this.has(key)) {return null;}var data = this.data.get(key);return data;} }, { key: \"pop\", value: function pop() {if (this.data.size < this.max) {return null;}var first = this.data.keys().next();var data = this.data.get(first.value);if (data.current) {this.max += Math.ceil(this.max / 2);return null;}return this.getAndRemove(first.value);} }, { key: \"remove\", value: function remove(key) {if (!this.has(key)) {return this;}var data = this.data.get(key);this.data.delete(key);this.onRemove(data);return this;} }, { key: \"resetCurrent\", value: function resetCurrent(current) {if (!this.data) {return;}this.data.forEach(function (v) {v.current = current;});} }]);}();var POINT0$1 = new maptalks.Point(0, 0);var POINT1 = new maptalks.Point(0, 0);var TEMP_EXTENT = new maptalks.PointExtent(0, 0, 0, 0);var TEMP_POINT$3 = new maptalks.Point(0, 0);var DEBUG_POINT = new maptalks.Point(20, 20);var TERRAIN_CLEAR = { color: [0, 0, 0, 0], depth: 1, stencil: 0 };function terrainExaggeration(terrainData) {var exaggeration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;if (isNil$1(exaggeration) || !terrainData || !terrainData.mesh || exaggeration === 1) {return;}var positions = terrainData.mesh.positions;if (!positions) {return;}for (var _i35 = 0, len = positions.length; _i35 < len; _i35 += 3) {positions[_i35 + 2] *= exaggeration;}}var TerrainLayerRenderer = function (_MaskRendererMixin) {function TerrainLayerRenderer() {_classCallCheck(this, TerrainLayerRenderer);return _callSuper(this, TerrainLayerRenderer, arguments);}_inherits(TerrainLayerRenderer, _MaskRendererMixin);return _createClass(TerrainLayerRenderer, [{ key: \"isDrawable\", value: function isDrawable() {return true;} }, { key: \"getTempTileOnLoading\", value: function getTempTileOnLoading(tileInfo, tile) {if (tile.image && !tile.image.reset) {return tile;}var tempTerrain = this._createTerrainFromParent(tileInfo);tempTerrain.temp = true;if (!tile.image) {tile.image = tempTerrain;}delete tile.image.reset;tile.current = true;tile.info = tileInfo;extend(tile.image, tempTerrain);this._createMesh(tile.image, tileInfo);return tile;} }, { key: \"_resetTerrainImage\", value: function _resetTerrainImage(info, image, skinImagesToDel) {image.reset = true;delete image.data;delete image.loadTime;delete image.rendered;delete image.minAltitude;var refKey = info.id + '-temp';var skinImages = image.skinImages;if (skinImages) {for (var _i36 = 0; _i36 < skinImages.length; _i36++) {var cachedImages = skinImages[_i36];if (!cachedImages) {continue;}for (var ii = 0; ii < cachedImages.length; ii++) {var cached = cachedImages[ii];if (!cached) {continue;}cached.refs.delete(refKey);if (!cached.refs.size) {skinImagesToDel.push(cached);}}delete cachedImages.currentSkins;delete cachedImages.tileIds;}}delete image.sourceZoom;delete image.skinImages;delete image.skinStatus;delete image.skinTileIds;if (image.debugTexture) {image.debugTexture.destroy();delete image.debugTexture;}} }, { key: \"_createTerrainFromParent\", value: function _createTerrainFromParent(tile, parentTile) {parentTile = parentTile || this.findParentTile(tile);while (parentTile && parentTile.image && (parentTile.image.sourceZoom === -1 || parentTile.image.originalError)) {parentTile = this.findParentTile(parentTile.info);}var res = (parentTile && parentTile.info || tile).res;var error = this.getMap().pointAtResToDistance(1, 1, res);var heights = parentTile && parentTile.image && parentTile.image.data && this._clipParentTerrain(parentTile, tile);var sourceZoom = heights && parentTile.image.sourceZoom !== -1 ? parentTile.info.z : -1;if (!heights || heights.width <= 1) {var minAltitude = this._findTileMinAltitude(tile, parentTile);return { data: createEmtpyTerrainHeights(minAltitude || 0, 5), minAltitude: minAltitude, mesh: EMPTY_TERRAIN_GEO, sourceZoom: sourceZoom };}var terrainWidth = heights.width;var mesh = createMartiniData(error, heights.data, terrainWidth);return { data: heights, mesh: mesh, sourceZoom: sourceZoom };} }, { key: \"_findTileMinAltitude\", value: function _findTileMinAltitude(tile, parentTile) {if (parentTile && parentTile.minAltitude) {return parentTile.minAltitude;}var idx = tile.idx,idy = tile.idy,z = tile.z;for (var _i37 = -1; _i37 <= 1; _i37++) {for (var j = -1; j <= 1; j++) {if (_i37 === 0 && j === 0) {continue;}var id = this.layer.getTileId(idx + _i37, idy + j, z);var tileInfoCache = this.layer.tileInfoCache;var info = tileInfoCache && tileInfoCache.get(id);if (info && info.minAltitude) {return info.minAltitude;}}}return 0;} }, { key: \"consumeTile\", value: function consumeTile(tileImage, tileInfo) {if (tileImage.empty && !tileImage.mesh) {var parentTile = this.findParentTile(tileInfo);if (!parentTile || parentTile.image && parentTile.image.empty) {tileImage.mesh = EMPTY_TERRAIN_GEO;var minAltitude = this._findTileMinAltitude(tileInfo);tileImage.data = createEmtpyTerrainHeights(minAltitude || 0, 5);tileImage.minAltitude = minAltitude;tileImage.sourceZoom = -1;} else {tileImage = this._createTerrainFromParent(tileInfo, parentTile);}}this._createMesh(tileImage, tileInfo);_superPropGet(TerrainLayerRenderer, \"consumeTile\", this, 3)([tileImage, tileInfo]);this._recenterMapOnTerrain(tileInfo);} }, { key: \"_createMesh\", value: function _createMesh(tileImage, tileInfo) {if (tileImage && tileImage.mesh) {tileImage.terrainMesh = this._painter.createTerrainMesh(tileInfo, tileImage);tileInfo.minAltitude = tileImage.data.min;tileInfo.maxAltitude = tileImage.data.max;delete tileImage.mesh;var tileInfoCache = this.layer.tileInfoCache;if (tileInfoCache && tileInfo.parent && !tileImage.empty && !tileImage.temp) {var parentNode = tileInfoCache.get(tileInfo.parent);if (parentNode) {var minAltitude = tileInfo.minAltitude,maxAltitude = tileInfo.maxAltitude;if (parentNode.minAltitude === undefined || parentNode.minAltitude > minAltitude) {parentNode.minAltitude = minAltitude;}if (parentNode.maxAltitude === undefined || parentNode.maxAltitude < maxAltitude) {parentNode.maxAltitude = maxAltitude;}}}}} }, { key: \"_recenterMapOnTerrain\", value: function _recenterMapOnTerrain(tileInfo) {var map = this.getMap();if (map.updateCenterAltitude && map.centerAltitude === undefined && tileInfo.z === this.getCurrentTileZoom()) {var prjCenter = map['_getPrjCenter']();var centerPoint = map['_prjToPointAtRes'](prjCenter, tileInfo.res, TEMP_POINT$3);if (tileInfo.extent2d.contains(centerPoint)) {map.updateCenterAltitude();}}} }, { key: \"draw\", value: function draw(timestamp, parentContext) {this._createPainter();this._painter.startFrame(parentContext);_superPropGet(TerrainLayerRenderer, \"draw\", this, 3)([timestamp, parentContext]);this._endFrame(parentContext);} }, { key: \"drawTile\", value: function drawTile(tileInfo, tileImage) {var map = this.getMap();if (!tileInfo || !map || !tileImage) {return;}if (!this.drawingCurrentTiles && !this.drawingChildTiles) {return;}var opacity = this.drawingCurrentTiles ? this.getTileOpacity(tileImage) : 1;opacity *= this.layer.options.opacity || 1;this._painter.addTerrainImage(tileInfo, tileImage, opacity);} }, { key: \"_drawTiles\", value: function _drawTiles(tiles, parentTiles, childTiles, placeholders, context, missedTiles) {var skinImagesToDel = [];var tempTiles = this._getTempTilesForMissed(missedTiles, skinImagesToDel);pushIn(tiles, tempTiles);this._newTerrainTileCounter = 0;var skinCount = this.layer.getSkinCount();var visitedSkinTiles = new Set();for (var _i38 = 0; _i38 < skinCount; _i38++) {this._renderChildTerrainSkin(_i38, tiles, visitedSkinTiles, skinImagesToDel);}for (var _i39 = 0; _i39 < tiles.length; _i39++) {this._renderTerrainMeshSkin(tiles[_i39].info, tiles[_i39].image);}for (var _i40 = 0; _i40 < skinImagesToDel.length; _i40++) {if (skinImagesToDel[_i40]) {if (skinImagesToDel[_i40].texture && !skinImagesToDel[_i40].refs.size) {this._skinImageCache.delete(skinImagesToDel[_i40].tile.id);this._deleteSkinImage(skinImagesToDel[_i40]);}}}this._clearCachdeSkinImages();return _superPropGet(TerrainLayerRenderer, \"_drawTiles\", this, 3)(arguments);} }, { key: \"_getTempTilesForMissed\", value: function _getTempTilesForMissed(missedTiles, skinImagesToDel) {var _this39 = this;var tempTiles = [];var pool = this._tempTilesPool;if (!pool) {pool = this._tempTilesPool = new LRUPool(this.layer.options['tempTileCacheSize'], function (tile) {var info = tile.info,image = tile.image;_this39._deleteTerrainImage(info, image);});}pool.resetCurrent(false);for (var _i41 = 0; _i41 < missedTiles.length; _i41++) {var tileInfo = missedTiles[_i41];var tile = void 0;if (pool.has(tileInfo.id)) {tile = pool.getAndRemove(tileInfo.id);} else {tile = pool.pop();if (!tile) {tile = { info: tileInfo };} else if (tile.image) {this._resetTerrainImage(tile.info, tile.image, skinImagesToDel);tile.image.temp = true;}}tile.current = true;pool.add(tileInfo.id, tile);tempTiles.push(tile);}for (var _i42 = 0; _i42 < missedTiles.length; _i42++) {this.getTempTileOnLoading(missedTiles[_i42], tempTiles[_i42]);}return tempTiles;} }, { key: \"_clearCachdeSkinImages\", value: function _clearCachdeSkinImages() {var _this40 = this;if (!this._skinImageCache) {return;}var currentTimestamp = this.getCurrentTimestamp();if (this._clearSkinImageTimestamp && currentTimestamp - this._clearSkinImageTimestamp < 1000) {return;}var currentImages = new Set();var _iterator10 = _createForOfIteratorHelper(this.tileCache.data.values()),_step10;try {for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {var _tile2 = _step10.value;this._collectSkinImages(_tile2, currentImages);}} catch (err) {_iterator10.e(err);} finally {_iterator10.f();}for (var _p8 in this.tilesInView) {var tile = this.tilesInView[_p8];this._collectSkinImages(tile, currentImages);}if (this._tempTilesPool) {var _iterator11 = _createForOfIteratorHelper(this._tempTilesPool.data.values()),_step11;try {for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {var _tile = _step11.value;this._collectSkinImages(_tile, currentImages);}} catch (err) {_iterator11.e(err);} finally {_iterator11.f();}}if (!currentImages.size) {return;}this._skinImageCache.forEach(function (v, id) {if (!currentImages.has(id)) {console.log('deleted:', id);_this40._deleteSkinImage(_this40._skinImageCache.get(id));_this40._skinImageCache.delete(id);}});this._clearSkinImageTimestamp = currentTimestamp;} }, { key: \"_collectSkinImages\", value: function _collectSkinImages(tile, currentImages) {var skinImages = tile.image && tile.image.skinImages;if (!skinImages || !skinImages.length) {return;}for (var _i43 = 0; _i43 < skinImages.length; _i43++) {var currentSkins = skinImages[_i43] && skinImages.currentSkins;if (currentSkins) {var _iterator12 = _createForOfIteratorHelper(currentSkins),_step12;try {for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) {var tileId = _step12.value;currentImages.add(tileId);}} catch (err) {_iterator12.e(err);} finally {_iterator12.f();}}}} }, { key: \"_renderChildTerrainSkin\", value: function _renderChildTerrainSkin(skinIndex, terrainTiles, visitedSkinTiles, skinImagesToDel) {var skinLayer = this.layer.getSkinLayer(skinIndex);var renderer = skinLayer.getRenderer();if (!renderer) {return;}var layerSkinImages = [];for (var _i44 = 0; _i44 < terrainTiles.length; _i44++) {var _terrainTiles$_i = terrainTiles[_i44],info = _terrainTiles$_i.info,image = _terrainTiles$_i.image;if (this._prepareChildTerrainSkin(skinIndex, info, image, skinImagesToDel)) {var skinImages = terrainTiles[_i44].image.skinImages[skinIndex];for (var j = 0; j < skinImages.length; j++) {var tileId = skinImages[j].tile.info.id;if (!visitedSkinTiles.has(tileId)) {layerSkinImages.push(skinImages[j]);visitedSkinTiles.add(tileId);}}}}renderer.renderTerrainSkin(this.regl, this.layer, layerSkinImages);} }, { key: \"_prepareChildTerrainSkin\", value: function _prepareChildTerrainSkin(skinIndex, terrainTileInfo, tileImage, skinImagesToDel) {var map = this.getMap();delete tileImage.path;if (!terrainTileInfo || !map || !tileImage) {return false;}var mesh = tileImage.terrainMesh;if (!mesh) {return false;}var skinLayer = this.layer.getSkinLayer(skinIndex);var renderer = skinLayer.getRenderer();if (!renderer) {return false;}if (!tileImage.skinImages) {tileImage.skinImages = [];}if (!tileImage.skinStatus) {tileImage.skinStatus = [];}if (!tileImage.skinTileIds) {tileImage.skinTileIds = [];}var isAnimating = renderer.isAnimating && renderer.isAnimating();var status = tileImage.skinStatus[skinIndex];var isLayerAskToRefresh = renderer.needToRefreshTerrainTileOnZooming && renderer.needToRefreshTerrainTileOnZooming();var needRefreshTerrainTile = isAnimating || isLayerAskToRefresh && tileImage.renderedZoom !== map.getZoom();if (status && !needRefreshTerrainTile) {return false;}var sr = skinLayer.getSpatialReference();var x = terrainTileInfo.x,y = terrainTileInfo.y,z = terrainTileInfo.z,res = terrainTileInfo.res,offset = terrainTileInfo.offset;var nw = terrainTileInfo.nw;if (!nw) {nw = terrainTileInfo.nw = this.getMap().pointAtResToCoord(terrainTileInfo.extent2d.getMin(POINT0$1), terrainTileInfo.res);}var tileSize = this.layer.getTileSize().width;var _getSkinTileRes = getSkinTileRes(sr, z, res),myRes = _getSkinTileRes.res,zoom = _getSkinTileRes.zoom;var myTileSize = skinLayer.getTileSize().width;var scale = getSkinTileScale(myRes, myTileSize, res, tileSize);var skinTileIds = tileImage.skinTileIds[skinIndex];if (!skinTileIds) {var terrainTileScaleY = this.layer['_getTileConfig']().tileSystem.scale.y;var maxAvailableZoom = skinLayer.options.maxAvailableZoom;if (!isNil$1(maxAvailableZoom) && maxAvailableZoom >= 0 && zoom > maxAvailableZoom) {scale *= Math.pow(2, maxAvailableZoom - zoom);zoom = maxAvailableZoom;}skinTileIds = tileImage.skinTileIds[skinIndex] = getCascadeTileIds(skinLayer, x, y, zoom, nw, offset, terrainTileScaleY, scale, SKIN_LEVEL_LIMIT);}var level0 = skinTileIds['0'];var complete = true;var tiles = [];for (var _i45 = 0; _i45 < level0.length; _i45++) {var cachedTile = renderer.getCachedTile(level0[_i45], false);if (!cachedTile) {complete = false;var parentTile = renderer.findParentTile(level0[_i45]);if (parentTile) {tiles.push(parentTile);}continue;}tiles.push(cachedTile);}var skinImages = tileImage.skinImages[skinIndex] || [];skinImages.currentSkins = skinImages.currentSkins || new Set();var prevSkins = new Set();var skinImageRetired = false;for (var _i46 = 0; _i46 < skinImages.length; _i46++) {if (!skinImages[_i46].tile) {skinImageRetired = true;continue;}var id = skinImages[_i46].tile.info.id;prevSkins.add(id);}if (!tiles.length) {skinImages.currentSkins.clear();tileImage.skinImages[skinIndex] = [];return false;}var ids = tiles.length ? tiles.map(function (t) {return t.info.id;}).join() : tiles[0].info.id;if (!needRefreshTerrainTile && !skinImageRetired && skinImages.tileIds === ids) {return false;}skinImages.tileIds = ids;var updated = false;skinImages.currentSkins.clear();skinImages.length = 0;var currentSkins = skinImages.currentSkins;var refKey = terrainTileInfo.id;if (tileImage.temp) {refKey += '-temp';}for (var _i47 = 0; _i47 < tiles.length; _i47++) {var tileId = tiles[_i47].info.id;currentSkins.add(tileId);var cached = this._getCachedSkinImage(tileId);if (!cached || !isValidSkinImage(cached)) {cached = { tile: extend({}, tiles[_i47]), layer: skinLayer, refs: new Set(), texture: renderer.createTerrainTexture(this.regl) };this._saveCachedSkinImage(tileId, cached);}cached.refs.add(refKey);skinImages.push(cached);updated = true;}this._clearPrevSkinImages(terrainTileInfo, tileImage, prevSkins, currentSkins, skinImagesToDel);if (updated) {this._newTerrainTileCounter++;}tileImage.skinImages[skinIndex] = skinImages;skinLayer.fire('renderterrainskin', { tile: terrainTileInfo, skinTiles: tiles });if (complete) {tileImage.skinStatus[skinIndex] = 1;}return true;} }, { key: \"_clearPrevSkinImages\", value: function _clearPrevSkinImages(terrainTileInfo, tileImage, prevSkins, currentSkins, skinImagesToDel) {if (!prevSkins.size) {return;}var refKey = terrainTileInfo.id;if (tileImage.temp) {refKey += '-temp';}var _iterator13 = _createForOfIteratorHelper(prevSkins),_step13;try {for (_iterator13.s(); !(_step13 = _iterator13.n()).done;) {var tileId = _step13.value;if (!currentSkins || !currentSkins.has(tileId)) {var cached = this._getCachedSkinImage(tileId);this._deleteCachedSkinImage(cached, refKey, skinImagesToDel);}}} catch (err) {_iterator13.e(err);} finally {_iterator13.f();}} }, { key: \"_getCachedSkinImage\", value: function _getCachedSkinImage(id) {if (!this._skinImageCache) {this._skinImageCache = new Map();}return this._skinImageCache.get(id);} }, { key: \"_saveCachedSkinImage\", value: function _saveCachedSkinImage(id, cached) {this._skinImageCache.set(id, cached);} }, { key: \"_renderTerrainMeshSkin\", value: function _renderTerrainMeshSkin(terrainTileInfo, tileImage) {var map = this.getMap();if (!terrainTileInfo || !map || !tileImage) {return;}var skinImages = tileImage.skinImages;var needRefreshSkins = this._needRefreshTerrainSkins(tileImage.renderedZoom);if (tileImage.rendered && !needRefreshSkins) {return;}if (!tileImage.skin) {tileImage.skin = this._createTerrainTexture(terrainTileInfo, tileImage);} else {TERRAIN_CLEAR.framebuffer = tileImage.skin;this.regl.clear(TERRAIN_CLEAR);}this._initSkinShader();var enableDebug = this.layer.options.debug;var meshes = [];var debugMeshes = enableDebug && [];var tileSize = this.layer.getTileSize().width;if (skinImages) {for (var _i48 = 0; _i48 < skinImages.length; _i48++) {var layerSkinImages = skinImages[_i48];for (var ii = 0; ii < layerSkinImages.length; ii++) {var _layerSkinImages$ii = layerSkinImages[ii],tile = _layerSkinImages$ii.tile,_texture = _layerSkinImages$ii.texture,layer = _layerSkinImages$ii.layer;var hasOffset = tile.info.offset[0] || tile.info.offset[1];if (hasOffset && terrainTileInfo.skinTileIds) {var skinTileIds = terrainTileInfo.skinTileIds[layer.getId()];for (var j = 0; j < skinTileIds.length; j++) {if (tile.info.x === skinTileIds[j].x && tile.info.y === skinTileIds[j].y) {tile.info.offset = skinTileIds[j].offset;break;}}}var skinDim = computeSkinDimension(terrainTileInfo, tile, tileSize);var mesh = layerSkinImages[ii].skinMesh || new reshader.Mesh(this._skinGeometry);mesh.setUniform('skinTexture', _texture);var skinTileOpacity = layer.getOpacity();mesh.setUniform('opacity', isNil$1(skinTileOpacity) ? 1 : skinTileOpacity);mesh.setUniform('skinDim', skinDim);mesh.setUniform('tileSize', tileSize);mesh.setUniform('x', terrainTileInfo.x);mesh.setUniform('y', terrainTileInfo.y);layerSkinImages[ii].skinMesh = mesh;meshes.push(mesh);}}}if (enableDebug) {var debugMesh = tileImage.skinDebugMesh || new reshader.Mesh(this._skinGeometry);debugMesh.setUniform('tileSize', tileSize);var debugTexture = tileImage.debugTexture || this._createDebugTexture(terrainTileInfo, tileSize, tileImage.temp);tileImage.debugTexture = debugTexture;tileImage.skinDebugMesh = debugMesh;debugMesh.setUniform('opacity', 1);debugMesh.setUniform('skinTexture', debugTexture);debugMesh.setUniform('skinDim', [0, 0, 1]);debugMesh.setUniform('tileSize', tileSize);debugMeshes.push(debugMesh);}if (meshes.length) {this._skinScene.setMeshes(meshes);try {this.renderer.render(this._skinShader, null, this._skinScene, tileImage.skin);} catch (err) {console.error(tileImage);throw err;}}if (debugMeshes && debugMeshes.length && this.layer.options.debug) {this._skinScene.setMeshes(debugMeshes);this.renderer.render(this._skinShader, null, this._skinScene, tileImage.skin);}tileImage.rendered = this._isSkinReady(tileImage);tileImage.renderedZoom = map.getZoom();} }, { key: \"_createDebugTexture\", value: function _createDebugTexture(tileInfo, tileSize, isTemp) {tileSize *= 2;var x = tileInfo.x,y = tileInfo.y,z = tileInfo.z;var debugInfo = \"terrain:\".concat(x, \"/\").concat(y, \"/\").concat(z) + (isTemp ? '-temp' : '');var canvas = document.createElement('canvas');canvas.width = tileSize;canvas.height = tileSize;var ctx = canvas.getContext('2d');ctx.font = '20px monospace';var color = this.layer.options['debugOutline'];ctx.fillStyle = color;ctx.strokeStyle = color;ctx.fillText(debugInfo, 20, tileSize - 40);ctx.beginPath();ctx.lineWidth = 4;ctx.moveTo(0, 0);ctx.lineTo(tileSize, 0);ctx.lineTo(tileSize, tileSize);ctx.lineTo(0, tileSize);ctx.lineTo(0, 0);ctx.stroke();return this.regl.texture({ data: canvas, flipY: true, mag: 'linear', min: 'linear' });} }, { key: \"_createTerrainTexture\", value: function _createTerrainTexture(tileInfo) {var tileSize = this.layer.getTileSize().width;var width = tileSize * 2;var height = tileSize * 2;var regl = this.regl;var colorsTexture = tileInfo.colorsTexture;var color;if (colorsTexture && colorsTexture instanceof Uint8Array) {color = regl.texture({ data: colorsTexture, min: 'linear', mag: 'linear', type: 'uint8', width: width, height: height, flipY: true });} else {color = regl.texture({ min: 'linear', mag: 'linear', type: 'uint8', width: width, height: height, flipY: true });}var fboInfo = { width: width, height: height, colors: [color], colorFormat: 'rgba', ignoreStatusCheck: true, depthStencil: false, depth: false, stencil: false };var texture = regl.framebuffer(fboInfo);texture.colorTex = color;return texture;} }, { key: \"_endFrame\", value: function _endFrame(context) {var renderCount = this._painter.endFrame(context);if (renderCount && !Object.keys(this.tilesLoading).length) {this.layer.fire('terrainreadyandrender');}} }, { key: \"_clipParentTerrain\", value: function _clipParentTerrain(parentTile, tile) {var image = parentTile.image,info = parentTile.info;var terrainData = image.data;var terrainWidth = terrainData.width;var parentExtent = info.extent2d,parentRes = info.res;var extent2d = tile.extent2d,res = tile.res;var width = parentExtent.getWidth();var height = parentExtent.getHeight();var xmin = (extent2d.xmin * res / parentRes - parentExtent.xmin) / width * (terrainWidth - 1);var ymin = (parentExtent.ymax - extent2d.ymax * res / parentRes) / height * (terrainWidth - 1);var xmax = (extent2d.xmax * res / parentRes - parentExtent.xmin) / width * (terrainWidth - 1);var tileWidth = Math.round(xmax - xmin);var log = Math.log2(tileWidth);tileWidth = Math.pow(2, Math.round(log)) + 1;xmin = Math.floor(xmin);ymin = Math.floor(ymin);var heights = new Float32Array(tileWidth * tileWidth);var min = Infinity;var max = -Infinity;for (var _i49 = 0; _i49 < tileWidth; _i49++) {for (var j = 0; j < tileWidth; j++) {var x = _i49 + xmin;var y = j + ymin;if (x > terrainWidth - 1) {x = terrainWidth - 1;} else if (x < 0) {x = 0;}if (y > terrainWidth - 1) {y = terrainWidth - 1;} else if (y < 0) {y = 0;}var _height2 = terrainData.data[x + y * terrainWidth];heights[_i49 + j * tileWidth] = _height2;if (_height2 < min) {min = _height2;}if (_height2 > max) {max = _height2;}}}return { width: tileWidth, height: tileWidth, data: heights, min: min, max: max };} }, { key: \"getTileOpacity\", value: function getTileOpacity(tileImage) {if (!this._isSkinReady(tileImage)) {this.resetTileLoadTime(tileImage);return 0;}return _superPropGet(TerrainLayerRenderer, \"getTileOpacity\", this, 3)([tileImage]);} }, { key: \"_isSkinReady\", value: function _isSkinReady(tileImage) {var skinCount = this.layer.getSkinCount();if (!skinCount) {return true;}if (!tileImage.skinStatus) {return false;}for (var _i50 = 0; _i50 < skinCount; _i50++) {if (!tileImage.skinStatus[_i50]) {return false;}}return true;} }, { key: \"_needRefreshTerrainSkins\", value: function _needRefreshTerrainSkins(renderedZoom) {var zoom = this.getMap().getZoom();var skinLayers = this.layer.getSkinLayers();for (var _i51 = 0; _i51 < skinLayers.length; _i51++) {var _renderer11 = skinLayers[_i51] && skinLayers[_i51].getRenderer();if (!_renderer11) {continue;}if (_renderer11.isAnimating && _renderer11.isAnimating()) {return true;}if (_renderer11.needToRefreshTerrainTileOnZooming && _renderer11.needToRefreshTerrainTileOnZooming() && renderedZoom !== zoom) {return true;}}return false;} }, { key: \"isValidCachedTile\", value: function isValidCachedTile(tile) {var notInitialized = !tile.image.skinStatus;return tile.image && !tile.image.temp && (notInitialized || this._isSkinReady(tile.image));} }, { key: \"isTileComplete\", value: function isTileComplete(tile) {return tile.image && !tile.image.temp && this._isSkinReady(tile.image);} }, { key: \"_getTerrainWidth\", value: function _getTerrainWidth() {var layerOptions = this.layer.options;var tileSize = this.layer.getTileSize().width;return isNil$1(layerOptions.terrainWidth) ? tileSize / 4 + 1 : layerOptions.terrainWidth;} }, { key: \"_getParentTileRequest\", value: function _getParentTileRequest(tile, createIfNotExists) {var maxAvailableZoom = this.layer.options['maxAvailableZoom'] - this.layer.options['zoomOffset'];var diff = tile.z - maxAvailableZoom;var scale = Math.pow(2, diff);var x = Math.floor(tile.x / scale);var y = Math.floor(tile.y / scale);var idx = Math.floor(tile.idx / scale);var idy = Math.floor(tile.idy / scale);var reqKey = getParentRequestKey(x, y);if (!this._parentRequests) {this._parentRequests = {};}var isFirst = !this._parentRequests[reqKey];if (isFirst && createIfNotExists) {this._parentRequests[reqKey] = new Set();this._parentRequests[reqKey].url = this.layer.getTileUrl(x, y, maxAvailableZoom + this.layer.options['zoomOffset']);}return { x: x, y: y, idx: idx, idy: idy, requests: this._parentRequests[reqKey], isFirst: isFirst, key: reqKey };} }, { key: \"loadTile\", value: function loadTile(tile) {var _this41 = this;var layer = this.layer;var terrainWidth = this._getTerrainWidth();var sp = layer.getSpatialReference();var res = sp.getResolution(tile.z);var error = this.getMap().pointAtResToDistance(1, 1, res);var zoomOffset = layer.options['zoomOffset'] || 0;var maxAvailableZoom = layer.options['maxAvailableZoom'] && layer.options['maxAvailableZoom'] - zoomOffset;if (maxAvailableZoom && tile.z > maxAvailableZoom) {var _terrainData = this._createTerrainFromParent(tile);if (_terrainData.sourceZoom === -1) {var _this$_getParentTileR = this._getParentTileRequest(tile, true),requests = _this$_getParentTileR.requests,isFirst = _this$_getParentTileR.isFirst,x = _this$_getParentTileR.x,y = _this$_getParentTileR.y,idx = _this$_getParentTileR.idx,idy = _this$_getParentTileR.idy;requests.add(tile);if (!isFirst) {return _terrainData;}var diff = tile.z - maxAvailableZoom;error = error * Math.pow(2, diff);var _res = tile.res * Math.pow(2, diff);var args = [x, y, maxAvailableZoom, idx, idy, _res, tile.error * Math.pow(2, diff)];tile = layer.createTileNode ? layer.createTileNode.apply(layer, args) : layer._createTileNode.apply(layer, args);} else {this.onTileLoad(_terrainData, tile);return _terrainData;}}var terrainUrl = tile.url;var terrainData = {};var layerOptions = layer.options;var tileSize = layer.getTileSize();var options = { terrainWidth: terrainWidth, type: layerOptions.type, accessToken: layerOptions.accessToken, cesiumIonTokenURL: layerOptions.cesiumIonTokenURL, error: error, colors: layerOptions.colors, tileSize: tileSize ? [tileSize.width, tileSize.height] : [256, 256] };this.workerConn.fetchTerrain(terrainUrl, options, function (err, resource) {if (_this41._parentRequests) {var reqKey = getParentRequestKey(tile.x, tile.y);var childTiles = _this41._parentRequests[reqKey];if (childTiles && childTiles.size) {_this41.tileCache.add(tile.id, { info: tile, image: terrainData });var _iterator14 = _createForOfIteratorHelper(childTiles),_step14;try {for (_iterator14.s(); !(_step14 = _iterator14.n()).done;) {var _tile3 = _step14.value;_this41.removeTileLoading(_tile3);}} catch (err) {_iterator14.e(err);} finally {_iterator14.f();}}delete _this41._parentRequests[reqKey];}if (err) {if (err.canceled) {return;}console.warn(err);_this41.onTileError(terrainData, tile);return;}maptalks.Util.extend(terrainData, resource);terrainExaggeration(terrainData, _this41.layer.options.exaggeration);tile.colorsTexture = terrainData.colorsTexture;_this41.onTileLoad(terrainData, tile);});return terrainData;} }, { key: \"deleteTile\", value: function deleteTile(tile) {if (!tile || !tile.image) {return;}_superPropGet(TerrainLayerRenderer, \"deleteTile\", this, 3)([tile]);var info = tile.info,image = tile.image;if (image.temp) {return;}delete info.skinTileIds;this._deleteTerrainImage(tile.info, image);} }, { key: \"_deleteTerrainImage\", value: function _deleteTerrainImage(tileInfo, image) {var skin = image.skin;if (skin) {skin.destroy();skin.colorTex.destroy();delete skin.colorTex;}if (image.debugTexture) {image.debugTexture.destroy();delete image.debugTexture;image.skinDebugMesh.dispose();delete image.skinDebugMesh;}var skinImages = image.skinImages;if (skinImages && skinImages.length) {var refKey = tileInfo.id;if (image.temp) {refKey += '-temp';}for (var _i52 = 0; _i52 < skinImages.length; _i52++) {var layerSkinImages = skinImages[_i52];if (!layerSkinImages) {continue;}for (var ii = 0; ii < layerSkinImages.length; ii++) {if (!layerSkinImages[ii] || !layerSkinImages[ii].tile) {continue;}var skinTileId = layerSkinImages[ii].tile.info.id;var cached = this._skinImageCache && this._skinImageCache.get(skinTileId);if (cached) {this._deleteCachedSkinImage(cached, refKey);}}layerSkinImages.length = 0;}}if (image.terrainMesh) {this._painter.deleteMesh(image.terrainMesh);}if (image.image && image.image.close) {image.image.close();}delete image.skinImages;delete image.skin;delete image.skinStatus;delete image.skinTileIds;delete image.terrainMesh;delete image.image;delete image.data;delete image.mesh;delete image.rendered;} }, { key: \"_deleteCachedSkinImage\", value: function _deleteCachedSkinImage(cached, refKey, skinImagesToDel) {if (!cached) {return;}cached.refs.delete(refKey);if (!cached.refs.size) {if (skinImagesToDel) {skinImagesToDel.push(cached);} else {this._deleteSkinImage(cached);}}} }, { key: \"_deleteSkinImage\", value: function _deleteSkinImage(cached) {if (!cached || !cached.tile) {return;}var skinTileId = cached.tile.info.id;var renderer = cached.layer.getRenderer();delete cached.canvas;delete cached.layer;cached.refs.clear();if (cached.texture) {if (!renderer) {if (cached.texture.destroy) {cached.texture.destroy();}} else {renderer.deleteTerrainTexture(cached.texture);}delete cached.texture;}if (cached.skinMesh) {cached.skinMesh.dispose();delete cached.skinMesh;}if (renderer) {if (renderer.removeTileCache) {renderer.removeTileCache(skinTileId);}if (renderer.deleteTile) {renderer.constructor.prototype.deleteTile.call(renderer, cached.tile);}}delete cached.tile;this._skinImageCache.delete(skinTileId);} }, { key: \"_clearSkinImageCache\", value: function _clearSkinImageCache() {if (!this._skinImageCache) {return;}var keys = this._skinImageCache.keys();var _iterator15 = _createForOfIteratorHelper(keys),_step15;try {for (_iterator15.s(); !(_step15 = _iterator15.n()).done;) {var id = _step15.value;var cached = this._getCachedSkinImage(id);this._deleteSkinImage(cached);}} catch (err) {_iterator15.e(err);} finally {_iterator15.f();}this._skinImageCache.clear();} }, { key: \"abortTileLoading\", value: function abortTileLoading(tileImage, tileInfo) {var layer = this.layer;var maxAvailableZoom = layer.options.maxAvailableZoom && layer.options.maxAvailableZoom - layer.options.zoomOffset;if (tileInfo) {if (maxAvailableZoom && tileInfo.z > maxAvailableZoom) {var _this$_getParentTileR2 = this._getParentTileRequest(tileInfo),requests = _this$_getParentTileR2.requests,_key8 = _this$_getParentTileR2.key;if (requests && requests.size) {requests.delete(tileInfo);if (!requests.size) {delete this._parentRequests[_key8];if (this.workerConn) {this.workerConn.abortTerrain(requests.url);}}}} else {if (tileInfo && tileInfo.url) {if (this.workerConn) {this.workerConn.abortTerrain(tileInfo.url);}}}}_superPropGet(TerrainLayerRenderer, \"abortTileLoading\", this, 3)([tileImage, tileInfo]);} }, { key: \"onTileError\", value: function onTileError(data, tile) {_superPropGet(TerrainLayerRenderer, \"onTileError\", this, 3)([data, tile]);} }, { key: \"_getTerrainTileAtPrjCoord\", value: function _getTerrainTileAtPrjCoord(prjCoord) {var zoom = this.getCurrentTileZoom();var sp = this.layer.getSpatialReference();var res = sp.getResolution(zoom);var tileIndex = this.layer['_getTileConfig']().getTileIndex(prjCoord, res, this.layer.options['repeatWorld']);tileIndex.z = zoom;return tileIndex;} }, { key: \"_queryTerrain\", value: function _queryTerrain(out, terrainTileId, tileIndex, worldPos, res) {var minZoom = this.layer.getMinZoom();var terrainData = this._findTerrainData(terrainTileId, tileIndex.x, tileIndex.y, tileIndex.z, minZoom);if (terrainData && terrainData.image && terrainData.image.data) {var extent2d = terrainData.info.extent2d;var terrainRes = terrainData.info.res;var scale = terrainRes / res;var x = worldPos.x - extent2d.xmin * scale;var y = extent2d.ymax * scale - worldPos.y;var altitude = this._queryAltitudeInHeights(terrainData.image.data, x / (extent2d.getWidth() * scale), y / (extent2d.getHeight() * scale));out[0] = altitude;out[1] = altitude === null ? 0 : +(terrainData.info.z === tileIndex.z);} else {out[0] = null;out[1] = 0;}return out;} }, { key: \"_findTerrainData\", value: function _findTerrainData(terrainTileId, x, y, z, limit) {if (!terrainTileId) {terrainTileId = this.layer['_getTileId'](x, y, z);}var terrainData = this.tilesInView[terrainTileId] || this.tileCache.get(terrainTileId);if (!terrainData && z - 1 >= limit) {return this._findTerrainData(null, Math.floor(x / 2), Math.floor(y / 2), z - 1, limit);}return terrainData;} }, { key: \"_queryAltitudeInHeights\", value: function _queryAltitudeInHeights(terrainData, x, y) {var width = terrainData.width,height = terrainData.height,data = terrainData.data;var tx = Math.floor((width - 1) * x);var ty = Math.floor((height - 1) * y);var index = ty * width + tx;if (data[index] === undefined) {return null;}return data[index];} }, { key: \"_queryTileAltitude\", value: function _queryTileAltitude(out, extent, targetRes) {if (!out) {out = { tiles: {}, dirty: true, complete: false };}var layer = this.layer;var z = this.getCurrentTileZoom();var sp = layer.getSpatialReference();var res = sp.getResolution(z);var xmin = extent.xmin,ymin = extent.ymin,xmax = extent.xmax,ymax = extent.ymax;var config = layer['_getTileConfig']();POINT0$1.set(xmin, ymin)._multi(targetRes);var minIndex = config['_getTileNum'](POINT0$1, targetRes, true);POINT1.set(xmax, ymax)._multi(targetRes);var maxIndex = config['_getTileNum'](POINT1, targetRes, true);var txmin = Math.min(minIndex.x, maxIndex.x);var txmax = Math.max(minIndex.x, maxIndex.x);var tymin = Math.min(minIndex.y, maxIndex.y);var tymax = Math.max(minIndex.y, maxIndex.y);var scale = targetRes / res;POINT0$1.set(xmin, ymin)._multi(scale);POINT1.set(xmax, ymax)._multi(scale);var extent2d = TEMP_EXTENT.set(POINT0$1.x, POINT0$1.y, POINT1.x, POINT1.y);var terrainSize = layer.getTileSize().width + 1;extent2d._expand(extent2d.getWidth() / terrainSize);out.array = out.array || new Float32Array(terrainSize * terrainSize);var tiles = out.tiles;out.complete = true;out.array.fill(0);for (var _i53 = txmin; _i53 <= txmax; _i53++) {for (var j = tymin; j <= tymax; j++) {var tileId = this.layer['_getTileId'](_i53, j, z);if (tiles[tileId]) {continue;}var terrainData = this.tileCache.get(tileId);if (terrainData) {this._fillAltitudeData(out.array, terrainData, extent2d, terrainSize);out.dirty = true;tiles[tileId] = 1;} else {out.dirty = out.dirty || out.tiles[tileId] !== undefined;if (out.tiles[tileId]) {delete out.tiles[tileId];}out.complete = false;}}}return out;} }, { key: \"_fillAltitudeData\", value: function _fillAltitudeData(out, terrainData, extent2d, terrainSize) {var terrainExtent = terrainData.info.extent2d;var intersection = terrainExtent.intersection(extent2d);var xmin = intersection.xmin,ymin = intersection.ymin,xmax = intersection.xmax,ymax = intersection.ymax;var terrain = terrainData.image.data;var width = terrain.width;var unit = extent2d.getWidth() / terrainSize;var xstart = Math.floor((xmin - extent2d.xmin) / unit);var ystart = Math.floor((ymin - extent2d.ymin) / unit);var xend = Math.floor((xmax - extent2d.xmin) / unit);var yend = Math.floor((ymax - extent2d.ymin) / unit);var xspan = xend - xstart;var yspan = yend - ystart;var tunit = terrainExtent.getWidth() / width;var tstartx = Math.floor((xmin - terrainExtent.xmin) / tunit);var tstarty = Math.floor((ymin - terrainExtent.ymin) / tunit);var stride = Math.floor(unit / tunit);for (var _i54 = 0; _i54 <= xspan; _i54++) {for (var j = 0; j <= yspan; j++) {var index = _i54 + xstart + (ystart + j) * terrainSize;var height = 0;for (var k = 0; k < stride; k++) {for (var kk = 0; kk < stride; kk++) {var terrainIndex = (tstartx + Math.floor(_i54 * stride)) * width + k + tstarty + Math.floor(j * stride) + kk;height += terrain.data[terrainIndex];}}out[index] = height / Math.max(stride, 1);}}return out;} }, { key: \"clear\", value: function clear() {this.clearTempResources();return _superPropGet(TerrainLayerRenderer, \"clear\", this, 3)([]);} }, { key: \"clearTempResources\", value: function clearTempResources() {if (this._tempTilesPool) {this._tempTilesPool.reset();delete this._tempTilesPool;}if (this._skinImageCache) {this._clearSkinImageCache();}} }, { key: \"onAdd\", value: function onAdd() {_superPropGet(TerrainLayerRenderer, \"onAdd\", this, 3)([]);this.prepareWorker();} }, { key: \"onRemove\", value: function onRemove() {if (this.workerConn) {this.workerConn.removeLayer(this.layer.getId(), function (err) {if (err) throw err;});this.workerConn.remove();delete this.workerConn;}this.clearTempResources();if (this._skinShader) {this._skinShader.dispose();delete this._skinShader;}if (this._skinGeometry) {this._skinGeometry.dispose();delete this._skinGeometry;}delete this._parentRequests;_superPropGet(TerrainLayerRenderer, \"onRemove\", this, 3)([]);if (this._painter) {this._painter.delete();delete this._painter;}} }, { key: \"prepareWorker\", value: function prepareWorker() {var _this42 = this;var map = this.layer.getMap();if (!this.workerConn) {this.workerConn = new TerrainWorkerConnection(map.id);}var workerConn = this.workerConn;if (!workerConn.isActive()) {return;}var options = this.layer.options || {};var id = this.layer.getId();workerConn.addLayer(id, options, function (err) {if (err) throw err;if (!_this42.layer) return;_this42.ready = true;_this42.setToRedraw();_this42.layer.fire('workerready');});} }, { key: \"createContext\", value: function createContext() {var inGroup = this.canvas.gl && this.canvas.gl.wrap;if (inGroup) {this.gl = this.canvas.gl.wrap();this.regl = this.canvas.gl.regl;} else {this._createREGLContext();}this.renderer = new reshader.Renderer(this.regl);this.layer.fire('contextcreate', { regl: this.regl });} }, { key: \"_createPainter\", value: function _createPainter() {var painter = this._painter;if (this.layer.options.shader === 'lit' || this.layer.options.shader === 'pbr') {if (painter && painter.constructor === TerrainPainter || !painter) {if (painter) {painter.delete();this.clear();this.setToRedraw();}this._painter = new TerrainLitPainter(this.layer);this.layer.fire('paintercreated');}} else {if (painter && painter.constructor === TerrainLitPainter || !painter) {if (painter) {painter.delete();this.clear();this.setToRedraw();}this._painter = new TerrainPainter(this.layer);this.layer.fire('paintercreated');}}} }, { key: \"_createREGLContext\", value: function _createREGLContext() {var layer = this.layer;var attributes = layer.options.glOptions || { alpha: true, depth: true, antialias: this.layer.options['antialias'] };attributes.preserveDrawingBuffer = true;attributes.stencil = true;this.glOptions = attributes;this.gl = this.gl || this._createGLContext(this.canvas, attributes);this.regl = (0, _regl3.createREGL)({ gl: this.gl, attributes: attributes, extensions: ['OES_element_index_uint'], optionalExtensions: layer.options['glExtensions'] });} }, { key: \"_createGLContext\", value: function _createGLContext(canvas, options) {var names = ['webgl', 'experimental-webgl'];var context = null;for (var _i55 = 0; _i55 < names.length; ++_i55) {try {context = canvas.getContext(names[_i55], options);} catch (e) {}if (context) {break;}}return context;} }, { key: \"resizeCanvas\", value: function resizeCanvas(canvasSize) {if (!this.canvas) {return;}_superPropGet(TerrainLayerRenderer, \"resizeCanvas\", this, 3)([canvasSize]);} }, { key: \"clearCanvas\", value: function clearCanvas() {if (!this.canvas) {return;}_superPropGet(TerrainLayerRenderer, \"clearCanvas\", this, 3)([]);} }, { key: \"_initSkinShader\", value: function _initSkinShader() {if (this._skinShader) {return;}var tileSize = this.layer.getTileSize().width;this._skinShader = new reshader.MeshShader({ vert: skinVert, frag: skinFrag, extraCommandProps: { cull: { enable: false }, viewport: { x: 0, y: 0, width: tileSize * 2, height: tileSize * 2 }, depth: { enable: false }, stencil: { enable: false }, blend: { enable: true, func: { src: 'one', dst: 'one minus src alpha' }, equation: 'add' } } });var aPosition = new Int8Array([-1, -1, 1, 1, -1, 1, 1, 1, -1, -1, 1, -1]);this._skinGeometry = this._skinGeometry || new reshader.Geometry({ aPosition: aPosition }, 0, 6, { positionSize: 2 });this._skinGeometry.generateBuffers(this.regl);this._skinScene = this._skinScene || new reshader.Scene();} }, { key: \"updateMaterial\", value: function updateMaterial(mat) {if (!this._painter || !mat) {return;}if (!this._painter.updateMaterial) {return;}if (this._matVer === undefined) {this._matVer = 1;}this._painter.updateMaterial(mat, this._matVer++);} }, { key: \"setMaterial\", value: function setMaterial(mat) {if (!this._painter || !mat) {return;}if (!this._painter.setMaterial) {return;}if (this._matVer === undefined) {this._matVer = 1;}this._painter.setMaterial(mat, this._matVer++);} }, { key: \"getAnalysisMeshes\", value: function getAnalysisMeshes() {if (this._painter && this._painter._leafScene) {return this._painter._leafScene.getMeshes();}return [];} }]);}(MaskRendererMixin(maptalks.renderer.TileLayerCanvasRenderer));var SKIN_LEVEL_LIMIT = 1;maptalks.renderer.TileLayerCanvasRenderer.include({ renderTerrainSkin: function renderTerrainSkin(regl, terrainLayer, skinImages) {var tileSize = this.layer.getTileSize().width;var debug = terrainLayer.options['debug'];for (var _i56 = 0; _i56 < skinImages.length; _i56++) {var _skinImages$_i = skinImages[_i56],tile = _skinImages$_i.tile,_texture2 = _skinImages$_i.texture;if (!tile.image) {continue;}var canvas = document.createElement('canvas');skinImages[_i56].canvas = canvas;canvas.width = tileSize;canvas.height = tileSize;var ctx = canvas.getContext('2d');ctx.drawImage(tile.image, 0, 0);if (debug) {var _tile$info = tile.info,x = _tile$info.x,y = _tile$info.y,z = _tile$info.z;drawDebug(ctx, \"\".concat(x, \"/\").concat(y, \"/\").concat(z), 'yellow', 1, 0, 0, tileSize, tileSize, -18);}_texture2({ data: canvas, width: tileSize, height: tileSize, flipY: true, min: 'linear mipmap linear', mag: 'linear' });}}, createTerrainTexture: function createTerrainTexture(regl) {var tileSize = this.layer.getTileSize().width;var config = { width: tileSize, height: tileSize, flipY: true, min: 'linear mipmap linear', mag: 'linear', depthStencil: false, depth: false, stencil: false };return regl.texture(config);}, deleteTerrainTexture: function deleteTerrainTexture(texture) {texture.destroy();} });function drawDebug(ctx, debugInfo, color, lineWidth, left, top, width, height) {var textOffsetY = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 0;ctx.font = '20px monospace';ctx.fillStyle = color;DEBUG_POINT.y = height - 30;ctx.globalAlpha = 1;ctx.fillText(debugInfo, DEBUG_POINT.x + left, DEBUG_POINT.y + top + textOffsetY);ctx.globalAlpha = 0.6;ctx.strokeStyle = color;ctx.lineWidth = lineWidth;ctx.beginPath();ctx.moveTo(left, top);ctx.lineTo(left + width, top);ctx.lineTo(left + width, top + height);ctx.lineTo(left, top + height);ctx.lineTo(left, top);ctx.stroke();ctx.globalAlpha = 1;}function computeSkinDimension(terrainTileInfo, tile, terrainTileSize) {var res = terrainTileInfo.res,terrainExtent = terrainTileInfo.extent2d,terrainOffset = terrainTileInfo.offset;var info = tile.info;var scale = info.res / res;var offset = info.offset;var xmin = info.extent2d.xmin * scale;var ymin = info.extent2d.ymin * scale;var dx = terrainOffset[0] - offset[0];var dy = offset[1] - terrainOffset[1];var left = xmin - terrainExtent.xmin + dx;var bottom = terrainExtent.ymin - ymin + dy;return [left, -bottom, scale * info.tileSize / terrainTileSize];}function isValidSkinImage(image) {return image && image.texture;}function getParentRequestKey(x, y) {return x + '-' + y;}var MASK_MODES = { 'clip-inside': 0.1, 'clip-outside': 0.2, 'flat-inside': 0.3, 'flat-outside': 0.4, 'color': 0.5, 'texture': 0.6, 'elevate': 0.7 };var QUAT = [],SCALE = [1, 1, 1];var DEFAULT_SYMBOL = { polygonFill: [255, 0, 0], polygonOpacity: 0.8 };var TRIANGLE_POINT_A = new _maptalks.Coordinate(0, 0),TRIANGLE_POINT_B = new _maptalks.Coordinate(0, 0),TRIANGLE$1 = [];var TEMP_COORD = new _maptalks.Coordinate(0, 0),TEMP_POINT0 = new _maptalks.Point(0, 0),TEMP_POINT1 = new _maptalks.Point(0, 0),TEMP_POINT2 = new _maptalks.Point(0, 0);var Mask = function (_Polygon) {function Mask() {_classCallCheck(this, Mask);return _callSuper(this, Mask, arguments);}_inherits(Mask, _Polygon);return _createClass(Mask, [{ key: \"getMode\", value: function getMode() {return this._mode;} }, { key: \"remove\", value: function remove() {var layer = this.getLayer();if (!layer) {return this;}layer.removeMask(this);this._dispose();_superPropGet(Mask, \"remove\", this, 3)([]);return this;} }, { key: \"getMesh\", value: function getMesh(regl, ratio, minHeight) {if (!this.isVisible() || !this.getLayer()) {return null;}if (!this._mesh) {this._mesh = this._createMesh(regl, ratio, minHeight);}this._updateUniforms(this._mesh, ratio, minHeight);return this._mesh;} }, { key: \"setCoordinates\", value: function setCoordinates(coordinates) {_superPropGet(Mask, \"setCoordinates\", this, 3)([coordinates]);var layer = this.getLayer();if (layer) {delete layer['_maskProjViewMatrix'];delete layer['_maskExtentInWorld'];}if (!this._mesh) {return this;}var mode = this.getMode();var geojson = this.toGeoJSON();geojson.geometry.coordinates[0].reverse();var data = _reshader.earcut.flatten(geojson.geometry.coordinates);var _ref = mode === 'texture' ? this._createBilinearPOSITON(data) : this._createPOSITION(data),positions = _ref.positions,uvs = _ref.uvs,triangles = _ref.triangles;var geometry = this._mesh.geometry;geometry.updateData('POSITION', positions);geometry.updateData('TEXCOORD', uvs);geometry.setElements(triangles);this._setLocalTransform(this._mesh);if (this._copyMesh) {var positionWithHeight = this._createPOSITION(_reshader.earcut.flatten(geojson.geometry.coordinates), true).positions;this._copyMesh.geometry.updateData('POSITION', positionWithHeight);this._setLocalTransform(this._copyMesh);}} }, { key: \"_createGeometry\", value: function _createGeometry(regl) {var mode = this.getMode();var geojson = this.toGeoJSON();geojson.geometry.coordinates[0].reverse();var data = _reshader.earcut.flatten(geojson.geometry.coordinates);var _ref2 = mode === 'texture' ? this._createBilinearPOSITON(data) : this._createPOSITION(data),positions = _ref2.positions,uvs = _ref2.uvs,triangles = _ref2.triangles;var positionWithHeight = this._createPOSITION(_reshader.earcut.flatten(geojson.geometry.coordinates), true).positions;var geometry = new reshader.Geometry({ POSITION: positions, TEXCOORD: uvs }, triangles, 0, { positionAttribute: 'POSITION', uv0Attribute: 'TEXCOORD' });geometry.generateBuffers(regl);var copyGeometry = new reshader.Geometry({ POSITION: positionWithHeight, TEXCOORD: uvs }, triangles, 0, { positionAttribute: 'POSITION', uv0Attribute: 'TEXCOORD' });copyGeometry.generateBuffers(regl);return mode === 'texture' ? { geometry: geometry, copyGeometry: copyGeometry } : geometry;} }, { key: \"_createPOSITION\", value: function _createPOSITION(data, hasHeight) {var map = this.getMap();var dimension = data.dimensions;for (var ii = 0; ii < data.vertices.length; ii += dimension) {TEMP_COORD.x = data.vertices[ii];TEMP_COORD.y = data.vertices[ii + 1];var point = coordinateToWorld$2(map, TEMP_COORD);data.vertices[ii] = point[0];data.vertices[ii + 1] = point[1];}var centerPos = coordinateToWorld$2(map, this.getCenter());var pos = [];var idx = this.getLayer().getMasks().indexOf(this);var heightOffset = idx * 0.01;var len = this.getMode() === 'texture' ? 4 : data.vertices.length / dimension;for (var _i57 = 0; _i57 < len; _i57++) {pos.push(data.vertices[_i57 * dimension] - centerPos[0]);pos.push(data.vertices[_i57 * dimension + 1] - centerPos[1]);pos.push(heightOffset + hasHeight ? map.altitudeToPoint(data.vertices[_i57 * dimension + 2], map.getGLRes()) : 0);}var uvs = this._createTexcoords(data.vertices, dimension);var indices = (0, _reshader.earcut)(pos, data.holes, 3);return { positions: pos, uvs: uvs, triangles: indices };} }, { key: \"_createTexcoords\", value: function _createTexcoords(vertices, dimension) {var texcoords = [0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0];if (this.hasHoles()) {var count = vertices.length / dimension * 2;for (var _i58 = texcoords.length / 2 - 1; _i58 < count; _i58 += 2) {texcoords[_i58] = texcoords[_i58 + 1] = 0.0;}}return texcoords;} }, { key: \"_createBilinearPOSITON\", value: function _createBilinearPOSITON(data) {var rows = 20;var cols = 20;var dimension = data.dimensions;var positions = [];var uvs = [];var indices = [];var map = this.getMap();for (var ii = 0; ii < data.vertices.length; ii += dimension) {TEMP_COORD.x = data.vertices[ii];TEMP_COORD.y = data.vertices[ii + 1];var point = coordinateToWorld$2(map, TEMP_COORD);data.vertices[ii] = point[0];data.vertices[ii + 1] = point[1];}var centerPos = coordinateToWorld$2(this.getMap(), this.getCenter());var vertices = {};vertices['a'] = { x: data.vertices[0 * dimension] - centerPos[0], y: data.vertices[0 * dimension + 1] - centerPos[1] };vertices['b'] = { x: data.vertices[1 * dimension] - centerPos[0], y: data.vertices[1 * dimension + 1] - centerPos[1] };vertices['c'] = { x: data.vertices[2 * dimension] - centerPos[0], y: data.vertices[2 * dimension + 1] - centerPos[1] };vertices['d'] = { x: data.vertices[3 * dimension] - centerPos[0], y: data.vertices[3 * dimension + 1] - centerPos[1] };this._positions = [];for (var _i59 = 0; _i59 < 4; _i59++) {this._positions.push(data.vertices[_i59 * dimension] - centerPos[0]);this._positions.push(data.vertices[_i59 * dimension + 1] - centerPos[1]);this._positions.push(0);}for (var _i60 = 0; _i60 <= rows; _i60++) {for (var j = 0; j <= cols; j++) {var u = j / cols;var v = _i60 / rows;var x = (1 - u) * (1 - v) * vertices.a.x + u * (1 - v) * vertices.b.x + u * v * vertices.c.x + (1 - u) * v * vertices.d.x;var y = (1 - u) * (1 - v) * vertices.a.y + u * (1 - v) * vertices.b.y + u * v * vertices.c.y + (1 - u) * v * vertices.d.y;positions.push(x, y, 0);uvs.push(u, 1 - v);}}for (var _i61 = 0; _i61 < rows; _i61++) {for (var _j = 0; _j < cols; _j++) {var a = _i61 * (cols + 1) + _j;var b = a + 1;var c = (_i61 + 1) * (cols + 1) + _j;var d = c + 1;indices.push(a, b, d);indices.push(a, d, c);}}return { positions: positions, uvs: uvs, triangles: indices };} }, { key: \"clearMesh\", value: function clearMesh() {this._dispose();delete this._mesh;if (this.maskGeoJSON) {this.maskGeoJSON = null;}} }, { key: \"_getMaskMode\", value: function _getMaskMode() {return MASK_MODES[this._mode];} }, { key: \"_getMaskColor\", value: function _getMaskColor() {var symbol = this.getSymbol();var _ref3 = symbol || DEFAULT_SYMBOL,polygonFill = _ref3.polygonFill,polygonOpacity = _ref3.polygonOpacity;var maskColor = normalizeColor([], polygonFill);maskColor[0] /= 255;maskColor[1] /= 255;maskColor[2] /= 255;maskColor[3] = isNumber$1(polygonOpacity) ? polygonOpacity : this.getMode() === 'texture' ? 1 : DEFAULT_SYMBOL.polygonOpacity;return maskColor;} }, { key: \"_altitudeToPoint\", value: function _altitudeToPoint() {var altitude = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;var map = this.getMap();var res = map.getGLRes();return map.altitudeToPoint(altitude, res);} }, { key: \"_setLocalTransform\", value: function _setLocalTransform(mesh) {var map = this.getMap();var centerPos = coordinateToWorld$2(map, this.getCenter());var mMatrix = _reshader.mat4.fromRotationTranslationScale(mesh.localTransform, _reshader.quat.identity(QUAT), centerPos, SCALE);mesh.localTransform = mMatrix;} }, { key: \"_dispose\", value: function _dispose() {if (!this._mesh) {return;}if (this._mesh.material) {this._mesh.material.dispose();}if (this._mesh.geometry) {this._mesh.geometry.dispose();}if (this._copyMesh && this._copyMesh.geometry) {this._copyMesh.geometry.dispose();this._copyMesh.dispose();}this._mesh.dispose();delete this._mesh;delete this._copyMesh;} }, { key: \"containsPoint\", value: function containsPoint(coordinate) {var extent = this.getExtent();TEMP_COORD.set(coordinate[0], coordinate[1]);if (!extent || !extent.contains(TEMP_COORD)) {return false;}var holes = this.getHoles();for (var _i62 = 0; _i62 < holes.length; _i62++) {if (this._contains(holes[_i62], coordinate)) {return false;}}var coordinates = this.getShell();return this._contains(coordinates, coordinate);} }, { key: \"_contains\", value: function _contains(coordinates, coordinate) {var area = this._calArea(coordinates);var totalArea = 0;for (var _i63 = 0; _i63 < coordinates.length; _i63++) {TRIANGLE_POINT_A.x = coordinates[_i63].x;TRIANGLE_POINT_A.y = coordinates[_i63].y;var index = _i63 + 1 >= coordinates.length ? 0 : _i63 + 1;TRIANGLE_POINT_B.x = coordinates[index].x;TRIANGLE_POINT_B.y = coordinates[index].y;TEMP_COORD.x = coordinate[0];TEMP_COORD.y = coordinate[1];TRIANGLE$1[0] = TEMP_COORD;TRIANGLE$1[1] = TRIANGLE_POINT_A;TRIANGLE$1[2] = TRIANGLE_POINT_B;var _area = this._calArea(TRIANGLE$1);totalArea += _area;}if (Math.abs(totalArea - area) > 1e-8) {return false;}return true;} }, { key: \"_calArea\", value: function _calArea(coordinates) {var map = this.getMap();var area = 0;var glRes = map.getGLRes();var point0 = map.coordToPointAtRes(coordinates[0], glRes, TEMP_POINT0);for (var _i64 = 1; _i64 < coordinates.length - 1; _i64++) {var point1 = map.coordToPointAtRes(coordinates[_i64], glRes, TEMP_POINT1);var point2 = map.coordToPointAtRes(coordinates[_i64 + 1], glRes, TEMP_POINT2);area += det(point0, point1, point2) / 2;}return area;} }]);}(_maptalks.Polygon);function det(p0, p1, p2) {return (p1.x - p0.x) * (p2.y - p0.y) - (p1.y - p0.y) * (p2.x - p0.x);}var planes = [];for (var i = 0; i < 6; i++) {planes[i] = [];}var p = [];function intersectsBox(matrix, box, mask) {setPlanes(matrix);for (var i = 0; i < 6; i++) {var plane = planes[i];p[0] = plane[0] > 0 ? box[1][0] : box[0][0];p[1] = plane[1] > 0 ? box[1][1] : box[0][1];p[2] = plane[2] > 0 ? box[1][2] : box[0][2];if (distanceToPoint(plane, p) < 0) {return false;}}return true;}function setPlanes(m) {var me = m;var me0 = me[0],me1 = me[1],me2 = me[2],me3 = me[3];var me4 = me[4],me5 = me[5],me6 = me[6],me7 = me[7];var me8 = me[8],me9 = me[9],me10 = me[10],me11 = me[11];var me12 = me[12],me13 = me[13],me14 = me[14],me15 = me[15];setComponents(planes[0], me3 - me0, me7 - me4, me11 - me8, me15 - me12);setComponents(planes[1], me3 + me0, me7 + me4, me11 + me8, me15 + me12);setComponents(planes[2], me3 + me1, me7 + me5, me11 + me9, me15 + me13);setComponents(planes[3], me3 - me1, me7 - me5, me11 - me9, me15 - me13);setComponents(planes[4], me3 - me2, me7 - me6, me11 - me10, me15 - me14);setComponents(planes[5], me3 + me2, me7 + me6, me11 + me10, me15 + me14);}function setComponents(out, x, y, z, w) {var inverseNormalLength = 1 / Math.sqrt(x * x + y * y + z * z);out[0] = x * inverseNormalLength;out[1] = y * inverseNormalLength;out[2] = z * inverseNormalLength;out[3] = w * inverseNormalLength;return out;}function distanceToPoint(plane, p) {return plane[0] * p[0] + plane[1] * p[1] + plane[2] * p[2] + plane[3];}var COORD_EXTENT = new _maptalks.Coordinate(0, 0);var EXTENT_MIN = [0, 0, 0],EXTENT_MAX = [0, 0, 0];var EMPTY_MAT4 = _reshader.mat4.identity([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);function clearMasks() {if (!this['_maskList']) {return this;}this['_maskList'].forEach(function (mask) {mask.remove();});this['_maskList'] = [];this.updateMaskExtent();return this;}function normalizeHeight(minHeight, maxHeight) {var min = minHeight === Infinity ? 0 : minHeight;var max = maxHeight === -Infinity ? 0 : maxHeight;var range = Math.abs(max - min);if (range === 0) {return { ratio: 1, minHeight: 0 };}var ratio = Math.pow(range, -1);return { ratio: ratio, minHeight: min };}function hasVisibleMask() {for (var _i65 = 0; _i65 < this['_maskList'].length; _i65++) {if (this['_maskList'][_i65].isVisible()) {return true;}}return false;}function MaskLayerMixin(Base) {return function (_Base2) {function MaskLayerMixin() {_classCallCheck(this, MaskLayerMixin);return _callSuper(this, MaskLayerMixin, arguments);}_inherits(MaskLayerMixin, _Base2);return _createClass(MaskLayerMixin, [{ key: \"removeMask\", value: function removeMask(masks) {if (!this['_maskList']) {return this;}if (!masks) {clearMasks.call(this);return this;}var maskList = Array.isArray(masks) ? masks : [masks];for (var _i66 = 0; _i66 < maskList.length; _i66++) {var mask = maskList[_i66];var index = this['_maskList'].indexOf(mask);if (index > -1) {this['_maskList'].splice(index, 1);}}this.updateMaskExtent();this['fire']('removemask', { masks: masks });return this;} }, { key: \"setMask\", value: function setMask(masks) {var _this43 = this;this['removeMask'](null);if (!this['_maskList']) {this['_maskList'] = [];}if (Array.isArray(masks)) {masks.forEach(function (mask) {_this43['_maskList'].push(mask);});} else {this['_maskList'].push(masks);}this['_maskList'].forEach(function (mask) {mask['_bindLayer'](_this43);if (mask._updateCoordinates) {mask._updateCoordinates();}});this.updateMaskExtent();this['fire']('setmask', { masks: masks });return this;} }, { key: \"onAdd\", value: function onAdd() {_superPropGet(MaskLayerMixin, 'onAdd', this, 3)([]);this.updateMaskExtent();} }, { key: \"getMasks\", value: function getMasks() {return this['_maskList'] || [];} }, { key: \"onGeometryEvent\", value: function onGeometryEvent(param) {if (!param || !param['target']) {return;}var type = param['type'];if (type === 'shapechange' && param['target'] instanceof Mask) {param['target'].clearMesh();}if (param['target'] instanceof Mask) {this.updateMaskExtent();}if (_superPropGet(MaskLayerMixin, 'onGeometryEvent', this, 1)) {_superPropGet(MaskLayerMixin, 'onGeometryEvent', this, 3)([param]);}} }, { key: \"identifyMask\", value: function identifyMask(point, options) {var map = this['getMap']();if (!map) {return [];}if (!this['_maskList'] || !this['_maskList'].length) {return [];}var opts = extend({}, options);opts['excludeMasks'] = true;var identifyData = this['identifyAtPoint'](point, opts);var coordinate = identifyData.length && identifyData[0].coordinate;if (coordinate) {var masks = this['_maskList'];if (!masks) {return [];}var hits = [];for (var _i67 = 0; _i67 < masks.length; _i67++) {var maskMode = masks[_i67].getMode();if (masks[_i67].containsPoint(coordinate) && (maskMode === 'color' || maskMode === 'texture')) {hits.push(masks[_i67]);}}return hits;}return [];} }, { key: \"remove\", value: function remove() {if (this['_maskList'] && this['_maskList'].length) {this['_maskList'].forEach(function (mask) {mask.remove();});}_superPropGet(MaskLayerMixin, 'remove', this, 3)([]);} }, { key: \"updateMask\", value: function updateMask(extent) {var map = this['getMap']();var _this$getProjViewMatr = this.getProjViewMatrixInOrtho(extent),projViewMatrix = _this$getProjViewMatr.projViewMatrix,mapExtent = _this$getProjViewMatr.mapExtent;COORD_EXTENT.x = mapExtent.xmin;COORD_EXTENT.y = mapExtent.ymin;var extentPointMin = coordinateToWorld$1(EXTENT_MIN, COORD_EXTENT, map);COORD_EXTENT.x = mapExtent.xmax;COORD_EXTENT.y = mapExtent.ymax;var extentPointMax = coordinateToWorld$1(EXTENT_MAX, COORD_EXTENT, map);var extentInWorld = [extentPointMin[0], extentPointMin[1], extentPointMax[0], extentPointMax[1]];return { projViewMatrix: projViewMatrix, extentInWorld: extentInWorld };} }, { key: \"getProjViewMatrixInOrtho\", value: function getProjViewMatrixInOrtho(extent) {var map = this['getMap']();var preView = map.getView();var zoom = map.getFitZoom(extent);var center = extent.getCenter();map.setView({ center: center, zoom: zoom, pitch: 0, bearing: 0 });var mapExtent = map.getExtent();var pvMatrix = _reshader.mat4.copy(EMPTY_MAT4, map.projViewMatrix);map.setView(preView);return { mapExtent: mapExtent, projViewMatrix: pvMatrix };} }, { key: \"updateMaskExtent\", value: function updateMaskExtent() {var _this44 = this;if (!this['_maskList']) {return;}var map = this['getMap']();if (!map) {return;}var renderer = this['getRenderer']();if (renderer && !this['_maskList'].length) {renderer['_clearMask']();return;}if (renderer && !hasVisibleMask.call(this)) {renderer['_deleteMaskUniforms']();renderer.setToRedraw();return;}var maskExtent = this.getMaskExtent();if (!maskExtent) {return;}var extent = maskExtent.extent,ratio = maskExtent.ratio,minHeight = maskExtent.minHeight;var _this$updateMask = this.updateMask(extent),projViewMatrix = _this$updateMask.projViewMatrix,extentInWorld = _this$updateMask.extentInWorld;this._maskProjViewMatrix = projViewMatrix;this._maskExtentInWorld = extentInWorld;if (renderer) {renderer.setMask(this._maskExtentInWorld, this._maskProjViewMatrix, ratio, minHeight);} else {this['once']('renderercreate', function (e) {e.renderer.setMask(_this44._maskExtentInWorld, _this44._maskProjViewMatrix, ratio, minHeight);});}} }, { key: \"getMaskExtent\", value: function getMaskExtent() {var xmin = Infinity,ymin = Infinity,xmax = -Infinity,ymax = -Infinity,maxheight = -Infinity,minheight = Infinity;var hasMaskInExtent = false;var map = this['getMap']();for (var _i68 = 0; _i68 < this['_maskList'].length; _i68++) {var mask = this['_maskList'][_i68];if (!mask.isVisible()) {continue;}var _extent2 = mask.getExtent();if (!_extent2) {continue;}if (mask._mesh && mask.getBBox) {var bbox = mask.getBBox();if (!intersectsBox(map.projViewMatrix, bbox)) {continue;}}hasMaskInExtent = true;if (_extent2.xmin < xmin) {xmin = _extent2.xmin;}if (_extent2.ymin < ymin) {ymin = _extent2.ymin;}if (_extent2.xmax > xmax) {xmax = _extent2.xmax;}if (_extent2.ymax > ymax) {ymax = _extent2.ymax;}if (mask._getHeightRange) {var heightRange = mask._getHeightRange();if (heightRange[0] < minheight) {minheight = heightRange[0];}if (heightRange[1] > maxheight) {maxheight = heightRange[1];}}}if (!hasMaskInExtent) {return null;}var _normalizeHeight = normalizeHeight(minheight, maxheight),ratio = _normalizeHeight.ratio,minHeight = _normalizeHeight.minHeight;var extent = new _maptalks.Extent(xmin, ymin, xmax, ymax);return { extent: extent, ratio: ratio, minHeight: minHeight };} }]);}(Base);}function coordinateToWorld$1(out, coordinate, map) {var z = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;if (!map || !(coordinate instanceof _maptalks.Coordinate)) {return null;}var p = map.coordinateToPointAtRes(coordinate, map.getGLRes());out[0] = p.x;out[1] = p.y;out[2] = z;return out;}var COORD0 = new maptalks.Coordinate(0, 0);var TEMP_POINT$2 = new maptalks.Coordinate(0, 0);var POINT0 = new maptalks.Point(0, 0);var EMPTY_ARRAY = [];var options$2 = { 'forceRenderOnMoving': true, 'forceRenderOnZooming': true, 'forceRenderOnRotating': true, 'fadeAnimation': false, 'fadeDuration': 1000 / 60 * 15, 'tileLimitPerFrame': 2, 'newTerrainTileRenderLimitPerFrameOnInteracting': 1, 'opacity': 1.0, 'renderer': 'gl', 'pyramidMode': 1, 'tileSize': 512, 'terrainWidth': null, 'backZoomOffset': 0, 'depthMask': true, 'blendSrc': 'one', 'blendDst': 'one minus src alpha', 'requireSkuToken': true, 'cesiumIonTokenURL': 'https://api.cesium.com/v1/assets/1/endpoint?access_token=', 'tileRetryCount': 0, 'shader': 'default', 'terrainTileMode': true, 'tempTileCacheSize': 64, 'tileStackStartDepth': 7, 'tileStackDepth': 6, 'currentTilesFirst': false, 'exaggeration': 1, 'colors': [] };var EMPTY_TILE_GRIDS = { tileGrids: [], count: 0 };var SKU_ID = '01';var TOKEN_VERSION = '1';var base62chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';var TerrainLayer = function (_MaskLayerMixin) {function TerrainLayer(id, options) {_classCallCheck(this, TerrainLayer);if (options && !options.tileSystem) {if (options.type === 'cesium' || options.type === 'cesium-ion') {options.tileSystem = [1, 1, -180, -90];} else if (options.type === 'tianditu') {options.tileSystem = [1, -1, -180, 90];}}if (!options.tileSize) {if (options.type === 'mapbox') {options.tileSize = 512;}}return _callSuper(this, TerrainLayer, [id, options]);}_inherits(TerrainLayer, _MaskLayerMixin);return _createClass(TerrainLayer, [{ key: \"onAdd\", value: function onAdd() {var options = this.options;var map = this.getMap();var projection = map.getProjection();var is4326 = projection.code === \"EPSG:4326\" || projection.code === \"EPSG:4490\";var is3857 = projection.code === \"EPSG:3857\";if (options.tileSize === 512 && !options.spatialReference) {if (options.type === 'mapbox') {if (is4326) {options.spatialReference = 'preset-4326-512';} else if (is3857) {options.spatialReference = 'preset-3857-512';}} else if (options.type === 'cesium' || options.type === 'cesium-ion') {options.spatialReference = 'preset-4326-512';} else if (options.type === 'tianditu') {options.spatialReference = { 'projection': 'EPSG:4326', 'fullExtent': { 'top': 90, 'left': -180, 'bottom': -90, 'right': 180 }, 'resolutions': function () {var resolutions = [];for (var _i69 = 0; _i69 <= 22; _i69++) {resolutions[_i69] = 180 / 2 / (Math.pow(2, _i69) * 128);}return resolutions;}() };}}if (!options.terrainWidth && options.type === 'tianditu') {options.terrainWidth = 65;}} }, { key: \"getTileUrl\", value: function getTileUrl(x, y, z) {var terrainUrl = _superPropGet(TerrainLayer, \"getTileUrl\", this, 3)([x, y, z]);var type = this.options.type;if (type === 'mapbox' && this.options['requireSkuToken']) {if (!this._skuToken) {this._skuToken = this._createSkuToken();}if (terrainUrl.indexOf('?') > -1) {terrainUrl += '&sku=' + this._skuToken;} else {terrainUrl += '?sku=' + this._skuToken;}}return terrainUrl;} }, { key: \"getMaxAvailableZoom\", value: function getMaxAvailableZoom() {var sr = this.getSpatialReference();return sr.getMaxZoom();} }, { key: \"_createSkuToken\", value: function _createSkuToken() {var sessionRandomizer = '';for (var _i70 = 0; _i70 < 10; _i70++) {sessionRandomizer += base62chars[Math.floor(Math.random() * 62)];}var token = [TOKEN_VERSION, SKU_ID, sessionRandomizer].join('');return token;} }, { key: \"setSkinLayers\", value: function setSkinLayers(skinLayers) {this._skinLayers = skinLayers;var renderer = this.getRenderer();if (renderer) {renderer.clear();renderer.setToRedraw();}} }, { key: \"getSkinTiles\", value: function getSkinTiles(layer) {var renderer = this.getRenderer();if (!renderer) {return EMPTY_TILE_GRIDS;}var tileGrids = renderer.getTileGridsInCurrentFrame();var grid = tileGrids.tileGrids[0];if (!grid) {return EMPTY_TILE_GRIDS;}var layerId = layer.getId();var tileSysScale = this._getTileConfig().tileSystem.scale;var tileSize = layer.getTileSize().width;var tiles = grid.tiles;if (!tiles.length) {return EMPTY_TILE_GRIDS;}var map = this.getMap();var parents = grid.parents || EMPTY_ARRAY;var parentCount = parents.length;var allTiles = parents.concat(tiles);var sr = layer.getSpatialReference();var size = tiles[0].extent2d.getWidth();var dx = tileSysScale.x;var dy = tileSysScale.y;var parentSkinTiles = [];var skinTiles = [];var allSkinTileIds = new Set();var scaleY = this['_getTileConfig']().tileSystem.scale.y;for (var _i71 = 0; _i71 < allTiles.length; _i71++) {var info = allTiles[_i71];var res = info.res;var nw = info.nw;if (!nw) {nw = info.nw = map.pointAtResToCoord(info.extent2d.getMin(POINT0), info.res);}var _getSkinTileRes2 = getSkinTileRes(sr, info.z, res),skinRes = _getSkinTileRes2.res,zoom = _getSkinTileRes2.zoom;var resScale = skinRes / res;var scale = getSkinTileScale(skinRes, tileSize, res, size);var extent2d = info.extent2d,offset = info.offset;var leftX = scale * info.x;var topY = scale * info.y;if (!info.skinTileIds) {info.skinTileIds = {};}if (!info.skinTileIds[layerId]) {var skinTileIds = new Set();var layerTiles = [];var tileIds = getTileIdsAtLevel(layer, info.x, info.y, zoom, nw, offset, dy, scale, 0);for (var j = 0; j < tileIds.length; j++) {var skinTile = tileIds[j];if (skinTileIds.has(skinTile.id)) {continue;}skinTile.idx = skinTile.x;skinTile.idy = skinTile.y;skinTile.res = skinRes;skinTile.url = layer.getTileUrl(skinTile.x, skinTile.y, skinTile.z + layer.options['zoomOffset']);var xOffset = dx * (skinTile.x - leftX) * tileSize;var yOffset = dy * (skinTile.skinY - topY) * tileSize;var xmin = extent2d.xmin * resScale + xOffset;var ymax = extent2d.ymax * resScale + yOffset;var ymin = extent2d.ymin * resScale + yOffset;if (scaleY > 0) {skinTile.extent2d = new maptalks.PointExtent(xmin, ymin, xmin + tileSize, ymin + tileSize);} else {skinTile.extent2d = new maptalks.PointExtent(xmin, ymax - tileSize, xmin + tileSize, ymax);}skinTileIds.add(skinTile.id);layerTiles.push(skinTile);}info.skinTileIds[layerId] = layerTiles;}var tileSkinTiles = info.skinTileIds[layerId];for (var _j2 = 0; _j2 < tileSkinTiles.length; _j2++) {if (!allSkinTileIds.has(tileSkinTiles[_j2].id)) {if (_i71 < parentCount) {parentSkinTiles.push(tileSkinTiles[_j2]);} else {skinTiles.push(tileSkinTiles[_j2]);}allSkinTileIds.add(tileSkinTiles[_j2].id);}}}return { tileGrids: [{ extent: grid.extent, tiles: skinTiles, parents: parentSkinTiles, count: skinTiles.length }], count: skinTiles.length };} }, { key: \"getSkinLayer\", value: function getSkinLayer(index) {return this.getSkinLayers()[index];} }, { key: \"getSkinLayers\", value: function getSkinLayers() {return this._skinLayers || EMPTY_ARRAY;} }, { key: \"getSkinCount\", value: function getSkinCount() {return this._skinLayers && this._skinLayers.length || 0;} }, { key: \"queryTerrainByProjCoord\", value: function queryTerrainByProjCoord(prjCoord, out) {out = out || [];var renderer = this.getRenderer();if (!renderer) {out[0] = null;out[1] = 0;return out;}var map = this.getMap();var tileInfo = renderer._getTerrainTileAtPrjCoord(prjCoord);if (!tileInfo) {out[0] = null;out[1] = 0;return out;}var worldPos = map['_prjToPointAtRes'](prjCoord, 1, POINT0);return renderer._queryTerrain(out, tileInfo.id, tileInfo, worldPos, 1);} }, { key: \"queryTileTerrainByProjCoord\", value: function queryTileTerrainByProjCoord(prjCoord, tileId, tileIndex, out) {out = out || [];var renderer = this.getRenderer();if (!renderer) {out[0] = null;out[1] = 0;return out;}var map = this.getMap();var worldPos = map['_prjToPointAtRes'](prjCoord, 1, POINT0);return renderer._queryTerrain(out, tileId, tileIndex, worldPos, 1);} }, { key: \"queryTileTerrainByPointAtRes\", value: function queryTileTerrainByPointAtRes(point, res, tileId, tileIndex, out) {out = out || [];var renderer = this.getRenderer();if (!renderer) {out[0] = null;out[1] = 0;return out;}return renderer._queryTerrain(out, tileId, tileIndex, point, res);} }, { key: \"queryTerrain\", value: function queryTerrain(coordinate, out) {out = out || [];var renderer = this.getRenderer();if (!renderer) {out[0] = null;out[1] = 0;return out;}var projection = this.getMap().getProjection();var projCoord = projection.project(coordinate, COORD0);return this.queryTerrainByProjCoord(projCoord, out);} }, { key: \"queryTileMesh\", value: function queryTileMesh(tile, cb) {var renderer = this.getRenderer();if (!renderer) {return;}renderer._queryTileMesh(tile, cb);} }, { key: \"getTerrainTiles\", value: function getTerrainTiles(layer, tileInfo) {var x = tileInfo.x,y = tileInfo.y,z = tileInfo.z,res = tileInfo.res,offset = tileInfo.offset;var tileSize = tileInfo.extent2d.getWidth();var tc = this['_getTileConfig']();var layerTC = layer['_getTileConfig']();var sr = this.getSpatialReference();var _getSkinTileRes3 = getSkinTileRes(sr, z, res),terrainRes = _getSkinTileRes3.res,zoom = _getSkinTileRes3.zoom;var terrainTileSize = this.getTileSize().width;var scale = getSkinTileScale(terrainRes, terrainTileSize, res, tileSize);var nw = tileInfo.nw;if (!nw) {nw = tileInfo.nw = this.getMap().pointAtResToCoord(tileInfo.extent2d.getMin(POINT0), tileInfo.res);}var terrainTiles = getCascadeTileIds(this, x, y, zoom, nw, offset, layerTC.tileSystem.scale.y, scale, 1)[0];for (var _i72 = 0; _i72 < terrainTiles.length; _i72++) {var _terrainTiles$_i2 = terrainTiles[_i72],tx = _terrainTiles$_i2.x,ty = _terrainTiles$_i2.y;var _nw = tc.getTilePointNW(tx, ty, terrainRes, POINT0);terrainTiles[_i72].res = terrainRes;terrainTiles[_i72].extent2d = new maptalks.PointExtent(_nw.x, _nw.y, _nw.x + terrainTileSize, _nw.y - terrainTileSize);}return terrainTiles;} }, { key: \"isTerrainTileLoaded\", value: function isTerrainTileLoaded(tileId) {var renderer = this.getRenderer();if (!renderer) {return false;}return renderer.isTileCached(tileId);} }, { key: \"updateMaterial\", value: function updateMaterial(mat) {if (!mat) {return;}if (!this.options['material']) {this.options['material'] = {};}extend(this.options['material'], mat);var renderer = this.getRenderer();if (!renderer) {return;}renderer.updateMaterial(mat);} }, { key: \"setMaterial\", value: function setMaterial(mat) {if (!mat) {return;}this.options['material'] = mat;var renderer = this.getRenderer();if (!renderer) {return;}renderer.setMaterial(mat);} }, { key: \"_createTileNode\", value: function _createTileNode(x, y, z, idx, idy, res, error, parentId, extent2d, tileId) {var map = this.getMap();var zoomOffset = this.options['zoomOffset'];if (!extent2d) {var tileConfig = this._getTileConfig();extent2d = tileConfig.getTilePrjExtent(x, y, res).convertTo(function (c) {return map._prjToPointAtRes(c, res, TEMP_POINT$2);});}var offset = this._getTileOffset(z);return { parent: parentId, layer: this.getId(), x: x, y: y, z: z, idx: idx, idy: idy, res: res, extent2d: extent2d, id: tileId || this._getTileId(x, y, z), url: this.getTileUrl(x, y, z + zoomOffset), offset: offset, error: error, children: [] };} }]);}(MaskLayerMixin(maptalks.TileLayer));TerrainLayer.mergeOptions(options$2);TerrainLayer.registerJSONType('TerrainLayer');TerrainLayer.registerRenderer('gl', TerrainLayerRenderer);var TRIANGLE = [],POS_A = [],POS_B = [],POS_C = [],TEMP_POINT$1 = new _maptalks.Point(0, 0),NULL_ALTITUDES = [];var TEMP_VEC_AB = [],TEMP_VEC_AC = [];var EMPTY_MAT = [];var pA_VEC = [],pB_VEC = [],pC_VEC = [];var INTERSECT_POINT = [];var bboxIntersects = [];var RayCaster = exports.RayCaster = function () {function RayCaster(from, to) {var isLngLat = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;_classCallCheck(this, RayCaster);this._from = from;this._to = to;this._isLngLat = isLngLat;}return _createClass(RayCaster, [{ key: \"setFromPoint\", value: function setFromPoint(from) {this._from = Array.isArray(from) ? new _maptalks.Coordinate(from) : from;} }, { key: \"setToPoint\", value: function setToPoint(to) {this._to = Array.isArray(to) ? new _maptalks.Coordinate(to) : to;} }, { key: \"test\", value: function test(meshes, map) {var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};var count = options.count || 0;var results = [];var from = this._from;var to = this._to;if (this._isLngLat) {from = coordinateToWorld(map, this._from.x, this._from.y, this._from.z);to = coordinateToWorld(map, this._to.x, this._to.y, this._to.z);}var ray = new maptalks.math.Ray(from, to);for (var _i73 = 0; _i73 < meshes.length; _i73++) {var mesh = meshes[_i73];if (!this._checkBBox(mesh.getBoundingBox(), ray)) {continue;}var localTransform = mesh.localTransform;var geometry = mesh.geometry;var positions = geometry.data[geometry.desc.positionAttribute].array;var altitudes = geometry.data[geometry.desc.altitudeAttribute] && geometry.data[geometry.desc.altitudeAttribute].array || NULL_ALTITUDES;var geoIndices = geometry.indices;if (!positions || !positions.length || !geoIndices || !geoIndices.length) {continue;}var matrix = _reshader.mat4.multiply(EMPTY_MAT, localTransform, mesh.positionMatrix);var coordinates = this._testMesh(mesh, ray, map, positions, altitudes, geoIndices, geometry.desc.positionSize, matrix, count);if (coordinates) {var result = { mesh: mesh, coordinates: coordinates };results.push(result);if (count !== 0 && results.length >= count) {break;}}}return results;} }, { key: \"_testMesh\", value: function _testMesh(mesh, ray, map, positions, altitudes, indices, dim, matrix, count) {var coordinates = [];for (var j = 0; j < indices.length; j += 3) {if (j > mesh.properties.skirtOffset) {break;}var a = indices[j];var b = indices[j + 1];var c = indices[j + 2];var positionsA = _reshader.vec3.set(pA_VEC, positions[a * dim], positions[a * dim + 1], positions[a * dim + 2]);var pA = this._toWorldPosition(POS_A, map, positionsA, altitudes[a] / 100, matrix);var positionsB = _reshader.vec3.set(pB_VEC, positions[b * dim], positions[b * dim + 1], positions[b * dim + 2]);var pB = this._toWorldPosition(POS_B, map, positionsB, altitudes[b] / 100, matrix);var positionsC = _reshader.vec3.set(pC_VEC, positions[c * dim], positions[c * dim + 1], positions[c * dim + 2]);var pC = this._toWorldPosition(POS_C, map, positionsC, altitudes[c] / 100, matrix);var triangle = _reshader.vec3.set(TRIANGLE, pA, pB, pC);var vAB = _reshader.vec3.sub(TEMP_VEC_AB, pA, pB);var vAC = _reshader.vec3.sub(TEMP_VEC_AC, pA, pC);var intersectPoint = this._testIntersection(INTERSECT_POINT, triangle, ray);if (intersectPoint) {var altitude = map.pointAtResToAltitude(intersectPoint[2], map.getGLRes());TEMP_POINT$1.x = intersectPoint[0];TEMP_POINT$1.y = intersectPoint[1];var coord = map.pointAtResToCoordinate(TEMP_POINT$1, map.getGLRes());coord.z = altitude;coordinates.push({ coordinate: coord, indices: [a, b, c], normal: _reshader.vec3.cross([], vAB, vAC) });if (count !== 0 && coordinates.length >= count) {break;}}}return coordinates.length ? coordinates : null;} }, { key: \"_toWorldPosition\", value: function _toWorldPosition(out, map, pos, altitude, matrix) {var alt;if (_maptalks.Util.isNumber(altitude)) {alt = map.altitudeToPoint(altitude, map.getGLRes());_reshader.vec4.set(out, pos[0], pos[1], 0, 1);_reshader.vec4.transformMat4(out, out, matrix);out[2] = alt;} else {_reshader.vec4.set(out, pos[0], pos[1], pos[2], 1);_reshader.vec4.transformMat4(out, out, matrix);}return out;} }, { key: \"_testIntersection\", value: function _testIntersection(out, triangle, ray) {return ray.intersectTriangle(triangle[0], triangle[1], triangle[2], true, out);} }, { key: \"_checkBBox\", value: function _checkBBox(bbox, ray) {if (!bbox) {return false;}return ray.intersectBox(bbox, bboxIntersects);} }]);}();var COORD = new _maptalks.Coordinate(0, 0);function coordinateToWorld(map, x, y, z) {if (!map) {return null;}COORD.set(x, y);var p = map.coordinateToPointAtRes(COORD, map.getGLRes());var height = map.altitudeToPoint(z || 0, map.getGLRes());return [p.x, p.y, height];}var options$1 = { renderer: 'gl', antialias: true, extensions: [], single: true, onlyWebGL1: false, optionalExtensions: ['ANGLE_instanced_arrays', 'OES_element_index_uint', 'OES_standard_derivatives', 'OES_vertex_array_object', 'OES_texture_half_float', 'OES_texture_half_float_linear', 'OES_texture_float', 'OES_texture_float_linear', 'WEBGL_depth_texture', 'EXT_shader_texture_lod', 'EXT_frag_depth', 'EXT_texture_filter_anisotropic', 'WEBGL_compressed_texture_astc', 'WEBGL_compressed_texture_etc', 'WEBGL_compressed_texture_etc1', 'WEBGL_compressed_texture_pvrtc', 'WEBGL_compressed_texture_s3tc', 'WEBGL_compressed_texture_s3tc_srgb'], forceRenderOnZooming: true, forceRenderOnMoving: true, forceRenderOnRotating: true, viewMoveThreshold: 100, geometryEvents: true, multiSamples: 4, forceRedrawPerFrame: false };var emptyMethod = function emptyMethod() {return;};var EMPTY_COORD0 = new maptalks.Coordinate(0, 0);var TEMP_VEC3 = [0, 0, 0];var coord0 = [0, 0, 0],coord1 = [0, 0, 0];var GroupGLLayer = exports.GroupGLLayer = function (_maptalks$Layer) {function GroupGLLayer(id, layers, options) {var _this45;_classCallCheck(this, GroupGLLayer);_this45 = _callSuper(this, GroupGLLayer, [id, options]);_this45.layers = layers && layers.slice() || [];_this45.layers.forEach(function (layer) {if (layer.getMap()) {throw new Error(\"layer(\".concat(layer.getId(), \" is already added on map\"));}});_this45._checkChildren();_this45.sortLayersByZIndex();_this45._layerMap = {};return _this45;}_inherits(GroupGLLayer, _maptalks$Layer);return _createClass(GroupGLLayer, [{ key: \"sortLayersByZIndex\", value: function sortLayersByZIndex() {if (!this.layers || !this.layers.length) {return;}for (var _i74 = 0, l = this.layers.length; _i74 < l; _i74++) {this.layers[_i74]['__group_gl_order'] = _i74;}this.layers.sort(_sortLayersByZIndex);} }, { key: \"setSceneConfig\", value: function setSceneConfig(sceneConfig) {this.options.sceneConfig = sceneConfig;var renderer = this.getRenderer();if (renderer) {renderer.updateSceneConfig();}return this;} }, { key: \"getSceneConfig\", value: function getSceneConfig() {return JSON.parse(JSON.stringify(this._getSceneConfig()));} }, { key: \"_getSceneConfig\", value: function _getSceneConfig() {return this.options.sceneConfig || {};} }, { key: \"getGroundConfig\", value: function getGroundConfig() {var sceneConfig = this._getSceneConfig();return sceneConfig.ground;} }, { key: \"getWeatherConfig\", value: function getWeatherConfig() {var sceneConfig = this._getSceneConfig();return sceneConfig.weather;} }, { key: \"getScanEffectConfig\", value: function getScanEffectConfig() {var sceneConfig = this._getSceneConfig();return sceneConfig.postProcess && sceneConfig.postProcess.scanEffect;} }, { key: \"addLayer\", value: function addLayer(layer, index) {if (layer.getMap()) {throw new Error(\"layer(\".concat(layer.getId(), \") is already added on map\"));}if (layer.options['renderer'] !== 'gl') {throw new Error(\"layer(\".concat(layer.getId(), \")'s renderer is canvas, not supported to be added to GroupGLLayer\"));}if (index === undefined) {this.layers.push(layer);} else {this.layers.splice(index, 0, layer);}this._checkChildren();this.sortLayersByZIndex();var renderer = this.getRenderer();if (!renderer) {return this;}this._prepareLayer(layer);this._updateTerrainSkinLayers();renderer.setToRedraw();return this;} }, { key: \"removeLayer\", value: function removeLayer(layer) {if (maptalks.Util.isString(layer)) {layer = this.getChildLayer(layer);}var idx = this.layers.indexOf(layer);if (idx < 0) {return this;}var layerRenderer = layer.getRenderer();if (layerRenderer && layerRenderer.setTerrainHelper) {layerRenderer.setTerrainHelper(null);}layer['_doRemove']();this._unbindChildListeners(layer);delete this._layerMap[layer.getId()];this.layers.splice(idx, 1);var renderer = this.getRenderer();if (!renderer) {return this;}this._updateTerrainSkinLayers();renderer.setToRedraw();return this;} }, { key: \"clearLayers\", value: function clearLayers() {var layers = this.getLayers();for (var _i75 = 0; _i75 < layers.length; _i75++) {if (layers[_i75]) {layers[_i75].remove();}}return this;} }, { key: \"_updatePolygonOffset\", value: function _updatePolygonOffset() {var total = 0;for (var _i76 = 0; _i76 < this.layers.length; _i76++) {var layer = this.layers[_i76];if (layer.setPolygonOffset && layer.getPolygonOffsetCount) {total += layer.getPolygonOffsetCount();}}var offset = 0;var len = this.layers.length;for (var _i77 = len - 1; _i77 >= 0; _i77--) {var _layer2 = this.layers[_i77];if (_layer2.setPolygonOffset && _layer2.getPolygonOffsetCount) {_layer2.setPolygonOffset(offset, total);offset += _layer2.getPolygonOffsetCount();}}this._polygonOffset = offset;} }, { key: \"getPolygonOffsetCount\", value: function getPolygonOffsetCount() {return this._polygonOffset;} }, { key: \"getLayers\", value: function getLayers() {return this.layers.slice();} }, { key: \"_getLayers\", value: function _getLayers() {return this.layers;} }, { key: \"toJSON\", value: function toJSON() {var layers = [];if (this.layers) {for (var _i78 = 0; _i78 < this.layers.length; _i78++) {var layer = this.layers[_i78];if (!layer) {continue;}if (layer && layer.toJSON) {layers.push(layer.toJSON());}}}var profile = { 'type': this.getJSONType(), 'id': this.getId(), 'layers': layers, 'options': this.config() };return profile;} }, { key: \"onLoadEnd\", value: function onLoadEnd() {var _this46 = this;this.layers.forEach(function (layer) {_this46._prepareLayer(layer);});if (this.options['terrain']) {this._initTerrainLayer();}_superPropGet(GroupGLLayer, \"onLoadEnd\", this, 3)([]);} }, { key: \"_prepareLayer\", value: function _prepareLayer(layer) {var _this47 = this;var map = this.getMap();this._layerMap[layer.getId()] = layer;layer['_canvas'] = this.getRenderer().canvas;layer['_bindMap'](map);layer.once('renderercreate', this._onChildRendererCreate, this);layer.remove = function () {_this47.removeLayer(layer);layer.constructor.prototype.remove.call(layer);delete layer.remove;return _this47;};layer.load();this._bindChildListeners(layer);} }, { key: \"onRemove\", value: function onRemove() {var _this48 = this;this._removeTerrainLayer();this.layers.forEach(function (layer) {_this48._resetSkinLayer(layer);layer['_doRemove']();_this48._unbindChildListeners(layer);});this._layerMap = {};this.clearAnalysis();_superPropGet(GroupGLLayer, \"onRemove\", this, 3)([]);} }, { key: \"getChildLayer\", value: function getChildLayer(id) {var layer = this._layerMap[id];return layer || null;} }, { key: \"getLayer\", value: function getLayer(id) {return this.getChildLayer(id);} }, { key: \"_bindChildListeners\", value: function _bindChildListeners(layer) {layer.on('show hide', this._onLayerShowHide, this);layer.on('idchange', this._onLayerIDChange, this);} }, { key: \"_unbindChildListeners\", value: function _unbindChildListeners(layer) {layer.off('show hide', this._onLayerShowHide, this);layer.off('idchange', this._onLayerIDChange, this);} }, { key: \"_onLayerShowHide\", value: function _onLayerShowHide() {var renderer = this.getRenderer();if (renderer) {renderer.setToRedraw();}} }, { key: \"_onLayerIDChange\", value: function _onLayerIDChange(e) {var newId = e.new;var oldId = e.old;var layer = this.getLayer(oldId);delete this._layerMap[oldId];this._layerMap[newId] = layer;} }, { key: \"_onChildRendererCreate\", value: function _onChildRendererCreate(e) {e.renderer.clearCanvas = empty;} }, { key: \"_checkChildren\", value: function _checkChildren() {var _this49 = this;var ids = {};this.layers.forEach(function (layer) {var layerId = layer.getId();if (ids[layerId]) {throw new Error(\"Duplicate child layer id (\".concat(layerId, \") in the GroupGLLayer (\").concat(_this49.getId(), \")\"));} else {ids[layerId] = 1;}});} }, { key: \"addAnalysis\", value: function addAnalysis(analysis) {this._analysisTaskList = this._analysisTaskList || [];this._analysisTaskList.push(analysis);var renderer = this.getRenderer();if (renderer) {renderer.setToRedraw();}} }, { key: \"removeAnalysis\", value: function removeAnalysis(analysis) {if (this._analysisTaskList) {var index = this._analysisTaskList.indexOf(analysis);if (index > -1) {this._analysisTaskList.splice(index, 1);analysis.remove();}}var renderer = this.getRenderer();if (renderer) {renderer.setToRedraw();}} }, { key: \"clearAnalysis\", value: function clearAnalysis() {if (this._analysisTaskList) {this._analysisTaskList.forEach(function (analysis) {analysis.remove();});this._analysisTaskList = [];}var renderer = this.getRenderer();if (renderer) {renderer.setToRedraw();}} }, { key: \"identify\", value: function identify(coordinate, options) {var map = this.getMap();var renderer = this.getRenderer();if (!map || !renderer) {return [];}var cp = map.coordToContainerPoint(new maptalks.Coordinate(coordinate));return this.identifyAtPoint(cp, options);} }, { key: \"identifyAtPoint\", value: function identifyAtPoint(point) {var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};var isMapGeometryEvent = options.includeInternals;var childLayers = this.getLayers();var layers = options && options.childLayers || childLayers;var map = this.getMap();if (!map) {return [];}var count = isNil$1(options.count) ? 1 : options.count;var result = [];var len = layers.length;for (var _i79 = len - 1; _i79 >= 0; _i79--) {var _result;var layer = layers[_i79];if (childLayers.indexOf(layer) < 0 || !layer.identifyAtPoint) {continue;}var geometryEvents = layer.options['geometryEvents'];if (isMapGeometryEvent && (geometryEvents === undefined || geometryEvents === false || geometryEvents === 0)) {continue;}if (layer.isGeometryListening && isMapGeometryEvent && options.eventTypes.indexOf('mousemove') >= 0) {if (!layer.isGeometryListening(options.eventTypes)) {continue;}}var picks = layer.identifyAtPoint(point, options);if (!picks || !picks.length) {continue;}var id = layer.getId();for (var j = 0; j < picks.length; j++) {if (picks[j]) {picks[j].layer = id;}}(_result = result).push.apply(_result, _toConsumableArray(picks));}if (options.orderByCamera) {var cameraPosition = map.cameraPosition;result.sort(function (a, b) {if (!b.point) {return -1;} else if (!a.point) {return 1;}return _reshader.vec3.dist(a.point, cameraPosition) - _reshader.vec3.dist(b.point, cameraPosition);});}if (count) {result = result.slice(0, count);}return result;} }, { key: \"getTerrain\", value: function getTerrain() {return this.options.terrain;} }, { key: \"setTerrain\", value: function setTerrain(info) {this.options.terrain = info;if (!this.getRenderer()) {return this;}this._initTerrainLayer();this.getMap().updateCenterAltitude();return this;} }, { key: \"removeTerrain\", value: function removeTerrain() {return this.setTerrain(null);} }, { key: \"updateTerrainMaterial\", value: function updateTerrainMaterial(mat) {if (!this._terrainLayer || !mat) {return;}if (!this.options.terrain.material) {this.options.terrain.material = mat;} else {extend(this.options.terrain.material, mat);}this._terrainLayer.updateMaterial(mat);} }, { key: \"_initTerrainLayer\", value: function _initTerrainLayer() {var renderer = this.getRenderer();if (renderer) {renderer.setToRedraw();}var info = this.options['terrain'];if (this._terrainLayer) {var _terrainLayer = this._terrainLayer;var _options = _terrainLayer.options;if (!info || _options.urlTemplate !== info.urlTemplate || _options.spatialReference !== info.spatialReference) {this._removeTerrainLayer();} else {for (var _p9 in info) {if (_p9 === 'material') {_terrainLayer.setMaterial(info[_p9]);} else if (_p9 !== 'urlTemplate' && _p9 !== 'spatialReference') {_terrainLayer.config(_p9, info[_p9]);}}return this;}}this._resetTerrainSkinLayers();if (!info) {return this;}this._terrainLayer = new TerrainLayer('__terrain_in_group', info);this._updateTerrainSkinLayers();var terrainLayer = this._terrainLayer;terrainLayer.on('tileload', this._onTerrainTileLoad, this);this._prepareLayer(terrainLayer);var masks = info.masks;if (masks && masks.length) {terrainLayer.setMask(masks);} else {terrainLayer.removeMask();}this.fire('terrainlayercreated');return this;} }, { key: \"queryTerrain\", value: function queryTerrain(coord, out) {if (!this._terrainLayer) {if (out) {out[0] = null;out[1] = 0;}return [null, 0];}return this._terrainLayer.queryTerrain(coord, out);} }, { key: \"queryTerrainAtPoint\", value: function queryTerrainAtPoint(containerPoint) {if (!this._terrainLayer) {return null;}var terrainLayer = this._terrainLayer;var terrainRenderer = terrainLayer.getRenderer();var meshes = terrainRenderer.getAnalysisMeshes();return this._queryRayCast(containerPoint, meshes);} }, { key: \"query3DTilesAtPoint\", value: function query3DTilesAtPoint(containerPoint) {var layers = this._getLayers();var tilesLayers = layers.filter(function (layer) {return layer && layer.isGeo3DTilesLayer;});if (!tilesLayers.length) {return null;}var options = { excludeMasks: true };for (var _i80 = 0; _i80 < tilesLayers.length; _i80++) {var _renderer12 = tilesLayers[_i80].getRenderer();if (!_renderer12) {continue;}var hits = tilesLayers[_i80].identifyAtPoint(containerPoint, options);if (hits.length) {return new maptalks.Coordinate(hits[0].coordinate);}}return null;} }, { key: \"_queryRayCast\", value: function _queryRayCast(containerPoint, meshes) {var map = this.getMap();var glRes = map.getGLRes();map.getContainerPointRay(coord0, coord1, containerPoint);var raycaster = new RayCaster(coord0, coord1, false);var results = raycaster.test(meshes, map, { count: 1 });var coordinates = [];results.forEach(function (result) {result.coordinates.forEach(function (c) {coordinates.push(c.coordinate);});});var from = map.pointAtResToCoordinate(new maptalks.Point(coord0[0], coord0[1]), glRes, EMPTY_COORD0);from.z = coord0[2] / map.altitudeToPoint(1, glRes);var fromPoint = _reshader.vec3.set(TEMP_VEC3, from.x, from.y, from.z);coordinates.sort(function (a, b) {return _reshader.vec3.dist(a.toArray(), fromPoint) - _reshader.vec3.dist(b.toArray(), fromPoint);});return coordinates[0];} }, { key: \"queryTerrainByProjCoord\", value: function queryTerrainByProjCoord(projCoord, out) {if (!this._terrainLayer) {if (out) {out[0] = null;out[1] = 0;}return [null, 0];}return this._terrainLayer.queryTerrainByProjCoord(projCoord, out);} }, { key: \"_updateTerrainSkinLayers\", value: function _updateTerrainSkinLayers() {var _this50 = this;if (!this._terrainLayer) {return;}var layers = this.layers;var skinLayers = [];var _loop = function _loop() {if (!layers[_i81]) {return 0;}var layer = layers[_i81];var renderer = layer.getRenderer();if (renderer.renderTerrainSkin) {if (renderer.deleteTile === emptyMethod) {skinLayers.push(layers[_i81]);return 0;}layer.getTiles = function () {return _this50._terrainLayer && _this50._terrainLayer.getSkinTiles(layer);};if (renderer.drawTileOnTerrain) {renderer.drawTile = function () {return renderer.drawTileOnTerrain.apply(renderer, arguments);};} else {renderer.drawTile = emptyMethod;}renderer.deleteTile = emptyMethod;skinLayers.push(layers[_i81]);}if (renderer.setTerrainHelper) {renderer.setTerrainHelper(_this50._terrainLayer);}},_ret;for (var _i81 = 0; _i81 < layers.length; _i81++) {_ret = _loop();if (_ret === 0) continue;}this._terrainLayer.setSkinLayers(skinLayers);} }, { key: \"_resetSkinLayer\", value: function _resetSkinLayer(layer) {if (!isTerrainSkin(layer)) {return;}var renderer = layer.getRenderer();if (renderer) {if (renderer.setTerrainHelper) {renderer.setTerrainHelper(null);}if (renderer.clear) {renderer.clear();}delete renderer.drawTile;delete renderer.deleteTile;}delete layer.getTiles;} }, { key: \"_resetTerrainSkinLayers\", value: function _resetTerrainSkinLayers() {var layers = this.layers;for (var _i82 = 0; _i82 < layers.length; _i82++) {if (!layers[_i82]) {continue;}this._resetSkinLayer(layers[_i82]);}} }, { key: \"_onTerrainTileLoad\", value: function _onTerrainTileLoad() {var renderer = this.getRenderer();if (renderer) {renderer.setToRedraw();}} }, { key: \"_removeTerrainLayer\", value: function _removeTerrainLayer() {if (this._terrainLayer) {var layer = this._terrainLayer;layer.off('tileload', this._onTerrainTileLoad, this);this._unbindChildListeners(layer);this._terrainLayer['_doRemove']();delete this._terrainLayer;this.fire('terrainlayerremoved');}} }, { key: \"getTerrainLayer\", value: function getTerrainLayer() {return this._terrainLayer;} }, { key: \"_bindMap\", value: function _bindMap() {for (var _len6 = arguments.length, args = new Array(_len6), _key9 = 0; _key9 < _len6; _key9++) {args[_key9] = arguments[_key9];}if (this.options['single']) {var map = args[0];var layers = map.getLayers();for (var _i83 = 0; _i83 < layers.length; _i83++) {if (layers[_i83] instanceof GroupGLLayer) {throw new Error('Only one GroupGLLayer is allowed in a map instance. Set options.single to false if you want to add two or more GroupGLLayers.');}}}return _superPropGet(GroupGLLayer, '_bindMap', this, 3)(args);} }, { key: \"fire\", value: function fire() {for (var _len7 = arguments.length, args = new Array(_len7), _key10 = 0; _key10 < _len7; _key10++) {args[_key10] = arguments[_key10];}if (args[0] === 'layerload') {var layers = this._getLayers();var _iterator16 = _createForOfIteratorHelper(layers),_step16;try {for (_iterator16.s(); !(_step16 = _iterator16.n()).done;) {var layer = _step16.value;var _renderer13 = layer.getRenderer();if (_renderer13 && _renderer13.isRenderComplete()) {layer.fire('layerload');}}} catch (err) {_iterator16.e(err);} finally {_iterator16.f();}}_superPropGet(GroupGLLayer, \"fire\", this, 3)(args);} }], [{ key: \"fromJSON\", value: function fromJSON(layerJSON) {if (!layerJSON || layerJSON['type'] !== 'GroupGLLayer') {return null;}var layers = layerJSON['layers'].map(function (json) {return maptalks.Layer.fromJSON(json);});return new GroupGLLayer(layerJSON['id'], layers, layerJSON['options']);} }]);}(maptalks.Layer);GroupGLLayer.mergeOptions(options$1);GroupGLLayer.registerJSONType('GroupGLLayer');GroupGLLayer.registerRenderer('gl', GroupGLLayerRenderer);GroupGLLayer.registerRenderer('canvas', null);function empty() {return;}function _sortLayersByZIndex(a, b) {var c = a.getZIndex() - b.getZIndex();if (c === 0) {return a['__group_gl_order'] - b['__group_gl_order'];}return c;}function isTerrainSkin(layer) {if (!layer) {return false;}var renderer = layer.getRenderer();if (!renderer) {return false;}return !!renderer.renderTerrainSkin;}var SkyboxMode;(function (SkyboxMode) {SkyboxMode[SkyboxMode[\"AMBIENT\"] = 0] = \"AMBIENT\";SkyboxMode[SkyboxMode[\"REALISTIC\"] = 1] = \"REALISTIC\";})(SkyboxMode || (SkyboxMode = {}));var PREFILTER_CUBE_SIZE = 512;var LightManager = function () {function LightManager(map) {_classCallCheck(this, LightManager);this._map = map;this._loader = new reshader.ResourceLoader();}return _createClass(LightManager, [{ key: \"getDirectionalLight\", value: function getDirectionalLight() {return this._config && this._config.directional || {};} }, { key: \"getAmbientLight\", value: function getAmbientLight() {return this._config && this._config.ambient || {};} }, { key: \"getAmbientResource\", value: function getAmbientResource() {return this._iblMaps;} }, { key: \"setConfig\", value: function setConfig(config) {var oldConfig = this._config;this._urlModifier = config.urlModifier;this._config = JSON.parse(JSON.stringify(config));var ambientUpdate = false;if (!config || !config.ambient || !config.ambient.resource) {this._disposeCubeLight();ambientUpdate = oldConfig && oldConfig.ambient && oldConfig.ambient.resource;} else if (!oldConfig || !oldConfig.ambient || !ambientEqual(oldConfig.ambient, config.ambient)) {this._initAmbientResources();return;} else if (this._iblMaps) {if (config.ambient.prefilterCubeSize !== oldConfig.ambient && oldConfig.ambient.prefilterCubeSize) {this._onHDRLoaded();}ambientUpdate = true;if (config.ambient.resource.sh) {this._iblMaps.sh = config.ambient.resource.sh;}}this._map.fire('updatelights', { ambientUpdate: ambientUpdate });} }, { key: \"_tryToGetREGLContext\", value: function _tryToGetREGLContext(map) {var layers = map.getLayers();for (var _i84 = 0; _i84 < layers.length; _i84++) {var _renderer14 = layers[_i84] && layers[_i84].getRenderer();if (!_renderer14) {continue;}if (_renderer14.regl) {return _renderer14.regl;}}var canvas = document.createElement('canvas');var regl = (0, _regl3.default)({ canvas: canvas, attributes: { depth: false, stencil: false, alpha: false }, optionalExtensions: ['OES_standard_derivatives', 'OES_texture_half_float', 'OES_texture_half_float_linear', 'OES_texture_float', 'OES_texture_float_linear'] });regl._temp = true;return regl;} }, { key: \"_initAmbientResources\", value: function _initAmbientResources() {var _this51 = this;var resource = this._config.ambient.resource;var url = resource && resource.url;if (!url) {return;}var images = [];var count = 0;var currentCount = 0;var onload = function onload() {currentCount++;if (currentCount >= count) {_this51._onSkyboxLoaded(images);}};var onerror = function onerror() {throw new Error(\"skybox image with url(\".concat(this.src, \") failed to load, please check the image's url.\"));};var urlModifier = this._urlModifier;if (url.top || url.nx) {var front = url.front,back = url.back,right = url.right,left = url.left,top = url.top,bottom = url.bottom;var nx = url.nx,ny = url.ny,px = url.px,py = url.py,nz = url.nz,pz = url.pz;var envUrls;if (front) {envUrls = [left, right, back, front, top, bottom];} else {envUrls = [nx, px, nz, pz, py, ny];}count = envUrls.length;for (var _i85 = 0; _i85 < count; _i85++) {var img = new Image();img.onload = onload;img.onerror = onerror;img.src = urlModifier && urlModifier(envUrls[_i85]) || envUrls[_i85];images[_i85] = img;}} else {var props = { url: resource.url, arrayBuffer: true, hdr: true, flipY: true };this._loader.setURLModifier(urlModifier);this._hdr = new reshader.Texture2D(props, this._loader);this._hdr.once('complete', function () {_this51._onHDRLoaded();});this._hdr.once('error', function () {_this51._onHDRError();});}} }, { key: \"dispose\", value: function dispose() {this._disposeCubeLight();} }, { key: \"_onHDRLoaded\", value: function _onHDRLoaded() {if (this._hdr) {this._iblMaps = this._createIBLMaps(this._hdr);this._map.fire('updatelights', { 'ambientUpdate': true });}} }, { key: \"_onHDRError\", value: function _onHDRError() {this._map.fire('hdrerror');} }, { key: \"_onSkyboxLoaded\", value: function _onSkyboxLoaded(images) {this._iblMaps = this._createIBLMaps(images);this._map.fire('updatelights', { 'ambientUpdate': true });} }, { key: \"_createIBLMaps\", value: function _createIBLMaps(envTexture) {var config = this._config.ambient.resource;var cubeSize = config.prefilterCubeSize || PREFILTER_CUBE_SIZE;var regl = this._tryToGetREGLContext(this._map);var maps = reshader.pbr.PBRHelper.createIBLMaps(regl, { envTexture: Array.isArray(envTexture) ? envTexture : envTexture.getREGLTexture(regl), ignoreSH: !!config['sh'], envCubeSize: cubeSize, prefilterCubeSize: cubeSize, environmentExposure: this._config.ambient.exposure, format: 'array' });if (config['sh']) {maps.sh = config['sh'];if (Array.isArray(maps['sh'][0])) {var sh = maps['sh'];var flatten = [];for (var _i86 = 0; _i86 < sh.length; _i86++) {flatten.push.apply(flatten, _toConsumableArray(sh[_i86]));}maps['sh'] = flatten;}}if (regl._temp) {delete this._hdr;regl.destroy();}return maps;} }, { key: \"_disposeCubeLight\", value: function _disposeCubeLight() {if (this._hdr) {this._hdr.dispose();delete this._hdr;}delete this._iblMaps;} }]);}();function ambientEqual(config0, config1) {if (!config0.resource) {return false;}if (config0.resource.url !== config1.resource.url) {return false;}return true;}_maptalks.Map.include({ setLights: function setLights(config) {this.options['lights'] = config;this._initLightManager();return this;}, getLights: function getLights() {return this.options['lights'];}, _initLightManager: function _initLightManager() {if (!this._lightManager) {this._lightManager = new LightManager(this);}this._lightManager.setConfig(this.getLights());}, getLightManager: function getLightManager() {if (!this._lightManager) {return null;}return this._lightManager;} });_maptalks.Map.addOnLoadHook(function () {if (this.options['lights']) {this._initLightManager();}});var postCanvas;var regl;var texture;var emptyLutTexture;var postProcess;var CLEAR_COLOR = { color: [0, 0, 0, 0] };var DEFAULT_CONFIG = { enable: false };_maptalks.Map.include({ setPostProcessConfig: function setPostProcessConfig(config) {this.options['postProcessConfig'] = config;return this;}, getPostProcessConfig: function getPostProcessConfig() {return this.options['postProcessConfig'];} });var drawLayerCanvas = _maptalks.renderer.MapCanvasRenderer.prototype.drawLayerCanvas;_maptalks.renderer.MapCanvasRenderer.prototype.drawLayerCanvas = function () {var updated = drawLayerCanvas.apply(this, arguments);if (updated) {doPostProcess(this, this.canvas);}return updated;};var renderFrame = _maptalks.renderer.MapCanvasRenderer.prototype.renderFrame;_maptalks.renderer.MapCanvasRenderer.prototype.renderFrame = function () {var rendered = renderFrame.apply(this, arguments);var config = this.map.getPostProcessConfig();var grainConfig = config && config.filmicGrain;if (grainConfig && (grainConfig.enable === undefined || grainConfig.enable === true)) {this.setLayerCanvasUpdated();}return rendered;};function doPostProcess(renderer, canvas) {var config = renderer.map.getPostProcessConfig();if (!config || !config.enable) {return;}if (!postCanvas) {createContext(canvas.width, canvas.height);}if (postCanvas.width !== canvas.width || postCanvas.height !== canvas.height) {postCanvas.width = canvas.width;postCanvas.height = canvas.height;}regl.clear(CLEAR_COLOR);var grainConfig = config.filmicGrain || DEFAULT_CONFIG;if (grainConfig.enable === undefined) {grainConfig.enable = true;}var vignetteConfig = config.vignette || DEFAULT_CONFIG;if (vignetteConfig.enable === undefined) {vignetteConfig.enable = true;}var lutConfig = config.colorLUT || DEFAULT_CONFIG;if (lutConfig.enable === undefined) {lutConfig.enable = true;}if (!renderer._postProcessContext) {renderer._postProcessContext = {};}var context = renderer._postProcessContext;if (lutConfig.enable) {var url = lutConfig.lut;if (!context['lutTexture'] || context['lutTexture'].url !== url) {var image = new Image();image.onload = function () {var texInfo = { data: image, min: 'linear', mag: 'linear' };var texture = context['lutTexture'] ? context['lutTexture'].texture(texInfo) : regl.texture(texInfo);context['lutTexture'] = { url: url, texture: texture };renderer.setLayerCanvasUpdated();};image.src = url;}}var uniforms = { 'enableGrain': +!!grainConfig.enable, 'grainFactor': grainConfig.factor === undefined ? 0.15 : grainConfig.factor, 'timeGrain': performance.now(), 'enableVignette': +!!vignetteConfig.enable, 'lensRadius': vignetteConfig.lensRadius || [0.8, 0.25], 'frameMod': 1, 'enableLut': +!!lutConfig.enable, 'lookupTable': context['lutTexture'] ? context['lutTexture'].texture : emptyLutTexture };if (!postProcess) {postProcess = new PostProcess(regl);}postProcess.postprocess(null, uniforms, texture({ width: postCanvas.width, height: postCanvas.height, data: canvas, flipY: true, mag: 'linear', min: 'linear', mipmap: false }));if (grainConfig.enable) {renderer.setLayerCanvasUpdated();}renderer.context.drawImage(postCanvas, 0, 0, postCanvas.width, postCanvas.height);}function createContext(width, height) {postCanvas = document.createElement('canvas', width, height);regl = (0, _regl3.default)({ canvas: postCanvas, attributes: { depth: false, stencil: false, alpha: true, antialias: false, premultipliedAlpha: false } });texture = regl.texture({ mag: 'linear', min: 'linear', mipmap: false, flipY: true, width: width, height: height });emptyLutTexture = regl.texture();}var COLOR = [];function clearShowOnly(mesh) {if (!mesh.properties.showOnlyTimestamp) {return;}delete mesh.properties.showOnlyTimestamp;restoreOldElements(mesh);}function saveOldElements(mesh, elements) {var geoProps = mesh.geometry.properties;if (!geoProps.oldElementsBeforeHighlight) {geoProps.oldElementsBeforeHighlight = mesh.geometry.elements;}if (geoProps.elements) {if (!geoProps.oldElementsArrBeforeHighlight) {geoProps.oldElementsArrBeforeHighlight = geoProps.elements;}geoProps.elements = elements;}}function restoreOldElements(mesh) {var oldElementsBeforeHighlight = mesh.geometry.properties.oldElementsBeforeHighlight;if (!oldElementsBeforeHighlight || mesh.geometry.elements === oldElementsBeforeHighlight) {return;}mesh.geometry.deleteElements();mesh.geometry.setElements(mesh.geometry.properties.oldElementsBeforeHighlight);if (mesh.geometry.properties.oldElementsArrBeforeHighlight) {mesh.geometry.properties.elements = mesh.geometry.properties.oldElementsArrBeforeHighlight;delete mesh.geometry.properties.oldElementsArrBeforeHighlight;}delete mesh.geometry.properties.hasInvisible;delete mesh.geometry.properties.oldElementsBeforeHighlight;}function showOnly(regl, mesh, items, timestamp, feaIdIndiceMap) {var showOnlyTimestamp = mesh.properties.showOnlyTimestamp;if (!items) {if (showOnlyTimestamp) {clearShowOnly(mesh);}return;}if (timestamp === showOnlyTimestamp) {return;}mesh.properties.showOnlyTimestamp = timestamp;var ids = items.keys();var elements = [];var _iterator17 = _createForOfIteratorHelper(ids),_step17;try {for (_iterator17.s(); !(_step17 = _iterator17.n()).done;) {var id = _step17.value;if (!feaIdIndiceMap.has(id)) {continue;}var indices = feaIdIndiceMap.get(id);if (indices) {pushIn(elements, indices);}}} catch (err) {_iterator17.e(err);} finally {_iterator17.f();}saveOldElements(mesh, elements);if (mesh.geometry.elements !== mesh.geometry.properties.oldElementsBeforeHighlight && mesh.geometry.elements.destroy) {mesh.geometry.deleteElements();}var info = { data: elements, primitive: mesh.geometry.getPrimitive() };mesh.geometry.setElements(regl.elements(info));mesh.geometry.generateBuffers(regl);}function clearHighlight(mesh) {if (!mesh.properties.highlightTimestamp) {return;}var defines = mesh.defines;delete defines['HAS_HIGHLIGHT_COLOR'];delete defines['HAS_HIGHLIGHT_OPACITY'];mesh.setDefines(defines);delete mesh.properties.highlightTimestamp;restoreOldElements(mesh);deleteHighlightBloomMesh(mesh);}function highlightMesh(regl, mesh, highlighted, timestamp, feaIdIndiceMap) {var highlightTimestamp = mesh.properties.highlightTimestamp;if (!highlighted) {if (highlightTimestamp) {clearHighlight(mesh);}return;}if (timestamp === highlightTimestamp) {return;}var isInstanced = mesh instanceof reshader.InstancedMesh;var vertexCount = isInstanced ? mesh.instanceCount : mesh.geometry.getVertexCount();var _mesh$geometry$proper = mesh.geometry.properties,aHighlightColor = _mesh$geometry$proper.aHighlightColor,aHighlightOpacity = _mesh$geometry$proper.aHighlightOpacity;if (aHighlightColor) {aHighlightColor.fill(0);}if (aHighlightOpacity) {aHighlightOpacity.fill(255);}var hasColor = false;var hasOpacity = false;var ids = highlighted.keys();var hlElements = null;var invisibleIds = null;var _iterator18 = _createForOfIteratorHelper(ids),_step18;try {for (_iterator18.s(); !(_step18 = _iterator18.n()).done;) {var id = _step18.value;if (feaIdIndiceMap.has(id)) {var highlightedData = highlighted.get(id);var _color2 = highlightedData.color,bloom = highlightedData.bloom,visible = highlightedData.visible,nodeIndex = highlightedData.nodeIndex;if (!isNil$1(nodeIndex) && nodeIndex !== mesh.properties.nodeIndex) {continue;}var opacity = highlightedData.opacity;var normalizedColor = void 0;if (_color2) {if (!hasColor) {if (!aHighlightColor) {aHighlightColor = new Uint8Array(vertexCount * 4);}hasColor = true;}normalizedColor = normalizeColor255(COLOR, _color2);}opacity = isNil$1(opacity) ? 1 : opacity;if (opacity < 1) {if (!hasOpacity) {if (!aHighlightOpacity) {aHighlightOpacity = new Uint8Array(vertexCount);aHighlightOpacity.fill(255);}hasOpacity = true;}}if (visible === false) {if (!invisibleIds) {invisibleIds = new Set();}invisibleIds.add(id);}if (normalizedColor || opacity < 1 || bloom) {var indices = feaIdIndiceMap.get(id);if (indices) {for (var j = 0; j < indices.length; j++) {var idx = indices[j];if (normalizedColor) {_reshader.vec4.set.apply(vec4, [aHighlightColor.subarray(idx * 4, idx * 4 + 4)].concat(_toConsumableArray(normalizedColor)));}if (opacity < 1) {aHighlightOpacity[idx] = opacity * 255;}if (bloom) {if (!hlElements) {hlElements = [];}hlElements.push(idx);}}}}}}} catch (err) {_iterator18.e(err);} finally {_iterator18.f();}var geometry = mesh.geometry;var defines = mesh.defines;if (hasColor) {if (isInstanced) {mesh.updateInstancedData('aHighlightColor', aHighlightColor);mesh.generateInstancedBuffers(regl);} else {if (!geometry.data.aHighlightColor) {geometry.data.aHighlightColor = aHighlightColor;geometry.generateBuffers(regl);} else {geometry.updateData('aHighlightColor', aHighlightColor);}geometry.properties.aHighlightColor = aHighlightColor;}defines['HAS_HIGHLIGHT_COLOR'] = 1;} else if (defines['HAS_HIGHLIGHT_COLOR']) {if (isInstanced) {mesh.updateInstancedData('aHighlightColor', aHighlightColor);mesh.generateInstancedBuffers(regl);} else {geometry.updateData('aHighlightColor', aHighlightColor);}delete defines['HAS_HIGHLIGHT_COLOR'];}if (hasOpacity) {if (isInstanced) {mesh.updateInstancedData('aHighlightOpacity', aHighlightOpacity);mesh.generateInstancedBuffers(regl);} else {if (!geometry.data.aHighlightOpacity) {geometry.data.aHighlightOpacity = aHighlightOpacity;geometry.generateBuffers(regl);} else {geometry.updateData('aHighlightOpacity', aHighlightOpacity);}geometry.properties.aHighlightOpacity = aHighlightOpacity;}defines['HAS_HIGHLIGHT_OPACITY'] = 1;} else if (defines['HAS_HIGHLIGHT_OPACITY']) {if (isInstanced) {mesh.updateInstancedData('aHighlightOpacity', aHighlightOpacity);mesh.generateInstancedBuffers(regl);} else {geometry.updateData('aHighlightOpacity', aHighlightOpacity);}delete defines['HAS_HIGHLIGHT_OPACITY'];}if (invisibleIds && invisibleIds.size > 0) {var elements = [];feaIdIndiceMap.forEach(function (value, key) {if (invisibleIds.has(key)) {return;}pushIn(elements, value);});geometry.properties.hasInvisible = true;saveOldElements(mesh, elements);var info = { data: elements, primitive: geometry.getPrimitive() };if (geometry.elements !== geometry.properties.oldElementsBeforeHighlight && geometry.elements.destroy) {geometry.deleteElements();}elements = regl.elements(info);geometry.setElements(elements);geometry.generateBuffers(regl);} else if (geometry.properties.hasInvisible) {restoreOldElements(mesh);}mesh.setDefines(defines);mesh.properties.highlightTimestamp = timestamp;var hlBloomMesh = mesh.properties.hlBloomMesh;if (hlElements && hlElements.length) {if (!hlBloomMesh) {var geo = new reshader.Geometry(geometry.data, hlElements, 0, geometry.desc);geo.generateBuffers(regl);var material = mesh.material;hlBloomMesh = new reshader.Mesh(geo, material, mesh.config);var uniforms = mesh.uniforms;var _loop2 = function _loop2(_p10) {Object.defineProperty(hlBloomMesh.uniforms, _p10, { enumerable: true, get: function get() {return mesh.getUniform(_p10);} });};for (var _p10 in uniforms) {_loop2(_p10);}var _defines = extend({}, mesh.defines);_defines['HAS_BLOOM'] = 1;var localTransform = _reshader.mat4.copy([], mesh.localTransform);var positionMatrix = _reshader.mat4.copy([], mesh.positionMatrix);hlBloomMesh.setLocalTransform(localTransform);hlBloomMesh.setPositionMatrix(positionMatrix);extend(hlBloomMesh.properties, mesh.properties);extend(geo.properties, geometry.properties);hlBloomMesh.setDefines(_defines);hlBloomMesh.bloom = 1;} else {var _localTransform = _reshader.mat4.copy(hlBloomMesh.localTransform, mesh.localTransform);var _positionMatrix = _reshader.mat4.copy(hlBloomMesh.positionMatrix, mesh.positionMatrix);hlBloomMesh.setLocalTransform(_localTransform);hlBloomMesh.setPositionMatrix(_positionMatrix);mesh.properties.hlBloomMesh.geometry.setElements(hlElements);}mesh.properties.hlBloomMesh = hlBloomMesh;} else if (hlBloomMesh) {deleteHighlightBloomMesh(mesh);}}function deleteHighlightBloomMesh(mesh) {if (!mesh) {return;}var hlBloomMesh = mesh.properties.hlBloomMesh;if (hlBloomMesh) {var hlGeo = hlBloomMesh.geometry;if (hlGeo.elements && hlGeo.elements.destroy) {hlGeo.deleteElements();}hlBloomMesh.dispose();delete mesh.properties.hlBloomMesh;}}var highlight = exports.HighlightUtil = Object.freeze({ __proto__: null, clearHighlight: clearHighlight, clearShowOnly: clearShowOnly, deleteHighlightBloomMesh: deleteHighlightBloomMesh, highlightMesh: highlightMesh, showOnly: showOnly });var EMPTY_COLOR = [0, 0, 0, 0];var HeatmapProcess = exports.HeatmapProcess = function () {function HeatmapProcess(regl, sceneConfig, layer, colorStops, stencil, polygonOffset) {_classCallCheck(this, HeatmapProcess);this.renderer = new reshader.Renderer(regl);this.sceneConfig = sceneConfig;this._layer = layer;this._colorStops = colorStops;this._stencil = stencil;this._polygonOffset = polygonOffset || { factor: 0, units: 0 };this._init();this._outputSize = [];}return _createClass(HeatmapProcess, [{ key: \"render\", value: function render(scene, uniforms, fbo) {this._check();var map = this._layer.getMap();this.renderer.regl.clear({ color: EMPTY_COLOR, depth: 1, stencil: 0xFF, framebuffer: this._heatmapFBO });this.renderer.render(this._heatmapShader, uniforms, scene, this._heatmapFBO);var canvas = this._layer.getRenderer().canvas;this._outputSize[0] = canvas.width;this._outputSize[1] = canvas.height;var displayUniforms = extend({ colorRamp: this._colorRampTex, inputTexture: this._heatmapFBO, projViewMatrix: map.projViewMatrix, textureOutputSize: this._outputSize }, uniforms);this._transformGround();return this.renderer.render(this._displayShader, displayUniforms, this._groundScene, fbo);} }, { key: \"dispose\", value: function dispose() {if (this._heatmapShader) {this._heatmapShader.dispose();delete this._heatmapShader;}if (this._displayShader) {this._displayShader.dispose();delete this._displayShader;}if (this._ground) {this._ground.geometry.dispose();this._ground.dispose();delete this._ground;delete this._groundScene;}if (this._heatmapFBO) {this._heatmapFBO.destroy();delete this._heatmapFBO;}} }, { key: \"_createColorRamp\", value: function _createColorRamp() {var colorStops = this._colorStops;var canvas = this._rampCanvas;var ctx = this._rampCtx;if (!ctx) {canvas = this._rampCanvas = document.createElement('canvas');canvas.width = 256;canvas.height = 1;ctx = this._rampCtx = canvas.getContext('2d');} else {ctx.clearRect(0, 0, 256, 1);}var gradient = ctx.createLinearGradient(0, 0, 256, 1);for (var _i87 = 0; _i87 < colorStops.length; _i87++) {gradient.addColorStop(colorStops[_i87][0], colorStops[_i87][1]);}ctx.fillStyle = gradient;ctx.fillRect(0, 0, 256, 1);if (this._colorRampTex) {this._colorRampTex.destroy();}var regl = this.renderer.regl;this._colorRampTex = regl.texture({ width: 256, height: 1, data: canvas, min: 'linear', mag: 'linear', premultiplyAlpha: true });} }, { key: \"_check\", value: function _check() {var canvas = this._layer.getRenderer().canvas;var width = Math.ceil(canvas.width / 4);var height = Math.ceil(canvas.height / 4);var fbo = this._heatmapFBO;if (fbo.width !== width || fbo.height !== height) {fbo.resize(width, height);}} }, { key: \"_init\", value: function _init() {this._createColorRamp();this._createShader();this._createHeatmapTex();this._createGround();} }, { key: \"_createGround\", value: function _createGround() {var planeGeo = new reshader.Plane();planeGeo.generateBuffers(this.renderer.regl);this._ground = new reshader.Mesh(planeGeo);this._groundScene = new reshader.Scene([this._ground]);} }, { key: \"_transformGround\", value: function _transformGround() {var map = this._layer.getMap();var localTransform = GroundPainter.getGroundTransform(this._ground.localTransform, map);this._ground.setLocalTransform(localTransform);} }, { key: \"_createHeatmapTex\", value: function _createHeatmapTex() {var canvas = this._layer.getRenderer().canvas;var regl = this.renderer.regl;var colorType = regl.hasExtension('OES_texture_half_float') ? 'half float' : 'float';var width = Math.ceil(canvas.width / 4);var height = Math.ceil(canvas.height / 4);var tex = regl.texture({ width: width, height: height, type: colorType, min: 'linear', mag: 'linear', format: 'rgba' });this._heatmapFBO = regl.framebuffer({ width: width, height: height, color: [tex] });} }, { key: \"_createShader\", value: function _createShader() {var layer = this._layer;var canvas = layer.getRenderer().canvas;var depthRange = this.sceneConfig.depthRange;var extraCommandProps = { viewport: { x: 0, y: 0, width: function width() {return canvas ? Math.ceil(canvas.width / 4) : 1;}, height: function height() {return canvas ? Math.ceil(canvas.height / 4) : 1;} }, depth: { enable: true, func: 'always' } };if (this._stencil) {extraCommandProps.stencil = this._stencil;}this._heatmapShader = new reshader.HeatmapShader({ extraCommandProps: extraCommandProps });this._displayShader = new reshader.HeatmapDisplayShader({ x: 0, y: 0, width: function width() {return canvas ? canvas.width : 1;}, height: function height() {return canvas ? canvas.height : 1;} }, { extraCommandProps: { stencil: { enable: false }, depth: { enable: true, range: depthRange || [0, 1], func: '<=' }, polygonOffset: { enable: true, offset: this._polygonOffset }, scissor: { enable: false } } });} }]);}();var ClipMask = function (_Mask) {function ClipMask(coordinates, options) {_classCallCheck(this, ClipMask);return _callSuper(this, ClipMask, [coordinates, options]);}_inherits(ClipMask, _Mask);return _createClass(ClipMask, [{ key: \"_createMesh\", value: function _createMesh(regl) {var geometry = this._createGeometry(regl);var mesh = new reshader.Mesh(geometry);this._setDefines(mesh);this._setLocalTransform(mesh);return mesh;} }, { key: \"_updateUniforms\", value: function _updateUniforms(mesh, ratio, minHeight) {var maskMode = this._getMaskMode();mesh.setUniform('maskMode', maskMode);var color = this._getMaskColor();mesh.setUniform('maskColor', color);if (isNumber$1(ratio)) {var heightRange = this._getHeightRange();heightRange[0] = (heightRange[0] - minHeight) * ratio;heightRange[1] = (heightRange[1] - minHeight) * ratio;mesh.setUniform('heightRange', heightRange);}} }, { key: \"setHeightRange\", value: function setHeightRange(heightRange) {this.options.heightRange = heightRange;this['_fireEvent']('heightrangechange');} }, { key: \"getHeightRange\", value: function getHeightRange() {return this.options.heightRange;} }, { key: \"_getHeightRange\", value: function _getHeightRange() {var heightRange = [0, 0];if (this.options.heightRange) {heightRange[0] = this._altitudeToPoint(this.options.heightRange[0]);heightRange[1] = this._altitudeToPoint(this.options.heightRange[1]);}return heightRange;} }, { key: \"_setDefines\", value: function _setDefines(mesh) {var defines = mesh.getDefines();defines['HAS_MASK_COLOR'] = 1;mesh.setDefines(defines);} }]);}(Mask);var ClipInsideMask = exports.ClipInsideMask = function (_ClipMask) {function ClipInsideMask(coordinates, options) {var _this52;_classCallCheck(this, ClipInsideMask);_this52 = _callSuper(this, ClipInsideMask, [coordinates, options]);_this52._mode = 'clip-inside';return _this52;}_inherits(ClipInsideMask, _ClipMask);return _createClass(ClipInsideMask);}(ClipMask);var ClipOutsideMask = exports.ClipOutsideMask = function (_ClipMask2) {function ClipOutsideMask(coordinates, options) {var _this53;_classCallCheck(this, ClipOutsideMask);_this53 = _callSuper(this, ClipOutsideMask, [coordinates, options]);_this53._mode = 'clip-outside';return _this53;}_inherits(ClipOutsideMask, _ClipMask2);return _createClass(ClipOutsideMask);}(ClipMask);var FlatMask = function (_Mask2) {function FlatMask(coordinates, options) {_classCallCheck(this, FlatMask);return _callSuper(this, FlatMask, [coordinates, options]);}_inherits(FlatMask, _Mask2);return _createClass(FlatMask, [{ key: \"setFlatheight\", value: function setFlatheight(flatHeight) {this.options.flatHeight = flatHeight;this['_fireEvent']('flatheightchange');} }, { key: \"_createMesh\", value: function _createMesh(regl) {var geometry = this._createGeometry(regl);var mesh = new reshader.Mesh(geometry);this._setDefines(mesh);this._setLocalTransform(mesh);return mesh;} }, { key: \"_updateUniforms\", value: function _updateUniforms(mesh) {var maskMode = this._getMaskMode();mesh.setUniform('maskMode', maskMode);var color = this._getMaskColor();mesh.setUniform('maskColor', color);var flatHeight = this._altitudeToPoint(this.options.flatHeight || 0);mesh.setUniform('flatHeight', flatHeight);} }, { key: \"_setDefines\", value: function _setDefines(mesh) {var defines = mesh.getDefines();defines['HAS_MASK_FLAT'] = 1;mesh.setDefines(defines);} }, { key: \"_getHeightRange\", value: function _getHeightRange() {var heightRange = [0, this.options.flatHeight];heightRange[1] = this._altitudeToPoint(heightRange[1]);return heightRange;} }]);}(Mask);var FlatInsideMask$1 = exports.FlatInsideMask = function (_FlatMask) {function FlatInsideMask(coordinates, options) {var _this54;_classCallCheck(this, FlatInsideMask);_this54 = _callSuper(this, FlatInsideMask, [coordinates, options]);_this54._mode = 'flat-inside';return _this54;}_inherits(FlatInsideMask, _FlatMask);return _createClass(FlatInsideMask);}(FlatMask);var FlatInsideMask = exports.FlatOutsideMask = function (_FlatMask2) {function FlatInsideMask(coordinates, options) {var _this55;_classCallCheck(this, FlatInsideMask);_this55 = _callSuper(this, FlatInsideMask, [coordinates, options]);_this55._mode = 'flat-outside';return _this55;}_inherits(FlatInsideMask, _FlatMask2);return _createClass(FlatInsideMask);}(FlatMask);var ColorMask = exports.ColorMask = function (_Mask3) {function ColorMask(coordinates, options) {var _this56;_classCallCheck(this, ColorMask);_this56 = _callSuper(this, ColorMask, [coordinates, options]);_this56._mode = 'color';return _this56;}_inherits(ColorMask, _Mask3);return _createClass(ColorMask, [{ key: \"setHeightRange\", value: function setHeightRange(heightRange) {this.options.heightRange = heightRange;this['_fireEvent']('heightrangechange');} }, { key: \"_createMesh\", value: function _createMesh(regl) {var geometry = this._createGeometry(regl);var mesh = new reshader.Mesh(geometry);this._setDefines(mesh);this._setLocalTransform(mesh);return mesh;} }, { key: \"_updateUniforms\", value: function _updateUniforms(mesh, ratio, minHeight) {var maskMode = this._getMaskMode();mesh.setUniform('maskMode', maskMode);var color = this._getMaskColor();mesh.setUniform('maskColor', color);if (isNumber$1(ratio)) {var heightRange = this._getHeightRange();heightRange[0] = (heightRange[0] - minHeight) * ratio;heightRange[1] = (heightRange[1] - minHeight) * ratio;mesh.setUniform('heightRange', heightRange);}} }, { key: \"_setDefines\", value: function _setDefines(mesh) {var defines = mesh.getDefines();defines['HAS_MASK_COLOR'] = 1;mesh.setDefines(defines);} }, { key: \"_getHeightRange\", value: function _getHeightRange() {var heightRange = [0, 0];if (this.options.heightRange) {heightRange[0] = this._altitudeToPoint(this.options.heightRange[0]);heightRange[1] = this._altitudeToPoint(this.options.heightRange[1]);}return heightRange;} }]);}(Mask);var VideoMask = exports.VideoMask = function (_Mask4) {function VideoMask(coordinates, options) {var _this57;_classCallCheck(this, VideoMask);_this57 = _callSuper(this, VideoMask, [coordinates, options]);_this57._mode = 'texture';return _this57;}_inherits(VideoMask, _Mask4);return _createClass(VideoMask, [{ key: \"play\", value: function play() {if (this._video) {this._video.play();}} }, { key: \"pause\", value: function pause() {if (this._video) {this._video.pause();}} }, { key: \"setAudio\", value: function setAudio(audio) {if (this._video) {this.video.muted = audio;}} }, { key: \"setUrl\", value: function setUrl(url) {this.options.url = url;this._createVideo(url);} }, { key: \"getState\", value: function getState() {return this._videoState;} }, { key: \"_createMesh\", value: function _createMesh(regl) {var _this$_createGeometry = this._createGeometry(regl),geometry = _this$_createGeometry.geometry,copyGeometry = _this$_createGeometry.copyGeometry;var mesh = new reshader.Mesh(geometry);var videoTexture = this._createVideoTexture(regl);mesh.material = new reshader.Material({ maskTexture: videoTexture });this._setDefines(mesh);this._setLocalTransform(mesh);this._copyMesh = new reshader.Mesh(copyGeometry);this._setLocalTransform(this._copyMesh);return mesh;} }, { key: \"_updateUniforms\", value: function _updateUniforms(mesh) {var maskMode = this._getMaskMode();mesh.setUniform('maskMode', maskMode);if (this._positions && this._positions.length) {for (var _i88 = 0; _i88 < 4; _i88++) {mesh.setUniform('mask_position' + _i88, this._positions.slice(_i88 * 3, _i88 * 3 + 3));}}var color = this._getMaskColor();mesh.setUniform('maskColor', color);} }, { key: \"_setDefines\", value: function _setDefines(mesh) {var defines = mesh.getDefines();defines['HAS_TEXTURE'] = 1;mesh.setDefines(defines);} }, { key: \"_createVideoTexture\", value: function _createVideoTexture(regl) {this._createVideo();var videoTexture = regl.texture();return videoTexture;} }, { key: \"_createVideo\", value: function _createVideo() {var _this58 = this;this._videoState = 'stop';var url = this.options.url;var id = this.options.elementId;var video = document.getElementById(id);if (url) {video = document.createElement('video');video.src = url;}if (!video) {throw new Error('there is no element or url setting for video mask');}video.autoplay = this.options.autoplay || true;video.loop = this.options.loop || true;video.muted = this.options.muted || true;video.play();video.addEventListener('playing', function () {_this58._videoState = 'playing';});video.addEventListener('pause', function () {_this58._videoState = 'pause';});this._video = video;} }, { key: \"_update\", value: function _update() {var mesh = this._mesh;if (!mesh) {return;}if (mesh.material) {var videoTexture = mesh.material.get('maskTexture');if (videoTexture && this._video && this._needUpdate()) {videoTexture(this._video);}}} }, { key: \"_needUpdate\", value: function _needUpdate() {return this._videoState === 'playing';} }]);}(Mask);var ImageMask = exports.ImageMask = function (_Mask5) {function ImageMask(coordinates, options) {var _this59;_classCallCheck(this, ImageMask);_this59 = _callSuper(this, ImageMask, [coordinates, options]);_this59._mode = 'texture';return _this59;}_inherits(ImageMask, _Mask5);return _createClass(ImageMask, [{ key: \"setUrl\", value: function setUrl(url) {this.options.url = url;var mesh = this._mesh;if (!mesh) {return;}if (mesh.material) {var maskTexture = mesh.material.get('maskTexture');if (maskTexture) {this._createTexture(maskTexture);var layer = this.getLayer();if (layer) {layer.getRenderer().setToRedraw();}}}} }, { key: \"_createMesh\", value: function _createMesh(regl) {var _this$_createGeometry2 = this._createGeometry(regl),geometry = _this$_createGeometry2.geometry,copyGeometry = _this$_createGeometry2.copyGeometry;var mesh = new reshader.Mesh(geometry);var texture = regl.texture();this._createTexture(texture);mesh.material = new reshader.Material({ maskTexture: texture });this._setDefines(mesh);this._setLocalTransform(mesh);this._copyMesh = new reshader.Mesh(copyGeometry);this._setLocalTransform(this._copyMesh);return mesh;} }, { key: \"_updateUniforms\", value: function _updateUniforms(mesh) {var maskMode = this._getMaskMode();mesh.setUniform('maskMode', maskMode);var color = this._getMaskColor();mesh.setUniform('maskColor', color);if (this._positions && this._positions.length) {for (var _i89 = 0; _i89 < 4; _i89++) {mesh.setUniform('mask_position' + _i89, this._positions.slice(_i89 * 3, _i89 * 3 + 3));}}} }, { key: \"_setDefines\", value: function _setDefines(mesh) {var defines = mesh.getDefines();defines['HAS_TEXTURE'] = 1;mesh.setDefines(defines);} }, { key: \"_createTexture\", value: function _createTexture(imageTexture) {var image = new Image();image.src = this.options.url;image.crossOrigin = 'anonymous';image.onload = function () {imageTexture(image);};image.onerror = function () {console.warn('Image load error');};} }, { key: \"getBBox\", value: function getBBox() {return this._copyMesh.getBoundingBox();} }]);}(Mask);var ElevateMask = exports.ElevateMask = function (_FlatMask3) {function ElevateMask(coordinates, options) {var _this60;_classCallCheck(this, ElevateMask);_this60 = _callSuper(this, ElevateMask, [coordinates, options]);_this60.setElevation(options.elevation);_this60._mode = 'elevate';return _this60;}_inherits(ElevateMask, _FlatMask3);return _createClass(ElevateMask, [{ key: \"setElevation\", value: function setElevation(elevation) {this.options.elevation = elevation;this.setFlatheight(this.options.elevation);} }]);}(FlatMask);var LEFT_POINT = new _maptalks.Point(0, 0),RIGHT_POINT = new _maptalks.Point(0, 0),CENTER_POINT = new _maptalks.Point(0, 0),TEMP_POINT = new _maptalks.Point(0, 0);var BoxClipMask = function (_ClipMask3) {function BoxClipMask(position, options) {var _this61;_classCallCheck(this, BoxClipMask);_this61 = _callSuper(this, BoxClipMask, [[], options]);_this61._position = position;return _this61;}_inherits(BoxClipMask, _ClipMask3);return _createClass(BoxClipMask, [{ key: \"setPosition\", value: function setPosition(position) {this._position = position;this._updateCoordinates();} }, { key: \"getPosition\", value: function getPosition() {return this._position;} }, { key: \"setWidth\", value: function setWidth(width) {this.options['width'] = width;this._updateCoordinates();} }, { key: \"setLength\", value: function setLength(length) {this.options['length'] = length;this._updateCoordinates();} }, { key: \"setHeight\", value: function setHeight(height) {this.options['height'] = height;this._updateCoordinates();} }, { key: \"setRotation\", value: function setRotation(rotation) {this.options['rotation'] = rotation;this._updateCoordinates();} }, { key: \"_updateCoordinates\", value: function _updateCoordinates() {var layer = this.getLayer();if (!layer) {return;}var map = layer.getMap();if (map) {var _this$options = this.options,length = _this$options.length,width = _this$options.width,height = _this$options.height;var center = this._position;var rotation = this.options['rotation'] || 0;var _this$_generateCoordi = this._generateCoordinates(map, center, length, width, height, rotation),coordinates = _this$_generateCoordi.coordinates,heightRange = _this$_generateCoordi.heightRange;this.setCoordinates(coordinates);this.setHeightRange(heightRange);}} }, { key: \"_generateCoordinates\", value: function _generateCoordinates(map, center, length, width, height, rotation) {var glRes = map.getGLRes();var pointLeft = map.distanceToPointAtRes(width / 2, 0, glRes, LEFT_POINT);var pointTop = map.distanceToPointAtRes(0, length / 2, glRes, RIGHT_POINT);var pointCenter = map.coordinateToPointAtRes(center, glRes, CENTER_POINT);var leftPointX = pointCenter.x - pointLeft.x;var rightPointX = pointCenter.x + pointLeft.x;var topPointY = pointCenter.y + pointTop.y;var buttomPointY = pointCenter.y - pointTop.y;var points = this._rotatePoint([[leftPointX, topPointY], [rightPointX, topPointY], [rightPointX, buttomPointY], [leftPointX, buttomPointY]], pointCenter, rotation);TEMP_POINT.set(points[0][0], points[0][1]);var lt = map.pointAtResToCoordinate(TEMP_POINT, glRes);TEMP_POINT.set(points[1][0], points[1][1]);var rt = map.pointAtResToCoordinate(TEMP_POINT, glRes);TEMP_POINT.set(points[2][0], points[2][1]);var rb = map.pointAtResToCoordinate(TEMP_POINT, glRes);TEMP_POINT.set(points[3][0], points[3][1]);var lb = map.pointAtResToCoordinate(TEMP_POINT, glRes);var buttom = center.z - height / 2;var top = center.z + height / 2;var heightRange = [buttom, top];var coordinates = [[lt.x, lt.y, buttom], [rt.x, rt.y, buttom], [rb.x, rb.y, buttom], [lb.x, lb.y, buttom], [lt.x, lt.y, buttom]];return { coordinates: coordinates, heightRange: heightRange };} }, { key: \"_rotatePoint\", value: function _rotatePoint(points, center, rotation) {for (var _i90 = 0; _i90 < points.length; _i90++) {_reshader.vec2.rotate(points[_i90], points[_i90], [center.x, center.y], rotation * Math.PI / 180);}return points;} }]);}(ClipMask);var BoxInsideClipper = exports.BoxInsideClipMask = function (_BoxClipMask) {function BoxInsideClipper(position, options) {var _this62;_classCallCheck(this, BoxInsideClipper);_this62 = _callSuper(this, BoxInsideClipper, [position, options]);_this62._mode = 'clip-inside';return _this62;}_inherits(BoxInsideClipper, _BoxClipMask);return _createClass(BoxInsideClipper);}(BoxClipMask);var BoxOutsideClipper = exports.BoxOutsideClipMask = function (_BoxClipMask2) {function BoxOutsideClipper(position, options) {var _this63;_classCallCheck(this, BoxOutsideClipper);_this63 = _callSuper(this, BoxOutsideClipper, [position, options]);_this63._mode = 'clip-outside';return _this63;}_inherits(BoxOutsideClipper, _BoxClipMask2);return _createClass(BoxOutsideClipper);}(BoxClipMask);var options = { 'mode': 'LineString', 'language': 'zh-CN', 'metric': true, 'imperial': false, 'once': true, 'symbol': { 'lineColor': \"#e8542b\", 'lineWidth': 2, 'polygonFill': '#eee', 'polygonOpacity': 0.5 }, 'vertexSymbol': { 'markerType': 'ellipse', 'markerFill': '#e8542b', 'markerLineColor': '#fff', 'markerLineWidth': 2, 'markerWidth': 10, 'markerHeight': 10, 'markerDy': 0 }, 'labelSymbol': { 'boxStyle': { 'padding': [15, 6], 'verticalAlignment': 'top', 'horizontalAlignment': 'left', 'minWidth': 150, 'minHeight': 30, 'symbol': { 'markerType': 'square', 'markerFill': 'rgb(60, 60, 60)', 'markerFillOpacity': 0.8, 'markerLineColor': '#fff', 'markerLineWidth': 2, 'textDx': -110 } }, 'textSymbol': { 'textFill': '#fff', 'textSize': 16, 'textVerticalAlignment': 'top' } } };var Measure3DTool = exports.Measure3DTool = function (_maptalks$DrawTool) {function Measure3DTool(options) {var _this64;_classCallCheck(this, Measure3DTool);_this64 = _callSuper(this, Measure3DTool, [options]);_this64.on('enable', _this64._afterEnable, _this64);_this64.on('disable', _this64._afterDisable, _this64);_this64._drawCoordinates = [];return _this64;}_inherits(Measure3DTool, _maptalks$DrawTool);return _createClass(Measure3DTool, [{ key: \"addTo\", value: function addTo(map) {if (map) {_superPropGet(Measure3DTool, \"addTo\", this, 3)([map]);this._map = map;this._addHelperLayer();}return this;} }, { key: \"_addHelperLayer\", value: function _addHelperLayer() {var id = maptalks.INTERNAL_LAYER_PREFIX + 'drawtool';this._map.getLayer(id).hide();} }, { key: \"_afterEnable\", value: function _afterEnable() {this.on('drawstart', this._msOnDrawStart, this).on('drawvertex', this._msOnDrawVertex, this).on('mousemove', this._msOnMouseMove, this).on('drawend', this._msOnDrawEnd, this);} }, { key: \"_afterDisable\", value: function _afterDisable() {this.off('drawstart', this._msOnDrawStart, this).off('drawvertex', this._msOnDrawVertex, this).off('mousemove', this._msOnMouseMove, this).off('drawend', this._msOnDrawEnd, this);} }, { key: \"_getPickedCoordinate\", value: function _getPickedCoordinate(e) {var coordinate = e.coordinate,containerPoint = e.containerPoint;var gllayer = this._map.getLayers(function (layer) {return layer.queryTerrainAtPoint;})[0];if (!gllayer) {coordinate.z = coordinate.z || 0;return coordinate;}var identifyData = gllayer.identify(coordinate, { includeInternals: false })[0];var pickedPoint = identifyData && identifyData.coordinate;var pickCoord = null;if (pickedPoint) {pickCoord = new maptalks.Coordinate(identifyData.coordinate);} else {coordinate.z = coordinate.z || 0;pickCoord = coordinate;}if (gllayer.getTerrainLayer()) {var pickedTerrainCoord = gllayer.queryTerrainAtPoint(containerPoint);return pickedTerrainCoord && pickedTerrainCoord.z > pickCoord.z ? pickedTerrainCoord : pickCoord;}return pickCoord;} }, { key: \"_msOnDrawStart\", value: function _msOnDrawStart(e) {var coordinate = this._getPickedCoordinate(e);if (!coordinate) {return;}this._first = true;this._drawCoordinates.push(coordinate);this._addHelperGeometry(coordinate);} }, { key: \"_msOnDrawVertex\", value: function _msOnDrawVertex(e) {var coordinate = this._getPickedCoordinate(e);if (!coordinate) {return;}this._first = true;this._drawCoordinates[this._drawCoordinates.length - 1] = coordinate;this._drawVertexMarker();} }, { key: \"_msOnMouseMove\", value: function _msOnMouseMove(e) {var coordinate = this._getPickedCoordinate(e);if (!coordinate) {return;}if (this._first) {this._drawCoordinates.push(coordinate);} else {this._drawCoordinates[this._drawCoordinates.length - 1] = coordinate;}this._drawVertexMarker();this._first = false;} }, { key: \"_msOnDrawEnd\", value: function _msOnDrawEnd(e) {var coordinate = this._getPickedCoordinate(e);if (!coordinate) {return;}this._drawCoordinates.push(coordinate);this._drawEnd();} }, { key: \"_drawEnd\", value: function _drawEnd() {this._drawVertexMarker();this._drawCoordinates = [];this._helperGeometry = null;this._label = null;} }, { key: \"remove\", value: function remove() {if (this._helperLayer) {this._helperLayer.remove();}if (this._markerLayer) {this._markerLayer.remove();}} }, { key: \"clear\", value: function clear() {if (this._helperLayer) {this._helperLayer.clear();}if (this._markerLayer) {this._markerLayer.clear();}} }]);}(maptalks.DrawTool);Measure3DTool.mergeOptions(options);var Distance3DTool = exports.Distance3DTool = function (_Measure3DTool) {function Distance3DTool() {_classCallCheck(this, Distance3DTool);return _callSuper(this, Distance3DTool, arguments);}_inherits(Distance3DTool, _Measure3DTool);return _createClass(Distance3DTool, [{ key: \"_addHelperLayer\", value: function _addHelperLayer() {_superPropGet(Distance3DTool, \"_addHelperLayer\", this, 3)([]);this._helperLayer = new maptalks.VectorLayer(maptalks.INTERNAL_LAYER_PREFIX + '_distance3dtool', { enableAltitude: true }).addTo(this._map);this._markerLayer = new maptalks.VectorLayer(maptalks.INTERNAL_LAYER_PREFIX + '_distance3dtool_marker', { enableAltitude: true }).addTo(this._map);} }, { key: \"_drawVertexMarker\", value: function _drawVertexMarker() {this._helperGeometry.setCoordinates(this._drawCoordinates);var markers = this._markerLayer.getGeometries();var geometryCount = this._helperLayer.getGeometries().length;for (var _i91 = 0; _i91 < markers.length; _i91++) {var id = markers[_i91].getId();if (id !== 'label' + geometryCount && id.indexOf(\"\".concat(geometryCount, \"_\")) > -1) {markers[_i91].remove();}}for (var _i92 = 0; _i92 < this._drawCoordinates.length; _i92++) {new maptalks.Marker(this._drawCoordinates[_i92], { id: geometryCount + '_' + _i92, symbol: this.options['vertexSymbol'] }).addTo(this._markerLayer);}this._drawLabel();} }, { key: \"_drawLabel\", value: function _drawLabel() {var distance = this.getMeasureResult();var language = this.options['language'] === 'zh-CN' ? 0 : 1;var unitContent = this._getUnitContent(distance);var content = (!language ? '距离: ' : 'distance: ') + unitContent;var labelCoordinate = this._drawCoordinates[this._drawCoordinates.length - 1];var geometryCount = this._helperLayer.getGeometries().length;var options = maptalks.Util.extend({ id: 'label' + geometryCount }, this.options.labelSymbol);if (!this._label) {this._label = new maptalks.Label(content, labelCoordinate, options).addTo(this._markerLayer);} else {this._label.setContent(content);this._label.setCoordinates(labelCoordinate);}} }, { key: \"_getUnitContent\", value: function _getUnitContent(length) {var units;if (this.options['language'] === 'zh-CN') {units = [' 米', ' 公里', ' 英尺', ' 英里'];} else {units = [' m', ' km', ' feet', ' mile'];}var content = '';if (this.options['metric']) {this._measure = length < 1000 ? length.toFixed(1) : (length / 1000).toFixed(2);this._units = length < 1000 ? units[0] : units[1];}if (this.options['imperial']) {length *= 3.2808399;if (content.length > 0) {content += '\\n';}this._measure = length < 5280 ? length.toFixed(1) : (length / 5280).toFixed(2);this._units = length < 5280 ? units[2] : units[3];}content += this._measure + this._units;return content;} }, { key: \"_addHelperGeometry\", value: function _addHelperGeometry(coordinate) {if (!this._helperGeometry) {this._helperGeometry = new maptalks.LineString([coordinate], { symbol: this.options.symbol }).addTo(this._helperLayer);}this._drawVertexMarker();this._first = true;} }, { key: \"getMeasureResult\", value: function getMeasureResult() {return this._helperGeometry.getLength();} }]);}(Measure3DTool);var Area3DTool = exports.Area3DTool = function (_Measure3DTool2) {function Area3DTool() {_classCallCheck(this, Area3DTool);return _callSuper(this, Area3DTool, arguments);}_inherits(Area3DTool, _Measure3DTool2);return _createClass(Area3DTool, [{ key: \"_addHelperLayer\", value: function _addHelperLayer() {_superPropGet(Area3DTool, \"_addHelperLayer\", this, 3)([]);this._helperLayer = new maptalks.VectorLayer(maptalks.INTERNAL_LAYER_PREFIX + '_area3dtool', { enableAltitude: true }).addTo(this._map);this._markerLayer = new maptalks.VectorLayer(maptalks.INTERNAL_LAYER_PREFIX + '_area3dtool_marker', { enableAltitude: true }).addTo(this._map);} }, { key: \"_drawVertexMarker\", value: function _drawVertexMarker() {var coordinates = this._getPolygonCoordinates(this._drawCoordinates);this._helperGeometry.setCoordinates(coordinates);this._polygon.setCoordinates(coordinates);var markers = this._markerLayer.getGeometries();var geometryCount = this._helperLayer.getGeometries().length;for (var _i93 = 0; _i93 < markers.length; _i93++) {var id = markers[_i93].getId();if (id !== 'label' + geometryCount && id.indexOf(\"\".concat(geometryCount, \"_\")) > -1) {markers[_i93].remove();}}for (var _i94 = 0; _i94 < this._drawCoordinates.length; _i94++) {new maptalks.Marker(this._drawCoordinates[_i94], { id: geometryCount + '_' + _i94, symbol: this.options['vertexSymbol'] }).addTo(this._markerLayer);}this._drawLabel();} }, { key: \"_getPolygonCoordinates\", value: function _getPolygonCoordinates(coordinates) {var polygonCoords = coordinates.map(function (coord) {return coord;});if (coordinates.length > 2) {polygonCoords.push(coordinates[0]);}return polygonCoords;} }, { key: \"_drawLabel\", value: function _drawLabel() {var distance = this.getMeasureResult();var language = this.options['language'] === 'zh-CN' ? 0 : 1;var unitContent = this._getUnitContent(distance);var content = (!language ? '面积: ' : 'area: ') + unitContent;var labelCoordinate = this._drawCoordinates[this._drawCoordinates.length - 1];var geometryCount = this._helperLayer.getGeometries().length;var options = maptalks.Util.extend({ id: 'label' + geometryCount }, this.options.labelSymbol);if (!this._label) {this._label = new maptalks.Label(content, labelCoordinate, options).addTo(this._markerLayer);} else {this._label.setContent(content);this._label.setCoordinates(labelCoordinate);}} }, { key: \"_getUnitContent\", value: function _getUnitContent(area) {var units;if (this.options['language'] === 'zh-CN') {units = [' 平方米', ' 平方公里', ' 平方英尺', ' 平方英里'];} else {units = [' sq.m', ' sq.km', ' sq.ft', ' sq.mi'];}var content = '';if (this.options['metric']) {this._measure = area < 1E6 ? area.toFixed(2) : (area / 1E6).toFixed(2);this._units = area < 1E6 ? units[0] : units[1];}if (this.options['imperial']) {area *= 3.2808399;if (content.length > 0) {content += '\\n';}var sqmi = 5280 * 5280;this._measure = area < sqmi ? area.toFixed(2) : (area / sqmi).toFixed(2);this._units = area < sqmi ? units[2] : units[3];}content += this._measure + this._units;return content;} }, { key: \"_addHelperGeometry\", value: function _addHelperGeometry(coordinate) {if (!this._helperGeometry) {this._helperGeometry = new maptalks.LineString([coordinate], { symbol: this.options.symbol }).addTo(this._helperLayer);this._polygon = new maptalks.Polygon([coordinate]);}this._drawVertexMarker();this._first = true;} }, { key: \"getMeasureResult\", value: function getMeasureResult() {return this._polygon.getArea();} }]);}(Measure3DTool);var MEASURE_HEIGHT_NAMES = [['直线距离', '垂直高度', '水平距离'], ['spatial distance', 'vertical height', 'horizontal distance']];var Height3DTool = exports.Height3DTool = function (_Measure3DTool3) {function Height3DTool() {_classCallCheck(this, Height3DTool);return _callSuper(this, Height3DTool, arguments);}_inherits(Height3DTool, _Measure3DTool3);return _createClass(Height3DTool, [{ key: \"_addHelperLayer\", value: function _addHelperLayer() {_superPropGet(Height3DTool, \"_addHelperLayer\", this, 3)([]);this._markerLayer = new maptalks.VectorLayer(maptalks.INTERNAL_LAYER_PREFIX + '_height3dtool_marker', { enableAltitude: true }).addTo(this._map).bringToFront();this._helperLayer = new maptalks.VectorLayer(maptalks.INTERNAL_LAYER_PREFIX + '_height3dtool', { enableAltitude: true }).addTo(this._map).bringToFront();} }, { key: \"_msOnDrawVertex\", value: function _msOnDrawVertex(e) {_superPropGet(Height3DTool, \"_msOnDrawVertex\", this, 3)([e]);if (this._drawCoordinates.length > 1) {this._drawEnd();this.disable();}} }, { key: \"_drawVertexMarker\", value: function _drawVertexMarker() {var markers = this._markerLayer.getGeometries();var geometryCount = this._helperLayer.getGeometries().length;for (var _i95 = 0; _i95 < markers.length; _i95++) {var id = markers[_i95].getId();if (id !== 'label' + geometryCount + '_' + _i95 && id.indexOf(\"\".concat(geometryCount, \"_\")) === 0) {markers[_i95].remove();}}for (var _i96 = 0; _i96 < this._drawCoordinates.length; _i96++) {new maptalks.Marker(this._drawCoordinates[_i96], { id: geometryCount + '_' + _i96, symbol: this.options['vertexSymbol'] }).addTo(this._markerLayer);}var len = this._drawCoordinates.length;if (len > 1) {var x = this._drawCoordinates[len - 1].x,y = this._drawCoordinates[len - 1].y,z = this._drawCoordinates[len - 2].z;var coord = new maptalks.Coordinate([x, y, z]);new maptalks.Marker(coord, { id: geometryCount + '_' + 2, symbol: this.options['vertexSymbol'] }).addTo(this._markerLayer);var coordinates = [].concat(this._drawCoordinates);coordinates.push(coord);coordinates.push(this._drawCoordinates[0]);var altitude = coordinates.map(function (c) {return c.z;});this._helperGeometry.setCoordinates(coordinates);this._helperGeometry.setProperties({ altitude: altitude });var horizontalDistance = this._map.getProjection().measureLenBetween(coordinates[0], coordinates[2]);var height = coordinates[1].z - coordinates[2].z;var distance = Math.sqrt(Math.pow(horizontalDistance, 2) + Math.pow(height, 2));this._drawLabel(coordinates, [distance, height, horizontalDistance]);}} }, { key: \"_drawLabel\", value: function _drawLabel(coordinates, distances) {for (var _i97 = 0; _i97 < coordinates.length - 1; _i97++) {var from = coordinates[_i97],to = coordinates[_i97 + 1];var distance = distances[_i97];var language = this.options['language'] === 'zh-CN' ? 0 : 1;var unitContent = this._getUnitContent(distance);var content = MEASURE_HEIGHT_NAMES[language][_i97] + ':' + unitContent;var geometryCount = this._helperLayer.getGeometries().length;var id = 'label' + geometryCount + '_' + _i97;var _options2 = JSON.parse(JSON.stringify(this.options.labelSymbol));_options2.id = id;if (_i97 < 2) {_options2.boxStyle.symbol.textDx *= -1;}var labelCoordinate = _i97 === 1 ? from : new maptalks.Coordinate((from.x + to.x) / 2, (from.y + to.y) / 2, (from.z + to.z) / 2);var label = this._markerLayer.getGeometryById(id);var markerId = \"\".concat(id, \"_marker\");var marker = this._markerLayer.getGeometryById(markerId);if (!label) {new maptalks.Label(content, labelCoordinate, _options2).addTo(this._markerLayer);new maptalks.Marker(labelCoordinate, { id: markerId, symbol: this.options['vertexSymbol'] }).addTo(this._markerLayer);} else {label.setContent(content);label.setCoordinates(labelCoordinate);marker.setCoordinates(labelCoordinate);}}} }, { key: \"_getUnitContent\", value: function _getUnitContent(length) {var units;if (this.options['language'] === 'zh-CN') {units = [' 米', ' 公里', ' 英尺', ' 英里'];} else {units = [' m', ' km', ' feet', ' mile'];}var content = '';if (this.options['metric']) {this._measure = length < 1000 ? length.toFixed(1) : (length / 1000).toFixed(2);this._units = length < 1000 ? units[0] : units[1];}if (this.options['imperial']) {length *= 3.2808399;if (content.length > 0) {content += '\\n';}this._measure = length < 5280 ? length.toFixed(1) : (length / 5280).toFixed(2);this._units = length < 5280 ? units[2] : units[3];}content += this._measure + this._units;return content;} }, { key: \"_addHelperGeometry\", value: function _addHelperGeometry(coordinate) {if (!this._helperGeometry) {this._helperGeometry = new maptalks.LineString([coordinate], { symbol: this.options.symbol }).addTo(this._helperLayer);}this._drawVertexMarker();this._first = true;} }, { key: \"getMeasureResult\", value: function getMeasureResult() {return this._helperGeometry.getLength();} }]);}(Measure3DTool);var e = \"${\";var code = \"function(e){\\n/*!\\n * @maptalks/gltf-loader v0.102.5\\n * LICENSE : UNLICENSED\\n * (c) 2016-2025 maptalks.org\\n */\\nvar n,t,r=\\\"undefined\\\"!=typeof Float32Array?Float32Array:Array;function o(){var e=new r(3);return r!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function i(e,n,t){var o=new r(3);return o[0]=e,o[1]=n,o[2]=t,o}function a(){var e=new r(4);return r!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e[3]=1,e}Math.hypot||(Math.hypot=function(){for(var e=0,n=arguments.length;n--;)e+=arguments[n]*arguments[n];return Math.sqrt(e)}),o(),n=new r(4),r!=Float32Array&&(n[0]=0,n[1]=0,n[2]=0,n[3]=0),o(),i(1,0,0),i(0,1,0),a(),a(),t=new r(9),r!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[5]=0,t[6]=0,t[7]=0),t[0]=1,t[4]=1,t[8]=1;let s=0;!function(e){e[0]=0,e[1]=0,e[2]=0,e[3]=1}([]),\\\"undefined\\\"!=typeof TextDecoder&&new TextDecoder(\\\"utf-8\\\");const c={get:function(e,n={},t){n||(n={});const r=new AbortController,o=r.signal,i=function(e){for(let n=1;n{const t=this._(e,n.responseType);return t.message?t:t.then((t=>\\\"arraybuffer\\\"===n.responseType?{data:t,cacheControl:e.headers.get(\\\"Cache-Control\\\"),expires:e.headers.get(\\\"Expires\\\"),contentType:e.headers.get(\\\"Content-Type\\\")}:t)).catch((e=>{if(!e.code||e.code!==DOMException.ABORT_ERR)throw e}))})).catch((e=>{if(!e.code||e.code!==DOMException.ABORT_ERR)throw e}));return a.xhr=r,a},_:(e,n)=>200!==e.status?{status:e.status,statusText:e.statusText,message:`incorrect http request with status code(\".concat(e, \"e.status}): \").concat(e, \"e.statusText}`}:\\\"arraybuffer\\\"===n?e.arrayBuffer():\\\"json\\\"===n?e.json():e.text(),getArrayBuffer:(e,n={},t)=>(n||(n={}),n.responseType=\\\"arraybuffer\\\",c.get(e,n,t)),getJSON:function(e,n={},t){return n&&n.jsonp?c.jsonp(e):((n=n||{}).responseType=\\\"json\\\",c.get(e,n,t))},jsonp:function(e){const n=\\\"_maptalks_jsonp_\\\"+s++;e.match(/\\\\?/)?e+=\\\"&callback=\\\"+n:e+=\\\"?callback=\\\"+n;let t=document.createElement(\\\"script\\\");return t.type=\\\"text/javascript\\\",t.src=e,new Promise((e=>{window[n]=function(r){document.getElementsByTagName(\\\"head\\\")[0].removeChild(t),t=null,delete window[n],e(r)},document.getElementsByTagName(\\\"head\\\")[0].appendChild(t)}))}};if(\\\"undefined\\\"!=typeof TextDecoder&&new TextDecoder(\\\"utf-8\\\"),\\\"undefined\\\"!=typeof OffscreenCanvas){let e;try{e=new OffscreenCanvas(2,2).getContext(\\\"2d\\\")}catch(r){}}\\\"undefined\\\"!=typeof document&&document.createElement(\\\"canvas\\\"),\\n/** @license zlib.js 2012 - imaya [ https://github.com/imaya/zlib.js ] The MIT License */function(){function e(e){throw e}var n=void 0,t=!0,r=this;function o(e,t){var o,i=e.split(\\\".\\\"),a=r;!(i[0]in a)&&a.execScript&&a.execScript(\\\"var \\\"+i[0]);for(;i.length&&(o=i.shift());)i.length||t===n?a=a[o]?a[o]:a[o]={}:a[o]=t}var i=\\\"undefined\\\"!=typeof Uint8Array&&\\\"undefined\\\"!=typeof Uint16Array&&\\\"undefined\\\"!=typeof Uint32Array&&\\\"undefined\\\"!=typeof DataView;function a(n,t){this.index=\\\"number\\\"==typeof t?t:0,this.i=0,this.buffer=n instanceof(i?Uint8Array:Array)?n:new(i?Uint8Array:Array)(32768),2*this.buffer.length<=this.index&&e(Error(\\\"invalid index\\\")),this.buffer.length<=this.index&&this.f()}a.prototype.f=function(){var e,n=this.buffer,t=n.length,r=new(i?Uint8Array:Array)(t<<1);if(i)r.set(n);else for(e=0;e>>8&255]<<16|h[e>>>16&255]<<8|h[e>>>24&255])>>32-n:h[e]>>8-n),8>n+a)s=s<>n-r-1&1,8==++a&&(a=0,o[i++]=h[s],s=0,i===o.length&&(o=this.f()));o[i]=s,this.buffer=o,this.i=a,this.index=i},a.prototype.finish=function(){var e,n=this.buffer,t=this.index;return 0s;++s){for(var f=d=s,l=7,d=d>>>1;d;d>>>=1)f<<=1,f|=1&d,--l;c[s]=(f<>>0}var h=c;function v(e){this.buffer=new(i?Uint16Array:Array)(2*e),this.length=0}function u(e){var n,t,r,o,a,s,c,f,l,d,h=e.length,v=0,u=Number.POSITIVE_INFINITY;for(f=0;fv&&(v=e[f]),e[f]>=1;for(d=r<<16|f,l=s;li[r]);)o=i[t],i[t]=i[r],i[r]=o,o=i[t+1],i[t+1]=i[r+1],i[r+1]=o,t=r;return this.length},v.prototype.pop=function(){var e,n,t,r,o,i=this.buffer;for(n=i[0],e=i[1],this.length-=2,i[0]=i[this.length],i[1]=i[this.length+1],o=0;!((r=2*o+2)>=this.length)&&(r+2i[r]&&(r+=2),i[r]>i[o]);)t=i[o],i[o]=i[r],i[r]=t,t=i[o+1],i[o+1]=i[r+1],i[r+1]=t,o=r;return{index:e,value:n,length:this.length}};var m,g=2,x={NONE:0,r:1,k:g,N:3},p=[];for(m=0;288>m;m++)switch(t){case 143>=m:p.push([m+48,8]);break;case 255>=m:p.push([m-144+400,9]);break;case 279>=m:p.push([m-256+0,7]);break;case 287>=m:p.push([m-280+192,8]);break;default:e(\\\"invalid literal: \\\"+m)}function A(e,n){this.length=e,this.G=n}_.prototype.j=function(){var r,o,s,c,f=this.input;switch(this.h){case 0:for(s=0,c=f.length;s>>8&255,x[A++]=255&h,x[A++]=h>>>8&255,i)x.set(v,A),A+=v.length,x=x.subarray(0,A);else{for(_=0,m=v.length;_Z)for(;0Z?Z:138)>Z-3&&$=$?(te[J++]=17,te[J++]=$-3,re[17]++):(te[J++]=18,te[J++]=$-11,re[18]++),Z-=$;else if(te[J++]=ne[B],re[ne[B]]++,3>--Z)for(;0Z?Z:6)>Z-3&&$G;G++)K[G]=L[X[G]];for(N=19;4=n:return[265,n-11,1];case 14>=n:return[266,n-13,1];case 16>=n:return[267,n-15,1];case 18>=n:return[268,n-17,1];case 22>=n:return[269,n-19,2];case 26>=n:return[270,n-23,2];case 30>=n:return[271,n-27,2];case 34>=n:return[272,n-31,2];case 42>=n:return[273,n-35,3];case 50>=n:return[274,n-43,3];case 58>=n:return[275,n-51,3];case 66>=n:return[276,n-59,3];case 82>=n:return[277,n-67,4];case 98>=n:return[278,n-83,4];case 114>=n:return[279,n-99,4];case 130>=n:return[280,n-115,4];case 162>=n:return[281,n-131,5];case 194>=n:return[282,n-163,5];case 226>=n:return[283,n-195,5];case 257>=n:return[284,n-227,5];case 258===n:return[285,n-258,0];default:e(\\\"invalid length: \\\"+n)}}var r,o,i=[];for(r=3;258>=r;r++)o=n(r),i[r]=o[2]<<24|o[1]<<16|o[0];return i}(),b=i?new Uint32Array(y):y;function w(r,o){function a(n,r){var o,i,a,s,c=n.G,f=[],l=0;switch(o=b[n.length],f[l++]=65535&o,f[l++]=o>>16&255,f[l++]=o>>24,t){case 1===c:i=[0,c-1,0];break;case 2===c:i=[1,c-2,0];break;case 3===c:i=[2,c-3,0];break;case 4===c:i=[3,c-4,0];break;case 6>=c:i=[4,c-5,1];break;case 8>=c:i=[5,c-7,1];break;case 12>=c:i=[6,c-9,2];break;case 16>=c:i=[7,c-13,2];break;case 24>=c:i=[8,c-17,3];break;case 32>=c:i=[9,c-25,3];break;case 48>=c:i=[10,c-33,4];break;case 64>=c:i=[11,c-49,4];break;case 96>=c:i=[12,c-65,5];break;case 128>=c:i=[13,c-97,5];break;case 192>=c:i=[14,c-129,6];break;case 256>=c:i=[15,c-193,6];break;case 384>=c:i=[16,c-257,7];break;case 512>=c:i=[17,c-385,7];break;case 768>=c:i=[18,c-513,8];break;case 1024>=c:i=[19,c-769,8];break;case 1536>=c:i=[20,c-1025,9];break;case 2048>=c:i=[21,c-1537,9];break;case 3072>=c:i=[22,c-2049,10];break;case 4096>=c:i=[23,c-3073,10];break;case 6144>=c:i=[24,c-4097,11];break;case 8192>=c:i=[25,c-6145,11];break;case 12288>=c:i=[26,c-8193,12];break;case 16384>=c:i=[27,c-12289,12];break;case 24576>=c:i=[28,c-16385,13];break;case 32768>=c:i=[29,c-24577,13];break;default:e(\\\"invalid distance\\\")}for(o=i,f[l++]=o[0],f[l++]=o[1],f[l++]=o[2],a=0,s=f.length;a=f;)A[f++]=0;for(f=0;29>=f;)y[f++]=0}for(A[256]=1,s=0,c=o.length;s=c){for(u&&a(u,-1),f=0,l=c-s;fi&&n+if&&(o=r,f=i),258===i)break}return new A(f,n-o)}function I(e,n){var t,r,o,a,s,c=e.length,f=new v(572),l=new(i?Uint8Array:Array)(c);if(!i)for(a=0;a2*l[a-1]+d[a]&&(l[a]=2*l[a-1]+d[a]),v[a]=Array(l[a]),u[a]=Array(l[a]);for(o=0;oe[o]?(v[a][s]=c,u[a][s]=n,f+=2):(v[a][s]=e[o],u[a][s]=o,++o);_[a]=0,1===d[a]&&r(a)}return h}(r,r.length,n),a=0,s=t.length;a>>=1;return a}function O(n,t){switch(this.l=[],this.m=32768,this.e=this.g=this.c=this.q=0,this.input=i?new Uint8Array(n):n,this.s=!1,this.n=C,this.B=!1,!t&&(t={})||(t.index&&(this.c=t.index),t.bufferSize&&(this.m=t.bufferSize),t.bufferType&&(this.n=t.bufferType),t.resize&&(this.B=t.resize)),this.n){case S:this.b=32768,this.a=new(i?Uint8Array:Array)(32768+this.m+258);break;case C:this.b=0,this.a=new(i?Uint8Array:Array)(this.m),this.f=this.J,this.t=this.H,this.o=this.I;break;default:e(Error(\\\"invalid inflate mode\\\"))}}var S=0,C=1,H={D:S,C:C};O.prototype.p=function(){for(;!this.s;){var r=Z(this,3);switch(1&r&&(this.s=t),r>>>=1){case 0:var o=this.input,a=this.c,s=this.a,c=this.b,f=o.length,l=n,d=s.length,h=n;switch(this.e=this.g=0,a+1>=f&&e(Error(\\\"invalid uncompressed block header: LEN\\\")),l=o[a++]|o[a++]<<8,a+1>=f&&e(Error(\\\"invalid uncompressed block header: NLEN\\\")),l===~(o[a++]|o[a++]<<8)&&e(Error(\\\"invalid uncompressed block header: length verify\\\")),a+l>o.length&&e(Error(\\\"input buffer is broken\\\")),this.n){case S:for(;c+l>s.length;){if(l-=h=d-c,i)s.set(o.subarray(a,a+h),c),c+=h,a+=h;else for(;h--;)s[c++]=o[a++];this.b=c,s=this.f(),c=this.b}break;case C:for(;c+l>s.length;)s=this.f({v:2});break;default:e(Error(\\\"invalid inflate mode\\\"))}if(i)s.set(o.subarray(a,a+l),c),c+=l,a+=l;else for(;l--;)s[c++]=o[a++];this.c=a,this.b=c,this.a=s;break;case 1:this.o(K,q);break;case 2:var v,_,m,g,x=Z(this,5)+257,p=Z(this,5)+1,A=Z(this,4)+4,y=new(i?Uint8Array:Array)(P.length),b=n,w=n,E=n,I=n,T=n;for(T=0;T=M?8:255>=M?9:279>=M?7:8;var j,X,K=u(V),B=new(i?Uint8Array:Array)(30);for(j=0,X=B.length;j=c&&e(Error(\\\"input buffer is broken\\\")),o|=a[s++]<>>t,n.e=i-t,n.c=s,r}function Y(n,t){for(var r,o,i=n.g,a=n.e,s=n.input,c=n.c,f=s.length,l=t[0],d=t[1];a=f);)i|=s[c++]<>>16)>a&&e(Error(\\\"invalid code length: \\\"+o)),n.g=i>>o,n.e=a-o,n.c=c,65535&r}function J(e){if(\\\"string\\\"==typeof e){var n,t,r=e.split(\\\"\\\");for(n=0,t=r.length;n>>0;e=r}for(var o,i=1,a=0,s=e.length,c=0;0>>0}function $(n,t){var r,o;if(this.input=n,this.c=0,!t&&(t={})||(t.index&&(this.c=t.index),t.verify&&(this.M=t.verify)),r=n[this.c++],o=n[this.c++],(15&r)===Q)this.method=Q;else e(Error(\\\"unsupported compression method\\\"));0!=((r<<8)+o)%31&&e(Error(\\\"invalid fcheck flag:\\\"+((r<<8)+o)%31)),32&o&&e(Error(\\\"fdict flag is not supported\\\")),this.A=new O(n,{index:this.c,bufferSize:t.bufferSize,bufferType:t.bufferType,resize:t.resize})}O.prototype.o=function(e,n){var t=this.a,r=this.b;this.u=e;for(var o,i,a,s,c=t.length-258;256!==(o=Y(this,e));)if(256>o)r>=c&&(this.b=r,t=this.f(),r=this.b),t[r++]=o;else for(s=R[i=o-257],0=c&&(this.b=r,t=this.f(),r=this.b);s--;)t[r]=t[r++-a];for(;8<=this.e;)this.e-=8,this.c--;this.b=r},O.prototype.I=function(e,n){var t=this.a,r=this.b;this.u=e;for(var o,i,a,s,c=t.length;256!==(o=Y(this,e));)if(256>o)r>=c&&(c=(t=this.f()).length),t[r++]=o;else for(s=R[i=o-257],0c&&(c=(t=this.f()).length);s--;)t[r]=t[r++-a];for(;8<=this.e;)this.e-=8,this.c--;this.b=r},O.prototype.f=function(){var e,n,t=new(i?Uint8Array:Array)(this.b-32768),r=this.b-32768,o=this.a;if(i)t.set(o.subarray(32768,t.length));else for(e=0,n=t.length;ee;++e)o[e]=o[r+e];return this.b=32768,o},O.prototype.J=function(e){var n,t,r,o=this.input.length/this.c+1|0,a=this.input,s=this.a;return e&&(\\\"number\\\"==typeof e.v&&(o=e.v),\\\"number\\\"==typeof e.F&&(o+=e.F)),2>o?t=(r=(a.length-this.c)/this.u[2]/2*258|0)n&&(this.a.length=n),e=this.a),this.buffer=e},$.prototype.p=function(){var n,t=this.input;return n=this.A.p(),this.c=this.A.c,this.M&&((t[this.c++]<<24|t[this.c++]<<16|t[this.c++]<<8|t[this.c++])>>>0!==J(n)&&e(Error(\\\"invalid adler-32 checksum\\\"))),n};var Q=8;function ee(e,n){this.input=e,this.a=new(i?Uint8Array:Array)(32768),this.h=ne.k;var t,r={};for(t in!n&&(n={})||\\\"number\\\"!=typeof n.compressionType||(this.h=n.compressionType),n)r[t]=n[t];r.outputBuffer=this.a,this.z=new _(this.input,r)}var ne=x;function te(e,n){var t,r,i,a;if(Object.keys)t=Object.keys(n);else for(r in t=[],i=0,n)t[i++]=r;for(i=0,a=t.length;i>24&255,c[f++]=s>>16&255,c[f++]=s>>8&255,c[f++]=255&s,c},o(\\\"Zlib.Inflate\\\",$),o(\\\"Zlib.Inflate.prototype.decompress\\\",$.prototype.p),te(\\\"Zlib.Inflate.BufferType\\\",{ADAPTIVE:H.C,BLOCK:H.D}),o(\\\"Zlib.Deflate\\\",ee),o(\\\"Zlib.Deflate.compress\\\",(function(e,n){return new ee(e,n).j()})),o(\\\"Zlib.Deflate.prototype.compress\\\",ee.prototype.j),te(\\\"Zlib.Deflate.CompressionType\\\",{NONE:ne.NONE,FIXED:ne.r,DYNAMIC:ne.k})}.call(self);var f=\\\"undefined\\\"!=typeof Float32Array?Float32Array:Array;function l(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}Math.hypot||(Math.hypot=function(){for(var e=0,n=arguments.length;n--;)e+=arguments[n]*arguments[n];return Math.sqrt(e)});function d(){var e=new f(3);return f!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function h(e,n,t){var r=new f(3);return r[0]=e,r[1]=n,r[2]=t,r}function v(e,n){var t=n[0],r=n[1],o=n[2],i=t*t+r*r+o*o;return i>0&&(i=1/Math.sqrt(i)),e[0]=n[0]*i,e[1]=n[1]*i,e[2]=n[2]*i,e}function u(e,n,t){var r=n[0],o=n[1],i=n[2],a=t[0],s=t[1],c=t[2];return e[0]=o*c-i*s,e[1]=i*a-r*c,e[2]=r*s-o*a,e}var _=function(e,n,t){return e[0]=n[0]-t[0],e[1]=n[1]-t[1],e[2]=n[2]-t[2],e};function m(){var e=new f(4);return f!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e[3]=1,e}d(),function(){var e,n=(e=new f(4),f!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0,e[3]=0),e)}();var g;function x(e,n,t){return e[0]=n,e[1]=t,e}d(),h(1,0,0),h(0,1,0),m(),m(),g=new f(9),f!=Float32Array&&(g[1]=0,g[2]=0,g[3]=0,g[5]=0,g[6]=0,g[7]=0),g[0]=1,g[4]=1,g[8]=1,function(){var e=function(){var e=new f(2);return f!=Float32Array&&(e[0]=0,e[1]=0),e}()}(),\\n/*!\\n * @maptalks/reshader.gl v0.107.1\\n * LICENSE : UNLICENSED\\n * (c) 2016-2025 maptalks.com\\n */\\nl([]),l([]),new Array(16),function(){const e=new ArrayBuffer(4),n=new Float32Array(e),t=new Uint32Array(e),r=new Uint32Array(512),o=new Uint32Array(512);for(let e=0;e<256;++e){const n=e-127;n<-27?(r[e]=0,r[256|e]=32768,o[e]=24,o[256|e]=24):n<-14?(r[e]=1024>>-n-14,r[256|e]=1024>>-n-14|32768,o[e]=-n-1,o[256|e]=-n-1):n<=15?(r[e]=n+15<<10,r[256|e]=n+15<<10|32768,o[e]=13,o[256|e]=13):n<128?(r[e]=31744,r[256|e]=64512,o[e]=24,o[256|e]=24):(r[e]=31744,r[256|e]=64512,o[e]=13,o[256|e]=13)}const i=new Uint32Array(2048),a=new Uint32Array(64),s=new Uint32Array(64);for(let e=1;e<1024;++e){let n=e<<13,t=0;for(;!(8388608&n);)n<<=1,t-=8388608;n&=-8388609,t+=947912704,i[e]=n|t}for(let e=1024;e<2048;++e)i[e]=939524096+(e-1024<<13);for(let e=1;e<31;++e)a[e]=e<<23;a[31]=1199570944,a[32]=2147483648;for(let e=33;e<63;++e)a[e]=2147483648+(e-32<<23);a[63]=3347054592;for(let e=1;e<64;++e)32!==e&&(s[e]=1024)}();const p={vsm_shadow_vert:\\\"\\\\nuniform mat4 shadow_lightProjViewModelMatrix;\\\\nvarying vec4 shadow_vLightSpacePos;\\\\nvoid shadow_computeShadowPars(vec4 position) {\\\\n shadow_vLightSpacePos = shadow_lightProjViewModelMatrix * position;\\\\n}\\\",vsm_shadow_frag:\\\"\\\\nuniform sampler2D shadow_shadowMap;\\\\nuniform float shadow_opacity;\\\\nuniform vec3 shadow_color;\\\\n#if defined(USE_ESM)\\\\n uniform float esm_shadow_threshold;\\\\n#endif\\\\nvarying vec4 shadow_vLightSpacePos;\\\\n#ifdef PACK_FLOAT\\\\n #include \\\\n#endif\\\\n#if defined(USE_ESM)\\\\nfloat esm(vec3 projCoords, vec4 shadowTexel) {\\\\n float compare = projCoords.z;\\\\n float c = 120.0;\\\\n #ifdef PACK_FLOAT\\\\n float depth = common_decodeDepth(shadowTexel);\\\\n if (depth >= 1.0 - 1E-6 || compare <= depth) {\\\\n return 1.0;\\\\n }\\\\n #else\\\\n float depth = shadowTexel.r;\\\\n #endif\\\\n depth = exp(-c * min(compare - depth, 0.05));\\\\n return clamp(depth, esm_shadow_threshold, 1.0);\\\\n}\\\\n#endif\\\\n#if defined(USE_VSM)\\\\nfloat vsm_shadow_chebyshevUpperBound(vec3 projCoords, vec4 shadowTexel){\\\\n vec2 moments = shadowTexel.rg;\\\\n float distance = projCoords.z;\\\\n if (distance >= 1.0 || distance <= moments.x)\\\\n return 1.0 ;\\\\n float variance = moments.y - (moments.x * moments.x);\\\\n variance = max(variance, 0.00002);\\\\n float d = distance - moments.x;\\\\n float p_max = variance / (variance + d * d);\\\\n return p_max;\\\\n}\\\\n#endif\\\\nfloat shadow_computeShadow_coeff(sampler2D shadowMap, vec3 projCoords) {\\\\n vec2 uv = projCoords.xy;\\\\n vec4 shadowTexel = texture2D(shadowMap, uv);\\\\n #if defined(USE_ESM)\\\\n float esm_coeff = esm(projCoords, shadowTexel);\\\\n float coeff = esm_coeff * esm_coeff;\\\\n #endif\\\\n #if defined(USE_VSM)\\\\n float vsm_coeff = vsm_shadow_chebyshevUpperBound(projCoords, shadowTexel);\\\\n float coeff = vsm_coeff;\\\\n #endif\\\\n return 1.0 - (1.0 - coeff) * shadow_opacity;\\\\n}\\\\nfloat shadow_computeShadow() {\\\\n vec3 projCoords = shadow_vLightSpacePos.xyz / shadow_vLightSpacePos.w;\\\\n projCoords = projCoords * 0.5 + 0.5;\\\\n if(projCoords.z >= 1.0 || projCoords.x < 0.0 || projCoords.x > 1.0 || projCoords.y < 0.0 || projCoords.y > 1.0) return 1.0;\\\\n return shadow_computeShadow_coeff(shadow_shadowMap, projCoords);\\\\n}\\\\nvec3 shadow_blend(vec3 color, float coeff) {\\\\n color = color * coeff + shadow_color * shadow_opacity * (1.0 - coeff);\\\\n return color;\\\\n}\\\",fbo_picking_vert:\\\"\\\\n#ifdef ENABLE_PICKING\\\\n#if HAS_PICKING_ID == 1\\\\nattribute float aPickingId;\\\\n#elif HAS_PICKING_ID == 2\\\\nuniform float uPickingId;\\\\n#endif\\\\nvarying float vPickingId;\\\\nvarying float vFbo_picking_viewZ;\\\\nvarying float vFbo_picking_visible;\\\\n#endif\\\\nvarying float vFbo_picking_fragDepth;\\\\nvoid fbo_picking_setData(float viewPosZ, bool visible) {\\\\n #ifdef ENABLE_PICKING\\\\n #if HAS_PICKING_ID == 1\\\\n vPickingId = aPickingId;\\\\n #elif HAS_PICKING_ID == 2\\\\n vPickingId = uPickingId;\\\\n #endif\\\\n vFbo_picking_viewZ = viewPosZ;\\\\n #endif\\\\n vFbo_picking_visible = visible ? 1.0 : 0.0;\\\\n vFbo_picking_fragDepth = viewPosZ + 1.0;\\\\n}\\\",common_pack_float:\\\"const float COMMON_FLOAT_MAX = 1.70141184e38;\\\\nconst float COMMON_FLOAT_MIN = 1.17549435e-38;\\\\nfloat common_packFloat(vec4 val){\\\\n vec4 scl = floor(255.0 * val + 0.5);\\\\n float sgn = (scl.a < 128.0) ? 1.0 : -1.0;\\\\n float exn = mod(scl.a * 2.0, 256.0) + floor(scl.b / 128.0) - 127.0;\\\\n float man = 1.0 +\\\\n (scl.r / 8388608.0) +\\\\n (scl.g / 32768.0) +\\\\n mod(scl.b, 128.0) / 128.0;\\\\n return sgn * man * pow(2.0, exn);\\\\n}\\\\nvec4 common_unpackFloat(highp float v) {\\\\n highp float av = abs(v);\\\\n if(av < COMMON_FLOAT_MIN) {\\\\n return vec4(0.0, 0.0, 0.0, 0.0);\\\\n } else if(v > COMMON_FLOAT_MAX) {\\\\n return vec4(127.0, 128.0, 0.0, 0.0) / 255.0;\\\\n } else if(v < -COMMON_FLOAT_MAX) {\\\\n return vec4(255.0, 128.0, 0.0, 0.0) / 255.0;\\\\n }\\\\n highp vec4 c = vec4(0,0,0,0);\\\\n highp float e = floor(log2(av));\\\\n highp float m = av * pow(2.0, -e) - 1.0;\\\\n c[1] = floor(128.0 * m);\\\\n m -= c[1] / 128.0;\\\\n c[2] = floor(32768.0 * m);\\\\n m -= c[2] / 32768.0;\\\\n c[3] = floor(8388608.0 * m);\\\\n highp float ebias = e + 127.0;\\\\n c[0] = floor(ebias / 2.0);\\\\n ebias -= c[0] * 2.0;\\\\n c[1] += floor(ebias) * 128.0;\\\\n c[0] += 128.0 * step(0.0, -v);\\\\n return c / 255.0;\\\\n}\\\\nvec4 common_encodeDepth(const in float depth) {\\\\n float alpha = 1.0;\\\\n vec4 pack = vec4(0.0);\\\\n pack.a = alpha;\\\\n const vec3 code = vec3(1.0, 255.0, 65025.0);\\\\n pack.rgb = vec3(code * depth);\\\\n pack.gb = fract(pack.gb);\\\\n pack.rg -= pack.gb * (1.0 / 256.0);\\\\n pack.b -= mod(pack.b, 4.0 / 255.0);\\\\n return pack;\\\\n}\\\\nfloat common_decodeDepth(const in vec4 pack) {\\\\n return pack.r + pack.g / 255.0;\\\\n}\\\",invert_matrix:\\\"mat4 invert_matrix(mat4 matrix) {\\\\n #if __VERSION__ == 300\\\\n return inverse(matrix);\\\\n #else\\\\n vec4 vector1 = matrix[0], vector2 = matrix[1], vector3 = matrix[2], vector4 = matrix[3];\\\\n float a00 = vector1.x, a01 = vector1.y, a02 = vector1.z, a03 = vector1.w;\\\\n float a10 = vector2.x, a11 = vector2.y, a12 = vector2.z, a13 = vector2.w;\\\\n float a20 = vector3.x, a21 = vector3.y, a22 = vector3.z, a23 = vector3.w;\\\\n float a30 = vector4.x, a31 = vector4.y, a32 = vector4.z, a33 = vector4.w;\\\\n float b00 = a00 * a11 - a01 * a10;\\\\n float b01 = a00 * a12 - a02 * a10;\\\\n float b02 = a00 * a13 - a03 * a10;\\\\n float b03 = a01 * a12 - a02 * a11;\\\\n float b04 = a01 * a13 - a03 * a11;\\\\n float b05 = a02 * a13 - a03 * a12;\\\\n float b06 = a20 * a31 - a21 * a30;\\\\n float b07 = a20 * a32 - a22 * a30;\\\\n float b08 = a20 * a33 - a23 * a30;\\\\n float b09 = a21 * a32 - a22 * a31;\\\\n float b10 = a21 * a33 - a23 * a31;\\\\n float b11 = a22 * a33 - a23 * a32;\\\\n float det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\\\\n det = 1.0 / det;\\\\n mat4 m = mat4(\\\\n (a11 * b11 - a12 * b10 + a13 * b09) * det,\\\\n (a02 * b10 - a01 * b11 - a03 * b09) * det,\\\\n (a31 * b05 - a32 * b04 + a33 * b03) * det,\\\\n (a22 * b04 - a21 * b05 - a23 * b03) * det,\\\\n (a12 * b08 - a10 * b11 - a13 * b07) * det,\\\\n (a00 * b11 - a02 * b08 + a03 * b07) * det,\\\\n (a32 * b02 - a30 * b05 - a33 * b01) * det,\\\\n (a20 * b05 - a22 * b02 + a23 * b01) * det,\\\\n (a10 * b10 - a11 * b08 + a13 * b06) * det,\\\\n (a01 * b08 - a00 * b10 - a03 * b06) * det,\\\\n (a30 * b04 - a31 * b02 + a33 * b00) * det,\\\\n (a21 * b02 - a20 * b04 - a23 * b00) * det,\\\\n (a11 * b07 - a10 * b09 - a12 * b06) * det,\\\\n (a00 * b09 - a01 * b07 + a02 * b06) * det,\\\\n (a31 * b01 - a30 * b03 - a32 * b00) * det,\\\\n (a20 * b03 - a21 * b01 + a22 * b00) * det\\\\n );\\\\n return m;\\\\n #endif\\\\n}\\\\nmat4 transpose_matrix(mat4 matrix) {\\\\n #if __VERSION__ == 300\\\\n return transpose(matrix);\\\\n #else\\\\n vec4 vector1 = matrix[0], vector2 = matrix[1], vector3 = matrix[2], vector4 = matrix[3];\\\\n float a01 = vector1.y, a02 = vector1.z, a03 = vector1.w;\\\\n float a12 = vector2.z, a13 = vector2.w;\\\\n float a23 = vector3.w;\\\\n mat4 m = mat4(\\\\n vector1.x,\\\\n vector2.x,\\\\n vector3.x,\\\\n vector4.x,\\\\n a01,\\\\n vector2.y,\\\\n vector3.y,\\\\n vector4.y,\\\\n a02,\\\\n a12,\\\\n vector3.z,\\\\n vector4.z,\\\\n a03,\\\\n a13,\\\\n a23,\\\\n vector4.w\\\\n );\\\\n return m;\\\\n #endif\\\\n}\\\",get_output:\\\"#include \\\\n#include \\\\n#ifdef HAS_INSTANCE\\\\n #include \\\\n #ifdef HAS_INSTANCE_COLOR\\\\n varying vec4 vInstanceColor;\\\\n #endif\\\\n#endif\\\\n#ifdef HAS_SKIN\\\\n uniform int skinAnimation;\\\\n #include \\\\n#endif\\\\n#include \\\\n#ifdef HAS_MORPH\\\\n attribute vec3 POSITION0;\\\\n attribute vec3 POSITION1;\\\\n attribute vec3 POSITION2;\\\\n attribute vec3 POSITION3;\\\\n attribute vec3 POSITION4;\\\\n attribute vec3 POSITION5;\\\\n attribute vec3 POSITION6;\\\\n attribute vec3 POSITION7;\\\\n #ifdef HAS_MORPHNORMALS\\\\n attribute vec3 NORMAL0;\\\\n attribute vec3 NORMAL1;\\\\n attribute vec3 NORMAL2;\\\\n attribute vec3 NORMAL3;\\\\n #endif\\\\n uniform vec4 morphWeights1;\\\\n uniform vec4 morphWeights2;\\\\n#endif\\\\n#ifdef HAS_TERRAIN_ALTITUDE\\\\nattribute float aTerrainAltitude;\\\\n#endif\\\\nmat4 getPositionMatrix() {\\\\n mat4 worldMatrix;\\\\n #ifdef HAS_INSTANCE\\\\n #ifdef HAS_INSTANCE_COLOR\\\\n vInstanceColor = instance_getInstanceColor();\\\\n #endif\\\\n mat4 attributeMatrix = instance_getAttributeMatrix();\\\\n #ifdef HAS_SKIN\\\\n if (skinAnimation == 1) {\\\\n worldMatrix = attributeMatrix * positionMatrix * skin_getSkinMatrix();\\\\n } else {\\\\n worldMatrix = attributeMatrix * positionMatrix;\\\\n }\\\\n #else\\\\n worldMatrix = attributeMatrix * positionMatrix;\\\\n #endif\\\\n #else\\\\n #ifdef HAS_SKIN\\\\n if (skinAnimation == 1) {\\\\n worldMatrix = skin_getSkinMatrix() * positionMatrix;\\\\n } else {\\\\n worldMatrix = positionMatrix;\\\\n }\\\\n #else\\\\n worldMatrix = positionMatrix;\\\\n #endif\\\\n #endif\\\\n return worldMatrix;\\\\n}\\\\n#ifdef HAS_MIN_ALTITUDE\\\\nuniform float minAltitude;\\\\n#endif\\\\nvec4 getPosition(vec3 aPosition) {\\\\n vec3 position = decode_getPosition(aPosition);\\\\n #ifdef HAS_MORPH\\\\n vec4 POSITION = vec4(position + morphWeights1[0] * POSITION0 + morphWeights1[1] * POSITION1 + morphWeights1[2] * POSITION2 + morphWeights1[3] * POSITION3\\\\n + morphWeights2[0] * POSITION4 + morphWeights2[1] * POSITION5 + morphWeights2[2] * POSITION6 + morphWeights2[3] * POSITION7\\\\n , 1.0);\\\\n #else\\\\n vec4 POSITION = vec4(position, 1.0);\\\\n #endif\\\\n #ifdef HAS_TERRAIN_ALTITUDE\\\\n POSITION.z += aTerrainAltitude * 100.0;\\\\n #endif\\\\n #ifdef HAS_MIN_ALTITUDE\\\\n POSITION.z += minAltitude * 100.0;\\\\n #endif\\\\n return POSITION;\\\\n}\\\\nvec3 appendMorphNormal(vec3 NORMAL) {\\\\n #ifdef HAS_MORPHNORMALS\\\\n vec3 normal = NORMAL + morphWeights1[0] * NORMAL0 + morphWeights1[1] * NORMAL1 + morphWeights1[2] * NORMAL2 + morphWeights1[3] * NORMAL3;\\\\n #else\\\\n vec3 normal = NORMAL;\\\\n #endif\\\\n return normal;\\\\n}\\\",instance_vert:\\\"attribute vec4 instance_vectorA;\\\\nattribute vec4 instance_vectorB;\\\\nattribute vec4 instance_vectorC;\\\\n#ifdef HAS_INSTANCE_TERRAIN_ALTITUDE\\\\nattribute float aTerrainAltitude;\\\\nuniform float terrainAltitudeScale;\\\\n#endif\\\\nmat4 instance_getAttributeMatrix() {\\\\n mat4 mat = mat4(\\\\n instance_vectorA.x, instance_vectorB.x, instance_vectorC.x, 0.0,\\\\n instance_vectorA.y, instance_vectorB.y, instance_vectorC.y, 0.0,\\\\n instance_vectorA.z, instance_vectorB.z, instance_vectorC.z, 0.0,\\\\n instance_vectorA.w, instance_vectorB.w, instance_vectorC.w, 1.0\\\\n );\\\\n #ifdef HAS_INSTANCE_TERRAIN_ALTITUDE\\\\n mat4 terrainMat = mat4(\\\\n 1., 0., 0., 0.,\\\\n 0., 1., 0., 0.,\\\\n 0., 0., 1., 0.,\\\\n 0., 0., aTerrainAltitude * terrainAltitudeScale, 1.\\\\n );\\\\n mat = terrainMat * mat;\\\\n #endif\\\\n return mat;\\\\n}\\\\n#ifdef HAS_INSTANCE_HIGHLIGHT\\\\n attribute vec4 highlight_color;\\\\n#endif\\\\n#ifdef HAS_INSTANCE_COLOR\\\\n \\\\n attribute vec4 instance_color;\\\\n vec4 instance_getInstanceColor() {\\\\n vec4 color = instance_color;\\\\n #ifdef HAS_INSTANCE_HIGHLIGHT\\\\n color = instance_color * highlight_color;\\\\n #endif\\\\n return color;\\\\n }\\\\n#endif\\\",skin_vert:\\\"attribute vec4 WEIGHTS_0;\\\\nattribute vec4 JOINTS_0;\\\\nuniform sampler2D jointTexture;\\\\nuniform vec2 jointTextureSize;\\\\nuniform float numJoints;\\\\n#define ROW0_U ((0.5 + 0.0) / 4.)\\\\n#define ROW1_U ((0.5 + 1.0) / 4.)\\\\n#define ROW2_U ((0.5 + 2.0) / 4.)\\\\n#define ROW3_U ((0.5 + 3.0) / 4.)\\\\nmat4 skin_getBoneMatrix(float jointNdx) {\\\\n float v = (jointNdx + 0.5) / numJoints;\\\\n return mat4(\\\\n texture2D(jointTexture, vec2(ROW0_U, v)),\\\\n texture2D(jointTexture, vec2(ROW1_U, v)),\\\\n texture2D(jointTexture, vec2(ROW2_U, v)),\\\\n texture2D(jointTexture, vec2(ROW3_U, v)));\\\\n}\\\\nmat4 skin_getSkinMatrix() {\\\\n mat4 skinMatrix = skin_getBoneMatrix(JOINTS_0[0]) * WEIGHTS_0[0] +\\\\n skin_getBoneMatrix(JOINTS_0[1]) * WEIGHTS_0[1] +\\\\n skin_getBoneMatrix(JOINTS_0[2]) * WEIGHTS_0[2] +\\\\n skin_getBoneMatrix(JOINTS_0[3]) * WEIGHTS_0[3];\\\\n return skinMatrix;\\\\n}\\\",heatmap_render_vert:\\\"#ifdef HAS_HEATMAP\\\\nvarying vec2 heatmap_vTexCoord;\\\\nvoid heatmap_compute(mat4 matrix, vec3 position) {\\\\n vec4 pos = matrix * vec4(position.xy, 0., 1.);\\\\n heatmap_vTexCoord = (1. + pos.xy / pos.w) / 2.;\\\\n}\\\\n#endif\\\",heatmap_render_frag:\\\"#ifdef HAS_HEATMAP\\\\nuniform sampler2D heatmap_inputTexture;\\\\nuniform sampler2D heatmap_colorRamp;\\\\nuniform float heatmap_heatmapOpacity;\\\\nvarying vec2 heatmap_vTexCoord;\\\\nvec4 heatmap_getColor(vec4 color) {\\\\n float t = texture2D(heatmap_inputTexture, heatmap_vTexCoord).r;\\\\n vec4 heatmapColor = texture2D(heatmap_colorRamp, vec2(t, 0.5)) * heatmap_heatmapOpacity;\\\\n return color * (1.0 - heatmapColor.a) + heatmapColor * heatmapColor.a;\\\\n}\\\\n#endif\\\",line_extrusion_vert:\\\"#ifdef IS_LINE_EXTRUSION\\\\n #define ALTITUDE_SCALE 32767.0;\\\\n #define EXTRUDE_SCALE 63.0;\\\\n attribute vec2 aExtrude;\\\\n #ifdef HAS_LINE_WIDTH\\\\n attribute float aLineWidth;\\\\n #else\\\\n uniform float lineWidth;\\\\n #endif\\\\n #ifdef HAS_LINE_HEIGHT\\\\n attribute float aLineHeight;\\\\n #else\\\\n uniform float lineHeight;\\\\n #endif\\\\n uniform float linePixelScale;\\\\n vec3 getLineExtrudePosition(vec3 position) {\\\\n #ifdef HAS_LINE_WIDTH\\\\n float lineWidth = aLineWidth / 2.0;\\\\n #endif\\\\n #ifdef HAS_LINE_HEIGHT\\\\n float lineHeight = aLineHeight / 10.0;\\\\n #endif\\\\n float halfwidth = lineWidth / 2.0;\\\\n float outset = halfwidth;\\\\n vec2 dist = outset * aExtrude / EXTRUDE_SCALE;\\\\n position.z *= lineHeight / ALTITUDE_SCALE;\\\\n return position + vec3(dist, 0.0) * linePixelScale;\\\\n }\\\\n#endif\\\",gl2_vert:\\\"#if __VERSION__ == 300\\\\n #define texture2D texture\\\\n #define varying out\\\\n #define attribute in\\\\n#endif\\\",gl2_frag:\\\"#if __VERSION__ == 300\\\\n #define varying in\\\\n #define gl_FragDepthEXT gl_FragDepth\\\\n #define texture2D texture\\\\n #define textureCube texture\\\\n #define texture2DProj textureProj\\\\n #define texture2DLodEXT textureLod\\\\n #define texture2DProjLodEXT textureProjLod\\\\n #define textureCubeLodEXT textureLod\\\\n #define texture2DGradEXT textureGrad\\\\n #define texture2DProjGradEXT textureProjGrad\\\\n #define textureCubeGradEXT textureGrad\\\\n #define texture2D texture\\\\n out vec4 glFragColor;\\\\n#else\\\\n vec4 glFragColor;\\\\n#endif\\\",hsv_frag:\\\"\\\\nconst mediump vec4 HSV_K0 = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);\\\\nconst mediump vec4 HSV_K1 = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);\\\\nconst mediump float HSV_E = 1.0e-10;\\\\nvec3 hsv_rgb2hsv(vec3 c) {\\\\n vec4 K = HSV_K0;\\\\n vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));\\\\n vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));\\\\n float d = q.x - min(q.w, q.y);\\\\n float e = HSV_E;\\\\n return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);\\\\n}\\\\nvec3 hsv_hsv2rgb(vec3 c) {\\\\n vec4 K = HSV_K1;\\\\n vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);\\\\n return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);\\\\n}\\\\nvec4 hsv_apply(vec4 c, vec3 hsvOffset) {\\\\n vec3 hsv = hsv_rgb2hsv(c.rgb);\\\\n hsv += hsv * hsvOffset;\\\\n hsv = clamp(hsv, 0.0, 1.0);\\\\n return vec4(hsv_hsv2rgb(hsv), c.a);\\\\n}\\\\nvec3 hsv_apply(vec3 c, vec3 hsvOffset) {\\\\n vec3 hsv = hsv_rgb2hsv(c.rgb);\\\\n hsv += hsv * hsvOffset;\\\\n hsv = clamp(hsv, 0.0, 1.0);\\\\n return hsv_hsv2rgb(hsv);\\\\n}\\\\nmat4 contrastMatrix(float contrast)\\\\n{\\\\n float t = (1.0 - contrast) / 2.0;\\\\n return mat4(\\\\n contrast, 0., 0., 0.,\\\\n 0., contrast, 0., 0.,\\\\n 0., 0., contrast, 0.,\\\\n t, t, t, 1\\\\n );\\\\n}\\\",snow_frag:\\\"#ifdef HAS_SNOW\\\\n float lerp(float a, float b, float w) {\\\\n return a + w * (b - a);\\\\n }\\\\n vec3 snow(vec4 sceneColor, vec3 normalColor, float height) {\\\\n float snowIntense = normalColor.b;\\\\n vec3 fixedC = vec3(1.0, 1.0, 1.0);\\\\n if (height < 1.0) {\\\\n float r = lerp(0.5, fixedC.x, snowIntense);\\\\n float g = lerp(0.5, fixedC.y, snowIntense);\\\\n float b = lerp(0.5, fixedC.z, snowIntense);\\\\n return vec3(r, g, b);\\\\n } else {\\\\n float r = lerp(sceneColor.r, fixedC.x, snowIntense);\\\\n float g = lerp(sceneColor.g, fixedC.y, snowIntense);\\\\n float b = lerp(sceneColor.b, fixedC.z, snowIntense);\\\\n return vec3(r, g, b);\\\\n }\\\\n }\\\\n#endif\\\",draco_decode_vert:\\\"#if defined(HAS_TANGENT)\\\\n attribute vec4 aTangent;\\\\n#elif defined(HAS_NORMAL)\\\\n #ifdef HAS_DRACO_NORMAL\\\\n attribute vec2 aNormal;\\\\n uniform float gltf_u_dec_normal_rangeConstant;\\\\n #else\\\\n attribute vec3 aNormal;\\\\n #endif\\\\n#endif\\\\n#ifdef HAS_DRACO_POSITION\\\\n uniform float gltf_u_dec_position_normConstant;\\\\n uniform vec3 minValues_pos;\\\\n vec3 decodeDracoPosition(vec3 aPosition) {\\\\n return minValues_pos + aPosition * gltf_u_dec_position_normConstant;\\\\n }\\\\n#endif\\\\n#ifdef HAS_DRACO_TEXCOORD\\\\n uniform vec2 minValues_tex;\\\\n uniform float gltf_u_dec_texcoord_0_normConstant;\\\\n vec2 decodeDracoTexcoord(vec2 aTexCoord) {\\\\n return minValues_tex + aTexCoord * gltf_u_dec_texcoord_0_normConstant;\\\\n }\\\\n#endif\\\\n#ifdef HAS_WEB3D_quantized_attributes_TEXCOORD\\\\n uniform mat3 decodeMatrix;\\\\n#endif\\\\n#ifdef HAS_DRACO_NORMAL\\\\n float czm_signNotZero(float value) {\\\\n return value >= 0.0 ? 1.0 : -1.0;\\\\n }\\\\n vec2 czm_signNotZero(vec2 value) {\\\\n return vec2(czm_signNotZero(value.x), czm_signNotZero(value.y));\\\\n }\\\\n vec3 decodeDracoNormal(vec2 encoded, float range)\\\\n {\\\\n if (encoded.x == 0.0 && encoded.y == 0.0) {\\\\n return vec3(0.0, 0.0, 0.0);\\\\n }\\\\n encoded = encoded / range * 2.0 - 1.0;\\\\n vec3 v = vec3(encoded.x, encoded.y, 1.0 - abs(encoded.x) - abs(encoded.y));\\\\n if (v.z < 0.0) {\\\\n v.xy = (1.0 - abs(v.yx)) * czm_signNotZero(v.xy);\\\\n }\\\\n return normalize(v);\\\\n }\\\\n vec3 decode_getNormal(vec2 aNormal) {\\\\n return decodeDracoNormal(aNormal, gltf_u_dec_normal_rangeConstant).zxy;\\\\n }\\\\n#endif\\\\n#ifdef HAS_COMPRESSED_INT16\\\\n #ifdef HAS_COMPRESSED_INT16_POSITION\\\\n uniform vec2 compressedPositionRange;\\\\n #endif\\\\n #ifdef HAS_COMPRESSED_INT16_TEXCOORD_0\\\\n uniform vec2 compressedTexcoordRange_0;\\\\n #endif\\\\n #ifdef HAS_COMPRESSED_INT16_TEXCOORD_1\\\\n uniform vec2 compressedTexcoordRange_1;\\\\n #endif\\\\n #ifdef HAS_COMPRESSED_INT16_NORMAL\\\\n uniform vec2 compressedNormalRange;\\\\n #endif\\\\n #ifdef HAS_COMPRESSED_INT16_RATIO\\\\n uniform float compressed_ratio;\\\\n #endif\\\\n float int16ToFloat32(float value, vec2 range) {\\\\n float v = (value >= 32768.0) ? -(65536.0 - value) / 32768.0 : value / 32767.0;\\\\n return (v + 1.0) * (range.y - range.x) / 2.0 + range.x;\\\\n }\\\\n#endif\\\\nvec3 decode_getPosition(vec3 aPosition) {\\\\n vec3 position = aPosition;\\\\n #if defined(HAS_COMPRESSED_INT16) && defined(HAS_COMPRESSED_INT16_POSITION)\\\\n float x = int16ToFloat32(aPosition.x, compressedPositionRange);\\\\n float y = int16ToFloat32(aPosition.y, compressedPositionRange);\\\\n float z = int16ToFloat32(aPosition.z, compressedPositionRange);\\\\n #ifdef HAS_COMPRESSED_INT16_RATIO\\\\n position = vec3(x / compressed_ratio, y / compressed_ratio, z);\\\\n #else\\\\n position = vec3(x, y, z);\\\\n #endif\\\\n #endif\\\\n #ifdef HAS_DRACO_POSITION\\\\n return decodeDracoPosition(position);\\\\n #else\\\\n return position;\\\\n #endif\\\\n}\\\\nvec2 decode_getTexcoord(vec2 aTexCoord) {\\\\n vec2 texcoord = aTexCoord;\\\\n #if defined(HAS_COMPRESSED_INT16) && (defined(HAS_COMPRESSED_INT16_TEXCOORD_0) || defined(HAS_COMPRESSED_INT16_TEXCOORD_1))\\\\n float x = int16ToFloat32(aTexCoord.x, compressedTexcoordRange_0);\\\\n float y = int16ToFloat32(aTexCoord.y, compressedTexcoordRange_0);\\\\n texcoord = vec2(x, y);\\\\n #endif\\\\n #ifdef HAS_DRACO_TEXCOORD\\\\n return decodeDracoTexcoord(texcoord);\\\\n #elif defined(HAS_WEB3D_quantized_attributes_TEXCOORD)\\\\n vec3 web3dTexcoord = decodeMatrix * vec3(texcoord, 1.0);\\\\n return vec2(web3dTexcoord.x, web3dTexcoord.y);\\\\n #else\\\\n return texcoord;\\\\n #endif\\\\n}\\\\nvec3 decode_getNormal(vec3 aNormal) {\\\\n #ifdef HAS_COMPRESSED_INT16_NORMAL\\\\n aNormal.x = int16ToFloat32(aNormal.x, compressedNormalRange);\\\\n aNormal.y = int16ToFloat32(aNormal.y, compressedNormalRange);\\\\n aNormal.z = int16ToFloat32(aNormal.z, compressedNormalRange);\\\\n #endif\\\\n return aNormal;\\\\n}\\\",highlight_vert:\\\"#if defined(HAS_HIGHLIGHT_COLOR)\\\\n attribute vec4 aHighlightColor;\\\\n varying vec4 vHighlightColor;\\\\n#endif\\\\n#if defined(HAS_HIGHLIGHT_OPACITY)\\\\n attribute float aHighlightOpacity;\\\\n varying float vHighlightOpacity;\\\\n#endif\\\\nvoid highlight_setVarying() {\\\\n #if defined(HAS_HIGHLIGHT_COLOR)\\\\n vHighlightColor = aHighlightColor / 255.0;\\\\n #endif\\\\n #if defined(HAS_HIGHLIGHT_OPACITY)\\\\n vHighlightOpacity = aHighlightOpacity / 255.0;\\\\n #endif\\\\n}\\\",highlight_frag:\\\"#if defined(HAS_HIGHLIGHT_COLOR)\\\\n\\\\tvarying vec4 vHighlightColor;\\\\n#endif\\\\n#if defined(HAS_HIGHLIGHT_OPACITY)\\\\n varying float vHighlightOpacity;\\\\n#endif\\\\nvec4 highlight_blendColor(vec4 color) {\\\\n\\\\tvec4 outColor;\\\\n\\\\t#if defined(HAS_HIGHLIGHT_COLOR)\\\\n\\\\t\\\\tcolor.rgb = color.rgb * (1.0 - vHighlightColor.a) + vHighlightColor.rgb * vHighlightColor.a;\\\\n\\\\t\\\\t#ifndef HAS_HIGHLIGHT_COLOR_POINT\\\\n \\\\tcolor.a = color.a * (1.0 - vHighlightColor.a) + vHighlightColor.a;\\\\n #endif\\\\n outColor = color;\\\\n\\\\t#else\\\\n\\\\t\\\\toutColor = color;\\\\n\\\\t#endif\\\\n\\\\t#if defined(HAS_HIGHLIGHT_OPACITY)\\\\n\\\\t\\\\toutColor *= vHighlightOpacity;\\\\n\\\\t#endif\\\\n\\\\treturn outColor;\\\\n}\\\",mask_vert:\\\"#ifdef HAS_MASK_EXTENT\\\\n uniform vec4 mask_extent;\\\\n uniform sampler2D mask_colorExtent;\\\\n uniform sampler2D mask_modeExtent;\\\\n uniform float mask_maskMode;\\\\n uniform float mask_hasFlatOut;\\\\n uniform mat4 viewMatrix;\\\\n uniform float mask_heightRatio;\\\\n uniform float mask_heightOffset;\\\\n varying vec4 vWorldPosition;\\\\n varying vec2 vUVInExtent;\\\\n varying float vHeightRatio;\\\\n varying float vHeightOffset;\\\\n const float CLIPINSIDE_MODE = 0.2;\\\\n const float FLATINSIDE_MODE = 0.3;\\\\n const float FLATOUTSIDE_MODE = 0.4;\\\\n const float ELEVATE_MODE = 0.7;\\\\n float random (vec2 st) {\\\\n return fract(sin(dot(st.xy,vec2(12.9898,78.233)))*43758.5453123) * 0.1;\\\\n }\\\\n bool isInExtent(vec4 color) {\\\\n return length(color.rgb) > 0.0;\\\\n }\\\\n float getFlatHeight(float maskMode, float flatHeight, float height) {\\\\n if (maskMode <= ELEVATE_MODE && maskMode > 0.6) {\\\\n return flatHeight + height;\\\\n } else {\\\\n return flatHeight;\\\\n }\\\\n }\\\\n vec4 getNoErrorPosition(vec4 position, vec4 wPosition) {\\\\n vec4 realPos = modelViewMatrix * position; vec4 pos = viewMatrix * wPosition; vec4 tempPos = viewMatrix * modelMatrix * position; float deltaX = realPos.x - tempPos.x;\\\\n float deltaY = realPos.y - tempPos.y;\\\\n float deltaZ = realPos.z - tempPos.z;\\\\n pos.x = pos.x + deltaX;\\\\n pos.y = pos.y + deltaY;\\\\n pos.z = pos.z + deltaZ;\\\\n return pos;\\\\n }\\\\n vec4 getMaskPosition(vec4 position, mat4 modelMatrix) {\\\\n vWorldPosition = modelMatrix * position;\\\\n float w = mask_extent.z - mask_extent.x;\\\\n float h = mask_extent.y - mask_extent.w;\\\\n vec2 uvInExtent = vec2((vWorldPosition.x - mask_extent.x) / abs(w), 1.0 - (vWorldPosition.y - mask_extent.w) / h);\\\\n vec4 extentColor = texture2D(mask_colorExtent, uvInExtent);\\\\n vec3 maskOptionColor = texture2D(mask_modeExtent, uvInExtent).rgb;\\\\n float maskMode = maskOptionColor.r;\\\\n float flatHeight = maskOptionColor.g / mask_heightRatio + mask_heightOffset;\\\\n float height = getFlatHeight(maskMode, flatHeight, vWorldPosition.z);\\\\n vec4 wPosition = vec4(vWorldPosition.x, vWorldPosition.y, height, vWorldPosition.w);\\\\n vUVInExtent = uvInExtent;\\\\n vHeightRatio = mask_heightRatio;\\\\n vHeightOffset = mask_heightOffset;\\\\n if (maskMode <= FLATOUTSIDE_MODE && maskMode > FLATINSIDE_MODE) {\\\\n return modelViewMatrix * position;;\\\\n } else if (mask_hasFlatOut == 1.0) {\\\\n return getNoErrorPosition(position, wPosition);\\\\n }\\\\n if (isInExtent(extentColor) == true && maskMode <= FLATINSIDE_MODE && maskMode > CLIPINSIDE_MODE) {\\\\n return getNoErrorPosition(position, wPosition);\\\\n } if (isInExtent(extentColor) == true && maskMode <= ELEVATE_MODE && maskMode > 0.6) {\\\\n return getNoErrorPosition(position, wPosition);\\\\n } else {\\\\n return modelViewMatrix * position;\\\\n }\\\\n }\\\\n#endif\\\",mask_frag:\\\"#ifdef HAS_MASK_EXTENT\\\\n uniform sampler2D mask_colorExtent;\\\\n uniform sampler2D mask_modeExtent;\\\\n uniform float mask_hasClipOut;\\\\n varying float vHeightRatio;\\\\n varying float vHeightOffset;\\\\n varying vec2 vUVInExtent;\\\\n varying vec4 vWorldPosition;\\\\n const float CLIPINSIDE_MODE = 0.1;\\\\n const float CLIPOUTSIDE_MODE = 0.2;\\\\n const float FLATINSIDE_MODE = 0.3;\\\\n const float FLATOUTSIDE_MODE = 0.4;\\\\n const float COLOR_MODE = 0.5;\\\\n const float VIDEO_MODE = 0.6;\\\\n bool isInExtent(vec4 color) {\\\\n return length(color.rgb) > 0.0;\\\\n }\\\\n vec4 setMask(vec4 glFragColor) {\\\\n vec4 extentColor = texture2D(mask_colorExtent, vUVInExtent);\\\\n vec4 modeColor = texture2D(mask_modeExtent, vUVInExtent);\\\\n float maskMode = modeColor.r;\\\\n float minHeight = modeColor.b / vHeightRatio + vHeightOffset;\\\\n float maxHeight = modeColor.a / vHeightRatio + vHeightOffset;\\\\n if (maskMode > CLIPINSIDE_MODE && maskMode <= CLIPOUTSIDE_MODE) {\\\\n if (minHeight == 0.0 && maxHeight == 0.0) {\\\\n return glFragColor;\\\\n } else if (vWorldPosition.z >= minHeight && vWorldPosition.z <= maxHeight) {\\\\n return glFragColor;\\\\n } else {\\\\n discard;\\\\n }\\\\n } else if (mask_hasClipOut == 1.0) {\\\\n discard;\\\\n }\\\\n if (isInExtent(extentColor) == true && maskMode <= CLIPINSIDE_MODE && maskMode > 0.0) {\\\\n if (minHeight == 0.0 && maxHeight == 0.0) {\\\\n discard;\\\\n } else if (vWorldPosition.z >= minHeight && vWorldPosition.z <= maxHeight) {\\\\n discard;\\\\n } else {\\\\n return glFragColor;\\\\n }\\\\n } else if (isInExtent(extentColor) == true && maskMode <= VIDEO_MODE && maskMode > FLATOUTSIDE_MODE) {\\\\n if (minHeight == 0.0 && maxHeight == 0.0) {\\\\n glFragColor = vec4(mix(extentColor.rgb, glFragColor.rgb, 1.0 - extentColor.a), glFragColor.a);\\\\n } else if (vWorldPosition.z >= minHeight && vWorldPosition.z <= maxHeight) {\\\\n glFragColor = vec4(mix(extentColor.rgb, glFragColor.rgb, 1.0 - extentColor.a), glFragColor.a);\\\\n }\\\\n }\\\\n return glFragColor;\\\\n }\\\\n#endif\\\",computeTexcoord_frag:\\\"#ifdef HAS_KHR_TEXTURE_TRANSFORM\\\\n uniform vec2 khr_offset;\\\\n uniform float khr_rotation;\\\\n uniform vec2 khr_scale;\\\\n vec2 khr_tex_transformTexCoord(vec2 texCoords, vec2 offset, float rotation, vec2 scale) {\\\\n rotation = -rotation;\\\\n mat3 transform = mat3(\\\\n cos(rotation) * scale.x, sin(rotation) * scale.x, 0.0, -sin(rotation) * scale.y, cos(rotation) * scale.y, 0.0, offset.x, offset.y, 1.0);\\\\n vec2 transformedTexCoords = (transform * vec3(fract(texCoords), 1.0)).xy;\\\\n return transformedTexCoords;\\\\n }\\\\n#endif\\\\nvarying highp vec2 vTexCoord;\\\\n#ifdef HAS_I3S_UVREGION\\\\n varying vec4 vUvRegion;\\\\n#endif\\\\nvec2 computeTexCoord(vec2 texCoord) {\\\\n #ifdef HAS_I3S_UVREGION\\\\n vec2 atlasScale = vUvRegion.zw - vUvRegion.xy;\\\\n vec2 uvAtlas = fract(texCoord) * atlasScale + vUvRegion.xy;\\\\n return uvAtlas;\\\\n #elif defined(HAS_KHR_TEXTURE_TRANSFORM)\\\\n return khr_tex_transformTexCoord(texCoord, khr_offset, khr_rotation, khr_scale);\\\\n #else\\\\n return texCoord;\\\\n #endif\\\\n}\\\",terrain_normal_frag:\\\"#ifdef HAS_TERRAIN_NORMAL\\\\n uniform sampler2D terrainHeightTexture;\\\\n uniform vec2 terrainHeightMapResolution;\\\\n uniform vec2 terrainResolution;\\\\n uniform float terrainHeightScale;\\\\n uniform float terrainTileResolution;\\\\n uniform vec4 terrainUnpackFactors;\\\\n float getHeight(vec2 uv) {\\\\n vec4 color = texture2D(terrainHeightTexture, uv) * 255.0;\\\\n color.a = -1.0;\\\\n return dot(color, terrainUnpackFactors) / 4.0;\\\\n }\\\\n vec3 convertTerrainHeightToNormalMap(vec2 uv) {\\\\n uv.y = 1.0 - uv.y;\\\\n vec2 epsilon = 1.0 / terrainHeightMapResolution;\\\\n float a = getHeight(uv + vec2(-epsilon.x, -epsilon.y));\\\\n float b = getHeight(uv + vec2(0, -epsilon.y));\\\\n float c = getHeight(uv + vec2(epsilon.x, -epsilon.y));\\\\n float d = getHeight(uv + vec2(-epsilon.x, 0));\\\\n float e = getHeight(uv + vec2(epsilon.x, 0));\\\\n float f = getHeight(uv + vec2(-epsilon.x, epsilon.y));\\\\n float g = getHeight(uv + vec2(0, epsilon.y));\\\\n float h = getHeight(uv + vec2(epsilon.x, epsilon.y));\\\\n vec2 dxy = vec2(\\\\n (c + e + e + h) - (a + d + d + f),\\\\n (f + g + g + h) - (a + b + b + c)\\\\n );\\\\n return normalize(vec3(dxy / epsilon, terrainResolution ));\\\\n }\\\\n#endif\\\",vertex_color_vert:\\\"#ifdef HAS_VERTEX_COLOR\\\\nattribute float aVertexColorType;\\\\nuniform vec4 vertexColorsOfType[VERTEX_TYPES_COUNT];\\\\nvarying vec4 vertexColor_color;\\\\nvoid vertexColor_update() {\\\\n vertexColor_color = vertexColorsOfType[int(aVertexColorType)];\\\\n}\\\\n#endif\\\\n//\\u7528\\u4E8E\\u8BC6\\u522B\\u9876\\u70B9\\u989C\\u8272\\u7C7B\\u578B: topPolygonFill \\u8FD8\\u662F bottomPolygonFill\\\",vertex_color_frag:\\\"#ifdef HAS_VERTEX_COLOR\\\\nvarying vec4 vertexColor_color;\\\\nvec4 vertexColor_get() {\\\\n\\\\treturn vertexColor_color;\\\\n}\\\\n#endif\\\",excavate_vert:\\\"#ifdef HAS_EXCAVATE_ANALYSIS\\\\n uniform vec4 excavateExtent;\\\\n varying vec2 vCoordinateTexcoord;\\\\n varying float vHeight;\\\\n float getWorldHeight() {\\\\n vec4 wPosition = modelMatrix * getPosition(aPosition);\\\\n return wPosition.z;\\\\n }\\\\n vec2 getCoordinateTexcoord() {\\\\n mat4 localPositionMatrix = getPositionMatrix();\\\\n vec4 wPosition = modelMatrix * localPositionMatrix * getPosition(aPosition);\\\\n float x = (wPosition.x - excavateExtent.x) / (excavateExtent.z - excavateExtent.x);\\\\n float y = (wPosition.y - excavateExtent.y) / (excavateExtent.w - excavateExtent.y);\\\\n return vec2(x, y);\\\\n }\\\\n#endif\\\",excavate_frag:\\\"#ifdef HAS_EXCAVATE_ANALYSIS\\\\n uniform sampler2D heightmap;\\\\n uniform float excavateHeight;\\\\n varying vec2 vCoordinateTexcoord;\\\\n varying float vHeight;\\\\n const vec2 range = vec2(-100.0, 1000.0);\\\\n float decodeHeight(const in vec4 pack) {\\\\n return pack.r + pack.g / 255.0;\\\\n }\\\\n vec4 excavateColor(vec4 fragColor) {\\\\n float samplerHeight = decodeHeight(texture2D(heightmap, vCoordinateTexcoord));\\\\n float realHeight = samplerHeight * (range.y - range.x) + range.x;\\\\n if(realHeight < range.x || realHeight > range.y) {\\\\n realHeight = 0.0;\\\\n }\\\\n if(vHeight > realHeight) {\\\\n discard;\\\\n }\\\\n return fragColor;\\\\n }\\\\n#endif\\\",srgb_frag:\\\"vec3 linearTosRGB(const in vec3 color) {\\\\n return vec3( color.r < 0.0031308 ? color.r * 12.92 : 1.055 * pow(color.r, 1.0/2.4) - 0.055, color.g < 0.0031308 ? color.g * 12.92 : 1.055 * pow(color.g, 1.0/2.4) - 0.055, color.b < 0.0031308 ? color.b * 12.92 : 1.055 * pow(color.b, 1.0/2.4) - 0.055);\\\\n}\\\\nvec3 sRGBToLinear(const in vec3 color) {\\\\n return vec3( color.r < 0.04045 ? color.r * (1.0 / 12.92) : pow((color.r + 0.055) * (1.0 / 1.055), 2.4), color.g < 0.04045 ? color.g * (1.0 / 12.92) : pow((color.g + 0.055) * (1.0 / 1.055), 2.4), color.b < 0.04045 ? color.b * (1.0 / 12.92) : pow((color.b + 0.055) * (1.0 / 1.055), 2.4));\\\\n}\\\"};var A={register(e,n){if(p[e])throw new Error(`Key of \").concat(e, \"e} is already registered in ShaderLib.`);p[e]=n},compile:e=>b(e)};const y=/^[ \\\\t]*#include +<([\\\\w\\\\d.]+)>/gm;function b(e){return e.replace(y,w)}function w(e,n){const t=p[n];if(!t)throw new Error(\\\"Can not resolve #include <\\\"+n+\\\">\\\");return b(t)}const E=[[.263385,-.0252475],[-.38545,.054485],[-.139795,-.5379925],[-.2793775,.6875475],[.7139025,.4710925],[.90044,-.16422],[.4481775,-.82799],[-.9253375,-.2910625],[.3468025,1.02292],[-1.13742,.33522],[-.7676225,-.9123175],[-.2005775,-1.1774125],[-.926525,.96876],[1.12909,-.7500325],[.9603,1.14625]],I=E.length,T=[0,0];for(let e=0;e\\\\n#include \\\\nuniform vec3 hsv;\\\\nvarying vec3 vWorldPos;\\\\n#ifdef USE_AMBIENT\\\\nuniform vec3 diffuseSPH[9];\\\\n#else\\\\nuniform samplerCube cubeMap;\\\\nuniform float bias;\\\\nuniform float size;\\\\n#endif\\\\nuniform float environmentExposure;\\\\nuniform float backgroundIntensity;\\\\nvec4 c(const in samplerCube d, const in vec3 e, const in float f, const in float h) {\\\\n vec3 i = e;\\\\n return textureCubeLod(d, i, h);\\\\n}\\\\nvec3 j(const in vec3 k, const in vec3 l[9]) {\\\\n float x = k.x;\\\\n float y = k.y;\\\\n float z = k.z;\\\\n vec3 m = (l[0] + l[1] * x + l[2] * y + l[3] * z + l[4] * z * x + l[5] * y * z + l[6] * y * x + l[7] * (3. * z * z - 1.) + l[8] * (x * x - y * y));\\\\n return max(m, vec3(.0));\\\\n}\\\\nfloat n(const in vec2 o) {\\\\n vec3 u = fract(vec3(o.xyx) * .1031);\\\\n u += dot(u, u.yzx + 19.19);\\\\n return fract((u.x + u.y) * u.z);\\\\n}\\\\n#if defined(TONE_MAPPING)\\\\nconst float v = 1.;\\\\nvec3 A(vec3 B) {\\\\n vec3 a = B * (B + .0245786) - .000090537;\\\\n vec3 b = B * (.983729 * B + .4329510) + .238081;\\\\n return a / b;\\\\n}\\\\nvec3 C(vec3 D) {\\\\n const mat3 E = mat3(vec3(.59719, .07600, .02840), vec3(.35458, .90834, .13383), vec3(.04823, .01566, .83777));\\\\n const mat3 F = mat3(vec3(1.60475, -.10208, -.00327), vec3(-.53108, 1.10813, -.07276), vec3(-.07367, -.00605, 1.07602));\\\\n D *= v / .6;\\\\n D = E * D;\\\\n D = A(D);\\\\n D = F * D;\\\\n return saturate(D);\\\\n}\\\\nvec3 G(vec3 D) {\\\\n return C(D);\\\\n}\\\\nvec4 H(in vec4 I) {\\\\n return vec4(mix(pow(I.rgb, vec3(.41666)) * 1.055 - vec3(.055), I.rgb * 12.92, vec3(lessThanEqual(I.rgb, vec3(.0031308)))), I.a);\\\\n}\\\\nvec4 J(vec4 I) {\\\\n return (H(I));\\\\n}\\\\n#endif\\\\nvoid main() {\\\\n vec4 K;\\\\n#ifdef USE_AMBIENT\\\\nvec3 k = normalize(vWorldPos + mix(-.5 / 255., .5 / 255., n(gl_FragCoord.xy)) * 2.);\\\\n K = vec4(j(k, diffuseSPH), 1.);\\\\n#else\\\\nK = c(cubeMap, vWorldPos, size, bias);\\\\n#endif\\\\nK.rgb *= environmentExposure;\\\\n K.rgb *= backgroundIntensity;\\\\n glFragColor = K;\\\\n if(length(hsv) > .0) {\\\\n glFragColor.rgb = hsv_apply(clamp(glFragColor.rgb, .0, 1.), hsv);\\\\n }\\\\n#if defined(TONE_MAPPING)\\\\nglFragColor.rgb = G(glFragColor.rgb);\\\\n glFragColor = J(glFragColor);\\\\n#endif\\\\n#if __VERSION__ == 100\\\\ngl_FragColor = glFragColor;\\\\n#endif\\\\n}\\\"),function(){const e=[[-1,-1,-1,1],[1,-1,-1,1],[1,1,-1,1],[-1,1,-1,1],[-1,-1,1,1],[1,-1,1,1],[1,1,1,1],[-1,1,1,1]],n=new Array(16)}(),function(){let e=new Array(4);const n=new Array(3),t=[0,0,0,0],r=[0,1,0],o=new Array(3);let i=new Array(16),a=new Array(16);const s=new Array(16),c=[1,1,1],f=[0,0,0]}();const O=new Uint8Array(4);new Float32Array(O.buffer);class S{constructor(e=257){this.gridSize=e;const n=e-1;if(n&n-1)throw new Error(`Expected grid size to be 2^n+1, got \").concat(e, \"e}.`);this.numTriangles=n*n*2-2,this.numParentTriangles=this.numTriangles-n*n,this.indices=new Uint32Array(this.gridSize*this.gridSize),this.coords=new Uint16Array(4*this.numTriangles);for(let e=0;e>=1)>1;){const e=r+i>>1,n=o+a>>1;1&t?(i=r,a=o,r=s,o=c):(r=i,o=a,i=s,a=c),s=e,c=n}const f=4*e;this.coords[f+0]=r,this.coords[f+1]=o,this.coords[f+2]=i,this.coords[f+3]=a}}createTile(e){return new C(e,this)}}class C{constructor(e,n){const t=n.gridSize;if(e.length!==t*t)throw new Error(`Expected terrain data of length \").concat(e, \"t*t} (\").concat(e, \"t} x \").concat(e, \"t}), got \").concat(e, \"e.length}.`);this.terrain=e,this.martini=n,this.errors=new Float32Array(e.length),this.update()}update(){const{numTriangles:e,numParentTriangles:n,coords:t,gridSize:r}=this.martini,{terrain:o,errors:i}=this;for(let a=e-1;a>=0;a--){const e=4*a,s=t[e+0],c=t[e+1],f=t[e+2],l=t[e+3],d=s+f>>1,h=c+l>>1,v=d+h-c,u=h+s-d,_=(o[c*r+s]+o[l*r+f])/2,m=h*r+d,g=Math.abs(_-o[m]);if(i[m]=Math.max(i[m],g),a>1)*r+(s+v>>1),n=(l+u>>1)*r+(f+v>>1);i[m]=Math.max(i[m],i[e],i[n])}}}getMesh(e=0){const{gridSize:n,indices:t}=this.martini,{errors:r}=this;let o=0,i=0;const a=n-1;function s(a,c,f,l,d,h){const v=a+f>>1,u=c+l>>1;Math.abs(a-d)+Math.abs(c-h)>1&&r[u*n+v]>e?(s(d,h,a,c,v,u),s(f,l,d,h,v,u)):(t[c*n+a]=t[c*n+a]||++o,t[l*n+f]=t[l*n+f]||++o,t[h*n+d]=t[h*n+d]||++o,i++)}t.fill(0),s(0,0,a,a,a,0),s(a,a,0,0,0,a);const c=new Uint16Array(2*o),f=new Uint32Array(3*i);let l=0;function d(o,i,a,s,h,v){const u=o+a>>1,_=i+s>>1;if(Math.abs(o-h)+Math.abs(i-v)>1&&r[_*n+u]>e)d(h,v,o,i,u,_),d(a,s,h,v,u,_);else{const e=t[i*n+o]-1,r=t[s*n+a]-1,d=t[v*n+h]-1;c[2*e]=o,c[2*e+1]=i,c[2*r]=a,c[2*r+1]=s,c[2*d]=h,c[2*d+1]=v,f[l++]=e,f[l++]=r,f[l++]=d}}return d(0,0,a,a,a,0),d(a,a,0,0,0,a),{vertices:c,triangles:f}}getMeshWithSkirts(e=0,n){const{gridSize:t,indices:r}=this.martini,{errors:o}=this;let i=0,a=0;const s=t-1;let c,f,l=0;const d=[],h=[],v=[],u=[];function _(n,m,g,x,p,A){const y=n+g>>1,b=m+x>>1;Math.abs(n-p)+Math.abs(m-A)>1&&o[b*t+y]>e?(_(p,A,n,m,y,b),_(g,x,p,A,y,b)):(c=m*t+n,f=x*t+g,l=A*t+p,0===r[c]&&(0===n?d.push(i):n===s&&h.push(i),0===m?v.push(i):m===s&&u.push(i),r[c]=++i),0===r[f]&&(0===g?d.push(i):g===s&&h.push(i),0===x?v.push(i):x===s&&u.push(i),r[f]=++i),0===r[l]&&(0===p?d.push(i):p===s&&h.push(i),0===A?v.push(i):A===s&&u.push(i),r[l]=++i),a++)}let m;r.fill(0),_(0,0,s,s,s,0),_(s,s,0,0,0,s),m=n?2*(i+3*d.length-2+3*h.length-2+3*v.length-2+3*u.length-2):2*(i+d.length+h.length+v.length+u.length);const g=3*(a+2*(d.length-1)+2*(h.length-1)+2*(v.length-1)+2*(u.length-1)),x=new Uint16Array(m),p=new Uint32Array(g);let A=0;function y(n,i,a,s,c,f){const l=n+a>>1,d=i+s>>1;if(Math.abs(n-c)+Math.abs(i-f)>1&&o[d*t+l]>e)y(c,f,n,i,l,d),y(a,s,c,f,l,d);else{const e=r[i*t+n]-1,o=r[s*t+a]-1,l=r[f*t+c]-1;x[2*e]=n,x[2*e+1]=i,x[2*o]=a,x[2*o+1]=s,x[2*l]=c,x[2*l+1]=f,p[A++]=e,p[A++]=o,p[A++]=l}}y(0,0,s,s,s,0),y(s,s,0,0,0,s),d.sort(((e,n)=>x[2*e+1]-x[2*n+1])),h.sort(((e,n)=>x[2*n+1]-x[2*e+1])),v.sort(((e,n)=>x[2*n]-x[2*e])),u.sort(((e,n)=>x[2*e]-x[2*n]));let b,w,E,I,T=2*i,O=0;function S(e){O=e.length;for(let t=0;t1\\\");this.colors=e;let t=1/0,r=-1/0;for(let n=0,o=e.length;n1e4||i<-2e3)&&(i=0),s=4*(e*t+l);const d=(i+1e3)/j.heightScale,h=j.elementMultiplier;o[s]=d/(h*h),o[s+1]=(d-o[s]*h*h)/h,o[s+2]=d-o[s]*h*h-o[s+1]*h,o[s+3]=255}return o}(t),i=function(e,n){const t=n,r=n,o=t+1,i=r+1,a=j.elementsPerHeight,s=j.heightOffset,c=j.heightScale,f=j.elementMultiplier,l=j.skirtHeight,d=new Float32Array(o*i);let h=0,v=1/0,u=-1/0;for(let n=0;n=r?r-1:n;for(let n=0;n=t?t-1:n);for(let n=0;nu&&(u=r),h++}}return{data:d,min:v,max:u}}(o,n-1);return i.width=i.height=n,i}const Y=new TextDecoder(\\\"utf-8\\\");function J(e){return e>>1^-(1&e)}const $=[];function Q(e){let n=0;const t=3*Float64Array.BYTES_PER_ELEMENT,r=3*Uint16Array.BYTES_PER_ELEMENT;let o=Uint16Array.BYTES_PER_ELEMENT;const i=new DataView(e);n+=t;const a=i.getFloat32(n,!0);n+=Float32Array.BYTES_PER_ELEMENT;const s=i.getFloat32(n,!0);n+=Float32Array.BYTES_PER_ELEMENT,n+=t;const c=i.getFloat64(n,!0);n+=Float64Array.BYTES_PER_ELEMENT,n+=t;const f=i.getUint32(n,!0);n+=Uint32Array.BYTES_PER_ELEMENT;const l=new Uint16Array(e,n,3*f);n+=f*r,f>65536&&(o=Uint32Array.BYTES_PER_ELEMENT);!function(e,n,t){const r=e.length;let o=0,i=0,a=0;for(let s=0;s65536?new Uint32Array(e,n,3*d):new Uint16Array(e,n,3*d);let v=0;const u=h.length;for(let e=0;ethis.max[0]||nthis.max[1])return!1;x(te,this.p0[0],this.p0[1]),x(re,this.p1[0],this.p1[1]),x(oe,this.p2[0],this.p2[1]);const t=fe(te[0],te[1],re[0],re[1],oe[0],oe[1]);return fe(e,n,te[0],te[1],oe[0],oe[1])+fe(e,n,te[0],te[1],re[0],re[1])+fe(e,n,re[0],re[1],oe[0],oe[1])-t<=1e-4}getHeight(e,n){const t=this.normal;return this.p0[2]-((e-this.p0[0])*t[0]+(n-this.p0[1])*t[1])/t[2]}}let ae=null;function se(e,n,t){if(ae&&ae.contains(n,t))return ae.getHeight(n,t);for(let r=0;r(delete V[e],n)))}(e,n,origin).then((e=>{if(!e||e.message)i(e?{empty:!0,originalError:e}:{error:{canceled:!0}});else{const n=e.data;let a=null;if(\\\"tianditu\\\"===t){const e=Z(n,r);he(o,e,r,null,!0,i)}else if(\\\"cesium-ion\\\"===t||\\\"cesium\\\"===t){a=Q(n);const e=function(e,n){const{positions:t,min:r,max:o,indices:i,radius:a}=e,s=[];let c=0;for(let e=0;e{const n=function(e){const{width:n,height:t}=e;U||(U=new OffscreenCanvas(1,1),L=U.getContext(\\\"2d\\\",{willReadFrequently:!0}));return U.width=n,U.height=t,L.drawImage(e,0,0,n,t),L.getImageData(0,0,n,t)}(e),t=function(e,n){const{data:t,width:r}=e;let o=1/0,i=-1/0;const a=new Float32Array(n*n),s=Math.round(r/n);for(let e=0;er-1&&(i=r-1),o>r-1&&(o=r-1);const a=o+i*r,c=t[4*a],f=t[4*a+1],u=t[4*a+2];0===t[4*a+3]?d+=1:l+=.1*(256*c*256+256*f+u)-1e4}l/=s*s-d||1,l>i&&(i=l),l{delete V[e],i({empty:!0,originalError:n})}))}function de(e,n){const t=Math.floor(10*(e+1e4)),r=t>>16,o=t>>8&255,i=255&t;return n?(n[0]=r,n[1]=o,n[2]=i,n):[r,o,i]}function he(e,n,t,r,o,i){const a=function(e,n,t,r){let o=H[t];o||(o=H[t]=new S(t));const i=o.createTile(n).getMeshWithSkirts(e,!0),{triangles:a,vertices:s,leftSkirtIndex:c,rightSkirtIndex:f,bottomSkirtIndex:l,topSkirtIndex:d}=i;let{numVerticesWithoutSkirts:h,numTrianglesWithoutSkirts:v}=i;h||(h=s.legnth/3,v=a.length/3);const u=s.length/2,_=new Float32Array(3*u),m=new Float32Array(2*u);let g=1/0,x=-1/0;const p=t-1;for(let e=0;e=h){const n=r/2*3;let t,o=.001;(e-(ex&&(x=i)}return{positions:_,texcoords:m,triangles:a,leftSkirtIndex:c,rightSkirtIndex:f,bottomSkirtIndex:l,topSkirtIndex:d,numTrianglesWithoutSkirts:v,numVerticesWithoutSkirts:h,minHeight:g,maxHeight:x,terrainWidth:t}}(e,n.data,t),s=[a.positions.buffer,a.texcoords.buffer,a.triangles.buffer];r||(r=function(e){if(W(),!U)return;const{width:n,height:t,data:r}=e;if(n&&t&&r)try{let e=U.getContext(\\\"2d\\\",{willReadFrequently:!0});const o=e.createImageData(n,t);for(let e=0,n=r.length;e\\\",actorId:t.actorId,workerId:N,params:\\\"ok\\\",callback:e.callback});else if(\\\"fetchTerrain\\\"===t.command){const e=(t.params||{}).colors,r=(t.params||{}).tileSize;!function(e,n){const{url:t,origin:r,type:o,accessToken:i,terrainWidth:a,error:s}=e,c=e.headers||X[o];if(\\\"tianditu\\\"===o)le(t,c,o,a,s,n);else if(\\\"cesium-ion\\\"===o){const f=e.cesiumIonTokenURL+i;B?le(t,c,o,a,s,n):(q||(q=fetch(f,{responseType:\\\"json\\\",method:\\\"GET\\\",referrer:r,headers:{Accept:\\\"application/json,*/*;q=0.01\\\",\\\"Accept-Encoding\\\":\\\"gzip, deflate, br\\\"}}).then((e=>e.json())).then((e=>{B=e.accessToken,q=null}))),q.then((()=>{le(t,c,o,a,s,n)})))}else(\\\"cesium\\\"===o||\\\"mapbox\\\"===o)&&le(t,c,o,a,s,n)}(t.params,((t,o)=>{const i=ue(t,e,r);i&&(t.colorsTexture=i,(o=o||[]).push(i.buffer)),n(t.error,t,o)}))}else\\\"abortTerrain\\\"===t.command&&(r=t.params.url,V[r]&&(V[r].abort(),delete V[r]));var r}}\");registerGLTFLoaderBundle(gltfLoaderExport);maptalks.registerWorkerAdapter('@maptalks/terrain', code);typeof console !== 'undefined' && console.log('@maptalks/gl v0.108.1');\n return module.exports;});", "requires": [], "buildLevel": 0, "fileName": "/dist/maptalksgl.es.js" } }